<?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>236122</bug_id>
          
          <creation_ts>2022-02-03 20:31:14 -0800</creation_ts>
          <short_desc>Inherit explicit grid size from parent for subgrids</short_desc>
          <delta_ts>2022-04-20 16:53:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/32629</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>236054</dependson>
          <blocked>202115</blocked>
    
    <blocked>236148</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Woodrow">mattwoodrow</reporter>
          <assigned_to name="Matt Woodrow">mattwoodrow</assigned_to>
          <cc>annulen</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gnavamarino</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jfernandez</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>msaboff</cc>
    
    <cc>obrufau</cc>
    
    <cc>pdr</cc>
    
    <cc>rego</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1837239</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-03 20:31:14 -0800</bug_when>
    <thetext>Subgrids should use their grid span in the parent grid to determine the size of the explicit grids, and don&apos;t allow implicit tracks to be created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837530</commentid>
    <comment_count>1</comment_count>
      <attachid>450924</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-04 11:39:34 -0800</bug_when>
    <thetext>Created attachment 450924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837531</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-02-04 11:41:26 -0800</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837532</commentid>
    <comment_count>3</comment_count>
      <attachid>450925</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-04 11:41:45 -0800</bug_when>
    <thetext>Created attachment 450925
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837796</commentid>
    <comment_count>4</comment_count>
      <attachid>451001</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-05 15:17:42 -0800</bug_when>
    <thetext>Created attachment 451001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837797</commentid>
    <comment_count>5</comment_count>
      <attachid>451002</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-05 15:18:37 -0800</bug_when>
    <thetext>Created attachment 451002
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840160</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-10 20:32:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/88795234&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841425</commentid>
    <comment_count>7</comment_count>
      <attachid>451946</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-14 15:16:01 -0800</bug_when>
    <thetext>Created attachment 451946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841459</commentid>
    <comment_count>8</comment_count>
      <attachid>451954</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-14 16:03:12 -0800</bug_when>
    <thetext>Created attachment 451954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841514</commentid>
    <comment_count>9</comment_count>
      <attachid>451954</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-02-14 18:11:32 -0800</bug_when>
    <thetext>Comment on attachment 451954
Patch

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

&gt; Source/WebCore/rendering/GridLayoutFunctions.cpp:80
&gt; +bool isOrthogonalChild(const RenderGrid&amp; grid, const RenderElement&amp; child)

This change seems unnecessary?

&gt; Source/WebCore/rendering/GridLayoutFunctions.cpp:90
&gt; +GridTrackSizingDirection flowAwareDirectionForChild(const RenderGrid&amp; grid, const RenderElement&amp; child, GridTrackSizingDirection direction)

Ditto

&gt; Source/WebCore/rendering/GridLayoutFunctions.h:33
&gt; +class RenderElement;

Ditto

&gt; Source/WebCore/rendering/GridLayoutFunctions.h:43
&gt; +bool isOrthogonalChild(const RenderGrid&amp;, const RenderElement&amp;);

Ditto

&gt; Source/WebCore/rendering/GridLayoutFunctions.h:45
&gt; +GridTrackSizingDirection flowAwareDirectionForChild(const RenderGrid&amp;, const RenderElement&amp;, GridTrackSizingDirection);

Ditto

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/line-names-002-expected.html:17
&gt; +  grid: auto / [a] 50px 40px [a] 10px 50px [a];

Changing the expectation makes the test fail? So not sure if this is the right patch to change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841516</commentid>
    <comment_count>10</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-14 18:21:12 -0800</bug_when>
    <thetext>(In reply to Oriol Brufau from comment #9)
&gt; Comment on attachment 451954 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451954&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/GridLayoutFunctions.cpp:80
&gt; &gt; +bool isOrthogonalChild(const RenderGrid&amp; grid, const RenderElement&amp; child)
&gt; 
&gt; This change seems unnecessary?

These all make it easier to check for orthogonal changes between grid/subgrid using parent() (without needing to both casting to a RenderGrid). Looks like there isn&apos;t actually an instance here, but there are in the other patches.

&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/line-names-002-expected.html:17
&gt; &gt; +  grid: auto / [a] 50px 40px [a] 10px 50px [a];
&gt; 
&gt; Changing the expectation makes the test fail? So not sure if this is the
&gt; right patch to change it.

What do you mean by makes the test fail? It still fails at this point in the patch queue, since it depends on other functionality.

This patch is the one that implements the new CSSWG resolution about how to handle indefinite spans, so I put the relevant test change with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841520</commentid>
    <comment_count>11</comment_count>
      <attachid>451954</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-02-14 18:29:28 -0800</bug_when>
    <thetext>Comment on attachment 451954
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/GridLayoutFunctions.cpp:80
&gt;&gt;&gt; +bool isOrthogonalChild(const RenderGrid&amp; grid, const RenderElement&amp; child)
&gt;&gt; 
&gt;&gt; This change seems unnecessary?
&gt; 
&gt; These all make it easier to check for orthogonal changes between grid/subgrid using parent() (without needing to both casting to a RenderGrid). Looks like there isn&apos;t actually an instance here, but there are in the other patches.

But then it would be easier if the grid was the RenderElement, right? So you could do

  isOrthogonalChild(child-&gt;parent(), child)

without having to cast child-&gt;parent().

But this is changing the child. Will there be a child which is not already provided as a RenderBox?

&gt;&gt;&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/line-names-002-expected.html:17
&gt;&gt;&gt; +  grid: auto / [a] 50px 40px [a] 10px 50px [a];
&gt;&gt; 
&gt;&gt; Changing the expectation makes the test fail? So not sure if this is the right patch to change it.
&gt; 
&gt; What do you mean by makes the test fail? It still fails at this point in the patch queue, since it depends on other functionality.
&gt; 
&gt; This patch is the one that implements the new CSSWG resolution about how to handle indefinite spans, so I put the relevant test change with it.

If I run the test locally (removing the ImageOnlyFailure entry from TestExpectations) then it fails with this change, and without the change it tends to pass (though I also got one crash).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841537</commentid>
    <comment_count>12</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-14 19:34:07 -0800</bug_when>
    <thetext>(In reply to Oriol Brufau from comment #11)
&gt; Comment on attachment 451954 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451954&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/rendering/GridLayoutFunctions.cpp:80
&gt; &gt;&gt;&gt; +bool isOrthogonalChild(const RenderGrid&amp; grid, const RenderElement&amp; child)
&gt; &gt;&gt; 
&gt; &gt;&gt; This change seems unnecessary?
&gt; &gt; 
&gt; &gt; These all make it easier to check for orthogonal changes between grid/subgrid using parent() (without needing to both casting to a RenderGrid). Looks like there isn&apos;t actually an instance here, but there are in the other patches.
&gt; 
&gt; But then it would be easier if the grid was the RenderElement, right? So you
&gt; could do
&gt; 
&gt;   isOrthogonalChild(child-&gt;parent(), child)
&gt; 
&gt; without having to cast child-&gt;parent().
&gt; 
&gt; But this is changing the child. Will there be a child which is not already
&gt; provided as a RenderBox?

I think this is largely because I&apos;m using it in the reverse direction (since we only care if the writing mode changes boolean state, it works both ways), which is sort of cheating. It might be better to have an aliased version that takes two RenderGrids.

&gt; 
&gt; &gt;&gt;&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/line-names-002-expected.html:17
&gt; &gt;&gt;&gt; +  grid: auto / [a] 50px 40px [a] 10px 50px [a];
&gt; &gt;&gt; 
&gt; &gt;&gt; Changing the expectation makes the test fail? So not sure if this is the right patch to change it.
&gt; &gt; 
&gt; &gt; What do you mean by makes the test fail? It still fails at this point in the patch queue, since it depends on other functionality.
&gt; &gt; 
&gt; &gt; This patch is the one that implements the new CSSWG resolution about how to handle indefinite spans, so I put the relevant test change with it.
&gt; 
&gt; If I run the test locally (removing the ImageOnlyFailure entry from
&gt; TestExpectations) then it fails with this change, and without the change it
&gt; tends to pass (though I also got one crash).

I&apos;m not entirely sure why that is, would need to figure out why exactly we start passing later on. I&apos;ll look into it tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841812</commentid>
    <comment_count>13</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-15 11:01:48 -0800</bug_when>
    <thetext>(In reply to Matt Woodrow from comment #12)
&gt; I think this is largely because I&apos;m using it in the reverse direction (since
&gt; we only care if the writing mode changes boolean state, it works both ways),
&gt; which is sort of cheating. It might be better to have an aliased version
&gt; that takes two RenderGrids.

I&apos;ll add a second version of this function &apos;flowAwareDirectionForParent&apos; (which does the exact same thing), so that it&apos;s clearer which direction we&apos;re going.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841819</commentid>
    <comment_count>14</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-15 11:12:12 -0800</bug_when>
    <thetext>(In reply to Matt Woodrow from comment #12) 
&gt; &gt; &gt;&gt;&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-grid/subgrid/line-names-002-expected.html:17
&gt; &gt; &gt;&gt;&gt; +  grid: auto / [a] 50px 40px [a] 10px 50px [a];
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Changing the expectation makes the test fail? So not sure if this is the right patch to change it.
&gt; &gt; &gt; 
&gt; &gt; &gt; What do you mean by makes the test fail? It still fails at this point in the patch queue, since it depends on other functionality.
&gt; &gt; &gt; 
&gt; &gt; &gt; This patch is the one that implements the new CSSWG resolution about how to handle indefinite spans, so I put the relevant test change with it.
&gt; &gt; 
&gt; &gt; If I run the test locally (removing the ImageOnlyFailure entry from
&gt; &gt; TestExpectations) then it fails with this change, and without the change it
&gt; &gt; tends to pass (though I also got one crash).
&gt; 
&gt; I&apos;m not entirely sure why that is, would need to figure out why exactly we
&gt; start passing later on. I&apos;ll look into it tomorrow.

Looks like we start passing properly when the subgrid track sizing starts using the sizes from the parent grid, rather than computing its own.

The changes here make us select the right lines for the subgrid, but since we compute new track sizes (everything in the subgrid is currently computing as &apos;auto&apos; sized), the results are nonsensical.

I still think it&apos;s better to have the test changes closer to the relevant implementation details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841842</commentid>
    <comment_count>15</comment_count>
      <attachid>452067</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-15 11:40:34 -0800</bug_when>
    <thetext>Created attachment 452067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841997</commentid>
    <comment_count>16</comment_count>
      <attachid>452067</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-02-15 16:01:51 -0800</bug_when>
    <thetext>Comment on attachment 452067
Patch

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

Overall it looks reasonable, but some comments.

&gt; Source/WebCore/rendering/RenderGrid.cpp:1620
&gt; +bool RenderGrid::isSubgridRows() const

Nit: since they are just trivial syntax sugar for isSubgrid(), maybe make isSubgridRows() and isSubgridColumns() inline in the header?

&gt; Source/WebCore/rendering/RenderGrid.cpp:1996
&gt; +bool RenderGrid::computeGridSpanForOutOfFlowChild(const RenderBox&amp; child, GridTrackSizingDirection direction, int&amp; startLine, bool&amp; startIsAuto, int&amp; endLine, bool&amp; endIsAuto) const

It seems a bit strange to me that a method called computeGridSpanForSomething doesn&apos;t provide the caller with a GridSpan.
Also startIsAuto can be set to true even it it&apos;s not actually auto but needs to be clamped, lastLine is recomputed, etc.
It seems there is a single caller, so maybe merge this into that?

GridSpan RenderGrid::gridSpanForOutOfFlowChild(const RenderBox&amp; child, GridTrackSizingDirection direction) const
{
    ASSERT(child.isOutOfFlowPositioned());
    int lastLine = numTracks(direction, m_grid);
    GridSpan span = GridPositionsResolver::resolveGridPositionsFromStyle(child, direction);
    if (span.isIndefinite())
        return GridSpan::translatedDefiniteGridSpan(0, lastLine);

    unsigned explicitStart = m_grid.explicitGridStart(direction);
    int startLine = span.untranslatedStartLine() + explicitStart;
    int endLine = span.untranslatedEndLine() + explicitStart;

    GridPosition startPosition = direction == ForColumns ? child.style().gridItemColumnStart() : child.style().gridItemRowStart();
    GridPosition endPosition = direction == ForColumns ? child.style().gridItemColumnEnd() : child.style().gridItemRowEnd();

    if (startPosition.isAuto() || startLine &lt; 0 || startLine &gt; lastLine)
        startLine = 0;
    if (endPosition.isAuto() || endLine &lt; 0 || endLine &gt; lastLine)
        endLine = lastLine;
    return GridSpan::translatedDefiniteGridSpan(startLine, endLine);
}

&gt; Source/WebCore/rendering/RenderGrid.cpp:2040
&gt; +        bool isSubgrid = direction == ForColumns ? renderGrid-&gt;isSubgridColumns() : renderGrid-&gt;isSubgridRows();

bool isSubgrid = renderGrid-&gt;isSubgrid(direction);

&gt; Source/WebCore/rendering/style/GridArea.h:68
&gt; +        ASSERT(isTranslatedDefinite() || m_type == UntranslatedDefinite);

So basically ASSERT(!isIndefinite())?

&gt; Source/WebCore/rendering/style/GridArea.h:152
&gt; +            m_startLine = parent.integerSpan() - m_endLine + parent.startLine();

If I get it right, parent.integerSpan()+parent.startLine() is parent.endLine(), so

    m_startLine = parent.endLine() - m_endLine;
    m_endLine = parent.endLine() - start;

&gt; Source/WebCore/rendering/style/GridPositionsResolver.cpp:159
&gt; +    if (!initialPosition.isAuto() &amp;&amp; !finalPosition.isAuto())

Nit: the code can check the type of each position twice. I think it could be:

    if (initialPosition.isAuto())
        return !finalPosition.isSpan();
    if (finalPosition.isAuto())
        return !initialPosition.isSpan();
    return false;

&gt; Source/WebCore/rendering/style/GridPositionsResolver.cpp:192
&gt; +            if (finalPosition.isSpan())

I don&apos;t think this can be true, or isIndefiniteSpan would have returned false?

&gt; Source/WebCore/rendering/style/GridPositionsResolver.cpp:197
&gt; +            if (initialPosition.isSpan())

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842138</commentid>
    <comment_count>17</comment_count>
      <attachid>452067</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2022-02-15 22:47:00 -0800</bug_when>
    <thetext>Comment on attachment 452067
Patch

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

&gt; Source/WebCore/rendering/Grid.cpp:66
&gt; +    GridArea clamped = area;

Nit: s/campled/campledArea/

&gt; Source/WebCore/rendering/GridLayoutFunctions.cpp:113
&gt; +{

Nit: Could we ASSERT that subgrid is actually a subgrid?

&gt; Source/WebCore/rendering/RenderGrid.cpp:671
&gt; +        grid.clampAndTranslateToImplicitGrid(area);

This name is a little bit confusing to me, there is no implicit grid in subgrids, we&apos;re not adding extra columns/rows, so we&apos;re always in the explicit grid defined by our parent. Why you call this &quot;TranslateToImplicitGrid&quot;? Should we use a different name here?

&gt; Source/WebCore/rendering/RenderGrid.cpp:2036
&gt; +    while (renderGrid != this) {

When we need this loop? Could an if be enough?

&gt; Source/WebCore/rendering/style/GridPositionsResolver.cpp:187
&gt; +        int lineCount = direction == ForColumns ? gridItem.style().gridColumns().size() : gridItem.style().gridRows().size();

Why int?

&gt; Source/WebCore/rendering/style/GridPositionsResolver.cpp:206
&gt; +    if (specifiedSubgrid &amp;&amp; gridContainer.isSubgridColumns()) {

Isn&apos;t enough to check gridContainer.isSubgridColumns()?

&gt; Source/WebCore/rendering/style/GridPositionsResolver.cpp:211
&gt; +    auto specifiedColumns = specifiedSubgrid ? 0 : gridContainer.style().gridColumns().size();

Could you explain this condition? If it&apos;s not a subgrid, what do we need to do?

&gt; LayoutTests/imported/w3c/ChangeLog:8
&gt; +        Test changes to match latest spec, submitted upstream as https://github.com/web-platform-tests/wpt/pull/32629

Nit: Could you link the spec issue here too?

&gt; LayoutTests/imported/w3c/ChangeLog:11
&gt; +        * web-platform-tests/css/css-grid/subgrid/line-names-005-expected.html:

So we don&apos;t start passing any test after this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842233</commentid>
    <comment_count>18</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-16 04:26:11 -0800</bug_when>
    <thetext>Oriol, Manuel, thanks for these reviews! If Matt addressed the feedback would you be ok with the patch landing in the next couple of days, and then us doing any cleanup next week? The same applies to the subsequent patches Matt has already posted and I reviewed. I&apos;m not the best reviewer, so we&apos;d still love your eyes on the work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842246</commentid>
    <comment_count>19</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2022-02-16 05:12:31 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #18)
&gt; Oriol, Manuel, thanks for these reviews! If Matt addressed the feedback
&gt; would you be ok with the patch landing in the next couple of days, and then
&gt; us doing any cleanup next week? The same applies to the subsequent patches
&gt; Matt has already posted and I reviewed. I&apos;m not the best reviewer, so we&apos;d
&gt; still love your eyes on the work.

This patch looks good to land.

Though I&apos;m not sure I understand the urgency, I believe we haven&apos;t reviewed a bunch of the patches yet. And Oriol&apos;s reviews have been helping to find issues.

What would be the plan? Those patches get merged this week, and we do post-reviews later on in bugzilla?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842472</commentid>
    <comment_count>20</comment_count>
      <attachid>452234</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-16 12:59:18 -0800</bug_when>
    <thetext>Created attachment 452234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842482</commentid>
    <comment_count>21</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-16 13:11:35 -0800</bug_when>
    <thetext>(In reply to Manuel Rego Casasnovas from comment #17)
 
&gt; &gt; Source/WebCore/rendering/RenderGrid.cpp:2036
&gt; &gt; +    while (renderGrid != this) {
&gt; 
&gt; When we need this loop? Could an if be enough?

We need to loop because sub grids can be nested arbitrarily many times, and we want to keep converting coordinate spaces until we get to &apos;this&apos;.

&gt; 
&gt; &gt; Source/WebCore/rendering/style/GridPositionsResolver.cpp:187
&gt; &gt; +        int lineCount = direction == ForColumns ? gridItem.style().gridColumns().size() : gridItem.style().gridRows().size();
&gt; 
&gt; Why int?

Since we do a -1 below, and it could be 0. I could have used a ternary below instead of std::max, no strong opinion :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842486</commentid>
    <comment_count>22</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-02-16 13:19:11 -0800</bug_when>
    <thetext>(In reply to Manuel Rego Casasnovas from comment #19)
&gt; 
&gt; What would be the plan? Those patches get merged this week, and we do
&gt; post-reviews later on in bugzilla?

I believe so, yes. I&apos;ll be more than happy to open follow-up bugs and address any issues that are found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842620</commentid>
    <comment_count>23</comment_count>
      <attachid>452234</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-16 17:26:03 -0800</bug_when>
    <thetext>Comment on attachment 452234
Patch

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

&gt; Source/WebCore/rendering/Grid.cpp:66
&gt; +    GridArea clampedArea = area;

auto

&gt; Source/WebCore/rendering/RenderGrid.cpp:754
&gt; +        GridSpan rowPositions = GridPositionsResolver::resolveGridPositionsFromStyle(*child, ForRows);

auto

&gt; Source/WebCore/rendering/RenderGrid.cpp:766
&gt; +        GridSpan columnPositions = GridPositionsResolver::resolveGridPositionsFromStyle(*child, ForColumns);

auto

&gt; Source/WebCore/rendering/RenderGrid.cpp:1988
&gt; +    GridSpan span = GridPositionsResolver::resolveGridPositionsFromStyle(child, direction);

auto

&gt; Source/WebCore/rendering/RenderGrid.cpp:1997
&gt; +    GridPosition startPosition = direction == ForColumns ? child.style().gridItemColumnStart() : child.style().gridItemRowStart();
&gt; +    GridPosition endPosition = direction == ForColumns ? child.style().gridItemColumnEnd() : child.style().gridItemRowEnd();

auto

&gt; Source/WebCore/rendering/RenderGrid.h:90
&gt; +    bool isSubgridRows() const

I can&apos;t parse this. What does it mean to be &quot;is subgrid rows&quot;?

&gt; Source/WebCore/rendering/RenderGrid.h:94
&gt; +    bool isSubgridColumns() const

Same

&gt; Source/WebCore/rendering/style/GridPositionsResolver.cpp:201
&gt; +        const RenderGrid&amp; parent = *downcast&lt;RenderGrid&gt;(gridContainer.parent());
&gt; +        GridTrackSizingDirection direction = GridLayoutFunctions::flowAwareDirectionForChild(parent, gridContainer, ForColumns);

auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842626</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-16 17:32:19 -0800</bug_when>
    <thetext>Committed r289986 (247372@main): &lt;https://commits.webkit.org/247372@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452234.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450924</attachid>
            <date>2022-02-04 11:39:34 -0800</date>
            <delta_ts>2022-02-05 15:17:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236122-20220205083932.patch</filename>
            <type>text/plain</type>
            <size>42229</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQwMmI1YzFlNmZkOGNm
NmMyZGY0MmQ0OTkxOTdkMTlkZmE1NmZjNC4uNTQxZWNmNTA4ZGY2ZmM3ZmM0NmQwMGQ4ZTY1ODJl
N2ViYTlkNmQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTAyLTAzICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgSW5oZXJpdCB0cmFj
ayBjb3VudCBmcm9tIHBhcmVudCBncmlkIGZvciBzdWJncmlkZGVkIGF4ZXMgYW5kIGNsYW1wIGl0
ZW0gcGxhY2VtZW50IHRvIHRoYXQgZXhwbGljaXQgZ3JpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZXMgR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpleHBsaWNpdEdyaWQ8PkNvdW50IHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIHRyYWNrcworICAg
ICAgICBzcGFubmVkIGluIHRoZSBwYXJlbnQgZ3JpZCwgZm9yIGF4ZXMgdGhhdCBhcmUgYSBzdWJn
cmlkLgorCisgICAgICAgIFVwZGF0ZXMgYWRqdXN0R3JpZFBvc2l0aW9uc0ZvclN0eWxlIHRvIHVz
ZSB0aGUgbnVtYmVyIG9mIGxpbmVzIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgc3ViZ3JpZCBw
cm9wZXJ0eSwgZm9yIGdyaWQgaXRlbXMgdGhhdCBhcmUgYWxzbyBhIHN1YmdyaWQgYW5kIGhhdmUg
YW4gb3RoZXJ3aXNlCisgICAgICAgIGluZGVmaW5pdGUgc3Bhbi4KKworICAgICAgICBBZGRzIGNs
YW1waW5nIHN1cHBvcnQgdG8gR3JpZCBzbyB0aGF0IHdlIGNhbiBwcmV2ZW50IHN1YmdyaWRzIGZy
b20gZXZlciBhZGRpbmcKKyAgICAgICAgbmV3IGltcGxpY2l0IHRyYWNrcy4KKworICAgICAgICAq
IHJlbmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6Omluc2VydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmlkOjpzZXRDbGFtcGluZ0ZvclN1YmdyaWQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZDo6Y2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxpY2l0R3JpZCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkOjpzZXROZWVkc0l0ZW1zUGxhY2VtZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRB
bmRPcmRlckl0ZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBs
YWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6aXNTdWJncmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmlzU3ViZ3JpZFJvd3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6aXNTdWJncmlkQ29sdW1ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZsb3dDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpudW1UcmFja3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNwb3Nl
ZERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlR3JpZFNw
YW5Gb3JPdXRPZkZsb3dDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6aW50ZWdlclNwYW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFNwYW46OnRyYW5zbGF0ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFu
OjpjbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0luZGVmaW5pdGVTcGFuKToKKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3Np
dGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdy
aWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9z
aXRpb25zUmVzb2x2ZXIuaDoKKwogMjAyMi0wMi0wMiAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ry
b3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nICdzdWJncmlk
JyBpbiBncmlkLXRlbXBsYXRlLWNvbHVtbnMvcm93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAK
aW5kZXggNTYwMmQ3YzJkNGQ1YmNhOTMyNDU0NGI3NWFkMjJjYjI2NThlZDAyYy4uMzdjYTkzZjAz
YTcyMWMyMGMzODBmYmM3YzExYjg0MTYzOTA3YWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
LmNwcApAQCAtNjEsMTcgKzYxLDI0IEBAIHZvaWQgR3JpZDo6ZW5zdXJlR3JpZFNpemUodW5zaWdu
ZWQgbWF4aW11bVJvd1NpemUsIHVuc2lnbmVkIG1heGltdW1Db2x1bW5TaXplKQogICAgIH0KIH0K
IAotdm9pZCBHcmlkOjppbnNlcnQoUmVuZGVyQm94JiBjaGlsZCwgY29uc3QgR3JpZEFyZWEmIGFy
ZWEpCitHcmlkQXJlYSBHcmlkOjppbnNlcnQoUmVuZGVyQm94JiBjaGlsZCwgY29uc3QgR3JpZEFy
ZWEmIGFyZWEpCiB7Ci0gICAgQVNTRVJUKGFyZWEucm93cy5pc1RyYW5zbGF0ZWREZWZpbml0ZSgp
ICYmIGFyZWEuY29sdW1ucy5pc1RyYW5zbGF0ZWREZWZpbml0ZSgpKTsKLSAgICBlbnN1cmVHcmlk
U2l6ZShhcmVhLnJvd3MuZW5kTGluZSgpLCBhcmVhLmNvbHVtbnMuZW5kTGluZSgpKTsKKyAgICBH
cmlkQXJlYSBjbGFtcGVkID0gYXJlYTsKKyAgICBpZiAobV9tYXhSb3dzKQorICAgICAgICBjbGFt
cGVkLnJvd3MuY2xhbXAobV9tYXhSb3dzKTsKKyAgICBpZiAobV9tYXhDb2x1bW5zKQorICAgICAg
ICBjbGFtcGVkLmNvbHVtbnMuY2xhbXAobV9tYXhDb2x1bW5zKTsKIAotICAgIGZvciAoYXV0byBy
b3cgOiBhcmVhLnJvd3MpIHsKLSAgICAgICAgZm9yIChhdXRvIGNvbHVtbiA6IGFyZWEuY29sdW1u
cykKKyAgICBBU1NFUlQoY2xhbXBlZC5yb3dzLmlzVHJhbnNsYXRlZERlZmluaXRlKCkgJiYgY2xh
bXBlZC5jb2x1bW5zLmlzVHJhbnNsYXRlZERlZmluaXRlKCkpOworICAgIGVuc3VyZUdyaWRTaXpl
KGNsYW1wZWQucm93cy5lbmRMaW5lKCksIGNsYW1wZWQuY29sdW1ucy5lbmRMaW5lKCkpOworCisg
ICAgZm9yIChhdXRvIHJvdyA6IGNsYW1wZWQucm93cykgeworICAgICAgICBmb3IgKGF1dG8gY29s
dW1uIDogY2xhbXBlZC5jb2x1bW5zKQogICAgICAgICAgICAgbV9ncmlkW3Jvd11bY29sdW1uXS5h
cHBlbmQoY2hpbGQpOwogICAgIH0KIAotICAgIHNldEdyaWRJdGVtQXJlYShjaGlsZCwgYXJlYSk7
CisgICAgc2V0R3JpZEl0ZW1BcmVhKGNoaWxkLCBjbGFtcGVkKTsKKyAgICByZXR1cm4gY2xhbXBl
ZDsKIH0KIAogdm9pZCBHcmlkOjpzZXRFeHBsaWNpdEdyaWRTdGFydCh1bnNpZ25lZCByb3dTdGFy
dCwgdW5zaWduZWQgY29sdW1uU3RhcnQpCkBAIC04NSw2ICs5MiwyNiBAQCB1bnNpZ25lZCBHcmlk
OjpleHBsaWNpdEdyaWRTdGFydChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBj
b25zdAogICAgIHJldHVybiBkaXJlY3Rpb24gPT0gRm9yUm93cyA/IG1fZXhwbGljaXRSb3dTdGFy
dCA6IG1fZXhwbGljaXRDb2x1bW5TdGFydDsKIH0KIAordm9pZCBHcmlkOjpzZXRDbGFtcGluZ0Zv
clN1YmdyaWQodW5zaWduZWQgbWF4Um93cywgdW5zaWduZWQgbWF4Q29sdW1ucykKK3sKKyAgICBt
X21heFJvd3MgPSBtYXhSb3dzOworICAgIG1fbWF4Q29sdW1ucyA9IG1heENvbHVtbnM7Cit9CisK
K3ZvaWQgR3JpZDo6Y2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxpY2l0R3JpZChHcmlkQXJlYSYgYXJl
YSkKK3sKKyAgICBpZiAoIWFyZWEucm93cy5pc0luZGVmaW5pdGUoKSkgeworICAgICAgICBpZiAo
bV9tYXhSb3dzKQorICAgICAgICAgICAgYXJlYS5yb3dzLmNsYW1wKG1fbWF4Um93cyk7CisgICAg
ICAgIGFyZWEucm93cy50cmFuc2xhdGUoZXhwbGljaXRHcmlkU3RhcnQoRm9yUm93cykpOworICAg
IH0KKyAgICBpZiAoIWFyZWEuY29sdW1ucy5pc0luZGVmaW5pdGUoKSkgeworICAgICAgICBpZiAo
bV9tYXhDb2x1bW5zKQorICAgICAgICAgICAgYXJlYS5jb2x1bW5zLmNsYW1wKG1fbWF4Q29sdW1u
cyk7CisgICAgICAgIGFyZWEuY29sdW1ucy50cmFuc2xhdGUoZXhwbGljaXRHcmlkU3RhcnQoRm9y
Q29sdW1ucykpOworICAgIH0KK30KKwogR3JpZEFyZWEgR3JpZDo6Z3JpZEl0ZW1BcmVhKGNvbnN0
IFJlbmRlckJveCYgaXRlbSkgY29uc3QKIHsKICAgICBBU1NFUlQobV9ncmlkSXRlbUFyZWEuY29u
dGFpbnMoJml0ZW0pKTsKQEAgLTE2MSw2ICsxODgsOCBAQCB2b2lkIEdyaWQ6OnNldE5lZWRzSXRl
bXNQbGFjZW1lbnQoYm9vbCBuZWVkc0l0ZW1zUGxhY2VtZW50KQogICAgIG1fYXV0b1JlcGVhdEVt
cHR5Um93cyA9IG51bGxwdHI7CiAgICAgbV9hdXRvUmVwZWF0Q29sdW1ucyA9IDA7CiAgICAgbV9h
dXRvUmVwZWF0Um93cyA9IDA7CisgICAgbV9tYXhDb2x1bW5zID0gMDsKKyAgICBtX21heFJvd3Mg
PSAwOwogfQogCiBHcmlkSXRlcmF0b3I6OkdyaWRJdGVyYXRvcihjb25zdCBHcmlkJiBncmlkLCBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lZCBmaXhlZFRyYWNrSW5k
ZXgsIHVuc2lnbmVkIHZhcnlpbmdUcmFja0luZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKaW5k
ZXggNzJjYWRmNjhlZjRkMzI2NmNlMWY4Y2VlYmRjOWE0OWRmMmJjODExYi4uMTFkOWU2OGZiODE5
OWZiY2E0ZDhiYTViMWJjYmY5YzgzMDk5YzUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0dyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oCkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1UcmFja3MoR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIHZvaWQgZW5zdXJlR3JpZFNpemUodW5zaWdu
ZWQgbWF4aW11bVJvd1NpemUsIHVuc2lnbmVkIG1heGltdW1Db2x1bW5TaXplKTsKLSAgICB2b2lk
IGluc2VydChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOworICAgIEdyaWRBcmVhIGluc2Vy
dChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOwogCiAgICAgLy8gTm90ZSB0aGF0IGVhY2gg
aW4gZmxvdyBjaGlsZCBvZiBhIGdyaWQgY29udGFpbmVyIGJlY29tZXMgYSBncmlkIGl0ZW0uIFRo
aXMgbWVhbnMgdGhhdAogICAgIC8vIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGZhbHNlIGZvciBh
IGdyaWQgY29udGFpbmVyIHdpdGggb25seSBvdXQgb2YgZmxvdyBjaGlsZHJlbi4KQEAgLTY3LDYg
KzY3LDEwIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzKEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAgICAgdm9pZCBzZXRBdXRvUmVwZWF0VHJhY2tzKHVu
c2lnbmVkIGF1dG9SZXBlYXRSb3dzLCB1bnNpZ25lZCBhdXRvUmVwZWF0Q29sdW1ucyk7CiAKKyAg
ICB2b2lkIHNldENsYW1waW5nRm9yU3ViZ3JpZCh1bnNpZ25lZCBtYXhSb3dzLCB1bnNpZ25lZCBt
YXhDb2x1bW5zKTsKKworICAgIHZvaWQgY2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxpY2l0R3JpZChH
cmlkQXJlYSYpOworCiAgICAgdm9pZCBzZXRBdXRvUmVwZWF0RW1wdHlDb2x1bW5zKHN0ZDo6dW5p
cXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4pOwogICAgIHZvaWQgc2V0QXV0b1JlcGVhdEVt
cHR5Um93cyhzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KTsKIApAQCAtOTIs
NiArOTYsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fYXV0b1JlcGVhdENvbHVtbnMgeyAw
IH07CiAgICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0Um93cyB7IDAgfTsKIAorICAgIHVuc2lnbmVk
IG1fbWF4Q29sdW1ucyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21heFJvd3MgeyAwIH07CisKICAg
ICBib29sIG1fbmVlZHNJdGVtc1BsYWNlbWVudCB7IHRydWUgfTsKIAogICAgIEdyaWRBc01hdHJp
eCBtX2dyaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggMjZm
OGZjYmMwYWIyNzk2MGM0OTM5MjIzZTc0OGQ5M2MzYjgzYzk5YS4uOWVmZTQ1YThmZmY5MTM4ZTUz
NTJmNjUyMDRhMDkyNzIwNTUyN2U4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcApAQCAtNDMwLDggKzQzMCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJp
bnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvCiAgICAg
TGF5b3V0VW5pdCBjaGlsZE1heFdpZHRoOwogICAgIGJvb2wgaGFkRXhjbHVkZWRDaGlsZHJlbiA9
IGNvbXB1dGVQcmVmZXJyZWRXaWR0aHNGb3JFeGNsdWRlZENoaWxkcmVuKGNoaWxkTWluV2lkdGgs
IGNoaWxkTWF4V2lkdGgpOwogCi0gICAgR3JpZCBncmlkKGNvbnN0X2Nhc3Q8UmVuZGVyR3JpZCY+
KCp0aGlzKSk7Ci0gICAgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtIGFsZ29yaXRobSh0aGlzLCBn
cmlkKTsKKyAgICBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gYWxnb3JpdGhtKHRoaXMsIGNvbnN0
X2Nhc3Q8R3JpZCY+KG1fZ3JpZCkpOwogICAgIHBsYWNlSXRlbXNPbkdyaWQoYWxnb3JpdGhtLCBz
dGQ6Om51bGxvcHQpOwogCiAgICAgcGVyZm9ybUdyaWRJdGVtc1ByZUxheW91dChhbGdvcml0aG0p
OwpAQCAtNjI1LDcgKzYyNCw2IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZChH
cmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIGFsZ29yaXRobSwgc3RkOjpvcHRpCiAgICAgR3JpZCYg
Z3JpZCA9IGFsZ29yaXRobS5tdXRhYmxlR3JpZCgpOwogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRD
b2x1bW5zID0gY29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudChGb3JDb2x1bW5zLCBhdmFpbGFi
bGVMb2dpY2FsV2lkdGgpOwogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRSb3dzID0gY29tcHV0ZUF1
dG9SZXBlYXRUcmFja3NDb3VudChGb3JSb3dzLCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVy
Y2VudGFnZUNvbXB1dGF0aW9uKCkpOwotCiAgICAgYXV0b1JlcGVhdFJvd3MgPSBjbGFtcEF1dG9S
ZXBlYXRUcmFja3MoRm9yUm93cywgYXV0b1JlcGVhdFJvd3MpOwogICAgIGF1dG9SZXBlYXRDb2x1
bW5zID0gY2xhbXBBdXRvUmVwZWF0VHJhY2tzKEZvckNvbHVtbnMsIGF1dG9SZXBlYXRDb2x1bW5z
KTsKIApAQCAtNjU0LDEwICs2NTIsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdy
aWQoR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiBhbGdvcml0aG0sIHN0ZDo6b3B0aQogICAgICAg
ICAgICAgY2hpbGQtPnNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhl
aWdodChzdGQ6Om51bGxvcHQpOwogCiAgICAgICAgIEdyaWRBcmVhIGFyZWEgPSBncmlkLmdyaWRJ
dGVtQXJlYSgqY2hpbGQpOwotICAgICAgICBpZiAoIWFyZWEucm93cy5pc0luZGVmaW5pdGUoKSkK
LSAgICAgICAgICAgIGFyZWEucm93cy50cmFuc2xhdGUoZ3JpZC5leHBsaWNpdEdyaWRTdGFydChG
b3JSb3dzKSk7Ci0gICAgICAgIGlmICghYXJlYS5jb2x1bW5zLmlzSW5kZWZpbml0ZSgpKQotICAg
ICAgICAgICAgYXJlYS5jb2x1bW5zLnRyYW5zbGF0ZShncmlkLmV4cGxpY2l0R3JpZFN0YXJ0KEZv
ckNvbHVtbnMpKTsKKyAgICAgICAgZ3JpZC5jbGFtcEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlk
KGFyZWEpOwogCiAgICAgICAgIGlmIChhcmVhLnJvd3MuaXNJbmRlZmluaXRlKCkgfHwgYXJlYS5j
b2x1bW5zLmlzSW5kZWZpbml0ZSgpKSB7CiAgICAgICAgICAgICBncmlkLnNldEdyaWRJdGVtQXJl
YSgqY2hpbGQsIGFyZWEpOwpAQCAtNjc0LDggKzY2OSw4IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxh
Y2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIGFsZ29yaXRobSwgc3RkOjpv
cHRpCiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmIChncmlkLmhhc0dyaWRJdGVtcygpKSB7
Ci0gICAgICAgIEFTU0VSVChncmlkLm51bVRyYWNrcyhGb3JSb3dzKSA+PSBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KHN0eWxlKCksIGdyaWQuYXV0b1JlcGVhdFRy
YWNrcyhGb3JSb3dzKSkpOwotICAgICAgICBBU1NFUlQoZ3JpZC5udW1UcmFja3MoRm9yQ29sdW1u
cykgPj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChzdHls
ZSgpLCBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucykpKTsKKyAgICAgICAgQVNTRVJU
KGdyaWQubnVtVHJhY2tzKEZvclJvd3MpID49IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGlj
aXRHcmlkUm93Q291bnQoKnRoaXMpKTsKKyAgICAgICAgQVNTRVJUKGdyaWQubnVtVHJhY2tzKEZv
ckNvbHVtbnMpID49IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291
bnQoKnRoaXMpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNzI5LDMzICs3MjQsMzUgQEAgdm9pZCBS
ZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYgZ3Jp
ZCkgY29uc3QKICAgICBPcmRlckl0ZXJhdG9yUG9wdWxhdG9yIHBvcHVsYXRvcihncmlkLm9yZGVy
SXRlcmF0b3IoKSk7CiAgICAgdW5zaWduZWQgZXhwbGljaXRSb3dTdGFydCA9IDA7CiAgICAgdW5z
aWduZWQgZXhwbGljaXRDb2x1bW5TdGFydCA9IDA7Ci0gICAgdW5zaWduZWQgYXV0b1JlcGVhdFJv
d3MgPSBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yUm93cyk7Ci0gICAgdW5zaWduZWQgYXV0b1Jl
cGVhdENvbHVtbnMgPSBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucyk7Ci0gICAgdW5z
aWduZWQgbWF4aW11bVJvd0luZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdy
aWRSb3dDb3VudChzdHlsZSgpLCBhdXRvUmVwZWF0Um93cyk7Ci0gICAgdW5zaWduZWQgbWF4aW11
bUNvbHVtbkluZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5D
b3VudChzdHlsZSgpLCBhdXRvUmVwZWF0Q29sdW1ucyk7CisgICAgdW5zaWduZWQgbWF4aW11bVJv
d0luZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudCgqdGhp
cyk7CisgICAgdW5zaWduZWQgbWF4aW11bUNvbHVtbkluZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29s
dmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCgqdGhpcyk7CiAKICAgICBmb3IgKFJlbmRlckJv
eCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZ0JveCgpKSB7CiAgICAgICAgIGlmICghcG9wdWxhdG9yLmNvbGxlY3RDaGlsZCgqY2hpbGQp
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBHcmlkU3BhbiByb3dQ
b3NpdGlvbnMgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJv
bVN0eWxlKHN0eWxlKCksICpjaGlsZCwgRm9yUm93cywgYXV0b1JlcGVhdFJvd3MpOwotICAgICAg
ICBpZiAoIXJvd1Bvc2l0aW9ucy5pc0luZGVmaW5pdGUoKSkgewotICAgICAgICAgICAgZXhwbGlj
aXRSb3dTdGFydCA9IHN0ZDo6bWF4PGludD4oZXhwbGljaXRSb3dTdGFydCwgLXJvd1Bvc2l0aW9u
cy51bnRyYW5zbGF0ZWRTdGFydExpbmUoKSk7Ci0gICAgICAgICAgICBtYXhpbXVtUm93SW5kZXgg
PSBzdGQ6Om1heDxpbnQ+KG1heGltdW1Sb3dJbmRleCwgcm93UG9zaXRpb25zLnVudHJhbnNsYXRl
ZEVuZExpbmUoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBHcm93IHRoZSBn
cmlkIGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUgcm93IHNwYW4sIGdldHRpbmcgdGhlIGxhcmdl
c3Qgc3VjaCBzcGFuLgotICAgICAgICAgICAgdW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRp
b25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oKmNoaWxkLCBGb3JSb3dzKTsK
LSAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Sb3dJbmRleCwg
c3BhblNpemUpOworICAgICAgICBHcmlkU3BhbiByb3dQb3NpdGlvbnMgPSBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKCpjaGlsZCwgRm9yUm93cyk7
CisgICAgICAgIGlmICghaXNTdWJncmlkUm93cygpKSB7CisgICAgICAgICAgICBpZiAoIXJvd1Bv
c2l0aW9ucy5pc0luZGVmaW5pdGUoKSkgeworICAgICAgICAgICAgICAgIGV4cGxpY2l0Um93U3Rh
cnQgPSBzdGQ6Om1heDxpbnQ+KGV4cGxpY2l0Um93U3RhcnQsIC1yb3dQb3NpdGlvbnMudW50cmFu
c2xhdGVkU3RhcnRMaW5lKCkpOworICAgICAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0
ZDo6bWF4PGludD4obWF4aW11bVJvd0luZGV4LCByb3dQb3NpdGlvbnMudW50cmFuc2xhdGVkRW5k
TGluZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gR3JvdyB0
aGUgZ3JpZCBmb3IgaXRlbXMgd2l0aCBhIGRlZmluaXRlIHJvdyBzcGFuLCBnZXR0aW5nIHRoZSBs
YXJnZXN0IHN1Y2ggc3Bhbi4KKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBzcGFuU2l6ZSA9IEdy
aWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbSgqY2hpbGQsIEZv
clJvd3MpOworICAgICAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1heGlt
dW1Sb3dJbmRleCwgc3BhblNpemUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAg
ICAgR3JpZFNwYW4gY29sdW1uUG9zaXRpb25zID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNv
bHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShzdHlsZSgpLCAqY2hpbGQsIEZvckNvbHVtbnMsIGF1
dG9SZXBlYXRDb2x1bW5zKTsKLSAgICAgICAgaWYgKCFjb2x1bW5Qb3NpdGlvbnMuaXNJbmRlZmlu
aXRlKCkpIHsKLSAgICAgICAgICAgIGV4cGxpY2l0Q29sdW1uU3RhcnQgPSBzdGQ6Om1heDxpbnQ+
KGV4cGxpY2l0Q29sdW1uU3RhcnQsIC1jb2x1bW5Qb3NpdGlvbnMudW50cmFuc2xhdGVkU3RhcnRM
aW5lKCkpOwotICAgICAgICAgICAgbWF4aW11bUNvbHVtbkluZGV4ID0gc3RkOjptYXg8aW50Piht
YXhpbXVtQ29sdW1uSW5kZXgsIGNvbHVtblBvc2l0aW9ucy51bnRyYW5zbGF0ZWRFbmRMaW5lKCkp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gR3JvdyB0aGUgZ3JpZCBmb3IgaXRl
bXMgd2l0aCBhIGRlZmluaXRlIGNvbHVtbiBzcGFuLCBnZXR0aW5nIHRoZSBsYXJnZXN0IHN1Y2gg
c3Bhbi4KLSAgICAgICAgICAgIHVuc2lnbmVkIHNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29s
dmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKCpjaGlsZCwgRm9yQ29sdW1ucyk7Ci0gICAg
ICAgICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heChtYXhpbXVtQ29sdW1uSW5kZXgs
IHNwYW5TaXplKTsKKyAgICAgICAgR3JpZFNwYW4gY29sdW1uUG9zaXRpb25zID0gR3JpZFBvc2l0
aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZSgqY2hpbGQsIEZvckNv
bHVtbnMpOworICAgICAgICBpZiAoIWlzU3ViZ3JpZENvbHVtbnMoKSkgeworICAgICAgICAgICAg
aWYgKCFjb2x1bW5Qb3NpdGlvbnMuaXNJbmRlZmluaXRlKCkpIHsKKyAgICAgICAgICAgICAgICBl
eHBsaWNpdENvbHVtblN0YXJ0ID0gc3RkOjptYXg8aW50PihleHBsaWNpdENvbHVtblN0YXJ0LCAt
Y29sdW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZFN0YXJ0TGluZSgpKTsKKyAgICAgICAgICAgICAg
ICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heDxpbnQ+KG1heGltdW1Db2x1bW5JbmRleCwg
Y29sdW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZEVuZExpbmUoKSk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIC8vIEdyb3cgdGhlIGdyaWQgZm9yIGl0ZW1zIHdpdGggYSBk
ZWZpbml0ZSBjb2x1bW4gc3BhbiwgZ2V0dGluZyB0aGUgbGFyZ2VzdCBzdWNoIHNwYW4uCisgICAg
ICAgICAgICAgICAgdW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNw
YW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oKmNoaWxkLCBGb3JDb2x1bW5zKTsKKyAgICAgICAgICAg
ICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heChtYXhpbXVtQ29sdW1uSW5kZXgsIHNw
YW5TaXplKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGdyaWQuc2V0R3Jp
ZEl0ZW1BcmVhKCpjaGlsZCwgeyByb3dQb3NpdGlvbnMsIGNvbHVtblBvc2l0aW9ucyB9KTsKQEAg
LTc2Myw2ICs3NjAsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5k
T3JkZXJJdGVyYXRvcihHcmlkJiBncmlkKSBjb25zdAogCiAgICAgZ3JpZC5zZXRFeHBsaWNpdEdy
aWRTdGFydChleHBsaWNpdFJvd1N0YXJ0LCBleHBsaWNpdENvbHVtblN0YXJ0KTsKICAgICBncmlk
LmVuc3VyZUdyaWRTaXplKG1heGltdW1Sb3dJbmRleCArIGV4cGxpY2l0Um93U3RhcnQsIG1heGlt
dW1Db2x1bW5JbmRleCArIGV4cGxpY2l0Q29sdW1uU3RhcnQpOworICAgIGdyaWQuc2V0Q2xhbXBp
bmdGb3JTdWJncmlkKGlzU3ViZ3JpZFJvd3MoKSA/IG1heGltdW1Sb3dJbmRleCA6IDAsIGlzU3Vi
Z3JpZENvbHVtbnMoKSA/IG1heGltdW1Db2x1bW5JbmRleCA6IDApOwogfQogCiBzdGQ6OnVuaXF1
ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmll
ZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0
ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBzcGVjaWZpZWREaXJlY3Rpb24sIGNvbnN0IEdy
aWRTcGFuJiBzcGVjaWZpZWRQb3NpdGlvbnMpIGNvbnN0CkBAIC03OTYsNyArNzk0LDcgQEAgdm9p
ZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdy
aWQsIGNvbnN0IFZlY3RvcjxSZW4KICAgICAgICAgaWYgKCFlbXB0eUdyaWRBcmVhKQogICAgICAg
ICAgICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0
aW9uc091dHNpZGVHcmlkKGdyaWQsICphdXRvR3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4
aXNEaXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25zKTsKIAotICAgICAgICBncmlkLmluc2Vy
dCgqYXV0b0dyaWRJdGVtLCAqZW1wdHlHcmlkQXJlYSk7CisgICAgICAgICplbXB0eUdyaWRBcmVh
ID0gZ3JpZC5pbnNlcnQoKmF1dG9HcmlkSXRlbSwgKmVtcHR5R3JpZEFyZWEpOwogCiAgICAgICAg
IGlmICghaXNHcmlkQXV0b0Zsb3dEZW5zZSkKICAgICAgICAgICAgIG1pbm9yQXhpc0N1cnNvcnMu
c2V0KG1ham9yQXhpc0luaXRpYWxQb3NpdGlvbiwgaXNGb3JDb2x1bW5zID8gZW1wdHlHcmlkQXJl
YS0+cm93cy5zdGFydExpbmUoKSA6IGVtcHR5R3JpZEFyZWEtPmNvbHVtbnMuc3RhcnRMaW5lKCkp
OwpAQCAtMTU5NCwxMSArMTU5MiwyOSBAQCBMYXlvdXRVbml0IFJlbmRlckdyaWQ6OnJlc29sdmVB
dXRvRW5kR3JpZFBvc2l0aW9uKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlYwogICAgIHJl
dHVybiBjbGllbnRMb2dpY2FsV2lkdGgoKTsKIH0KIAorYm9vbCBSZW5kZXJHcmlkOjppc1N1Ymdy
aWQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3sKKyAgICBpZiAo
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgoZGlyZWN0aW9uID09IEZvckNvbHVtbnMp
ID8gIXN0eWxlKCkuZ3JpZFN1YmdyaWRDb2x1bW5zKCkgOiAhc3R5bGUoKS5ncmlkU3ViZ3JpZFJv
d3MoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpczxSZW5kZXJHcmlkPihw
YXJlbnQoKSk7Cit9CisKK2Jvb2wgUmVuZGVyR3JpZDo6aXNTdWJncmlkUm93cygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGlzU3ViZ3JpZChGb3JSb3dzKTsKK30KK2Jvb2wgUmVuZGVyR3JpZDo6aXNT
dWJncmlkQ29sdW1ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzU3ViZ3JpZChGb3JDb2x1bW5z
KTsKK30KKwogTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZs
b3dDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
ZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChjaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7
CiAgICAgYm9vbCBpc1Jvd0F4aXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKLSAgICBHcmlk
U3BhbiBzcGFuID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zy
b21TdHlsZShzdHlsZSgpLCBjaGlsZCwgZGlyZWN0aW9uLCBhdXRvUmVwZWF0Q291bnRGb3JEaXJl
Y3Rpb24oZGlyZWN0aW9uKSk7CisgICAgR3JpZFNwYW4gc3BhbiA9IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIGRpcmVjdGlvbik7CiAg
ICAgaWYgKHNwYW4uaXNJbmRlZmluaXRlKCkpCiAgICAgICAgIHJldHVybiBpc1Jvd0F4aXMgPyBj
bGllbnRMb2dpY2FsV2lkdGgoKSA6IGNsaWVudExvZ2ljYWxIZWlnaHQoKTsKIApAQCAtMTkwNCw3
ICsxOTIwLDcgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6bnVtVHJhY2tzKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEdyaWQmIGcKICAgICAgICAgcmV0dXJuIGdyaWQu
bnVtVHJhY2tzKEZvclJvd3MpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc3RpbGwgcmVxdWlyZXMg
a25vd2xlZGdlIGFib3V0IG1fZ3JpZCBpbnRlcm5hbHMuCi0gICAgcmV0dXJuIGdyaWQubnVtVHJh
Y2tzKEZvclJvd3MpID8gZ3JpZC5udW1UcmFja3MoRm9yQ29sdW1ucykgOiBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KHN0eWxlKCksIGdyaWQuYXV0b1JlcGVh
dFRyYWNrcyhGb3JDb2x1bW5zKSk7CisgICAgcmV0dXJuIGdyaWQubnVtVHJhY2tzKEZvclJvd3Mp
ID8gZ3JpZC5udW1UcmFja3MoRm9yQ29sdW1ucykgOiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4
cGxpY2l0R3JpZENvbHVtbkNvdW50KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJHcmlkOjpwYWlu
dENoaWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KQpAQCAtMTk2MSw0
ICsxOTc3LDcxIEBAIGJvb2wgUmVuZGVyR3JpZDo6aGFzQXV0b1NpemVJblJvd0F4aXMoY29uc3Qg
UmVuZGVyQm94JiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IGNoaWxkLnN0eWxlKCkud2lkdGgoKS5pc0F1dG8oKSA6IGNoaWxkLnN0eWxlKCkuaGVp
Z2h0KCkuaXNBdXRvKCk7CiB9CiAKK3N0YXRpYyBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gdHJh
bnNwb3NlZERpcmVjdGlvbihHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQorewor
ICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykKKyAgICAgICAgcmV0dXJuIEZvclJvd3M7
CisgICAgcmV0dXJuIEZvckNvbHVtbnM7Cit9CisKK2Jvb2wgUmVuZGVyR3JpZDo6Y29tcHV0ZUdy
aWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50JiBzdGFydExpbmUsIGJvb2wmIHN0YXJ0SXNB
dXRvLCBpbnQmIGVuZExpbmUsIGJvb2wmIGVuZElzQXV0bykgY29uc3QKK3sKKyAgICBBU1NFUlQo
Y2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOworICAgIGludCBsYXN0TGluZSA9IG51bVRy
YWNrcyhkaXJlY3Rpb24sIG1fZ3JpZCk7CisgICAgR3JpZFNwYW4gc3BhbiA9IEdyaWRQb3NpdGlv
bnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIGRpcmVjdGlv
bik7CisgICAgaWYgKHNwYW4uaXNJbmRlZmluaXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHVuc2lnbmVkIGV4cGxpY2l0U3RhcnQgPSBtX2dyaWQuZXhwbGljaXRHcmlkU3RhcnQo
ZGlyZWN0aW9uKTsKKyAgICBzdGFydExpbmUgPSBzcGFuLnVudHJhbnNsYXRlZFN0YXJ0TGluZSgp
ICsgZXhwbGljaXRTdGFydDsKKyAgICBlbmRMaW5lID0gc3Bhbi51bnRyYW5zbGF0ZWRFbmRMaW5l
KCkgKyBleHBsaWNpdFN0YXJ0OworCisgICAgR3JpZFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBk
aXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Db2x1bW5TdGFy
dCgpIDogY2hpbGQuc3R5bGUoKS5ncmlkSXRlbVJvd1N0YXJ0KCk7CisgICAgR3JpZFBvc2l0aW9u
IGVuZFBvc2l0aW9uID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5zdHlsZSgpLmdy
aWRJdGVtQ29sdW1uRW5kKCkgOiBjaGlsZC5zdHlsZSgpLmdyaWRJdGVtUm93RW5kKCk7CisKKyAg
ICBzdGFydElzQXV0byA9IHN0YXJ0UG9zaXRpb24uaXNBdXRvKCkgfHwgc3RhcnRMaW5lIDwgMCB8
fCBzdGFydExpbmUgPiBsYXN0TGluZTsKKyAgICBlbmRJc0F1dG8gPSBlbmRQb3NpdGlvbi5pc0F1
dG8oKSB8fCBlbmRMaW5lIDwgMCB8fCBlbmRMaW5lID4gbGFzdExpbmU7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK0dyaWRTcGFuIFJlbmRlckdyaWQ6OmdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQo
Y29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
bikgY29uc3QKK3sKKyAgICBpbnQgbGFzdExpbmUgPSBudW1UcmFja3MoZGlyZWN0aW9uLCBtX2dy
aWQpOworICAgIGludCBzdGFydExpbmUsIGVuZExpbmU7CisgICAgYm9vbCBzdGFydElzQXV0bywg
ZW5kSXNBdXRvOworICAgIGlmICghY29tcHV0ZUdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY2hp
bGQsIGRpcmVjdGlvbiwgc3RhcnRMaW5lLCBzdGFydElzQXV0bywgZW5kTGluZSwgZW5kSXNBdXRv
KSkKKyAgICAgICAgcmV0dXJuIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbigw
LCBsYXN0TGluZSk7CisgICAgcmV0dXJuIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlk
U3BhbihzdGFydElzQXV0byA/IDAgOiBzdGFydExpbmUsIGVuZElzQXV0byA/IGxhc3RMaW5lIDog
ZW5kTGluZSk7Cit9CisKK0dyaWRTcGFuIFJlbmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQoY29u
c3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikg
Y29uc3QKK3sKKyAgICBBU1NFUlQoaXM8UmVuZGVyR3JpZD4oY2hpbGQucGFyZW50KCkpKTsKKwor
ICAgIFJlbmRlckdyaWQqIHJlbmRlckdyaWQgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihjaGlsZC5w
YXJlbnQoKSk7CisgICAgLy8gfGRpcmVjdGlvbnwgaXMgc3BlY2lmaWVkIHJlbGF0aXZlIHRvIHRo
aXMgZ3JpZCwgc3dpdGNoIGl0IGlmIHxjaGlsZHwncyBkaXJlY3QgcGFyZW50IGdyaWQKKyAgICAv
LyBpcyB1c2luZyBhIGRpZmZlcmVudCB3cml0aW5nIG1vZGUuCisgICAgaWYgKHJlbmRlckdyaWQt
PmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkK
KyAgICAgICAgZGlyZWN0aW9uID0gdHJhbnNwb3NlZERpcmVjdGlvbihkaXJlY3Rpb24pOworICAg
IEdyaWRTcGFuIHNwYW4gPSBjaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IHJlbmRlckdy
aWQtPmdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY2hpbGQsIGRpcmVjdGlvbikgOiByZW5kZXJH
cmlkLT5jdXJyZW50R3JpZCgpLmdyaWRJdGVtU3BhbihjaGlsZCwgZGlyZWN0aW9uKTsKKworICAg
IHdoaWxlIChyZW5kZXJHcmlkICE9IHRoaXMpIHsKKyAgICAgICAgQVNTRVJUKGlzPFJlbmRlckdy
aWQ+KHJlbmRlckdyaWQtPnBhcmVudCgpKSk7CisgICAgICAgIFJlbmRlckdyaWQqIHBhcmVudCA9
IGRvd25jYXN0PFJlbmRlckdyaWQ+KHJlbmRlckdyaWQtPnBhcmVudCgpKTsKKworICAgICAgICBi
b29sIGlzU3ViZ3JpZCA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gcmVuZGVyR3JpZC0+aXNT
dWJncmlkQ29sdW1ucygpIDogcmVuZGVyR3JpZC0+aXNTdWJncmlkUm93cygpOworCisgICAgICAg
IGlmIChyZW5kZXJHcmlkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9IHBhcmVudC0+aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAgIGRpcmVjdGlvbiA9IHRyYW5zcG9z
ZWREaXJlY3Rpb24oZGlyZWN0aW9uKTsKKworICAgICAgICBHcmlkU3BhbiBwYXJlbnRTcGFuID0g
cmVuZGVyR3JpZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgPyBwYXJlbnQtPmdyaWRTcGFuRm9y
T3V0T2ZGbG93Q2hpbGQoKnJlbmRlckdyaWQsIGRpcmVjdGlvbikgOiAgcGFyZW50LT5jdXJyZW50
R3JpZCgpLmdyaWRJdGVtU3BhbigqcmVuZGVyR3JpZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgaWYg
KGlzU3ViZ3JpZCkKKyAgICAgICAgICAgIHNwYW4udHJhbnNsYXRlVG8ocGFyZW50U3BhbiwgcGFy
ZW50LT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAhPSByZW5kZXJHcmlkLT5zdHls
ZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHNwYW4gPSBwYXJlbnRTcGFuOworICAgICAgICByZW5kZXJHcmlkID0gcGFyZW50OworICAgIH0K
KyAgICByZXR1cm4gc3BhbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggMjlhZTU5NDgwMDNlZTZkMmRkNDQzYjU2OTlk
Y2IyZDdjMTdiOTYyNi4uYjQ2ZWZkYTZiNTJmY2FiNDVkMWY0MTVlNDU5ZjA2Mjc0ZWIxOTJmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC04Miw2ICs4MiwxOSBAQCBw
dWJsaWM6CiAKICAgICBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIGNvbnRlbnRBbGlnbm1lbnQo
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAorICAgIC8vIENvbXB1dGVzIHRoZSBz
cGFuIHJlbGF0aXZlIHRvIHRoaXMgUmVuZGVyR3JpZCwgZXZlbiBpZiB0aGUgUmVuZGVyQm94IGlz
IGEgY2hpbGQKKyAgICAvLyBvZiBhIGRlc2NlbmRhbnQgc3ViZ3JpZC4KKyAgICBHcmlkU3BhbiBn
cmlkU3BhbkZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
bikgY29uc3Q7CisKKyAgICBib29sIGlzU3ViZ3JpZFJvd3MoKSBjb25zdDsKKyAgICBib29sIGlz
U3ViZ3JpZENvbHVtbnMoKSBjb25zdDsKKyAgICBib29sIGlzU3ViZ3JpZChHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24pIGNvbnN0OworCisgICAgY29uc3QgR3JpZCYgY3VycmVudEdyaWQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ3JpZDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAg
SXRlbVBvc2l0aW9uIHNlbGZBbGlnbm1lbnROb3JtYWxCZWhhdmlvcihjb25zdCBSZW5kZXJCb3gq
IGNoaWxkID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CkBAIC0xNTAsOCArMTYzLDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExvZ2ljYWxQb3NpdGlvbkZvckNoaWxkKFJlbmRlckJv
eCYpIGNvbnN0OwogICAgIHZvaWQgc2V0TG9naWNhbE9mZnNldEZvckNoaWxkKFJlbmRlckJveCYs
IEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
T2Zmc2V0Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
KSBjb25zdDsKLSAgICBHcmlkQXJlYSBjYWNoZWRHcmlkQXJlYShjb25zdCBSZW5kZXJCb3gmKSBj
b25zdDsKLSAgICBHcmlkU3BhbiBjYWNoZWRHcmlkU3Bhbihjb25zdCBSZW5kZXJCb3gmLCBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBncmlkQXJlYUJy
ZWFkdGhGb3JDaGlsZEluY2x1ZGluZ0FsaWdubWVudE9mZnNldHMoY29uc3QgUmVuZGVyQm94Jiwg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIApAQCAtMTkxLDYgKzIwMiw5IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIGFzcGVjdFJhdGlvUHJlZmVyc0lubGluZShjb25zdCBSZW5kZXJC
b3gmIGNoaWxkLCBib29sIGJsb2NrRmxvd0lzQ29sdW1uQXhpcyk7CiAKKyAgICBHcmlkU3BhbiBn
cmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbikgY29uc3Q7CisgICAgYm9vbCBjb21wdXRlR3JpZFNwYW5Gb3JPdXRPZkZsb3dD
aGlsZChjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGludCYsIGJv
b2wmLCBpbnQmLCBib29sJikgY29uc3Q7CisKICAgICBHcmlkIG1fZ3JpZDsKIAogICAgIEdyaWRU
cmFja1NpemluZ0FsZ29yaXRobSBtX3RyYWNrU2l6aW5nQWxnb3JpdGhtOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAppbmRleCBiN2ViZDFkOTYxZGU4ODI2ZmI4MzAz
MzA5YjhlNjM1MmYyMGY5ZWFiLi5lZTNiOTJmYzBmZjNiOTAwZGI5OWM5MjUyNzEwZWY3ZmUyMWI5
ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaApAQCAtNjUs
NyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBpbnRlZ2VyU3BhbigpIGNvbnN0CiAg
ICAgewotICAgICAgICBBU1NFUlQoaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSk7CisgICAgICAgIEFT
U0VSVChpc1RyYW5zbGF0ZWREZWZpbml0ZSgpIHx8IG1fdHlwZSA9PSBVbnRyYW5zbGF0ZWREZWZp
bml0ZSk7CiAgICAgICAgIHJldHVybiBtX2VuZExpbmUgLSBtX3N0YXJ0TGluZTsKICAgICB9CiAK
QEAgLTE0MSw2ICsxNDEsMzEgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9lbmRMaW5lID4g
MCk7CiAgICAgfQogCisgICAgLy8gTW92ZXMgdGhpcyBzcGFuIHRvIGJlIGluIHRoZSBzYW1lIGNv
b3JkaW5hdGUgc3BhY2UgYXMgfHBhcmVudHwuCisgICAgLy8gSWYgcmV2ZXJzZSBpcyBzcGVjaWZp
ZWQsIHRoZW4gc3dhcHMgdGhlIGRpcmVjdGlvbiB0byBoYW5kbGUgUlRML0xUUiBjaGFuZ2VzLgor
ICAgIHZvaWQgdHJhbnNsYXRlVG8oY29uc3QgR3JpZFNwYW4mIHBhcmVudCwgYm9vbCByZXZlcnNl
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGUpOwor
ICAgICAgICBBU1NFUlQocGFyZW50Lm1fdHlwZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGUpOworICAg
ICAgICBpZiAocmV2ZXJzZSkgeworICAgICAgICAgICAgaW50IHN0YXJ0ID0gbV9zdGFydExpbmU7
CisgICAgICAgICAgICBtX3N0YXJ0TGluZSA9IHBhcmVudC5pbnRlZ2VyU3BhbigpIC0gbV9lbmRM
aW5lICsgcGFyZW50LnN0YXJ0TGluZSgpOworICAgICAgICAgICAgbV9lbmRMaW5lID0gcGFyZW50
LmludGVnZXJTcGFuKCkgLSBzdGFydCArIHBhcmVudC5zdGFydExpbmUoKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG1fc3RhcnRMaW5lICs9IHBhcmVudC5tX3N0YXJ0TGluZTsKKyAg
ICAgICAgICAgIG1fZW5kTGluZSArPSBwYXJlbnQubV9zdGFydExpbmU7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIGNsYW1wKGludCBtYXgpCisgICAgeworICAgICAgICBBU1NFUlQobV90
eXBlICE9IEluZGVmaW5pdGUpOworICAgICAgICBtX3N0YXJ0TGluZSA9IHN0ZDo6bWF4KG1fc3Rh
cnRMaW5lLCAwKTsKKyAgICAgICAgbV9lbmRMaW5lID0gc3RkOjptYXgoc3RkOjptaW4obV9lbmRM
aW5lLCBtYXgpLCAxKTsKKyAgICAgICAgaWYgKG1fc3RhcnRMaW5lID49IG1fZW5kTGluZSkKKyAg
ICAgICAgICAgIG1fc3RhcnRMaW5lID0gbV9lbmRMaW5lIC0gMTsKKyAgICB9CisKIHByaXZhdGU6
CiAKICAgICBlbnVtIEdyaWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0
ZWREZWZpbml0ZSwgSW5kZWZpbml0ZX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCmluZGV4IDMzYzcwM2M1ZjA2
ZmE2NWEzZjZmYmRhMmRlNzZkZWEzZmI2MWI4ZGUuLjE2NDA3YzFiZGZlYTE0NWFiY2U3NDRkZDMx
NGY2ZjdkMTdmZmFmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
bmNsdWRlICJHcmlkQXJlYS5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2luY2x1ZGUgIlJl
bmRlckdyaWQuaCIKICNpbmNsdWRlIDxjc3RkbGliPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xNTIsNiArMTUzLDE4IEBAIHVuc2lnbmVkIE5hbWVkTGluZUNvbGxlY3Rpb246OmZpcnN0UG9z
aXRpb24oKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om1pbihmaXJzdEV4cGxpY2l0UG9zaXRpb24o
KSwgbV9pbXBsaWNpdE5hbWVkTGluZXNJbmRleGVzLT5hdChmaXJzdExpbmUpKTsKIH0KIAorLy8g
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1ncmlkLTIvI2luZGVmaW5pdGUtZ3JpZC1zcGFu
CitzdGF0aWMgYm9vbCBpc0luZGVmaW5pdGVTcGFuKEdyaWRQb3NpdGlvbiYgaW5pdGlhbFBvc2l0
aW9uLCBHcmlkUG9zaXRpb24mIGZpbmFsUG9zaXRpb24pCit7CisgICAgaWYgKCFpbml0aWFsUG9z
aXRpb24uaXNBdXRvKCkgJiYgIWZpbmFsUG9zaXRpb24uaXNBdXRvKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChpbml0aWFsUG9zaXRpb24uaXNTcGFuKCkgfHwgZmluYWxQb3Np
dGlvbi5pc1NwYW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHN0YXRpYyB2b2lkIGFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3Jp
ZFBvc2l0aW9uJiBpbml0aWFsUG9zaXRpb24sIEdyaWRQb3NpdGlvbiYgZmluYWxQb3NpdGlvbikK
IHsKICAgICBib29sIGlzRm9yQ29sdW1ucyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwpAQCAt
MTY4LDIxICsxODEsNTIgQEAgc3RhdGljIHZvaWQgYWRqdXN0R3JpZFBvc2l0aW9uc0Zyb21TdHls
ZShjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXoKICAgICAgICAgZmluYWxQ
b3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oMSwgU3RyaW5nKCkpOwogICAgIGlmIChmaW5hbFBvc2l0
aW9uLmlzQXV0bygpICYmIGluaXRpYWxQb3NpdGlvbi5pc1NwYW4oKSAmJiAhaW5pdGlhbFBvc2l0
aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSkKICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNl
dFNwYW5Qb3NpdGlvbigxLCBTdHJpbmcoKSk7CisKKyAgICBpZiAoaXNJbmRlZmluaXRlU3Bhbihp
bml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pICYmIGlzPFJlbmRlckdyaWQ+KGdyaWRJdGVt
KSAmJiBkb3duY2FzdDxSZW5kZXJHcmlkPihncmlkSXRlbSkuaXNTdWJncmlkKGRpcmVjdGlvbikp
IHsKKyAgICAgICAgLy8gSW5kZWZpbml0ZSBzcGFuIGZvciBhbiBpdGVtIHRoYXQgaXMgc3ViZ3Jp
ZGRlZCBpbiB0aGlzIGF4aXMuCisgICAgICAgIGludCBsaW5lQ291bnQgPSBkaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucyA/IGdyaWRJdGVtLnN0eWxlKCkuZ3JpZENvbHVtbnMoKS5zaXplKCkgOiBncmlk
SXRlbS5zdHlsZSgpLmdyaWRSb3dzKCkuc2l6ZSgpOworCisgICAgICAgIGlmIChpbml0aWFsUG9z
aXRpb24uaXNBdXRvKCkpIHsKKyAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIHBvc2l0aW9uIHRv
IHNwYW4gPGxpbmUgbmFtZXMgLSAxPgorICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldFNw
YW5Qb3NpdGlvbihzdGQ6Om1heCgxLCBsaW5lQ291bnQgLSAxKSwgIiIpOworICAgICAgICAgICAg
aWYgKGZpbmFsUG9zaXRpb24uaXNTcGFuKCkpCisgICAgICAgICAgICAgICAgZmluYWxQb3NpdGlv
bi5zZXRBdXRvUG9zaXRpb24oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNl
dCBmaW5hbCBwb3NpdGlvbiB0byBzcGFuIDxsaW5lIG5hbWVzIC0gMT4KKyAgICAgICAgICAgIGZp
bmFsUG9zaXRpb24uc2V0U3BhblBvc2l0aW9uKHN0ZDo6bWF4KDEsIGxpbmVDb3VudCAtIDEpLCAi
Iik7CisgICAgICAgICAgICBpZiAoaW5pdGlhbFBvc2l0aW9uLmlzU3BhbigpKQorICAgICAgICAg
ICAgICAgIGluaXRpYWxQb3NpdGlvbi5zZXRBdXRvUG9zaXRpb24oKTsKKyAgICAgICAgfQorICAg
IH0KIH0KIAotdW5zaWduZWQgR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1
bW5Db3VudChjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCB1bnNpZ25lZCBh
dXRvUmVwZWF0VHJhY2tzQ291bnQpCit1bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4
cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihzdGQ6Om1heChncmlkQ29udGFpbmVyU3R5
bGUuZ3JpZENvbHVtbnMoKS5zaXplKCkgKyBhdXRvUmVwZWF0VHJhY2tzQ291bnQsIGdyaWRDb250
YWluZXJTdHlsZS5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4
KCkpOworICAgIGJvb2wgc3BlY2lmaWVkU3ViZ3JpZCA9IGdyaWRDb250YWluZXIuc3R5bGUoKS5n
cmlkU3ViZ3JpZENvbHVtbnMoKTsKKyAgICBpZiAoc3BlY2lmaWVkU3ViZ3JpZCAmJiBncmlkQ29u
dGFpbmVyLmlzU3ViZ3JpZENvbHVtbnMoKSkgeworICAgICAgICBjb25zdCBSZW5kZXJHcmlkJiBw
YXJlbnQgPSAqZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZENvbnRhaW5lci5wYXJlbnQoKSk7Cisg
ICAgICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBncmlkQ29udGFpbmVy
LmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gcGFyZW50LmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyBGb3JDb2x1bW5zIDogRm9yUm93czsKKyAgICAgICAgcmV0dXJuIHBhcmVudC5ncmlk
U3BhbkZvckNoaWxkKGdyaWRDb250YWluZXIsIGRpcmVjdGlvbikuaW50ZWdlclNwYW4oKTsKKyAg
ICB9CisgICAgYXV0byBzcGVjaWZpZWRDb2x1bW5zID0gc3BlY2lmaWVkU3ViZ3JpZCA/IDAgOiBn
cmlkQ29udGFpbmVyLnN0eWxlKCkuZ3JpZENvbHVtbnMoKS5zaXplKCk7CisgICAgcmV0dXJuIHN0
ZDo6bWluPHVuc2lnbmVkPihzdGQ6Om1heChzcGVjaWZpZWRDb2x1bW5zICsgZ3JpZENvbnRhaW5l
ci5hdXRvUmVwZWF0Q291bnRGb3JEaXJlY3Rpb24oRm9yQ29sdW1ucyksIGdyaWRDb250YWluZXIu
c3R5bGUoKS5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4KCkp
OwogfQogCi11bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0Nv
dW50KGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIHVuc2lnbmVkIGF1dG9S
ZXBlYXRUcmFja3NDb3VudCkKK3Vuc2lnbmVkIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGlj
aXRHcmlkUm93Q291bnQoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lcikKIHsKLSAgICBy
ZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KHN0ZDo6bWF4KGdyaWRDb250YWluZXJTdHlsZS5ncmlk
Um93cygpLnNpemUoKSArIGF1dG9SZXBlYXRUcmFja3NDb3VudCwgZ3JpZENvbnRhaW5lclN0eWxl
Lm5hbWVkR3JpZEFyZWFSb3dDb3VudCgpKSwgR3JpZFBvc2l0aW9uOjptYXgoKSk7CisgICAgYm9v
bCBzcGVjaWZpZWRTdWJncmlkID0gZ3JpZENvbnRhaW5lci5zdHlsZSgpLmdyaWRTdWJncmlkUm93
cygpOworICAgIGlmIChzcGVjaWZpZWRTdWJncmlkICYmIGdyaWRDb250YWluZXIuaXNTdWJncmlk
Um93cygpKSB7CisgICAgICAgIGNvbnN0IFJlbmRlckdyaWQmIHBhcmVudCA9ICpkb3duY2FzdDxS
ZW5kZXJHcmlkPihncmlkQ29udGFpbmVyLnBhcmVudCgpKTsKKyAgICAgICAgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGdyaWRDb250YWluZXIuaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA9PSBwYXJlbnQuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEZvclJvd3MgOiBG
b3JDb2x1bW5zOworICAgICAgICByZXR1cm4gcGFyZW50LmdyaWRTcGFuRm9yQ2hpbGQoZ3JpZENv
bnRhaW5lciwgZGlyZWN0aW9uKS5pbnRlZ2VyU3BhbigpOworICAgIH0KKyAgICBhdXRvIHNwZWNp
ZmllZFJvd3MgPSBzcGVjaWZpZWRTdWJncmlkID8gMCA6IGdyaWRDb250YWluZXIuc3R5bGUoKS5n
cmlkUm93cygpLnNpemUoKTsKKyAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KHN0ZDo6bWF4
KHNwZWNpZmllZFJvd3MgKyBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlv
bihGb3JSb3dzKSwgZ3JpZENvbnRhaW5lci5zdHlsZSgpLm5hbWVkR3JpZEFyZWFSb3dDb3VudCgp
KSwgR3JpZFBvc2l0aW9uOjptYXgoKSk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBleHBsaWNpdEdy
aWRTaXplRm9yU2lkZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBHcmlk
UG9zaXRpb25TaWRlIHNpZGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3N0YXRp
YyB1bnNpZ25lZCBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShjb25zdCBSZW5kZXJHcmlkJiBncmlk
Q29udGFpbmVyLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7Ci0gICAgcmV0dXJuIGlzQ29sdW1u
U2lkZShzaWRlKSA/IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291
bnQoZ3JpZENvbnRhaW5lclN0eWxlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpIDogR3JpZFBvc2l0
aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChncmlkQ29udGFpbmVyU3R5bGUsIGF1
dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgcmV0dXJuIGlzQ29sdW1uU2lkZShzaWRlKSA/IEdy
aWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoZ3JpZENvbnRhaW5l
cikgOiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KGdyaWRDb250
YWluZXIpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgbG9va0FoZWFkRm9yTmFtZWRHcmlkTGluZShp
bnQgc3RhcnQsIHVuc2lnbmVkIG51bWJlck9mTGluZXMsIHVuc2lnbmVkIGdyaWRMYXN0TGluZSwg
TmFtZWRMaW5lQ29sbGVjdGlvbiYgbGluZXNDb2xsZWN0aW9uKQpAQCAtMjI0LDEyICsyNjgsMTIg
QEAgc3RhdGljIGludCBsb29rQmFja0Zvck5hbWVkR3JpZExpbmUoaW50IGVuZCwgdW5zaWduZWQg
bnVtYmVyT2ZMaW5lcywgaW50IGdyaWRMYXMKICAgICByZXR1cm4gc3RhcnQgKyAxOwogfQogCi1z
dGF0aWMgaW50IHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlv
biwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQp
CitzdGF0aWMgaW50IHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUoY29uc3Qg
UmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwg
R3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogewogICAgIEFTU0VSVCghcG9zaXRpb24ubmFtZWRHcmlk
TGluZSgpLmlzTnVsbCgpKTsKIAotICAgIHVuc2lnbmVkIGxhc3RMaW5lID0gZXhwbGljaXRHcmlk
U2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0eWxlLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291
bnQpOwotICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gbGluZXNDb2xsZWN0aW9uKGdyaWRDb250YWlu
ZXJTdHlsZSwgcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRl
KSwgbGFzdExpbmUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgdW5zaWduZWQgbGFzdExp
bmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyLCBzaWRlKTsKKyAgICBO
YW1lZExpbmVDb2xsZWN0aW9uIGxpbmVzQ29sbGVjdGlvbihncmlkQ29udGFpbmVyLnN0eWxlKCks
IHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RM
aW5lLCBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlvbihkaXJlY3Rpb25G
cm9tU2lkZShzaWRlKSkpOwogCiAgICAgaWYgKHBvc2l0aW9uLmlzUG9zaXRpdmUoKSkKICAgICAg
ICAgcmV0dXJuIGxvb2tBaGVhZEZvck5hbWVkR3JpZExpbmUoMCwgc3RkOjphYnMocG9zaXRpb24u
aW50ZWdlclBvc2l0aW9uKCkpLCBsYXN0TGluZSwgbGluZXNDb2xsZWN0aW9uKTsKQEAgLTI1MCwx
OSArMjk0LDE5IEBAIHN0YXRpYyBHcmlkU3BhbiBkZWZpbml0ZUdyaWRTcGFuV2l0aE5hbWVkTGlu
ZVNwYW5BZ2FpbnN0T3Bwb3NpdGUoaW50IG9wcG9zaXRlTGluCiAgICAgcmV0dXJuIEdyaWRTcGFu
Ojp1bnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKHN0YXJ0LCBlbmQpOwogfQogCi1zdGF0aWMg
R3JpZFNwYW4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0
aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGludCBvcHBvc2l0ZUxp
bmUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwg
dW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorc3RhdGljIEdyaWRTcGFuIHJlc29sdmVO
YW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJH
cmlkJiBncmlkQ29udGFpbmVyLCBpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBHcmlkUG9zaXRpb24m
IHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7CiAgICAgQVNTRVJUKHBvc2l0aW9u
LmlzU3BhbigpKTsKICAgICBBU1NFUlQoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwo
KSk7CiAgICAgLy8gTmVnYXRpdmUgcG9zaXRpb25zIGFyZSBub3QgYWxsb3dlZCBwZXIgdGhlIHNw
ZWNpZmljYXRpb24gYW5kIHNob3VsZCBoYXZlIGJlZW4gaGFuZGxlZCBkdXJpbmcgcGFyc2luZy4K
ICAgICBBU1NFUlQocG9zaXRpb24uc3BhblBvc2l0aW9uKCkgPiAwKTsKIAotICAgIHVuc2lnbmVk
IGxhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0eWxlLCBz
aWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gbGlu
ZXNDb2xsZWN0aW9uKGdyaWRDb250YWluZXJTdHlsZSwgcG9zaXRpb24ubmFtZWRHcmlkTGluZSgp
LCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGF1dG9SZXBlYXRUcmFja3NDb3Vu
dCk7CisgICAgdW5zaWduZWQgbGFzdExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlk
Q29udGFpbmVyLCBzaWRlKTsKKyAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGxpbmVzQ29sbGVjdGlv
bihncmlkQ29udGFpbmVyLnN0eWxlKCksIHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgZGlyZWN0
aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5lLCBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3Vu
dEZvckRpcmVjdGlvbihkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSkpOwogICAgIHJldHVybiBkZWZp
bml0ZUdyaWRTcGFuV2l0aE5hbWVkTGluZVNwYW5BZ2FpbnN0T3Bwb3NpdGUob3Bwb3NpdGVMaW5l
LCBwb3NpdGlvbiwgc2lkZSwgbGFzdExpbmUsIGxpbmVzQ29sbGVjdGlvbik7CiB9CiAKLXN0YXRp
YyBHcmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29u
c3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgaW50IG9wcG9zaXRlTGluZSwgY29u
c3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25l
ZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCitzdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3Np
dGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWlu
ZXIsIGludCBvcHBvc2l0ZUxpbmUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQ
b3NpdGlvblNpZGUgc2lkZSkKIHsKICAgICBpZiAocG9zaXRpb24uaXNBdXRvKCkpIHsKICAgICAg
ICAgaWYgKGlzU3RhcnRTaWRlKHNpZGUpKQpAQCAtMjc1LDcgKzMxOSw3IEBAIHN0YXRpYyBHcmlk
U3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgUmVu
ZGVyU3R5bGUmIGdyCiAKICAgICBpZiAoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwo
KSkgewogICAgICAgICAvLyBzcGFuIDIgJ2MnIC0+IHdlIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9w
cmlhdGUgZ3JpZCBsaW5lIGJlZm9yZSAvIGFmdGVyIG91ciBvcHBvc2l0ZSBwb3NpdGlvbi4KLSAg
ICAgICAgcmV0dXJuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQ
b3NpdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIG9wcG9zaXRlTGluZSwgcG9zaXRpb24sIHNpZGUs
IGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRHcmlk
TGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oZ3JpZENvbnRhaW5lciwgb3Bwb3Np
dGVMaW5lLCBwb3NpdGlvbiwgc2lkZSk7CiAgICAgfQogCiAgICAgLy8gJ3NwYW4gMScgaXMgY29u
dGFpbmVkIGluc2lkZSBhIHNpbmdsZSBncmlkIHRyYWNrIHJlZ2FyZGxlc3Mgb2YgdGhlIGRpcmVj
dGlvbi4KQEAgLTMxNSwyMSArMzU5LDIxIEBAIHVuc2lnbmVkIEdyaWRQb3NpdGlvbnNSZXNvbHZl
cjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbShjb25zdCBSZW5kZXJCb3gmIGdyaWRJCiAgICAg
cmV0dXJuIHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpOwogfQogCi1zdGF0aWMgaW50IHJlc29sdmVH
cmlkUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHls
ZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1
bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCitzdGF0aWMgaW50IHJlc29sdmVHcmlkUG9z
aXRpb25Gcm9tU3R5bGUoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwgY29uc3QgR3Jp
ZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogewogICAgIHN3aXRj
aCAocG9zaXRpb24udHlwZSgpKSB7CiAgICAgY2FzZSBFeHBsaWNpdFBvc2l0aW9uOiB7CiAgICAg
ICAgIEFTU0VSVChwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSk7CiAKICAgICAgICAgaWYgKCFw
b3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVz
b2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkZyb21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIHBv
c2l0aW9uLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgICAgICAgICAgcmV0dXJu
IHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUoZ3JpZENvbnRhaW5lciwgcG9z
aXRpb24sIHNpZGUpOwogCiAgICAgICAgIC8vIEhhbmRsZSA8aW50ZWdlcj4gZXhwbGljaXQgcG9z
aXRpb24uCiAgICAgICAgIGlmIChwb3NpdGlvbi5pc1Bvc2l0aXZlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCkgLSAxOwogCiAgICAgICAgIHVuc2lnbmVk
IHJlc29sdmVkUG9zaXRpb24gPSBzdGQ6OmFicyhwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSkg
LSAxOwotICAgICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlRyYWNrID0gZXhwbGljaXRHcmlkU2l6
ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0eWxlLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQp
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlRyYWNrID0gZXhwbGljaXRHcmlkU2l6ZUZv
clNpZGUoZ3JpZENvbnRhaW5lciwgc2lkZSk7CiAKICAgICAgICAgcmV0dXJuIGVuZE9mVHJhY2sg
LSByZXNvbHZlZFBvc2l0aW9uOwogICAgIH0KQEAgLTM0MSwxNCArMzg1LDE0IEBAIHN0YXRpYyBp
bnQgcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENv
bnRhaW5lclN0eWxlLCBjCiAgICAgICAgIFN0cmluZyBuYW1lZEdyaWRMaW5lID0gcG9zaXRpb24u
bmFtZWRHcmlkTGluZSgpOwogICAgICAgICBBU1NFUlQoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUo
KS5pc051bGwoKSk7CiAKLSAgICAgICAgdW5zaWduZWQgbGFzdExpbmUgPSBleHBsaWNpdEdyaWRT
aXplRm9yU2lkZShncmlkQ29udGFpbmVyU3R5bGUsIHNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3Vu
dCk7Ci0gICAgICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gaW1wbGljaXRMaW5lcyhncmlkQ29udGFp
bmVyU3R5bGUsIGltcGxpY2l0TmFtZWRHcmlkTGluZUZvclNpZGUobmFtZWRHcmlkTGluZSwgc2lk
ZSksIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgYXV0b1JlcGVhdFRyYWNrc0Nv
dW50KTsKKyAgICAgICAgdW5zaWduZWQgbGFzdExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lk
ZShncmlkQ29udGFpbmVyLCBzaWRlKTsKKyAgICAgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBpbXBs
aWNpdExpbmVzKGdyaWRDb250YWluZXIuc3R5bGUoKSwgaW1wbGljaXROYW1lZEdyaWRMaW5lRm9y
U2lkZShuYW1lZEdyaWRMaW5lLCBzaWRlKSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RM
aW5lLCBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlvbihkaXJlY3Rpb25G
cm9tU2lkZShzaWRlKSkpOwogICAgICAgICBpZiAoaW1wbGljaXRMaW5lcy5oYXNOYW1lZExpbmVz
KCkpCiAgICAgICAgICAgICByZXR1cm4gaW1wbGljaXRMaW5lcy5maXJzdFBvc2l0aW9uKCk7CiAK
ICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiB0aGVyZSBpcyBhIG5hbWVkIGxpbmUgd2l0aCB0aGUg
c3BlY2lmaWVkIG5hbWUsIGNvbnRyaWJ1dGVzIHRoZSBmaXJzdCBzdWNoIGxpbmUgdG8gdGhlIGdy
aWQKICAgICAgICAgLy8gaXRlbSdzIHBsYWNlbWVudC4KLSAgICAgICAgTmFtZWRMaW5lQ29sbGVj
dGlvbiBleHBsaWNpdExpbmVzKGdyaWRDb250YWluZXJTdHlsZSwgbmFtZWRHcmlkTGluZSwgZGly
ZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5lLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwor
ICAgICAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGV4cGxpY2l0TGluZXMoZ3JpZENvbnRhaW5lci5z
dHlsZSgpLCBuYW1lZEdyaWRMaW5lLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUs
IGdyaWRDb250YWluZXIuYXV0b1JlcGVhdENvdW50Rm9yRGlyZWN0aW9uKGRpcmVjdGlvbkZyb21T
aWRlKHNpZGUpKSk7CiAgICAgICAgIGlmIChleHBsaWNpdExpbmVzLmhhc05hbWVkTGluZXMoKSkK
ICAgICAgICAgICAgIHJldHVybiBleHBsaWNpdExpbmVzLmZpcnN0UG9zaXRpb24oKTsKIApAQCAt
MzY1LDggKzQwOSwxMSBAQCBzdGF0aWMgaW50IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgYwogICAgIHJldHVybiAwOwog
fQogCi1HcmlkU3BhbiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25z
RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGNvbnN0IFJl
bmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVu
c2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK0dyaWRTcGFuIEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94JiBncmlk
SXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKKyAgICBhdXRvKiBn
cmlkQ29udGFpbmVyID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZEl0ZW0uY29udGFpbmluZ0Js
b2NrKCkpOworICAgIEFTU0VSVChncmlkQ29udGFpbmVyKTsKKwogICAgIEdyaWRQb3NpdGlvbiBp
bml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb247CiAgICAgYWRqdXN0R3JpZFBvc2l0aW9uc0Zy
b21TdHlsZShncmlkSXRlbSwgZGlyZWN0aW9uLCBpbml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRp
b24pOwogCkBAIC0zNzksMTggKzQyNiwxOCBAQCBHcmlkU3BhbiBHcmlkUG9zaXRpb25zUmVzb2x2
ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJgogCiAg
ICAgaWYgKGluaXRpYWxQb3NpdGlvbi5zaG91bGRCZVJlc29sdmVkQWdhaW5zdE9wcG9zaXRlUG9z
aXRpb24oKSkgewogICAgICAgICAvLyBJbmZlciB0aGUgcG9zaXRpb24gZnJvbSB0aGUgZmluYWwg
cG9zaXRpb24gKCdhdXRvIC8gMScgb3IgJ3NwYW4gMiAvIDMnIGNhc2UpLgotICAgICAgICBhdXRv
IGVuZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXJTdHls
ZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAg
ICAgICByZXR1cm4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGdy
aWRDb250YWluZXJTdHlsZSwgZW5kTGluZSwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lkZSwg
YXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAgYXV0byBlbmRMaW5lID0gcmVzb2x2ZUdy
aWRQb3NpdGlvbkZyb21TdHlsZSgqZ3JpZENvbnRhaW5lciwgZmluYWxQb3NpdGlvbiwgZmluYWxT
aWRlKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQ
b3NpdGlvbigqZ3JpZENvbnRhaW5lciwgZW5kTGluZSwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFs
U2lkZSk7CiAgICAgfQogCiAgICAgaWYgKGZpbmFsUG9zaXRpb24uc2hvdWxkQmVSZXNvbHZlZEFn
YWluc3RPcHBvc2l0ZVBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gSW5mZXIgb3VyIHBvc2l0aW9u
IGZyb20gdGhlIGluaXRpYWwgcG9zaXRpb24gKCcxIC8gYXV0bycgb3IgJzMgLyBzcGFuIDInIGNh
c2UpLgotICAgICAgICBhdXRvIHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5
bGUoZ3JpZENvbnRhaW5lclN0eWxlLCBpbml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlLCBhdXRv
UmVwZWF0VHJhY2tzQ291bnQpOwotICAgICAgICByZXR1cm4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFn
YWluc3RPcHBvc2l0ZVBvc2l0aW9uKGdyaWRDb250YWluZXJTdHlsZSwgc3RhcnRMaW5lLCBmaW5h
bFBvc2l0aW9uLCBmaW5hbFNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIGF1
dG8gc3RhcnRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZSgqZ3JpZENvbnRhaW5l
ciwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lkZSk7CisgICAgICAgIHJldHVybiByZXNvbHZl
R3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKmdyaWRDb250YWluZXIsIHN0YXJ0
TGluZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlKTsKICAgICB9CiAKLSAgICBpbnQgc3RhcnRM
aW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIGlu
aXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAg
aW50IGVuZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXJT
dHlsZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwor
ICAgIGludCBzdGFydExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKCpncmlkQ29u
dGFpbmVyLCBpbml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlKTsKKyAgICBpbnQgZW5kTGluZSA9
IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoKmdyaWRDb250YWluZXIsIGZpbmFsUG9zaXRp
b24sIGZpbmFsU2lkZSk7CiAKICAgICBpZiAoc3RhcnRMaW5lID4gZW5kTGluZSkKICAgICAgICAg
c3RkOjpzd2FwKHN0YXJ0TGluZSwgZW5kTGluZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmgKaW5kZXggNjIzYjYyYzZj
MjQxZGMxMzAyNTA3OGQxNTFmNmE5OTBkNWRjMTA2ZS4uNzI0MTk1NzczNTQxM2RkMTFhMWJkNDAy
YWIyMmIwZGU1NjM3MmE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyaWRTcGFuOwogY2xhc3MgUmVuZGVyQm94OworY2xhc3Mg
UmVuZGVyR3JpZDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCiBlbnVtIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiB7CkBAIC03Myw5ICs3NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgR3JpZFBvc2l0
aW9uU2lkZSBpbml0aWFsUG9zaXRpb25TaWRlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CiAg
ICAgc3RhdGljIEdyaWRQb3NpdGlvblNpZGUgZmluYWxQb3NpdGlvblNpZGUoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uKTsKICAgICBzdGF0aWMgdW5zaWduZWQgc3BhblNpemVGb3JBdXRvUGxhY2Vk
SXRlbShjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOwotICAgIHN0
YXRpYyBHcmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgdW5zaWdu
ZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICBzdGF0aWMgdW5zaWduZWQgZXhwbGljaXRH
cmlkQ29sdW1uQ291bnQoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCBhdXRvUmVwZWF0Q29s
dW1uc0NvdW50KTsKLSAgICBzdGF0aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkUm93Q291bnQoY29u
c3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCBhdXRvUmVwZWF0Um93c0NvdW50KTsKKyAgICBzdGF0
aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94
JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgZXhwbGlj
aXRHcmlkQ29sdW1uQ291bnQoY29uc3QgUmVuZGVyR3JpZCYpOworICAgIHN0YXRpYyB1bnNpZ25l
ZCBleHBsaWNpdEdyaWRSb3dDb3VudChjb25zdCBSZW5kZXJHcmlkJik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAyYjI2NGE4
MTlkNDFmNGQ1ODgwYjRhNWIzNTY3ODMwZWIxMjc1NDZmLi5jNTA0M2ZkMDE4MTI4YjVjNWE4ZTFj
MWYyY2FlNmVkNmYxNmE0YTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wMi0wMyAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUu
Y29tPgorCisgICAgICAgIEluaGVyaXQgdHJhY2sgY291bnQgZnJvbSBwYXJlbnQgZ3JpZCBmb3Ig
c3ViZ3JpZGRlZCBheGVzIGFuZCBjbGFtcCBpdGVtIHBsYWNlbWVudCB0byB0aGF0IGV4cGxpY2l0
IGdyaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0IGNoYW5nZXMgdG8gbWF0Y2ggbGF0ZXN0IHNwZWMsIHN1Ym1pdHRlZCB1cHN0cmVhbSBhcyBo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9wdWxsLzMyNjI5CisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1l
cy0wMDItZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUtZXhwZWN0ZWQuaHRtbDoKKwogMjAyMi0wMi0w
MiAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBwYXJzaW5nICdzdWJncmlkJyBpbiBncmlkLXRlbXBsYXRlLWNvbHVtbnMvcm93
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWwKaW5kZXggMDRjNTgzOTU5NmM5ZTViMDll
Y2NlMjg0YzhjYzc1N2I2ZDFlZjg3Yy4uMjM5OTMyOGJlY2M0ZTU1NjI1MmRiNWFlN2NiMDA0ZTkz
ZDhhNDhkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi1leHBlY3RlZC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMTQsNyArMTQs
NyBAQCBodG1sLGJvZHkgewogCiAuZ3JpZCB7CiAgIGRpc3BsYXk6IGdyaWQ7Ci0gIGdyaWQ6IGF1
dG8gLyBbYV0gNTBweCA1MHB4IFthXSA1MHB4IDUwcHggW2FdOworICBncmlkOiBhdXRvIC8gW2Fd
IDUwcHggNDBweCBbYV0gMTBweCA1MHB4IFthXTsKICAgcGFkZGluZzogMjBweCAxMHB4OwogfQog
CkBAIC0zMiw3ICszMiw3IEBAIHggeyBiYWNrZ3JvdW5kOiBncmV5OyB9CiAKIDxkaXYgY2xhc3M9
ImdyaWQiPgogICA8ZGl2IGNsYXNzPSJzdWJncmlkIj4KLSAgICA8eCBzdHlsZT0iZ3JpZC1jb2x1
bW46IDEgLyAzIj48L3g+CisgICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAzIC8gNCI+PC94Pgog
ICA8L2Rpdj4KIDwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1LWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1LWV4cGVjdGVkLmh0bWwKaW5kZXgg
NGM3ZjRiNTBmZDE2NjAxNDgwZTMyOTI0ZTFlYWFhNzZjODFiNzBjNi4uY2ZlMThkMWIyNmVkNmVi
NzM1NWE3ZTAwMjlmM2U3Zjc2ZjU2NmQ2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVz
LTAwNS1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUtZXhwZWN0ZWQu
aHRtbApAQCAtMTE1LDcgKzExNSw3IEBAIHggewogPGRpdiBzdHlsZT0iZGlzcGxheTpncmlkOyB3
aWR0aDo1MDBweDsgZ3JpZC1hdXRvLWNvbHVtbnM6IDUwcHg7Ij4KIDxpPjwvaT48aT48L2k+PGk+
PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT4KICAg
PGRpdiBjbGFzcz0ic3ViZ3JpZDIiPgotICAgIDx4IHN0eWxlPSJncmlkLWNvbHVtbjogc3BhbiA0
IC8gMTEiPng8L3g+CisgICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiBzcGFuIDMgLyAxMSI+eDwv
eD4KICAgPC9kaXY+CiA8L2Rpdj4KIApAQCAtMTI5LDcgKzEyOSw3IEBAIHggewogPGRpdiBzdHls
ZT0iZGlzcGxheTpncmlkOyBncmlkOiBhdXRvIC8gcmVwZWF0KDEwLCA1MHB4KSByZXBlYXQoMTAs
IFthXSA1MHB4KSBbYV0iPgogPGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48
L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPgogICA8ZGl2IHN0eWxlPSJkaXNwbGF5Omdy
aWQ7IGdyaWQ6YXV0by9zdWJncmlkOyBncmlkLWNvbHVtbjogc3BhbiAxMDsgZ3JpZC1yb3c6MiI+
Ci0gICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMTEiPng8L3g+CisgICAgPHggc3R5bGU9
ImdyaWQtY29sdW1uOiAxMCAvIDExIj54PC94PgogICA8L2Rpdj4KIDwvZGl2PgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450925</attachid>
            <date>2022-02-04 11:41:45 -0800</date>
            <delta_ts>2022-02-05 15:17:35 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>patch-ews</filename>
            <type>text/plain</type>
            <size>108992</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjN2I0YjVhMjhkMjYuLjI2ZThhMTBhMTUxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIyLTAyLTAyICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHBhcnNpbmcgJ3N1YmdyaWQnIGluIGdyaWQtdGVtcGxhdGUt
Y29sdW1ucy9yb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNjA1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZWQgVGVzdEV4cGVjdGF0aW9ucyB0byBsaXN0IGFsbCB0aGUgc3ViZ3JpZCB0ZXN0
cyBpbmRpdmlkdWFsbHksIG5vdyB0aGF0IHdlIHBhc3MgYSBmZXcuCisKKyAgICAgICAgKiBUZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIyLTAyLTAzICBGcsOpZMOpcmljIFdhbmcgIDxmd2FuZ0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIG51bGwgcHRyIGRlcmVmIGluIFJlbmRlclRyZWVCdWlsZGVyOjpC
bG9jazo6YXR0YWNoSWdub3JpbmdDb250aW51YXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDQw
MjQ2NmU0OWYwZS4uYzAzNTljM2I5Mzk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0MjEsNiAr
MTQyMSw1NCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9t
YXNvbnJ5L3RlbnRhdGl2ZS9tYXNvbnJ5LW9yZGVyLTAwMQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbWFzb25yeS90ZW50YXRpdmUvbWFzb25yeS1zdWJncmlk
LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9tYXNvbnJ5L3RlbnRhdGl2ZS9tYXNvbnJ5LXN1YmdyaWQtMDAy
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL2Ficy1wb3MtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDQuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWdyaWQvc3ViZ3JpZC9iYXNlbGluZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlk
LWdhcC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0w
MDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDUuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3Vi
Z3JpZC9ncmlkLWdhcC0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDcuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDguaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9n
cmlkLWdhcC0wMDkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC1sYXJnZXItMDAxLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtbGFyZ2VyLTAwMi5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9z
dWJncmlkL2dyaWQtZ2FwLW5vcm1hbC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdh
cC1zbWFsbGVyLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2l0ZW0tcGVyY2VudGFnZS1oZWln
aHQtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFt
ZXMtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDQuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFt
ZXMtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDcuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29ydGhvZ29u
YWwtd3JpdGluZy1tb2RlLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29ydGhvZ29uYWwtd3Jp
dGluZy1tb2RlLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29ydGhvZ29uYWwtd3JpdGluZy1t
b2RlLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29ydGhvZ29uYWwtd3JpdGluZy1tb2RlLTAw
NC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAxLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9yZXBlYXQtYXV0by1maWxsLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3Jl
cGVhdC1hdXRvLWZpbGwtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcmVwZWF0LWF1dG8tZmls
bC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9yZXBlYXQtYXV0by1maWxsLTAwNC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZ3JpZC9zdWJncmlkL3JlcGVhdC1hdXRvLWZpbGwtMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1Ymdy
aWQvcmVwZWF0LWF1dG8tZmlsbC0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9yZXBlYXQtYXV0
by1maWxsLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3JlcGVhdC1hdXRvLWZpbGwtMDA4Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvc3ViZ3JpZC1pdGVtLWJsb2NrLXNpemUtMDAxLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvc3ViZ3JpZC1tYnAtb3ZlcmZsb3ctMDAxLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1
YmdyaWQvc3ViZ3JpZC1tYnAtb3ZlcmZsb3ctMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvc3Vi
Z3JpZC1tYnAtb3ZlcmZsb3ctMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvc3ViZ3JpZC1tYnAt
b3ZlcmZsb3ctMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1zdWJncmlkZGVkLWF4aXMt
YXV0by1yZXBlYXRlci1jcmFzaC0wMDEuaHRtbCBbIENyYXNoIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1zdWJncmlkZGVkLWF4aXMt
YXV0by1yZXBlYXRlci1jcmFzaC0wMDIuaHRtbCBbIENyYXNoIF0KKwogd2Via2l0Lm9yZy9iLzE0
OTg5MCBmYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLXNob3J0aGFuZHMtc3R5bGUtZm9ybWF0Lmh0
bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTE1MDggZmFzdC9jc3MtZ3JpZC1sYXlvdXQv
Y3Jhc2gtbGFyZ2UtcG9zaXRpb25zLmh0bWwgWyBTa2lwIF0KIApAQCAtNDI2Miw3ICs0MzEwLDYg
QEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L21h
bnVhbC9zaGFkb3dzL2NhbnZhc19zaGFkb3cKIAogIyBDU1MgTWFzb25yeSBMYXlvdXQgbm90IHN1
cHBvcnRlZC4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL21h
c29ucnkudGVudGF0aXZlIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjAyMTE1IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8yMDQ1ODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvYW5pbWF0aW9uL2dyaWQtdGVtcGxhdGUtY29sdW1ucy0wMDEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwNDU4MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9hbmltYXRpb24vZ3JpZC10ZW1wbGF0ZS1yb3dzLTAwMS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjA5NDYwIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2Fic3Bvcy9kZXNjZW5kYW50LXN0YXRpYy1wb3Np
dGlvbi0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKaW5kZXggNDM3OTliOTIzMjgzLi5jNTA0M2ZkMDE4MTIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAyLTAzICBNYXR0IFdvb2Ryb3cg
IDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgSW5oZXJpdCB0cmFjayBjb3VudCBm
cm9tIHBhcmVudCBncmlkIGZvciBzdWJncmlkZGVkIGF4ZXMgYW5kIGNsYW1wIGl0ZW0gcGxhY2Vt
ZW50IHRvIHRoYXQgZXhwbGljaXQgZ3JpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNjEyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3QgY2hhbmdlcyB0byBtYXRjaCBsYXRlc3Qgc3BlYywgc3Vi
bWl0dGVkIHVwc3RyZWFtIGFzIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0L3B1bGwvMzI2MjkKKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS1leHBlY3Rl
ZC5odG1sOgorCisyMDIyLTAyLTAyICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHBhcnNpbmcgJ3N1YmdyaWQnIGluIGdyaWQt
dGVtcGxhdGUtY29sdW1ucy9yb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjA1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcG9ydGVkIGxhc3Rlc3Qgc3ViZ3JpZCB0ZXN0cy4KKworICAgICAgICAq
IHJlc291cmNlcy9pbXBvcnQtZXhwZWN0YXRpb25zLmpzb246CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtdGVtcGxhdGUtY29tcHV0ZWQtbm9n
cmlkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1n
cmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS1pbnZhbGlkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtdGVt
cGxhdGUtaW52YWxpZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS12YWxpZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9n
cmlkLXRlbXBsYXRlLXZhbGlkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC93M2MtaW1wb3J0LmxvZzoKKwogMjAyMi0wMi0wMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBBYm9y
dFNpZ25hbC50aW1lb3V0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS1jb21w
dXRlZC1ub2dyaWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRlLWNvbXB1dGVk
LW5vZ3JpZC1leHBlY3RlZC50eHQKaW5kZXggYWFhNjdlYzMzOTZlLi42NjAyYzc0ZDNhZTIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS1jb21wdXRlZC1ub2dyaWQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS1jb21wdXRlZC1ub2dyaWQtZXhwZWN0ZWQu
dHh0CkBAIC0xLDMxICsxLDMxIEBACiAKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zIHZhbHVlICdzdWJncmlkIFthXScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgW2FdJyBhc3NlcnRf
dHJ1ZTogJ3N1YmdyaWQgW2FdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0
ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRl
bXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXScgY29tcHV0ZXMgdG8gJ3N1Ymdy
aWQgW2FdIFtiXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYl0nIGlzIGEgc3VwcG9ydGVk
IHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNl
Ci1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0g
W2JdIFtiXSBbY10nIGNvbXB1dGVzIHRvICdzdWJncmlkIFthXSBbYl0gW2JdIFtjXScgYXNzZXJ0
X3RydWU6ICdzdWJncmlkIFthXSBbYl0gW2JdIFtjXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9y
IGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJv
cGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYiBjIGRdIFtl
IGZdIFtlIGZdIFtnXScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgW2FdIFtiIGMgZF0gW2UgZl0gW2Ug
Zl0gW2ddJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiIGMgZF0gW2UgZl0gW2UgZl0gW2dd
JyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3Rl
ZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFs
dWUgJ3N1YmdyaWQgW2EgYiBjXSBbZF0gW2UgZl0nIGNvbXB1dGVzIHRvICdzdWJncmlkIFthIGIg
Y10gW2RdIFtlIGZdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2EgYiBjXSBbZF0gW2UgZl0nIGlz
IGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRy
dWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAn
c3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10pJyBjb21wdXRlcyB0byAnc3ViZ3JpZCByZXBl
YXQoYXV0by1maWxsLCBbY10pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmls
bCwgW2NdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4g
ZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2ddIFtoIGldJyBjb21w
dXRlcyB0byAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10pIFtnXSBbaCBpXScgYXNzZXJ0
X3RydWU6ICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2ddIFtoIGldJyBpcyBhIHN1
cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdv
dCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1Ymdy
aWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2ddIFtoIGldJyBjb21wdXRlcyB0byAnc3Vi
Z3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10gW2ggaV0nIGFzc2VydF90cnVlOiAn
c3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9y
dGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZh
bHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBb
YSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10pIFtnXScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgW2Eg
Yl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYSBi
XSByZXBlYXQoYXV0by1maWxsLCBbY10pIFtnXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdy
aWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVy
dHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1
dG8tZmlsbCwgW2NdKSBbZyBoXScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQo
YXV0by1maWxsLCBbY10pIFtnIGhdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBl
YXQoYXV0by1maWxsLCBbY10pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10
ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBn
cmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1m
aWxsLCBbY10pJyBjb21wdXRlcyB0byAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGws
IFtjXSknIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtj
XSknIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVj
dGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2
YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbYyBkXSknIGNvbXB1dGVzIHRvICdzdWJn
cmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIHJlcGVh
dChhdXRvLWZpbGwsIFtjIGRdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxh
dGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10
ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBb
Z10gW2ggaV0nIGNvbXB1dGVzIHRvICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBb
Z10gW2ggaV0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkg
W2ddIFtoIGldJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
LiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNv
bHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZ10gW2gg
aV0nIGNvbXB1dGVzIHRvICdzdWJncmlkIFthXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkgW2dd
IFtoIGldJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRd
KSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVt
bnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUt
Y29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkgW2dd
JyBjb21wdXRlcyB0byAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkgW2dd
JyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2EgYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtn
XScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0
ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZh
bHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnIGhdJyBjb21w
dXRlcyB0byAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZyBoXScg
YXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtn
IGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBl
Y3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMg
dmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSknIGNvbXB1dGVz
IHRvICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pJyBhc3NlcnRfdHJ1
ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSknIGlzIGEgc3VwcG9y
dGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZh
bHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBy
ZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgcmVwZWF0KGF1
dG8tZmlsbCwgW2NdIFtkXSknIGFzc2VydF90cnVlOiAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxs
LCBbY10gW2RdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1u
cy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtnXSBbaCBp
XScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2ddIFto
IGldJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2dd
IFtoIGldJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBl
eHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVt
bnMgdmFsdWUgJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtnXSBbaCBp
XScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtn
XSBbaCBpXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSByZXBlYXQoYXV0by1maWxsLCBbY10g
W2RdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNv
bHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxh
dGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2Rd
KSBbZ10nIGNvbXB1dGVzIHRvICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBb
ZF0pIFtnXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtj
XSBbZF0pIFtnXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1u
cy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkg
W2cgaF0nIGNvbXB1dGVzIHRvICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2Nd
IFtkXSkgW2cgaF0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZp
bGwsIFtjXSBbZF0pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0
ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRl
bXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBb
Y10gW2RdKScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBb
Y10gW2RdKScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwg
W2NdIFtkXSknIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMu
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pJyBjb21wdXRl
cyB0byAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pJyBhc3NlcnRfdHJ1ZTog
J3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKScgaXMgYSBzdXBwb3J0ZWQgdmFs
dWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZB
SUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChh
dXRvLWZpbGwsIFtjXSBbZCBlXSkgW2ddIFtoIGldJyBjb21wdXRlcyB0byAnc3ViZ3JpZCByZXBl
YXQoYXV0by1maWxsLCBbY10gW2QgZV0pIFtnXSBbaCBpXScgYXNzZXJ0X3RydWU6ICdzdWJncmlk
IHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZCBlXSkgW2ddIFtoIGldJyBpcyBhIHN1cHBvcnRlZCB2
YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQot
RkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIHJl
cGVhdChhdXRvLWZpbGwsIFtjXSBbZCBlXSkgW2ddIFtoIGldJyBjb21wdXRlcyB0byAnc3ViZ3Jp
ZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0nIGFzc2VydF90cnVl
OiAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0nIGlz
IGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRy
dWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAn
c3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pIFtnXScgY29tcHV0ZXMg
dG8gJ3N1YmdyaWQgW2EgYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10nIGFzc2Vy
dF90cnVlOiAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pIFtnXScg
aXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQg
dHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVl
ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZyBoXScgY29t
cHV0ZXMgdG8gJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pIFtn
IGhdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10g
W2QgZV0pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRl
LWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2Qg
ZV0pJyBjb21wdXRlcyB0byAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBb
ZCBlXSknIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtj
XSBbZCBlXSknIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMu
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0nCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gW2JdJworUEFTUyBQcm9wZXJ0eSBncmlkLXRlbXBsYXRl
LWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSBbYl0gW2NdJworUEFTUyBQcm9wZXJ0eSBn
cmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiIGMgZF0gW2UgZl0gW2Ug
Zl0gW2ddJworUEFTUyBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1Ymdy
aWQgW2EgYiBjXSBbZF0gW2UgZl0nCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1u
cyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10pJworUEFTUyBQcm9wZXJ0eSBn
cmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2Nd
KSBbZ10gW2ggaV0nCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAn
c3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10gW2ggaV0nCitQQVNTIFByb3Bl
cnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0
by1maWxsLCBbY10pIFtnXScKK1BBU1MgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZh
bHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZyBoXScKK1BBU1Mg
UHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gcmVw
ZWF0KGF1dG8tZmlsbCwgW2NdKScKK1BBU1MgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
IHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKScKK1BBU1MgUHJvcGVydHkg
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtj
IGRdKSBbZ10gW2ggaV0nCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1
ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnXSBbaCBpXScKK1BBU1Mg
UHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthIGJdIHJlcGVh
dChhdXRvLWZpbGwsIFtjIGRdKSBbZ10nCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZyBo
XScKK1BBU1MgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFth
XSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pJworUEFTUyBQcm9wZXJ0eSBncmlkLXRlbXBs
YXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSknCitQ
QVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQo
YXV0by1maWxsLCBbY10gW2RdKSBbZ10gW2ggaV0nCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxh
dGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkg
W2ddIFtoIGldJworUEFTUyBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1
YmdyaWQgW2EgYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2ddJworUEFTUyBQcm9wZXJ0
eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0
by1maWxsLCBbY10gW2RdKSBbZyBoXScKK1BBU1MgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSknCitQ
QVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQo
YXV0by1maWxsLCBbY10gW2QgZV0pJworUEFTUyBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVt
bnMgdmFsdWUgJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0n
CitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0g
cmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0nCitQQVNTIFByb3BlcnR5IGdy
aWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxs
LCBbY10gW2QgZV0pIFtnXScKK1BBU1MgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZh
bHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZyBoXScK
K1BBU1MgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBb
Yl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKScKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9n
cmlkLXRlbXBsYXRlLWludmFsaWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRl
LWludmFsaWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uMjAwYWIwOTQ3NzVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBs
YXRlLWludmFsaWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKKworUEFTUyBlLnN0eWxl
WydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIHN1YmdyaWQiIHNob3VsZCBub3Qgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9
ICJzdWJncmlkIG5vbmUiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBl
LnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIDFweCIgc2hvdWxkIG5vdCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtcm93cydd
ID0gInN1YmdyaWQgW2FdIDFweCIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQ
QVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtcm93cyddID0gInN1YmdyaWQgcmVwZWF0KGF1dG8t
ZmlsbCwgMXB4KSIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5
bGVbJ2dyaWQtdGVtcGxhdGUtcm93cyddID0gInN1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgbGlu
ZSkiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlk
LXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIHJlcGVhdCgyLCAxcHgpIiBzaG91bGQgbm90IHNl
dCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ10g
PSAic3ViZ3JpZCByZXBlYXQoMiwgbGluZSkiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIHJlcGVh
dCgyLCIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dy
aWQtdGVtcGxhdGUtY29sdW1ucyddID0gInN1YmdyaWQgc3ViZ3JpZCIgc2hvdWxkIG5vdCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtY29sdW1ucydd
ID0gInN1YmdyaWQgbm9uZSIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNT
IGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtY29sdW1ucyddID0gInN1YmdyaWQgMXB4IiBzaG91bGQg
bm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zJ10gPSAic3ViZ3JpZCBbYV0gMXB4IiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkg
dmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ10gPSAic3ViZ3JpZCBy
ZXBlYXQoYXV0by1maWxsLCAxcHgpIiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
K1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ10gPSAic3ViZ3JpZCByZXBlYXQo
YXV0by1maWxsLCBsaW5lKSIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNT
IGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtY29sdW1ucyddID0gInN1YmdyaWQgcmVwZWF0KDIsIDFw
eCkiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlk
LXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIHJlcGVhdCgyLCBsaW5lKSIgc2hvdWxkIG5v
dCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtY29s
dW1ucyddID0gInN1YmdyaWQgcmVwZWF0KDIsIiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkg
dmFsdWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRlLXZhbGlkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS12YWxpZC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NTEyYjY0NjQ4ZmQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZ3JpZC9zdWJncmlkL2dyaWQtdGVtcGxhdGUtdmFsaWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMzggQEAKKworUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlk
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBs
YXRlLXJvd3MnXSA9ICJzdWJncmlkIFthXSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
K1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ10gPSAic3ViZ3JpZCBbYV0gW2JdIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRl
LXJvd3MnXSA9ICJzdWJncmlkIFthXSBbYl0gW2NdIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIFtdIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRl
LXJvd3MnXSA9ICJzdWJncmlkIFthXSBbYl0gW10gW2NdIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIFtd
IFtdIFtdIFtjXSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Z3JpZC10ZW1wbGF0ZS1yb3dzJ10gPSAic3ViZ3JpZCBbXSBbXSBbXSBbXSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ10gPSAi
c3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbYV0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIFthXSBy
ZXBlYXQoYXV0by1maWxsLCBbYl0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFT
UyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIFthXSByZXBlYXQoYXV0
by1maWxsLCBbYl0pIFtjXSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5z
dHlsZVsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ10gPSAic3ViZ3JpZCBbXSByZXBlYXQoYXV0by1maWxs
LCBbXSkgW10iIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dy
aWQtdGVtcGxhdGUtcm93cyddID0gInN1YmdyaWQgcmVwZWF0KDIsIFthXSkiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtcm93cyddID0g
InN1YmdyaWQgcmVwZWF0KDIsIFthXSBbYl0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1
ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIFthXSByZXBl
YXQoMiwgW2JdKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Z3JpZC10ZW1wbGF0ZS1yb3dzJ10gPSAic3ViZ3JpZCBbYV0gcmVwZWF0KDIsIFtiXSkgW2NdIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRl
LXJvd3MnXSA9ICJzdWJncmlkIFtdIHJlcGVhdCgyLCBbXSkgW10iIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtcm93cyddID0gInN1Ymdy
aWQgW2FdIHJlcGVhdCgyLCBbYl0pIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2RdIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLWNvbHVt
bnMnXSA9ICJzdWJncmlkIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0
eWxlWydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFthXSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ10g
PSAic3ViZ3JpZCBbYV0gW2JdIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBl
LnN0eWxlWydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFthXSBbYl0gW2NdIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRl
LWNvbHVtbnMnXSA9ICJzdWJncmlkIFtdIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFthXSBbYl0g
W10gW2NdIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlk
LXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFtdIFtdIFtdIFtjXSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ10g
PSAic3ViZ3JpZCBbXSBbXSBbXSBbXSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BB
U1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ10gPSAic3ViZ3JpZCByZXBlYXQoYXV0
by1maWxsLCBbYV0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxl
WydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFthXSByZXBlYXQoYXV0by1maWxs
LCBbYl0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlk
LXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFthXSByZXBlYXQoYXV0by1maWxsLCBbYl0p
IFtjXSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10
ZW1wbGF0ZS1jb2x1bW5zJ10gPSAic3ViZ3JpZCBbXSByZXBlYXQoYXV0by1maWxsLCBbXSkgW10i
IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxh
dGUtY29sdW1ucyddID0gInN1YmdyaWQgcmVwZWF0KDIsIFthXSkiIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtY29sdW1ucyddID0gInN1
YmdyaWQgcmVwZWF0KDIsIFthXSBbYl0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFthXSByZXBl
YXQoMiwgW2JdKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ10gPSAic3ViZ3JpZCBbYV0gcmVwZWF0KDIsIFtiXSkgW2Nd
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBs
YXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFtdIHJlcGVhdCgyLCBbXSkgW10iIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtY29sdW1ucydd
ID0gInN1YmdyaWQgW2FdIHJlcGVhdCgyLCBbYl0pIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2Rd
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xp
bmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVj
dGVkLmh0bWwKaW5kZXggMDRjNTgzOTU5NmM5Li4yMzk5MzI4YmVjYzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1
YmdyaWQvbGluZS1uYW1lcy0wMDItZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFt
ZXMtMDAyLWV4cGVjdGVkLmh0bWwKQEAgLTE0LDcgKzE0LDcgQEAgaHRtbCxib2R5IHsKIAogLmdy
aWQgewogICBkaXNwbGF5OiBncmlkOwotICBncmlkOiBhdXRvIC8gW2FdIDUwcHggNTBweCBbYV0g
NTBweCA1MHB4IFthXTsKKyAgZ3JpZDogYXV0byAvIFthXSA1MHB4IDQwcHggW2FdIDEwcHggNTBw
eCBbYV07CiAgIHBhZGRpbmc6IDIwcHggMTBweDsKIH0KIApAQCAtMzIsNyArMzIsNyBAQCB4IHsg
YmFja2dyb3VuZDogZ3JleTsgfQogCiA8ZGl2IGNsYXNzPSJncmlkIj4KICAgPGRpdiBjbGFzcz0i
c3ViZ3JpZCI+Ci0gICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMyI+PC94PgorICAgIDx4
IHN0eWxlPSJncmlkLWNvbHVtbjogMyAvIDQiPjwveD4KICAgPC9kaXY+CiA8L2Rpdj4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9s
aW5lLW5hbWVzLTAwNS1leHBlY3RlZC5odG1sCmluZGV4IDRjN2Y0YjUwZmQxNi4uY2ZlMThkMWIy
NmVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1LWV4cGVjdGVkLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS1leHBlY3RlZC5odG1sCkBAIC0xMTUsNyArMTE1LDcg
QEAgeCB7CiA8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7IHdpZHRoOjUwMHB4OyBncmlkLWF1dG8t
Y29sdW1uczogNTBweDsiPgogPGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48
L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPgogICA8ZGl2IGNsYXNzPSJzdWJncmlkMiI+
Ci0gICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiBzcGFuIDQgLyAxMSI+eDwveD4KKyAgICA8eCBz
dHlsZT0iZ3JpZC1jb2x1bW46IHNwYW4gMyAvIDExIj54PC94PgogICA8L2Rpdj4KIDwvZGl2Pgog
CkBAIC0xMjksNyArMTI5LDcgQEAgeCB7CiA8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7IGdyaWQ6
IGF1dG8gLyByZXBlYXQoMTAsIDUwcHgpIHJlcGVhdCgxMCwgW2FdIDUwcHgpIFthXSI+CiA8aT48
L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwv
aT48aT48L2k+CiAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6Z3JpZDsgZ3JpZDphdXRvL3N1YmdyaWQ7
IGdyaWQtY29sdW1uOiBzcGFuIDEwOyBncmlkLXJvdzoyIj4KLSAgICA8eCBzdHlsZT0iZ3JpZC1j
b2x1bW46IDEgLyAxMSI+eDwveD4KKyAgICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46IDEwIC8gMTEi
Png8L3g+CiAgIDwvZGl2PgogPC9kaXY+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmRiZDA5ZDQ3Y2ZjLi4zMDExYjJiZDFm
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDItMDIgIE1hdHQgV29vZHJvdyAgPG1hdHR3
b29kcm93QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyAnc3Vi
Z3JpZCcgaW4gZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zL3JvdworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5ldyBleHBlcmltZW50YWwgcHJlZmVy
ZW5jZSBmb3Igc3ViZ3JpZCBzdXBwb3J0LCBkaXNhYmxlZCBieSBkZWZhdWx0LgorCisgICAgICAg
ICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sOgor
CiAyMDIyLTAyLTAyICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlND
XSBSZW1vdmUgY29tcGlsZXIgd2FybmluZyBpbiBUcmFpbGluZ0FycmF5LmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRh
bC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsLnlhbWwKaW5kZXggNWI0ZDNiNjI1NzE3Li4xYzgxYWM3NTBiZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1l
bnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC0xMzQ3LDYgKzEzNDcsMTggQEAgU3RvcmFnZUFQSUVu
YWJsZWQ6CiAgICAgICAiUExBVEZPUk0oQ09DT0EpIiA6IHRydWUKICAgICAgIGRlZmF1bHQ6IGZh
bHNlCiAKK1N1YmdyaWRFbmFibGVkOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1l
OiAiQ1NTIHN1YmdyaWQgc3VwcG9ydCIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5h
YmxlIENTUyBzdWJncmlkIHN1cHBvcnQiCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRMZWdh
Y3k6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IGZh
bHNlCisgICAgV2ViQ29yZToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisKIFN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kc0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJT
eW50aGV0aWMgRWRpdGluZyBDb21tYW5kcyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZjMwOGMwMTJlZTAuLjU0
MWVjZjUwOGRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAyMi0wMi0wMyAgTWF0
dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgorCisgICAgICAgIEluaGVyaXQgdHJh
Y2sgY291bnQgZnJvbSBwYXJlbnQgZ3JpZCBmb3Igc3ViZ3JpZGRlZCBheGVzIGFuZCBjbGFtcCBp
dGVtIHBsYWNlbWVudCB0byB0aGF0IGV4cGxpY2l0IGdyaWQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxMjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VzIEdyaWRQb3NpdGlvbnNSZXNvbHZl
cjo6ZXhwbGljaXRHcmlkPD5Db3VudCB0byByZXR1cm4gdGhlIG51bWJlciBvZiB0cmFja3MKKyAg
ICAgICAgc3Bhbm5lZCBpbiB0aGUgcGFyZW50IGdyaWQsIGZvciBheGVzIHRoYXQgYXJlIGEgc3Vi
Z3JpZC4KKworICAgICAgICBVcGRhdGVzIGFkanVzdEdyaWRQb3NpdGlvbnNGb3JTdHlsZSB0byB1
c2UgdGhlIG51bWJlciBvZiBsaW5lcyBzcGVjaWZpZWQgaW4gdGhlCisgICAgICAgIHN1YmdyaWQg
cHJvcGVydHksIGZvciBncmlkIGl0ZW1zIHRoYXQgYXJlIGFsc28gYSBzdWJncmlkIGFuZCBoYXZl
IGFuIG90aGVyd2lzZQorICAgICAgICBpbmRlZmluaXRlIHNwYW4uCisKKyAgICAgICAgQWRkcyBj
bGFtcGluZyBzdXBwb3J0IHRvIEdyaWQgc28gdGhhdCB3ZSBjYW4gcHJldmVudCBzdWJncmlkcyBm
cm9tIGV2ZXIgYWRkaW5nCisgICAgICAgIG5ldyBpbXBsaWNpdCB0cmFja3MuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkOjppbnNlcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JpZDo6c2V0Q2xhbXBpbmdGb3JTdWJncmlkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWQ6OmNsYW1wQW5kVHJhbnNsYXRlVG9JbXBsaWNpdEdyaWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JpZDo6c2V0TmVlZHNJdGVtc1BsYWNlbWVudCk6CisgICAgICAgICogcmVu
ZGVyaW5nL0dyaWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlk
QW5kT3JkZXJJdGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpw
bGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OmlzU3ViZ3JpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJHcmlkOjppc1N1YmdyaWRSb3dzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6OmlzU3ViZ3JpZENvbHVtbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6Z3JpZEFyZWFCcmVhZHRoRm9yT3V0T2ZGbG93Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6bnVtVHJhY2tzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zcG9z
ZWREaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUdyaWRT
cGFuRm9yT3V0T2ZGbG93Q2hpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6Z3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpncmlkU3BhbkZvckNoaWxkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oOgorICAg
ICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OmludGVnZXJTcGFuIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyaWRTcGFuOjp0cmFuc2xhdGVUbyk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkU3Bh
bjo6Y2xhbXApOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNJbmRlZmluaXRlU3Bhbik6CisgICAgICAgIChX
ZWJDb3JlOjphZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpleHBsaWNpdEdyaWRTaXplRm9yU2lkZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9z
aXRlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21T
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVH
cmlkUG9zaXRpb25zRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBv
c2l0aW9uc1Jlc29sdmVyLmg6CisKKzIwMjItMDItMDIgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29k
cm93QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyAnc3ViZ3Jp
ZCcgaW4gZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zL3JvdworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBzdXBwb3J0IGZvciBwYXJzaW5nIHRoZSAnc3Vi
Z3JpZCcga2V5d29yZCBmb2xsb3dlZCBieSBhIGxpc3Qgb2YgbGluZSBuYW1lcyBmb3IKKyAgICAg
ICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zL3Jvd3MuCisgICAgICAgIEFkZHMgYSBuZXcgQ1NTU3Vi
Z3JpZFZhbHVlIHdyYXBwZXIgYXJvdW5kIENTU1ZhbHVlTGlzdCB0byByZXByZXNlbnQgdGhpcy4K
KyAgICAgICAgQWxzbyBhZGRzIHN1cHBvcnQgZm9yIGNvbnZlcnRpbmcgdGhpcyBpbnRvIHN0eWxl
IGRhdGEgaW4gU3R5bGVCdWlsZGVyQ29udmVydGVyLCBhbmQgc2VyaWFsaXppbmcKKyAgICAgICAg
dGhlIHNwZWNpZmllZCB2YWx1ZSBmb3IgY29tcHV0ZWQgdmFsdWUgKHVzZWQgd2hlbiB0aGUgZWxl
bWVudCBzcGVjaWZpZWQgc3ViZ3JpZCBidXQgZG9lc24ndAorICAgICAgICBoYXZlIGFuIGFwcHJv
cHJpYXRlIGdyaWQgcGFyZW50KS4KKworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRlLWludmFsaWQu
aHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRlLXZhbGlkLmh0bWwKKworICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok9yZGVyZWROYW1lZExpbmVzQ29sbGVjdG9yOjpuYW1lZEdyaWRMaW5lQ291bnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVTdWJncmlkVHJhY2tMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFRyYWNrTGlzdCk6CisgICAgICAgICogY3NzL0NT
U1N1YmdyaWRWYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3ViZ3JpZFZh
bHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N1YmdyaWRW
YWx1ZTo6Q1NTU3ViZ3JpZFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU3ViZ3JpZFZhbHVlLmg6
IEFkZGVkLgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpjc3NU
ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpkZXN0cm95KToKKyAgICAg
ICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjppc1N1Ymdy
aWRWYWx1ZSBjb25zdCk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW46CisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6YWRkKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1BhcnNlckNvbnRleHQuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVHcmlkTGluZU5hbWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN1bWVHcmlkTmFtZVJlcGVhdEZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN1bWVHcmlkVHJhY2tMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1
bWVHcmlkVGVtcGxhdGVzUm93c09yQ29sdW1ucyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRUZW1wbGF0ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkVGVtcGxhdGVT
aG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVH
cmlkU2hvcnRoYW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpncmlkU3ViZ3JpZFJvd3MgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdyaWRTdWJncmlkQ29sdW1ucyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0R3JpZFN1YmdyaWRSb3dzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRHcmlkU3ViZ3JpZENvbHVtbnMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlR3JpZERhdGE6OlN0eWxlR3JpZERhdGEpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TdHlsZUdyaWREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdyaWREYXRhOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlk
VHJhY2tMaXN0KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaDoKKwogMjAy
Mi0wMi0wMyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IENyYXNoIGF0IGNvbS5hcHBsZS5XZWJLaXQ6IFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmRpc3BsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDY1MzkzN2FjZTY1Yy4uYjY1MjQ5MWE2
YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTUzOCw2ICs1MzgsNyBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAog
ICAgIGNzcy9DU1NTdHlsZVJ1bGUuaAogICAgIGNzcy9DU1NTdHlsZVNoZWV0LmgKKyAgICBjc3Mv
Q1NTU3ViZ3JpZFZhbHVlLmgKICAgICBjc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oCiAg
ICAgY3NzL0NTU1VuaXRzLmgKICAgICBjc3MvQ1NTVW5rbm93blJ1bGUuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApp
bmRleCBiM2Y1ZTBiNzg0MTcuLjQwOWNjNTEzOGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTc2Nyw2
ICs3NjcsNyBAQCBjc3MvQ1NTU2hhZG93VmFsdWUuY3BwCiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlv
bi5jcHAKIGNzcy9DU1NTdHlsZVJ1bGUuY3BwCiBjc3MvQ1NTU3R5bGVTaGVldC5jcHAKK2Nzcy9D
U1NTdWJncmlkVmFsdWUuY3BwCiBjc3MvQ1NTU3VwcG9ydHNSdWxlLmNwcAogY3NzL0NTU1RpbWlu
Z0Z1bmN0aW9uVmFsdWUuY3BwCiBjc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjNWY0NGVmMDRhNzAuLmM0ZWNlN2U1MmNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDY4OCw2ICs0Njg4LDcgQEAKIAkJ
RDAwMEVCQTMxMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDAwRUJBMTExQkRB
RkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEMDAwRUQyODExQzFCOUNEMDBDNDc3
MjYgLyogU3ViZnJhbWVMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEQwMDBFRDI2MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQwMUEy
N0FFMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIg
LyogU3BhY2VTcGxpdFN0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUQwMjZEQjBBMjdBQjcxOUUwMDgxQjE0MyAvKiBDU1NTdWJncmlkVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMjZE
QjA4MjdBQjcxOUQwMDgxQjE0MyAvKiBDU1NTdWJncmlkVmFsdWUuaCAqLzsgfTsKIAkJRDA1Q0VE
MkEwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDA1Q0VEMjgwQTQwQkIyQzAwQzVBRjM4
IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5oICovOyB9OwogCQlEMDZDMEQ4RjBDRkQxMTQ2MDA2NUY0
M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRDA2QzBEOEQwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1h
dENvbW1hbmQuaCAqLzsgfTsKIAkJRDA3REVBQkEwQTM2NTU0QTAwQ0EzMEY4IC8qIEluc2VydExp
c3RDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEMDdERUFCODBBMzY1NTRBMDBDQTMwRjggLyogSW5zZXJ0TGlzdENvbW1hbmQuaCAqLzsgfTsK
QEAgLTE2NDMzLDYgKzE2NDM0LDggQEAKIAkJRDAwMEVEMjYxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1
YmZyYW1lTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1YmZyYW1l
TG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMUEyN0FCMTBDOUJGRDgw
MDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNwYWNlU3BsaXRTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGFjZVNwbGl0U3RyaW5nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwMjZEQjA4MjdBQjcxOUQwMDgxQjE0MyAvKiBDU1NT
dWJncmlkVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTU3ViZ3Jp
ZFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwMjZEQjBCMjdBQjcxQUYw
MDgxQjE0MyAvKiBDU1NTdWJncmlkVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ1NTU3ViZ3JpZFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDAzNkREOEQyMDhGRkMwQzAwRjlGNEIyIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVB
U1RDLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwNUNFRDI3MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9j
a0NvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1h
dEJsb2NrQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNFRDI4
MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzE1NTEsNiArMzE1NTQsOCBAQAogCQlGNTIzRDE4NDAyREU0MkU4MDE4
NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQlEMDI2REIwQjI3QUI3MUFGMDA4MUIxNDMgLyogQ1NTU3ViZ3JpZFZhbHVlLmNwcCAqLywK
KwkJCQlEMDI2REIwODI3QUI3MTlEMDA4MUIxNDMgLyogQ1NTU3ViZ3JpZFZhbHVlLmggKi8sCiAJ
CQkJQkNGMTY0NEQyNjYyOUY5QTAwMDJGN0VGIC8qIGNhbGMgKi8sCiAJCQkJOTQ2RDM3MjcxRDZD
QjIyNTAwNzcwODRGIC8qIHBhcnNlciAqLywKIAkJCQk0QkFGRDBEQTIxOTIxRUFEMDBDMEFCNjQg
LyogdHlwZWRvbSAqLywKQEAgLTM1NzkwLDYgKzM1Nzk1LDcgQEAKIAkJCQlCMkZBM0RBOTBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdNYXJrZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkZBM0RBQjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNYXNrRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjJGQTNEQUQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHTWF0cml4LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlEMDI2REIwQTI3QUI3MTlFMDA4MUIxNDMgLyogQ1NTU3ViZ3JpZFZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RBRjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdN
ZXRhZGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyN0IyODJBMENFRjBDMDcwMEQz
OUQ1NCAvKiBKU1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0
OTZFM0EwMTM5ODEzQTUwMDNFRTMyQSAvKiBKU1NWR01QYXRoRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCmluZGV4IDY5MmQ4NDY4MzMzNi4uMTVlMDU0OTg5MDhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtODU4LDYg
Kzg1OCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX29y
ZGVyZWROYW1lZEdyaWRMaW5lcy5pc0VtcHR5KCkgJiYgbV9vcmRlcmVkTmFtZWRBdXRvUmVwZWF0
R3JpZExpbmVzLmlzRW1wdHkoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0TGluZU5hbWVz
Rm9ySW5kZXgoQ1NTR3JpZExpbmVOYW1lc1ZhbHVlJiwgdW5zaWduZWQgaW5kZXgpIGNvbnN0Owog
CisgICAgdmlydHVhbCBpbnQgbmFtZWRHcmlkTGluZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9v
cmRlcmVkTmFtZWRHcmlkTGluZXMuc2l6ZSgpOyB9CisKIHByb3RlY3RlZDoKIAogICAgIGVudW0g
TmFtZWRMaW5lc1R5cGUgeyBOYW1lZExpbmVzLCBBdXRvUmVwZWF0TmFtZWRMaW5lcyB9OwpAQCAt
ODc1LDYgKzg3Nyw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIGNvbGxlY3RMaW5lTmFt
ZXNGb3JJbmRleChDU1NHcmlkTGluZU5hbWVzVmFsdWUmLCB1bnNpZ25lZCBpbmRleCkgY29uc3Qg
b3ZlcnJpZGU7CisKKyAgICBpbnQgbmFtZWRHcmlkTGluZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9vcmRlcmVkTmFtZWRBdXRvUmVwZWF0R3JpZExpbmVzLnNpemUoKTsgfQogfTsK
IAogY2xhc3MgT3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3JJbkdyaWRMYXlvdXQgOiBwdWJsaWMg
T3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3IgewpAQCAtOTk0LDEwICs5OTgsMjIgQEAgdm9pZCBw
b3B1bGF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWVMaXN0JiBsaXN0LCBPcmRlcmVkTmFtZWRMaW5l
c0NvbGxlY3RvciYgY29sbGUKICAgICBwb3B1bGF0ZUdyaWRUcmFja0xpc3Q8VD4obGlzdCwgY29s
bGVjdG9yLCB0cmFja3MsIGdldFRyYWNrU2l6ZSwgMCwgdHJhY2tzLnNpemUoKSwgb2Zmc2V0KTsK
IH0KIAorc3RhdGljIHZvaWQgcG9wdWxhdGVTdWJncmlkVHJhY2tMaXN0KENTU1ZhbHVlTGlzdCYg
bGlzdCwgT3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3ImIGNvbGxlY3RvciwgaW50IHN0YXJ0LCBp
bnQgZW5kKQoreworICAgIGZvciAoaW50IGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKQorICAgICAg
ICBhZGRWYWx1ZXNGb3JOYW1lZEdyaWRMaW5lc0F0SW5kZXgoY29sbGVjdG9yLCBpLCBsaXN0KTsK
K30KKworc3RhdGljIHZvaWQgcG9wdWxhdGVTdWJncmlkVHJhY2tMaXN0KENTU1ZhbHVlTGlzdCYg
bGlzdCwgT3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3ImIGNvbGxlY3RvcikKK3sKKyAgICBwb3B1
bGF0ZVN1YmdyaWRUcmFja0xpc3QobGlzdCwgY29sbGVjdG9yLCAwLCBjb2xsZWN0b3IubmFtZWRH
cmlkTGluZUNvdW50KCkpOworfQorCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRU
cmFja0xpc3QoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIGJvb2wgaXNSb3dB
eGlzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM7CiAgICAgYm9vbCBpc1JlbmRlckdyaWQgPSBp
czxSZW5kZXJHcmlkPihyZW5kZXJlcik7CisgICAgYm9vbCBpc1N1YmdyaWQgPSBpc1Jvd0F4aXMg
PyBzdHlsZS5ncmlkU3ViZ3JpZENvbHVtbnMoKSA6IHN0eWxlLmdyaWRTdWJncmlkUm93cygpOwog
ICAgIGF1dG8mIHRyYWNrU2l6ZXMgPSBpc1Jvd0F4aXMgPyBzdHlsZS5ncmlkQ29sdW1ucygpIDog
c3R5bGUuZ3JpZFJvd3MoKTsKICAgICBhdXRvJiBhdXRvUmVwZWF0VHJhY2tTaXplcyA9IGlzUm93
QXhpcyA/IHN0eWxlLmdyaWRBdXRvUmVwZWF0Q29sdW1ucygpIDogc3R5bGUuZ3JpZEF1dG9SZXBl
YXRSb3dzKCk7CiAKQEAgLTEwMTEsMTQgKzEwMjcsMTcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4g
dmFsdWVGb3JHcmlkVHJhY2tMaXN0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24s
IFIKICAgICAgICAgdHJhY2tMaXN0SXNFbXB0eSA9IHBvc2l0aW9ucy5zaXplKCkgPT0gMTsKICAg
ICB9CiAKLSAgICBpZiAodHJhY2tMaXN0SXNFbXB0eSkKKyAgICBpZiAodHJhY2tMaXN0SXNFbXB0
eSAmJiAhaXNTdWJncmlkKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKIAogICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBpZiAoaXNTdWJncmlk
KQorICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTdWJncmlkKSk7CiAKICAgICAvLyBJZiB0aGUgZWxlbWVu
dCBpcyBhIGdyaWQgY29udGFpbmVyLCB0aGUgcmVzb2x2ZWQgdmFsdWUgaXMgdGhlIHVzZWQgdmFs
dWUsCiAgICAgLy8gc3BlY2lmeWluZyB0cmFjayBzaXplcyBpbiBwaXhlbHMgYW5kIGV4cGFuZGlu
ZyB0aGUgcmVwZWF0KCkgbm90YXRpb24uCiAgICAgaWYgKGlzUmVuZGVyR3JpZCkgeworICAgICAg
ICAvLyBUT0RPOiBXZSBuZWVkIHRvIGhhbmRsZSBjb21wdXRlZCBzdWJncmlkIGhlcmUuCiAgICAg
ICAgIGF1dG8qIGdyaWQgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihyZW5kZXJlcik7CiAgICAgICAg
IE9yZGVyZWROYW1lZExpbmVzQ29sbGVjdG9ySW5HcmlkTGF5b3V0IGNvbGxlY3RvcihzdHlsZSwg
aXNSb3dBeGlzLCBncmlkLT5hdXRvUmVwZWF0Q291bnRGb3JEaXJlY3Rpb24oZGlyZWN0aW9uKSwg
YXV0b1JlcGVhdFRyYWNrU2l6ZXMuc2l6ZSgpKTsKICAgICAgICAgLy8gTmFtZWQgZ3JpZCBsaW5l
IGluZGljZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBleHBsaWNpdCBncmlkLCBidXQgd2UgYXJlIGlu
Y2x1ZGluZyBhbGwgdHJhY2tzLgpAQCAtMTAzNiwyNSArMTA1NSw0MCBAQCBzdGF0aWMgUmVmPENT
U1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbiwgUgogICAgICAgICByZXR1cm4gc3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXpl
KHYsIHN0eWxlKTsKICAgICB9OwogCi0gICAgaWYgKGF1dG9SZXBlYXRUcmFja1NpemVzLmlzRW1w
dHkoKSkgeworICAgIE9yZGVyZWROYW1lZExpbmVzQ29sbGVjdG9ySW5zaWRlUmVwZWF0IHJlcGVh
dENvbGxlY3RvcihzdHlsZSwgaXNSb3dBeGlzKTsKKyAgICBpZiAoaXNTdWJncmlkID8gIXJlcGVh
dENvbGxlY3Rvci5uYW1lZEdyaWRMaW5lQ291bnQoKSA6IGF1dG9SZXBlYXRUcmFja1NpemVzLmlz
RW1wdHkoKSkgewogICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGF1dG8gcmVwZWF0KCksIGp1c3Qg
YWRkIGFsbCB0aGUgbGluZSBuYW1lcyBhbmQgdHJhY2sgc2l6ZXMuCi0gICAgICAgIHBvcHVsYXRl
R3JpZFRyYWNrTGlzdChsaXN0LmdldCgpLCBjb2xsZWN0b3IsIHRyYWNrU2l6ZXMsIGdldFRyYWNr
U2l6ZSk7CisgICAgICAgIGlmIChpc1N1YmdyaWQpCisgICAgICAgICAgICBwb3B1bGF0ZVN1Ymdy
aWRUcmFja0xpc3QobGlzdC5nZXQoKSwgY29sbGVjdG9yKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcG9wdWxhdGVHcmlkVHJhY2tMaXN0KGxpc3QuZ2V0KCksIGNvbGxlY3RvciwgdHJhY2tT
aXplcywgZ2V0VHJhY2tTaXplKTsKICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgfQogCiAgICAg
Ly8gQWRkIHRoZSBsaW5lIG5hbWVzIGFuZCB0cmFjayBzaXplcyB0aGF0IHByZWNlZGUgdGhlIGF1
dG8gcmVwZWF0KCkuCi0gICAgaW50IGF1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCA9IHN0ZDo6Y2xh
bXA8aW50Pihpc1Jvd0F4aXMgPyBzdHlsZS5ncmlkQXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Q
b2ludCgpIDogc3R5bGUuZ3JpZEF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoKSwgMCwgdHJh
Y2tTaXplcy5zaXplKCkpOwotICAgIHBvcHVsYXRlR3JpZFRyYWNrTGlzdChsaXN0LmdldCgpLCBj
b2xsZWN0b3IsIHRyYWNrU2l6ZXMsIGdldFRyYWNrU2l6ZSwgMCwgYXV0b1JlcGVhdEluc2VydGlv
blBvaW50KTsKKyAgICBpbnQgYXV0b1JlcGVhdEluc2VydGlvblBvaW50ID0gaXNSb3dBeGlzID8g
c3R5bGUuZ3JpZEF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoKSA6IHN0eWxlLmdyaWRB
dXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KCk7CisgICAgaWYgKGlzU3ViZ3JpZCkKKyAgICAg
ICAgcG9wdWxhdGVTdWJncmlkVHJhY2tMaXN0KGxpc3QuZ2V0KCksIGNvbGxlY3RvciwgMCwgYXV0
b1JlcGVhdEluc2VydGlvblBvaW50KTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0b1JlcGVhdElu
c2VydGlvblBvaW50ID0gc3RkOjpjbGFtcDxpbnQ+KGF1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCwg
MCwgdHJhY2tTaXplcy5zaXplKCkpOworICAgICAgICBwb3B1bGF0ZUdyaWRUcmFja0xpc3QobGlz
dC5nZXQoKSwgY29sbGVjdG9yLCB0cmFja1NpemVzLCBnZXRUcmFja1NpemUsIDAsIGF1dG9SZXBl
YXRJbnNlcnRpb25Qb2ludCk7CisgICAgfQogCiAgICAgLy8gQWRkIGEgQ1NTR3JpZEF1dG9SZXBl
YXRWYWx1ZSB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgYXV0byByZXBlYXQoKS4KICAgICBBdXRv
UmVwZWF0VHlwZSBhdXRvUmVwZWF0VHlwZSA9IGlzUm93QXhpcyA/IHN0eWxlLmdyaWRBdXRvUmVw
ZWF0Q29sdW1uc1R5cGUoKSA6IHN0eWxlLmdyaWRBdXRvUmVwZWF0Um93c1R5cGUoKTsKICAgICBh
dXRvIHJlcGVhdGVkVmFsdWVzID0gQ1NTR3JpZEF1dG9SZXBlYXRWYWx1ZTo6Y3JlYXRlKGF1dG9S
ZXBlYXRUeXBlID09IEF1dG9SZXBlYXRUeXBlOjpGaWxsID8gQ1NTVmFsdWVBdXRvRmlsbCA6IENT
U1ZhbHVlQXV0b0ZpdCk7Ci0gICAgT3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3JJbnNpZGVSZXBl
YXQgcmVwZWF0Q29sbGVjdG9yKHN0eWxlLCBpc1Jvd0F4aXMpOwotICAgIHBvcHVsYXRlR3JpZFRy
YWNrTGlzdChyZXBlYXRlZFZhbHVlcy5nZXQoKSwgcmVwZWF0Q29sbGVjdG9yLCBhdXRvUmVwZWF0
VHJhY2tTaXplcywgZ2V0VHJhY2tTaXplKTsKKworICAgIGlmIChpc1N1YmdyaWQpCisgICAgICAg
IHBvcHVsYXRlU3ViZ3JpZFRyYWNrTGlzdChyZXBlYXRlZFZhbHVlcy5nZXQoKSwgcmVwZWF0Q29s
bGVjdG9yKTsKKyAgICBlbHNlCisgICAgICAgIHBvcHVsYXRlR3JpZFRyYWNrTGlzdChyZXBlYXRl
ZFZhbHVlcy5nZXQoKSwgcmVwZWF0Q29sbGVjdG9yLCBhdXRvUmVwZWF0VHJhY2tTaXplcywgZ2V0
VHJhY2tTaXplKTsKICAgICBsaXN0LT5hcHBlbmQocmVwZWF0ZWRWYWx1ZXMuZ2V0KCkpOwogCiAg
ICAgLy8gQWRkIHRoZSBsaW5lIG5hbWVzIGFuZCB0cmFjayBzaXplcyB0aGF0IGZvbGxvdyB0aGUg
YXV0byByZXBlYXQoKS4KLSAgICBwb3B1bGF0ZUdyaWRUcmFja0xpc3QobGlzdC5nZXQoKSwgY29s
bGVjdG9yLCB0cmFja1NpemVzLCBnZXRUcmFja1NpemUsIGF1dG9SZXBlYXRJbnNlcnRpb25Qb2lu
dCwgdHJhY2tTaXplcy5zaXplKCksIDEpOworICAgIGlmIChpc1N1YmdyaWQpCisgICAgICAgIHBv
cHVsYXRlU3ViZ3JpZFRyYWNrTGlzdChsaXN0LmdldCgpLCBjb2xsZWN0b3IsIGF1dG9SZXBlYXRJ
bnNlcnRpb25Qb2ludCwgY29sbGVjdG9yLm5hbWVkR3JpZExpbmVDb3VudCgpICsgMSk7CisgICAg
ZWxzZQorICAgICAgICBwb3B1bGF0ZUdyaWRUcmFja0xpc3QobGlzdC5nZXQoKSwgY29sbGVjdG9y
LCB0cmFja1NpemVzLCBnZXRUcmFja1NpemUsIGF1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCwgdHJh
Y2tTaXplcy5zaXplKCksIDEpOwogICAgIHJldHVybiBsaXN0OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3ViZ3JpZFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdWJncmlkVmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uYTQxYTg3ODIwYzUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N1YmdyaWRWYWx1ZS5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBJZ2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ1NTU3ViZ3JpZFZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworU3RyaW5nIENTU1N1YmdyaWRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFsZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuICJzdWJncmlkIjsKKyAgICByZXR1cm4g
InN1YmdyaWQgIiArIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4dCgpOworfQorCitDU1NTdWJn
cmlkVmFsdWU6OkNTU1N1YmdyaWRWYWx1ZSgpCisgICAgOiBDU1NWYWx1ZUxpc3QoU3ViZ3JpZENs
YXNzLCBTcGFjZVNlcGFyYXRvcikKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N1YmdyaWRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N1YmdyaWRW
YWx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmFhM2MzYzYz
YmE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N1YmdyaWRWYWx1
ZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgSWdh
bGlhLCBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDU1NW
YWx1ZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDU1NTdWJncmlkVmFs
dWUgZmluYWwgOiBwdWJsaWMgQ1NTVmFsdWVMaXN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PENTU1N1YmdyaWRWYWx1ZT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENTU1N1YmdyaWRWYWx1ZSk7CisgICAgfQorCisgICAgU3RyaW5nIGN1c3RvbUNTU1Rl
eHQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBDU1NTdWJncmlkVmFsdWUoKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DU1NfVkFMVUUo
Q1NTU3ViZ3JpZFZhbHVlLCBpc1N1YmdyaWRWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3Bw
CmluZGV4IGFmZDFjZWEyNzIyYi4uY2VkMTM5NDI5MTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5j
cHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTR3Jp
ZFRlbXBsYXRlQXJlYXNWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1N1YmdyaWRWYWx1ZS5oIgogCiAj
aW5jbHVkZSAiRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJEZXBy
ZWNhdGVkQ1NTT01WYWx1ZUxpc3QuaCIKQEAgLTE4NCw2ICsxODUsOCBAQCBib29sIENTU1ZhbHVl
OjplcXVhbHMoY29uc3QgQ1NTVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICAgICAgcmV0dXJu
IGNvbXBhcmVDU1NWYWx1ZXM8Q1NTR3JpZEludGVnZXJSZXBlYXRWYWx1ZT4oKnRoaXMsIG90aGVy
KTsKICAgICAgICAgY2FzZSBHcmlkTGluZU5hbWVzQ2xhc3M6CiAgICAgICAgICAgICByZXR1cm4g
Y29tcGFyZUNTU1ZhbHVlczxDU1NHcmlkTGluZU5hbWVzVmFsdWU+KCp0aGlzLCBvdGhlcik7Cisg
ICAgICAgIGNhc2UgU3ViZ3JpZENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NW
YWx1ZXM8Q1NTU3ViZ3JpZFZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIEdyaWRU
ZW1wbGF0ZUFyZWFzQ2xhc3M6CiAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxD
U1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlPigqdGhpcywgb3RoZXIpOwogICAgICAgICBjYXNlIFBy
aW1pdGl2ZUNsYXNzOgpAQCAtMjg3LDYgKzI5MCw4IEBAIFN0cmluZyBDU1NWYWx1ZTo6Y3NzVGV4
dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NHcmlkSW50ZWdlclJlcGVhdFZh
bHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIGNhc2UgR3JpZExpbmVOYW1lc0NsYXNz
OgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPigqdGhpcyku
Y3VzdG9tQ1NTVGV4dCgpOworICAgIGNhc2UgU3ViZ3JpZENsYXNzOgorICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8Q1NTU3ViZ3JpZFZhbHVlPigqdGhpcykuY3VzdG9tQ1NTVGV4dCgpOwogICAgIGNh
c2UgR3JpZFRlbXBsYXRlQXJlYXNDbGFzczoKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0dy
aWRUZW1wbGF0ZUFyZWFzVmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAgY2FzZSBQ
cmltaXRpdmVDbGFzczoKQEAgLTQxMCw2ICs0MTUsOSBAQCB2b2lkIENTU1ZhbHVlOjpkZXN0cm95
KCkKICAgICBjYXNlIEdyaWRMaW5lTmFtZXNDbGFzczoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0
PENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4odGhpcyk7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IFN1YmdyaWRDbGFzczoKKyAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU1N1YmdyaWRWYWx1ZT4o
dGhpcyk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEdyaWRUZW1wbGF0ZUFyZWFzQ2xhc3M6
CiAgICAgICAgIGRlbGV0ZSBkb3duY2FzdDxDU1NHcmlkVGVtcGxhdGVBcmVhc1ZhbHVlPih0aGlz
KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCBmNTUzODUwMjZkNGYu
LmU2Nzc3ZWI4MGUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2NsYXNzVHlwZSA9PSBHcmlkSW50ZWdlclJlcGVhdENsYXNzOyB9CiAgICAgYm9vbCBpc0dy
aWRUZW1wbGF0ZUFyZWFzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBHcmlk
VGVtcGxhdGVBcmVhc0NsYXNzOyB9CiAgICAgYm9vbCBpc0dyaWRMaW5lTmFtZXNWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdyaWRMaW5lTmFtZXNDbGFzczsgfQorICAgIGJv
b2wgaXNTdWJncmlkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBTdWJncmlk
Q2xhc3M7IH0KICAgICBib29sIGlzVW5pY29kZVJhbmdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzVHlwZSA9PSBVbmljb2RlUmFuZ2VDbGFzczsgfQogCiAgICAgYm9vbCBpc1ZhcmlhYmxl
UmVmZXJlbmNlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBWYXJpYWJsZVJl
ZmVyZW5jZUNsYXNzOyB9CkBAIC0yMjQsNiArMjI1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBH
cmlkTGluZU5hbWVzQ2xhc3MsCiAgICAgICAgIEdyaWRBdXRvUmVwZWF0Q2xhc3MsCiAgICAgICAg
IEdyaWRJbnRlZ2VyUmVwZWF0Q2xhc3MsCisgICAgICAgIFN1YmdyaWRDbGFzcywKICAgICAgICAg
Ly8gRG8gbm90IGFwcGVuZCBub24tbGlzdCBjbGFzcyB0eXBlcyBoZXJlLgogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggMjQyZWZmOGU2ZTdjLi5lOTI0
ZjJkMzM1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC0xNDIw
LDYgKzE0MjAsNyBAQCBzcGFuCiAKIC8vIGdyaWQtdGVtcGxhdGUte2NvbHVtbnN8cm93c30KIG1p
bm1heAorc3ViZ3JpZAogCiAvLyBncmlkLWF1dG8tZmxvdwogYXV0by1mbG93CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcAppbmRleCA1NWQzNmJiNTg2
MTYuLjkxM2NkYTBhMjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlckNvbnRleHQuY3BwCkBAIC0xMTEsNiArMTExLDcgQEAgQ1NTUGFyc2VyQ29udGV4dDo6Q1NT
UGFyc2VyQ29udGV4dChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgc2hlZXRC
YXMKICAgICAsIGdyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQg
eyBkb2N1bWVudC5zZXR0aW5ncygpLmNzc0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJw
b2xhdGlvbkVuYWJsZWQoKSB9CiAgICAgLCBncmFkaWVudEludGVycG9sYXRpb25Db2xvclNwYWNl
c0VuYWJsZWQgeyBkb2N1bWVudC5zZXR0aW5ncygpLmNzc0dyYWRpZW50SW50ZXJwb2xhdGlvbkNv
bG9yU3BhY2VzRW5hYmxlZCgpIH0KICAgICAsIGlucHV0U2VjdXJpdHlFbmFibGVkIHsgZG9jdW1l
bnQuc2V0dGluZ3MoKS5jc3NJbnB1dFNlY3VyaXR5RW5hYmxlZCgpIH0KKyAgICAsIHN1YmdyaWRF
bmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5zdWJncmlkRW5hYmxlZCgpIH0KICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICwgYXR0YWNobWVudEVuYWJsZWQgeyBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxl
ZCgpIH0KICNlbmRpZgpAQCAtMTY0LDYgKzE2NSw3IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiBhLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBiKQogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgICAgICYmIGEuYXR0YWNobWVudEVuYWJsZWQgPT0g
Yi5hdHRhY2htZW50RW5hYmxlZAogI2VuZGlmCisgICAgICAgICYmIGEuc3ViZ3JpZEVuYWJsZWQg
PT0gYi5zdWJncmlkRW5hYmxlZAogICAgIDsKIH0KIApAQCAtMjA4LDcgKzIxMCw4IEBAIHZvaWQg
YWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogI2Vu
ZGlmCiAgICAgICAgIHwgY29udGV4dC5hY2NlbnRDb2xvckVuYWJsZWQgICAgICAgICAgICAgICAg
ICAgICAgICA8PCAyOQogICAgICAgICB8IGNvbnRleHQuaW5wdXRTZWN1cml0eUVuYWJsZWQgICAg
ICAgICAgICAgICAgICAgICAgPDwgMzAKLSAgICAgICAgfCBjb250ZXh0Lm1vZGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDMxOyAvLyBUaGlzIGlzIG11bHRpcGxlIGJp
dHMsIHNvIGtlZXAgaXQgbGFzdC4KKyAgICAgICAgfCBjb250ZXh0LnN1YmdyaWRFbmFibGVkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDMxCisgICAgICAgIHwgKHVuc2lnbmVkIGxvbmcg
bG9uZyljb250ZXh0Lm1vZGUgICAgICAgICAgICAgICAgICA8PCAzMjsgLy8gVGhpcyBpcyBtdWx0
aXBsZSBiaXRzLCBzbyBrZWVwIGl0IGxhc3QuCiAgICAgYWRkKGhhc2hlciwgY29udGV4dC5iYXNl
VVJMLCBjb250ZXh0LmNoYXJzZXQsIGJpdHMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCmluZGV4IGQ4OWI5Mzg2YzU3My4uYzg2ZWQ2YzhjZjZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaApAQCAt
ODksNiArODksNyBAQCBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dCB7CiAgICAgYm9vbCBncmFkaWVu
dFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBi
b29sIGdyYWRpZW50SW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VzRW5hYmxlZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBpbnB1dFNlY3VyaXR5RW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBzdWJncmlk
RW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICAvLyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLgogI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IGJmYjliNjExNTkyMi4uZjI1YWE4YzNkYjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIkNTU1JheVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTUmVmbGVjdFZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTU2hhZG93VmFsdWUuaCIKKyNpbmNsdWRl
ICJDU1NTdWJncmlkVmFsdWUuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYXJpYWJs
ZVBhcnNlci5oIgpAQCAtMzYwNSw3ICszNjA2LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4g
Y29uc3VtZUdyaWRUcmFja1NpemUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnMK
IH0KIAogLy8gQXBwZW5kcyB0byB0aGUgcGFzc2VkIGluIENTU0dyaWRMaW5lTmFtZXNWYWx1ZSBp
ZiBhbnksIG90aGVyd2lzZSBjcmVhdGVzIGEgbmV3IG9uZS4gUmV0dXJucyBudWxscHRyIGlmIGFu
IGVtcHR5IGxpc3QgaXMgY29uc3VtZWQuCi1zdGF0aWMgUmVmUHRyPENTU0dyaWRMaW5lTmFtZXNW
YWx1ZT4gY29uc3VtZUdyaWRMaW5lTmFtZXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U0dyaWRMaW5lTmFtZXNWYWx1ZSogbGluZU5hbWVzID0gbnVsbHB0cikKK3N0YXRpYyBSZWZQdHI8
Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPiBjb25zdW1lR3JpZExpbmVOYW1lcyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBsaW5lTmFtZXMgPSBudWxscHRy
LCBib29sIGFsbG93RW1wdHkgPSBmYWxzZSkKIHsKICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHJh
bmdlQ29weSA9IHJhbmdlOwogICAgIGlmIChyYW5nZUNvcHkuY29uc3VtZUluY2x1ZGluZ1doaXRl
c3BhY2UoKS50eXBlKCkgIT0gTGVmdEJyYWNrZXRUb2tlbikKQEAgLTM2MTksNyArMzYyMCw3IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPiBjb25zdW1lR3JpZExpbmVOYW1l
cyhDU1NQYXJzZXJUb2tlblJhbmdlJiByCiAgICAgaWYgKHJhbmdlQ29weS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLnR5cGUoKSAhPSBSaWdodEJyYWNrZXRUb2tlbikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgcmFuZ2UgPSByYW5nZUNvcHk7Ci0gICAgcmV0dXJuIHJlc3VsdC0+
bGVuZ3RoKCkgPyByZXN1bHQgOiBudWxscHRyOworICAgIHJldHVybiAocmVzdWx0LT5sZW5ndGgo
KSB8fCBhbGxvd0VtcHR5KSA/IHJlc3VsdCA6IG51bGxwdHI7CiB9CiAKIHN0YXRpYyBib29sIGNv
bnN1bWVHcmlkVHJhY2tSZXBlYXRGdW5jdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NWYWx1ZUxpc3QmIGxpc3QsIGJvb2wmIGlz
QXV0b1JlcGVhdCwgYm9vbCYgYWxsVHJhY2tzQXJlRml4ZWRTaXplZCkKQEAgLTM2NzUsMTAgKzM2
NzYsNTggQEAgc3RhdGljIGJvb2wgY29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
c3RhdGljIGJvb2wgY29uc3VtZUdyaWROYW1lUmVwZWF0RnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1ZhbHVlTGlzdCYgbGlzdCkKK3sKKyAgICBDU1NQYXJzZXJUb2tlblJh
bmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOworICAgIHNpemVfdCByZXBldGl0aW9u
cyA9IDE7CisgICAgYm9vbCBpc0F1dG9SZXBlYXQgPSBpZGVudE1hdGNoZXM8Q1NTVmFsdWVBdXRv
RmlsbD4oYXJncy5wZWVrKCkuaWQoKSk7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gcmVwZWF0
ZWRWYWx1ZXM7CisgICAgaWYgKGlzQXV0b1JlcGVhdCkKKyAgICAgICAgcmVwZWF0ZWRWYWx1ZXMg
PSBDU1NHcmlkQXV0b1JlcGVhdFZhbHVlOjpjcmVhdGUoYXJncy5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLmlkKCkpOworICAgIGVsc2UgeworICAgICAgICBhdXRvIHJlcGV0aXRpb24gPSBj
b25zdW1lUG9zaXRpdmVJbnRlZ2VyUmF3KGFyZ3MpOworICAgICAgICBpZiAoIXJlcGV0aXRpb24p
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlcGV0aXRpb25zID0gY2xhbXBU
bzxzaXplX3Q+KHN0YXRpY19jYXN0PHNpemVfdD4oKnJlcGV0aXRpb24pLCAwLCBHcmlkUG9zaXRp
b246Om1heCgpKTsKKyAgICAgICAgcmVwZWF0ZWRWYWx1ZXMgPSBDU1NHcmlkSW50ZWdlclJlcGVh
dFZhbHVlOjpjcmVhdGUocmVwZXRpdGlvbnMpOworICAgIH0KKyAgICBpZiAoIWNvbnN1bWVDb21t
YUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGF1dG8gbGluZU5hbWVzID0gY29uc3VtZUdyaWRMaW5lTmFtZXMoYXJncywgbnVsbHB0ciwgdHJ1
ZSk7CisgICAgaWYgKCFsaW5lTmFtZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXBl
YXRlZFZhbHVlcy0+YXBwZW5kKGxpbmVOYW1lcy5yZWxlYXNlTm9uTnVsbCgpKTsKKworICAgIHdo
aWxlICghYXJncy5hdEVuZCgpKSB7CisgICAgICAgIGxpbmVOYW1lcyA9IGNvbnN1bWVHcmlkTGlu
ZU5hbWVzKGFyZ3MsIG51bGxwdHIsIHRydWUpOworICAgICAgICBpZiAoIWxpbmVOYW1lcykKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVwZWF0ZWRWYWx1ZXMtPmFwcGVuZChs
aW5lTmFtZXMucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorCisgICAgbGlzdC5hcHBlbmQocmVw
ZWF0ZWRWYWx1ZXMucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGVu
dW0gVHJhY2tMaXN0VHlwZSB7IEdyaWRUZW1wbGF0ZSwgR3JpZFRlbXBsYXRlTm9SZXBlYXQsIEdy
aWRBdXRvIH07CiAKLXN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHcmlkVHJhY2tMaXN0
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUs
IFRyYWNrTGlzdFR5cGUgdHJhY2tMaXN0VHlwZSkKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNv
bnN1bWVHcmlkVHJhY2tMaXN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0JiBjb250ZXh0LCBUcmFja0xpc3RUeXBlIHRyYWNrTGlzdFR5cGUpCiB7Cisg
ICAgaWYgKHRyYWNrTGlzdFR5cGUgPT0gR3JpZFRlbXBsYXRlICYmIGNvbnRleHQuc3ViZ3JpZEVu
YWJsZWQgJiYgcmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVTdWJncmlkKSB7CisgICAgICAg
IGNvbnN1bWVJZGVudChyYW5nZSk7CisgICAgICAgIGF1dG8gdmFsdWVzID0gQ1NTU3ViZ3JpZFZh
bHVlOjpjcmVhdGUoKTsKKyAgICAgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpICYmIHJhbmdlLnBl
ZWsoKS50eXBlKCkgIT0gRGVsaW1pdGVyVG9rZW4pIHsKKyAgICAgICAgICAgIGlmIChyYW5nZS5w
ZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmVwZWF0KSB7CisgICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lR3JpZE5hbWVSZXBlYXRGdW5jdGlvbihyYW5nZSwgdmFsdWVzKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGF1
dG8gdmFsdWUgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhyYW5nZSwgbnVsbHB0ciwgdHJ1ZSkpCisg
ICAgICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQodmFsdWUucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICB9CiAgICAgYm9vbCBhbGxvd0dyaWRMaW5l
TmFtZXMgPSB0cmFja0xpc3RUeXBlICE9IEdyaWRBdXRvOwogICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBp
ZiAoIWFsbG93R3JpZExpbmVOYW1lcyAmJiByYW5nZS5wZWVrKCkudHlwZSgpID09IExlZnRCcmFj
a2V0VG9rZW4pCkBAIC0zNjk1LDEyICszNzQ0LDEyIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVHcmlkVHJhY2tMaXN0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJz
CiAgICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmVwZWF0
KSB7CiAgICAgICAgICAgICBpZiAoIWFsbG93UmVwZWF0KQogICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICAgICAgaWYgKCFjb25zdW1lR3JpZFRyYWNrUmVwZWF0RnVuY3Rp
b24ocmFuZ2UsIGNzc1BhcnNlck1vZGUsICp2YWx1ZXMsIGlzQXV0b1JlcGVhdCwgYWxsVHJhY2tz
QXJlRml4ZWRTaXplZCkpCisgICAgICAgICAgICBpZiAoIWNvbnN1bWVHcmlkVHJhY2tSZXBlYXRG
dW5jdGlvbihyYW5nZSwgY29udGV4dC5tb2RlLCAqdmFsdWVzLCBpc0F1dG9SZXBlYXQsIGFsbFRy
YWNrc0FyZUZpeGVkU2l6ZWQpKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICAgICAgaWYgKGlzQXV0b1JlcGVhdCAmJiBzZWVuQXV0b1JlcGVhdCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIHNlZW5BdXRvUmVwZWF0ID0gc2VlbkF1
dG9SZXBlYXQgfHwgaXNBdXRvUmVwZWF0OwotICAgICAgICB9IGVsc2UgaWYgKFJlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrU2l6ZShyYW5nZSwgY3NzUGFyc2VyTW9kZSkp
IHsKKyAgICAgICAgfSBlbHNlIGlmIChSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gY29uc3VtZUdy
aWRUcmFja1NpemUocmFuZ2UsIGNvbnRleHQubW9kZSkpIHsKICAgICAgICAgICAgIGlmIChhbGxU
cmFja3NBcmVGaXhlZFNpemVkKQogICAgICAgICAgICAgICAgIGFsbFRyYWNrc0FyZUZpeGVkU2l6
ZWQgPSBpc0dyaWRUcmFja0ZpeGVkU2l6ZWQoKnZhbHVlKTsKICAgICAgICAgICAgIHZhbHVlcy0+
YXBwZW5kKHZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwpAQCAtMzcxOCwxMSArMzc2NywxMSBAQCBz
dGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lR3JpZFRyYWNrTGlzdChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTUGFycwogICAgIHJldHVybiB2YWx1ZXM7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHcmlkVGVtcGxhdGVzUm93c09yQ29sdW1ucyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorc3RhdGlj
IFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUdyaWRUZW1wbGF0ZXNSb3dzT3JDb2x1bW5zKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgIHJl
dHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwotICAgIHJldHVybiBjb25zdW1lR3JpZFRyYWNrTGlz
dChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgR3JpZFRlbXBsYXRlKTsKKyAgICByZXR1cm4gY29uc3Vt
ZUdyaWRUcmFja0xpc3QocmFuZ2UsIGNvbnRleHQsIEdyaWRUZW1wbGF0ZSk7CiB9CiAKIHN0YXRp
YyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHcmlkVGVtcGxhdGVBcmVhcyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKQEAgLTQ2MjksMTAgKzQ2NzgsMTAgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
U1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
LCBDU1MKICAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkTGluZShtX3JhbmdlKTsKICAgICBjYXNl
IENTU1Byb3BlcnR5R3JpZEF1dG9Db2x1bW5zOgogICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQXV0
b1Jvd3M6Ci0gICAgICAgIHJldHVybiBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2Nv
bnRleHQubW9kZSwgR3JpZEF1dG8pOworICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUcmFja0xp
c3QobV9yYW5nZSwgbV9jb250ZXh0LCBHcmlkQXV0byk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUdy
aWRUZW1wbGF0ZUNvbHVtbnM6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRUZW1wbGF0ZVJvd3M6
Ci0gICAgICAgIHJldHVybiBjb25zdW1lR3JpZFRlbXBsYXRlc1Jvd3NPckNvbHVtbnMobV9yYW5n
ZSwgbV9jb250ZXh0Lm1vZGUpOworICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZXNS
b3dzT3JDb2x1bW5zKG1fcmFuZ2UsIG1fY29udGV4dCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUdy
aWRUZW1wbGF0ZUFyZWFzOgogICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRUZW1wbGF0ZUFyZWFz
KG1fcmFuZ2UpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlHcmlkQXV0b0Zsb3c6CkBAIC01ODc5LDcg
KzU5MjgsNyBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZFRlbXBsYXRlUm93
c0FuZEFyZWFzQW5kQ29sdW1ucyhDU1NQcm9wZXJ0eUlECiAgICAgaWYgKCFtX3JhbmdlLmF0RW5k
KCkpIHsKICAgICAgICAgaWYgKCFjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFu
Z2UpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjb2x1bW5zVmFsdWUgPSBj
b25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSwgR3JpZFRlbXBsYXRl
Tm9SZXBlYXQpOworICAgICAgICBjb2x1bW5zVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdCht
X3JhbmdlLCBtX2NvbnRleHQsIEdyaWRUZW1wbGF0ZU5vUmVwZWF0KTsKICAgICAgICAgaWYgKCFj
b2x1bW5zVmFsdWUgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9IGVsc2UgewpAQCAtNTkwNiwxMiArNTk1NSwxMiBAQCBib29sIENTU1Byb3BlcnR5
UGFyc2VyOjpjb25zdW1lR3JpZFRlbXBsYXRlU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQgc2hvcnRo
YW5kSWQsCiAKICAgICAvLyAyLSA8Z3JpZC10ZW1wbGF0ZS1yb3dzPiAvIDxncmlkLXRlbXBsYXRl
LWNvbHVtbnM+CiAgICAgaWYgKCFyb3dzVmFsdWUpCi0gICAgICAgIHJvd3NWYWx1ZSA9IGNvbnN1
bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBHcmlkVGVtcGxhdGUpOwor
ICAgICAgICByb3dzVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRl
eHQsIEdyaWRUZW1wbGF0ZSk7CiAKICAgICBpZiAocm93c1ZhbHVlKSB7CiAgICAgICAgIGlmICgh
Y29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBjb2x1bW5zVmFsdWUgPSBjb25z
dW1lR3JpZFRlbXBsYXRlc1Jvd3NPckNvbHVtbnMobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOwor
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IGNvbHVtbnNWYWx1ZSA9IGNvbnN1bWVHcmlkVGVtcGxh
dGVzUm93c09yQ29sdW1ucyhtX3JhbmdlLCBtX2NvbnRleHQpOwogICAgICAgICBpZiAoIWNvbHVt
bnNWYWx1ZSB8fCAhbV9yYW5nZS5hdEVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC01OTg1LDcgKzYwMzQsNyBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3Jp
ZFNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKGNvbnN1bWVTbGFzaEluY2x1
ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpCiAgICAgICAgICAgICBhdXRvUm93c1ZhbHVlID0gQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRv
KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhdXRvUm93c1ZhbHVlID0gY29uc3VtZUdy
aWRUcmFja0xpc3QobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUsIEdyaWRBdXRvKTsKKyAgICAgICAg
ICAgIGF1dG9Sb3dzVmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRl
eHQsIEdyaWRBdXRvKTsKICAgICAgICAgICAgIGlmICghYXV0b1Jvd3NWYWx1ZSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1
ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpCkBAIC01OTkzLDcgKzYwNDIsNyBAQCBib29sIENTU1By
b3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZFNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAg
ICAgfQogICAgICAgICBpZiAobV9yYW5nZS5hdEVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB0ZW1wbGF0ZUNvbHVtbnMgPSBjb25zdW1lR3JpZFRlbXBsYXRlc1Jvd3NP
ckNvbHVtbnMobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOworICAgICAgICB0ZW1wbGF0ZUNvbHVt
bnMgPSBjb25zdW1lR3JpZFRlbXBsYXRlc1Jvd3NPckNvbHVtbnMobV9yYW5nZSwgbV9jb250ZXh0
KTsKICAgICAgICAgaWYgKCF0ZW1wbGF0ZUNvbHVtbnMpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIHRlbXBsYXRlUm93cyA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CkBAIC02MDExLDcgKzYwNjAsNyBAQCBi
b29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZFNob3J0aGFuZChib29sIGltcG9ydGFu
dCkKICAgICAgICAgaWYgKG1fcmFuZ2UuYXRFbmQoKSkKICAgICAgICAgICAgIGF1dG9Db2x1bW5z
VmFsdWUgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZUF1dG8pOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1dG9Db2x1bW5zVmFs
dWUgPSBjb25zdW1lR3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSwgR3JpZEF1
dG8pOworICAgICAgICAgICAgYXV0b0NvbHVtbnNWYWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0
KG1fcmFuZ2UsIG1fY29udGV4dCwgR3JpZEF1dG8pOwogICAgICAgICAgICAgaWYgKCFhdXRvQ29s
dW1uc1ZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4IDU2MDJkN2MyZDRkNS4uMzdjYTkzZjAzYTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC02MSwxNyArNjEsMjQgQEAgdm9pZCBHcmlk
OjplbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93U2l6ZSwgdW5zaWduZWQgbWF4aW11
bUNvbHVtblNpemUpCiAgICAgfQogfQogCi12b2lkIEdyaWQ6Omluc2VydChSZW5kZXJCb3gmIGNo
aWxkLCBjb25zdCBHcmlkQXJlYSYgYXJlYSkKK0dyaWRBcmVhIEdyaWQ6Omluc2VydChSZW5kZXJC
b3gmIGNoaWxkLCBjb25zdCBHcmlkQXJlYSYgYXJlYSkKIHsKLSAgICBBU1NFUlQoYXJlYS5yb3dz
LmlzVHJhbnNsYXRlZERlZmluaXRlKCkgJiYgYXJlYS5jb2x1bW5zLmlzVHJhbnNsYXRlZERlZmlu
aXRlKCkpOwotICAgIGVuc3VyZUdyaWRTaXplKGFyZWEucm93cy5lbmRMaW5lKCksIGFyZWEuY29s
dW1ucy5lbmRMaW5lKCkpOworICAgIEdyaWRBcmVhIGNsYW1wZWQgPSBhcmVhOworICAgIGlmICht
X21heFJvd3MpCisgICAgICAgIGNsYW1wZWQucm93cy5jbGFtcChtX21heFJvd3MpOworICAgIGlm
IChtX21heENvbHVtbnMpCisgICAgICAgIGNsYW1wZWQuY29sdW1ucy5jbGFtcChtX21heENvbHVt
bnMpOwogCi0gICAgZm9yIChhdXRvIHJvdyA6IGFyZWEucm93cykgewotICAgICAgICBmb3IgKGF1
dG8gY29sdW1uIDogYXJlYS5jb2x1bW5zKQorICAgIEFTU0VSVChjbGFtcGVkLnJvd3MuaXNUcmFu
c2xhdGVkRGVmaW5pdGUoKSAmJiBjbGFtcGVkLmNvbHVtbnMuaXNUcmFuc2xhdGVkRGVmaW5pdGUo
KSk7CisgICAgZW5zdXJlR3JpZFNpemUoY2xhbXBlZC5yb3dzLmVuZExpbmUoKSwgY2xhbXBlZC5j
b2x1bW5zLmVuZExpbmUoKSk7CisKKyAgICBmb3IgKGF1dG8gcm93IDogY2xhbXBlZC5yb3dzKSB7
CisgICAgICAgIGZvciAoYXV0byBjb2x1bW4gOiBjbGFtcGVkLmNvbHVtbnMpCiAgICAgICAgICAg
ICBtX2dyaWRbcm93XVtjb2x1bW5dLmFwcGVuZChjaGlsZCk7CiAgICAgfQogCi0gICAgc2V0R3Jp
ZEl0ZW1BcmVhKGNoaWxkLCBhcmVhKTsKKyAgICBzZXRHcmlkSXRlbUFyZWEoY2hpbGQsIGNsYW1w
ZWQpOworICAgIHJldHVybiBjbGFtcGVkOwogfQogCiB2b2lkIEdyaWQ6OnNldEV4cGxpY2l0R3Jp
ZFN0YXJ0KHVuc2lnbmVkIHJvd1N0YXJ0LCB1bnNpZ25lZCBjb2x1bW5TdGFydCkKQEAgLTg1LDYg
KzkyLDI2IEBAIHVuc2lnbmVkIEdyaWQ6OmV4cGxpY2l0R3JpZFN0YXJ0KEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JS
b3dzID8gbV9leHBsaWNpdFJvd1N0YXJ0IDogbV9leHBsaWNpdENvbHVtblN0YXJ0OwogfQogCit2
b2lkIEdyaWQ6OnNldENsYW1waW5nRm9yU3ViZ3JpZCh1bnNpZ25lZCBtYXhSb3dzLCB1bnNpZ25l
ZCBtYXhDb2x1bW5zKQoreworICAgIG1fbWF4Um93cyA9IG1heFJvd3M7CisgICAgbV9tYXhDb2x1
bW5zID0gbWF4Q29sdW1uczsKK30KKwordm9pZCBHcmlkOjpjbGFtcEFuZFRyYW5zbGF0ZVRvSW1w
bGljaXRHcmlkKEdyaWRBcmVhJiBhcmVhKQoreworICAgIGlmICghYXJlYS5yb3dzLmlzSW5kZWZp
bml0ZSgpKSB7CisgICAgICAgIGlmIChtX21heFJvd3MpCisgICAgICAgICAgICBhcmVhLnJvd3Mu
Y2xhbXAobV9tYXhSb3dzKTsKKyAgICAgICAgYXJlYS5yb3dzLnRyYW5zbGF0ZShleHBsaWNpdEdy
aWRTdGFydChGb3JSb3dzKSk7CisgICAgfQorICAgIGlmICghYXJlYS5jb2x1bW5zLmlzSW5kZWZp
bml0ZSgpKSB7CisgICAgICAgIGlmIChtX21heENvbHVtbnMpCisgICAgICAgICAgICBhcmVhLmNv
bHVtbnMuY2xhbXAobV9tYXhDb2x1bW5zKTsKKyAgICAgICAgYXJlYS5jb2x1bW5zLnRyYW5zbGF0
ZShleHBsaWNpdEdyaWRTdGFydChGb3JDb2x1bW5zKSk7CisgICAgfQorfQorCiBHcmlkQXJlYSBH
cmlkOjpncmlkSXRlbUFyZWEoY29uc3QgUmVuZGVyQm94JiBpdGVtKSBjb25zdAogewogICAgIEFT
U0VSVChtX2dyaWRJdGVtQXJlYS5jb250YWlucygmaXRlbSkpOwpAQCAtMTYxLDYgKzE4OCw4IEBA
IHZvaWQgR3JpZDo6c2V0TmVlZHNJdGVtc1BsYWNlbWVudChib29sIG5lZWRzSXRlbXNQbGFjZW1l
bnQpCiAgICAgbV9hdXRvUmVwZWF0RW1wdHlSb3dzID0gbnVsbHB0cjsKICAgICBtX2F1dG9SZXBl
YXRDb2x1bW5zID0gMDsKICAgICBtX2F1dG9SZXBlYXRSb3dzID0gMDsKKyAgICBtX21heENvbHVt
bnMgPSAwOworICAgIG1fbWF4Um93cyA9IDA7CiB9CiAKIEdyaWRJdGVyYXRvcjo6R3JpZEl0ZXJh
dG9yKGNvbnN0IEdyaWQmIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24s
IHVuc2lnbmVkIGZpeGVkVHJhY2tJbmRleCwgdW5zaWduZWQgdmFyeWluZ1RyYWNrSW5kZXgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWQuaAppbmRleCA3MmNhZGY2OGVmNGQuLjExZDllNjhmYjgxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBudW1UcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIHZv
aWQgZW5zdXJlR3JpZFNpemUodW5zaWduZWQgbWF4aW11bVJvd1NpemUsIHVuc2lnbmVkIG1heGlt
dW1Db2x1bW5TaXplKTsKLSAgICB2b2lkIGluc2VydChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJl
YSYpOworICAgIEdyaWRBcmVhIGluc2VydChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOwog
CiAgICAgLy8gTm90ZSB0aGF0IGVhY2ggaW4gZmxvdyBjaGlsZCBvZiBhIGdyaWQgY29udGFpbmVy
IGJlY29tZXMgYSBncmlkIGl0ZW0uIFRoaXMgbWVhbnMgdGhhdAogICAgIC8vIHRoaXMgbWV0aG9k
IHdpbGwgcmV0dXJuIGZhbHNlIGZvciBhIGdyaWQgY29udGFpbmVyIHdpdGggb25seSBvdXQgb2Yg
ZmxvdyBjaGlsZHJlbi4KQEAgLTY3LDYgKzY3LDEwIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBh
dXRvUmVwZWF0VHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAgICAgdm9p
ZCBzZXRBdXRvUmVwZWF0VHJhY2tzKHVuc2lnbmVkIGF1dG9SZXBlYXRSb3dzLCB1bnNpZ25lZCBh
dXRvUmVwZWF0Q29sdW1ucyk7CiAKKyAgICB2b2lkIHNldENsYW1waW5nRm9yU3ViZ3JpZCh1bnNp
Z25lZCBtYXhSb3dzLCB1bnNpZ25lZCBtYXhDb2x1bW5zKTsKKworICAgIHZvaWQgY2xhbXBBbmRU
cmFuc2xhdGVUb0ltcGxpY2l0R3JpZChHcmlkQXJlYSYpOworCiAgICAgdm9pZCBzZXRBdXRvUmVw
ZWF0RW1wdHlDb2x1bW5zKHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4pOwog
ICAgIHZvaWQgc2V0QXV0b1JlcGVhdEVtcHR5Um93cyhzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRy
YWNrSW5kZXhTZXQ+KTsKIApAQCAtOTIsNiArOTYsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fYXV0b1JlcGVhdENvbHVtbnMgeyAwIH07CiAgICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0Um93
cyB7IDAgfTsKIAorICAgIHVuc2lnbmVkIG1fbWF4Q29sdW1ucyB7IDAgfTsKKyAgICB1bnNpZ25l
ZCBtX21heFJvd3MgeyAwIH07CisKICAgICBib29sIG1fbmVlZHNJdGVtc1BsYWNlbWVudCB7IHRy
dWUgfTsKIAogICAgIEdyaWRBc01hdHJpeCBtX2dyaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAKaW5kZXggMjZmOGZjYmMwYWIyLi45ZWZlNDVhOGZmZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTQzMCw4ICs0MzAsNyBAQCB2b2lk
IFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1p
bkxvZ2ljYWxXaWR0aCwgTGF5bwogICAgIExheW91dFVuaXQgY2hpbGRNYXhXaWR0aDsKICAgICBi
b29sIGhhZEV4Y2x1ZGVkQ2hpbGRyZW4gPSBjb21wdXRlUHJlZmVycmVkV2lkdGhzRm9yRXhjbHVk
ZWRDaGlsZHJlbihjaGlsZE1pbldpZHRoLCBjaGlsZE1heFdpZHRoKTsKIAotICAgIEdyaWQgZ3Jp
ZChjb25zdF9jYXN0PFJlbmRlckdyaWQmPigqdGhpcykpOwotICAgIEdyaWRUcmFja1NpemluZ0Fs
Z29yaXRobSBhbGdvcml0aG0odGhpcywgZ3JpZCk7CisgICAgR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtIGFsZ29yaXRobSh0aGlzLCBjb25zdF9jYXN0PEdyaWQmPihtX2dyaWQpKTsKICAgICBwbGFj
ZUl0ZW1zT25HcmlkKGFsZ29yaXRobSwgc3RkOjpudWxsb3B0KTsKIAogICAgIHBlcmZvcm1Hcmlk
SXRlbXNQcmVMYXlvdXQoYWxnb3JpdGhtKTsKQEAgLTYyNSw3ICs2MjQsNiBAQCB2b2lkIFJlbmRl
ckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQoR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiBhbGdvcml0
aG0sIHN0ZDo6b3B0aQogICAgIEdyaWQmIGdyaWQgPSBhbGdvcml0aG0ubXV0YWJsZUdyaWQoKTsK
ICAgICB1bnNpZ25lZCBhdXRvUmVwZWF0Q29sdW1ucyA9IGNvbXB1dGVBdXRvUmVwZWF0VHJhY2tz
Q291bnQoRm9yQ29sdW1ucywgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICB1bnNpZ25lZCBh
dXRvUmVwZWF0Um93cyA9IGNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoRm9yUm93cywgYXZh
aWxhYmxlTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbigpKTsKLQogICAgIGF1
dG9SZXBlYXRSb3dzID0gY2xhbXBBdXRvUmVwZWF0VHJhY2tzKEZvclJvd3MsIGF1dG9SZXBlYXRS
b3dzKTsKICAgICBhdXRvUmVwZWF0Q29sdW1ucyA9IGNsYW1wQXV0b1JlcGVhdFRyYWNrcyhGb3JD
b2x1bW5zLCBhdXRvUmVwZWF0Q29sdW1ucyk7CiAKQEAgLTY1NCwxMCArNjUyLDcgQEAgdm9pZCBS
ZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgYWxn
b3JpdGhtLCBzdGQ6Om9wdGkKICAgICAgICAgICAgIGNoaWxkLT5zZXRPdmVycmlkaW5nQ29udGFp
bmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoc3RkOjpudWxsb3B0KTsKIAogICAgICAgICBH
cmlkQXJlYSBhcmVhID0gZ3JpZC5ncmlkSXRlbUFyZWEoKmNoaWxkKTsKLSAgICAgICAgaWYgKCFh
cmVhLnJvd3MuaXNJbmRlZmluaXRlKCkpCi0gICAgICAgICAgICBhcmVhLnJvd3MudHJhbnNsYXRl
KGdyaWQuZXhwbGljaXRHcmlkU3RhcnQoRm9yUm93cykpOwotICAgICAgICBpZiAoIWFyZWEuY29s
dW1ucy5pc0luZGVmaW5pdGUoKSkKLSAgICAgICAgICAgIGFyZWEuY29sdW1ucy50cmFuc2xhdGUo
Z3JpZC5leHBsaWNpdEdyaWRTdGFydChGb3JDb2x1bW5zKSk7CisgICAgICAgIGdyaWQuY2xhbXBB
bmRUcmFuc2xhdGVUb0ltcGxpY2l0R3JpZChhcmVhKTsKIAogICAgICAgICBpZiAoYXJlYS5yb3dz
LmlzSW5kZWZpbml0ZSgpIHx8IGFyZWEuY29sdW1ucy5pc0luZGVmaW5pdGUoKSkgewogICAgICAg
ICAgICAgZ3JpZC5zZXRHcmlkSXRlbUFyZWEoKmNoaWxkLCBhcmVhKTsKQEAgLTY3NCw4ICs2Njks
OCBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQoR3JpZFRyYWNrU2l6aW5nQWxn
b3JpdGhtJiBhbGdvcml0aG0sIHN0ZDo6b3B0aQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBp
ZiAoZ3JpZC5oYXNHcmlkSXRlbXMoKSkgewotICAgICAgICBBU1NFUlQoZ3JpZC5udW1UcmFja3Mo
Rm9yUm93cykgPj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChz
dHlsZSgpLCBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yUm93cykpKTsKLSAgICAgICAgQVNTRVJU
KGdyaWQubnVtVHJhY2tzKEZvckNvbHVtbnMpID49IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhw
bGljaXRHcmlkQ29sdW1uQ291bnQoc3R5bGUoKSwgZ3JpZC5hdXRvUmVwZWF0VHJhY2tzKEZvckNv
bHVtbnMpKSk7CisgICAgICAgIEFTU0VSVChncmlkLm51bVRyYWNrcyhGb3JSb3dzKSA+PSBHcmlk
UG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KCp0aGlzKSk7CisgICAgICAg
IEFTU0VSVChncmlkLm51bVRyYWNrcyhGb3JDb2x1bW5zKSA+PSBHcmlkUG9zaXRpb25zUmVzb2x2
ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KCp0aGlzKSk7CiAgICAgfQogI2VuZGlmCiAKQEAg
LTcyOSwzMyArNzI0LDM1IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRB
bmRPcmRlckl0ZXJhdG9yKEdyaWQmIGdyaWQpIGNvbnN0CiAgICAgT3JkZXJJdGVyYXRvclBvcHVs
YXRvciBwb3B1bGF0b3IoZ3JpZC5vcmRlckl0ZXJhdG9yKCkpOwogICAgIHVuc2lnbmVkIGV4cGxp
Y2l0Um93U3RhcnQgPSAwOwogICAgIHVuc2lnbmVkIGV4cGxpY2l0Q29sdW1uU3RhcnQgPSAwOwot
ICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRSb3dzID0gZ3JpZC5hdXRvUmVwZWF0VHJhY2tzKEZvclJv
d3MpOwotICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1bW5zID0gZ3JpZC5hdXRvUmVwZWF0VHJh
Y2tzKEZvckNvbHVtbnMpOwotICAgIHVuc2lnbmVkIG1heGltdW1Sb3dJbmRleCA9IEdyaWRQb3Np
dGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQoc3R5bGUoKSwgYXV0b1JlcGVhdFJv
d3MpOwotICAgIHVuc2lnbmVkIG1heGltdW1Db2x1bW5JbmRleCA9IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoc3R5bGUoKSwgYXV0b1JlcGVhdENvbHVtbnMp
OworICAgIHVuc2lnbmVkIG1heGltdW1Sb3dJbmRleCA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6
ZXhwbGljaXRHcmlkUm93Q291bnQoKnRoaXMpOworICAgIHVuc2lnbmVkIG1heGltdW1Db2x1bW5J
bmRleCA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoKnRo
aXMpOwogCiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgewogICAgICAgICBpZiAoIXBvcHVs
YXRvci5jb2xsZWN0Q2hpbGQoKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAKLSAgICAgICAgR3JpZFNwYW4gcm93UG9zaXRpb25zID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShzdHlsZSgpLCAqY2hpbGQsIEZvclJvd3Ms
IGF1dG9SZXBlYXRSb3dzKTsKLSAgICAgICAgaWYgKCFyb3dQb3NpdGlvbnMuaXNJbmRlZmluaXRl
KCkpIHsKLSAgICAgICAgICAgIGV4cGxpY2l0Um93U3RhcnQgPSBzdGQ6Om1heDxpbnQ+KGV4cGxp
Y2l0Um93U3RhcnQsIC1yb3dQb3NpdGlvbnMudW50cmFuc2xhdGVkU3RhcnRMaW5lKCkpOwotICAg
ICAgICAgICAgbWF4aW11bVJvd0luZGV4ID0gc3RkOjptYXg8aW50PihtYXhpbXVtUm93SW5kZXgs
IHJvd1Bvc2l0aW9ucy51bnRyYW5zbGF0ZWRFbmRMaW5lKCkpOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgLy8gR3JvdyB0aGUgZ3JpZCBmb3IgaXRlbXMgd2l0aCBhIGRlZmluaXRlIHJv
dyBzcGFuLCBnZXR0aW5nIHRoZSBsYXJnZXN0IHN1Y2ggc3Bhbi4KLSAgICAgICAgICAgIHVuc2ln
bmVkIHNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFj
ZWRJdGVtKCpjaGlsZCwgRm9yUm93cyk7Ci0gICAgICAgICAgICBtYXhpbXVtUm93SW5kZXggPSBz
dGQ6Om1heChtYXhpbXVtUm93SW5kZXgsIHNwYW5TaXplKTsKKyAgICAgICAgR3JpZFNwYW4gcm93
UG9zaXRpb25zID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zy
b21TdHlsZSgqY2hpbGQsIEZvclJvd3MpOworICAgICAgICBpZiAoIWlzU3ViZ3JpZFJvd3MoKSkg
eworICAgICAgICAgICAgaWYgKCFyb3dQb3NpdGlvbnMuaXNJbmRlZmluaXRlKCkpIHsKKyAgICAg
ICAgICAgICAgICBleHBsaWNpdFJvd1N0YXJ0ID0gc3RkOjptYXg8aW50PihleHBsaWNpdFJvd1N0
YXJ0LCAtcm93UG9zaXRpb25zLnVudHJhbnNsYXRlZFN0YXJ0TGluZSgpKTsKKyAgICAgICAgICAg
ICAgICBtYXhpbXVtUm93SW5kZXggPSBzdGQ6Om1heDxpbnQ+KG1heGltdW1Sb3dJbmRleCwgcm93
UG9zaXRpb25zLnVudHJhbnNsYXRlZEVuZExpbmUoKSk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIC8vIEdyb3cgdGhlIGdyaWQgZm9yIGl0ZW1zIHdpdGggYSBkZWZpbml0
ZSByb3cgc3BhbiwgZ2V0dGluZyB0aGUgbGFyZ2VzdCBzdWNoIHNwYW4uCisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9y
QXV0b1BsYWNlZEl0ZW0oKmNoaWxkLCBGb3JSb3dzKTsKKyAgICAgICAgICAgICAgICBtYXhpbXVt
Um93SW5kZXggPSBzdGQ6Om1heChtYXhpbXVtUm93SW5kZXgsIHNwYW5TaXplKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIEdyaWRTcGFuIGNvbHVtblBvc2l0aW9ucyA9IEdy
aWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoc3R5bGUo
KSwgKmNoaWxkLCBGb3JDb2x1bW5zLCBhdXRvUmVwZWF0Q29sdW1ucyk7Ci0gICAgICAgIGlmICgh
Y29sdW1uUG9zaXRpb25zLmlzSW5kZWZpbml0ZSgpKSB7Ci0gICAgICAgICAgICBleHBsaWNpdENv
bHVtblN0YXJ0ID0gc3RkOjptYXg8aW50PihleHBsaWNpdENvbHVtblN0YXJ0LCAtY29sdW1uUG9z
aXRpb25zLnVudHJhbnNsYXRlZFN0YXJ0TGluZSgpKTsKLSAgICAgICAgICAgIG1heGltdW1Db2x1
bW5JbmRleCA9IHN0ZDo6bWF4PGludD4obWF4aW11bUNvbHVtbkluZGV4LCBjb2x1bW5Qb3NpdGlv
bnMudW50cmFuc2xhdGVkRW5kTGluZSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IC8vIEdyb3cgdGhlIGdyaWQgZm9yIGl0ZW1zIHdpdGggYSBkZWZpbml0ZSBjb2x1bW4gc3Bhbiwg
Z2V0dGluZyB0aGUgbGFyZ2VzdCBzdWNoIHNwYW4uCi0gICAgICAgICAgICB1bnNpZ25lZCBzcGFu
U2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbSgq
Y2hpbGQsIEZvckNvbHVtbnMpOwotICAgICAgICAgICAgbWF4aW11bUNvbHVtbkluZGV4ID0gc3Rk
OjptYXgobWF4aW11bUNvbHVtbkluZGV4LCBzcGFuU2l6ZSk7CisgICAgICAgIEdyaWRTcGFuIGNv
bHVtblBvc2l0aW9ucyA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlv
bnNGcm9tU3R5bGUoKmNoaWxkLCBGb3JDb2x1bW5zKTsKKyAgICAgICAgaWYgKCFpc1N1YmdyaWRD
b2x1bW5zKCkpIHsKKyAgICAgICAgICAgIGlmICghY29sdW1uUG9zaXRpb25zLmlzSW5kZWZpbml0
ZSgpKSB7CisgICAgICAgICAgICAgICAgZXhwbGljaXRDb2x1bW5TdGFydCA9IHN0ZDo6bWF4PGlu
dD4oZXhwbGljaXRDb2x1bW5TdGFydCwgLWNvbHVtblBvc2l0aW9ucy51bnRyYW5zbGF0ZWRTdGFy
dExpbmUoKSk7CisgICAgICAgICAgICAgICAgbWF4aW11bUNvbHVtbkluZGV4ID0gc3RkOjptYXg8
aW50PihtYXhpbXVtQ29sdW1uSW5kZXgsIGNvbHVtblBvc2l0aW9ucy51bnRyYW5zbGF0ZWRFbmRM
aW5lKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBHcm93IHRo
ZSBncmlkIGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUgY29sdW1uIHNwYW4sIGdldHRpbmcgdGhl
IGxhcmdlc3Qgc3VjaCBzcGFuLgorICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNwYW5TaXplID0g
R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKCpjaGlsZCwg
Rm9yQ29sdW1ucyk7CisgICAgICAgICAgICAgICAgbWF4aW11bUNvbHVtbkluZGV4ID0gc3RkOjpt
YXgobWF4aW11bUNvbHVtbkluZGV4LCBzcGFuU2l6ZSk7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAogICAgICAgICBncmlkLnNldEdyaWRJdGVtQXJlYSgqY2hpbGQsIHsgcm93UG9zaXRpb25z
LCBjb2x1bW5Qb3NpdGlvbnMgfSk7CkBAIC03NjMsNiArNzYwLDcgQEAgdm9pZCBSZW5kZXJHcmlk
Ojpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYgZ3JpZCkgY29uc3QK
IAogICAgIGdyaWQuc2V0RXhwbGljaXRHcmlkU3RhcnQoZXhwbGljaXRSb3dTdGFydCwgZXhwbGlj
aXRDb2x1bW5TdGFydCk7CiAgICAgZ3JpZC5lbnN1cmVHcmlkU2l6ZShtYXhpbXVtUm93SW5kZXgg
KyBleHBsaWNpdFJvd1N0YXJ0LCBtYXhpbXVtQ29sdW1uSW5kZXggKyBleHBsaWNpdENvbHVtblN0
YXJ0KTsKKyAgICBncmlkLnNldENsYW1waW5nRm9yU3ViZ3JpZChpc1N1YmdyaWRSb3dzKCkgPyBt
YXhpbXVtUm93SW5kZXggOiAwLCBpc1N1YmdyaWRDb2x1bW5zKCkgPyBtYXhpbXVtQ29sdW1uSW5k
ZXggOiAwKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBSZW5kZXJHcmlkOjpjcmVh
dGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiBncmlk
LCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gc3Bl
Y2lmaWVkRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3BlY2lmaWVkUG9zaXRpb25zKSBjb25z
dApAQCAtNzk2LDcgKzc5NCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpv
ckF4aXNJdGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8UmVuCiAgICAgICAgIGlm
ICghZW1wdHlHcmlkQXJlYSkKICAgICAgICAgICAgIGVtcHR5R3JpZEFyZWEgPSBjcmVhdGVFbXB0
eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChncmlkLCAqYXV0b0dyaWRJ
dGVtLCBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9u
cyk7CiAKLSAgICAgICAgZ3JpZC5pbnNlcnQoKmF1dG9HcmlkSXRlbSwgKmVtcHR5R3JpZEFyZWEp
OworICAgICAgICAqZW1wdHlHcmlkQXJlYSA9IGdyaWQuaW5zZXJ0KCphdXRvR3JpZEl0ZW0sICpl
bXB0eUdyaWRBcmVhKTsKIAogICAgICAgICBpZiAoIWlzR3JpZEF1dG9GbG93RGVuc2UpCiAgICAg
ICAgICAgICBtaW5vckF4aXNDdXJzb3JzLnNldChtYWpvckF4aXNJbml0aWFsUG9zaXRpb24sIGlz
Rm9yQ29sdW1ucyA/IGVtcHR5R3JpZEFyZWEtPnJvd3Muc3RhcnRMaW5lKCkgOiBlbXB0eUdyaWRB
cmVhLT5jb2x1bW5zLnN0YXJ0TGluZSgpKTsKQEAgLTE1OTQsMTEgKzE1OTIsMjkgQEAgTGF5b3V0
VW5pdCBSZW5kZXJHcmlkOjpyZXNvbHZlQXV0b0VuZEdyaWRQb3NpdGlvbihHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gZGlyZWMKICAgICByZXR1cm4gY2xpZW50TG9naWNhbFdpZHRoKCk7CiB9CiAK
K2Jvb2wgUmVuZGVyR3JpZDo6aXNTdWJncmlkKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24pIGNvbnN0Cit7CisgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGlzRXhj
bHVkZWRGcm9tTm9ybWFsTGF5b3V0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
KGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/ICFzdHlsZSgpLmdyaWRTdWJncmlkQ29sdW1ucygp
IDogIXN0eWxlKCkuZ3JpZFN1YmdyaWRSb3dzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gaXM8UmVuZGVyR3JpZD4ocGFyZW50KCkpOworfQorCitib29sIFJlbmRlckdyaWQ6
OmlzU3ViZ3JpZFJvd3MoKSBjb25zdAoreworICAgIHJldHVybiBpc1N1YmdyaWQoRm9yUm93cyk7
Cit9Citib29sIFJlbmRlckdyaWQ6OmlzU3ViZ3JpZENvbHVtbnMoKSBjb25zdAoreworICAgIHJl
dHVybiBpc1N1YmdyaWQoRm9yQ29sdW1ucyk7Cit9CisKIExheW91dFVuaXQgUmVuZGVyR3JpZDo6
Z3JpZEFyZWFCcmVhZHRoRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBBU1NFUlQoY2hpbGQu
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwogICAgIGJvb2wgaXNSb3dBeGlzID0gZGlyZWN0aW9u
ID09IEZvckNvbHVtbnM7Ci0gICAgR3JpZFNwYW4gc3BhbiA9IEdyaWRQb3NpdGlvbnNSZXNvbHZl
cjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoc3R5bGUoKSwgY2hpbGQsIGRpcmVjdGlv
biwgYXV0b1JlcGVhdENvdW50Rm9yRGlyZWN0aW9uKGRpcmVjdGlvbikpOworICAgIEdyaWRTcGFu
IHNwYW4gPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0
eWxlKGNoaWxkLCBkaXJlY3Rpb24pOwogICAgIGlmIChzcGFuLmlzSW5kZWZpbml0ZSgpKQogICAg
ICAgICByZXR1cm4gaXNSb3dBeGlzID8gY2xpZW50TG9naWNhbFdpZHRoKCkgOiBjbGllbnRMb2dp
Y2FsSGVpZ2h0KCk7CiAKQEAgLTE5MDQsNyArMTkyMCw3IEBAIHVuc2lnbmVkIFJlbmRlckdyaWQ6
Om51bVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBHcmlk
JiBnCiAgICAgICAgIHJldHVybiBncmlkLm51bVRyYWNrcyhGb3JSb3dzKTsKIAogICAgIC8vIEZJ
WE1FOiBUaGlzIHN0aWxsIHJlcXVpcmVzIGtub3dsZWRnZSBhYm91dCBtX2dyaWQgaW50ZXJuYWxz
LgotICAgIHJldHVybiBncmlkLm51bVRyYWNrcyhGb3JSb3dzKSA/IGdyaWQubnVtVHJhY2tzKEZv
ckNvbHVtbnMpIDogR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3Vu
dChzdHlsZSgpLCBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucykpOworICAgIHJldHVy
biBncmlkLm51bVRyYWNrcyhGb3JSb3dzKSA/IGdyaWQubnVtVHJhY2tzKEZvckNvbHVtbnMpIDog
R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCgqdGhpcyk7CiB9
CiAKIHZvaWQgUmVuZGVyR3JpZDo6cGFpbnRDaGlsZHJlbihQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBQYWludEluZm8mIGZvckNoaWxkLCBib29s
IHVzZVByaW50UmVjdCkKQEAgLTE5NjEsNCArMTk3Nyw3MSBAQCBib29sIFJlbmRlckdyaWQ6Omhh
c0F1dG9TaXplSW5Sb3dBeGlzKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpIGNvbnN0CiAgICAgcmV0
dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC5zdHlsZSgpLndpZHRoKCkuaXNB
dXRvKCkgOiBjaGlsZC5zdHlsZSgpLmhlaWdodCgpLmlzQXV0bygpOwogfQogCitzdGF0aWMgR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHRyYW5zcG9zZWREaXJlY3Rpb24oR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBpZiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMp
CisgICAgICAgIHJldHVybiBGb3JSb3dzOworICAgIHJldHVybiBGb3JDb2x1bW5zOworfQorCiti
b29sIFJlbmRlckdyaWQ6OmNvbXB1dGVHcmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNvbnN0IFJl
bmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIGludCYg
c3RhcnRMaW5lLCBib29sJiBzdGFydElzQXV0bywgaW50JiBlbmRMaW5lLCBib29sJiBlbmRJc0F1
dG8pIGNvbnN0Cit7CisgICAgQVNTRVJUKGNoaWxkLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsK
KyAgICBpbnQgbGFzdExpbmUgPSBudW1UcmFja3MoZGlyZWN0aW9uLCBtX2dyaWQpOworICAgIEdy
aWRTcGFuIHNwYW4gPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25z
RnJvbVN0eWxlKGNoaWxkLCBkaXJlY3Rpb24pOworICAgIGlmIChzcGFuLmlzSW5kZWZpbml0ZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1bnNpZ25lZCBleHBsaWNpdFN0YXJ0ID0g
bV9ncmlkLmV4cGxpY2l0R3JpZFN0YXJ0KGRpcmVjdGlvbik7CisgICAgc3RhcnRMaW5lID0gc3Bh
bi51bnRyYW5zbGF0ZWRTdGFydExpbmUoKSArIGV4cGxpY2l0U3RhcnQ7CisgICAgZW5kTGluZSA9
IHNwYW4udW50cmFuc2xhdGVkRW5kTGluZSgpICsgZXhwbGljaXRTdGFydDsKKworICAgIEdyaWRQ
b3NpdGlvbiBzdGFydFBvc2l0aW9uID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5z
dHlsZSgpLmdyaWRJdGVtQ29sdW1uU3RhcnQoKSA6IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Sb3dT
dGFydCgpOworICAgIEdyaWRQb3NpdGlvbiBlbmRQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zID8gY2hpbGQuc3R5bGUoKS5ncmlkSXRlbUNvbHVtbkVuZCgpIDogY2hpbGQuc3R5bGUo
KS5ncmlkSXRlbVJvd0VuZCgpOworCisgICAgc3RhcnRJc0F1dG8gPSBzdGFydFBvc2l0aW9uLmlz
QXV0bygpIHx8IHN0YXJ0TGluZSA8IDAgfHwgc3RhcnRMaW5lID4gbGFzdExpbmU7CisgICAgZW5k
SXNBdXRvID0gZW5kUG9zaXRpb24uaXNBdXRvKCkgfHwgZW5kTGluZSA8IDAgfHwgZW5kTGluZSA+
IGxhc3RMaW5lOworICAgIHJldHVybiB0cnVlOworfQorCitHcmlkU3BhbiBSZW5kZXJHcmlkOjpn
cmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Cit7CisgICAgaW50IGxhc3RMaW5lID0g
bnVtVHJhY2tzKGRpcmVjdGlvbiwgbV9ncmlkKTsKKyAgICBpbnQgc3RhcnRMaW5lLCBlbmRMaW5l
OworICAgIGJvb2wgc3RhcnRJc0F1dG8sIGVuZElzQXV0bzsKKyAgICBpZiAoIWNvbXB1dGVHcmlk
U3BhbkZvck91dE9mRmxvd0NoaWxkKGNoaWxkLCBkaXJlY3Rpb24sIHN0YXJ0TGluZSwgc3RhcnRJ
c0F1dG8sIGVuZExpbmUsIGVuZElzQXV0bykpCisgICAgICAgIHJldHVybiBHcmlkU3Bhbjo6dHJh
bnNsYXRlZERlZmluaXRlR3JpZFNwYW4oMCwgbGFzdExpbmUpOworICAgIHJldHVybiBHcmlkU3Bh
bjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oc3RhcnRJc0F1dG8gPyAwIDogc3RhcnRMaW5l
LCBlbmRJc0F1dG8gPyBsYXN0TGluZSA6IGVuZExpbmUpOworfQorCitHcmlkU3BhbiBSZW5kZXJH
cmlkOjpncmlkU3BhbkZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzPFJlbmRlckdy
aWQ+KGNoaWxkLnBhcmVudCgpKSk7CisKKyAgICBSZW5kZXJHcmlkKiByZW5kZXJHcmlkID0gZG93
bmNhc3Q8UmVuZGVyR3JpZD4oY2hpbGQucGFyZW50KCkpOworICAgIC8vIHxkaXJlY3Rpb258IGlz
IHNwZWNpZmllZCByZWxhdGl2ZSB0byB0aGlzIGdyaWQsIHN3aXRjaCBpdCBpZiB8Y2hpbGR8J3Mg
ZGlyZWN0IHBhcmVudCBncmlkCisgICAgLy8gaXMgdXNpbmcgYSBkaWZmZXJlbnQgd3JpdGluZyBt
b2RlLgorICAgIGlmIChyZW5kZXJHcmlkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9IGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgIGRpcmVjdGlvbiA9IHRyYW5zcG9zZWRE
aXJlY3Rpb24oZGlyZWN0aW9uKTsKKyAgICBHcmlkU3BhbiBzcGFuID0gY2hpbGQuaXNPdXRPZkZs
b3dQb3NpdGlvbmVkKCkgPyByZW5kZXJHcmlkLT5ncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNo
aWxkLCBkaXJlY3Rpb24pIDogcmVuZGVyR3JpZC0+Y3VycmVudEdyaWQoKS5ncmlkSXRlbVNwYW4o
Y2hpbGQsIGRpcmVjdGlvbik7CisKKyAgICB3aGlsZSAocmVuZGVyR3JpZCAhPSB0aGlzKSB7Cisg
ICAgICAgIEFTU0VSVChpczxSZW5kZXJHcmlkPihyZW5kZXJHcmlkLT5wYXJlbnQoKSkpOworICAg
ICAgICBSZW5kZXJHcmlkKiBwYXJlbnQgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihyZW5kZXJHcmlk
LT5wYXJlbnQoKSk7CisKKyAgICAgICAgYm9vbCBpc1N1YmdyaWQgPSBkaXJlY3Rpb24gPT0gRm9y
Q29sdW1ucyA/IHJlbmRlckdyaWQtPmlzU3ViZ3JpZENvbHVtbnMoKSA6IHJlbmRlckdyaWQtPmlz
U3ViZ3JpZFJvd3MoKTsKKworICAgICAgICBpZiAocmVuZGVyR3JpZC0+aXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSAhPSBwYXJlbnQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAg
ICAgICBkaXJlY3Rpb24gPSB0cmFuc3Bvc2VkRGlyZWN0aW9uKGRpcmVjdGlvbik7CisKKyAgICAg
ICAgR3JpZFNwYW4gcGFyZW50U3BhbiA9IHJlbmRlckdyaWQtPmlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpID8gcGFyZW50LT5ncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKCpyZW5kZXJHcmlkLCBkaXJl
Y3Rpb24pIDogIHBhcmVudC0+Y3VycmVudEdyaWQoKS5ncmlkSXRlbVNwYW4oKnJlbmRlckdyaWQs
IGRpcmVjdGlvbik7CisgICAgICAgIGlmIChpc1N1YmdyaWQpCisgICAgICAgICAgICBzcGFuLnRy
YW5zbGF0ZVRvKHBhcmVudFNwYW4sIHBhcmVudC0+c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgIT0gcmVuZGVyR3JpZC0+c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBzcGFuID0gcGFyZW50U3BhbjsKKyAgICAgICAgcmVu
ZGVyR3JpZCA9IHBhcmVudDsKKyAgICB9CisgICAgcmV0dXJuIHNwYW47Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IDI5
YWU1OTQ4MDAzZS4uYjQ2ZWZkYTZiNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmgKQEAgLTgyLDYgKzgyLDE5IEBAIHB1YmxpYzoKIAogICAgIFN0eWxlQ29udGVudEFsaWdu
bWVudERhdGEgY29udGVudEFsaWdubWVudChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0
OwogCisgICAgLy8gQ29tcHV0ZXMgdGhlIHNwYW4gcmVsYXRpdmUgdG8gdGhpcyBSZW5kZXJHcmlk
LCBldmVuIGlmIHRoZSBSZW5kZXJCb3ggaXMgYSBjaGlsZAorICAgIC8vIG9mIGEgZGVzY2VuZGFu
dCBzdWJncmlkLgorICAgIEdyaWRTcGFuIGdyaWRTcGFuRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94
JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKworICAgIGJvb2wgaXNTdWJncmlk
Um93cygpIGNvbnN0OworICAgIGJvb2wgaXNTdWJncmlkQ29sdW1ucygpIGNvbnN0OworICAgIGJv
b2wgaXNTdWJncmlkKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CisKKyAgICBjb25z
dCBHcmlkJiBjdXJyZW50R3JpZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ncmlk
OworICAgIH0KKwogcHJpdmF0ZToKICAgICBJdGVtUG9zaXRpb24gc2VsZkFsaWdubWVudE5vcm1h
bEJlaGF2aW9yKGNvbnN0IFJlbmRlckJveCogY2hpbGQgPSBudWxscHRyKSBjb25zdCBvdmVycmlk
ZQogICAgIHsKQEAgLTE1MCw4ICsxNjMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TG9naWNh
bFBvc2l0aW9uRm9yQ2hpbGQoUmVuZGVyQm94JikgY29uc3Q7CiAgICAgdm9pZCBzZXRMb2dpY2Fs
T2Zmc2V0Rm9yQ2hpbGQoUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25z
dDsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxPZmZzZXRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gm
LCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwotICAgIEdyaWRBcmVhIGNhY2hlZEdy
aWRBcmVhKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwotICAgIEdyaWRTcGFuIGNhY2hlZEdyaWRT
cGFuKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAK
ICAgICBMYXlvdXRVbml0IGdyaWRBcmVhQnJlYWR0aEZvckNoaWxkSW5jbHVkaW5nQWxpZ25tZW50
T2Zmc2V0cyhjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0
OwogCkBAIC0xOTEsNiArMjAyLDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgYXNwZWN0UmF0aW9Q
cmVmZXJzSW5saW5lKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIGJvb2wgYmxvY2tGbG93SXNDb2x1
bW5BeGlzKTsKIAorICAgIEdyaWRTcGFuIGdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3Qg
UmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKyAgICBib29sIGNv
bXB1dGVHcmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiwgaW50JiwgYm9vbCYsIGludCYsIGJvb2wmKSBjb25zdDsKKwogICAg
IEdyaWQgbV9ncmlkOwogCiAgICAgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtIG1fdHJhY2tTaXpp
bmdBbGdvcml0aG07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
R3JpZEFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCmlu
ZGV4IGI3ZWJkMWQ5NjFkZS4uZWUzYjkyZmMwZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvR3JpZEFyZWEuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB1bnNp
Z25lZCBpbnRlZ2VyU3BhbigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoaXNUcmFuc2xh
dGVkRGVmaW5pdGUoKSk7CisgICAgICAgIEFTU0VSVChpc1RyYW5zbGF0ZWREZWZpbml0ZSgpIHx8
IG1fdHlwZSA9PSBVbnRyYW5zbGF0ZWREZWZpbml0ZSk7CiAgICAgICAgIHJldHVybiBtX2VuZExp
bmUgLSBtX3N0YXJ0TGluZTsKICAgICB9CiAKQEAgLTE0MSw2ICsxNDEsMzEgQEAgcHVibGljOgog
ICAgICAgICBBU1NFUlQobV9lbmRMaW5lID4gMCk7CiAgICAgfQogCisgICAgLy8gTW92ZXMgdGhp
cyBzcGFuIHRvIGJlIGluIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3BhY2UgYXMgfHBhcmVudHwuCisg
ICAgLy8gSWYgcmV2ZXJzZSBpcyBzcGVjaWZpZWQsIHRoZW4gc3dhcHMgdGhlIGRpcmVjdGlvbiB0
byBoYW5kbGUgUlRML0xUUiBjaGFuZ2VzLgorICAgIHZvaWQgdHJhbnNsYXRlVG8oY29uc3QgR3Jp
ZFNwYW4mIHBhcmVudCwgYm9vbCByZXZlcnNlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGUpOworICAgICAgICBBU1NFUlQocGFyZW50Lm1fdHlwZSA9
PSBUcmFuc2xhdGVkRGVmaW5pdGUpOworICAgICAgICBpZiAocmV2ZXJzZSkgeworICAgICAgICAg
ICAgaW50IHN0YXJ0ID0gbV9zdGFydExpbmU7CisgICAgICAgICAgICBtX3N0YXJ0TGluZSA9IHBh
cmVudC5pbnRlZ2VyU3BhbigpIC0gbV9lbmRMaW5lICsgcGFyZW50LnN0YXJ0TGluZSgpOworICAg
ICAgICAgICAgbV9lbmRMaW5lID0gcGFyZW50LmludGVnZXJTcGFuKCkgLSBzdGFydCArIHBhcmVu
dC5zdGFydExpbmUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fc3RhcnRMaW5l
ICs9IHBhcmVudC5tX3N0YXJ0TGluZTsKKyAgICAgICAgICAgIG1fZW5kTGluZSArPSBwYXJlbnQu
bV9zdGFydExpbmU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNsYW1wKGludCBtYXgp
CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlICE9IEluZGVmaW5pdGUpOworICAgICAgICBt
X3N0YXJ0TGluZSA9IHN0ZDo6bWF4KG1fc3RhcnRMaW5lLCAwKTsKKyAgICAgICAgbV9lbmRMaW5l
ID0gc3RkOjptYXgoc3RkOjptaW4obV9lbmRMaW5lLCBtYXgpLCAxKTsKKyAgICAgICAgaWYgKG1f
c3RhcnRMaW5lID49IG1fZW5kTGluZSkKKyAgICAgICAgICAgIG1fc3RhcnRMaW5lID0gbV9lbmRM
aW5lIC0gMTsKKyAgICB9CisKIHByaXZhdGU6CiAKICAgICBlbnVtIEdyaWRTcGFuVHlwZSB7VW50
cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwgSW5kZWZpbml0ZX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVz
b2x2ZXIuY3BwCmluZGV4IDMzYzcwM2M1ZjA2Zi4uMTY0MDdjMWJkZmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVy
LmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiR3JpZEFyZWEuaCIKICNpbmNsdWRl
ICJSZW5kZXJCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJHcmlkLmgiCiAjaW5jbHVkZSA8Y3N0ZGxp
Yj4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTUyLDYgKzE1MywxOCBAQCB1bnNpZ25lZCBO
YW1lZExpbmVDb2xsZWN0aW9uOjpmaXJzdFBvc2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4gc3Rk
OjptaW4oZmlyc3RFeHBsaWNpdFBvc2l0aW9uKCksIG1faW1wbGljaXROYW1lZExpbmVzSW5kZXhl
cy0+YXQoZmlyc3RMaW5lKSk7CiB9CiAKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mt
Z3JpZC0yLyNpbmRlZmluaXRlLWdyaWQtc3Bhbgorc3RhdGljIGJvb2wgaXNJbmRlZmluaXRlU3Bh
bihHcmlkUG9zaXRpb24mIGluaXRpYWxQb3NpdGlvbiwgR3JpZFBvc2l0aW9uJiBmaW5hbFBvc2l0
aW9uKQoreworICAgIGlmICghaW5pdGlhbFBvc2l0aW9uLmlzQXV0bygpICYmICFmaW5hbFBvc2l0
aW9uLmlzQXV0bygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaW5pdGlhbFBv
c2l0aW9uLmlzU3BhbigpIHx8IGZpbmFsUG9zaXRpb24uaXNTcGFuKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgdm9pZCBhZGp1c3RHcmlk
UG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIEdyaWRQb3NpdGlvbiYgaW5pdGlhbFBvc2l0aW9uLCBH
cmlkUG9zaXRpb24mIGZpbmFsUG9zaXRpb24pCiB7CiAgICAgYm9vbCBpc0ZvckNvbHVtbnMgPSBk
aXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKQEAgLTE2OCwyMSArMTgxLDUyIEBAIHN0YXRpYyB2b2lk
IGFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSwg
R3JpZFRyYWNrU2l6CiAgICAgICAgIGZpbmFsUG9zaXRpb24uc2V0U3BhblBvc2l0aW9uKDEsIFN0
cmluZygpKTsKICAgICBpZiAoZmluYWxQb3NpdGlvbi5pc0F1dG8oKSAmJiBpbml0aWFsUG9zaXRp
b24uaXNTcGFuKCkgJiYgIWluaXRpYWxQb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkp
CiAgICAgICAgIGluaXRpYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oMSwgU3RyaW5nKCkpOwor
CisgICAgaWYgKGlzSW5kZWZpbml0ZVNwYW4oaW5pdGlhbFBvc2l0aW9uLCBmaW5hbFBvc2l0aW9u
KSAmJiBpczxSZW5kZXJHcmlkPihncmlkSXRlbSkgJiYgZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3Jp
ZEl0ZW0pLmlzU3ViZ3JpZChkaXJlY3Rpb24pKSB7CisgICAgICAgIC8vIEluZGVmaW5pdGUgc3Bh
biBmb3IgYW4gaXRlbSB0aGF0IGlzIHN1YmdyaWRkZWQgaW4gdGhpcyBheGlzLgorICAgICAgICBp
bnQgbGluZUNvdW50ID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBncmlkSXRlbS5zdHlsZSgp
LmdyaWRDb2x1bW5zKCkuc2l6ZSgpIDogZ3JpZEl0ZW0uc3R5bGUoKS5ncmlkUm93cygpLnNpemUo
KTsKKworICAgICAgICBpZiAoaW5pdGlhbFBvc2l0aW9uLmlzQXV0bygpKSB7CisgICAgICAgICAg
ICAvLyBTZXQgaW5pdGlhbCBwb3NpdGlvbiB0byBzcGFuIDxsaW5lIG5hbWVzIC0gMT4KKyAgICAg
ICAgICAgIGluaXRpYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oc3RkOjptYXgoMSwgbGluZUNv
dW50IC0gMSksICIiKTsKKyAgICAgICAgICAgIGlmIChmaW5hbFBvc2l0aW9uLmlzU3BhbigpKQor
ICAgICAgICAgICAgICAgIGZpbmFsUG9zaXRpb24uc2V0QXV0b1Bvc2l0aW9uKCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTZXQgZmluYWwgcG9zaXRpb24gdG8gc3BhbiA8bGlu
ZSBuYW1lcyAtIDE+CisgICAgICAgICAgICBmaW5hbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbihz
dGQ6Om1heCgxLCBsaW5lQ291bnQgLSAxKSwgIiIpOworICAgICAgICAgICAgaWYgKGluaXRpYWxQ
b3NpdGlvbi5pc1NwYW4oKSkKKyAgICAgICAgICAgICAgICBpbml0aWFsUG9zaXRpb24uc2V0QXV0
b1Bvc2l0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKLXVuc2lnbmVkIEdyaWRQb3NpdGlv
bnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoY29uc3QgUmVuZGVyU3R5bGUmIGdy
aWRDb250YWluZXJTdHlsZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQordW5zaWdu
ZWQgR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBS
ZW5kZXJHcmlkJiBncmlkQ29udGFpbmVyKQogewotICAgIHJldHVybiBzdGQ6Om1pbjx1bnNpZ25l
ZD4oc3RkOjptYXgoZ3JpZENvbnRhaW5lclN0eWxlLmdyaWRDb2x1bW5zKCkuc2l6ZSgpICsgYXV0
b1JlcGVhdFRyYWNrc0NvdW50LCBncmlkQ29udGFpbmVyU3R5bGUubmFtZWRHcmlkQXJlYUNvbHVt
bkNvdW50KCkpLCBHcmlkUG9zaXRpb246Om1heCgpKTsKKyAgICBib29sIHNwZWNpZmllZFN1Ymdy
aWQgPSBncmlkQ29udGFpbmVyLnN0eWxlKCkuZ3JpZFN1YmdyaWRDb2x1bW5zKCk7CisgICAgaWYg
KHNwZWNpZmllZFN1YmdyaWQgJiYgZ3JpZENvbnRhaW5lci5pc1N1YmdyaWRDb2x1bW5zKCkpIHsK
KyAgICAgICAgY29uc3QgUmVuZGVyR3JpZCYgcGFyZW50ID0gKmRvd25jYXN0PFJlbmRlckdyaWQ+
KGdyaWRDb250YWluZXIucGFyZW50KCkpOworICAgICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uID0gZ3JpZENvbnRhaW5lci5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09
IHBhcmVudC5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gRm9yQ29sdW1ucyA6IEZvclJvd3M7
CisgICAgICAgIHJldHVybiBwYXJlbnQuZ3JpZFNwYW5Gb3JDaGlsZChncmlkQ29udGFpbmVyLCBk
aXJlY3Rpb24pLmludGVnZXJTcGFuKCk7CisgICAgfQorICAgIGF1dG8gc3BlY2lmaWVkQ29sdW1u
cyA9IHNwZWNpZmllZFN1YmdyaWQgPyAwIDogZ3JpZENvbnRhaW5lci5zdHlsZSgpLmdyaWRDb2x1
bW5zKCkuc2l6ZSgpOworICAgIHJldHVybiBzdGQ6Om1pbjx1bnNpZ25lZD4oc3RkOjptYXgoc3Bl
Y2lmaWVkQ29sdW1ucyArIGdyaWRDb250YWluZXIuYXV0b1JlcGVhdENvdW50Rm9yRGlyZWN0aW9u
KEZvckNvbHVtbnMpLCBncmlkQ29udGFpbmVyLnN0eWxlKCkubmFtZWRHcmlkQXJlYUNvbHVtbkNv
dW50KCkpLCBHcmlkUG9zaXRpb246Om1heCgpKTsKIH0KIAotdW5zaWduZWQgR3JpZFBvc2l0aW9u
c1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENv
bnRhaW5lclN0eWxlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCit1bnNpZ25lZCBH
cmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRlckdy
aWQmIGdyaWRDb250YWluZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihzdGQ6
Om1heChncmlkQ29udGFpbmVyU3R5bGUuZ3JpZFJvd3MoKS5zaXplKCkgKyBhdXRvUmVwZWF0VHJh
Y2tzQ291bnQsIGdyaWRDb250YWluZXJTdHlsZS5uYW1lZEdyaWRBcmVhUm93Q291bnQoKSksIEdy
aWRQb3NpdGlvbjo6bWF4KCkpOworICAgIGJvb2wgc3BlY2lmaWVkU3ViZ3JpZCA9IGdyaWRDb250
YWluZXIuc3R5bGUoKS5ncmlkU3ViZ3JpZFJvd3MoKTsKKyAgICBpZiAoc3BlY2lmaWVkU3ViZ3Jp
ZCAmJiBncmlkQ29udGFpbmVyLmlzU3ViZ3JpZFJvd3MoKSkgeworICAgICAgICBjb25zdCBSZW5k
ZXJHcmlkJiBwYXJlbnQgPSAqZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZENvbnRhaW5lci5wYXJl
bnQoKSk7CisgICAgICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBncmlk
Q29udGFpbmVyLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gcGFyZW50LmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBGb3JSb3dzIDogRm9yQ29sdW1uczsKKyAgICAgICAgcmV0dXJuIHBh
cmVudC5ncmlkU3BhbkZvckNoaWxkKGdyaWRDb250YWluZXIsIGRpcmVjdGlvbikuaW50ZWdlclNw
YW4oKTsKKyAgICB9CisgICAgYXV0byBzcGVjaWZpZWRSb3dzID0gc3BlY2lmaWVkU3ViZ3JpZCA/
IDAgOiBncmlkQ29udGFpbmVyLnN0eWxlKCkuZ3JpZFJvd3MoKS5zaXplKCk7CisgICAgcmV0dXJu
IHN0ZDo6bWluPHVuc2lnbmVkPihzdGQ6Om1heChzcGVjaWZpZWRSb3dzICsgZ3JpZENvbnRhaW5l
ci5hdXRvUmVwZWF0Q291bnRGb3JEaXJlY3Rpb24oRm9yUm93cyksIGdyaWRDb250YWluZXIuc3R5
bGUoKS5uYW1lZEdyaWRBcmVhUm93Q291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4KCkpOwogfQog
Ci1zdGF0aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoY29uc3QgUmVuZGVyU3R5
bGUmIGdyaWRDb250YWluZXJTdHlsZSwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBh
dXRvUmVwZWF0VHJhY2tzQ291bnQpCitzdGF0aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkU2l6ZUZv
clNpZGUoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwgR3JpZFBvc2l0aW9uU2lkZSBz
aWRlKQogewotICAgIHJldHVybiBpc0NvbHVtblNpZGUoc2lkZSkgPyBHcmlkUG9zaXRpb25zUmVz
b2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGdyaWRDb250YWluZXJTdHlsZSwgYXV0b1Jl
cGVhdFRyYWNrc0NvdW50KSA6IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93
Q291bnQoZ3JpZENvbnRhaW5lclN0eWxlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgIHJl
dHVybiBpc0NvbHVtblNpZGUoc2lkZSkgPyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0
R3JpZENvbHVtbkNvdW50KGdyaWRDb250YWluZXIpIDogR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpl
eHBsaWNpdEdyaWRSb3dDb3VudChncmlkQ29udGFpbmVyKTsKIH0KIAogc3RhdGljIHVuc2lnbmVk
IGxvb2tBaGVhZEZvck5hbWVkR3JpZExpbmUoaW50IHN0YXJ0LCB1bnNpZ25lZCBudW1iZXJPZkxp
bmVzLCB1bnNpZ25lZCBncmlkTGFzdExpbmUsIE5hbWVkTGluZUNvbGxlY3Rpb24mIGxpbmVzQ29s
bGVjdGlvbikKQEAgLTIyNCwxMiArMjY4LDEyIEBAIHN0YXRpYyBpbnQgbG9va0JhY2tGb3JOYW1l
ZEdyaWRMaW5lKGludCBlbmQsIHVuc2lnbmVkIG51bWJlck9mTGluZXMsIGludCBncmlkTGFzCiAg
ICAgcmV0dXJuIHN0YXJ0ICsgMTsKIH0KIAotc3RhdGljIGludCByZXNvbHZlTmFtZWRHcmlkTGlu
ZVBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUs
IGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5z
aWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorc3RhdGljIGludCByZXNvbHZlTmFtZWRHcmlk
TGluZVBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIsIGNv
bnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkKIHsKICAg
ICBBU1NFUlQoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSk7CiAKLSAgICB1bnNp
Z25lZCBsYXN0TGluZSA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHls
ZSwgc2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICBOYW1lZExpbmVDb2xsZWN0aW9u
IGxpbmVzQ29sbGVjdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIHBvc2l0aW9uLm5hbWVkR3JpZExp
bmUoKSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5lLCBhdXRvUmVwZWF0VHJhY2tz
Q291bnQpOworICAgIHVuc2lnbmVkIGxhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUo
Z3JpZENvbnRhaW5lciwgc2lkZSk7CisgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBsaW5lc0NvbGxl
Y3Rpb24oZ3JpZENvbnRhaW5lci5zdHlsZSgpLCBwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCksIGRp
cmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgZ3JpZENvbnRhaW5lci5hdXRvUmVwZWF0
Q291bnRGb3JEaXJlY3Rpb24oZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSkpKTsKIAogICAgIGlmIChw
b3NpdGlvbi5pc1Bvc2l0aXZlKCkpCiAgICAgICAgIHJldHVybiBsb29rQWhlYWRGb3JOYW1lZEdy
aWRMaW5lKDAsIHN0ZDo6YWJzKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpKSwgbGFzdExpbmUs
IGxpbmVzQ29sbGVjdGlvbik7CkBAIC0yNTAsMTkgKzI5NCwxOSBAQCBzdGF0aWMgR3JpZFNwYW4g
ZGVmaW5pdGVHcmlkU3BhbldpdGhOYW1lZExpbmVTcGFuQWdhaW5zdE9wcG9zaXRlKGludCBvcHBv
c2l0ZUxpbgogICAgIHJldHVybiBHcmlkU3Bhbjo6dW50cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bh
bihzdGFydCwgZW5kKTsKIH0KIAotc3RhdGljIEdyaWRTcGFuIHJlc29sdmVOYW1lZEdyaWRMaW5l
UG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENv
bnRhaW5lclN0eWxlLCBpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0
aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3Vu
dCkKK3N0YXRpYyBHcmlkU3BhbiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9w
cG9zaXRlUG9zaXRpb24oY29uc3QgUmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwgaW50IG9wcG9z
aXRlTGluZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBz
aWRlKQogewogICAgIEFTU0VSVChwb3NpdGlvbi5pc1NwYW4oKSk7CiAgICAgQVNTRVJUKCFwb3Np
dGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpOwogICAgIC8vIE5lZ2F0aXZlIHBvc2l0aW9u
cyBhcmUgbm90IGFsbG93ZWQgcGVyIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBzaG91bGQgaGF2ZSBi
ZWVuIGhhbmRsZWQgZHVyaW5nIHBhcnNpbmcuCiAgICAgQVNTRVJUKHBvc2l0aW9uLnNwYW5Qb3Np
dGlvbigpID4gMCk7CiAKLSAgICB1bnNpZ25lZCBsYXN0TGluZSA9IGV4cGxpY2l0R3JpZFNpemVG
b3JTaWRlKGdyaWRDb250YWluZXJTdHlsZSwgc2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsK
LSAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGxpbmVzQ29sbGVjdGlvbihncmlkQ29udGFpbmVyU3R5
bGUsIHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxh
c3RMaW5lLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgIHVuc2lnbmVkIGxhc3RMaW5lID0g
ZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lciwgc2lkZSk7CisgICAgTmFtZWRM
aW5lQ29sbGVjdGlvbiBsaW5lc0NvbGxlY3Rpb24oZ3JpZENvbnRhaW5lci5zdHlsZSgpLCBwb3Np
dGlvbi5uYW1lZEdyaWRMaW5lKCksIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwg
Z3JpZENvbnRhaW5lci5hdXRvUmVwZWF0Q291bnRGb3JEaXJlY3Rpb24oZGlyZWN0aW9uRnJvbVNp
ZGUoc2lkZSkpKTsKICAgICByZXR1cm4gZGVmaW5pdGVHcmlkU3BhbldpdGhOYW1lZExpbmVTcGFu
QWdhaW5zdE9wcG9zaXRlKG9wcG9zaXRlTGluZSwgcG9zaXRpb24sIHNpZGUsIGxhc3RMaW5lLCBs
aW5lc0NvbGxlY3Rpb24pOwogfQogCi1zdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlv
bkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVy
U3R5bGUsIGludCBvcHBvc2l0ZUxpbmUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdy
aWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorc3Rh
dGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihj
b25zdCBSZW5kZXJHcmlkJiBncmlkQ29udGFpbmVyLCBpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBH
cmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7CiAgICAgaWYg
KHBvc2l0aW9uLmlzQXV0bygpKSB7CiAgICAgICAgIGlmIChpc1N0YXJ0U2lkZShzaWRlKSkKQEAg
LTI3NSw3ICszMTksNyBAQCBzdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWlu
c3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBncgogCiAgICAgaWYgKCFwb3Np
dGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gc3BhbiAyICdjJyAt
PiB3ZSBuZWVkIHRvIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGdyaWQgbGluZSBiZWZvcmUgLyBhZnRl
ciBvdXIgb3Bwb3NpdGUgcG9zaXRpb24uCi0gICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRHcmlk
TGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBv
cHBvc2l0ZUxpbmUsIHBvc2l0aW9uLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAg
ICAgICByZXR1cm4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBv
c2l0aW9uKGdyaWRDb250YWluZXIsIG9wcG9zaXRlTGluZSwgcG9zaXRpb24sIHNpZGUpOwogICAg
IH0KIAogICAgIC8vICdzcGFuIDEnIGlzIGNvbnRhaW5lZCBpbnNpZGUgYSBzaW5nbGUgZ3JpZCB0
cmFjayByZWdhcmRsZXNzIG9mIHRoZSBkaXJlY3Rpb24uCkBAIC0zMTUsMjEgKzM1OSwyMSBAQCB1
bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0o
Y29uc3QgUmVuZGVyQm94JiBncmlkSQogICAgIHJldHVybiBwb3NpdGlvbi5zcGFuUG9zaXRpb24o
KTsKIH0KIAotc3RhdGljIGludCByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRp
b24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50
KQorc3RhdGljIGludCByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlckdy
aWQmIGdyaWRDb250YWluZXIsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3Np
dGlvblNpZGUgc2lkZSkKIHsKICAgICBzd2l0Y2ggKHBvc2l0aW9uLnR5cGUoKSkgewogICAgIGNh
c2UgRXhwbGljaXRQb3NpdGlvbjogewogICAgICAgICBBU1NFUlQocG9zaXRpb24uaW50ZWdlclBv
c2l0aW9uKCkpOwogCiAgICAgICAgIGlmICghcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVs
bCgpKQotICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9t
U3R5bGUoZ3JpZENvbnRhaW5lclN0eWxlLCBwb3NpdGlvbiwgc2lkZSwgYXV0b1JlcGVhdFRyYWNr
c0NvdW50KTsKKyAgICAgICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9u
RnJvbVN0eWxlKGdyaWRDb250YWluZXIsIHBvc2l0aW9uLCBzaWRlKTsKIAogICAgICAgICAvLyBI
YW5kbGUgPGludGVnZXI+IGV4cGxpY2l0IHBvc2l0aW9uLgogICAgICAgICBpZiAocG9zaXRpb24u
aXNQb3NpdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uLmludGVnZXJQb3NpdGlv
bigpIC0gMTsKIAogICAgICAgICB1bnNpZ25lZCByZXNvbHZlZFBvc2l0aW9uID0gc3RkOjphYnMo
cG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCkpIC0gMTsKLSAgICAgICAgY29uc3QgdW5zaWduZWQg
ZW5kT2ZUcmFjayA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHlsZSwg
c2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgZW5k
T2ZUcmFjayA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXIsIHNpZGUpOwog
CiAgICAgICAgIHJldHVybiBlbmRPZlRyYWNrIC0gcmVzb2x2ZWRQb3NpdGlvbjsKICAgICB9CkBA
IC0zNDEsMTQgKzM4NSwxNCBAQCBzdGF0aWMgaW50IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgYwogICAgICAgICBTdHJp
bmcgbmFtZWRHcmlkTGluZSA9IHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKTsKICAgICAgICAgQVNT
RVJUKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpOwogCi0gICAgICAgIHVuc2ln
bmVkIGxhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0eWxl
LCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAgICAgICBOYW1lZExpbmVDb2xsZWN0
aW9uIGltcGxpY2l0TGluZXMoZ3JpZENvbnRhaW5lclN0eWxlLCBpbXBsaWNpdE5hbWVkR3JpZExp
bmVGb3JTaWRlKG5hbWVkR3JpZExpbmUsIHNpZGUpLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwg
bGFzdExpbmUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIHVuc2lnbmVkIGxhc3RM
aW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lciwgc2lkZSk7CisgICAg
ICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gaW1wbGljaXRMaW5lcyhncmlkQ29udGFpbmVyLnN0eWxl
KCksIGltcGxpY2l0TmFtZWRHcmlkTGluZUZvclNpZGUobmFtZWRHcmlkTGluZSwgc2lkZSksIGRp
cmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgZ3JpZENvbnRhaW5lci5hdXRvUmVwZWF0
Q291bnRGb3JEaXJlY3Rpb24oZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSkpKTsKICAgICAgICAgaWYg
KGltcGxpY2l0TGluZXMuaGFzTmFtZWRMaW5lcygpKQogICAgICAgICAgICAgcmV0dXJuIGltcGxp
Y2l0TGluZXMuZmlyc3RQb3NpdGlvbigpOwogCiAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhl
cmUgaXMgYSBuYW1lZCBsaW5lIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLCBjb250cmlidXRlcyB0
aGUgZmlyc3Qgc3VjaCBsaW5lIHRvIHRoZSBncmlkCiAgICAgICAgIC8vIGl0ZW0ncyBwbGFjZW1l
bnQuCi0gICAgICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gZXhwbGljaXRMaW5lcyhncmlkQ29udGFp
bmVyU3R5bGUsIG5hbWVkR3JpZExpbmUsIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGlu
ZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBl
eHBsaWNpdExpbmVzKGdyaWRDb250YWluZXIuc3R5bGUoKSwgbmFtZWRHcmlkTGluZSwgZGlyZWN0
aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5lLCBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3Vu
dEZvckRpcmVjdGlvbihkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSkpOwogICAgICAgICBpZiAoZXhw
bGljaXRMaW5lcy5oYXNOYW1lZExpbmVzKCkpCiAgICAgICAgICAgICByZXR1cm4gZXhwbGljaXRM
aW5lcy5maXJzdFBvc2l0aW9uKCk7CiAKQEAgLTM2NSw4ICs0MDksMTEgQEAgc3RhdGljIGludCBy
ZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFp
bmVyU3R5bGUsIGMKICAgICByZXR1cm4gMDsKIH0KIAotR3JpZFNwYW4gR3JpZFBvc2l0aW9uc1Jl
c29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYg
Z3JpZENvbnRhaW5lclN0eWxlLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQp
CitHcmlkU3BhbiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJv
bVN0eWxlKGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlY3Rpb24pCiB7CisgICAgYXV0byogZ3JpZENvbnRhaW5lciA9IGRvd25jYXN0PFJlbmRl
ckdyaWQ+KGdyaWRJdGVtLmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICBBU1NFUlQoZ3JpZENvbnRh
aW5lcik7CisKICAgICBHcmlkUG9zaXRpb24gaW5pdGlhbFBvc2l0aW9uLCBmaW5hbFBvc2l0aW9u
OwogICAgIGFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoZ3JpZEl0ZW0sIGRpcmVjdGlvbiwg
aW5pdGlhbFBvc2l0aW9uLCBmaW5hbFBvc2l0aW9uKTsKIApAQCAtMzc5LDE4ICs0MjYsMTggQEAg
R3JpZFNwYW4gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYKIAogICAgIGlmIChpbml0aWFsUG9zaXRpb24uc2hvdWxk
QmVSZXNvbHZlZEFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gSW5mZXIg
dGhlIHBvc2l0aW9uIGZyb20gdGhlIGZpbmFsIHBvc2l0aW9uICgnYXV0byAvIDEnIG9yICdzcGFu
IDIgLyAzJyBjYXNlKS4KLSAgICAgICAgYXV0byBlbmRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlv
bkZyb21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSwg
YXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICAgICAgcmV0dXJuIHJlc29sdmVHcmlkUG9zaXRp
b25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIGVuZExpbmUsIGlu
aXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAg
ICAgIGF1dG8gZW5kTGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoKmdyaWRDb250
YWluZXIsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSk7CisgICAgICAgIHJldHVybiByZXNvbHZl
R3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKmdyaWRDb250YWluZXIsIGVuZExp
bmUsIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUpOwogICAgIH0KIAogICAgIGlmIChmaW5h
bFBvc2l0aW9uLnNob3VsZEJlUmVzb2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigpKSB7CiAg
ICAgICAgIC8vIEluZmVyIG91ciBwb3NpdGlvbiBmcm9tIHRoZSBpbml0aWFsIHBvc2l0aW9uICgn
MSAvIGF1dG8nIG9yICczIC8gc3BhbiAyJyBjYXNlKS4KLSAgICAgICAgYXV0byBzdGFydExpbmUg
PSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXJTdHlsZSwgaW5pdGlh
bFBvc2l0aW9uLCBpbml0aWFsU2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICAgICAg
cmV0dXJuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihncmlkQ29u
dGFpbmVyU3R5bGUsIHN0YXJ0TGluZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlLCBhdXRvUmVw
ZWF0VHJhY2tzQ291bnQpOworICAgICAgICBhdXRvIHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9z
aXRpb25Gcm9tU3R5bGUoKmdyaWRDb250YWluZXIsIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNp
ZGUpOworICAgICAgICByZXR1cm4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBv
c2l0aW9uKCpncmlkQ29udGFpbmVyLCBzdGFydExpbmUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lk
ZSk7CiAgICAgfQogCi0gICAgaW50IHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9t
U3R5bGUoZ3JpZENvbnRhaW5lclN0eWxlLCBpbml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlLCBh
dXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAgIGludCBlbmRMaW5lID0gcmVzb2x2ZUdyaWRQb3Np
dGlvbkZyb21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lk
ZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICBpbnQgc3RhcnRMaW5lID0gcmVzb2x2ZUdy
aWRQb3NpdGlvbkZyb21TdHlsZSgqZ3JpZENvbnRhaW5lciwgaW5pdGlhbFBvc2l0aW9uLCBpbml0
aWFsU2lkZSk7CisgICAgaW50IGVuZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxl
KCpncmlkQ29udGFpbmVyLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUpOwogCiAgICAgaWYgKHN0
YXJ0TGluZSA+IGVuZExpbmUpCiAgICAgICAgIHN0ZDo6c3dhcChzdGFydExpbmUsIGVuZExpbmUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlv
bnNSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlv
bnNSZXNvbHZlci5oCmluZGV4IDYyM2I2MmM2YzI0MS4uNzI0MTk1NzczNTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZl
ci5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JpZFNw
YW47CiBjbGFzcyBSZW5kZXJCb3g7CitjbGFzcyBSZW5kZXJHcmlkOwogY2xhc3MgUmVuZGVyU3R5
bGU7CiAKIGVudW0gR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHsKQEAgLTczLDkgKzc0LDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBHcmlkUG9zaXRpb25TaWRlIGluaXRpYWxQb3NpdGlvblNpZGUo
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKICAgICBzdGF0aWMgR3JpZFBvc2l0aW9uU2lkZSBm
aW5hbFBvc2l0aW9uU2lkZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOwogICAgIHN0YXRpYyB1
bnNpZ25lZCBzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKGNvbnN0IFJlbmRlckJveCYsIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbik7Ci0gICAgc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9z
aXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyQm94JiwgR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwot
ICAgIHN0YXRpYyB1bnNpZ25lZCBleHBsaWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBSZW5kZXJT
dHlsZSYsIHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1bW5zQ291bnQpOwotICAgIHN0YXRpYyB1bnNp
Z25lZCBleHBsaWNpdEdyaWRSb3dDb3VudChjb25zdCBSZW5kZXJTdHlsZSYsIHVuc2lnbmVkIGF1
dG9SZXBlYXRSb3dzQ291bnQpOworICAgIHN0YXRpYyBHcmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0
aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24p
OworICAgIHN0YXRpYyB1bnNpZ25lZCBleHBsaWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBSZW5k
ZXJHcmlkJik7CisgICAgc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0
IFJlbmRlckdyaWQmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggYWMxNDJjZjAwNmRhLi4w
MTllNmVjNzI0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCkBAIC01ODEsNiArNTgxLDggQEAgcHVibGljOgogICAgIHNpemVfdCBuYW1lZEdyaWRB
cmVhUm93Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlk
LT5uYW1lZEdyaWRBcmVhUm93Q291bnQ7IH0KICAgICBzaXplX3QgbmFtZWRHcmlkQXJlYUNvbHVt
bkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+bmFt
ZWRHcmlkQXJlYUNvbHVtbkNvdW50OyB9CiAgICAgR3JpZEF1dG9GbG93IGdyaWRBdXRvRmxvdygp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdyaWRBdXRvRmxvdz4obV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9GbG93KTsgfQorICAgIGJvb2wgZ3JpZFN1YmdyaWRSb3dz
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+c3ViZ3JpZFJv
d3M7IH0KKyAgICBib29sIGdyaWRTdWJncmlkQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPmdyaWQtPnN1YmdyaWRDb2x1bW5zOyB9CiAgICAgYm9vbCBpc0dy
aWRBdXRvRmxvd0RpcmVjdGlvblJvdygpIGNvbnN0IHsgcmV0dXJuIChtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0Zsb3cgJiBJbnRlcm5hbEF1dG9GbG93RGlyZWN0aW9uUm93
KTsgfQogICAgIGJvb2wgaXNHcmlkQXV0b0Zsb3dEaXJlY3Rpb25Db2x1bW4oKSBjb25zdCB7IHJl
dHVybiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+Z3JpZEF1dG9GbG93ICYgSW50ZXJu
YWxBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbik7IH0KICAgICBib29sIGlzR3JpZEF1dG9GbG93QWxn
b3JpdGhtU3BhcnNlKCkgY29uc3QgeyByZXR1cm4gKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdy
aWQtPmdyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dBbGdvcml0aG1TcGFyc2UpOyB9CkBA
IC0xMjAzLDYgKzEyMDUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROYW1lZEdyaWRBcmVhUm93
Q291bnQoc2l6ZV90IHJvd0NvdW50KSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEsIGdyaWQsIG5hbWVkR3JpZEFyZWFSb3dDb3VudCwgcm93Q291bnQpOyB9CiAgICAgdm9p
ZCBzZXROYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoc2l6ZV90IGNvbHVtbkNvdW50KSB7IFNFVF9O
RVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWQsIG5hbWVkR3JpZEFyZWFDb2x1
bW5Db3VudCwgY29sdW1uQ291bnQpOyB9CiAgICAgdm9pZCBzZXRHcmlkQXV0b0Zsb3coR3JpZEF1
dG9GbG93IGZsb3cpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3Jp
ZCwgZ3JpZEF1dG9GbG93LCBmbG93KTsgfQorICAgIHZvaWQgc2V0R3JpZFN1YmdyaWRSb3dzKGJv
b2wgc3ViZ3JpZCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlk
LCBzdWJncmlkUm93cywgc3ViZ3JpZCk7IH0KKyAgICB2b2lkIHNldEdyaWRTdWJncmlkQ29sdW1u
cyhib29sIHN1YmdyaWQpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwg
Z3JpZCwgc3ViZ3JpZENvbHVtbnMsIHN1YmdyaWQpOyB9CiAgICAgdm9pZCBzZXRHcmlkSXRlbUNv
bHVtblN0YXJ0KGNvbnN0IEdyaWRQb3NpdGlvbiYgY29sdW1uU3RhcnRQb3NpdGlvbikgeyBTRVRf
TkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkSXRlbSwgZ3JpZENvbHVtblN0
YXJ0LCBjb2x1bW5TdGFydFBvc2l0aW9uKTsgfQogICAgIHZvaWQgc2V0R3JpZEl0ZW1Db2x1bW5F
bmQoY29uc3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5FbmRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZB
UihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBncmlkSXRlbSwgZ3JpZENvbHVtbkVuZCwgY29sdW1u
RW5kUG9zaXRpb24pOyB9CiAgICAgdm9pZCBzZXRHcmlkSXRlbVJvd1N0YXJ0KGNvbnN0IEdyaWRQ
b3NpdGlvbiYgcm93U3RhcnRQb3NpdGlvbikgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCBncmlkSXRlbSwgZ3JpZFJvd1N0YXJ0LCByb3dTdGFydFBvc2l0aW9uKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3BwCmlu
ZGV4IDU2NmYzYmIxZjc0MS4uOTIzOTE5N2M1ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3BwCkBAIC01NSw2ICs1NSw4IEBAIFN0eWxl
R3JpZERhdGE6OlN0eWxlR3JpZERhdGEoKQogICAgICwgYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Q
b2ludChSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQoKSkK
ICAgICAsIGF1dG9SZXBlYXRDb2x1bW5zVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRv
UmVwZWF0VHlwZSgpKQogICAgICwgYXV0b1JlcGVhdFJvd3NUeXBlKFJlbmRlclN0eWxlOjppbml0
aWFsR3JpZEF1dG9SZXBlYXRUeXBlKCkpCisgICAgLCBzdWJncmlkUm93cyhmYWxzZSkKKyAgICAs
IHN1YmdyaWRDb2x1bW5zKGZhbHNlKQogewogfQogCkBAIC04NCw2ICs4Niw4IEBAIGlubGluZSBT
dHlsZUdyaWREYXRhOjpTdHlsZUdyaWREYXRhKGNvbnN0IFN0eWxlR3JpZERhdGEmIG8pCiAgICAg
LCBhdXRvUmVwZWF0Um93c0luc2VydGlvblBvaW50KG8uYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Q
b2ludCkKICAgICAsIGF1dG9SZXBlYXRDb2x1bW5zVHlwZShvLmF1dG9SZXBlYXRDb2x1bW5zVHlw
ZSkKICAgICAsIGF1dG9SZXBlYXRSb3dzVHlwZShvLmF1dG9SZXBlYXRSb3dzVHlwZSkKKyAgICAs
IHN1YmdyaWRSb3dzKG8uc3ViZ3JpZFJvd3MpCisgICAgLCBzdWJncmlkQ29sdW1ucyhvLnN1Ymdy
aWRDb2x1bW5zKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVHcmlkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlR3JpZERhdGEuaAppbmRleCA0M2RlMzg2MGQ1YTkuLmViOWIzMmVmOTBjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCkBAIC01Nyw3ICs1
Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICYmIG9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyA9
PSBvLm9yZGVyZWROYW1lZEdyaWRSb3dMaW5lcyAmJiBvcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGlu
ZXMgPT0gby5vcmRlcmVkTmFtZWRHcmlkQ29sdW1uTGluZXMKICAgICAgICAgICAgICYmIGdyaWRB
dXRvUmVwZWF0Q29sdW1ucyA9PSBvLmdyaWRBdXRvUmVwZWF0Q29sdW1ucyAmJiBncmlkQXV0b1Jl
cGVhdFJvd3MgPT0gby5ncmlkQXV0b1JlcGVhdFJvd3MKICAgICAgICAgICAgICYmIGF1dG9SZXBl
YXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQgPT0gby5hdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBv
aW50ICYmIGF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQgPT0gby5hdXRvUmVwZWF0Um93c0lu
c2VydGlvblBvaW50Ci0gICAgICAgICAgICAmJiBhdXRvUmVwZWF0Q29sdW1uc1R5cGUgPT0gby5h
dXRvUmVwZWF0Q29sdW1uc1R5cGUgJiYgYXV0b1JlcGVhdFJvd3NUeXBlID09IG8uYXV0b1JlcGVh
dFJvd3NUeXBlOworICAgICAgICAgICAgJiYgYXV0b1JlcGVhdENvbHVtbnNUeXBlID09IG8uYXV0
b1JlcGVhdENvbHVtbnNUeXBlICYmIGF1dG9SZXBlYXRSb3dzVHlwZSA9PSBvLmF1dG9SZXBlYXRS
b3dzVHlwZSAmJiBzdWJncmlkUm93cyA9PSBvLnN1YmdyaWRSb3dzCisgICAgICAgICAgICAmJiBz
dWJncmlkQ29sdW1ucyA9PSBvLnN1YmdyaWRDb2x1bW5zOwogICAgIH0KIAogICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTdHlsZUdyaWREYXRhJiBvKSBjb25zdApAQCAtMTAyLDYgKzEwMyw5IEBA
IHB1YmxpYzoKICAgICBBdXRvUmVwZWF0VHlwZSBhdXRvUmVwZWF0Q29sdW1uc1R5cGU7CiAgICAg
QXV0b1JlcGVhdFR5cGUgYXV0b1JlcGVhdFJvd3NUeXBlOwogCisgICAgYm9vbCBzdWJncmlkUm93
czsKKyAgICBib29sIHN1YmdyaWRDb2x1bW5zOworCiBwcml2YXRlOgogICAgIFN0eWxlR3JpZERh
dGEoKTsKICAgICBTdHlsZUdyaWREYXRhKGNvbnN0IFN0eWxlR3JpZERhdGEmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggMGY5MGJjMjI1OWVk
Li4xZDYzZTI0YjUxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNv
bnZlcnRlci5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVN
YXBwaW5ncy5oIgogI2luY2x1ZGUgIkNTU1JheVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUmVmbGVj
dFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU3ViZ3JpZFZhbHVlLmgiCiAjaW5jbHVkZSAiQ2FsY0V4
cHJlc3Npb25MZW5ndGguaCIKICNpbmNsdWRlICJDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgIkZvbnRQYWxldHRlLmgiCkBAIC0xMDA0LDYgKzEwMDUsNyBAQCBwdWJsaWM6CiAg
ICAgT3JkZXJlZE5hbWVkR3JpZExpbmVzTWFwIG1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRM
aW5lczsKICAgICB1bnNpZ25lZCBtX2F1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCB7IFJlbmRlclN0
eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCgpIH07CiAgICAgQXV0b1Jl
cGVhdFR5cGUgbV9hdXRvUmVwZWF0VHlwZSB7IFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9S
ZXBlYXRUeXBlKCkgfTsKKyAgICBib29sIGlzU3ViZ3JpZCB7IGZhbHNlIH07CiB9OwogCiBpbmxp
bmUgYm9vbCBCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSwgVHJhY2tzRGF0YSYgdHJhY2tzRGF0YSwgQnVpbGRlclN0YXRlJiBidWlsZGVy
U3RhdGUpCkBAIC0xMDE3LDE0ICsxMDE5LDIxIEBAIGlubGluZSBib29sIEJ1aWxkZXJDb252ZXJ0
ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QoY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBUcmFja3NECiAK
ICAgICB1bnNpZ25lZCBjdXJyZW50TmFtZWRHcmlkTGluZSA9IDA7CiAgICAgYXV0byBoYW5kbGVM
aW5lTmFtZU9yVHJhY2tTaXplID0gWyZdKGNvbnN0IENTU1ZhbHVlJiBjdXJyZW50VmFsdWUpIHsK
LSAgICAgICAgaWYgKGlzPENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4oY3VycmVudFZhbHVlKSkKKyAg
ICAgICAgaWYgKGlzPENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4oY3VycmVudFZhbHVlKSkgewogICAg
ICAgICAgICAgY3JlYXRlR3JpZExpbmVOYW1lc0xpc3QoY3VycmVudFZhbHVlLCBjdXJyZW50TmFt
ZWRHcmlkTGluZSwgdHJhY2tzRGF0YS5tX25hbWVkR3JpZExpbmVzLCB0cmFja3NEYXRhLm1fb3Jk
ZXJlZE5hbWVkR3JpZExpbmVzKTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBTdWJn
cmlkcyBvbmx5IGhhdmUgbGluZSBuYW1lcyBkZWZpbmVkLCBub3QgdHJhY2sgc2l6ZXMsIHNvIHdl
IHdhbnQgb3VyIGNvdW50CisgICAgICAgICAgICAvLyB0byBiZSB0aGUgbnVtYmVyIG9mIGxpbmVz
IG5hbWVkIHJhdGhlciB0aGFuIG51bWJlciBvZiBzaXplZCB0cmFja3MuCisgICAgICAgICAgICBp
ZiAodHJhY2tzRGF0YS5pc1N1YmdyaWQpCisgICAgICAgICAgICAgICAgY3VycmVudE5hbWVkR3Jp
ZExpbmUrKzsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICsrY3VycmVudE5hbWVkR3Jp
ZExpbmU7CiAgICAgICAgICAgICB0cmFja3NEYXRhLm1fdHJhY2tTaXplcy5hcHBlbmQoY3JlYXRl
R3JpZFRyYWNrU2l6ZShjdXJyZW50VmFsdWUsIGJ1aWxkZXJTdGF0ZSkpOwogICAgICAgICB9CiAg
ICAgfTsKIAorICAgIGlmIChpczxDU1NTdWJncmlkVmFsdWU+KHZhbHVlKSkKKyAgICAgICAgdHJh
Y2tzRGF0YS5pc1N1YmdyaWQgPSB0cnVlOworCiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUg
OiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBpZiAoaXM8Q1NTR3Jp
ZEF1dG9SZXBlYXRWYWx1ZT4oY3VycmVudFZhbHVlKSkgewogICAgICAgICAgICAgQVNTRVJUKHRy
YWNrc0RhdGEubV9hdXRvUmVwZWF0VHJhY2tTaXplcy5pc0VtcHR5KCkpOwpAQCAtMTAzNSw2ICsx
MDQ0LDggQEAgaW5saW5lIGJvb2wgQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlz
dChjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIFRyYWNrc0QKICAgICAgICAgICAgIGZvciAoYXV0byYg
YXV0b1JlcGVhdFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PihjdXJyZW50VmFsdWUuZ2V0
KCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzPENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4oYXV0
b1JlcGVhdFZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICBjcmVhdGVHcmlkTGluZU5hbWVz
TGlzdChhdXRvUmVwZWF0VmFsdWUuZ2V0KCksIGF1dG9SZXBlYXRJbmRleCwgdHJhY2tzRGF0YS5t
X2F1dG9SZXBlYXROYW1lZEdyaWRMaW5lcywgdHJhY2tzRGF0YS5tX2F1dG9SZXBlYXRPcmRlcmVk
TmFtZWRHcmlkTGluZXMpOworICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2tzRGF0YS5pc1N1
YmdyaWQpCisgICAgICAgICAgICAgICAgICAgICAgICArK2F1dG9SZXBlYXRJbmRleDsKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICsrYXV0b1JlcGVhdEluZGV4OwpAQCAtMTA1OCw3ICsxMDY5LDcgQEAgaW5saW5lIGJvb2wg
QnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdChjb25zdCBDU1NWYWx1ZSYgdmFs
dWUsIFRyYWNrc0QKIAogICAgIC8vIFRoZSBwYXJzZXIgc2hvdWxkIGhhdmUgcmVqZWN0ZWQgYW55
IDx0cmFjay1saXN0PiB3aXRob3V0IGFueSA8dHJhY2stc2l6ZT4gYXMKICAgICAvLyB0aGlzIGlz
IG5vdCBjb25mb3JtYW50IHRvIHRoZSBzeW50YXguCi0gICAgQVNTRVJUKCF0cmFja3NEYXRhLm1f
dHJhY2tTaXplcy5pc0VtcHR5KCkgfHwgIXRyYWNrc0RhdGEubV9hdXRvUmVwZWF0VHJhY2tTaXpl
cy5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghdHJhY2tzRGF0YS5tX3RyYWNrU2l6ZXMuaXNFbXB0
eSgpIHx8ICF0cmFja3NEYXRhLm1fYXV0b1JlcGVhdFRyYWNrU2l6ZXMuaXNFbXB0eSgpIHx8IHRy
YWNrc0RhdGEuaXNTdWJncmlkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAxM2NhZDliN2ZkNzcuLjJhYTQyNGYy
YmJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9t
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTE5
MDUsNyArMTkwNSw4IEBAIGlubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVHcmlk
VGVtcGxhdGVBcmVhcyhCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0CiAgICAgc3R5bGUuc2V0R3Jp
ZEF1dG9SZXBlYXQjI1RyYWNrVHlwZSMjc0luc2VydGlvblBvaW50KHRyYWNrc0RhdGEgPyB0cmFj
a3NEYXRhLT5tX2F1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCA6IHBhcmVudFN0eWxlLT5ncmlkQXV0
b1JlcGVhdCMjVHJhY2tUeXBlIyNzSW5zZXJ0aW9uUG9pbnQoKSk7IFwKICAgICBzdHlsZS5zZXRB
dXRvUmVwZWF0TmFtZWRHcmlkIyNUcmFja1R5cGUjI0xpbmVzKHRyYWNrc0RhdGEgPyB0cmFja3NE
YXRhLT5tX2F1dG9SZXBlYXROYW1lZEdyaWRMaW5lcyA6IHBhcmVudFN0eWxlLT5hdXRvUmVwZWF0
TmFtZWRHcmlkIyNUcmFja1R5cGUjI0xpbmVzKCkpOyBcCiAgICAgc3R5bGUuc2V0QXV0b1JlcGVh
dE9yZGVyZWROYW1lZEdyaWQjI1RyYWNrVHlwZSMjTGluZXModHJhY2tzRGF0YSA/IHRyYWNrc0Rh
dGEtPm1fYXV0b1JlcGVhdE9yZGVyZWROYW1lZEdyaWRMaW5lcyA6IHBhcmVudFN0eWxlLT5hdXRv
UmVwZWF0T3JkZXJlZE5hbWVkR3JpZCMjVHJhY2tUeXBlIyNMaW5lcygpKTsgXAotICAgIHN0eWxl
LnNldEdyaWRBdXRvUmVwZWF0IyNUcmFja1R5cGUjI3NUeXBlKHRyYWNrc0RhdGEgPyB0cmFja3NE
YXRhLT5tX2F1dG9SZXBlYXRUeXBlIDogcGFyZW50U3R5bGUtPmdyaWRBdXRvUmVwZWF0IyNUcmFj
a1R5cGUjI3NUeXBlKCkpOworICAgIHN0eWxlLnNldEdyaWRBdXRvUmVwZWF0IyNUcmFja1R5cGUj
I3NUeXBlKHRyYWNrc0RhdGEgPyB0cmFja3NEYXRhLT5tX2F1dG9SZXBlYXRUeXBlIDogcGFyZW50
U3R5bGUtPmdyaWRBdXRvUmVwZWF0IyNUcmFja1R5cGUjI3NUeXBlKCkpOyBcCisgICAgc3R5bGUu
c2V0R3JpZFN1YmdyaWQjI1RyYWNrVHlwZSMjcyh0cmFja3NEYXRhID8gdHJhY2tzRGF0YS0+aXNT
dWJncmlkIDogcGFyZW50U3R5bGUtPmdyaWRTdWJncmlkIyNUcmFja1R5cGUjI3MoKSk7CiAKICNk
ZWZpbmUgU0VUX0lOSEVSSVRfVFJBQ0tTX0RBVEEoc3R5bGUsIHBhcmVudFN0eWxlLCBUcmFja1R5
cGUpIFwKICAgICBCdWlsZGVyQ29udmVydGVyOjpUcmFja3NEYXRhKiB0cmFja3NEYXRhID0gbnVs
bHB0cjsgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451001</attachid>
            <date>2022-02-05 15:17:42 -0800</date>
            <delta_ts>2022-02-14 15:15:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236122-20220206121740.patch</filename>
            <type>text/plain</type>
            <size>55567</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQwMmI1YzFlNmZkOGNm
NmMyZGY0MmQ0OTkxOTdkMTlkZmE1NmZjNC4uNTQxZWNmNTA4ZGY2ZmM3ZmM0NmQwMGQ4ZTY1ODJl
N2ViYTlkNmQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTAyLTAzICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgSW5oZXJpdCB0cmFj
ayBjb3VudCBmcm9tIHBhcmVudCBncmlkIGZvciBzdWJncmlkZGVkIGF4ZXMgYW5kIGNsYW1wIGl0
ZW0gcGxhY2VtZW50IHRvIHRoYXQgZXhwbGljaXQgZ3JpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZXMgR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpleHBsaWNpdEdyaWQ8PkNvdW50IHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIHRyYWNrcworICAg
ICAgICBzcGFubmVkIGluIHRoZSBwYXJlbnQgZ3JpZCwgZm9yIGF4ZXMgdGhhdCBhcmUgYSBzdWJn
cmlkLgorCisgICAgICAgIFVwZGF0ZXMgYWRqdXN0R3JpZFBvc2l0aW9uc0ZvclN0eWxlIHRvIHVz
ZSB0aGUgbnVtYmVyIG9mIGxpbmVzIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgc3ViZ3JpZCBw
cm9wZXJ0eSwgZm9yIGdyaWQgaXRlbXMgdGhhdCBhcmUgYWxzbyBhIHN1YmdyaWQgYW5kIGhhdmUg
YW4gb3RoZXJ3aXNlCisgICAgICAgIGluZGVmaW5pdGUgc3Bhbi4KKworICAgICAgICBBZGRzIGNs
YW1waW5nIHN1cHBvcnQgdG8gR3JpZCBzbyB0aGF0IHdlIGNhbiBwcmV2ZW50IHN1YmdyaWRzIGZy
b20gZXZlciBhZGRpbmcKKyAgICAgICAgbmV3IGltcGxpY2l0IHRyYWNrcy4KKworICAgICAgICAq
IHJlbmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6Omluc2VydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmlkOjpzZXRDbGFtcGluZ0ZvclN1YmdyaWQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZDo6Y2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxpY2l0R3JpZCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkOjpzZXROZWVkc0l0ZW1zUGxhY2VtZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRB
bmRPcmRlckl0ZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBs
YWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6aXNTdWJncmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmlzU3ViZ3JpZFJvd3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6aXNTdWJncmlkQ29sdW1ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZsb3dDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpudW1UcmFja3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNwb3Nl
ZERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlR3JpZFNw
YW5Gb3JPdXRPZkZsb3dDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6aW50ZWdlclNwYW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFNwYW46OnRyYW5zbGF0ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFu
OjpjbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0luZGVmaW5pdGVTcGFuKToKKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3Np
dGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdy
aWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9z
aXRpb25zUmVzb2x2ZXIuaDoKKwogMjAyMi0wMi0wMiAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ry
b3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nICdzdWJncmlk
JyBpbiBncmlkLXRlbXBsYXRlLWNvbHVtbnMvcm93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAK
aW5kZXggNTYwMmQ3YzJkNGQ1YmNhOTMyNDU0NGI3NWFkMjJjYjI2NThlZDAyYy4uMzdjYTkzZjAz
YTcyMWMyMGMzODBmYmM3YzExYjg0MTYzOTA3YWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
LmNwcApAQCAtNjEsMTcgKzYxLDI0IEBAIHZvaWQgR3JpZDo6ZW5zdXJlR3JpZFNpemUodW5zaWdu
ZWQgbWF4aW11bVJvd1NpemUsIHVuc2lnbmVkIG1heGltdW1Db2x1bW5TaXplKQogICAgIH0KIH0K
IAotdm9pZCBHcmlkOjppbnNlcnQoUmVuZGVyQm94JiBjaGlsZCwgY29uc3QgR3JpZEFyZWEmIGFy
ZWEpCitHcmlkQXJlYSBHcmlkOjppbnNlcnQoUmVuZGVyQm94JiBjaGlsZCwgY29uc3QgR3JpZEFy
ZWEmIGFyZWEpCiB7Ci0gICAgQVNTRVJUKGFyZWEucm93cy5pc1RyYW5zbGF0ZWREZWZpbml0ZSgp
ICYmIGFyZWEuY29sdW1ucy5pc1RyYW5zbGF0ZWREZWZpbml0ZSgpKTsKLSAgICBlbnN1cmVHcmlk
U2l6ZShhcmVhLnJvd3MuZW5kTGluZSgpLCBhcmVhLmNvbHVtbnMuZW5kTGluZSgpKTsKKyAgICBH
cmlkQXJlYSBjbGFtcGVkID0gYXJlYTsKKyAgICBpZiAobV9tYXhSb3dzKQorICAgICAgICBjbGFt
cGVkLnJvd3MuY2xhbXAobV9tYXhSb3dzKTsKKyAgICBpZiAobV9tYXhDb2x1bW5zKQorICAgICAg
ICBjbGFtcGVkLmNvbHVtbnMuY2xhbXAobV9tYXhDb2x1bW5zKTsKIAotICAgIGZvciAoYXV0byBy
b3cgOiBhcmVhLnJvd3MpIHsKLSAgICAgICAgZm9yIChhdXRvIGNvbHVtbiA6IGFyZWEuY29sdW1u
cykKKyAgICBBU1NFUlQoY2xhbXBlZC5yb3dzLmlzVHJhbnNsYXRlZERlZmluaXRlKCkgJiYgY2xh
bXBlZC5jb2x1bW5zLmlzVHJhbnNsYXRlZERlZmluaXRlKCkpOworICAgIGVuc3VyZUdyaWRTaXpl
KGNsYW1wZWQucm93cy5lbmRMaW5lKCksIGNsYW1wZWQuY29sdW1ucy5lbmRMaW5lKCkpOworCisg
ICAgZm9yIChhdXRvIHJvdyA6IGNsYW1wZWQucm93cykgeworICAgICAgICBmb3IgKGF1dG8gY29s
dW1uIDogY2xhbXBlZC5jb2x1bW5zKQogICAgICAgICAgICAgbV9ncmlkW3Jvd11bY29sdW1uXS5h
cHBlbmQoY2hpbGQpOwogICAgIH0KIAotICAgIHNldEdyaWRJdGVtQXJlYShjaGlsZCwgYXJlYSk7
CisgICAgc2V0R3JpZEl0ZW1BcmVhKGNoaWxkLCBjbGFtcGVkKTsKKyAgICByZXR1cm4gY2xhbXBl
ZDsKIH0KIAogdm9pZCBHcmlkOjpzZXRFeHBsaWNpdEdyaWRTdGFydCh1bnNpZ25lZCByb3dTdGFy
dCwgdW5zaWduZWQgY29sdW1uU3RhcnQpCkBAIC04NSw2ICs5MiwyNiBAQCB1bnNpZ25lZCBHcmlk
OjpleHBsaWNpdEdyaWRTdGFydChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBj
b25zdAogICAgIHJldHVybiBkaXJlY3Rpb24gPT0gRm9yUm93cyA/IG1fZXhwbGljaXRSb3dTdGFy
dCA6IG1fZXhwbGljaXRDb2x1bW5TdGFydDsKIH0KIAordm9pZCBHcmlkOjpzZXRDbGFtcGluZ0Zv
clN1YmdyaWQodW5zaWduZWQgbWF4Um93cywgdW5zaWduZWQgbWF4Q29sdW1ucykKK3sKKyAgICBt
X21heFJvd3MgPSBtYXhSb3dzOworICAgIG1fbWF4Q29sdW1ucyA9IG1heENvbHVtbnM7Cit9CisK
K3ZvaWQgR3JpZDo6Y2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxpY2l0R3JpZChHcmlkQXJlYSYgYXJl
YSkKK3sKKyAgICBpZiAoIWFyZWEucm93cy5pc0luZGVmaW5pdGUoKSkgeworICAgICAgICBpZiAo
bV9tYXhSb3dzKQorICAgICAgICAgICAgYXJlYS5yb3dzLmNsYW1wKG1fbWF4Um93cyk7CisgICAg
ICAgIGFyZWEucm93cy50cmFuc2xhdGUoZXhwbGljaXRHcmlkU3RhcnQoRm9yUm93cykpOworICAg
IH0KKyAgICBpZiAoIWFyZWEuY29sdW1ucy5pc0luZGVmaW5pdGUoKSkgeworICAgICAgICBpZiAo
bV9tYXhDb2x1bW5zKQorICAgICAgICAgICAgYXJlYS5jb2x1bW5zLmNsYW1wKG1fbWF4Q29sdW1u
cyk7CisgICAgICAgIGFyZWEuY29sdW1ucy50cmFuc2xhdGUoZXhwbGljaXRHcmlkU3RhcnQoRm9y
Q29sdW1ucykpOworICAgIH0KK30KKwogR3JpZEFyZWEgR3JpZDo6Z3JpZEl0ZW1BcmVhKGNvbnN0
IFJlbmRlckJveCYgaXRlbSkgY29uc3QKIHsKICAgICBBU1NFUlQobV9ncmlkSXRlbUFyZWEuY29u
dGFpbnMoJml0ZW0pKTsKQEAgLTE2MSw2ICsxODgsOCBAQCB2b2lkIEdyaWQ6OnNldE5lZWRzSXRl
bXNQbGFjZW1lbnQoYm9vbCBuZWVkc0l0ZW1zUGxhY2VtZW50KQogICAgIG1fYXV0b1JlcGVhdEVt
cHR5Um93cyA9IG51bGxwdHI7CiAgICAgbV9hdXRvUmVwZWF0Q29sdW1ucyA9IDA7CiAgICAgbV9h
dXRvUmVwZWF0Um93cyA9IDA7CisgICAgbV9tYXhDb2x1bW5zID0gMDsKKyAgICBtX21heFJvd3Mg
PSAwOwogfQogCiBHcmlkSXRlcmF0b3I6OkdyaWRJdGVyYXRvcihjb25zdCBHcmlkJiBncmlkLCBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lZCBmaXhlZFRyYWNrSW5k
ZXgsIHVuc2lnbmVkIHZhcnlpbmdUcmFja0luZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKaW5k
ZXggNzJjYWRmNjhlZjRkMzI2NmNlMWY4Y2VlYmRjOWE0OWRmMmJjODExYi4uMTFkOWU2OGZiODE5
OWZiY2E0ZDhiYTViMWJjYmY5YzgzMDk5YzUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0dyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oCkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1UcmFja3MoR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIHZvaWQgZW5zdXJlR3JpZFNpemUodW5zaWdu
ZWQgbWF4aW11bVJvd1NpemUsIHVuc2lnbmVkIG1heGltdW1Db2x1bW5TaXplKTsKLSAgICB2b2lk
IGluc2VydChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOworICAgIEdyaWRBcmVhIGluc2Vy
dChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOwogCiAgICAgLy8gTm90ZSB0aGF0IGVhY2gg
aW4gZmxvdyBjaGlsZCBvZiBhIGdyaWQgY29udGFpbmVyIGJlY29tZXMgYSBncmlkIGl0ZW0uIFRo
aXMgbWVhbnMgdGhhdAogICAgIC8vIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGZhbHNlIGZvciBh
IGdyaWQgY29udGFpbmVyIHdpdGggb25seSBvdXQgb2YgZmxvdyBjaGlsZHJlbi4KQEAgLTY3LDYg
KzY3LDEwIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzKEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAgICAgdm9pZCBzZXRBdXRvUmVwZWF0VHJhY2tzKHVu
c2lnbmVkIGF1dG9SZXBlYXRSb3dzLCB1bnNpZ25lZCBhdXRvUmVwZWF0Q29sdW1ucyk7CiAKKyAg
ICB2b2lkIHNldENsYW1waW5nRm9yU3ViZ3JpZCh1bnNpZ25lZCBtYXhSb3dzLCB1bnNpZ25lZCBt
YXhDb2x1bW5zKTsKKworICAgIHZvaWQgY2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxpY2l0R3JpZChH
cmlkQXJlYSYpOworCiAgICAgdm9pZCBzZXRBdXRvUmVwZWF0RW1wdHlDb2x1bW5zKHN0ZDo6dW5p
cXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4pOwogICAgIHZvaWQgc2V0QXV0b1JlcGVhdEVt
cHR5Um93cyhzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KTsKIApAQCAtOTIs
NiArOTYsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fYXV0b1JlcGVhdENvbHVtbnMgeyAw
IH07CiAgICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0Um93cyB7IDAgfTsKIAorICAgIHVuc2lnbmVk
IG1fbWF4Q29sdW1ucyB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX21heFJvd3MgeyAwIH07CisKICAg
ICBib29sIG1fbmVlZHNJdGVtc1BsYWNlbWVudCB7IHRydWUgfTsKIAogICAgIEdyaWRBc01hdHJp
eCBtX2dyaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggMjZm
OGZjYmMwYWIyNzk2MGM0OTM5MjIzZTc0OGQ5M2MzYjgzYzk5YS4uOWVmZTQ1YThmZmY5MTM4ZTUz
NTJmNjUyMDRhMDkyNzIwNTUyN2U4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJH
cmlkLmNwcApAQCAtNDMwLDggKzQzMCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJp
bnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvCiAgICAg
TGF5b3V0VW5pdCBjaGlsZE1heFdpZHRoOwogICAgIGJvb2wgaGFkRXhjbHVkZWRDaGlsZHJlbiA9
IGNvbXB1dGVQcmVmZXJyZWRXaWR0aHNGb3JFeGNsdWRlZENoaWxkcmVuKGNoaWxkTWluV2lkdGgs
IGNoaWxkTWF4V2lkdGgpOwogCi0gICAgR3JpZCBncmlkKGNvbnN0X2Nhc3Q8UmVuZGVyR3JpZCY+
KCp0aGlzKSk7Ci0gICAgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtIGFsZ29yaXRobSh0aGlzLCBn
cmlkKTsKKyAgICBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gYWxnb3JpdGhtKHRoaXMsIGNvbnN0
X2Nhc3Q8R3JpZCY+KG1fZ3JpZCkpOwogICAgIHBsYWNlSXRlbXNPbkdyaWQoYWxnb3JpdGhtLCBz
dGQ6Om51bGxvcHQpOwogCiAgICAgcGVyZm9ybUdyaWRJdGVtc1ByZUxheW91dChhbGdvcml0aG0p
OwpAQCAtNjI1LDcgKzYyNCw2IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZChH
cmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIGFsZ29yaXRobSwgc3RkOjpvcHRpCiAgICAgR3JpZCYg
Z3JpZCA9IGFsZ29yaXRobS5tdXRhYmxlR3JpZCgpOwogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRD
b2x1bW5zID0gY29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudChGb3JDb2x1bW5zLCBhdmFpbGFi
bGVMb2dpY2FsV2lkdGgpOwogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRSb3dzID0gY29tcHV0ZUF1
dG9SZXBlYXRUcmFja3NDb3VudChGb3JSb3dzLCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVy
Y2VudGFnZUNvbXB1dGF0aW9uKCkpOwotCiAgICAgYXV0b1JlcGVhdFJvd3MgPSBjbGFtcEF1dG9S
ZXBlYXRUcmFja3MoRm9yUm93cywgYXV0b1JlcGVhdFJvd3MpOwogICAgIGF1dG9SZXBlYXRDb2x1
bW5zID0gY2xhbXBBdXRvUmVwZWF0VHJhY2tzKEZvckNvbHVtbnMsIGF1dG9SZXBlYXRDb2x1bW5z
KTsKIApAQCAtNjU0LDEwICs2NTIsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdy
aWQoR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiBhbGdvcml0aG0sIHN0ZDo6b3B0aQogICAgICAg
ICAgICAgY2hpbGQtPnNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhl
aWdodChzdGQ6Om51bGxvcHQpOwogCiAgICAgICAgIEdyaWRBcmVhIGFyZWEgPSBncmlkLmdyaWRJ
dGVtQXJlYSgqY2hpbGQpOwotICAgICAgICBpZiAoIWFyZWEucm93cy5pc0luZGVmaW5pdGUoKSkK
LSAgICAgICAgICAgIGFyZWEucm93cy50cmFuc2xhdGUoZ3JpZC5leHBsaWNpdEdyaWRTdGFydChG
b3JSb3dzKSk7Ci0gICAgICAgIGlmICghYXJlYS5jb2x1bW5zLmlzSW5kZWZpbml0ZSgpKQotICAg
ICAgICAgICAgYXJlYS5jb2x1bW5zLnRyYW5zbGF0ZShncmlkLmV4cGxpY2l0R3JpZFN0YXJ0KEZv
ckNvbHVtbnMpKTsKKyAgICAgICAgZ3JpZC5jbGFtcEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlk
KGFyZWEpOwogCiAgICAgICAgIGlmIChhcmVhLnJvd3MuaXNJbmRlZmluaXRlKCkgfHwgYXJlYS5j
b2x1bW5zLmlzSW5kZWZpbml0ZSgpKSB7CiAgICAgICAgICAgICBncmlkLnNldEdyaWRJdGVtQXJl
YSgqY2hpbGQsIGFyZWEpOwpAQCAtNjc0LDggKzY2OSw4IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxh
Y2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIGFsZ29yaXRobSwgc3RkOjpv
cHRpCiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmIChncmlkLmhhc0dyaWRJdGVtcygpKSB7
Ci0gICAgICAgIEFTU0VSVChncmlkLm51bVRyYWNrcyhGb3JSb3dzKSA+PSBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KHN0eWxlKCksIGdyaWQuYXV0b1JlcGVhdFRy
YWNrcyhGb3JSb3dzKSkpOwotICAgICAgICBBU1NFUlQoZ3JpZC5udW1UcmFja3MoRm9yQ29sdW1u
cykgPj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChzdHls
ZSgpLCBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucykpKTsKKyAgICAgICAgQVNTRVJU
KGdyaWQubnVtVHJhY2tzKEZvclJvd3MpID49IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGlj
aXRHcmlkUm93Q291bnQoKnRoaXMpKTsKKyAgICAgICAgQVNTRVJUKGdyaWQubnVtVHJhY2tzKEZv
ckNvbHVtbnMpID49IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291
bnQoKnRoaXMpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNzI5LDMzICs3MjQsMzUgQEAgdm9pZCBS
ZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYgZ3Jp
ZCkgY29uc3QKICAgICBPcmRlckl0ZXJhdG9yUG9wdWxhdG9yIHBvcHVsYXRvcihncmlkLm9yZGVy
SXRlcmF0b3IoKSk7CiAgICAgdW5zaWduZWQgZXhwbGljaXRSb3dTdGFydCA9IDA7CiAgICAgdW5z
aWduZWQgZXhwbGljaXRDb2x1bW5TdGFydCA9IDA7Ci0gICAgdW5zaWduZWQgYXV0b1JlcGVhdFJv
d3MgPSBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yUm93cyk7Ci0gICAgdW5zaWduZWQgYXV0b1Jl
cGVhdENvbHVtbnMgPSBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucyk7Ci0gICAgdW5z
aWduZWQgbWF4aW11bVJvd0luZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdy
aWRSb3dDb3VudChzdHlsZSgpLCBhdXRvUmVwZWF0Um93cyk7Ci0gICAgdW5zaWduZWQgbWF4aW11
bUNvbHVtbkluZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5D
b3VudChzdHlsZSgpLCBhdXRvUmVwZWF0Q29sdW1ucyk7CisgICAgdW5zaWduZWQgbWF4aW11bVJv
d0luZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudCgqdGhp
cyk7CisgICAgdW5zaWduZWQgbWF4aW11bUNvbHVtbkluZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29s
dmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCgqdGhpcyk7CiAKICAgICBmb3IgKFJlbmRlckJv
eCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZ0JveCgpKSB7CiAgICAgICAgIGlmICghcG9wdWxhdG9yLmNvbGxlY3RDaGlsZCgqY2hpbGQp
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBHcmlkU3BhbiByb3dQ
b3NpdGlvbnMgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJv
bVN0eWxlKHN0eWxlKCksICpjaGlsZCwgRm9yUm93cywgYXV0b1JlcGVhdFJvd3MpOwotICAgICAg
ICBpZiAoIXJvd1Bvc2l0aW9ucy5pc0luZGVmaW5pdGUoKSkgewotICAgICAgICAgICAgZXhwbGlj
aXRSb3dTdGFydCA9IHN0ZDo6bWF4PGludD4oZXhwbGljaXRSb3dTdGFydCwgLXJvd1Bvc2l0aW9u
cy51bnRyYW5zbGF0ZWRTdGFydExpbmUoKSk7Ci0gICAgICAgICAgICBtYXhpbXVtUm93SW5kZXgg
PSBzdGQ6Om1heDxpbnQ+KG1heGltdW1Sb3dJbmRleCwgcm93UG9zaXRpb25zLnVudHJhbnNsYXRl
ZEVuZExpbmUoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBHcm93IHRoZSBn
cmlkIGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUgcm93IHNwYW4sIGdldHRpbmcgdGhlIGxhcmdl
c3Qgc3VjaCBzcGFuLgotICAgICAgICAgICAgdW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRp
b25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oKmNoaWxkLCBGb3JSb3dzKTsK
LSAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Sb3dJbmRleCwg
c3BhblNpemUpOworICAgICAgICBHcmlkU3BhbiByb3dQb3NpdGlvbnMgPSBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKCpjaGlsZCwgRm9yUm93cyk7
CisgICAgICAgIGlmICghaXNTdWJncmlkUm93cygpKSB7CisgICAgICAgICAgICBpZiAoIXJvd1Bv
c2l0aW9ucy5pc0luZGVmaW5pdGUoKSkgeworICAgICAgICAgICAgICAgIGV4cGxpY2l0Um93U3Rh
cnQgPSBzdGQ6Om1heDxpbnQ+KGV4cGxpY2l0Um93U3RhcnQsIC1yb3dQb3NpdGlvbnMudW50cmFu
c2xhdGVkU3RhcnRMaW5lKCkpOworICAgICAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0
ZDo6bWF4PGludD4obWF4aW11bVJvd0luZGV4LCByb3dQb3NpdGlvbnMudW50cmFuc2xhdGVkRW5k
TGluZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gR3JvdyB0
aGUgZ3JpZCBmb3IgaXRlbXMgd2l0aCBhIGRlZmluaXRlIHJvdyBzcGFuLCBnZXR0aW5nIHRoZSBs
YXJnZXN0IHN1Y2ggc3Bhbi4KKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBzcGFuU2l6ZSA9IEdy
aWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbSgqY2hpbGQsIEZv
clJvd3MpOworICAgICAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1heGlt
dW1Sb3dJbmRleCwgc3BhblNpemUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAg
ICAgR3JpZFNwYW4gY29sdW1uUG9zaXRpb25zID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNv
bHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShzdHlsZSgpLCAqY2hpbGQsIEZvckNvbHVtbnMsIGF1
dG9SZXBlYXRDb2x1bW5zKTsKLSAgICAgICAgaWYgKCFjb2x1bW5Qb3NpdGlvbnMuaXNJbmRlZmlu
aXRlKCkpIHsKLSAgICAgICAgICAgIGV4cGxpY2l0Q29sdW1uU3RhcnQgPSBzdGQ6Om1heDxpbnQ+
KGV4cGxpY2l0Q29sdW1uU3RhcnQsIC1jb2x1bW5Qb3NpdGlvbnMudW50cmFuc2xhdGVkU3RhcnRM
aW5lKCkpOwotICAgICAgICAgICAgbWF4aW11bUNvbHVtbkluZGV4ID0gc3RkOjptYXg8aW50Piht
YXhpbXVtQ29sdW1uSW5kZXgsIGNvbHVtblBvc2l0aW9ucy51bnRyYW5zbGF0ZWRFbmRMaW5lKCkp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gR3JvdyB0aGUgZ3JpZCBmb3IgaXRl
bXMgd2l0aCBhIGRlZmluaXRlIGNvbHVtbiBzcGFuLCBnZXR0aW5nIHRoZSBsYXJnZXN0IHN1Y2gg
c3Bhbi4KLSAgICAgICAgICAgIHVuc2lnbmVkIHNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29s
dmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKCpjaGlsZCwgRm9yQ29sdW1ucyk7Ci0gICAg
ICAgICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heChtYXhpbXVtQ29sdW1uSW5kZXgs
IHNwYW5TaXplKTsKKyAgICAgICAgR3JpZFNwYW4gY29sdW1uUG9zaXRpb25zID0gR3JpZFBvc2l0
aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZSgqY2hpbGQsIEZvckNv
bHVtbnMpOworICAgICAgICBpZiAoIWlzU3ViZ3JpZENvbHVtbnMoKSkgeworICAgICAgICAgICAg
aWYgKCFjb2x1bW5Qb3NpdGlvbnMuaXNJbmRlZmluaXRlKCkpIHsKKyAgICAgICAgICAgICAgICBl
eHBsaWNpdENvbHVtblN0YXJ0ID0gc3RkOjptYXg8aW50PihleHBsaWNpdENvbHVtblN0YXJ0LCAt
Y29sdW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZFN0YXJ0TGluZSgpKTsKKyAgICAgICAgICAgICAg
ICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heDxpbnQ+KG1heGltdW1Db2x1bW5JbmRleCwg
Y29sdW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZEVuZExpbmUoKSk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIC8vIEdyb3cgdGhlIGdyaWQgZm9yIGl0ZW1zIHdpdGggYSBk
ZWZpbml0ZSBjb2x1bW4gc3BhbiwgZ2V0dGluZyB0aGUgbGFyZ2VzdCBzdWNoIHNwYW4uCisgICAg
ICAgICAgICAgICAgdW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNw
YW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oKmNoaWxkLCBGb3JDb2x1bW5zKTsKKyAgICAgICAgICAg
ICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heChtYXhpbXVtQ29sdW1uSW5kZXgsIHNw
YW5TaXplKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGdyaWQuc2V0R3Jp
ZEl0ZW1BcmVhKCpjaGlsZCwgeyByb3dQb3NpdGlvbnMsIGNvbHVtblBvc2l0aW9ucyB9KTsKQEAg
LTc2Myw2ICs3NjAsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5k
T3JkZXJJdGVyYXRvcihHcmlkJiBncmlkKSBjb25zdAogCiAgICAgZ3JpZC5zZXRFeHBsaWNpdEdy
aWRTdGFydChleHBsaWNpdFJvd1N0YXJ0LCBleHBsaWNpdENvbHVtblN0YXJ0KTsKICAgICBncmlk
LmVuc3VyZUdyaWRTaXplKG1heGltdW1Sb3dJbmRleCArIGV4cGxpY2l0Um93U3RhcnQsIG1heGlt
dW1Db2x1bW5JbmRleCArIGV4cGxpY2l0Q29sdW1uU3RhcnQpOworICAgIGdyaWQuc2V0Q2xhbXBp
bmdGb3JTdWJncmlkKGlzU3ViZ3JpZFJvd3MoKSA/IG1heGltdW1Sb3dJbmRleCA6IDAsIGlzU3Vi
Z3JpZENvbHVtbnMoKSA/IG1heGltdW1Db2x1bW5JbmRleCA6IDApOwogfQogCiBzdGQ6OnVuaXF1
ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmll
ZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0
ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBzcGVjaWZpZWREaXJlY3Rpb24sIGNvbnN0IEdy
aWRTcGFuJiBzcGVjaWZpZWRQb3NpdGlvbnMpIGNvbnN0CkBAIC03OTYsNyArNzk0LDcgQEAgdm9p
ZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdy
aWQsIGNvbnN0IFZlY3RvcjxSZW4KICAgICAgICAgaWYgKCFlbXB0eUdyaWRBcmVhKQogICAgICAg
ICAgICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0
aW9uc091dHNpZGVHcmlkKGdyaWQsICphdXRvR3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4
aXNEaXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25zKTsKIAotICAgICAgICBncmlkLmluc2Vy
dCgqYXV0b0dyaWRJdGVtLCAqZW1wdHlHcmlkQXJlYSk7CisgICAgICAgICplbXB0eUdyaWRBcmVh
ID0gZ3JpZC5pbnNlcnQoKmF1dG9HcmlkSXRlbSwgKmVtcHR5R3JpZEFyZWEpOwogCiAgICAgICAg
IGlmICghaXNHcmlkQXV0b0Zsb3dEZW5zZSkKICAgICAgICAgICAgIG1pbm9yQXhpc0N1cnNvcnMu
c2V0KG1ham9yQXhpc0luaXRpYWxQb3NpdGlvbiwgaXNGb3JDb2x1bW5zID8gZW1wdHlHcmlkQXJl
YS0+cm93cy5zdGFydExpbmUoKSA6IGVtcHR5R3JpZEFyZWEtPmNvbHVtbnMuc3RhcnRMaW5lKCkp
OwpAQCAtMTU5NCwxMSArMTU5MiwyOSBAQCBMYXlvdXRVbml0IFJlbmRlckdyaWQ6OnJlc29sdmVB
dXRvRW5kR3JpZFBvc2l0aW9uKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlYwogICAgIHJl
dHVybiBjbGllbnRMb2dpY2FsV2lkdGgoKTsKIH0KIAorYm9vbCBSZW5kZXJHcmlkOjppc1N1Ymdy
aWQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3sKKyAgICBpZiAo
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgoZGlyZWN0aW9uID09IEZvckNvbHVtbnMp
ID8gIXN0eWxlKCkuZ3JpZFN1YmdyaWRDb2x1bW5zKCkgOiAhc3R5bGUoKS5ncmlkU3ViZ3JpZFJv
d3MoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpczxSZW5kZXJHcmlkPihw
YXJlbnQoKSk7Cit9CisKK2Jvb2wgUmVuZGVyR3JpZDo6aXNTdWJncmlkUm93cygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGlzU3ViZ3JpZChGb3JSb3dzKTsKK30KK2Jvb2wgUmVuZGVyR3JpZDo6aXNT
dWJncmlkQ29sdW1ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzU3ViZ3JpZChGb3JDb2x1bW5z
KTsKK30KKwogTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZs
b3dDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
ZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChjaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7
CiAgICAgYm9vbCBpc1Jvd0F4aXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKLSAgICBHcmlk
U3BhbiBzcGFuID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zy
b21TdHlsZShzdHlsZSgpLCBjaGlsZCwgZGlyZWN0aW9uLCBhdXRvUmVwZWF0Q291bnRGb3JEaXJl
Y3Rpb24oZGlyZWN0aW9uKSk7CisgICAgR3JpZFNwYW4gc3BhbiA9IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIGRpcmVjdGlvbik7CiAg
ICAgaWYgKHNwYW4uaXNJbmRlZmluaXRlKCkpCiAgICAgICAgIHJldHVybiBpc1Jvd0F4aXMgPyBj
bGllbnRMb2dpY2FsV2lkdGgoKSA6IGNsaWVudExvZ2ljYWxIZWlnaHQoKTsKIApAQCAtMTkwNCw3
ICsxOTIwLDcgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6bnVtVHJhY2tzKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEdyaWQmIGcKICAgICAgICAgcmV0dXJuIGdyaWQu
bnVtVHJhY2tzKEZvclJvd3MpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc3RpbGwgcmVxdWlyZXMg
a25vd2xlZGdlIGFib3V0IG1fZ3JpZCBpbnRlcm5hbHMuCi0gICAgcmV0dXJuIGdyaWQubnVtVHJh
Y2tzKEZvclJvd3MpID8gZ3JpZC5udW1UcmFja3MoRm9yQ29sdW1ucykgOiBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KHN0eWxlKCksIGdyaWQuYXV0b1JlcGVh
dFRyYWNrcyhGb3JDb2x1bW5zKSk7CisgICAgcmV0dXJuIGdyaWQubnVtVHJhY2tzKEZvclJvd3Mp
ID8gZ3JpZC5udW1UcmFja3MoRm9yQ29sdW1ucykgOiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4
cGxpY2l0R3JpZENvbHVtbkNvdW50KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJHcmlkOjpwYWlu
dENoaWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KQpAQCAtMTk2MSw0
ICsxOTc3LDcxIEBAIGJvb2wgUmVuZGVyR3JpZDo6aGFzQXV0b1NpemVJblJvd0F4aXMoY29uc3Qg
UmVuZGVyQm94JiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IGNoaWxkLnN0eWxlKCkud2lkdGgoKS5pc0F1dG8oKSA6IGNoaWxkLnN0eWxlKCkuaGVp
Z2h0KCkuaXNBdXRvKCk7CiB9CiAKK3N0YXRpYyBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gdHJh
bnNwb3NlZERpcmVjdGlvbihHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQorewor
ICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykKKyAgICAgICAgcmV0dXJuIEZvclJvd3M7
CisgICAgcmV0dXJuIEZvckNvbHVtbnM7Cit9CisKK2Jvb2wgUmVuZGVyR3JpZDo6Y29tcHV0ZUdy
aWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50JiBzdGFydExpbmUsIGJvb2wmIHN0YXJ0SXNB
dXRvLCBpbnQmIGVuZExpbmUsIGJvb2wmIGVuZElzQXV0bykgY29uc3QKK3sKKyAgICBBU1NFUlQo
Y2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOworICAgIGludCBsYXN0TGluZSA9IG51bVRy
YWNrcyhkaXJlY3Rpb24sIG1fZ3JpZCk7CisgICAgR3JpZFNwYW4gc3BhbiA9IEdyaWRQb3NpdGlv
bnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIGRpcmVjdGlv
bik7CisgICAgaWYgKHNwYW4uaXNJbmRlZmluaXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHVuc2lnbmVkIGV4cGxpY2l0U3RhcnQgPSBtX2dyaWQuZXhwbGljaXRHcmlkU3RhcnQo
ZGlyZWN0aW9uKTsKKyAgICBzdGFydExpbmUgPSBzcGFuLnVudHJhbnNsYXRlZFN0YXJ0TGluZSgp
ICsgZXhwbGljaXRTdGFydDsKKyAgICBlbmRMaW5lID0gc3Bhbi51bnRyYW5zbGF0ZWRFbmRMaW5l
KCkgKyBleHBsaWNpdFN0YXJ0OworCisgICAgR3JpZFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBk
aXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Db2x1bW5TdGFy
dCgpIDogY2hpbGQuc3R5bGUoKS5ncmlkSXRlbVJvd1N0YXJ0KCk7CisgICAgR3JpZFBvc2l0aW9u
IGVuZFBvc2l0aW9uID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5zdHlsZSgpLmdy
aWRJdGVtQ29sdW1uRW5kKCkgOiBjaGlsZC5zdHlsZSgpLmdyaWRJdGVtUm93RW5kKCk7CisKKyAg
ICBzdGFydElzQXV0byA9IHN0YXJ0UG9zaXRpb24uaXNBdXRvKCkgfHwgc3RhcnRMaW5lIDwgMCB8
fCBzdGFydExpbmUgPiBsYXN0TGluZTsKKyAgICBlbmRJc0F1dG8gPSBlbmRQb3NpdGlvbi5pc0F1
dG8oKSB8fCBlbmRMaW5lIDwgMCB8fCBlbmRMaW5lID4gbGFzdExpbmU7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK0dyaWRTcGFuIFJlbmRlckdyaWQ6OmdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQo
Y29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
bikgY29uc3QKK3sKKyAgICBpbnQgbGFzdExpbmUgPSBudW1UcmFja3MoZGlyZWN0aW9uLCBtX2dy
aWQpOworICAgIGludCBzdGFydExpbmUsIGVuZExpbmU7CisgICAgYm9vbCBzdGFydElzQXV0bywg
ZW5kSXNBdXRvOworICAgIGlmICghY29tcHV0ZUdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY2hp
bGQsIGRpcmVjdGlvbiwgc3RhcnRMaW5lLCBzdGFydElzQXV0bywgZW5kTGluZSwgZW5kSXNBdXRv
KSkKKyAgICAgICAgcmV0dXJuIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbigw
LCBsYXN0TGluZSk7CisgICAgcmV0dXJuIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlk
U3BhbihzdGFydElzQXV0byA/IDAgOiBzdGFydExpbmUsIGVuZElzQXV0byA/IGxhc3RMaW5lIDog
ZW5kTGluZSk7Cit9CisKK0dyaWRTcGFuIFJlbmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQoY29u
c3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikg
Y29uc3QKK3sKKyAgICBBU1NFUlQoaXM8UmVuZGVyR3JpZD4oY2hpbGQucGFyZW50KCkpKTsKKwor
ICAgIFJlbmRlckdyaWQqIHJlbmRlckdyaWQgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihjaGlsZC5w
YXJlbnQoKSk7CisgICAgLy8gfGRpcmVjdGlvbnwgaXMgc3BlY2lmaWVkIHJlbGF0aXZlIHRvIHRo
aXMgZ3JpZCwgc3dpdGNoIGl0IGlmIHxjaGlsZHwncyBkaXJlY3QgcGFyZW50IGdyaWQKKyAgICAv
LyBpcyB1c2luZyBhIGRpZmZlcmVudCB3cml0aW5nIG1vZGUuCisgICAgaWYgKHJlbmRlckdyaWQt
PmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkK
KyAgICAgICAgZGlyZWN0aW9uID0gdHJhbnNwb3NlZERpcmVjdGlvbihkaXJlY3Rpb24pOworICAg
IEdyaWRTcGFuIHNwYW4gPSBjaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IHJlbmRlckdy
aWQtPmdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY2hpbGQsIGRpcmVjdGlvbikgOiByZW5kZXJH
cmlkLT5jdXJyZW50R3JpZCgpLmdyaWRJdGVtU3BhbihjaGlsZCwgZGlyZWN0aW9uKTsKKworICAg
IHdoaWxlIChyZW5kZXJHcmlkICE9IHRoaXMpIHsKKyAgICAgICAgQVNTRVJUKGlzPFJlbmRlckdy
aWQ+KHJlbmRlckdyaWQtPnBhcmVudCgpKSk7CisgICAgICAgIFJlbmRlckdyaWQqIHBhcmVudCA9
IGRvd25jYXN0PFJlbmRlckdyaWQ+KHJlbmRlckdyaWQtPnBhcmVudCgpKTsKKworICAgICAgICBi
b29sIGlzU3ViZ3JpZCA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gcmVuZGVyR3JpZC0+aXNT
dWJncmlkQ29sdW1ucygpIDogcmVuZGVyR3JpZC0+aXNTdWJncmlkUm93cygpOworCisgICAgICAg
IGlmIChyZW5kZXJHcmlkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpICE9IHBhcmVudC0+aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAgIGRpcmVjdGlvbiA9IHRyYW5zcG9z
ZWREaXJlY3Rpb24oZGlyZWN0aW9uKTsKKworICAgICAgICBHcmlkU3BhbiBwYXJlbnRTcGFuID0g
cmVuZGVyR3JpZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgPyBwYXJlbnQtPmdyaWRTcGFuRm9y
T3V0T2ZGbG93Q2hpbGQoKnJlbmRlckdyaWQsIGRpcmVjdGlvbikgOiAgcGFyZW50LT5jdXJyZW50
R3JpZCgpLmdyaWRJdGVtU3BhbigqcmVuZGVyR3JpZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgaWYg
KGlzU3ViZ3JpZCkKKyAgICAgICAgICAgIHNwYW4udHJhbnNsYXRlVG8ocGFyZW50U3BhbiwgcGFy
ZW50LT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAhPSByZW5kZXJHcmlkLT5zdHls
ZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHNwYW4gPSBwYXJlbnRTcGFuOworICAgICAgICByZW5kZXJHcmlkID0gcGFyZW50OworICAgIH0K
KyAgICByZXR1cm4gc3BhbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggMjlhZTU5NDgwMDNlZTZkMmRkNDQzYjU2OTlk
Y2IyZDdjMTdiOTYyNi4uYjQ2ZWZkYTZiNTJmY2FiNDVkMWY0MTVlNDU5ZjA2Mjc0ZWIxOTJmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC04Miw2ICs4MiwxOSBAQCBw
dWJsaWM6CiAKICAgICBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIGNvbnRlbnRBbGlnbm1lbnQo
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAorICAgIC8vIENvbXB1dGVzIHRoZSBz
cGFuIHJlbGF0aXZlIHRvIHRoaXMgUmVuZGVyR3JpZCwgZXZlbiBpZiB0aGUgUmVuZGVyQm94IGlz
IGEgY2hpbGQKKyAgICAvLyBvZiBhIGRlc2NlbmRhbnQgc3ViZ3JpZC4KKyAgICBHcmlkU3BhbiBn
cmlkU3BhbkZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
bikgY29uc3Q7CisKKyAgICBib29sIGlzU3ViZ3JpZFJvd3MoKSBjb25zdDsKKyAgICBib29sIGlz
U3ViZ3JpZENvbHVtbnMoKSBjb25zdDsKKyAgICBib29sIGlzU3ViZ3JpZChHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24pIGNvbnN0OworCisgICAgY29uc3QgR3JpZCYgY3VycmVudEdyaWQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ3JpZDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAg
SXRlbVBvc2l0aW9uIHNlbGZBbGlnbm1lbnROb3JtYWxCZWhhdmlvcihjb25zdCBSZW5kZXJCb3gq
IGNoaWxkID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CkBAIC0xNTAsOCArMTYzLDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExvZ2ljYWxQb3NpdGlvbkZvckNoaWxkKFJlbmRlckJv
eCYpIGNvbnN0OwogICAgIHZvaWQgc2V0TG9naWNhbE9mZnNldEZvckNoaWxkKFJlbmRlckJveCYs
IEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
T2Zmc2V0Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
KSBjb25zdDsKLSAgICBHcmlkQXJlYSBjYWNoZWRHcmlkQXJlYShjb25zdCBSZW5kZXJCb3gmKSBj
b25zdDsKLSAgICBHcmlkU3BhbiBjYWNoZWRHcmlkU3Bhbihjb25zdCBSZW5kZXJCb3gmLCBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBncmlkQXJlYUJy
ZWFkdGhGb3JDaGlsZEluY2x1ZGluZ0FsaWdubWVudE9mZnNldHMoY29uc3QgUmVuZGVyQm94Jiwg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIApAQCAtMTkxLDYgKzIwMiw5IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIGFzcGVjdFJhdGlvUHJlZmVyc0lubGluZShjb25zdCBSZW5kZXJC
b3gmIGNoaWxkLCBib29sIGJsb2NrRmxvd0lzQ29sdW1uQXhpcyk7CiAKKyAgICBHcmlkU3BhbiBn
cmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbikgY29uc3Q7CisgICAgYm9vbCBjb21wdXRlR3JpZFNwYW5Gb3JPdXRPZkZsb3dD
aGlsZChjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGludCYsIGJv
b2wmLCBpbnQmLCBib29sJikgY29uc3Q7CisKICAgICBHcmlkIG1fZ3JpZDsKIAogICAgIEdyaWRU
cmFja1NpemluZ0FsZ29yaXRobSBtX3RyYWNrU2l6aW5nQWxnb3JpdGhtOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAppbmRleCBiN2ViZDFkOTYxZGU4ODI2ZmI4MzAz
MzA5YjhlNjM1MmYyMGY5ZWFiLi5lZTNiOTJmYzBmZjNiOTAwZGI5OWM5MjUyNzEwZWY3ZmUyMWI5
ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaApAQCAtNjUs
NyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBpbnRlZ2VyU3BhbigpIGNvbnN0CiAg
ICAgewotICAgICAgICBBU1NFUlQoaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSk7CisgICAgICAgIEFT
U0VSVChpc1RyYW5zbGF0ZWREZWZpbml0ZSgpIHx8IG1fdHlwZSA9PSBVbnRyYW5zbGF0ZWREZWZp
bml0ZSk7CiAgICAgICAgIHJldHVybiBtX2VuZExpbmUgLSBtX3N0YXJ0TGluZTsKICAgICB9CiAK
QEAgLTE0MSw2ICsxNDEsMzEgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9lbmRMaW5lID4g
MCk7CiAgICAgfQogCisgICAgLy8gTW92ZXMgdGhpcyBzcGFuIHRvIGJlIGluIHRoZSBzYW1lIGNv
b3JkaW5hdGUgc3BhY2UgYXMgfHBhcmVudHwuCisgICAgLy8gSWYgcmV2ZXJzZSBpcyBzcGVjaWZp
ZWQsIHRoZW4gc3dhcHMgdGhlIGRpcmVjdGlvbiB0byBoYW5kbGUgUlRML0xUUiBjaGFuZ2VzLgor
ICAgIHZvaWQgdHJhbnNsYXRlVG8oY29uc3QgR3JpZFNwYW4mIHBhcmVudCwgYm9vbCByZXZlcnNl
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGUpOwor
ICAgICAgICBBU1NFUlQocGFyZW50Lm1fdHlwZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGUpOworICAg
ICAgICBpZiAocmV2ZXJzZSkgeworICAgICAgICAgICAgaW50IHN0YXJ0ID0gbV9zdGFydExpbmU7
CisgICAgICAgICAgICBtX3N0YXJ0TGluZSA9IHBhcmVudC5pbnRlZ2VyU3BhbigpIC0gbV9lbmRM
aW5lICsgcGFyZW50LnN0YXJ0TGluZSgpOworICAgICAgICAgICAgbV9lbmRMaW5lID0gcGFyZW50
LmludGVnZXJTcGFuKCkgLSBzdGFydCArIHBhcmVudC5zdGFydExpbmUoKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG1fc3RhcnRMaW5lICs9IHBhcmVudC5tX3N0YXJ0TGluZTsKKyAg
ICAgICAgICAgIG1fZW5kTGluZSArPSBwYXJlbnQubV9zdGFydExpbmU7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIGNsYW1wKGludCBtYXgpCisgICAgeworICAgICAgICBBU1NFUlQobV90
eXBlICE9IEluZGVmaW5pdGUpOworICAgICAgICBtX3N0YXJ0TGluZSA9IHN0ZDo6bWF4KG1fc3Rh
cnRMaW5lLCAwKTsKKyAgICAgICAgbV9lbmRMaW5lID0gc3RkOjptYXgoc3RkOjptaW4obV9lbmRM
aW5lLCBtYXgpLCAxKTsKKyAgICAgICAgaWYgKG1fc3RhcnRMaW5lID49IG1fZW5kTGluZSkKKyAg
ICAgICAgICAgIG1fc3RhcnRMaW5lID0gbV9lbmRMaW5lIC0gMTsKKyAgICB9CisKIHByaXZhdGU6
CiAKICAgICBlbnVtIEdyaWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0
ZWREZWZpbml0ZSwgSW5kZWZpbml0ZX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCmluZGV4IDMzYzcwM2M1ZjA2
ZmE2NWEzZjZmYmRhMmRlNzZkZWEzZmI2MWI4ZGUuLjE2NDA3YzFiZGZlYTE0NWFiY2U3NDRkZDMx
NGY2ZjdkMTdmZmFmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
bmNsdWRlICJHcmlkQXJlYS5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2luY2x1ZGUgIlJl
bmRlckdyaWQuaCIKICNpbmNsdWRlIDxjc3RkbGliPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xNTIsNiArMTUzLDE4IEBAIHVuc2lnbmVkIE5hbWVkTGluZUNvbGxlY3Rpb246OmZpcnN0UG9z
aXRpb24oKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om1pbihmaXJzdEV4cGxpY2l0UG9zaXRpb24o
KSwgbV9pbXBsaWNpdE5hbWVkTGluZXNJbmRleGVzLT5hdChmaXJzdExpbmUpKTsKIH0KIAorLy8g
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1ncmlkLTIvI2luZGVmaW5pdGUtZ3JpZC1zcGFu
CitzdGF0aWMgYm9vbCBpc0luZGVmaW5pdGVTcGFuKEdyaWRQb3NpdGlvbiYgaW5pdGlhbFBvc2l0
aW9uLCBHcmlkUG9zaXRpb24mIGZpbmFsUG9zaXRpb24pCit7CisgICAgaWYgKCFpbml0aWFsUG9z
aXRpb24uaXNBdXRvKCkgJiYgIWZpbmFsUG9zaXRpb24uaXNBdXRvKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChpbml0aWFsUG9zaXRpb24uaXNTcGFuKCkgfHwgZmluYWxQb3Np
dGlvbi5pc1NwYW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHN0YXRpYyB2b2lkIGFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3Jp
ZFBvc2l0aW9uJiBpbml0aWFsUG9zaXRpb24sIEdyaWRQb3NpdGlvbiYgZmluYWxQb3NpdGlvbikK
IHsKICAgICBib29sIGlzRm9yQ29sdW1ucyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwpAQCAt
MTY4LDIxICsxODEsNTIgQEAgc3RhdGljIHZvaWQgYWRqdXN0R3JpZFBvc2l0aW9uc0Zyb21TdHls
ZShjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXoKICAgICAgICAgZmluYWxQ
b3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oMSwgU3RyaW5nKCkpOwogICAgIGlmIChmaW5hbFBvc2l0
aW9uLmlzQXV0bygpICYmIGluaXRpYWxQb3NpdGlvbi5pc1NwYW4oKSAmJiAhaW5pdGlhbFBvc2l0
aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSkKICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNl
dFNwYW5Qb3NpdGlvbigxLCBTdHJpbmcoKSk7CisKKyAgICBpZiAoaXNJbmRlZmluaXRlU3Bhbihp
bml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pICYmIGlzPFJlbmRlckdyaWQ+KGdyaWRJdGVt
KSAmJiBkb3duY2FzdDxSZW5kZXJHcmlkPihncmlkSXRlbSkuaXNTdWJncmlkKGRpcmVjdGlvbikp
IHsKKyAgICAgICAgLy8gSW5kZWZpbml0ZSBzcGFuIGZvciBhbiBpdGVtIHRoYXQgaXMgc3ViZ3Jp
ZGRlZCBpbiB0aGlzIGF4aXMuCisgICAgICAgIGludCBsaW5lQ291bnQgPSBkaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucyA/IGdyaWRJdGVtLnN0eWxlKCkuZ3JpZENvbHVtbnMoKS5zaXplKCkgOiBncmlk
SXRlbS5zdHlsZSgpLmdyaWRSb3dzKCkuc2l6ZSgpOworCisgICAgICAgIGlmIChpbml0aWFsUG9z
aXRpb24uaXNBdXRvKCkpIHsKKyAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIHBvc2l0aW9uIHRv
IHNwYW4gPGxpbmUgbmFtZXMgLSAxPgorICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldFNw
YW5Qb3NpdGlvbihzdGQ6Om1heCgxLCBsaW5lQ291bnQgLSAxKSwgIiIpOworICAgICAgICAgICAg
aWYgKGZpbmFsUG9zaXRpb24uaXNTcGFuKCkpCisgICAgICAgICAgICAgICAgZmluYWxQb3NpdGlv
bi5zZXRBdXRvUG9zaXRpb24oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNl
dCBmaW5hbCBwb3NpdGlvbiB0byBzcGFuIDxsaW5lIG5hbWVzIC0gMT4KKyAgICAgICAgICAgIGZp
bmFsUG9zaXRpb24uc2V0U3BhblBvc2l0aW9uKHN0ZDo6bWF4KDEsIGxpbmVDb3VudCAtIDEpLCAi
Iik7CisgICAgICAgICAgICBpZiAoaW5pdGlhbFBvc2l0aW9uLmlzU3BhbigpKQorICAgICAgICAg
ICAgICAgIGluaXRpYWxQb3NpdGlvbi5zZXRBdXRvUG9zaXRpb24oKTsKKyAgICAgICAgfQorICAg
IH0KIH0KIAotdW5zaWduZWQgR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1
bW5Db3VudChjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCB1bnNpZ25lZCBh
dXRvUmVwZWF0VHJhY2tzQ291bnQpCit1bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4
cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihzdGQ6Om1heChncmlkQ29udGFpbmVyU3R5
bGUuZ3JpZENvbHVtbnMoKS5zaXplKCkgKyBhdXRvUmVwZWF0VHJhY2tzQ291bnQsIGdyaWRDb250
YWluZXJTdHlsZS5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4
KCkpOworICAgIGJvb2wgc3BlY2lmaWVkU3ViZ3JpZCA9IGdyaWRDb250YWluZXIuc3R5bGUoKS5n
cmlkU3ViZ3JpZENvbHVtbnMoKTsKKyAgICBpZiAoc3BlY2lmaWVkU3ViZ3JpZCAmJiBncmlkQ29u
dGFpbmVyLmlzU3ViZ3JpZENvbHVtbnMoKSkgeworICAgICAgICBjb25zdCBSZW5kZXJHcmlkJiBw
YXJlbnQgPSAqZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZENvbnRhaW5lci5wYXJlbnQoKSk7Cisg
ICAgICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBncmlkQ29udGFpbmVy
LmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gcGFyZW50LmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyBGb3JDb2x1bW5zIDogRm9yUm93czsKKyAgICAgICAgcmV0dXJuIHBhcmVudC5ncmlk
U3BhbkZvckNoaWxkKGdyaWRDb250YWluZXIsIGRpcmVjdGlvbikuaW50ZWdlclNwYW4oKTsKKyAg
ICB9CisgICAgYXV0byBzcGVjaWZpZWRDb2x1bW5zID0gc3BlY2lmaWVkU3ViZ3JpZCA/IDAgOiBn
cmlkQ29udGFpbmVyLnN0eWxlKCkuZ3JpZENvbHVtbnMoKS5zaXplKCk7CisgICAgcmV0dXJuIHN0
ZDo6bWluPHVuc2lnbmVkPihzdGQ6Om1heChzcGVjaWZpZWRDb2x1bW5zICsgZ3JpZENvbnRhaW5l
ci5hdXRvUmVwZWF0Q291bnRGb3JEaXJlY3Rpb24oRm9yQ29sdW1ucyksIGdyaWRDb250YWluZXIu
c3R5bGUoKS5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4KCkp
OwogfQogCi11bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0Nv
dW50KGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIHVuc2lnbmVkIGF1dG9S
ZXBlYXRUcmFja3NDb3VudCkKK3Vuc2lnbmVkIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGlj
aXRHcmlkUm93Q291bnQoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lcikKIHsKLSAgICBy
ZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KHN0ZDo6bWF4KGdyaWRDb250YWluZXJTdHlsZS5ncmlk
Um93cygpLnNpemUoKSArIGF1dG9SZXBlYXRUcmFja3NDb3VudCwgZ3JpZENvbnRhaW5lclN0eWxl
Lm5hbWVkR3JpZEFyZWFSb3dDb3VudCgpKSwgR3JpZFBvc2l0aW9uOjptYXgoKSk7CisgICAgYm9v
bCBzcGVjaWZpZWRTdWJncmlkID0gZ3JpZENvbnRhaW5lci5zdHlsZSgpLmdyaWRTdWJncmlkUm93
cygpOworICAgIGlmIChzcGVjaWZpZWRTdWJncmlkICYmIGdyaWRDb250YWluZXIuaXNTdWJncmlk
Um93cygpKSB7CisgICAgICAgIGNvbnN0IFJlbmRlckdyaWQmIHBhcmVudCA9ICpkb3duY2FzdDxS
ZW5kZXJHcmlkPihncmlkQ29udGFpbmVyLnBhcmVudCgpKTsKKyAgICAgICAgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGdyaWRDb250YWluZXIuaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA9PSBwYXJlbnQuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEZvclJvd3MgOiBG
b3JDb2x1bW5zOworICAgICAgICByZXR1cm4gcGFyZW50LmdyaWRTcGFuRm9yQ2hpbGQoZ3JpZENv
bnRhaW5lciwgZGlyZWN0aW9uKS5pbnRlZ2VyU3BhbigpOworICAgIH0KKyAgICBhdXRvIHNwZWNp
ZmllZFJvd3MgPSBzcGVjaWZpZWRTdWJncmlkID8gMCA6IGdyaWRDb250YWluZXIuc3R5bGUoKS5n
cmlkUm93cygpLnNpemUoKTsKKyAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KHN0ZDo6bWF4
KHNwZWNpZmllZFJvd3MgKyBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlv
bihGb3JSb3dzKSwgZ3JpZENvbnRhaW5lci5zdHlsZSgpLm5hbWVkR3JpZEFyZWFSb3dDb3VudCgp
KSwgR3JpZFBvc2l0aW9uOjptYXgoKSk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBleHBsaWNpdEdy
aWRTaXplRm9yU2lkZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBHcmlk
UG9zaXRpb25TaWRlIHNpZGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3N0YXRp
YyB1bnNpZ25lZCBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShjb25zdCBSZW5kZXJHcmlkJiBncmlk
Q29udGFpbmVyLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7Ci0gICAgcmV0dXJuIGlzQ29sdW1u
U2lkZShzaWRlKSA/IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291
bnQoZ3JpZENvbnRhaW5lclN0eWxlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpIDogR3JpZFBvc2l0
aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChncmlkQ29udGFpbmVyU3R5bGUsIGF1
dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgcmV0dXJuIGlzQ29sdW1uU2lkZShzaWRlKSA/IEdy
aWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoZ3JpZENvbnRhaW5l
cikgOiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KGdyaWRDb250
YWluZXIpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgbG9va0FoZWFkRm9yTmFtZWRHcmlkTGluZShp
bnQgc3RhcnQsIHVuc2lnbmVkIG51bWJlck9mTGluZXMsIHVuc2lnbmVkIGdyaWRMYXN0TGluZSwg
TmFtZWRMaW5lQ29sbGVjdGlvbiYgbGluZXNDb2xsZWN0aW9uKQpAQCAtMjI0LDEyICsyNjgsMTIg
QEAgc3RhdGljIGludCBsb29rQmFja0Zvck5hbWVkR3JpZExpbmUoaW50IGVuZCwgdW5zaWduZWQg
bnVtYmVyT2ZMaW5lcywgaW50IGdyaWRMYXMKICAgICByZXR1cm4gc3RhcnQgKyAxOwogfQogCi1z
dGF0aWMgaW50IHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlv
biwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQp
CitzdGF0aWMgaW50IHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUoY29uc3Qg
UmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwg
R3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogewogICAgIEFTU0VSVCghcG9zaXRpb24ubmFtZWRHcmlk
TGluZSgpLmlzTnVsbCgpKTsKIAotICAgIHVuc2lnbmVkIGxhc3RMaW5lID0gZXhwbGljaXRHcmlk
U2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0eWxlLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291
bnQpOwotICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gbGluZXNDb2xsZWN0aW9uKGdyaWRDb250YWlu
ZXJTdHlsZSwgcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRl
KSwgbGFzdExpbmUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgdW5zaWduZWQgbGFzdExp
bmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyLCBzaWRlKTsKKyAgICBO
YW1lZExpbmVDb2xsZWN0aW9uIGxpbmVzQ29sbGVjdGlvbihncmlkQ29udGFpbmVyLnN0eWxlKCks
IHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RM
aW5lLCBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlvbihkaXJlY3Rpb25G
cm9tU2lkZShzaWRlKSkpOwogCiAgICAgaWYgKHBvc2l0aW9uLmlzUG9zaXRpdmUoKSkKICAgICAg
ICAgcmV0dXJuIGxvb2tBaGVhZEZvck5hbWVkR3JpZExpbmUoMCwgc3RkOjphYnMocG9zaXRpb24u
aW50ZWdlclBvc2l0aW9uKCkpLCBsYXN0TGluZSwgbGluZXNDb2xsZWN0aW9uKTsKQEAgLTI1MCwx
OSArMjk0LDE5IEBAIHN0YXRpYyBHcmlkU3BhbiBkZWZpbml0ZUdyaWRTcGFuV2l0aE5hbWVkTGlu
ZVNwYW5BZ2FpbnN0T3Bwb3NpdGUoaW50IG9wcG9zaXRlTGluCiAgICAgcmV0dXJuIEdyaWRTcGFu
Ojp1bnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKHN0YXJ0LCBlbmQpOwogfQogCi1zdGF0aWMg
R3JpZFNwYW4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0
aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGludCBvcHBvc2l0ZUxp
bmUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwg
dW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorc3RhdGljIEdyaWRTcGFuIHJlc29sdmVO
YW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJH
cmlkJiBncmlkQ29udGFpbmVyLCBpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBHcmlkUG9zaXRpb24m
IHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7CiAgICAgQVNTRVJUKHBvc2l0aW9u
LmlzU3BhbigpKTsKICAgICBBU1NFUlQoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwo
KSk7CiAgICAgLy8gTmVnYXRpdmUgcG9zaXRpb25zIGFyZSBub3QgYWxsb3dlZCBwZXIgdGhlIHNw
ZWNpZmljYXRpb24gYW5kIHNob3VsZCBoYXZlIGJlZW4gaGFuZGxlZCBkdXJpbmcgcGFyc2luZy4K
ICAgICBBU1NFUlQocG9zaXRpb24uc3BhblBvc2l0aW9uKCkgPiAwKTsKIAotICAgIHVuc2lnbmVk
IGxhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0eWxlLCBz
aWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gbGlu
ZXNDb2xsZWN0aW9uKGdyaWRDb250YWluZXJTdHlsZSwgcG9zaXRpb24ubmFtZWRHcmlkTGluZSgp
LCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGF1dG9SZXBlYXRUcmFja3NDb3Vu
dCk7CisgICAgdW5zaWduZWQgbGFzdExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlk
Q29udGFpbmVyLCBzaWRlKTsKKyAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGxpbmVzQ29sbGVjdGlv
bihncmlkQ29udGFpbmVyLnN0eWxlKCksIHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgZGlyZWN0
aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5lLCBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3Vu
dEZvckRpcmVjdGlvbihkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSkpOwogICAgIHJldHVybiBkZWZp
bml0ZUdyaWRTcGFuV2l0aE5hbWVkTGluZVNwYW5BZ2FpbnN0T3Bwb3NpdGUob3Bwb3NpdGVMaW5l
LCBwb3NpdGlvbiwgc2lkZSwgbGFzdExpbmUsIGxpbmVzQ29sbGVjdGlvbik7CiB9CiAKLXN0YXRp
YyBHcmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29u
c3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgaW50IG9wcG9zaXRlTGluZSwgY29u
c3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25l
ZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCitzdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3Np
dGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWlu
ZXIsIGludCBvcHBvc2l0ZUxpbmUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQ
b3NpdGlvblNpZGUgc2lkZSkKIHsKICAgICBpZiAocG9zaXRpb24uaXNBdXRvKCkpIHsKICAgICAg
ICAgaWYgKGlzU3RhcnRTaWRlKHNpZGUpKQpAQCAtMjc1LDcgKzMxOSw3IEBAIHN0YXRpYyBHcmlk
U3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgUmVu
ZGVyU3R5bGUmIGdyCiAKICAgICBpZiAoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwo
KSkgewogICAgICAgICAvLyBzcGFuIDIgJ2MnIC0+IHdlIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9w
cmlhdGUgZ3JpZCBsaW5lIGJlZm9yZSAvIGFmdGVyIG91ciBvcHBvc2l0ZSBwb3NpdGlvbi4KLSAg
ICAgICAgcmV0dXJuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQ
b3NpdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIG9wcG9zaXRlTGluZSwgcG9zaXRpb24sIHNpZGUs
IGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRHcmlk
TGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oZ3JpZENvbnRhaW5lciwgb3Bwb3Np
dGVMaW5lLCBwb3NpdGlvbiwgc2lkZSk7CiAgICAgfQogCiAgICAgLy8gJ3NwYW4gMScgaXMgY29u
dGFpbmVkIGluc2lkZSBhIHNpbmdsZSBncmlkIHRyYWNrIHJlZ2FyZGxlc3Mgb2YgdGhlIGRpcmVj
dGlvbi4KQEAgLTMxNSwyMSArMzU5LDIxIEBAIHVuc2lnbmVkIEdyaWRQb3NpdGlvbnNSZXNvbHZl
cjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbShjb25zdCBSZW5kZXJCb3gmIGdyaWRJCiAgICAg
cmV0dXJuIHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpOwogfQogCi1zdGF0aWMgaW50IHJlc29sdmVH
cmlkUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHls
ZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1
bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCitzdGF0aWMgaW50IHJlc29sdmVHcmlkUG9z
aXRpb25Gcm9tU3R5bGUoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwgY29uc3QgR3Jp
ZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogewogICAgIHN3aXRj
aCAocG9zaXRpb24udHlwZSgpKSB7CiAgICAgY2FzZSBFeHBsaWNpdFBvc2l0aW9uOiB7CiAgICAg
ICAgIEFTU0VSVChwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSk7CiAKICAgICAgICAgaWYgKCFw
b3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVz
b2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkZyb21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIHBv
c2l0aW9uLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgICAgICAgICAgcmV0dXJu
IHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUoZ3JpZENvbnRhaW5lciwgcG9z
aXRpb24sIHNpZGUpOwogCiAgICAgICAgIC8vIEhhbmRsZSA8aW50ZWdlcj4gZXhwbGljaXQgcG9z
aXRpb24uCiAgICAgICAgIGlmIChwb3NpdGlvbi5pc1Bvc2l0aXZlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCkgLSAxOwogCiAgICAgICAgIHVuc2lnbmVk
IHJlc29sdmVkUG9zaXRpb24gPSBzdGQ6OmFicyhwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSkg
LSAxOwotICAgICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlRyYWNrID0gZXhwbGljaXRHcmlkU2l6
ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0eWxlLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQp
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlRyYWNrID0gZXhwbGljaXRHcmlkU2l6ZUZv
clNpZGUoZ3JpZENvbnRhaW5lciwgc2lkZSk7CiAKICAgICAgICAgcmV0dXJuIGVuZE9mVHJhY2sg
LSByZXNvbHZlZFBvc2l0aW9uOwogICAgIH0KQEAgLTM0MSwxNCArMzg1LDE0IEBAIHN0YXRpYyBp
bnQgcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENv
bnRhaW5lclN0eWxlLCBjCiAgICAgICAgIFN0cmluZyBuYW1lZEdyaWRMaW5lID0gcG9zaXRpb24u
bmFtZWRHcmlkTGluZSgpOwogICAgICAgICBBU1NFUlQoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUo
KS5pc051bGwoKSk7CiAKLSAgICAgICAgdW5zaWduZWQgbGFzdExpbmUgPSBleHBsaWNpdEdyaWRT
aXplRm9yU2lkZShncmlkQ29udGFpbmVyU3R5bGUsIHNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3Vu
dCk7Ci0gICAgICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gaW1wbGljaXRMaW5lcyhncmlkQ29udGFp
bmVyU3R5bGUsIGltcGxpY2l0TmFtZWRHcmlkTGluZUZvclNpZGUobmFtZWRHcmlkTGluZSwgc2lk
ZSksIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgYXV0b1JlcGVhdFRyYWNrc0Nv
dW50KTsKKyAgICAgICAgdW5zaWduZWQgbGFzdExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lk
ZShncmlkQ29udGFpbmVyLCBzaWRlKTsKKyAgICAgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBpbXBs
aWNpdExpbmVzKGdyaWRDb250YWluZXIuc3R5bGUoKSwgaW1wbGljaXROYW1lZEdyaWRMaW5lRm9y
U2lkZShuYW1lZEdyaWRMaW5lLCBzaWRlKSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RM
aW5lLCBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlvbihkaXJlY3Rpb25G
cm9tU2lkZShzaWRlKSkpOwogICAgICAgICBpZiAoaW1wbGljaXRMaW5lcy5oYXNOYW1lZExpbmVz
KCkpCiAgICAgICAgICAgICByZXR1cm4gaW1wbGljaXRMaW5lcy5maXJzdFBvc2l0aW9uKCk7CiAK
ICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiB0aGVyZSBpcyBhIG5hbWVkIGxpbmUgd2l0aCB0aGUg
c3BlY2lmaWVkIG5hbWUsIGNvbnRyaWJ1dGVzIHRoZSBmaXJzdCBzdWNoIGxpbmUgdG8gdGhlIGdy
aWQKICAgICAgICAgLy8gaXRlbSdzIHBsYWNlbWVudC4KLSAgICAgICAgTmFtZWRMaW5lQ29sbGVj
dGlvbiBleHBsaWNpdExpbmVzKGdyaWRDb250YWluZXJTdHlsZSwgbmFtZWRHcmlkTGluZSwgZGly
ZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5lLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwor
ICAgICAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGV4cGxpY2l0TGluZXMoZ3JpZENvbnRhaW5lci5z
dHlsZSgpLCBuYW1lZEdyaWRMaW5lLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUs
IGdyaWRDb250YWluZXIuYXV0b1JlcGVhdENvdW50Rm9yRGlyZWN0aW9uKGRpcmVjdGlvbkZyb21T
aWRlKHNpZGUpKSk7CiAgICAgICAgIGlmIChleHBsaWNpdExpbmVzLmhhc05hbWVkTGluZXMoKSkK
ICAgICAgICAgICAgIHJldHVybiBleHBsaWNpdExpbmVzLmZpcnN0UG9zaXRpb24oKTsKIApAQCAt
MzY1LDggKzQwOSwxMSBAQCBzdGF0aWMgaW50IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgYwogICAgIHJldHVybiAwOwog
fQogCi1HcmlkU3BhbiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25z
RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGNvbnN0IFJl
bmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVu
c2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK0dyaWRTcGFuIEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94JiBncmlk
SXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKKyAgICBhdXRvKiBn
cmlkQ29udGFpbmVyID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZEl0ZW0uY29udGFpbmluZ0Js
b2NrKCkpOworICAgIEFTU0VSVChncmlkQ29udGFpbmVyKTsKKwogICAgIEdyaWRQb3NpdGlvbiBp
bml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb247CiAgICAgYWRqdXN0R3JpZFBvc2l0aW9uc0Zy
b21TdHlsZShncmlkSXRlbSwgZGlyZWN0aW9uLCBpbml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRp
b24pOwogCkBAIC0zNzksMTggKzQyNiwxOCBAQCBHcmlkU3BhbiBHcmlkUG9zaXRpb25zUmVzb2x2
ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJgogCiAg
ICAgaWYgKGluaXRpYWxQb3NpdGlvbi5zaG91bGRCZVJlc29sdmVkQWdhaW5zdE9wcG9zaXRlUG9z
aXRpb24oKSkgewogICAgICAgICAvLyBJbmZlciB0aGUgcG9zaXRpb24gZnJvbSB0aGUgZmluYWwg
cG9zaXRpb24gKCdhdXRvIC8gMScgb3IgJ3NwYW4gMiAvIDMnIGNhc2UpLgotICAgICAgICBhdXRv
IGVuZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXJTdHls
ZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAg
ICAgICByZXR1cm4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGdy
aWRDb250YWluZXJTdHlsZSwgZW5kTGluZSwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lkZSwg
YXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAgYXV0byBlbmRMaW5lID0gcmVzb2x2ZUdy
aWRQb3NpdGlvbkZyb21TdHlsZSgqZ3JpZENvbnRhaW5lciwgZmluYWxQb3NpdGlvbiwgZmluYWxT
aWRlKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQ
b3NpdGlvbigqZ3JpZENvbnRhaW5lciwgZW5kTGluZSwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFs
U2lkZSk7CiAgICAgfQogCiAgICAgaWYgKGZpbmFsUG9zaXRpb24uc2hvdWxkQmVSZXNvbHZlZEFn
YWluc3RPcHBvc2l0ZVBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gSW5mZXIgb3VyIHBvc2l0aW9u
IGZyb20gdGhlIGluaXRpYWwgcG9zaXRpb24gKCcxIC8gYXV0bycgb3IgJzMgLyBzcGFuIDInIGNh
c2UpLgotICAgICAgICBhdXRvIHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5
bGUoZ3JpZENvbnRhaW5lclN0eWxlLCBpbml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlLCBhdXRv
UmVwZWF0VHJhY2tzQ291bnQpOwotICAgICAgICByZXR1cm4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFn
YWluc3RPcHBvc2l0ZVBvc2l0aW9uKGdyaWRDb250YWluZXJTdHlsZSwgc3RhcnRMaW5lLCBmaW5h
bFBvc2l0aW9uLCBmaW5hbFNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIGF1
dG8gc3RhcnRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZSgqZ3JpZENvbnRhaW5l
ciwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lkZSk7CisgICAgICAgIHJldHVybiByZXNvbHZl
R3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKmdyaWRDb250YWluZXIsIHN0YXJ0
TGluZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlKTsKICAgICB9CiAKLSAgICBpbnQgc3RhcnRM
aW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIGlu
aXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAg
aW50IGVuZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXJT
dHlsZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwor
ICAgIGludCBzdGFydExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKCpncmlkQ29u
dGFpbmVyLCBpbml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlKTsKKyAgICBpbnQgZW5kTGluZSA9
IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoKmdyaWRDb250YWluZXIsIGZpbmFsUG9zaXRp
b24sIGZpbmFsU2lkZSk7CiAKICAgICBpZiAoc3RhcnRMaW5lID4gZW5kTGluZSkKICAgICAgICAg
c3RkOjpzd2FwKHN0YXJ0TGluZSwgZW5kTGluZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmgKaW5kZXggNjIzYjYyYzZj
MjQxZGMxMzAyNTA3OGQxNTFmNmE5OTBkNWRjMTA2ZS4uNzI0MTk1NzczNTQxM2RkMTFhMWJkNDAy
YWIyMmIwZGU1NjM3MmE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyaWRTcGFuOwogY2xhc3MgUmVuZGVyQm94OworY2xhc3Mg
UmVuZGVyR3JpZDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCiBlbnVtIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiB7CkBAIC03Myw5ICs3NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgR3JpZFBvc2l0
aW9uU2lkZSBpbml0aWFsUG9zaXRpb25TaWRlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CiAg
ICAgc3RhdGljIEdyaWRQb3NpdGlvblNpZGUgZmluYWxQb3NpdGlvblNpZGUoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uKTsKICAgICBzdGF0aWMgdW5zaWduZWQgc3BhblNpemVGb3JBdXRvUGxhY2Vk
SXRlbShjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOwotICAgIHN0
YXRpYyBHcmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgdW5zaWdu
ZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICBzdGF0aWMgdW5zaWduZWQgZXhwbGljaXRH
cmlkQ29sdW1uQ291bnQoY29uc3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCBhdXRvUmVwZWF0Q29s
dW1uc0NvdW50KTsKLSAgICBzdGF0aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkUm93Q291bnQoY29u
c3QgUmVuZGVyU3R5bGUmLCB1bnNpZ25lZCBhdXRvUmVwZWF0Um93c0NvdW50KTsKKyAgICBzdGF0
aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94
JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgZXhwbGlj
aXRHcmlkQ29sdW1uQ291bnQoY29uc3QgUmVuZGVyR3JpZCYpOworICAgIHN0YXRpYyB1bnNpZ25l
ZCBleHBsaWNpdEdyaWRSb3dDb3VudChjb25zdCBSZW5kZXJHcmlkJik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAyYjI2NGE4
MTlkNDFmNGQ1ODgwYjRhNWIzNTY3ODMwZWIxMjc1NDZmLi5jNTA0M2ZkMDE4MTI4YjVjNWE4ZTFj
MWYyY2FlNmVkNmYxNmE0YTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wMi0wMyAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUu
Y29tPgorCisgICAgICAgIEluaGVyaXQgdHJhY2sgY291bnQgZnJvbSBwYXJlbnQgZ3JpZCBmb3Ig
c3ViZ3JpZGRlZCBheGVzIGFuZCBjbGFtcCBpdGVtIHBsYWNlbWVudCB0byB0aGF0IGV4cGxpY2l0
IGdyaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0IGNoYW5nZXMgdG8gbWF0Y2ggbGF0ZXN0IHNwZWMsIHN1Ym1pdHRlZCB1cHN0cmVhbSBhcyBo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9wdWxsLzMyNjI5CisKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1l
cy0wMDItZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUtZXhwZWN0ZWQuaHRtbDoKKwogMjAyMi0wMi0w
MiAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBwYXJzaW5nICdzdWJncmlkJyBpbiBncmlkLXRlbXBsYXRlLWNvbHVtbnMvcm93
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWwKaW5kZXggMDRjNTgzOTU5NmM5ZTViMDll
Y2NlMjg0YzhjYzc1N2I2ZDFlZjg3Yy4uMjM5OTMyOGJlY2M0ZTU1NjI1MmRiNWFlN2NiMDA0ZTkz
ZDhhNDhkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi1leHBlY3RlZC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMTQsNyArMTQs
NyBAQCBodG1sLGJvZHkgewogCiAuZ3JpZCB7CiAgIGRpc3BsYXk6IGdyaWQ7Ci0gIGdyaWQ6IGF1
dG8gLyBbYV0gNTBweCA1MHB4IFthXSA1MHB4IDUwcHggW2FdOworICBncmlkOiBhdXRvIC8gW2Fd
IDUwcHggNDBweCBbYV0gMTBweCA1MHB4IFthXTsKICAgcGFkZGluZzogMjBweCAxMHB4OwogfQog
CkBAIC0zMiw3ICszMiw3IEBAIHggeyBiYWNrZ3JvdW5kOiBncmV5OyB9CiAKIDxkaXYgY2xhc3M9
ImdyaWQiPgogICA8ZGl2IGNsYXNzPSJzdWJncmlkIj4KLSAgICA8eCBzdHlsZT0iZ3JpZC1jb2x1
bW46IDEgLyAzIj48L3g+CisgICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAzIC8gNCI+PC94Pgog
ICA8L2Rpdj4KIDwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1LWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1LWV4cGVjdGVkLmh0bWwKaW5kZXgg
NGM3ZjRiNTBmZDE2NjAxNDgwZTMyOTI0ZTFlYWFhNzZjODFiNzBjNi4uY2ZlMThkMWIyNmVkNmVi
NzM1NWE3ZTAwMjlmM2U3Zjc2ZjU2NmQ2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVz
LTAwNS1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUtZXhwZWN0ZWQu
aHRtbApAQCAtMTE1LDcgKzExNSw3IEBAIHggewogPGRpdiBzdHlsZT0iZGlzcGxheTpncmlkOyB3
aWR0aDo1MDBweDsgZ3JpZC1hdXRvLWNvbHVtbnM6IDUwcHg7Ij4KIDxpPjwvaT48aT48L2k+PGk+
PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT4KICAg
PGRpdiBjbGFzcz0ic3ViZ3JpZDIiPgotICAgIDx4IHN0eWxlPSJncmlkLWNvbHVtbjogc3BhbiA0
IC8gMTEiPng8L3g+CisgICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiBzcGFuIDMgLyAxMSI+eDwv
eD4KICAgPC9kaXY+CiA8L2Rpdj4KIApAQCAtMTI5LDcgKzEyOSw3IEBAIHggewogPGRpdiBzdHls
ZT0iZGlzcGxheTpncmlkOyBncmlkOiBhdXRvIC8gcmVwZWF0KDEwLCA1MHB4KSByZXBlYXQoMTAs
IFthXSA1MHB4KSBbYV0iPgogPGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48
L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPgogICA8ZGl2IHN0eWxlPSJkaXNwbGF5Omdy
aWQ7IGdyaWQ6YXV0by9zdWJncmlkOyBncmlkLWNvbHVtbjogc3BhbiAxMDsgZ3JpZC1yb3c6MiI+
Ci0gICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMTEiPng8L3g+CisgICAgPHggc3R5bGU9
ImdyaWQtY29sdW1uOiAxMCAvIDExIj54PC94PgogICA8L2Rpdj4KIDwvZGl2PgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRlLWNvbXB1dGVkLW5vZ3JpZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRlLWNvbXB1dGVk
LW5vZ3JpZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2N2Zi
MWMyMTI1MTc4NGZiMGM4MmI3MzMyM2ZiNGRkYjA4NWIyOTguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1w
bGF0ZS1jb21wdXRlZC1ub2dyaWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzEg
KzAsMCBAQAotCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3Vi
Z3JpZCBbYV0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVl
IGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlM
IFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gW2JdJyBh
c3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdy
aWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVy
dHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gW2JdIFtjXScg
YXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYl0gW2JdIFtjXScgaXMgYSBzdXBwb3J0ZWQgdmFs
dWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZB
SUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYiBj
IGRdIFtlIGZdIFtlIGZdIFtnXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYiBjIGRdIFtl
IGZdIFtlIGZdIFtnXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29s
dW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0
ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthIGIgY10gW2RdIFtlIGZdJyBhc3NlcnRfdHJ1ZTog
J3N1YmdyaWQgW2EgYiBjXSBbZF0gW2UgZl0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlk
LXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5
IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBb
Y10pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdKScgaXMgYSBz
dXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBn
b3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJn
cmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2ddIFtoIGldJyBhc3NlcnRfdHJ1ZTogJ3N1Ymdy
aWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVl
IGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlM
IFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0
KGF1dG8tZmlsbCwgW2NdKSBbZ10gW2ggaV0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gcmVw
ZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBn
cmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3Bl
cnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0
by1maWxsLCBbY10pIFtnXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRv
LWZpbGwsIFtjXSkgW2ddJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBs
YXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10p
IFtnIGhdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBb
Y10pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
LiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNv
bHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10pJyBhc3Nl
cnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10pJyBpcyBhIHN1
cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdv
dCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1Ymdy
aWQgcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0
KGF1dG8tZmlsbCwgW2MgZF0pJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0
ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRl
bXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtn
XSBbaCBpXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBb
Z10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMu
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnXSBbaCBp
XScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkgW2dd
IFtoIGldJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBl
eHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVt
bnMgdmFsdWUgJ3N1YmdyaWQgW2EgYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnXScgYXNz
ZXJ0X3RydWU6ICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZ10nIGlz
IGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRy
dWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAn
c3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZyBoXScgYXNzZXJ0X3Ry
dWU6ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnIGhdJyBpcyBh
IHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVl
IGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1
YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSknIGFzc2VydF90cnVlOiAnc3Vi
Z3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKScgaXMgYSBzdXBwb3J0ZWQgdmFs
dWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZB
SUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChh
dXRvLWZpbGwsIFtjXSBbZF0pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmls
bCwgW2NdIFtkXSknIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVt
bnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUt
Y29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKSBbZ10gW2gg
aV0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKSBbZ10g
W2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4
cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1u
cyB2YWx1ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2ddIFtoIGld
JyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtn
XSBbaCBpXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4g
ZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zIHZhbHVlICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtnXScg
YXNzZXJ0X3RydWU6ICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtn
XScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0
ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZh
bHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2cgaF0nIGFz
c2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtn
IGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBl
Y3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMg
dmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKScgYXNzZXJ0
X3RydWU6ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSknIGlzIGEg
c3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUg
Z290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3Vi
Z3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQg
cmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdy
aWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVy
dHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGws
IFtjXSBbZCBlXSkgW2ddIFtoIGldJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8t
ZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlk
LXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5
IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmls
bCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gcmVwZWF0
KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZv
ciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFBy
b3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQo
YXV0by1maWxsLCBbY10gW2QgZV0pIFtnXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthIGJdIHJl
cGVhdChhdXRvLWZpbGwsIFtjXSBbZCBlXSkgW2ddJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3Ig
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9w
ZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQo
YXV0by1maWxsLCBbY10gW2QgZV0pIFtnIGhdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFti
XSByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1
ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJ
TCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSBy
ZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFti
XSByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3Ig
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRlLWNvbXB1dGVkLW5vZ3JpZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93cGUvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRlLWNvbXB1dGVk
LW5vZ3JpZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2N2Zi
MWMyMTI1MTc4NGZiMGM4MmI3MzMyM2ZiNGRkYjA4NWIyOTguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1w
bGF0ZS1jb21wdXRlZC1ub2dyaWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzEg
KzAsMCBAQAotCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3Vi
Z3JpZCBbYV0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVl
IGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlM
IFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gW2JdJyBh
c3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdy
aWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVy
dHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gW2JdIFtjXScg
YXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYl0gW2JdIFtjXScgaXMgYSBzdXBwb3J0ZWQgdmFs
dWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZB
SUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYiBj
IGRdIFtlIGZdIFtlIGZdIFtnXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYiBjIGRdIFtl
IGZdIFtlIGZdIFtnXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29s
dW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0
ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthIGIgY10gW2RdIFtlIGZdJyBhc3NlcnRfdHJ1ZTog
J3N1YmdyaWQgW2EgYiBjXSBbZF0gW2UgZl0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlk
LXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5
IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBb
Y10pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdKScgaXMgYSBz
dXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBn
b3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJn
cmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2ddIFtoIGldJyBhc3NlcnRfdHJ1ZTogJ3N1Ymdy
aWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVl
IGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlM
IFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0
KGF1dG8tZmlsbCwgW2NdKSBbZ10gW2ggaV0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gcmVw
ZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBn
cmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3Bl
cnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0
by1maWxsLCBbY10pIFtnXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRv
LWZpbGwsIFtjXSkgW2ddJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBs
YXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10p
IFtnIGhdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBb
Y10pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
LiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNv
bHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10pJyBhc3Nl
cnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10pJyBpcyBhIHN1
cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdv
dCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1Ymdy
aWQgcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0
KGF1dG8tZmlsbCwgW2MgZF0pJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0
ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRl
bXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtn
XSBbaCBpXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBb
Z10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMu
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnXSBbaCBp
XScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkgW2dd
IFtoIGldJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBl
eHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVt
bnMgdmFsdWUgJ3N1YmdyaWQgW2EgYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnXScgYXNz
ZXJ0X3RydWU6ICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZ10nIGlz
IGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRy
dWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAn
c3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZyBoXScgYXNzZXJ0X3Ry
dWU6ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnIGhdJyBpcyBh
IHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVl
IGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1
YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSknIGFzc2VydF90cnVlOiAnc3Vi
Z3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKScgaXMgYSBzdXBwb3J0ZWQgdmFs
dWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZB
SUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChh
dXRvLWZpbGwsIFtjXSBbZF0pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmls
bCwgW2NdIFtkXSknIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVt
bnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUt
Y29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKSBbZ10gW2gg
aV0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKSBbZ10g
W2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4
cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1u
cyB2YWx1ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2ddIFtoIGld
JyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtn
XSBbaCBpXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4g
ZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zIHZhbHVlICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtnXScg
YXNzZXJ0X3RydWU6ICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtn
XScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0
ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZh
bHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2cgaF0nIGFz
c2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtn
IGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBl
Y3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMg
dmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKScgYXNzZXJ0
X3RydWU6ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSknIGlzIGEg
c3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUg
Z290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3Vi
Z3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQg
cmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdy
aWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVy
dHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGws
IFtjXSBbZCBlXSkgW2ddIFtoIGldJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8t
ZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlk
LXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5
IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmls
bCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gcmVwZWF0
KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZv
ciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFBy
b3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQo
YXV0by1maWxsLCBbY10gW2QgZV0pIFtnXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthIGJdIHJl
cGVhdChhdXRvLWZpbGwsIFtjXSBbZCBlXSkgW2ddJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3Ig
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9w
ZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQo
YXV0by1maWxsLCBbY10gW2QgZV0pIFtnIGhdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFti
XSByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1
ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJ
TCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSBy
ZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFti
XSByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3Ig
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451002</attachid>
            <date>2022-02-05 15:18:37 -0800</date>
            <delta_ts>2022-02-14 15:15:50 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>ews-patch</filename>
            <type>text/plain</type>
            <size>122218</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjN2I0YjVhMjhkMjYuLjI2ZThhMTBhMTUxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIyLTAyLTAyICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHBhcnNpbmcgJ3N1YmdyaWQnIGluIGdyaWQtdGVtcGxhdGUt
Y29sdW1ucy9yb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNjA1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZWQgVGVzdEV4cGVjdGF0aW9ucyB0byBsaXN0IGFsbCB0aGUgc3ViZ3JpZCB0ZXN0
cyBpbmRpdmlkdWFsbHksIG5vdyB0aGF0IHdlIHBhc3MgYSBmZXcuCisKKyAgICAgICAgKiBUZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIyLTAyLTAzICBGcsOpZMOpcmljIFdhbmcgIDxmd2FuZ0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIG51bGwgcHRyIGRlcmVmIGluIFJlbmRlclRyZWVCdWlsZGVyOjpC
bG9jazo6YXR0YWNoSWdub3JpbmdDb250aW51YXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDQw
MjQ2NmU0OWYwZS4uYzAzNTljM2I5Mzk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0MjEsNiAr
MTQyMSw1NCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9t
YXNvbnJ5L3RlbnRhdGl2ZS9tYXNvbnJ5LW9yZGVyLTAwMQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvbWFzb25yeS90ZW50YXRpdmUvbWFzb25yeS1zdWJncmlk
LTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9tYXNvbnJ5L3RlbnRhdGl2ZS9tYXNvbnJ5LXN1YmdyaWQtMDAy
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9hYnMtcG9zLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL2Ficy1wb3MtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvYWJzLXBvcy0wMDQuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWdyaWQvc3ViZ3JpZC9iYXNlbGluZS0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlk
LWdhcC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0w
MDQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDUuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3Vi
Z3JpZC9ncmlkLWdhcC0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDcuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC0wMDguaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9n
cmlkLWdhcC0wMDkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdhcC1sYXJnZXItMDAxLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1nYXAtbGFyZ2VyLTAwMi5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9z
dWJncmlkL2dyaWQtZ2FwLW5vcm1hbC0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLWdh
cC1zbWFsbGVyLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2l0ZW0tcGVyY2VudGFnZS1oZWln
aHQtMDAxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDEuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFt
ZXMtMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDQuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFt
ZXMtMDA2Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDcuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29ydGhvZ29u
YWwtd3JpdGluZy1tb2RlLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29ydGhvZ29uYWwtd3Jp
dGluZy1tb2RlLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29ydGhvZ29uYWwtd3JpdGluZy1t
b2RlLTAwMy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL29ydGhvZ29uYWwtd3JpdGluZy1tb2RlLTAw
NC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3BhcmVudC1yZXBlYXQtYXV0by1maXQtMDAxLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvcGFyZW50LXJlcGVhdC1hdXRvLWZpdC0wMDIuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9yZXBlYXQtYXV0by1maWxsLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3Jl
cGVhdC1hdXRvLWZpbGwtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvcmVwZWF0LWF1dG8tZmls
bC0wMDMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9yZXBlYXQtYXV0by1maWxsLTAwNC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZ3JpZC9zdWJncmlkL3JlcGVhdC1hdXRvLWZpbGwtMDA1Lmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1Ymdy
aWQvcmVwZWF0LWF1dG8tZmlsbC0wMDYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQoraW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9yZXBlYXQtYXV0
by1maWxsLTAwNy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL3JlcGVhdC1hdXRvLWZpbGwtMDA4Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvc3ViZ3JpZC1pdGVtLWJsb2NrLXNpemUtMDAxLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvc3ViZ3JpZC1tYnAtb3ZlcmZsb3ctMDAxLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1
YmdyaWQvc3ViZ3JpZC1tYnAtb3ZlcmZsb3ctMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvc3Vi
Z3JpZC1tYnAtb3ZlcmZsb3ctMDAzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvc3ViZ3JpZC1tYnAt
b3ZlcmZsb3ctMDA0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1zdWJncmlkZGVkLWF4aXMt
YXV0by1yZXBlYXRlci1jcmFzaC0wMDEuaHRtbCBbIENyYXNoIF0KK2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC1zdWJncmlkZGVkLWF4aXMt
YXV0by1yZXBlYXRlci1jcmFzaC0wMDIuaHRtbCBbIENyYXNoIF0KKwogd2Via2l0Lm9yZy9iLzE0
OTg5MCBmYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLXNob3J0aGFuZHMtc3R5bGUtZm9ybWF0Lmh0
bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xOTE1MDggZmFzdC9jc3MtZ3JpZC1sYXlvdXQv
Y3Jhc2gtbGFyZ2UtcG9zaXRpb25zLmh0bWwgWyBTa2lwIF0KIApAQCAtNDI2Miw3ICs0MzEwLDYg
QEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L21h
bnVhbC9zaGFkb3dzL2NhbnZhc19zaGFkb3cKIAogIyBDU1MgTWFzb25yeSBMYXlvdXQgbm90IHN1
cHBvcnRlZC4KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL21h
c29ucnkudGVudGF0aXZlIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjAyMTE1IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8yMDQ1ODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvYW5pbWF0aW9uL2dyaWQtdGVtcGxhdGUtY29sdW1ucy0wMDEuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzIwNDU4MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9hbmltYXRpb24vZ3JpZC10ZW1wbGF0ZS1yb3dzLTAwMS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjA5NDYwIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2Fic3Bvcy9kZXNjZW5kYW50LXN0YXRpYy1wb3Np
dGlvbi0wMDEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKaW5kZXggNDM3OTliOTIzMjgzLi5jNTA0M2ZkMDE4MTIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIyLTAyLTAzICBNYXR0IFdvb2Ryb3cg
IDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgSW5oZXJpdCB0cmFjayBjb3VudCBm
cm9tIHBhcmVudCBncmlkIGZvciBzdWJncmlkZGVkIGF4ZXMgYW5kIGNsYW1wIGl0ZW0gcGxhY2Vt
ZW50IHRvIHRoYXQgZXhwbGljaXQgZ3JpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNjEyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3QgY2hhbmdlcyB0byBtYXRjaCBsYXRlc3Qgc3BlYywgc3Vi
bWl0dGVkIHVwc3RyZWFtIGFzIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0L3B1bGwvMzI2MjkKKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS1leHBlY3Rl
ZC5odG1sOgorCisyMDIyLTAyLTAyICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHBhcnNpbmcgJ3N1YmdyaWQnIGluIGdyaWQt
dGVtcGxhdGUtY29sdW1ucy9yb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjA1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcG9ydGVkIGxhc3Rlc3Qgc3ViZ3JpZCB0ZXN0cy4KKworICAgICAgICAq
IHJlc291cmNlcy9pbXBvcnQtZXhwZWN0YXRpb25zLmpzb246CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtdGVtcGxhdGUtY29tcHV0ZWQtbm9n
cmlkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1n
cmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS1pbnZhbGlkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtdGVt
cGxhdGUtaW52YWxpZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS12YWxpZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9n
cmlkLXRlbXBsYXRlLXZhbGlkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC93M2MtaW1wb3J0LmxvZzoKKwogMjAyMi0wMi0wMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBBYm9y
dFNpZ25hbC50aW1lb3V0KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS1jb21w
dXRlZC1ub2dyaWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRlLWNvbXB1dGVk
LW5vZ3JpZC1leHBlY3RlZC50eHQKaW5kZXggYWFhNjdlYzMzOTZlLi42NjAyYzc0ZDNhZTIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS1jb21wdXRlZC1ub2dyaWQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS1jb21wdXRlZC1ub2dyaWQtZXhwZWN0ZWQu
dHh0CkBAIC0xLDMxICsxLDMxIEBACiAKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zIHZhbHVlICdzdWJncmlkIFthXScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgW2FdJyBhc3NlcnRf
dHJ1ZTogJ3N1YmdyaWQgW2FdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0
ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRl
bXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXScgY29tcHV0ZXMgdG8gJ3N1Ymdy
aWQgW2FdIFtiXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYl0nIGlzIGEgc3VwcG9ydGVk
IHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNl
Ci1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0g
W2JdIFtiXSBbY10nIGNvbXB1dGVzIHRvICdzdWJncmlkIFthXSBbYl0gW2JdIFtjXScgYXNzZXJ0
X3RydWU6ICdzdWJncmlkIFthXSBbYl0gW2JdIFtjXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9y
IGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJv
cGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYiBjIGRdIFtl
IGZdIFtlIGZdIFtnXScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgW2FdIFtiIGMgZF0gW2UgZl0gW2Ug
Zl0gW2ddJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiIGMgZF0gW2UgZl0gW2UgZl0gW2dd
JyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3Rl
ZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFs
dWUgJ3N1YmdyaWQgW2EgYiBjXSBbZF0gW2UgZl0nIGNvbXB1dGVzIHRvICdzdWJncmlkIFthIGIg
Y10gW2RdIFtlIGZdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2EgYiBjXSBbZF0gW2UgZl0nIGlz
IGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRy
dWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAn
c3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10pJyBjb21wdXRlcyB0byAnc3ViZ3JpZCByZXBl
YXQoYXV0by1maWxsLCBbY10pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmls
bCwgW2NdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4g
ZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2ddIFtoIGldJyBjb21w
dXRlcyB0byAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10pIFtnXSBbaCBpXScgYXNzZXJ0
X3RydWU6ICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2ddIFtoIGldJyBpcyBhIHN1
cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdv
dCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1Ymdy
aWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2ddIFtoIGldJyBjb21wdXRlcyB0byAnc3Vi
Z3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10gW2ggaV0nIGFzc2VydF90cnVlOiAn
c3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9y
dGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZh
bHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBb
YSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10pIFtnXScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgW2Eg
Yl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYSBi
XSByZXBlYXQoYXV0by1maWxsLCBbY10pIFtnXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdy
aWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVy
dHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1
dG8tZmlsbCwgW2NdKSBbZyBoXScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQo
YXV0by1maWxsLCBbY10pIFtnIGhdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBl
YXQoYXV0by1maWxsLCBbY10pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10
ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBn
cmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1m
aWxsLCBbY10pJyBjb21wdXRlcyB0byAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGws
IFtjXSknIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtj
XSknIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVj
dGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2
YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbYyBkXSknIGNvbXB1dGVzIHRvICdzdWJn
cmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIHJlcGVh
dChhdXRvLWZpbGwsIFtjIGRdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxh
dGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10
ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBb
Z10gW2ggaV0nIGNvbXB1dGVzIHRvICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBb
Z10gW2ggaV0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkg
W2ddIFtoIGldJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
LiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNv
bHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZ10gW2gg
aV0nIGNvbXB1dGVzIHRvICdzdWJncmlkIFthXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkgW2dd
IFtoIGldJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRd
KSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVt
bnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUt
Y29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkgW2dd
JyBjb21wdXRlcyB0byAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkgW2dd
JyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2EgYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtn
XScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0
ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZh
bHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnIGhdJyBjb21w
dXRlcyB0byAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZyBoXScg
YXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtn
IGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBl
Y3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMg
dmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSknIGNvbXB1dGVz
IHRvICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pJyBhc3NlcnRfdHJ1
ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSknIGlzIGEgc3VwcG9y
dGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZh
bHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBy
ZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgcmVwZWF0KGF1
dG8tZmlsbCwgW2NdIFtkXSknIGFzc2VydF90cnVlOiAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxs
LCBbY10gW2RdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1u
cy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtnXSBbaCBp
XScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2ddIFto
IGldJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2dd
IFtoIGldJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBl
eHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVt
bnMgdmFsdWUgJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtnXSBbaCBp
XScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtn
XSBbaCBpXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSByZXBlYXQoYXV0by1maWxsLCBbY10g
W2RdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNv
bHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxh
dGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2Rd
KSBbZ10nIGNvbXB1dGVzIHRvICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBb
ZF0pIFtnXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtj
XSBbZF0pIFtnXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1u
cy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkg
W2cgaF0nIGNvbXB1dGVzIHRvICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2Nd
IFtkXSkgW2cgaF0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZp
bGwsIFtjXSBbZF0pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0
ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRl
bXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBb
Y10gW2RdKScgY29tcHV0ZXMgdG8gJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBb
Y10gW2RdKScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwg
W2NdIFtkXSknIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMu
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pJyBjb21wdXRl
cyB0byAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pJyBhc3NlcnRfdHJ1ZTog
J3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKScgaXMgYSBzdXBwb3J0ZWQgdmFs
dWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZB
SUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChh
dXRvLWZpbGwsIFtjXSBbZCBlXSkgW2ddIFtoIGldJyBjb21wdXRlcyB0byAnc3ViZ3JpZCByZXBl
YXQoYXV0by1maWxsLCBbY10gW2QgZV0pIFtnXSBbaCBpXScgYXNzZXJ0X3RydWU6ICdzdWJncmlk
IHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZCBlXSkgW2ddIFtoIGldJyBpcyBhIHN1cHBvcnRlZCB2
YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQot
RkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIHJl
cGVhdChhdXRvLWZpbGwsIFtjXSBbZCBlXSkgW2ddIFtoIGldJyBjb21wdXRlcyB0byAnc3ViZ3Jp
ZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0nIGFzc2VydF90cnVl
OiAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0nIGlz
IGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRy
dWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAn
c3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pIFtnXScgY29tcHV0ZXMg
dG8gJ3N1YmdyaWQgW2EgYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10nIGFzc2Vy
dF90cnVlOiAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pIFtnXScg
aXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQg
dHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVl
ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZyBoXScgY29t
cHV0ZXMgdG8gJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pIFtn
IGhdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10g
W2QgZV0pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRl
LWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2Qg
ZV0pJyBjb21wdXRlcyB0byAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBb
ZCBlXSknIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtj
XSBbZCBlXSknIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMu
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0nCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gW2JdJworUEFTUyBQcm9wZXJ0eSBncmlkLXRlbXBsYXRl
LWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSBbYl0gW2NdJworUEFTUyBQcm9wZXJ0eSBn
cmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiIGMgZF0gW2UgZl0gW2Ug
Zl0gW2ddJworUEFTUyBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1Ymdy
aWQgW2EgYiBjXSBbZF0gW2UgZl0nCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1u
cyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10pJworUEFTUyBQcm9wZXJ0eSBn
cmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2Nd
KSBbZ10gW2ggaV0nCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAn
c3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10gW2ggaV0nCitQQVNTIFByb3Bl
cnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0
by1maWxsLCBbY10pIFtnXScKK1BBU1MgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZh
bHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZyBoXScKK1BBU1Mg
UHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gcmVw
ZWF0KGF1dG8tZmlsbCwgW2NdKScKK1BBU1MgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
IHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKScKK1BBU1MgUHJvcGVydHkg
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtj
IGRdKSBbZ10gW2ggaV0nCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1
ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnXSBbaCBpXScKK1BBU1Mg
UHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthIGJdIHJlcGVh
dChhdXRvLWZpbGwsIFtjIGRdKSBbZ10nCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZyBo
XScKK1BBU1MgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFth
XSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pJworUEFTUyBQcm9wZXJ0eSBncmlkLXRlbXBs
YXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSknCitQ
QVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQo
YXV0by1maWxsLCBbY10gW2RdKSBbZ10gW2ggaV0nCitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxh
dGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkg
W2ddIFtoIGldJworUEFTUyBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1
YmdyaWQgW2EgYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2ddJworUEFTUyBQcm9wZXJ0
eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0
by1maWxsLCBbY10gW2RdKSBbZyBoXScKK1BBU1MgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSknCitQ
QVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQo
YXV0by1maWxsLCBbY10gW2QgZV0pJworUEFTUyBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVt
bnMgdmFsdWUgJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0n
CitQQVNTIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0g
cmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2ggaV0nCitQQVNTIFByb3BlcnR5IGdy
aWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxs
LCBbY10gW2QgZV0pIFtnXScKK1BBU1MgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZh
bHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZyBoXScK
K1BBU1MgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBb
Yl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKScKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9n
cmlkLXRlbXBsYXRlLWludmFsaWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRl
LWludmFsaWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uMjAwYWIwOTQ3NzVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBs
YXRlLWludmFsaWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKKworUEFTUyBlLnN0eWxl
WydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIHN1YmdyaWQiIHNob3VsZCBub3Qgc2V0
IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9
ICJzdWJncmlkIG5vbmUiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBl
LnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIDFweCIgc2hvdWxkIG5vdCBz
ZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtcm93cydd
ID0gInN1YmdyaWQgW2FdIDFweCIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQ
QVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtcm93cyddID0gInN1YmdyaWQgcmVwZWF0KGF1dG8t
ZmlsbCwgMXB4KSIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5
bGVbJ2dyaWQtdGVtcGxhdGUtcm93cyddID0gInN1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgbGlu
ZSkiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlk
LXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIHJlcGVhdCgyLCAxcHgpIiBzaG91bGQgbm90IHNl
dCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ10g
PSAic3ViZ3JpZCByZXBlYXQoMiwgbGluZSkiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIHJlcGVh
dCgyLCIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dy
aWQtdGVtcGxhdGUtY29sdW1ucyddID0gInN1YmdyaWQgc3ViZ3JpZCIgc2hvdWxkIG5vdCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtY29sdW1ucydd
ID0gInN1YmdyaWQgbm9uZSIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNT
IGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtY29sdW1ucyddID0gInN1YmdyaWQgMXB4IiBzaG91bGQg
bm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zJ10gPSAic3ViZ3JpZCBbYV0gMXB4IiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkg
dmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ10gPSAic3ViZ3JpZCBy
ZXBlYXQoYXV0by1maWxsLCAxcHgpIiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
K1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ10gPSAic3ViZ3JpZCByZXBlYXQo
YXV0by1maWxsLCBsaW5lKSIgc2hvdWxkIG5vdCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNT
IGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtY29sdW1ucyddID0gInN1YmdyaWQgcmVwZWF0KDIsIDFw
eCkiIHNob3VsZCBub3Qgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlk
LXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIHJlcGVhdCgyLCBsaW5lKSIgc2hvdWxkIG5v
dCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtY29s
dW1ucyddID0gInN1YmdyaWQgcmVwZWF0KDIsIiBzaG91bGQgbm90IHNldCB0aGUgcHJvcGVydHkg
dmFsdWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRlLXZhbGlkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS12YWxpZC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NTEyYjY0NjQ4ZmQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZ3JpZC9zdWJncmlkL2dyaWQtdGVtcGxhdGUtdmFsaWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMzggQEAKKworUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlk
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBs
YXRlLXJvd3MnXSA9ICJzdWJncmlkIFthXSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUK
K1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ10gPSAic3ViZ3JpZCBbYV0gW2JdIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRl
LXJvd3MnXSA9ICJzdWJncmlkIFthXSBbYl0gW2NdIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIFtdIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRl
LXJvd3MnXSA9ICJzdWJncmlkIFthXSBbYl0gW10gW2NdIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0
eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIFtd
IFtdIFtdIFtjXSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Z3JpZC10ZW1wbGF0ZS1yb3dzJ10gPSAic3ViZ3JpZCBbXSBbXSBbXSBbXSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ10gPSAi
c3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbYV0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2
YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIFthXSBy
ZXBlYXQoYXV0by1maWxsLCBbYl0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFT
UyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIFthXSByZXBlYXQoYXV0
by1maWxsLCBbYl0pIFtjXSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5z
dHlsZVsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ10gPSAic3ViZ3JpZCBbXSByZXBlYXQoYXV0by1maWxs
LCBbXSkgW10iIHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dy
aWQtdGVtcGxhdGUtcm93cyddID0gInN1YmdyaWQgcmVwZWF0KDIsIFthXSkiIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtcm93cyddID0g
InN1YmdyaWQgcmVwZWF0KDIsIFthXSBbYl0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1
ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLXJvd3MnXSA9ICJzdWJncmlkIFthXSByZXBl
YXQoMiwgW2JdKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Z3JpZC10ZW1wbGF0ZS1yb3dzJ10gPSAic3ViZ3JpZCBbYV0gcmVwZWF0KDIsIFtiXSkgW2NdIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRl
LXJvd3MnXSA9ICJzdWJncmlkIFtdIHJlcGVhdCgyLCBbXSkgW10iIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtcm93cyddID0gInN1Ymdy
aWQgW2FdIHJlcGVhdCgyLCBbYl0pIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2RdIiBzaG91bGQg
c2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLWNvbHVt
bnMnXSA9ICJzdWJncmlkIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0
eWxlWydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFthXSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ10g
PSAic3ViZ3JpZCBbYV0gW2JdIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBl
LnN0eWxlWydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFthXSBbYl0gW2NdIiBz
aG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRl
LWNvbHVtbnMnXSA9ICJzdWJncmlkIFtdIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFthXSBbYl0g
W10gW2NdIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlk
LXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFtdIFtdIFtdIFtjXSIgc2hvdWxkIHNldCB0
aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ10g
PSAic3ViZ3JpZCBbXSBbXSBbXSBbXSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BB
U1MgZS5zdHlsZVsnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ10gPSAic3ViZ3JpZCByZXBlYXQoYXV0
by1maWxsLCBbYV0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxl
WydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFthXSByZXBlYXQoYXV0by1maWxs
LCBbYl0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlk
LXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFthXSByZXBlYXQoYXV0by1maWxsLCBbYl0p
IFtjXSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsnZ3JpZC10
ZW1wbGF0ZS1jb2x1bW5zJ10gPSAic3ViZ3JpZCBbXSByZXBlYXQoYXV0by1maWxsLCBbXSkgW10i
IHNob3VsZCBzZXQgdGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxh
dGUtY29sdW1ucyddID0gInN1YmdyaWQgcmVwZWF0KDIsIFthXSkiIHNob3VsZCBzZXQgdGhlIHBy
b3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtY29sdW1ucyddID0gInN1
YmdyaWQgcmVwZWF0KDIsIFthXSBbYl0pIiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQor
UEFTUyBlLnN0eWxlWydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFthXSByZXBl
YXQoMiwgW2JdKSIgc2hvdWxkIHNldCB0aGUgcHJvcGVydHkgdmFsdWUKK1BBU1MgZS5zdHlsZVsn
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zJ10gPSAic3ViZ3JpZCBbYV0gcmVwZWF0KDIsIFtiXSkgW2Nd
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorUEFTUyBlLnN0eWxlWydncmlkLXRlbXBs
YXRlLWNvbHVtbnMnXSA9ICJzdWJncmlkIFtdIHJlcGVhdCgyLCBbXSkgW10iIHNob3VsZCBzZXQg
dGhlIHByb3BlcnR5IHZhbHVlCitQQVNTIGUuc3R5bGVbJ2dyaWQtdGVtcGxhdGUtY29sdW1ucydd
ID0gInN1YmdyaWQgW2FdIHJlcGVhdCgyLCBbYl0pIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2Rd
IiBzaG91bGQgc2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xp
bmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVj
dGVkLmh0bWwKaW5kZXggMDRjNTgzOTU5NmM5Li4yMzk5MzI4YmVjYzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1
YmdyaWQvbGluZS1uYW1lcy0wMDItZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFt
ZXMtMDAyLWV4cGVjdGVkLmh0bWwKQEAgLTE0LDcgKzE0LDcgQEAgaHRtbCxib2R5IHsKIAogLmdy
aWQgewogICBkaXNwbGF5OiBncmlkOwotICBncmlkOiBhdXRvIC8gW2FdIDUwcHggNTBweCBbYV0g
NTBweCA1MHB4IFthXTsKKyAgZ3JpZDogYXV0byAvIFthXSA1MHB4IDQwcHggW2FdIDEwcHggNTBw
eCBbYV07CiAgIHBhZGRpbmc6IDIwcHggMTBweDsKIH0KIApAQCAtMzIsNyArMzIsNyBAQCB4IHsg
YmFja2dyb3VuZDogZ3JleTsgfQogCiA8ZGl2IGNsYXNzPSJncmlkIj4KICAgPGRpdiBjbGFzcz0i
c3ViZ3JpZCI+Ci0gICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMyI+PC94PgorICAgIDx4
IHN0eWxlPSJncmlkLWNvbHVtbjogMyAvIDQiPjwveD4KICAgPC9kaXY+CiA8L2Rpdj4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9s
aW5lLW5hbWVzLTAwNS1leHBlY3RlZC5odG1sCmluZGV4IDRjN2Y0YjUwZmQxNi4uY2ZlMThkMWIy
NmVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1LWV4cGVjdGVkLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS1leHBlY3RlZC5odG1sCkBAIC0xMTUsNyArMTE1LDcg
QEAgeCB7CiA8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7IHdpZHRoOjUwMHB4OyBncmlkLWF1dG8t
Y29sdW1uczogNTBweDsiPgogPGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48
L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPgogICA8ZGl2IGNsYXNzPSJzdWJncmlkMiI+
Ci0gICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiBzcGFuIDQgLyAxMSI+eDwveD4KKyAgICA8eCBz
dHlsZT0iZ3JpZC1jb2x1bW46IHNwYW4gMyAvIDExIj54PC94PgogICA8L2Rpdj4KIDwvZGl2Pgog
CkBAIC0xMjksNyArMTI5LDcgQEAgeCB7CiA8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7IGdyaWQ6
IGF1dG8gLyByZXBlYXQoMTAsIDUwcHgpIHJlcGVhdCgxMCwgW2FdIDUwcHgpIFthXSI+CiA8aT48
L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwv
aT48aT48L2k+CiAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6Z3JpZDsgZ3JpZDphdXRvL3N1YmdyaWQ7
IGdyaWQtY29sdW1uOiBzcGFuIDEwOyBncmlkLXJvdzoyIj4KLSAgICA8eCBzdHlsZT0iZ3JpZC1j
b2x1bW46IDEgLyAxMSI+eDwveD4KKyAgICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46IDEwIC8gMTEi
Png8L3g+CiAgIDwvZGl2PgogPC9kaXY+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL2dyaWQtdGVtcGxhdGUtY29tcHV0ZWQtbm9ncmlkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Z3JpZC9zdWJncmlkL2dyaWQtdGVtcGxhdGUtY29tcHV0ZWQtbm9ncmlkLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY3ZmIxYzIxMjUxLi4wMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvZ3JpZC10ZW1wbGF0ZS1jb21wdXRlZC1ub2dyaWQt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotCi1GQUlMIFByb3Bl
cnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0nIGFzc2VydF90cnVl
OiAnc3ViZ3JpZCBbYV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNv
bHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxh
dGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gW2JdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQg
W2FdIFtiXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4g
ZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gW2JdIFtjXScgYXNzZXJ0X3RydWU6ICdzdWJncmlk
IFthXSBbYl0gW2JdIFtjXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUt
Y29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1w
bGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYiBjIGRdIFtlIGZdIFtlIGZdIFtnXScg
YXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYiBjIGRdIFtlIGZdIFtlIGZdIFtnXScgaXMgYSBz
dXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBn
b3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJn
cmlkIFthIGIgY10gW2RdIFtlIGZdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2EgYiBjXSBbZF0g
W2UgZl0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4
cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1u
cyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10pJyBhc3NlcnRfdHJ1ZTogJ3N1
YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdy
aWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVy
dHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGws
IFtjXSkgW2ddIFtoIGldJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwg
W2NdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNv
bHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxh
dGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10g
W2ggaV0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBb
Z10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMu
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10pIFtnXScgYXNz
ZXJ0X3RydWU6ICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2ddJyBpcyBh
IHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVl
IGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1
YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10pIFtnIGhdJyBhc3NlcnRfdHJ1ZTog
J3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10pIFtnIGhdJyBpcyBhIHN1cHBv
cnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBm
YWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQg
W2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2Fd
IFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10pJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3Jp
ZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0
eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwg
W2MgZF0pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pJyBp
cyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0
cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUg
J3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnXSBbaCBpXScgYXNzZXJ0X3RydWU6
ICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9y
dGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZh
bHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBb
YV0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnXSBbaCBpXScgYXNzZXJ0X3RydWU6ICdzdWJn
cmlkIFthXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkgW2ddIFtoIGldJyBpcyBhIHN1cHBvcnRl
ZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxz
ZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2Eg
Yl0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFth
IGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZ10nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZv
ciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFBy
b3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVh
dChhdXRvLWZpbGwsIFtjIGRdKSBbZyBoXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYl0g
cmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3Ig
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9w
ZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQo
YXV0by1maWxsLCBbYyBkXSknIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gW2JdIHJlcGVhdChh
dXRvLWZpbGwsIFtjIGRdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUt
Y29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1w
bGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pJyBh
c3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSknIGlzIGEgc3Vw
cG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290
IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3Jp
ZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKSBbZ10gW2ggaV0nIGFzc2VydF90cnVlOiAnc3Vi
Z3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVk
IHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNl
Ci1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0g
cmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2ddIFtoIGldJyBhc3NlcnRfdHJ1ZTogJ3N1Ymdy
aWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtnXSBbaCBpXScgaXMgYSBzdXBwb3J0
ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFs
c2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFth
IGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtnXScgYXNzZXJ0X3RydWU6ICdzdWJncmlk
IFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtnXScgaXMgYSBzdXBwb3J0ZWQgdmFs
dWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZB
SUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0g
cmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2cgaF0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBb
YV0gW2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2
YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQot
RkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFti
XSByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBb
Yl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSknIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBn
cmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3Bl
cnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxs
LCBbY10gW2QgZV0pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2Nd
IFtkIGVdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4g
ZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZCBlXSkgW2ddIFtoIGld
JyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10g
W2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4
cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1u
cyB2YWx1ZSAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVdKSBbZ10gW2gg
aV0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVd
KSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVt
bnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUt
Y29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0p
IFtnXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthIGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBb
ZCBlXSkgW2ddJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
LiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNv
bHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0p
IFtnIGhdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBb
Y10gW2QgZV0pIFtnIGhdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBs
YXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10g
W2QgZV0pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBb
Y10gW2QgZV0pJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
LiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93cGUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3Vi
Z3JpZC9ncmlkLXRlbXBsYXRlLWNvbXB1dGVkLW5vZ3JpZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93cGUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9ncmlkLXRlbXBsYXRlLWNvbXB1dGVkLW5vZ3JpZC1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2N2ZiMWMyMTI1MS4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtdGVtcGxhdGUtY29tcHV0ZWQtbm9ncmlk
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLQotRkFJTCBQcm9w
ZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdJyBhc3NlcnRfdHJ1
ZTogJ3N1YmdyaWQgW2FdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBs
YXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXScgYXNzZXJ0X3RydWU6ICdzdWJncmlk
IFthXSBbYl0nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMu
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gW2JdIFtiXSBbY10nIGFzc2VydF90cnVlOiAnc3ViZ3Jp
ZCBbYV0gW2JdIFtiXSBbY10nIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRl
LWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVt
cGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gW2IgYyBkXSBbZSBmXSBbZSBmXSBbZ10n
IGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gW2IgYyBkXSBbZSBmXSBbZSBmXSBbZ10nIGlzIGEg
c3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUg
Z290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3Vi
Z3JpZCBbYSBiIGNdIFtkXSBbZSBmXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthIGIgY10gW2Rd
IFtlIGZdJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBl
eHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVt
bnMgdmFsdWUgJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdKScgYXNzZXJ0X3RydWU6ICdz
dWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSknIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBn
cmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3Bl
cnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxs
LCBbY10pIFtnXSBbaCBpXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGws
IFtjXSkgW2ddIFtoIGldJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBs
YXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkgW2dd
IFtoIGldJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSkg
W2ddIFtoIGldJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
LiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNv
bHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2EgYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZ10nIGFz
c2VydF90cnVlOiAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10pIFtnXScgaXMg
YSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1
ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdz
dWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZyBoXScgYXNzZXJ0X3RydWU6
ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKSBbZyBoXScgaXMgYSBzdXBw
b3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3Qg
ZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlk
IFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFth
XSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdy
aWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVy
dHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGws
IFtjIGRdKScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKScg
aXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQg
dHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVl
ICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZ10gW2ggaV0nIGFzc2VydF90cnVl
OiAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkgW2ddIFtoIGldJyBpcyBhIHN1cHBv
cnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBm
YWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQg
W2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZ10gW2ggaV0nIGFzc2VydF90cnVlOiAnc3Vi
Z3JpZCBbYV0gcmVwZWF0KGF1dG8tZmlsbCwgW2MgZF0pIFtnXSBbaCBpXScgaXMgYSBzdXBwb3J0
ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFs
c2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFth
IGJdIHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZ10nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBb
YSBiXSByZXBlYXQoYXV0by1maWxsLCBbYyBkXSkgW2ddJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBm
b3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQ
cm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2FdIFtiXSByZXBl
YXQoYXV0by1maWxsLCBbYyBkXSkgW2cgaF0nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0gW2Jd
IHJlcGVhdChhdXRvLWZpbGwsIFtjIGRdKSBbZyBoXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9y
IGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJv
cGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0
KGF1dG8tZmlsbCwgW2MgZF0pJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIFtiXSByZXBlYXQo
YXV0by1maWxsLCBbYyBkXSknIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRl
LWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVt
cGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKScg
YXNzZXJ0X3RydWU6ICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pJyBpcyBhIHN1
cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdv
dCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1Ymdy
aWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2ddIFtoIGldJyBhc3NlcnRfdHJ1ZTogJ3N1
YmdyaWQgcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSkgW2ddIFtoIGldJyBpcyBhIHN1cHBvcnRl
ZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxz
ZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2Fd
IHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtnXSBbaCBpXScgYXNzZXJ0X3RydWU6ICdzdWJn
cmlkIFthXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKSBbZ10gW2ggaV0nIGlzIGEgc3VwcG9y
dGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZh
bHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBb
YSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKSBbZ10nIGFzc2VydF90cnVlOiAnc3ViZ3Jp
ZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKSBbZ10nIGlzIGEgc3VwcG9ydGVkIHZh
bHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMuIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1G
QUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29sdW1ucyB2YWx1ZSAnc3ViZ3JpZCBbYV0gW2Jd
IHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pIFtnIGhdJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQg
W2FdIFtiXSByZXBlYXQoYXV0by1maWxsLCBbY10gW2RdKSBbZyBoXScgaXMgYSBzdXBwb3J0ZWQg
dmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UK
LUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBb
Yl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkXSknIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYV0g
W2JdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZF0pJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3Ig
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9w
ZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgcmVwZWF0KGF1dG8tZmls
bCwgW2NdIFtkIGVdKScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtj
XSBbZCBlXSknIGlzIGEgc3VwcG9ydGVkIHZhbHVlIGZvciBncmlkLXRlbXBsYXRlLWNvbHVtbnMu
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCi1GQUlMIFByb3BlcnR5IGdyaWQtdGVtcGxhdGUtY29s
dW1ucyB2YWx1ZSAnc3ViZ3JpZCByZXBlYXQoYXV0by1maWxsLCBbY10gW2QgZV0pIFtnXSBbaCBp
XScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZCBlXSkgW2dd
IFtoIGldJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zLiBl
eHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRlLWNvbHVt
bnMgdmFsdWUgJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZCBlXSkgW2ddIFto
IGldJyBhc3NlcnRfdHJ1ZTogJ3N1YmdyaWQgW2FdIHJlcGVhdChhdXRvLWZpbGwsIFtjXSBbZCBl
XSkgW2ddIFtoIGldJyBpcyBhIHN1cHBvcnRlZCB2YWx1ZSBmb3IgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zLiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQotRkFJTCBQcm9wZXJ0eSBncmlkLXRlbXBsYXRl
LWNvbHVtbnMgdmFsdWUgJ3N1YmdyaWQgW2EgYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVd
KSBbZ10nIGFzc2VydF90cnVlOiAnc3ViZ3JpZCBbYSBiXSByZXBlYXQoYXV0by1maWxsLCBbY10g
W2QgZV0pIFtnXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1u
cy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2NdIFtkIGVd
KSBbZyBoXScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwg
W2NdIFtkIGVdKSBbZyBoXScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUt
Y29sdW1ucy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLUZBSUwgUHJvcGVydHkgZ3JpZC10ZW1w
bGF0ZS1jb2x1bW5zIHZhbHVlICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwgW2Nd
IFtkIGVdKScgYXNzZXJ0X3RydWU6ICdzdWJncmlkIFthXSBbYl0gcmVwZWF0KGF1dG8tZmlsbCwg
W2NdIFtkIGVdKScgaXMgYSBzdXBwb3J0ZWQgdmFsdWUgZm9yIGdyaWQtdGVtcGxhdGUtY29sdW1u
cy4gZXhwZWN0ZWQgdHJ1ZSBnb3QgZmFsc2UKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2ZGJkMDlkNDdjZmMuLjMwMTFiMmJk
MWYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0wMiAgTWF0dCBXb29kcm93ICA8bWF0
dHdvb2Ryb3dAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nICdz
dWJncmlkJyBpbiBncmlkLXRlbXBsYXRlLWNvbHVtbnMvcm93CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwNTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgbmV3IGV4cGVyaW1lbnRhbCBwcmVm
ZXJlbmNlIGZvciBzdWJncmlkIHN1cHBvcnQsIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisKKyAgICAg
ICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWw6
CisKIDIwMjItMDItMDIgIFhhbiBMb3BleiAgPHhhbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtK
U0NdIFJlbW92ZSBjb21waWxlciB3YXJuaW5nIGluIFRyYWlsaW5nQXJyYXkuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNF
eHBlcmltZW50YWwueWFtbAppbmRleCA1YjRkM2I2MjU3MTcuLjFjODFhYzc1MGJlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJp
bWVudGFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKQEAgLTEzNDcsNiArMTM0NywxOCBAQCBTdG9yYWdlQVBJ
RW5hYmxlZDoKICAgICAgICJQTEFURk9STShDT0NPQSkiIDogdHJ1ZQogICAgICAgZGVmYXVsdDog
ZmFsc2UKIAorU3ViZ3JpZEVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgaHVtYW5SZWFkYWJsZU5h
bWU6ICJDU1Mgc3ViZ3JpZCBzdXBwb3J0IgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJF
bmFibGUgQ1NTIHN1YmdyaWQgc3VwcG9ydCIKKyAgZGVmYXVsdFZhbHVlOgorICAgIFdlYktpdExl
Z2FjeToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDog
ZmFsc2UKKyAgICBXZWJDb3JlOgorICAgICAgZGVmYXVsdDogZmFsc2UKKwogU3ludGhldGljRWRp
dGluZ0NvbW1hbmRzRW5hYmxlZDoKICAgdHlwZTogYm9vbAogICBodW1hblJlYWRhYmxlTmFtZTog
IlN5bnRoZXRpYyBFZGl0aW5nIENvbW1hbmRzIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFmMzA4YzAxMmVlMC4u
NTQxZWNmNTA4ZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4IEBACisyMDIyLTAyLTAzICBN
YXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgSW5oZXJpdCB0
cmFjayBjb3VudCBmcm9tIHBhcmVudCBncmlkIGZvciBzdWJncmlkZGVkIGF4ZXMgYW5kIGNsYW1w
IGl0ZW0gcGxhY2VtZW50IHRvIHRoYXQgZXhwbGljaXQgZ3JpZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEyMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZXMgR3JpZFBvc2l0aW9uc1Jlc29s
dmVyOjpleHBsaWNpdEdyaWQ8PkNvdW50IHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIHRyYWNrcwor
ICAgICAgICBzcGFubmVkIGluIHRoZSBwYXJlbnQgZ3JpZCwgZm9yIGF4ZXMgdGhhdCBhcmUgYSBz
dWJncmlkLgorCisgICAgICAgIFVwZGF0ZXMgYWRqdXN0R3JpZFBvc2l0aW9uc0ZvclN0eWxlIHRv
IHVzZSB0aGUgbnVtYmVyIG9mIGxpbmVzIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgc3ViZ3Jp
ZCBwcm9wZXJ0eSwgZm9yIGdyaWQgaXRlbXMgdGhhdCBhcmUgYWxzbyBhIHN1YmdyaWQgYW5kIGhh
dmUgYW4gb3RoZXJ3aXNlCisgICAgICAgIGluZGVmaW5pdGUgc3Bhbi4KKworICAgICAgICBBZGRz
IGNsYW1waW5nIHN1cHBvcnQgdG8gR3JpZCBzbyB0aGF0IHdlIGNhbiBwcmV2ZW50IHN1YmdyaWRz
IGZyb20gZXZlciBhZGRpbmcKKyAgICAgICAgbmV3IGltcGxpY2l0IHRyYWNrcy4KKworICAgICAg
ICAqIHJlbmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6Omluc2VydCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmlkOjpzZXRDbGFtcGluZ0ZvclN1YmdyaWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JpZDo6Y2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxpY2l0R3JpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmlkOjpzZXROZWVkc0l0ZW1zUGxhY2VtZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdy
aWRBbmRPcmRlckl0ZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyR3JpZDo6aXNTdWJncmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmlzU3ViZ3JpZFJvd3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6aXNTdWJncmlkQ29sdW1ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
cmlkOjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZsb3dDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJHcmlkOjpudW1UcmFja3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNw
b3NlZERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlR3Jp
ZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
cmlkOjpncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6aW50ZWdlclNwYW4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZFNwYW46OnRyYW5zbGF0ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRT
cGFuOjpjbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0luZGVmaW5pdGVTcGFuKToKKyAgICAgICAg
KFdlYkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bw
b3NpdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlR3JpZFBvc2l0aW9uRnJv
bVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2
ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Hcmlk
UG9zaXRpb25zUmVzb2x2ZXIuaDoKKworMjAyMi0wMi0wMiAgTWF0dCBXb29kcm93ICA8bWF0dHdv
b2Ryb3dAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nICdzdWJn
cmlkJyBpbiBncmlkLXRlbXBsYXRlLWNvbHVtbnMvcm93CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYwNTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIHBhcnNpbmcgdGhlICdz
dWJncmlkJyBrZXl3b3JkIGZvbGxvd2VkIGJ5IGEgbGlzdCBvZiBsaW5lIG5hbWVzIGZvcgorICAg
ICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnMvcm93cy4KKyAgICAgICAgQWRkcyBhIG5ldyBDU1NT
dWJncmlkVmFsdWUgd3JhcHBlciBhcm91bmQgQ1NTVmFsdWVMaXN0IHRvIHJlcHJlc2VudCB0aGlz
LgorICAgICAgICBBbHNvIGFkZHMgc3VwcG9ydCBmb3IgY29udmVydGluZyB0aGlzIGludG8gc3R5
bGUgZGF0YSBpbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIsIGFuZCBzZXJpYWxpemluZworICAgICAg
ICB0aGUgc3BlY2lmaWVkIHZhbHVlIGZvciBjb21wdXRlZCB2YWx1ZSAodXNlZCB3aGVuIHRoZSBl
bGVtZW50IHNwZWNpZmllZCBzdWJncmlkIGJ1dCBkb2Vzbid0CisgICAgICAgIGhhdmUgYW4gYXBw
cm9wcmlhdGUgZ3JpZCBwYXJlbnQpLgorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtdGVtcGxhdGUtaW52YWxp
ZC5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtZ3JpZC9zdWJncmlkL2dyaWQtdGVtcGxhdGUtdmFsaWQuaHRtbAorCisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6T3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3I6Om5hbWVkR3JpZExpbmVDb3Vu
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpwb3B1bGF0ZVN1YmdyaWRUcmFja0xpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JHcmlkVHJhY2tMaXN0KToKKyAgICAgICAgKiBjc3Mv
Q1NTU3ViZ3JpZFZhbHVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdWJncmlk
VmFsdWU6OmN1c3RvbUNTU1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3ViZ3Jp
ZFZhbHVlOjpDU1NTdWJncmlkVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NTdWJncmlkVmFsdWUu
aDogQWRkZWQuCisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmNz
c1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRlc3Ryb3kpOgorICAg
ICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzU3Vi
Z3JpZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAg
ICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjphZGQpOgorICAgICAgICAqIGNzcy9w
YXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUdyaWRMaW5lTmFtZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUdyaWROYW1lUmVwZWF0RnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Y29uc3VtZUdyaWRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3VtZUdyaWRUZW1wbGF0ZXNSb3dzT3JDb2x1bW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzQW5kQ29sdW1ucyk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUdyaWRUZW1wbGF0
ZVNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3Vt
ZUdyaWRTaG9ydGhhbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdyaWRTdWJncmlkUm93cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Z3JpZFN1YmdyaWRDb2x1bW5zIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRHcmlkU3ViZ3JpZFJvd3MpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEdyaWRTdWJncmlkQ29sdW1ucyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVHcmlkRGF0YTo6U3R5bGVHcmlkRGF0YSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlR3JpZERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR3JpZERhdGE6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdy
aWRUcmFja0xpc3QpOgorICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oOgorCiAy
MDIyLTAyLTAzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ3Jhc2ggYXQgY29tLmFwcGxlLldlYktpdDogV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZGlzcGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNjUzOTM3YWNlNjVjLi5iNjUyNDkx
YTZhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNTM4LDYgKzUzOCw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5o
CiAgICAgY3NzL0NTU1N0eWxlUnVsZS5oCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuaAorICAgIGNz
cy9DU1NTdWJncmlkVmFsdWUuaAogICAgIGNzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmgK
ICAgICBjc3MvQ1NTVW5pdHMuaAogICAgIGNzcy9DU1NVbmtub3duUnVsZS5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IGIzZjVlMGI3ODQxNy4uNDA5Y2M1MTM4YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNzY3
LDYgKzc2Nyw3IEBAIGNzcy9DU1NTaGFkb3dWYWx1ZS5jcHAKIGNzcy9DU1NTdHlsZURlY2xhcmF0
aW9uLmNwcAogY3NzL0NTU1N0eWxlUnVsZS5jcHAKIGNzcy9DU1NTdHlsZVNoZWV0LmNwcAorY3Nz
L0NTU1N1YmdyaWRWYWx1ZS5jcHAKIGNzcy9DU1NTdXBwb3J0c1J1bGUuY3BwCiBjc3MvQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5jcHAKIGNzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGM1ZjQ0ZWYwNGE3MC4uYzRlY2U3ZTUyY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00Njg4LDYgKzQ2ODgsNyBAQAog
CQlEMDAwRUJBMzExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMDBFQkExMTFC
REFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQwMDBFRDI4MTFDMUI5Q0QwMEM0
NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDAwMEVEMjYxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRDAx
QTI3QUUxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMUEyN0FDMTBDOUJGRDgwMDAyNkE0
MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRDAyNkRCMEEyN0FCNzE5RTAwODFCMTQzIC8qIENTU1N1YmdyaWRW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDAy
NkRCMDgyN0FCNzE5RDAwODFCMTQzIC8qIENTU1N1YmdyaWRWYWx1ZS5oICovOyB9OwogCQlEMDVD
RUQyQTBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDVDRUQyODBBNDBCQjJDMDBDNUFG
MzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmggKi87IH07CiAJCUQwNkMwRDhGMENGRDExNDYwMDY1
RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEMDZDMEQ4RDBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9y
bWF0Q29tbWFuZC5oICovOyB9OwogCQlEMDdERUFCQTBBMzY1NTRBMDBDQTMwRjggLyogSW5zZXJ0
TGlzdENvbW1hbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEQwN0RFQUI4MEEzNjU1NEEwMENBMzBGOCAvKiBJbnNlcnRMaXN0Q29tbWFuZC5oICovOyB9
OwpAQCAtMTY0MzMsNiArMTY0MzQsOCBAQAogCQlEMDAwRUQyNjExQzFCOUNEMDBDNDc3MjYgLyog
U3ViZnJhbWVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ViZnJh
bWVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUIxMEM5QkZE
ODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3BhY2VTcGxpdFN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwMUEyN0FDMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYWNlU3BsaXRTdHJpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDAyNkRCMDgyN0FCNzE5RDAwODFCMTQzIC8qIENT
U1N1YmdyaWRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NTdWJn
cmlkVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDAyNkRCMEIyN0FCNzFB
RjAwODFCMTQzIC8qIENTU1N1YmdyaWRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDU1NTdWJncmlkVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDM2REQ4RDIwOEZGQzBDMDBGOUY0QjIgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFTVEMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJs
b2NrQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9y
bWF0QmxvY2tDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VE
MjgwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zMTU1MSw2ICszMTU1NCw4IEBACiAJCUY1MjNEMTg0MDJERTQyRTgw
MTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCUQwMjZEQjBCMjdBQjcxQUYwMDgxQjE0MyAvKiBDU1NTdWJncmlkVmFsdWUuY3BwICov
LAorCQkJCUQwMjZEQjA4MjdBQjcxOUQwMDgxQjE0MyAvKiBDU1NTdWJncmlkVmFsdWUuaCAqLywK
IAkJCQlCQ0YxNjQ0RDI2NjI5RjlBMDAwMkY3RUYgLyogY2FsYyAqLywKIAkJCQk5NDZEMzcyNzFE
NkNCMjI1MDA3NzA4NEYgLyogcGFyc2VyICovLAogCQkJCTRCQUZEMERBMjE5MjFFQUQwMEMwQUI2
NCAvKiB0eXBlZG9tICovLApAQCAtMzU3OTAsNiArMzU3OTUsNyBAQAogCQkJCUIyRkEzREE5MEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR01hcmtlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyRkEzREFCMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR01hc2tFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkZBM0RBRDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdNYXRyaXguaCBpbiBI
ZWFkZXJzICovLAorCQkJCUQwMjZEQjBBMjdBQjcxOUUwMDgxQjE0MyAvKiBDU1NTdWJncmlkVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREFGMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R01ldGFkYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3QjI4MkEwQ0VGMEMwNzAw
RDM5RDU0IC8qIEpTU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDQ5NkUzQTAxMzk4MTNBNTAwM0VFMzJBIC8qIEpTU1ZHTVBhdGhFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKaW5kZXggNjkyZDg0NjgzMzM2Li4xNWUwNTQ5ODkwOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC04NTgs
NiArODU4LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
b3JkZXJlZE5hbWVkR3JpZExpbmVzLmlzRW1wdHkoKSAmJiBtX29yZGVyZWROYW1lZEF1dG9SZXBl
YXRHcmlkTGluZXMuaXNFbXB0eSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RMaW5lTmFt
ZXNGb3JJbmRleChDU1NHcmlkTGluZU5hbWVzVmFsdWUmLCB1bnNpZ25lZCBpbmRleCkgY29uc3Q7
CiAKKyAgICB2aXJ0dWFsIGludCBuYW1lZEdyaWRMaW5lQ291bnQoKSBjb25zdCB7IHJldHVybiBt
X29yZGVyZWROYW1lZEdyaWRMaW5lcy5zaXplKCk7IH0KKwogcHJvdGVjdGVkOgogCiAgICAgZW51
bSBOYW1lZExpbmVzVHlwZSB7IE5hbWVkTGluZXMsIEF1dG9SZXBlYXROYW1lZExpbmVzIH07CkBA
IC04NzUsNiArODc3LDggQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgY29sbGVjdExpbmVO
YW1lc0ZvckluZGV4KENTU0dyaWRMaW5lTmFtZXNWYWx1ZSYsIHVuc2lnbmVkIGluZGV4KSBjb25z
dCBvdmVycmlkZTsKKworICAgIGludCBuYW1lZEdyaWRMaW5lQ291bnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX29yZGVyZWROYW1lZEF1dG9SZXBlYXRHcmlkTGluZXMuc2l6ZSgpOyB9CiB9
OwogCiBjbGFzcyBPcmRlcmVkTmFtZWRMaW5lc0NvbGxlY3RvckluR3JpZExheW91dCA6IHB1Ymxp
YyBPcmRlcmVkTmFtZWRMaW5lc0NvbGxlY3RvciB7CkBAIC05OTQsMTAgKzk5OCwyMiBAQCB2b2lk
IHBvcHVsYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZUxpc3QmIGxpc3QsIE9yZGVyZWROYW1lZExp
bmVzQ29sbGVjdG9yJiBjb2xsZQogICAgIHBvcHVsYXRlR3JpZFRyYWNrTGlzdDxUPihsaXN0LCBj
b2xsZWN0b3IsIHRyYWNrcywgZ2V0VHJhY2tTaXplLCAwLCB0cmFja3Muc2l6ZSgpLCBvZmZzZXQp
OwogfQogCitzdGF0aWMgdm9pZCBwb3B1bGF0ZVN1YmdyaWRUcmFja0xpc3QoQ1NTVmFsdWVMaXN0
JiBsaXN0LCBPcmRlcmVkTmFtZWRMaW5lc0NvbGxlY3RvciYgY29sbGVjdG9yLCBpbnQgc3RhcnQs
IGludCBlbmQpCit7CisgICAgZm9yIChpbnQgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspCisgICAg
ICAgIGFkZFZhbHVlc0Zvck5hbWVkR3JpZExpbmVzQXRJbmRleChjb2xsZWN0b3IsIGksIGxpc3Qp
OworfQorCitzdGF0aWMgdm9pZCBwb3B1bGF0ZVN1YmdyaWRUcmFja0xpc3QoQ1NTVmFsdWVMaXN0
JiBsaXN0LCBPcmRlcmVkTmFtZWRMaW5lc0NvbGxlY3RvciYgY29sbGVjdG9yKQoreworICAgIHBv
cHVsYXRlU3ViZ3JpZFRyYWNrTGlzdChsaXN0LCBjb2xsZWN0b3IsIDAsIGNvbGxlY3Rvci5uYW1l
ZEdyaWRMaW5lQ291bnQoKSk7Cit9CisKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3Jp
ZFRyYWNrTGlzdChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgYm9vbCBpc1Jv
d0F4aXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKICAgICBib29sIGlzUmVuZGVyR3JpZCA9
IGlzPFJlbmRlckdyaWQ+KHJlbmRlcmVyKTsKKyAgICBib29sIGlzU3ViZ3JpZCA9IGlzUm93QXhp
cyA/IHN0eWxlLmdyaWRTdWJncmlkQ29sdW1ucygpIDogc3R5bGUuZ3JpZFN1YmdyaWRSb3dzKCk7
CiAgICAgYXV0byYgdHJhY2tTaXplcyA9IGlzUm93QXhpcyA/IHN0eWxlLmdyaWRDb2x1bW5zKCkg
OiBzdHlsZS5ncmlkUm93cygpOwogICAgIGF1dG8mIGF1dG9SZXBlYXRUcmFja1NpemVzID0gaXNS
b3dBeGlzID8gc3R5bGUuZ3JpZEF1dG9SZXBlYXRDb2x1bW5zKCkgOiBzdHlsZS5ncmlkQXV0b1Jl
cGVhdFJvd3MoKTsKIApAQCAtMTAxMSwxNCArMTAyNywxNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVl
PiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
biwgUgogICAgICAgICB0cmFja0xpc3RJc0VtcHR5ID0gcG9zaXRpb25zLnNpemUoKSA9PSAxOwog
ICAgIH0KIAotICAgIGlmICh0cmFja0xpc3RJc0VtcHR5KQorICAgIGlmICh0cmFja0xpc3RJc0Vt
cHR5ICYmICFpc1N1YmdyaWQpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRv
bigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogCiAgICAgYXV0byBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGlmIChpc1N1Ymdy
aWQpCisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVN1YmdyaWQpKTsKIAogICAgIC8vIElmIHRoZSBlbGVt
ZW50IGlzIGEgZ3JpZCBjb250YWluZXIsIHRoZSByZXNvbHZlZCB2YWx1ZSBpcyB0aGUgdXNlZCB2
YWx1ZSwKICAgICAvLyBzcGVjaWZ5aW5nIHRyYWNrIHNpemVzIGluIHBpeGVscyBhbmQgZXhwYW5k
aW5nIHRoZSByZXBlYXQoKSBub3RhdGlvbi4KICAgICBpZiAoaXNSZW5kZXJHcmlkKSB7CisgICAg
ICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gaGFuZGxlIGNvbXB1dGVkIHN1YmdyaWQgaGVyZS4KICAg
ICAgICAgYXV0byogZ3JpZCA9IGRvd25jYXN0PFJlbmRlckdyaWQ+KHJlbmRlcmVyKTsKICAgICAg
ICAgT3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3JJbkdyaWRMYXlvdXQgY29sbGVjdG9yKHN0eWxl
LCBpc1Jvd0F4aXMsIGdyaWQtPmF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlvbihkaXJlY3Rpb24p
LCBhdXRvUmVwZWF0VHJhY2tTaXplcy5zaXplKCkpOwogICAgICAgICAvLyBOYW1lZCBncmlkIGxp
bmUgaW5kaWNlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGV4cGxpY2l0IGdyaWQsIGJ1dCB3ZSBhcmUg
aW5jbHVkaW5nIGFsbCB0cmFja3MuCkBAIC0xMDM2LDI1ICsxMDU1LDQwIEBAIHN0YXRpYyBSZWY8
Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBSCiAgICAgICAgIHJldHVybiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1Np
emUodiwgc3R5bGUpOwogICAgIH07CiAKLSAgICBpZiAoYXV0b1JlcGVhdFRyYWNrU2l6ZXMuaXNF
bXB0eSgpKSB7CisgICAgT3JkZXJlZE5hbWVkTGluZXNDb2xsZWN0b3JJbnNpZGVSZXBlYXQgcmVw
ZWF0Q29sbGVjdG9yKHN0eWxlLCBpc1Jvd0F4aXMpOworICAgIGlmIChpc1N1YmdyaWQgPyAhcmVw
ZWF0Q29sbGVjdG9yLm5hbWVkR3JpZExpbmVDb3VudCgpIDogYXV0b1JlcGVhdFRyYWNrU2l6ZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gYXV0byByZXBlYXQoKSwganVz
dCBhZGQgYWxsIHRoZSBsaW5lIG5hbWVzIGFuZCB0cmFjayBzaXplcy4KLSAgICAgICAgcG9wdWxh
dGVHcmlkVHJhY2tMaXN0KGxpc3QuZ2V0KCksIGNvbGxlY3RvciwgdHJhY2tTaXplcywgZ2V0VHJh
Y2tTaXplKTsKKyAgICAgICAgaWYgKGlzU3ViZ3JpZCkKKyAgICAgICAgICAgIHBvcHVsYXRlU3Vi
Z3JpZFRyYWNrTGlzdChsaXN0LmdldCgpLCBjb2xsZWN0b3IpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBwb3B1bGF0ZUdyaWRUcmFja0xpc3QobGlzdC5nZXQoKSwgY29sbGVjdG9yLCB0cmFj
a1NpemVzLCBnZXRUcmFja1NpemUpOwogICAgICAgICByZXR1cm4gbGlzdDsKICAgICB9CiAKICAg
ICAvLyBBZGQgdGhlIGxpbmUgbmFtZXMgYW5kIHRyYWNrIHNpemVzIHRoYXQgcHJlY2VkZSB0aGUg
YXV0byByZXBlYXQoKS4KLSAgICBpbnQgYXV0b1JlcGVhdEluc2VydGlvblBvaW50ID0gc3RkOjpj
bGFtcDxpbnQ+KGlzUm93QXhpcyA/IHN0eWxlLmdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlv
blBvaW50KCkgOiBzdHlsZS5ncmlkQXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCgpLCAwLCB0
cmFja1NpemVzLnNpemUoKSk7Ci0gICAgcG9wdWxhdGVHcmlkVHJhY2tMaXN0KGxpc3QuZ2V0KCks
IGNvbGxlY3RvciwgdHJhY2tTaXplcywgZ2V0VHJhY2tTaXplLCAwLCBhdXRvUmVwZWF0SW5zZXJ0
aW9uUG9pbnQpOworICAgIGludCBhdXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQgPSBpc1Jvd0F4aXMg
PyBzdHlsZS5ncmlkQXV0b1JlcGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCgpIDogc3R5bGUuZ3Jp
ZEF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoKTsKKyAgICBpZiAoaXNTdWJncmlkKQorICAg
ICAgICBwb3B1bGF0ZVN1YmdyaWRUcmFja0xpc3QobGlzdC5nZXQoKSwgY29sbGVjdG9yLCAwLCBh
dXRvUmVwZWF0SW5zZXJ0aW9uUG9pbnQpOworICAgIGVsc2UgeworICAgICAgICBhdXRvUmVwZWF0
SW5zZXJ0aW9uUG9pbnQgPSBzdGQ6OmNsYW1wPGludD4oYXV0b1JlcGVhdEluc2VydGlvblBvaW50
LCAwLCB0cmFja1NpemVzLnNpemUoKSk7CisgICAgICAgIHBvcHVsYXRlR3JpZFRyYWNrTGlzdChs
aXN0LmdldCgpLCBjb2xsZWN0b3IsIHRyYWNrU2l6ZXMsIGdldFRyYWNrU2l6ZSwgMCwgYXV0b1Jl
cGVhdEluc2VydGlvblBvaW50KTsKKyAgICB9CiAKICAgICAvLyBBZGQgYSBDU1NHcmlkQXV0b1Jl
cGVhdFZhbHVlIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoZSBhdXRvIHJlcGVhdCgpLgogICAgIEF1
dG9SZXBlYXRUeXBlIGF1dG9SZXBlYXRUeXBlID0gaXNSb3dBeGlzID8gc3R5bGUuZ3JpZEF1dG9S
ZXBlYXRDb2x1bW5zVHlwZSgpIDogc3R5bGUuZ3JpZEF1dG9SZXBlYXRSb3dzVHlwZSgpOwogICAg
IGF1dG8gcmVwZWF0ZWRWYWx1ZXMgPSBDU1NHcmlkQXV0b1JlcGVhdFZhbHVlOjpjcmVhdGUoYXV0
b1JlcGVhdFR5cGUgPT0gQXV0b1JlcGVhdFR5cGU6OkZpbGwgPyBDU1NWYWx1ZUF1dG9GaWxsIDog
Q1NTVmFsdWVBdXRvRml0KTsKLSAgICBPcmRlcmVkTmFtZWRMaW5lc0NvbGxlY3Rvckluc2lkZVJl
cGVhdCByZXBlYXRDb2xsZWN0b3Ioc3R5bGUsIGlzUm93QXhpcyk7Ci0gICAgcG9wdWxhdGVHcmlk
VHJhY2tMaXN0KHJlcGVhdGVkVmFsdWVzLmdldCgpLCByZXBlYXRDb2xsZWN0b3IsIGF1dG9SZXBl
YXRUcmFja1NpemVzLCBnZXRUcmFja1NpemUpOworCisgICAgaWYgKGlzU3ViZ3JpZCkKKyAgICAg
ICAgcG9wdWxhdGVTdWJncmlkVHJhY2tMaXN0KHJlcGVhdGVkVmFsdWVzLmdldCgpLCByZXBlYXRD
b2xsZWN0b3IpOworICAgIGVsc2UKKyAgICAgICAgcG9wdWxhdGVHcmlkVHJhY2tMaXN0KHJlcGVh
dGVkVmFsdWVzLmdldCgpLCByZXBlYXRDb2xsZWN0b3IsIGF1dG9SZXBlYXRUcmFja1NpemVzLCBn
ZXRUcmFja1NpemUpOwogICAgIGxpc3QtPmFwcGVuZChyZXBlYXRlZFZhbHVlcy5nZXQoKSk7CiAK
ICAgICAvLyBBZGQgdGhlIGxpbmUgbmFtZXMgYW5kIHRyYWNrIHNpemVzIHRoYXQgZm9sbG93IHRo
ZSBhdXRvIHJlcGVhdCgpLgotICAgIHBvcHVsYXRlR3JpZFRyYWNrTGlzdChsaXN0LmdldCgpLCBj
b2xsZWN0b3IsIHRyYWNrU2l6ZXMsIGdldFRyYWNrU2l6ZSwgYXV0b1JlcGVhdEluc2VydGlvblBv
aW50LCB0cmFja1NpemVzLnNpemUoKSwgMSk7CisgICAgaWYgKGlzU3ViZ3JpZCkKKyAgICAgICAg
cG9wdWxhdGVTdWJncmlkVHJhY2tMaXN0KGxpc3QuZ2V0KCksIGNvbGxlY3RvciwgYXV0b1JlcGVh
dEluc2VydGlvblBvaW50LCBjb2xsZWN0b3IubmFtZWRHcmlkTGluZUNvdW50KCkgKyAxKTsKKyAg
ICBlbHNlCisgICAgICAgIHBvcHVsYXRlR3JpZFRyYWNrTGlzdChsaXN0LmdldCgpLCBjb2xsZWN0
b3IsIHRyYWNrU2l6ZXMsIGdldFRyYWNrU2l6ZSwgYXV0b1JlcGVhdEluc2VydGlvblBvaW50LCB0
cmFja1NpemVzLnNpemUoKSwgMSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdWJncmlkVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N1YmdyaWRWYWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5hNDFhODc4MjBjNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3ViZ3JpZFZhbHVlLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IElnYWxpYSwgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJDU1NTdWJncmlkVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitTdHJpbmcgQ1NTU3ViZ3JpZFZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKK3sK
KyAgICBpZiAoIWxlbmd0aCgpKQorICAgICAgICByZXR1cm4gInN1YmdyaWQiOworICAgIHJldHVy
biAic3ViZ3JpZCAiICsgQ1NTVmFsdWVMaXN0OjpjdXN0b21DU1NUZXh0KCk7Cit9CisKK0NTU1N1
YmdyaWRWYWx1ZTo6Q1NTU3ViZ3JpZFZhbHVlKCkKKyAgICA6IENTU1ZhbHVlTGlzdChTdWJncmlk
Q2xhc3MsIFNwYWNlU2VwYXJhdG9yKQoreworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3ViZ3JpZFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3ViZ3Jp
ZFZhbHVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYWEzYzNj
NjNiYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3ViZ3JpZFZh
bHVlLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBJ
Z2FsaWEsIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNT
U1ZhbHVlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1N1YmdyaWRW
YWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NWYWx1ZUxpc3QgeworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8Q1NTU3ViZ3JpZFZhbHVlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ1NTU3ViZ3JpZFZhbHVlKTsKKyAgICB9CisKKyAgICBTdHJpbmcgY3VzdG9tQ1NT
VGV4dCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIENTU1N1YmdyaWRWYWx1ZSgpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxV
RShDU1NTdWJncmlkVmFsdWUsIGlzU3ViZ3JpZFZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5j
cHAKaW5kZXggYWZkMWNlYTI3MjJiLi5jZWQxMzk0MjkxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmNwcApAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIkNTU0dyaWRJbnRlZ2VyUmVwZWF0VmFs
dWUuaCIKICNpbmNsdWRlICJDU1NHcmlkTGluZU5hbWVzVmFsdWUuaCIKICNpbmNsdWRlICJDU1NH
cmlkVGVtcGxhdGVBcmVhc1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU3ViZ3JpZFZhbHVlLmgiCiAK
ICNpbmNsdWRlICJEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkRl
cHJlY2F0ZWRDU1NPTVZhbHVlTGlzdC5oIgpAQCAtMTg0LDYgKzE4NSw4IEBAIGJvb2wgQ1NTVmFs
dWU6OmVxdWFscyhjb25zdCBDU1NWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICAgICByZXR1
cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NHcmlkSW50ZWdlclJlcGVhdFZhbHVlPigqdGhpcywgb3Ro
ZXIpOwogICAgICAgICBjYXNlIEdyaWRMaW5lTmFtZXNDbGFzczoKICAgICAgICAgICAgIHJldHVy
biBjb21wYXJlQ1NTVmFsdWVzPENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4oKnRoaXMsIG90aGVyKTsK
KyAgICAgICAgY2FzZSBTdWJncmlkQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNT
U1ZhbHVlczxDU1NTdWJncmlkVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGNhc2UgR3Jp
ZFRlbXBsYXRlQXJlYXNDbGFzczoKICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVz
PENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWU+KCp0aGlzLCBvdGhlcik7CiAgICAgICAgIGNhc2Ug
UHJpbWl0aXZlQ2xhc3M6CkBAIC0yODcsNiArMjkwLDggQEAgU3RyaW5nIENTU1ZhbHVlOjpjc3NU
ZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0dyaWRJbnRlZ2VyUmVwZWF0
VmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAgY2FzZSBHcmlkTGluZU5hbWVzQ2xh
c3M6CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NHcmlkTGluZU5hbWVzVmFsdWU+KCp0aGlz
KS5jdXN0b21DU1NUZXh0KCk7CisgICAgY2FzZSBTdWJncmlkQ2xhc3M6CisgICAgICAgIHJldHVy
biBkb3duY2FzdDxDU1NTdWJncmlkVmFsdWU+KCp0aGlzKS5jdXN0b21DU1NUZXh0KCk7CiAgICAg
Y2FzZSBHcmlkVGVtcGxhdGVBcmVhc0NsYXNzOgogICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NT
R3JpZFRlbXBsYXRlQXJlYXNWYWx1ZT4oKnRoaXMpLmN1c3RvbUNTU1RleHQoKTsKICAgICBjYXNl
IFByaW1pdGl2ZUNsYXNzOgpAQCAtNDEwLDYgKzQxNSw5IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ry
b3koKQogICAgIGNhc2UgR3JpZExpbmVOYW1lc0NsYXNzOgogICAgICAgICBkZWxldGUgZG93bmNh
c3Q8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPih0aGlzKTsKICAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgU3ViZ3JpZENsYXNzOgorICAgICAgICBkZWxldGUgZG93bmNhc3Q8Q1NTU3ViZ3JpZFZhbHVl
Pih0aGlzKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgR3JpZFRlbXBsYXRlQXJlYXNDbGFz
czoKICAgICAgICAgZGVsZXRlIGRvd25jYXN0PENTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWU+KHRo
aXMpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IGY1NTM4NTAyNmQ0
Zi4uZTY3NzdlYjgwZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMTM0LDYgKzEzNCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzR3JpZEludGVnZXJSZXBlYXRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2xhc3NUeXBlID09IEdyaWRJbnRlZ2VyUmVwZWF0Q2xhc3M7IH0KICAgICBib29sIGlz
R3JpZFRlbXBsYXRlQXJlYXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEdy
aWRUZW1wbGF0ZUFyZWFzQ2xhc3M7IH0KICAgICBib29sIGlzR3JpZExpbmVOYW1lc1ZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gR3JpZExpbmVOYW1lc0NsYXNzOyB9CisgICAg
Ym9vbCBpc1N1YmdyaWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFN1Ymdy
aWRDbGFzczsgfQogICAgIGJvb2wgaXNVbmljb2RlUmFuZ2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2xhc3NUeXBlID09IFVuaWNvZGVSYW5nZUNsYXNzOyB9CiAKICAgICBib29sIGlzVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFZhcmlhYmxl
UmVmZXJlbmNlQ2xhc3M7IH0KQEAgLTIyNCw2ICsyMjUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IEdyaWRMaW5lTmFtZXNDbGFzcywKICAgICAgICAgR3JpZEF1dG9SZXBlYXRDbGFzcywKICAgICAg
ICAgR3JpZEludGVnZXJSZXBlYXRDbGFzcywKKyAgICAgICAgU3ViZ3JpZENsYXNzLAogICAgICAg
ICAvLyBEbyBub3QgYXBwZW5kIG5vbi1saXN0IGNsYXNzIHR5cGVzIGhlcmUuCiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCAyNDJlZmY4ZTZlN2MuLmU5
MjRmMmQzMzU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTE0
MjAsNiArMTQyMCw3IEBAIHNwYW4KIAogLy8gZ3JpZC10ZW1wbGF0ZS17Y29sdW1uc3xyb3dzfQog
bWlubWF4CitzdWJncmlkCiAKIC8vIGdyaWQtYXV0by1mbG93CiBhdXRvLWZsb3cKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwCmluZGV4IDU1ZDM2YmI1
ODYxNi4uOTEzY2RhMGEyN2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyQ29udGV4dC5jcHAKQEAgLTExMSw2ICsxMTEsNyBAQCBDU1NQYXJzZXJDb250ZXh0OjpD
U1NQYXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzaGVl
dEJhcwogICAgICwgZ3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxl
ZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRl
cnBvbGF0aW9uRW5hYmxlZCgpIH0KICAgICAsIGdyYWRpZW50SW50ZXJwb2xhdGlvbkNvbG9yU3Bh
Y2VzRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzR3JhZGllbnRJbnRlcnBvbGF0aW9u
Q29sb3JTcGFjZXNFbmFibGVkKCkgfQogICAgICwgaW5wdXRTZWN1cml0eUVuYWJsZWQgeyBkb2N1
bWVudC5zZXR0aW5ncygpLmNzc0lucHV0U2VjdXJpdHlFbmFibGVkKCkgfQorICAgICwgc3ViZ3Jp
ZEVuYWJsZWQgeyBkb2N1bWVudC5zZXR0aW5ncygpLnN1YmdyaWRFbmFibGVkKCkgfQogI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgLCBhdHRhY2htZW50RW5hYmxlZCB7IFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFi
bGVkKCkgfQogI2VuZGlmCkBAIC0xNjQsNiArMTY1LDcgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGEsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGIpCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAgICAgJiYgYS5hdHRhY2htZW50RW5hYmxlZCA9
PSBiLmF0dGFjaG1lbnRFbmFibGVkCiAjZW5kaWYKKyAgICAgICAgJiYgYS5zdWJncmlkRW5hYmxl
ZCA9PSBiLnN1YmdyaWRFbmFibGVkCiAgICAgOwogfQogCkBAIC0yMDgsNyArMjEwLDggQEAgdm9p
ZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiAj
ZW5kaWYKICAgICAgICAgfCBjb250ZXh0LmFjY2VudENvbG9yRW5hYmxlZCAgICAgICAgICAgICAg
ICAgICAgICAgIDw8IDI5CiAgICAgICAgIHwgY29udGV4dC5pbnB1dFNlY3VyaXR5RW5hYmxlZCAg
ICAgICAgICAgICAgICAgICAgICA8PCAzMAotICAgICAgICB8IGNvbnRleHQubW9kZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMzE7IC8vIFRoaXMgaXMgbXVsdGlwbGUg
Yml0cywgc28ga2VlcCBpdCBsYXN0LgorICAgICAgICB8IGNvbnRleHQuc3ViZ3JpZEVuYWJsZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMzEKKyAgICAgICAgfCAodW5zaWduZWQgbG9u
ZyBsb25nKWNvbnRleHQubW9kZSAgICAgICAgICAgICAgICAgIDw8IDMyOyAvLyBUaGlzIGlzIG11
bHRpcGxlIGJpdHMsIHNvIGtlZXAgaXQgbGFzdC4KICAgICBhZGQoaGFzaGVyLCBjb250ZXh0LmJh
c2VVUkwsIGNvbnRleHQuY2hhcnNldCwgYml0cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKaW5kZXggZDg5YjkzODZjNTczLi5jODZlZDZjOGNm
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCkBA
IC04OSw2ICs4OSw3IEBAIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0IHsKICAgICBib29sIGdyYWRp
ZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwogICAg
IGJvb2wgZ3JhZGllbnRJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZXNFbmFibGVkIHsgZmFsc2UgfTsK
ICAgICBib29sIGlucHV0U2VjdXJpdHlFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIHN1Ymdy
aWRFbmFibGVkIHsgZmFsc2UgfTsKIAogICAgIC8vIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggYmZiOWI2MTE1OTIyLi5mMjVhYThjM2Ri
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiQ1NTUmF5VmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NSZWZsZWN0VmFsdWUuaCIKICNpbmNsdWRlICJDU1NTaGFkb3dWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU1N1YmdyaWRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1RpbWluZ0Z1bmN0aW9uVmFsdWUu
aCIKICNpbmNsdWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Zhcmlh
YmxlUGFyc2VyLmgiCkBAIC0zNjA1LDcgKzM2MDYsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBjb25zdW1lR3JpZFRyYWNrU2l6ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFy
cwogfQogCiAvLyBBcHBlbmRzIHRvIHRoZSBwYXNzZWQgaW4gQ1NTR3JpZExpbmVOYW1lc1ZhbHVl
IGlmIGFueSwgb3RoZXJ3aXNlIGNyZWF0ZXMgYSBuZXcgb25lLiBSZXR1cm5zIG51bGxwdHIgaWYg
YW4gZW1wdHkgbGlzdCBpcyBjb25zdW1lZC4KLXN0YXRpYyBSZWZQdHI8Q1NTR3JpZExpbmVOYW1l
c1ZhbHVlPiBjb25zdW1lR3JpZExpbmVOYW1lcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Q1NTR3JpZExpbmVOYW1lc1ZhbHVlKiBsaW5lTmFtZXMgPSBudWxscHRyKQorc3RhdGljIFJlZlB0
cjxDU1NHcmlkTGluZU5hbWVzVmFsdWU+IGNvbnN1bWVHcmlkTGluZU5hbWVzKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NHcmlkTGluZU5hbWVzVmFsdWUqIGxpbmVOYW1lcyA9IG51bGxw
dHIsIGJvb2wgYWxsb3dFbXB0eSA9IGZhbHNlKQogewogICAgIENTU1BhcnNlclRva2VuUmFuZ2Ug
cmFuZ2VDb3B5ID0gcmFuZ2U7CiAgICAgaWYgKHJhbmdlQ29weS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLnR5cGUoKSAhPSBMZWZ0QnJhY2tldFRva2VuKQpAQCAtMzYxOSw3ICszNjIwLDcg
QEAgc3RhdGljIFJlZlB0cjxDU1NHcmlkTGluZU5hbWVzVmFsdWU+IGNvbnN1bWVHcmlkTGluZU5h
bWVzKENTU1BhcnNlclRva2VuUmFuZ2UmIHIKICAgICBpZiAocmFuZ2VDb3B5LmNvbnN1bWVJbmNs
dWRpbmdXaGl0ZXNwYWNlKCkudHlwZSgpICE9IFJpZ2h0QnJhY2tldFRva2VuKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICByYW5nZSA9IHJhbmdlQ29weTsKLSAgICByZXR1cm4gcmVzdWx0
LT5sZW5ndGgoKSA/IHJlc3VsdCA6IG51bGxwdHI7CisgICAgcmV0dXJuIChyZXN1bHQtPmxlbmd0
aCgpIHx8IGFsbG93RW1wdHkpID8gcmVzdWx0IDogbnVsbHB0cjsKIH0KIAogc3RhdGljIGJvb2wg
Y29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1ZhbHVlTGlzdCYgbGlzdCwgYm9vbCYg
aXNBdXRvUmVwZWF0LCBib29sJiBhbGxUcmFja3NBcmVGaXhlZFNpemVkKQpAQCAtMzY3NSwxMCAr
MzY3Niw1OCBAQCBzdGF0aWMgYm9vbCBjb25zdW1lR3JpZFRyYWNrUmVwZWF0RnVuY3Rpb24oQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlcgogICAgIHJldHVybiB0cnVlOwogfQog
CitzdGF0aWMgYm9vbCBjb25zdW1lR3JpZE5hbWVSZXBlYXRGdW5jdGlvbihDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTVmFsdWVMaXN0JiBsaXN0KQoreworICAgIENTU1BhcnNlclRva2Vu
UmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CisgICAgc2l6ZV90IHJlcGV0aXRp
b25zID0gMTsKKyAgICBib29sIGlzQXV0b1JlcGVhdCA9IGlkZW50TWF0Y2hlczxDU1NWYWx1ZUF1
dG9GaWxsPihhcmdzLnBlZWsoKS5pZCgpKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiByZXBl
YXRlZFZhbHVlczsKKyAgICBpZiAoaXNBdXRvUmVwZWF0KQorICAgICAgICByZXBlYXRlZFZhbHVl
cyA9IENTU0dyaWRBdXRvUmVwZWF0VmFsdWU6OmNyZWF0ZShhcmdzLmNvbnN1bWVJbmNsdWRpbmdX
aGl0ZXNwYWNlKCkuaWQoKSk7CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gcmVwZXRpdGlvbiA9
IGNvbnN1bWVQb3NpdGl2ZUludGVnZXJSYXcoYXJncyk7CisgICAgICAgIGlmICghcmVwZXRpdGlv
bikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVwZXRpdGlvbnMgPSBjbGFt
cFRvPHNpemVfdD4oc3RhdGljX2Nhc3Q8c2l6ZV90PigqcmVwZXRpdGlvbiksIDAsIEdyaWRQb3Np
dGlvbjo6bWF4KCkpOworICAgICAgICByZXBlYXRlZFZhbHVlcyA9IENTU0dyaWRJbnRlZ2VyUmVw
ZWF0VmFsdWU6OmNyZWF0ZShyZXBldGl0aW9ucyk7CisgICAgfQorICAgIGlmICghY29uc3VtZUNv
bW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhhcmdzLCBudWxscHRyLCB0
cnVlKTsKKyAgICBpZiAoIWxpbmVOYW1lcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
cGVhdGVkVmFsdWVzLT5hcHBlbmQobGluZU5hbWVzLnJlbGVhc2VOb25OdWxsKCkpOworCisgICAg
d2hpbGUgKCFhcmdzLmF0RW5kKCkpIHsKKyAgICAgICAgbGluZU5hbWVzID0gY29uc3VtZUdyaWRM
aW5lTmFtZXMoYXJncywgbnVsbHB0ciwgdHJ1ZSk7CisgICAgICAgIGlmICghbGluZU5hbWVzKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXBlYXRlZFZhbHVlcy0+YXBwZW5k
KGxpbmVOYW1lcy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisKKyAgICBsaXN0LmFwcGVuZChy
ZXBlYXRlZFZhbHVlcy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
ZW51bSBUcmFja0xpc3RUeXBlIHsgR3JpZFRlbXBsYXRlLCBHcmlkVGVtcGxhdGVOb1JlcGVhdCwg
R3JpZEF1dG8gfTsKIAotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUdyaWRUcmFja0xp
c3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSwgVHJhY2tMaXN0VHlwZSB0cmFja0xpc3RUeXBlKQorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4g
Y29uc3VtZUdyaWRUcmFja0xpc3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFRyYWNrTGlzdFR5cGUgdHJhY2tMaXN0VHlwZSkKIHsK
KyAgICBpZiAodHJhY2tMaXN0VHlwZSA9PSBHcmlkVGVtcGxhdGUgJiYgY29udGV4dC5zdWJncmlk
RW5hYmxlZCAmJiByYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZVN1YmdyaWQpIHsKKyAgICAg
ICAgY29uc3VtZUlkZW50KHJhbmdlKTsKKyAgICAgICAgYXV0byB2YWx1ZXMgPSBDU1NTdWJncmlk
VmFsdWU6OmNyZWF0ZSgpOworICAgICAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkgJiYgcmFuZ2Uu
cGVlaygpLnR5cGUoKSAhPSBEZWxpbWl0ZXJUb2tlbikgeworICAgICAgICAgICAgaWYgKHJhbmdl
LnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVSZXBlYXQpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIWNvbnN1bWVHcmlkTmFtZVJlcGVhdEZ1bmN0aW9uKHJhbmdlLCB2YWx1ZXMpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
YXV0byB2YWx1ZSA9IGNvbnN1bWVHcmlkTGluZU5hbWVzKHJhbmdlLCBudWxscHRyLCB0cnVlKSkK
KyAgICAgICAgICAgICAgICB2YWx1ZXMtPmFwcGVuZCh2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gdmFsdWVzOworICAgIH0KICAgICBib29sIGFsbG93R3JpZExp
bmVOYW1lcyA9IHRyYWNrTGlzdFR5cGUgIT0gR3JpZEF1dG87CiAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAg
IGlmICghYWxsb3dHcmlkTGluZU5hbWVzICYmIHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gTGVmdEJy
YWNrZXRUb2tlbikKQEAgLTM2OTUsMTIgKzM3NDQsMTIgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUdyaWRUcmFja0xpc3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnMKICAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVSZXBl
YXQpIHsKICAgICAgICAgICAgIGlmICghYWxsb3dSZXBlYXQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBpZiAoIWNvbnN1bWVHcmlkVHJhY2tSZXBlYXRGdW5j
dGlvbihyYW5nZSwgY3NzUGFyc2VyTW9kZSwgKnZhbHVlcywgaXNBdXRvUmVwZWF0LCBhbGxUcmFj
a3NBcmVGaXhlZFNpemVkKSkKKyAgICAgICAgICAgIGlmICghY29uc3VtZUdyaWRUcmFja1JlcGVh
dEZ1bmN0aW9uKHJhbmdlLCBjb250ZXh0Lm1vZGUsICp2YWx1ZXMsIGlzQXV0b1JlcGVhdCwgYWxs
VHJhY2tzQXJlRml4ZWRTaXplZCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgICAgICBpZiAoaXNBdXRvUmVwZWF0ICYmIHNlZW5BdXRvUmVwZWF0KQogICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgc2VlbkF1dG9SZXBlYXQgPSBzZWVu
QXV0b1JlcGVhdCB8fCBpc0F1dG9SZXBlYXQ7Ci0gICAgICAgIH0gZWxzZSBpZiAoUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKHJhbmdlLCBjc3NQYXJzZXJNb2Rl
KSkgeworICAgICAgICB9IGVsc2UgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBjb25zdW1l
R3JpZFRyYWNrU2l6ZShyYW5nZSwgY29udGV4dC5tb2RlKSkgewogICAgICAgICAgICAgaWYgKGFs
bFRyYWNrc0FyZUZpeGVkU2l6ZWQpCiAgICAgICAgICAgICAgICAgYWxsVHJhY2tzQXJlRml4ZWRT
aXplZCA9IGlzR3JpZFRyYWNrRml4ZWRTaXplZCgqdmFsdWUpOwogICAgICAgICAgICAgdmFsdWVz
LT5hcHBlbmQodmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CkBAIC0zNzE4LDExICszNzY3LDExIEBA
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHcmlkVHJhY2tMaXN0KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzCiAgICAgcmV0dXJuIHZhbHVlczsKIH0KIAotc3RhdGlj
IFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUdyaWRUZW1wbGF0ZXNSb3dzT3JDb2x1bW5zKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCitzdGF0
aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lR3JpZFRlbXBsYXRlc1Jvd3NPckNvbHVtbnMoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAg
cmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7Ci0gICAgcmV0dXJuIGNvbnN1bWVHcmlkVHJhY2tM
aXN0KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBHcmlkVGVtcGxhdGUpOworICAgIHJldHVybiBjb25z
dW1lR3JpZFRyYWNrTGlzdChyYW5nZSwgY29udGV4dCwgR3JpZFRlbXBsYXRlKTsKIH0KIAogc3Rh
dGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUdyaWRUZW1wbGF0ZUFyZWFzKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQpAQCAtNDYyOSwxMCArNDY3OCwxMCBAQCBSZWZQdHI8Q1NTVmFsdWU+
IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHksIENTUwogICAgICAgICByZXR1cm4gY29uc3VtZUdyaWRMaW5lKG1fcmFuZ2UpOwogICAgIGNh
c2UgQ1NTUHJvcGVydHlHcmlkQXV0b0NvbHVtbnM6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRB
dXRvUm93czoKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1f
Y29udGV4dC5tb2RlLCBHcmlkQXV0byk7CisgICAgICAgIHJldHVybiBjb25zdW1lR3JpZFRyYWNr
TGlzdChtX3JhbmdlLCBtX2NvbnRleHQsIEdyaWRBdXRvKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
R3JpZFRlbXBsYXRlQ29sdW1uczoKICAgICBjYXNlIENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlUm93
czoKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVHcmlkVGVtcGxhdGVzUm93c09yQ29sdW1ucyhtX3Jh
bmdlLCBtX2NvbnRleHQubW9kZSk7CisgICAgICAgIHJldHVybiBjb25zdW1lR3JpZFRlbXBsYXRl
c1Jvd3NPckNvbHVtbnMobV9yYW5nZSwgbV9jb250ZXh0KTsKICAgICBjYXNlIENTU1Byb3BlcnR5
R3JpZFRlbXBsYXRlQXJlYXM6CiAgICAgICAgIHJldHVybiBjb25zdW1lR3JpZFRlbXBsYXRlQXJl
YXMobV9yYW5nZSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUdyaWRBdXRvRmxvdzoKQEAgLTU4Nzks
NyArNTkyOCw3IEBAIGJvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkVGVtcGxhdGVS
b3dzQW5kQXJlYXNBbmRDb2x1bW5zKENTU1Byb3BlcnR5SUQKICAgICBpZiAoIW1fcmFuZ2UuYXRF
bmQoKSkgewogICAgICAgICBpZiAoIWNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9y
YW5nZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNvbHVtbnNWYWx1ZSA9
IGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBHcmlkVGVtcGxh
dGVOb1JlcGVhdCk7CisgICAgICAgIGNvbHVtbnNWYWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0
KG1fcmFuZ2UsIG1fY29udGV4dCwgR3JpZFRlbXBsYXRlTm9SZXBlYXQpOwogICAgICAgICBpZiAo
IWNvbHVtbnNWYWx1ZSB8fCAhbV9yYW5nZS5hdEVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0gZWxzZSB7CkBAIC01OTA2LDEyICs1OTU1LDEyIEBAIGJvb2wgQ1NTUHJvcGVy
dHlQYXJzZXI6OmNvbnN1bWVHcmlkVGVtcGxhdGVTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCBzaG9y
dGhhbmRJZCwKIAogICAgIC8vIDItIDxncmlkLXRlbXBsYXRlLXJvd3M+IC8gPGdyaWQtdGVtcGxh
dGUtY29sdW1ucz4KICAgICBpZiAoIXJvd3NWYWx1ZSkKLSAgICAgICAgcm93c1ZhbHVlID0gY29u
c3VtZUdyaWRUcmFja0xpc3QobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUsIEdyaWRUZW1wbGF0ZSk7
CisgICAgICAgIHJvd3NWYWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29u
dGV4dCwgR3JpZFRlbXBsYXRlKTsKIAogICAgIGlmIChyb3dzVmFsdWUpIHsKICAgICAgICAgaWYg
KCFjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKG1fcmFuZ2UpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IGNvbHVtbnNWYWx1ZSA9IGNv
bnN1bWVHcmlkVGVtcGxhdGVzUm93c09yQ29sdW1ucyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7
CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gY29sdW1uc1ZhbHVlID0gY29uc3VtZUdyaWRUZW1w
bGF0ZXNSb3dzT3JDb2x1bW5zKG1fcmFuZ2UsIG1fY29udGV4dCk7CiAgICAgICAgIGlmICghY29s
dW1uc1ZhbHVlIHx8ICFtX3JhbmdlLmF0RW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTU5ODUsNyArNjAzNCw3IEBAIGJvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVH
cmlkU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQogICAgICAgICBpZiAoY29uc3VtZVNsYXNoSW5j
bHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkKICAgICAgICAgICAgIGF1dG9Sb3dzVmFsdWUgPSBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1
dG8pOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1dG9Sb3dzVmFsdWUgPSBjb25zdW1l
R3JpZFRyYWNrTGlzdChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSwgR3JpZEF1dG8pOworICAgICAg
ICAgICAgYXV0b1Jvd3NWYWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29u
dGV4dCwgR3JpZEF1dG8pOwogICAgICAgICAgICAgaWYgKCFhdXRvUm93c1ZhbHVlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmICghY29uc3VtZVNsYXNoSW5j
bHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkKQEAgLTU5OTMsNyArNjA0Miw3IEBAIGJvb2wgQ1NT
UHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQogICAg
ICAgICB9CiAgICAgICAgIGlmIChtX3JhbmdlLmF0RW5kKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHRlbXBsYXRlQ29sdW1ucyA9IGNvbnN1bWVHcmlkVGVtcGxhdGVzUm93
c09yQ29sdW1ucyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7CisgICAgICAgIHRlbXBsYXRlQ29s
dW1ucyA9IGNvbnN1bWVHcmlkVGVtcGxhdGVzUm93c09yQ29sdW1ucyhtX3JhbmdlLCBtX2NvbnRl
eHQpOwogICAgICAgICBpZiAoIXRlbXBsYXRlQ29sdW1ucykKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgdGVtcGxhdGVSb3dzID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKQEAgLTYwMTEsNyArNjA2MCw3IEBA
IGJvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkU2hvcnRoYW5kKGJvb2wgaW1wb3J0
YW50KQogICAgICAgICBpZiAobV9yYW5nZS5hdEVuZCgpKQogICAgICAgICAgICAgYXV0b0NvbHVt
bnNWYWx1ZSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlQXV0byk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXV0b0NvbHVtbnNW
YWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tMaXN0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBHcmlk
QXV0byk7CisgICAgICAgICAgICBhdXRvQ29sdW1uc1ZhbHVlID0gY29uc3VtZUdyaWRUcmFja0xp
c3QobV9yYW5nZSwgbV9jb250ZXh0LCBHcmlkQXV0byk7CiAgICAgICAgICAgICBpZiAoIWF1dG9D
b2x1bW5zVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKaW5kZXggNTYwMmQ3YzJkNGQ1Li4zN2NhOTNmMDNhNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTYxLDE3ICs2MSwyNCBAQCB2b2lkIEdy
aWQ6OmVuc3VyZUdyaWRTaXplKHVuc2lnbmVkIG1heGltdW1Sb3dTaXplLCB1bnNpZ25lZCBtYXhp
bXVtQ29sdW1uU2l6ZSkKICAgICB9CiB9CiAKLXZvaWQgR3JpZDo6aW5zZXJ0KFJlbmRlckJveCYg
Y2hpbGQsIGNvbnN0IEdyaWRBcmVhJiBhcmVhKQorR3JpZEFyZWEgR3JpZDo6aW5zZXJ0KFJlbmRl
ckJveCYgY2hpbGQsIGNvbnN0IEdyaWRBcmVhJiBhcmVhKQogewotICAgIEFTU0VSVChhcmVhLnJv
d3MuaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSAmJiBhcmVhLmNvbHVtbnMuaXNUcmFuc2xhdGVkRGVm
aW5pdGUoKSk7Ci0gICAgZW5zdXJlR3JpZFNpemUoYXJlYS5yb3dzLmVuZExpbmUoKSwgYXJlYS5j
b2x1bW5zLmVuZExpbmUoKSk7CisgICAgR3JpZEFyZWEgY2xhbXBlZCA9IGFyZWE7CisgICAgaWYg
KG1fbWF4Um93cykKKyAgICAgICAgY2xhbXBlZC5yb3dzLmNsYW1wKG1fbWF4Um93cyk7CisgICAg
aWYgKG1fbWF4Q29sdW1ucykKKyAgICAgICAgY2xhbXBlZC5jb2x1bW5zLmNsYW1wKG1fbWF4Q29s
dW1ucyk7CiAKLSAgICBmb3IgKGF1dG8gcm93IDogYXJlYS5yb3dzKSB7Ci0gICAgICAgIGZvciAo
YXV0byBjb2x1bW4gOiBhcmVhLmNvbHVtbnMpCisgICAgQVNTRVJUKGNsYW1wZWQucm93cy5pc1Ry
YW5zbGF0ZWREZWZpbml0ZSgpICYmIGNsYW1wZWQuY29sdW1ucy5pc1RyYW5zbGF0ZWREZWZpbml0
ZSgpKTsKKyAgICBlbnN1cmVHcmlkU2l6ZShjbGFtcGVkLnJvd3MuZW5kTGluZSgpLCBjbGFtcGVk
LmNvbHVtbnMuZW5kTGluZSgpKTsKKworICAgIGZvciAoYXV0byByb3cgOiBjbGFtcGVkLnJvd3Mp
IHsKKyAgICAgICAgZm9yIChhdXRvIGNvbHVtbiA6IGNsYW1wZWQuY29sdW1ucykKICAgICAgICAg
ICAgIG1fZ3JpZFtyb3ddW2NvbHVtbl0uYXBwZW5kKGNoaWxkKTsKICAgICB9CiAKLSAgICBzZXRH
cmlkSXRlbUFyZWEoY2hpbGQsIGFyZWEpOworICAgIHNldEdyaWRJdGVtQXJlYShjaGlsZCwgY2xh
bXBlZCk7CisgICAgcmV0dXJuIGNsYW1wZWQ7CiB9CiAKIHZvaWQgR3JpZDo6c2V0RXhwbGljaXRH
cmlkU3RhcnQodW5zaWduZWQgcm93U3RhcnQsIHVuc2lnbmVkIGNvbHVtblN0YXJ0KQpAQCAtODUs
NiArOTIsMjYgQEAgdW5zaWduZWQgR3JpZDo6ZXhwbGljaXRHcmlkU3RhcnQoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKICAgICByZXR1cm4gZGlyZWN0aW9uID09IEZv
clJvd3MgPyBtX2V4cGxpY2l0Um93U3RhcnQgOiBtX2V4cGxpY2l0Q29sdW1uU3RhcnQ7CiB9CiAK
K3ZvaWQgR3JpZDo6c2V0Q2xhbXBpbmdGb3JTdWJncmlkKHVuc2lnbmVkIG1heFJvd3MsIHVuc2ln
bmVkIG1heENvbHVtbnMpCit7CisgICAgbV9tYXhSb3dzID0gbWF4Um93czsKKyAgICBtX21heENv
bHVtbnMgPSBtYXhDb2x1bW5zOworfQorCit2b2lkIEdyaWQ6OmNsYW1wQW5kVHJhbnNsYXRlVG9J
bXBsaWNpdEdyaWQoR3JpZEFyZWEmIGFyZWEpCit7CisgICAgaWYgKCFhcmVhLnJvd3MuaXNJbmRl
ZmluaXRlKCkpIHsKKyAgICAgICAgaWYgKG1fbWF4Um93cykKKyAgICAgICAgICAgIGFyZWEucm93
cy5jbGFtcChtX21heFJvd3MpOworICAgICAgICBhcmVhLnJvd3MudHJhbnNsYXRlKGV4cGxpY2l0
R3JpZFN0YXJ0KEZvclJvd3MpKTsKKyAgICB9CisgICAgaWYgKCFhcmVhLmNvbHVtbnMuaXNJbmRl
ZmluaXRlKCkpIHsKKyAgICAgICAgaWYgKG1fbWF4Q29sdW1ucykKKyAgICAgICAgICAgIGFyZWEu
Y29sdW1ucy5jbGFtcChtX21heENvbHVtbnMpOworICAgICAgICBhcmVhLmNvbHVtbnMudHJhbnNs
YXRlKGV4cGxpY2l0R3JpZFN0YXJ0KEZvckNvbHVtbnMpKTsKKyAgICB9Cit9CisKIEdyaWRBcmVh
IEdyaWQ6OmdyaWRJdGVtQXJlYShjb25zdCBSZW5kZXJCb3gmIGl0ZW0pIGNvbnN0CiB7CiAgICAg
QVNTRVJUKG1fZ3JpZEl0ZW1BcmVhLmNvbnRhaW5zKCZpdGVtKSk7CkBAIC0xNjEsNiArMTg4LDgg
QEAgdm9pZCBHcmlkOjpzZXROZWVkc0l0ZW1zUGxhY2VtZW50KGJvb2wgbmVlZHNJdGVtc1BsYWNl
bWVudCkKICAgICBtX2F1dG9SZXBlYXRFbXB0eVJvd3MgPSBudWxscHRyOwogICAgIG1fYXV0b1Jl
cGVhdENvbHVtbnMgPSAwOwogICAgIG1fYXV0b1JlcGVhdFJvd3MgPSAwOworICAgIG1fbWF4Q29s
dW1ucyA9IDA7CisgICAgbV9tYXhSb3dzID0gMDsKIH0KIAogR3JpZEl0ZXJhdG9yOjpHcmlkSXRl
cmF0b3IoY29uc3QgR3JpZCYgZ3JpZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
biwgdW5zaWduZWQgZml4ZWRUcmFja0luZGV4LCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tJbmRleCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZC5oCmluZGV4IDcyY2FkZjY4ZWY0ZC4uMTFkOWU2OGZiODE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIG51bVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCiAgICAg
dm9pZCBlbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93U2l6ZSwgdW5zaWduZWQgbWF4
aW11bUNvbHVtblNpemUpOwotICAgIHZvaWQgaW5zZXJ0KFJlbmRlckJveCYsIGNvbnN0IEdyaWRB
cmVhJik7CisgICAgR3JpZEFyZWEgaW5zZXJ0KFJlbmRlckJveCYsIGNvbnN0IEdyaWRBcmVhJik7
CiAKICAgICAvLyBOb3RlIHRoYXQgZWFjaCBpbiBmbG93IGNoaWxkIG9mIGEgZ3JpZCBjb250YWlu
ZXIgYmVjb21lcyBhIGdyaWQgaXRlbS4gVGhpcyBtZWFucyB0aGF0CiAgICAgLy8gdGhpcyBtZXRo
b2Qgd2lsbCByZXR1cm4gZmFsc2UgZm9yIGEgZ3JpZCBjb250YWluZXIgd2l0aCBvbmx5IG91dCBv
ZiBmbG93IGNoaWxkcmVuLgpAQCAtNjcsNiArNjcsMTAgQEAgcHVibGljOgogICAgIHVuc2lnbmVk
IGF1dG9SZXBlYXRUcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKICAgICB2
b2lkIHNldEF1dG9SZXBlYXRUcmFja3ModW5zaWduZWQgYXV0b1JlcGVhdFJvd3MsIHVuc2lnbmVk
IGF1dG9SZXBlYXRDb2x1bW5zKTsKIAorICAgIHZvaWQgc2V0Q2xhbXBpbmdGb3JTdWJncmlkKHVu
c2lnbmVkIG1heFJvd3MsIHVuc2lnbmVkIG1heENvbHVtbnMpOworCisgICAgdm9pZCBjbGFtcEFu
ZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlkKEdyaWRBcmVhJik7CisKICAgICB2b2lkIHNldEF1dG9S
ZXBlYXRFbXB0eUNvbHVtbnMoc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0Pik7
CiAgICAgdm9pZCBzZXRBdXRvUmVwZWF0RW1wdHlSb3dzKHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVk
VHJhY2tJbmRleFNldD4pOwogCkBAIC05Miw2ICs5Niw5IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9hdXRvUmVwZWF0Q29sdW1ucyB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2F1dG9SZXBlYXRS
b3dzIHsgMCB9OwogCisgICAgdW5zaWduZWQgbV9tYXhDb2x1bW5zIHsgMCB9OworICAgIHVuc2ln
bmVkIG1fbWF4Um93cyB7IDAgfTsKKwogICAgIGJvb2wgbV9uZWVkc0l0ZW1zUGxhY2VtZW50IHsg
dHJ1ZSB9OwogCiAgICAgR3JpZEFzTWF0cml4IG1fZ3JpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcAppbmRleCAyNmY4ZmNiYzBhYjIuLjllZmU0NWE4ZmZmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNDMwLDggKzQzMCw3IEBAIHZv
aWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYg
bWluTG9naWNhbFdpZHRoLCBMYXlvCiAgICAgTGF5b3V0VW5pdCBjaGlsZE1heFdpZHRoOwogICAg
IGJvb2wgaGFkRXhjbHVkZWRDaGlsZHJlbiA9IGNvbXB1dGVQcmVmZXJyZWRXaWR0aHNGb3JFeGNs
dWRlZENoaWxkcmVuKGNoaWxkTWluV2lkdGgsIGNoaWxkTWF4V2lkdGgpOwogCi0gICAgR3JpZCBn
cmlkKGNvbnN0X2Nhc3Q8UmVuZGVyR3JpZCY+KCp0aGlzKSk7Ci0gICAgR3JpZFRyYWNrU2l6aW5n
QWxnb3JpdGhtIGFsZ29yaXRobSh0aGlzLCBncmlkKTsKKyAgICBHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG0gYWxnb3JpdGhtKHRoaXMsIGNvbnN0X2Nhc3Q8R3JpZCY+KG1fZ3JpZCkpOwogICAgIHBs
YWNlSXRlbXNPbkdyaWQoYWxnb3JpdGhtLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgcGVyZm9ybUdy
aWRJdGVtc1ByZUxheW91dChhbGdvcml0aG0pOwpAQCAtNjI1LDcgKzYyNCw2IEBAIHZvaWQgUmVu
ZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIGFsZ29y
aXRobSwgc3RkOjpvcHRpCiAgICAgR3JpZCYgZ3JpZCA9IGFsZ29yaXRobS5tdXRhYmxlR3JpZCgp
OwogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1bW5zID0gY29tcHV0ZUF1dG9SZXBlYXRUcmFj
a3NDb3VudChGb3JDb2x1bW5zLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgIHVuc2lnbmVk
IGF1dG9SZXBlYXRSb3dzID0gY29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudChGb3JSb3dzLCBh
dmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9uKCkpOwotCiAgICAg
YXV0b1JlcGVhdFJvd3MgPSBjbGFtcEF1dG9SZXBlYXRUcmFja3MoRm9yUm93cywgYXV0b1JlcGVh
dFJvd3MpOwogICAgIGF1dG9SZXBlYXRDb2x1bW5zID0gY2xhbXBBdXRvUmVwZWF0VHJhY2tzKEZv
ckNvbHVtbnMsIGF1dG9SZXBlYXRDb2x1bW5zKTsKIApAQCAtNjU0LDEwICs2NTIsNyBAQCB2b2lk
IFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQoR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiBh
bGdvcml0aG0sIHN0ZDo6b3B0aQogICAgICAgICAgICAgY2hpbGQtPnNldE92ZXJyaWRpbmdDb250
YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodChzdGQ6Om51bGxvcHQpOwogCiAgICAgICAg
IEdyaWRBcmVhIGFyZWEgPSBncmlkLmdyaWRJdGVtQXJlYSgqY2hpbGQpOwotICAgICAgICBpZiAo
IWFyZWEucm93cy5pc0luZGVmaW5pdGUoKSkKLSAgICAgICAgICAgIGFyZWEucm93cy50cmFuc2xh
dGUoZ3JpZC5leHBsaWNpdEdyaWRTdGFydChGb3JSb3dzKSk7Ci0gICAgICAgIGlmICghYXJlYS5j
b2x1bW5zLmlzSW5kZWZpbml0ZSgpKQotICAgICAgICAgICAgYXJlYS5jb2x1bW5zLnRyYW5zbGF0
ZShncmlkLmV4cGxpY2l0R3JpZFN0YXJ0KEZvckNvbHVtbnMpKTsKKyAgICAgICAgZ3JpZC5jbGFt
cEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlkKGFyZWEpOwogCiAgICAgICAgIGlmIChhcmVhLnJv
d3MuaXNJbmRlZmluaXRlKCkgfHwgYXJlYS5jb2x1bW5zLmlzSW5kZWZpbml0ZSgpKSB7CiAgICAg
ICAgICAgICBncmlkLnNldEdyaWRJdGVtQXJlYSgqY2hpbGQsIGFyZWEpOwpAQCAtNjc0LDggKzY2
OSw4IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0mIGFsZ29yaXRobSwgc3RkOjpvcHRpCiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IGlmIChncmlkLmhhc0dyaWRJdGVtcygpKSB7Ci0gICAgICAgIEFTU0VSVChncmlkLm51bVRyYWNr
cyhGb3JSb3dzKSA+PSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50
KHN0eWxlKCksIGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhGb3JSb3dzKSkpOwotICAgICAgICBBU1NF
UlQoZ3JpZC5udW1UcmFja3MoRm9yQ29sdW1ucykgPj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpl
eHBsaWNpdEdyaWRDb2x1bW5Db3VudChzdHlsZSgpLCBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9y
Q29sdW1ucykpKTsKKyAgICAgICAgQVNTRVJUKGdyaWQubnVtVHJhY2tzKEZvclJvd3MpID49IEdy
aWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQoKnRoaXMpKTsKKyAgICAg
ICAgQVNTRVJUKGdyaWQubnVtVHJhY2tzKEZvckNvbHVtbnMpID49IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoKnRoaXMpKTsKICAgICB9CiAjZW5kaWYKIApA
QCAtNzI5LDMzICs3MjQsMzUgQEAgdm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3Jp
ZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYgZ3JpZCkgY29uc3QKICAgICBPcmRlckl0ZXJhdG9yUG9w
dWxhdG9yIHBvcHVsYXRvcihncmlkLm9yZGVySXRlcmF0b3IoKSk7CiAgICAgdW5zaWduZWQgZXhw
bGljaXRSb3dTdGFydCA9IDA7CiAgICAgdW5zaWduZWQgZXhwbGljaXRDb2x1bW5TdGFydCA9IDA7
Ci0gICAgdW5zaWduZWQgYXV0b1JlcGVhdFJvd3MgPSBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9y
Um93cyk7Ci0gICAgdW5zaWduZWQgYXV0b1JlcGVhdENvbHVtbnMgPSBncmlkLmF1dG9SZXBlYXRU
cmFja3MoRm9yQ29sdW1ucyk7Ci0gICAgdW5zaWduZWQgbWF4aW11bVJvd0luZGV4ID0gR3JpZFBv
c2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChzdHlsZSgpLCBhdXRvUmVwZWF0
Um93cyk7Ci0gICAgdW5zaWduZWQgbWF4aW11bUNvbHVtbkluZGV4ID0gR3JpZFBvc2l0aW9uc1Jl
c29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChzdHlsZSgpLCBhdXRvUmVwZWF0Q29sdW1u
cyk7CisgICAgdW5zaWduZWQgbWF4aW11bVJvd0luZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpleHBsaWNpdEdyaWRSb3dDb3VudCgqdGhpcyk7CisgICAgdW5zaWduZWQgbWF4aW11bUNvbHVt
bkluZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCgq
dGhpcyk7CiAKICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7CiAgICAgICAgIGlmICghcG9w
dWxhdG9yLmNvbGxlY3RDaGlsZCgqY2hpbGQpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIAotICAgICAgICBHcmlkU3BhbiByb3dQb3NpdGlvbnMgPSBHcmlkUG9zaXRpb25zUmVzb2x2
ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKHN0eWxlKCksICpjaGlsZCwgRm9yUm93
cywgYXV0b1JlcGVhdFJvd3MpOwotICAgICAgICBpZiAoIXJvd1Bvc2l0aW9ucy5pc0luZGVmaW5p
dGUoKSkgewotICAgICAgICAgICAgZXhwbGljaXRSb3dTdGFydCA9IHN0ZDo6bWF4PGludD4oZXhw
bGljaXRSb3dTdGFydCwgLXJvd1Bvc2l0aW9ucy51bnRyYW5zbGF0ZWRTdGFydExpbmUoKSk7Ci0g
ICAgICAgICAgICBtYXhpbXVtUm93SW5kZXggPSBzdGQ6Om1heDxpbnQ+KG1heGltdW1Sb3dJbmRl
eCwgcm93UG9zaXRpb25zLnVudHJhbnNsYXRlZEVuZExpbmUoKSk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAvLyBHcm93IHRoZSBncmlkIGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUg
cm93IHNwYW4sIGdldHRpbmcgdGhlIGxhcmdlc3Qgc3VjaCBzcGFuLgotICAgICAgICAgICAgdW5z
aWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1Bs
YWNlZEl0ZW0oKmNoaWxkLCBGb3JSb3dzKTsKLSAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9
IHN0ZDo6bWF4KG1heGltdW1Sb3dJbmRleCwgc3BhblNpemUpOworICAgICAgICBHcmlkU3BhbiBy
b3dQb3NpdGlvbnMgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25z
RnJvbVN0eWxlKCpjaGlsZCwgRm9yUm93cyk7CisgICAgICAgIGlmICghaXNTdWJncmlkUm93cygp
KSB7CisgICAgICAgICAgICBpZiAoIXJvd1Bvc2l0aW9ucy5pc0luZGVmaW5pdGUoKSkgeworICAg
ICAgICAgICAgICAgIGV4cGxpY2l0Um93U3RhcnQgPSBzdGQ6Om1heDxpbnQ+KGV4cGxpY2l0Um93
U3RhcnQsIC1yb3dQb3NpdGlvbnMudW50cmFuc2xhdGVkU3RhcnRMaW5lKCkpOworICAgICAgICAg
ICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4PGludD4obWF4aW11bVJvd0luZGV4LCBy
b3dQb3NpdGlvbnMudW50cmFuc2xhdGVkRW5kTGluZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgLy8gR3JvdyB0aGUgZ3JpZCBmb3IgaXRlbXMgd2l0aCBhIGRlZmlu
aXRlIHJvdyBzcGFuLCBnZXR0aW5nIHRoZSBsYXJnZXN0IHN1Y2ggc3Bhbi4KKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBzcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVG
b3JBdXRvUGxhY2VkSXRlbSgqY2hpbGQsIEZvclJvd3MpOworICAgICAgICAgICAgICAgIG1heGlt
dW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Sb3dJbmRleCwgc3BhblNpemUpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgR3JpZFNwYW4gY29sdW1uUG9zaXRpb25zID0g
R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShzdHls
ZSgpLCAqY2hpbGQsIEZvckNvbHVtbnMsIGF1dG9SZXBlYXRDb2x1bW5zKTsKLSAgICAgICAgaWYg
KCFjb2x1bW5Qb3NpdGlvbnMuaXNJbmRlZmluaXRlKCkpIHsKLSAgICAgICAgICAgIGV4cGxpY2l0
Q29sdW1uU3RhcnQgPSBzdGQ6Om1heDxpbnQ+KGV4cGxpY2l0Q29sdW1uU3RhcnQsIC1jb2x1bW5Q
b3NpdGlvbnMudW50cmFuc2xhdGVkU3RhcnRMaW5lKCkpOwotICAgICAgICAgICAgbWF4aW11bUNv
bHVtbkluZGV4ID0gc3RkOjptYXg8aW50PihtYXhpbXVtQ29sdW1uSW5kZXgsIGNvbHVtblBvc2l0
aW9ucy51bnRyYW5zbGF0ZWRFbmRMaW5lKCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgLy8gR3JvdyB0aGUgZ3JpZCBmb3IgaXRlbXMgd2l0aCBhIGRlZmluaXRlIGNvbHVtbiBzcGFu
LCBnZXR0aW5nIHRoZSBsYXJnZXN0IHN1Y2ggc3Bhbi4KLSAgICAgICAgICAgIHVuc2lnbmVkIHNw
YW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVt
KCpjaGlsZCwgRm9yQ29sdW1ucyk7Ci0gICAgICAgICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBz
dGQ6Om1heChtYXhpbXVtQ29sdW1uSW5kZXgsIHNwYW5TaXplKTsKKyAgICAgICAgR3JpZFNwYW4g
Y29sdW1uUG9zaXRpb25zID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0
aW9uc0Zyb21TdHlsZSgqY2hpbGQsIEZvckNvbHVtbnMpOworICAgICAgICBpZiAoIWlzU3ViZ3Jp
ZENvbHVtbnMoKSkgeworICAgICAgICAgICAgaWYgKCFjb2x1bW5Qb3NpdGlvbnMuaXNJbmRlZmlu
aXRlKCkpIHsKKyAgICAgICAgICAgICAgICBleHBsaWNpdENvbHVtblN0YXJ0ID0gc3RkOjptYXg8
aW50PihleHBsaWNpdENvbHVtblN0YXJ0LCAtY29sdW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZFN0
YXJ0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1h
eDxpbnQ+KG1heGltdW1Db2x1bW5JbmRleCwgY29sdW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZEVu
ZExpbmUoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEdyb3cg
dGhlIGdyaWQgZm9yIGl0ZW1zIHdpdGggYSBkZWZpbml0ZSBjb2x1bW4gc3BhbiwgZ2V0dGluZyB0
aGUgbGFyZ2VzdCBzdWNoIHNwYW4uCisgICAgICAgICAgICAgICAgdW5zaWduZWQgc3BhblNpemUg
PSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oKmNoaWxk
LCBGb3JDb2x1bW5zKTsKKyAgICAgICAgICAgICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6
Om1heChtYXhpbXVtQ29sdW1uSW5kZXgsIHNwYW5TaXplKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCiAgICAgICAgIGdyaWQuc2V0R3JpZEl0ZW1BcmVhKCpjaGlsZCwgeyByb3dQb3NpdGlv
bnMsIGNvbHVtblBvc2l0aW9ucyB9KTsKQEAgLTc2Myw2ICs3NjAsNyBAQCB2b2lkIFJlbmRlckdy
aWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcihHcmlkJiBncmlkKSBjb25z
dAogCiAgICAgZ3JpZC5zZXRFeHBsaWNpdEdyaWRTdGFydChleHBsaWNpdFJvd1N0YXJ0LCBleHBs
aWNpdENvbHVtblN0YXJ0KTsKICAgICBncmlkLmVuc3VyZUdyaWRTaXplKG1heGltdW1Sb3dJbmRl
eCArIGV4cGxpY2l0Um93U3RhcnQsIG1heGltdW1Db2x1bW5JbmRleCArIGV4cGxpY2l0Q29sdW1u
U3RhcnQpOworICAgIGdyaWQuc2V0Q2xhbXBpbmdGb3JTdWJncmlkKGlzU3ViZ3JpZFJvd3MoKSA/
IG1heGltdW1Sb3dJbmRleCA6IDAsIGlzU3ViZ3JpZENvbHVtbnMoKSA/IG1heGltdW1Db2x1bW5J
bmRleCA6IDApOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNy
ZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmIGdy
aWQsIGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBz
cGVjaWZpZWREaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJiBzcGVjaWZpZWRQb3NpdGlvbnMpIGNv
bnN0CkBAIC03OTYsNyArNzk0LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1h
am9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFZlY3RvcjxSZW4KICAgICAgICAg
aWYgKCFlbXB0eUdyaWRBcmVhKQogICAgICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVt
cHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKGdyaWQsICphdXRvR3Jp
ZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRp
b25zKTsKIAotICAgICAgICBncmlkLmluc2VydCgqYXV0b0dyaWRJdGVtLCAqZW1wdHlHcmlkQXJl
YSk7CisgICAgICAgICplbXB0eUdyaWRBcmVhID0gZ3JpZC5pbnNlcnQoKmF1dG9HcmlkSXRlbSwg
KmVtcHR5R3JpZEFyZWEpOwogCiAgICAgICAgIGlmICghaXNHcmlkQXV0b0Zsb3dEZW5zZSkKICAg
ICAgICAgICAgIG1pbm9yQXhpc0N1cnNvcnMuc2V0KG1ham9yQXhpc0luaXRpYWxQb3NpdGlvbiwg
aXNGb3JDb2x1bW5zID8gZW1wdHlHcmlkQXJlYS0+cm93cy5zdGFydExpbmUoKSA6IGVtcHR5R3Jp
ZEFyZWEtPmNvbHVtbnMuc3RhcnRMaW5lKCkpOwpAQCAtMTU5NCwxMSArMTU5MiwyOSBAQCBMYXlv
dXRVbml0IFJlbmRlckdyaWQ6OnJlc29sdmVBdXRvRW5kR3JpZFBvc2l0aW9uKEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlYwogICAgIHJldHVybiBjbGllbnRMb2dpY2FsV2lkdGgoKTsKIH0K
IAorYm9vbCBSZW5kZXJHcmlkOjppc1N1YmdyaWQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbikgY29uc3QKK3sKKyAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgaXNF
eGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICgoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gIXN0eWxlKCkuZ3JpZFN1YmdyaWRDb2x1bW5z
KCkgOiAhc3R5bGUoKS5ncmlkU3ViZ3JpZFJvd3MoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBpczxSZW5kZXJHcmlkPihwYXJlbnQoKSk7Cit9CisKK2Jvb2wgUmVuZGVyR3Jp
ZDo6aXNTdWJncmlkUm93cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzU3ViZ3JpZChGb3JSb3dz
KTsKK30KK2Jvb2wgUmVuZGVyR3JpZDo6aXNTdWJncmlkQ29sdW1ucygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGlzU3ViZ3JpZChGb3JDb2x1bW5zKTsKK30KKwogTGF5b3V0VW5pdCBSZW5kZXJHcmlk
OjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZsb3dDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxk
LCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChjaGls
ZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CiAgICAgYm9vbCBpc1Jvd0F4aXMgPSBkaXJlY3Rp
b24gPT0gRm9yQ29sdW1uczsKLSAgICBHcmlkU3BhbiBzcGFuID0gR3JpZFBvc2l0aW9uc1Jlc29s
dmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShzdHlsZSgpLCBjaGlsZCwgZGlyZWN0
aW9uLCBhdXRvUmVwZWF0Q291bnRGb3JEaXJlY3Rpb24oZGlyZWN0aW9uKSk7CisgICAgR3JpZFNw
YW4gc3BhbiA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9t
U3R5bGUoY2hpbGQsIGRpcmVjdGlvbik7CiAgICAgaWYgKHNwYW4uaXNJbmRlZmluaXRlKCkpCiAg
ICAgICAgIHJldHVybiBpc1Jvd0F4aXMgPyBjbGllbnRMb2dpY2FsV2lkdGgoKSA6IGNsaWVudExv
Z2ljYWxIZWlnaHQoKTsKIApAQCAtMTkwNCw3ICsxOTIwLDcgQEAgdW5zaWduZWQgUmVuZGVyR3Jp
ZDo6bnVtVHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEdy
aWQmIGcKICAgICAgICAgcmV0dXJuIGdyaWQubnVtVHJhY2tzKEZvclJvd3MpOwogCiAgICAgLy8g
RklYTUU6IFRoaXMgc3RpbGwgcmVxdWlyZXMga25vd2xlZGdlIGFib3V0IG1fZ3JpZCBpbnRlcm5h
bHMuCi0gICAgcmV0dXJuIGdyaWQubnVtVHJhY2tzKEZvclJvd3MpID8gZ3JpZC5udW1UcmFja3Mo
Rm9yQ29sdW1ucykgOiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNv
dW50KHN0eWxlKCksIGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhGb3JDb2x1bW5zKSk7CisgICAgcmV0
dXJuIGdyaWQubnVtVHJhY2tzKEZvclJvd3MpID8gZ3JpZC5udW1UcmFja3MoRm9yQ29sdW1ucykg
OiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KCp0aGlzKTsK
IH0KIAogdm9pZCBSZW5kZXJHcmlkOjpwYWludENoaWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJv
b2wgdXNlUHJpbnRSZWN0KQpAQCAtMTk2MSw0ICsxOTc3LDcxIEBAIGJvb2wgUmVuZGVyR3JpZDo6
aGFzQXV0b1NpemVJblJvd0F4aXMoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkgY29uc3QKICAgICBy
ZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLnN0eWxlKCkud2lkdGgoKS5p
c0F1dG8oKSA6IGNoaWxkLnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCk7CiB9CiAKK3N0YXRpYyBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gdHJhbnNwb3NlZERpcmVjdGlvbihHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cykKKyAgICAgICAgcmV0dXJuIEZvclJvd3M7CisgICAgcmV0dXJuIEZvckNvbHVtbnM7Cit9CisK
K2Jvb2wgUmVuZGVyR3JpZDo6Y29tcHV0ZUdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3Qg
UmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50
JiBzdGFydExpbmUsIGJvb2wmIHN0YXJ0SXNBdXRvLCBpbnQmIGVuZExpbmUsIGJvb2wmIGVuZElz
QXV0bykgY29uc3QKK3sKKyAgICBBU1NFUlQoY2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
OworICAgIGludCBsYXN0TGluZSA9IG51bVRyYWNrcyhkaXJlY3Rpb24sIG1fZ3JpZCk7CisgICAg
R3JpZFNwYW4gc3BhbiA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlv
bnNGcm9tU3R5bGUoY2hpbGQsIGRpcmVjdGlvbik7CisgICAgaWYgKHNwYW4uaXNJbmRlZmluaXRl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2lnbmVkIGV4cGxpY2l0U3RhcnQg
PSBtX2dyaWQuZXhwbGljaXRHcmlkU3RhcnQoZGlyZWN0aW9uKTsKKyAgICBzdGFydExpbmUgPSBz
cGFuLnVudHJhbnNsYXRlZFN0YXJ0TGluZSgpICsgZXhwbGljaXRTdGFydDsKKyAgICBlbmRMaW5l
ID0gc3Bhbi51bnRyYW5zbGF0ZWRFbmRMaW5lKCkgKyBleHBsaWNpdFN0YXJ0OworCisgICAgR3Jp
ZFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNoaWxk
LnN0eWxlKCkuZ3JpZEl0ZW1Db2x1bW5TdGFydCgpIDogY2hpbGQuc3R5bGUoKS5ncmlkSXRlbVJv
d1N0YXJ0KCk7CisgICAgR3JpZFBvc2l0aW9uIGVuZFBvc2l0aW9uID0gZGlyZWN0aW9uID09IEZv
ckNvbHVtbnMgPyBjaGlsZC5zdHlsZSgpLmdyaWRJdGVtQ29sdW1uRW5kKCkgOiBjaGlsZC5zdHls
ZSgpLmdyaWRJdGVtUm93RW5kKCk7CisKKyAgICBzdGFydElzQXV0byA9IHN0YXJ0UG9zaXRpb24u
aXNBdXRvKCkgfHwgc3RhcnRMaW5lIDwgMCB8fCBzdGFydExpbmUgPiBsYXN0TGluZTsKKyAgICBl
bmRJc0F1dG8gPSBlbmRQb3NpdGlvbi5pc0F1dG8oKSB8fCBlbmRMaW5lIDwgMCB8fCBlbmRMaW5l
ID4gbGFzdExpbmU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0dyaWRTcGFuIFJlbmRlckdyaWQ6
OmdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3sKKyAgICBpbnQgbGFzdExpbmUg
PSBudW1UcmFja3MoZGlyZWN0aW9uLCBtX2dyaWQpOworICAgIGludCBzdGFydExpbmUsIGVuZExp
bmU7CisgICAgYm9vbCBzdGFydElzQXV0bywgZW5kSXNBdXRvOworICAgIGlmICghY29tcHV0ZUdy
aWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY2hpbGQsIGRpcmVjdGlvbiwgc3RhcnRMaW5lLCBzdGFy
dElzQXV0bywgZW5kTGluZSwgZW5kSXNBdXRvKSkKKyAgICAgICAgcmV0dXJuIEdyaWRTcGFuOjp0
cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbigwLCBsYXN0TGluZSk7CisgICAgcmV0dXJuIEdyaWRT
cGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihzdGFydElzQXV0byA/IDAgOiBzdGFydExp
bmUsIGVuZElzQXV0byA/IGxhc3RMaW5lIDogZW5kTGluZSk7Cit9CisKK0dyaWRTcGFuIFJlbmRl
ckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3sKKyAgICBBU1NFUlQoaXM8UmVuZGVy
R3JpZD4oY2hpbGQucGFyZW50KCkpKTsKKworICAgIFJlbmRlckdyaWQqIHJlbmRlckdyaWQgPSBk
b3duY2FzdDxSZW5kZXJHcmlkPihjaGlsZC5wYXJlbnQoKSk7CisgICAgLy8gfGRpcmVjdGlvbnwg
aXMgc3BlY2lmaWVkIHJlbGF0aXZlIHRvIHRoaXMgZ3JpZCwgc3dpdGNoIGl0IGlmIHxjaGlsZHwn
cyBkaXJlY3QgcGFyZW50IGdyaWQKKyAgICAvLyBpcyB1c2luZyBhIGRpZmZlcmVudCB3cml0aW5n
IG1vZGUuCisgICAgaWYgKHJlbmRlckdyaWQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgZGlyZWN0aW9uID0gdHJhbnNwb3Nl
ZERpcmVjdGlvbihkaXJlY3Rpb24pOworICAgIEdyaWRTcGFuIHNwYW4gPSBjaGlsZC5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSA/IHJlbmRlckdyaWQtPmdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQo
Y2hpbGQsIGRpcmVjdGlvbikgOiByZW5kZXJHcmlkLT5jdXJyZW50R3JpZCgpLmdyaWRJdGVtU3Bh
bihjaGlsZCwgZGlyZWN0aW9uKTsKKworICAgIHdoaWxlIChyZW5kZXJHcmlkICE9IHRoaXMpIHsK
KyAgICAgICAgQVNTRVJUKGlzPFJlbmRlckdyaWQ+KHJlbmRlckdyaWQtPnBhcmVudCgpKSk7Cisg
ICAgICAgIFJlbmRlckdyaWQqIHBhcmVudCA9IGRvd25jYXN0PFJlbmRlckdyaWQ+KHJlbmRlckdy
aWQtPnBhcmVudCgpKTsKKworICAgICAgICBib29sIGlzU3ViZ3JpZCA9IGRpcmVjdGlvbiA9PSBG
b3JDb2x1bW5zID8gcmVuZGVyR3JpZC0+aXNTdWJncmlkQ29sdW1ucygpIDogcmVuZGVyR3JpZC0+
aXNTdWJncmlkUm93cygpOworCisgICAgICAgIGlmIChyZW5kZXJHcmlkLT5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpICE9IHBhcmVudC0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAg
ICAgICAgIGRpcmVjdGlvbiA9IHRyYW5zcG9zZWREaXJlY3Rpb24oZGlyZWN0aW9uKTsKKworICAg
ICAgICBHcmlkU3BhbiBwYXJlbnRTcGFuID0gcmVuZGVyR3JpZC0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkgPyBwYXJlbnQtPmdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoKnJlbmRlckdyaWQsIGRp
cmVjdGlvbikgOiAgcGFyZW50LT5jdXJyZW50R3JpZCgpLmdyaWRJdGVtU3BhbigqcmVuZGVyR3Jp
ZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgaWYgKGlzU3ViZ3JpZCkKKyAgICAgICAgICAgIHNwYW4u
dHJhbnNsYXRlVG8ocGFyZW50U3BhbiwgcGFyZW50LT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSAhPSByZW5kZXJHcmlkLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNwYW4gPSBwYXJlbnRTcGFuOworICAgICAgICBy
ZW5kZXJHcmlkID0gcGFyZW50OworICAgIH0KKyAgICByZXR1cm4gc3BhbjsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXgg
MjlhZTU5NDgwMDNlLi5iNDZlZmRhNmI1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuaApAQCAtODIsNiArODIsMTkgQEAgcHVibGljOgogCiAgICAgU3R5bGVDb250ZW50QWxp
Z25tZW50RGF0YSBjb250ZW50QWxpZ25tZW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29u
c3Q7CiAKKyAgICAvLyBDb21wdXRlcyB0aGUgc3BhbiByZWxhdGl2ZSB0byB0aGlzIFJlbmRlckdy
aWQsIGV2ZW4gaWYgdGhlIFJlbmRlckJveCBpcyBhIGNoaWxkCisgICAgLy8gb2YgYSBkZXNjZW5k
YW50IHN1YmdyaWQuCisgICAgR3JpZFNwYW4gZ3JpZFNwYW5Gb3JDaGlsZChjb25zdCBSZW5kZXJC
b3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OworCisgICAgYm9vbCBpc1N1Ymdy
aWRSb3dzKCkgY29uc3Q7CisgICAgYm9vbCBpc1N1YmdyaWRDb2x1bW5zKCkgY29uc3Q7CisgICAg
Ym9vbCBpc1N1YmdyaWQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKworICAgIGNv
bnN0IEdyaWQmIGN1cnJlbnRHcmlkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dy
aWQ7CisgICAgfQorCiBwcml2YXRlOgogICAgIEl0ZW1Qb3NpdGlvbiBzZWxmQWxpZ25tZW50Tm9y
bWFsQmVoYXZpb3IoY29uc3QgUmVuZGVyQm94KiBjaGlsZCA9IG51bGxwdHIpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewpAQCAtMTUwLDggKzE2Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMb2dp
Y2FsUG9zaXRpb25Gb3JDaGlsZChSZW5kZXJCb3gmKSBjb25zdDsKICAgICB2b2lkIHNldExvZ2lj
YWxPZmZzZXRGb3JDaGlsZChSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNv
bnN0OwogICAgIExheW91dFVuaXQgbG9naWNhbE9mZnNldEZvckNoaWxkKGNvbnN0IFJlbmRlckJv
eCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7Ci0gICAgR3JpZEFyZWEgY2FjaGVk
R3JpZEFyZWEoY29uc3QgUmVuZGVyQm94JikgY29uc3Q7Ci0gICAgR3JpZFNwYW4gY2FjaGVkR3Jp
ZFNwYW4oY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsK
IAogICAgIExheW91dFVuaXQgZ3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGRJbmNsdWRpbmdBbGlnbm1l
bnRPZmZzZXRzKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29u
c3Q7CiAKQEAgLTE5MSw2ICsyMDIsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBhc3BlY3RSYXRp
b1ByZWZlcnNJbmxpbmUoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgYm9vbCBibG9ja0Zsb3dJc0Nv
bHVtbkF4aXMpOwogCisgICAgR3JpZFNwYW4gZ3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjb25z
dCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OworICAgIGJvb2wg
Y29tcHV0ZUdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uLCBpbnQmLCBib29sJiwgaW50JiwgYm9vbCYpIGNvbnN0OworCiAg
ICAgR3JpZCBtX2dyaWQ7CiAKICAgICBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gbV90cmFja1Np
emluZ0FsZ29yaXRobTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgK
aW5kZXggYjdlYmQxZDk2MWRlLi5lZTNiOTJmYzBmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9HcmlkQXJlYS5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHVu
c2lnbmVkIGludGVnZXJTcGFuKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChpc1RyYW5z
bGF0ZWREZWZpbml0ZSgpKTsKKyAgICAgICAgQVNTRVJUKGlzVHJhbnNsYXRlZERlZmluaXRlKCkg
fHwgbV90eXBlID09IFVudHJhbnNsYXRlZERlZmluaXRlKTsKICAgICAgICAgcmV0dXJuIG1fZW5k
TGluZSAtIG1fc3RhcnRMaW5lOwogICAgIH0KIApAQCAtMTQxLDYgKzE0MSwzMSBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChtX2VuZExpbmUgPiAwKTsKICAgICB9CiAKKyAgICAvLyBNb3ZlcyB0
aGlzIHNwYW4gdG8gYmUgaW4gdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFjZSBhcyB8cGFyZW50fC4K
KyAgICAvLyBJZiByZXZlcnNlIGlzIHNwZWNpZmllZCwgdGhlbiBzd2FwcyB0aGUgZGlyZWN0aW9u
IHRvIGhhbmRsZSBSVEwvTFRSIGNoYW5nZXMuCisgICAgdm9pZCB0cmFuc2xhdGVUbyhjb25zdCBH
cmlkU3BhbiYgcGFyZW50LCBib29sIHJldmVyc2UpCisgICAgeworICAgICAgICBBU1NFUlQobV90
eXBlID09IFRyYW5zbGF0ZWREZWZpbml0ZSk7CisgICAgICAgIEFTU0VSVChwYXJlbnQubV90eXBl
ID09IFRyYW5zbGF0ZWREZWZpbml0ZSk7CisgICAgICAgIGlmIChyZXZlcnNlKSB7CisgICAgICAg
ICAgICBpbnQgc3RhcnQgPSBtX3N0YXJ0TGluZTsKKyAgICAgICAgICAgIG1fc3RhcnRMaW5lID0g
cGFyZW50LmludGVnZXJTcGFuKCkgLSBtX2VuZExpbmUgKyBwYXJlbnQuc3RhcnRMaW5lKCk7Cisg
ICAgICAgICAgICBtX2VuZExpbmUgPSBwYXJlbnQuaW50ZWdlclNwYW4oKSAtIHN0YXJ0ICsgcGFy
ZW50LnN0YXJ0TGluZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9zdGFydExp
bmUgKz0gcGFyZW50Lm1fc3RhcnRMaW5lOworICAgICAgICAgICAgbV9lbmRMaW5lICs9IHBhcmVu
dC5tX3N0YXJ0TGluZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgY2xhbXAoaW50IG1h
eCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgIT0gSW5kZWZpbml0ZSk7CisgICAgICAg
IG1fc3RhcnRMaW5lID0gc3RkOjptYXgobV9zdGFydExpbmUsIDApOworICAgICAgICBtX2VuZExp
bmUgPSBzdGQ6Om1heChzdGQ6Om1pbihtX2VuZExpbmUsIG1heCksIDEpOworICAgICAgICBpZiAo
bV9zdGFydExpbmUgPj0gbV9lbmRMaW5lKQorICAgICAgICAgICAgbV9zdGFydExpbmUgPSBtX2Vu
ZExpbmUgLSAxOworICAgIH0KKwogcHJpdmF0ZToKIAogICAgIGVudW0gR3JpZFNwYW5UeXBlIHtV
bnRyYW5zbGF0ZWREZWZpbml0ZSwgVHJhbnNsYXRlZERlZmluaXRlLCBJbmRlZmluaXRlfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNS
ZXNvbHZlci5jcHAKaW5kZXggMzNjNzAzYzVmMDZmLi4xNjQwN2MxYmRmZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2
ZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJHcmlkQXJlYS5oIgogI2luY2x1
ZGUgIlJlbmRlckJveC5oIgorI2luY2x1ZGUgIlJlbmRlckdyaWQuaCIKICNpbmNsdWRlIDxjc3Rk
bGliPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTIsNiArMTUzLDE4IEBAIHVuc2lnbmVk
IE5hbWVkTGluZUNvbGxlY3Rpb246OmZpcnN0UG9zaXRpb24oKSBjb25zdAogICAgIHJldHVybiBz
dGQ6Om1pbihmaXJzdEV4cGxpY2l0UG9zaXRpb24oKSwgbV9pbXBsaWNpdE5hbWVkTGluZXNJbmRl
eGVzLT5hdChmaXJzdExpbmUpKTsKIH0KIAorLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nz
cy1ncmlkLTIvI2luZGVmaW5pdGUtZ3JpZC1zcGFuCitzdGF0aWMgYm9vbCBpc0luZGVmaW5pdGVT
cGFuKEdyaWRQb3NpdGlvbiYgaW5pdGlhbFBvc2l0aW9uLCBHcmlkUG9zaXRpb24mIGZpbmFsUG9z
aXRpb24pCit7CisgICAgaWYgKCFpbml0aWFsUG9zaXRpb24uaXNBdXRvKCkgJiYgIWZpbmFsUG9z
aXRpb24uaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChpbml0aWFs
UG9zaXRpb24uaXNTcGFuKCkgfHwgZmluYWxQb3NpdGlvbi5pc1NwYW4oKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyB2b2lkIGFkanVzdEdy
aWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3JpZFBvc2l0aW9uJiBpbml0aWFsUG9zaXRpb24s
IEdyaWRQb3NpdGlvbiYgZmluYWxQb3NpdGlvbikKIHsKICAgICBib29sIGlzRm9yQ29sdW1ucyA9
IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwpAQCAtMTY4LDIxICsxODEsNTIgQEAgc3RhdGljIHZv
aWQgYWRqdXN0R3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVt
LCBHcmlkVHJhY2tTaXoKICAgICAgICAgZmluYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oMSwg
U3RyaW5nKCkpOwogICAgIGlmIChmaW5hbFBvc2l0aW9uLmlzQXV0bygpICYmIGluaXRpYWxQb3Np
dGlvbi5pc1NwYW4oKSAmJiAhaW5pdGlhbFBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwo
KSkKICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbigxLCBTdHJpbmcoKSk7
CisKKyAgICBpZiAoaXNJbmRlZmluaXRlU3Bhbihpbml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRp
b24pICYmIGlzPFJlbmRlckdyaWQ+KGdyaWRJdGVtKSAmJiBkb3duY2FzdDxSZW5kZXJHcmlkPihn
cmlkSXRlbSkuaXNTdWJncmlkKGRpcmVjdGlvbikpIHsKKyAgICAgICAgLy8gSW5kZWZpbml0ZSBz
cGFuIGZvciBhbiBpdGVtIHRoYXQgaXMgc3ViZ3JpZGRlZCBpbiB0aGlzIGF4aXMuCisgICAgICAg
IGludCBsaW5lQ291bnQgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGdyaWRJdGVtLnN0eWxl
KCkuZ3JpZENvbHVtbnMoKS5zaXplKCkgOiBncmlkSXRlbS5zdHlsZSgpLmdyaWRSb3dzKCkuc2l6
ZSgpOworCisgICAgICAgIGlmIChpbml0aWFsUG9zaXRpb24uaXNBdXRvKCkpIHsKKyAgICAgICAg
ICAgIC8vIFNldCBpbml0aWFsIHBvc2l0aW9uIHRvIHNwYW4gPGxpbmUgbmFtZXMgLSAxPgorICAg
ICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbihzdGQ6Om1heCgxLCBsaW5l
Q291bnQgLSAxKSwgIiIpOworICAgICAgICAgICAgaWYgKGZpbmFsUG9zaXRpb24uaXNTcGFuKCkp
CisgICAgICAgICAgICAgICAgZmluYWxQb3NpdGlvbi5zZXRBdXRvUG9zaXRpb24oKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNldCBmaW5hbCBwb3NpdGlvbiB0byBzcGFuIDxs
aW5lIG5hbWVzIC0gMT4KKyAgICAgICAgICAgIGZpbmFsUG9zaXRpb24uc2V0U3BhblBvc2l0aW9u
KHN0ZDo6bWF4KDEsIGxpbmVDb3VudCAtIDEpLCAiIik7CisgICAgICAgICAgICBpZiAoaW5pdGlh
bFBvc2l0aW9uLmlzU3BhbigpKQorICAgICAgICAgICAgICAgIGluaXRpYWxQb3NpdGlvbi5zZXRB
dXRvUG9zaXRpb24oKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAotdW5zaWduZWQgR3JpZFBvc2l0
aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBSZW5kZXJTdHlsZSYg
Z3JpZENvbnRhaW5lclN0eWxlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCit1bnNp
Z25lZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0
IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWluPHVuc2ln
bmVkPihzdGQ6Om1heChncmlkQ29udGFpbmVyU3R5bGUuZ3JpZENvbHVtbnMoKS5zaXplKCkgKyBh
dXRvUmVwZWF0VHJhY2tzQ291bnQsIGdyaWRDb250YWluZXJTdHlsZS5uYW1lZEdyaWRBcmVhQ29s
dW1uQ291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4KCkpOworICAgIGJvb2wgc3BlY2lmaWVkU3Vi
Z3JpZCA9IGdyaWRDb250YWluZXIuc3R5bGUoKS5ncmlkU3ViZ3JpZENvbHVtbnMoKTsKKyAgICBp
ZiAoc3BlY2lmaWVkU3ViZ3JpZCAmJiBncmlkQ29udGFpbmVyLmlzU3ViZ3JpZENvbHVtbnMoKSkg
eworICAgICAgICBjb25zdCBSZW5kZXJHcmlkJiBwYXJlbnQgPSAqZG93bmNhc3Q8UmVuZGVyR3Jp
ZD4oZ3JpZENvbnRhaW5lci5wYXJlbnQoKSk7CisgICAgICAgIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlY3Rpb24gPSBncmlkQ29udGFpbmVyLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PT0gcGFyZW50LmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBGb3JDb2x1bW5zIDogRm9yUm93
czsKKyAgICAgICAgcmV0dXJuIHBhcmVudC5ncmlkU3BhbkZvckNoaWxkKGdyaWRDb250YWluZXIs
IGRpcmVjdGlvbikuaW50ZWdlclNwYW4oKTsKKyAgICB9CisgICAgYXV0byBzcGVjaWZpZWRDb2x1
bW5zID0gc3BlY2lmaWVkU3ViZ3JpZCA/IDAgOiBncmlkQ29udGFpbmVyLnN0eWxlKCkuZ3JpZENv
bHVtbnMoKS5zaXplKCk7CisgICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihzdGQ6Om1heChz
cGVjaWZpZWRDb2x1bW5zICsgZ3JpZENvbnRhaW5lci5hdXRvUmVwZWF0Q291bnRGb3JEaXJlY3Rp
b24oRm9yQ29sdW1ucyksIGdyaWRDb250YWluZXIuc3R5bGUoKS5uYW1lZEdyaWRBcmVhQ29sdW1u
Q291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4KCkpOwogfQogCi11bnNpZ25lZCBHcmlkUG9zaXRp
b25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRlclN0eWxlJiBncmlk
Q29udGFpbmVyU3R5bGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3Vuc2lnbmVk
IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQoY29uc3QgUmVuZGVy
R3JpZCYgZ3JpZENvbnRhaW5lcikKIHsKLSAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KHN0
ZDo6bWF4KGdyaWRDb250YWluZXJTdHlsZS5ncmlkUm93cygpLnNpemUoKSArIGF1dG9SZXBlYXRU
cmFja3NDb3VudCwgZ3JpZENvbnRhaW5lclN0eWxlLm5hbWVkR3JpZEFyZWFSb3dDb3VudCgpKSwg
R3JpZFBvc2l0aW9uOjptYXgoKSk7CisgICAgYm9vbCBzcGVjaWZpZWRTdWJncmlkID0gZ3JpZENv
bnRhaW5lci5zdHlsZSgpLmdyaWRTdWJncmlkUm93cygpOworICAgIGlmIChzcGVjaWZpZWRTdWJn
cmlkICYmIGdyaWRDb250YWluZXIuaXNTdWJncmlkUm93cygpKSB7CisgICAgICAgIGNvbnN0IFJl
bmRlckdyaWQmIHBhcmVudCA9ICpkb3duY2FzdDxSZW5kZXJHcmlkPihncmlkQ29udGFpbmVyLnBh
cmVudCgpKTsKKyAgICAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGdy
aWRDb250YWluZXIuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA9PSBwYXJlbnQuaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IEZvclJvd3MgOiBGb3JDb2x1bW5zOworICAgICAgICByZXR1cm4g
cGFyZW50LmdyaWRTcGFuRm9yQ2hpbGQoZ3JpZENvbnRhaW5lciwgZGlyZWN0aW9uKS5pbnRlZ2Vy
U3BhbigpOworICAgIH0KKyAgICBhdXRvIHNwZWNpZmllZFJvd3MgPSBzcGVjaWZpZWRTdWJncmlk
ID8gMCA6IGdyaWRDb250YWluZXIuc3R5bGUoKS5ncmlkUm93cygpLnNpemUoKTsKKyAgICByZXR1
cm4gc3RkOjptaW48dW5zaWduZWQ+KHN0ZDo6bWF4KHNwZWNpZmllZFJvd3MgKyBncmlkQ29udGFp
bmVyLmF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlvbihGb3JSb3dzKSwgZ3JpZENvbnRhaW5lci5z
dHlsZSgpLm5hbWVkR3JpZEFyZWFSb3dDb3VudCgpKSwgR3JpZFBvc2l0aW9uOjptYXgoKSk7CiB9
CiAKLXN0YXRpYyB1bnNpZ25lZCBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShjb25zdCBSZW5kZXJT
dHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUsIHVuc2lnbmVk
IGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3N0YXRpYyB1bnNpZ25lZCBleHBsaWNpdEdyaWRTaXpl
Rm9yU2lkZShjb25zdCBSZW5kZXJHcmlkJiBncmlkQ29udGFpbmVyLCBHcmlkUG9zaXRpb25TaWRl
IHNpZGUpCiB7Ci0gICAgcmV0dXJuIGlzQ29sdW1uU2lkZShzaWRlKSA/IEdyaWRQb3NpdGlvbnNS
ZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoZ3JpZENvbnRhaW5lclN0eWxlLCBhdXRv
UmVwZWF0VHJhY2tzQ291bnQpIDogR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRS
b3dDb3VudChncmlkQ29udGFpbmVyU3R5bGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAg
cmV0dXJuIGlzQ29sdW1uU2lkZShzaWRlKSA/IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGlj
aXRHcmlkQ29sdW1uQ291bnQoZ3JpZENvbnRhaW5lcikgOiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6
OmV4cGxpY2l0R3JpZFJvd0NvdW50KGdyaWRDb250YWluZXIpOwogfQogCiBzdGF0aWMgdW5zaWdu
ZWQgbG9va0FoZWFkRm9yTmFtZWRHcmlkTGluZShpbnQgc3RhcnQsIHVuc2lnbmVkIG51bWJlck9m
TGluZXMsIHVuc2lnbmVkIGdyaWRMYXN0TGluZSwgTmFtZWRMaW5lQ29sbGVjdGlvbiYgbGluZXND
b2xsZWN0aW9uKQpAQCAtMjI0LDEyICsyNjgsMTIgQEAgc3RhdGljIGludCBsb29rQmFja0Zvck5h
bWVkR3JpZExpbmUoaW50IGVuZCwgdW5zaWduZWQgbnVtYmVyT2ZMaW5lcywgaW50IGdyaWRMYXMK
ICAgICByZXR1cm4gc3RhcnQgKyAxOwogfQogCi1zdGF0aWMgaW50IHJlc29sdmVOYW1lZEdyaWRM
aW5lUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHls
ZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1
bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCitzdGF0aWMgaW50IHJlc29sdmVOYW1lZEdy
aWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgUmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwg
Y29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogewog
ICAgIEFTU0VSVCghcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKTsKIAotICAgIHVu
c2lnbmVkIGxhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0
eWxlLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAgIE5hbWVkTGluZUNvbGxlY3Rp
b24gbGluZXNDb2xsZWN0aW9uKGdyaWRDb250YWluZXJTdHlsZSwgcG9zaXRpb24ubmFtZWRHcmlk
TGluZSgpLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGF1dG9SZXBlYXRUcmFj
a3NDb3VudCk7CisgICAgdW5zaWduZWQgbGFzdExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lk
ZShncmlkQ29udGFpbmVyLCBzaWRlKTsKKyAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGxpbmVzQ29s
bGVjdGlvbihncmlkQ29udGFpbmVyLnN0eWxlKCksIHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwg
ZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5lLCBncmlkQ29udGFpbmVyLmF1dG9SZXBl
YXRDb3VudEZvckRpcmVjdGlvbihkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSkpOwogCiAgICAgaWYg
KHBvc2l0aW9uLmlzUG9zaXRpdmUoKSkKICAgICAgICAgcmV0dXJuIGxvb2tBaGVhZEZvck5hbWVk
R3JpZExpbmUoMCwgc3RkOjphYnMocG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCkpLCBsYXN0TGlu
ZSwgbGluZXNDb2xsZWN0aW9uKTsKQEAgLTI1MCwxOSArMjk0LDE5IEBAIHN0YXRpYyBHcmlkU3Bh
biBkZWZpbml0ZUdyaWRTcGFuV2l0aE5hbWVkTGluZVNwYW5BZ2FpbnN0T3Bwb3NpdGUoaW50IG9w
cG9zaXRlTGluCiAgICAgcmV0dXJuIEdyaWRTcGFuOjp1bnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRT
cGFuKHN0YXJ0LCBlbmQpOwogfQogCi1zdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZU5hbWVkR3JpZExp
bmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBncmlk
Q29udGFpbmVyU3R5bGUsIGludCBvcHBvc2l0ZUxpbmUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9z
aXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0Nv
dW50KQorc3RhdGljIEdyaWRTcGFuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0
T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJHcmlkJiBncmlkQ29udGFpbmVyLCBpbnQgb3Bw
b3NpdGVMaW5lLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRl
IHNpZGUpCiB7CiAgICAgQVNTRVJUKHBvc2l0aW9uLmlzU3BhbigpKTsKICAgICBBU1NFUlQoIXBv
c2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSk7CiAgICAgLy8gTmVnYXRpdmUgcG9zaXRp
b25zIGFyZSBub3QgYWxsb3dlZCBwZXIgdGhlIHNwZWNpZmljYXRpb24gYW5kIHNob3VsZCBoYXZl
IGJlZW4gaGFuZGxlZCBkdXJpbmcgcGFyc2luZy4KICAgICBBU1NFUlQocG9zaXRpb24uc3BhblBv
c2l0aW9uKCkgPiAwKTsKIAotICAgIHVuc2lnbmVkIGxhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6
ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0eWxlLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQp
OwotICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gbGluZXNDb2xsZWN0aW9uKGdyaWRDb250YWluZXJT
dHlsZSwgcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwg
bGFzdExpbmUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgdW5zaWduZWQgbGFzdExpbmUg
PSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyLCBzaWRlKTsKKyAgICBOYW1l
ZExpbmVDb2xsZWN0aW9uIGxpbmVzQ29sbGVjdGlvbihncmlkQ29udGFpbmVyLnN0eWxlKCksIHBv
c2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5l
LCBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlvbihkaXJlY3Rpb25Gcm9t
U2lkZShzaWRlKSkpOwogICAgIHJldHVybiBkZWZpbml0ZUdyaWRTcGFuV2l0aE5hbWVkTGluZVNw
YW5BZ2FpbnN0T3Bwb3NpdGUob3Bwb3NpdGVMaW5lLCBwb3NpdGlvbiwgc2lkZSwgbGFzdExpbmUs
IGxpbmVzQ29sbGVjdGlvbik7CiB9CiAKLXN0YXRpYyBHcmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0
aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWlu
ZXJTdHlsZSwgaW50IG9wcG9zaXRlTGluZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwg
R3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCitz
dGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9u
KGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIsIGludCBvcHBvc2l0ZUxpbmUsIGNvbnN0
IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkKIHsKICAgICBp
ZiAocG9zaXRpb24uaXNBdXRvKCkpIHsKICAgICAgICAgaWYgKGlzU3RhcnRTaWRlKHNpZGUpKQpA
QCAtMjc1LDcgKzMxOSw3IEBAIHN0YXRpYyBHcmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uQWdh
aW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgUmVuZGVyU3R5bGUmIGdyCiAKICAgICBpZiAoIXBv
c2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSkgewogICAgICAgICAvLyBzcGFuIDIgJ2Mn
IC0+IHdlIG5lZWQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgZ3JpZCBsaW5lIGJlZm9yZSAvIGFm
dGVyIG91ciBvcHBvc2l0ZSBwb3NpdGlvbi4KLSAgICAgICAgcmV0dXJuIHJlc29sdmVOYW1lZEdy
aWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihncmlkQ29udGFpbmVyU3R5bGUs
IG9wcG9zaXRlTGluZSwgcG9zaXRpb24sIHNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Cisg
ICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRl
UG9zaXRpb24oZ3JpZENvbnRhaW5lciwgb3Bwb3NpdGVMaW5lLCBwb3NpdGlvbiwgc2lkZSk7CiAg
ICAgfQogCiAgICAgLy8gJ3NwYW4gMScgaXMgY29udGFpbmVkIGluc2lkZSBhIHNpbmdsZSBncmlk
IHRyYWNrIHJlZ2FyZGxlc3Mgb2YgdGhlIGRpcmVjdGlvbi4KQEAgLTMxNSwyMSArMzU5LDIxIEBA
IHVuc2lnbmVkIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRl
bShjb25zdCBSZW5kZXJCb3gmIGdyaWRJCiAgICAgcmV0dXJuIHBvc2l0aW9uLnNwYW5Qb3NpdGlv
bigpOwogfQogCi1zdGF0aWMgaW50IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3Np
dGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291
bnQpCitzdGF0aWMgaW50IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgUmVuZGVy
R3JpZCYgZ3JpZENvbnRhaW5lciwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBv
c2l0aW9uU2lkZSBzaWRlKQogewogICAgIHN3aXRjaCAocG9zaXRpb24udHlwZSgpKSB7CiAgICAg
Y2FzZSBFeHBsaWNpdFBvc2l0aW9uOiB7CiAgICAgICAgIEFTU0VSVChwb3NpdGlvbi5pbnRlZ2Vy
UG9zaXRpb24oKSk7CiAKICAgICAgICAgaWYgKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNO
dWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkZy
b21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIHBvc2l0aW9uLCBzaWRlLCBhdXRvUmVwZWF0VHJh
Y2tzQ291bnQpOworICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRp
b25Gcm9tU3R5bGUoZ3JpZENvbnRhaW5lciwgcG9zaXRpb24sIHNpZGUpOwogCiAgICAgICAgIC8v
IEhhbmRsZSA8aW50ZWdlcj4gZXhwbGljaXQgcG9zaXRpb24uCiAgICAgICAgIGlmIChwb3NpdGlv
bi5pc1Bvc2l0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24uaW50ZWdlclBvc2l0
aW9uKCkgLSAxOwogCiAgICAgICAgIHVuc2lnbmVkIHJlc29sdmVkUG9zaXRpb24gPSBzdGQ6OmFi
cyhwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSkgLSAxOwotICAgICAgICBjb25zdCB1bnNpZ25l
ZCBlbmRPZlRyYWNrID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0eWxl
LCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgICAgICBjb25zdCB1bnNpZ25lZCBl
bmRPZlRyYWNrID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lciwgc2lkZSk7
CiAKICAgICAgICAgcmV0dXJuIGVuZE9mVHJhY2sgLSByZXNvbHZlZFBvc2l0aW9uOwogICAgIH0K
QEAgLTM0MSwxNCArMzg1LDE0IEBAIHN0YXRpYyBpbnQgcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21T
dHlsZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBjCiAgICAgICAgIFN0
cmluZyBuYW1lZEdyaWRMaW5lID0gcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpOwogICAgICAgICBB
U1NFUlQoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSk7CiAKLSAgICAgICAgdW5z
aWduZWQgbGFzdExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyU3R5
bGUsIHNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAgICAgIE5hbWVkTGluZUNvbGxl
Y3Rpb24gaW1wbGljaXRMaW5lcyhncmlkQ29udGFpbmVyU3R5bGUsIGltcGxpY2l0TmFtZWRHcmlk
TGluZUZvclNpZGUobmFtZWRHcmlkTGluZSwgc2lkZSksIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUp
LCBsYXN0TGluZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAgdW5zaWduZWQgbGFz
dExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyLCBzaWRlKTsKKyAg
ICAgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBpbXBsaWNpdExpbmVzKGdyaWRDb250YWluZXIuc3R5
bGUoKSwgaW1wbGljaXROYW1lZEdyaWRMaW5lRm9yU2lkZShuYW1lZEdyaWRMaW5lLCBzaWRlKSwg
ZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5lLCBncmlkQ29udGFpbmVyLmF1dG9SZXBl
YXRDb3VudEZvckRpcmVjdGlvbihkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSkpOwogICAgICAgICBp
ZiAoaW1wbGljaXRMaW5lcy5oYXNOYW1lZExpbmVzKCkpCiAgICAgICAgICAgICByZXR1cm4gaW1w
bGljaXRMaW5lcy5maXJzdFBvc2l0aW9uKCk7CiAKICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiB0
aGVyZSBpcyBhIG5hbWVkIGxpbmUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUsIGNvbnRyaWJ1dGVz
IHRoZSBmaXJzdCBzdWNoIGxpbmUgdG8gdGhlIGdyaWQKICAgICAgICAgLy8gaXRlbSdzIHBsYWNl
bWVudC4KLSAgICAgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBleHBsaWNpdExpbmVzKGdyaWRDb250
YWluZXJTdHlsZSwgbmFtZWRHcmlkTGluZSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RM
aW5lLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgICAgICBOYW1lZExpbmVDb2xsZWN0aW9u
IGV4cGxpY2l0TGluZXMoZ3JpZENvbnRhaW5lci5zdHlsZSgpLCBuYW1lZEdyaWRMaW5lLCBkaXJl
Y3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGdyaWRDb250YWluZXIuYXV0b1JlcGVhdENv
dW50Rm9yRGlyZWN0aW9uKGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpKSk7CiAgICAgICAgIGlmIChl
eHBsaWNpdExpbmVzLmhhc05hbWVkTGluZXMoKSkKICAgICAgICAgICAgIHJldHVybiBleHBsaWNp
dExpbmVzLmZpcnN0UG9zaXRpb24oKTsKIApAQCAtMzY1LDggKzQwOSwxMSBAQCBzdGF0aWMgaW50
IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250
YWluZXJTdHlsZSwgYwogICAgIHJldHVybiAwOwogfQogCi1HcmlkU3BhbiBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBncmlkQ29udGFpbmVyU3R5bGUsIGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3Vu
dCkKK0dyaWRTcGFuIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNG
cm9tU3R5bGUoY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbikKIHsKKyAgICBhdXRvKiBncmlkQ29udGFpbmVyID0gZG93bmNhc3Q8UmVu
ZGVyR3JpZD4oZ3JpZEl0ZW0uY29udGFpbmluZ0Jsb2NrKCkpOworICAgIEFTU0VSVChncmlkQ29u
dGFpbmVyKTsKKwogICAgIEdyaWRQb3NpdGlvbiBpbml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRp
b247CiAgICAgYWRqdXN0R3JpZFBvc2l0aW9uc0Zyb21TdHlsZShncmlkSXRlbSwgZGlyZWN0aW9u
LCBpbml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pOwogCkBAIC0zNzksMTggKzQyNiwxOCBA
QCBHcmlkU3BhbiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJv
bVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJgogCiAgICAgaWYgKGluaXRpYWxQb3NpdGlvbi5zaG91
bGRCZVJlc29sdmVkQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKSkgewogICAgICAgICAvLyBJbmZl
ciB0aGUgcG9zaXRpb24gZnJvbSB0aGUgZmluYWwgcG9zaXRpb24gKCdhdXRvIC8gMScgb3IgJ3Nw
YW4gMiAvIDMnIGNhc2UpLgotICAgICAgICBhdXRvIGVuZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0
aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXJTdHlsZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRl
LCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAgICAgICByZXR1cm4gcmVzb2x2ZUdyaWRQb3Np
dGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGdyaWRDb250YWluZXJTdHlsZSwgZW5kTGluZSwg
aW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAg
ICAgICAgYXV0byBlbmRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZSgqZ3JpZENv
bnRhaW5lciwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlKTsKKyAgICAgICAgcmV0dXJuIHJlc29s
dmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigqZ3JpZENvbnRhaW5lciwgZW5k
TGluZSwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lkZSk7CiAgICAgfQogCiAgICAgaWYgKGZp
bmFsUG9zaXRpb24uc2hvdWxkQmVSZXNvbHZlZEFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKCkpIHsK
ICAgICAgICAgLy8gSW5mZXIgb3VyIHBvc2l0aW9uIGZyb20gdGhlIGluaXRpYWwgcG9zaXRpb24g
KCcxIC8gYXV0bycgb3IgJzMgLyBzcGFuIDInIGNhc2UpLgotICAgICAgICBhdXRvIHN0YXJ0TGlu
ZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoZ3JpZENvbnRhaW5lclN0eWxlLCBpbml0
aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAgICAg
ICByZXR1cm4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGdyaWRD
b250YWluZXJTdHlsZSwgc3RhcnRMaW5lLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUsIGF1dG9S
ZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIGF1dG8gc3RhcnRMaW5lID0gcmVzb2x2ZUdyaWRQ
b3NpdGlvbkZyb21TdHlsZSgqZ3JpZENvbnRhaW5lciwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFs
U2lkZSk7CisgICAgICAgIHJldHVybiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRl
UG9zaXRpb24oKmdyaWRDb250YWluZXIsIHN0YXJ0TGluZSwgZmluYWxQb3NpdGlvbiwgZmluYWxT
aWRlKTsKICAgICB9CiAKLSAgICBpbnQgc3RhcnRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZy
b21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUs
IGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAgaW50IGVuZExpbmUgPSByZXNvbHZlR3JpZFBv
c2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXJTdHlsZSwgZmluYWxQb3NpdGlvbiwgZmluYWxT
aWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgIGludCBzdGFydExpbmUgPSByZXNvbHZl
R3JpZFBvc2l0aW9uRnJvbVN0eWxlKCpncmlkQ29udGFpbmVyLCBpbml0aWFsUG9zaXRpb24sIGlu
aXRpYWxTaWRlKTsKKyAgICBpbnQgZW5kTGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5
bGUoKmdyaWRDb250YWluZXIsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSk7CiAKICAgICBpZiAo
c3RhcnRMaW5lID4gZW5kTGluZSkKICAgICAgICAgc3RkOjpzd2FwKHN0YXJ0TGluZSwgZW5kTGlu
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0
aW9uc1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0
aW9uc1Jlc29sdmVyLmgKaW5kZXggNjIzYjYyYzZjMjQxLi43MjQxOTU3NzM1NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29s
dmVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmlk
U3BhbjsKIGNsYXNzIFJlbmRlckJveDsKK2NsYXNzIFJlbmRlckdyaWQ7CiBjbGFzcyBSZW5kZXJT
dHlsZTsKIAogZW51bSBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gewpAQCAtNzMsOSArNzQsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEdyaWRQb3NpdGlvblNpZGUgaW5pdGlhbFBvc2l0aW9uU2lk
ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOwogICAgIHN0YXRpYyBHcmlkUG9zaXRpb25TaWRl
IGZpbmFsUG9zaXRpb25TaWRlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CiAgICAgc3RhdGlj
IHVuc2lnbmVkIHNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oY29uc3QgUmVuZGVyQm94JiwgR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKLSAgICBzdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQ
b3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJCb3gmLCBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7
Ci0gICAgc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0IFJlbmRl
clN0eWxlJiwgdW5zaWduZWQgYXV0b1JlcGVhdENvbHVtbnNDb3VudCk7Ci0gICAgc3RhdGljIHVu
c2lnbmVkIGV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQg
YXV0b1JlcGVhdFJvd3NDb3VudCk7CisgICAgc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9z
aXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
bik7CisgICAgc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0IFJl
bmRlckdyaWQmKTsKKyAgICBzdGF0aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkUm93Q291bnQoY29u
c3QgUmVuZGVyR3JpZCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBhYzE0MmNmMDA2ZGEu
LjAxOWU2ZWM3MjRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKQEAgLTU4MSw2ICs1ODEsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG5hbWVkR3Jp
ZEFyZWFSb3dDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmdy
aWQtPm5hbWVkR3JpZEFyZWFSb3dDb3VudDsgfQogICAgIHNpemVfdCBuYW1lZEdyaWRBcmVhQ29s
dW1uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5u
YW1lZEdyaWRBcmVhQ29sdW1uQ291bnQ7IH0KICAgICBHcmlkQXV0b0Zsb3cgZ3JpZEF1dG9GbG93
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R3JpZEF1dG9GbG93PihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0Zsb3cpOyB9CisgICAgYm9vbCBncmlkU3ViZ3JpZFJv
d3MoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5zdWJncmlk
Um93czsgfQorICAgIGJvb2wgZ3JpZFN1YmdyaWRDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS0+Z3JpZC0+c3ViZ3JpZENvbHVtbnM7IH0KICAgICBib29sIGlz
R3JpZEF1dG9GbG93RGlyZWN0aW9uUm93KCkgY29uc3QgeyByZXR1cm4gKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEtPmdyaWQtPmdyaWRBdXRvRmxvdyAmIEludGVybmFsQXV0b0Zsb3dEaXJlY3Rpb25S
b3cpOyB9CiAgICAgYm9vbCBpc0dyaWRBdXRvRmxvd0RpcmVjdGlvbkNvbHVtbigpIGNvbnN0IHsg
cmV0dXJuIChtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ncmlkLT5ncmlkQXV0b0Zsb3cgJiBJbnRl
cm5hbEF1dG9GbG93RGlyZWN0aW9uQ29sdW1uKTsgfQogICAgIGJvb2wgaXNHcmlkQXV0b0Zsb3dB
bGdvcml0aG1TcGFyc2UoKSBjb25zdCB7IHJldHVybiAobV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
Z3JpZC0+Z3JpZEF1dG9GbG93ICYgSW50ZXJuYWxBdXRvRmxvd0FsZ29yaXRobVNwYXJzZSk7IH0K
QEAgLTEyMDMsNiArMTIwNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5hbWVkR3JpZEFyZWFS
b3dDb3VudChzaXplX3Qgcm93Q291bnQpIHsgU0VUX05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJp
dGVkRGF0YSwgZ3JpZCwgbmFtZWRHcmlkQXJlYVJvd0NvdW50LCByb3dDb3VudCk7IH0KICAgICB2
b2lkIHNldE5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudChzaXplX3QgY29sdW1uQ291bnQpIHsgU0VU
X05FU1RFRF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgZ3JpZCwgbmFtZWRHcmlkQXJlYUNv
bHVtbkNvdW50LCBjb2x1bW5Db3VudCk7IH0KICAgICB2b2lkIHNldEdyaWRBdXRvRmxvdyhHcmlk
QXV0b0Zsb3cgZmxvdykgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBn
cmlkLCBncmlkQXV0b0Zsb3csIGZsb3cpOyB9CisgICAgdm9pZCBzZXRHcmlkU3ViZ3JpZFJvd3Mo
Ym9vbCBzdWJncmlkKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdy
aWQsIHN1YmdyaWRSb3dzLCBzdWJncmlkKTsgfQorICAgIHZvaWQgc2V0R3JpZFN1YmdyaWRDb2x1
bW5zKGJvb2wgc3ViZ3JpZCkgeyBTRVRfTkVTVEVEX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBncmlkLCBzdWJncmlkQ29sdW1ucywgc3ViZ3JpZCk7IH0KICAgICB2b2lkIHNldEdyaWRJdGVt
Q29sdW1uU3RhcnQoY29uc3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5TdGFydFBvc2l0aW9uKSB7IFNF
VF9ORVNURURfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWRJdGVtLCBncmlkQ29sdW1u
U3RhcnQsIGNvbHVtblN0YXJ0UG9zaXRpb24pOyB9CiAgICAgdm9pZCBzZXRHcmlkSXRlbUNvbHVt
bkVuZChjb25zdCBHcmlkUG9zaXRpb24mIGNvbHVtbkVuZFBvc2l0aW9uKSB7IFNFVF9ORVNURURf
VkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGdyaWRJdGVtLCBncmlkQ29sdW1uRW5kLCBjb2x1
bW5FbmRQb3NpdGlvbik7IH0KICAgICB2b2lkIHNldEdyaWRJdGVtUm93U3RhcnQoY29uc3QgR3Jp
ZFBvc2l0aW9uJiByb3dTdGFydFBvc2l0aW9uKSB7IFNFVF9ORVNURURfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGdyaWRJdGVtLCBncmlkUm93U3RhcnQsIHJvd1N0YXJ0UG9zaXRpb24pOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAK
aW5kZXggNTY2ZjNiYjFmNzQxLi45MjM5MTk3YzVmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5jcHAKQEAgLTU1LDYgKzU1LDggQEAgU3R5
bGVHcmlkRGF0YTo6U3R5bGVHcmlkRGF0YSgpCiAgICAgLCBhdXRvUmVwZWF0Um93c0luc2VydGlv
blBvaW50KFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9SZXBlYXRJbnNlcnRpb25Qb2ludCgp
KQogICAgICwgYXV0b1JlcGVhdENvbHVtbnNUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1
dG9SZXBlYXRUeXBlKCkpCiAgICAgLCBhdXRvUmVwZWF0Um93c1R5cGUoUmVuZGVyU3R5bGU6Omlu
aXRpYWxHcmlkQXV0b1JlcGVhdFR5cGUoKSkKKyAgICAsIHN1YmdyaWRSb3dzKGZhbHNlKQorICAg
ICwgc3ViZ3JpZENvbHVtbnMoZmFsc2UpCiB7CiB9CiAKQEAgLTg0LDYgKzg2LDggQEAgaW5saW5l
IFN0eWxlR3JpZERhdGE6OlN0eWxlR3JpZERhdGEoY29uc3QgU3R5bGVHcmlkRGF0YSYgbykKICAg
ICAsIGF1dG9SZXBlYXRSb3dzSW5zZXJ0aW9uUG9pbnQoby5hdXRvUmVwZWF0Um93c0luc2VydGlv
blBvaW50KQogICAgICwgYXV0b1JlcGVhdENvbHVtbnNUeXBlKG8uYXV0b1JlcGVhdENvbHVtbnNU
eXBlKQogICAgICwgYXV0b1JlcGVhdFJvd3NUeXBlKG8uYXV0b1JlcGVhdFJvd3NUeXBlKQorICAg
ICwgc3ViZ3JpZFJvd3Moby5zdWJncmlkUm93cykKKyAgICAsIHN1YmdyaWRDb2x1bW5zKG8uc3Vi
Z3JpZENvbHVtbnMpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdyaWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVHcmlkRGF0YS5oCmluZGV4IDQzZGUzODYwZDVhOS4uZWI5YjMyZWY5MGMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKQEAgLTU3LDcg
KzU3LDggQEAgcHVibGljOgogICAgICAgICAgICAgJiYgb3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVz
ID09IG8ub3JkZXJlZE5hbWVkR3JpZFJvd0xpbmVzICYmIG9yZGVyZWROYW1lZEdyaWRDb2x1bW5M
aW5lcyA9PSBvLm9yZGVyZWROYW1lZEdyaWRDb2x1bW5MaW5lcwogICAgICAgICAgICAgJiYgZ3Jp
ZEF1dG9SZXBlYXRDb2x1bW5zID09IG8uZ3JpZEF1dG9SZXBlYXRDb2x1bW5zICYmIGdyaWRBdXRv
UmVwZWF0Um93cyA9PSBvLmdyaWRBdXRvUmVwZWF0Um93cwogICAgICAgICAgICAgJiYgYXV0b1Jl
cGVhdENvbHVtbnNJbnNlcnRpb25Qb2ludCA9PSBvLmF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9u
UG9pbnQgJiYgYXV0b1JlcGVhdFJvd3NJbnNlcnRpb25Qb2ludCA9PSBvLmF1dG9SZXBlYXRSb3dz
SW5zZXJ0aW9uUG9pbnQKLSAgICAgICAgICAgICYmIGF1dG9SZXBlYXRDb2x1bW5zVHlwZSA9PSBv
LmF1dG9SZXBlYXRDb2x1bW5zVHlwZSAmJiBhdXRvUmVwZWF0Um93c1R5cGUgPT0gby5hdXRvUmVw
ZWF0Um93c1R5cGU7CisgICAgICAgICAgICAmJiBhdXRvUmVwZWF0Q29sdW1uc1R5cGUgPT0gby5h
dXRvUmVwZWF0Q29sdW1uc1R5cGUgJiYgYXV0b1JlcGVhdFJvd3NUeXBlID09IG8uYXV0b1JlcGVh
dFJvd3NUeXBlICYmIHN1YmdyaWRSb3dzID09IG8uc3ViZ3JpZFJvd3MKKyAgICAgICAgICAgICYm
IHN1YmdyaWRDb2x1bW5zID09IG8uc3ViZ3JpZENvbHVtbnM7CiAgICAgfQogCiAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0eWxlR3JpZERhdGEmIG8pIGNvbnN0CkBAIC0xMDIsNiArMTAzLDkg
QEAgcHVibGljOgogICAgIEF1dG9SZXBlYXRUeXBlIGF1dG9SZXBlYXRDb2x1bW5zVHlwZTsKICAg
ICBBdXRvUmVwZWF0VHlwZSBhdXRvUmVwZWF0Um93c1R5cGU7CiAKKyAgICBib29sIHN1YmdyaWRS
b3dzOworICAgIGJvb2wgc3ViZ3JpZENvbHVtbnM7CisKIHByaXZhdGU6CiAgICAgU3R5bGVHcmlk
RGF0YSgpOwogICAgIFN0eWxlR3JpZERhdGEoY29uc3QgU3R5bGVHcmlkRGF0YSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCAwZjkwYmMyMjU5
ZWQuLjFkNjNlMjRiNTExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVC
dWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVy
Q29udmVydGVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ1NTUmF5VmFsdWUuaCIKICNpbmNsdWRlICJDU1NSZWZs
ZWN0VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NTdWJncmlkVmFsdWUuaCIKICNpbmNsdWRlICJDYWxj
RXhwcmVzc2lvbkxlbmd0aC5oIgogI2luY2x1ZGUgIkNhbGNFeHByZXNzaW9uT3BlcmF0aW9uLmgi
CiAjaW5jbHVkZSAiRm9udFBhbGV0dGUuaCIKQEAgLTEwMDQsNiArMTAwNSw3IEBAIHB1YmxpYzoK
ICAgICBPcmRlcmVkTmFtZWRHcmlkTGluZXNNYXAgbV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3Jp
ZExpbmVzOwogICAgIHVuc2lnbmVkIG1fYXV0b1JlcGVhdEluc2VydGlvblBvaW50IHsgUmVuZGVy
U3R5bGU6OmluaXRpYWxHcmlkQXV0b1JlcGVhdEluc2VydGlvblBvaW50KCkgfTsKICAgICBBdXRv
UmVwZWF0VHlwZSBtX2F1dG9SZXBlYXRUeXBlIHsgUmVuZGVyU3R5bGU6OmluaXRpYWxHcmlkQXV0
b1JlcGVhdFR5cGUoKSB9OworICAgIGJvb2wgaXNTdWJncmlkIHsgZmFsc2UgfTsKIH07CiAKIGlu
bGluZSBib29sIEJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QoY29uc3QgQ1NT
VmFsdWUmIHZhbHVlLCBUcmFja3NEYXRhJiB0cmFja3NEYXRhLCBCdWlsZGVyU3RhdGUmIGJ1aWxk
ZXJTdGF0ZSkKQEAgLTEwMTcsMTQgKzEwMTksMjEgQEAgaW5saW5lIGJvb2wgQnVpbGRlckNvbnZl
cnRlcjo6Y3JlYXRlR3JpZFRyYWNrTGlzdChjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIFRyYWNrc0QK
IAogICAgIHVuc2lnbmVkIGN1cnJlbnROYW1lZEdyaWRMaW5lID0gMDsKICAgICBhdXRvIGhhbmRs
ZUxpbmVOYW1lT3JUcmFja1NpemUgPSBbJl0oY29uc3QgQ1NTVmFsdWUmIGN1cnJlbnRWYWx1ZSkg
ewotICAgICAgICBpZiAoaXM8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPihjdXJyZW50VmFsdWUpKQor
ICAgICAgICBpZiAoaXM8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPihjdXJyZW50VmFsdWUpKSB7CiAg
ICAgICAgICAgICBjcmVhdGVHcmlkTGluZU5hbWVzTGlzdChjdXJyZW50VmFsdWUsIGN1cnJlbnRO
YW1lZEdyaWRMaW5lLCB0cmFja3NEYXRhLm1fbmFtZWRHcmlkTGluZXMsIHRyYWNrc0RhdGEubV9v
cmRlcmVkTmFtZWRHcmlkTGluZXMpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFN1
YmdyaWRzIG9ubHkgaGF2ZSBsaW5lIG5hbWVzIGRlZmluZWQsIG5vdCB0cmFjayBzaXplcywgc28g
d2Ugd2FudCBvdXIgY291bnQKKyAgICAgICAgICAgIC8vIHRvIGJlIHRoZSBudW1iZXIgb2YgbGlu
ZXMgbmFtZWQgcmF0aGVyIHRoYW4gbnVtYmVyIG9mIHNpemVkIHRyYWNrcy4KKyAgICAgICAgICAg
IGlmICh0cmFja3NEYXRhLmlzU3ViZ3JpZCkKKyAgICAgICAgICAgICAgICBjdXJyZW50TmFtZWRH
cmlkTGluZSsrOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgKytjdXJyZW50TmFtZWRH
cmlkTGluZTsKICAgICAgICAgICAgIHRyYWNrc0RhdGEubV90cmFja1NpemVzLmFwcGVuZChjcmVh
dGVHcmlkVHJhY2tTaXplKGN1cnJlbnRWYWx1ZSwgYnVpbGRlclN0YXRlKSk7CiAgICAgICAgIH0K
ICAgICB9OwogCisgICAgaWYgKGlzPENTU1N1YmdyaWRWYWx1ZT4odmFsdWUpKQorICAgICAgICB0
cmFja3NEYXRhLmlzU3ViZ3JpZCA9IHRydWU7CisKICAgICBmb3IgKGF1dG8mIGN1cnJlbnRWYWx1
ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGlmIChpczxDU1NH
cmlkQXV0b1JlcGVhdFZhbHVlPihjdXJyZW50VmFsdWUpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
dHJhY2tzRGF0YS5tX2F1dG9SZXBlYXRUcmFja1NpemVzLmlzRW1wdHkoKSk7CkBAIC0xMDM1LDYg
KzEwNDQsOCBAQCBpbmxpbmUgYm9vbCBCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tM
aXN0KGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgVHJhY2tzRAogICAgICAgICAgICAgZm9yIChhdXRv
JiBhdXRvUmVwZWF0VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KGN1cnJlbnRWYWx1ZS5n
ZXQoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoaXM8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPihh
dXRvUmVwZWF0VmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUdyaWRMaW5lTmFt
ZXNMaXN0KGF1dG9SZXBlYXRWYWx1ZS5nZXQoKSwgYXV0b1JlcGVhdEluZGV4LCB0cmFja3NEYXRh
Lm1fYXV0b1JlcGVhdE5hbWVkR3JpZExpbmVzLCB0cmFja3NEYXRhLm1fYXV0b1JlcGVhdE9yZGVy
ZWROYW1lZEdyaWRMaW5lcyk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0cmFja3NEYXRhLmlz
U3ViZ3JpZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICsrYXV0b1JlcGVhdEluZGV4OwogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgKythdXRvUmVwZWF0SW5kZXg7CkBAIC0xMDU4LDcgKzEwNjksNyBAQCBpbmxpbmUgYm9v
bCBCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSwgVHJhY2tzRAogCiAgICAgLy8gVGhlIHBhcnNlciBzaG91bGQgaGF2ZSByZWplY3RlZCBh
bnkgPHRyYWNrLWxpc3Q+IHdpdGhvdXQgYW55IDx0cmFjay1zaXplPiBhcwogICAgIC8vIHRoaXMg
aXMgbm90IGNvbmZvcm1hbnQgdG8gdGhlIHN5bnRheC4KLSAgICBBU1NFUlQoIXRyYWNrc0RhdGEu
bV90cmFja1NpemVzLmlzRW1wdHkoKSB8fCAhdHJhY2tzRGF0YS5tX2F1dG9SZXBlYXRUcmFja1Np
emVzLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCF0cmFja3NEYXRhLm1fdHJhY2tTaXplcy5pc0Vt
cHR5KCkgfHwgIXRyYWNrc0RhdGEubV9hdXRvUmVwZWF0VHJhY2tTaXplcy5pc0VtcHR5KCkgfHwg
dHJhY2tzRGF0YS5pc1N1YmdyaWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDEzY2FkOWI3ZmQ3Ny4uMmFhNDI0
ZjJiYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0
b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAt
MTkwNSw3ICsxOTA1LDggQEAgaW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdy
aWRUZW1wbGF0ZUFyZWFzKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXQKICAgICBzdHlsZS5zZXRH
cmlkQXV0b1JlcGVhdCMjVHJhY2tUeXBlIyNzSW5zZXJ0aW9uUG9pbnQodHJhY2tzRGF0YSA/IHRy
YWNrc0RhdGEtPm1fYXV0b1JlcGVhdEluc2VydGlvblBvaW50IDogcGFyZW50U3R5bGUtPmdyaWRB
dXRvUmVwZWF0IyNUcmFja1R5cGUjI3NJbnNlcnRpb25Qb2ludCgpKTsgXAogICAgIHN0eWxlLnNl
dEF1dG9SZXBlYXROYW1lZEdyaWQjI1RyYWNrVHlwZSMjTGluZXModHJhY2tzRGF0YSA/IHRyYWNr
c0RhdGEtPm1fYXV0b1JlcGVhdE5hbWVkR3JpZExpbmVzIDogcGFyZW50U3R5bGUtPmF1dG9SZXBl
YXROYW1lZEdyaWQjI1RyYWNrVHlwZSMjTGluZXMoKSk7IFwKICAgICBzdHlsZS5zZXRBdXRvUmVw
ZWF0T3JkZXJlZE5hbWVkR3JpZCMjVHJhY2tUeXBlIyNMaW5lcyh0cmFja3NEYXRhID8gdHJhY2tz
RGF0YS0+bV9hdXRvUmVwZWF0T3JkZXJlZE5hbWVkR3JpZExpbmVzIDogcGFyZW50U3R5bGUtPmF1
dG9SZXBlYXRPcmRlcmVkTmFtZWRHcmlkIyNUcmFja1R5cGUjI0xpbmVzKCkpOyBcCi0gICAgc3R5
bGUuc2V0R3JpZEF1dG9SZXBlYXQjI1RyYWNrVHlwZSMjc1R5cGUodHJhY2tzRGF0YSA/IHRyYWNr
c0RhdGEtPm1fYXV0b1JlcGVhdFR5cGUgOiBwYXJlbnRTdHlsZS0+Z3JpZEF1dG9SZXBlYXQjI1Ry
YWNrVHlwZSMjc1R5cGUoKSk7CisgICAgc3R5bGUuc2V0R3JpZEF1dG9SZXBlYXQjI1RyYWNrVHlw
ZSMjc1R5cGUodHJhY2tzRGF0YSA/IHRyYWNrc0RhdGEtPm1fYXV0b1JlcGVhdFR5cGUgOiBwYXJl
bnRTdHlsZS0+Z3JpZEF1dG9SZXBlYXQjI1RyYWNrVHlwZSMjc1R5cGUoKSk7IFwKKyAgICBzdHls
ZS5zZXRHcmlkU3ViZ3JpZCMjVHJhY2tUeXBlIyNzKHRyYWNrc0RhdGEgPyB0cmFja3NEYXRhLT5p
c1N1YmdyaWQgOiBwYXJlbnRTdHlsZS0+Z3JpZFN1YmdyaWQjI1RyYWNrVHlwZSMjcygpKTsKIAog
I2RlZmluZSBTRVRfSU5IRVJJVF9UUkFDS1NfREFUQShzdHlsZSwgcGFyZW50U3R5bGUsIFRyYWNr
VHlwZSkgXAogICAgIEJ1aWxkZXJDb252ZXJ0ZXI6OlRyYWNrc0RhdGEqIHRyYWNrc0RhdGEgPSBu
dWxscHRyOyBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451946</attachid>
            <date>2022-02-14 15:16:01 -0800</date>
            <delta_ts>2022-02-14 16:06:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236122-20220215121559.patch</filename>
            <type>text/plain</type>
            <size>45826</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBjNDg5N2UxMWI0MmNm
NGFiNjIwNTRhNzk3NWI1MTI3ZWUwYzZjZi4uZWU5MWY4YjFjMGNkZThiYjkyM2I2YTMyOGM0OTg2
NTMyOWU0NWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTAyLTE1ICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgSW5oZXJpdCB0cmFj
ayBjb3VudCBmcm9tIHBhcmVudCBncmlkIGZvciBzdWJncmlkZGVkIGF4ZXMgYW5kIGNsYW1wIGl0
ZW0gcGxhY2VtZW50IHRvIHRoYXQgZXhwbGljaXQgZ3JpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZXMgR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpleHBsaWNpdEdyaWQ8PkNvdW50IHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIHRyYWNrcworICAg
ICAgICBzcGFubmVkIGluIHRoZSBwYXJlbnQgZ3JpZCwgZm9yIGF4ZXMgdGhhdCBhcmUgYSBzdWJn
cmlkLgorCisgICAgICAgIFVwZGF0ZXMgYWRqdXN0R3JpZFBvc2l0aW9uc0ZvclN0eWxlIHRvIHVz
ZSB0aGUgbnVtYmVyIG9mIGxpbmVzIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgc3ViZ3JpZCBw
cm9wZXJ0eSwgZm9yIGdyaWQgaXRlbXMgdGhhdCBhcmUgYWxzbyBhIHN1YmdyaWQgYW5kIGhhdmUg
YW4gb3RoZXJ3aXNlCisgICAgICAgIGluZGVmaW5pdGUgc3Bhbi4KKworICAgICAgICBBZGRzIGNs
YW1waW5nIHN1cHBvcnQgdG8gR3JpZCBzbyB0aGF0IHdlIGNhbiBwcmV2ZW50IHN1YmdyaWRzIGZy
b20gZXZlciBhZGRpbmcKKyAgICAgICAgbmV3IGltcGxpY2l0IHRyYWNrcy4KKworICAgICAgICAq
IHJlbmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6Omluc2VydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmlkOjpzZXRDbGFtcGluZ0ZvclN1YmdyaWQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZDo6Y2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxpY2l0R3JpZCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkOjpzZXROZWVkc0l0ZW1zUGxhY2VtZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRB
bmRPcmRlckl0ZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBs
YWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6aXNTdWJncmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmlzU3ViZ3JpZFJvd3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6aXNTdWJncmlkQ29sdW1ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZsb3dDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpudW1UcmFja3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNwb3Nl
ZERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlR3JpZFNw
YW5Gb3JPdXRPZkZsb3dDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6aW50ZWdlclNwYW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFNwYW46OnRyYW5zbGF0ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFu
OjpjbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0luZGVmaW5pdGVTcGFuKToKKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3Np
dGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdy
aWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9z
aXRpb25zUmVzb2x2ZXIuaDoKKwogMjAyMi0wMi0xNCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudCB0b29sdGlwcyBpbiBv
dmVybGF5cyBzaG91bGQgdXNlIHNhbWUgZW5jb2RhYmxlL2RlY29kYWJsZSBMYWJlbCB0eXBlIGFz
IGdyaWQgb3ZlcmxheXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRleCA1NjAyZDdjMmQ0
ZDViY2E5MzI0NTQ0Yjc1YWQyMmNiMjY1OGVkMDJjLi4zN2NhOTNmMDNhNzIxYzIwYzM4MGZiYzdj
MTFiODQxNjM5MDdhYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC02MSwxNyAr
NjEsMjQgQEAgdm9pZCBHcmlkOjplbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93U2l6
ZSwgdW5zaWduZWQgbWF4aW11bUNvbHVtblNpemUpCiAgICAgfQogfQogCi12b2lkIEdyaWQ6Omlu
c2VydChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBHcmlkQXJlYSYgYXJlYSkKK0dyaWRBcmVhIEdy
aWQ6Omluc2VydChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBHcmlkQXJlYSYgYXJlYSkKIHsKLSAg
ICBBU1NFUlQoYXJlYS5yb3dzLmlzVHJhbnNsYXRlZERlZmluaXRlKCkgJiYgYXJlYS5jb2x1bW5z
LmlzVHJhbnNsYXRlZERlZmluaXRlKCkpOwotICAgIGVuc3VyZUdyaWRTaXplKGFyZWEucm93cy5l
bmRMaW5lKCksIGFyZWEuY29sdW1ucy5lbmRMaW5lKCkpOworICAgIEdyaWRBcmVhIGNsYW1wZWQg
PSBhcmVhOworICAgIGlmIChtX21heFJvd3MpCisgICAgICAgIGNsYW1wZWQucm93cy5jbGFtcCht
X21heFJvd3MpOworICAgIGlmIChtX21heENvbHVtbnMpCisgICAgICAgIGNsYW1wZWQuY29sdW1u
cy5jbGFtcChtX21heENvbHVtbnMpOwogCi0gICAgZm9yIChhdXRvIHJvdyA6IGFyZWEucm93cykg
ewotICAgICAgICBmb3IgKGF1dG8gY29sdW1uIDogYXJlYS5jb2x1bW5zKQorICAgIEFTU0VSVChj
bGFtcGVkLnJvd3MuaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSAmJiBjbGFtcGVkLmNvbHVtbnMuaXNU
cmFuc2xhdGVkRGVmaW5pdGUoKSk7CisgICAgZW5zdXJlR3JpZFNpemUoY2xhbXBlZC5yb3dzLmVu
ZExpbmUoKSwgY2xhbXBlZC5jb2x1bW5zLmVuZExpbmUoKSk7CisKKyAgICBmb3IgKGF1dG8gcm93
IDogY2xhbXBlZC5yb3dzKSB7CisgICAgICAgIGZvciAoYXV0byBjb2x1bW4gOiBjbGFtcGVkLmNv
bHVtbnMpCiAgICAgICAgICAgICBtX2dyaWRbcm93XVtjb2x1bW5dLmFwcGVuZChjaGlsZCk7CiAg
ICAgfQogCi0gICAgc2V0R3JpZEl0ZW1BcmVhKGNoaWxkLCBhcmVhKTsKKyAgICBzZXRHcmlkSXRl
bUFyZWEoY2hpbGQsIGNsYW1wZWQpOworICAgIHJldHVybiBjbGFtcGVkOwogfQogCiB2b2lkIEdy
aWQ6OnNldEV4cGxpY2l0R3JpZFN0YXJ0KHVuc2lnbmVkIHJvd1N0YXJ0LCB1bnNpZ25lZCBjb2x1
bW5TdGFydCkKQEAgLTg1LDYgKzkyLDI2IEBAIHVuc2lnbmVkIEdyaWQ6OmV4cGxpY2l0R3JpZFN0
YXJ0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiAgICAgcmV0dXJu
IGRpcmVjdGlvbiA9PSBGb3JSb3dzID8gbV9leHBsaWNpdFJvd1N0YXJ0IDogbV9leHBsaWNpdENv
bHVtblN0YXJ0OwogfQogCit2b2lkIEdyaWQ6OnNldENsYW1waW5nRm9yU3ViZ3JpZCh1bnNpZ25l
ZCBtYXhSb3dzLCB1bnNpZ25lZCBtYXhDb2x1bW5zKQoreworICAgIG1fbWF4Um93cyA9IG1heFJv
d3M7CisgICAgbV9tYXhDb2x1bW5zID0gbWF4Q29sdW1uczsKK30KKwordm9pZCBHcmlkOjpjbGFt
cEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlkKEdyaWRBcmVhJiBhcmVhKQoreworICAgIGlmICgh
YXJlYS5yb3dzLmlzSW5kZWZpbml0ZSgpKSB7CisgICAgICAgIGlmIChtX21heFJvd3MpCisgICAg
ICAgICAgICBhcmVhLnJvd3MuY2xhbXAobV9tYXhSb3dzKTsKKyAgICAgICAgYXJlYS5yb3dzLnRy
YW5zbGF0ZShleHBsaWNpdEdyaWRTdGFydChGb3JSb3dzKSk7CisgICAgfQorICAgIGlmICghYXJl
YS5jb2x1bW5zLmlzSW5kZWZpbml0ZSgpKSB7CisgICAgICAgIGlmIChtX21heENvbHVtbnMpCisg
ICAgICAgICAgICBhcmVhLmNvbHVtbnMuY2xhbXAobV9tYXhDb2x1bW5zKTsKKyAgICAgICAgYXJl
YS5jb2x1bW5zLnRyYW5zbGF0ZShleHBsaWNpdEdyaWRTdGFydChGb3JDb2x1bW5zKSk7CisgICAg
fQorfQorCiBHcmlkQXJlYSBHcmlkOjpncmlkSXRlbUFyZWEoY29uc3QgUmVuZGVyQm94JiBpdGVt
KSBjb25zdAogewogICAgIEFTU0VSVChtX2dyaWRJdGVtQXJlYS5jb250YWlucygmaXRlbSkpOwpA
QCAtMTYxLDYgKzE4OCw4IEBAIHZvaWQgR3JpZDo6c2V0TmVlZHNJdGVtc1BsYWNlbWVudChib29s
IG5lZWRzSXRlbXNQbGFjZW1lbnQpCiAgICAgbV9hdXRvUmVwZWF0RW1wdHlSb3dzID0gbnVsbHB0
cjsKICAgICBtX2F1dG9SZXBlYXRDb2x1bW5zID0gMDsKICAgICBtX2F1dG9SZXBlYXRSb3dzID0g
MDsKKyAgICBtX21heENvbHVtbnMgPSAwOworICAgIG1fbWF4Um93cyA9IDA7CiB9CiAKIEdyaWRJ
dGVyYXRvcjo6R3JpZEl0ZXJhdG9yKGNvbnN0IEdyaWQmIGdyaWQsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIGZpeGVkVHJhY2tJbmRleCwgdW5zaWduZWQgdmFy
eWluZ1RyYWNrSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAppbmRleCA3MmNhZGY2OGVmNGQz
MjY2Y2UxZjhjZWViZGM5YTQ5ZGYyYmM4MTFiLi4xMWQ5ZTY4ZmI4MTk5ZmJjYTRkOGJhNWIxYmNi
ZjljODMwOTljNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHVuc2lnbmVkIG51bVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24p
IGNvbnN0OwogCiAgICAgdm9pZCBlbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93U2l6
ZSwgdW5zaWduZWQgbWF4aW11bUNvbHVtblNpemUpOwotICAgIHZvaWQgaW5zZXJ0KFJlbmRlckJv
eCYsIGNvbnN0IEdyaWRBcmVhJik7CisgICAgR3JpZEFyZWEgaW5zZXJ0KFJlbmRlckJveCYsIGNv
bnN0IEdyaWRBcmVhJik7CiAKICAgICAvLyBOb3RlIHRoYXQgZWFjaCBpbiBmbG93IGNoaWxkIG9m
IGEgZ3JpZCBjb250YWluZXIgYmVjb21lcyBhIGdyaWQgaXRlbS4gVGhpcyBtZWFucyB0aGF0CiAg
ICAgLy8gdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gZmFsc2UgZm9yIGEgZ3JpZCBjb250YWluZXIg
d2l0aCBvbmx5IG91dCBvZiBmbG93IGNoaWxkcmVuLgpAQCAtNjcsNiArNjcsMTAgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
KSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9SZXBlYXRUcmFja3ModW5zaWduZWQgYXV0b1JlcGVh
dFJvd3MsIHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1bW5zKTsKIAorICAgIHZvaWQgc2V0Q2xhbXBp
bmdGb3JTdWJncmlkKHVuc2lnbmVkIG1heFJvd3MsIHVuc2lnbmVkIG1heENvbHVtbnMpOworCisg
ICAgdm9pZCBjbGFtcEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlkKEdyaWRBcmVhJik7CisKICAg
ICB2b2lkIHNldEF1dG9SZXBlYXRFbXB0eUNvbHVtbnMoc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRU
cmFja0luZGV4U2V0Pik7CiAgICAgdm9pZCBzZXRBdXRvUmVwZWF0RW1wdHlSb3dzKHN0ZDo6dW5p
cXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4pOwogCkBAIC05Miw2ICs5Niw5IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0Q29sdW1ucyB7IDAgfTsKICAgICB1bnNpZ25l
ZCBtX2F1dG9SZXBlYXRSb3dzIHsgMCB9OwogCisgICAgdW5zaWduZWQgbV9tYXhDb2x1bW5zIHsg
MCB9OworICAgIHVuc2lnbmVkIG1fbWF4Um93cyB7IDAgfTsKKwogICAgIGJvb2wgbV9uZWVkc0l0
ZW1zUGxhY2VtZW50IHsgdHJ1ZSB9OwogCiAgICAgR3JpZEFzTWF0cml4IG1fZ3JpZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCBk
NGY3ODhkYzcwZDI2MDE1NWY1ZDY0ZmQ0NWZiODE5NDM0N2E2NWYxLi5hZjZiMWY4ZDVmZWNjOGQ4
NDU2YmY0NjE5YWU5MzM0NWZmY2Q4NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIExheW91dFVuaXQg
bWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBHcmlkVHJh
Y2tTaXppbmdEaXJlCiAgICAgcmV0dXJuIG1hcmdpblN0YXJ0ICsgbWFyZ2luRW5kOwogfQogCi1i
b29sIGlzT3J0aG9nb25hbENoaWxkKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQpCitib29sIGlzT3J0aG9nb25hbENoaWxkKGNvbnN0IFJlbmRlckdyaWQmIGdy
aWQsIGNvbnN0IFJlbmRlckVsZW1lbnQmIGNoaWxkKQogewogICAgIHJldHVybiBjaGlsZC5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpICE9IGdyaWQuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsK
IH0KQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBpc0FzcGVjdFJhdGlvQmxvY2tTaXplRGVwZW5kZW50
Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKICAgICByZXR1cm4gKGNoaWxkLnN0eWxlKCku
aGFzQXNwZWN0UmF0aW8oKSB8fCBjaGlsZC5oYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpKSAmJiAo
Y2hpbGQuaGFzUmVsYXRpdmVMb2dpY2FsSGVpZ2h0KCkgfHwgY2hpbGQuaGFzU3RyZXRjaGVkTG9n
aWNhbEhlaWdodCgpKTsKIH0KIAotR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURp
cmVjdGlvbkZvckNoaWxkKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckJveCYg
Y2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCitHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYg
Z3JpZCwgY29uc3QgUmVuZGVyRWxlbWVudCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlY3Rpb24pCiB7CiAgICAgcmV0dXJuICFpc09ydGhvZ29uYWxDaGlsZChncmlkLCBjaGls
ZCkgPyBkaXJlY3Rpb24gOiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBGb3JSb3dzIDogRm9y
Q29sdW1ucyk7CiB9CkBAIC0xMDIsNiArMTAyLDE5IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVu
CiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY2hpbGQub3ZlcnJpZGluZ0Nv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSA6IGNoaWxkLm92ZXJyaWRpbmdDb250
YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpOwogfQogCitib29sIGlzRmxpcHBlZERp
cmVjdGlvbihjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
ZGlyZWN0aW9uKQoreworICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykKKyAgICAgICAg
cmV0dXJuICFncmlkLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOworICAgIHJldHVy
biBncmlkLnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKTsKK30KKworYm9vbCBp
c1N1YmdyaWRSZXZlcnNlZERpcmVjdGlvbihjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24gb3V0ZXJEaXJlY3Rpb24sIGNvbnN0IFJlbmRlckdyaWQmIHN1Ymdy
aWQpCit7CisgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGNoaWxkRGlyZWN0aW9uID0gZmxv
d0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoZ3JpZCwgc3ViZ3JpZCwgb3V0ZXJEaXJlY3Rpb24pOwor
ICAgIHJldHVybiBpc0ZsaXBwZWREaXJlY3Rpb24oZ3JpZCwgb3V0ZXJEaXJlY3Rpb24pICE9IGlz
RmxpcHBlZERpcmVjdGlvbihzdWJncmlkLCBjaGlsZERpcmVjdGlvbik7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEdyaWRMYXlvdXRGdW5jdGlvbnMKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmgKaW5kZXggNWRi
M2Y1Zjk4Mjk1MzVlZDNhNzMyYzI5NGI3ZGEwNjBiYmQyZDFiZC4uMjZlYmRjYTkwMDFmMmQ1MWZi
MDA0YzE2MTIyYzFmMDJlNzE1NmQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
R3JpZExheW91dEZ1bmN0aW9ucy5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIFJl
bmRlckdyaWQ7CiAKQEAgLTM5LDEyICs0MCwxNSBAQCBuYW1lc3BhY2UgR3JpZExheW91dEZ1bmN0
aW9ucyB7CiAKIExheW91dFVuaXQgY29tcHV0ZU1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY29u
c3QgUmVuZGVyR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgUmVuZGVyQm94
Jik7CiBMYXlvdXRVbml0IG1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3Jp
ZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgUmVuZGVyQm94Jik7Ci1ib29sIGlz
T3J0aG9nb25hbENoaWxkKGNvbnN0IFJlbmRlckdyaWQmLCBjb25zdCBSZW5kZXJCb3gmKTsKK2Jv
b2wgaXNPcnRob2dvbmFsQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYsIGNvbnN0IFJlbmRlckVsZW1l
bnQmKTsKIGJvb2wgaXNBc3BlY3RSYXRpb0Jsb2NrU2l6ZURlcGVuZGVudENoaWxkKGNvbnN0IFJl
bmRlckJveCYpOwotR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURpcmVjdGlvbkZv
ckNoaWxkKGNvbnN0IFJlbmRlckdyaWQmLCBjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24pOworR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURpcmVjdGlv
bkZvckNoaWxkKGNvbnN0IFJlbmRlckdyaWQmLCBjb25zdCBSZW5kZXJFbGVtZW50JiwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKTsKIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uKTsKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uKTsKIAorYm9vbCBpc0ZsaXBwZWREaXJlY3Rpb24oY29uc3QgUmVuZGVyR3JpZCYsIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbik7Citib29sIGlzU3ViZ3JpZFJldmVyc2VkRGlyZWN0aW9u
KGNvbnN0IFJlbmRlckdyaWQmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gb3V0ZXJEaXJlY3Rp
b24sIGNvbnN0IFJlbmRlckdyaWQmIHN1YmdyaWQpOworCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA3ZmZiNjIz
NzQ4ZjAwZjY2ZmI3YmU4NWZiOWU5NTMzZTU3NDExZWYxLi5lYjkxZmZkMzI0MTM2MjViMmQ3OTRk
NDAyNjEzY2U5Y2YzNGQwM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwCkBAIC00NDYsOCArNDQ2LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlSW50cmluc2lj
TG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW8KICAgICBMYXlv
dXRVbml0IGNoaWxkTWF4V2lkdGg7CiAgICAgYm9vbCBoYWRFeGNsdWRlZENoaWxkcmVuID0gY29t
cHV0ZVByZWZlcnJlZFdpZHRoc0ZvckV4Y2x1ZGVkQ2hpbGRyZW4oY2hpbGRNaW5XaWR0aCwgY2hp
bGRNYXhXaWR0aCk7CiAKLSAgICBHcmlkIGdyaWQoY29uc3RfY2FzdDxSZW5kZXJHcmlkJj4oKnRo
aXMpKTsKLSAgICBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gYWxnb3JpdGhtKHRoaXMsIGdyaWQp
OworICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSBhbGdvcml0aG0odGhpcywgY29uc3RfY2Fz
dDxHcmlkJj4obV9ncmlkKSk7CiAgICAgcGxhY2VJdGVtc09uR3JpZChhbGdvcml0aG0sIHN0ZDo6
bnVsbG9wdCk7CiAKICAgICBwZXJmb3JtR3JpZEl0ZW1zUHJlTGF5b3V0KGFsZ29yaXRobSk7CkBA
IC02NDEsNyArNjQwLDYgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKEdyaWRU
cmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtLCBzdGQ6Om9wdGkKICAgICBHcmlkJiBncmlk
ID0gYWxnb3JpdGhtLm11dGFibGVHcmlkKCk7CiAgICAgdW5zaWduZWQgYXV0b1JlcGVhdENvbHVt
bnMgPSBjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEZvckNvbHVtbnMsIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCk7CiAgICAgdW5zaWduZWQgYXV0b1JlcGVhdFJvd3MgPSBjb21wdXRlQXV0b1Jl
cGVhdFRyYWNrc0NvdW50KEZvclJvd3MsIGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRGb3JQZXJjZW50
YWdlQ29tcHV0YXRpb24oKSk7Ci0KICAgICBhdXRvUmVwZWF0Um93cyA9IGNsYW1wQXV0b1JlcGVh
dFRyYWNrcyhGb3JSb3dzLCBhdXRvUmVwZWF0Um93cyk7CiAgICAgYXV0b1JlcGVhdENvbHVtbnMg
PSBjbGFtcEF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucywgYXV0b1JlcGVhdENvbHVtbnMpOwog
CkBAIC02NzAsMTAgKzY2OCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZChH
cmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIGFsZ29yaXRobSwgc3RkOjpvcHRpCiAgICAgICAgICAg
ICBjaGlsZC0+c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0
KHN0ZDo6bnVsbG9wdCk7CiAKICAgICAgICAgR3JpZEFyZWEgYXJlYSA9IGdyaWQuZ3JpZEl0ZW1B
cmVhKCpjaGlsZCk7Ci0gICAgICAgIGlmICghYXJlYS5yb3dzLmlzSW5kZWZpbml0ZSgpKQotICAg
ICAgICAgICAgYXJlYS5yb3dzLnRyYW5zbGF0ZShncmlkLmV4cGxpY2l0R3JpZFN0YXJ0KEZvclJv
d3MpKTsKLSAgICAgICAgaWYgKCFhcmVhLmNvbHVtbnMuaXNJbmRlZmluaXRlKCkpCi0gICAgICAg
ICAgICBhcmVhLmNvbHVtbnMudHJhbnNsYXRlKGdyaWQuZXhwbGljaXRHcmlkU3RhcnQoRm9yQ29s
dW1ucykpOworICAgICAgICBncmlkLmNsYW1wQW5kVHJhbnNsYXRlVG9JbXBsaWNpdEdyaWQoYXJl
YSk7CiAKICAgICAgICAgaWYgKGFyZWEucm93cy5pc0luZGVmaW5pdGUoKSB8fCBhcmVhLmNvbHVt
bnMuaXNJbmRlZmluaXRlKCkpIHsKICAgICAgICAgICAgIGdyaWQuc2V0R3JpZEl0ZW1BcmVhKCpj
aGlsZCwgYXJlYSk7CkBAIC02OTAsOCArNjg1LDggQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0
ZW1zT25HcmlkKEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtLCBzdGQ6Om9wdGkK
IAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKGdyaWQuaGFzR3JpZEl0ZW1zKCkpIHsKLSAg
ICAgICAgQVNTRVJUKGdyaWQubnVtVHJhY2tzKEZvclJvd3MpID49IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQoc3R5bGUoKSwgZ3JpZC5hdXRvUmVwZWF0VHJhY2tz
KEZvclJvd3MpKSk7Ci0gICAgICAgIEFTU0VSVChncmlkLm51bVRyYWNrcyhGb3JDb2x1bW5zKSA+
PSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KHN0eWxlKCks
IGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhGb3JDb2x1bW5zKSkpOworICAgICAgICBBU1NFUlQoZ3Jp
ZC5udW1UcmFja3MoRm9yUm93cykgPj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdy
aWRSb3dDb3VudCgqdGhpcykpOworICAgICAgICBBU1NFUlQoZ3JpZC5udW1UcmFja3MoRm9yQ29s
dW1ucykgPj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCgq
dGhpcykpOwogICAgIH0KICNlbmRpZgogCkBAIC03NDUsMzMgKzc0MCwzNSBAQCB2b2lkIFJlbmRl
ckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcihHcmlkJiBncmlkKSBj
b25zdAogICAgIE9yZGVySXRlcmF0b3JQb3B1bGF0b3IgcG9wdWxhdG9yKGdyaWQub3JkZXJJdGVy
YXRvcigpKTsKICAgICB1bnNpZ25lZCBleHBsaWNpdFJvd1N0YXJ0ID0gMDsKICAgICB1bnNpZ25l
ZCBleHBsaWNpdENvbHVtblN0YXJ0ID0gMDsKLSAgICB1bnNpZ25lZCBhdXRvUmVwZWF0Um93cyA9
IGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhGb3JSb3dzKTsKLSAgICB1bnNpZ25lZCBhdXRvUmVwZWF0
Q29sdW1ucyA9IGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhGb3JDb2x1bW5zKTsKLSAgICB1bnNpZ25l
ZCBtYXhpbXVtUm93SW5kZXggPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJv
d0NvdW50KHN0eWxlKCksIGF1dG9SZXBlYXRSb3dzKTsKLSAgICB1bnNpZ25lZCBtYXhpbXVtQ29s
dW1uSW5kZXggPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50
KHN0eWxlKCksIGF1dG9SZXBlYXRDb2x1bW5zKTsKKyAgICB1bnNpZ25lZCBtYXhpbXVtUm93SW5k
ZXggPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KCp0aGlzKTsK
KyAgICB1bnNpZ25lZCBtYXhpbXVtQ29sdW1uSW5kZXggPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6
OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KCp0aGlzKTsKIAogICAgIGZvciAoUmVuZGVyQm94KiBj
aGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
Qm94KCkpIHsKICAgICAgICAgaWYgKCFwb3B1bGF0b3IuY29sbGVjdENoaWxkKCpjaGlsZCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIEdyaWRTcGFuIHJvd1Bvc2l0
aW9ucyA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5
bGUoc3R5bGUoKSwgKmNoaWxkLCBGb3JSb3dzLCBhdXRvUmVwZWF0Um93cyk7Ci0gICAgICAgIGlm
ICghcm93UG9zaXRpb25zLmlzSW5kZWZpbml0ZSgpKSB7Ci0gICAgICAgICAgICBleHBsaWNpdFJv
d1N0YXJ0ID0gc3RkOjptYXg8aW50PihleHBsaWNpdFJvd1N0YXJ0LCAtcm93UG9zaXRpb25zLnVu
dHJhbnNsYXRlZFN0YXJ0TGluZSgpKTsKLSAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0
ZDo6bWF4PGludD4obWF4aW11bVJvd0luZGV4LCByb3dQb3NpdGlvbnMudW50cmFuc2xhdGVkRW5k
TGluZSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEdyb3cgdGhlIGdyaWQg
Zm9yIGl0ZW1zIHdpdGggYSBkZWZpbml0ZSByb3cgc3BhbiwgZ2V0dGluZyB0aGUgbGFyZ2VzdCBz
dWNoIHNwYW4uCi0gICAgICAgICAgICB1bnNpZ25lZCBzcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNS
ZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbSgqY2hpbGQsIEZvclJvd3MpOwotICAg
ICAgICAgICAgbWF4aW11bVJvd0luZGV4ID0gc3RkOjptYXgobWF4aW11bVJvd0luZGV4LCBzcGFu
U2l6ZSk7CisgICAgICAgIEdyaWRTcGFuIHJvd1Bvc2l0aW9ucyA9IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoKmNoaWxkLCBGb3JSb3dzKTsKKyAg
ICAgICAgaWYgKCFpc1N1YmdyaWRSb3dzKCkpIHsKKyAgICAgICAgICAgIGlmICghcm93UG9zaXRp
b25zLmlzSW5kZWZpbml0ZSgpKSB7CisgICAgICAgICAgICAgICAgZXhwbGljaXRSb3dTdGFydCA9
IHN0ZDo6bWF4PGludD4oZXhwbGljaXRSb3dTdGFydCwgLXJvd1Bvc2l0aW9ucy51bnRyYW5zbGF0
ZWRTdGFydExpbmUoKSk7CisgICAgICAgICAgICAgICAgbWF4aW11bVJvd0luZGV4ID0gc3RkOjpt
YXg8aW50PihtYXhpbXVtUm93SW5kZXgsIHJvd1Bvc2l0aW9ucy51bnRyYW5zbGF0ZWRFbmRMaW5l
KCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBHcm93IHRoZSBn
cmlkIGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUgcm93IHNwYW4sIGdldHRpbmcgdGhlIGxhcmdl
c3Qgc3VjaCBzcGFuLgorICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNwYW5TaXplID0gR3JpZFBv
c2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKCpjaGlsZCwgRm9yUm93
cyk7CisgICAgICAgICAgICAgICAgbWF4aW11bVJvd0luZGV4ID0gc3RkOjptYXgobWF4aW11bVJv
d0luZGV4LCBzcGFuU2l6ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBH
cmlkU3BhbiBjb2x1bW5Qb3NpdGlvbnMgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVH
cmlkUG9zaXRpb25zRnJvbVN0eWxlKHN0eWxlKCksICpjaGlsZCwgRm9yQ29sdW1ucywgYXV0b1Jl
cGVhdENvbHVtbnMpOwotICAgICAgICBpZiAoIWNvbHVtblBvc2l0aW9ucy5pc0luZGVmaW5pdGUo
KSkgewotICAgICAgICAgICAgZXhwbGljaXRDb2x1bW5TdGFydCA9IHN0ZDo6bWF4PGludD4oZXhw
bGljaXRDb2x1bW5TdGFydCwgLWNvbHVtblBvc2l0aW9ucy51bnRyYW5zbGF0ZWRTdGFydExpbmUo
KSk7Ci0gICAgICAgICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heDxpbnQ+KG1heGlt
dW1Db2x1bW5JbmRleCwgY29sdW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZEVuZExpbmUoKSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBHcm93IHRoZSBncmlkIGZvciBpdGVtcyB3
aXRoIGEgZGVmaW5pdGUgY29sdW1uIHNwYW4sIGdldHRpbmcgdGhlIGxhcmdlc3Qgc3VjaCBzcGFu
LgotICAgICAgICAgICAgdW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6
OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oKmNoaWxkLCBGb3JDb2x1bW5zKTsKLSAgICAgICAg
ICAgIG1heGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Db2x1bW5JbmRleCwgc3Bh
blNpemUpOworICAgICAgICBHcmlkU3BhbiBjb2x1bW5Qb3NpdGlvbnMgPSBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKCpjaGlsZCwgRm9yQ29sdW1u
cyk7CisgICAgICAgIGlmICghaXNTdWJncmlkQ29sdW1ucygpKSB7CisgICAgICAgICAgICBpZiAo
IWNvbHVtblBvc2l0aW9ucy5pc0luZGVmaW5pdGUoKSkgeworICAgICAgICAgICAgICAgIGV4cGxp
Y2l0Q29sdW1uU3RhcnQgPSBzdGQ6Om1heDxpbnQ+KGV4cGxpY2l0Q29sdW1uU3RhcnQsIC1jb2x1
bW5Qb3NpdGlvbnMudW50cmFuc2xhdGVkU3RhcnRMaW5lKCkpOworICAgICAgICAgICAgICAgIG1h
eGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4PGludD4obWF4aW11bUNvbHVtbkluZGV4LCBjb2x1
bW5Qb3NpdGlvbnMudW50cmFuc2xhdGVkRW5kTGluZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgLy8gR3JvdyB0aGUgZ3JpZCBmb3IgaXRlbXMgd2l0aCBhIGRlZmlu
aXRlIGNvbHVtbiBzcGFuLCBnZXR0aW5nIHRoZSBsYXJnZXN0IHN1Y2ggc3Bhbi4KKyAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBzcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNp
emVGb3JBdXRvUGxhY2VkSXRlbSgqY2hpbGQsIEZvckNvbHVtbnMpOworICAgICAgICAgICAgICAg
IG1heGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Db2x1bW5JbmRleCwgc3BhblNp
emUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgZ3JpZC5zZXRHcmlkSXRl
bUFyZWEoKmNoaWxkLCB7IHJvd1Bvc2l0aW9ucywgY29sdW1uUG9zaXRpb25zIH0pOwpAQCAtNzc5
LDYgKzc3Niw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRl
ckl0ZXJhdG9yKEdyaWQmIGdyaWQpIGNvbnN0CiAKICAgICBncmlkLnNldEV4cGxpY2l0R3JpZFN0
YXJ0KGV4cGxpY2l0Um93U3RhcnQsIGV4cGxpY2l0Q29sdW1uU3RhcnQpOwogICAgIGdyaWQuZW5z
dXJlR3JpZFNpemUobWF4aW11bVJvd0luZGV4ICsgZXhwbGljaXRSb3dTdGFydCwgbWF4aW11bUNv
bHVtbkluZGV4ICsgZXhwbGljaXRDb2x1bW5TdGFydCk7CisgICAgZ3JpZC5zZXRDbGFtcGluZ0Zv
clN1YmdyaWQoaXNTdWJncmlkUm93cygpID8gbWF4aW11bVJvd0luZGV4IDogMCwgaXNTdWJncmlk
Q29sdW1ucygpID8gbWF4aW11bUNvbHVtbkluZGV4IDogMCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxHcmlkQXJlYT4gUmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9z
aXRpb25zT3V0c2lkZUdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSwg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHNwZWNpZmllZERpcmVjdGlvbiwgY29uc3QgR3JpZFNw
YW4mIHNwZWNpZmllZFBvc2l0aW9ucykgY29uc3QKQEAgLTgxMiw3ICs4MTAsNyBAQCB2b2lkIFJl
bmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3JpZCwg
Y29uc3QgVmVjdG9yPFJlbgogICAgICAgICBpZiAoIWVtcHR5R3JpZEFyZWEpCiAgICAgICAgICAg
ICBlbXB0eUdyaWRBcmVhID0gY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25z
T3V0c2lkZUdyaWQoZ3JpZCwgKmF1dG9HcmlkSXRlbSwgYXV0b1BsYWNlbWVudE1ham9yQXhpc0Rp
cmVjdGlvbigpLCBtYWpvckF4aXNQb3NpdGlvbnMpOwogCi0gICAgICAgIGdyaWQuaW5zZXJ0KCph
dXRvR3JpZEl0ZW0sICplbXB0eUdyaWRBcmVhKTsKKyAgICAgICAgKmVtcHR5R3JpZEFyZWEgPSBn
cmlkLmluc2VydCgqYXV0b0dyaWRJdGVtLCAqZW1wdHlHcmlkQXJlYSk7CiAKICAgICAgICAgaWYg
KCFpc0dyaWRBdXRvRmxvd0RlbnNlKQogICAgICAgICAgICAgbWlub3JBeGlzQ3Vyc29ycy5zZXQo
bWFqb3JBeGlzSW5pdGlhbFBvc2l0aW9uLCBpc0ZvckNvbHVtbnMgPyBlbXB0eUdyaWRBcmVhLT5y
b3dzLnN0YXJ0TGluZSgpIDogZW1wdHlHcmlkQXJlYS0+Y29sdW1ucy5zdGFydExpbmUoKSk7CkBA
IC0xNjEwLDExICsxNjA4LDI5IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6cmVzb2x2ZUF1dG9F
bmRHcmlkUG9zaXRpb24oR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjCiAgICAgcmV0dXJu
IGNsaWVudExvZ2ljYWxXaWR0aCgpOwogfQogCitib29sIFJlbmRlckdyaWQ6OmlzU3ViZ3JpZChH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAoreworICAgIGlmIChpc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBpc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyAh
c3R5bGUoKS5ncmlkU3ViZ3JpZENvbHVtbnMoKSA6ICFzdHlsZSgpLmdyaWRTdWJncmlkUm93cygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzPFJlbmRlckdyaWQ+KHBhcmVu
dCgpKTsKK30KKworYm9vbCBSZW5kZXJHcmlkOjppc1N1YmdyaWRSb3dzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaXNTdWJncmlkKEZvclJvd3MpOworfQorYm9vbCBSZW5kZXJHcmlkOjppc1N1Ymdy
aWRDb2x1bW5zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNTdWJncmlkKEZvckNvbHVtbnMpOwor
fQorCiBMYXlvdXRVbml0IFJlbmRlckdyaWQ6OmdyaWRBcmVhQnJlYWR0aEZvck91dE9mRmxvd0No
aWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKGNoaWxkLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKICAg
ICBib29sIGlzUm93QXhpcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwotICAgIEdyaWRTcGFu
IHNwYW4gPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0
eWxlKHN0eWxlKCksIGNoaWxkLCBkaXJlY3Rpb24sIGF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlv
bihkaXJlY3Rpb24pKTsKKyAgICBHcmlkU3BhbiBzcGFuID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjaGlsZCwgZGlyZWN0aW9uKTsKICAgICBp
ZiAoc3Bhbi5pc0luZGVmaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIGlzUm93QXhpcyA/IGNsaWVu
dExvZ2ljYWxXaWR0aCgpIDogY2xpZW50TG9naWNhbEhlaWdodCgpOwogCkBAIC0xOTIwLDcgKzE5
MzYsNyBAQCB1bnNpZ25lZCBSZW5kZXJHcmlkOjpudW1UcmFja3MoR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgR3JpZCYgZwogICAgICAgICByZXR1cm4gZ3JpZC5udW1U
cmFja3MoRm9yUm93cyk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBzdGlsbCByZXF1aXJlcyBrbm93
bGVkZ2UgYWJvdXQgbV9ncmlkIGludGVybmFscy4KLSAgICByZXR1cm4gZ3JpZC5udW1UcmFja3Mo
Rm9yUm93cykgPyBncmlkLm51bVRyYWNrcyhGb3JDb2x1bW5zKSA6IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoc3R5bGUoKSwgZ3JpZC5hdXRvUmVwZWF0VHJh
Y2tzKEZvckNvbHVtbnMpKTsKKyAgICByZXR1cm4gZ3JpZC5udW1UcmFja3MoRm9yUm93cykgPyBn
cmlkLm51bVRyYWNrcyhGb3JDb2x1bW5zKSA6IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGlj
aXRHcmlkQ29sdW1uQ291bnQoKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckdyaWQ6OnBhaW50Q2hp
bGRyZW4oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpCkBAIC0xOTc3LDQgKzE5
OTMsNjIgQEAgYm9vbCBSZW5kZXJHcmlkOjpoYXNBdXRvU2l6ZUluUm93QXhpcyhjb25zdCBSZW5k
ZXJCb3gmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ID8gY2hpbGQuc3R5bGUoKS53aWR0aCgpLmlzQXV0bygpIDogY2hpbGQuc3R5bGUoKS5oZWlnaHQo
KS5pc0F1dG8oKTsKIH0KIAorYm9vbCBSZW5kZXJHcmlkOjpjb21wdXRlR3JpZFNwYW5Gb3JPdXRP
ZkZsb3dDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCBpbnQmIHN0YXJ0TGluZSwgYm9vbCYgc3RhcnRJc0F1dG8sIGludCYgZW5k
TGluZSwgYm9vbCYgZW5kSXNBdXRvKSBjb25zdAoreworICAgIEFTU0VSVChjaGlsZC5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSk7CisgICAgaW50IGxhc3RMaW5lID0gbnVtVHJhY2tzKGRpcmVjdGlv
biwgbV9ncmlkKTsKKyAgICBHcmlkU3BhbiBzcGFuID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpy
ZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjaGlsZCwgZGlyZWN0aW9uKTsKKyAgICBpZiAo
c3Bhbi5pc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdW5zaWdu
ZWQgZXhwbGljaXRTdGFydCA9IG1fZ3JpZC5leHBsaWNpdEdyaWRTdGFydChkaXJlY3Rpb24pOwor
ICAgIHN0YXJ0TGluZSA9IHNwYW4udW50cmFuc2xhdGVkU3RhcnRMaW5lKCkgKyBleHBsaWNpdFN0
YXJ0OworICAgIGVuZExpbmUgPSBzcGFuLnVudHJhbnNsYXRlZEVuZExpbmUoKSArIGV4cGxpY2l0
U3RhcnQ7CisKKyAgICBHcmlkUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PSBG
b3JDb2x1bW5zID8gY2hpbGQuc3R5bGUoKS5ncmlkSXRlbUNvbHVtblN0YXJ0KCkgOiBjaGlsZC5z
dHlsZSgpLmdyaWRJdGVtUm93U3RhcnQoKTsKKyAgICBHcmlkUG9zaXRpb24gZW5kUG9zaXRpb24g
PSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Db2x1bW5F
bmQoKSA6IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Sb3dFbmQoKTsKKworICAgIHN0YXJ0SXNBdXRv
ID0gc3RhcnRQb3NpdGlvbi5pc0F1dG8oKSB8fCBzdGFydExpbmUgPCAwIHx8IHN0YXJ0TGluZSA+
IGxhc3RMaW5lOworICAgIGVuZElzQXV0byA9IGVuZFBvc2l0aW9uLmlzQXV0bygpIHx8IGVuZExp
bmUgPCAwIHx8IGVuZExpbmUgPiBsYXN0TGluZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworR3Jp
ZFNwYW4gUmVuZGVyR3JpZDo6Z3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjb25zdCBSZW5kZXJC
b3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorewor
ICAgIGludCBsYXN0TGluZSA9IG51bVRyYWNrcyhkaXJlY3Rpb24sIG1fZ3JpZCk7CisgICAgaW50
IHN0YXJ0TGluZSwgZW5kTGluZTsKKyAgICBib29sIHN0YXJ0SXNBdXRvLCBlbmRJc0F1dG87Cisg
ICAgaWYgKCFjb21wdXRlR3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjaGlsZCwgZGlyZWN0aW9u
LCBzdGFydExpbmUsIHN0YXJ0SXNBdXRvLCBlbmRMaW5lLCBlbmRJc0F1dG8pKQorICAgICAgICBy
ZXR1cm4gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKDAsIGxhc3RMaW5lKTsK
KyAgICByZXR1cm4gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKHN0YXJ0SXNB
dXRvID8gMCA6IHN0YXJ0TGluZSwgZW5kSXNBdXRvID8gbGFzdExpbmUgOiBlbmRMaW5lKTsKK30K
KworR3JpZFNwYW4gUmVuZGVyR3JpZDo6Z3JpZFNwYW5Gb3JDaGlsZChjb25zdCBSZW5kZXJCb3gm
IGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAoreworICAg
IEFTU0VSVChpczxSZW5kZXJHcmlkPihjaGlsZC5wYXJlbnQoKSkpOworCisgICAgUmVuZGVyR3Jp
ZCogcmVuZGVyR3JpZCA9IGRvd25jYXN0PFJlbmRlckdyaWQ+KGNoaWxkLnBhcmVudCgpKTsKKyAg
ICAvLyB8ZGlyZWN0aW9ufCBpcyBzcGVjaWZpZWQgcmVsYXRpdmUgdG8gdGhpcyBncmlkLCBzd2l0
Y2ggaXQgaWYgfGNoaWxkfCdzIGRpcmVjdCBwYXJlbnQgZ3JpZAorICAgIC8vIGlzIHVzaW5nIGEg
ZGlmZmVyZW50IHdyaXRpbmcgbW9kZS4KKyAgICBkaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rp
b25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZCgqdGhpcywgKnJlbmRlckdyaWQsIGRpcmVj
dGlvbik7CisgICAgR3JpZFNwYW4gc3BhbiA9IGNoaWxkLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
ID8gcmVuZGVyR3JpZC0+Z3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjaGlsZCwgZGlyZWN0aW9u
KSA6IHJlbmRlckdyaWQtPmN1cnJlbnRHcmlkKCkuZ3JpZEl0ZW1TcGFuKGNoaWxkLCBkaXJlY3Rp
b24pOworCisgICAgd2hpbGUgKHJlbmRlckdyaWQgIT0gdGhpcykgeworICAgICAgICBBU1NFUlQo
aXM8UmVuZGVyR3JpZD4ocmVuZGVyR3JpZC0+cGFyZW50KCkpKTsKKyAgICAgICAgUmVuZGVyR3Jp
ZCogcGFyZW50ID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4ocmVuZGVyR3JpZC0+cGFyZW50KCkpOwor
CisgICAgICAgIGJvb2wgaXNTdWJncmlkID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyByZW5k
ZXJHcmlkLT5pc1N1YmdyaWRDb2x1bW5zKCkgOiByZW5kZXJHcmlkLT5pc1N1YmdyaWRSb3dzKCk7
CisKKyAgICAgICAgZGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGly
ZWN0aW9uRm9yQ2hpbGQoKnBhcmVudCwgKnJlbmRlckdyaWQsIGRpcmVjdGlvbik7CisKKyAgICAg
ICAgR3JpZFNwYW4gcGFyZW50U3BhbiA9IHJlbmRlckdyaWQtPmlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpID8gcGFyZW50LT5ncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKCpyZW5kZXJHcmlkLCBkaXJl
Y3Rpb24pIDogIHBhcmVudC0+Y3VycmVudEdyaWQoKS5ncmlkSXRlbVNwYW4oKnJlbmRlckdyaWQs
IGRpcmVjdGlvbik7CisgICAgICAgIGlmIChpc1N1YmdyaWQpCisgICAgICAgICAgICBzcGFuLnRy
YW5zbGF0ZVRvKHBhcmVudFNwYW4sIEdyaWRMYXlvdXRGdW5jdGlvbnM6OmlzU3ViZ3JpZFJldmVy
c2VkRGlyZWN0aW9uKCpwYXJlbnQsIGRpcmVjdGlvbiwgKnJlbmRlckdyaWQpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgc3BhbiA9IHBhcmVudFNwYW47CisgICAgICAgIHJlbmRlckdyaWQg
PSBwYXJlbnQ7CisgICAgfQorICAgIHJldHVybiBzcGFuOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCBlMjMwYjEzZGE4
YTJkY2VlOTRhOTcxNmQ0MTBkODYxNDlhZWQ5YWI0Li44NmFjODcyMDk1MjQ4MjcxOTJmMjdmMTJm
MDNlMTEyNjdjOGJkZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAg
LTgyLDYgKzgyLDE5IEBAIHB1YmxpYzoKIAogICAgIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEg
Y29udGVudEFsaWdubWVudChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCisgICAg
Ly8gQ29tcHV0ZXMgdGhlIHNwYW4gcmVsYXRpdmUgdG8gdGhpcyBSZW5kZXJHcmlkLCBldmVuIGlm
IHRoZSBSZW5kZXJCb3ggaXMgYSBjaGlsZAorICAgIC8vIG9mIGEgZGVzY2VuZGFudCBzdWJncmlk
LgorICAgIEdyaWRTcGFuIGdyaWRTcGFuRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKworICAgIGJvb2wgaXNTdWJncmlkUm93cygpIGNv
bnN0OworICAgIGJvb2wgaXNTdWJncmlkQ29sdW1ucygpIGNvbnN0OworICAgIGJvb2wgaXNTdWJn
cmlkKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CisKKyAgICBjb25zdCBHcmlkJiBj
dXJyZW50R3JpZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ncmlkOworICAgIH0K
KwogcHJpdmF0ZToKICAgICBJdGVtUG9zaXRpb24gc2VsZkFsaWdubWVudE5vcm1hbEJlaGF2aW9y
KGNvbnN0IFJlbmRlckJveCogY2hpbGQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZQogICAgIHsK
QEAgLTE1MCw4ICsxNjMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TG9naWNhbFBvc2l0aW9u
Rm9yQ2hpbGQoUmVuZGVyQm94JikgY29uc3Q7CiAgICAgdm9pZCBzZXRMb2dpY2FsT2Zmc2V0Rm9y
Q2hpbGQoUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxPZmZzZXRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwotICAgIEdyaWRBcmVhIGNhY2hlZEdyaWRBcmVhKGNv
bnN0IFJlbmRlckJveCYpIGNvbnN0OwotICAgIEdyaWRTcGFuIGNhY2hlZEdyaWRTcGFuKGNvbnN0
IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAKICAgICBMYXlv
dXRVbml0IGdyaWRBcmVhQnJlYWR0aEZvckNoaWxkSW5jbHVkaW5nQWxpZ25tZW50T2Zmc2V0cyhj
b25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCkBAIC0x
OTEsOCArMjAyLDEyIEBAIHByaXZhdGU6CiAKICAgICBib29sIGFzcGVjdFJhdGlvUHJlZmVyc0lu
bGluZShjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBib29sIGJsb2NrRmxvd0lzQ29sdW1uQXhpcyk7
CiAKKwogICAgIFZlY3RvcjxSZW5kZXJCb3gqPiBjb21wdXRlQXNwZWN0UmF0aW9EZXBlbmRlbnRB
bmRCYXNlbGluZUl0ZW1zKCk7CiAKKyAgICBHcmlkU3BhbiBncmlkU3BhbkZvck91dE9mRmxvd0No
aWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7Cisg
ICAgYm9vbCBjb21wdXRlR3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjb25zdCBSZW5kZXJCb3gm
LCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGludCYsIGJvb2wmLCBpbnQmLCBib29sJikgY29u
c3Q7ZmdnaXQgCisKICAgICBHcmlkIG1fZ3JpZDsKIAogICAgIEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobSBtX3RyYWNrU2l6aW5nQWxnb3JpdGhtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvR3JpZEFyZWEuaAppbmRleCBiN2ViZDFkOTYxZGU4ODI2ZmI4MzAzMzA5YjhlNjM1MmYyMGY5
ZWFiLi5lZTNiOTJmYzBmZjNiOTAwZGI5OWM5MjUyNzEwZWY3ZmUyMWI5ZGY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJs
aWM6CiAKICAgICB1bnNpZ25lZCBpbnRlZ2VyU3BhbigpIGNvbnN0CiAgICAgewotICAgICAgICBB
U1NFUlQoaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSk7CisgICAgICAgIEFTU0VSVChpc1RyYW5zbGF0
ZWREZWZpbml0ZSgpIHx8IG1fdHlwZSA9PSBVbnRyYW5zbGF0ZWREZWZpbml0ZSk7CiAgICAgICAg
IHJldHVybiBtX2VuZExpbmUgLSBtX3N0YXJ0TGluZTsKICAgICB9CiAKQEAgLTE0MSw2ICsxNDEs
MzEgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9lbmRMaW5lID4gMCk7CiAgICAgfQogCisg
ICAgLy8gTW92ZXMgdGhpcyBzcGFuIHRvIGJlIGluIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3BhY2Ug
YXMgfHBhcmVudHwuCisgICAgLy8gSWYgcmV2ZXJzZSBpcyBzcGVjaWZpZWQsIHRoZW4gc3dhcHMg
dGhlIGRpcmVjdGlvbiB0byBoYW5kbGUgUlRML0xUUiBjaGFuZ2VzLgorICAgIHZvaWQgdHJhbnNs
YXRlVG8oY29uc3QgR3JpZFNwYW4mIHBhcmVudCwgYm9vbCByZXZlcnNlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGUpOworICAgICAgICBBU1NFUlQo
cGFyZW50Lm1fdHlwZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGUpOworICAgICAgICBpZiAocmV2ZXJz
ZSkgeworICAgICAgICAgICAgaW50IHN0YXJ0ID0gbV9zdGFydExpbmU7CisgICAgICAgICAgICBt
X3N0YXJ0TGluZSA9IHBhcmVudC5pbnRlZ2VyU3BhbigpIC0gbV9lbmRMaW5lICsgcGFyZW50LnN0
YXJ0TGluZSgpOworICAgICAgICAgICAgbV9lbmRMaW5lID0gcGFyZW50LmludGVnZXJTcGFuKCkg
LSBzdGFydCArIHBhcmVudC5zdGFydExpbmUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fc3RhcnRMaW5lICs9IHBhcmVudC5tX3N0YXJ0TGluZTsKKyAgICAgICAgICAgIG1fZW5k
TGluZSArPSBwYXJlbnQubV9zdGFydExpbmU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lk
IGNsYW1wKGludCBtYXgpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlICE9IEluZGVmaW5p
dGUpOworICAgICAgICBtX3N0YXJ0TGluZSA9IHN0ZDo6bWF4KG1fc3RhcnRMaW5lLCAwKTsKKyAg
ICAgICAgbV9lbmRMaW5lID0gc3RkOjptYXgoc3RkOjptaW4obV9lbmRMaW5lLCBtYXgpLCAxKTsK
KyAgICAgICAgaWYgKG1fc3RhcnRMaW5lID49IG1fZW5kTGluZSkKKyAgICAgICAgICAgIG1fc3Rh
cnRMaW5lID0gbV9lbmRMaW5lIC0gMTsKKyAgICB9CisKIHByaXZhdGU6CiAKICAgICBlbnVtIEdy
aWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwgSW5k
ZWZpbml0ZX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3Jp
ZFBvc2l0aW9uc1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9H
cmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCmluZGV4IDMzYzcwM2M1ZjA2ZmE2NWEzZjZmYmRhMmRl
NzZkZWEzZmI2MWI4ZGUuLjY3YmIzNmVhYzQ2MDExOGJhNTQwZGQ1YTljODhiOWU2OWU4NWZhNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25z
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9z
aXRpb25zUmVzb2x2ZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJHcmlkQXJl
YS5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2luY2x1ZGUgIlJlbmRlckdyaWQuaCIKICNp
bmNsdWRlIDxjc3RkbGliPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTIsNiArMTUzLDE4
IEBAIHVuc2lnbmVkIE5hbWVkTGluZUNvbGxlY3Rpb246OmZpcnN0UG9zaXRpb24oKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6Om1pbihmaXJzdEV4cGxpY2l0UG9zaXRpb24oKSwgbV9pbXBsaWNpdE5h
bWVkTGluZXNJbmRleGVzLT5hdChmaXJzdExpbmUpKTsKIH0KIAorLy8gaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzcy1ncmlkLTIvI2luZGVmaW5pdGUtZ3JpZC1zcGFuCitzdGF0aWMgYm9vbCBp
c0luZGVmaW5pdGVTcGFuKEdyaWRQb3NpdGlvbiYgaW5pdGlhbFBvc2l0aW9uLCBHcmlkUG9zaXRp
b24mIGZpbmFsUG9zaXRpb24pCit7CisgICAgaWYgKCFpbml0aWFsUG9zaXRpb24uaXNBdXRvKCkg
JiYgIWZpbmFsUG9zaXRpb24uaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChpbml0aWFsUG9zaXRpb24uaXNTcGFuKCkgfHwgZmluYWxQb3NpdGlvbi5pc1NwYW4oKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyB2
b2lkIGFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyQm94JiBncmlkSXRl
bSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3JpZFBvc2l0aW9uJiBpbml0
aWFsUG9zaXRpb24sIEdyaWRQb3NpdGlvbiYgZmluYWxQb3NpdGlvbikKIHsKICAgICBib29sIGlz
Rm9yQ29sdW1ucyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwpAQCAtMTY4LDIxICsxODEsNTIg
QEAgc3RhdGljIHZvaWQgYWRqdXN0R3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJC
b3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXoKICAgICAgICAgZmluYWxQb3NpdGlvbi5zZXRTcGFu
UG9zaXRpb24oMSwgU3RyaW5nKCkpOwogICAgIGlmIChmaW5hbFBvc2l0aW9uLmlzQXV0bygpICYm
IGluaXRpYWxQb3NpdGlvbi5pc1NwYW4oKSAmJiAhaW5pdGlhbFBvc2l0aW9uLm5hbWVkR3JpZExp
bmUoKS5pc051bGwoKSkKICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbigx
LCBTdHJpbmcoKSk7CisKKyAgICBpZiAoaXNJbmRlZmluaXRlU3Bhbihpbml0aWFsUG9zaXRpb24s
IGZpbmFsUG9zaXRpb24pICYmIGlzPFJlbmRlckdyaWQ+KGdyaWRJdGVtKSAmJiBkb3duY2FzdDxS
ZW5kZXJHcmlkPihncmlkSXRlbSkuaXNTdWJncmlkKGRpcmVjdGlvbikpIHsKKyAgICAgICAgLy8g
SW5kZWZpbml0ZSBzcGFuIGZvciBhbiBpdGVtIHRoYXQgaXMgc3ViZ3JpZGRlZCBpbiB0aGlzIGF4
aXMuCisgICAgICAgIGludCBsaW5lQ291bnQgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGdy
aWRJdGVtLnN0eWxlKCkuZ3JpZENvbHVtbnMoKS5zaXplKCkgOiBncmlkSXRlbS5zdHlsZSgpLmdy
aWRSb3dzKCkuc2l6ZSgpOworCisgICAgICAgIGlmIChpbml0aWFsUG9zaXRpb24uaXNBdXRvKCkp
IHsKKyAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIHBvc2l0aW9uIHRvIHNwYW4gPGxpbmUgbmFt
ZXMgLSAxPgorICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbihzdGQ6
Om1heCgxLCBsaW5lQ291bnQgLSAxKSwgIiIpOworICAgICAgICAgICAgaWYgKGZpbmFsUG9zaXRp
b24uaXNTcGFuKCkpCisgICAgICAgICAgICAgICAgZmluYWxQb3NpdGlvbi5zZXRBdXRvUG9zaXRp
b24oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNldCBmaW5hbCBwb3NpdGlv
biB0byBzcGFuIDxsaW5lIG5hbWVzIC0gMT4KKyAgICAgICAgICAgIGZpbmFsUG9zaXRpb24uc2V0
U3BhblBvc2l0aW9uKHN0ZDo6bWF4KDEsIGxpbmVDb3VudCAtIDEpLCAiIik7CisgICAgICAgICAg
ICBpZiAoaW5pdGlhbFBvc2l0aW9uLmlzU3BhbigpKQorICAgICAgICAgICAgICAgIGluaXRpYWxQ
b3NpdGlvbi5zZXRBdXRvUG9zaXRpb24oKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAotdW5zaWdu
ZWQgR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBS
ZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tz
Q291bnQpCit1bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVt
bkNvdW50KGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIpCiB7Ci0gICAgcmV0dXJuIHN0
ZDo6bWluPHVuc2lnbmVkPihzdGQ6Om1heChncmlkQ29udGFpbmVyU3R5bGUuZ3JpZENvbHVtbnMo
KS5zaXplKCkgKyBhdXRvUmVwZWF0VHJhY2tzQ291bnQsIGdyaWRDb250YWluZXJTdHlsZS5uYW1l
ZEdyaWRBcmVhQ29sdW1uQ291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4KCkpOworICAgIGJvb2wg
c3BlY2lmaWVkU3ViZ3JpZCA9IGdyaWRDb250YWluZXIuc3R5bGUoKS5ncmlkU3ViZ3JpZENvbHVt
bnMoKTsKKyAgICBpZiAoc3BlY2lmaWVkU3ViZ3JpZCAmJiBncmlkQ29udGFpbmVyLmlzU3ViZ3Jp
ZENvbHVtbnMoKSkgeworICAgICAgICBjb25zdCBSZW5kZXJHcmlkJiBwYXJlbnQgPSAqZG93bmNh
c3Q8UmVuZGVyR3JpZD4oZ3JpZENvbnRhaW5lci5wYXJlbnQoKSk7CisgICAgICAgIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdh
cmVEaXJlY3Rpb25Gb3JDaGlsZChwYXJlbnQsIGdyaWRDb250YWluZXIsIEZvckNvbHVtbnMpOwor
ICAgICAgICByZXR1cm4gcGFyZW50LmdyaWRTcGFuRm9yQ2hpbGQoZ3JpZENvbnRhaW5lciwgZGly
ZWN0aW9uKS5pbnRlZ2VyU3BhbigpOworICAgIH0KKyAgICBhdXRvIHNwZWNpZmllZENvbHVtbnMg
PSBzcGVjaWZpZWRTdWJncmlkID8gMCA6IGdyaWRDb250YWluZXIuc3R5bGUoKS5ncmlkQ29sdW1u
cygpLnNpemUoKTsKKyAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KHN0ZDo6bWF4KHNwZWNp
ZmllZENvbHVtbnMgKyBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlvbihG
b3JDb2x1bW5zKSwgZ3JpZENvbnRhaW5lci5zdHlsZSgpLm5hbWVkR3JpZEFyZWFDb2x1bW5Db3Vu
dCgpKSwgR3JpZFBvc2l0aW9uOjptYXgoKSk7CiB9CiAKLXVuc2lnbmVkIEdyaWRQb3NpdGlvbnNS
ZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250
YWluZXJTdHlsZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQordW5zaWduZWQgR3Jp
ZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChjb25zdCBSZW5kZXJHcmlk
JiBncmlkQ29udGFpbmVyKQogewotICAgIHJldHVybiBzdGQ6Om1pbjx1bnNpZ25lZD4oc3RkOjpt
YXgoZ3JpZENvbnRhaW5lclN0eWxlLmdyaWRSb3dzKCkuc2l6ZSgpICsgYXV0b1JlcGVhdFRyYWNr
c0NvdW50LCBncmlkQ29udGFpbmVyU3R5bGUubmFtZWRHcmlkQXJlYVJvd0NvdW50KCkpLCBHcmlk
UG9zaXRpb246Om1heCgpKTsKKyAgICBib29sIHNwZWNpZmllZFN1YmdyaWQgPSBncmlkQ29udGFp
bmVyLnN0eWxlKCkuZ3JpZFN1YmdyaWRSb3dzKCk7CisgICAgaWYgKHNwZWNpZmllZFN1YmdyaWQg
JiYgZ3JpZENvbnRhaW5lci5pc1N1YmdyaWRSb3dzKCkpIHsKKyAgICAgICAgY29uc3QgUmVuZGVy
R3JpZCYgcGFyZW50ID0gKmRvd25jYXN0PFJlbmRlckdyaWQ+KGdyaWRDb250YWluZXIucGFyZW50
KCkpOworICAgICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uID0gR3JpZExh
eW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQocGFyZW50LCBncmlkQ29u
dGFpbmVyLCBGb3JSb3dzKTsKKyAgICAgICAgcmV0dXJuIHBhcmVudC5ncmlkU3BhbkZvckNoaWxk
KGdyaWRDb250YWluZXIsIGRpcmVjdGlvbikuaW50ZWdlclNwYW4oKTsKKyAgICB9CisgICAgYXV0
byBzcGVjaWZpZWRSb3dzID0gc3BlY2lmaWVkU3ViZ3JpZCA/IDAgOiBncmlkQ29udGFpbmVyLnN0
eWxlKCkuZ3JpZFJvd3MoKS5zaXplKCk7CisgICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihz
dGQ6Om1heChzcGVjaWZpZWRSb3dzICsgZ3JpZENvbnRhaW5lci5hdXRvUmVwZWF0Q291bnRGb3JE
aXJlY3Rpb24oRm9yUm93cyksIGdyaWRDb250YWluZXIuc3R5bGUoKS5uYW1lZEdyaWRBcmVhUm93
Q291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4KCkpOwogfQogCi1zdGF0aWMgdW5zaWduZWQgZXhw
bGljaXRHcmlkU2l6ZUZvclNpZGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHls
ZSwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQp
CitzdGF0aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoY29uc3QgUmVuZGVyR3Jp
ZCYgZ3JpZENvbnRhaW5lciwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogewotICAgIHJldHVybiBp
c0NvbHVtblNpZGUoc2lkZSkgPyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENv
bHVtbkNvdW50KGdyaWRDb250YWluZXJTdHlsZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KSA6IEdy
aWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQoZ3JpZENvbnRhaW5lclN0
eWxlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgIHJldHVybiBpc0NvbHVtblNpZGUoc2lk
ZSkgPyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGdyaWRD
b250YWluZXIpIDogR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChn
cmlkQ29udGFpbmVyKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGxvb2tBaGVhZEZvck5hbWVkR3Jp
ZExpbmUoaW50IHN0YXJ0LCB1bnNpZ25lZCBudW1iZXJPZkxpbmVzLCB1bnNpZ25lZCBncmlkTGFz
dExpbmUsIE5hbWVkTGluZUNvbGxlY3Rpb24mIGxpbmVzQ29sbGVjdGlvbikKQEAgLTIyNCwxMiAr
MjY4LDEyIEBAIHN0YXRpYyBpbnQgbG9va0JhY2tGb3JOYW1lZEdyaWRMaW5lKGludCBlbmQsIHVu
c2lnbmVkIG51bWJlck9mTGluZXMsIGludCBncmlkTGFzCiAgICAgcmV0dXJuIHN0YXJ0ICsgMTsK
IH0KIAotc3RhdGljIGludCByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGNvbnN0IEdyaWRQb3NpdGlvbiYg
cG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNr
c0NvdW50KQorc3RhdGljIGludCByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0eWxl
KGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9z
aXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkKIHsKICAgICBBU1NFUlQoIXBvc2l0aW9uLm5h
bWVkR3JpZExpbmUoKS5pc051bGwoKSk7CiAKLSAgICB1bnNpZ25lZCBsYXN0TGluZSA9IGV4cGxp
Y2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHlsZSwgc2lkZSwgYXV0b1JlcGVhdFRy
YWNrc0NvdW50KTsKLSAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGxpbmVzQ29sbGVjdGlvbihncmlk
Q29udGFpbmVyU3R5bGUsIHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgZGlyZWN0aW9uRnJvbVNp
ZGUoc2lkZSksIGxhc3RMaW5lLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgIHVuc2lnbmVk
IGxhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lciwgc2lkZSk7
CisgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBsaW5lc0NvbGxlY3Rpb24oZ3JpZENvbnRhaW5lci5z
dHlsZSgpLCBwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCksIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUp
LCBsYXN0TGluZSwgZ3JpZENvbnRhaW5lci5hdXRvUmVwZWF0Q291bnRGb3JEaXJlY3Rpb24oZGly
ZWN0aW9uRnJvbVNpZGUoc2lkZSkpKTsKIAogICAgIGlmIChwb3NpdGlvbi5pc1Bvc2l0aXZlKCkp
CiAgICAgICAgIHJldHVybiBsb29rQWhlYWRGb3JOYW1lZEdyaWRMaW5lKDAsIHN0ZDo6YWJzKHBv
c2l0aW9uLmludGVnZXJQb3NpdGlvbigpKSwgbGFzdExpbmUsIGxpbmVzQ29sbGVjdGlvbik7CkBA
IC0yNTAsMTkgKzI5NCwxOSBAQCBzdGF0aWMgR3JpZFNwYW4gZGVmaW5pdGVHcmlkU3BhbldpdGhO
YW1lZExpbmVTcGFuQWdhaW5zdE9wcG9zaXRlKGludCBvcHBvc2l0ZUxpbgogICAgIHJldHVybiBH
cmlkU3Bhbjo6dW50cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihzdGFydCwgZW5kKTsKIH0KIAot
c3RhdGljIEdyaWRTcGFuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3Np
dGVQb3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBpbnQgb3Bw
b3NpdGVMaW5lLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRl
IHNpZGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3N0YXRpYyBHcmlkU3BhbiBy
ZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3Qg
UmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwgaW50IG9wcG9zaXRlTGluZSwgY29uc3QgR3JpZFBv
c2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogewogICAgIEFTU0VSVChw
b3NpdGlvbi5pc1NwYW4oKSk7CiAgICAgQVNTRVJUKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCku
aXNOdWxsKCkpOwogICAgIC8vIE5lZ2F0aXZlIHBvc2l0aW9ucyBhcmUgbm90IGFsbG93ZWQgcGVy
IHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBzaG91bGQgaGF2ZSBiZWVuIGhhbmRsZWQgZHVyaW5nIHBh
cnNpbmcuCiAgICAgQVNTRVJUKHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpID4gMCk7CiAKLSAgICB1
bnNpZ25lZCBsYXN0TGluZSA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJT
dHlsZSwgc2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICBOYW1lZExpbmVDb2xsZWN0
aW9uIGxpbmVzQ29sbGVjdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIHBvc2l0aW9uLm5hbWVkR3Jp
ZExpbmUoKSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5lLCBhdXRvUmVwZWF0VHJh
Y2tzQ291bnQpOworICAgIHVuc2lnbmVkIGxhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNp
ZGUoZ3JpZENvbnRhaW5lciwgc2lkZSk7CisgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBsaW5lc0Nv
bGxlY3Rpb24oZ3JpZENvbnRhaW5lci5zdHlsZSgpLCBwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCks
IGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgZ3JpZENvbnRhaW5lci5hdXRvUmVw
ZWF0Q291bnRGb3JEaXJlY3Rpb24oZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSkpKTsKICAgICByZXR1
cm4gZGVmaW5pdGVHcmlkU3BhbldpdGhOYW1lZExpbmVTcGFuQWdhaW5zdE9wcG9zaXRlKG9wcG9z
aXRlTGluZSwgcG9zaXRpb24sIHNpZGUsIGxhc3RMaW5lLCBsaW5lc0NvbGxlY3Rpb24pOwogfQog
Ci1zdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0
aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGludCBvcHBvc2l0ZUxp
bmUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwg
dW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorc3RhdGljIEdyaWRTcGFuIHJlc29sdmVH
cmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJHcmlkJiBncmlk
Q29udGFpbmVyLCBpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9u
LCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7CiAgICAgaWYgKHBvc2l0aW9uLmlzQXV0bygpKSB7
CiAgICAgICAgIGlmIChpc1N0YXJ0U2lkZShzaWRlKSkKQEAgLTI3NSw3ICszMTksNyBAQCBzdGF0
aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNv
bnN0IFJlbmRlclN0eWxlJiBncgogCiAgICAgaWYgKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCku
aXNOdWxsKCkpIHsKICAgICAgICAgLy8gc3BhbiAyICdjJyAtPiB3ZSBuZWVkIHRvIGZpbmQgdGhl
IGFwcHJvcHJpYXRlIGdyaWQgbGluZSBiZWZvcmUgLyBhZnRlciBvdXIgb3Bwb3NpdGUgcG9zaXRp
b24uCi0gICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9w
cG9zaXRlUG9zaXRpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBvcHBvc2l0ZUxpbmUsIHBvc2l0aW9u
LCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgICAgICByZXR1cm4gcmVzb2x2ZU5h
bWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGdyaWRDb250YWluZXIs
IG9wcG9zaXRlTGluZSwgcG9zaXRpb24sIHNpZGUpOwogICAgIH0KIAogICAgIC8vICdzcGFuIDEn
IGlzIGNvbnRhaW5lZCBpbnNpZGUgYSBzaW5nbGUgZ3JpZCB0cmFjayByZWdhcmRsZXNzIG9mIHRo
ZSBkaXJlY3Rpb24uCkBAIC0zMTUsMjEgKzM1OSwyMSBAQCB1bnNpZ25lZCBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oY29uc3QgUmVuZGVyQm94JiBncmlk
SQogICAgIHJldHVybiBwb3NpdGlvbi5zcGFuUG9zaXRpb24oKTsKIH0KIAotc3RhdGljIGludCBy
ZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFp
bmVyU3R5bGUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUg
c2lkZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorc3RhdGljIGludCByZXNvbHZl
R3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIsIGNv
bnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkKIHsKICAg
ICBzd2l0Y2ggKHBvc2l0aW9uLnR5cGUoKSkgewogICAgIGNhc2UgRXhwbGljaXRQb3NpdGlvbjog
ewogICAgICAgICBBU1NFUlQocG9zaXRpb24uaW50ZWdlclBvc2l0aW9uKCkpOwogCiAgICAgICAg
IGlmICghcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0
dXJuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUoZ3JpZENvbnRhaW5lclN0
eWxlLCBwb3NpdGlvbiwgc2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAgICAg
IHJldHVybiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWlu
ZXIsIHBvc2l0aW9uLCBzaWRlKTsKIAogICAgICAgICAvLyBIYW5kbGUgPGludGVnZXI+IGV4cGxp
Y2l0IHBvc2l0aW9uLgogICAgICAgICBpZiAocG9zaXRpb24uaXNQb3NpdGl2ZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpIC0gMTsKIAogICAgICAgICB1
bnNpZ25lZCByZXNvbHZlZFBvc2l0aW9uID0gc3RkOjphYnMocG9zaXRpb24uaW50ZWdlclBvc2l0
aW9uKCkpIC0gMTsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZUcmFjayA9IGV4cGxpY2l0
R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHlsZSwgc2lkZSwgYXV0b1JlcGVhdFRyYWNr
c0NvdW50KTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZUcmFjayA9IGV4cGxpY2l0R3Jp
ZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXIsIHNpZGUpOwogCiAgICAgICAgIHJldHVybiBlbmRP
ZlRyYWNrIC0gcmVzb2x2ZWRQb3NpdGlvbjsKICAgICB9CkBAIC0zNDEsMTQgKzM4NSwxNCBAQCBz
dGF0aWMgaW50IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
IGdyaWRDb250YWluZXJTdHlsZSwgYwogICAgICAgICBTdHJpbmcgbmFtZWRHcmlkTGluZSA9IHBv
c2l0aW9uLm5hbWVkR3JpZExpbmUoKTsKICAgICAgICAgQVNTRVJUKCFwb3NpdGlvbi5uYW1lZEdy
aWRMaW5lKCkuaXNOdWxsKCkpOwogCi0gICAgICAgIHVuc2lnbmVkIGxhc3RMaW5lID0gZXhwbGlj
aXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0eWxlLCBzaWRlLCBhdXRvUmVwZWF0VHJh
Y2tzQ291bnQpOwotICAgICAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGltcGxpY2l0TGluZXMoZ3Jp
ZENvbnRhaW5lclN0eWxlLCBpbXBsaWNpdE5hbWVkR3JpZExpbmVGb3JTaWRlKG5hbWVkR3JpZExp
bmUsIHNpZGUpLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGF1dG9SZXBlYXRU
cmFja3NDb3VudCk7CisgICAgICAgIHVuc2lnbmVkIGxhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6
ZUZvclNpZGUoZ3JpZENvbnRhaW5lciwgc2lkZSk7CisgICAgICAgIE5hbWVkTGluZUNvbGxlY3Rp
b24gaW1wbGljaXRMaW5lcyhncmlkQ29udGFpbmVyLnN0eWxlKCksIGltcGxpY2l0TmFtZWRHcmlk
TGluZUZvclNpZGUobmFtZWRHcmlkTGluZSwgc2lkZSksIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUp
LCBsYXN0TGluZSwgZ3JpZENvbnRhaW5lci5hdXRvUmVwZWF0Q291bnRGb3JEaXJlY3Rpb24oZGly
ZWN0aW9uRnJvbVNpZGUoc2lkZSkpKTsKICAgICAgICAgaWYgKGltcGxpY2l0TGluZXMuaGFzTmFt
ZWRMaW5lcygpKQogICAgICAgICAgICAgcmV0dXJuIGltcGxpY2l0TGluZXMuZmlyc3RQb3NpdGlv
bigpOwogCiAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlcmUgaXMgYSBuYW1lZCBsaW5lIHdp
dGggdGhlIHNwZWNpZmllZCBuYW1lLCBjb250cmlidXRlcyB0aGUgZmlyc3Qgc3VjaCBsaW5lIHRv
IHRoZSBncmlkCiAgICAgICAgIC8vIGl0ZW0ncyBwbGFjZW1lbnQuCi0gICAgICAgIE5hbWVkTGlu
ZUNvbGxlY3Rpb24gZXhwbGljaXRMaW5lcyhncmlkQ29udGFpbmVyU3R5bGUsIG5hbWVkR3JpZExp
bmUsIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgYXV0b1JlcGVhdFRyYWNrc0Nv
dW50KTsKKyAgICAgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBleHBsaWNpdExpbmVzKGdyaWRDb250
YWluZXIuc3R5bGUoKSwgbmFtZWRHcmlkTGluZSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxh
c3RMaW5lLCBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlvbihkaXJlY3Rp
b25Gcm9tU2lkZShzaWRlKSkpOwogICAgICAgICBpZiAoZXhwbGljaXRMaW5lcy5oYXNOYW1lZExp
bmVzKCkpCiAgICAgICAgICAgICByZXR1cm4gZXhwbGljaXRMaW5lcy5maXJzdFBvc2l0aW9uKCk7
CiAKQEAgLTM2NSw4ICs0MDksMTEgQEAgc3RhdGljIGludCByZXNvbHZlR3JpZFBvc2l0aW9uRnJv
bVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGMKICAgICByZXR1
cm4gMDsKIH0KIAotR3JpZFNwYW4gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBv
c2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBj
b25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0
aW9uLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCitHcmlkU3BhbiBHcmlkUG9zaXRp
b25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlckJv
eCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CisgICAg
YXV0byogZ3JpZENvbnRhaW5lciA9IGRvd25jYXN0PFJlbmRlckdyaWQ+KGdyaWRJdGVtLmNvbnRh
aW5pbmdCbG9jaygpKTsKKyAgICBBU1NFUlQoZ3JpZENvbnRhaW5lcik7CisKICAgICBHcmlkUG9z
aXRpb24gaW5pdGlhbFBvc2l0aW9uLCBmaW5hbFBvc2l0aW9uOwogICAgIGFkanVzdEdyaWRQb3Np
dGlvbnNGcm9tU3R5bGUoZ3JpZEl0ZW0sIGRpcmVjdGlvbiwgaW5pdGlhbFBvc2l0aW9uLCBmaW5h
bFBvc2l0aW9uKTsKIApAQCAtMzc5LDE4ICs0MjYsMTggQEAgR3JpZFNwYW4gR3JpZFBvc2l0aW9u
c1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSYKIAogICAgIGlmIChpbml0aWFsUG9zaXRpb24uc2hvdWxkQmVSZXNvbHZlZEFnYWluc3RPcHBv
c2l0ZVBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gSW5mZXIgdGhlIHBvc2l0aW9uIGZyb20gdGhl
IGZpbmFsIHBvc2l0aW9uICgnYXV0byAvIDEnIG9yICdzcGFuIDIgLyAzJyBjYXNlKS4KLSAgICAg
ICAgYXV0byBlbmRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShncmlkQ29udGFp
bmVyU3R5bGUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50
KTsKLSAgICAgICAgcmV0dXJuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3Np
dGlvbihncmlkQ29udGFpbmVyU3R5bGUsIGVuZExpbmUsIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlh
bFNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIGF1dG8gZW5kTGluZSA9IHJl
c29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoKmdyaWRDb250YWluZXIsIGZpbmFsUG9zaXRpb24s
IGZpbmFsU2lkZSk7CisgICAgICAgIHJldHVybiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9w
cG9zaXRlUG9zaXRpb24oKmdyaWRDb250YWluZXIsIGVuZExpbmUsIGluaXRpYWxQb3NpdGlvbiwg
aW5pdGlhbFNpZGUpOwogICAgIH0KIAogICAgIGlmIChmaW5hbFBvc2l0aW9uLnNob3VsZEJlUmVz
b2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEluZmVyIG91ciBw
b3NpdGlvbiBmcm9tIHRoZSBpbml0aWFsIHBvc2l0aW9uICgnMSAvIGF1dG8nIG9yICczIC8gc3Bh
biAyJyBjYXNlKS4KLSAgICAgICAgYXV0byBzdGFydExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9u
RnJvbVN0eWxlKGdyaWRDb250YWluZXJTdHlsZSwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lk
ZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICAgICAgcmV0dXJuIHJlc29sdmVHcmlkUG9z
aXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIHN0YXJ0TGlu
ZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAg
ICAgICBhdXRvIHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoKmdyaWRD
b250YWluZXIsIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUpOworICAgICAgICByZXR1cm4g
cmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKCpncmlkQ29udGFpbmVy
LCBzdGFydExpbmUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSk7CiAgICAgfQogCi0gICAgaW50
IHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoZ3JpZENvbnRhaW5lclN0
eWxlLCBpbml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQp
OwotICAgIGludCBlbmRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShncmlkQ29u
dGFpbmVyU3R5bGUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSwgYXV0b1JlcGVhdFRyYWNrc0Nv
dW50KTsKKyAgICBpbnQgc3RhcnRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZSgq
Z3JpZENvbnRhaW5lciwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lkZSk7CisgICAgaW50IGVu
ZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKCpncmlkQ29udGFpbmVyLCBmaW5h
bFBvc2l0aW9uLCBmaW5hbFNpZGUpOwogCiAgICAgaWYgKHN0YXJ0TGluZSA+IGVuZExpbmUpCiAg
ICAgICAgIHN0ZDo6c3dhcChzdGFydExpbmUsIGVuZExpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5oCmluZGV4IDYy
M2I2MmM2YzI0MWRjMTMwMjUwNzhkMTUxZjZhOTkwZDVkYzEwNmUuLjcyNDE5NTc3MzU0MTNkZDEx
YTFiZDQwMmFiMjJiMGRlNTYzNzJhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmgKQEAgLTM2LDYgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmlkU3BhbjsKIGNsYXNzIFJlbmRlckJveDsK
K2NsYXNzIFJlbmRlckdyaWQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAogZW51bSBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gewpAQCAtNzMsOSArNzQsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEdy
aWRQb3NpdGlvblNpZGUgaW5pdGlhbFBvc2l0aW9uU2lkZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24pOwogICAgIHN0YXRpYyBHcmlkUG9zaXRpb25TaWRlIGZpbmFsUG9zaXRpb25TaWRlKEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbik7CiAgICAgc3RhdGljIHVuc2lnbmVkIHNwYW5TaXplRm9yQXV0
b1BsYWNlZEl0ZW0oY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsK
LSAgICBzdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24s
IHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGV4
cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQgYXV0b1Jl
cGVhdENvbHVtbnNDb3VudCk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFJvd0Nv
dW50KGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQgYXV0b1JlcGVhdFJvd3NDb3VudCk7Cisg
ICAgc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJl
bmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CisgICAgc3RhdGljIHVuc2lnbmVk
IGV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0IFJlbmRlckdyaWQmKTsKKyAgICBzdGF0aWMg
dW5zaWduZWQgZXhwbGljaXRHcmlkUm93Q291bnQoY29uc3QgUmVuZGVyR3JpZCYpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXgg
ZjE2OTM2NjI0NThhNzk5YTFhNmQxMDk1YTVmMjVjODAxMzQ2NTExMS4uN2QyOGY4OTE5MDQ5MzA1
ZmU4ZmI0YjYwZTBjNDAxZTJmY2IzMzNkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTUgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93
QGFwcGxlLmNvbT4KKworICAgICAgICBJbmhlcml0IHRyYWNrIGNvdW50IGZyb20gcGFyZW50IGdy
aWQgZm9yIHN1YmdyaWRkZWQgYXhlcyBhbmQgY2xhbXAgaXRlbSBwbGFjZW1lbnQgdG8gdGhhdCBl
eHBsaWNpdCBncmlkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM2MTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdCBjaGFuZ2VzIHRvIG1hdGNoIGxhdGVzdCBzcGVjLCBzdWJtaXR0ZWQgdXBzdHJl
YW0gYXMgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvcHVsbC8zMjYy
OQorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xp
bmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1LWV4cGVjdGVkLmh0bWw6CisKIDIw
MjItMDItMTQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtD
U1MgQ29udGFpbmVyIFF1ZXJpZXNdIEltcGxlbWVudCBmdWxsIHF1ZXJ5IHBhcnNlciBhbmQgZXZh
bHVhdG9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3Jp
ZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWwKaW5kZXggMDRjNTgzOTU5NmM5
ZTViMDllY2NlMjg0YzhjYzc1N2I2ZDFlZjg3Yy4uMjM5OTMyOGJlY2M0ZTU1NjI1MmRiNWFlN2Ni
MDA0ZTkzZDhhNDhkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi1leHBlY3Rl
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMTQs
NyArMTQsNyBAQCBodG1sLGJvZHkgewogCiAuZ3JpZCB7CiAgIGRpc3BsYXk6IGdyaWQ7Ci0gIGdy
aWQ6IGF1dG8gLyBbYV0gNTBweCA1MHB4IFthXSA1MHB4IDUwcHggW2FdOworICBncmlkOiBhdXRv
IC8gW2FdIDUwcHggNDBweCBbYV0gMTBweCA1MHB4IFthXTsKICAgcGFkZGluZzogMjBweCAxMHB4
OwogfQogCkBAIC0zMiw3ICszMiw3IEBAIHggeyBiYWNrZ3JvdW5kOiBncmV5OyB9CiAKIDxkaXYg
Y2xhc3M9ImdyaWQiPgogICA8ZGl2IGNsYXNzPSJzdWJncmlkIj4KLSAgICA8eCBzdHlsZT0iZ3Jp
ZC1jb2x1bW46IDEgLyAzIj48L3g+CisgICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAzIC8gNCI+
PC94PgogICA8L2Rpdj4KIDwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMt
MDA1LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1LWV4cGVjdGVkLmh0bWwK
aW5kZXggNGM3ZjRiNTBmZDE2NjAxNDgwZTMyOTI0ZTFlYWFhNzZjODFiNzBjNi4uY2ZlMThkMWIy
NmVkNmViNzM1NWE3ZTAwMjlmM2U3Zjc2ZjU2NmQ2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5l
LW5hbWVzLTAwNS1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUtZXhw
ZWN0ZWQuaHRtbApAQCAtMTE1LDcgKzExNSw3IEBAIHggewogPGRpdiBzdHlsZT0iZGlzcGxheTpn
cmlkOyB3aWR0aDo1MDBweDsgZ3JpZC1hdXRvLWNvbHVtbnM6IDUwcHg7Ij4KIDxpPjwvaT48aT48
L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwv
aT4KICAgPGRpdiBjbGFzcz0ic3ViZ3JpZDIiPgotICAgIDx4IHN0eWxlPSJncmlkLWNvbHVtbjog
c3BhbiA0IC8gMTEiPng8L3g+CisgICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiBzcGFuIDMgLyAx
MSI+eDwveD4KICAgPC9kaXY+CiA8L2Rpdj4KIApAQCAtMTI5LDcgKzEyOSw3IEBAIHggewogPGRp
diBzdHlsZT0iZGlzcGxheTpncmlkOyBncmlkOiBhdXRvIC8gcmVwZWF0KDEwLCA1MHB4KSByZXBl
YXQoMTAsIFthXSA1MHB4KSBbYV0iPgogPGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwv
aT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPgogICA8ZGl2IHN0eWxlPSJkaXNw
bGF5OmdyaWQ7IGdyaWQ6YXV0by9zdWJncmlkOyBncmlkLWNvbHVtbjogc3BhbiAxMDsgZ3JpZC1y
b3c6MiI+Ci0gICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMTEiPng8L3g+CisgICAgPHgg
c3R5bGU9ImdyaWQtY29sdW1uOiAxMCAvIDExIj54PC94PgogICA8L2Rpdj4KIDwvZGl2PgogCg==
</data>
<flag name="commit-queue"
          id="478851"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451954</attachid>
            <date>2022-02-14 16:03:12 -0800</date>
            <delta_ts>2022-02-15 11:40:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236122-20220215130311.patch</filename>
            <type>text/plain</type>
            <size>45727</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBjNDg5N2UxMWI0MmNm
NGFiNjIwNTRhNzk3NWI1MTI3ZWUwYzZjZi4uZWU5MWY4YjFjMGNkZThiYjkyM2I2YTMyOGM0OTg2
NTMyOWU0NWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTAyLTE1ICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgSW5oZXJpdCB0cmFj
ayBjb3VudCBmcm9tIHBhcmVudCBncmlkIGZvciBzdWJncmlkZGVkIGF4ZXMgYW5kIGNsYW1wIGl0
ZW0gcGxhY2VtZW50IHRvIHRoYXQgZXhwbGljaXQgZ3JpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZXMgR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpleHBsaWNpdEdyaWQ8PkNvdW50IHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIHRyYWNrcworICAg
ICAgICBzcGFubmVkIGluIHRoZSBwYXJlbnQgZ3JpZCwgZm9yIGF4ZXMgdGhhdCBhcmUgYSBzdWJn
cmlkLgorCisgICAgICAgIFVwZGF0ZXMgYWRqdXN0R3JpZFBvc2l0aW9uc0ZvclN0eWxlIHRvIHVz
ZSB0aGUgbnVtYmVyIG9mIGxpbmVzIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgc3ViZ3JpZCBw
cm9wZXJ0eSwgZm9yIGdyaWQgaXRlbXMgdGhhdCBhcmUgYWxzbyBhIHN1YmdyaWQgYW5kIGhhdmUg
YW4gb3RoZXJ3aXNlCisgICAgICAgIGluZGVmaW5pdGUgc3Bhbi4KKworICAgICAgICBBZGRzIGNs
YW1waW5nIHN1cHBvcnQgdG8gR3JpZCBzbyB0aGF0IHdlIGNhbiBwcmV2ZW50IHN1YmdyaWRzIGZy
b20gZXZlciBhZGRpbmcKKyAgICAgICAgbmV3IGltcGxpY2l0IHRyYWNrcy4KKworICAgICAgICAq
IHJlbmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6Omluc2VydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmlkOjpzZXRDbGFtcGluZ0ZvclN1YmdyaWQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZDo6Y2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxpY2l0R3JpZCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkOjpzZXROZWVkc0l0ZW1zUGxhY2VtZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRB
bmRPcmRlckl0ZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBs
YWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6aXNTdWJncmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmlzU3ViZ3JpZFJvd3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6aXNTdWJncmlkQ29sdW1ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZsb3dDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpudW1UcmFja3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNwb3Nl
ZERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlR3JpZFNw
YW5Gb3JPdXRPZkZsb3dDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6aW50ZWdlclNwYW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFNwYW46OnRyYW5zbGF0ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFu
OjpjbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0luZGVmaW5pdGVTcGFuKToKKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3Np
dGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdy
aWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9z
aXRpb25zUmVzb2x2ZXIuaDoKKwogMjAyMi0wMi0xNCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudCB0b29sdGlwcyBpbiBv
dmVybGF5cyBzaG91bGQgdXNlIHNhbWUgZW5jb2RhYmxlL2RlY29kYWJsZSBMYWJlbCB0eXBlIGFz
IGdyaWQgb3ZlcmxheXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRleCA1NjAyZDdjMmQ0
ZDViY2E5MzI0NTQ0Yjc1YWQyMmNiMjY1OGVkMDJjLi4zN2NhOTNmMDNhNzIxYzIwYzM4MGZiYzdj
MTFiODQxNjM5MDdhYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC02MSwxNyAr
NjEsMjQgQEAgdm9pZCBHcmlkOjplbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93U2l6
ZSwgdW5zaWduZWQgbWF4aW11bUNvbHVtblNpemUpCiAgICAgfQogfQogCi12b2lkIEdyaWQ6Omlu
c2VydChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBHcmlkQXJlYSYgYXJlYSkKK0dyaWRBcmVhIEdy
aWQ6Omluc2VydChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBHcmlkQXJlYSYgYXJlYSkKIHsKLSAg
ICBBU1NFUlQoYXJlYS5yb3dzLmlzVHJhbnNsYXRlZERlZmluaXRlKCkgJiYgYXJlYS5jb2x1bW5z
LmlzVHJhbnNsYXRlZERlZmluaXRlKCkpOwotICAgIGVuc3VyZUdyaWRTaXplKGFyZWEucm93cy5l
bmRMaW5lKCksIGFyZWEuY29sdW1ucy5lbmRMaW5lKCkpOworICAgIEdyaWRBcmVhIGNsYW1wZWQg
PSBhcmVhOworICAgIGlmIChtX21heFJvd3MpCisgICAgICAgIGNsYW1wZWQucm93cy5jbGFtcCht
X21heFJvd3MpOworICAgIGlmIChtX21heENvbHVtbnMpCisgICAgICAgIGNsYW1wZWQuY29sdW1u
cy5jbGFtcChtX21heENvbHVtbnMpOwogCi0gICAgZm9yIChhdXRvIHJvdyA6IGFyZWEucm93cykg
ewotICAgICAgICBmb3IgKGF1dG8gY29sdW1uIDogYXJlYS5jb2x1bW5zKQorICAgIEFTU0VSVChj
bGFtcGVkLnJvd3MuaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSAmJiBjbGFtcGVkLmNvbHVtbnMuaXNU
cmFuc2xhdGVkRGVmaW5pdGUoKSk7CisgICAgZW5zdXJlR3JpZFNpemUoY2xhbXBlZC5yb3dzLmVu
ZExpbmUoKSwgY2xhbXBlZC5jb2x1bW5zLmVuZExpbmUoKSk7CisKKyAgICBmb3IgKGF1dG8gcm93
IDogY2xhbXBlZC5yb3dzKSB7CisgICAgICAgIGZvciAoYXV0byBjb2x1bW4gOiBjbGFtcGVkLmNv
bHVtbnMpCiAgICAgICAgICAgICBtX2dyaWRbcm93XVtjb2x1bW5dLmFwcGVuZChjaGlsZCk7CiAg
ICAgfQogCi0gICAgc2V0R3JpZEl0ZW1BcmVhKGNoaWxkLCBhcmVhKTsKKyAgICBzZXRHcmlkSXRl
bUFyZWEoY2hpbGQsIGNsYW1wZWQpOworICAgIHJldHVybiBjbGFtcGVkOwogfQogCiB2b2lkIEdy
aWQ6OnNldEV4cGxpY2l0R3JpZFN0YXJ0KHVuc2lnbmVkIHJvd1N0YXJ0LCB1bnNpZ25lZCBjb2x1
bW5TdGFydCkKQEAgLTg1LDYgKzkyLDI2IEBAIHVuc2lnbmVkIEdyaWQ6OmV4cGxpY2l0R3JpZFN0
YXJ0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiAgICAgcmV0dXJu
IGRpcmVjdGlvbiA9PSBGb3JSb3dzID8gbV9leHBsaWNpdFJvd1N0YXJ0IDogbV9leHBsaWNpdENv
bHVtblN0YXJ0OwogfQogCit2b2lkIEdyaWQ6OnNldENsYW1waW5nRm9yU3ViZ3JpZCh1bnNpZ25l
ZCBtYXhSb3dzLCB1bnNpZ25lZCBtYXhDb2x1bW5zKQoreworICAgIG1fbWF4Um93cyA9IG1heFJv
d3M7CisgICAgbV9tYXhDb2x1bW5zID0gbWF4Q29sdW1uczsKK30KKwordm9pZCBHcmlkOjpjbGFt
cEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlkKEdyaWRBcmVhJiBhcmVhKQoreworICAgIGlmICgh
YXJlYS5yb3dzLmlzSW5kZWZpbml0ZSgpKSB7CisgICAgICAgIGlmIChtX21heFJvd3MpCisgICAg
ICAgICAgICBhcmVhLnJvd3MuY2xhbXAobV9tYXhSb3dzKTsKKyAgICAgICAgYXJlYS5yb3dzLnRy
YW5zbGF0ZShleHBsaWNpdEdyaWRTdGFydChGb3JSb3dzKSk7CisgICAgfQorICAgIGlmICghYXJl
YS5jb2x1bW5zLmlzSW5kZWZpbml0ZSgpKSB7CisgICAgICAgIGlmIChtX21heENvbHVtbnMpCisg
ICAgICAgICAgICBhcmVhLmNvbHVtbnMuY2xhbXAobV9tYXhDb2x1bW5zKTsKKyAgICAgICAgYXJl
YS5jb2x1bW5zLnRyYW5zbGF0ZShleHBsaWNpdEdyaWRTdGFydChGb3JDb2x1bW5zKSk7CisgICAg
fQorfQorCiBHcmlkQXJlYSBHcmlkOjpncmlkSXRlbUFyZWEoY29uc3QgUmVuZGVyQm94JiBpdGVt
KSBjb25zdAogewogICAgIEFTU0VSVChtX2dyaWRJdGVtQXJlYS5jb250YWlucygmaXRlbSkpOwpA
QCAtMTYxLDYgKzE4OCw4IEBAIHZvaWQgR3JpZDo6c2V0TmVlZHNJdGVtc1BsYWNlbWVudChib29s
IG5lZWRzSXRlbXNQbGFjZW1lbnQpCiAgICAgbV9hdXRvUmVwZWF0RW1wdHlSb3dzID0gbnVsbHB0
cjsKICAgICBtX2F1dG9SZXBlYXRDb2x1bW5zID0gMDsKICAgICBtX2F1dG9SZXBlYXRSb3dzID0g
MDsKKyAgICBtX21heENvbHVtbnMgPSAwOworICAgIG1fbWF4Um93cyA9IDA7CiB9CiAKIEdyaWRJ
dGVyYXRvcjo6R3JpZEl0ZXJhdG9yKGNvbnN0IEdyaWQmIGdyaWQsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIGZpeGVkVHJhY2tJbmRleCwgdW5zaWduZWQgdmFy
eWluZ1RyYWNrSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAppbmRleCA3MmNhZGY2OGVmNGQz
MjY2Y2UxZjhjZWViZGM5YTQ5ZGYyYmM4MTFiLi4xMWQ5ZTY4ZmI4MTk5ZmJjYTRkOGJhNWIxYmNi
ZjljODMwOTljNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHVuc2lnbmVkIG51bVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24p
IGNvbnN0OwogCiAgICAgdm9pZCBlbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93U2l6
ZSwgdW5zaWduZWQgbWF4aW11bUNvbHVtblNpemUpOwotICAgIHZvaWQgaW5zZXJ0KFJlbmRlckJv
eCYsIGNvbnN0IEdyaWRBcmVhJik7CisgICAgR3JpZEFyZWEgaW5zZXJ0KFJlbmRlckJveCYsIGNv
bnN0IEdyaWRBcmVhJik7CiAKICAgICAvLyBOb3RlIHRoYXQgZWFjaCBpbiBmbG93IGNoaWxkIG9m
IGEgZ3JpZCBjb250YWluZXIgYmVjb21lcyBhIGdyaWQgaXRlbS4gVGhpcyBtZWFucyB0aGF0CiAg
ICAgLy8gdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gZmFsc2UgZm9yIGEgZ3JpZCBjb250YWluZXIg
d2l0aCBvbmx5IG91dCBvZiBmbG93IGNoaWxkcmVuLgpAQCAtNjcsNiArNjcsMTAgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
KSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9SZXBlYXRUcmFja3ModW5zaWduZWQgYXV0b1JlcGVh
dFJvd3MsIHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1bW5zKTsKIAorICAgIHZvaWQgc2V0Q2xhbXBp
bmdGb3JTdWJncmlkKHVuc2lnbmVkIG1heFJvd3MsIHVuc2lnbmVkIG1heENvbHVtbnMpOworCisg
ICAgdm9pZCBjbGFtcEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlkKEdyaWRBcmVhJik7CisKICAg
ICB2b2lkIHNldEF1dG9SZXBlYXRFbXB0eUNvbHVtbnMoc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRU
cmFja0luZGV4U2V0Pik7CiAgICAgdm9pZCBzZXRBdXRvUmVwZWF0RW1wdHlSb3dzKHN0ZDo6dW5p
cXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4pOwogCkBAIC05Miw2ICs5Niw5IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0Q29sdW1ucyB7IDAgfTsKICAgICB1bnNpZ25l
ZCBtX2F1dG9SZXBlYXRSb3dzIHsgMCB9OwogCisgICAgdW5zaWduZWQgbV9tYXhDb2x1bW5zIHsg
MCB9OworICAgIHVuc2lnbmVkIG1fbWF4Um93cyB7IDAgfTsKKwogICAgIGJvb2wgbV9uZWVkc0l0
ZW1zUGxhY2VtZW50IHsgdHJ1ZSB9OwogCiAgICAgR3JpZEFzTWF0cml4IG1fZ3JpZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCBk
NGY3ODhkYzcwZDI2MDE1NWY1ZDY0ZmQ0NWZiODE5NDM0N2E2NWYxLi5hZjZiMWY4ZDVmZWNjOGQ4
NDU2YmY0NjE5YWU5MzM0NWZmY2Q4NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIExheW91dFVuaXQg
bWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZChjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBHcmlkVHJh
Y2tTaXppbmdEaXJlCiAgICAgcmV0dXJuIG1hcmdpblN0YXJ0ICsgbWFyZ2luRW5kOwogfQogCi1i
b29sIGlzT3J0aG9nb25hbENoaWxkKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQpCitib29sIGlzT3J0aG9nb25hbENoaWxkKGNvbnN0IFJlbmRlckdyaWQmIGdy
aWQsIGNvbnN0IFJlbmRlckVsZW1lbnQmIGNoaWxkKQogewogICAgIHJldHVybiBjaGlsZC5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpICE9IGdyaWQuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsK
IH0KQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBpc0FzcGVjdFJhdGlvQmxvY2tTaXplRGVwZW5kZW50
Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKICAgICByZXR1cm4gKGNoaWxkLnN0eWxlKCku
aGFzQXNwZWN0UmF0aW8oKSB8fCBjaGlsZC5oYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpKSAmJiAo
Y2hpbGQuaGFzUmVsYXRpdmVMb2dpY2FsSGVpZ2h0KCkgfHwgY2hpbGQuaGFzU3RyZXRjaGVkTG9n
aWNhbEhlaWdodCgpKTsKIH0KIAotR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURp
cmVjdGlvbkZvckNoaWxkKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckJveCYg
Y2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCitHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYg
Z3JpZCwgY29uc3QgUmVuZGVyRWxlbWVudCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlY3Rpb24pCiB7CiAgICAgcmV0dXJuICFpc09ydGhvZ29uYWxDaGlsZChncmlkLCBjaGls
ZCkgPyBkaXJlY3Rpb24gOiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBGb3JSb3dzIDogRm9y
Q29sdW1ucyk7CiB9CkBAIC0xMDIsNiArMTAyLDE5IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVu
CiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY2hpbGQub3ZlcnJpZGluZ0Nv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSA6IGNoaWxkLm92ZXJyaWRpbmdDb250
YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpOwogfQogCitib29sIGlzRmxpcHBlZERp
cmVjdGlvbihjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
ZGlyZWN0aW9uKQoreworICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykKKyAgICAgICAg
cmV0dXJuICFncmlkLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOworICAgIHJldHVy
biBncmlkLnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKTsKK30KKworYm9vbCBp
c1N1YmdyaWRSZXZlcnNlZERpcmVjdGlvbihjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24gb3V0ZXJEaXJlY3Rpb24sIGNvbnN0IFJlbmRlckdyaWQmIHN1Ymdy
aWQpCit7CisgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGNoaWxkRGlyZWN0aW9uID0gZmxv
d0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoZ3JpZCwgc3ViZ3JpZCwgb3V0ZXJEaXJlY3Rpb24pOwor
ICAgIHJldHVybiBpc0ZsaXBwZWREaXJlY3Rpb24oZ3JpZCwgb3V0ZXJEaXJlY3Rpb24pICE9IGlz
RmxpcHBlZERpcmVjdGlvbihzdWJncmlkLCBjaGlsZERpcmVjdGlvbik7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEdyaWRMYXlvdXRGdW5jdGlvbnMKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmgKaW5kZXggNWRi
M2Y1Zjk4Mjk1MzVlZDNhNzMyYzI5NGI3ZGEwNjBiYmQyZDFiZC4uMjZlYmRjYTkwMDFmMmQ1MWZi
MDA0YzE2MTIyYzFmMDJlNzE1NmQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
R3JpZExheW91dEZ1bmN0aW9ucy5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIFJl
bmRlckdyaWQ7CiAKQEAgLTM5LDEyICs0MCwxNSBAQCBuYW1lc3BhY2UgR3JpZExheW91dEZ1bmN0
aW9ucyB7CiAKIExheW91dFVuaXQgY29tcHV0ZU1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY29u
c3QgUmVuZGVyR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgUmVuZGVyQm94
Jik7CiBMYXlvdXRVbml0IG1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyR3Jp
ZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgUmVuZGVyQm94Jik7Ci1ib29sIGlz
T3J0aG9nb25hbENoaWxkKGNvbnN0IFJlbmRlckdyaWQmLCBjb25zdCBSZW5kZXJCb3gmKTsKK2Jv
b2wgaXNPcnRob2dvbmFsQ2hpbGQoY29uc3QgUmVuZGVyR3JpZCYsIGNvbnN0IFJlbmRlckVsZW1l
bnQmKTsKIGJvb2wgaXNBc3BlY3RSYXRpb0Jsb2NrU2l6ZURlcGVuZGVudENoaWxkKGNvbnN0IFJl
bmRlckJveCYpOwotR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURpcmVjdGlvbkZv
ckNoaWxkKGNvbnN0IFJlbmRlckdyaWQmLCBjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24pOworR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURpcmVjdGlv
bkZvckNoaWxkKGNvbnN0IFJlbmRlckdyaWQmLCBjb25zdCBSZW5kZXJFbGVtZW50JiwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKTsKIGJvb2wgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uKTsKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uKTsKIAorYm9vbCBpc0ZsaXBwZWREaXJlY3Rpb24oY29uc3QgUmVuZGVyR3JpZCYsIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbik7Citib29sIGlzU3ViZ3JpZFJldmVyc2VkRGlyZWN0aW9u
KGNvbnN0IFJlbmRlckdyaWQmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gb3V0ZXJEaXJlY3Rp
b24sIGNvbnN0IFJlbmRlckdyaWQmIHN1YmdyaWQpOworCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA3ZmZiNjIz
NzQ4ZjAwZjY2ZmI3YmU4NWZiOWU5NTMzZTU3NDExZWYxLi5lYjkxZmZkMzI0MTM2MjViMmQ3OTRk
NDAyNjEzY2U5Y2YzNGQwM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwCkBAIC00NDYsOCArNDQ2LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlSW50cmluc2lj
TG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW8KICAgICBMYXlv
dXRVbml0IGNoaWxkTWF4V2lkdGg7CiAgICAgYm9vbCBoYWRFeGNsdWRlZENoaWxkcmVuID0gY29t
cHV0ZVByZWZlcnJlZFdpZHRoc0ZvckV4Y2x1ZGVkQ2hpbGRyZW4oY2hpbGRNaW5XaWR0aCwgY2hp
bGRNYXhXaWR0aCk7CiAKLSAgICBHcmlkIGdyaWQoY29uc3RfY2FzdDxSZW5kZXJHcmlkJj4oKnRo
aXMpKTsKLSAgICBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gYWxnb3JpdGhtKHRoaXMsIGdyaWQp
OworICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSBhbGdvcml0aG0odGhpcywgY29uc3RfY2Fz
dDxHcmlkJj4obV9ncmlkKSk7CiAgICAgcGxhY2VJdGVtc09uR3JpZChhbGdvcml0aG0sIHN0ZDo6
bnVsbG9wdCk7CiAKICAgICBwZXJmb3JtR3JpZEl0ZW1zUHJlTGF5b3V0KGFsZ29yaXRobSk7CkBA
IC02NDEsNyArNjQwLDYgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKEdyaWRU
cmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtLCBzdGQ6Om9wdGkKICAgICBHcmlkJiBncmlk
ID0gYWxnb3JpdGhtLm11dGFibGVHcmlkKCk7CiAgICAgdW5zaWduZWQgYXV0b1JlcGVhdENvbHVt
bnMgPSBjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEZvckNvbHVtbnMsIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCk7CiAgICAgdW5zaWduZWQgYXV0b1JlcGVhdFJvd3MgPSBjb21wdXRlQXV0b1Jl
cGVhdFRyYWNrc0NvdW50KEZvclJvd3MsIGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRGb3JQZXJjZW50
YWdlQ29tcHV0YXRpb24oKSk7Ci0KICAgICBhdXRvUmVwZWF0Um93cyA9IGNsYW1wQXV0b1JlcGVh
dFRyYWNrcyhGb3JSb3dzLCBhdXRvUmVwZWF0Um93cyk7CiAgICAgYXV0b1JlcGVhdENvbHVtbnMg
PSBjbGFtcEF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucywgYXV0b1JlcGVhdENvbHVtbnMpOwog
CkBAIC02NzAsMTAgKzY2OCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZChH
cmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIGFsZ29yaXRobSwgc3RkOjpvcHRpCiAgICAgICAgICAg
ICBjaGlsZC0+c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0
KHN0ZDo6bnVsbG9wdCk7CiAKICAgICAgICAgR3JpZEFyZWEgYXJlYSA9IGdyaWQuZ3JpZEl0ZW1B
cmVhKCpjaGlsZCk7Ci0gICAgICAgIGlmICghYXJlYS5yb3dzLmlzSW5kZWZpbml0ZSgpKQotICAg
ICAgICAgICAgYXJlYS5yb3dzLnRyYW5zbGF0ZShncmlkLmV4cGxpY2l0R3JpZFN0YXJ0KEZvclJv
d3MpKTsKLSAgICAgICAgaWYgKCFhcmVhLmNvbHVtbnMuaXNJbmRlZmluaXRlKCkpCi0gICAgICAg
ICAgICBhcmVhLmNvbHVtbnMudHJhbnNsYXRlKGdyaWQuZXhwbGljaXRHcmlkU3RhcnQoRm9yQ29s
dW1ucykpOworICAgICAgICBncmlkLmNsYW1wQW5kVHJhbnNsYXRlVG9JbXBsaWNpdEdyaWQoYXJl
YSk7CiAKICAgICAgICAgaWYgKGFyZWEucm93cy5pc0luZGVmaW5pdGUoKSB8fCBhcmVhLmNvbHVt
bnMuaXNJbmRlZmluaXRlKCkpIHsKICAgICAgICAgICAgIGdyaWQuc2V0R3JpZEl0ZW1BcmVhKCpj
aGlsZCwgYXJlYSk7CkBAIC02OTAsOCArNjg1LDggQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0
ZW1zT25HcmlkKEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtLCBzdGQ6Om9wdGkK
IAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKGdyaWQuaGFzR3JpZEl0ZW1zKCkpIHsKLSAg
ICAgICAgQVNTRVJUKGdyaWQubnVtVHJhY2tzKEZvclJvd3MpID49IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQoc3R5bGUoKSwgZ3JpZC5hdXRvUmVwZWF0VHJhY2tz
KEZvclJvd3MpKSk7Ci0gICAgICAgIEFTU0VSVChncmlkLm51bVRyYWNrcyhGb3JDb2x1bW5zKSA+
PSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KHN0eWxlKCks
IGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhGb3JDb2x1bW5zKSkpOworICAgICAgICBBU1NFUlQoZ3Jp
ZC5udW1UcmFja3MoRm9yUm93cykgPj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdy
aWRSb3dDb3VudCgqdGhpcykpOworICAgICAgICBBU1NFUlQoZ3JpZC5udW1UcmFja3MoRm9yQ29s
dW1ucykgPj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCgq
dGhpcykpOwogICAgIH0KICNlbmRpZgogCkBAIC03NDUsMzMgKzc0MCwzNSBAQCB2b2lkIFJlbmRl
ckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcihHcmlkJiBncmlkKSBj
b25zdAogICAgIE9yZGVySXRlcmF0b3JQb3B1bGF0b3IgcG9wdWxhdG9yKGdyaWQub3JkZXJJdGVy
YXRvcigpKTsKICAgICB1bnNpZ25lZCBleHBsaWNpdFJvd1N0YXJ0ID0gMDsKICAgICB1bnNpZ25l
ZCBleHBsaWNpdENvbHVtblN0YXJ0ID0gMDsKLSAgICB1bnNpZ25lZCBhdXRvUmVwZWF0Um93cyA9
IGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhGb3JSb3dzKTsKLSAgICB1bnNpZ25lZCBhdXRvUmVwZWF0
Q29sdW1ucyA9IGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhGb3JDb2x1bW5zKTsKLSAgICB1bnNpZ25l
ZCBtYXhpbXVtUm93SW5kZXggPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJv
d0NvdW50KHN0eWxlKCksIGF1dG9SZXBlYXRSb3dzKTsKLSAgICB1bnNpZ25lZCBtYXhpbXVtQ29s
dW1uSW5kZXggPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50
KHN0eWxlKCksIGF1dG9SZXBlYXRDb2x1bW5zKTsKKyAgICB1bnNpZ25lZCBtYXhpbXVtUm93SW5k
ZXggPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KCp0aGlzKTsK
KyAgICB1bnNpZ25lZCBtYXhpbXVtQ29sdW1uSW5kZXggPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6
OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KCp0aGlzKTsKIAogICAgIGZvciAoUmVuZGVyQm94KiBj
aGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
Qm94KCkpIHsKICAgICAgICAgaWYgKCFwb3B1bGF0b3IuY29sbGVjdENoaWxkKCpjaGlsZCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIEdyaWRTcGFuIHJvd1Bvc2l0
aW9ucyA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5
bGUoc3R5bGUoKSwgKmNoaWxkLCBGb3JSb3dzLCBhdXRvUmVwZWF0Um93cyk7Ci0gICAgICAgIGlm
ICghcm93UG9zaXRpb25zLmlzSW5kZWZpbml0ZSgpKSB7Ci0gICAgICAgICAgICBleHBsaWNpdFJv
d1N0YXJ0ID0gc3RkOjptYXg8aW50PihleHBsaWNpdFJvd1N0YXJ0LCAtcm93UG9zaXRpb25zLnVu
dHJhbnNsYXRlZFN0YXJ0TGluZSgpKTsKLSAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0
ZDo6bWF4PGludD4obWF4aW11bVJvd0luZGV4LCByb3dQb3NpdGlvbnMudW50cmFuc2xhdGVkRW5k
TGluZSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEdyb3cgdGhlIGdyaWQg
Zm9yIGl0ZW1zIHdpdGggYSBkZWZpbml0ZSByb3cgc3BhbiwgZ2V0dGluZyB0aGUgbGFyZ2VzdCBz
dWNoIHNwYW4uCi0gICAgICAgICAgICB1bnNpZ25lZCBzcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNS
ZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbSgqY2hpbGQsIEZvclJvd3MpOwotICAg
ICAgICAgICAgbWF4aW11bVJvd0luZGV4ID0gc3RkOjptYXgobWF4aW11bVJvd0luZGV4LCBzcGFu
U2l6ZSk7CisgICAgICAgIEdyaWRTcGFuIHJvd1Bvc2l0aW9ucyA9IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoKmNoaWxkLCBGb3JSb3dzKTsKKyAg
ICAgICAgaWYgKCFpc1N1YmdyaWRSb3dzKCkpIHsKKyAgICAgICAgICAgIGlmICghcm93UG9zaXRp
b25zLmlzSW5kZWZpbml0ZSgpKSB7CisgICAgICAgICAgICAgICAgZXhwbGljaXRSb3dTdGFydCA9
IHN0ZDo6bWF4PGludD4oZXhwbGljaXRSb3dTdGFydCwgLXJvd1Bvc2l0aW9ucy51bnRyYW5zbGF0
ZWRTdGFydExpbmUoKSk7CisgICAgICAgICAgICAgICAgbWF4aW11bVJvd0luZGV4ID0gc3RkOjpt
YXg8aW50PihtYXhpbXVtUm93SW5kZXgsIHJvd1Bvc2l0aW9ucy51bnRyYW5zbGF0ZWRFbmRMaW5l
KCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBHcm93IHRoZSBn
cmlkIGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUgcm93IHNwYW4sIGdldHRpbmcgdGhlIGxhcmdl
c3Qgc3VjaCBzcGFuLgorICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNwYW5TaXplID0gR3JpZFBv
c2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKCpjaGlsZCwgRm9yUm93
cyk7CisgICAgICAgICAgICAgICAgbWF4aW11bVJvd0luZGV4ID0gc3RkOjptYXgobWF4aW11bVJv
d0luZGV4LCBzcGFuU2l6ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBH
cmlkU3BhbiBjb2x1bW5Qb3NpdGlvbnMgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVH
cmlkUG9zaXRpb25zRnJvbVN0eWxlKHN0eWxlKCksICpjaGlsZCwgRm9yQ29sdW1ucywgYXV0b1Jl
cGVhdENvbHVtbnMpOwotICAgICAgICBpZiAoIWNvbHVtblBvc2l0aW9ucy5pc0luZGVmaW5pdGUo
KSkgewotICAgICAgICAgICAgZXhwbGljaXRDb2x1bW5TdGFydCA9IHN0ZDo6bWF4PGludD4oZXhw
bGljaXRDb2x1bW5TdGFydCwgLWNvbHVtblBvc2l0aW9ucy51bnRyYW5zbGF0ZWRTdGFydExpbmUo
KSk7Ci0gICAgICAgICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heDxpbnQ+KG1heGlt
dW1Db2x1bW5JbmRleCwgY29sdW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZEVuZExpbmUoKSk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBHcm93IHRoZSBncmlkIGZvciBpdGVtcyB3
aXRoIGEgZGVmaW5pdGUgY29sdW1uIHNwYW4sIGdldHRpbmcgdGhlIGxhcmdlc3Qgc3VjaCBzcGFu
LgotICAgICAgICAgICAgdW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6
OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oKmNoaWxkLCBGb3JDb2x1bW5zKTsKLSAgICAgICAg
ICAgIG1heGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Db2x1bW5JbmRleCwgc3Bh
blNpemUpOworICAgICAgICBHcmlkU3BhbiBjb2x1bW5Qb3NpdGlvbnMgPSBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKCpjaGlsZCwgRm9yQ29sdW1u
cyk7CisgICAgICAgIGlmICghaXNTdWJncmlkQ29sdW1ucygpKSB7CisgICAgICAgICAgICBpZiAo
IWNvbHVtblBvc2l0aW9ucy5pc0luZGVmaW5pdGUoKSkgeworICAgICAgICAgICAgICAgIGV4cGxp
Y2l0Q29sdW1uU3RhcnQgPSBzdGQ6Om1heDxpbnQ+KGV4cGxpY2l0Q29sdW1uU3RhcnQsIC1jb2x1
bW5Qb3NpdGlvbnMudW50cmFuc2xhdGVkU3RhcnRMaW5lKCkpOworICAgICAgICAgICAgICAgIG1h
eGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4PGludD4obWF4aW11bUNvbHVtbkluZGV4LCBjb2x1
bW5Qb3NpdGlvbnMudW50cmFuc2xhdGVkRW5kTGluZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgLy8gR3JvdyB0aGUgZ3JpZCBmb3IgaXRlbXMgd2l0aCBhIGRlZmlu
aXRlIGNvbHVtbiBzcGFuLCBnZXR0aW5nIHRoZSBsYXJnZXN0IHN1Y2ggc3Bhbi4KKyAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBzcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNp
emVGb3JBdXRvUGxhY2VkSXRlbSgqY2hpbGQsIEZvckNvbHVtbnMpOworICAgICAgICAgICAgICAg
IG1heGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Db2x1bW5JbmRleCwgc3BhblNp
emUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgZ3JpZC5zZXRHcmlkSXRl
bUFyZWEoKmNoaWxkLCB7IHJvd1Bvc2l0aW9ucywgY29sdW1uUG9zaXRpb25zIH0pOwpAQCAtNzc5
LDYgKzc3Niw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRl
ckl0ZXJhdG9yKEdyaWQmIGdyaWQpIGNvbnN0CiAKICAgICBncmlkLnNldEV4cGxpY2l0R3JpZFN0
YXJ0KGV4cGxpY2l0Um93U3RhcnQsIGV4cGxpY2l0Q29sdW1uU3RhcnQpOwogICAgIGdyaWQuZW5z
dXJlR3JpZFNpemUobWF4aW11bVJvd0luZGV4ICsgZXhwbGljaXRSb3dTdGFydCwgbWF4aW11bUNv
bHVtbkluZGV4ICsgZXhwbGljaXRDb2x1bW5TdGFydCk7CisgICAgZ3JpZC5zZXRDbGFtcGluZ0Zv
clN1YmdyaWQoaXNTdWJncmlkUm93cygpID8gbWF4aW11bVJvd0luZGV4IDogMCwgaXNTdWJncmlk
Q29sdW1ucygpID8gbWF4aW11bUNvbHVtbkluZGV4IDogMCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxHcmlkQXJlYT4gUmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9z
aXRpb25zT3V0c2lkZUdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSwg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHNwZWNpZmllZERpcmVjdGlvbiwgY29uc3QgR3JpZFNw
YW4mIHNwZWNpZmllZFBvc2l0aW9ucykgY29uc3QKQEAgLTgxMiw3ICs4MTAsNyBAQCB2b2lkIFJl
bmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYgZ3JpZCwg
Y29uc3QgVmVjdG9yPFJlbgogICAgICAgICBpZiAoIWVtcHR5R3JpZEFyZWEpCiAgICAgICAgICAg
ICBlbXB0eUdyaWRBcmVhID0gY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25z
T3V0c2lkZUdyaWQoZ3JpZCwgKmF1dG9HcmlkSXRlbSwgYXV0b1BsYWNlbWVudE1ham9yQXhpc0Rp
cmVjdGlvbigpLCBtYWpvckF4aXNQb3NpdGlvbnMpOwogCi0gICAgICAgIGdyaWQuaW5zZXJ0KCph
dXRvR3JpZEl0ZW0sICplbXB0eUdyaWRBcmVhKTsKKyAgICAgICAgKmVtcHR5R3JpZEFyZWEgPSBn
cmlkLmluc2VydCgqYXV0b0dyaWRJdGVtLCAqZW1wdHlHcmlkQXJlYSk7CiAKICAgICAgICAgaWYg
KCFpc0dyaWRBdXRvRmxvd0RlbnNlKQogICAgICAgICAgICAgbWlub3JBeGlzQ3Vyc29ycy5zZXQo
bWFqb3JBeGlzSW5pdGlhbFBvc2l0aW9uLCBpc0ZvckNvbHVtbnMgPyBlbXB0eUdyaWRBcmVhLT5y
b3dzLnN0YXJ0TGluZSgpIDogZW1wdHlHcmlkQXJlYS0+Y29sdW1ucy5zdGFydExpbmUoKSk7CkBA
IC0xNjEwLDExICsxNjA4LDI5IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6cmVzb2x2ZUF1dG9F
bmRHcmlkUG9zaXRpb24oR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjCiAgICAgcmV0dXJu
IGNsaWVudExvZ2ljYWxXaWR0aCgpOwogfQogCitib29sIFJlbmRlckdyaWQ6OmlzU3ViZ3JpZChH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAoreworICAgIGlmIChpc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBpc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyAh
c3R5bGUoKS5ncmlkU3ViZ3JpZENvbHVtbnMoKSA6ICFzdHlsZSgpLmdyaWRTdWJncmlkUm93cygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzPFJlbmRlckdyaWQ+KHBhcmVu
dCgpKTsKK30KKworYm9vbCBSZW5kZXJHcmlkOjppc1N1YmdyaWRSb3dzKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaXNTdWJncmlkKEZvclJvd3MpOworfQorYm9vbCBSZW5kZXJHcmlkOjppc1N1Ymdy
aWRDb2x1bW5zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNTdWJncmlkKEZvckNvbHVtbnMpOwor
fQorCiBMYXlvdXRVbml0IFJlbmRlckdyaWQ6OmdyaWRBcmVhQnJlYWR0aEZvck91dE9mRmxvd0No
aWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7CiAgICAgQVNTRVJUKGNoaWxkLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKICAg
ICBib29sIGlzUm93QXhpcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwotICAgIEdyaWRTcGFu
IHNwYW4gPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0
eWxlKHN0eWxlKCksIGNoaWxkLCBkaXJlY3Rpb24sIGF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlv
bihkaXJlY3Rpb24pKTsKKyAgICBHcmlkU3BhbiBzcGFuID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjaGlsZCwgZGlyZWN0aW9uKTsKICAgICBp
ZiAoc3Bhbi5pc0luZGVmaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIGlzUm93QXhpcyA/IGNsaWVu
dExvZ2ljYWxXaWR0aCgpIDogY2xpZW50TG9naWNhbEhlaWdodCgpOwogCkBAIC0xOTIwLDcgKzE5
MzYsNyBAQCB1bnNpZ25lZCBSZW5kZXJHcmlkOjpudW1UcmFja3MoR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgR3JpZCYgZwogICAgICAgICByZXR1cm4gZ3JpZC5udW1U
cmFja3MoRm9yUm93cyk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBzdGlsbCByZXF1aXJlcyBrbm93
bGVkZ2UgYWJvdXQgbV9ncmlkIGludGVybmFscy4KLSAgICByZXR1cm4gZ3JpZC5udW1UcmFja3Mo
Rm9yUm93cykgPyBncmlkLm51bVRyYWNrcyhGb3JDb2x1bW5zKSA6IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoc3R5bGUoKSwgZ3JpZC5hdXRvUmVwZWF0VHJh
Y2tzKEZvckNvbHVtbnMpKTsKKyAgICByZXR1cm4gZ3JpZC5udW1UcmFja3MoRm9yUm93cykgPyBn
cmlkLm51bVRyYWNrcyhGb3JDb2x1bW5zKSA6IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGlj
aXRHcmlkQ29sdW1uQ291bnQoKnRoaXMpOwogfQogCiB2b2lkIFJlbmRlckdyaWQ6OnBhaW50Q2hp
bGRyZW4oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpCkBAIC0xOTc3LDQgKzE5
OTMsNjIgQEAgYm9vbCBSZW5kZXJHcmlkOjpoYXNBdXRvU2l6ZUluUm93QXhpcyhjb25zdCBSZW5k
ZXJCb3gmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ID8gY2hpbGQuc3R5bGUoKS53aWR0aCgpLmlzQXV0bygpIDogY2hpbGQuc3R5bGUoKS5oZWlnaHQo
KS5pc0F1dG8oKTsKIH0KIAorYm9vbCBSZW5kZXJHcmlkOjpjb21wdXRlR3JpZFNwYW5Gb3JPdXRP
ZkZsb3dDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCBpbnQmIHN0YXJ0TGluZSwgYm9vbCYgc3RhcnRJc0F1dG8sIGludCYgZW5k
TGluZSwgYm9vbCYgZW5kSXNBdXRvKSBjb25zdAoreworICAgIEFTU0VSVChjaGlsZC5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSk7CisgICAgaW50IGxhc3RMaW5lID0gbnVtVHJhY2tzKGRpcmVjdGlv
biwgbV9ncmlkKTsKKyAgICBHcmlkU3BhbiBzcGFuID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpy
ZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjaGlsZCwgZGlyZWN0aW9uKTsKKyAgICBpZiAo
c3Bhbi5pc0luZGVmaW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdW5zaWdu
ZWQgZXhwbGljaXRTdGFydCA9IG1fZ3JpZC5leHBsaWNpdEdyaWRTdGFydChkaXJlY3Rpb24pOwor
ICAgIHN0YXJ0TGluZSA9IHNwYW4udW50cmFuc2xhdGVkU3RhcnRMaW5lKCkgKyBleHBsaWNpdFN0
YXJ0OworICAgIGVuZExpbmUgPSBzcGFuLnVudHJhbnNsYXRlZEVuZExpbmUoKSArIGV4cGxpY2l0
U3RhcnQ7CisKKyAgICBHcmlkUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PSBG
b3JDb2x1bW5zID8gY2hpbGQuc3R5bGUoKS5ncmlkSXRlbUNvbHVtblN0YXJ0KCkgOiBjaGlsZC5z
dHlsZSgpLmdyaWRJdGVtUm93U3RhcnQoKTsKKyAgICBHcmlkUG9zaXRpb24gZW5kUG9zaXRpb24g
PSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Db2x1bW5F
bmQoKSA6IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Sb3dFbmQoKTsKKworICAgIHN0YXJ0SXNBdXRv
ID0gc3RhcnRQb3NpdGlvbi5pc0F1dG8oKSB8fCBzdGFydExpbmUgPCAwIHx8IHN0YXJ0TGluZSA+
IGxhc3RMaW5lOworICAgIGVuZElzQXV0byA9IGVuZFBvc2l0aW9uLmlzQXV0bygpIHx8IGVuZExp
bmUgPCAwIHx8IGVuZExpbmUgPiBsYXN0TGluZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworR3Jp
ZFNwYW4gUmVuZGVyR3JpZDo6Z3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjb25zdCBSZW5kZXJC
b3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorewor
ICAgIGludCBsYXN0TGluZSA9IG51bVRyYWNrcyhkaXJlY3Rpb24sIG1fZ3JpZCk7CisgICAgaW50
IHN0YXJ0TGluZSwgZW5kTGluZTsKKyAgICBib29sIHN0YXJ0SXNBdXRvLCBlbmRJc0F1dG87Cisg
ICAgaWYgKCFjb21wdXRlR3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjaGlsZCwgZGlyZWN0aW9u
LCBzdGFydExpbmUsIHN0YXJ0SXNBdXRvLCBlbmRMaW5lLCBlbmRJc0F1dG8pKQorICAgICAgICBy
ZXR1cm4gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKDAsIGxhc3RMaW5lKTsK
KyAgICByZXR1cm4gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKHN0YXJ0SXNB
dXRvID8gMCA6IHN0YXJ0TGluZSwgZW5kSXNBdXRvID8gbGFzdExpbmUgOiBlbmRMaW5lKTsKK30K
KworR3JpZFNwYW4gUmVuZGVyR3JpZDo6Z3JpZFNwYW5Gb3JDaGlsZChjb25zdCBSZW5kZXJCb3gm
IGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAoreworICAg
IEFTU0VSVChpczxSZW5kZXJHcmlkPihjaGlsZC5wYXJlbnQoKSkpOworCisgICAgUmVuZGVyR3Jp
ZCogcmVuZGVyR3JpZCA9IGRvd25jYXN0PFJlbmRlckdyaWQ+KGNoaWxkLnBhcmVudCgpKTsKKyAg
ICAvLyB8ZGlyZWN0aW9ufCBpcyBzcGVjaWZpZWQgcmVsYXRpdmUgdG8gdGhpcyBncmlkLCBzd2l0
Y2ggaXQgaWYgfGNoaWxkfCdzIGRpcmVjdCBwYXJlbnQgZ3JpZAorICAgIC8vIGlzIHVzaW5nIGEg
ZGlmZmVyZW50IHdyaXRpbmcgbW9kZS4KKyAgICBkaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rp
b25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZCgqdGhpcywgKnJlbmRlckdyaWQsIGRpcmVj
dGlvbik7CisgICAgR3JpZFNwYW4gc3BhbiA9IGNoaWxkLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
ID8gcmVuZGVyR3JpZC0+Z3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjaGlsZCwgZGlyZWN0aW9u
KSA6IHJlbmRlckdyaWQtPmN1cnJlbnRHcmlkKCkuZ3JpZEl0ZW1TcGFuKGNoaWxkLCBkaXJlY3Rp
b24pOworCisgICAgd2hpbGUgKHJlbmRlckdyaWQgIT0gdGhpcykgeworICAgICAgICBBU1NFUlQo
aXM8UmVuZGVyR3JpZD4ocmVuZGVyR3JpZC0+cGFyZW50KCkpKTsKKyAgICAgICAgUmVuZGVyR3Jp
ZCogcGFyZW50ID0gZG93bmNhc3Q8UmVuZGVyR3JpZD4ocmVuZGVyR3JpZC0+cGFyZW50KCkpOwor
CisgICAgICAgIGJvb2wgaXNTdWJncmlkID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyByZW5k
ZXJHcmlkLT5pc1N1YmdyaWRDb2x1bW5zKCkgOiByZW5kZXJHcmlkLT5pc1N1YmdyaWRSb3dzKCk7
CisKKyAgICAgICAgZGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGly
ZWN0aW9uRm9yQ2hpbGQoKnBhcmVudCwgKnJlbmRlckdyaWQsIGRpcmVjdGlvbik7CisKKyAgICAg
ICAgR3JpZFNwYW4gcGFyZW50U3BhbiA9IHJlbmRlckdyaWQtPmlzT3V0T2ZGbG93UG9zaXRpb25l
ZCgpID8gcGFyZW50LT5ncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKCpyZW5kZXJHcmlkLCBkaXJl
Y3Rpb24pIDogIHBhcmVudC0+Y3VycmVudEdyaWQoKS5ncmlkSXRlbVNwYW4oKnJlbmRlckdyaWQs
IGRpcmVjdGlvbik7CisgICAgICAgIGlmIChpc1N1YmdyaWQpCisgICAgICAgICAgICBzcGFuLnRy
YW5zbGF0ZVRvKHBhcmVudFNwYW4sIEdyaWRMYXlvdXRGdW5jdGlvbnM6OmlzU3ViZ3JpZFJldmVy
c2VkRGlyZWN0aW9uKCpwYXJlbnQsIGRpcmVjdGlvbiwgKnJlbmRlckdyaWQpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgc3BhbiA9IHBhcmVudFNwYW47CisgICAgICAgIHJlbmRlckdyaWQg
PSBwYXJlbnQ7CisgICAgfQorICAgIHJldHVybiBzcGFuOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCBlMjMwYjEzZGE4
YTJkY2VlOTRhOTcxNmQ0MTBkODYxNDlhZWQ5YWI0Li4zMTc2ZDVjZmQ4YWExODFjMWM4OTMxNWJm
YzUwYzc3ZTY2MTc4YzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAg
LTgyLDYgKzgyLDE5IEBAIHB1YmxpYzoKIAogICAgIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEg
Y29udGVudEFsaWdubWVudChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCisgICAg
Ly8gQ29tcHV0ZXMgdGhlIHNwYW4gcmVsYXRpdmUgdG8gdGhpcyBSZW5kZXJHcmlkLCBldmVuIGlm
IHRoZSBSZW5kZXJCb3ggaXMgYSBjaGlsZAorICAgIC8vIG9mIGEgZGVzY2VuZGFudCBzdWJncmlk
LgorICAgIEdyaWRTcGFuIGdyaWRTcGFuRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKKworICAgIGJvb2wgaXNTdWJncmlkUm93cygpIGNv
bnN0OworICAgIGJvb2wgaXNTdWJncmlkQ29sdW1ucygpIGNvbnN0OworICAgIGJvb2wgaXNTdWJn
cmlkKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CisKKyAgICBjb25zdCBHcmlkJiBj
dXJyZW50R3JpZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ncmlkOworICAgIH0K
KwogcHJpdmF0ZToKICAgICBJdGVtUG9zaXRpb24gc2VsZkFsaWdubWVudE5vcm1hbEJlaGF2aW9y
KGNvbnN0IFJlbmRlckJveCogY2hpbGQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZQogICAgIHsK
QEAgLTE1MCw4ICsxNjMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TG9naWNhbFBvc2l0aW9u
Rm9yQ2hpbGQoUmVuZGVyQm94JikgY29uc3Q7CiAgICAgdm9pZCBzZXRMb2dpY2FsT2Zmc2V0Rm9y
Q2hpbGQoUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxPZmZzZXRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwotICAgIEdyaWRBcmVhIGNhY2hlZEdyaWRBcmVhKGNv
bnN0IFJlbmRlckJveCYpIGNvbnN0OwotICAgIEdyaWRTcGFuIGNhY2hlZEdyaWRTcGFuKGNvbnN0
IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAKICAgICBMYXlv
dXRVbml0IGdyaWRBcmVhQnJlYWR0aEZvckNoaWxkSW5jbHVkaW5nQWxpZ25tZW50T2Zmc2V0cyhj
b25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCkBAIC0x
OTMsNiArMjA0LDkgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxSZW5kZXJCb3gqPiBjb21wdXRl
QXNwZWN0UmF0aW9EZXBlbmRlbnRBbmRCYXNlbGluZUl0ZW1zKCk7CiAKKyAgICBHcmlkU3BhbiBn
cmlkU3BhbkZvck91dE9mRmxvd0NoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbikgY29uc3Q7CisgICAgYm9vbCBjb21wdXRlR3JpZFNwYW5Gb3JPdXRPZkZsb3dD
aGlsZChjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGludCYsIGJv
b2wmLCBpbnQmLCBib29sJikgY29uc3Q7CisKICAgICBHcmlkIG1fZ3JpZDsKIAogICAgIEdyaWRU
cmFja1NpemluZ0FsZ29yaXRobSBtX3RyYWNrU2l6aW5nQWxnb3JpdGhtOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAppbmRleCBiN2ViZDFkOTYxZGU4ODI2ZmI4MzAz
MzA5YjhlNjM1MmYyMGY5ZWFiLi5lZTNiOTJmYzBmZjNiOTAwZGI5OWM5MjUyNzEwZWY3ZmUyMWI5
ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaApAQCAtNjUs
NyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBpbnRlZ2VyU3BhbigpIGNvbnN0CiAg
ICAgewotICAgICAgICBBU1NFUlQoaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSk7CisgICAgICAgIEFT
U0VSVChpc1RyYW5zbGF0ZWREZWZpbml0ZSgpIHx8IG1fdHlwZSA9PSBVbnRyYW5zbGF0ZWREZWZp
bml0ZSk7CiAgICAgICAgIHJldHVybiBtX2VuZExpbmUgLSBtX3N0YXJ0TGluZTsKICAgICB9CiAK
QEAgLTE0MSw2ICsxNDEsMzEgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9lbmRMaW5lID4g
MCk7CiAgICAgfQogCisgICAgLy8gTW92ZXMgdGhpcyBzcGFuIHRvIGJlIGluIHRoZSBzYW1lIGNv
b3JkaW5hdGUgc3BhY2UgYXMgfHBhcmVudHwuCisgICAgLy8gSWYgcmV2ZXJzZSBpcyBzcGVjaWZp
ZWQsIHRoZW4gc3dhcHMgdGhlIGRpcmVjdGlvbiB0byBoYW5kbGUgUlRML0xUUiBjaGFuZ2VzLgor
ICAgIHZvaWQgdHJhbnNsYXRlVG8oY29uc3QgR3JpZFNwYW4mIHBhcmVudCwgYm9vbCByZXZlcnNl
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGUpOwor
ICAgICAgICBBU1NFUlQocGFyZW50Lm1fdHlwZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGUpOworICAg
ICAgICBpZiAocmV2ZXJzZSkgeworICAgICAgICAgICAgaW50IHN0YXJ0ID0gbV9zdGFydExpbmU7
CisgICAgICAgICAgICBtX3N0YXJ0TGluZSA9IHBhcmVudC5pbnRlZ2VyU3BhbigpIC0gbV9lbmRM
aW5lICsgcGFyZW50LnN0YXJ0TGluZSgpOworICAgICAgICAgICAgbV9lbmRMaW5lID0gcGFyZW50
LmludGVnZXJTcGFuKCkgLSBzdGFydCArIHBhcmVudC5zdGFydExpbmUoKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG1fc3RhcnRMaW5lICs9IHBhcmVudC5tX3N0YXJ0TGluZTsKKyAg
ICAgICAgICAgIG1fZW5kTGluZSArPSBwYXJlbnQubV9zdGFydExpbmU7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIGNsYW1wKGludCBtYXgpCisgICAgeworICAgICAgICBBU1NFUlQobV90
eXBlICE9IEluZGVmaW5pdGUpOworICAgICAgICBtX3N0YXJ0TGluZSA9IHN0ZDo6bWF4KG1fc3Rh
cnRMaW5lLCAwKTsKKyAgICAgICAgbV9lbmRMaW5lID0gc3RkOjptYXgoc3RkOjptaW4obV9lbmRM
aW5lLCBtYXgpLCAxKTsKKyAgICAgICAgaWYgKG1fc3RhcnRMaW5lID49IG1fZW5kTGluZSkKKyAg
ICAgICAgICAgIG1fc3RhcnRMaW5lID0gbV9lbmRMaW5lIC0gMTsKKyAgICB9CisKIHByaXZhdGU6
CiAKICAgICBlbnVtIEdyaWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0
ZWREZWZpbml0ZSwgSW5kZWZpbml0ZX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCmluZGV4IDMzYzcwM2M1ZjA2
ZmE2NWEzZjZmYmRhMmRlNzZkZWEzZmI2MWI4ZGUuLjY3YmIzNmVhYzQ2MDExOGJhNTQwZGQ1YTlj
ODhiOWU2OWU4NWZhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
bmNsdWRlICJHcmlkQXJlYS5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2luY2x1ZGUgIlJl
bmRlckdyaWQuaCIKICNpbmNsdWRlIDxjc3RkbGliPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xNTIsNiArMTUzLDE4IEBAIHVuc2lnbmVkIE5hbWVkTGluZUNvbGxlY3Rpb246OmZpcnN0UG9z
aXRpb24oKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om1pbihmaXJzdEV4cGxpY2l0UG9zaXRpb24o
KSwgbV9pbXBsaWNpdE5hbWVkTGluZXNJbmRleGVzLT5hdChmaXJzdExpbmUpKTsKIH0KIAorLy8g
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1ncmlkLTIvI2luZGVmaW5pdGUtZ3JpZC1zcGFu
CitzdGF0aWMgYm9vbCBpc0luZGVmaW5pdGVTcGFuKEdyaWRQb3NpdGlvbiYgaW5pdGlhbFBvc2l0
aW9uLCBHcmlkUG9zaXRpb24mIGZpbmFsUG9zaXRpb24pCit7CisgICAgaWYgKCFpbml0aWFsUG9z
aXRpb24uaXNBdXRvKCkgJiYgIWZpbmFsUG9zaXRpb24uaXNBdXRvKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChpbml0aWFsUG9zaXRpb24uaXNTcGFuKCkgfHwgZmluYWxQb3Np
dGlvbi5pc1NwYW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHN0YXRpYyB2b2lkIGFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVu
ZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3Jp
ZFBvc2l0aW9uJiBpbml0aWFsUG9zaXRpb24sIEdyaWRQb3NpdGlvbiYgZmluYWxQb3NpdGlvbikK
IHsKICAgICBib29sIGlzRm9yQ29sdW1ucyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwpAQCAt
MTY4LDIxICsxODEsNTIgQEAgc3RhdGljIHZvaWQgYWRqdXN0R3JpZFBvc2l0aW9uc0Zyb21TdHls
ZShjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXoKICAgICAgICAgZmluYWxQ
b3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oMSwgU3RyaW5nKCkpOwogICAgIGlmIChmaW5hbFBvc2l0
aW9uLmlzQXV0bygpICYmIGluaXRpYWxQb3NpdGlvbi5pc1NwYW4oKSAmJiAhaW5pdGlhbFBvc2l0
aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSkKICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNl
dFNwYW5Qb3NpdGlvbigxLCBTdHJpbmcoKSk7CisKKyAgICBpZiAoaXNJbmRlZmluaXRlU3Bhbihp
bml0aWFsUG9zaXRpb24sIGZpbmFsUG9zaXRpb24pICYmIGlzPFJlbmRlckdyaWQ+KGdyaWRJdGVt
KSAmJiBkb3duY2FzdDxSZW5kZXJHcmlkPihncmlkSXRlbSkuaXNTdWJncmlkKGRpcmVjdGlvbikp
IHsKKyAgICAgICAgLy8gSW5kZWZpbml0ZSBzcGFuIGZvciBhbiBpdGVtIHRoYXQgaXMgc3ViZ3Jp
ZGRlZCBpbiB0aGlzIGF4aXMuCisgICAgICAgIGludCBsaW5lQ291bnQgPSBkaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucyA/IGdyaWRJdGVtLnN0eWxlKCkuZ3JpZENvbHVtbnMoKS5zaXplKCkgOiBncmlk
SXRlbS5zdHlsZSgpLmdyaWRSb3dzKCkuc2l6ZSgpOworCisgICAgICAgIGlmIChpbml0aWFsUG9z
aXRpb24uaXNBdXRvKCkpIHsKKyAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIHBvc2l0aW9uIHRv
IHNwYW4gPGxpbmUgbmFtZXMgLSAxPgorICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldFNw
YW5Qb3NpdGlvbihzdGQ6Om1heCgxLCBsaW5lQ291bnQgLSAxKSwgIiIpOworICAgICAgICAgICAg
aWYgKGZpbmFsUG9zaXRpb24uaXNTcGFuKCkpCisgICAgICAgICAgICAgICAgZmluYWxQb3NpdGlv
bi5zZXRBdXRvUG9zaXRpb24oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNl
dCBmaW5hbCBwb3NpdGlvbiB0byBzcGFuIDxsaW5lIG5hbWVzIC0gMT4KKyAgICAgICAgICAgIGZp
bmFsUG9zaXRpb24uc2V0U3BhblBvc2l0aW9uKHN0ZDo6bWF4KDEsIGxpbmVDb3VudCAtIDEpLCAi
Iik7CisgICAgICAgICAgICBpZiAoaW5pdGlhbFBvc2l0aW9uLmlzU3BhbigpKQorICAgICAgICAg
ICAgICAgIGluaXRpYWxQb3NpdGlvbi5zZXRBdXRvUG9zaXRpb24oKTsKKyAgICAgICAgfQorICAg
IH0KIH0KIAotdW5zaWduZWQgR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1
bW5Db3VudChjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCB1bnNpZ25lZCBh
dXRvUmVwZWF0VHJhY2tzQ291bnQpCit1bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4
cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIpCiB7
Ci0gICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihzdGQ6Om1heChncmlkQ29udGFpbmVyU3R5
bGUuZ3JpZENvbHVtbnMoKS5zaXplKCkgKyBhdXRvUmVwZWF0VHJhY2tzQ291bnQsIGdyaWRDb250
YWluZXJTdHlsZS5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4
KCkpOworICAgIGJvb2wgc3BlY2lmaWVkU3ViZ3JpZCA9IGdyaWRDb250YWluZXIuc3R5bGUoKS5n
cmlkU3ViZ3JpZENvbHVtbnMoKTsKKyAgICBpZiAoc3BlY2lmaWVkU3ViZ3JpZCAmJiBncmlkQ29u
dGFpbmVyLmlzU3ViZ3JpZENvbHVtbnMoKSkgeworICAgICAgICBjb25zdCBSZW5kZXJHcmlkJiBw
YXJlbnQgPSAqZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZENvbnRhaW5lci5wYXJlbnQoKSk7Cisg
ICAgICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVu
Y3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChwYXJlbnQsIGdyaWRDb250YWluZXIs
IEZvckNvbHVtbnMpOworICAgICAgICByZXR1cm4gcGFyZW50LmdyaWRTcGFuRm9yQ2hpbGQoZ3Jp
ZENvbnRhaW5lciwgZGlyZWN0aW9uKS5pbnRlZ2VyU3BhbigpOworICAgIH0KKyAgICBhdXRvIHNw
ZWNpZmllZENvbHVtbnMgPSBzcGVjaWZpZWRTdWJncmlkID8gMCA6IGdyaWRDb250YWluZXIuc3R5
bGUoKS5ncmlkQ29sdW1ucygpLnNpemUoKTsKKyAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+
KHN0ZDo6bWF4KHNwZWNpZmllZENvbHVtbnMgKyBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3Vu
dEZvckRpcmVjdGlvbihGb3JDb2x1bW5zKSwgZ3JpZENvbnRhaW5lci5zdHlsZSgpLm5hbWVkR3Jp
ZEFyZWFDb2x1bW5Db3VudCgpKSwgR3JpZFBvc2l0aW9uOjptYXgoKSk7CiB9CiAKLXVuc2lnbmVk
IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQoY29uc3QgUmVuZGVy
U3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50
KQordW5zaWduZWQgR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChj
b25zdCBSZW5kZXJHcmlkJiBncmlkQ29udGFpbmVyKQogewotICAgIHJldHVybiBzdGQ6Om1pbjx1
bnNpZ25lZD4oc3RkOjptYXgoZ3JpZENvbnRhaW5lclN0eWxlLmdyaWRSb3dzKCkuc2l6ZSgpICsg
YXV0b1JlcGVhdFRyYWNrc0NvdW50LCBncmlkQ29udGFpbmVyU3R5bGUubmFtZWRHcmlkQXJlYVJv
d0NvdW50KCkpLCBHcmlkUG9zaXRpb246Om1heCgpKTsKKyAgICBib29sIHNwZWNpZmllZFN1Ymdy
aWQgPSBncmlkQ29udGFpbmVyLnN0eWxlKCkuZ3JpZFN1YmdyaWRSb3dzKCk7CisgICAgaWYgKHNw
ZWNpZmllZFN1YmdyaWQgJiYgZ3JpZENvbnRhaW5lci5pc1N1YmdyaWRSb3dzKCkpIHsKKyAgICAg
ICAgY29uc3QgUmVuZGVyR3JpZCYgcGFyZW50ID0gKmRvd25jYXN0PFJlbmRlckdyaWQ+KGdyaWRD
b250YWluZXIucGFyZW50KCkpOworICAgICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQo
cGFyZW50LCBncmlkQ29udGFpbmVyLCBGb3JSb3dzKTsKKyAgICAgICAgcmV0dXJuIHBhcmVudC5n
cmlkU3BhbkZvckNoaWxkKGdyaWRDb250YWluZXIsIGRpcmVjdGlvbikuaW50ZWdlclNwYW4oKTsK
KyAgICB9CisgICAgYXV0byBzcGVjaWZpZWRSb3dzID0gc3BlY2lmaWVkU3ViZ3JpZCA/IDAgOiBn
cmlkQ29udGFpbmVyLnN0eWxlKCkuZ3JpZFJvd3MoKS5zaXplKCk7CisgICAgcmV0dXJuIHN0ZDo6
bWluPHVuc2lnbmVkPihzdGQ6Om1heChzcGVjaWZpZWRSb3dzICsgZ3JpZENvbnRhaW5lci5hdXRv
UmVwZWF0Q291bnRGb3JEaXJlY3Rpb24oRm9yUm93cyksIGdyaWRDb250YWluZXIuc3R5bGUoKS5u
YW1lZEdyaWRBcmVhUm93Q291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4KCkpOwogfQogCi1zdGF0
aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoY29uc3QgUmVuZGVyU3R5bGUmIGdy
aWRDb250YWluZXJTdHlsZSwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBhdXRvUmVw
ZWF0VHJhY2tzQ291bnQpCitzdGF0aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUo
Y29uc3QgUmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQog
ewotICAgIHJldHVybiBpc0NvbHVtblNpZGUoc2lkZSkgPyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6
OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGdyaWRDb250YWluZXJTdHlsZSwgYXV0b1JlcGVhdFRy
YWNrc0NvdW50KSA6IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQo
Z3JpZENvbnRhaW5lclN0eWxlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgIHJldHVybiBp
c0NvbHVtblNpZGUoc2lkZSkgPyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENv
bHVtbkNvdW50KGdyaWRDb250YWluZXIpIDogR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNp
dEdyaWRSb3dDb3VudChncmlkQ29udGFpbmVyKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGxvb2tB
aGVhZEZvck5hbWVkR3JpZExpbmUoaW50IHN0YXJ0LCB1bnNpZ25lZCBudW1iZXJPZkxpbmVzLCB1
bnNpZ25lZCBncmlkTGFzdExpbmUsIE5hbWVkTGluZUNvbGxlY3Rpb24mIGxpbmVzQ29sbGVjdGlv
bikKQEAgLTIyNCwxMiArMjY4LDEyIEBAIHN0YXRpYyBpbnQgbG9va0JhY2tGb3JOYW1lZEdyaWRM
aW5lKGludCBlbmQsIHVuc2lnbmVkIG51bWJlck9mTGluZXMsIGludCBncmlkTGFzCiAgICAgcmV0
dXJuIHN0YXJ0ICsgMTsKIH0KIAotc3RhdGljIGludCByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0
aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGNvbnN0
IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQg
YXV0b1JlcGVhdFRyYWNrc0NvdW50KQorc3RhdGljIGludCByZXNvbHZlTmFtZWRHcmlkTGluZVBv
c2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIsIGNvbnN0IEdy
aWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkKIHsKICAgICBBU1NF
UlQoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSk7CiAKLSAgICB1bnNpZ25lZCBs
YXN0TGluZSA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHlsZSwgc2lk
ZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGxpbmVz
Q29sbGVjdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwg
ZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5lLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQp
OworICAgIHVuc2lnbmVkIGxhc3RMaW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENv
bnRhaW5lciwgc2lkZSk7CisgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBsaW5lc0NvbGxlY3Rpb24o
Z3JpZENvbnRhaW5lci5zdHlsZSgpLCBwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCksIGRpcmVjdGlv
bkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgZ3JpZENvbnRhaW5lci5hdXRvUmVwZWF0Q291bnRG
b3JEaXJlY3Rpb24oZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSkpKTsKIAogICAgIGlmIChwb3NpdGlv
bi5pc1Bvc2l0aXZlKCkpCiAgICAgICAgIHJldHVybiBsb29rQWhlYWRGb3JOYW1lZEdyaWRMaW5l
KDAsIHN0ZDo6YWJzKHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpKSwgbGFzdExpbmUsIGxpbmVz
Q29sbGVjdGlvbik7CkBAIC0yNTAsMTkgKzI5NCwxOSBAQCBzdGF0aWMgR3JpZFNwYW4gZGVmaW5p
dGVHcmlkU3BhbldpdGhOYW1lZExpbmVTcGFuQWdhaW5zdE9wcG9zaXRlKGludCBvcHBvc2l0ZUxp
bgogICAgIHJldHVybiBHcmlkU3Bhbjo6dW50cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihzdGFy
dCwgZW5kKTsKIH0KIAotc3RhdGljIEdyaWRTcGFuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRp
b25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5l
clN0eWxlLCBpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBH
cmlkUG9zaXRpb25TaWRlIHNpZGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3N0
YXRpYyBHcmlkU3BhbiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRl
UG9zaXRpb24oY29uc3QgUmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwgaW50IG9wcG9zaXRlTGlu
ZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQog
ewogICAgIEFTU0VSVChwb3NpdGlvbi5pc1NwYW4oKSk7CiAgICAgQVNTRVJUKCFwb3NpdGlvbi5u
YW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpOwogICAgIC8vIE5lZ2F0aXZlIHBvc2l0aW9ucyBhcmUg
bm90IGFsbG93ZWQgcGVyIHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBzaG91bGQgaGF2ZSBiZWVuIGhh
bmRsZWQgZHVyaW5nIHBhcnNpbmcuCiAgICAgQVNTRVJUKHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigp
ID4gMCk7CiAKLSAgICB1bnNpZ25lZCBsYXN0TGluZSA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRl
KGdyaWRDb250YWluZXJTdHlsZSwgc2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICBO
YW1lZExpbmVDb2xsZWN0aW9uIGxpbmVzQ29sbGVjdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIHBv
c2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RMaW5l
LCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgIHVuc2lnbmVkIGxhc3RMaW5lID0gZXhwbGlj
aXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lciwgc2lkZSk7CisgICAgTmFtZWRMaW5lQ29s
bGVjdGlvbiBsaW5lc0NvbGxlY3Rpb24oZ3JpZENvbnRhaW5lci5zdHlsZSgpLCBwb3NpdGlvbi5u
YW1lZEdyaWRMaW5lKCksIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgZ3JpZENv
bnRhaW5lci5hdXRvUmVwZWF0Q291bnRGb3JEaXJlY3Rpb24oZGlyZWN0aW9uRnJvbVNpZGUoc2lk
ZSkpKTsKICAgICByZXR1cm4gZGVmaW5pdGVHcmlkU3BhbldpdGhOYW1lZExpbmVTcGFuQWdhaW5z
dE9wcG9zaXRlKG9wcG9zaXRlTGluZSwgcG9zaXRpb24sIHNpZGUsIGxhc3RMaW5lLCBsaW5lc0Nv
bGxlY3Rpb24pOwogfQogCi1zdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWlu
c3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUs
IGludCBvcHBvc2l0ZUxpbmUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3Np
dGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorc3RhdGljIEdy
aWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBS
ZW5kZXJHcmlkJiBncmlkQ29udGFpbmVyLCBpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBHcmlkUG9z
aXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7CiAgICAgaWYgKHBvc2l0
aW9uLmlzQXV0bygpKSB7CiAgICAgICAgIGlmIChpc1N0YXJ0U2lkZShzaWRlKSkKQEAgLTI3NSw3
ICszMTksNyBAQCBzdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBv
c2l0ZVBvc2l0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBncgogCiAgICAgaWYgKCFwb3NpdGlvbi5u
YW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gc3BhbiAyICdjJyAtPiB3ZSBu
ZWVkIHRvIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGdyaWQgbGluZSBiZWZvcmUgLyBhZnRlciBvdXIg
b3Bwb3NpdGUgcG9zaXRpb24uCi0gICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRHcmlkTGluZVBv
c2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBvcHBvc2l0
ZUxpbmUsIHBvc2l0aW9uLCBzaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgICAgICBy
ZXR1cm4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9u
KGdyaWRDb250YWluZXIsIG9wcG9zaXRlTGluZSwgcG9zaXRpb24sIHNpZGUpOwogICAgIH0KIAog
ICAgIC8vICdzcGFuIDEnIGlzIGNvbnRhaW5lZCBpbnNpZGUgYSBzaW5nbGUgZ3JpZCB0cmFjayBy
ZWdhcmRsZXNzIG9mIHRoZSBkaXJlY3Rpb24uCkBAIC0zMTUsMjEgKzM1OSwyMSBAQCB1bnNpZ25l
ZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oY29uc3Qg
UmVuZGVyQm94JiBncmlkSQogICAgIHJldHVybiBwb3NpdGlvbi5zcGFuUG9zaXRpb24oKTsKIH0K
IAotc3RhdGljIGludCByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0
eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdy
aWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorc3Rh
dGljIGludCByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlckdyaWQmIGdy
aWRDb250YWluZXIsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNp
ZGUgc2lkZSkKIHsKICAgICBzd2l0Y2ggKHBvc2l0aW9uLnR5cGUoKSkgewogICAgIGNhc2UgRXhw
bGljaXRQb3NpdGlvbjogewogICAgICAgICBBU1NFUlQocG9zaXRpb24uaW50ZWdlclBvc2l0aW9u
KCkpOwogCiAgICAgICAgIGlmICghcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUo
Z3JpZENvbnRhaW5lclN0eWxlLCBwb3NpdGlvbiwgc2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50
KTsKKyAgICAgICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0
eWxlKGdyaWRDb250YWluZXIsIHBvc2l0aW9uLCBzaWRlKTsKIAogICAgICAgICAvLyBIYW5kbGUg
PGludGVnZXI+IGV4cGxpY2l0IHBvc2l0aW9uLgogICAgICAgICBpZiAocG9zaXRpb24uaXNQb3Np
dGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uLmludGVnZXJQb3NpdGlvbigpIC0g
MTsKIAogICAgICAgICB1bnNpZ25lZCByZXNvbHZlZFBvc2l0aW9uID0gc3RkOjphYnMocG9zaXRp
b24uaW50ZWdlclBvc2l0aW9uKCkpIC0gMTsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZU
cmFjayA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHlsZSwgc2lkZSwg
YXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZUcmFj
ayA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXIsIHNpZGUpOwogCiAgICAg
ICAgIHJldHVybiBlbmRPZlRyYWNrIC0gcmVzb2x2ZWRQb3NpdGlvbjsKICAgICB9CkBAIC0zNDEs
MTQgKzM4NSwxNCBAQCBzdGF0aWMgaW50IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgYwogICAgICAgICBTdHJpbmcgbmFt
ZWRHcmlkTGluZSA9IHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKTsKICAgICAgICAgQVNTRVJUKCFw
b3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpOwogCi0gICAgICAgIHVuc2lnbmVkIGxh
c3RMaW5lID0gZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lclN0eWxlLCBzaWRl
LCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAgICAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGlt
cGxpY2l0TGluZXMoZ3JpZENvbnRhaW5lclN0eWxlLCBpbXBsaWNpdE5hbWVkR3JpZExpbmVGb3JT
aWRlKG5hbWVkR3JpZExpbmUsIHNpZGUpLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExp
bmUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIHVuc2lnbmVkIGxhc3RMaW5lID0g
ZXhwbGljaXRHcmlkU2l6ZUZvclNpZGUoZ3JpZENvbnRhaW5lciwgc2lkZSk7CisgICAgICAgIE5h
bWVkTGluZUNvbGxlY3Rpb24gaW1wbGljaXRMaW5lcyhncmlkQ29udGFpbmVyLnN0eWxlKCksIGlt
cGxpY2l0TmFtZWRHcmlkTGluZUZvclNpZGUobmFtZWRHcmlkTGluZSwgc2lkZSksIGRpcmVjdGlv
bkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgZ3JpZENvbnRhaW5lci5hdXRvUmVwZWF0Q291bnRG
b3JEaXJlY3Rpb24oZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSkpKTsKICAgICAgICAgaWYgKGltcGxp
Y2l0TGluZXMuaGFzTmFtZWRMaW5lcygpKQogICAgICAgICAgICAgcmV0dXJuIGltcGxpY2l0TGlu
ZXMuZmlyc3RQb3NpdGlvbigpOwogCiAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlcmUgaXMg
YSBuYW1lZCBsaW5lIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLCBjb250cmlidXRlcyB0aGUgZmly
c3Qgc3VjaCBsaW5lIHRvIHRoZSBncmlkCiAgICAgICAgIC8vIGl0ZW0ncyBwbGFjZW1lbnQuCi0g
ICAgICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gZXhwbGljaXRMaW5lcyhncmlkQ29udGFpbmVyU3R5
bGUsIG5hbWVkR3JpZExpbmUsIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgYXV0
b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBleHBsaWNp
dExpbmVzKGdyaWRDb250YWluZXIuc3R5bGUoKSwgbmFtZWRHcmlkTGluZSwgZGlyZWN0aW9uRnJv
bVNpZGUoc2lkZSksIGxhc3RMaW5lLCBncmlkQ29udGFpbmVyLmF1dG9SZXBlYXRDb3VudEZvckRp
cmVjdGlvbihkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSkpOwogICAgICAgICBpZiAoZXhwbGljaXRM
aW5lcy5oYXNOYW1lZExpbmVzKCkpCiAgICAgICAgICAgICByZXR1cm4gZXhwbGljaXRMaW5lcy5m
aXJzdFBvc2l0aW9uKCk7CiAKQEAgLTM2NSw4ICs0MDksMTEgQEAgc3RhdGljIGludCByZXNvbHZl
R3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5
bGUsIGMKICAgICByZXR1cm4gMDsKIH0KIAotR3JpZFNwYW4gR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENv
bnRhaW5lclN0eWxlLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCitHcmlk
U3BhbiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxl
KGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7CisgICAgYXV0byogZ3JpZENvbnRhaW5lciA9IGRvd25jYXN0PFJlbmRlckdyaWQ+
KGdyaWRJdGVtLmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICBBU1NFUlQoZ3JpZENvbnRhaW5lcik7
CisKICAgICBHcmlkUG9zaXRpb24gaW5pdGlhbFBvc2l0aW9uLCBmaW5hbFBvc2l0aW9uOwogICAg
IGFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoZ3JpZEl0ZW0sIGRpcmVjdGlvbiwgaW5pdGlh
bFBvc2l0aW9uLCBmaW5hbFBvc2l0aW9uKTsKIApAQCAtMzc5LDE4ICs0MjYsMTggQEAgR3JpZFNw
YW4gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYKIAogICAgIGlmIChpbml0aWFsUG9zaXRpb24uc2hvdWxkQmVSZXNv
bHZlZEFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKCkpIHsKICAgICAgICAgLy8gSW5mZXIgdGhlIHBv
c2l0aW9uIGZyb20gdGhlIGZpbmFsIHBvc2l0aW9uICgnYXV0byAvIDEnIG9yICdzcGFuIDIgLyAz
JyBjYXNlKS4KLSAgICAgICAgYXV0byBlbmRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21T
dHlsZShncmlkQ29udGFpbmVyU3R5bGUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSwgYXV0b1Jl
cGVhdFRyYWNrc0NvdW50KTsKLSAgICAgICAgcmV0dXJuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2Fp
bnN0T3Bwb3NpdGVQb3NpdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIGVuZExpbmUsIGluaXRpYWxQ
b3NpdGlvbiwgaW5pdGlhbFNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIGF1
dG8gZW5kTGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoKmdyaWRDb250YWluZXIs
IGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSk7CisgICAgICAgIHJldHVybiByZXNvbHZlR3JpZFBv
c2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKmdyaWRDb250YWluZXIsIGVuZExpbmUsIGlu
aXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUpOwogICAgIH0KIAogICAgIGlmIChmaW5hbFBvc2l0
aW9uLnNob3VsZEJlUmVzb2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigpKSB7CiAgICAgICAg
IC8vIEluZmVyIG91ciBwb3NpdGlvbiBmcm9tIHRoZSBpbml0aWFsIHBvc2l0aW9uICgnMSAvIGF1
dG8nIG9yICczIC8gc3BhbiAyJyBjYXNlKS4KLSAgICAgICAgYXV0byBzdGFydExpbmUgPSByZXNv
bHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXJTdHlsZSwgaW5pdGlhbFBvc2l0
aW9uLCBpbml0aWFsU2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICAgICAgcmV0dXJu
IHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihncmlkQ29udGFpbmVy
U3R5bGUsIHN0YXJ0TGluZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlLCBhdXRvUmVwZWF0VHJh
Y2tzQ291bnQpOworICAgICAgICBhdXRvIHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25G
cm9tU3R5bGUoKmdyaWRDb250YWluZXIsIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUpOwor
ICAgICAgICByZXR1cm4gcmVzb2x2ZUdyaWRQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9u
KCpncmlkQ29udGFpbmVyLCBzdGFydExpbmUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSk7CiAg
ICAgfQogCi0gICAgaW50IHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUo
Z3JpZENvbnRhaW5lclN0eWxlLCBpbml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlLCBhdXRvUmVw
ZWF0VHJhY2tzQ291bnQpOwotICAgIGludCBlbmRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZy
b21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSwgYXV0
b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICBpbnQgc3RhcnRMaW5lID0gcmVzb2x2ZUdyaWRQb3Np
dGlvbkZyb21TdHlsZSgqZ3JpZENvbnRhaW5lciwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lk
ZSk7CisgICAgaW50IGVuZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKCpncmlk
Q29udGFpbmVyLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUpOwogCiAgICAgaWYgKHN0YXJ0TGlu
ZSA+IGVuZExpbmUpCiAgICAgICAgIHN0ZDo6c3dhcChzdGFydExpbmUsIGVuZExpbmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNv
bHZlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNv
bHZlci5oCmluZGV4IDYyM2I2MmM2YzI0MWRjMTMwMjUwNzhkMTUxZjZhOTkwZDVkYzEwNmUuLjcy
NDE5NTc3MzU0MTNkZDExYTFiZDQwMmFiMjJiMGRlNTYzNzJhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmgKQEAg
LTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmlkU3BhbjsKIGNs
YXNzIFJlbmRlckJveDsKK2NsYXNzIFJlbmRlckdyaWQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAog
ZW51bSBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gewpAQCAtNzMsOSArNzQsOSBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEdyaWRQb3NpdGlvblNpZGUgaW5pdGlhbFBvc2l0aW9uU2lkZShHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24pOwogICAgIHN0YXRpYyBHcmlkUG9zaXRpb25TaWRlIGZpbmFsUG9z
aXRpb25TaWRlKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CiAgICAgc3RhdGljIHVuc2lnbmVk
IHNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uKTsKLSAgICBzdGF0aWMgR3JpZFNwYW4gcmVzb2x2ZUdyaWRQb3NpdGlvbnNG
cm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAgc3Rh
dGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0IFJlbmRlclN0eWxlJiwg
dW5zaWduZWQgYXV0b1JlcGVhdENvbHVtbnNDb3VudCk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGV4
cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQgYXV0b1JlcGVh
dFJvd3NDb3VudCk7CisgICAgc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25zRnJv
bVN0eWxlKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7CisgICAg
c3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGNvbnN0IFJlbmRlckdyaWQm
KTsKKyAgICBzdGF0aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkUm93Q291bnQoY29uc3QgUmVuZGVy
R3JpZCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKaW5kZXggZjE2OTM2NjI0NThhNzk5YTFhNmQxMDk1YTVmMjVjODAxMzQ2NTExMS4u
N2QyOGY4OTE5MDQ5MzA1ZmU4ZmI0YjYwZTBjNDAxZTJmY2IzMzNkMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDItMTUgIE1hdHQgV29vZHJv
dyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKworICAgICAgICBJbmhlcml0IHRyYWNrIGNvdW50
IGZyb20gcGFyZW50IGdyaWQgZm9yIHN1YmdyaWRkZWQgYXhlcyBhbmQgY2xhbXAgaXRlbSBwbGFj
ZW1lbnQgdG8gdGhhdCBleHBsaWNpdCBncmlkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdCBjaGFuZ2VzIHRvIG1hdGNoIGxhdGVzdCBzcGVjLCBz
dWJtaXR0ZWQgdXBzdHJlYW0gYXMgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQvcHVsbC8zMjYyOQorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Z3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWw6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1LWV4cGVj
dGVkLmh0bWw6CisKIDIwMjItMDItMTQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFtDU1MgQ29udGFpbmVyIFF1ZXJpZXNdIEltcGxlbWVudCBmdWxsIHF1ZXJ5
IHBhcnNlciBhbmQgZXZhbHVhdG9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAy
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVjdGVkLmh0bWwKaW5k
ZXggMDRjNTgzOTU5NmM5ZTViMDllY2NlMjg0YzhjYzc1N2I2ZDFlZjg3Yy4uMjM5OTMyOGJlY2M0
ZTU1NjI1MmRiNWFlN2NiMDA0ZTkzZDhhNDhkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5h
bWVzLTAwMi1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDItZXhwZWN0
ZWQuaHRtbApAQCAtMTQsNyArMTQsNyBAQCBodG1sLGJvZHkgewogCiAuZ3JpZCB7CiAgIGRpc3Bs
YXk6IGdyaWQ7Ci0gIGdyaWQ6IGF1dG8gLyBbYV0gNTBweCA1MHB4IFthXSA1MHB4IDUwcHggW2Fd
OworICBncmlkOiBhdXRvIC8gW2FdIDUwcHggNDBweCBbYV0gMTBweCA1MHB4IFthXTsKICAgcGFk
ZGluZzogMjBweCAxMHB4OwogfQogCkBAIC0zMiw3ICszMiw3IEBAIHggeyBiYWNrZ3JvdW5kOiBn
cmV5OyB9CiAKIDxkaXYgY2xhc3M9ImdyaWQiPgogICA8ZGl2IGNsYXNzPSJzdWJncmlkIj4KLSAg
ICA8eCBzdHlsZT0iZ3JpZC1jb2x1bW46IDEgLyAzIj48L3g+CisgICAgPHggc3R5bGU9ImdyaWQt
Y29sdW1uOiAzIC8gNCI+PC94PgogICA8L2Rpdj4KIDwvZGl2PgogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJn
cmlkL2xpbmUtbmFtZXMtMDA1LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDA1
LWV4cGVjdGVkLmh0bWwKaW5kZXggNGM3ZjRiNTBmZDE2NjAxNDgwZTMyOTI0ZTFlYWFhNzZjODFi
NzBjNi4uY2ZlMThkMWIyNmVkNmViNzM1NWE3ZTAwMjlmM2U3Zjc2ZjU2NmQ2YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGlu
ZS1uYW1lcy0wMDUtZXhwZWN0ZWQuaHRtbApAQCAtMTE1LDcgKzExNSw3IEBAIHggewogPGRpdiBz
dHlsZT0iZGlzcGxheTpncmlkOyB3aWR0aDo1MDBweDsgZ3JpZC1hdXRvLWNvbHVtbnM6IDUwcHg7
Ij4KIDxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48
L2k+PGk+PC9pPjxpPjwvaT4KICAgPGRpdiBjbGFzcz0ic3ViZ3JpZDIiPgotICAgIDx4IHN0eWxl
PSJncmlkLWNvbHVtbjogc3BhbiA0IC8gMTEiPng8L3g+CisgICAgPHggc3R5bGU9ImdyaWQtY29s
dW1uOiBzcGFuIDMgLyAxMSI+eDwveD4KICAgPC9kaXY+CiA8L2Rpdj4KIApAQCAtMTI5LDcgKzEy
OSw3IEBAIHggewogPGRpdiBzdHlsZT0iZGlzcGxheTpncmlkOyBncmlkOiBhdXRvIC8gcmVwZWF0
KDEwLCA1MHB4KSByZXBlYXQoMTAsIFthXSA1MHB4KSBbYV0iPgogPGk+PC9pPjxpPjwvaT48aT48
L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPgogICA8
ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7IGdyaWQ6YXV0by9zdWJncmlkOyBncmlkLWNvbHVtbjog
c3BhbiAxMDsgZ3JpZC1yb3c6MiI+Ci0gICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMTEi
Png8L3g+CisgICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAxMCAvIDExIj54PC94PgogICA8L2Rp
dj4KIDwvZGl2PgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452067</attachid>
            <date>2022-02-15 11:40:34 -0800</date>
            <delta_ts>2022-02-16 12:59:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236122-20220216084032.patch</filename>
            <type>text/plain</type>
            <size>44018</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBjNDg5N2UxMWI0MmNm
NGFiNjIwNTRhNzk3NWI1MTI3ZWUwYzZjZi4uZWU5MWY4YjFjMGNkZThiYjkyM2I2YTMyOGM0OTg2
NTMyOWU0NWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTAyLTE1ICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgSW5oZXJpdCB0cmFj
ayBjb3VudCBmcm9tIHBhcmVudCBncmlkIGZvciBzdWJncmlkZGVkIGF4ZXMgYW5kIGNsYW1wIGl0
ZW0gcGxhY2VtZW50IHRvIHRoYXQgZXhwbGljaXQgZ3JpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZXMgR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpleHBsaWNpdEdyaWQ8PkNvdW50IHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIHRyYWNrcworICAg
ICAgICBzcGFubmVkIGluIHRoZSBwYXJlbnQgZ3JpZCwgZm9yIGF4ZXMgdGhhdCBhcmUgYSBzdWJn
cmlkLgorCisgICAgICAgIFVwZGF0ZXMgYWRqdXN0R3JpZFBvc2l0aW9uc0ZvclN0eWxlIHRvIHVz
ZSB0aGUgbnVtYmVyIG9mIGxpbmVzIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgc3ViZ3JpZCBw
cm9wZXJ0eSwgZm9yIGdyaWQgaXRlbXMgdGhhdCBhcmUgYWxzbyBhIHN1YmdyaWQgYW5kIGhhdmUg
YW4gb3RoZXJ3aXNlCisgICAgICAgIGluZGVmaW5pdGUgc3Bhbi4KKworICAgICAgICBBZGRzIGNs
YW1waW5nIHN1cHBvcnQgdG8gR3JpZCBzbyB0aGF0IHdlIGNhbiBwcmV2ZW50IHN1YmdyaWRzIGZy
b20gZXZlciBhZGRpbmcKKyAgICAgICAgbmV3IGltcGxpY2l0IHRyYWNrcy4KKworICAgICAgICAq
IHJlbmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6Omluc2VydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmlkOjpzZXRDbGFtcGluZ0ZvclN1YmdyaWQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZDo6Y2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxpY2l0R3JpZCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkOjpzZXROZWVkc0l0ZW1zUGxhY2VtZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRB
bmRPcmRlckl0ZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBs
YWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6aXNTdWJncmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmlzU3ViZ3JpZFJvd3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6aXNTdWJncmlkQ29sdW1ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZsb3dDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpudW1UcmFja3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNwb3Nl
ZERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlR3JpZFNw
YW5Gb3JPdXRPZkZsb3dDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6aW50ZWdlclNwYW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFNwYW46OnRyYW5zbGF0ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFu
OjpjbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0luZGVmaW5pdGVTcGFuKToKKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3Np
dGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdy
aWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9z
aXRpb25zUmVzb2x2ZXIuaDoKKwogMjAyMi0wMi0xNCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudCB0b29sdGlwcyBpbiBv
dmVybGF5cyBzaG91bGQgdXNlIHNhbWUgZW5jb2RhYmxlL2RlY29kYWJsZSBMYWJlbCB0eXBlIGFz
IGdyaWQgb3ZlcmxheXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRleCA1NjAyZDdjMmQ0
ZDViY2E5MzI0NTQ0Yjc1YWQyMmNiMjY1OGVkMDJjLi4zN2NhOTNmMDNhNzIxYzIwYzM4MGZiYzdj
MTFiODQxNjM5MDdhYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC02MSwxNyAr
NjEsMjQgQEAgdm9pZCBHcmlkOjplbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93U2l6
ZSwgdW5zaWduZWQgbWF4aW11bUNvbHVtblNpemUpCiAgICAgfQogfQogCi12b2lkIEdyaWQ6Omlu
c2VydChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBHcmlkQXJlYSYgYXJlYSkKK0dyaWRBcmVhIEdy
aWQ6Omluc2VydChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBHcmlkQXJlYSYgYXJlYSkKIHsKLSAg
ICBBU1NFUlQoYXJlYS5yb3dzLmlzVHJhbnNsYXRlZERlZmluaXRlKCkgJiYgYXJlYS5jb2x1bW5z
LmlzVHJhbnNsYXRlZERlZmluaXRlKCkpOwotICAgIGVuc3VyZUdyaWRTaXplKGFyZWEucm93cy5l
bmRMaW5lKCksIGFyZWEuY29sdW1ucy5lbmRMaW5lKCkpOworICAgIEdyaWRBcmVhIGNsYW1wZWQg
PSBhcmVhOworICAgIGlmIChtX21heFJvd3MpCisgICAgICAgIGNsYW1wZWQucm93cy5jbGFtcCht
X21heFJvd3MpOworICAgIGlmIChtX21heENvbHVtbnMpCisgICAgICAgIGNsYW1wZWQuY29sdW1u
cy5jbGFtcChtX21heENvbHVtbnMpOwogCi0gICAgZm9yIChhdXRvIHJvdyA6IGFyZWEucm93cykg
ewotICAgICAgICBmb3IgKGF1dG8gY29sdW1uIDogYXJlYS5jb2x1bW5zKQorICAgIEFTU0VSVChj
bGFtcGVkLnJvd3MuaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSAmJiBjbGFtcGVkLmNvbHVtbnMuaXNU
cmFuc2xhdGVkRGVmaW5pdGUoKSk7CisgICAgZW5zdXJlR3JpZFNpemUoY2xhbXBlZC5yb3dzLmVu
ZExpbmUoKSwgY2xhbXBlZC5jb2x1bW5zLmVuZExpbmUoKSk7CisKKyAgICBmb3IgKGF1dG8gcm93
IDogY2xhbXBlZC5yb3dzKSB7CisgICAgICAgIGZvciAoYXV0byBjb2x1bW4gOiBjbGFtcGVkLmNv
bHVtbnMpCiAgICAgICAgICAgICBtX2dyaWRbcm93XVtjb2x1bW5dLmFwcGVuZChjaGlsZCk7CiAg
ICAgfQogCi0gICAgc2V0R3JpZEl0ZW1BcmVhKGNoaWxkLCBhcmVhKTsKKyAgICBzZXRHcmlkSXRl
bUFyZWEoY2hpbGQsIGNsYW1wZWQpOworICAgIHJldHVybiBjbGFtcGVkOwogfQogCiB2b2lkIEdy
aWQ6OnNldEV4cGxpY2l0R3JpZFN0YXJ0KHVuc2lnbmVkIHJvd1N0YXJ0LCB1bnNpZ25lZCBjb2x1
bW5TdGFydCkKQEAgLTg1LDYgKzkyLDI2IEBAIHVuc2lnbmVkIEdyaWQ6OmV4cGxpY2l0R3JpZFN0
YXJ0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiAgICAgcmV0dXJu
IGRpcmVjdGlvbiA9PSBGb3JSb3dzID8gbV9leHBsaWNpdFJvd1N0YXJ0IDogbV9leHBsaWNpdENv
bHVtblN0YXJ0OwogfQogCit2b2lkIEdyaWQ6OnNldENsYW1waW5nRm9yU3ViZ3JpZCh1bnNpZ25l
ZCBtYXhSb3dzLCB1bnNpZ25lZCBtYXhDb2x1bW5zKQoreworICAgIG1fbWF4Um93cyA9IG1heFJv
d3M7CisgICAgbV9tYXhDb2x1bW5zID0gbWF4Q29sdW1uczsKK30KKwordm9pZCBHcmlkOjpjbGFt
cEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlkKEdyaWRBcmVhJiBhcmVhKQoreworICAgIGlmICgh
YXJlYS5yb3dzLmlzSW5kZWZpbml0ZSgpKSB7CisgICAgICAgIGlmIChtX21heFJvd3MpCisgICAg
ICAgICAgICBhcmVhLnJvd3MuY2xhbXAobV9tYXhSb3dzKTsKKyAgICAgICAgYXJlYS5yb3dzLnRy
YW5zbGF0ZShleHBsaWNpdEdyaWRTdGFydChGb3JSb3dzKSk7CisgICAgfQorICAgIGlmICghYXJl
YS5jb2x1bW5zLmlzSW5kZWZpbml0ZSgpKSB7CisgICAgICAgIGlmIChtX21heENvbHVtbnMpCisg
ICAgICAgICAgICBhcmVhLmNvbHVtbnMuY2xhbXAobV9tYXhDb2x1bW5zKTsKKyAgICAgICAgYXJl
YS5jb2x1bW5zLnRyYW5zbGF0ZShleHBsaWNpdEdyaWRTdGFydChGb3JDb2x1bW5zKSk7CisgICAg
fQorfQorCiBHcmlkQXJlYSBHcmlkOjpncmlkSXRlbUFyZWEoY29uc3QgUmVuZGVyQm94JiBpdGVt
KSBjb25zdAogewogICAgIEFTU0VSVChtX2dyaWRJdGVtQXJlYS5jb250YWlucygmaXRlbSkpOwpA
QCAtMTYxLDYgKzE4OCw4IEBAIHZvaWQgR3JpZDo6c2V0TmVlZHNJdGVtc1BsYWNlbWVudChib29s
IG5lZWRzSXRlbXNQbGFjZW1lbnQpCiAgICAgbV9hdXRvUmVwZWF0RW1wdHlSb3dzID0gbnVsbHB0
cjsKICAgICBtX2F1dG9SZXBlYXRDb2x1bW5zID0gMDsKICAgICBtX2F1dG9SZXBlYXRSb3dzID0g
MDsKKyAgICBtX21heENvbHVtbnMgPSAwOworICAgIG1fbWF4Um93cyA9IDA7CiB9CiAKIEdyaWRJ
dGVyYXRvcjo6R3JpZEl0ZXJhdG9yKGNvbnN0IEdyaWQmIGdyaWQsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIGZpeGVkVHJhY2tJbmRleCwgdW5zaWduZWQgdmFy
eWluZ1RyYWNrSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAppbmRleCA3MmNhZGY2OGVmNGQz
MjY2Y2UxZjhjZWViZGM5YTQ5ZGYyYmM4MTFiLi4xMWQ5ZTY4ZmI4MTk5ZmJjYTRkOGJhNWIxYmNi
ZjljODMwOTljNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHVuc2lnbmVkIG51bVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24p
IGNvbnN0OwogCiAgICAgdm9pZCBlbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93U2l6
ZSwgdW5zaWduZWQgbWF4aW11bUNvbHVtblNpemUpOwotICAgIHZvaWQgaW5zZXJ0KFJlbmRlckJv
eCYsIGNvbnN0IEdyaWRBcmVhJik7CisgICAgR3JpZEFyZWEgaW5zZXJ0KFJlbmRlckJveCYsIGNv
bnN0IEdyaWRBcmVhJik7CiAKICAgICAvLyBOb3RlIHRoYXQgZWFjaCBpbiBmbG93IGNoaWxkIG9m
IGEgZ3JpZCBjb250YWluZXIgYmVjb21lcyBhIGdyaWQgaXRlbS4gVGhpcyBtZWFucyB0aGF0CiAg
ICAgLy8gdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gZmFsc2UgZm9yIGEgZ3JpZCBjb250YWluZXIg
d2l0aCBvbmx5IG91dCBvZiBmbG93IGNoaWxkcmVuLgpAQCAtNjcsNiArNjcsMTAgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
KSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9SZXBlYXRUcmFja3ModW5zaWduZWQgYXV0b1JlcGVh
dFJvd3MsIHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1bW5zKTsKIAorICAgIHZvaWQgc2V0Q2xhbXBp
bmdGb3JTdWJncmlkKHVuc2lnbmVkIG1heFJvd3MsIHVuc2lnbmVkIG1heENvbHVtbnMpOworCisg
ICAgdm9pZCBjbGFtcEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlkKEdyaWRBcmVhJik7CisKICAg
ICB2b2lkIHNldEF1dG9SZXBlYXRFbXB0eUNvbHVtbnMoc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRU
cmFja0luZGV4U2V0Pik7CiAgICAgdm9pZCBzZXRBdXRvUmVwZWF0RW1wdHlSb3dzKHN0ZDo6dW5p
cXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4pOwogCkBAIC05Miw2ICs5Niw5IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9hdXRvUmVwZWF0Q29sdW1ucyB7IDAgfTsKICAgICB1bnNpZ25l
ZCBtX2F1dG9SZXBlYXRSb3dzIHsgMCB9OwogCisgICAgdW5zaWduZWQgbV9tYXhDb2x1bW5zIHsg
MCB9OworICAgIHVuc2lnbmVkIG1fbWF4Um93cyB7IDAgfTsKKwogICAgIGJvb2wgbV9uZWVkc0l0
ZW1zUGxhY2VtZW50IHsgdHJ1ZSB9OwogCiAgICAgR3JpZEFzTWF0cml4IG1fZ3JpZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCBk
NGY3ODhkYzcwZDI2MDE1NWY1ZDY0ZmQ0NWZiODE5NDM0N2E2NWYxLi5hOTkxZTNjNjAyOWVmNDQy
YWYyNjI5OTFlMzQ0ZmFhMTQ2ZDE3NmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC0xMDIsNiArMTAyLDE5IEBAIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9y
Q2hpbGQoY29uc3QgUmVuCiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY2hp
bGQub3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSA6IGNoaWxk
Lm92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpOwogfQogCiti
b29sIGlzRmxpcHBlZERpcmVjdGlvbihjb25zdCBSZW5kZXJHcmlkJiBncmlkLCBHcmlkVHJhY2tT
aXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICAgIGlmIChkaXJlY3Rpb24gPT0gRm9yQ29s
dW1ucykKKyAgICAgICAgcmV0dXJuICFncmlkLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpOworICAgIHJldHVybiBncmlkLnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUo
KTsKK30KKworYm9vbCBpc1N1YmdyaWRSZXZlcnNlZERpcmVjdGlvbihjb25zdCBSZW5kZXJHcmlk
JiBncmlkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gb3V0ZXJEaXJlY3Rpb24sIGNvbnN0IFJl
bmRlckdyaWQmIHN1YmdyaWQpCit7CisgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGNoaWxk
RGlyZWN0aW9uID0gZmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoZ3JpZCwgc3ViZ3JpZCwgb3V0
ZXJEaXJlY3Rpb24pOworICAgIHJldHVybiBpc0ZsaXBwZWREaXJlY3Rpb24oZ3JpZCwgb3V0ZXJE
aXJlY3Rpb24pICE9IGlzRmxpcHBlZERpcmVjdGlvbihzdWJncmlkLCBjaGlsZERpcmVjdGlvbik7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEdyaWRMYXlvdXRGdW5jdGlvbnMKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlv
dXRGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rp
b25zLmgKaW5kZXggNWRiM2Y1Zjk4Mjk1MzVlZDNhNzMyYzI5NGI3ZGEwNjBiYmQyZDFiZC4uODYx
N2MyYzEyM2QwMWIyNmJkODJmNDMwZmM1NTg5OTUxMzFhYmRkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5oCkBAIC00NSw2ICs0NSw5IEBAIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChjb25zdCBS
ZW5kZXJHcmlkJiwgY29uc3QgUmVuCiBib29sIGhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tD
b250ZW50U2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbik7CiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdDb250YWluaW5nQmxv
Y2tDb250ZW50U2l6ZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbik7CiAKK2Jvb2wgaXNGbGlwcGVkRGlyZWN0aW9uKGNvbnN0IFJlbmRlckdyaWQmLCBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOworYm9vbCBpc1N1YmdyaWRSZXZlcnNlZERpcmVjdGlv
bihjb25zdCBSZW5kZXJHcmlkJiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIG91dGVyRGlyZWN0
aW9uLCBjb25zdCBSZW5kZXJHcmlkJiBzdWJncmlkKTsKKwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggN2ZmYjYy
Mzc0OGYwMGY2NmZiN2JlODVmYjllOTUzM2U1NzQxMWVmMS4uZWI5MWZmZDMyNDEzNjI1YjJkNzk0
ZDQwMjYxM2NlOWNmMzRkMDNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcApAQCAtNDQ2LDggKzQ0Niw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNp
Y0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvCiAgICAgTGF5
b3V0VW5pdCBjaGlsZE1heFdpZHRoOwogICAgIGJvb2wgaGFkRXhjbHVkZWRDaGlsZHJlbiA9IGNv
bXB1dGVQcmVmZXJyZWRXaWR0aHNGb3JFeGNsdWRlZENoaWxkcmVuKGNoaWxkTWluV2lkdGgsIGNo
aWxkTWF4V2lkdGgpOwogCi0gICAgR3JpZCBncmlkKGNvbnN0X2Nhc3Q8UmVuZGVyR3JpZCY+KCp0
aGlzKSk7Ci0gICAgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtIGFsZ29yaXRobSh0aGlzLCBncmlk
KTsKKyAgICBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gYWxnb3JpdGhtKHRoaXMsIGNvbnN0X2Nh
c3Q8R3JpZCY+KG1fZ3JpZCkpOwogICAgIHBsYWNlSXRlbXNPbkdyaWQoYWxnb3JpdGhtLCBzdGQ6
Om51bGxvcHQpOwogCiAgICAgcGVyZm9ybUdyaWRJdGVtc1ByZUxheW91dChhbGdvcml0aG0pOwpA
QCAtNjQxLDcgKzY0MCw2IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZChHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG0mIGFsZ29yaXRobSwgc3RkOjpvcHRpCiAgICAgR3JpZCYgZ3Jp
ZCA9IGFsZ29yaXRobS5tdXRhYmxlR3JpZCgpOwogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1
bW5zID0gY29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudChGb3JDb2x1bW5zLCBhdmFpbGFibGVM
b2dpY2FsV2lkdGgpOwogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRSb3dzID0gY29tcHV0ZUF1dG9S
ZXBlYXRUcmFja3NDb3VudChGb3JSb3dzLCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2Vu
dGFnZUNvbXB1dGF0aW9uKCkpOwotCiAgICAgYXV0b1JlcGVhdFJvd3MgPSBjbGFtcEF1dG9SZXBl
YXRUcmFja3MoRm9yUm93cywgYXV0b1JlcGVhdFJvd3MpOwogICAgIGF1dG9SZXBlYXRDb2x1bW5z
ID0gY2xhbXBBdXRvUmVwZWF0VHJhY2tzKEZvckNvbHVtbnMsIGF1dG9SZXBlYXRDb2x1bW5zKTsK
IApAQCAtNjcwLDEwICs2NjgsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQo
R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiBhbGdvcml0aG0sIHN0ZDo6b3B0aQogICAgICAgICAg
ICAgY2hpbGQtPnNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdo
dChzdGQ6Om51bGxvcHQpOwogCiAgICAgICAgIEdyaWRBcmVhIGFyZWEgPSBncmlkLmdyaWRJdGVt
QXJlYSgqY2hpbGQpOwotICAgICAgICBpZiAoIWFyZWEucm93cy5pc0luZGVmaW5pdGUoKSkKLSAg
ICAgICAgICAgIGFyZWEucm93cy50cmFuc2xhdGUoZ3JpZC5leHBsaWNpdEdyaWRTdGFydChGb3JS
b3dzKSk7Ci0gICAgICAgIGlmICghYXJlYS5jb2x1bW5zLmlzSW5kZWZpbml0ZSgpKQotICAgICAg
ICAgICAgYXJlYS5jb2x1bW5zLnRyYW5zbGF0ZShncmlkLmV4cGxpY2l0R3JpZFN0YXJ0KEZvckNv
bHVtbnMpKTsKKyAgICAgICAgZ3JpZC5jbGFtcEFuZFRyYW5zbGF0ZVRvSW1wbGljaXRHcmlkKGFy
ZWEpOwogCiAgICAgICAgIGlmIChhcmVhLnJvd3MuaXNJbmRlZmluaXRlKCkgfHwgYXJlYS5jb2x1
bW5zLmlzSW5kZWZpbml0ZSgpKSB7CiAgICAgICAgICAgICBncmlkLnNldEdyaWRJdGVtQXJlYSgq
Y2hpbGQsIGFyZWEpOwpAQCAtNjkwLDggKzY4NSw4IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJ
dGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIGFsZ29yaXRobSwgc3RkOjpvcHRp
CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmIChncmlkLmhhc0dyaWRJdGVtcygpKSB7Ci0g
ICAgICAgIEFTU0VSVChncmlkLm51bVRyYWNrcyhGb3JSb3dzKSA+PSBHcmlkUG9zaXRpb25zUmVz
b2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KHN0eWxlKCksIGdyaWQuYXV0b1JlcGVhdFRyYWNr
cyhGb3JSb3dzKSkpOwotICAgICAgICBBU1NFUlQoZ3JpZC5udW1UcmFja3MoRm9yQ29sdW1ucykg
Pj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChzdHlsZSgp
LCBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucykpKTsKKyAgICAgICAgQVNTRVJUKGdy
aWQubnVtVHJhY2tzKEZvclJvd3MpID49IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRH
cmlkUm93Q291bnQoKnRoaXMpKTsKKyAgICAgICAgQVNTRVJUKGdyaWQubnVtVHJhY2tzKEZvckNv
bHVtbnMpID49IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQo
KnRoaXMpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNzQ1LDMzICs3NDAsMzUgQEAgdm9pZCBSZW5k
ZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3JpZCYgZ3JpZCkg
Y29uc3QKICAgICBPcmRlckl0ZXJhdG9yUG9wdWxhdG9yIHBvcHVsYXRvcihncmlkLm9yZGVySXRl
cmF0b3IoKSk7CiAgICAgdW5zaWduZWQgZXhwbGljaXRSb3dTdGFydCA9IDA7CiAgICAgdW5zaWdu
ZWQgZXhwbGljaXRDb2x1bW5TdGFydCA9IDA7Ci0gICAgdW5zaWduZWQgYXV0b1JlcGVhdFJvd3Mg
PSBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yUm93cyk7Ci0gICAgdW5zaWduZWQgYXV0b1JlcGVh
dENvbHVtbnMgPSBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucyk7Ci0gICAgdW5zaWdu
ZWQgbWF4aW11bVJvd0luZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRS
b3dDb3VudChzdHlsZSgpLCBhdXRvUmVwZWF0Um93cyk7Ci0gICAgdW5zaWduZWQgbWF4aW11bUNv
bHVtbkluZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3Vu
dChzdHlsZSgpLCBhdXRvUmVwZWF0Q29sdW1ucyk7CisgICAgdW5zaWduZWQgbWF4aW11bVJvd0lu
ZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudCgqdGhpcyk7
CisgICAgdW5zaWduZWQgbWF4aW11bUNvbHVtbkluZGV4ID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCgqdGhpcyk7CiAKICAgICBmb3IgKFJlbmRlckJveCog
Y2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
Z0JveCgpKSB7CiAgICAgICAgIGlmICghcG9wdWxhdG9yLmNvbGxlY3RDaGlsZCgqY2hpbGQpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBHcmlkU3BhbiByb3dQb3Np
dGlvbnMgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0
eWxlKHN0eWxlKCksICpjaGlsZCwgRm9yUm93cywgYXV0b1JlcGVhdFJvd3MpOwotICAgICAgICBp
ZiAoIXJvd1Bvc2l0aW9ucy5pc0luZGVmaW5pdGUoKSkgewotICAgICAgICAgICAgZXhwbGljaXRS
b3dTdGFydCA9IHN0ZDo6bWF4PGludD4oZXhwbGljaXRSb3dTdGFydCwgLXJvd1Bvc2l0aW9ucy51
bnRyYW5zbGF0ZWRTdGFydExpbmUoKSk7Ci0gICAgICAgICAgICBtYXhpbXVtUm93SW5kZXggPSBz
dGQ6Om1heDxpbnQ+KG1heGltdW1Sb3dJbmRleCwgcm93UG9zaXRpb25zLnVudHJhbnNsYXRlZEVu
ZExpbmUoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBHcm93IHRoZSBncmlk
IGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUgcm93IHNwYW4sIGdldHRpbmcgdGhlIGxhcmdlc3Qg
c3VjaCBzcGFuLgotICAgICAgICAgICAgdW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRpb25z
UmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oKmNoaWxkLCBGb3JSb3dzKTsKLSAg
ICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1heGltdW1Sb3dJbmRleCwgc3Bh
blNpemUpOworICAgICAgICBHcmlkU3BhbiByb3dQb3NpdGlvbnMgPSBHcmlkUG9zaXRpb25zUmVz
b2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKCpjaGlsZCwgRm9yUm93cyk7Cisg
ICAgICAgIGlmICghaXNTdWJncmlkUm93cygpKSB7CisgICAgICAgICAgICBpZiAoIXJvd1Bvc2l0
aW9ucy5pc0luZGVmaW5pdGUoKSkgeworICAgICAgICAgICAgICAgIGV4cGxpY2l0Um93U3RhcnQg
PSBzdGQ6Om1heDxpbnQ+KGV4cGxpY2l0Um93U3RhcnQsIC1yb3dQb3NpdGlvbnMudW50cmFuc2xh
dGVkU3RhcnRMaW5lKCkpOworICAgICAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6
bWF4PGludD4obWF4aW11bVJvd0luZGV4LCByb3dQb3NpdGlvbnMudW50cmFuc2xhdGVkRW5kTGlu
ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gR3JvdyB0aGUg
Z3JpZCBmb3IgaXRlbXMgd2l0aCBhIGRlZmluaXRlIHJvdyBzcGFuLCBnZXR0aW5nIHRoZSBsYXJn
ZXN0IHN1Y2ggc3Bhbi4KKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBzcGFuU2l6ZSA9IEdyaWRQ
b3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRvUGxhY2VkSXRlbSgqY2hpbGQsIEZvclJv
d3MpOworICAgICAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4KG1heGltdW1S
b3dJbmRleCwgc3BhblNpemUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAg
R3JpZFNwYW4gY29sdW1uUG9zaXRpb25zID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZl
R3JpZFBvc2l0aW9uc0Zyb21TdHlsZShzdHlsZSgpLCAqY2hpbGQsIEZvckNvbHVtbnMsIGF1dG9S
ZXBlYXRDb2x1bW5zKTsKLSAgICAgICAgaWYgKCFjb2x1bW5Qb3NpdGlvbnMuaXNJbmRlZmluaXRl
KCkpIHsKLSAgICAgICAgICAgIGV4cGxpY2l0Q29sdW1uU3RhcnQgPSBzdGQ6Om1heDxpbnQ+KGV4
cGxpY2l0Q29sdW1uU3RhcnQsIC1jb2x1bW5Qb3NpdGlvbnMudW50cmFuc2xhdGVkU3RhcnRMaW5l
KCkpOwotICAgICAgICAgICAgbWF4aW11bUNvbHVtbkluZGV4ID0gc3RkOjptYXg8aW50PihtYXhp
bXVtQ29sdW1uSW5kZXgsIGNvbHVtblBvc2l0aW9ucy51bnRyYW5zbGF0ZWRFbmRMaW5lKCkpOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gR3JvdyB0aGUgZ3JpZCBmb3IgaXRlbXMg
d2l0aCBhIGRlZmluaXRlIGNvbHVtbiBzcGFuLCBnZXR0aW5nIHRoZSBsYXJnZXN0IHN1Y2ggc3Bh
bi4KLSAgICAgICAgICAgIHVuc2lnbmVkIHNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKCpjaGlsZCwgRm9yQ29sdW1ucyk7Ci0gICAgICAg
ICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heChtYXhpbXVtQ29sdW1uSW5kZXgsIHNw
YW5TaXplKTsKKyAgICAgICAgR3JpZFNwYW4gY29sdW1uUG9zaXRpb25zID0gR3JpZFBvc2l0aW9u
c1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZSgqY2hpbGQsIEZvckNvbHVt
bnMpOworICAgICAgICBpZiAoIWlzU3ViZ3JpZENvbHVtbnMoKSkgeworICAgICAgICAgICAgaWYg
KCFjb2x1bW5Qb3NpdGlvbnMuaXNJbmRlZmluaXRlKCkpIHsKKyAgICAgICAgICAgICAgICBleHBs
aWNpdENvbHVtblN0YXJ0ID0gc3RkOjptYXg8aW50PihleHBsaWNpdENvbHVtblN0YXJ0LCAtY29s
dW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZFN0YXJ0TGluZSgpKTsKKyAgICAgICAgICAgICAgICBt
YXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heDxpbnQ+KG1heGltdW1Db2x1bW5JbmRleCwgY29s
dW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZEVuZExpbmUoKSk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIC8vIEdyb3cgdGhlIGdyaWQgZm9yIGl0ZW1zIHdpdGggYSBkZWZp
bml0ZSBjb2x1bW4gc3BhbiwgZ2V0dGluZyB0aGUgbGFyZ2VzdCBzdWNoIHNwYW4uCisgICAgICAg
ICAgICAgICAgdW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5T
aXplRm9yQXV0b1BsYWNlZEl0ZW0oKmNoaWxkLCBGb3JDb2x1bW5zKTsKKyAgICAgICAgICAgICAg
ICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1heChtYXhpbXVtQ29sdW1uSW5kZXgsIHNwYW5T
aXplKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGdyaWQuc2V0R3JpZEl0
ZW1BcmVhKCpjaGlsZCwgeyByb3dQb3NpdGlvbnMsIGNvbHVtblBvc2l0aW9ucyB9KTsKQEAgLTc3
OSw2ICs3NzYsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3Jk
ZXJJdGVyYXRvcihHcmlkJiBncmlkKSBjb25zdAogCiAgICAgZ3JpZC5zZXRFeHBsaWNpdEdyaWRT
dGFydChleHBsaWNpdFJvd1N0YXJ0LCBleHBsaWNpdENvbHVtblN0YXJ0KTsKICAgICBncmlkLmVu
c3VyZUdyaWRTaXplKG1heGltdW1Sb3dJbmRleCArIGV4cGxpY2l0Um93U3RhcnQsIG1heGltdW1D
b2x1bW5JbmRleCArIGV4cGxpY2l0Q29sdW1uU3RhcnQpOworICAgIGdyaWQuc2V0Q2xhbXBpbmdG
b3JTdWJncmlkKGlzU3ViZ3JpZFJvd3MoKSA/IG1heGltdW1Sb3dJbmRleCA6IDAsIGlzU3ViZ3Jp
ZENvbHVtbnMoKSA/IG1heGltdW1Db2x1bW5JbmRleCA6IDApOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8R3JpZEFyZWE+IFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBv
c2l0aW9uc091dHNpZGVHcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0s
IEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBzcGVjaWZpZWREaXJlY3Rpb24sIGNvbnN0IEdyaWRT
cGFuJiBzcGVjaWZpZWRQb3NpdGlvbnMpIGNvbnN0CkBAIC04MTIsNyArODEwLDcgQEAgdm9pZCBS
ZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdyaWQs
IGNvbnN0IFZlY3RvcjxSZW4KICAgICAgICAgaWYgKCFlbXB0eUdyaWRBcmVhKQogICAgICAgICAg
ICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9u
c091dHNpZGVHcmlkKGdyaWQsICphdXRvR3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNE
aXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25zKTsKIAotICAgICAgICBncmlkLmluc2VydCgq
YXV0b0dyaWRJdGVtLCAqZW1wdHlHcmlkQXJlYSk7CisgICAgICAgICplbXB0eUdyaWRBcmVhID0g
Z3JpZC5pbnNlcnQoKmF1dG9HcmlkSXRlbSwgKmVtcHR5R3JpZEFyZWEpOwogCiAgICAgICAgIGlm
ICghaXNHcmlkQXV0b0Zsb3dEZW5zZSkKICAgICAgICAgICAgIG1pbm9yQXhpc0N1cnNvcnMuc2V0
KG1ham9yQXhpc0luaXRpYWxQb3NpdGlvbiwgaXNGb3JDb2x1bW5zID8gZW1wdHlHcmlkQXJlYS0+
cm93cy5zdGFydExpbmUoKSA6IGVtcHR5R3JpZEFyZWEtPmNvbHVtbnMuc3RhcnRMaW5lKCkpOwpA
QCAtMTYxMCwxMSArMTYwOCwyOSBAQCBMYXlvdXRVbml0IFJlbmRlckdyaWQ6OnJlc29sdmVBdXRv
RW5kR3JpZFBvc2l0aW9uKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlYwogICAgIHJldHVy
biBjbGllbnRMb2dpY2FsV2lkdGgoKTsKIH0KIAorYm9vbCBSZW5kZXJHcmlkOjppc1N1YmdyaWQo
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3sKKyAgICBpZiAoaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8g
IXN0eWxlKCkuZ3JpZFN1YmdyaWRDb2x1bW5zKCkgOiAhc3R5bGUoKS5ncmlkU3ViZ3JpZFJvd3Mo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpczxSZW5kZXJHcmlkPihwYXJl
bnQoKSk7Cit9CisKK2Jvb2wgUmVuZGVyR3JpZDo6aXNTdWJncmlkUm93cygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGlzU3ViZ3JpZChGb3JSb3dzKTsKK30KK2Jvb2wgUmVuZGVyR3JpZDo6aXNTdWJn
cmlkQ29sdW1ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzU3ViZ3JpZChGb3JDb2x1bW5zKTsK
K30KKwogTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZsb3dD
aGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uKQogewogICAgIEFTU0VSVChjaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CiAg
ICAgYm9vbCBpc1Jvd0F4aXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKLSAgICBHcmlkU3Bh
biBzcGFuID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21T
dHlsZShzdHlsZSgpLCBjaGlsZCwgZGlyZWN0aW9uLCBhdXRvUmVwZWF0Q291bnRGb3JEaXJlY3Rp
b24oZGlyZWN0aW9uKSk7CisgICAgR3JpZFNwYW4gc3BhbiA9IEdyaWRQb3NpdGlvbnNSZXNvbHZl
cjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIGRpcmVjdGlvbik7CiAgICAg
aWYgKHNwYW4uaXNJbmRlZmluaXRlKCkpCiAgICAgICAgIHJldHVybiBpc1Jvd0F4aXMgPyBjbGll
bnRMb2dpY2FsV2lkdGgoKSA6IGNsaWVudExvZ2ljYWxIZWlnaHQoKTsKIApAQCAtMTkyMCw3ICsx
OTM2LDcgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6bnVtVHJhY2tzKEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEdyaWQmIGcKICAgICAgICAgcmV0dXJuIGdyaWQubnVt
VHJhY2tzKEZvclJvd3MpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc3RpbGwgcmVxdWlyZXMga25v
d2xlZGdlIGFib3V0IG1fZ3JpZCBpbnRlcm5hbHMuCi0gICAgcmV0dXJuIGdyaWQubnVtVHJhY2tz
KEZvclJvd3MpID8gZ3JpZC5udW1UcmFja3MoRm9yQ29sdW1ucykgOiBHcmlkUG9zaXRpb25zUmVz
b2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KHN0eWxlKCksIGdyaWQuYXV0b1JlcGVhdFRy
YWNrcyhGb3JDb2x1bW5zKSk7CisgICAgcmV0dXJuIGdyaWQubnVtVHJhY2tzKEZvclJvd3MpID8g
Z3JpZC5udW1UcmFja3MoRm9yQ29sdW1ucykgOiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxp
Y2l0R3JpZENvbHVtbkNvdW50KCp0aGlzKTsKIH0KIAogdm9pZCBSZW5kZXJHcmlkOjpwYWludENo
aWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KQpAQCAtMTk3Nyw0ICsx
OTkzLDYyIEBAIGJvb2wgUmVuZGVyR3JpZDo6aGFzQXV0b1NpemVJblJvd0F4aXMoY29uc3QgUmVu
ZGVyQm94JiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA/IGNoaWxkLnN0eWxlKCkud2lkdGgoKS5pc0F1dG8oKSA6IGNoaWxkLnN0eWxlKCkuaGVpZ2h0
KCkuaXNBdXRvKCk7CiB9CiAKK2Jvb2wgUmVuZGVyR3JpZDo6Y29tcHV0ZUdyaWRTcGFuRm9yT3V0
T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbiwgaW50JiBzdGFydExpbmUsIGJvb2wmIHN0YXJ0SXNBdXRvLCBpbnQmIGVu
ZExpbmUsIGJvb2wmIGVuZElzQXV0bykgY29uc3QKK3sKKyAgICBBU1NFUlQoY2hpbGQuaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkpOworICAgIGludCBsYXN0TGluZSA9IG51bVRyYWNrcyhkaXJlY3Rp
b24sIG1fZ3JpZCk7CisgICAgR3JpZFNwYW4gc3BhbiA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6
cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY2hpbGQsIGRpcmVjdGlvbik7CisgICAgaWYg
KHNwYW4uaXNJbmRlZmluaXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVuc2ln
bmVkIGV4cGxpY2l0U3RhcnQgPSBtX2dyaWQuZXhwbGljaXRHcmlkU3RhcnQoZGlyZWN0aW9uKTsK
KyAgICBzdGFydExpbmUgPSBzcGFuLnVudHJhbnNsYXRlZFN0YXJ0TGluZSgpICsgZXhwbGljaXRT
dGFydDsKKyAgICBlbmRMaW5lID0gc3Bhbi51bnRyYW5zbGF0ZWRFbmRMaW5lKCkgKyBleHBsaWNp
dFN0YXJ0OworCisgICAgR3JpZFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBkaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucyA/IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Db2x1bW5TdGFydCgpIDogY2hpbGQu
c3R5bGUoKS5ncmlkSXRlbVJvd1N0YXJ0KCk7CisgICAgR3JpZFBvc2l0aW9uIGVuZFBvc2l0aW9u
ID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5zdHlsZSgpLmdyaWRJdGVtQ29sdW1u
RW5kKCkgOiBjaGlsZC5zdHlsZSgpLmdyaWRJdGVtUm93RW5kKCk7CisKKyAgICBzdGFydElzQXV0
byA9IHN0YXJ0UG9zaXRpb24uaXNBdXRvKCkgfHwgc3RhcnRMaW5lIDwgMCB8fCBzdGFydExpbmUg
PiBsYXN0TGluZTsKKyAgICBlbmRJc0F1dG8gPSBlbmRQb3NpdGlvbi5pc0F1dG8oKSB8fCBlbmRM
aW5lIDwgMCB8fCBlbmRMaW5lID4gbGFzdExpbmU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0dy
aWRTcGFuIFJlbmRlckdyaWQ6OmdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY29uc3QgUmVuZGVy
Qm94JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3sK
KyAgICBpbnQgbGFzdExpbmUgPSBudW1UcmFja3MoZGlyZWN0aW9uLCBtX2dyaWQpOworICAgIGlu
dCBzdGFydExpbmUsIGVuZExpbmU7CisgICAgYm9vbCBzdGFydElzQXV0bywgZW5kSXNBdXRvOwor
ICAgIGlmICghY29tcHV0ZUdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY2hpbGQsIGRpcmVjdGlv
biwgc3RhcnRMaW5lLCBzdGFydElzQXV0bywgZW5kTGluZSwgZW5kSXNBdXRvKSkKKyAgICAgICAg
cmV0dXJuIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbigwLCBsYXN0TGluZSk7
CisgICAgcmV0dXJuIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihzdGFydElz
QXV0byA/IDAgOiBzdGFydExpbmUsIGVuZElzQXV0byA/IGxhc3RMaW5lIDogZW5kTGluZSk7Cit9
CisKK0dyaWRTcGFuIFJlbmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94
JiBjaGlsZCwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK3sKKyAg
ICBBU1NFUlQoaXM8UmVuZGVyR3JpZD4oY2hpbGQucGFyZW50KCkpKTsKKworICAgIFJlbmRlckdy
aWQqIHJlbmRlckdyaWQgPSBkb3duY2FzdDxSZW5kZXJHcmlkPihjaGlsZC5wYXJlbnQoKSk7Cisg
ICAgLy8gfGRpcmVjdGlvbnwgaXMgc3BlY2lmaWVkIHJlbGF0aXZlIHRvIHRoaXMgZ3JpZCwgc3dp
dGNoIGl0IGlmIHxjaGlsZHwncyBkaXJlY3QgcGFyZW50IGdyaWQKKyAgICAvLyBpcyB1c2luZyBh
IGRpZmZlcmVudCB3cml0aW5nIG1vZGUuCisgICAgZGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0
aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKnRoaXMsICpyZW5kZXJHcmlkLCBkaXJl
Y3Rpb24pOworICAgIEdyaWRTcGFuIHNwYW4gPSBjaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSA/IHJlbmRlckdyaWQtPmdyaWRTcGFuRm9yT3V0T2ZGbG93Q2hpbGQoY2hpbGQsIGRpcmVjdGlv
bikgOiByZW5kZXJHcmlkLT5jdXJyZW50R3JpZCgpLmdyaWRJdGVtU3BhbihjaGlsZCwgZGlyZWN0
aW9uKTsKKworICAgIHdoaWxlIChyZW5kZXJHcmlkICE9IHRoaXMpIHsKKyAgICAgICAgQVNTRVJU
KGlzPFJlbmRlckdyaWQ+KHJlbmRlckdyaWQtPnBhcmVudCgpKSk7CisgICAgICAgIFJlbmRlckdy
aWQqIHBhcmVudCA9IGRvd25jYXN0PFJlbmRlckdyaWQ+KHJlbmRlckdyaWQtPnBhcmVudCgpKTsK
KworICAgICAgICBib29sIGlzU3ViZ3JpZCA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gcmVu
ZGVyR3JpZC0+aXNTdWJncmlkQ29sdW1ucygpIDogcmVuZGVyR3JpZC0+aXNTdWJncmlkUm93cygp
OworCisgICAgICAgIGRpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURp
cmVjdGlvbkZvckNoaWxkKCpwYXJlbnQsICpyZW5kZXJHcmlkLCBkaXJlY3Rpb24pOworCisgICAg
ICAgIEdyaWRTcGFuIHBhcmVudFNwYW4gPSByZW5kZXJHcmlkLT5pc091dE9mRmxvd1Bvc2l0aW9u
ZWQoKSA/IHBhcmVudC0+Z3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZCgqcmVuZGVyR3JpZCwgZGly
ZWN0aW9uKSA6ICBwYXJlbnQtPmN1cnJlbnRHcmlkKCkuZ3JpZEl0ZW1TcGFuKCpyZW5kZXJHcmlk
LCBkaXJlY3Rpb24pOworICAgICAgICBpZiAoaXNTdWJncmlkKQorICAgICAgICAgICAgc3Bhbi50
cmFuc2xhdGVUbyhwYXJlbnRTcGFuLCBHcmlkTGF5b3V0RnVuY3Rpb25zOjppc1N1YmdyaWRSZXZl
cnNlZERpcmVjdGlvbigqcGFyZW50LCBkaXJlY3Rpb24sICpyZW5kZXJHcmlkKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHNwYW4gPSBwYXJlbnRTcGFuOworICAgICAgICByZW5kZXJHcmlk
ID0gcGFyZW50OworICAgIH0KKyAgICByZXR1cm4gc3BhbjsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggZTIzMGIxM2Rh
OGEyZGNlZTk0YTk3MTZkNDEwZDg2MTQ5YWVkOWFiNC4uMzE3NmQ1Y2ZkOGFhMTgxYzFjODkzMTVi
ZmM1MGM3N2U2NjE3OGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBA
IC04Miw2ICs4MiwxOSBAQCBwdWJsaWM6CiAKICAgICBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRh
IGNvbnRlbnRBbGlnbm1lbnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAorICAg
IC8vIENvbXB1dGVzIHRoZSBzcGFuIHJlbGF0aXZlIHRvIHRoaXMgUmVuZGVyR3JpZCwgZXZlbiBp
ZiB0aGUgUmVuZGVyQm94IGlzIGEgY2hpbGQKKyAgICAvLyBvZiBhIGRlc2NlbmRhbnQgc3ViZ3Jp
ZC4KKyAgICBHcmlkU3BhbiBncmlkU3BhbkZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYsIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CisKKyAgICBib29sIGlzU3ViZ3JpZFJvd3MoKSBj
b25zdDsKKyAgICBib29sIGlzU3ViZ3JpZENvbHVtbnMoKSBjb25zdDsKKyAgICBib29sIGlzU3Vi
Z3JpZChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OworCisgICAgY29uc3QgR3JpZCYg
Y3VycmVudEdyaWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ3JpZDsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgSXRlbVBvc2l0aW9uIHNlbGZBbGlnbm1lbnROb3JtYWxCZWhhdmlv
cihjb25zdCBSZW5kZXJCb3gqIGNoaWxkID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGUKICAgICB7
CkBAIC0xNTAsOCArMTYzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExvZ2ljYWxQb3NpdGlv
bkZvckNoaWxkKFJlbmRlckJveCYpIGNvbnN0OwogICAgIHZvaWQgc2V0TG9naWNhbE9mZnNldEZv
ckNoaWxkKFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAgICAg
TGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKLSAgICBHcmlkQXJlYSBjYWNoZWRHcmlkQXJlYShj
b25zdCBSZW5kZXJCb3gmKSBjb25zdDsKLSAgICBHcmlkU3BhbiBjYWNoZWRHcmlkU3Bhbihjb25z
dCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OwogCiAgICAgTGF5
b3V0VW5pdCBncmlkQXJlYUJyZWFkdGhGb3JDaGlsZEluY2x1ZGluZ0FsaWdubWVudE9mZnNldHMo
Y29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIApAQCAt
MTkzLDYgKzIwNCw5IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8UmVuZGVyQm94Kj4gY29tcHV0
ZUFzcGVjdFJhdGlvRGVwZW5kZW50QW5kQmFzZWxpbmVJdGVtcygpOwogCisgICAgR3JpZFNwYW4g
Z3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24pIGNvbnN0OworICAgIGJvb2wgY29tcHV0ZUdyaWRTcGFuRm9yT3V0T2ZGbG93
Q2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBpbnQmLCBi
b29sJiwgaW50JiwgYm9vbCYpIGNvbnN0OworCiAgICAgR3JpZCBtX2dyaWQ7CiAKICAgICBHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG0gbV90cmFja1NpemluZ0FsZ29yaXRobTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKaW5kZXggYjdlYmQxZDk2MWRlODgyNmZiODMw
MzMwOWI4ZTYzNTJmMjBmOWVhYi4uZWUzYjkyZmMwZmYzYjkwMGRiOTljOTI1MjcxMGVmN2ZlMjFi
OWRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgaW50ZWdlclNwYW4oKSBjb25zdAog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGlzVHJhbnNsYXRlZERlZmluaXRlKCkpOworICAgICAgICBB
U1NFUlQoaXNUcmFuc2xhdGVkRGVmaW5pdGUoKSB8fCBtX3R5cGUgPT0gVW50cmFuc2xhdGVkRGVm
aW5pdGUpOwogICAgICAgICByZXR1cm4gbV9lbmRMaW5lIC0gbV9zdGFydExpbmU7CiAgICAgfQog
CkBAIC0xNDEsNiArMTQxLDMxIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fZW5kTGluZSA+
IDApOwogICAgIH0KIAorICAgIC8vIE1vdmVzIHRoaXMgc3BhbiB0byBiZSBpbiB0aGUgc2FtZSBj
b29yZGluYXRlIHNwYWNlIGFzIHxwYXJlbnR8LgorICAgIC8vIElmIHJldmVyc2UgaXMgc3BlY2lm
aWVkLCB0aGVuIHN3YXBzIHRoZSBkaXJlY3Rpb24gdG8gaGFuZGxlIFJUTC9MVFIgY2hhbmdlcy4K
KyAgICB2b2lkIHRyYW5zbGF0ZVRvKGNvbnN0IEdyaWRTcGFuJiBwYXJlbnQsIGJvb2wgcmV2ZXJz
ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNsYXRlZERlZmluaXRlKTsK
KyAgICAgICAgQVNTRVJUKHBhcmVudC5tX3R5cGUgPT0gVHJhbnNsYXRlZERlZmluaXRlKTsKKyAg
ICAgICAgaWYgKHJldmVyc2UpIHsKKyAgICAgICAgICAgIGludCBzdGFydCA9IG1fc3RhcnRMaW5l
OworICAgICAgICAgICAgbV9zdGFydExpbmUgPSBwYXJlbnQuaW50ZWdlclNwYW4oKSAtIG1fZW5k
TGluZSArIHBhcmVudC5zdGFydExpbmUoKTsKKyAgICAgICAgICAgIG1fZW5kTGluZSA9IHBhcmVu
dC5pbnRlZ2VyU3BhbigpIC0gc3RhcnQgKyBwYXJlbnQuc3RhcnRMaW5lKCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBtX3N0YXJ0TGluZSArPSBwYXJlbnQubV9zdGFydExpbmU7Cisg
ICAgICAgICAgICBtX2VuZExpbmUgKz0gcGFyZW50Lm1fc3RhcnRMaW5lOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdm9pZCBjbGFtcChpbnQgbWF4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSAhPSBJbmRlZmluaXRlKTsKKyAgICAgICAgbV9zdGFydExpbmUgPSBzdGQ6Om1heChtX3N0
YXJ0TGluZSwgMCk7CisgICAgICAgIG1fZW5kTGluZSA9IHN0ZDo6bWF4KHN0ZDo6bWluKG1fZW5k
TGluZSwgbWF4KSwgMSk7CisgICAgICAgIGlmIChtX3N0YXJ0TGluZSA+PSBtX2VuZExpbmUpCisg
ICAgICAgICAgICBtX3N0YXJ0TGluZSA9IG1fZW5kTGluZSAtIDE7CisgICAgfQorCiBwcml2YXRl
OgogCiAgICAgZW51bSBHcmlkU3BhblR5cGUge1VudHJhbnNsYXRlZERlZmluaXRlLCBUcmFuc2xh
dGVkRGVmaW5pdGUsIEluZGVmaW5pdGV9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcAppbmRleCAzM2M3MDNjNWYw
NmZhNjVhM2Y2ZmJkYTJkZTc2ZGVhM2ZiNjFiOGRlLi42N2JiMzZlYWM0NjAxMThiYTU0MGRkNWE5
Yzg4YjllNjllODVmYTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiR3JpZEFyZWEuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKKyNpbmNsdWRlICJS
ZW5kZXJHcmlkLmgiCiAjaW5jbHVkZSA8Y3N0ZGxpYj4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMTUyLDYgKzE1MywxOCBAQCB1bnNpZ25lZCBOYW1lZExpbmVDb2xsZWN0aW9uOjpmaXJzdFBv
c2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjptaW4oZmlyc3RFeHBsaWNpdFBvc2l0aW9u
KCksIG1faW1wbGljaXROYW1lZExpbmVzSW5kZXhlcy0+YXQoZmlyc3RMaW5lKSk7CiB9CiAKKy8v
IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZ3JpZC0yLyNpbmRlZmluaXRlLWdyaWQtc3Bh
bgorc3RhdGljIGJvb2wgaXNJbmRlZmluaXRlU3BhbihHcmlkUG9zaXRpb24mIGluaXRpYWxQb3Np
dGlvbiwgR3JpZFBvc2l0aW9uJiBmaW5hbFBvc2l0aW9uKQoreworICAgIGlmICghaW5pdGlhbFBv
c2l0aW9uLmlzQXV0bygpICYmICFmaW5hbFBvc2l0aW9uLmlzQXV0bygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoaW5pdGlhbFBvc2l0aW9uLmlzU3BhbigpIHx8IGZpbmFsUG9z
aXRpb24uaXNTcGFuKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVl
OworfQorCiBzdGF0aWMgdm9pZCBhZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJl
bmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIEdy
aWRQb3NpdGlvbiYgaW5pdGlhbFBvc2l0aW9uLCBHcmlkUG9zaXRpb24mIGZpbmFsUG9zaXRpb24p
CiB7CiAgICAgYm9vbCBpc0ZvckNvbHVtbnMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1uczsKQEAg
LTE2OCwyMSArMTgxLDUyIEBAIHN0YXRpYyB2b2lkIGFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5
bGUoY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6CiAgICAgICAgIGZpbmFs
UG9zaXRpb24uc2V0U3BhblBvc2l0aW9uKDEsIFN0cmluZygpKTsKICAgICBpZiAoZmluYWxQb3Np
dGlvbi5pc0F1dG8oKSAmJiBpbml0aWFsUG9zaXRpb24uaXNTcGFuKCkgJiYgIWluaXRpYWxQb3Np
dGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpCiAgICAgICAgIGluaXRpYWxQb3NpdGlvbi5z
ZXRTcGFuUG9zaXRpb24oMSwgU3RyaW5nKCkpOworCisgICAgaWYgKGlzSW5kZWZpbml0ZVNwYW4o
aW5pdGlhbFBvc2l0aW9uLCBmaW5hbFBvc2l0aW9uKSAmJiBpczxSZW5kZXJHcmlkPihncmlkSXRl
bSkgJiYgZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pLmlzU3ViZ3JpZChkaXJlY3Rpb24p
KSB7CisgICAgICAgIC8vIEluZGVmaW5pdGUgc3BhbiBmb3IgYW4gaXRlbSB0aGF0IGlzIHN1Ymdy
aWRkZWQgaW4gdGhpcyBheGlzLgorICAgICAgICBpbnQgbGluZUNvdW50ID0gZGlyZWN0aW9uID09
IEZvckNvbHVtbnMgPyBncmlkSXRlbS5zdHlsZSgpLmdyaWRDb2x1bW5zKCkuc2l6ZSgpIDogZ3Jp
ZEl0ZW0uc3R5bGUoKS5ncmlkUm93cygpLnNpemUoKTsKKworICAgICAgICBpZiAoaW5pdGlhbFBv
c2l0aW9uLmlzQXV0bygpKSB7CisgICAgICAgICAgICAvLyBTZXQgaW5pdGlhbCBwb3NpdGlvbiB0
byBzcGFuIDxsaW5lIG5hbWVzIC0gMT4KKyAgICAgICAgICAgIGluaXRpYWxQb3NpdGlvbi5zZXRT
cGFuUG9zaXRpb24oc3RkOjptYXgoMSwgbGluZUNvdW50IC0gMSksICIiKTsKKyAgICAgICAgICAg
IGlmIChmaW5hbFBvc2l0aW9uLmlzU3BhbigpKQorICAgICAgICAgICAgICAgIGZpbmFsUG9zaXRp
b24uc2V0QXV0b1Bvc2l0aW9uKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBT
ZXQgZmluYWwgcG9zaXRpb24gdG8gc3BhbiA8bGluZSBuYW1lcyAtIDE+CisgICAgICAgICAgICBm
aW5hbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbihzdGQ6Om1heCgxLCBsaW5lQ291bnQgLSAxKSwg
IiIpOworICAgICAgICAgICAgaWYgKGluaXRpYWxQb3NpdGlvbi5pc1NwYW4oKSkKKyAgICAgICAg
ICAgICAgICBpbml0aWFsUG9zaXRpb24uc2V0QXV0b1Bvc2l0aW9uKCk7CisgICAgICAgIH0KKyAg
ICB9CiB9CiAKLXVuc2lnbmVkIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29s
dW1uQ291bnQoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgdW5zaWduZWQg
YXV0b1JlcGVhdFRyYWNrc0NvdW50KQordW5zaWduZWQgR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpl
eHBsaWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBSZW5kZXJHcmlkJiBncmlkQ29udGFpbmVyKQog
ewotICAgIHJldHVybiBzdGQ6Om1pbjx1bnNpZ25lZD4oc3RkOjptYXgoZ3JpZENvbnRhaW5lclN0
eWxlLmdyaWRDb2x1bW5zKCkuc2l6ZSgpICsgYXV0b1JlcGVhdFRyYWNrc0NvdW50LCBncmlkQ29u
dGFpbmVyU3R5bGUubmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkpLCBHcmlkUG9zaXRpb246Om1h
eCgpKTsKKyAgICBib29sIHNwZWNpZmllZFN1YmdyaWQgPSBncmlkQ29udGFpbmVyLnN0eWxlKCku
Z3JpZFN1YmdyaWRDb2x1bW5zKCk7CisgICAgaWYgKHNwZWNpZmllZFN1YmdyaWQgJiYgZ3JpZENv
bnRhaW5lci5pc1N1YmdyaWRDb2x1bW5zKCkpIHsKKyAgICAgICAgY29uc3QgUmVuZGVyR3JpZCYg
cGFyZW50ID0gKmRvd25jYXN0PFJlbmRlckdyaWQ+KGdyaWRDb250YWluZXIucGFyZW50KCkpOwor
ICAgICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uID0gR3JpZExheW91dEZ1
bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQocGFyZW50LCBncmlkQ29udGFpbmVy
LCBGb3JDb2x1bW5zKTsKKyAgICAgICAgcmV0dXJuIHBhcmVudC5ncmlkU3BhbkZvckNoaWxkKGdy
aWRDb250YWluZXIsIGRpcmVjdGlvbikuaW50ZWdlclNwYW4oKTsKKyAgICB9CisgICAgYXV0byBz
cGVjaWZpZWRDb2x1bW5zID0gc3BlY2lmaWVkU3ViZ3JpZCA/IDAgOiBncmlkQ29udGFpbmVyLnN0
eWxlKCkuZ3JpZENvbHVtbnMoKS5zaXplKCk7CisgICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVk
PihzdGQ6Om1heChzcGVjaWZpZWRDb2x1bW5zICsgZ3JpZENvbnRhaW5lci5hdXRvUmVwZWF0Q291
bnRGb3JEaXJlY3Rpb24oRm9yQ29sdW1ucyksIGdyaWRDb250YWluZXIuc3R5bGUoKS5uYW1lZEdy
aWRBcmVhQ29sdW1uQ291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4KCkpOwogfQogCi11bnNpZ25l
ZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRl
clN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3Vu
dCkKK3Vuc2lnbmVkIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQo
Y29uc3QgUmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lcikKIHsKLSAgICByZXR1cm4gc3RkOjptaW48
dW5zaWduZWQ+KHN0ZDo6bWF4KGdyaWRDb250YWluZXJTdHlsZS5ncmlkUm93cygpLnNpemUoKSAr
IGF1dG9SZXBlYXRUcmFja3NDb3VudCwgZ3JpZENvbnRhaW5lclN0eWxlLm5hbWVkR3JpZEFyZWFS
b3dDb3VudCgpKSwgR3JpZFBvc2l0aW9uOjptYXgoKSk7CisgICAgYm9vbCBzcGVjaWZpZWRTdWJn
cmlkID0gZ3JpZENvbnRhaW5lci5zdHlsZSgpLmdyaWRTdWJncmlkUm93cygpOworICAgIGlmIChz
cGVjaWZpZWRTdWJncmlkICYmIGdyaWRDb250YWluZXIuaXNTdWJncmlkUm93cygpKSB7CisgICAg
ICAgIGNvbnN0IFJlbmRlckdyaWQmIHBhcmVudCA9ICpkb3duY2FzdDxSZW5kZXJHcmlkPihncmlk
Q29udGFpbmVyLnBhcmVudCgpKTsKKyAgICAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxk
KHBhcmVudCwgZ3JpZENvbnRhaW5lciwgRm9yUm93cyk7CisgICAgICAgIHJldHVybiBwYXJlbnQu
Z3JpZFNwYW5Gb3JDaGlsZChncmlkQ29udGFpbmVyLCBkaXJlY3Rpb24pLmludGVnZXJTcGFuKCk7
CisgICAgfQorICAgIGF1dG8gc3BlY2lmaWVkUm93cyA9IHNwZWNpZmllZFN1YmdyaWQgPyAwIDog
Z3JpZENvbnRhaW5lci5zdHlsZSgpLmdyaWRSb3dzKCkuc2l6ZSgpOworICAgIHJldHVybiBzdGQ6
Om1pbjx1bnNpZ25lZD4oc3RkOjptYXgoc3BlY2lmaWVkUm93cyArIGdyaWRDb250YWluZXIuYXV0
b1JlcGVhdENvdW50Rm9yRGlyZWN0aW9uKEZvclJvd3MpLCBncmlkQ29udGFpbmVyLnN0eWxlKCku
bmFtZWRHcmlkQXJlYVJvd0NvdW50KCkpLCBHcmlkUG9zaXRpb246Om1heCgpKTsKIH0KIAotc3Rh
dGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGNvbnN0IFJlbmRlclN0eWxlJiBn
cmlkQ29udGFpbmVyU3R5bGUsIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1Jl
cGVhdFRyYWNrc0NvdW50KQorc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFNpemVGb3JTaWRl
KGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIsIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkK
IHsKLSAgICByZXR1cm4gaXNDb2x1bW5TaWRlKHNpZGUpID8gR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChncmlkQ29udGFpbmVyU3R5bGUsIGF1dG9SZXBlYXRU
cmFja3NDb3VudCkgOiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50
KGdyaWRDb250YWluZXJTdHlsZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICByZXR1cm4g
aXNDb2x1bW5TaWRlKHNpZGUpID8gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRD
b2x1bW5Db3VudChncmlkQ29udGFpbmVyKSA6IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGlj
aXRHcmlkUm93Q291bnQoZ3JpZENvbnRhaW5lcik7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBsb29r
QWhlYWRGb3JOYW1lZEdyaWRMaW5lKGludCBzdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZMaW5lcywg
dW5zaWduZWQgZ3JpZExhc3RMaW5lLCBOYW1lZExpbmVDb2xsZWN0aW9uJiBsaW5lc0NvbGxlY3Rp
b24pCkBAIC0yMjQsMTIgKzI2OCwxMiBAQCBzdGF0aWMgaW50IGxvb2tCYWNrRm9yTmFtZWRHcmlk
TGluZShpbnQgZW5kLCB1bnNpZ25lZCBudW1iZXJPZkxpbmVzLCBpbnQgZ3JpZExhcwogICAgIHJl
dHVybiBzdGFydCArIDE7CiB9CiAKLXN0YXRpYyBpbnQgcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3Np
dGlvbkZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBjb25z
dCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUsIHVuc2lnbmVk
IGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3N0YXRpYyBpbnQgcmVzb2x2ZU5hbWVkR3JpZExpbmVQ
b3NpdGlvbkZyb21TdHlsZShjb25zdCBSZW5kZXJHcmlkJiBncmlkQ29udGFpbmVyLCBjb25zdCBH
cmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7CiAgICAgQVNT
RVJUKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpOwogCi0gICAgdW5zaWduZWQg
bGFzdExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyU3R5bGUsIHNp
ZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBsaW5l
c0NvbGxlY3Rpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCks
IGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50
KTsKKyAgICB1bnNpZ25lZCBsYXN0TGluZSA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRD
b250YWluZXIsIHNpZGUpOworICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gbGluZXNDb2xsZWN0aW9u
KGdyaWRDb250YWluZXIuc3R5bGUoKSwgcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLCBkaXJlY3Rp
b25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGdyaWRDb250YWluZXIuYXV0b1JlcGVhdENvdW50
Rm9yRGlyZWN0aW9uKGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpKSk7CiAKICAgICBpZiAocG9zaXRp
b24uaXNQb3NpdGl2ZSgpKQogICAgICAgICByZXR1cm4gbG9va0FoZWFkRm9yTmFtZWRHcmlkTGlu
ZSgwLCBzdGQ6OmFicyhwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSksIGxhc3RMaW5lLCBsaW5l
c0NvbGxlY3Rpb24pOwpAQCAtMjUwLDE5ICsyOTQsMTkgQEAgc3RhdGljIEdyaWRTcGFuIGRlZmlu
aXRlR3JpZFNwYW5XaXRoTmFtZWRMaW5lU3BhbkFnYWluc3RPcHBvc2l0ZShpbnQgb3Bwb3NpdGVM
aW4KICAgICByZXR1cm4gR3JpZFNwYW46OnVudHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oc3Rh
cnQsIGVuZCk7CiB9CiAKLXN0YXRpYyBHcmlkU3BhbiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0
aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWlu
ZXJTdHlsZSwgaW50IG9wcG9zaXRlTGluZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwg
R3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCitz
dGF0aWMgR3JpZFNwYW4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0
ZVBvc2l0aW9uKGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIsIGludCBvcHBvc2l0ZUxp
bmUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkK
IHsKICAgICBBU1NFUlQocG9zaXRpb24uaXNTcGFuKCkpOwogICAgIEFTU0VSVCghcG9zaXRpb24u
bmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKTsKICAgICAvLyBOZWdhdGl2ZSBwb3NpdGlvbnMgYXJl
IG5vdCBhbGxvd2VkIHBlciB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgc2hvdWxkIGhhdmUgYmVlbiBo
YW5kbGVkIGR1cmluZyBwYXJzaW5nLgogICAgIEFTU0VSVChwb3NpdGlvbi5zcGFuUG9zaXRpb24o
KSA+IDApOwogCi0gICAgdW5zaWduZWQgbGFzdExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lk
ZShncmlkQ29udGFpbmVyU3R5bGUsIHNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAg
TmFtZWRMaW5lQ29sbGVjdGlvbiBsaW5lc0NvbGxlY3Rpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBw
b3NpdGlvbi5uYW1lZEdyaWRMaW5lKCksIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGlu
ZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICB1bnNpZ25lZCBsYXN0TGluZSA9IGV4cGxp
Y2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXIsIHNpZGUpOworICAgIE5hbWVkTGluZUNv
bGxlY3Rpb24gbGluZXNDb2xsZWN0aW9uKGdyaWRDb250YWluZXIuc3R5bGUoKSwgcG9zaXRpb24u
bmFtZWRHcmlkTGluZSgpLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGdyaWRD
b250YWluZXIuYXV0b1JlcGVhdENvdW50Rm9yRGlyZWN0aW9uKGRpcmVjdGlvbkZyb21TaWRlKHNp
ZGUpKSk7CiAgICAgcmV0dXJuIGRlZmluaXRlR3JpZFNwYW5XaXRoTmFtZWRMaW5lU3BhbkFnYWlu
c3RPcHBvc2l0ZShvcHBvc2l0ZUxpbmUsIHBvc2l0aW9uLCBzaWRlLCBsYXN0TGluZSwgbGluZXND
b2xsZWN0aW9uKTsKIH0KIAotc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2Fp
bnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxl
LCBpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9z
aXRpb25TaWRlIHNpZGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3N0YXRpYyBH
cmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3Qg
UmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwgaW50IG9wcG9zaXRlTGluZSwgY29uc3QgR3JpZFBv
c2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogewogICAgIGlmIChwb3Np
dGlvbi5pc0F1dG8oKSkgewogICAgICAgICBpZiAoaXNTdGFydFNpZGUoc2lkZSkpCkBAIC0yNzUs
NyArMzE5LDcgQEAgc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bw
b3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgZ3IKIAogICAgIGlmICghcG9zaXRpb24u
bmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIHNwYW4gMiAnYycgLT4gd2Ug
bmVlZCB0byBmaW5kIHRoZSBhcHByb3ByaWF0ZSBncmlkIGxpbmUgYmVmb3JlIC8gYWZ0ZXIgb3Vy
IG9wcG9zaXRlIHBvc2l0aW9uLgotICAgICAgICByZXR1cm4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQ
b3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGdyaWRDb250YWluZXJTdHlsZSwgb3Bwb3Np
dGVMaW5lLCBwb3NpdGlvbiwgc2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAg
cmV0dXJuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlv
bihncmlkQ29udGFpbmVyLCBvcHBvc2l0ZUxpbmUsIHBvc2l0aW9uLCBzaWRlKTsKICAgICB9CiAK
ICAgICAvLyAnc3BhbiAxJyBpcyBjb250YWluZWQgaW5zaWRlIGEgc2luZ2xlIGdyaWQgdHJhY2sg
cmVnYXJkbGVzcyBvZiB0aGUgZGlyZWN0aW9uLgpAQCAtMzE1LDIxICszNTksMjEgQEAgdW5zaWdu
ZWQgR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKGNvbnN0
IFJlbmRlckJveCYgZ3JpZEkKICAgICByZXR1cm4gcG9zaXRpb24uc3BhblBvc2l0aW9uKCk7CiB9
CiAKLXN0YXRpYyBpbnQgcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBH
cmlkUG9zaXRpb25TaWRlIHNpZGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3N0
YXRpYyBpbnQgcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25zdCBSZW5kZXJHcmlkJiBn
cmlkQ29udGFpbmVyLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25T
aWRlIHNpZGUpCiB7CiAgICAgc3dpdGNoIChwb3NpdGlvbi50eXBlKCkpIHsKICAgICBjYXNlIEV4
cGxpY2l0UG9zaXRpb246IHsKICAgICAgICAgQVNTRVJUKHBvc2l0aW9uLmludGVnZXJQb3NpdGlv
bigpKTsKIAogICAgICAgICBpZiAoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSkK
LSAgICAgICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0eWxl
KGdyaWRDb250YWluZXJTdHlsZSwgcG9zaXRpb24sIHNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3Vu
dCk7CisgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkZyb21T
dHlsZShncmlkQ29udGFpbmVyLCBwb3NpdGlvbiwgc2lkZSk7CiAKICAgICAgICAgLy8gSGFuZGxl
IDxpbnRlZ2VyPiBleHBsaWNpdCBwb3NpdGlvbi4KICAgICAgICAgaWYgKHBvc2l0aW9uLmlzUG9z
aXRpdmUoKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSAt
IDE7CiAKICAgICAgICAgdW5zaWduZWQgcmVzb2x2ZWRQb3NpdGlvbiA9IHN0ZDo6YWJzKHBvc2l0
aW9uLmludGVnZXJQb3NpdGlvbigpKSAtIDE7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9m
VHJhY2sgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyU3R5bGUsIHNpZGUs
IGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVHJh
Y2sgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyLCBzaWRlKTsKIAogICAg
ICAgICByZXR1cm4gZW5kT2ZUcmFjayAtIHJlc29sdmVkUG9zaXRpb247CiAgICAgfQpAQCAtMzQx
LDE0ICszODUsMTQgQEAgc3RhdGljIGludCByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGMKICAgICAgICAgU3RyaW5nIG5h
bWVkR3JpZExpbmUgPSBwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCk7CiAgICAgICAgIEFTU0VSVCgh
cG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKTsKIAotICAgICAgICB1bnNpZ25lZCBs
YXN0TGluZSA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHlsZSwgc2lk
ZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICAgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBp
bXBsaWNpdExpbmVzKGdyaWRDb250YWluZXJTdHlsZSwgaW1wbGljaXROYW1lZEdyaWRMaW5lRm9y
U2lkZShuYW1lZEdyaWRMaW5lLCBzaWRlKSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RM
aW5lLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgICAgICB1bnNpZ25lZCBsYXN0TGluZSA9
IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXIsIHNpZGUpOworICAgICAgICBO
YW1lZExpbmVDb2xsZWN0aW9uIGltcGxpY2l0TGluZXMoZ3JpZENvbnRhaW5lci5zdHlsZSgpLCBp
bXBsaWNpdE5hbWVkR3JpZExpbmVGb3JTaWRlKG5hbWVkR3JpZExpbmUsIHNpZGUpLCBkaXJlY3Rp
b25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGdyaWRDb250YWluZXIuYXV0b1JlcGVhdENvdW50
Rm9yRGlyZWN0aW9uKGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpKSk7CiAgICAgICAgIGlmIChpbXBs
aWNpdExpbmVzLmhhc05hbWVkTGluZXMoKSkKICAgICAgICAgICAgIHJldHVybiBpbXBsaWNpdExp
bmVzLmZpcnN0UG9zaXRpb24oKTsKIAogICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHRoZXJlIGlz
IGEgbmFtZWQgbGluZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSwgY29udHJpYnV0ZXMgdGhlIGZp
cnN0IHN1Y2ggbGluZSB0byB0aGUgZ3JpZAogICAgICAgICAvLyBpdGVtJ3MgcGxhY2VtZW50Lgot
ICAgICAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGV4cGxpY2l0TGluZXMoZ3JpZENvbnRhaW5lclN0
eWxlLCBuYW1lZEdyaWRMaW5lLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGF1
dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gZXhwbGlj
aXRMaW5lcyhncmlkQ29udGFpbmVyLnN0eWxlKCksIG5hbWVkR3JpZExpbmUsIGRpcmVjdGlvbkZy
b21TaWRlKHNpZGUpLCBsYXN0TGluZSwgZ3JpZENvbnRhaW5lci5hdXRvUmVwZWF0Q291bnRGb3JE
aXJlY3Rpb24oZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSkpKTsKICAgICAgICAgaWYgKGV4cGxpY2l0
TGluZXMuaGFzTmFtZWRMaW5lcygpKQogICAgICAgICAgICAgcmV0dXJuIGV4cGxpY2l0TGluZXMu
Zmlyc3RQb3NpdGlvbigpOwogCkBAIC0zNjUsOCArNDA5LDExIEBAIHN0YXRpYyBpbnQgcmVzb2x2
ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0
eWxlLCBjCiAgICAgcmV0dXJuIDA7CiB9CiAKLUdyaWRTcGFuIEdyaWRQb3NpdGlvbnNSZXNvbHZl
cjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRD
b250YWluZXJTdHlsZSwgY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorR3Jp
ZFNwYW4gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHls
ZShjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uKQogeworICAgIGF1dG8qIGdyaWRDb250YWluZXIgPSBkb3duY2FzdDxSZW5kZXJHcmlk
PihncmlkSXRlbS5jb250YWluaW5nQmxvY2soKSk7CisgICAgQVNTRVJUKGdyaWRDb250YWluZXIp
OworCiAgICAgR3JpZFBvc2l0aW9uIGluaXRpYWxQb3NpdGlvbiwgZmluYWxQb3NpdGlvbjsKICAg
ICBhZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGdyaWRJdGVtLCBkaXJlY3Rpb24sIGluaXRp
YWxQb3NpdGlvbiwgZmluYWxQb3NpdGlvbik7CiAKQEAgLTM3OSwxOCArNDI2LDE4IEBAIEdyaWRT
cGFuIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmCiAKICAgICBpZiAoaW5pdGlhbFBvc2l0aW9uLnNob3VsZEJlUmVz
b2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEluZmVyIHRoZSBw
b3NpdGlvbiBmcm9tIHRoZSBmaW5hbCBwb3NpdGlvbiAoJ2F1dG8gLyAxJyBvciAnc3BhbiAyIC8g
MycgY2FzZSkuCi0gICAgICAgIGF1dG8gZW5kTGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9t
U3R5bGUoZ3JpZENvbnRhaW5lclN0eWxlLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUsIGF1dG9S
ZXBlYXRUcmFja3NDb3VudCk7Ci0gICAgICAgIHJldHVybiByZXNvbHZlR3JpZFBvc2l0aW9uQWdh
aW5zdE9wcG9zaXRlUG9zaXRpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBlbmRMaW5lLCBpbml0aWFs
UG9zaXRpb24sIGluaXRpYWxTaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgICAgICBh
dXRvIGVuZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKCpncmlkQ29udGFpbmVy
LCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUpOworICAgICAgICByZXR1cm4gcmVzb2x2ZUdyaWRQ
b3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKCpncmlkQ29udGFpbmVyLCBlbmRMaW5lLCBp
bml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlKTsKICAgICB9CiAKICAgICBpZiAoZmluYWxQb3Np
dGlvbi5zaG91bGRCZVJlc29sdmVkQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKSkgewogICAgICAg
ICAvLyBJbmZlciBvdXIgcG9zaXRpb24gZnJvbSB0aGUgaW5pdGlhbCBwb3NpdGlvbiAoJzEgLyBh
dXRvJyBvciAnMyAvIHNwYW4gMicgY2FzZSkuCi0gICAgICAgIGF1dG8gc3RhcnRMaW5lID0gcmVz
b2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIGluaXRpYWxQb3Np
dGlvbiwgaW5pdGlhbFNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAgICAgIHJldHVy
biByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oZ3JpZENvbnRhaW5l
clN0eWxlLCBzdGFydExpbmUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSwgYXV0b1JlcGVhdFRy
YWNrc0NvdW50KTsKKyAgICAgICAgYXV0byBzdGFydExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9u
RnJvbVN0eWxlKCpncmlkQ29udGFpbmVyLCBpbml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlKTsK
KyAgICAgICAgcmV0dXJuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlv
bigqZ3JpZENvbnRhaW5lciwgc3RhcnRMaW5lLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUpOwog
ICAgIH0KIAotICAgIGludCBzdGFydExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxl
KGdyaWRDb250YWluZXJTdHlsZSwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lkZSwgYXV0b1Jl
cGVhdFRyYWNrc0NvdW50KTsKLSAgICBpbnQgZW5kTGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25G
cm9tU3R5bGUoZ3JpZENvbnRhaW5lclN0eWxlLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUsIGF1
dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgaW50IHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9z
aXRpb25Gcm9tU3R5bGUoKmdyaWRDb250YWluZXIsIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNp
ZGUpOworICAgIGludCBlbmRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZSgqZ3Jp
ZENvbnRhaW5lciwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlKTsKIAogICAgIGlmIChzdGFydExp
bmUgPiBlbmRMaW5lKQogICAgICAgICBzdGQ6OnN3YXAoc3RhcnRMaW5lLCBlbmRMaW5lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVz
b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVz
b2x2ZXIuaAppbmRleCA2MjNiNjJjNmMyNDFkYzEzMDI1MDc4ZDE1MWY2YTk5MGQ1ZGMxMDZlLi43
MjQxOTU3NzM1NDEzZGQxMWExYmQ0MDJhYjIyYjBkZTU2MzcyYTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5oCkBA
IC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JpZFNwYW47CiBj
bGFzcyBSZW5kZXJCb3g7CitjbGFzcyBSZW5kZXJHcmlkOwogY2xhc3MgUmVuZGVyU3R5bGU7CiAK
IGVudW0gR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHsKQEAgLTczLDkgKzc0LDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBHcmlkUG9zaXRpb25TaWRlIGluaXRpYWxQb3NpdGlvblNpZGUoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKTsKICAgICBzdGF0aWMgR3JpZFBvc2l0aW9uU2lkZSBmaW5hbFBv
c2l0aW9uU2lkZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOwogICAgIHN0YXRpYyB1bnNpZ25l
ZCBzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbik7Ci0gICAgc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25z
RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAgIHN0
YXRpYyB1bnNpZ25lZCBleHBsaWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBSZW5kZXJTdHlsZSYs
IHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1bW5zQ291bnQpOwotICAgIHN0YXRpYyB1bnNpZ25lZCBl
eHBsaWNpdEdyaWRSb3dDb3VudChjb25zdCBSZW5kZXJTdHlsZSYsIHVuc2lnbmVkIGF1dG9SZXBl
YXRSb3dzQ291bnQpOworICAgIHN0YXRpYyBHcmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uc0Zy
b21TdHlsZShjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOworICAg
IHN0YXRpYyB1bnNpZ25lZCBleHBsaWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBSZW5kZXJHcmlk
Jik7CisgICAgc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRl
ckdyaWQmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCmluZGV4IGYxNjkzNjYyNDU4YTc5OWExYTZkMTA5NWE1ZjI1YzgwMTM0NjUxMTEu
LjdkMjhmODkxOTA0OTMwNWZlOGZiNGI2MGUwYzQwMWUyZmNiMzMzZDMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAyLTE1ICBNYXR0IFdvb2Ry
b3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgSW5oZXJpdCB0cmFjayBjb3Vu
dCBmcm9tIHBhcmVudCBncmlkIGZvciBzdWJncmlkZGVkIGF4ZXMgYW5kIGNsYW1wIGl0ZW0gcGxh
Y2VtZW50IHRvIHRoYXQgZXhwbGljaXQgZ3JpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgY2hhbmdlcyB0byBtYXRjaCBsYXRlc3Qgc3BlYywg
c3VibWl0dGVkIHVwc3RyZWFtIGFzIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0L3B1bGwvMzI2MjkKKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS1leHBl
Y3RlZC5odG1sOgorCiAyMDIyLTAyLTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ1NTIENvbnRhaW5lciBRdWVyaWVzXSBJbXBsZW1lbnQgZnVsbCBxdWVy
eSBwYXJzZXIgYW5kIGV2YWx1YXRvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAw
Mi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi1leHBlY3RlZC5odG1sCmlu
ZGV4IDA0YzU4Mzk1OTZjOWU1YjA5ZWNjZTI4NGM4Y2M3NTdiNmQxZWY4N2MuLjIzOTkzMjhiZWNj
NGU1NTYyNTJkYjVhZTdjYjAwNGU5M2Q4YTQ4ZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1u
YW1lcy0wMDItZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVj
dGVkLmh0bWwKQEAgLTE0LDcgKzE0LDcgQEAgaHRtbCxib2R5IHsKIAogLmdyaWQgewogICBkaXNw
bGF5OiBncmlkOwotICBncmlkOiBhdXRvIC8gW2FdIDUwcHggNTBweCBbYV0gNTBweCA1MHB4IFth
XTsKKyAgZ3JpZDogYXV0byAvIFthXSA1MHB4IDQwcHggW2FdIDEwcHggNTBweCBbYV07CiAgIHBh
ZGRpbmc6IDIwcHggMTBweDsKIH0KIApAQCAtMzIsNyArMzIsNyBAQCB4IHsgYmFja2dyb3VuZDog
Z3JleTsgfQogCiA8ZGl2IGNsYXNzPSJncmlkIj4KICAgPGRpdiBjbGFzcz0ic3ViZ3JpZCI+Ci0g
ICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMyI+PC94PgorICAgIDx4IHN0eWxlPSJncmlk
LWNvbHVtbjogMyAvIDQiPjwveD4KICAgPC9kaXY+CiA8L2Rpdj4KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3Vi
Z3JpZC9saW5lLW5hbWVzLTAwNS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAw
NS1leHBlY3RlZC5odG1sCmluZGV4IDRjN2Y0YjUwZmQxNjYwMTQ4MGUzMjkyNGUxZWFhYTc2Yzgx
YjcwYzYuLmNmZTE4ZDFiMjZlZDZlYjczNTVhN2UwMDI5ZjNlN2Y3NmY1NjZkNmIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1n
cmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xp
bmUtbmFtZXMtMDA1LWV4cGVjdGVkLmh0bWwKQEAgLTExNSw3ICsxMTUsNyBAQCB4IHsKIDxkaXYg
c3R5bGU9ImRpc3BsYXk6Z3JpZDsgd2lkdGg6NTAwcHg7IGdyaWQtYXV0by1jb2x1bW5zOiA1MHB4
OyI+CiA8aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+
PC9pPjxpPjwvaT48aT48L2k+CiAgIDxkaXYgY2xhc3M9InN1YmdyaWQyIj4KLSAgICA8eCBzdHls
ZT0iZ3JpZC1jb2x1bW46IHNwYW4gNCAvIDExIj54PC94PgorICAgIDx4IHN0eWxlPSJncmlkLWNv
bHVtbjogc3BhbiAzIC8gMTEiPng8L3g+CiAgIDwvZGl2PgogPC9kaXY+CiAKQEAgLTEyOSw3ICsx
MjksNyBAQCB4IHsKIDxkaXYgc3R5bGU9ImRpc3BsYXk6Z3JpZDsgZ3JpZDogYXV0byAvIHJlcGVh
dCgxMCwgNTBweCkgcmVwZWF0KDEwLCBbYV0gNTBweCkgW2FdIj4KIDxpPjwvaT48aT48L2k+PGk+
PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT4KICAg
PGRpdiBzdHlsZT0iZGlzcGxheTpncmlkOyBncmlkOmF1dG8vc3ViZ3JpZDsgZ3JpZC1jb2x1bW46
IHNwYW4gMTA7IGdyaWQtcm93OjIiPgotICAgIDx4IHN0eWxlPSJncmlkLWNvbHVtbjogMSAvIDEx
Ij54PC94PgorICAgIDx4IHN0eWxlPSJncmlkLWNvbHVtbjogMTAgLyAxMSI+eDwveD4KICAgPC9k
aXY+CiA8L2Rpdj4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452234</attachid>
            <date>2022-02-16 12:59:18 -0800</date>
            <delta_ts>2022-02-16 17:32:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236122-20220217095916.patch</filename>
            <type>text/plain</type>
            <size>44018</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBjNDg5N2UxMWI0MmNm
NGFiNjIwNTRhNzk3NWI1MTI3ZWUwYzZjZi4uZWU5MWY4YjFjMGNkZThiYjkyM2I2YTMyOGM0OTg2
NTMyOWU0NWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIyLTAyLTE1ICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgSW5oZXJpdCB0cmFj
ayBjb3VudCBmcm9tIHBhcmVudCBncmlkIGZvciBzdWJncmlkZGVkIGF4ZXMgYW5kIGNsYW1wIGl0
ZW0gcGxhY2VtZW50IHRvIHRoYXQgZXhwbGljaXQgZ3JpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEyMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZXMgR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpleHBsaWNpdEdyaWQ8PkNvdW50IHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIHRyYWNrcworICAg
ICAgICBzcGFubmVkIGluIHRoZSBwYXJlbnQgZ3JpZCwgZm9yIGF4ZXMgdGhhdCBhcmUgYSBzdWJn
cmlkLgorCisgICAgICAgIFVwZGF0ZXMgYWRqdXN0R3JpZFBvc2l0aW9uc0ZvclN0eWxlIHRvIHVz
ZSB0aGUgbnVtYmVyIG9mIGxpbmVzIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgc3ViZ3JpZCBw
cm9wZXJ0eSwgZm9yIGdyaWQgaXRlbXMgdGhhdCBhcmUgYWxzbyBhIHN1YmdyaWQgYW5kIGhhdmUg
YW4gb3RoZXJ3aXNlCisgICAgICAgIGluZGVmaW5pdGUgc3Bhbi4KKworICAgICAgICBBZGRzIGNs
YW1waW5nIHN1cHBvcnQgdG8gR3JpZCBzbyB0aGF0IHdlIGNhbiBwcmV2ZW50IHN1YmdyaWRzIGZy
b20gZXZlciBhZGRpbmcKKyAgICAgICAgbmV3IGltcGxpY2l0IHRyYWNrcy4KKworICAgICAgICAq
IHJlbmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6Omluc2VydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmlkOjpzZXRDbGFtcGluZ0ZvclN1YmdyaWQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZDo6Y2xhbXBBbmRUcmFuc2xhdGVUb0ltcGxpY2l0R3JpZCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkOjpzZXROZWVkc0l0ZW1zUGxhY2VtZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRB
bmRPcmRlckl0ZXJhdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnBs
YWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6aXNTdWJncmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckdyaWQ6OmlzU3ViZ3JpZFJvd3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6aXNTdWJncmlkQ29sdW1ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpncmlkQXJlYUJyZWFkdGhGb3JPdXRPZkZsb3dDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpudW1UcmFja3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNwb3Nl
ZERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlR3JpZFNw
YW5Gb3JPdXRPZkZsb3dDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpncmlkU3BhbkZvck91dE9mRmxvd0NoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmdyaWRTcGFuRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmlkU3Bhbjo6aW50ZWdlclNwYW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFNwYW46OnRyYW5zbGF0ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFu
OjpjbGFtcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0luZGVmaW5pdGVTcGFuKToKKyAgICAgICAgKFdl
YkNvcmU6OmFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25Gcm9tU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6cmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3Np
dGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdy
aWRQb3NpdGlvbnNGcm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9z
aXRpb25zUmVzb2x2ZXIuaDoKKwogMjAyMi0wMi0xNCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRWxlbWVudCB0b29sdGlwcyBpbiBv
dmVybGF5cyBzaG91bGQgdXNlIHNhbWUgZW5jb2RhYmxlL2RlY29kYWJsZSBMYWJlbCB0eXBlIGFz
IGdyaWQgb3ZlcmxheXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAppbmRleCA1NjAyZDdjMmQ0
ZDViY2E5MzI0NTQ0Yjc1YWQyMmNiMjY1OGVkMDJjLi40YzFmZmU1MDRhYjM3NmZkMjlkOTJhY2Jj
OThiZDI5MjcyYTE1MmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC02MSwxNyAr
NjEsMjQgQEAgdm9pZCBHcmlkOjplbnN1cmVHcmlkU2l6ZSh1bnNpZ25lZCBtYXhpbXVtUm93U2l6
ZSwgdW5zaWduZWQgbWF4aW11bUNvbHVtblNpemUpCiAgICAgfQogfQogCi12b2lkIEdyaWQ6Omlu
c2VydChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBHcmlkQXJlYSYgYXJlYSkKK0dyaWRBcmVhIEdy
aWQ6Omluc2VydChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBHcmlkQXJlYSYgYXJlYSkKIHsKLSAg
ICBBU1NFUlQoYXJlYS5yb3dzLmlzVHJhbnNsYXRlZERlZmluaXRlKCkgJiYgYXJlYS5jb2x1bW5z
LmlzVHJhbnNsYXRlZERlZmluaXRlKCkpOwotICAgIGVuc3VyZUdyaWRTaXplKGFyZWEucm93cy5l
bmRMaW5lKCksIGFyZWEuY29sdW1ucy5lbmRMaW5lKCkpOworICAgIEdyaWRBcmVhIGNsYW1wZWRB
cmVhID0gYXJlYTsKKyAgICBpZiAobV9tYXhSb3dzKQorICAgICAgICBjbGFtcGVkQXJlYS5yb3dz
LmNsYW1wKG1fbWF4Um93cyk7CisgICAgaWYgKG1fbWF4Q29sdW1ucykKKyAgICAgICAgY2xhbXBl
ZEFyZWEuY29sdW1ucy5jbGFtcChtX21heENvbHVtbnMpOwogCi0gICAgZm9yIChhdXRvIHJvdyA6
IGFyZWEucm93cykgewotICAgICAgICBmb3IgKGF1dG8gY29sdW1uIDogYXJlYS5jb2x1bW5zKQor
ICAgIEFTU0VSVChjbGFtcGVkQXJlYS5yb3dzLmlzVHJhbnNsYXRlZERlZmluaXRlKCkgJiYgY2xh
bXBlZEFyZWEuY29sdW1ucy5pc1RyYW5zbGF0ZWREZWZpbml0ZSgpKTsKKyAgICBlbnN1cmVHcmlk
U2l6ZShjbGFtcGVkQXJlYS5yb3dzLmVuZExpbmUoKSwgY2xhbXBlZEFyZWEuY29sdW1ucy5lbmRM
aW5lKCkpOworCisgICAgZm9yIChhdXRvIHJvdyA6IGNsYW1wZWRBcmVhLnJvd3MpIHsKKyAgICAg
ICAgZm9yIChhdXRvIGNvbHVtbiA6IGNsYW1wZWRBcmVhLmNvbHVtbnMpCiAgICAgICAgICAgICBt
X2dyaWRbcm93XVtjb2x1bW5dLmFwcGVuZChjaGlsZCk7CiAgICAgfQogCi0gICAgc2V0R3JpZEl0
ZW1BcmVhKGNoaWxkLCBhcmVhKTsKKyAgICBzZXRHcmlkSXRlbUFyZWEoY2hpbGQsIGNsYW1wZWRB
cmVhKTsKKyAgICByZXR1cm4gY2xhbXBlZEFyZWE7CiB9CiAKIHZvaWQgR3JpZDo6c2V0RXhwbGlj
aXRHcmlkU3RhcnQodW5zaWduZWQgcm93U3RhcnQsIHVuc2lnbmVkIGNvbHVtblN0YXJ0KQpAQCAt
ODUsNiArOTIsMjQgQEAgdW5zaWduZWQgR3JpZDo6ZXhwbGljaXRHcmlkU3RhcnQoR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKICAgICByZXR1cm4gZGlyZWN0aW9uID09
IEZvclJvd3MgPyBtX2V4cGxpY2l0Um93U3RhcnQgOiBtX2V4cGxpY2l0Q29sdW1uU3RhcnQ7CiB9
CiAKK3ZvaWQgR3JpZDo6c2V0Q2xhbXBpbmdGb3JTdWJncmlkKHVuc2lnbmVkIG1heFJvd3MsIHVu
c2lnbmVkIG1heENvbHVtbnMpCit7CisgICAgbV9tYXhSb3dzID0gbWF4Um93czsKKyAgICBtX21h
eENvbHVtbnMgPSBtYXhDb2x1bW5zOworfQorCit2b2lkIEdyaWQ6OmNsYW1wQXJlYVRvU3ViZ3Jp
ZElmTmVlZGVkKEdyaWRBcmVhJiBhcmVhKQoreworICAgIGlmICghYXJlYS5yb3dzLmlzSW5kZWZp
bml0ZSgpKSB7CisgICAgICAgIGlmIChtX21heFJvd3MpCisgICAgICAgICAgICBhcmVhLnJvd3Mu
Y2xhbXAobV9tYXhSb3dzKTsKKyAgICB9CisgICAgaWYgKCFhcmVhLmNvbHVtbnMuaXNJbmRlZmlu
aXRlKCkpIHsKKyAgICAgICAgaWYgKG1fbWF4Q29sdW1ucykKKyAgICAgICAgICAgIGFyZWEuY29s
dW1ucy5jbGFtcChtX21heENvbHVtbnMpOworICAgIH0KK30KKwogR3JpZEFyZWEgR3JpZDo6Z3Jp
ZEl0ZW1BcmVhKGNvbnN0IFJlbmRlckJveCYgaXRlbSkgY29uc3QKIHsKICAgICBBU1NFUlQobV9n
cmlkSXRlbUFyZWEuY29udGFpbnMoJml0ZW0pKTsKQEAgLTE2MSw2ICsxODYsOCBAQCB2b2lkIEdy
aWQ6OnNldE5lZWRzSXRlbXNQbGFjZW1lbnQoYm9vbCBuZWVkc0l0ZW1zUGxhY2VtZW50KQogICAg
IG1fYXV0b1JlcGVhdEVtcHR5Um93cyA9IG51bGxwdHI7CiAgICAgbV9hdXRvUmVwZWF0Q29sdW1u
cyA9IDA7CiAgICAgbV9hdXRvUmVwZWF0Um93cyA9IDA7CisgICAgbV9tYXhDb2x1bW5zID0gMDsK
KyAgICBtX21heFJvd3MgPSAwOwogfQogCiBHcmlkSXRlcmF0b3I6OkdyaWRJdGVyYXRvcihjb25z
dCBHcmlkJiBncmlkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25l
ZCBmaXhlZFRyYWNrSW5kZXgsIHVuc2lnbmVkIHZhcnlpbmdUcmFja0luZGV4KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkLmgKaW5kZXggNzJjYWRmNjhlZjRkMzI2NmNlMWY4Y2VlYmRjOWE0OWRmMmJjODEx
Yi4uNGMxZWYzYTVmMDE0ZWI3NjZkYTY4Zjk0ODQ4ODE2ZGUxMTRhYTNkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1U
cmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKIAogICAgIHZvaWQgZW5zdXJl
R3JpZFNpemUodW5zaWduZWQgbWF4aW11bVJvd1NpemUsIHVuc2lnbmVkIG1heGltdW1Db2x1bW5T
aXplKTsKLSAgICB2b2lkIGluc2VydChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOworICAg
IEdyaWRBcmVhIGluc2VydChSZW5kZXJCb3gmLCBjb25zdCBHcmlkQXJlYSYpOwogCiAgICAgLy8g
Tm90ZSB0aGF0IGVhY2ggaW4gZmxvdyBjaGlsZCBvZiBhIGdyaWQgY29udGFpbmVyIGJlY29tZXMg
YSBncmlkIGl0ZW0uIFRoaXMgbWVhbnMgdGhhdAogICAgIC8vIHRoaXMgbWV0aG9kIHdpbGwgcmV0
dXJuIGZhbHNlIGZvciBhIGdyaWQgY29udGFpbmVyIHdpdGggb25seSBvdXQgb2YgZmxvdyBjaGls
ZHJlbi4KQEAgLTY3LDYgKzY3LDEwIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBhdXRvUmVwZWF0
VHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAgICAgdm9pZCBzZXRBdXRv
UmVwZWF0VHJhY2tzKHVuc2lnbmVkIGF1dG9SZXBlYXRSb3dzLCB1bnNpZ25lZCBhdXRvUmVwZWF0
Q29sdW1ucyk7CiAKKyAgICB2b2lkIHNldENsYW1waW5nRm9yU3ViZ3JpZCh1bnNpZ25lZCBtYXhS
b3dzLCB1bnNpZ25lZCBtYXhDb2x1bW5zKTsKKworICAgIHZvaWQgY2xhbXBBcmVhVG9TdWJncmlk
SWZOZWVkZWQoR3JpZEFyZWEmKTsKKwogICAgIHZvaWQgc2V0QXV0b1JlcGVhdEVtcHR5Q29sdW1u
cyhzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KTsKICAgICB2b2lkIHNldEF1
dG9SZXBlYXRFbXB0eVJvd3Moc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0Pik7
CiAKQEAgLTkyLDYgKzk2LDkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2F1dG9SZXBlYXRD
b2x1bW5zIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fYXV0b1JlcGVhdFJvd3MgeyAwIH07CiAKKyAg
ICB1bnNpZ25lZCBtX21heENvbHVtbnMgeyAwIH07CisgICAgdW5zaWduZWQgbV9tYXhSb3dzIHsg
MCB9OworCiAgICAgYm9vbCBtX25lZWRzSXRlbXNQbGFjZW1lbnQgeyB0cnVlIH07CiAKICAgICBH
cmlkQXNNYXRyaXggbV9ncmlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0dyaWRMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRM
YXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IGQ0Zjc4OGRjNzBkMjYwMTU1ZjVkNjRmZDQ1ZmI4MTk0
MzQ3YTY1ZjEuLmRhZjVkMjg3YTQxYzFlOTFmN2QyYWFkZWVmZWQwMzQyMTkxYTFmMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5jcHAKQEAg
LTEwMiw2ICsxMDIsMjAgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkaW5nQ29u
dGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjb25zdCBSZW4KICAgICByZXR1cm4gZGly
ZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5vdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29u
dGVudExvZ2ljYWxXaWR0aCgpIDogY2hpbGQub3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRMb2dpY2FsSGVpZ2h0KCk7CiB9CiAKK2Jvb2wgaXNGbGlwcGVkRGlyZWN0aW9uKGNvbnN0IFJl
bmRlckdyaWQmIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCit7Cisg
ICAgaWYgKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKQorICAgICAgICByZXR1cm4gIWdyaWQuc3R5
bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CisgICAgcmV0dXJuIGdyaWQuc3R5bGUoKS5p
c0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpOworfQorCitib29sIGlzU3ViZ3JpZFJldmVyc2Vk
RGlyZWN0aW9uKGNvbnN0IFJlbmRlckdyaWQmIGdyaWQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBvdXRlckRpcmVjdGlvbiwgY29uc3QgUmVuZGVyR3JpZCYgc3ViZ3JpZCkKK3sKKyAgICBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24gY2hpbGREaXJlY3Rpb24gPSBmbG93QXdhcmVEaXJlY3Rpb25G
b3JDaGlsZChncmlkLCBzdWJncmlkLCBvdXRlckRpcmVjdGlvbik7CisgICAgQVNTRVJUKHN1Ymdy
aWQuaXNTdWJncmlkKGNoaWxkRGlyZWN0aW9uKSk7CisgICAgcmV0dXJuIGlzRmxpcHBlZERpcmVj
dGlvbihncmlkLCBvdXRlckRpcmVjdGlvbikgIT0gaXNGbGlwcGVkRGlyZWN0aW9uKHN1YmdyaWQs
IGNoaWxkRGlyZWN0aW9uKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgR3JpZExheW91dEZ1bmN0aW9u
cwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0dyaWRMYXlvdXRGdW5jdGlvbnMuaAppbmRleCA1ZGIzZjVmOTgyOTUzNWVkM2E3MzJjMjk0Yjdk
YTA2MGJiZDJkMWJkLi44NjE3YzJjMTIzZDAxYjI2YmQ4MmY0MzBmYzU1ODk5NTEzMWFiZGRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZExheW91dEZ1bmN0aW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkTGF5b3V0RnVuY3Rpb25zLmgKQEAg
LTQ1LDYgKzQ1LDkgQEAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGZsb3dBd2FyZURpcmVjdGlv
bkZvckNoaWxkKGNvbnN0IFJlbmRlckdyaWQmLCBjb25zdCBSZW4KIGJvb2wgaGFzT3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiwgR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJp
ZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94Jiwg
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKTsKIAorYm9vbCBpc0ZsaXBwZWREaXJlY3Rpb24oY29u
c3QgUmVuZGVyR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbik7Citib29sIGlzU3ViZ3Jp
ZFJldmVyc2VkRGlyZWN0aW9uKGNvbnN0IFJlbmRlckdyaWQmLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gb3V0ZXJEaXJlY3Rpb24sIGNvbnN0IFJlbmRlckdyaWQmIHN1YmdyaWQpOworCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmNwcAppbmRleCA3ZmZiNjIzNzQ4ZjAwZjY2ZmI3YmU4NWZiOWU5NTMzZTU3NDExZWYxLi5jZmVk
OTY3MmViNDg4MDgyMzY2Y2M5NDQ3ZGI3NTY3YjYxZDk3NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC00NDYsOCArNDQ2LDcgQEAgdm9pZCBSZW5kZXJHcmlk
Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lk
dGgsIExheW8KICAgICBMYXlvdXRVbml0IGNoaWxkTWF4V2lkdGg7CiAgICAgYm9vbCBoYWRFeGNs
dWRlZENoaWxkcmVuID0gY29tcHV0ZVByZWZlcnJlZFdpZHRoc0ZvckV4Y2x1ZGVkQ2hpbGRyZW4o
Y2hpbGRNaW5XaWR0aCwgY2hpbGRNYXhXaWR0aCk7CiAKLSAgICBHcmlkIGdyaWQoY29uc3RfY2Fz
dDxSZW5kZXJHcmlkJj4oKnRoaXMpKTsKLSAgICBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gYWxn
b3JpdGhtKHRoaXMsIGdyaWQpOworICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSBhbGdvcml0
aG0odGhpcywgY29uc3RfY2FzdDxHcmlkJj4obV9ncmlkKSk7CiAgICAgcGxhY2VJdGVtc09uR3Jp
ZChhbGdvcml0aG0sIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBwZXJmb3JtR3JpZEl0ZW1zUHJlTGF5
b3V0KGFsZ29yaXRobSk7CkBAIC02NDEsNyArNjQwLDYgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFj
ZUl0ZW1zT25HcmlkKEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtLCBzdGQ6Om9w
dGkKICAgICBHcmlkJiBncmlkID0gYWxnb3JpdGhtLm11dGFibGVHcmlkKCk7CiAgICAgdW5zaWdu
ZWQgYXV0b1JlcGVhdENvbHVtbnMgPSBjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEZvckNv
bHVtbnMsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgdW5zaWduZWQgYXV0b1JlcGVhdFJv
d3MgPSBjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEZvclJvd3MsIGF2YWlsYWJsZUxvZ2lj
YWxIZWlnaHRGb3JQZXJjZW50YWdlQ29tcHV0YXRpb24oKSk7Ci0KICAgICBhdXRvUmVwZWF0Um93
cyA9IGNsYW1wQXV0b1JlcGVhdFRyYWNrcyhGb3JSb3dzLCBhdXRvUmVwZWF0Um93cyk7CiAgICAg
YXV0b1JlcGVhdENvbHVtbnMgPSBjbGFtcEF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucywgYXV0
b1JlcGVhdENvbHVtbnMpOwogCkBAIC02NzAsNiArNjY4LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpw
bGFjZUl0ZW1zT25HcmlkKEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtLCBzdGQ6
Om9wdGkKICAgICAgICAgICAgIGNoaWxkLT5zZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29u
dGVudExvZ2ljYWxIZWlnaHQoc3RkOjpudWxsb3B0KTsKIAogICAgICAgICBHcmlkQXJlYSBhcmVh
ID0gZ3JpZC5ncmlkSXRlbUFyZWEoKmNoaWxkKTsKKyAgICAgICAgZ3JpZC5jbGFtcEFyZWFUb1N1
YmdyaWRJZk5lZWRlZChhcmVhKTsKICAgICAgICAgaWYgKCFhcmVhLnJvd3MuaXNJbmRlZmluaXRl
KCkpCiAgICAgICAgICAgICBhcmVhLnJvd3MudHJhbnNsYXRlKGdyaWQuZXhwbGljaXRHcmlkU3Rh
cnQoRm9yUm93cykpOwogICAgICAgICBpZiAoIWFyZWEuY29sdW1ucy5pc0luZGVmaW5pdGUoKSkK
QEAgLTY5MCw4ICs2ODksOCBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQoR3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtJiBhbGdvcml0aG0sIHN0ZDo6b3B0aQogCiAjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBpZiAoZ3JpZC5oYXNHcmlkSXRlbXMoKSkgewotICAgICAgICBBU1NFUlQo
Z3JpZC5udW1UcmFja3MoRm9yUm93cykgPj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNp
dEdyaWRSb3dDb3VudChzdHlsZSgpLCBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yUm93cykpKTsK
LSAgICAgICAgQVNTRVJUKGdyaWQubnVtVHJhY2tzKEZvckNvbHVtbnMpID49IEdyaWRQb3NpdGlv
bnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoc3R5bGUoKSwgZ3JpZC5hdXRvUmVw
ZWF0VHJhY2tzKEZvckNvbHVtbnMpKSk7CisgICAgICAgIEFTU0VSVChncmlkLm51bVRyYWNrcyhG
b3JSb3dzKSA+PSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KCp0
aGlzKSk7CisgICAgICAgIEFTU0VSVChncmlkLm51bVRyYWNrcyhGb3JDb2x1bW5zKSA+PSBHcmlk
UG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KCp0aGlzKSk7CiAgICAg
fQogI2VuZGlmCiAKQEAgLTc0NSwzMyArNzQ0LDM1IEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxh
dGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKEdyaWQmIGdyaWQpIGNvbnN0CiAgICAgT3Jk
ZXJJdGVyYXRvclBvcHVsYXRvciBwb3B1bGF0b3IoZ3JpZC5vcmRlckl0ZXJhdG9yKCkpOwogICAg
IHVuc2lnbmVkIGV4cGxpY2l0Um93U3RhcnQgPSAwOwogICAgIHVuc2lnbmVkIGV4cGxpY2l0Q29s
dW1uU3RhcnQgPSAwOwotICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRSb3dzID0gZ3JpZC5hdXRvUmVw
ZWF0VHJhY2tzKEZvclJvd3MpOwotICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1bW5zID0gZ3Jp
ZC5hdXRvUmVwZWF0VHJhY2tzKEZvckNvbHVtbnMpOwotICAgIHVuc2lnbmVkIG1heGltdW1Sb3dJ
bmRleCA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQoc3R5bGUo
KSwgYXV0b1JlcGVhdFJvd3MpOwotICAgIHVuc2lnbmVkIG1heGltdW1Db2x1bW5JbmRleCA9IEdy
aWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291bnQoc3R5bGUoKSwgYXV0
b1JlcGVhdENvbHVtbnMpOworICAgIHVuc2lnbmVkIG1heGltdW1Sb3dJbmRleCA9IEdyaWRQb3Np
dGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQoKnRoaXMpOworICAgIHVuc2lnbmVk
IG1heGltdW1Db2x1bW5JbmRleCA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlk
Q29sdW1uQ291bnQoKnRoaXMpOwogCiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RD
aGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgewogICAg
ICAgICBpZiAoIXBvcHVsYXRvci5jb2xsZWN0Q2hpbGQoKmNoaWxkKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAKLSAgICAgICAgR3JpZFNwYW4gcm93UG9zaXRpb25zID0gR3JpZFBv
c2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShzdHlsZSgpLCAq
Y2hpbGQsIEZvclJvd3MsIGF1dG9SZXBlYXRSb3dzKTsKLSAgICAgICAgaWYgKCFyb3dQb3NpdGlv
bnMuaXNJbmRlZmluaXRlKCkpIHsKLSAgICAgICAgICAgIGV4cGxpY2l0Um93U3RhcnQgPSBzdGQ6
Om1heDxpbnQ+KGV4cGxpY2l0Um93U3RhcnQsIC1yb3dQb3NpdGlvbnMudW50cmFuc2xhdGVkU3Rh
cnRMaW5lKCkpOwotICAgICAgICAgICAgbWF4aW11bVJvd0luZGV4ID0gc3RkOjptYXg8aW50Piht
YXhpbXVtUm93SW5kZXgsIHJvd1Bvc2l0aW9ucy51bnRyYW5zbGF0ZWRFbmRMaW5lKCkpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gR3JvdyB0aGUgZ3JpZCBmb3IgaXRlbXMgd2l0
aCBhIGRlZmluaXRlIHJvdyBzcGFuLCBnZXR0aW5nIHRoZSBsYXJnZXN0IHN1Y2ggc3Bhbi4KLSAg
ICAgICAgICAgIHVuc2lnbmVkIHNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFu
U2l6ZUZvckF1dG9QbGFjZWRJdGVtKCpjaGlsZCwgRm9yUm93cyk7Ci0gICAgICAgICAgICBtYXhp
bXVtUm93SW5kZXggPSBzdGQ6Om1heChtYXhpbXVtUm93SW5kZXgsIHNwYW5TaXplKTsKKyAgICAg
ICAgR3JpZFNwYW4gcm93UG9zaXRpb25zID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZl
R3JpZFBvc2l0aW9uc0Zyb21TdHlsZSgqY2hpbGQsIEZvclJvd3MpOworICAgICAgICBpZiAoIWlz
U3ViZ3JpZFJvd3MoKSkgeworICAgICAgICAgICAgaWYgKCFyb3dQb3NpdGlvbnMuaXNJbmRlZmlu
aXRlKCkpIHsKKyAgICAgICAgICAgICAgICBleHBsaWNpdFJvd1N0YXJ0ID0gc3RkOjptYXg8aW50
PihleHBsaWNpdFJvd1N0YXJ0LCAtcm93UG9zaXRpb25zLnVudHJhbnNsYXRlZFN0YXJ0TGluZSgp
KTsKKyAgICAgICAgICAgICAgICBtYXhpbXVtUm93SW5kZXggPSBzdGQ6Om1heDxpbnQ+KG1heGlt
dW1Sb3dJbmRleCwgcm93UG9zaXRpb25zLnVudHJhbnNsYXRlZEVuZExpbmUoKSk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEdyb3cgdGhlIGdyaWQgZm9yIGl0ZW1z
IHdpdGggYSBkZWZpbml0ZSByb3cgc3BhbiwgZ2V0dGluZyB0aGUgbGFyZ2VzdCBzdWNoIHNwYW4u
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2
ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oKmNoaWxkLCBGb3JSb3dzKTsKKyAgICAgICAg
ICAgICAgICBtYXhpbXVtUm93SW5kZXggPSBzdGQ6Om1heChtYXhpbXVtUm93SW5kZXgsIHNwYW5T
aXplKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIEdyaWRTcGFuIGNvbHVt
blBvc2l0aW9ucyA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNG
cm9tU3R5bGUoc3R5bGUoKSwgKmNoaWxkLCBGb3JDb2x1bW5zLCBhdXRvUmVwZWF0Q29sdW1ucyk7
Ci0gICAgICAgIGlmICghY29sdW1uUG9zaXRpb25zLmlzSW5kZWZpbml0ZSgpKSB7Ci0gICAgICAg
ICAgICBleHBsaWNpdENvbHVtblN0YXJ0ID0gc3RkOjptYXg8aW50PihleHBsaWNpdENvbHVtblN0
YXJ0LCAtY29sdW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZFN0YXJ0TGluZSgpKTsKLSAgICAgICAg
ICAgIG1heGltdW1Db2x1bW5JbmRleCA9IHN0ZDo6bWF4PGludD4obWF4aW11bUNvbHVtbkluZGV4
LCBjb2x1bW5Qb3NpdGlvbnMudW50cmFuc2xhdGVkRW5kTGluZSgpKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIC8vIEdyb3cgdGhlIGdyaWQgZm9yIGl0ZW1zIHdpdGggYSBkZWZpbml0
ZSBjb2x1bW4gc3BhbiwgZ2V0dGluZyB0aGUgbGFyZ2VzdCBzdWNoIHNwYW4uCi0gICAgICAgICAg
ICB1bnNpZ25lZCBzcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JB
dXRvUGxhY2VkSXRlbSgqY2hpbGQsIEZvckNvbHVtbnMpOwotICAgICAgICAgICAgbWF4aW11bUNv
bHVtbkluZGV4ID0gc3RkOjptYXgobWF4aW11bUNvbHVtbkluZGV4LCBzcGFuU2l6ZSk7CisgICAg
ICAgIEdyaWRTcGFuIGNvbHVtblBvc2l0aW9ucyA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVz
b2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoKmNoaWxkLCBGb3JDb2x1bW5zKTsKKyAgICAgICAg
aWYgKCFpc1N1YmdyaWRDb2x1bW5zKCkpIHsKKyAgICAgICAgICAgIGlmICghY29sdW1uUG9zaXRp
b25zLmlzSW5kZWZpbml0ZSgpKSB7CisgICAgICAgICAgICAgICAgZXhwbGljaXRDb2x1bW5TdGFy
dCA9IHN0ZDo6bWF4PGludD4oZXhwbGljaXRDb2x1bW5TdGFydCwgLWNvbHVtblBvc2l0aW9ucy51
bnRyYW5zbGF0ZWRTdGFydExpbmUoKSk7CisgICAgICAgICAgICAgICAgbWF4aW11bUNvbHVtbklu
ZGV4ID0gc3RkOjptYXg8aW50PihtYXhpbXVtQ29sdW1uSW5kZXgsIGNvbHVtblBvc2l0aW9ucy51
bnRyYW5zbGF0ZWRFbmRMaW5lKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAvLyBHcm93IHRoZSBncmlkIGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUgY29sdW1uIHNw
YW4sIGdldHRpbmcgdGhlIGxhcmdlc3Qgc3VjaCBzcGFuLgorICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFj
ZWRJdGVtKCpjaGlsZCwgRm9yQ29sdW1ucyk7CisgICAgICAgICAgICAgICAgbWF4aW11bUNvbHVt
bkluZGV4ID0gc3RkOjptYXgobWF4aW11bUNvbHVtbkluZGV4LCBzcGFuU2l6ZSk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBncmlkLnNldEdyaWRJdGVtQXJlYSgqY2hpbGQs
IHsgcm93UG9zaXRpb25zLCBjb2x1bW5Qb3NpdGlvbnMgfSk7CkBAIC03NzksNiArNzgwLDcgQEAg
dm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3Jp
ZCYgZ3JpZCkgY29uc3QKIAogICAgIGdyaWQuc2V0RXhwbGljaXRHcmlkU3RhcnQoZXhwbGljaXRS
b3dTdGFydCwgZXhwbGljaXRDb2x1bW5TdGFydCk7CiAgICAgZ3JpZC5lbnN1cmVHcmlkU2l6ZSht
YXhpbXVtUm93SW5kZXggKyBleHBsaWNpdFJvd1N0YXJ0LCBtYXhpbXVtQ29sdW1uSW5kZXggKyBl
eHBsaWNpdENvbHVtblN0YXJ0KTsKKyAgICBncmlkLnNldENsYW1waW5nRm9yU3ViZ3JpZChpc1N1
YmdyaWRSb3dzKCkgPyBtYXhpbXVtUm93SW5kZXggOiAwLCBpc1N1YmdyaWRDb2x1bW5zKCkgPyBt
YXhpbXVtQ29sdW1uSW5kZXggOiAwKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBS
ZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRl
R3JpZChHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3BlY2lmaWVk
UG9zaXRpb25zKSBjb25zdApAQCAtODEyLDcgKzgxNCw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxh
Y2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8
UmVuCiAgICAgICAgIGlmICghZW1wdHlHcmlkQXJlYSkKICAgICAgICAgICAgIGVtcHR5R3JpZEFy
ZWEgPSBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChn
cmlkLCAqYXV0b0dyaWRJdGVtLCBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1h
am9yQXhpc1Bvc2l0aW9ucyk7CiAKLSAgICAgICAgZ3JpZC5pbnNlcnQoKmF1dG9HcmlkSXRlbSwg
KmVtcHR5R3JpZEFyZWEpOworICAgICAgICAqZW1wdHlHcmlkQXJlYSA9IGdyaWQuaW5zZXJ0KCph
dXRvR3JpZEl0ZW0sICplbXB0eUdyaWRBcmVhKTsKIAogICAgICAgICBpZiAoIWlzR3JpZEF1dG9G
bG93RGVuc2UpCiAgICAgICAgICAgICBtaW5vckF4aXNDdXJzb3JzLnNldChtYWpvckF4aXNJbml0
aWFsUG9zaXRpb24sIGlzRm9yQ29sdW1ucyA/IGVtcHR5R3JpZEFyZWEtPnJvd3Muc3RhcnRMaW5l
KCkgOiBlbXB0eUdyaWRBcmVhLT5jb2x1bW5zLnN0YXJ0TGluZSgpKTsKQEAgLTE2MTAsMjMgKzE2
MTIsMjUgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpyZXNvbHZlQXV0b0VuZEdyaWRQb3NpdGlv
bihHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWMKICAgICByZXR1cm4gY2xpZW50TG9naWNh
bFdpZHRoKCk7CiB9CiAKK2Jvb2wgUmVuZGVyR3JpZDo6aXNTdWJncmlkKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Cit7CisgICAgaWYgKGlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpIHx8IGlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoKGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/ICFzdHlsZSgpLmdyaWRT
dWJncmlkQ29sdW1ucygpIDogIXN0eWxlKCkuZ3JpZFN1YmdyaWRSb3dzKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXM8UmVuZGVyR3JpZD4ocGFyZW50KCkpOworfQorCiBM
YXlvdXRVbml0IFJlbmRlckdyaWQ6OmdyaWRBcmVhQnJlYWR0aEZvck91dE9mRmxvd0NoaWxkKGNv
bnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
CiB7CiAgICAgQVNTRVJUKGNoaWxkLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKICAgICBib29s
IGlzUm93QXhpcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zOwotICAgIEdyaWRTcGFuIHNwYW4g
PSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnJlc29sdmVHcmlkUG9zaXRpb25zRnJvbVN0eWxlKHN0
eWxlKCksIGNoaWxkLCBkaXJlY3Rpb24sIGF1dG9SZXBlYXRDb3VudEZvckRpcmVjdGlvbihkaXJl
Y3Rpb24pKTsKLSAgICBpZiAoc3Bhbi5pc0luZGVmaW5pdGUoKSkKLSAgICAgICAgcmV0dXJuIGlz
Um93QXhpcyA/IGNsaWVudExvZ2ljYWxXaWR0aCgpIDogY2xpZW50TG9naWNhbEhlaWdodCgpOwot
Ci0gICAgdW5zaWduZWQgZXhwbGljaXRTdGFydCA9IG1fZ3JpZC5leHBsaWNpdEdyaWRTdGFydChk
aXJlY3Rpb24pOwotICAgIGludCBzdGFydExpbmUgPSBzcGFuLnVudHJhbnNsYXRlZFN0YXJ0TGlu
ZSgpICsgZXhwbGljaXRTdGFydDsKLSAgICBpbnQgZW5kTGluZSA9IHNwYW4udW50cmFuc2xhdGVk
RW5kTGluZSgpICsgZXhwbGljaXRTdGFydDsKICAgICBpbnQgbGFzdExpbmUgPSBudW1UcmFja3Mo
ZGlyZWN0aW9uLCBtX2dyaWQpOwotICAgIEdyaWRQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gZGly
ZWN0aW9uID09IEZvckNvbHVtbnMgPyBjaGlsZC5zdHlsZSgpLmdyaWRJdGVtQ29sdW1uU3RhcnQo
KSA6IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Sb3dTdGFydCgpOwotICAgIEdyaWRQb3NpdGlvbiBl
bmRQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY2hpbGQuc3R5bGUoKS5ncmlk
SXRlbUNvbHVtbkVuZCgpIDogY2hpbGQuc3R5bGUoKS5ncmlkSXRlbVJvd0VuZCgpOwogCi0gICAg
Ym9vbCBzdGFydElzQXV0byA9IHN0YXJ0UG9zaXRpb24uaXNBdXRvKCkgfHwgc3RhcnRMaW5lIDwg
MCB8fCBzdGFydExpbmUgPiBsYXN0TGluZTsKLSAgICBib29sIGVuZElzQXV0byA9IGVuZFBvc2l0
aW9uLmlzQXV0bygpIHx8IGVuZExpbmUgPCAwIHx8IGVuZExpbmUgPiBsYXN0TGluZTsKKyAgICBp
bnQgc3RhcnRMaW5lLCBlbmRMaW5lOworICAgIGJvb2wgc3RhcnRJc0F1dG8sIGVuZElzQXV0bzsK
KyAgICBpZiAoIWNvbXB1dGVHcmlkUG9zaXRpb25zRm9yT3V0T2ZGbG93Q2hpbGQoY2hpbGQsIGRp
cmVjdGlvbiwgc3RhcnRMaW5lLCBzdGFydElzQXV0bywgZW5kTGluZSwgZW5kSXNBdXRvKSkKKyAg
ICAgICAgcmV0dXJuIGlzUm93QXhpcyA/IGNsaWVudExvZ2ljYWxXaWR0aCgpIDogY2xpZW50TG9n
aWNhbEhlaWdodCgpOwogCiAgICAgaWYgKHN0YXJ0SXNBdXRvICYmIGVuZElzQXV0bykKICAgICAg
ICAgcmV0dXJuIGlzUm93QXhpcyA/IGNsaWVudExvZ2ljYWxXaWR0aCgpIDogY2xpZW50TG9naWNh
bEhlaWdodCgpOwpAQCAtMTkyMCw3ICsxOTI0LDcgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6bnVt
VHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEdyaWQmIGcK
ICAgICAgICAgcmV0dXJuIGdyaWQubnVtVHJhY2tzKEZvclJvd3MpOwogCiAgICAgLy8gRklYTUU6
IFRoaXMgc3RpbGwgcmVxdWlyZXMga25vd2xlZGdlIGFib3V0IG1fZ3JpZCBpbnRlcm5hbHMuCi0g
ICAgcmV0dXJuIGdyaWQubnVtVHJhY2tzKEZvclJvd3MpID8gZ3JpZC5udW1UcmFja3MoRm9yQ29s
dW1ucykgOiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KHN0
eWxlKCksIGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhGb3JDb2x1bW5zKSk7CisgICAgcmV0dXJuIGdy
aWQubnVtVHJhY2tzKEZvclJvd3MpID8gZ3JpZC5udW1UcmFja3MoRm9yQ29sdW1ucykgOiBHcmlk
UG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KCp0aGlzKTsKIH0KIAog
dm9pZCBSZW5kZXJHcmlkOjpwYWludENoaWxkcmVuKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNl
UHJpbnRSZWN0KQpAQCAtMTk3Nyw0ICsxOTgxLDYyIEBAIGJvb2wgUmVuZGVyR3JpZDo6aGFzQXV0
b1NpemVJblJvd0F4aXMoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLnN0eWxlKCkud2lkdGgoKS5pc0F1dG8o
KSA6IGNoaWxkLnN0eWxlKCkuaGVpZ2h0KCkuaXNBdXRvKCk7CiB9CiAKK2Jvb2wgUmVuZGVyR3Jp
ZDo6Y29tcHV0ZUdyaWRQb3NpdGlvbnNGb3JPdXRPZkZsb3dDaGlsZChjb25zdCBSZW5kZXJCb3gm
IGNoaWxkLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBpbnQmIHN0YXJ0TGlu
ZSwgYm9vbCYgc3RhcnRJc0F1dG8sIGludCYgZW5kTGluZSwgYm9vbCYgZW5kSXNBdXRvKSBjb25z
dAoreworICAgIEFTU0VSVChjaGlsZC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CisgICAgaW50
IGxhc3RMaW5lID0gbnVtVHJhY2tzKGRpcmVjdGlvbiwgbV9ncmlkKTsKKyAgICBHcmlkU3BhbiBz
cGFuID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHls
ZShjaGlsZCwgZGlyZWN0aW9uKTsKKyAgICBpZiAoc3Bhbi5pc0luZGVmaW5pdGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQgZXhwbGljaXRTdGFydCA9IG1fZ3JpZC5l
eHBsaWNpdEdyaWRTdGFydChkaXJlY3Rpb24pOworICAgIHN0YXJ0TGluZSA9IHNwYW4udW50cmFu
c2xhdGVkU3RhcnRMaW5lKCkgKyBleHBsaWNpdFN0YXJ0OworICAgIGVuZExpbmUgPSBzcGFuLnVu
dHJhbnNsYXRlZEVuZExpbmUoKSArIGV4cGxpY2l0U3RhcnQ7CisKKyAgICBHcmlkUG9zaXRpb24g
c3RhcnRQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY2hpbGQuc3R5bGUoKS5n
cmlkSXRlbUNvbHVtblN0YXJ0KCkgOiBjaGlsZC5zdHlsZSgpLmdyaWRJdGVtUm93U3RhcnQoKTsK
KyAgICBHcmlkUG9zaXRpb24gZW5kUG9zaXRpb24gPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/
IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Db2x1bW5FbmQoKSA6IGNoaWxkLnN0eWxlKCkuZ3JpZEl0
ZW1Sb3dFbmQoKTsKKworICAgIHN0YXJ0SXNBdXRvID0gc3RhcnRQb3NpdGlvbi5pc0F1dG8oKSB8
fCBzdGFydExpbmUgPCAwIHx8IHN0YXJ0TGluZSA+IGxhc3RMaW5lOworICAgIGVuZElzQXV0byA9
IGVuZFBvc2l0aW9uLmlzQXV0bygpIHx8IGVuZExpbmUgPCAwIHx8IGVuZExpbmUgPiBsYXN0TGlu
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworR3JpZFNwYW4gUmVuZGVyR3JpZDo6Z3JpZFNwYW5G
b3JPdXRPZkZsb3dDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAoreworICAgIGludCBsYXN0TGluZSA9IG51bVRyYWNr
cyhkaXJlY3Rpb24sIG1fZ3JpZCk7CisgICAgaW50IHN0YXJ0TGluZSwgZW5kTGluZTsKKyAgICBi
b29sIHN0YXJ0SXNBdXRvLCBlbmRJc0F1dG87CisgICAgaWYgKCFjb21wdXRlR3JpZFBvc2l0aW9u
c0Zvck91dE9mRmxvd0NoaWxkKGNoaWxkLCBkaXJlY3Rpb24sIHN0YXJ0TGluZSwgc3RhcnRJc0F1
dG8sIGVuZExpbmUsIGVuZElzQXV0bykpCisgICAgICAgIHJldHVybiBHcmlkU3Bhbjo6dHJhbnNs
YXRlZERlZmluaXRlR3JpZFNwYW4oMCwgbGFzdExpbmUpOworICAgIHJldHVybiBHcmlkU3Bhbjo6
dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oc3RhcnRJc0F1dG8gPyAwIDogc3RhcnRMaW5lLCBl
bmRJc0F1dG8gPyBsYXN0TGluZSA6IGVuZExpbmUpOworfQorCitHcmlkU3BhbiBSZW5kZXJHcmlk
OjpncmlkU3BhbkZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzPFJlbmRlckdyaWQ+
KGNoaWxkLnBhcmVudCgpKSk7CisKKyAgICBSZW5kZXJHcmlkKiByZW5kZXJHcmlkID0gZG93bmNh
c3Q8UmVuZGVyR3JpZD4oY2hpbGQucGFyZW50KCkpOworICAgIC8vIHxkaXJlY3Rpb258IGlzIHNw
ZWNpZmllZCByZWxhdGl2ZSB0byB0aGlzIGdyaWQsIHN3aXRjaCBpdCBpZiB8Y2hpbGR8J3MgZGly
ZWN0IHBhcmVudCBncmlkCisgICAgLy8gaXMgdXNpbmcgYSBkaWZmZXJlbnQgd3JpdGluZyBtb2Rl
LgorICAgIGRpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlv
bkZvckNoaWxkKCp0aGlzLCAqcmVuZGVyR3JpZCwgZGlyZWN0aW9uKTsKKyAgICBHcmlkU3BhbiBz
cGFuID0gY2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgPyByZW5kZXJHcmlkLT5ncmlkU3Bh
bkZvck91dE9mRmxvd0NoaWxkKGNoaWxkLCBkaXJlY3Rpb24pIDogcmVuZGVyR3JpZC0+Y3VycmVu
dEdyaWQoKS5ncmlkSXRlbVNwYW4oY2hpbGQsIGRpcmVjdGlvbik7CisKKyAgICB3aGlsZSAocmVu
ZGVyR3JpZCAhPSB0aGlzKSB7CisgICAgICAgIEFTU0VSVChpczxSZW5kZXJHcmlkPihyZW5kZXJH
cmlkLT5wYXJlbnQoKSkpOworICAgICAgICBSZW5kZXJHcmlkKiBwYXJlbnQgPSBkb3duY2FzdDxS
ZW5kZXJHcmlkPihyZW5kZXJHcmlkLT5wYXJlbnQoKSk7CisKKyAgICAgICAgYm9vbCBpc1N1Ymdy
aWQgPSByZW5kZXJHcmlkLT5pc1N1YmdyaWQoZGlyZWN0aW9uKTsKKworICAgICAgICBkaXJlY3Rp
b24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZCgqcGFy
ZW50LCAqcmVuZGVyR3JpZCwgZGlyZWN0aW9uKTsKKworICAgICAgICBHcmlkU3BhbiBwYXJlbnRT
cGFuID0gcmVuZGVyR3JpZC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgPyBwYXJlbnQtPmdyaWRT
cGFuRm9yT3V0T2ZGbG93Q2hpbGQoKnJlbmRlckdyaWQsIGRpcmVjdGlvbikgOiAgcGFyZW50LT5j
dXJyZW50R3JpZCgpLmdyaWRJdGVtU3BhbigqcmVuZGVyR3JpZCwgZGlyZWN0aW9uKTsKKyAgICAg
ICAgaWYgKGlzU3ViZ3JpZCkKKyAgICAgICAgICAgIHNwYW4udHJhbnNsYXRlVG8ocGFyZW50U3Bh
biwgR3JpZExheW91dEZ1bmN0aW9uczo6aXNTdWJncmlkUmV2ZXJzZWREaXJlY3Rpb24oKnBhcmVu
dCwgZGlyZWN0aW9uLCAqcmVuZGVyR3JpZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBz
cGFuID0gcGFyZW50U3BhbjsKKyAgICAgICAgcmVuZGVyR3JpZCA9IHBhcmVudDsKKyAgICB9Cisg
ICAgcmV0dXJuIHNwYW47Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IGUyMzBiMTNkYThhMmRjZWU5NGE5NzE2ZDQxMGQ4
NjE0OWFlZDlhYjQuLmMwMDZhNjA2M2RiMDhkMjUxOTUxMDc1N2QyNzg4ZTU5MzU4NWU0ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtODIsNiArODIsMjUgQEAgcHVi
bGljOgogCiAgICAgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBjb250ZW50QWxpZ25tZW50KEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAKKyAgICAvLyBDb21wdXRlcyB0aGUgc3Bh
biByZWxhdGl2ZSB0byB0aGlzIFJlbmRlckdyaWQsIGV2ZW4gaWYgdGhlIFJlbmRlckJveCBpcyBh
IGNoaWxkCisgICAgLy8gb2YgYSBkZXNjZW5kYW50IHN1YmdyaWQuCisgICAgR3JpZFNwYW4gZ3Jp
ZFNwYW5Gb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24p
IGNvbnN0OworCisgICAgYm9vbCBpc1N1YmdyaWQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBj
b25zdDsKKyAgICBib29sIGlzU3ViZ3JpZFJvd3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIGlzU3ViZ3JpZChGb3JSb3dzKTsKKyAgICB9CisgICAgYm9vbCBpc1N1YmdyaWRDb2x1bW5z
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBpc1N1YmdyaWQoRm9yQ29sdW1ucyk7Cisg
ICAgfQorCisgICAgY29uc3QgR3JpZCYgY3VycmVudEdyaWQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZ3JpZDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgSXRlbVBvc2l0aW9uIHNl
bGZBbGlnbm1lbnROb3JtYWxCZWhhdmlvcihjb25zdCBSZW5kZXJCb3gqIGNoaWxkID0gbnVsbHB0
cikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CkBAIC0xNTAsOCArMTY5LDYgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldExvZ2ljYWxQb3NpdGlvbkZvckNoaWxkKFJlbmRlckJveCYpIGNvbnN0OwogICAg
IHZvaWQgc2V0TG9naWNhbE9mZnNldEZvckNoaWxkKFJlbmRlckJveCYsIEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbikgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0Rm9yQ2hpbGQo
Y29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKLSAgICBH
cmlkQXJlYSBjYWNoZWRHcmlkQXJlYShjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKLSAgICBHcmlk
U3BhbiBjYWNoZWRHcmlkU3Bhbihjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24pIGNvbnN0OwogCiAgICAgTGF5b3V0VW5pdCBncmlkQXJlYUJyZWFkdGhGb3JDaGlsZElu
Y2x1ZGluZ0FsaWdubWVudE9mZnNldHMoY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uKSBjb25zdDsKIApAQCAtMTkzLDYgKzIxMCw5IEBAIHByaXZhdGU6CiAKICAgICBW
ZWN0b3I8UmVuZGVyQm94Kj4gY29tcHV0ZUFzcGVjdFJhdGlvRGVwZW5kZW50QW5kQmFzZWxpbmVJ
dGVtcygpOwogCisgICAgR3JpZFNwYW4gZ3JpZFNwYW5Gb3JPdXRPZkZsb3dDaGlsZChjb25zdCBS
ZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0OworICAgIGJvb2wgY29t
cHV0ZUdyaWRQb3NpdGlvbnNGb3JPdXRPZkZsb3dDaGlsZChjb25zdCBSZW5kZXJCb3gmLCBHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24sIGludCYsIGJvb2wmLCBpbnQmLCBib29sJikgY29uc3Q7CisK
ICAgICBHcmlkIG1fZ3JpZDsKIAogICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSBtX3RyYWNr
U2l6aW5nQWxnb3JpdGhtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEu
aAppbmRleCBiN2ViZDFkOTYxZGU4ODI2ZmI4MzAzMzA5YjhlNjM1MmYyMGY5ZWFiLi5iZDJjZmZj
YTFlOGZlZGE3N2RmN2UxY2NkNzExZWNkYzNiNDVlYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvR3JpZEFyZWEuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB1
bnNpZ25lZCBpbnRlZ2VyU3BhbigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQoaXNUcmFu
c2xhdGVkRGVmaW5pdGUoKSk7CisgICAgICAgIEFTU0VSVCghaXNJbmRlZmluaXRlKCkpOwogICAg
ICAgICByZXR1cm4gbV9lbmRMaW5lIC0gbV9zdGFydExpbmU7CiAgICAgfQogCkBAIC0xNDEsNiAr
MTQxLDMxIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fZW5kTGluZSA+IDApOwogICAgIH0K
IAorICAgIC8vIE1vdmVzIHRoaXMgc3BhbiB0byBiZSBpbiB0aGUgc2FtZSBjb29yZGluYXRlIHNw
YWNlIGFzIHxwYXJlbnR8LgorICAgIC8vIElmIHJldmVyc2UgaXMgc3BlY2lmaWVkLCB0aGVuIHN3
YXBzIHRoZSBkaXJlY3Rpb24gdG8gaGFuZGxlIFJUTC9MVFIgY2hhbmdlcy4KKyAgICB2b2lkIHRy
YW5zbGF0ZVRvKGNvbnN0IEdyaWRTcGFuJiBwYXJlbnQsIGJvb2wgcmV2ZXJzZSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHJhbnNsYXRlZERlZmluaXRlKTsKKyAgICAgICAgQVNT
RVJUKHBhcmVudC5tX3R5cGUgPT0gVHJhbnNsYXRlZERlZmluaXRlKTsKKyAgICAgICAgaWYgKHJl
dmVyc2UpIHsKKyAgICAgICAgICAgIGludCBzdGFydCA9IG1fc3RhcnRMaW5lOworICAgICAgICAg
ICAgbV9zdGFydExpbmUgPSBwYXJlbnQuZW5kTGluZSgpIC0gbV9lbmRMaW5lOworICAgICAgICAg
ICAgbV9lbmRMaW5lID0gcGFyZW50LmVuZExpbmUoKSAtIHN0YXJ0OworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9zdGFydExpbmUgKz0gcGFyZW50Lm1fc3RhcnRMaW5lOworICAgICAg
ICAgICAgbV9lbmRMaW5lICs9IHBhcmVudC5tX3N0YXJ0TGluZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHZvaWQgY2xhbXAoaW50IG1heCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUg
IT0gSW5kZWZpbml0ZSk7CisgICAgICAgIG1fc3RhcnRMaW5lID0gc3RkOjptYXgobV9zdGFydExp
bmUsIDApOworICAgICAgICBtX2VuZExpbmUgPSBzdGQ6Om1heChzdGQ6Om1pbihtX2VuZExpbmUs
IG1heCksIDEpOworICAgICAgICBpZiAobV9zdGFydExpbmUgPj0gbV9lbmRMaW5lKQorICAgICAg
ICAgICAgbV9zdGFydExpbmUgPSBtX2VuZExpbmUgLSAxOworICAgIH0KKwogcHJpdmF0ZToKIAog
ICAgIGVudW0gR3JpZFNwYW5UeXBlIHtVbnRyYW5zbGF0ZWREZWZpbml0ZSwgVHJhbnNsYXRlZERl
ZmluaXRlLCBJbmRlZmluaXRlfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAKaW5kZXggMzNjNzAzYzVmMDZmYTY1
YTNmNmZiZGEyZGU3NmRlYTNmYjYxYjhkZS4uMzE0MjEyYzQ3MDdjMjQzNTRlZDIyYzlhOGYxNDk2
NWQ0ZDYwODRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dy
aWRQb3NpdGlvbnNSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1
ZGUgIkdyaWRBcmVhLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCisjaW5jbHVkZSAiUmVuZGVy
R3JpZC5oIgogI2luY2x1ZGUgPGNzdGRsaWI+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1
Miw2ICsxNTMsMTYgQEAgdW5zaWduZWQgTmFtZWRMaW5lQ29sbGVjdGlvbjo6Zmlyc3RQb3NpdGlv
bigpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6bWluKGZpcnN0RXhwbGljaXRQb3NpdGlvbigpLCBt
X2ltcGxpY2l0TmFtZWRMaW5lc0luZGV4ZXMtPmF0KGZpcnN0TGluZSkpOwogfQogCisvLyBodHRw
czovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWdyaWQtMi8jaW5kZWZpbml0ZS1ncmlkLXNwYW4KK3N0
YXRpYyBib29sIGlzSW5kZWZpbml0ZVNwYW4oR3JpZFBvc2l0aW9uJiBpbml0aWFsUG9zaXRpb24s
IEdyaWRQb3NpdGlvbiYgZmluYWxQb3NpdGlvbikKK3sKKyAgICBpZiAoaW5pdGlhbFBvc2l0aW9u
LmlzQXV0bygpKQorICAgICAgICByZXR1cm4gIWZpbmFsUG9zaXRpb24uaXNTcGFuKCk7CisgICAg
aWYgKGZpbmFsUG9zaXRpb24uaXNBdXRvKCkpCisgICAgICAgIHJldHVybiAhaW5pdGlhbFBvc2l0
aW9uLmlzU3BhbigpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIHZvaWQgYWRqdXN0
R3JpZFBvc2l0aW9uc0Zyb21TdHlsZShjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBHcmlkUG9zaXRpb24mIGluaXRpYWxQb3NpdGlv
biwgR3JpZFBvc2l0aW9uJiBmaW5hbFBvc2l0aW9uKQogewogICAgIGJvb2wgaXNGb3JDb2x1bW5z
ID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM7CkBAIC0xNjgsMjEgKzE3OSw0NCBAQCBzdGF0aWMg
dm9pZCBhZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0
ZW0sIEdyaWRUcmFja1NpegogICAgICAgICBmaW5hbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlvbigx
LCBTdHJpbmcoKSk7CiAgICAgaWYgKGZpbmFsUG9zaXRpb24uaXNBdXRvKCkgJiYgaW5pdGlhbFBv
c2l0aW9uLmlzU3BhbigpICYmICFpbml0aWFsUG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVs
bCgpKQogICAgICAgICBpbml0aWFsUG9zaXRpb24uc2V0U3BhblBvc2l0aW9uKDEsIFN0cmluZygp
KTsKKworICAgIGlmIChpc0luZGVmaW5pdGVTcGFuKGluaXRpYWxQb3NpdGlvbiwgZmluYWxQb3Np
dGlvbikgJiYgaXM8UmVuZGVyR3JpZD4oZ3JpZEl0ZW0pICYmIGRvd25jYXN0PFJlbmRlckdyaWQ+
KGdyaWRJdGVtKS5pc1N1YmdyaWQoZGlyZWN0aW9uKSkgeworICAgICAgICAvLyBJbmRlZmluaXRl
IHNwYW4gZm9yIGFuIGl0ZW0gdGhhdCBpcyBzdWJncmlkZGVkIGluIHRoaXMgYXhpcy4KKyAgICAg
ICAgaW50IGxpbmVDb3VudCA9IChpc0ZvckNvbHVtbnMgPyBncmlkSXRlbS5zdHlsZSgpLm9yZGVy
ZWROYW1lZEdyaWRDb2x1bW5MaW5lcygpIDogZ3JpZEl0ZW0uc3R5bGUoKS5vcmRlcmVkTmFtZWRH
cmlkUm93TGluZXMoKSkuc2l6ZSgpOworCisgICAgICAgIGlmIChpbml0aWFsUG9zaXRpb24uaXNB
dXRvKCkpIHsKKyAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIHBvc2l0aW9uIHRvIHNwYW4gPGxp
bmUgbmFtZXMgLSAxPgorICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLnNldFNwYW5Qb3NpdGlv
bihzdGQ6Om1heCgxLCBsaW5lQ291bnQgLSAxKSwgIiIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gU2V0IGZpbmFsIHBvc2l0aW9uIHRvIHNwYW4gPGxpbmUgbmFtZXMgLSAxPgor
ICAgICAgICAgICAgZmluYWxQb3NpdGlvbi5zZXRTcGFuUG9zaXRpb24oc3RkOjptYXgoMSwgbGlu
ZUNvdW50IC0gMSksICIiKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAotdW5zaWduZWQgR3JpZFBv
c2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBSZW5kZXJTdHls
ZSYgZ3JpZENvbnRhaW5lclN0eWxlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCit1
bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KGNv
bnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWluPHVu
c2lnbmVkPihzdGQ6Om1heChncmlkQ29udGFpbmVyU3R5bGUuZ3JpZENvbHVtbnMoKS5zaXplKCkg
KyBhdXRvUmVwZWF0VHJhY2tzQ291bnQsIGdyaWRDb250YWluZXJTdHlsZS5uYW1lZEdyaWRBcmVh
Q29sdW1uQ291bnQoKSksIEdyaWRQb3NpdGlvbjo6bWF4KCkpOworICAgIGlmIChncmlkQ29udGFp
bmVyLmlzU3ViZ3JpZENvbHVtbnMoKSkgeworICAgICAgICBjb25zdCBSZW5kZXJHcmlkJiBwYXJl
bnQgPSAqZG93bmNhc3Q8UmVuZGVyR3JpZD4oZ3JpZENvbnRhaW5lci5wYXJlbnQoKSk7CisgICAg
ICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rp
b25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZChwYXJlbnQsIGdyaWRDb250YWluZXIsIEZv
ckNvbHVtbnMpOworICAgICAgICByZXR1cm4gcGFyZW50LmdyaWRTcGFuRm9yQ2hpbGQoZ3JpZENv
bnRhaW5lciwgZGlyZWN0aW9uKS5pbnRlZ2VyU3BhbigpOworICAgIH0KKyAgICByZXR1cm4gc3Rk
OjptaW48dW5zaWduZWQ+KHN0ZDo6bWF4KGdyaWRDb250YWluZXIuc3R5bGUoKS5ncmlkQ29sdW1u
cygpLnNpemUoKSArIGdyaWRDb250YWluZXIuYXV0b1JlcGVhdENvdW50Rm9yRGlyZWN0aW9uKEZv
ckNvbHVtbnMpLCBncmlkQ29udGFpbmVyLnN0eWxlKCkubmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50
KCkpLCBHcmlkUG9zaXRpb246Om1heCgpKTsKIH0KIAotdW5zaWduZWQgR3JpZFBvc2l0aW9uc1Jl
c29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRh
aW5lclN0eWxlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCit1bnNpZ25lZCBHcmlk
UG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRlckdyaWQm
IGdyaWRDb250YWluZXIpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihzdGQ6Om1h
eChncmlkQ29udGFpbmVyU3R5bGUuZ3JpZFJvd3MoKS5zaXplKCkgKyBhdXRvUmVwZWF0VHJhY2tz
Q291bnQsIGdyaWRDb250YWluZXJTdHlsZS5uYW1lZEdyaWRBcmVhUm93Q291bnQoKSksIEdyaWRQ
b3NpdGlvbjo6bWF4KCkpOworICAgIGlmIChncmlkQ29udGFpbmVyLmlzU3ViZ3JpZFJvd3MoKSkg
eworICAgICAgICBjb25zdCBSZW5kZXJHcmlkJiBwYXJlbnQgPSAqZG93bmNhc3Q8UmVuZGVyR3Jp
ZD4oZ3JpZENvbnRhaW5lci5wYXJlbnQoKSk7CisgICAgICAgIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBkaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rpb25G
b3JDaGlsZChwYXJlbnQsIGdyaWRDb250YWluZXIsIEZvclJvd3MpOworICAgICAgICByZXR1cm4g
cGFyZW50LmdyaWRTcGFuRm9yQ2hpbGQoZ3JpZENvbnRhaW5lciwgZGlyZWN0aW9uKS5pbnRlZ2Vy
U3BhbigpOworICAgIH0KKyAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KHN0ZDo6bWF4KGdy
aWRDb250YWluZXIuc3R5bGUoKS5ncmlkUm93cygpLnNpemUoKSArIGdyaWRDb250YWluZXIuYXV0
b1JlcGVhdENvdW50Rm9yRGlyZWN0aW9uKEZvclJvd3MpLCBncmlkQ29udGFpbmVyLnN0eWxlKCku
bmFtZWRHcmlkQXJlYVJvd0NvdW50KCkpLCBHcmlkUG9zaXRpb246Om1heCgpKTsKIH0KIAotc3Rh
dGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGNvbnN0IFJlbmRlclN0eWxlJiBn
cmlkQ29udGFpbmVyU3R5bGUsIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1Jl
cGVhdFRyYWNrc0NvdW50KQorc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFNpemVGb3JTaWRl
KGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIsIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkK
IHsKLSAgICByZXR1cm4gaXNDb2x1bW5TaWRlKHNpZGUpID8gR3JpZFBvc2l0aW9uc1Jlc29sdmVy
OjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChncmlkQ29udGFpbmVyU3R5bGUsIGF1dG9SZXBlYXRU
cmFja3NDb3VudCkgOiBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50
KGdyaWRDb250YWluZXJTdHlsZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICByZXR1cm4g
aXNDb2x1bW5TaWRlKHNpZGUpID8gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRD
b2x1bW5Db3VudChncmlkQ29udGFpbmVyKSA6IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGlj
aXRHcmlkUm93Q291bnQoZ3JpZENvbnRhaW5lcik7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBsb29r
QWhlYWRGb3JOYW1lZEdyaWRMaW5lKGludCBzdGFydCwgdW5zaWduZWQgbnVtYmVyT2ZMaW5lcywg
dW5zaWduZWQgZ3JpZExhc3RMaW5lLCBOYW1lZExpbmVDb2xsZWN0aW9uJiBsaW5lc0NvbGxlY3Rp
b24pCkBAIC0yMjQsMTIgKzI1OCwxMiBAQCBzdGF0aWMgaW50IGxvb2tCYWNrRm9yTmFtZWRHcmlk
TGluZShpbnQgZW5kLCB1bnNpZ25lZCBudW1iZXJPZkxpbmVzLCBpbnQgZ3JpZExhcwogICAgIHJl
dHVybiBzdGFydCArIDE7CiB9CiAKLXN0YXRpYyBpbnQgcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3Np
dGlvbkZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBjb25z
dCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUsIHVuc2lnbmVk
IGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3N0YXRpYyBpbnQgcmVzb2x2ZU5hbWVkR3JpZExpbmVQ
b3NpdGlvbkZyb21TdHlsZShjb25zdCBSZW5kZXJHcmlkJiBncmlkQ29udGFpbmVyLCBjb25zdCBH
cmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7CiAgICAgQVNT
RVJUKCFwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCkuaXNOdWxsKCkpOwogCi0gICAgdW5zaWduZWQg
bGFzdExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyU3R5bGUsIHNp
ZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBsaW5l
c0NvbGxlY3Rpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCks
IGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGluZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50
KTsKKyAgICB1bnNpZ25lZCBsYXN0TGluZSA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRD
b250YWluZXIsIHNpZGUpOworICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gbGluZXNDb2xsZWN0aW9u
KGdyaWRDb250YWluZXIuc3R5bGUoKSwgcG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLCBkaXJlY3Rp
b25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGdyaWRDb250YWluZXIuYXV0b1JlcGVhdENvdW50
Rm9yRGlyZWN0aW9uKGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpKSk7CiAKICAgICBpZiAocG9zaXRp
b24uaXNQb3NpdGl2ZSgpKQogICAgICAgICByZXR1cm4gbG9va0FoZWFkRm9yTmFtZWRHcmlkTGlu
ZSgwLCBzdGQ6OmFicyhwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSksIGxhc3RMaW5lLCBsaW5l
c0NvbGxlY3Rpb24pOwpAQCAtMjUwLDE5ICsyODQsMTkgQEAgc3RhdGljIEdyaWRTcGFuIGRlZmlu
aXRlR3JpZFNwYW5XaXRoTmFtZWRMaW5lU3BhbkFnYWluc3RPcHBvc2l0ZShpbnQgb3Bwb3NpdGVM
aW4KICAgICByZXR1cm4gR3JpZFNwYW46OnVudHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oc3Rh
cnQsIGVuZCk7CiB9CiAKLXN0YXRpYyBHcmlkU3BhbiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0
aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWlu
ZXJTdHlsZSwgaW50IG9wcG9zaXRlTGluZSwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbiwg
R3JpZFBvc2l0aW9uU2lkZSBzaWRlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCitz
dGF0aWMgR3JpZFNwYW4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0
ZVBvc2l0aW9uKGNvbnN0IFJlbmRlckdyaWQmIGdyaWRDb250YWluZXIsIGludCBvcHBvc2l0ZUxp
bmUsIGNvbnN0IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkK
IHsKICAgICBBU1NFUlQocG9zaXRpb24uaXNTcGFuKCkpOwogICAgIEFTU0VSVCghcG9zaXRpb24u
bmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKTsKICAgICAvLyBOZWdhdGl2ZSBwb3NpdGlvbnMgYXJl
IG5vdCBhbGxvd2VkIHBlciB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgc2hvdWxkIGhhdmUgYmVlbiBo
YW5kbGVkIGR1cmluZyBwYXJzaW5nLgogICAgIEFTU0VSVChwb3NpdGlvbi5zcGFuUG9zaXRpb24o
KSA+IDApOwogCi0gICAgdW5zaWduZWQgbGFzdExpbmUgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lk
ZShncmlkQ29udGFpbmVyU3R5bGUsIHNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAg
TmFtZWRMaW5lQ29sbGVjdGlvbiBsaW5lc0NvbGxlY3Rpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBw
b3NpdGlvbi5uYW1lZEdyaWRMaW5lKCksIGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpLCBsYXN0TGlu
ZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICB1bnNpZ25lZCBsYXN0TGluZSA9IGV4cGxp
Y2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXIsIHNpZGUpOworICAgIE5hbWVkTGluZUNv
bGxlY3Rpb24gbGluZXNDb2xsZWN0aW9uKGdyaWRDb250YWluZXIuc3R5bGUoKSwgcG9zaXRpb24u
bmFtZWRHcmlkTGluZSgpLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGdyaWRD
b250YWluZXIuYXV0b1JlcGVhdENvdW50Rm9yRGlyZWN0aW9uKGRpcmVjdGlvbkZyb21TaWRlKHNp
ZGUpKSk7CiAgICAgcmV0dXJuIGRlZmluaXRlR3JpZFNwYW5XaXRoTmFtZWRMaW5lU3BhbkFnYWlu
c3RPcHBvc2l0ZShvcHBvc2l0ZUxpbmUsIHBvc2l0aW9uLCBzaWRlLCBsYXN0TGluZSwgbGluZXND
b2xsZWN0aW9uKTsKIH0KIAotc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2Fp
bnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0eWxl
LCBpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9z
aXRpb25TaWRlIHNpZGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3N0YXRpYyBH
cmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3Qg
UmVuZGVyR3JpZCYgZ3JpZENvbnRhaW5lciwgaW50IG9wcG9zaXRlTGluZSwgY29uc3QgR3JpZFBv
c2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQogewogICAgIGlmIChwb3Np
dGlvbi5pc0F1dG8oKSkgewogICAgICAgICBpZiAoaXNTdGFydFNpZGUoc2lkZSkpCkBAIC0yNzUs
NyArMzA5LDcgQEAgc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bw
b3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgZ3IKIAogICAgIGlmICghcG9zaXRpb24u
bmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIHNwYW4gMiAnYycgLT4gd2Ug
bmVlZCB0byBmaW5kIHRoZSBhcHByb3ByaWF0ZSBncmlkIGxpbmUgYmVmb3JlIC8gYWZ0ZXIgb3Vy
IG9wcG9zaXRlIHBvc2l0aW9uLgotICAgICAgICByZXR1cm4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQ
b3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGdyaWRDb250YWluZXJTdHlsZSwgb3Bwb3Np
dGVMaW5lLCBwb3NpdGlvbiwgc2lkZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKKyAgICAgICAg
cmV0dXJuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlv
bihncmlkQ29udGFpbmVyLCBvcHBvc2l0ZUxpbmUsIHBvc2l0aW9uLCBzaWRlKTsKICAgICB9CiAK
ICAgICAvLyAnc3BhbiAxJyBpcyBjb250YWluZWQgaW5zaWRlIGEgc2luZ2xlIGdyaWQgdHJhY2sg
cmVnYXJkbGVzcyBvZiB0aGUgZGlyZWN0aW9uLgpAQCAtMzE1LDIxICszNDksMjEgQEAgdW5zaWdu
ZWQgR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKGNvbnN0
IFJlbmRlckJveCYgZ3JpZEkKICAgICByZXR1cm4gcG9zaXRpb24uc3BhblBvc2l0aW9uKCk7CiB9
CiAKLXN0YXRpYyBpbnQgcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBH
cmlkUG9zaXRpb25TaWRlIHNpZGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKK3N0
YXRpYyBpbnQgcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25zdCBSZW5kZXJHcmlkJiBn
cmlkQ29udGFpbmVyLCBjb25zdCBHcmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25T
aWRlIHNpZGUpCiB7CiAgICAgc3dpdGNoIChwb3NpdGlvbi50eXBlKCkpIHsKICAgICBjYXNlIEV4
cGxpY2l0UG9zaXRpb246IHsKICAgICAgICAgQVNTRVJUKHBvc2l0aW9uLmludGVnZXJQb3NpdGlv
bigpKTsKIAogICAgICAgICBpZiAoIXBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKS5pc051bGwoKSkK
LSAgICAgICAgICAgIHJldHVybiByZXNvbHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uRnJvbVN0eWxl
KGdyaWRDb250YWluZXJTdHlsZSwgcG9zaXRpb24sIHNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3Vu
dCk7CisgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkZyb21T
dHlsZShncmlkQ29udGFpbmVyLCBwb3NpdGlvbiwgc2lkZSk7CiAKICAgICAgICAgLy8gSGFuZGxl
IDxpbnRlZ2VyPiBleHBsaWNpdCBwb3NpdGlvbi4KICAgICAgICAgaWYgKHBvc2l0aW9uLmlzUG9z
aXRpdmUoKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbi5pbnRlZ2VyUG9zaXRpb24oKSAt
IDE7CiAKICAgICAgICAgdW5zaWduZWQgcmVzb2x2ZWRQb3NpdGlvbiA9IHN0ZDo6YWJzKHBvc2l0
aW9uLmludGVnZXJQb3NpdGlvbigpKSAtIDE7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9m
VHJhY2sgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyU3R5bGUsIHNpZGUs
IGF1dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVHJh
Y2sgPSBleHBsaWNpdEdyaWRTaXplRm9yU2lkZShncmlkQ29udGFpbmVyLCBzaWRlKTsKIAogICAg
ICAgICByZXR1cm4gZW5kT2ZUcmFjayAtIHJlc29sdmVkUG9zaXRpb247CiAgICAgfQpAQCAtMzQx
LDE0ICszNzUsMTQgQEAgc3RhdGljIGludCByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGNv
bnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGMKICAgICAgICAgU3RyaW5nIG5h
bWVkR3JpZExpbmUgPSBwb3NpdGlvbi5uYW1lZEdyaWRMaW5lKCk7CiAgICAgICAgIEFTU0VSVCgh
cG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLmlzTnVsbCgpKTsKIAotICAgICAgICB1bnNpZ25lZCBs
YXN0TGluZSA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJTdHlsZSwgc2lk
ZSwgYXV0b1JlcGVhdFRyYWNrc0NvdW50KTsKLSAgICAgICAgTmFtZWRMaW5lQ29sbGVjdGlvbiBp
bXBsaWNpdExpbmVzKGdyaWRDb250YWluZXJTdHlsZSwgaW1wbGljaXROYW1lZEdyaWRMaW5lRm9y
U2lkZShuYW1lZEdyaWRMaW5lLCBzaWRlKSwgZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSksIGxhc3RM
aW5lLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgICAgICB1bnNpZ25lZCBsYXN0TGluZSA9
IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXIsIHNpZGUpOworICAgICAgICBO
YW1lZExpbmVDb2xsZWN0aW9uIGltcGxpY2l0TGluZXMoZ3JpZENvbnRhaW5lci5zdHlsZSgpLCBp
bXBsaWNpdE5hbWVkR3JpZExpbmVGb3JTaWRlKG5hbWVkR3JpZExpbmUsIHNpZGUpLCBkaXJlY3Rp
b25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGdyaWRDb250YWluZXIuYXV0b1JlcGVhdENvdW50
Rm9yRGlyZWN0aW9uKGRpcmVjdGlvbkZyb21TaWRlKHNpZGUpKSk7CiAgICAgICAgIGlmIChpbXBs
aWNpdExpbmVzLmhhc05hbWVkTGluZXMoKSkKICAgICAgICAgICAgIHJldHVybiBpbXBsaWNpdExp
bmVzLmZpcnN0UG9zaXRpb24oKTsKIAogICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHRoZXJlIGlz
IGEgbmFtZWQgbGluZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSwgY29udHJpYnV0ZXMgdGhlIGZp
cnN0IHN1Y2ggbGluZSB0byB0aGUgZ3JpZAogICAgICAgICAvLyBpdGVtJ3MgcGxhY2VtZW50Lgot
ICAgICAgICBOYW1lZExpbmVDb2xsZWN0aW9uIGV4cGxpY2l0TGluZXMoZ3JpZENvbnRhaW5lclN0
eWxlLCBuYW1lZEdyaWRMaW5lLCBkaXJlY3Rpb25Gcm9tU2lkZShzaWRlKSwgbGFzdExpbmUsIGF1
dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgICAgIE5hbWVkTGluZUNvbGxlY3Rpb24gZXhwbGlj
aXRMaW5lcyhncmlkQ29udGFpbmVyLnN0eWxlKCksIG5hbWVkR3JpZExpbmUsIGRpcmVjdGlvbkZy
b21TaWRlKHNpZGUpLCBsYXN0TGluZSwgZ3JpZENvbnRhaW5lci5hdXRvUmVwZWF0Q291bnRGb3JE
aXJlY3Rpb24oZGlyZWN0aW9uRnJvbVNpZGUoc2lkZSkpKTsKICAgICAgICAgaWYgKGV4cGxpY2l0
TGluZXMuaGFzTmFtZWRMaW5lcygpKQogICAgICAgICAgICAgcmV0dXJuIGV4cGxpY2l0TGluZXMu
Zmlyc3RQb3NpdGlvbigpOwogCkBAIC0zNjUsOCArMzk5LDExIEBAIHN0YXRpYyBpbnQgcmVzb2x2
ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRhaW5lclN0
eWxlLCBjCiAgICAgcmV0dXJuIDA7CiB9CiAKLUdyaWRTcGFuIEdyaWRQb3NpdGlvbnNSZXNvbHZl
cjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRD
b250YWluZXJTdHlsZSwgY29uc3QgUmVuZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50KQorR3Jp
ZFNwYW4gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHls
ZShjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uKQogeworICAgIGF1dG8qIGdyaWRDb250YWluZXIgPSBkb3duY2FzdDxSZW5kZXJHcmlk
PihncmlkSXRlbS5jb250YWluaW5nQmxvY2soKSk7CisgICAgQVNTRVJUKGdyaWRDb250YWluZXIp
OworCiAgICAgR3JpZFBvc2l0aW9uIGluaXRpYWxQb3NpdGlvbiwgZmluYWxQb3NpdGlvbjsKICAg
ICBhZGp1c3RHcmlkUG9zaXRpb25zRnJvbVN0eWxlKGdyaWRJdGVtLCBkaXJlY3Rpb24sIGluaXRp
YWxQb3NpdGlvbiwgZmluYWxQb3NpdGlvbik7CiAKQEAgLTM3OSwxOCArNDE2LDE4IEBAIEdyaWRT
cGFuIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUo
Y29uc3QgUmVuZGVyU3R5bGUmCiAKICAgICBpZiAoaW5pdGlhbFBvc2l0aW9uLnNob3VsZEJlUmVz
b2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigpKSB7CiAgICAgICAgIC8vIEluZmVyIHRoZSBw
b3NpdGlvbiBmcm9tIHRoZSBmaW5hbCBwb3NpdGlvbiAoJ2F1dG8gLyAxJyBvciAnc3BhbiAyIC8g
MycgY2FzZSkuCi0gICAgICAgIGF1dG8gZW5kTGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9t
U3R5bGUoZ3JpZENvbnRhaW5lclN0eWxlLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUsIGF1dG9S
ZXBlYXRUcmFja3NDb3VudCk7Ci0gICAgICAgIHJldHVybiByZXNvbHZlR3JpZFBvc2l0aW9uQWdh
aW5zdE9wcG9zaXRlUG9zaXRpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBlbmRMaW5lLCBpbml0aWFs
UG9zaXRpb24sIGluaXRpYWxTaWRlLCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOworICAgICAgICBh
dXRvIGVuZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKCpncmlkQ29udGFpbmVy
LCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUpOworICAgICAgICByZXR1cm4gcmVzb2x2ZUdyaWRQ
b3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKCpncmlkQ29udGFpbmVyLCBlbmRMaW5lLCBp
bml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlKTsKICAgICB9CiAKICAgICBpZiAoZmluYWxQb3Np
dGlvbi5zaG91bGRCZVJlc29sdmVkQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKSkgewogICAgICAg
ICAvLyBJbmZlciBvdXIgcG9zaXRpb24gZnJvbSB0aGUgaW5pdGlhbCBwb3NpdGlvbiAoJzEgLyBh
dXRvJyBvciAnMyAvIHNwYW4gMicgY2FzZSkuCi0gICAgICAgIGF1dG8gc3RhcnRMaW5lID0gcmVz
b2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUsIGluaXRpYWxQb3Np
dGlvbiwgaW5pdGlhbFNpZGUsIGF1dG9SZXBlYXRUcmFja3NDb3VudCk7Ci0gICAgICAgIHJldHVy
biByZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oZ3JpZENvbnRhaW5l
clN0eWxlLCBzdGFydExpbmUsIGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSwgYXV0b1JlcGVhdFRy
YWNrc0NvdW50KTsKKyAgICAgICAgYXV0byBzdGFydExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9u
RnJvbVN0eWxlKCpncmlkQ29udGFpbmVyLCBpbml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlKTsK
KyAgICAgICAgcmV0dXJuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlv
bigqZ3JpZENvbnRhaW5lciwgc3RhcnRMaW5lLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUpOwog
ICAgIH0KIAotICAgIGludCBzdGFydExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxl
KGdyaWRDb250YWluZXJTdHlsZSwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lkZSwgYXV0b1Jl
cGVhdFRyYWNrc0NvdW50KTsKLSAgICBpbnQgZW5kTGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25G
cm9tU3R5bGUoZ3JpZENvbnRhaW5lclN0eWxlLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUsIGF1
dG9SZXBlYXRUcmFja3NDb3VudCk7CisgICAgaW50IHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9z
aXRpb25Gcm9tU3R5bGUoKmdyaWRDb250YWluZXIsIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNp
ZGUpOworICAgIGludCBlbmRMaW5lID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZSgqZ3Jp
ZENvbnRhaW5lciwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlKTsKIAogICAgIGlmIChzdGFydExp
bmUgPiBlbmRMaW5lKQogICAgICAgICBzdGQ6OnN3YXAoc3RhcnRMaW5lLCBlbmRMaW5lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVz
b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVz
b2x2ZXIuaAppbmRleCA2MjNiNjJjNmMyNDFkYzEzMDI1MDc4ZDE1MWY2YTk5MGQ1ZGMxMDZlLi43
MjQxOTU3NzM1NDEzZGQxMWExYmQ0MDJhYjIyYjBkZTU2MzcyYTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5oCkBA
IC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JpZFNwYW47CiBj
bGFzcyBSZW5kZXJCb3g7CitjbGFzcyBSZW5kZXJHcmlkOwogY2xhc3MgUmVuZGVyU3R5bGU7CiAK
IGVudW0gR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHsKQEAgLTczLDkgKzc0LDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBHcmlkUG9zaXRpb25TaWRlIGluaXRpYWxQb3NpdGlvblNpZGUoR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uKTsKICAgICBzdGF0aWMgR3JpZFBvc2l0aW9uU2lkZSBmaW5hbFBv
c2l0aW9uU2lkZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOwogICAgIHN0YXRpYyB1bnNpZ25l
ZCBzcGFuU2l6ZUZvckF1dG9QbGFjZWRJdGVtKGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbik7Ci0gICAgc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25z
RnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpOwotICAgIHN0
YXRpYyB1bnNpZ25lZCBleHBsaWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBSZW5kZXJTdHlsZSYs
IHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1bW5zQ291bnQpOwotICAgIHN0YXRpYyB1bnNpZ25lZCBl
eHBsaWNpdEdyaWRSb3dDb3VudChjb25zdCBSZW5kZXJTdHlsZSYsIHVuc2lnbmVkIGF1dG9SZXBl
YXRSb3dzQ291bnQpOworICAgIHN0YXRpYyBHcmlkU3BhbiByZXNvbHZlR3JpZFBvc2l0aW9uc0Zy
b21TdHlsZShjb25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOworICAg
IHN0YXRpYyB1bnNpZ25lZCBleHBsaWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBSZW5kZXJHcmlk
Jik7CisgICAgc3RhdGljIHVuc2lnbmVkIGV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRl
ckdyaWQmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCmluZGV4IGYxNjkzNjYyNDU4YTc5OWExYTZkMTA5NWE1ZjI1YzgwMTM0NjUxMTEu
LjdkMjhmODkxOTA0OTMwNWZlOGZiNGI2MGUwYzQwMWUyZmNiMzMzZDMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAyLTE1ICBNYXR0IFdvb2Ry
b3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgSW5oZXJpdCB0cmFjayBjb3Vu
dCBmcm9tIHBhcmVudCBncmlkIGZvciBzdWJncmlkZGVkIGF4ZXMgYW5kIGNsYW1wIGl0ZW0gcGxh
Y2VtZW50IHRvIHRoYXQgZXhwbGljaXQgZ3JpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgY2hhbmdlcyB0byBtYXRjaCBsYXRlc3Qgc3BlYywg
c3VibWl0dGVkIHVwc3RyZWFtIGFzIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0L3B1bGwvMzI2MjkKKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi1leHBlY3RlZC5odG1sOgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwNS1leHBl
Y3RlZC5odG1sOgorCiAyMDIyLTAyLTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ1NTIENvbnRhaW5lciBRdWVyaWVzXSBJbXBsZW1lbnQgZnVsbCBxdWVy
eSBwYXJzZXIgYW5kIGV2YWx1YXRvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAw
Mi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAwMi1leHBlY3RlZC5odG1sCmlu
ZGV4IDA0YzU4Mzk1OTZjOWU1YjA5ZWNjZTI4NGM4Y2M3NTdiNmQxZWY4N2MuLjIzOTkzMjhiZWNj
NGU1NTYyNTJkYjVhZTdjYjAwNGU5M2Q4YTQ4ZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL3N1YmdyaWQvbGluZS1u
YW1lcy0wMDItZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xpbmUtbmFtZXMtMDAyLWV4cGVj
dGVkLmh0bWwKQEAgLTE0LDcgKzE0LDcgQEAgaHRtbCxib2R5IHsKIAogLmdyaWQgewogICBkaXNw
bGF5OiBncmlkOwotICBncmlkOiBhdXRvIC8gW2FdIDUwcHggNTBweCBbYV0gNTBweCA1MHB4IFth
XTsKKyAgZ3JpZDogYXV0byAvIFthXSA1MHB4IDQwcHggW2FdIDEwcHggNTBweCBbYV07CiAgIHBh
ZGRpbmc6IDIwcHggMTBweDsKIH0KIApAQCAtMzIsNyArMzIsNyBAQCB4IHsgYmFja2dyb3VuZDog
Z3JleTsgfQogCiA8ZGl2IGNsYXNzPSJncmlkIj4KICAgPGRpdiBjbGFzcz0ic3ViZ3JpZCI+Ci0g
ICAgPHggc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMyI+PC94PgorICAgIDx4IHN0eWxlPSJncmlk
LWNvbHVtbjogMyAvIDQiPjwveD4KICAgPC9kaXY+CiA8L2Rpdj4KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3Vi
Z3JpZC9saW5lLW5hbWVzLTAwNS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvc3ViZ3JpZC9saW5lLW5hbWVzLTAw
NS1leHBlY3RlZC5odG1sCmluZGV4IDRjN2Y0YjUwZmQxNjYwMTQ4MGUzMjkyNGUxZWFhYTc2Yzgx
YjcwYzYuLmNmZTE4ZDFiMjZlZDZlYjczNTVhN2UwMDI5ZjNlN2Y3NmY1NjZkNmIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1n
cmlkL3N1YmdyaWQvbGluZS1uYW1lcy0wMDUtZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9zdWJncmlkL2xp
bmUtbmFtZXMtMDA1LWV4cGVjdGVkLmh0bWwKQEAgLTExNSw3ICsxMTUsNyBAQCB4IHsKIDxkaXYg
c3R5bGU9ImRpc3BsYXk6Z3JpZDsgd2lkdGg6NTAwcHg7IGdyaWQtYXV0by1jb2x1bW5zOiA1MHB4
OyI+CiA8aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+
PC9pPjxpPjwvaT48aT48L2k+CiAgIDxkaXYgY2xhc3M9InN1YmdyaWQyIj4KLSAgICA8eCBzdHls
ZT0iZ3JpZC1jb2x1bW46IHNwYW4gNCAvIDExIj54PC94PgorICAgIDx4IHN0eWxlPSJncmlkLWNv
bHVtbjogc3BhbiAzIC8gMTEiPng8L3g+CiAgIDwvZGl2PgogPC9kaXY+CiAKQEAgLTEyOSw3ICsx
MjksNyBAQCB4IHsKIDxkaXYgc3R5bGU9ImRpc3BsYXk6Z3JpZDsgZ3JpZDogYXV0byAvIHJlcGVh
dCgxMCwgNTBweCkgcmVwZWF0KDEwLCBbYV0gNTBweCkgW2FdIj4KIDxpPjwvaT48aT48L2k+PGk+
PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT4KICAg
PGRpdiBzdHlsZT0iZGlzcGxheTpncmlkOyBncmlkOmF1dG8vc3ViZ3JpZDsgZ3JpZC1jb2x1bW46
IHNwYW4gMTA7IGdyaWQtcm93OjIiPgotICAgIDx4IHN0eWxlPSJncmlkLWNvbHVtbjogMSAvIDEx
Ij54PC94PgorICAgIDx4IHN0eWxlPSJncmlkLWNvbHVtbjogMTAgLyAxMSI+eDwveD4KICAgPC9k
aXY+CiA8L2Rpdj4KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>