<?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>76015</bug_id>
          
          <creation_ts>2012-01-10 17:45:32 -0800</creation_ts>
          <short_desc>[chromium] Use region reported painted opaque for draw culling</short_desc>
          <delta_ts>2012-01-30 16:29:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>76211</dependson>
          <blocked>76858</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>533532</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-10 17:45:32 -0800</bug_when>
    <thetext>[chromium] Remember region painted opaque in layers and use for draw culling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533534</commentid>
    <comment_count>1</comment_count>
      <attachid>121952</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-10 17:47:39 -0800</bug_when>
    <thetext>Created attachment 121952
Patch

What do you think?

- Allows marking a subset of a layer as opaque and passes it thru to the impl side.
- Integrates it into the CCDrawQuad::drawsOpaque() logic so it will be used for the culling.
- Sets the rect after painting a contents layer with the opaque rect reported back to us
  by skia stuff (it depends on https://bugs.webkit.org/show_bug.cgi?id=74352.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533546</commentid>
    <comment_count>2</comment_count>
      <attachid>121952</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-10 18:05:26 -0800</bug_when>
    <thetext>Comment on attachment 121952
Patch

Attachment 121952 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11148286</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533926</commentid>
    <comment_count>3</comment_count>
      <attachid>121952</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-11 08:48:21 -0800</bug_when>
    <thetext>Comment on attachment 121952
Patch

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

This is good stuff.  (Could you also some culling-related unit tests involving partially opaque quads?)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.h:53
&gt; +    bool drawsOpaque() const { return m_opaqueInSharedQuadState &amp;&amp; m_quadOpaque &amp;&amp; opacity() == 1; }

Would it be better to expose an opaque rect per quad, so that partially opaque quads can still contribute to culling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533945</commentid>
    <comment_count>4</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-11 09:18:37 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.h:53
&gt; &gt; +    bool drawsOpaque() const { return m_opaqueInSharedQuadState &amp;&amp; m_quadOpaque &amp;&amp; opacity() == 1; }
&gt; 
&gt; Would it be better to expose an opaque rect per quad, so that partially opaque quads can still contribute to culling?

Ditto. If we know the opaqueRect() for a quad, and that quad ends up being drawn, then the opaqueRect() should be added to the occludedRegion in CCQuadCuller so that the opaque part of this layer can help cull quads beneath it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534115</commentid>
    <comment_count>5</comment_count>
      <attachid>122066</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-11 12:09:14 -0800</bug_when>
    <thetext>Created attachment 122066
Patch

Expose opaqueRect() on CCDrawQuad, which is the opaque sub-region of the quad. It will be empty if any of the other old drawsOpaque() flags are false.

Added some unit tests for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534122</commentid>
    <comment_count>6</comment_count>
      <attachid>122066</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-11 12:16:36 -0800</bug_when>
    <thetext>Comment on attachment 122066
Patch

Attachment 122066 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11108525</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536181</commentid>
    <comment_count>7</comment_count>
      <attachid>122546</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-14 07:30:18 -0800</bug_when>
    <thetext>Created attachment 122546
Patch

rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537289</commentid>
    <comment_count>8</comment_count>
      <attachid>122546</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-17 12:31:44 -0800</bug_when>
    <thetext>Comment on attachment 122546
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:415
&gt; +    textureUpdater()-&gt;prepareToUpdate(m_paintRect, m_tiler-&gt;tileSize(), m_tiler-&gt;hasBorderTexels(), contentsScale(), &amp;m_opaqueRect);

This doesn&apos;t look right to me.  The texture updater records the opaque rect for the current paint rect, not for the entire layer.  So, if you have a giant opaque layer and then the cursor blinks, the opaque rect will be set to be very small.  Would it make sense to store the opaque rect per tile?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537383</commentid>
    <comment_count>9</comment_count>
      <attachid>122822</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-17 15:16:30 -0800</bug_when>
    <thetext>Created attachment 122822
Patch

- Store an opaque rect in each tile. Constructed from the opaque rect given back from paints.
- CCDrawQuad has an opaqueRect which is typically empty but can be changed by subclass. This is used when opacity == 1 but isOpaque isn&apos;t true
- Each tile&apos;s opaque rect is passed to the CCTileDrawQuad, and set on the CCDrawQuad for the above case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537428</commentid>
    <comment_count>10</comment_count>
      <attachid>122822</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-17 16:13:15 -0800</bug_when>
    <thetext>Comment on attachment 122822
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:277
&gt;          tiledLayer-&gt;syncTextureId(i, j, tile-&gt;managedTexture()-&gt;textureId());
&gt; +        tiledLayer-&gt;setTileOpaqueRect(i, j, tile-&gt;m_opaqueRect);

Can you combine these two functions, so that we only have one function to sync a tile over?

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:373
&gt; +        if (tile-&gt;i() &gt;= left &amp;&amp; tile-&gt;i() &lt;= right &amp;&amp; tile-&gt;j() &gt;= top &amp;&amp; tile-&gt;j() &lt;= bottom)
&gt; +            tile-&gt;m_opaqueRect = IntRect();

I&apos;m not sure these two lines are necessary.  Don&apos;t you set the opaque rect for everything you paint below?

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:431
&gt; +            // Save what was opaque in the tile.
&gt; +            IntRect tileRect = m_tiler-&gt;tileRect(tile);
&gt; +            tile-&gt;m_opaqueRect = intersection(tileRect, paintedOpaqueRect);

I think this could still be better for the &quot;blinking cursor&quot; case where the whole tile isn&apos;t painted, but the opaque rect should really continue to be &quot;the whole tile&quot; and not just &quot;the tiny opaque bit that was just painted&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537981</commentid>
    <comment_count>11</comment_count>
      <attachid>122822</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-18 10:38:12 -0800</bug_when>
    <thetext>Comment on attachment 122822
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:277
&gt;&gt; +        tiledLayer-&gt;setTileOpaqueRect(i, j, tile-&gt;m_opaqueRect);
&gt; 
&gt; Can you combine these two functions, so that we only have one function to sync a tile over?

done. pushTileProperties().

&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:373
&gt;&gt; +            tile-&gt;m_opaqueRect = IntRect();
&gt; 
&gt; I&apos;m not sure these two lines are necessary.  Don&apos;t you set the opaque rect for everything you paint below?

If texture memory runs out it early exists, and thought in this case the tile shouldn&apos;t be marked opaque. I see the tiler gets reset() though.

&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:431
&gt;&gt; +            tile-&gt;m_opaqueRect = intersection(tileRect, paintedOpaqueRect);
&gt; 
&gt; I think this could still be better for the &quot;blinking cursor&quot; case where the whole tile isn&apos;t painted, but the opaque rect should really continue to be &quot;the whole tile&quot; and not just &quot;the tiny opaque bit that was just painted&quot;.

yes, made it better. thanks!

i made it check if the new area is a subset of the old opaque area. that seems enough to me. i was thinking maybe to use the same idea as OpaqueRegionSkia with extending rects, but this is mostly for redrawing things already drawn (but differently) so typically the first paint should mark what is opaque and future updates are more likely to change content without changing opaque-ness. so containment seems like enough. do you agree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537987</commentid>
    <comment_count>12</comment_count>
      <attachid>122963</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-18 10:41:53 -0800</bug_when>
    <thetext>Created attachment 122963
Patch

Comments addressed.

Found a flakyness in CCTiledLayerImpl test. The CCSharedQuadState&apos;s ownptr was being destroyed when getQuads() finished, but the shared state was expected to be there still for the test to use (referenced from the quads).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538049</commentid>
    <comment_count>13</comment_count>
      <attachid>122963</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-18 12:00:08 -0800</bug_when>
    <thetext>Comment on attachment 122963
Patch

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

Thanks for those changes.  Other than one tiny comment, this all looks great to me. (Also, good catch on the CCSharedQuadState in CCTiledLayerImplTest.  Oops.)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTileDrawQuad.cpp:51
&gt; +    m_opaqueRect = opaqueRect;

Minor aside: For solid color quads, should we also set the opaque rect so that checkerboarded quads still cull what&apos;s beneath them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538078</commentid>
    <comment_count>14</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-18 12:38:38 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Minor aside: For solid color quads, should we also set the opaque rect so that checkerboarded quads still cull what&apos;s beneath them?

Yes we should.

Aside aside, I was wondering about SolidColor quads a bit while I was doing this. Right now..

layer is opaque, background color is not =&gt; solid color not drawn opaque

Is this intended?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538081</commentid>
    <comment_count>15</comment_count>
      <attachid>122976</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-18 12:42:00 -0800</bug_when>
    <thetext>Created attachment 122976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538118</commentid>
    <comment_count>16</comment_count>
      <attachid>122976</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-18 13:44:11 -0800</bug_when>
    <thetext>Comment on attachment 122976
Patch

Ok, color issue is sorted. Patch ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538172</commentid>
    <comment_count>17</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-18 14:29:13 -0800</bug_when>
    <thetext>LGTM!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538219</commentid>
    <comment_count>18</comment_count>
      <attachid>122976</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-18 15:12:18 -0800</bug_when>
    <thetext>Comment on attachment 122976
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538220</commentid>
    <comment_count>19</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-18 15:14:07 -0800</bug_when>
    <thetext>General comment - can someone make sure we have get good tracing coverage for all culling that we do? We want to be able to figure out how much this is or isn&apos;t buying us on various pages, and be able to see if culling is involved on pages that show rendering issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538221</commentid>
    <comment_count>20</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-18 15:14:59 -0800</bug_when>
    <thetext>Sure I can take that on if no one wants to fight me for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538226</commentid>
    <comment_count>21</comment_count>
      <attachid>122976</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 15:15:39 -0800</bug_when>
    <thetext>Comment on attachment 122976
Patch

Rejecting attachment 122976 from commit-queue.

danakj@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538355</commentid>
    <comment_count>22</comment_count>
      <attachid>122976</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 17:42:44 -0800</bug_when>
    <thetext>Comment on attachment 122976
Patch

Clearing flags on attachment: 122976

Committed r105366: &lt;http://trac.webkit.org/changeset/105366&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538356</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 17:42:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538383</commentid>
    <comment_count>24</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-18 18:17:36 -0800</bug_when>
    <thetext>This broke CCLayerTreeHostImplTest.blendingOffWhenDrawingOpaqueLayers: 
third_party/WebKit/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:192: Failure
Value of: testBlendingDrawQuad-&gt;needsBlending()
  Actual: true
Expected: m_blend
Which is: false
third_party/WebKit/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:192: Failure
Value of: testBlendingDrawQuad-&gt;needsBlending()
  Actual: true
Expected: m_blend
Which is: false
third_party/WebKit/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:192: Failure
Value of: testBlendingDrawQuad-&gt;needsBlending()
  Actual: true
Expected: m_blend
Which is: false
third_party/WebKit/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:192: Failure
Value of: testBlendingDrawQuad-&gt;needsBlending()
  Actual: true
Expected: m_blend
Which is: false
third_party/WebKit/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:192: Failure
Value of: testBlendingDrawQuad-&gt;needsBlending()
  Actual: true
Expected: m_blend
Which is: false
third_party/WebKit/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:192: Failure
Value of: testBlendingDrawQuad-&gt;needsBlending()
  Actual: true
Expected: m_blend
Which is: false
third_party/WebKit/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:192: Failure
Value of: testBlendingDrawQuad-&gt;needsBlending()
  Actual: true
Expected: m_blend
Which is: false
third_party/WebKit/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:192: Failure
Value of: testBlendingDrawQuad-&gt;needsBlending()
  Actual: true
Expected: m_blend
Which is: false

:/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538391</commentid>
    <comment_count>25</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-18 18:39:17 -0800</bug_when>
    <thetext>Reverted r105366 for reason:

Breaks CCLayerTreeHostImplTest unit test

Committed r105371: &lt;http://trac.webkit.org/changeset/105371&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538392</commentid>
    <comment_count>26</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-18 18:39:50 -0800</bug_when>
    <thetext>Sorry Dana, reverted you in http://trac.webkit.org/changeset/105371</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538395</commentid>
    <comment_count>27</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-18 18:52:05 -0800</bug_when>
    <thetext>I think this also broke a number of layout tests:

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=compositing%2Fgeometry%2Fforeground-offset-change.html%2Ccompositing%2Foverflow%2Foverflow-scroll.html%2Ccompositing%2Foverflow%2Fscrollbar-painting.html%2Cfast%2Flayers%2Fscroll-with-transform-composited-layer.html%2Cfast%2Frepaint%2Fblock-selection-gap-in-composited-layer.html

see how there&apos;s some compositor blue showing through?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538515</commentid>
    <comment_count>28</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-18 23:42:22 -0800</bug_when>
    <thetext>Hmm.. ok I&apos;ll have a look. Sorry about that, I guess reworking it changed some stuff or I overlooked something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539021</commentid>
    <comment_count>29</comment_count>
      <attachid>123192</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-19 14:10:27 -0800</bug_when>
    <thetext>Created attachment 123192
Patch

For enne review again:

- LayoutTest fail: tile&apos;s opaque rect needed to be intersected with the layerVisibleRect
- Unit test fail: Solid color quads can now be considered opaque if their color is opaque so the CCLayerTreeHostImpl.
- Unit test fail: Solid color quads are not opaque if alpha != 255, not if alpha != 1.
- Better distinction between tileBounds() and tileRect() from m_tiler when deciding if the tile is fully opaque or not.
- Turn on opaque tracking always. This is reflected in the LayerTextureUpdaterTest unit test. - Increasingly concerned about not tracking paintedOpaque areas for opaque layers, as its all kinds of unclear what happens if the opaque flag is flipping on/off. This should simplify future code and potential problems a lot.

Passes all DRT and unit tests for sure on my end now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539022</commentid>
    <comment_count>30</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-19 14:12:02 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; - Unit test fail: Solid color quads can now be considered opaque if their color is opaque so the CCLayerTreeHostImpl

unit tests needed to be adjusted to handle this. Added some tests to include combinations of the opaque flag and opaque colors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539172</commentid>
    <comment_count>31</comment_count>
      <attachid>123192</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-19 17:20:39 -0800</bug_when>
    <thetext>Comment on attachment 123192
Patch

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

I like these changes.  Always tracking opacity seems to be a lot cleaner, and will certainly help once we start animating opacity on the impl thread.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSolidColorDrawQuad.cpp:41
&gt; +    if (m_color.alpha() != 255)

How about using m_color.hasAlpha()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539179</commentid>
    <comment_count>32</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-19 17:28:44 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; How about using m_color.hasAlpha()?

Oh ya, good plan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539181</commentid>
    <comment_count>33</comment_count>
      <attachid>123192</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-19 17:32:26 -0800</bug_when>
    <thetext>Comment on attachment 123192
Patch

Attachment 123192 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11307087

New failing tests:
fast/repaint/block-selection-gap-in-composited-layer.html
compositing/iframes/iframe-in-composited-layer.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539598</commentid>
    <comment_count>34</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-20 10:14:43 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; New failing tests:
&gt; fast/repaint/block-selection-gap-in-composited-layer.html
&gt; compositing/iframes/iframe-in-composited-layer.html

These are both cases of turning off blending for supposedly &quot;opaque&quot; stuff creating different pixel values (off-by-one in each channel). So they should be rebaselined for chromium.

I believe this is the Skia off-by-one bug[1] baked into the existing expectations. Turning off blending hides the Skia bug for these tests as we no longer blend the pixels with incorrect 254 alpha.
- In the iframe test its the AA&apos;d pixels on the corners of the scrollbars
- In the block selection its the translucent selection area.

Patch with new baselines incoming. I am trying to try it on the mac/win bots also if they stop timing out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539601</commentid>
    <comment_count>35</comment_count>
      <attachid>123340</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-20 10:18:51 -0800</bug_when>
    <thetext>Created attachment 123340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539602</commentid>
    <comment_count>36</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-20 10:19:39 -0800</bug_when>
    <thetext>[1] The skia bug is referenced at http://code.google.com/p/skia/issues/detail?id=420&amp;thanks=420&amp;ts=1324086997 and http://codereview.appspot.com/5494076/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539633</commentid>
    <comment_count>37</comment_count>
      <attachid>123346</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-20 11:11:35 -0800</bug_when>
    <thetext>Created attachment 123346
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539703</commentid>
    <comment_count>38</comment_count>
      <attachid>123360</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-20 12:27:38 -0800</bug_when>
    <thetext>Created attachment 123360
Patch

- Mark fast/repaint/block-selection-gap-in-composited-layer.html as IMAGE on MAC and WIN temporarily.
- Undo text changes, only rebaseline the png.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540548</commentid>
    <comment_count>39</comment_count>
      <attachid>123558</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-23 08:08:18 -0800</bug_when>
    <thetext>Created attachment 123558
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540627</commentid>
    <comment_count>40</comment_count>
      <attachid>123570</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-23 09:58:38 -0800</bug_when>
    <thetext>Created attachment 123570
Patch

- Compute the tile&apos;s opaque rect after checking the tile exists.  (Became a problem when I enabled paint-culling in next CL.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543448</commentid>
    <comment_count>41</comment_count>
      <attachid>124173</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-26 13:52:59 -0800</bug_when>
    <thetext>Created attachment 124173
Patch

rebased to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544226</commentid>
    <comment_count>42</comment_count>
      <attachid>124173</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-27 11:50:32 -0800</bug_when>
    <thetext>Comment on attachment 124173
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/BitmapCanvasLayerTextureUpdater.cpp:92
&gt; +    canvasPainter.skiaContext()-&gt;setTrackOpaqueRegion(true);

why are we enabling tracking when we know the whole layer is opaque? that seems wasteful and it means that we&apos;ll lose opaque-ness on layers where we know for external reasons that it&apos;s opaque but the skia paint tracker isn&apos;t able to detect it automatically

&gt; Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.h:55
&gt; +    IntRect opaqueRect() const

this is a bit big to stick in the header

&gt; Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.h:59
&gt; +        if (m_sharedQuadState-&gt;isOpaque() &amp;&amp; m_quadOpaque)

hmm, when do the shared quad state&apos;s isOpaque() bit and m_quadOpaque differ? for AA&apos;d edge quads?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544228</commentid>
    <comment_count>43</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-27 11:52:45 -0800</bug_when>
    <thetext>I don&apos;t really understand the motivation for the tracking change. Is the idea that tracking is always going to find opaque rects or opaque layers, so we don&apos;t need any other hints? It seems to me to be really valuable to be able to specify that you know a layer is going to be opaque and know that value will be used without having to worry about keeping extra state or about hitting weird edge cases in the tracking code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544234</commentid>
    <comment_count>44</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-27 11:59:54 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; I don&apos;t really understand the motivation for the tracking change. Is the idea that tracking is always going to find opaque rects or opaque layers, so we don&apos;t need any other hints? It seems to me to be really valuable to be able to specify that you know a layer is going to be opaque and know that value will be used without having to worry about keeping extra state or about hitting weird edge cases in the tracking code.

It&apos;s possible for a layer to go from opaque() to non-opaque() at which point it would be really nice to have the opaque painted area known. Otherwise you need to dirty the whole layer at that time to force a repaint and collect the data.

Also there ended up being an increasing number of if (!opaque()) {} in the code making it less clear what is going on and appearing less maintainable over time.

The perks of enabling the tracking is that the layer can change its opaque state at will and everything continues to work with no extra code anywhere else, and simplicity from a single code path that is always used in culling etc - except in the place where the current opaque rect is computed. Do these seem reasonable to you?

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.h:59
&gt; &gt; +        if (m_sharedQuadState-&gt;isOpaque() &amp;&amp; m_quadOpaque)

&gt; hmm, when do the shared quad state&apos;s isOpaque() bit and m_quadOpaque differ? for AA&apos;d edge quads?

m_quadOpaque is something used by CCDrawQuad subclasses to override and say &quot;this is not opaque&quot;. CCSolidColorQuad does this, as the layer may be opaque but it can be assigned a non-opaque color for that quad. isOpaque() comes from the source layer state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544238</commentid>
    <comment_count>45</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-27 12:01:44 -0800</bug_when>
    <thetext>To further clarify: opaque() still trumps the painted opaque tracking. Painting opaque is tracked so if opaque() goes away we have something else to fall back to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544239</commentid>
    <comment_count>46</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-27 12:04:00 -0800</bug_when>
    <thetext>If a layer goes from opaque to non-opaque then it means that the whole layer has to be repainting anyway, since it means that every pixel of the layer has gone from having an alpha value of 0 to potentially some other value.  That&apos;s not really a loss.  Doesn&apos;t setOpaque() invalidate the whole layer? (if not it probably should).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544254</commentid>
    <comment_count>47</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-27 12:26:52 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; If a layer goes from opaque to non-opaque then it means that the whole layer has to be repainting anyway, since it means that every pixel of the layer has gone from having an alpha value of 0 to potentially some other value.  That&apos;s not really a loss.  Doesn&apos;t setOpaque() invalidate the whole layer? (if not it probably should).

Doesn&apos;t going from opaque to non-opaque just mean that some pixels might have changed alpha value to something other than 1.0? Basically, &quot;opaque&quot; means all pixels are guaranteed to be opaque and any other state would fall into the &quot;non-opaque&quot; case. That was my understanding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544257</commentid>
    <comment_count>48</comment_count>
      <attachid>124350</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-27 12:32:45 -0800</bug_when>
    <thetext>Created attachment 124350
Patch

- move CCDrawQuad::opaqueRect() to the .cpp
- undo tracking opaque paints when opaque() == true
- call setNeedsDisplay() on setOpaque() - instead of just setNeedsCommit()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544262</commentid>
    <comment_count>49</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-27 12:35:20 -0800</bug_when>
    <thetext>(In reply to comment #47)
&gt; (In reply to comment #46)
&gt; &gt; If a layer goes from opaque to non-opaque then it means that the whole layer has to be repainting anyway, since it means that every pixel of the layer has gone from having an alpha value of 0 to potentially some other value.  That&apos;s not really a loss.  Doesn&apos;t setOpaque() invalidate the whole layer? (if not it probably should).
&gt; 
&gt; Doesn&apos;t going from opaque to non-opaque just mean that some pixels might have changed alpha value to something other than 1.0? Basically, &quot;opaque&quot; means all pixels are guaranteed to be opaque and any other state would fall into the &quot;non-opaque&quot; case. That was my understanding.

Yes it doesn&apos;t mean they are necessarily non-opaque now, but I&apos;ll defer to jamesr&apos;s choice here. He is right that it would be an unusual case to change opaque-state without changing painted contents. If it becomes a problem we can always revisit it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544271</commentid>
    <comment_count>50</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-27 12:46:19 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; Created an attachment (id=124350) [details]
&gt; Patch
&gt; 
&gt; - move CCDrawQuad::opaqueRect() to the .cpp
&gt; - undo tracking opaque paints when opaque() == true
&gt; - call setNeedsDisplay() on setOpaque() - instead of just setNeedsCommit()

So if the opaqueness of small portion of the layer change we invalidate the whole layer. Is that really what we want?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544273</commentid>
    <comment_count>51</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-27 12:50:22 -0800</bug_when>
    <thetext>(In reply to comment #50)
&gt; (In reply to comment #48)
&gt; &gt; Created an attachment (id=124350) [details] [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; - move CCDrawQuad::opaqueRect() to the .cpp
&gt; &gt; - undo tracking opaque paints when opaque() == true
&gt; &gt; - call setNeedsDisplay() on setOpaque() - instead of just setNeedsCommit()
&gt; 
&gt; So if the opaqueness of small portion of the layer change we invalidate the whole layer. Is that really what we want?

The flag is an all-or-nothing thing. It changes for things like video layers changing formats, or an image changing its source. It&apos;s not something we compute from the painted contents or the like. I think it should be okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544289</commentid>
    <comment_count>52</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-27 12:56:55 -0800</bug_when>
    <thetext>(In reply to comment #51)
&gt; (In reply to comment #50)
&gt; &gt; (In reply to comment #48)
&gt; &gt; &gt; Created an attachment (id=124350) [details] [details] [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; - move CCDrawQuad::opaqueRect() to the .cpp
&gt; &gt; &gt; - undo tracking opaque paints when opaque() == true
&gt; &gt; &gt; - call setNeedsDisplay() on setOpaque() - instead of just setNeedsCommit()
&gt; &gt; 
&gt; &gt; So if the opaqueness of small portion of the layer change we invalidate the whole layer. Is that really what we want?
&gt; 
&gt; The flag is an all-or-nothing thing. It changes for things like video layers changing formats, or an image changing its source. It&apos;s not something we compute from the painted contents or the like. I think it should be okay.

ah, ok this isn&apos;t used for contents layers. that&apos;s probably fine then. however, i&apos;m not sure about implicitly calling setNeedsDisplay in setOpaque. we&apos;re not doing that in any of the other setters (e.g. setOpacity). seems inconsistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544299</commentid>
    <comment_count>53</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-27 13:05:38 -0800</bug_when>
    <thetext>(In reply to comment #52)
&gt; ah, ok this isn&apos;t used for contents layers. that&apos;s probably fine then. however, i&apos;m not sure about implicitly calling setNeedsDisplay in setOpaque. we&apos;re not doing that in any of the other setters (e.g. setOpacity). seems inconsistent.

i think the difference is setOpacity() doesn&apos;t reflect on the contents of the layer. just how it is presented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544305</commentid>
    <comment_count>54</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-27 13:09:51 -0800</bug_when>
    <thetext>Yeah, in my view setOpaque() is a bit of a different API.  It&apos;s the caller saying &quot;I know that every pixel in this layer is going to be opaque, no matter what you think&quot;. Changing that promise should definitely trigger a repaint, IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544308</commentid>
    <comment_count>55</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-27 13:13:24 -0800</bug_when>
    <thetext>(In reply to comment #53)
&gt; (In reply to comment #52)
&gt; &gt; ah, ok this isn&apos;t used for contents layers. that&apos;s probably fine then. however, i&apos;m not sure about implicitly calling setNeedsDisplay in setOpaque. we&apos;re not doing that in any of the other setters (e.g. setOpacity). seems inconsistent.
&gt; 
&gt; i think the difference is setOpacity() doesn&apos;t reflect on the contents of the layer. just how it is presented.

ok, that makes some sense. considering that setOpaque technically doesn&apos;t necessarily mean that the contents changed, my vote is still for not having setOpaque do an implicit invalidation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544317</commentid>
    <comment_count>56</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-27 13:29:54 -0800</bug_when>
    <thetext>(In reply to comment #54)
&gt; Yeah, in my view setOpaque() is a bit of a different API.  It&apos;s the caller saying &quot;I know that every pixel in this layer is going to be opaque, no matter what you think&quot;. Changing that promise should definitely trigger a repaint, IMO.

Hm, I think that&apos;s the same as what Dana and I are saying. What I don&apos;t understand is why it would have to trigger a repaint. Lets say we have a layer type with a special shader that can introduce opacity in the shader. The opaqueness of that layer could change without us having to repaint anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544319</commentid>
    <comment_count>57</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-27 13:32:52 -0800</bug_when>
    <thetext>(In reply to comment #56)
&gt; Hm, I think that&apos;s the same as what Dana and I are saying. What I don&apos;t understand is why it would have to trigger a repaint. Lets say we have a layer type with a special shader that can introduce opacity in the shader. The opaqueness of that layer could change without us having to repaint anything.

To let the opaque paint tracker figure out what is opaque so we can continue to cull behind the layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544329</commentid>
    <comment_count>58</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-27 13:49:18 -0800</bug_when>
    <thetext>(In reply to comment #57)
&gt; (In reply to comment #56)
&gt; &gt; Hm, I think that&apos;s the same as what Dana and I are saying. What I don&apos;t understand is why it would have to trigger a repaint. Lets say we have a layer type with a special shader that can introduce opacity in the shader. The opaqueness of that layer could change without us having to repaint anything.
&gt; 
&gt; To let the opaque paint tracker figure out what is opaque so we can continue to cull behind the layer.

That only applies to content layers that make use of setOpaque(), right? IMO, it seems better to always use the paint tracker so we don&apos;t have to repaint when setOpaque() changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544335</commentid>
    <comment_count>59</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-27 13:54:30 -0800</bug_when>
    <thetext>(In reply to comment #58)
&gt; (In reply to comment #57)
&gt; &gt; (In reply to comment #56)
&gt; &gt; &gt; Hm, I think that&apos;s the same as what Dana and I are saying. What I don&apos;t understand is why it would have to trigger a repaint. Lets say we have a layer type with a special shader that can introduce opacity in the shader. The opaqueness of that layer could change without us having to repaint anything.
&gt; &gt; 
&gt; &gt; To let the opaque paint tracker figure out what is opaque so we can continue to cull behind the layer.
&gt; 
&gt; That only applies to content layers that make use of setOpaque(), right? IMO, it seems better to always use the paint tracker so we don&apos;t have to repaint when setOpaque() changes.

But we *HAVE* to repaint when setOpaque() changes, since that means that the caller is telling you that the pixels values are different than they used to be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544340</commentid>
    <comment_count>60</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-27 13:58:03 -0800</bug_when>
    <thetext>TBH repainting won&apos;t cause correctness issues and James likes it. This is blocking paint culling - which appears to half video memory/bandwidth use on chromium os. So I&apos;d rather move ahead and try get culling in for M18, and we can come back to this detail?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544440</commentid>
    <comment_count>61</comment_count>
      <attachid>124383</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-27 15:30:21 -0800</bug_when>
    <thetext>Created attachment 124383
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544614</commentid>
    <comment_count>62</comment_count>
      <attachid>124383</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-27 22:43:22 -0800</bug_when>
    <thetext>Comment on attachment 124383
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:447
&gt; +            IntRect fixedSizeTileRectWithBorders = m_tiler-&gt;tileRect(tile);
&gt; +            IntRect sourceRect = fixedSizeTileRectWithBorders;

what&apos;s up with the extra var here? what was wrong with the old code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544616</commentid>
    <comment_count>63</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-27 22:53:41 -0800</bug_when>
    <thetext>Thanks!

(In reply to comment #62)
&gt; (From update of attachment 124383 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124383&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:447
&gt; &gt; +            IntRect fixedSizeTileRectWithBorders = m_tiler-&gt;tileRect(tile);
&gt; &gt; +            IntRect sourceRect = fixedSizeTileRectWithBorders;
&gt; 
&gt; what&apos;s up with the extra var here? what was wrong with the old code?

There&apos;s two tileRect&apos;s in close proximity now and they are very different (one is the real bounds, one inlcudes borders and is the default tile size). It wasn&apos;t very clear to me at first that they were different. So I thought a variable name could clarify. Could be a comment instead if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544618</commentid>
    <comment_count>64</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-27 23:01:43 -0800</bug_when>
    <thetext>But we don&apos;t use it. You can just rename the variable completely if you want, rather than making another local</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544622</commentid>
    <comment_count>65</comment_count>
      <attachid>124431</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-27 23:14:19 -0800</bug_when>
    <thetext>Created attachment 124431
Patch

Thanks. I think a comment will do here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545428</commentid>
    <comment_count>66</comment_count>
      <attachid>124431</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-30 14:43:07 -0800</bug_when>
    <thetext>Comment on attachment 124431
Patch

R=me.

When I r+/cq- you don&apos;t need to overwrite the r+ with a new patch - you can land the patch with the suggestions as-is on the existing r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545574</commentid>
    <comment_count>67</comment_count>
      <attachid>124431</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 16:29:19 -0800</bug_when>
    <thetext>Comment on attachment 124431
Patch

Clearing flags on attachment: 124431

Committed r106300: &lt;http://trac.webkit.org/changeset/106300&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545575</commentid>
    <comment_count>68</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 16:29:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121952</attachid>
            <date>2012-01-10 17:47:39 -0800</date>
            <delta_ts>2012-01-11 12:09:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120110204738.patch</filename>
            <type>text/plain</type>
            <size>18964</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDJk
ZjA1YjU5Y2I4NWFkN2MwODcwMThjYzI1NmVlMTc0MDk0YjliZDUuLjRiMDFmNDJmYzU4ZmQyZWRl
MjQ0ZjIwZmYxMGM2NDY5NGZmMGQ5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC0zMzMs
NiArMzMzLDE0IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQog
ICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0T3BhcXVl
UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KQoreworICAgIGlmIChtX29wYXF1ZVJlY3Qg
PT0gb3BhcXVlUmVjdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fb3BhcXVlUmVjdCA9IG9wYXF1
ZVJlY3Q7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwogdm9pZCBMYXllckNocm9taXVtOjpz
ZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBpZiAobV9wb3Np
dGlvbiA9PSBwb3NpdGlvbikKQEAgLTQyNyw2ICs0MzUsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06
OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIGxheWVyLT5zZXRTY3Jv
bGxhYmxlKG1fc2Nyb2xsYWJsZSk7CiAgICAgbGF5ZXItPnNldE5hbWUobV9uYW1lKTsKICAgICBs
YXllci0+c2V0T3BhcXVlKG1fb3BhcXVlKTsKKyAgICBsYXllci0+c2V0T3BhcXVlUmVjdChtX29w
YXF1ZVJlY3QpOwogICAgIGxheWVyLT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CiAgICAgbGF5ZXIt
PnNldFBvc2l0aW9uKG1fcG9zaXRpb24pOwogICAgIGxheWVyLT5zZXRQcmVzZXJ2ZXMzRChwcmVz
ZXJ2ZXMzRCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA4N2Y1MDU2ZjNjM2VkYjAyZWJhNGE5
NTE4MzRiN2E4NDNiNzg0MTFhLi4zYjBmZjZjNDNlNzQ3YzAyYzNhYmQzZmEyNWFjNWU3YmM4NjA1
MGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xMTAsOSArMTEwLDE0IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOwogICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJl
dHVybiBtX29wYWNpdHk7IH0KIAorICAgIC8vIE1hcmtzIHRoZSBlbnRpcmUgbGF5ZXIgb3BhcXVl
LgogICAgIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogICAgIGJvb2wgb3BhcXVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcGFxdWU7IH0KIAorICAgIC8vIE1hcmtzIHNvbWUgc3Vic2V0IG9mIHRoZSBsYXll
ciBvcGFxdWUuIElmIG9wYXF1ZSgpIGlzIHRydWUsIHRoaXMgdmFsdWUgaXMgaXJyZWxldmFudC4K
KyAgICB2b2lkIHNldE9wYXF1ZVJlY3QoY29uc3QgSW50UmVjdCYpOworICAgIGNvbnN0IEludFJl
Y3QmIG9wYXF1ZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZVJlY3Q7IH0KKwogICAgIHZv
aWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwogICAgIEZsb2F0UG9pbnQgcG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAKQEAgLTI2NSw2ICsyNzAsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9pc0RyYXdhYmxlOwogICAgIGJvb2wgbV9tYXNrc1RvQm91bmRz
OwogICAgIGJvb2wgbV9vcGFxdWU7CisgICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7CiAgICAgYm9v
bCBtX2RvdWJsZVNpZGVkOwogICAgIGJvb2wgbV91c2VzTGF5ZXJDbGlwcGluZzsKICAgICBib29s
IG1faXNOb25Db21wb3NpdGVkQ29udGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IGFkMmNiMTNmYzczMDkzNmE5Yzk0ZDRhODg0NTEzODNjM2NkMmYxMzguLjUwNGE4MTAy
YWM1Y2U1MDVkYWU4MmEyMjBiMTY1MmI3NGMwM2QxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcApAQCAtNDM0LDYgKzQzNCw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAg
ICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CiAgICAg
ICAgIH0KICAgICB9CisgICAgc2V0T3BhcXVlUmVjdCh0ZXh0dXJlVXBkYXRlcigpLT5vcGFxdWVS
ZWN0KCkpOwogfQogCiAKQEAgLTQ0Niw4ICs0NDcsMTAgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAKICAgICB1cGRh
dGVCb3VuZHMoKTsKIAotICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyLT5u
dW1UaWxlcygpKQorICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyLT5udW1U
aWxlcygpKSB7CisgICAgICAgIHNldE9wYXF1ZVJlY3QoSW50UmVjdCgpKTsKICAgICAgICAgcmV0
dXJuOworICAgIH0KIAogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90
aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQs
IGJvdHRvbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCmluZGV4IDhmY2Y0NDlmMDRmMmQ1ZjU2YmZm
NTg5ODJjYTQ0MTAwMThkYmUyNDIuLmFiNWViOTNjYTViMDc2YzBjNDYwMzQwODQzMGQ4NmJmYTc2
MDJmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCkBAIC00Miw2ICs0Miw3IEBAIENDRHJhd1F1
YWQ6OkNDRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
TWF0ZXJpYWwgbWF0ZXJpCiAgICAgLCBtX3F1YWRSZWN0KHF1YWRSZWN0KQogICAgICwgbV9xdWFk
T3BhcXVlKHRydWUpCiAgICAgLCBtX25lZWRzQmxlbmRpbmcoZmFsc2UpCisgICAgLCBtX29wYXF1
ZUluU2hhcmVkUXVhZFN0YXRlKHNoYXJlZFF1YWRTdGF0ZS0+b3BhcXVlUmVjdCgpLmNvbnRhaW5z
KHF1YWRSZWN0KSkKIHsKICAgICBBU1NFUlQobV9zaGFyZWRRdWFkU3RhdGUpOwogICAgIEFTU0VS
VChtX21hdGVyaWFsICE9IEludmFsaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCmluZGV4IGI1NjkxM2Iz
Y2U1M2FjMGVkMGVlYmU0ZDc3OTgwNGNjMjVkNGU2YWUuLjRkMDc0MzRlMDhhMDI4MTU0ODlkYjYy
NDk2ZDljN2UwYjBiZTNlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAgLTUwLDggKzUwLDggQEAg
cHVibGljOgogICAgIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9z
aGFyZWRRdWFkU3RhdGUtPmNsaXBSZWN0KCk7IH0KICAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3Qg
eyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPm9wYWNpdHkoKTsgfQogICAgIC8vIEZvciB0aGUg
cHVycG9zZXMgb2YgY3VsbGluZywgYXJlIHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQgb3BhcXVl
PwotICAgIGJvb2wgZHJhd3NPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0
ZS0+aXNPcGFxdWUoKSAmJiBtX3F1YWRPcGFxdWUgJiYgb3BhY2l0eSgpID09IDE7IH0KLSAgICBi
b29sIG5lZWRzQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRRdWFkU3RhdGUtPmlz
T3BhcXVlKCkgfHwgbV9uZWVkc0JsZW5kaW5nIHx8IG9wYWNpdHkoKSAhPSAxOyB9CisgICAgYm9v
bCBkcmF3c09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhcXVlSW5TaGFyZWRRdWFkU3RhdGUg
JiYgbV9xdWFkT3BhcXVlICYmIG9wYWNpdHkoKSA9PSAxOyB9CisgICAgYm9vbCBuZWVkc0JsZW5k
aW5nKCkgY29uc3QgeyByZXR1cm4gIW1fb3BhcXVlSW5TaGFyZWRRdWFkU3RhdGUgfHwgbV9uZWVk
c0JsZW5kaW5nIHx8IG9wYWNpdHkoKSAhPSAxOyB9CiAgICAgYm9vbCBpc0xheWVyQXhpc0FsaWdu
ZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlz
QWxpZ25lZEludFJlY3QoKTsgfQogCiAgICAgZW51bSBNYXRlcmlhbCB7CkBAIC04Niw2ICs4Niwx
MCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gdmFyaWFibGVzLgogICAgIGJvb2wgbV9xdWFkT3BhcXVl
OwogICAgIGJvb2wgbV9uZWVkc0JsZW5kaW5nOworCitwcml2YXRlOgorICAgIC8vIFRyYWNrcyBp
ZiB0aGUgcXVhZCBpcyBtYXJrZWQgb3BhcXVlIGJ5IHRoZSBDQ1NoYXJlZFF1YWRTdGF0ZS4KKyAg
ICBib29sIG1fb3BhcXVlSW5TaGFyZWRRdWFkU3RhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAKaW5kZXggMjljMzA2MDY4YmQ0NmE3NWI5Y2RhYmY4MmFkZjBlYmRkYmZjNDk1MS4u
ZmJiMGZkMmVjNDhmNGFhODVhMzZlMzhjZjFjOTNjMjZiMjk5YmVhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmNwcApAQCAtMTI0LDcgKzEyNCw4IEBAIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IENDTGF5ZXJJbXBsOjpjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSBjb25zdAogICAgIEludFJl
Y3QgbGF5ZXJDbGlwUmVjdDsKICAgICBpZiAodXNlc0xheWVyQ2xpcHBpbmcoKSkKICAgICAgICAg
bGF5ZXJDbGlwUmVjdCA9IGNsaXBSZWN0KCk7Ci0gICAgcmV0dXJuIENDU2hhcmVkUXVhZFN0YXRl
OjpjcmVhdGUocXVhZFRyYW5zZm9ybSgpLCBkcmF3VHJhbnNmb3JtKCksIHZpc2libGVMYXllclJl
Y3QoKSwgbGF5ZXJDbGlwUmVjdCwgZHJhd09wYWNpdHkoKSwgb3BhcXVlKCkpOworICAgIEludFJl
Y3QgbGF5ZXJPcGFxdWVSZWN0ID0gb3BhcXVlKCkgPyB2aXNpYmxlTGF5ZXJSZWN0KCkgOiBvcGFx
dWVSZWN0KCk7CisgICAgcmV0dXJuIENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUocXVhZFRyYW5z
Zm9ybSgpLCBkcmF3VHJhbnNmb3JtKCksIHZpc2libGVMYXllclJlY3QoKSwgbGF5ZXJDbGlwUmVj
dCwgZHJhd09wYWNpdHkoKSwgbGF5ZXJPcGFxdWVSZWN0KTsKIH0KIAogdm9pZCBDQ0xheWVySW1w
bDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUpCkBAIC0zNjIsNiArMzYzLDE1IEBAIHZvaWQgQ0NMYXllcklt
cGw6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRG
b3JTdWJ0cmVlKCk7CiB9CiAKK3ZvaWQgQ0NMYXllckltcGw6OnNldE9wYXF1ZVJlY3QoY29uc3Qg
SW50UmVjdCYgb3BhcXVlUmVjdCkKK3sKKyAgICBpZiAobV9vcGFxdWVSZWN0ID09IG9wYXF1ZVJl
Y3QpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7Cisg
ICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOworfQorCiB2b2lkIENDTGF5
ZXJJbXBsOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgaWYgKG1fb3BhY2l0eSA9
PSBvcGFjaXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggYTE4ZmQ0NDIwY2U2YmYyOWJiMTVj
OTQ2NDI2N2IwYzgxZDRjNzdmNi4uYTQzODExODdlNTA1MzI3ZDY0NDQzOTEzMDAxMzhkMWQyNjE5
NzJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0xMDMsNiArMTAzLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogICAgIGJvb2wgb3BhcXVlKCkgY29uc3QgeyByZXR1
cm4gbV9vcGFxdWU7IH0KIAorICAgIHZvaWQgc2V0T3BhcXVlUmVjdChjb25zdCBJbnRSZWN0Jik7
CisgICAgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhcXVl
UmVjdDsgfQorCiAgICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKICAgICBmbG9hdCBvcGFjaXR5
KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5OyB9CiAKQEAgLTI0Miw2ICsyNDUsNyBAQCBwcml2
YXRlOgogICAgIEludFJlY3QgbV92aXNpYmxlTGF5ZXJSZWN0OwogICAgIGJvb2wgbV9tYXNrc1Rv
Qm91bmRzOwogICAgIGJvb2wgbV9vcGFxdWU7CisgICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7CiAg
ICAgZmxvYXQgbV9vcGFjaXR5OwogICAgIEZsb2F0UG9pbnQgbV9wb3NpdGlvbjsKICAgICBib29s
IG1fcHJlc2VydmVzM0Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAppbmRleCA2ZjUxZmJjZGUw
NWFjOTYxMjg3NDQwNDUxMDU0ZjRlYzNmNTEyOGRmLi5kYjc5ZTA3YmQ2MDBjNGFmNzVmMzRhZjVm
Mzg1ODU4YzU0M2NhZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKQEAgLTU4LDggKzU4
LDggQEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVy
KENDTGF5ZXJJbXBsKiBsYXllcikKICAgICAvLyBGSVhNRTogcmVuZGVyIHN1cmZhY2UgbGF5ZXJz
IHNob3VsZCBiZSBhIENDTGF5ZXJJbXBsLWRlcml2ZWQgY2xhc3MgYW5kCiAgICAgLy8gbm90IGJl
IGhhbmRsZWQgc3BlY2lhbGx5IGhlcmUuCiAgICAgQ0NSZW5kZXJTdXJmYWNlKiBzdXJmYWNlID0g
bGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKLSAgICBib29sIGlzT3BhcXVlID0gZmFsc2U7Ci0gICAg
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBDQ1NoYXJlZFF1YWRT
dGF0ZTo6Y3JlYXRlKHN1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKSwgc3VyZmFjZS0+ZHJhd1RyYW5z
Zm9ybSgpLCBzdXJmYWNlLT5jb250ZW50UmVjdCgpLCBzdXJmYWNlLT5jbGlwUmVjdCgpLCBzdXJm
YWNlLT5kcmF3T3BhY2l0eSgpLCBpc09wYXF1ZSk7CisgICAgSW50UmVjdCBvcGFxdWVSZWN0ID0g
SW50UmVjdCgpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRl
ID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShzdXJmYWNlLT5kcmF3VHJhbnNmb3JtKCksIHN1
cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKSwgc3VyZmFjZS0+Y29udGVudFJlY3QoKSwgc3VyZmFjZS0+
Y2xpcFJlY3QoKSwgc3VyZmFjZS0+ZHJhd09wYWNpdHkoKSwgb3BhcXVlUmVjdCk7CiAgICAgbV9x
dWFkTGlzdC5hcHBlbmQoQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUuZ2V0KCksIHN1cmZhY2UtPmNvbnRlbnRSZWN0KCksIGxheWVyLCBzdXJmYWNlRGFtYWdl
UmVjdCgpKSk7CiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3Rh
dGUucmVsZWFzZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcAppbmRl
eCA5YmY3NjkyNWJiOGNmMmJiYWM1MzljMDE0MzFjNTU3ODQzMzlmZDA1Li41ZmMyMjg3YjYwM2Jm
MGM1OWQ4YzExZjUxZjJlMDEyN2U1YTg0NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFk
U3RhdGUuY3BwCkBAIC0yOSwxOCArMjksMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29u
c3QgSW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQorUGFzc093
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IElu
dFJlY3QmIGNsaXBSZWN0LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0
KQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTaGFyZWRRdWFkU3RhdGUocXVhZFRyYW5z
Zm9ybSwgbGF5ZXJUcmFuc2Zvcm0sIGxheWVyUmVjdCwgY2xpcFJlY3QsIG9wYWNpdHksIG9wYXF1
ZSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTaGFyZWRRdWFkU3RhdGUocXVhZFRyYW5z
Zm9ybSwgbGF5ZXJUcmFuc2Zvcm0sIGxheWVyUmVjdCwgY2xpcFJlY3QsIG9wYWNpdHksIG9wYXF1
ZVJlY3QpKTsKIH0KIAotQ0NTaGFyZWRRdWFkU3RhdGU6OkNDU2hhcmVkUXVhZFN0YXRlKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQorQ0NTaGFyZWRR
dWFkU3RhdGU6OkNDU2hhcmVkUXVhZFN0YXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBx
dWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0s
IGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiAgICAgOiBtX3F1YWRUcmFuc2Zv
cm0ocXVhZFRyYW5zZm9ybSkKICAgICAsIG1fbGF5ZXJUcmFuc2Zvcm0obGF5ZXJUcmFuc2Zvcm0p
CiAgICAgLCBtX2xheWVyUmVjdChsYXllclJlY3QpCiAgICAgLCBtX2NsaXBSZWN0KGNsaXBSZWN0
KQogICAgICwgbV9vcGFjaXR5KG9wYWNpdHkpCi0gICAgLCBtX29wYXF1ZShvcGFxdWUpCisgICAg
LCBtX29wYXF1ZVJlY3Qob3BhcXVlUmVjdCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVh
ZFN0YXRlLmgKaW5kZXggZTc4NTc1N2Y5ZGI5NGIxYjMyMDYxZmQ4ZDhiMjFjNDBiZWYxZmYwYS4u
MzFkNjY5ZmNmY2EzZDIxMzUwZTgzMGQ4YTllZDU1Njk4MjdhNzkxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3Rh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NoYXJlZFF1YWRTdGF0ZS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENDU2hhcmVkUXVhZFN0YXRlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1No
YXJlZFF1YWRTdGF0ZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NTaGFyZWRR
dWFkU3RhdGU+IGNyZWF0ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9y
bSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRS
ZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBmbG9hdCBvcGFjaXR5LCBi
b29sIG9wYXF1ZSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNy
ZWF0ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJl
Y3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBJbnRSZWN0
JiBvcGFxdWVSZWN0KTsKIAogICAgIC8vIFRoZSB0cmFuc2Zvcm0gdGhhdCBxdWFkcyBpbiBhIEND
RHJhd1F1YWQgc2hvdWxkIGJlIHRyYW5zZm9ybWVkIHdpdGguCiAgICAgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3F1YWRUcmFuc2Zv
cm07IH0KQEAgLTQ0LDIwICs0NCwyMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGxheWVyVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclRyYW5zZm9y
bTsgfQogICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
ZXJSZWN0OyB9CiAgICAgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2NsaXBSZWN0OyB9CisgICAgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fb3BhcXVlUmVjdDsgfQogCiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fb3BhY2l0eTsgfQotICAgIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX29wYXF1
ZTsgfQogICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIENDU2hhcmVkUXVhZFN0YXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBx
dWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0s
IGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0
IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKKyAgICBDQ1NoYXJlZFF1YWRTdGF0ZShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJl
Y3QmIGNsaXBSZWN0LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KTsK
IAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcXVhZFRyYW5zZm9ybTsKICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX2xheWVyVHJhbnNmb3JtOwogICAgIEludFJlY3QgbV9sYXllclJlY3Q7
CiAgICAgSW50UmVjdCBtX2NsaXBSZWN0OwogICAgIGZsb2F0IG1fb3BhY2l0eTsKLSAgICBib29s
IG1fb3BhcXVlOworICAgIEludFJlY3QgbV9vcGFxdWVSZWN0OwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggZWQx
NWU2YzEwZTFmZTQ2MmM5NDk2ODU2ZGIzOTM0NTY5ZmFiODgxYy4uNGIzZjYzYzY0ZmYyZDE0MDJl
Mjc1MDEyNDIzYmRlZjNlMDY5OTVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC04MSw4ICs4MSw4IEBAIFRFU1QoQ0NRdWFk
Q3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcFRvcExlZnQpCiB7CiAgICAgREVDTEFS
RV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCiAKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4w
LCB0cnVlKTsKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1No
YXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJl
Y3QoKSwgMS4wLCByb290UmVjdCk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGls
ZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgY2hpbGRSZWN0KTsK
IAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExp
c3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CkBAIC05NCw4ICs5NCw4
IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFdoZW5DaGlsZE9wYWNpdHlOb3RP
bmUpCiB7CiAgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCiAKLSAgICBPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVh
dGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJl
Y3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMC45LCB0cnVlKTsK
KyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0
YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCByb290UmVjdCk7CisgICAgT3duUHRyPENDU2hh
cmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGls
ZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCks
IDAuOSwgY2hpbGRSZWN0KTsKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRT
dGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEz
dSk7CkBAIC0xMDcsOCArMTA3LDggQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxs
V2hlbkNoaWxkT3BhcXVlRmxhZ0ZhbHNlKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVf
VEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBD
Q1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7Ci0gICAgT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNy
ZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJ
bnRSZWN0KCksIDEuMCwgZmFsc2UpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9v
dFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHJvb3RS
ZWN0KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJl
ZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCBJbnRSZWN0KCkpOwogCiAgICAgc2V0UXVhZHMo
cm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNU
X0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKQEAgLTEyMiw4ICsxMjIsOCBAQCBURVNUKENDUXVh
ZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDZW50ZXJUaWxlT25seSkKIAogICAgIGNoaWxkVHJhbnNm
b3JtLnRyYW5zbGF0ZSg1MCwgNTApOwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBy
b290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4
KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgdHJ1
ZSk7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRR
dWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwg
Y2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCks
IDEuMCwgcm9vdFJlY3QpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0
ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGNoaWxkUmVjdCk7CiAKICAg
ICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsK
ICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwpAQCAtMTM3LDggKzEzNyw4IEBA
IFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcEJvdHRvbVJpZ2h0
KQogCiAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDEwMCwgMTAwKTsKIAotICAgIE93blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0
ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVj
dCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOwotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
Y2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOwor
ICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3Rh
dGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHJvb3RSZWN0KTsKKyAgICBPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxk
VHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwg
MS4wLCBjaGlsZFJlY3QpOwogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0
YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1
KTsKQEAgLTE1Myw4ICsxNTMsOCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4
aXNBbGlnbmVkUXVhZHNEb250T2NjbHVkZSkKICAgICAvLyBVc2UgYSBzbWFsbCByb3RhdGlvbiBz
byBhcyB0byBub3QgZGlzdHVyYiB0aGUgZ2VvbWV0cnkgc2lnbmlmaWNhbnRseS4KICAgICBjaGls
ZFRyYW5zZm9ybS5yb3RhdGUoMSk7CiAKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJv
b3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVl
KTsKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1
YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBj
aGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwg
MS4wLCByb290UmVjdCk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRl
ID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgY2hpbGRSZWN0KTsKIAogICAg
IHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwog
ICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CkBAIC0xNzUsOCArMTc1LDggQEAg
VEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlOb25BeGlzQWxpZ25lZFF1YWRzU2FmZWx5Q3Vs
bGVkKQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhcmVudFRyYW5zZm9ybTsKICAgICBwYXJl
bnRUcmFuc2Zvcm0ucm90YXRlKDEpOwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBy
b290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHBhcmVudFRyYW5zZm9ybSwgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKLSAg
ICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0
ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOworICAgIE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShwYXJlbnRUcmFu
c2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwg
cm9vdFJlY3QpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IEND
U2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgY2hpbGRSZWN0KTsKIAog
ICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3Qp
OwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122066</attachid>
            <date>2012-01-11 12:09:14 -0800</date>
            <delta_ts>2012-01-14 07:30:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120111150913.patch</filename>
            <type>text/plain</type>
            <size>25476</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNkNDhhODFmNjVkZDE3
M2ZjZjI2YmE5MTJiNzAyZjAzNGQ2YzYyMi4uYzAxNmY5YmVmYjA5NjhhYzljN2JiODVjYjczZDA1
NDJkNzhkYTU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAxLTEwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVt
ZW1iZXIgcmVnaW9uIHBhaW50ZWQgb3BhcXVlIGluIGxheWVycyBhbmQgdXNlIGZvciBkcmF3IGN1
bGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3
IHVuaXQgdGVzdHMgaW4gQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bTo6c2V0T3BhcXVlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNo
cm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjpvcGFxdWVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpD
Q0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Ry
YXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpkcmF3c09wYXF1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0JsZW5kaW5nKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVySW1wbDo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRPcGFxdWVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllckltcGw6Om9wYXF1ZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6
OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2hh
cmVkUXVhZFN0YXRlOjpDQ1NoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2hhcmVkUXVhZFN0YXRlOjpvcGFxdWVSZWN0KToKKwogMjAxMi0wMS0wOSAgRGFuYSBKYW5z
ZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENyZWF0ZSBp
dGVyYXRvcnMgZm9yIHRoZSBSZW5kZXJTdXJmYWNlLUxheWVyIHRyZWUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggYzRjMjRhZTJkNGFhMjBlZWM0M2FkZWMzYjEzNzJkYjllNjg5N2ZhZC4u
MzkxOWQwOGE5YWYxNjMxM2Y2M2IwYmM0OWZmOGEwMWJlMDY1ZjQ3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMS0xMCAgRGFuYSBKYW5zZW5zICA8
ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFJlbWVtYmVyIHJlZ2lv
biBwYWludGVkIG9wYXF1ZSBpbiBsYXllcnMgYW5kIHVzZSBmb3IgZHJhdyBjdWxsaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NRdWFk
Q3VsbGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wMS0wOSAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1d
IENyZWF0ZSBpdGVyYXRvcnMgZm9yIHRoZSBSZW5kZXJTdXJmYWNlLUxheWVyIHRyZWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5jcHAKaW5kZXggMmRmMDViNTljYjg1YWQ3YzA4NzAxOGNjMjU2ZWUxNzQwOTRi
OWJkNS4uNGIwMWY0MmZjNThmZDJlZGUyNDRmMjBmZjEwYzY0Njk0ZmYwZDk4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTMzMyw2ICszMzMsMTQgQEAgdm9pZCBMYXllckNocm9taXVtOjpz
ZXRPcGFxdWUoYm9vbCBvcGFxdWUpCiAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAordm9pZCBM
YXllckNocm9taXVtOjpzZXRPcGFxdWVSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCit7
CisgICAgaWYgKG1fb3BhcXVlUmVjdCA9PSBvcGFxdWVSZWN0KQorICAgICAgICByZXR1cm47Cisg
ICAgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVjdDsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQor
CiB2b2lkIExheWVyQ2hyb21pdW06OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uKQogewogICAgIGlmIChtX3Bvc2l0aW9uID09IHBvc2l0aW9uKQpAQCAtNDI3LDYgKzQzNSw3
IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5
ZXIpCiAgICAgbGF5ZXItPnNldFNjcm9sbGFibGUobV9zY3JvbGxhYmxlKTsKICAgICBsYXllci0+
c2V0TmFtZShtX25hbWUpOwogICAgIGxheWVyLT5zZXRPcGFxdWUobV9vcGFxdWUpOworICAgIGxh
eWVyLT5zZXRPcGFxdWVSZWN0KG1fb3BhcXVlUmVjdCk7CiAgICAgbGF5ZXItPnNldE9wYWNpdHko
bV9vcGFjaXR5KTsKICAgICBsYXllci0+c2V0UG9zaXRpb24obV9wb3NpdGlvbik7CiAgICAgbGF5
ZXItPnNldFByZXNlcnZlczNEKHByZXNlcnZlczNEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDg3ZjUwNTZmM2MzZWRiMDJlYmE0YTk1MTgzNGI3YTg0M2I3ODQxMWEuLjNiMGZmNmM0M2U3NDdj
MDJjM2FiZDNmYTI1YWM1ZTdiYzg2MDUwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTExMCw5
ICsxMTAsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7CiAgICAgZmxv
YXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQogCisgICAgLy8gTWFya3Mg
dGhlIGVudGlyZSBsYXllciBvcGFxdWUuCiAgICAgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CiAgICAg
Ym9vbCBvcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZTsgfQogCisgICAgLy8gTWFya3Mg
c29tZSBzdWJzZXQgb2YgdGhlIGxheWVyIG9wYXF1ZS4gSWYgb3BhcXVlKCkgaXMgdHJ1ZSwgdGhp
cyB2YWx1ZSBpcyBpcnJlbGV2YW50LgorICAgIHZvaWQgc2V0T3BhcXVlUmVjdChjb25zdCBJbnRS
ZWN0Jik7CisgICAgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
b3BhcXVlUmVjdDsgfQorCiAgICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jik7
CiAgICAgRmxvYXRQb2ludCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0K
IApAQCAtMjY1LDYgKzI3MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRHJhd2FibGU7CiAg
ICAgYm9vbCBtX21hc2tzVG9Cb3VuZHM7CiAgICAgYm9vbCBtX29wYXF1ZTsKKyAgICBJbnRSZWN0
IG1fb3BhcXVlUmVjdDsKICAgICBib29sIG1fZG91YmxlU2lkZWQ7CiAgICAgYm9vbCBtX3VzZXNM
YXllckNsaXBwaW5nOwogICAgIGJvb2wgbV9pc05vbkNvbXBvc2l0ZWRDb250ZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYWQyY2IxM2ZjNzMwOTM2YTljOTRkNGE4ODQ1
MTM4M2MzY2QyZjEzOC4uNTA0YTgxMDJhYzVjZTUwNWRhZTgyYTIyMGIxNjUyYjc0YzAzZDEwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC00MzQsNiArNDM0LDcgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50
IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5wcmVwYXJl
UmVjdChzb3VyY2VSZWN0KTsKICAgICAgICAgfQogICAgIH0KKyAgICBzZXRPcGFxdWVSZWN0KHRl
eHR1cmVVcGRhdGVyKCktPm9wYXF1ZVJlY3QoKSk7CiB9CiAKIApAQCAtNDQ2LDggKzQ0NywxMCBA
QCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCkKIAogICAgIHVwZGF0ZUJvdW5kcygpOwogCi0gICAgaWYgKGxheWVyUmVjdC5p
c0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkpCisgICAgaWYgKGxheWVyUmVjdC5pc0Vt
cHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkpIHsKKyAgICAgICAgc2V0T3BhcXVlUmVjdChJ
bnRSZWN0KCkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaW50IGxlZnQsIHRvcCwg
cmlnaHQsIGJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2VzKGxheWVy
UmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKaW5k
ZXggOGZjZjQ0OWYwNGYyZDVmNTZiZmY1ODk4MmNhNDQxMDAxOGRiZTI0Mi4uMWIzY2FiODNhMGM0
MGI1Y2ZhNTQ0OWIwMWUzZDMxZmJlNTQ5MGFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKQEAg
LTQyLDYgKzQyLDcgQEAgQ0NEcmF3UXVhZDo6Q0NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBNYXRlcmlhbCBtYXRlcmkKICAgICAsIG1fcXVhZFJlY3Qo
cXVhZFJlY3QpCiAgICAgLCBtX3F1YWRPcGFxdWUodHJ1ZSkKICAgICAsIG1fbmVlZHNCbGVuZGlu
ZyhmYWxzZSkKKyAgICAsIG1fcXVhZE9wYXF1ZVJlY3QoaW50ZXJzZWN0aW9uKHNoYXJlZFF1YWRT
dGF0ZS0+b3BhcXVlUmVjdCgpLCBxdWFkUmVjdCkpCiB7CiAgICAgQVNTRVJUKG1fc2hhcmVkUXVh
ZFN0YXRlKTsKICAgICBBU1NFUlQobV9tYXRlcmlhbCAhPSBJbnZhbGlkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1
YWQuaAppbmRleCBiNTY5MTNiM2NlNTNhYzBlZDBlZWJlNGQ3Nzk4MDRjYzI1ZDRlNmFlLi5kNzVm
NGUzYTllOGEyMDE0ZDYzZjIxNzFlZWJlNDlkY2ZiODcxMGViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5o
CkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJSZWN0KCk7IH0KICAgICBj
b25zdCBJbnRSZWN0JiBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRl
LT5jbGlwUmVjdCgpOyB9CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hh
cmVkUXVhZFN0YXRlLT5vcGFjaXR5KCk7IH0KLSAgICAvLyBGb3IgdGhlIHB1cnBvc2VzIG9mIGN1
bGxpbmcsIGFyZSB0aGUgY29udGVudHMgb2YgdGhpcyBxdWFkIG9wYXF1ZT8KLSAgICBib29sIGRy
YXdzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkg
JiYgbV9xdWFkT3BhcXVlICYmIG9wYWNpdHkoKSA9PSAxOyB9Ci0gICAgYm9vbCBuZWVkc0JsZW5k
aW5nKCkgY29uc3QgeyByZXR1cm4gIW1fc2hhcmVkUXVhZFN0YXRlLT5pc09wYXF1ZSgpIHx8IG1f
bmVlZHNCbGVuZGluZyB8fCBvcGFjaXR5KCkgIT0gMTsgfQorICAgIC8vIEZvciB0aGUgcHVycG9z
ZXMgb2YgY3VsbGluZywgd2hhdCBwYXJ0IG9mIHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQgYXJl
IG9wYXF1ZT8KKyAgICBJbnRSZWN0IHF1YWRPcGFxdWVSZWN0KCkgY29uc3QgeyByZXR1cm4gb3Bh
Y2l0eSgpID09IDEgJiYgbV9xdWFkT3BhcXVlID8gbV9xdWFkT3BhcXVlUmVjdCA6IEludFJlY3Qo
KTsgfQorICAgIGJvb2wgbmVlZHNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG9wYWNpdHkoKSAh
PSAxIHx8IG1fbmVlZHNCbGVuZGluZyB8fCBtX3F1YWRPcGFxdWVSZWN0ICE9IG1fcXVhZFJlY3Q7
IH0KICAgICBib29sIGlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3NoYXJlZFF1YWRTdGF0ZS0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpOyB9CiAKICAgICBl
bnVtIE1hdGVyaWFsIHsKQEAgLTg2LDYgKzg2LDEwIEBAIHByb3RlY3RlZDoKICAgICAvLyB2YXJp
YWJsZXMuCiAgICAgYm9vbCBtX3F1YWRPcGFxdWU7CiAgICAgYm9vbCBtX25lZWRzQmxlbmRpbmc7
CisKK3ByaXZhdGU6CisgICAgLy8gVGhlIGludGVyc2VjdGlvbiBvZiB0aGUgU2hhcmVkUXVhZFN0
YXRlJ3Mgb3BhcXVlUmVjdCB3aXRoIHRoaXMgcXVhZC4KKyAgICBJbnRSZWN0IG1fcXVhZE9wYXF1
ZVJlY3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggMjljMzA2MDY4YmQ0
NmE3NWI5Y2RhYmY4MmFkZjBlYmRkYmZjNDk1MS4uZmJiMGZkMmVjNDhmNGFhODVhMzZlMzhjZjFj
OTNjMjZiMjk5YmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTI0LDcgKzEyNCw4
IEBAIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDTGF5ZXJJbXBsOjpjcmVhdGVTaGFy
ZWRRdWFkU3RhdGUoKSBjb25zdAogICAgIEludFJlY3QgbGF5ZXJDbGlwUmVjdDsKICAgICBpZiAo
dXNlc0xheWVyQ2xpcHBpbmcoKSkKICAgICAgICAgbGF5ZXJDbGlwUmVjdCA9IGNsaXBSZWN0KCk7
Ci0gICAgcmV0dXJuIENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUocXVhZFRyYW5zZm9ybSgpLCBk
cmF3VHJhbnNmb3JtKCksIHZpc2libGVMYXllclJlY3QoKSwgbGF5ZXJDbGlwUmVjdCwgZHJhd09w
YWNpdHkoKSwgb3BhcXVlKCkpOworICAgIEludFJlY3QgbGF5ZXJPcGFxdWVSZWN0ID0gb3BhcXVl
KCkgPyB2aXNpYmxlTGF5ZXJSZWN0KCkgOiBvcGFxdWVSZWN0KCk7CisgICAgcmV0dXJuIENDU2hh
cmVkUXVhZFN0YXRlOjpjcmVhdGUocXVhZFRyYW5zZm9ybSgpLCBkcmF3VHJhbnNmb3JtKCksIHZp
c2libGVMYXllclJlY3QoKSwgbGF5ZXJDbGlwUmVjdCwgZHJhd09wYWNpdHkoKSwgbGF5ZXJPcGFx
dWVSZWN0KTsKIH0KIAogdm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCkBAIC0z
NjIsNiArMzYzLDE1IEBAIHZvaWQgQ0NMYXllckltcGw6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkK
ICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9CiAKK3ZvaWQgQ0NM
YXllckltcGw6OnNldE9wYXF1ZVJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKK3sKKyAg
ICBpZiAobV9vcGFxdWVSZWN0ID09IG9wYXF1ZVJlY3QpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fb3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
Rm9yU3VidHJlZSgpOworfQorCiB2b2lkIENDTGF5ZXJJbXBsOjpzZXRPcGFjaXR5KGZsb2F0IG9w
YWNpdHkpCiB7CiAgICAgaWYgKG1fb3BhY2l0eSA9PSBvcGFjaXR5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmgKaW5kZXggYTE4ZmQ0NDIwY2U2YmYyOWJiMTVjOTQ2NDI2N2IwYzgxZDRjNzdmNi4uYTQzODEx
ODdlNTA1MzI3ZDY0NDQzOTEzMDAxMzhkMWQyNjE5NzJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5o
CkBAIC0xMDMsNiArMTAzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwog
ICAgIGJvb2wgb3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWU7IH0KIAorICAgIHZvaWQg
c2V0T3BhcXVlUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgY29uc3QgSW50UmVjdCYgb3BhcXVl
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhcXVlUmVjdDsgfQorCiAgICAgdm9pZCBzZXRPcGFj
aXR5KGZsb2F0KTsKICAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5
OyB9CiAKQEAgLTI0Miw2ICsyNDUsNyBAQCBwcml2YXRlOgogICAgIEludFJlY3QgbV92aXNpYmxl
TGF5ZXJSZWN0OwogICAgIGJvb2wgbV9tYXNrc1RvQm91bmRzOwogICAgIGJvb2wgbV9vcGFxdWU7
CisgICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7CiAgICAgZmxvYXQgbV9vcGFjaXR5OwogICAgIEZs
b2F0UG9pbnQgbV9wb3NpdGlvbjsKICAgICBib29sIG1fcHJlc2VydmVzM0Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmNwcAppbmRleCA0YThiODUxMzBlMWVkNGVlYWMzNjYzNWVmZDdjMDI5NTg1MGRi
ODQzLi43ZDE1NmY4YThiNjg1OTcyMmQ5YjBlNmY2MzFhMDMxNjEwMTc5YzEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUXVhZEN1bGxlci5jcHAKQEAgLTc4LDggKzc4LDEwIEBAIHZvaWQgQ0NRdWFkQ3VsbGVyOjpj
dWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKIAogICAgICAgICBib29sIGtl
ZXBRdWFkID0gIXJlZ2lvbkNvbnRhaW5zUmVjdChvcGFxdWVDb3ZlcmFnZVRodXNGYXIsIHF1YWRS
ZWN0KTsKIAotICAgICAgICBpZiAoa2VlcFF1YWQgJiYgZHJhd1F1YWQtPmRyYXdzT3BhcXVlKCkg
JiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkKLSAgICAgICAgICAgIG9w
YXF1ZUNvdmVyYWdlVGh1c0Zhci51bml0ZShSZWdpb24ocXVhZFJlY3QpKTsKKyAgICAgICAgaWYg
KGtlZXBRdWFkICYmICFkcmF3UXVhZC0+cXVhZE9wYXF1ZVJlY3QoKS5pc0VtcHR5KCkgJiYgZHJh
d1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkgeworICAgICAgICAgICAgSW50UmVj
dCBvcGFxdWVSZWN0KGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkubWFwUmVjdChkcmF3UXVhZC0+
cXVhZE9wYXF1ZVJlY3QoKSkpOworICAgICAgICAgICAgb3BhcXVlQ292ZXJhZ2VUaHVzRmFyLnVu
aXRlKG9wYXF1ZVJlY3QpOworICAgICAgICB9CiAKICAgICAgICAgaWYgKGtlZXBRdWFkKQogICAg
ICAgICAgICAgY3VsbGVkTGlzdC5hcHBlbmQocXVhZExpc3RbaV0ucmVsZWFzZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3MuY3BwCmluZGV4IDZmNTFmYmNkZTA1YWM5NjEyODc0NDA0NTEwNTRmNGVj
M2Y1MTI4ZGYuLmRiNzllMDdiZDYwMGM0YWY3NWYzNGFmNWYzODU4NThjNTQzY2FkMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmNwcApAQCAtNTgsOCArNTgsOCBAQCB2b2lkIENDUmVuZGVyUGFz
czo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyKQog
ICAgIC8vIEZJWE1FOiByZW5kZXIgc3VyZmFjZSBsYXllcnMgc2hvdWxkIGJlIGEgQ0NMYXllcklt
cGwtZGVyaXZlZCBjbGFzcyBhbmQKICAgICAvLyBub3QgYmUgaGFuZGxlZCBzcGVjaWFsbHkgaGVy
ZS4KICAgICBDQ1JlbmRlclN1cmZhY2UqIHN1cmZhY2UgPSBsYXllci0+cmVuZGVyU3VyZmFjZSgp
OwotICAgIGJvb2wgaXNPcGFxdWUgPSBmYWxzZTsKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IHNoYXJlZFF1YWRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoc3VyZmFjZS0+
ZHJhd1RyYW5zZm9ybSgpLCBzdXJmYWNlLT5kcmF3VHJhbnNmb3JtKCksIHN1cmZhY2UtPmNvbnRl
bnRSZWN0KCksIHN1cmZhY2UtPmNsaXBSZWN0KCksIHN1cmZhY2UtPmRyYXdPcGFjaXR5KCksIGlz
T3BhcXVlKTsKKyAgICBJbnRSZWN0IG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CisgICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6
Y3JlYXRlKHN1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKSwgc3VyZmFjZS0+ZHJhd1RyYW5zZm9ybSgp
LCBzdXJmYWNlLT5jb250ZW50UmVjdCgpLCBzdXJmYWNlLT5jbGlwUmVjdCgpLCBzdXJmYWNlLT5k
cmF3T3BhY2l0eSgpLCBvcGFxdWVSZWN0KTsKICAgICBtX3F1YWRMaXN0LmFwcGVuZChDQ1JlbmRl
clN1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgc3VyZmFjZS0+
Y29udGVudFJlY3QoKSwgbGF5ZXIsIHN1cmZhY2VEYW1hZ2VSZWN0KCkpKTsKICAgICBtX3NoYXJl
ZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aGFyZWRRdWFkU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCmluZGV4IDliZjc2OTI1YmI4Y2YyYmJhYzUz
OWMwMTQzMWM1NTc4NDMzOWZkMDUuLjVmYzIyODdiNjAzYmYwYzU5ZDhjMTFmNTFmMmUwMTI3ZTVh
ODQ2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKQEAgLTI5LDE4ICsy
OSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5z
Zm9ybSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwg
ZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpCitQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBx
dWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0s
IGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0
IG9wYWNpdHksIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDQ1NoYXJlZFF1YWRTdGF0ZShxdWFkVHJhbnNmb3JtLCBsYXllclRyYW5zZm9ybSwg
bGF5ZXJSZWN0LCBjbGlwUmVjdCwgb3BhY2l0eSwgb3BhcXVlKSk7CisgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDQ1NoYXJlZFF1YWRTdGF0ZShxdWFkVHJhbnNmb3JtLCBsYXllclRyYW5zZm9ybSwg
bGF5ZXJSZWN0LCBjbGlwUmVjdCwgb3BhY2l0eSwgb3BhcXVlUmVjdCkpOwogfQogCi1DQ1NoYXJl
ZFF1YWRTdGF0ZTo6Q0NTaGFyZWRRdWFkU3RhdGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9y
bSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgZmxv
YXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpCitDQ1NoYXJlZFF1YWRTdGF0ZTo6Q0NTaGFyZWRRdWFk
U3RhdGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgSW50UmVj
dCYgb3BhcXVlUmVjdCkKICAgICA6IG1fcXVhZFRyYW5zZm9ybShxdWFkVHJhbnNmb3JtKQogICAg
ICwgbV9sYXllclRyYW5zZm9ybShsYXllclRyYW5zZm9ybSkKICAgICAsIG1fbGF5ZXJSZWN0KGxh
eWVyUmVjdCkKICAgICAsIG1fY2xpcFJlY3QoY2xpcFJlY3QpCiAgICAgLCBtX29wYWNpdHkob3Bh
Y2l0eSkKLSAgICAsIG1fb3BhcXVlKG9wYXF1ZSkKKyAgICAsIG1fb3BhcXVlUmVjdChvcGFxdWVS
ZWN0KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaAppbmRleCBlNzg1NzU3
ZjlkYjk0YjFiMzIwNjFmZDhkOGIyMWM0MGJlZjFmZjBhLi4zMWQ2NjlmY2ZjYTNkMjEzNTBlODMw
ZDhhOWVkNTU2OTgyN2E3OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NTaGFyZWRRdWFkU3Rh
dGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU2hhcmVkUXVhZFN0YXRlKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5
ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xp
cFJlY3QsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpOwogCiAgICAg
Ly8gVGhlIHRyYW5zZm9ybSB0aGF0IHF1YWRzIGluIGEgQ0NEcmF3UXVhZCBzaG91bGQgYmUgdHJh
bnNmb3JtZWQgd2l0aC4KICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZFRyYW5zZm9ybTsgfQpAQCAtNDQsMjAgKzQ0LDIw
IEBAIHB1YmxpYzoKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiBtX2xheWVyVHJhbnNmb3JtOyB9CiAgICAgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclJlY3Q7IH0KICAgICBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcFJlY3Q7IH0KKyAgICBjb25z
dCBJbnRSZWN0JiBvcGFxdWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWVSZWN0OyB9CiAK
ICAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5OyB9Ci0gICAgYm9v
bCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhcXVlOyB9CiAgICAgYm9vbCBpc0xheWVy
QXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ0NTaGFyZWRRdWFk
U3RhdGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUp
OworICAgIENDU2hhcmVkUXVhZFN0YXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFk
VHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0IG9w
YWNpdHksIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpOwogCiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbV9xdWFkVHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fbGF5ZXJU
cmFuc2Zvcm07CiAgICAgSW50UmVjdCBtX2xheWVyUmVjdDsKICAgICBJbnRSZWN0IG1fY2xpcFJl
Y3Q7CiAgICAgZmxvYXQgbV9vcGFjaXR5OwotICAgIGJvb2wgbV9vcGFxdWU7CisgICAgSW50UmVj
dCBtX29wYXF1ZVJlY3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAppbmRleCBlZDE1ZTZjMTBlMWZlNDYyYzk0OTY4NTZk
YjM5MzQ1NjlmYWI4ODFjLi40ZmVlMTdlOWQ1OTRkMDIxYmY1MmY2MzkwZGRlYWJiZjIwMTQ1OTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVz
dC5jcHAKQEAgLTgxLDggKzgxLDggQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxs
Q2hpbGRMaW5lc1VwVG9wTGVmdCkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1Rf
UVVBRFMKIAotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFy
ZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOwotICAgIE93blB0cjxD
Q1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUo
Y2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVj
dCgpLCAxLjAsIHRydWUpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRl
ID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHJvb3RSZWN0KTsK
KyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRT
dGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGls
ZFJlY3QsIEludFJlY3QoKSwgMS4wLCBjaGlsZFJlY3QpOwogCiAgICAgc2V0UXVhZHMocm9vdFN0
YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1
YWRMaXN0LnNpemUoKSwgMTN1KTsKQEAgLTk0LDggKzk0LDggQEAgVEVTVChDQ1F1YWRDdWxsZXJU
ZXN0LCB2ZXJpZnlDdWxsV2hlbkNoaWxkT3BhY2l0eU5vdE9uZSkKIHsKICAgICBERUNMQVJFX0FO
RF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIAotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
cm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRy
dWUpOwotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVk
UXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IGNoaWxkUmVjdCwgSW50UmVjdCgpLCAwLjksIHRydWUpOworICAgIE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgp
LCAxLjAsIHJvb3RSZWN0KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3Rh
dGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMC45LCBjaGlsZFJlY3QpOwogCiAg
ICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7
CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKQEAgLTEwNyw4ICsxMDcsOCBA
QCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxXaGVuQ2hpbGRPcGFxdWVGbGFnRmFs
c2UpCiB7CiAgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCiAKLSAgICBPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVh
dGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJl
Y3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCBmYWxzZSk7
CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRT
dGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4
KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgcm9vdFJlY3QpOworICAgIE93blB0cjxDQ1No
YXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hp
bGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgp
LCAxLjAsIEludFJlY3QoKSk7CiAKICAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxk
U3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAx
M3UpOwpAQCAtMTIyLDggKzEyMiw4IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3Vs
bENlbnRlclRpbGVPbmx5KQogCiAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7
CiAKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVh
ZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKLSAgICBPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxk
VHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwg
MS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IEND
U2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCByb290UmVjdCk7CisgICAg
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6
OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0
LCBJbnRSZWN0KCksIDEuMCwgY2hpbGRSZWN0KTsKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5n
ZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlz
dC5zaXplKCksIDEzdSk7CkBAIC0xMzcsOCArMTM3LDggQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0
LCB2ZXJpZnlDdWxsQ2hpbGRMaW5lc1VwQm90dG9tUmlnaHQpCiAKICAgICBjaGlsZFRyYW5zZm9y
bS50cmFuc2xhdGUoMTAwLCAxMDApOwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBy
b290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4
KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgdHJ1
ZSk7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRR
dWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwg
Y2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCks
IDEuMCwgcm9vdFJlY3QpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0
ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGNoaWxkUmVjdCk7CiAKICAg
ICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsK
ICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwpAQCAtMTQ2LDYgKzE0Niw1NCBA
QCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDaGlsZExpbmVzVXBCb3R0b21SaWdo
dCkKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCA5dSk7CiB9CiAKK1RFU1QoQ0NRdWFk
Q3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbikKK3sKKyAgICBERUNMQVJFX0FORF9JTklU
SUFMSVpFX1RFU1RfUVVBRFMKKworICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTAp
OworCisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1
YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgcm9vdFJlY3QpOworICAgIEludFJlY3Qg
Y2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNo
aWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAv
IDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0s
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGNoaWxk
T3BhcXVlUmVjdCk7CisKKyAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUu
Z2V0KCksIHF1YWRMaXN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwor
ICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVD
VF9FUShxdWFkTGlzdC5zaXplKCksIDEydSk7Cit9CisKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwg
dmVyaWZ5Q3VsbFN1YlJlZ2lvbjIpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNU
X1FVQURTCisKKyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDEwKTsKKworICAgIE93
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNy
ZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290
UmVjdCwgSW50UmVjdCgpLCAxLjAsIHJvb3RSZWN0KTsKKyAgICBJbnRSZWN0IGNoaWxkT3BhcXVl
UmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0LCBjaGlsZFJlY3QueSgp
ICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRSZWN0LndpZHRoKCkgLyAyLCBjaGlsZFJl
Y3QuaGVpZ2h0KCkgKiAzIC8gNCk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGls
ZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgY2hpbGRPcGFxdWVS
ZWN0KTsKKworICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwg
cXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CisgICAgQ0NR
dWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgRVhQRUNUX0VRKHF1
YWRMaXN0LnNpemUoKSwgMTJ1KTsKK30KKworVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlD
dWxsU3ViUmVnaW9uQ2hlY2tPdmVyY3VsbCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpF
X1RFU1RfUVVBRFMKKworICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNDkpOworCisg
ICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0
ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgcm9vdFJlY3QpOworICAgIEludFJlY3QgY2hpbGRP
cGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNoaWxkUmVj
dC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAvIDIsIGNo
aWxkUmVjdC5oZWlnaHQoKSAvIDIpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hp
bGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGNoaWxkT3BhcXVl
UmVjdCk7CisKKyAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCks
IHF1YWRMaXN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIEND
UXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShx
dWFkTGlzdC5zaXplKCksIDEzdSk7Cit9CisKIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5
Tm9uQXhpc0FsaWduZWRRdWFkc0RvbnRPY2NsdWRlKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJ
QUxJWkVfVEVTVF9RVUFEUwpAQCAtMTUzLDggKzIwMSw4IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVz
dCwgdmVyaWZ5Tm9uQXhpc0FsaWduZWRRdWFkc0RvbnRPY2NsdWRlKQogICAgIC8vIFVzZSBhIHNt
YWxsIHJvdGF0aW9uIHNvIGFzIHRvIG5vdCBkaXN0dXJiIHRoZSBnZW9tZXRyeSBzaWduaWZpY2Fu
dGx5LgogICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSgxKTsKIAotICAgIE93blB0cjxDQ1NoYXJl
ZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVj
dCgpLCAxLjAsIHRydWUpOwotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0
ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOworICAgIE93blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0
ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVj
dCwgSW50UmVjdCgpLCAxLjAsIHJvb3RSZWN0KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3Jt
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCBjaGls
ZFJlY3QpOwogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgp
LCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKQEAgLTE3
NSw4ICsyMjMsOCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4aXNBbGlnbmVk
UXVhZHNTYWZlbHlDdWxsZWQpCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNm
b3JtOwogICAgIHBhcmVudFRyYW5zZm9ybS5yb3RhdGUoMSk7CiAKLSAgICBPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUocGFyZW50
VHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAx
LjAsIHRydWUpOwotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IEND
U2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3Jl
YXRlKHBhcmVudFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIElu
dFJlY3QoKSwgMS4wLCByb290UmVjdCk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBj
aGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCBj
aGlsZFJlY3QpOwogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdl
dCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122546</attachid>
            <date>2012-01-14 07:30:18 -0800</date>
            <delta_ts>2012-01-17 15:16:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120114103017.patch</filename>
            <type>text/plain</type>
            <size>23369</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDJk
ZjA1YjU5Y2I4NWFkN2MwODcwMThjYzI1NmVlMTc0MDk0YjliZDUuLjU0YTI4YTMxMzRmYzkwMDEz
NTc4OGZjYTcwMWJlMzQwMTg2ZTA2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC00MzMs
NiArNDMzLDcgQEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJ
bXBsKiBsYXllcikKICAgICBsYXllci0+c2V0U2Nyb2xsUG9zaXRpb24obV9zY3JvbGxQb3NpdGlv
bik7CiAgICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKG1fc3VibGF5ZXJUcmFuc2Zvcm0p
OwogICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0obV90cmFuc2Zvcm0pOworICAgIGxheWVyLT5zZXRP
cGFxdWVSZWN0KG1fb3BhcXVlUmVjdCk7CiAgICAgbGF5ZXItPnNldFVwZGF0ZVJlY3QobV91cGRh
dGVSZWN0KTsKIAogICAgIGxheWVyLT5zZXRTY3JvbGxEZWx0YShsYXllci0+c2Nyb2xsRGVsdGEo
KSAtIGxheWVyLT5zZW50U2Nyb2xsRGVsdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggODk4
NDVhNTE4ZWM3NGRjZjQ0NTRmYTlkZWNkMTA1YTBkMzY4OTI4Ny4uMzI2NjljNjgzZDZhODZlYjli
YWRkMzJmY2ZlNmI0N2JiMGM1MDA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMTEwLDkgKzEx
MCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKICAgICBmbG9hdCBv
cGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5OyB9CiAKKyAgICAvLyBNYXJrcyB0aGUg
ZW50aXJlIGxheWVyIG9wYXF1ZS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwog
ICAgIGJvb2wgb3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWU7IH0KIAorICAgIC8vIFRo
ZSBwb3J0aW9uIG9mIHRoZSBsYXllciB0aGF0IGlzIG9wYXF1ZS4KKyAgICBjb25zdCBJbnRSZWN0
JiBvcGFxdWVSZWN0KCkgY29uc3QgeyByZXR1cm4gb3BhcXVlKCkgPyB2aXNpYmxlTGF5ZXJSZWN0
KCkgOiAgbV9vcGFxdWVSZWN0OyB9CisKICAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmKTsKICAgICBGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbjsgfQogCkBAIC0yMTcsNiArMjIxLDEwIEBAIHByb3RlY3RlZDoKICAgICAvLyBUaGlzIGZs
YWcgaXMgc2V0IHdoZW4gbGF5ZXIgbmVlZCByZXBhaW50aW5nL3VwZGF0aW5nLgogICAgIGJvb2wg
bV9uZWVkc0Rpc3BsYXk7CiAKKyAgICAvLyBBIHN1YnNldCBvZiB0aGUgbGF5ZXIga25vd24gdG8g
YmUgb3BhcXVlLiBUaGlzIGlzIGRldGVybWluZWQgZHVyaW5nIHBhaW50LCBzbyBubyBleHBsaWNp
dCBjb21taXQgaXMgbmVlZGVkCisgICAgLy8gd2hlbiBjaGFuZ2luZyB0aGlzIHZhbHVlLgorICAg
IEludFJlY3QgbV9vcGFxdWVSZWN0OworCiAgICAgLy8gVGhlIHVwZGF0ZSByZWN0IGlzIHRoZSBy
ZWdpb24gb2YgdGhlIGNvbXBvc2l0b3IgcmVzb3VyY2UgdGhhdCB3YXMgYWN0dWFsbHkgdXBkYXRl
ZCBieSB0aGUgY29tcG9zaXRvci4KICAgICAvLyBGb3IgbGF5ZXJzIHRoYXQgbWF5IGRvIHVwZGF0
aW5nIG91dHNpZGUgdGhlIGNvbXBvc2l0b3IncyBjb250cm9sIChpLmUuIHBsdWdpbiBsYXllcnMp
LCB0aGlzIGluZm9ybWF0aW9uCiAgICAgLy8gaXMgbm90IGF2YWlsYWJsZSBhbmQgdGhlIHVwZGF0
ZSByZWN0IHdpbGwgcmVtYWluIGVtcHR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggNzEzYjRlMGYyMTNiMzZkNzk2YTQzMTM0MjYyY2IwZjYwY2IwNmI4Ny4uMWE1Y2JiYWRi
ODMzOWM3ZDYzYjZjZGE4NDVmMWFkYmMyY2M0NDA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwCkBAIC00MTIsOCArNDEyLDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAg
IC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBHcmFwaGlj
c0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAogICAgIC8vIHNvIHdlIGdyYWIgYSBs
b2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBw
YWludCBjb21wbGV0ZXMuCiAgICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rv
cih0ZXh0dXJlVXBkYXRlcigpKTsKLSAgICBJbnRSZWN0IG9wYXF1ZVJlY3Q7IC8vIEZJWE1FOiB1
bnVzZWQuIHJlbW92ZSB0aGlzIGFuZCBzdG9yZSBpbiB0aGUgbGF5ZXIgdG8gcGFzcyB0byBpbXBs
IGZvciBkcmF3IGN1bGxpbmcKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUo
bV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVs
cygpLCBjb250ZW50c1NjYWxlKCksICZvcGFxdWVSZWN0KTsKKyAgICB0ZXh0dXJlVXBkYXRlcigp
LT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGls
ZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZtX29wYXF1ZVJlY3QpOwog
ICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChp
bnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGls
ZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKQEAgLTQ1MSw2ICs0NTAsNyBAQCB2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKICAg
ICBtX3BhaW50UmVjdCA9IEludFJlY3QoKTsKIAogICAgIHVwZGF0ZUJvdW5kcygpOworICAgIG1f
b3BhcXVlUmVjdCA9IEludFJlY3QoKTsKIAogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpIHx8
ICFtX3RpbGVyLT5udW1UaWxlcygpKQogICAgICAgICByZXR1cm47CkBAIC00NzAsNiArNDcwLDcg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0KQogICAgIEFTU0VSVChtX3RpbGVyKTsKIAogICAgIHVwZGF0ZUJvdW5k
cygpOworICAgIG1fb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKIAogICAgIGlmIChtX3RpbGVyLT5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKaW5kZXggOGZj
ZjQ0OWYwNGYyZDVmNTZiZmY1ODk4MmNhNDQxMDAxOGRiZTI0Mi4uMWIzY2FiODNhMGM0MGI1Y2Zh
NTQ0OWIwMWUzZDMxZmJlNTQ5MGFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAKQEAgLTQyLDYg
KzQyLDcgQEAgQ0NEcmF3UXVhZDo6Q0NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBNYXRlcmlhbCBtYXRlcmkKICAgICAsIG1fcXVhZFJlY3QocXVhZFJl
Y3QpCiAgICAgLCBtX3F1YWRPcGFxdWUodHJ1ZSkKICAgICAsIG1fbmVlZHNCbGVuZGluZyhmYWxz
ZSkKKyAgICAsIG1fcXVhZE9wYXF1ZVJlY3QoaW50ZXJzZWN0aW9uKHNoYXJlZFF1YWRTdGF0ZS0+
b3BhcXVlUmVjdCgpLCBxdWFkUmVjdCkpCiB7CiAgICAgQVNTRVJUKG1fc2hhcmVkUXVhZFN0YXRl
KTsKICAgICBBU1NFUlQobV9tYXRlcmlhbCAhPSBJbnZhbGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaApp
bmRleCBiNTY5MTNiM2NlNTNhYzBlZDBlZWJlNGQ3Nzk4MDRjYzI1ZDRlNmFlLi5kNzVmNGUzYTll
OGEyMDE0ZDYzZjIxNzFlZWJlNDlkY2ZiODcxMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCkBAIC00
OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJSZWN0KCk7IH0KICAgICBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5jbGlw
UmVjdCgpOyB9CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVh
ZFN0YXRlLT5vcGFjaXR5KCk7IH0KLSAgICAvLyBGb3IgdGhlIHB1cnBvc2VzIG9mIGN1bGxpbmcs
IGFyZSB0aGUgY29udGVudHMgb2YgdGhpcyBxdWFkIG9wYXF1ZT8KLSAgICBib29sIGRyYXdzT3Bh
cXVlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkgJiYgbV9x
dWFkT3BhcXVlICYmIG9wYWNpdHkoKSA9PSAxOyB9Ci0gICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkg
Y29uc3QgeyByZXR1cm4gIW1fc2hhcmVkUXVhZFN0YXRlLT5pc09wYXF1ZSgpIHx8IG1fbmVlZHNC
bGVuZGluZyB8fCBvcGFjaXR5KCkgIT0gMTsgfQorICAgIC8vIEZvciB0aGUgcHVycG9zZXMgb2Yg
Y3VsbGluZywgd2hhdCBwYXJ0IG9mIHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQgYXJlIG9wYXF1
ZT8KKyAgICBJbnRSZWN0IHF1YWRPcGFxdWVSZWN0KCkgY29uc3QgeyByZXR1cm4gb3BhY2l0eSgp
ID09IDEgJiYgbV9xdWFkT3BhcXVlID8gbV9xdWFkT3BhcXVlUmVjdCA6IEludFJlY3QoKTsgfQor
ICAgIGJvb2wgbmVlZHNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG9wYWNpdHkoKSAhPSAxIHx8
IG1fbmVlZHNCbGVuZGluZyB8fCBtX3F1YWRPcGFxdWVSZWN0ICE9IG1fcXVhZFJlY3Q7IH0KICAg
ICBib29sIGlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NoYXJl
ZFF1YWRTdGF0ZS0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpOyB9CiAKICAgICBlbnVtIE1h
dGVyaWFsIHsKQEAgLTg2LDYgKzg2LDEwIEBAIHByb3RlY3RlZDoKICAgICAvLyB2YXJpYWJsZXMu
CiAgICAgYm9vbCBtX3F1YWRPcGFxdWU7CiAgICAgYm9vbCBtX25lZWRzQmxlbmRpbmc7CisKK3By
aXZhdGU6CisgICAgLy8gVGhlIGludGVyc2VjdGlvbiBvZiB0aGUgU2hhcmVkUXVhZFN0YXRlJ3Mg
b3BhcXVlUmVjdCB3aXRoIHRoaXMgcXVhZC4KKyAgICBJbnRSZWN0IG1fcXVhZE9wYXF1ZVJlY3Q7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggNjgzN2YwYTVjODZjNTY4ZTg5
M2JiNWIxMDRkZWYxNjYyMGIzNDZjMS4uMjg5ZDJkOTQ3Nzk5NDFjOTAyMWI5YWY1ZjY5NzcwZDYw
ZWNlN2UxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFBh
c3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDTGF5ZXJJbXBsOjpjcmVhdGVTaGFyZWRRdWFk
U3RhdGUoKSBjb25zdAogICAgIEludFJlY3QgbGF5ZXJDbGlwUmVjdDsKICAgICBpZiAodXNlc0xh
eWVyQ2xpcHBpbmcoKSkKICAgICAgICAgbGF5ZXJDbGlwUmVjdCA9IGNsaXBSZWN0KCk7Ci0gICAg
cmV0dXJuIENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUocXVhZFRyYW5zZm9ybSgpLCBkcmF3VHJh
bnNmb3JtKCksIHZpc2libGVMYXllclJlY3QoKSwgbGF5ZXJDbGlwUmVjdCwgZHJhd09wYWNpdHko
KSwgb3BhcXVlKCkpOworICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHF1YWRU
cmFuc2Zvcm0oKSwgZHJhd1RyYW5zZm9ybSgpLCB2aXNpYmxlTGF5ZXJSZWN0KCksIGxheWVyQ2xp
cFJlY3QsIGRyYXdPcGFjaXR5KCksIG9wYXF1ZVJlY3QoKSk7CiB9CiAKIHZvaWQgQ0NMYXllcklt
cGw6OmFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlKQpAQCAtMzYwLDYgKzM2MCwxNSBAQCB2b2lkIENDTGF5ZXJJ
bXBsOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
Rm9yU3VidHJlZSgpOwogfQogCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRPcGFxdWVSZWN0KGNvbnN0
IEludFJlY3QmIG9wYXF1ZVJlY3QpCit7CisgICAgaWYgKG1fb3BhcXVlUmVjdCA9PSBvcGFxdWVS
ZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0Owor
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKK30KKwogdm9pZCBDQ0xh
eWVySW1wbDo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQogewogICAgIGlmIChtX29wYWNpdHkg
PT0gb3BhY2l0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDAxMzZiMDFmODg4YTExZGFhOTAx
ZjYzYmU5OTRmMjIyMDRjZTU1NDguLmNmNWZjY2I2YWRkNjE4MGRhNmU2NTlhYTJiN2QxYmNlYzU1
YjVjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMTAzLDYgKzEwMyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldE9wYXF1ZShib29sKTsKICAgICBib29sIG9wYXF1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fb3BhcXVlOyB9CiAKKyAgICB2b2lkIHNldE9wYXF1ZVJlY3QoY29uc3QgSW50UmVjdCYp
OworICAgIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QoKSBjb25zdCB7IHJldHVybiBvcGFxdWUo
KSA/IHZpc2libGVMYXllclJlY3QoKSA6ICBtX29wYXF1ZVJlY3Q7IH0KKwogICAgIHZvaWQgc2V0
T3BhY2l0eShmbG9hdCk7CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bh
Y2l0eTsgfQogCkBAIC0yNDMsNiArMjQ2LDcgQEAgcHJpdmF0ZToKICAgICBJbnRSZWN0IG1fdmlz
aWJsZUxheWVyUmVjdDsKICAgICBib29sIG1fbWFza3NUb0JvdW5kczsKICAgICBib29sIG1fb3Bh
cXVlOworICAgIEludFJlY3QgbV9vcGFxdWVSZWN0OwogICAgIGZsb2F0IG1fb3BhY2l0eTsKICAg
ICBGbG9hdFBvaW50IG1fcG9zaXRpb247CiAgICAgYm9vbCBtX3ByZXNlcnZlczNEOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFk
Q3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUXVhZEN1bGxlci5jcHAKaW5kZXggNGE4Yjg1MTMwZTFlZDRlZWFjMzY2MzVlZmQ3YzAyOTU4
NTBkYjg0My4uZjM1N2NlYzRlNGU1NTc0YjIyYTNiMTUzYWE5YmQxNWRiZmRmZWQ0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFk
Q3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgQ0NRdWFkQ3VsbGVy
OjpjdWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKIAogICAgICAgICBib29s
IGtlZXBRdWFkID0gIXJlZ2lvbkNvbnRhaW5zUmVjdChvcGFxdWVDb3ZlcmFnZVRodXNGYXIsIHF1
YWRSZWN0KTsKIAotICAgICAgICBpZiAoa2VlcFF1YWQgJiYgZHJhd1F1YWQtPmRyYXdzT3BhcXVl
KCkgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkKLSAgICAgICAgICAg
IG9wYXF1ZUNvdmVyYWdlVGh1c0Zhci51bml0ZShSZWdpb24ocXVhZFJlY3QpKTsKKyAgICAgICAg
aWYgKGtlZXBRdWFkICYmICFkcmF3UXVhZC0+cXVhZE9wYXF1ZVJlY3QoKS5pc0VtcHR5KCkgJiYg
ZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkKKyAgICAgICAgICAgIG9wYXF1
ZUNvdmVyYWdlVGh1c0Zhci51bml0ZShkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFJlY3Qo
ZHJhd1F1YWQtPnF1YWRPcGFxdWVSZWN0KCkpKTsKIAogICAgICAgICBpZiAoa2VlcFF1YWQpCiAg
ICAgICAgICAgICBjdWxsZWRMaXN0LmFwcGVuZChxdWFkTGlzdFtpXS5yZWxlYXNlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggNmY1MWZiY2RlMDVhYzk2MTI4NzQ0MDQ1MTA1NGY0
ZWMzZjUxMjhkZi4uZGI3OWUwN2JkNjAwYzRhZjc1ZjM0YWY1ZjM4NTg1OGM1NDNjYWQyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC01OCw4ICs1OCw4IEBAIHZvaWQgQ0NSZW5kZXJQ
YXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5ZXIp
CiAgICAgLy8gRklYTUU6IHJlbmRlciBzdXJmYWNlIGxheWVycyBzaG91bGQgYmUgYSBDQ0xheWVy
SW1wbC1kZXJpdmVkIGNsYXNzIGFuZAogICAgIC8vIG5vdCBiZSBoYW5kbGVkIHNwZWNpYWxseSBo
ZXJlLgogICAgIENDUmVuZGVyU3VyZmFjZSogc3VyZmFjZSA9IGxheWVyLT5yZW5kZXJTdXJmYWNl
KCk7Ci0gICAgYm9vbCBpc09wYXF1ZSA9IGZhbHNlOwotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShzdXJmYWNl
LT5kcmF3VHJhbnNmb3JtKCksIHN1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKSwgc3VyZmFjZS0+Y29u
dGVudFJlY3QoKSwgc3VyZmFjZS0+Y2xpcFJlY3QoKSwgc3VyZmFjZS0+ZHJhd09wYWNpdHkoKSwg
aXNPcGFxdWUpOworICAgIEludFJlY3Qgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKKyAgICBPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRl
OjpjcmVhdGUoc3VyZmFjZS0+ZHJhd1RyYW5zZm9ybSgpLCBzdXJmYWNlLT5kcmF3VHJhbnNmb3Jt
KCksIHN1cmZhY2UtPmNvbnRlbnRSZWN0KCksIHN1cmZhY2UtPmNsaXBSZWN0KCksIHN1cmZhY2Ut
PmRyYXdPcGFjaXR5KCksIG9wYXF1ZVJlY3QpOwogICAgIG1fcXVhZExpc3QuYXBwZW5kKENDUmVu
ZGVyU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBzdXJmYWNl
LT5jb250ZW50UmVjdCgpLCBsYXllciwgc3VyZmFjZURhbWFnZVJlY3QoKSkpOwogICAgIG1fc2hh
cmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NoYXJlZFF1YWRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKaW5kZXggOWJmNzY5MjViYjhjZjJiYmFj
NTM5YzAxNDMxYzU1Nzg0MzM5ZmQwNS4uNWZjMjI4N2I2MDNiZjBjNTlkOGMxMWY1MWYyZTAxMjdl
NWE4NDY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcApAQCAtMjksMTgg
KzI5LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJh
bnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0
LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSkKK1Bhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9y
bSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgZmxv
YXQgb3BhY2l0eSwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKIHsKLSAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENDU2hhcmVkUXVhZFN0YXRlKHF1YWRUcmFuc2Zvcm0sIGxheWVyVHJhbnNmb3Jt
LCBsYXllclJlY3QsIGNsaXBSZWN0LCBvcGFjaXR5LCBvcGFxdWUpKTsKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENDU2hhcmVkUXVhZFN0YXRlKHF1YWRUcmFuc2Zvcm0sIGxheWVyVHJhbnNmb3Jt
LCBsYXllclJlY3QsIGNsaXBSZWN0LCBvcGFjaXR5LCBvcGFxdWVSZWN0KSk7CiB9CiAKLUNDU2hh
cmVkUXVhZFN0YXRlOjpDQ1NoYXJlZFF1YWRTdGF0ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNm
b3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBm
bG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSkKK0NDU2hhcmVkUXVhZFN0YXRlOjpDQ1NoYXJlZFF1
YWRTdGF0ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXll
clJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0KQogICAgIDogbV9xdWFkVHJhbnNmb3JtKHF1YWRUcmFuc2Zvcm0pCiAg
ICAgLCBtX2xheWVyVHJhbnNmb3JtKGxheWVyVHJhbnNmb3JtKQogICAgICwgbV9sYXllclJlY3Qo
bGF5ZXJSZWN0KQogICAgICwgbV9jbGlwUmVjdChjbGlwUmVjdCkKICAgICAsIG1fb3BhY2l0eShv
cGFjaXR5KQotICAgICwgbV9vcGFxdWUob3BhcXVlKQorICAgICwgbV9vcGFxdWVSZWN0KG9wYXF1
ZVJlY3QpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oCmluZGV4IGU3ODU3
NTdmOWRiOTRiMWIzMjA2MWZkOGQ4YjIxYzQwYmVmMWZmMGEuLjMxZDY2OWZjZmNhM2QyMTM1MGU4
MzBkOGE5ZWQ1NTY5ODI3YTc5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaApA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ1NoYXJlZFF1YWRT
dGF0ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NTaGFyZWRRdWFkU3RhdGUpOwogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjcmVhdGUoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpOworICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjcmVhdGUoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBs
YXllclRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCk7CiAKICAg
ICAvLyBUaGUgdHJhbnNmb3JtIHRoYXQgcXVhZHMgaW4gYSBDQ0RyYXdRdWFkIHNob3VsZCBiZSB0
cmFuc2Zvcm1lZCB3aXRoLgogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9xdWFkVHJhbnNmb3JtOyB9CkBAIC00NCwyMCArNDQs
MjAgQEAgcHVibGljOgogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJUcmFuc2Zvcm07IH0KICAgICBjb25zdCBJbnRS
ZWN0JiBsYXllclJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xheWVyUmVjdDsgfQogICAgIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGlwUmVjdDsgfQorICAgIGNv
bnN0IEludFJlY3QmIG9wYXF1ZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZVJlY3Q7IH0K
IAogICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX29wYWNpdHk7IH0KLSAgICBi
b29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWU7IH0KICAgICBib29sIGlzTGF5
ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDQ1NoYXJlZFF1
YWRTdGF0ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXll
clJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1
ZSk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1
YWRUcmFuc2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBsYXllclRyYW5zZm9ybSwg
Y29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCwgZmxvYXQg
b3BhY2l0eSwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCk7CiAKICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtX3F1YWRUcmFuc2Zvcm07CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9sYXll
clRyYW5zZm9ybTsKICAgICBJbnRSZWN0IG1fbGF5ZXJSZWN0OwogICAgIEludFJlY3QgbV9jbGlw
UmVjdDsKICAgICBmbG9hdCBtX29wYWNpdHk7Ci0gICAgYm9vbCBtX29wYXF1ZTsKKyAgICBJbnRS
ZWN0IG1fb3BhcXVlUmVjdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCmluZGV4IGVkMTVlNmMxMGUxZmU0NjJjOTQ5Njg1
NmRiMzkzNDU2OWZhYjg4MWMuLjRmZWUxN2U5ZDU5NGQwMjFiZjUyZjYzOTBkZGVhYmJmMjAxNDU5
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVy
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJU
ZXN0LmNwcApAQCAtODEsOCArODEsOCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1
bGxDaGlsZExpbmVzVXBUb3BMZWZ0KQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVT
VF9RVUFEUwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1No
YXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7Ci0gICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0
ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRS
ZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3Rh
dGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgcm9vdFJlY3Qp
OworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVh
ZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNo
aWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGNoaWxkUmVjdCk7CiAKICAgICBzZXRRdWFkcyhyb290
U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1RfRVEo
cXVhZExpc3Quc2l6ZSgpLCAxM3UpOwpAQCAtOTQsOCArOTQsOCBAQCBURVNUKENDUXVhZEN1bGxl
clRlc3QsIHZlcmlmeUN1bGxXaGVuQ2hpbGRPcGFjaXR5Tm90T25lKQogewogICAgIERFQ0xBUkVf
QU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwg
dHJ1ZSk7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFy
ZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDAuOSwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVk
UXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0
KCksIDEuMCwgcm9vdFJlY3QpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRT
dGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAwLjksIGNoaWxkUmVjdCk7CiAK
ICAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0
KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwpAQCAtMTA3LDggKzEwNyw4
IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFdoZW5DaGlsZE9wYXF1ZUZsYWdG
YWxzZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIAotICAgIE93
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNy
ZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290
UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOwotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0s
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNl
KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVh
ZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCByb290UmVjdCk7CisgICAgT3duUHRyPEND
U2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShj
aGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0
KCksIDEuMCwgSW50UmVjdCgpKTsKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hp
bGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCks
IDEzdSk7CkBAIC0xMjIsOCArMTIyLDggQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlD
dWxsQ2VudGVyVGlsZU9ubHkpCiAKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUw
KTsKIAotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRR
dWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOwotICAgIE93blB0cjxDQ1No
YXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hp
bGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgp
LCAxLjAsIHRydWUpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0g
Q0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHJvb3RSZWN0KTsKKyAg
ICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0
ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJl
Y3QsIEludFJlY3QoKSwgMS4wLCBjaGlsZFJlY3QpOwogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRl
LmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRM
aXN0LnNpemUoKSwgMTN1KTsKQEAgLTEzNyw4ICsxMzcsOCBAQCBURVNUKENDUXVhZEN1bGxlclRl
c3QsIHZlcmlmeUN1bGxDaGlsZExpbmVzVXBCb3R0b21SaWdodCkKIAogICAgIGNoaWxkVHJhbnNm
b3JtLnRyYW5zbGF0ZSgxMDAsIDEwMCk7CiAKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0
cnVlKTsKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJl
ZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRR
dWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3Qo
KSwgMS4wLCByb290UmVjdCk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0
YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgY2hpbGRSZWN0KTsKIAog
ICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3Qp
OwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CkBAIC0xNDYsNiArMTQ2LDU0
IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcEJvdHRvbVJp
Z2h0KQogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDl1KTsKIH0KIAorVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uKQoreworICAgIERFQ0xBUkVfQU5EX0lO
SVRJQUxJWkVfVEVTVF9RVUFEUworCisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1
MCk7CisKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVk
UXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCByb290UmVjdCk7CisgICAgSW50UmVj
dCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSArIGNoaWxkUmVjdC53aWR0aCgpIC8gNCwg
Y2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53aWR0aCgp
IC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpIC8gMik7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9y
bSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgY2hp
bGRPcGFxdWVSZWN0KTsKKworICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0
ZS5nZXQoKSwgcXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7
CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgRVhQ
RUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKK30KKworVEVTVChDQ1F1YWRDdWxsZXJUZXN0
LCB2ZXJpZnlDdWxsU3ViUmVnaW9uMikKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RF
U1RfUVVBRFMKKworICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgMTApOworCisgICAg
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6
Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJv
b3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgcm9vdFJlY3QpOworICAgIEludFJlY3QgY2hpbGRPcGFx
dWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNoaWxkUmVjdC55
KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAvIDIsIGNoaWxk
UmVjdC5oZWlnaHQoKSAqIDMgLyA0KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNo
aWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCBjaGlsZE9wYXF1
ZVJlY3QpOworCisgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgp
LCBxdWFkTGlzdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKKyAgICBD
Q1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBFWFBFQ1RfRVEo
cXVhZExpc3Quc2l6ZSgpLCAxMnUpOworfQorCitURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlm
eUN1bGxTdWJSZWdpb25DaGVja092ZXJjdWxsKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJ
WkVfVEVTVF9RVUFEUworCisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA0OSk7CisK
KyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0
YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCByb290UmVjdCk7CisgICAgSW50UmVjdCBjaGls
ZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSArIGNoaWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRS
ZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwg
Y2hpbGRSZWN0LmhlaWdodCgpIC8gMik7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBj
aGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgY2hpbGRPcGFx
dWVSZWN0KTsKKworICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQo
KSwgcXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CisgICAg
Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgRVhQRUNUX0VR
KHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKK30KKwogVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJp
ZnlOb25BeGlzQWxpZ25lZFF1YWRzRG9udE9jY2x1ZGUpCiB7CiAgICAgREVDTEFSRV9BTkRfSU5J
VElBTElaRV9URVNUX1FVQURTCkBAIC0xNTMsOCArMjAxLDggQEAgVEVTVChDQ1F1YWRDdWxsZXJU
ZXN0LCB2ZXJpZnlOb25BeGlzQWxpZ25lZFF1YWRzRG9udE9jY2x1ZGUpCiAgICAgLy8gVXNlIGEg
c21hbGwgcm90YXRpb24gc28gYXMgdG8gbm90IGRpc3R1cmIgdGhlIGdlb21ldHJ5IHNpZ25pZmlj
YW50bHkuCiAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDEpOwogCi0gICAgT3duUHRyPENDU2hh
cmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRS
ZWN0KCksIDEuMCwgdHJ1ZSk7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0
YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3Jl
YXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RS
ZWN0LCBJbnRSZWN0KCksIDEuMCwgcm9vdFJlY3QpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zv
cm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGNo
aWxkUmVjdCk7CiAKICAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0
KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwpAQCAt
MTc1LDggKzIyMyw4IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhpc0FsaWdu
ZWRRdWFkc1NhZmVseUN1bGxlZCkKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRUcmFu
c2Zvcm07CiAgICAgcGFyZW50VHJhbnNmb3JtLnJvdGF0ZSgxKTsKIAotICAgIE93blB0cjxDQ1No
YXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShwYXJl
bnRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCks
IDEuMCwgdHJ1ZSk7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0g
Q0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpj
cmVhdGUocGFyZW50VHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwg
SW50UmVjdCgpLCAxLjAsIHJvb3RSZWN0KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAs
IGNoaWxkUmVjdCk7CiAKICAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUu
Z2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122822</attachid>
            <date>2012-01-17 15:16:30 -0800</date>
            <delta_ts>2012-01-18 10:41:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120117181629.patch</filename>
            <type>text/plain</type>
            <size>23663</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTA1ZjMyZjQ2MGFjOGIz
ZjIzYTIyMjg0MWY5Y2E5Y2JiOWE1ZjA3ZS4uNmM2OWJkMTM0MjU1NDJiYzAzMjM4ODYxNGJkZjJl
MjllZmI5YzFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAxLTE3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDUXVhZEN1bGxlclRlc3QuY3BwCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXll
ckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRHJh
d1F1YWQ6Om9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6bmVlZHNC
bGVuZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFk
Q3VsbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVk
UXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURy
YXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZURyYXdRdWFkOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlRHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2FibGVUaWxlOjpvcGFxdWVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYXdhYmxlVGlsZTo6c2V0T3BhcXVlUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rp
bGVkTGF5ZXJJbXBsOjpzZXRUaWxlT3BhcXVlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorCiAyMDEyLTAxLTE0ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRW5h
YmxlIHRyYWNraW5nIG9wYXF1ZSByZWdpb24gaW4gU2tpYSBncmFwaGljcyBjb250ZXh0LCByZXR1
cm4gaXQgZnJvbSBMYXllclRleHR1cmVVcGRhdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDk2ODVjYmU0ZTk4NjQ2MmMzOTIxYTgzNTMyMzNjY2IwY2YyODRlNzYuLjEyZTc4NWVlODRk
ZmVlMTgzNTg5OWFmMDE5NWQ3OWIyOGI0NTA0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMTcgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVc2UgcmVnaW9uIHJlcG9ydGVkIHBhaW50
ZWQgb3BhcXVlIGZvciBkcmF3IGN1bGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3REcmF3UXVhZDo6VGVzdERyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3REcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFF1YWRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTAxLTE0ICBEYW5hIEphbnNlbnMgIDxkYW5h
a2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRyYWNraW5nIG9w
YXF1ZSByZWdpb24gaW4gU2tpYSBncmFwaGljcyBjb250ZXh0LCByZXR1cm4gaXQgZnJvbSBMYXll
clRleHR1cmVVcGRhdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCA3MTNi
NGUwZjIxM2IzNmQ3OTZhNDMxMzQyNjJjYjBmNjBjYjA2Yjg3Li4yNjEyOWNkM2IwNDAzYTAyNDAz
N2FkMzRmNmRmM2RkMTJiMGFiY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogCiAgICAgSW50UmVjdCBtX2RpcnR5UmVjdDsKICAg
ICBJbnRSZWN0IG1fdXBkYXRlUmVjdDsKKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIHByaXZh
dGU6CiAgICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IG1fdGV4dHVyZTsK
IH07CkBAIC0yNzMsNiArMjc0LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9w
ZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgdGlsZWRMYXllci0+c3luY1RleHR1cmVJZChpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVy
ZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgICAgIHRpbGVkTGF5ZXItPnNldFRpbGVPcGFxdWVSZWN0
KGksIGosIHRpbGUtPm1fb3BhcXVlUmVjdCk7CiAgICAgfQogfQogCkBAIC0zNjMsMTAgKzM2NSwx
MiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJvdGVjdFRpbGVUZXh0dXJlcyhjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QpCiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBi
b3R0b20pCiB7Ci0gICAgLy8gUmVzZXQgbV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMuCisgICAg
Ly8gUmVzZXQgbV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMgYW5kIG1fb3BhcXVlUmVjdCBmb3Ig
dGlsZXMgdGhhdCBuZWVkIHVwZGF0ZS4KICAgICBmb3IgKENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxl
TWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV90aWxlci0+dGlsZXMoKS5iZWdpbigpOyBpdGVy
ICE9IG1fdGlsZXItPnRpbGVzKCkuZW5kKCk7ICsraXRlcikgewogICAgICAgICBVcGRhdGFibGVU
aWxlKiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQo
KSk7CiAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsKKyAgICAgICAgaWYg
KHRpbGUtPmkoKSA+PSBsZWZ0ICYmIHRpbGUtPmkoKSA8PSByaWdodCAmJiB0aWxlLT5qKCkgPj0g
dG9wICYmIHRpbGUtPmooKSA8PSBib3R0b20pCisgICAgICAgICAgICB0aWxlLT5tX29wYXF1ZVJl
Y3QgPSBJbnRSZWN0KCk7CiAgICAgfQogCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRlZCwg
ZXhwYW5kaW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbApAQCAtNDEyLDggKzQxNiw4IEBA
IHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUs
IGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVlIHRo
ZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBmaW5p
c2hlcywKICAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0
aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgogICAgIFJlZlB0cjxM
YXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7Ci0gICAgSW50
UmVjdCBvcGFxdWVSZWN0OyAvLyBGSVhNRTogdW51c2VkLiByZW1vdmUgdGhpcyBhbmQgc3RvcmUg
aW4gdGhlIGxheWVyIHRvIHBhc3MgdG8gaW1wbCBmb3IgZHJhdyBjdWxsaW5nCi0gICAgdGV4dHVy
ZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6
ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVudHNTY2FsZSgpLCAmb3BhcXVl
UmVjdCk7CisgICAgSW50UmVjdCBwYWludGVkT3BhcXVlUmVjdDsKKyAgICB0ZXh0dXJlVXBkYXRl
cigpLT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1f
dGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZwYWludGVkT3BhcXVl
UmVjdCk7CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAg
ICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBVcGRh
dGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwpAQCAtNDIyLDEyICs0MjYsMTYgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50
IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgaWYgKCF0aWxlKQogICAgICAgICAgICAg
ICAgIENSQVNIKCk7CiAKKyAgICAgICAgICAgIC8vIFNhdmUgd2hhdCB3YXMgb3BhcXVlIGluIHRo
ZSB0aWxlLgorICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0
KHRpbGUpOworICAgICAgICAgICAgdGlsZS0+bV9vcGFxdWVSZWN0ID0gaW50ZXJzZWN0aW9uKHRp
bGVSZWN0LCBwYWludGVkT3BhcXVlUmVjdCk7CisKICAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0
ZVJlY3QgYXMgY29weUFuZENsZWFyRGlydHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5
IHJlY3QgdG8gbV91cGRhdGVSZWN0LgogICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0OwogICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIEludFJlY3Qg
c291cmNlUmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAgSW50UmVj
dCBzb3VyY2VSZWN0ID0gdGlsZVJlY3Q7CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2Vj
dChkaXJ0eVJlY3QpOwogICAgICAgICAgICAgLy8gUGFpbnQgcmVjdCBub3QgZ3VhcmFudGVlZCB0
byBsaW5lIHVwIG9uIHRpbGUgYm91bmRhcmllcywgc28KICAgICAgICAgICAgIC8vIG1ha2Ugc3Vy
ZSB0aGF0IHNvdXJjZVJlY3QgZG9lc24ndCBleHRlbmQgb3V0c2lkZSBvZiBpdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJh
d1F1YWQuaAppbmRleCBiNTY5MTNiM2NlNTNhYzBlZDBlZWJlNGQ3Nzk4MDRjYzI1ZDRlNmFlLi4x
MDlkMmZjNGIzYzA0OTVkNmMwYjAwNDE3ZDY2MWY3NDljMzkzYTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVh
ZC5oCkBAIC00OSw5ICs0OSwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmxheWVyUmVjdCgpOyB9CiAg
ICAgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRT
dGF0ZS0+Y2xpcFJlY3QoKTsgfQogICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBt
X3NoYXJlZFF1YWRTdGF0ZS0+b3BhY2l0eSgpOyB9Ci0gICAgLy8gRm9yIHRoZSBwdXJwb3NlcyBv
ZiBjdWxsaW5nLCBhcmUgdGhlIGNvbnRlbnRzIG9mIHRoaXMgcXVhZCBvcGFxdWU/Ci0gICAgYm9v
bCBkcmF3c09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5pc09wYXF1
ZSgpICYmIG1fcXVhZE9wYXF1ZSAmJiBvcGFjaXR5KCkgPT0gMTsgfQotICAgIGJvb2wgbmVlZHNC
bGVuZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3NoYXJlZFF1YWRTdGF0ZS0+aXNPcGFxdWUoKSB8
fCBtX25lZWRzQmxlbmRpbmcgfHwgb3BhY2l0eSgpICE9IDE7IH0KKyAgICAvLyBGb3IgdGhlIHB1
cnBvc2VzIG9mIGN1bGxpbmcsIHdoYXQgcGFydCBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBxdWFk
IGFyZSBvcGFxdWU/CisgICAgSW50UmVjdCBvcGFxdWVSZWN0KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmIChvcGFjaXR5KCkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7Cisg
ICAgICAgIGlmIChtX3NoYXJlZFF1YWRTdGF0ZS0+aXNPcGFxdWUoKSAmJiBtX3F1YWRPcGFxdWUp
CisgICAgICAgICAgICByZXR1cm4gbV9xdWFkUmVjdDsKKyAgICAgICAgcmV0dXJuIG1fb3BhcXVl
UmVjdDsKKyAgICB9CisgICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9u
ZWVkc0JsZW5kaW5nIHx8IG9wYXF1ZVJlY3QoKSAhPSBtX3F1YWRSZWN0OyB9CiAgICAgYm9vbCBp
c0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3Rh
dGUtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKTsgfQogCiAgICAgZW51bSBNYXRlcmlhbCB7
CkBAIC04Niw2ICs5MywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gdmFyaWFibGVzLgogICAgIGJv
b2wgbV9xdWFkT3BhcXVlOwogICAgIGJvb2wgbV9uZWVkc0JsZW5kaW5nOworCisgICAgLy8gQmUg
ZGVmYXVsdCwgdGhpcyByZWN0IGlzIGVtcHR5LiBJdCBpcyB1c2VkIHdoZW4gdGhlIHNoYXJlZCBx
dWFkIHN0YXRlIGFuZCBhYm92ZQorICAgIC8vIHZhcmlhYmxlcyBkZXRlcm1pbmUgdGhhdCB0aGUg
cXVhZCBpcyBub3QgZnVsbHkgb3BhcXVlIGJ1dCBtYXkgYmUgcGFydGlhbGx5IG9wYXF1ZS4KKyAg
ICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3Bw
CmluZGV4IDRhOGI4NTEzMGUxZWQ0ZWVhYzM2NjM1ZWZkN2MwMjk1ODUwZGI4NDMuLjFhM2UzODQ5
NjhiYjNkYWJmMDZiMDgzODJmNTA1NjMyMjY4NWY3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVy
LmNwcApAQCAtNzgsOCArNzgsOCBAQCB2b2lkIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVh
ZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QpCiAKICAgICAgICAgYm9vbCBrZWVwUXVhZCA9ICFyZWdp
b25Db250YWluc1JlY3Qob3BhcXVlQ292ZXJhZ2VUaHVzRmFyLCBxdWFkUmVjdCk7CiAKLSAgICAg
ICAgaWYgKGtlZXBRdWFkICYmIGRyYXdRdWFkLT5kcmF3c09wYXF1ZSgpICYmIGRyYXdRdWFkLT5p
c0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkpCi0gICAgICAgICAgICBvcGFxdWVDb3ZlcmFnZVRo
dXNGYXIudW5pdGUoUmVnaW9uKHF1YWRSZWN0KSk7CisgICAgICAgIGlmIChrZWVwUXVhZCAmJiBk
cmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKQorICAgICAgICAgICAgb3BhcXVl
Q292ZXJhZ2VUaHVzRmFyLnVuaXRlKGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkubWFwUmVjdChk
cmF3UXVhZC0+b3BhcXVlUmVjdCgpKSk7CiAKICAgICAgICAgaWYgKGtlZXBRdWFkKQogICAgICAg
ICAgICAgY3VsbGVkTGlzdC5hcHBlbmQocXVhZExpc3RbaV0ucmVsZWFzZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURy
YXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZURyYXdRdWFkLmNwcAppbmRleCBkZjgzMDUwOGEyYzgyY2EyNzhiMzVjY2MwMDViM2Qw
NzlhMWM3ZmM2Li5iMzViNmY2OWYzYzIwMTZmNGUyMzg3NzNmMGRjOTRjNjk1NmIwMzkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBDQ1RpbGVEcmF3UXVh
ZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0
IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50
UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50
IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJv
b2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKK1Bhc3NP
d25QdHI8Q0NUaWxlRHJhd1F1YWQ+IENDVGlsZURyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNv
bnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25z
dCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdD
M0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VB
QSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQog
ewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaWxlRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgdGV4dHVyZUlkLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwgdGV4dHVy
ZUZpbHRlciwgc3dpenpsZUNvbnRlbnRzLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRn
ZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGlsZURyYXdR
dWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIHRleHR1cmVJZCwgdGV4
dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIHN3aXp6bGVDb250ZW50cywg
bGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7CiB9CiAK
LUNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXpl
JiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50
cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9v
bCBib3R0b21FZGdlQUEpCitDQ1RpbGVEcmF3UXVhZDo6Q0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3Qs
IGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBj
b25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUs
IEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVk
Z2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFB
KQogICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29u
dGVudCwgcXVhZFJlY3QpCiAgICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCiAgICAgLCBtX3Rl
eHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkKQEAgLTQ4LDYgKzQ4LDcgQEAgQ0NUaWxlRHJhd1F1
YWQ6OkNDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEkKIHsKICAgICBpZiAoaXNBbnRpYWxpYXNlZCgpKQogICAgICAgICBtX25lZWRz
QmxlbmRpbmcgPSB0cnVlOworICAgIG1fb3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZURyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCmluZGV4IDEyZTUzZGJkMmE4ZjVkMWZiM2QzMzMxOWIy
YzAzMTFlYzUzZjVjYTguLjMzNTAxYTgwNmNmYWZmOTYwZjI0YzZkZDZmMWM3ODIwYTE1Nzg4YzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZURyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1RpbGVEcmF3UXVhZCk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJ
ZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVT
aXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxl
ZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVk
Z2VBQSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IGNyZWF0ZShjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9p
bnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRl
eHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wg
dG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CiAKICAgICBQ
bGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9
CiAgICAgSW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU9m
ZnNldDsgfQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FudGlhbGlhc2Vk
KCkgY29uc3QgeyByZXR1cm4gbGVmdEVkZ2VBQSgpIHx8IHRvcEVkZ2VBQSgpIHx8IHJpZ2h0RWRn
ZUFBKCkgfHwgYm90dG9tRWRnZUFBKCk7IH0KIAogcHJpdmF0ZToKLSAgICBDQ1RpbGVEcmF3UXVh
ZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNv
bnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dp
enpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0
RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CisgICAgQ0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYg
b3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0
ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJl
RmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVk
Z2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOwogCiAgICAgUGxhdGZv
cm0zRE9iamVjdCBtX3RleHR1cmVJZDsKICAgICBJbnRQb2ludCBtX3RleHR1cmVPZmZzZXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDU4NDllZjFlYjBmMGMzNDhiODdh
NDk1MThhNjFjYzYzMzA1ZjkyY2IuLmYxNjExYzIyNDBkYjRlN2YyN2U1YjJmNWU4YjAwZTJhMDQz
NzE2OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC01MSw4ICs1MSwx
MyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dHVyZUlkOyB9CiAgICAgdm9pZCBzZXRUZXh0dXJlSWQoUGxhdGZvcm0zRE9i
amVjdCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7IH0KKworICAgIGNvbnN0
IEludFJlY3QmIG9wYXF1ZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZVJlY3Q7IH0KKyAg
ICB2b2lkIHNldE9wYXF1ZVJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkgeyBtX29wYXF1
ZVJlY3QgPSBvcGFxdWVSZWN0OyB9CisKIHByaXZhdGU6CiAgICAgUGxhdGZvcm0zRE9iamVjdCBt
X3RleHR1cmVJZDsKKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIH07CiAKIENDVGlsZWRMYXll
ckltcGw6OkNDVGlsZWRMYXllckltcGwoaW50IGlkKQpAQCAtMTU5LDcgKzE2NCw3IEBAIHZvaWQg
Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlCiAgICAgICAgICAgICBib29sIGJvdHRvbUVkZ2VBQSA9IGogPT0g
bV90aWxlci0+bnVtVGlsZXNZKCkgLSAxICYmIHVzZUFBOwogCiAgICAgICAgICAgICBjb25zdCBH
QzNEaW50IHRleHR1cmVGaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBo
aWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKLSAgICAg
ICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgdGlsZVJlY3QsIHRpbGUtPnRleHR1cmVJZCgpLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJl
U2l6ZSwgdGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRnZUFBLCB0b3BF
ZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICAgICAgICAgIHF1YWRMaXN0
LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3Qs
IHRpbGUtPm9wYXF1ZVJlY3QoKSwgdGlsZS0+dGV4dHVyZUlkKCksIHRleHR1cmVPZmZzZXQsIHRl
eHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEs
IHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogCiAgICAgICAgICAgICBp
ZiAoaGFzRGVidWdCb3JkZXJzKCkpIHsKICAgICAgICAgICAgICAgICBDb2xvciBjb2xvcihkZWJ1
Z0JvcmRlckNvbG9yKCkucmVkKCksIGRlYnVnQm9yZGVyQ29sb3IoKS5ncmVlbigpLCBkZWJ1Z0Jv
cmRlckNvbG9yKCkuYmx1ZSgpLCBkZWJ1Z1RpbGVCb3JkZXJBbHBoYSk7CkBAIC0xODYsNiArMTkx
LDEzIEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6c3luY1RleHR1cmVJZChpbnQgaSwgaW50IGos
IFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKQogICAgIHRpbGUtPnNldFRleHR1cmVJZCh0ZXh0
dXJlSWQpOwogfQogCit2b2lkIENDVGlsZWRMYXllckltcGw6OnNldFRpbGVPcGFxdWVSZWN0KGlu
dCBpLCBpbnQgaiwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKK3sKKyAgICBEcmF3YWJsZVRp
bGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CisgICAgQVNTRVJUKHRpbGUpOworICAgIHRpbGUtPnNl
dE9wYXF1ZVJlY3Qob3BhcXVlUmVjdCk7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwog
I2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRM
YXllckltcGwuaAppbmRleCA0NzhiMDM0MDIzNDUwODE5YmJjZWEwYThkYTVhZDMyMTU2ZjU0YmQy
Li5jYzM0MTliOTBlNTQ2NDc2ODVmNjI3ZWI2ZGFhNzM5N2YwYzM5ZjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNraXBzRHJhdyhib29sIHNraXBzRHJhdykgeyBtX3NraXBzRHJhdyA9IHNraXBzRHJhdzsgfQog
ICAgIHZvaWQgc2V0VGlsaW5nRGF0YShjb25zdCBDQ0xheWVyVGlsaW5nRGF0YSYgdGlsZXIpOwog
ICAgIHZvaWQgc3luY1RleHR1cmVJZChpbnQsIGludCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
SWQpOworICAgIHZvaWQgc2V0VGlsZU9wYXF1ZVJlY3QoaW50LCBpbnQsIGNvbnN0IEludFJlY3Qm
KTsKIAogICAgIHZvaWQgc2V0Q29udGVudHNTd2l6emxlZChib29sIGNvbnRlbnRzU3dpenpsZWQp
IHsgbV9jb250ZW50c1N3aXp6bGVkID0gY29udGVudHNTd2l6emxlZDsgfQogICAgIGJvb2wgY29u
dGVudHNTd2l6emxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTd2l6emxlZDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5k
ZXggZWQxNWU2YzEwZTFmZTQ2MmM5NDk2ODU2ZGIzOTM0NTY5ZmFiODgxYy4uNWVjYmI1OWM4ZTAz
YmZiZjE2NjMwZDAyZDg5MTk3MTIxMGMzODhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC0zOCwzNSArMzgsMzYgQEAgY2xh
c3MgQ0NRdWFkQ3VsbGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIAogY2xhc3MgVGVz
dERyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewogcHVibGljOgotICAgIFRlc3REcmF3UXVh
ZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCisgICAgVGVzdERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0
ZSwgTWF0ZXJpYWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVl
UmVjdCkKICAgICA6IENDRHJhd1F1YWQoc3RhdGUsIG0sIHJlY3QpCiAgICAgeworICAgICAgICBt
X29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFRlc3REcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0
ZXJpYWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxUZXN0
RHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFs
IG0sIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwgbSwgcmVj
dCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwgbSwg
cmVjdCwgb3BhcXVlUmVjdCkpOwogICAgIH0KIH07CiAKLXZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRR
dWFkU3RhdGUqIHJvb3RTdGF0ZSwgQ0NTaGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVh
ZExpc3QmIHF1YWRMaXN0KQordm9pZCBzZXRRdWFkcyhDQ1NoYXJlZFF1YWRTdGF0ZSogcm9vdFN0
YXRlLCBDQ1NoYXJlZFF1YWRTdGF0ZSogY2hpbGRTdGF0ZSwgQ0NRdWFkTGlzdCYgcXVhZExpc3Qs
IGNvbnN0IEludFJlY3QmIGNoaWxkT3BhcXVlUmVjdCA9IEludFJlY3QoKSkKIHsKICAgICBxdWFk
TGlzdC5jbGVhcigpOwogCi0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRl
KHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KCks
IEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6
OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQ
b2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQo
VGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQs
IEludFJlY3QoSW50UG9pbnQoMjAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVh
ZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDAp
KSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUs
IENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIElu
dFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNy
ZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2lu
dCgyMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChU
ZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwg
SW50UmVjdChJbnRQb2ludCgwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFk
TGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpU
aWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAw
KSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRl
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAyMDApLCBJ
bnRTaXplKDEwMCwgMTAwKSkpKTsKLQotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6
OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50
UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3RE
cmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50
UmVjdChJbnRQb2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlz
dC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGls
ZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkp
OwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBD
Q0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJbnRT
aXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVh
dGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQo
KSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5h
cHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENv
bnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGls
ZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUo
cm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAw
LCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlz
dC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxl
ZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBj
aGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVh
dGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQo
MTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1
YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6
OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEwMCksIEludFNpemUoMTAwLCAx
MDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVh
ZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KElu
dFBvaW50KDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7Cisg
ICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3
UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMjAwKSwgSW50U2l6ZSgx
MDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERy
YXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJl
Y3QoSW50UG9pbnQoMjAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVj
dCkpOworCisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3Rh
dGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXpl
KDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0
RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIElu
dFJlY3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJl
Y3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0
ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIElu
dFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5k
KFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVu
dCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRP
cGFxdWVSZWN0KSk7CiB9CiAKICNkZWZpbmUgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FV
QURTICAgICAgICAgICAgICAgXApAQCAtMTQ2LDYgKzE0Nyw1NCBAQCBURVNUKENDUXVhZEN1bGxl
clRlc3QsIHZlcmlmeUN1bGxDaGlsZExpbmVzVXBCb3R0b21SaWdodCkKICAgICBFWFBFQ1RfRVEo
cXVhZExpc3Quc2l6ZSgpLCA5dSk7CiB9CiAKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5
Q3VsbFN1YlJlZ2lvbikKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMK
KworICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOworCisgICAgT3duUHRyPEND
U2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJ
bnRSZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGls
ZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOworICAg
IEludFJlY3QgY2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgo
KSAvIDQsIGNoaWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qu
d2lkdGgoKSAvIDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgc2V0UXVhZHMocm9v
dFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0
KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1bGxl
cjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5z
aXplKCksIDEydSk7Cit9CisKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJl
Z2lvbjIpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCisKKyAgICBj
aGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDEwKTsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgp
LCAxLjAsIHRydWUpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9
IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNlKTsKKyAgICBJbnRSZWN0
IGNoaWxkT3BhcXVlUmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0LCBj
aGlsZFJlY3QueSgpICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRSZWN0LndpZHRoKCkg
LyAyLCBjaGlsZFJlY3QuaGVpZ2h0KCkgKiAzIC8gNCk7CisKKyAgICBzZXRRdWFkcyhyb290U3Rh
dGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3QpOwor
ICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpj
dWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUo
KSwgMTJ1KTsKK30KKworVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9u
Q2hlY2tPdmVyY3VsbCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMK
KworICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNDkpOworCisgICAgT3duUHRyPEND
U2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJ
bnRSZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGls
ZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOworICAg
IEludFJlY3QgY2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgo
KSAvIDQsIGNoaWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qu
d2lkdGgoKSAvIDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgc2V0UXVhZHMocm9v
dFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0
KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1bGxl
cjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5z
aXplKCksIDEzdSk7Cit9CisKIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhpc0Fs
aWduZWRRdWFkc0RvbnRPY2NsdWRlKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVT
VF9RVUFEUwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122963</attachid>
            <date>2012-01-18 10:41:53 -0800</date>
            <delta_ts>2012-01-18 12:41:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120118134152.patch</filename>
            <type>text/plain</type>
            <size>29613</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg3NDQ4YjJhNmE2OTk3
Y2FlNDgzNDg5ZTVhZjk3ZmNhNTNkMGVhYi4uYWVkNWJkNDdmNjhjZDNiYTFmZjNhYWY5MjBkMTI2
NWYwYWExMTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAxLTE4ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDUXVhZEN1bGxlclRlc3QuY3BwIGFuZCBDQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8p
OgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVU
aWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVh
ZC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6b3BhcXVlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0JsZW5kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3
UXVhZDo6Q0NUaWxlRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZURyYXdRdWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3YWJs
ZVRpbGU6Om9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2FibGVUaWxlOjpzZXRP
cGFxdWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1
YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVy
dGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5oOgorCiAyMDEyLTAxLTE0ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRyYWNraW5nIG9wYXF1ZSByZWdpb24g
aW4gU2tpYSBncmFwaGljcyBjb250ZXh0LCByZXR1cm4gaXQgZnJvbSBMYXllclRleHR1cmVVcGRh
dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGMwMjEzYTY4ZWQ0ZmU1OTlhZjczNDUw
MzRkNDBjODRmMjQ2ODNhNTUuLmRhYzAwNTJhMTIzODFkMGQ0ZTMxZGZlM2EzZjIxMzk1NDYwOTQw
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDEt
MTggIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBVc2UgcmVnaW9uIHJlcG9ydGVkIHBhaW50ZWQgb3BhcXVlIGZvciBkcmF3IGN1bGxpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDE1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9D
Q1F1YWRDdWxsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3REcmF3UXVhZDo6VGVz
dERyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3REcmF3UXVhZDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAg
ICAgICAqIHRlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0UXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Y292ZXJhZ2VWaXNpYmxlUmVjdE9uVGls
ZUJvdW5kYXJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVy
c2VjdHNUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJz
ZWN0c0JvdW5kcyk6CisKIDIwMTItMDEtMTQgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBFbmFibGUgdHJhY2tpbmcgb3BhcXVlIHJlZ2lv
biBpbiBTa2lhIGdyYXBoaWNzIGNvbnRleHQsIHJldHVybiBpdCBmcm9tIExheWVyVGV4dHVyZVVw
ZGF0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDcxM2I0ZTBmMjEzYjM2
ZDc5NmE0MzEzNDI2MmNiMGY2MGNiMDZiODcuLjk3MzkxMTNiZjgxZTVkNDFhMDA4ODZlYzczZjI5
NGRmMWQ4NjQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtNjcsNiAr
NjcsNyBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IG1fZGlydHlSZWN0OwogICAgIEludFJlY3Qg
bV91cGRhdGVSZWN0OworICAgIEludFJlY3QgbV9vcGFxdWVSZWN0OwogcHJpdmF0ZToKICAgICBP
d25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gbV90ZXh0dXJlOwogfTsKQEAgLTI3
Miw3ICsyNzMsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhD
Q0xheWVySW1wbCogbGF5ZXIpCiAgICAgICAgIGlmICh0aWxlLT5pc0RpcnR5KCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICB0aWxlZExheWVyLT5zeW5jVGV4dHVyZUlkKGksIGos
IHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICAgICAgdGlsZWRMYXll
ci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnRleHR1
cmVJZCgpLCB0aWxlLT5tX29wYXF1ZVJlY3QpOwogICAgIH0KIH0KIApAQCAtNDEyLDggKzQxMyw4
IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlk
bGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVl
IHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBm
aW5pc2hlcywKICAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9s
ZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgogICAgIFJlZlB0
cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7Ci0gICAg
SW50UmVjdCBvcGFxdWVSZWN0OyAvLyBGSVhNRTogdW51c2VkLiByZW1vdmUgdGhpcyBhbmQgc3Rv
cmUgaW4gdGhlIGxheWVyIHRvIHBhc3MgdG8gaW1wbCBmb3IgZHJhdyBjdWxsaW5nCi0gICAgdGV4
dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxl
U2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVudHNTY2FsZSgpLCAmb3Bh
cXVlUmVjdCk7CisgICAgSW50UmVjdCBwYWludGVkT3BhcXVlUmVjdDsKKyAgICB0ZXh0dXJlVXBk
YXRlcigpLT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCks
IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZwYWludGVkT3Bh
cXVlUmVjdCk7CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAg
ICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBV
cGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwpAQCAtNDIyLDEyICs0MjMsMjEgQEAg
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwg
aW50IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgaWYgKCF0aWxlKQogICAgICAgICAg
ICAgICAgIENSQVNIKCk7CiAKKyAgICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGVy
LT50aWxlUmVjdCh0aWxlKTsKKworICAgICAgICAgICAgLy8gU2F2ZSB3aGF0IHdhcyBwYWludGVk
IG9wYXF1ZSBpbiB0aGUgdGlsZS4gSWYgZXZlcnl0aGluZyBwYWludGVkIGluIHRoZSB0aWxlIHdh
cyBvcGFxdWUsIGFuZCB0aGUgYXJlYSBpcyBhIHN1YnNldCBvZiBhbgorICAgICAgICAgICAgLy8g
YWxyZWFkeSBvcGFxdWUgYXJlYSwga2VlcCB0aGUgb2xkIGFyZWEuCisgICAgICAgICAgICBJbnRS
ZWN0IHRpbGVQYWludGVkUmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgbV9wYWludFJlY3Qp
OworICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rp
b24odGlsZVJlY3QsIHBhaW50ZWRPcGFxdWVSZWN0KTsKKyAgICAgICAgICAgIGlmICh0aWxlUGFp
bnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBhaW50ZWRSZWN0IHx8ICF0aWxlLT5tX29wYXF1ZVJlY3Qu
Y29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVSZWN0KSkKKyAgICAgICAgICAgICAgICB0aWxlLT5t
X29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9wYXF1ZVJlY3Q7CisKICAgICAgICAgICAgIC8vIFVz
ZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFuZENsZWFyRGlydHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0
aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRhdGVSZWN0LgogICAgICAgICAgICAgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0OwogICAgICAgICAgICAgaWYgKGRpcnR5
UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAg
IEludFJlY3Qgc291cmNlUmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAg
ICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gdGlsZVJlY3Q7CiAgICAgICAgICAgICBzb3VyY2VSZWN0
LmludGVyc2VjdChkaXJ0eVJlY3QpOwogICAgICAgICAgICAgLy8gUGFpbnQgcmVjdCBub3QgZ3Vh
cmFudGVlZCB0byBsaW5lIHVwIG9uIHRpbGUgYm91bmRhcmllcywgc28KICAgICAgICAgICAgIC8v
IG1ha2Ugc3VyZSB0aGF0IHNvdXJjZVJlY3QgZG9lc24ndCBleHRlbmQgb3V0c2lkZSBvZiBpdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRHJhd1F1YWQuaAppbmRleCBiNTY5MTNiM2NlNTNhYzBlZDBlZWJlNGQ3Nzk4MDRjYzI1
ZDRlNmFlLi4xMDlkMmZjNGIzYzA0OTVkNmMwYjAwNDE3ZDY2MWY3NDljMzkzYTZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdR
dWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5oCkBAIC00OSw5ICs0OSwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmxheWVyUmVj
dCgpOyB9CiAgICAgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3No
YXJlZFF1YWRTdGF0ZS0+Y2xpcFJlY3QoKTsgfQogICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7
IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+b3BhY2l0eSgpOyB9Ci0gICAgLy8gRm9yIHRoZSBw
dXJwb3NlcyBvZiBjdWxsaW5nLCBhcmUgdGhlIGNvbnRlbnRzIG9mIHRoaXMgcXVhZCBvcGFxdWU/
Ci0gICAgYm9vbCBkcmF3c09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRl
LT5pc09wYXF1ZSgpICYmIG1fcXVhZE9wYXF1ZSAmJiBvcGFjaXR5KCkgPT0gMTsgfQotICAgIGJv
b2wgbmVlZHNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3NoYXJlZFF1YWRTdGF0ZS0+aXNP
cGFxdWUoKSB8fCBtX25lZWRzQmxlbmRpbmcgfHwgb3BhY2l0eSgpICE9IDE7IH0KKyAgICAvLyBG
b3IgdGhlIHB1cnBvc2VzIG9mIGN1bGxpbmcsIHdoYXQgcGFydCBvZiB0aGUgY29udGVudHMgb2Yg
dGhpcyBxdWFkIGFyZSBvcGFxdWU/CisgICAgSW50UmVjdCBvcGFxdWVSZWN0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIGlmIChvcGFjaXR5KCkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBJbnRS
ZWN0KCk7CisgICAgICAgIGlmIChtX3NoYXJlZFF1YWRTdGF0ZS0+aXNPcGFxdWUoKSAmJiBtX3F1
YWRPcGFxdWUpCisgICAgICAgICAgICByZXR1cm4gbV9xdWFkUmVjdDsKKyAgICAgICAgcmV0dXJu
IG1fb3BhcXVlUmVjdDsKKyAgICB9CisgICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZWVkc0JsZW5kaW5nIHx8IG9wYXF1ZVJlY3QoKSAhPSBtX3F1YWRSZWN0OyB9CiAg
ICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFy
ZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKTsgfQogCiAgICAgZW51bSBN
YXRlcmlhbCB7CkBAIC04Niw2ICs5MywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gdmFyaWFibGVz
LgogICAgIGJvb2wgbV9xdWFkT3BhcXVlOwogICAgIGJvb2wgbV9uZWVkc0JsZW5kaW5nOworCisg
ICAgLy8gQmUgZGVmYXVsdCwgdGhpcyByZWN0IGlzIGVtcHR5LiBJdCBpcyB1c2VkIHdoZW4gdGhl
IHNoYXJlZCBxdWFkIHN0YXRlIGFuZCBhYm92ZQorICAgIC8vIHZhcmlhYmxlcyBkZXRlcm1pbmUg
dGhhdCB0aGUgcXVhZCBpcyBub3QgZnVsbHkgb3BhcXVlIGJ1dCBtYXkgYmUgcGFydGlhbGx5IG9w
YXF1ZS4KKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuY3BwCmluZGV4IDRhOGI4NTEzMGUxZWQ0ZWVhYzM2NjM1ZWZkN2MwMjk1ODUwZGI4NDMu
LjFhM2UzODQ5NjhiYjNkYWJmMDZiMDgzODJmNTA1NjMyMjY4NWY3ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmNwcApAQCAtNzgsOCArNzgsOCBAQCB2b2lkIENDUXVhZEN1bGxlcjo6Y3VsbE9j
Y2x1ZGVkUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QpCiAKICAgICAgICAgYm9vbCBrZWVwUXVh
ZCA9ICFyZWdpb25Db250YWluc1JlY3Qob3BhcXVlQ292ZXJhZ2VUaHVzRmFyLCBxdWFkUmVjdCk7
CiAKLSAgICAgICAgaWYgKGtlZXBRdWFkICYmIGRyYXdRdWFkLT5kcmF3c09wYXF1ZSgpICYmIGRy
YXdRdWFkLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkpCi0gICAgICAgICAgICBvcGFxdWVD
b3ZlcmFnZVRodXNGYXIudW5pdGUoUmVnaW9uKHF1YWRSZWN0KSk7CisgICAgICAgIGlmIChrZWVw
UXVhZCAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKQorICAgICAgICAg
ICAgb3BhcXVlQ292ZXJhZ2VUaHVzRmFyLnVuaXRlKGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCku
bWFwUmVjdChkcmF3UXVhZC0+b3BhcXVlUmVjdCgpKSk7CiAKICAgICAgICAgaWYgKGtlZXBRdWFk
KQogICAgICAgICAgICAgY3VsbGVkTGlzdC5hcHBlbmQocXVhZExpc3RbaV0ucmVsZWFzZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZURyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcAppbmRleCBkZjgzMDUwOGEyYzgyY2EyNzhiMzVj
Y2MwMDViM2QwNzlhMWM3ZmM2Li5iMzViNmY2OWYzYzIwMTZmNGUyMzg3NzNmMGRjOTRjNjk1NmIw
MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBDQ1Rp
bGVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwg
Y29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXpl
LCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRF
ZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VB
QSkKK1Bhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IENDVGlsZURyYXdRdWFkOjpjcmVhdGUoY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVh
ZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVy
ZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVy
ZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wg
bGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9t
RWRnZUFBKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaWxlRHJhd1F1YWQoc2hhcmVk
UXVhZFN0YXRlLCBxdWFkUmVjdCwgdGV4dHVyZUlkLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6
ZSwgdGV4dHVyZUZpbHRlciwgc3dpenpsZUNvbnRlbnRzLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEs
IHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEND
VGlsZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIHRleHR1
cmVJZCwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIHN3aXp6bGVD
b250ZW50cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFB
KSk7CiB9CiAKLUNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxhdGZv
cm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25z
dCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6
bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVk
Z2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCitDQ1RpbGVEcmF3UXVhZDo6Q0NUaWxlRHJhd1F1YWQo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYg
cXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4
dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJv
b2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90
dG9tRWRnZUFBKQogICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6
OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCiAgICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJlSWQpCiAg
ICAgLCBtX3RleHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkKQEAgLTQ4LDYgKzQ4LDcgQEAgQ0NU
aWxlRHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEkKIHsKICAgICBpZiAoaXNBbnRpYWxpYXNlZCgpKQogICAgICAg
ICBtX25lZWRzQmxlbmRpbmcgPSB0cnVlOworICAgIG1fb3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCmluZGV4IDEyZTUzZGJkMmE4ZjVkMWZi
M2QzMzMxOWIyYzAzMTFlYzUzZjVjYTguLjMzNTAxYTgwNmNmYWZmOTYwZjI0YzZkZDZmMWM3ODIw
YTE1Nzg4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaApAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdR
dWFkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1RpbGVEcmF3UXVhZCk7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0
IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUm
IHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRz
LCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29s
IGJvdHRvbUVkZ2VBQSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IGNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBj
b25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29u
c3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBH
QzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdl
QUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7
CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4
dHVyZUlkOyB9CiAgICAgSW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dHVyZU9mZnNldDsgfQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Fu
dGlhbGlhc2VkKCkgY29uc3QgeyByZXR1cm4gbGVmdEVkZ2VBQSgpIHx8IHRvcEVkZ2VBQSgpIHx8
IHJpZ2h0RWRnZUFBKCkgfHwgYm90dG9tRWRnZUFBKCk7IH0KIAogcHJpdmF0ZToKLSAgICBDQ1Rp
bGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRS
ZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVP
ZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIs
IGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBi
b29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CisgICAgQ0NUaWxlRHJhd1F1YWQo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3Qg
SW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IElu
dFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGlu
dCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBi
b29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOwogCiAg
ICAgUGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKICAgICBJbnRQb2ludCBtX3RleHR1cmVP
ZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDU4NDllZjFlYjBm
MGMzNDhiODdhNDk1MThhNjFjYzYzMzA1ZjkyY2IuLjQ4ZTJjNTRlZGIwZGY2MDJhOTdkMTAxMTU0
ZGFlZWY0NTA5NDNkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC01
MSw4ICs1MSwxMyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CiAgICAgdm9pZCBzZXRUZXh0dXJlSWQoUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7IH0KKwor
ICAgIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZVJl
Y3Q7IH0KKyAgICB2b2lkIHNldE9wYXF1ZVJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkg
eyBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OyB9CisKIHByaXZhdGU6CiAgICAgUGxhdGZvcm0z
RE9iamVjdCBtX3RleHR1cmVJZDsKKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIH07CiAKIEND
VGlsZWRMYXllckltcGw6OkNDVGlsZWRMYXllckltcGwoaW50IGlkKQpAQCAtMTU5LDcgKzE2NCw3
IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExp
c3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlCiAgICAgICAgICAgICBib29sIGJvdHRvbUVkZ2VB
QSA9IGogPT0gbV90aWxlci0+bnVtVGlsZXNZKCkgLSAxICYmIHVzZUFBOwogCiAgICAgICAgICAg
ICBjb25zdCBHQzNEaW50IHRleHR1cmVGaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMo
KSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVT
VDsKLSAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGUtPnRleHR1cmVJZCgpLCB0ZXh0dXJlT2Zmc2V0
LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRn
ZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICAgICAgICAg
IHF1YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwg
dGlsZVJlY3QsIHRpbGUtPm9wYXF1ZVJlY3QoKSwgdGlsZS0+dGV4dHVyZUlkKCksIHRleHR1cmVP
ZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBjb250ZW50c1N3aXp6bGVkKCksIGxl
ZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogCiAgICAg
ICAgICAgICBpZiAoaGFzRGVidWdCb3JkZXJzKCkpIHsKICAgICAgICAgICAgICAgICBDb2xvciBj
b2xvcihkZWJ1Z0JvcmRlckNvbG9yKCkucmVkKCksIGRlYnVnQm9yZGVyQ29sb3IoKS5ncmVlbigp
LCBkZWJ1Z0JvcmRlckNvbG9yKCkuYmx1ZSgpLCBkZWJ1Z1RpbGVCb3JkZXJBbHBoYSk7CkBAIC0x
NzgsMTQgKzE4MywxNSBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OnNldFRpbGluZ0RhdGEoY29u
c3QgQ0NMYXllclRpbGluZ0RhdGEmIHRpbGVyKQogICAgICptX3RpbGVyID0gdGlsZXI7CiB9CiAK
LXZvaWQgQ0NUaWxlZExheWVySW1wbDo6c3luY1RleHR1cmVJZChpbnQgaSwgaW50IGosIFBsYXRm
b3JtM0RPYmplY3QgdGV4dHVyZUlkKQordm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpwdXNoVGlsZVBy
b3BlcnRpZXMoaW50IGksIGludCBqLCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3Qg
SW50UmVjdCYgb3BhcXVlUmVjdCkKIHsKICAgICBEcmF3YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQo
aSwgaik7CiAgICAgaWYgKCF0aWxlKQogICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsK
ICAgICB0aWxlLT5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKKyAgICB0aWxlLT5zZXRPcGFxdWVS
ZWN0KG9wYXF1ZVJlY3QpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmgKaW5kZXggNDc4YjAzNDAyMzQ1MDgxOWJiY2VhMGE4ZGE1YWQzMjE1NmY1NGJkMi4uN2Fk
NzE1OTliMjEzNjU4NThhMWM1YTVmN2E5Y2Y0MjQxZWEwNjhiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNr
aXBzRHJhdyhib29sIHNraXBzRHJhdykgeyBtX3NraXBzRHJhdyA9IHNraXBzRHJhdzsgfQogICAg
IHZvaWQgc2V0VGlsaW5nRGF0YShjb25zdCBDQ0xheWVyVGlsaW5nRGF0YSYgdGlsZXIpOwotICAg
IHZvaWQgc3luY1RleHR1cmVJZChpbnQsIGludCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQp
OworICAgIHZvaWQgcHVzaFRpbGVQcm9wZXJ0aWVzKGludCwgaW50LCBQbGF0Zm9ybTNET2JqZWN0
IHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCk7CiAKICAgICB2b2lkIHNldENv
bnRlbnRzU3dpenpsZWQoYm9vbCBjb250ZW50c1N3aXp6bGVkKSB7IG1fY29udGVudHNTd2l6emxl
ZCA9IGNvbnRlbnRzU3dpenpsZWQ7IH0KICAgICBib29sIGNvbnRlbnRzU3dpenpsZWQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRzU3dpenpsZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCmluZGV4IGVkMTVlNmMxMGUxZmU0NjJj
OTQ5Njg1NmRiMzkzNDU2OWZhYjg4MWMuLjVlY2JiNTljOGUwM2JmYmYxNjYzMGQwMmQ4OTE5NzEy
MTBjMzg4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFk
Q3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcApAQCAtMzgsMzUgKzM4LDM2IEBAIGNsYXNzIENDUXVhZEN1bGxlclRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAKIGNsYXNzIFRlc3REcmF3UXVhZCA6IHB1YmxpYyBD
Q0RyYXdRdWFkIHsKIHB1YmxpYzoKLSAgICBUZXN0RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHN0YXRlLCBNYXRlcmlhbCBtLCBjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIFRlc3RE
cmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiAgICAgOiBDQ0RyYXdR
dWFkKHN0YXRlLCBtLCByZWN0KQogICAgIHsKKyAgICAgICAgbV9vcGFxdWVSZWN0ID0gb3BhcXVl
UmVjdDsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxUZXN0RHJhd1F1YWQ+IGNyZWF0
ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCisgICAgc3RhdGljIFBhc3NPd25QdHI8VGVzdERyYXdRdWFkPiBjcmVhdGUoY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHN0YXRlLCBNYXRlcmlhbCBtLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBUZXN0RHJhd1F1YWQoc3RhdGUsIG0sIHJlY3QpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBUZXN0RHJhd1F1YWQoc3RhdGUsIG0sIHJlY3QsIG9wYXF1ZVJlY3QpKTsK
ICAgICB9CiB9OwogCi12b2lkIHNldFF1YWRzKENDU2hhcmVkUXVhZFN0YXRlKiByb290U3RhdGUs
IENDU2hhcmVkUXVhZFN0YXRlKiBjaGlsZFN0YXRlLCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKK3Zv
aWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3RhdGUqIHJvb3RTdGF0ZSwgQ0NTaGFyZWRRdWFkU3Rh
dGUqIGNoaWxkU3RhdGUsIENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBJbnRSZWN0JiBjaGls
ZE9wYXF1ZVJlY3QgPSBJbnRSZWN0KCkpCiB7CiAgICAgcXVhZExpc3QuY2xlYXIoKTsKIAotICAg
IHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1
YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkp
KTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBD
Q0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6
ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRl
KHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDIw
MCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJh
d1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVj
dChJbnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5h
cHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENv
bnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsK
LSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0Ry
YXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAxMDApLCBJbnRTaXpl
KDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUo
cm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwg
MjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3
UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0
KEludFBvaW50KDEwMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3Qu
YXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRD
b250ZW50LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7
Ci0KLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwg
Q0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUoMTAw
LCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGls
ZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAw
KSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVh
ZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJ
bnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBl
bmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250
ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Cisg
ICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3
UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUoMTAwLCAxMDAp
KSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6
Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBv
aW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAg
cXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVh
ZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMCksIEludFNpemUoMTAwLCAx
MDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVh
ZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KElu
dFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7Cisg
ICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3
UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgx
MDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERy
YXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJl
Y3QoSW50UG9pbnQoMjAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVj
dCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUs
IENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgwLCAyMDApLCBJbnRT
aXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChU
ZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwg
SW50UmVjdChJbnRQb2ludCgxMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFx
dWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RT
dGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMjAw
KSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKworICAgIHF1YWRMaXN0
LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxl
ZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9w
YXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hp
bGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwg
MCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3Qu
YXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVk
Q29udGVudCwgSW50UmVjdChJbnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNo
aWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0
ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQo
MTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOwogfQogCiAj
ZGVmaW5lIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUyAgICAgICAgICAgICAgIFwK
QEAgLTE0Niw2ICsxNDcsNTQgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2hp
bGRMaW5lc1VwQm90dG9tUmlnaHQpCiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgOXUp
OwogfQogCitURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb24pCit7Cisg
ICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCisKKyAgICBjaGlsZFRyYW5zZm9y
bS50cmFuc2xhdGUoNTAsIDUwKTsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9v
dFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUp
OworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVh
ZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNo
aWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNlKTsKKyAgICBJbnRSZWN0IGNoaWxkT3BhcXVl
UmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0LCBjaGlsZFJlY3QueSgp
ICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRSZWN0LndpZHRoKCkgLyAyLCBjaGlsZFJl
Y3QuaGVpZ2h0KCkgLyAyKTsKKworICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRT
dGF0ZS5nZXQoKSwgcXVhZExpc3QsIGNoaWxkT3BhcXVlUmVjdCk7CisgICAgRVhQRUNUX0VRKHF1
YWRMaXN0LnNpemUoKSwgMTN1KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRz
KHF1YWRMaXN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOworfQorCitU
RVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb24yKQoreworICAgIERFQ0xB
UkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUworCisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNs
YXRlKDUwLCAxMCk7CisKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9
IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6
Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3Qs
IEludFJlY3QoKSwgMS4wLCBmYWxzZSk7CisgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hp
bGRSZWN0LngoKSArIGNoaWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxk
UmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdo
dCgpICogMyAvIDQpOworCisgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRl
LmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExp
c3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVh
ZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEydSk7Cit9CisKK1RFU1Qo
Q0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbkNoZWNrT3ZlcmN1bGwpCit7Cisg
ICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCisKKyAgICBjaGlsZFRyYW5zZm9y
bS50cmFuc2xhdGUoNTAsIDQ5KTsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9v
dFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUp
OworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVh
ZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNo
aWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNlKTsKKyAgICBJbnRSZWN0IGNoaWxkT3BhcXVl
UmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0LCBjaGlsZFJlY3QueSgp
ICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRSZWN0LndpZHRoKCkgLyAyLCBjaGlsZFJl
Y3QuaGVpZ2h0KCkgLyAyKTsKKworICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRT
dGF0ZS5nZXQoKSwgcXVhZExpc3QsIGNoaWxkT3BhcXVlUmVjdCk7CisgICAgRVhQRUNUX0VRKHF1
YWRMaXN0LnNpemUoKSwgMTN1KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRz
KHF1YWRMaXN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworfQorCiBU
RVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4aXNBbGlnbmVkUXVhZHNEb250T2NjbHVk
ZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKaW5k
ZXggYTJlZWE5NDQwYzQzYzMzYzM4ZTQ5NmUzNzhiZGM3YzMzMTJlODNmMy4uMTc4NTBmMmY4OWI3
ODMxM2ZmNzM0NmQwMTljZWZjMWU2YmYxYWNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTQ2LDExICs0Niwx
MiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjcmVhdGVMYXllcihjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwgY29uc3QgSQogICAgIGxheWVyLT5zZXRUaWxpbmdEYXRhKCp0
aWxlcik7CiAgICAgbGF5ZXItPnNldFNraXBzRHJhdyhmYWxzZSk7CiAgICAgbGF5ZXItPnNldFZp
c2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKKyAgICBsYXll
ci0+c2V0RHJhd09wYWNpdHkoMSk7CiAKICAgICBpbnQgdGV4dHVyZUlkID0gMTsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHRpbGVyLT5udW1UaWxlc1goKTsgKytpKQogICAgICAgICBmb3IgKGlu
dCBqID0gMDsgaiA8IHRpbGVyLT5udW1UaWxlc1koKTsgKytqKQotICAgICAgICAgICAgbGF5ZXIt
PnN5bmNUZXh0dXJlSWQoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4odGV4dHVy
ZUlkKyspKTsKKyAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgc3Rh
dGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4odGV4dHVyZUlkKyspLCBJbnRSZWN0KDAsIDAsIDEs
IDEpKTsKIAogICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CiB9CkBAIC0xMzQsNyArMTM1LDcg
QEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogCiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1UaWxlc1g7ICsraSkKICAgICAgICAgZm9yIChpbnQgaiA9IDA7
IGogPCBudW1UaWxlc1k7ICsraikKLSAgICAgICAgICAgIGxheWVyLT5zeW5jVGV4dHVyZUlkKGks
IGosIHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KDApKTsKKyAgICAgICAgICAgIGxheWVy
LT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4o
MCksIEludFJlY3QoKSk7CiAKICAgICAvLyBBbGwgY2hlY2tlcmJvYXJkaW5nCiAgICAgewpAQCAt
MTU1LDcgKzE1Niw3IEBAIHN0YXRpYyBib29sIGNvbXBsZXRlbHlDb250YWlucyhjb25zdCBSZWdp
b24mIGNvbnRhaW5lciwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICByZXR1cm4gdGVzdGVyLmlz
RW1wdHkoKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0UXVhZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIElu
dFNpemUgdGlsZVNpemUsIGNvbnN0IEludFNpemUmIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0Rh
dGE6OkJvcmRlclRleGVsT3B0aW9uIGJvcmRlclRleGVsT3B0aW9uLCBjb25zdCBJbnRSZWN0JiB2
aXNpYmxlTGF5ZXJSZWN0KQorc3RhdGljIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGdl
dFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBJbnRTaXplIHRpbGVTaXplLCBjb25zdCBJbnRTaXpl
JiBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXJU
ZXhlbE9wdGlvbiwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKIHsKICAgICBSZWZQ
dHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJT
aXplLCBib3JkZXJUZXhlbE9wdGlvbik7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qo
dmlzaWJsZUxheWVyUmVjdCk7CkBAIC0xNjMsNiArMTY0LDcgQEAgc3RhdGljIHZvaWQgZ2V0UXVh
ZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIEludFNpemUgdGlsZVNpemUsIGNvbnN0IEludFNpemUmIGxh
eWVyU2kKIAogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0g
bGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogICAgIGxheWVyLT5hcHBlbmRRdWFkcyhx
dWFkcywgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAgICByZXR1cm4gc2hhcmVkUXVhZFN0YXRl
LnJlbGVhc2UoKTsgLy8gVGhlIHNoYXJlZCBkYXRhIG11c3QgYmUgb3duZWQgYXMgbG9uZyBhcyB0
aGUgcXVhZCBsaXN0IGV4aXN0cy4KIH0KIAogLy8gQWxpZ24gd2l0aCBleHBlY3RlZCBhbmQgYWN0
dWFsIG91dHB1dApAQCAtMjAwLDcgKzIwMiw4IEBAIHN0YXRpYyB2b2lkIGNvdmVyYWdlVmlzaWJs
ZVJlY3RPblRpbGVCb3VuZGFyaWVzKENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wCiAK
ICAgICBJbnRTaXplIGxheWVyU2l6ZSgxMDAwLCAxMDAwKTsKICAgICBDQ1F1YWRMaXN0IHF1YWRz
OwotICAgIGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBib3Jk
ZXJzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOworICAgIE93blB0cjxDQ1NoYXJl
ZFF1YWRTdGF0ZT4gc2hhcmVkU3RhdGU7CisgICAgc2hhcmVkU3RhdGUgPSBnZXRRdWFkcyhxdWFk
cywgSW50U2l6ZSgxMDAsIDEwMCksIGxheWVyU2l6ZSwgYm9yZGVycywgSW50UmVjdChJbnRQb2lu
dCgpLCBsYXllclNpemUpKTsKICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZHMs
IEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiB9CiBXSVRIX0FORF9XSVRIT1VUX0JP
UkRFUl9URVNUKGNvdmVyYWdlVmlzaWJsZVJlY3RPblRpbGVCb3VuZGFyaWVzKTsKQEAgLTIxNiw3
ICsyMTksOCBAQCBzdGF0aWMgdm9pZCBjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c1RpbGVz
KENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wdAogCiAgICAgSW50U2l6ZSBsYXllclNp
emUoMjUwLCAyNTApOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgZ2V0UXVhZHMocXVhZHMs
IEludFNpemUoNTAsIDUwKSwgSW50U2l6ZSgyNTAsIDI1MCksIENDTGF5ZXJUaWxpbmdEYXRhOjpO
b0JvcmRlclRleGVscywgdmlzaWJsZUxheWVyUmVjdCk7CisgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJ
bnRTaXplKDUwLCA1MCksIEludFNpemUoMjUwLCAyNTApLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9C
b3JkZXJUZXhlbHMsIHZpc2libGVMYXllclJlY3QpOwogICAgIHZlcmlmeVF1YWRzRXhhY3RseUNv
dmVyUmVjdChxdWFkcywgdmlzaWJsZUxheWVyUmVjdCk7CiB9CiBXSVRIX0FORF9XSVRIT1VUX0JP
UkRFUl9URVNUKGNvdmVyYWdlVmlzaWJsZVJlY3RJbnRlcnNlY3RzVGlsZXMpOwpAQCAtMjI4LDcg
KzIzMiw4IEBAIHN0YXRpYyB2b2lkIGNvdmVyYWdlVmlzaWJsZVJlY3RJbnRlcnNlY3RzQm91bmRz
KENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wCiAgICAgSW50U2l6ZSBsYXllclNpemUo
MjIwLCAyMTApOwogICAgIEludFJlY3QgdmlzaWJsZUxheWVyUmVjdChJbnRQb2ludCgpLCBsYXll
clNpemUpOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgZ2V0UXVhZHMocXVhZHMsIEludFNp
emUoMTAwLCAxMDApLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVs
cywgdmlzaWJsZUxheWVyUmVjdCk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFy
ZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwg
MTAwKSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2li
bGVMYXllclJlY3QpOwogICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFkcywgdmlz
aWJsZUxheWVyUmVjdCk7CiB9CiBXSVRIX0FORF9XSVRIT1VUX0JPUkRFUl9URVNUKGNvdmVyYWdl
VmlzaWJsZVJlY3RJbnRlcnNlY3RzQm91bmRzKTsKQEAgLTI0MCw3ICsyNDUsOCBAQCBURVNUKEND
VGlsZWRMYXllckltcGxUZXN0LCB0ZXh0dXJlSW5mb0ZvckxheWVyTm9Cb3JkZXJzKQogICAgIElu
dFNpemUgdGlsZVNpemUoNTAsIDUwKTsKICAgICBJbnRTaXplIGxheWVyU2l6ZSgyNTAsIDI1MCk7
CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRRdWFkcyhxdWFkcywgdGlsZVNpemUsIGxh
eWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCBJbnRSZWN0KEludFBv
aW50KCksIGxheWVyU2l6ZSkpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVk
U3RhdGU7CisgICAgc2hhcmVkU3RhdGUgPSBnZXRRdWFkcyhxdWFkcywgdGlsZVNpemUsIGxheWVy
U2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCBJbnRSZWN0KEludFBvaW50
KCksIGxheWVyU2l6ZSkpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXpl
KCk7ICsraSkgewogICAgICAgICBBU1NFUlRfRVEocXVhZHNbaV0tPm1hdGVyaWFsKCksIENDRHJh
d1F1YWQ6OlRpbGVkQ29udGVudCkgPDwgcXVhZFN0cmluZyA8PCBpOwpAQCAtMjQ5LDggKzI1NSwy
NiBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCB0ZXh0dXJlSW5mb0ZvckxheWVyTm9Cb3Jk
ZXJzKQogICAgICAgICBFWFBFQ1RfTkUocXVhZC0+dGV4dHVyZUlkKCksIDB1KSA8PCBxdWFkU3Ry
aW5nIDw8IGk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkLT50ZXh0dXJlT2Zmc2V0KCksIEludFBv
aW50KCkpIDw8IHF1YWRTdHJpbmcgPDwgaTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWQtPnRleHR1
cmVTaXplKCksIHRpbGVTaXplKSA8PCBxdWFkU3RyaW5nIDw8IGk7CisgICAgICAgIEVYUEVDVF9F
UShJbnRSZWN0KDAsIDAsIDEsIDEpLCBxdWFkLT5vcGFxdWVSZWN0KCkpIDw8IHF1YWRTdHJpbmcg
PDwgaTsKICAgICB9CiB9CiAKK1RFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIHRpbGVPcGFxdWVS
ZWN0Rm9yTGF5ZXJOb0JvcmRlcnMpCit7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNj
b3BlZEltcGxUaHJlYWQ7CisKKyAgICBJbnRTaXplIHRpbGVTaXplKDUwLCA1MCk7CisgICAgSW50
U2l6ZSBsYXllclNpemUoMjUwLCAyNTApOworICAgIENDUXVhZExpc3QgcXVhZHM7CisgICAgT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdl
dFF1YWRzKHF1YWRzLCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9C
b3JkZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHF1YWRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVF9F
UShxdWFkc1tpXS0+bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFk
U3RyaW5nIDw8IGk7CisgICAgICAgIENDVGlsZURyYXdRdWFkKiBxdWFkID0gc3RhdGljX2Nhc3Q8
Q0NUaWxlRHJhd1F1YWQqPihxdWFkc1tpXS5nZXQoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKElu
dFJlY3QoMCwgMCwgMSwgMSksIHF1YWQtPm9wYXF1ZVJlY3QoKSkgPDwgcXVhZFN0cmluZyA8PCBp
OworICAgIH0KK30KIAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122976</attachid>
            <date>2012-01-18 12:42:00 -0800</date>
            <delta_ts>2012-01-19 14:10:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120118154159.patch</filename>
            <type>text/plain</type>
            <size>30232</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg3NDQ4YjJhNmE2OTk3
Y2FlNDgzNDg5ZTVhZjk3ZmNhNTNkMGVhYi4uYWVkNWJkNDdmNjhjZDNiYTFmZjNhYWY5MjBkMTI2
NWYwYWExMTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAxLTE4ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDUXVhZEN1bGxlclRlc3QuY3BwIGFuZCBDQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8p
OgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVU
aWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVh
ZC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6b3BhcXVlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0JsZW5kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3
UXVhZDo6Q0NUaWxlRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZURyYXdRdWFkLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3YWJs
ZVRpbGU6Om9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2FibGVUaWxlOjpzZXRP
cGFxdWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1
YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVy
dGllcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5oOgorCiAyMDEyLTAxLTE0ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRW5hYmxlIHRyYWNraW5nIG9wYXF1ZSByZWdpb24g
aW4gU2tpYSBncmFwaGljcyBjb250ZXh0LCByZXR1cm4gaXQgZnJvbSBMYXllclRleHR1cmVVcGRh
dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGMwMjEzYTY4ZWQ0ZmU1OTlhZjczNDUw
MzRkNDBjODRmMjQ2ODNhNTUuLmRhYzAwNTJhMTIzODFkMGQ0ZTMxZGZlM2EzZjIxMzk1NDYwOTQw
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDEt
MTggIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBVc2UgcmVnaW9uIHJlcG9ydGVkIHBhaW50ZWQgb3BhcXVlIGZvciBkcmF3IGN1bGxpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDE1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9D
Q1F1YWRDdWxsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3REcmF3UXVhZDo6VGVz
dERyYXdRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3REcmF3UXVhZDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAg
ICAgICAqIHRlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0UXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Y292ZXJhZ2VWaXNpYmxlUmVjdE9uVGls
ZUJvdW5kYXJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVy
c2VjdHNUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJz
ZWN0c0JvdW5kcyk6CisKIDIwMTItMDEtMTQgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBFbmFibGUgdHJhY2tpbmcgb3BhcXVlIHJlZ2lv
biBpbiBTa2lhIGdyYXBoaWNzIGNvbnRleHQsIHJldHVybiBpdCBmcm9tIExheWVyVGV4dHVyZVVw
ZGF0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDcxM2I0ZTBmMjEzYjM2
ZDc5NmE0MzEzNDI2MmNiMGY2MGNiMDZiODcuLjk3MzkxMTNiZjgxZTVkNDFhMDA4ODZlYzczZjI5
NGRmMWQ4NjQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtNjcsNiAr
NjcsNyBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IG1fZGlydHlSZWN0OwogICAgIEludFJlY3Qg
bV91cGRhdGVSZWN0OworICAgIEludFJlY3QgbV9vcGFxdWVSZWN0OwogcHJpdmF0ZToKICAgICBP
d25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gbV90ZXh0dXJlOwogfTsKQEAgLTI3
Miw3ICsyNzMsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhD
Q0xheWVySW1wbCogbGF5ZXIpCiAgICAgICAgIGlmICh0aWxlLT5pc0RpcnR5KCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICB0aWxlZExheWVyLT5zeW5jVGV4dHVyZUlkKGksIGos
IHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICAgICAgdGlsZWRMYXll
ci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnRleHR1
cmVJZCgpLCB0aWxlLT5tX29wYXF1ZVJlY3QpOwogICAgIH0KIH0KIApAQCAtNDEyLDggKzQxMyw4
IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlk
bGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVl
IHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBm
aW5pc2hlcywKICAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9s
ZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgogICAgIFJlZlB0
cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7Ci0gICAg
SW50UmVjdCBvcGFxdWVSZWN0OyAvLyBGSVhNRTogdW51c2VkLiByZW1vdmUgdGhpcyBhbmQgc3Rv
cmUgaW4gdGhlIGxheWVyIHRvIHBhc3MgdG8gaW1wbCBmb3IgZHJhdyBjdWxsaW5nCi0gICAgdGV4
dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxl
U2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVudHNTY2FsZSgpLCAmb3Bh
cXVlUmVjdCk7CisgICAgSW50UmVjdCBwYWludGVkT3BhcXVlUmVjdDsKKyAgICB0ZXh0dXJlVXBk
YXRlcigpLT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCks
IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZwYWludGVkT3Bh
cXVlUmVjdCk7CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAg
ICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBV
cGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwpAQCAtNDIyLDEyICs0MjMsMjEgQEAg
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwg
aW50IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgaWYgKCF0aWxlKQogICAgICAgICAg
ICAgICAgIENSQVNIKCk7CiAKKyAgICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGVy
LT50aWxlUmVjdCh0aWxlKTsKKworICAgICAgICAgICAgLy8gU2F2ZSB3aGF0IHdhcyBwYWludGVk
IG9wYXF1ZSBpbiB0aGUgdGlsZS4gSWYgZXZlcnl0aGluZyBwYWludGVkIGluIHRoZSB0aWxlIHdh
cyBvcGFxdWUsIGFuZCB0aGUgYXJlYSBpcyBhIHN1YnNldCBvZiBhbgorICAgICAgICAgICAgLy8g
YWxyZWFkeSBvcGFxdWUgYXJlYSwga2VlcCB0aGUgb2xkIGFyZWEuCisgICAgICAgICAgICBJbnRS
ZWN0IHRpbGVQYWludGVkUmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgbV9wYWludFJlY3Qp
OworICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rp
b24odGlsZVJlY3QsIHBhaW50ZWRPcGFxdWVSZWN0KTsKKyAgICAgICAgICAgIGlmICh0aWxlUGFp
bnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBhaW50ZWRSZWN0IHx8ICF0aWxlLT5tX29wYXF1ZVJlY3Qu
Y29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVSZWN0KSkKKyAgICAgICAgICAgICAgICB0aWxlLT5t
X29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9wYXF1ZVJlY3Q7CisKICAgICAgICAgICAgIC8vIFVz
ZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFuZENsZWFyRGlydHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0
aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRhdGVSZWN0LgogICAgICAgICAgICAgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0OwogICAgICAgICAgICAgaWYgKGRpcnR5
UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAg
IEludFJlY3Qgc291cmNlUmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAg
ICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gdGlsZVJlY3Q7CiAgICAgICAgICAgICBzb3VyY2VSZWN0
LmludGVyc2VjdChkaXJ0eVJlY3QpOwogICAgICAgICAgICAgLy8gUGFpbnQgcmVjdCBub3QgZ3Vh
cmFudGVlZCB0byBsaW5lIHVwIG9uIHRpbGUgYm91bmRhcmllcywgc28KICAgICAgICAgICAgIC8v
IG1ha2Ugc3VyZSB0aGF0IHNvdXJjZVJlY3QgZG9lc24ndCBleHRlbmQgb3V0c2lkZSBvZiBpdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRHJhd1F1YWQuaAppbmRleCBiNTY5MTNiM2NlNTNhYzBlZDBlZWJlNGQ3Nzk4MDRjYzI1
ZDRlNmFlLi4xMDlkMmZjNGIzYzA0OTVkNmMwYjAwNDE3ZDY2MWY3NDljMzkzYTZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdR
dWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5oCkBAIC00OSw5ICs0OSwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmxheWVyUmVj
dCgpOyB9CiAgICAgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3No
YXJlZFF1YWRTdGF0ZS0+Y2xpcFJlY3QoKTsgfQogICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7
IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+b3BhY2l0eSgpOyB9Ci0gICAgLy8gRm9yIHRoZSBw
dXJwb3NlcyBvZiBjdWxsaW5nLCBhcmUgdGhlIGNvbnRlbnRzIG9mIHRoaXMgcXVhZCBvcGFxdWU/
Ci0gICAgYm9vbCBkcmF3c09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRl
LT5pc09wYXF1ZSgpICYmIG1fcXVhZE9wYXF1ZSAmJiBvcGFjaXR5KCkgPT0gMTsgfQotICAgIGJv
b2wgbmVlZHNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3NoYXJlZFF1YWRTdGF0ZS0+aXNP
cGFxdWUoKSB8fCBtX25lZWRzQmxlbmRpbmcgfHwgb3BhY2l0eSgpICE9IDE7IH0KKyAgICAvLyBG
b3IgdGhlIHB1cnBvc2VzIG9mIGN1bGxpbmcsIHdoYXQgcGFydCBvZiB0aGUgY29udGVudHMgb2Yg
dGhpcyBxdWFkIGFyZSBvcGFxdWU/CisgICAgSW50UmVjdCBvcGFxdWVSZWN0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIGlmIChvcGFjaXR5KCkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBJbnRS
ZWN0KCk7CisgICAgICAgIGlmIChtX3NoYXJlZFF1YWRTdGF0ZS0+aXNPcGFxdWUoKSAmJiBtX3F1
YWRPcGFxdWUpCisgICAgICAgICAgICByZXR1cm4gbV9xdWFkUmVjdDsKKyAgICAgICAgcmV0dXJu
IG1fb3BhcXVlUmVjdDsKKyAgICB9CisgICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZWVkc0JsZW5kaW5nIHx8IG9wYXF1ZVJlY3QoKSAhPSBtX3F1YWRSZWN0OyB9CiAg
ICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFy
ZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKTsgfQogCiAgICAgZW51bSBN
YXRlcmlhbCB7CkBAIC04Niw2ICs5MywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gdmFyaWFibGVz
LgogICAgIGJvb2wgbV9xdWFkT3BhcXVlOwogICAgIGJvb2wgbV9uZWVkc0JsZW5kaW5nOworCisg
ICAgLy8gQmUgZGVmYXVsdCwgdGhpcyByZWN0IGlzIGVtcHR5LiBJdCBpcyB1c2VkIHdoZW4gdGhl
IHNoYXJlZCBxdWFkIHN0YXRlIGFuZCBhYm92ZQorICAgIC8vIHZhcmlhYmxlcyBkZXRlcm1pbmUg
dGhhdCB0aGUgcXVhZCBpcyBub3QgZnVsbHkgb3BhcXVlIGJ1dCBtYXkgYmUgcGFydGlhbGx5IG9w
YXF1ZS4KKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuY3BwCmluZGV4IDRhOGI4NTEzMGUxZWQ0ZWVhYzM2NjM1ZWZkN2MwMjk1ODUwZGI4NDMu
LjFhM2UzODQ5NjhiYjNkYWJmMDZiMDgzODJmNTA1NjMyMjY4NWY3ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmNwcApAQCAtNzgsOCArNzgsOCBAQCB2b2lkIENDUXVhZEN1bGxlcjo6Y3VsbE9j
Y2x1ZGVkUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QpCiAKICAgICAgICAgYm9vbCBrZWVwUXVh
ZCA9ICFyZWdpb25Db250YWluc1JlY3Qob3BhcXVlQ292ZXJhZ2VUaHVzRmFyLCBxdWFkUmVjdCk7
CiAKLSAgICAgICAgaWYgKGtlZXBRdWFkICYmIGRyYXdRdWFkLT5kcmF3c09wYXF1ZSgpICYmIGRy
YXdRdWFkLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkpCi0gICAgICAgICAgICBvcGFxdWVD
b3ZlcmFnZVRodXNGYXIudW5pdGUoUmVnaW9uKHF1YWRSZWN0KSk7CisgICAgICAgIGlmIChrZWVw
UXVhZCAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKQorICAgICAgICAg
ICAgb3BhcXVlQ292ZXJhZ2VUaHVzRmFyLnVuaXRlKGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCku
bWFwUmVjdChkcmF3UXVhZC0+b3BhcXVlUmVjdCgpKSk7CiAKICAgICAgICAgaWYgKGtlZXBRdWFk
KQogICAgICAgICAgICAgY3VsbGVkTGlzdC5hcHBlbmQocXVhZExpc3RbaV0ucmVsZWFzZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU29saWRDb2xvckRyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcAppbmRleCBkMWM3MjlhNDE1
N2RkMjIxNzJiNmM4MzFkNzcwMGNjNDIwYjRlZTZhLi43NGU2MjNjYzE2YjZlMmFkMjIxZDU0ODUw
ZTRkNjczZjY1M2FlODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQu
Y3BwCkBAIC00MCw2ICs0MCw4IEBAIENDU29saWRDb2xvckRyYXdRdWFkOjpDQ1NvbGlkQ29sb3JE
cmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0CiB7CiAgICAgaWYg
KG1fY29sb3IuYWxwaGEoKSAhPSAxKQogICAgICAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKKyAg
ICBlbHNlCisgICAgICAgIG1fb3BhcXVlUmVjdCA9IHF1YWRSZWN0OwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVEcmF3UXVhZC5jcHAKaW5kZXggZGY4MzA1MDhhMmM4MmNhMjc4YjM1Y2NjMDA1YjNk
MDc5YTFjN2ZjNi4uYjM1YjZmNjlmM2MyMDE2ZjRlMjM4NzczZjBkYzk0YzY5NTZiMDM5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1RpbGVEcmF3UXVhZD4gQ0NUaWxlRHJhd1F1
YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25z
dCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IElu
dFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGlu
dCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBi
b29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCitQYXNz
T3duUHRyPENDVGlsZURyYXdRdWFkPiBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBj
b25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29u
c3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBH
QzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdl
QUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkK
IHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGlsZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgcXVhZFJlY3QsIHRleHR1cmVJZCwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1
cmVGaWx0ZXIsIHN3aXp6bGVDb250ZW50cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVk
Z2VBQSwgYm90dG9tRWRnZUFBKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RpbGVEcmF3
UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVSZWN0LCB0ZXh0dXJlSWQsIHRl
eHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29udGVudHMs
IGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogfQog
Ci1DQ1RpbGVEcmF3UXVhZDo6Q0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6
ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVu
dHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJv
b2wgYm90dG9tRWRnZUFBKQorQ0NUaWxlRHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFkKGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0
LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwg
Y29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXpl
LCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRF
ZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VB
QSkKICAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENv
bnRlbnQsIHF1YWRSZWN0KQogICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQogICAgICwgbV90
ZXh0dXJlT2Zmc2V0KHRleHR1cmVPZmZzZXQpCkBAIC00OCw2ICs0OCw3IEBAIENDVGlsZURyYXdR
dWFkOjpDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlLCBjb25zdCBJCiB7CiAgICAgaWYgKGlzQW50aWFsaWFzZWQoKSkKICAgICAgICAgbV9uZWVk
c0JsZW5kaW5nID0gdHJ1ZTsKKyAgICBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaAppbmRleCAxMmU1M2RiZDJhOGY1ZDFmYjNkMzMzMTli
MmMwMzExZWM1M2Y1Y2E4Li4zMzUwMWE4MDZjZmFmZjk2MGYyNGM2ZGQ2ZjFjNzgyMGExNTc4OGM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ0NUaWxlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NUaWxlRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
SWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJl
U2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBs
ZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21F
ZGdlQUEpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50
UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBv
aW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0
ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29s
IHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOwogCiAgICAg
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsg
fQogICAgIEludFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVP
ZmZzZXQ7IH0KQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbnRpYWxpYXNl
ZCgpIGNvbnN0IHsgcmV0dXJuIGxlZnRFZGdlQUEoKSB8fCB0b3BFZGdlQUEoKSB8fCByaWdodEVk
Z2VBQSgpIHx8IGJvdHRvbUVkZ2VBQSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0NUaWxlRHJhd1F1
YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBj
b25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3
aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdo
dEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOworICAgIENDVGlsZURyYXdRdWFkKGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3Qm
IG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYg
dGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVy
ZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BF
ZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKIAogICAgIFBsYXRm
b3JtM0RPYmplY3QgbV90ZXh0dXJlSWQ7CiAgICAgSW50UG9pbnQgbV90ZXh0dXJlT2Zmc2V0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCA1ODQ5ZWYxZWIwZjBjMzQ4Yjg3
YTQ5NTE4YTYxY2M2MzMwNWY5MmNiLi40OGUyYzU0ZWRiMGRmNjAyYTk3ZDEwMTE1NGRhZWVmNDUw
OTQzZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtNTEsOCArNTEs
MTMgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7
IHJldHVybiBtX3RleHR1cmVJZDsgfQogICAgIHZvaWQgc2V0VGV4dHVyZUlkKFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZUlkKSB7IG1fdGV4dHVyZUlkID0gdGV4dHVyZUlkOyB9CisKKyAgICBjb25z
dCBJbnRSZWN0JiBvcGFxdWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWVSZWN0OyB9Cisg
ICAgdm9pZCBzZXRPcGFxdWVSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpIHsgbV9vcGFx
dWVSZWN0ID0gb3BhcXVlUmVjdDsgfQorCiBwcml2YXRlOgogICAgIFBsYXRmb3JtM0RPYmplY3Qg
bV90ZXh0dXJlSWQ7CisgICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7CiB9OwogCiBDQ1RpbGVkTGF5
ZXJJbXBsOjpDQ1RpbGVkTGF5ZXJJbXBsKGludCBpZCkKQEAgLTE1OSw3ICsxNjQsNyBAQCB2b2lk
IENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZQogICAgICAgICAgICAgYm9vbCBib3R0b21FZGdlQUEgPSBqID09
IG1fdGlsZXItPm51bVRpbGVzWSgpIC0gMSAmJiB1c2VBQTsKIAogICAgICAgICAgICAgY29uc3Qg
R0MzRGludCB0ZXh0dXJlRmlsdGVyID0gbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFw
aGljc0NvbnRleHQzRDo6TElORUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0gICAg
ICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUsIHRpbGVSZWN0LCB0aWxlLT50ZXh0dXJlSWQoKSwgdGV4dHVyZU9mZnNldCwgdGV4dHVy
ZVNpemUsIHRleHR1cmVGaWx0ZXIsIGNvbnRlbnRzU3dpenpsZWQoKSwgbGVmdEVkZ2VBQSwgdG9w
RWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7CisgICAgICAgICAgICBxdWFkTGlz
dC5hcHBlbmQoQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0
LCB0aWxlLT5vcGFxdWVSZWN0KCksIHRpbGUtPnRleHR1cmVJZCgpLCB0ZXh0dXJlT2Zmc2V0LCB0
ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRnZUFB
LCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKIAogICAgICAgICAgICAg
aWYgKGhhc0RlYnVnQm9yZGVycygpKSB7CiAgICAgICAgICAgICAgICAgQ29sb3IgY29sb3IoZGVi
dWdCb3JkZXJDb2xvcigpLnJlZCgpLCBkZWJ1Z0JvcmRlckNvbG9yKCkuZ3JlZW4oKSwgZGVidWdC
b3JkZXJDb2xvcigpLmJsdWUoKSwgZGVidWdUaWxlQm9yZGVyQWxwaGEpOwpAQCAtMTc4LDE0ICsx
ODMsMTUgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpzZXRUaWxpbmdEYXRhKGNvbnN0IENDTGF5
ZXJUaWxpbmdEYXRhJiB0aWxlcikKICAgICAqbV90aWxlciA9IHRpbGVyOwogfQogCi12b2lkIEND
VGlsZWRMYXllckltcGw6OnN5bmNUZXh0dXJlSWQoaW50IGksIGludCBqLCBQbGF0Zm9ybTNET2Jq
ZWN0IHRleHR1cmVJZCkKK3ZvaWQgQ0NUaWxlZExheWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVz
KGludCBpLCBpbnQgaiwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFJlY3Qm
IG9wYXF1ZVJlY3QpCiB7CiAgICAgRHJhd2FibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwog
ICAgIGlmICghdGlsZSkKICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUoaSwgaik7CiAgICAgdGls
ZS0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7CisgICAgdGlsZS0+c2V0T3BhcXVlUmVjdChvcGFx
dWVSZWN0KTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCmlu
ZGV4IDQ3OGIwMzQwMjM0NTA4MTliYmNlYTBhOGRhNWFkMzIxNTZmNTRiZDIuLjdhZDcxNTk5YjIx
MzY1ODU4YTFjNWE1ZjdhOWNmNDI0MWVhMDY4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTa2lwc0RyYXco
Ym9vbCBza2lwc0RyYXcpIHsgbV9za2lwc0RyYXcgPSBza2lwc0RyYXc7IH0KICAgICB2b2lkIHNl
dFRpbGluZ0RhdGEoY29uc3QgQ0NMYXllclRpbGluZ0RhdGEmIHRpbGVyKTsKLSAgICB2b2lkIHN5
bmNUZXh0dXJlSWQoaW50LCBpbnQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKTsKKyAgICB2
b2lkIHB1c2hUaWxlUHJvcGVydGllcyhpbnQsIGludCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
SWQsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpOwogCiAgICAgdm9pZCBzZXRDb250ZW50c1N3
aXp6bGVkKGJvb2wgY29udGVudHNTd2l6emxlZCkgeyBtX2NvbnRlbnRzU3dpenpsZWQgPSBjb250
ZW50c1N3aXp6bGVkOyB9CiAgICAgYm9vbCBjb250ZW50c1N3aXp6bGVkKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50c1N3aXp6bGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAppbmRleCBlZDE1ZTZjMTBlMWZlNDYyYzk0OTY4NTZk
YjM5MzQ1NjlmYWI4ODFjLi41ZWNiYjU5YzhlMDNiZmJmMTY2MzBkMDJkODkxOTcxMjEwYzM4OGQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVz
dC5jcHAKQEAgLTM4LDM1ICszOCwzNiBAQCBjbGFzcyBDQ1F1YWRDdWxsZXJUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewogCiBjbGFzcyBUZXN0RHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVh
ZCB7CiBwdWJsaWM6Ci0gICAgVGVzdERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
dGF0ZSwgTWF0ZXJpYWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICBUZXN0RHJhd1F1YWQo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHN0YXRlLCBNYXRlcmlhbCBtLCBjb25zdCBJbnRSZWN0
JiByZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KQogICAgIDogQ0NEcmF3UXVhZChzdGF0
ZSwgbSwgcmVjdCkKICAgICB7CisgICAgICAgIG1fb3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7CiAg
ICAgfQogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8VGVzdERyYXdRdWFkPiBjcmVhdGUoY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHN0YXRlLCBNYXRlcmlhbCBtLCBjb25zdCBJbnRSZWN0JiByZWN0
KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFRlc3REcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJpYWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgVGVzdERyYXdRdWFkKHN0YXRlLCBtLCByZWN0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgVGVzdERyYXdRdWFkKHN0YXRlLCBtLCByZWN0LCBvcGFxdWVSZWN0KSk7CiAgICAgfQog
fTsKIAotdm9pZCBzZXRRdWFkcyhDQ1NoYXJlZFF1YWRTdGF0ZSogcm9vdFN0YXRlLCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogY2hpbGRTdGF0ZSwgQ0NRdWFkTGlzdCYgcXVhZExpc3QpCit2b2lkIHNldFF1
YWRzKENDU2hhcmVkUXVhZFN0YXRlKiByb290U3RhdGUsIENDU2hhcmVkUXVhZFN0YXRlKiBjaGls
ZFN0YXRlLCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgY29uc3QgSW50UmVjdCYgY2hpbGRPcGFxdWVS
ZWN0ID0gSW50UmVjdCgpKQogewogICAgIHF1YWRMaXN0LmNsZWFyKCk7CiAKLSAgICBxdWFkTGlz
dC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxl
ZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAg
cXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVh
ZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAx
MDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3Rh
dGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDApLCBJ
bnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpj
cmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9p
bnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRl
c3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJ
bnRSZWN0KEludFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVh
ZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0
ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDIwMCksIElu
dFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNy
ZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2lu
dCgxMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChU
ZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwg
SW50UmVjdChJbnRQb2ludCgyMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotCi0gICAg
cXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1
YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkp
KTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwg
Q0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNp
emUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0
ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQo
MCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3RE
cmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50
UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRM
aXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRp
bGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxk
T3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShy
b290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAs
IDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0
LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVk
Q29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNo
aWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0
ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgw
LCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRM
aXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRp
bGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDAp
KSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6
Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBv
aW50KDIwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAg
ICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdR
dWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMjAwKSwgSW50U2l6ZSgxMDAs
IDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdR
dWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3Qo
SW50UG9pbnQoMTAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkp
OworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIEND
RHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDIwMCksIEludFNp
emUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisKKyAgICBxdWFkTGlzdC5hcHBlbmQo
VGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
LCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0
KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUs
IENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChU
ZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQs
IEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1
ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRT
dGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMTAw
KSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKIH0KIAogI2RlZmluZSBE
RUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMgICAgICAgICAgICAgICBcCkBAIC0xNDYs
NiArMTQ3LDU0IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNV
cEJvdHRvbVJpZ2h0KQogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDl1KTsKIH0KIAor
VEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uKQoreworICAgIERFQ0xB
UkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUworCisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNs
YXRlKDUwLCA1MCk7CisKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9
IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6
Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3Qs
IEludFJlY3QoKSwgMS4wLCBmYWxzZSk7CisgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hp
bGRSZWN0LngoKSArIGNoaWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxk
UmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdo
dCgpIC8gMik7CisKKyAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0
KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5z
aXplKCksIDEzdSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlz
dCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKK30KKworVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uMikKK3sKKyAgICBERUNMQVJFX0FORF9J
TklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwg
MTApOworCisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJl
ZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPEND
U2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShj
aGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0
KCksIDEuMCwgZmFsc2UpOworICAgIEludFJlY3QgY2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54
KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNoaWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVp
Z2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAvIDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAqIDMg
LyA0KTsKKworICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwg
cXVhZExpc3QsIGNoaWxkT3BhcXVlUmVjdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUo
KSwgMTN1KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsK
KyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOworfQorCitURVNUKENDUXVhZEN1
bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb25DaGVja092ZXJjdWxsKQoreworICAgIERFQ0xB
UkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUworCisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNs
YXRlKDUwLCA0OSk7CisKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9
IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6
Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3Qs
IEludFJlY3QoKSwgMS4wLCBmYWxzZSk7CisgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hp
bGRSZWN0LngoKSArIGNoaWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxk
UmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdo
dCgpIC8gMik7CisKKyAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0
KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5z
aXplKCksIDEzdSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlz
dCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKK30KKwogVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlOb25BeGlzQWxpZ25lZFF1YWRzRG9udE9jY2x1ZGUpCiB7CiAg
ICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCmluZGV4IGEyZWVh
OTQ0MGM0M2MzM2MzOGU0OTZlMzc4YmRjN2MzMzEyZTgzZjMuLjE3ODUwZjJmODliNzgzMTNmZjcz
NDZkMDE5Y2VmYzFlNmJmMWFjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCkBAIC00NiwxMSArNDYsMTIgQEAgc3Rh
dGljIFBhc3NSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gY3JlYXRlTGF5ZXIoY29uc3QgSW50U2l6
ZSYgdGlsZVNpemUsIGNvbnN0IEkKICAgICBsYXllci0+c2V0VGlsaW5nRGF0YSgqdGlsZXIpOwog
ICAgIGxheWVyLT5zZXRTa2lwc0RyYXcoZmFsc2UpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5
ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgbGF5ZXItPnNldERy
YXdPcGFjaXR5KDEpOwogCiAgICAgaW50IHRleHR1cmVJZCA9IDE7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCB0aWxlci0+bnVtVGlsZXNYKCk7ICsraSkKICAgICAgICAgZm9yIChpbnQgaiA9IDA7
IGogPCB0aWxlci0+bnVtVGlsZXNZKCk7ICsraikKLSAgICAgICAgICAgIGxheWVyLT5zeW5jVGV4
dHVyZUlkKGksIGosIHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KHRleHR1cmVJZCsrKSk7
CisgICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHN0YXRpY19jYXN0
PFBsYXRmb3JtM0RPYmplY3Q+KHRleHR1cmVJZCsrKSwgSW50UmVjdCgwLCAwLCAxLCAxKSk7CiAK
ICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOwogfQpAQCAtMTM0LDcgKzEzNSw3IEBAIFRFU1Qo
Q0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKIAogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtVGlsZXNYOyArK2kpCiAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVt
VGlsZXNZOyArK2opCi0gICAgICAgICAgICBsYXllci0+c3luY1RleHR1cmVJZChpLCBqLCBzdGF0
aWNfY2FzdDxQbGF0Zm9ybTNET2JqZWN0PigwKSk7CisgICAgICAgICAgICBsYXllci0+cHVzaFRp
bGVQcm9wZXJ0aWVzKGksIGosIHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KDApLCBJbnRS
ZWN0KCkpOwogCiAgICAgLy8gQWxsIGNoZWNrZXJib2FyZGluZwogICAgIHsKQEAgLTE1NSw3ICsx
NTYsNyBAQCBzdGF0aWMgYm9vbCBjb21wbGV0ZWx5Q29udGFpbnMoY29uc3QgUmVnaW9uJiBjb250
YWluZXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgcmV0dXJuIHRlc3Rlci5pc0VtcHR5KCk7
CiB9CiAKLXN0YXRpYyB2b2lkIGdldFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBJbnRTaXplIHRp
bGVTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpCb3Jk
ZXJUZXhlbE9wdGlvbiBib3JkZXJUZXhlbE9wdGlvbiwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxh
eWVyUmVjdCkKK3N0YXRpYyBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBnZXRRdWFkcyhD
Q1F1YWRMaXN0JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJT
aXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRp
b24sIGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpCiB7CiAgICAgUmVmUHRyPENDVGls
ZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgYm9y
ZGVyVGV4ZWxPcHRpb24pOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVM
YXllclJlY3QpOwpAQCAtMTYzLDYgKzE2NCw3IEBAIHN0YXRpYyB2b2lkIGdldFF1YWRzKENDUXVh
ZExpc3QmIHF1YWRzLCBJbnRTaXplIHRpbGVTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclNpCiAK
ICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5j
cmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZHMsIHNo
YXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisgICAgcmV0dXJuIHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNl
KCk7IC8vIFRoZSBzaGFyZWQgZGF0YSBtdXN0IGJlIG93bmVkIGFzIGxvbmcgYXMgdGhlIHF1YWQg
bGlzdCBleGlzdHMuCiB9CiAKIC8vIEFsaWduIHdpdGggZXhwZWN0ZWQgYW5kIGFjdHVhbCBvdXRw
dXQKQEAgLTIwMCw3ICsyMDIsOCBAQCBzdGF0aWMgdm9pZCBjb3ZlcmFnZVZpc2libGVSZWN0T25U
aWxlQm91bmRhcmllcyhDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcAogCiAgICAgSW50
U2l6ZSBsYXllclNpemUoMTAwMCwgMTAwMCk7CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBn
ZXRRdWFkcyhxdWFkcywgSW50U2l6ZSgxMDAsIDEwMCksIGxheWVyU2l6ZSwgYm9yZGVycywgSW50
UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIEludFNp
emUoMTAwLCAxMDApLCBsYXllclNpemUsIGJvcmRlcnMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5
ZXJTaXplKSk7CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRzLCBJbnRSZWN0
KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwogfQogV0lUSF9BTkRfV0lUSE9VVF9CT1JERVJfVEVT
VChjb3ZlcmFnZVZpc2libGVSZWN0T25UaWxlQm91bmRhcmllcyk7CkBAIC0yMTYsNyArMjE5LDgg
QEAgc3RhdGljIHZvaWQgY292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNUaWxlcyhDQ0xheWVy
VGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHQKIAogICAgIEludFNpemUgbGF5ZXJTaXplKDI1MCwg
MjUwKTsKICAgICBDQ1F1YWRMaXN0IHF1YWRzOwotICAgIGdldFF1YWRzKHF1YWRzLCBJbnRTaXpl
KDUwLCA1MCksIEludFNpemUoMjUwLCAyNTApLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJU
ZXhlbHMsIHZpc2libGVMYXllclJlY3QpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
c2hhcmVkU3RhdGU7CisgICAgc2hhcmVkU3RhdGUgPSBnZXRRdWFkcyhxdWFkcywgSW50U2l6ZSg1
MCwgNTApLCBJbnRTaXplKDI1MCwgMjUwKSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4
ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3Qo
cXVhZHMsIHZpc2libGVMYXllclJlY3QpOwogfQogV0lUSF9BTkRfV0lUSE9VVF9CT1JERVJfVEVT
VChjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c1RpbGVzKTsKQEAgLTIyOCw3ICsyMzIsOCBA
QCBzdGF0aWMgdm9pZCBjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c0JvdW5kcyhDQ0xheWVy
VGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcAogICAgIEludFNpemUgbGF5ZXJTaXplKDIyMCwgMjEw
KTsKICAgICBJbnRSZWN0IHZpc2libGVMYXllclJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKTsK
ICAgICBDQ1F1YWRMaXN0IHF1YWRzOwotICAgIGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwg
MTAwKSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2li
bGVMYXllclJlY3QpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkU3RhdGU7
CisgICAgc2hhcmVkU3RhdGUgPSBnZXRRdWFkcyhxdWFkcywgSW50U2l6ZSgxMDAsIDEwMCksIGxh
eWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJS
ZWN0KTsKICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZHMsIHZpc2libGVMYXll
clJlY3QpOwogfQogV0lUSF9BTkRfV0lUSE9VVF9CT1JERVJfVEVTVChjb3ZlcmFnZVZpc2libGVS
ZWN0SW50ZXJzZWN0c0JvdW5kcyk7CkBAIC0yNDAsNyArMjQ1LDggQEAgVEVTVChDQ1RpbGVkTGF5
ZXJJbXBsVGVzdCwgdGV4dHVyZUluZm9Gb3JMYXllck5vQm9yZGVycykKICAgICBJbnRTaXplIHRp
bGVTaXplKDUwLCA1MCk7CiAgICAgSW50U2l6ZSBsYXllclNpemUoMjUwLCAyNTApOwogICAgIEND
UXVhZExpc3QgcXVhZHM7Ci0gICAgZ2V0UXVhZHMocXVhZHMsIHRpbGVTaXplLCBsYXllclNpemUs
IENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscywgSW50UmVjdChJbnRQb2ludCgpLCBs
YXllclNpemUpKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOwor
ICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIHRpbGVTaXplLCBsYXllclNpemUsIEND
TGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscywgSW50UmVjdChJbnRQb2ludCgpLCBsYXll
clNpemUpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgQVNTRVJUX0VRKHF1YWRzW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpU
aWxlZENvbnRlbnQpIDw8IHF1YWRTdHJpbmcgPDwgaTsKQEAgLTI0OSw4ICsyNTUsMjYgQEAgVEVT
VChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGV4dHVyZUluZm9Gb3JMYXllck5vQm9yZGVycykKICAg
ICAgICAgRVhQRUNUX05FKHF1YWQtPnRleHR1cmVJZCgpLCAwdSkgPDwgcXVhZFN0cmluZyA8PCBp
OwogICAgICAgICBFWFBFQ1RfRVEocXVhZC0+dGV4dHVyZU9mZnNldCgpLCBJbnRQb2ludCgpKSA8
PCBxdWFkU3RyaW5nIDw8IGk7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkLT50ZXh0dXJlU2l6ZSgp
LCB0aWxlU2l6ZSkgPDwgcXVhZFN0cmluZyA8PCBpOworICAgICAgICBFWFBFQ1RfRVEoSW50UmVj
dCgwLCAwLCAxLCAxKSwgcXVhZC0+b3BhcXVlUmVjdCgpKSA8PCBxdWFkU3RyaW5nIDw8IGk7CiAg
ICAgfQogfQogCitURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCB0aWxlT3BhcXVlUmVjdEZvckxh
eWVyTm9Cb3JkZXJzKQoreworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzY29wZWRJbXBs
VGhyZWFkOworCisgICAgSW50U2l6ZSB0aWxlU2l6ZSg1MCwgNTApOworICAgIEludFNpemUgbGF5
ZXJTaXplKDI1MCwgMjUwKTsKKyAgICBDQ1F1YWRMaXN0IHF1YWRzOworICAgIE93blB0cjxDQ1No
YXJlZFF1YWRTdGF0ZT4gc2hhcmVkU3RhdGU7CisgICAgc2hhcmVkU3RhdGUgPSBnZXRRdWFkcyhx
dWFkcywgdGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4
ZWxzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkgeworICAgICAgICBBU1NFUlRfRVEocXVhZHNb
aV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCkgPDwgcXVhZFN0cmluZyA8
PCBpOworICAgICAgICBDQ1RpbGVEcmF3UXVhZCogcXVhZCA9IHN0YXRpY19jYXN0PENDVGlsZURy
YXdRdWFkKj4ocXVhZHNbaV0uZ2V0KCkpOworCisgICAgICAgIEVYUEVDVF9FUShJbnRSZWN0KDAs
IDAsIDEsIDEpLCBxdWFkLT5vcGFxdWVSZWN0KCkpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICB9
Cit9CiAKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123192</attachid>
            <date>2012-01-19 14:10:27 -0800</date>
            <delta_ts>2012-01-20 10:18:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120119171026.patch</filename>
            <type>text/plain</type>
            <size>46046</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzlhMjkyNmUxNDc1MDBh
MWU1YmJmNzEzNWVhMDgyNjEzNzIzNmUwMC4uMWVlNGZmYThjZDQ3MjE2Y2IwZjNlMDEwZDk2YWFh
ZjA2NTlmNmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAxLTE5ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDVGlsZWRMYXllckltcGxUZXN0LmNwcCBhbmQgQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6b3BhcXVlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0JsZW5kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yRHJhd1F1YWQ6OkNDU29saWRDb2xvckRy
YXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdhYmxlVGlsZTo6b3BhcXVlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6OnNldE9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aWxlZExheWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisKIDIwMTItMDEtMTggIEpv
Y2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBb
UXRdIEhhbmRsZSB0aGUgbGF5ZXJzIHZpc2libGUgcmVjdCBjYWxjdWxhdGlvbiBvbiB0aGUgd2Vi
IHByb2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGYxMzJkMTdlY2QyMmJlNzA0
YmViMjgwZjNmYzI2ZGJlMmNmMGQ1NzIuLjYwY2NmZGM3NTU0ZmEwZmFkYmIxMzAwMDkxNDliNTk2
NmY0OGQ0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTItMDEtMTkgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBVc2UgcmVnaW9uIHJlcG9ydGVkIHBhaW50ZWQgb3BhcXVlIGZvciBkcmF3IGN1
bGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsZW5k
U3RhdGVDaGVja0xheWVyOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJLaXQ6OkJsZW5kU3Rh
dGVDaGVja0xheWVyOjpzZXRPcGFxdWVDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OkJsZW5kU3Rh
dGVDaGVja0xheWVyOjpCbGVuZFN0YXRlQ2hlY2tMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlRF
U1RfRik6CisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0RHJhd1F1YWQ6OlRlc3REcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRRdWFkcyk6CisgICAg
ICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpURVNUKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvdmVyYWdlVmlzaWJsZVJlY3RPblRpbGVCb3VuZGFyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvdmVyYWdlVmlzaWJsZVJlY3RJbnRlcnNlY3RzVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNCb3VuZHMpOgorICAgICAgICAqIHRlc3RzL0xh
eWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAy
MDEyLTAxLTE4ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBDbGVhbnVwOiBNb3ZlIGNocm9tZS1zcGVjaWZpYyBmaWxlc3lzdGVtIHR5cGUgaGFuZGxpbmcg
Y29kZSAoZm9yIEZpbGVTeXN0ZW0gQVBJKSB1bmRlciBjaHJvbWl1bSBkaXJlY3RvcnkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXgg
MGQ5N2U1MmFlZGUwZjk4MGFkYTE1ZGUwYTE0YTFkMjhkODZhMWU4OC4uMGU5YTQ1MmQ4ZjNiMjJh
OTM2MjQxYTBkODVkZDdhYjhlMDgxZDg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTgyLDggKzgyLDYgQEAgdm9pZCBCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QKIHsKICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxl
U2l6ZSk7CiAKLSAgICBib29sIGxheWVySXNPcGFxdWUgPSBtX2NhbnZhcy5vcGFxdWUoKTsKLQog
ICAgIG1fY2FudmFzLnJlc2l6ZShjb250ZW50UmVjdC5zaXplKCkpOwogICAgIC8vIEFzc3VtcHRp
b246IGlmIGEgdGlsZXIgaXMgdXNpbmcgYm9yZGVyIHRleGVscywgdGhlbiBpdCBpcyBiZWNhdXNl
IHRoZQogICAgIC8vIGxheWVyIGlzIGxpa2VseSB0byBiZSBmaWx0ZXJlZCBvciB0cmFuc2Zvcm1l
ZC4gQmVjYXVzZSBvZiBpdCBtaWdodCBiZQpAQCAtOTEsMTEgKzg5LDEwIEBAIHZvaWQgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlRleHRPcHRpb24gdGV4
dE9wdGlvbiA9CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3JtQ2FudmFzOjpQYWludGVy
OjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlN1YnBpeGVsVGV4dDsK
ICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWludGVyKCZtX2NhbnZhcywgdGV4
dE9wdGlvbik7Ci0gICAgY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5zZXRUcmFja09wYXF1
ZVJlZ2lvbighbGF5ZXJJc09wYXF1ZSk7CisgICAgY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgp
LT5zZXRUcmFja09wYXF1ZVJlZ2lvbih0cnVlKTsKICAgICBwYWludENvbnRlbnRzKCpjYW52YXNQ
YWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogCi0gICAgaWYg
KCFsYXllcklzT3BhcXVlKQotICAgICAgICAqcmVzdWx0aW5nT3BhcXVlUmVjdCA9IGNhbnZhc1Bh
aW50ZXIuc2tpYUNvbnRleHQoKS0+b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCk7CisgICAgKnJlc3Vs
dGluZ09wYXF1ZVJlY3QgPSBjYW52YXNQYWludGVyLnNraWFDb250ZXh0KCktPm9wYXF1ZVJlZ2lv
bigpLmFzUmVjdCgpOwogfQogCiB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaAppbmRleCAxNzlmZWE2ZTEyYmYxMDNjNWIwNzQzNWNmMjRhM2E0OGY4Y2Q5MzIz
Li4wNDlmZDI0MDgzZjQyNzVjZTUyNmQ2MWI4OGQzZTA1NTU2M2VmMGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRh
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC03MSw4ICs3MSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlz
IGZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbXBvbmVudCBvcmRlciBpbiB0aGUgc2FtcGxlZCB0ZXhl
bC4KICAgICAvLyBJZiB0aGUgZm9ybWF0IGlzIFRleGVsRm9ybWF0QkdSQSwgdmVjNC54IGlzIGJs
dWUgYW5kIHZlYzQueiBpcyByZWQuCiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2Ft
cGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpID0gMDsKLSAgICAvLyBUaGUg
fHJlc3VsdGluZ09wYXF1ZVJlY3R8IGdpdmVzIGJhY2sgYSByZWdpb24gb2YgdGhlIGxheWVyIHRo
YXQgd2FzIHBhaW50ZWQgb3BhcXVlLiBJZiB0aGUgbGF5ZXIgaXMgbWFya2VkIG9wYXF1ZSBpbiB0
aGUgdXBkYXRlciwKLSAgICAvLyB0aGVuIHRoaXMgcmVnaW9uIHNob3VsZCBiZSBpZ25vcmVkIGlu
IHByZWZlcmVuY2UgZm9yIHRoZSBlbnRpcmUgbGF5ZXIncyBhcmVhLgorICAgIC8vIFRoZSB8cmVz
dWx0aW5nT3BhcXVlUmVjdHwgZ2l2ZXMgYmFjayBhIHJlZ2lvbiBvZiB0aGUgbGF5ZXIgdGhhdCB3
YXMgcGFpbnRlZCBvcGFxdWUuCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUg
Ki8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRSZWN0KiAvKiByZXN1bHRpbmdPcGFx
dWVSZWN0ICovKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAwZDk3NGZhNjNhNDQ1N2Q5ZWFjN2M4Yjg3M2Y3
ZTkxYTRkMjY4NDNiLi5jOWRhYjcyZjEzMmU4ZDliYjkzYWIwODU3YzFkNzA1NTAxZDNlY2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcApAQCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKICAgICA6IENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikKLSAgICAsIG1fbGF5ZXJJc09wYXF1ZShm
YWxzZSkKIHsKIH0KIApAQCAtNTQsMTMgKzUzLDEyIEBAIHZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
CiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZyhjb250ZW50
UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgUGxhdGZvcm1Db250ZXh0
U2tpYSBwbGF0Zm9ybUNvbnRleHQoY2FudmFzKTsKICAgICBwbGF0Zm9ybUNvbnRleHQuc2V0RGVm
ZXJyZWQodHJ1ZSk7Ci0gICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3BhcXVlUmVnaW9uKCFt
X2xheWVySXNPcGFxdWUpOworICAgIHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lv
bih0cnVlKTsKICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZwbGF0Zm9ybUNv
bnRleHQpOwogICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCwg
Y29udGVudHNTY2FsZSk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOwogCi0gICAgaWYg
KCFtX2xheWVySXNPcGFxdWUpCi0gICAgICAgICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0gcGxhdGZv
cm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpOworICAgICpyZXN1bHRpbmdPcGFxdWVS
ZWN0ID0gcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpOwogfQogCiB2b2lk
IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmRyYXdQaWN0dXJlKFNrQ2FudmFz
KiBjYW52YXMpCkBAIC02OSwxMSArNjcsNiBAQCB2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OmRyYXdQaWN0dXJlKFNrQ2FudmFzKiBjYW52YXMpCiAgICAgY2FudmFzLT5k
cmF3UGljdHVyZShtX3BpY3R1cmUpOwogfQogCi12b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKLXsKLSAgICBtX2xheWVySXNPcGFx
dWUgPSBvcGFxdWU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAvLyBVU0Uo
U0tJQSkKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggN2Zj
YzYwNTlmOTBlN2Q5ZDFjMzAxYmYyYTcwZjUxNTJhNDkyN2IwMC4uZTc3ZWUzMDk0NjNhMDRiNzRh
MGE5MzlhNjIxNzJkZmI5Y2E5NTI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNTQsMTMgKzU0LDkgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBj
b250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKICAgICB2b2lkIGRy
YXdQaWN0dXJlKFNrQ2FudmFzKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wp
OwotCiBwcml2YXRlOgogICAgIC8vIFJlY29yZGluZyBjYW52YXMuCiAgICAgU2tQaWN0dXJlIG1f
cGljdHVyZTsKLSAgICAvLyBUcnVlIHdoZW4gaXQgaXMga25vd24gdGhhdCBhbGwgb3V0cHV0IHBp
eGVscyB3aWxsIGJlIG9wYXF1ZS4KLSAgICBib29sIG1fbGF5ZXJJc09wYXF1ZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4
IDcxM2I0ZTBmMjEzYjM2ZDc5NmE0MzEzNDI2MmNiMGY2MGNiMDZiODcuLmRkMzMwMTc3ZDJiYjY2
ZWE0Y2JkNjRmZjYwNzY4NmVhYTMyODFlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IG1fZGlydHlSZWN0
OwogICAgIEludFJlY3QgbV91cGRhdGVSZWN0OworICAgIEludFJlY3QgbV9vcGFxdWVSZWN0Owog
cHJpdmF0ZToKICAgICBPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gbV90ZXh0
dXJlOwogfTsKQEAgLTI3Miw3ICsyNzMsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgICAgIGlmICh0aWxlLT5pc0Rp
cnR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB0aWxlZExheWVyLT5zeW5j
VGV4dHVyZUlkKGksIGosIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAg
ICAgICAgdGlsZWRMYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHRpbGUtPm1hbmFnZWRU
ZXh0dXJlKCktPnRleHR1cmVJZCgpLCB0aWxlLT5tX29wYXF1ZVJlY3QpOwogICAgIH0KIH0KIApA
QCAtNDEyLDggKzQxMyw4IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAvLyBIb3dldmVy
LCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVu
dGlsIHRoZSBwYWludCBmaW5pc2hlcywKICAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJl
bmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxl
dGVzLgogICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVw
ZGF0ZXIoKSk7Ci0gICAgSW50UmVjdCBvcGFxdWVSZWN0OyAvLyBGSVhNRTogdW51c2VkLiByZW1v
dmUgdGhpcyBhbmQgc3RvcmUgaW4gdGhlIGxheWVyIHRvIHBhc3MgdG8gaW1wbCBmb3IgZHJhdyBj
dWxsaW5nCi0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0
LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVu
dHNTY2FsZSgpLCAmb3BhcXVlUmVjdCk7CisgICAgSW50UmVjdCBwYWludGVkT3BhcXVlUmVjdDsK
KyAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGls
ZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxl
KCksICZwYWludGVkT3BhcXVlUmVjdCk7CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0
b207ICsraikgewogICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7
CiAgICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwpAQCAtNDIy
LDEyICs0MjMsMjIgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRp
bGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgaWYgKCF0
aWxlKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKKyAgICAgICAgICAgIEludFJlY3QgdGls
ZVJlY3QgPSBtX3RpbGVyLT50aWxlQm91bmRzKGksIGopOworCisgICAgICAgICAgICAvLyBTYXZl
IHdoYXQgd2FzIHBhaW50ZWQgb3BhcXVlIGluIHRoZSB0aWxlLiBJZiBldmVyeXRoaW5nIHBhaW50
ZWQgaW4gdGhlIHRpbGUgd2FzIG9wYXF1ZSwgYW5kIHRoZSBhcmVhIGlzIGEgc3Vic2V0IG9mIGFu
CisgICAgICAgICAgICAvLyBhbHJlYWR5IG9wYXF1ZSBhcmVhLCBrZWVwIHRoZSBvbGQgYXJlYS4K
KyAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRSZWN0ID0gaW50ZXJzZWN0aW9uKHRpbGVS
ZWN0LCBtX3BhaW50UmVjdCk7CisgICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVkT3BhcXVl
UmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgcGFpbnRlZE9wYXF1ZVJlY3QpOworICAgICAg
ICAgICAgaWYgKHRpbGVQYWludGVkT3BhcXVlUmVjdCAhPSB0aWxlUGFpbnRlZFJlY3QgfHwgIXRp
bGUtPm1fb3BhcXVlUmVjdC5jb250YWlucyh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QpKQorICAgICAg
ICAgICAgICAgIHRpbGUtPm1fb3BhcXVlUmVjdCA9IHRpbGVQYWludGVkT3BhcXVlUmVjdDsKKwog
ICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVjdCBhcyBjb3B5QW5kQ2xlYXJEaXJ0eSBhYm92
ZSBtb3ZlZCB0aGUgZXhpc3RpbmcgZGlydHkgcmVjdCB0byBtX3VwZGF0ZVJlY3QuCiAgICAgICAg
ICAgICBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QgPSB0aWxlLT5tX3VwZGF0ZVJlY3Q7CiAgICAg
ICAgICAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gbV90aWxlci0+dGlsZVJlY3Qo
dGlsZSk7CisgICAgICAgICAgICBJbnRSZWN0IGZpeGVkU2l6ZVRpbGVSZWN0V2l0aEJvcmRlcnMg
PSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKKyAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVj
dCA9IGZpeGVkU2l6ZVRpbGVSZWN0V2l0aEJvcmRlcnM7CiAgICAgICAgICAgICBzb3VyY2VSZWN0
LmludGVyc2VjdChkaXJ0eVJlY3QpOwogICAgICAgICAgICAgLy8gUGFpbnQgcmVjdCBub3QgZ3Vh
cmFudGVlZCB0byBsaW5lIHVwIG9uIHRpbGUgYm91bmRhcmllcywgc28KICAgICAgICAgICAgIC8v
IG1ha2Ugc3VyZSB0aGF0IHNvdXJjZVJlY3QgZG9lc24ndCBleHRlbmQgb3V0c2lkZSBvZiBpdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRHJhd1F1YWQuaAppbmRleCBhY2M3YzAyODY2Y2M4OTU5MzE1MTk2YjNiODM4ZDA4ODZi
NTFjNmRlLi41NjU2MzUxODhjNjI1MWQ0MzMyMGY0Yjg1ZDg5ZWIxZDRmYmYyMjY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdR
dWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5oCkBAIC01MSw5ICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmxheWVyUmVj
dCgpOyB9CiAgICAgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3No
YXJlZFF1YWRTdGF0ZS0+Y2xpcFJlY3QoKTsgfQogICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7
IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+b3BhY2l0eSgpOyB9Ci0gICAgLy8gRm9yIHRoZSBw
dXJwb3NlcyBvZiBjdWxsaW5nLCBhcmUgdGhlIGNvbnRlbnRzIG9mIHRoaXMgcXVhZCBvcGFxdWU/
Ci0gICAgYm9vbCBkcmF3c09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRl
LT5pc09wYXF1ZSgpICYmIG1fcXVhZE9wYXF1ZSAmJiBvcGFjaXR5KCkgPT0gMTsgfQotICAgIGJv
b2wgbmVlZHNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3NoYXJlZFF1YWRTdGF0ZS0+aXNP
cGFxdWUoKSB8fCBtX25lZWRzQmxlbmRpbmcgfHwgb3BhY2l0eSgpICE9IDE7IH0KKyAgICAvLyBG
b3IgdGhlIHB1cnBvc2VzIG9mIGN1bGxpbmcsIHdoYXQgcGFydCBvZiB0aGUgY29udGVudHMgb2Yg
dGhpcyBxdWFkIGFyZSBvcGFxdWU/CisgICAgSW50UmVjdCBvcGFxdWVSZWN0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIGlmIChvcGFjaXR5KCkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBJbnRS
ZWN0KCk7CisgICAgICAgIGlmIChtX3NoYXJlZFF1YWRTdGF0ZS0+aXNPcGFxdWUoKSAmJiBtX3F1
YWRPcGFxdWUpCisgICAgICAgICAgICByZXR1cm4gbV9xdWFkUmVjdDsKKyAgICAgICAgcmV0dXJu
IG1fb3BhcXVlUmVjdDsKKyAgICB9CisgICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZWVkc0JsZW5kaW5nIHx8IG9wYXF1ZVJlY3QoKSAhPSBtX3F1YWRSZWN0OyB9CiAg
ICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFy
ZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKTsgfQogCiAgICAgZW51bSBN
YXRlcmlhbCB7CkBAIC05MCw2ICs5NywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gdmFyaWFibGVz
LgogICAgIGJvb2wgbV9xdWFkT3BhcXVlOwogICAgIGJvb2wgbV9uZWVkc0JsZW5kaW5nOworCisg
ICAgLy8gQmUgZGVmYXVsdCwgdGhpcyByZWN0IGlzIGVtcHR5LiBJdCBpcyB1c2VkIHdoZW4gdGhl
IHNoYXJlZCBxdWFkIHN0YXRlIGFuZCBhYm92ZQorICAgIC8vIHZhcmlhYmxlcyBkZXRlcm1pbmUg
dGhhdCB0aGUgcXVhZCBpcyBub3QgZnVsbHkgb3BhcXVlIGJ1dCBtYXkgYmUgcGFydGlhbGx5IG9w
YXF1ZS4KKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuY3BwCmluZGV4IDA3OWFhN2ZmNmIzMWIxYjQ2ZjJjMjlmYTcxZjVmNzQ4OGI0YmI5MDku
LmVhN2EyMmU1ZWVmMDQ5YWFlOTdkOWNiMzkwMTgxMWYwZThhODEyMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmNwcApAQCAtNzcsOCArNzcsMTAgQEAgdm9pZCBDQ1F1YWRDdWxsZXI6OmN1bGxP
Y2NsdWRlZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0KQogCiAgICAgICAgIGJvb2wga2VlcFF1
YWQgPSAhcmVnaW9uQ29udGFpbnNSZWN0KG9wYXF1ZUNvdmVyYWdlVGh1c0ZhciwgcXVhZFJlY3Qp
OwogCi0gICAgICAgIGlmIChrZWVwUXVhZCAmJiBkcmF3UXVhZC0+ZHJhd3NPcGFxdWUoKSAmJiBk
cmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKQotICAgICAgICAgICAgb3BhcXVl
Q292ZXJhZ2VUaHVzRmFyLnVuaXRlKFJlZ2lvbihxdWFkUmVjdCkpOworICAgICAgICBpZiAoa2Vl
cFF1YWQgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkgeworICAgICAg
ICAgICAgSW50UmVjdCBvcGFxdWVSZWN0ID0gZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBS
ZWN0KGRyYXdRdWFkLT5vcGFxdWVSZWN0KCkpOworICAgICAgICAgICAgb3BhcXVlQ292ZXJhZ2VU
aHVzRmFyLnVuaXRlKG9wYXF1ZVJlY3QpOworICAgICAgICB9CiAKICAgICAgICAgaWYgKGtlZXBR
dWFkKQogICAgICAgICAgICAgY3VsbGVkTGlzdC5hcHBlbmQocXVhZExpc3RbaV0ucmVsZWFzZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcAppbmRleCBkMWM3Mjlh
NDE1N2RkMjIxNzJiNmM4MzFkNzcwMGNjNDIwYjRlZTZhLi5kYTQ2Nzc2YzZhZmQ4NGEzNjU1MmU1
YzE1YzFmYjU1YzNlODVkMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1
YWQuY3BwCkBAIC0zOCw4ICszOCwxMCBAQCBDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Q0NTb2xpZENv
bG9yRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdAogICAgIDog
Q0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IsIHF1YWRS
ZWN0KQogICAgICwgbV9jb2xvcihjb2xvcikKIHsKLSAgICBpZiAobV9jb2xvci5hbHBoYSgpICE9
IDEpCisgICAgaWYgKG1fY29sb3IuYWxwaGEoKSAhPSAyNTUpCiAgICAgICAgIG1fcXVhZE9wYXF1
ZSA9IGZhbHNlOworICAgIGVsc2UKKyAgICAgICAgbV9vcGFxdWVSZWN0ID0gcXVhZFJlY3Q7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcAppbmRleCBkZjgzMDUwOGEyYzgyY2Ey
NzhiMzVjY2MwMDViM2QwNzlhMWM3ZmM2Li5iMzViNmY2OWYzYzIwMTZmNGUyMzg3NzNmMGRjOTRj
Njk1NmIwMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCkBAIC0yOSwxMiArMjks
MTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDVGlsZURyYXdRdWFk
PiBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1
cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29s
IGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRv
bUVkZ2VBQSkKK1Bhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IENDVGlsZURyYXdRdWFkOjpjcmVh
dGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVj
dCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYg
dGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMs
IGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wg
Ym90dG9tRWRnZUFBKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaWxlRHJhd1F1YWQo
c2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGV4dHVyZUlkLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0
dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgc3dpenpsZUNvbnRlbnRzLCBsZWZ0RWRnZUFBLCB0b3BF
ZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENDVGlsZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJlY3Qs
IHRleHR1cmVJZCwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIHN3
aXp6bGVDb250ZW50cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9t
RWRnZUFBKSk7CiB9CiAKLUNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0
LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29s
IHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCBy
aWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCitDQ1RpbGVEcmF3UXVhZDo6Q0NUaWxlRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6
ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVu
dHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJv
b2wgYm90dG9tRWRnZUFBKQogICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJh
d1F1YWQ6OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCiAgICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJl
SWQpCiAgICAgLCBtX3RleHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkKQEAgLTQ4LDYgKzQ4LDcg
QEAgQ0NUaWxlRHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEkKIHsKICAgICBpZiAoaXNBbnRpYWxpYXNlZCgpKQog
ICAgICAgICBtX25lZWRzQmxlbmRpbmcgPSB0cnVlOworICAgIG1fb3BhcXVlUmVjdCA9IG9wYXF1
ZVJlY3Q7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCmluZGV4IDEyZTUzZGJkMmE4
ZjVkMWZiM2QzMzMxOWIyYzAzMTFlYzUzZjVjYTguLjMzNTAxYTgwNmNmYWZmOTYwZjI0YzZkZDZm
MWM3ODIwYTE1Nzg4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZCA6IHB1YmxpYyBD
Q0RyYXdRdWFkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1RpbGVEcmF3UXVhZCk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IGNyZWF0ZShjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IElu
dFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNv
bnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFB
LCBib29sIGJvdHRvbUVkZ2VBQSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJhd1F1
YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRS
ZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJ
ZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVT
aXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxl
ZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVk
Z2VBQSk7CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dHVyZUlkOyB9CiAgICAgSW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZU9mZnNldDsgfQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0FudGlhbGlhc2VkKCkgY29uc3QgeyByZXR1cm4gbGVmdEVkZ2VBQSgpIHx8IHRvcEVkZ2VB
QSgpIHx8IHJpZ2h0RWRnZUFBKCkgfHwgYm90dG9tRWRnZUFBKCk7IH0KIAogcHJpdmF0ZToKLSAg
ICBDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3Qm
IHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRl
eHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVG
aWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRn
ZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CisgICAgQ0NUaWxlRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
Y29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNv
bnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwg
R0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRn
ZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEp
OwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKICAgICBJbnRQb2ludCBtX3Rl
eHR1cmVPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDU4NDll
ZjFlYjBmMGMzNDhiODdhNDk1MThhNjFjYzYzMzA1ZjkyY2IuLmU0MDhkZDIwZTZiN2MwODkzM2U0
NjAyMmQwZjEzOWQzZTA3NDM3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
CkBAIC01MSw4ICs1MSwxMyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CiAgICAgdm9pZCBzZXRUZXh0dXJl
SWQoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7
IH0KKworICAgIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29w
YXF1ZVJlY3Q7IH0KKyAgICB2b2lkIHNldE9wYXF1ZVJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVl
UmVjdCkgeyBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OyB9CisKIHByaXZhdGU6CiAgICAgUGxh
dGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIH07
CiAKIENDVGlsZWRMYXllckltcGw6OkNDVGlsZWRMYXllckltcGwoaW50IGlkKQpAQCAtMTMyLDcg
KzEzNyw5IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlCiAgICAgICAgICAgICBEcmF3YWJsZVRp
bGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0g
bV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKICAgICAgICAgICAgIEludFJlY3QgZGlzcGxheVJl
Y3QgPSB0aWxlUmVjdDsKKyAgICAgICAgICAgIEludFJlY3QgdGlsZU9wYXF1ZVJlY3QgPSB0aWxl
LT5vcGFxdWVSZWN0KCk7CiAgICAgICAgICAgICB0aWxlUmVjdC5pbnRlcnNlY3QobGF5ZXJSZWN0
KTsKKyAgICAgICAgICAgIHRpbGVPcGFxdWVSZWN0LmludGVyc2VjdChsYXllclJlY3QpOwogCiAg
ICAgICAgICAgICAvLyBTa2lwIGVtcHR5IHRpbGVzLgogICAgICAgICAgICAgaWYgKHRpbGVSZWN0
LmlzRW1wdHkoKSkKQEAgLTE1OSw3ICsxNjYsNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZQog
ICAgICAgICAgICAgYm9vbCBib3R0b21FZGdlQUEgPSBqID09IG1fdGlsZXItPm51bVRpbGVzWSgp
IC0gMSAmJiB1c2VBQTsKIAogICAgICAgICAgICAgY29uc3QgR0MzRGludCB0ZXh0dXJlRmlsdGVy
ID0gbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElORUFS
IDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0gICAgICAgICAgICBxdWFkTGlzdC5hcHBl
bmQoQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0aWxl
LT50ZXh0dXJlSWQoKSwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIs
IGNvbnRlbnRzU3dpenpsZWQoKSwgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwg
Ym90dG9tRWRnZUFBKSk7CisgICAgICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUaWxlRHJhd1F1
YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0aWxlT3BhcXVlUmVjdCwgdGls
ZS0+dGV4dHVyZUlkKCksIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVy
LCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEs
IGJvdHRvbUVkZ2VBQSkpOwogCiAgICAgICAgICAgICBpZiAoaGFzRGVidWdCb3JkZXJzKCkpIHsK
ICAgICAgICAgICAgICAgICBDb2xvciBjb2xvcihkZWJ1Z0JvcmRlckNvbG9yKCkucmVkKCksIGRl
YnVnQm9yZGVyQ29sb3IoKS5ncmVlbigpLCBkZWJ1Z0JvcmRlckNvbG9yKCkuYmx1ZSgpLCBkZWJ1
Z1RpbGVCb3JkZXJBbHBoYSk7CkBAIC0xNzgsMTQgKzE4NSwxNSBAQCB2b2lkIENDVGlsZWRMYXll
ckltcGw6OnNldFRpbGluZ0RhdGEoY29uc3QgQ0NMYXllclRpbGluZ0RhdGEmIHRpbGVyKQogICAg
ICptX3RpbGVyID0gdGlsZXI7CiB9CiAKLXZvaWQgQ0NUaWxlZExheWVySW1wbDo6c3luY1RleHR1
cmVJZChpbnQgaSwgaW50IGosIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKQordm9pZCBDQ1Rp
bGVkTGF5ZXJJbXBsOjpwdXNoVGlsZVByb3BlcnRpZXMoaW50IGksIGludCBqLCBQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKIHsKICAgICBEcmF3
YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAgICAgaWYgKCF0aWxlKQogICAgICAgICB0
aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKICAgICB0aWxlLT5zZXRUZXh0dXJlSWQodGV4dHVyZUlk
KTsKKyAgICB0aWxlLT5zZXRPcGFxdWVSZWN0KG9wYXF1ZVJlY3QpOwogfQogCi19Cit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggNDc4YjAzNDAyMzQ1MDgxOWJiY2Vh
MGE4ZGE1YWQzMjE1NmY1NGJkMi4uN2FkNzE1OTliMjEzNjU4NThhMWM1YTVmN2E5Y2Y0MjQxZWEw
NjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldFNraXBzRHJhdyhib29sIHNraXBzRHJhdykgeyBtX3NraXBz
RHJhdyA9IHNraXBzRHJhdzsgfQogICAgIHZvaWQgc2V0VGlsaW5nRGF0YShjb25zdCBDQ0xheWVy
VGlsaW5nRGF0YSYgdGlsZXIpOwotICAgIHZvaWQgc3luY1RleHR1cmVJZChpbnQsIGludCwgUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpOworICAgIHZvaWQgcHVzaFRpbGVQcm9wZXJ0aWVzKGlu
dCwgaW50LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3BhcXVl
UmVjdCk7CiAKICAgICB2b2lkIHNldENvbnRlbnRzU3dpenpsZWQoYm9vbCBjb250ZW50c1N3aXp6
bGVkKSB7IG1fY29udGVudHNTd2l6emxlZCA9IGNvbnRlbnRzU3dpenpsZWQ7IH0KICAgICBib29s
IGNvbnRlbnRzU3dpenpsZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU3dpenpsZWQ7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAKaW5kZXggNTIyNzg5MjVlMWVhMDk5NjkzYmMzNzU5ZGQ0MWU0MWNkYjMz
YzQyOS4uMDk5NGNiMjJlZTUwMWE1NmNmMzBlOTA1ODg4NmYzYmFkZTE0ZGZmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKQEAgLTE4Nyw4ICsxODcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFw
cGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlKQogICAgIHsKICAgICAgICAgbV9xdWFkc0FwcGVuZGVkID0gdHJ1ZTsK
LSAgICAgICAgCi0gICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0QmxlbmRpbmdEcmF3UXVh
ZCA9IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRSZWN0
KDUsIDUsIDUsIDUpLCBDb2xvcjo6d2hpdGUpOworCisgICAgICAgIENvbG9yIGNvbG9yID0gbV9v
cGFxdWVDb2xvciA/IENvbG9yOjp3aGl0ZSA6IENvbG9yKDAsIDAsIDAsIDApOworICAgICAgICBP
d25QdHI8Q0NEcmF3UXVhZD4gdGVzdEJsZW5kaW5nRHJhd1F1YWQgPSBDQ1NvbGlkQ29sb3JEcmF3
UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdCg1LCA1LCA1LCA1KSwgY29sb3Ip
OwogICAgICAgICBFWFBFQ1RfRVEobV9ibGVuZCwgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPm5lZWRz
QmxlbmRpbmcoKSk7CiAgICAgICAgIEVYUEVDVF9FUShtX2hhc1JlbmRlclN1cmZhY2UsICEhcmVu
ZGVyU3VyZmFjZSgpKTsKICAgICB9CkBAIC0yMDIsMTIgKzIwMywxNSBAQCBwdWJsaWM6CiAKICAg
ICBib29sIHF1YWRzQXBwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3F1YWRzQXBwZW5kZWQ7IH0K
IAorICAgIHZvaWQgc2V0T3BhcXVlQ29sb3IoYm9vbCBvcGFxdWVDb2xvcikgeyBtX29wYXF1ZUNv
bG9yID0gb3BhcXVlQ29sb3I7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCbGVuZFN0YXRl
Q2hlY2tMYXllcihpbnQgaWQpCiAgICAgICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgICAgICwg
bV9ibGVuZChmYWxzZSkKICAgICAgICAgLCBtX2hhc1JlbmRlclN1cmZhY2UoZmFsc2UpCiAgICAg
ICAgICwgbV9xdWFkc0FwcGVuZGVkKGZhbHNlKQorICAgICAgICAsIG1fb3BhcXVlQ29sb3IodHJ1
ZSkKICAgICB7CiAgICAgICAgIHNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAg
ICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKQEAgLTIxNyw2ICsyMjEsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9ibGVuZDsKICAgICBib29sIG1faGFzUmVuZGVyU3VyZmFjZTsKICAg
ICBib29sIG1fcXVhZHNBcHBlbmRlZDsKKyAgICBib29sIG1fb3BhcXVlQ29sb3I7CiB9OwogCiAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODMKQEAgLTIzOCwx
OCArMjQzLDM2IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZX
aGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogICAgIC8vIE9wYXF1ZSBsYXllciwgZHJhd24gd2l0
aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEt
PnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2Us
IGZhbHNlKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUo
bGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworCisgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2Vu
dCBjb250ZW50LCBidXQgc29saWQgY29sb3IgaXMgb3BhcXVlLCBzbyBkcmF3biB3aXRob3V0IGJs
ZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICBsYXllcjEtPnNldE9w
YXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNl
KTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIx
LT5xdWFkc0FwcGVuZGVkKCkpOwogCi0gICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBjb250
ZW50LCBkcmF3biB3aXRoIGJsZW5kaW5nLgorICAgIC8vIExheWVyIHdpdGggdHJhbnNsdWNlbnQg
Y29udGVudCBhbmQgcGFpbnRpbmcsIHNvIGRyYXduIHdpdGggYmxlbmRpbmcuCiAgICAgbGF5ZXIx
LT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IoZmFsc2UpOwog
ICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwt
PmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7
CiAKICAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNpdHksIGRyYXduIHdpdGggYmxl
bmRpbmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFx
dWVDb2xvcih0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsKKyAgICBsYXllcjEt
PnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KCk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworCisgICAgLy8g
TGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5IGFuZCBwYWludGluZywgZHJhd24gd2l0aCBi
bGVuZGluZy4KKyAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9w
YXF1ZUNvbG9yKGZhbHNlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsKICAgICBsYXll
cjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5
ZXJzKCk7CkBAIC0yNjAsOSArMjgzLDExIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogICAgIC8vIDIgb3BhcXVl
IGxheWVycywgZHJhd24gd2l0aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0
cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+c2V0
T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAg
ICAgbGF5ZXIyLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb2xvcih0
cnVlKTsKICAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3Rh
dGlvbihmYWxzZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKQEAgLTI3
MiwxOCArMjk3LDMwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdP
ZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICAvLyBQYXJlbnQgbGF5ZXIgd2l0aCB0cmFu
c2x1Y2VudCBjb250ZW50LCBkcmF3biB3aXRoIGJsZW5kaW5nLgogICAgIC8vIENoaWxkIGxheWVy
IHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCiAgICAgbGF5ZXIx
LT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IoZmFsc2UpOwog
ICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIGxheWVyMi0+c2V0
RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7
CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogICAgIEVYUEVDVF9U
UlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKIAorICAgIC8vIFBhcmVudCBsYXllciB3aXRo
IHRyYW5zbHVjZW50IGNvbnRlbnQgYnV0IG9wYXF1ZSBwYWludGluZywgZHJhd24gd2l0aG91dCBi
bGVuZGluZy4KKyAgICAvLyBDaGlsZCBsYXllciB3aXRoIG9wYXF1ZSBjb250ZW50LCBkcmF3biB3
aXRob3V0IGJsZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICBsYXll
cjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFs
c2UsIGZhbHNlKTsKKyAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7Cisg
ICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVh
ZHNBcHBlbmRlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7
CisKICAgICAvLyBQYXJlbnQgbGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5IGFuZCBvcGFx
dWUgY29udGVudC4gU2luY2UgaXQgaGFzIGEKICAgICAvLyBkcmF3aW5nIGNoaWxkLCBpdCdzIGRy
YXduIHRvIGEgcmVuZGVyIHN1cmZhY2Ugd2hpY2ggY2FycmllcyB0aGUgb3BhY2l0eSwKICAgICAv
LyBzbyBpdCdzIGl0c2VsZiBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIC8vIENoaWxkIGxh
eWVyIHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcgKHBhcmVudCBz
dXJmYWNlCiAgICAgLy8gY2FycmllcyB0aGUgaW5oZXJpdGVkIG9wYWNpdHkpLgogICAgIGxheWVy
MS0+c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAg
ICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihm
YWxzZSwgdHJ1ZSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwpA
QCAtMjk0LDkgKzMzMSwxMSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5k
aW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgLy8gRHJhdyBhZ2FpbiwgYnV0IHdp
dGggY2hpbGQgbm9uLW9wYXF1ZSwgdG8gbWFrZSBzdXJlCiAgICAgLy8gbGF5ZXIxIG5vdCBjdWxs
ZWQuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVD
b2xvcih0cnVlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIxLT5zZXRF
eHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3BhcXVlKHRydWUpOwor
ICAgIGxheWVyMi0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFjaXR5
KDAuNSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7CiAgICAgbV9o
b3N0SW1wbC0+ZHJhd0xheWVycygpOwpAQCAtMzA4LDExICszNDcsMjQgQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQog
ICAgIGxheWVyMS0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZh
bHNlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMi0+
c2V0T3BhcXVlQ29sb3IoZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3BhY2l0eSgxKTsKICAgICBs
YXllcjItPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3
TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogICAg
IEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKKworICAgIC8vIEFuZCB3aGVu
IHRoZSBsYXllciBzYXlzIGl0cyBub3Qgb3BhcXVlIGJ1dCBpcyBwYWludGVkIG9wYXF1ZSwgaXQg
aXMgbm90IGJsZW5kZWQuCisgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIx
LT5zZXRPcGFjaXR5KDEpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNl
KTsKKyAgICBsYXllcjItPnNldE9wYXF1ZShmYWxzZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWVD
b2xvcih0cnVlKTsKKyAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7CisgICAgbGF5ZXIyLT5zZXRF
eHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsK
KyAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CisgICAgRVhQRUNUX1RS
VUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogfQogCiBjbGFzcyBSZXNoYXBlVHJhY2tlckNv
bnRleHQ6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggZWQxNWU2YzEw
ZTFmZTQ2MmM5NDk2ODU2ZGIzOTM0NTY5ZmFiODgxYy4uNWVjYmI1OWM4ZTAzYmZiZjE2NjMwZDAy
ZDg5MTk3MTIxMGMzODhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC0zOCwzNSArMzgsMzYgQEAgY2xhc3MgQ0NRdWFkQ3Vs
bGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIAogY2xhc3MgVGVzdERyYXdRdWFkIDog
cHVibGljIENDRHJhd1F1YWQgewogcHVibGljOgotICAgIFRlc3REcmF3UXVhZChjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0IEludFJlY3QmIHJlY3QpCisg
ICAgVGVzdERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJpYWwg
bSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKICAgICA6
IENDRHJhd1F1YWQoc3RhdGUsIG0sIHJlY3QpCiAgICAgeworICAgICAgICBtX29wYXF1ZVJlY3Qg
PSBvcGFxdWVSZWN0OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRlc3REcmF3UXVh
ZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJpYWwgbSwgY29u
c3QgSW50UmVjdCYgcmVjdCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxUZXN0RHJhd1F1YWQ+IGNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCwgb3BhcXVl
UmVjdCkpOwogICAgIH0KIH07CiAKLXZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3RhdGUqIHJv
b3RTdGF0ZSwgQ0NTaGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVhZExpc3QmIHF1YWRM
aXN0KQordm9pZCBzZXRRdWFkcyhDQ1NoYXJlZFF1YWRTdGF0ZSogcm9vdFN0YXRlLCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogY2hpbGRTdGF0ZSwgQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IEludFJl
Y3QmIGNoaWxkT3BhcXVlUmVjdCA9IEludFJlY3QoKSkKIHsKICAgICBxdWFkTGlzdC5jbGVhcigp
OwogCi0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwg
Q0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUoMTAw
LCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290
U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDAp
LCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFk
OjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50
UG9pbnQoMjAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5k
KFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1
YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6
OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAx
MDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3Rh
dGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEwMCks
IEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6
OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQ
b2ludCgwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQo
VGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQs
IEludFJlY3QoSW50UG9pbnQoMTAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBx
dWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFk
OjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAyMDApLCBJbnRTaXplKDEwMCwg
MTAwKSkpKTsKLQotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGls
ZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoKSwgSW50
U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3Jl
YXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2lu
dCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVz
dERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJ
bnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRM
aXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpU
aWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAw
KSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRl
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgx
MDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERy
YXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJl
Y3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3Qp
KTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBD
Q0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAwKSwgSW50U2l6
ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVz
dERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIElu
dFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJl
Y3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRl
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJ
bnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVu
ZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVu
dCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRP
cGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJv
b3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDIw
MCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3Qu
YXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRD
b250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBj
aGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVh
dGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQo
MjAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworCisgICAg
cXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1
YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSks
IGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNy
ZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9p
bnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBx
dWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVh
ZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAx
MDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVh
ZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJ
bnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7
CiB9CiAKICNkZWZpbmUgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTICAgICAgICAg
ICAgICAgXApAQCAtMTQ2LDYgKzE0Nyw1NCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlm
eUN1bGxDaGlsZExpbmVzVXBCb3R0b21SaWdodCkKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6
ZSgpLCA5dSk7CiB9CiAKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lv
bikKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAgIGNoaWxk
VHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOworCisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEu
MCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NT
aGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOworICAgIEludFJlY3QgY2hp
bGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNoaWxk
UmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAvIDIs
IGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgp
LCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKKyAgICBFWFBF
Q1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1
ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEydSk7
Cit9CisKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbjIpCit7Cisg
ICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCisKKyAgICBjaGlsZFRyYW5zZm9y
bS50cmFuc2xhdGUoNTAsIDEwKTsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9v
dFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUp
OworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVh
ZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNo
aWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNlKTsKKyAgICBJbnRSZWN0IGNoaWxkT3BhcXVl
UmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0LCBjaGlsZFJlY3QueSgp
ICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRSZWN0LndpZHRoKCkgLyAyLCBjaGlsZFJl
Y3QuaGVpZ2h0KCkgKiAzIC8gNCk7CisKKyAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNo
aWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9F
UShxdWFkTGlzdC5zaXplKCksIDEzdSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRR
dWFkcyhxdWFkTGlzdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKK30K
KworVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uQ2hlY2tPdmVyY3Vs
bCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAgIGNoaWxk
VHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNDkpOworCisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEu
MCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NT
aGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOworICAgIEludFJlY3QgY2hp
bGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNoaWxk
UmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAvIDIs
IGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgp
LCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKKyAgICBFWFBF
Q1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1
ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7
Cit9CisKIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhpc0FsaWduZWRRdWFkc0Rv
bnRPY2NsdWRlKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0
LmNwcAppbmRleCBhMmVlYTk0NDBjNDNjMzNjMzhlNDk2ZTM3OGJkYzdjMzMxMmU4M2YzLi4xNzg1
MGYyZjg5Yjc4MzEzZmY3MzQ2ZDAxOWNlZmMxZTZiZjFhY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcApAQCAtNDYs
MTEgKzQ2LDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPENDVGlsZWRMYXllckltcGw+IGNyZWF0ZUxh
eWVyKGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBjb25zdCBJCiAgICAgbGF5ZXItPnNldFRpbGlu
Z0RhdGEoKnRpbGVyKTsKICAgICBsYXllci0+c2V0U2tpcHNEcmF3KGZhbHNlKTsKICAgICBsYXll
ci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwor
ICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKIAogICAgIGludCB0ZXh0dXJlSWQgPSAxOwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGlsZXItPm51bVRpbGVzWCgpOyArK2kpCiAgICAgICAg
IGZvciAoaW50IGogPSAwOyBqIDwgdGlsZXItPm51bVRpbGVzWSgpOyArK2opCi0gICAgICAgICAg
ICBsYXllci0+c3luY1RleHR1cmVJZChpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2JqZWN0
Pih0ZXh0dXJlSWQrKykpOworICAgICAgICAgICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhp
LCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2JqZWN0Pih0ZXh0dXJlSWQrKyksIEludFJlY3Qo
MCwgMCwgMSwgMSkpOwogCiAgICAgcmV0dXJuIGxheWVyLnJlbGVhc2UoKTsKIH0KQEAgLTEzNCw3
ICsxMzUsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVja2VyYm9hcmRpbmcpCiAK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRpbGVzWDsgKytpKQogICAgICAgICBmb3IgKGlu
dCBqID0gMDsgaiA8IG51bVRpbGVzWTsgKytqKQotICAgICAgICAgICAgbGF5ZXItPnN5bmNUZXh0
dXJlSWQoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4oMCkpOworICAgICAgICAg
ICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNE
T2JqZWN0PigwKSwgSW50UmVjdCgpKTsKIAogICAgIC8vIEFsbCBjaGVja2VyYm9hcmRpbmcKICAg
ICB7CkBAIC0xNTUsNyArMTU2LDcgQEAgc3RhdGljIGJvb2wgY29tcGxldGVseUNvbnRhaW5zKGNv
bnN0IFJlZ2lvbiYgY29udGFpbmVyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIHJldHVybiB0
ZXN0ZXIuaXNFbXB0eSgpOwogfQogCi1zdGF0aWMgdm9pZCBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBx
dWFkcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xheWVy
VGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRpb24sIGNvbnN0IElu
dFJlY3QmIHZpc2libGVMYXllclJlY3QpCitzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gZ2V0UXVhZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIEludFNpemUgdGlsZVNpemUsIGNvbnN0
IEludFNpemUmIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9u
IGJvcmRlclRleGVsT3B0aW9uLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KQogewog
ICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXpl
LCBsYXllclNpemUsIGJvcmRlclRleGVsT3B0aW9uKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxh
eWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KTsKQEAgLTE2Myw2ICsxNjQsNyBAQCBzdGF0aWMgdm9p
ZCBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50
U2l6ZSYgbGF5ZXJTaQogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFk
U3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAgbGF5ZXItPmFwcGVu
ZFF1YWRzKHF1YWRzLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgIHJldHVybiBzaGFyZWRR
dWFkU3RhdGUucmVsZWFzZSgpOyAvLyBUaGUgc2hhcmVkIGRhdGEgbXVzdCBiZSBvd25lZCBhcyBs
b25nIGFzIHRoZSBxdWFkIGxpc3QgZXhpc3RzLgogfQogCiAvLyBBbGlnbiB3aXRoIGV4cGVjdGVk
IGFuZCBhY3R1YWwgb3V0cHV0CkBAIC0yMDAsNyArMjAyLDggQEAgc3RhdGljIHZvaWQgY292ZXJh
Z2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRl
eGVsT3AKIAogICAgIEludFNpemUgbGF5ZXJTaXplKDEwMDAsIDEwMDApOwogICAgIENDUXVhZExp
c3QgcXVhZHM7Ci0gICAgZ2V0UXVhZHMocXVhZHMsIEludFNpemUoMTAwLCAxMDApLCBsYXllclNp
emUsIGJvcmRlcnMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdldFF1
YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBib3JkZXJzLCBJbnRSZWN0
KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwogICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVj
dChxdWFkcywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKIH0KIFdJVEhfQU5EX1dJ
VEhPVVRfQk9SREVSX1RFU1QoY292ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMpOwpA
QCAtMjE2LDcgKzIxOSw4IEBAIHN0YXRpYyB2b2lkIGNvdmVyYWdlVmlzaWJsZVJlY3RJbnRlcnNl
Y3RzVGlsZXMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0CiAKICAgICBJbnRTaXpl
IGxheWVyU2l6ZSgyNTAsIDI1MCk7CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRRdWFk
cyhxdWFkcywgSW50U2l6ZSg1MCwgNTApLCBJbnRTaXplKDI1MCwgMjUwKSwgQ0NMYXllclRpbGlu
Z0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICBPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMo
cXVhZHMsIEludFNpemUoNTAsIDUwKSwgSW50U2l6ZSgyNTAsIDI1MCksIENDTGF5ZXJUaWxpbmdE
YXRhOjpOb0JvcmRlclRleGVscywgdmlzaWJsZUxheWVyUmVjdCk7CiAgICAgdmVyaWZ5UXVhZHNF
eGFjdGx5Q292ZXJSZWN0KHF1YWRzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKIH0KIFdJVEhfQU5EX1dJ
VEhPVVRfQk9SREVSX1RFU1QoY292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNUaWxlcyk7CkBA
IC0yMjgsNyArMjMyLDggQEAgc3RhdGljIHZvaWQgY292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2Vj
dHNCb3VuZHMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3AKICAgICBJbnRTaXplIGxh
eWVyU2l6ZSgyMjAsIDIxMCk7CiAgICAgSW50UmVjdCB2aXNpYmxlTGF5ZXJSZWN0KEludFBvaW50
KCksIGxheWVyU2l6ZSk7CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRRdWFkcyhxdWFk
cywgSW50U2l6ZSgxMDAsIDEwMCksIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9y
ZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIEludFNp
emUoMTAwLCAxMDApLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVs
cywgdmlzaWJsZUxheWVyUmVjdCk7CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1
YWRzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKIH0KIFdJVEhfQU5EX1dJVEhPVVRfQk9SREVSX1RFU1Qo
Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNCb3VuZHMpOwpAQCAtMjQwLDcgKzI0NSw4IEBA
IFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIHRleHR1cmVJbmZvRm9yTGF5ZXJOb0JvcmRlcnMp
CiAgICAgSW50U2l6ZSB0aWxlU2l6ZSg1MCwgNTApOwogICAgIEludFNpemUgbGF5ZXJTaXplKDI1
MCwgMjUwKTsKICAgICBDQ1F1YWRMaXN0IHF1YWRzOwotICAgIGdldFF1YWRzKHF1YWRzLCB0aWxl
U2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJl
Y3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCB0aWxlU2l6
ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1
YWRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVF9FUShxdWFkc1tpXS0+bWF0ZXJpYWwo
KSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFkU3RyaW5nIDw8IGk7CkBAIC0yNDks
OCArMjU1LDI2IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIHRleHR1cmVJbmZvRm9yTGF5
ZXJOb0JvcmRlcnMpCiAgICAgICAgIEVYUEVDVF9ORShxdWFkLT50ZXh0dXJlSWQoKSwgMHUpIDw8
IHF1YWRTdHJpbmcgPDwgaTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWQtPnRleHR1cmVPZmZzZXQo
KSwgSW50UG9pbnQoKSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgICAgICBFWFBFQ1RfRVEocXVh
ZC0+dGV4dHVyZVNpemUoKSwgdGlsZVNpemUpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICAgICAg
RVhQRUNUX0VRKEludFJlY3QoMCwgMCwgMSwgMSksIHF1YWQtPm9wYXF1ZVJlY3QoKSkgPDwgcXVh
ZFN0cmluZyA8PCBpOwogICAgIH0KIH0KIAorVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGls
ZU9wYXF1ZVJlY3RGb3JMYXllck5vQm9yZGVycykKK3sKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKKworICAgIEludFNpemUgdGlsZVNpemUoNTAsIDUwKTsK
KyAgICBJbnRTaXplIGxheWVyU2l6ZSgyNTAsIDI1MCk7CisgICAgQ0NRdWFkTGlzdCBxdWFkczsK
KyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0
YXRlID0gZ2V0UXVhZHMocXVhZHMsIHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdE
YXRhOjpOb0JvcmRlclRleGVscywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
QVNTRVJUX0VRKHF1YWRzW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQp
IDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICAgICAgQ0NUaWxlRHJhd1F1YWQqIHF1YWQgPSBzdGF0
aWNfY2FzdDxDQ1RpbGVEcmF3UXVhZCo+KHF1YWRzW2ldLmdldCgpKTsKKworICAgICAgICBFWFBF
Q1RfRVEoSW50UmVjdCgwLCAwLCAxLCAxKSwgcXVhZC0+b3BhcXVlUmVjdCgpKSA8PCBxdWFkU3Ry
aW5nIDw8IGk7CisgICAgfQorfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcAppbmRl
eCBiZGJmN2JiMDkzMDE4YmQ2YTZiMzA3ZmY4YmUzODE0MTVmNThhNjczLi45MjJjOGMxOGVjMjg1
YmRmMTllZTA2MTdhODkzMWU2YzRmZmUzNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcApAQCAtMTM3LDcg
KzEzNyw3IEBAIFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90
UHJlc2VudEFmdGVyTm9uT3BhcXVlUGFpbnQpCiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKLVRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRl
c3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxheWVyV2l0aE9wYXF1ZVBhaW50
KQorVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3RQcmVzZW50Rm9y
T3BhcXVlTGF5ZXJXaXRoT3BhcXVlUGFpbnQpCiB7CiAgICAgUGFpbnRGaWxsT3BhcXVlIGZpbGxP
cGFxdWU7CiAgICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHVwZGF0ZXI7CkBAIC0xNDks
MjEgKzE0OSwyMSBAQCBURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVj
dE5vdFByZXNlbnRGb3JPcGFxdWVMYXllcldpdGhPcGFxdWVQYQogICAgIHVwZGF0ZXIgPSBCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCksIGZh
bHNlKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7CiAgICAgdXBkYXRlci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwg
MSwgJm9wYXF1ZVJlY3QpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCks
IG9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNDAwLCA0MDAp
LCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRl
ciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOwog
ICAgIHVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGUocGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUo
dHJ1ZSk7CiAgICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0
MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwotICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJl
Y3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWlu
dGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSk7
CiAgICAgdXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOwogICAgIHVwZGF0ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZv
cGFxdWVSZWN0KTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFx
dWVSZWN0KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgb3Bh
cXVlUmVjdCk7CiB9CiAKIFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVS
ZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxheWVyV2l0aE5vbk9wYXF1ZVBhaW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123340</attachid>
            <date>2012-01-20 10:18:51 -0800</date>
            <delta_ts>2012-01-20 11:11:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120120131849.patch</filename>
            <type>text/plain</type>
            <size>57401</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzlhMjkyNmUxNDc1MDBh
MWU1YmJmNzEzNWVhMDgyNjEzNzIzNmUwMC4uZWQ4Y2Q4ZjliMWQxNjFlMDdhMmY5NDU5ZDU4NDZl
YzVjOTBjNmI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAxLTIwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDUXVhZEN1bGxlclRlc3QuY3BwIGFuZCBDQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6b3BhcXVlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0JsZW5kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yRHJhd1F1YWQ6OkNDU29saWRDb2xvckRy
YXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdhYmxlVGlsZTo6b3BhcXVlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6OnNldE9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aWxlZExheWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisKIDIwMTItMDEtMTggIEpv
Y2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBb
UXRdIEhhbmRsZSB0aGUgbGF5ZXJzIHZpc2libGUgcmVjdCBjYWxjdWxhdGlvbiBvbiB0aGUgd2Vi
IHByb2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGYxMzJkMTdlY2QyMmJlNzA0
YmViMjgwZjNmYzI2ZGJlMmNmMGQ1NzIuLjMxMjdlMDBiMTZkOTVlYzRjNmEwNmZkYzAzMWE4ZDYx
YTc3ZGQ2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTItMDEtMjAgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBVc2UgcmVnaW9uIHJlcG9ydGVkIHBhaW50ZWQgb3BhcXVlIGZvciBkcmF3IGN1
bGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsZW5k
U3RhdGVDaGVja0xheWVyOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJLaXQ6OkJsZW5kU3Rh
dGVDaGVja0xheWVyOjpzZXRPcGFxdWVDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OkJsZW5kU3Rh
dGVDaGVja0xheWVyOjpCbGVuZFN0YXRlQ2hlY2tMYXllcik6CisgICAgICAgIChXZWJLaXQ6OlRF
U1RfRik6CisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0RHJhd1F1YWQ6OlRlc3REcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0RHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRRdWFkcyk6CisgICAg
ICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpURVNUKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvdmVyYWdlVmlzaWJsZVJlY3RPblRpbGVCb3VuZGFyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvdmVyYWdlVmlzaWJsZVJlY3RJbnRlcnNlY3RzVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNCb3VuZHMpOgorICAgICAgICAqIHRlc3RzL0xh
eWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAy
MDEyLTAxLTE4ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBDbGVhbnVwOiBNb3ZlIGNocm9tZS1zcGVjaWZpYyBmaWxlc3lzdGVtIHR5cGUgaGFuZGxpbmcg
Y29kZSAoZm9yIEZpbGVTeXN0ZW0gQVBJKSB1bmRlciBjaHJvbWl1bSBkaXJlY3RvcnkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXgg
MGQ5N2U1MmFlZGUwZjk4MGFkYTE1ZGUwYTE0YTFkMjhkODZhMWU4OC4uMGU5YTQ1MmQ4ZjNiMjJh
OTM2MjQxYTBkODVkZDdhYjhlMDgxZDg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTgyLDggKzgyLDYgQEAgdm9pZCBCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QKIHsKICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxl
U2l6ZSk7CiAKLSAgICBib29sIGxheWVySXNPcGFxdWUgPSBtX2NhbnZhcy5vcGFxdWUoKTsKLQog
ICAgIG1fY2FudmFzLnJlc2l6ZShjb250ZW50UmVjdC5zaXplKCkpOwogICAgIC8vIEFzc3VtcHRp
b246IGlmIGEgdGlsZXIgaXMgdXNpbmcgYm9yZGVyIHRleGVscywgdGhlbiBpdCBpcyBiZWNhdXNl
IHRoZQogICAgIC8vIGxheWVyIGlzIGxpa2VseSB0byBiZSBmaWx0ZXJlZCBvciB0cmFuc2Zvcm1l
ZC4gQmVjYXVzZSBvZiBpdCBtaWdodCBiZQpAQCAtOTEsMTEgKzg5LDEwIEBAIHZvaWQgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlRleHRPcHRpb24gdGV4
dE9wdGlvbiA9CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3JtQ2FudmFzOjpQYWludGVy
OjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlN1YnBpeGVsVGV4dDsK
ICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWludGVyKCZtX2NhbnZhcywgdGV4
dE9wdGlvbik7Ci0gICAgY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5zZXRUcmFja09wYXF1
ZVJlZ2lvbighbGF5ZXJJc09wYXF1ZSk7CisgICAgY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgp
LT5zZXRUcmFja09wYXF1ZVJlZ2lvbih0cnVlKTsKICAgICBwYWludENvbnRlbnRzKCpjYW52YXNQ
YWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogCi0gICAgaWYg
KCFsYXllcklzT3BhcXVlKQotICAgICAgICAqcmVzdWx0aW5nT3BhcXVlUmVjdCA9IGNhbnZhc1Bh
aW50ZXIuc2tpYUNvbnRleHQoKS0+b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCk7CisgICAgKnJlc3Vs
dGluZ09wYXF1ZVJlY3QgPSBjYW52YXNQYWludGVyLnNraWFDb250ZXh0KCktPm9wYXF1ZVJlZ2lv
bigpLmFzUmVjdCgpOwogfQogCiB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaAppbmRleCAxNzlmZWE2ZTEyYmYxMDNjNWIwNzQzNWNmMjRhM2E0OGY4Y2Q5MzIz
Li4wNDlmZDI0MDgzZjQyNzVjZTUyNmQ2MWI4OGQzZTA1NTU2M2VmMGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRh
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC03MSw4ICs3MSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlz
IGZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbXBvbmVudCBvcmRlciBpbiB0aGUgc2FtcGxlZCB0ZXhl
bC4KICAgICAvLyBJZiB0aGUgZm9ybWF0IGlzIFRleGVsRm9ybWF0QkdSQSwgdmVjNC54IGlzIGJs
dWUgYW5kIHZlYzQueiBpcyByZWQuCiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2Ft
cGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpID0gMDsKLSAgICAvLyBUaGUg
fHJlc3VsdGluZ09wYXF1ZVJlY3R8IGdpdmVzIGJhY2sgYSByZWdpb24gb2YgdGhlIGxheWVyIHRo
YXQgd2FzIHBhaW50ZWQgb3BhcXVlLiBJZiB0aGUgbGF5ZXIgaXMgbWFya2VkIG9wYXF1ZSBpbiB0
aGUgdXBkYXRlciwKLSAgICAvLyB0aGVuIHRoaXMgcmVnaW9uIHNob3VsZCBiZSBpZ25vcmVkIGlu
IHByZWZlcmVuY2UgZm9yIHRoZSBlbnRpcmUgbGF5ZXIncyBhcmVhLgorICAgIC8vIFRoZSB8cmVz
dWx0aW5nT3BhcXVlUmVjdHwgZ2l2ZXMgYmFjayBhIHJlZ2lvbiBvZiB0aGUgbGF5ZXIgdGhhdCB3
YXMgcGFpbnRlZCBvcGFxdWUuCiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUg
Ki8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRSZWN0KiAvKiByZXN1bHRpbmdPcGFx
dWVSZWN0ICovKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAwZDk3NGZhNjNhNDQ1N2Q5ZWFjN2M4Yjg3M2Y3
ZTkxYTRkMjY4NDNiLi5jOWRhYjcyZjEzMmU4ZDliYjkzYWIwODU3YzFkNzA1NTAxZDNlY2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcApAQCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKICAgICA6IENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikKLSAgICAsIG1fbGF5ZXJJc09wYXF1ZShm
YWxzZSkKIHsKIH0KIApAQCAtNTQsMTMgKzUzLDEyIEBAIHZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
CiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZyhjb250ZW50
UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgUGxhdGZvcm1Db250ZXh0
U2tpYSBwbGF0Zm9ybUNvbnRleHQoY2FudmFzKTsKICAgICBwbGF0Zm9ybUNvbnRleHQuc2V0RGVm
ZXJyZWQodHJ1ZSk7Ci0gICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3BhcXVlUmVnaW9uKCFt
X2xheWVySXNPcGFxdWUpOworICAgIHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lv
bih0cnVlKTsKICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZwbGF0Zm9ybUNv
bnRleHQpOwogICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCwg
Y29udGVudHNTY2FsZSk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOwogCi0gICAgaWYg
KCFtX2xheWVySXNPcGFxdWUpCi0gICAgICAgICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0gcGxhdGZv
cm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpOworICAgICpyZXN1bHRpbmdPcGFxdWVS
ZWN0ID0gcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpOwogfQogCiB2b2lk
IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmRyYXdQaWN0dXJlKFNrQ2FudmFz
KiBjYW52YXMpCkBAIC02OSwxMSArNjcsNiBAQCB2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OmRyYXdQaWN0dXJlKFNrQ2FudmFzKiBjYW52YXMpCiAgICAgY2FudmFzLT5k
cmF3UGljdHVyZShtX3BpY3R1cmUpOwogfQogCi12b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKLXsKLSAgICBtX2xheWVySXNPcGFx
dWUgPSBvcGFxdWU7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICNlbmRpZiAvLyBVU0Uo
U0tJQSkKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggN2Zj
YzYwNTlmOTBlN2Q5ZDFjMzAxYmYyYTcwZjUxNTJhNDkyN2IwMC4uZTc3ZWUzMDk0NjNhMDRiNzRh
MGE5MzlhNjIxNzJkZmI5Y2E5NTI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNTQsMTMgKzU0LDkgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBj
b250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKICAgICB2b2lkIGRy
YXdQaWN0dXJlKFNrQ2FudmFzKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wp
OwotCiBwcml2YXRlOgogICAgIC8vIFJlY29yZGluZyBjYW52YXMuCiAgICAgU2tQaWN0dXJlIG1f
cGljdHVyZTsKLSAgICAvLyBUcnVlIHdoZW4gaXQgaXMga25vd24gdGhhdCBhbGwgb3V0cHV0IHBp
eGVscyB3aWxsIGJlIG9wYXF1ZS4KLSAgICBib29sIG1fbGF5ZXJJc09wYXF1ZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4
IDcxM2I0ZTBmMjEzYjM2ZDc5NmE0MzEzNDI2MmNiMGY2MGNiMDZiODcuLmRkMzMwMTc3ZDJiYjY2
ZWE0Y2JkNjRmZjYwNzY4NmVhYTMyODFlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IG1fZGlydHlSZWN0
OwogICAgIEludFJlY3QgbV91cGRhdGVSZWN0OworICAgIEludFJlY3QgbV9vcGFxdWVSZWN0Owog
cHJpdmF0ZToKICAgICBPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gbV90ZXh0
dXJlOwogfTsKQEAgLTI3Miw3ICsyNzMsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgICAgIGlmICh0aWxlLT5pc0Rp
cnR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB0aWxlZExheWVyLT5zeW5j
VGV4dHVyZUlkKGksIGosIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAg
ICAgICAgdGlsZWRMYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHRpbGUtPm1hbmFnZWRU
ZXh0dXJlKCktPnRleHR1cmVJZCgpLCB0aWxlLT5tX29wYXF1ZVJlY3QpOwogICAgIH0KIH0KIApA
QCAtNDEyLDggKzQxMyw4IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAvLyBIb3dldmVy
LCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVu
dGlsIHRoZSBwYWludCBmaW5pc2hlcywKICAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJl
bmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxl
dGVzLgogICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVw
ZGF0ZXIoKSk7Ci0gICAgSW50UmVjdCBvcGFxdWVSZWN0OyAvLyBGSVhNRTogdW51c2VkLiByZW1v
dmUgdGhpcyBhbmQgc3RvcmUgaW4gdGhlIGxheWVyIHRvIHBhc3MgdG8gaW1wbCBmb3IgZHJhdyBj
dWxsaW5nCi0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0
LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVu
dHNTY2FsZSgpLCAmb3BhcXVlUmVjdCk7CisgICAgSW50UmVjdCBwYWludGVkT3BhcXVlUmVjdDsK
KyAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGls
ZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxl
KCksICZwYWludGVkT3BhcXVlUmVjdCk7CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0
b207ICsraikgewogICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7
CiAgICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwpAQCAtNDIy
LDEyICs0MjMsMjIgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRp
bGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgaWYgKCF0
aWxlKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKKyAgICAgICAgICAgIEludFJlY3QgdGls
ZVJlY3QgPSBtX3RpbGVyLT50aWxlQm91bmRzKGksIGopOworCisgICAgICAgICAgICAvLyBTYXZl
IHdoYXQgd2FzIHBhaW50ZWQgb3BhcXVlIGluIHRoZSB0aWxlLiBJZiBldmVyeXRoaW5nIHBhaW50
ZWQgaW4gdGhlIHRpbGUgd2FzIG9wYXF1ZSwgYW5kIHRoZSBhcmVhIGlzIGEgc3Vic2V0IG9mIGFu
CisgICAgICAgICAgICAvLyBhbHJlYWR5IG9wYXF1ZSBhcmVhLCBrZWVwIHRoZSBvbGQgYXJlYS4K
KyAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRSZWN0ID0gaW50ZXJzZWN0aW9uKHRpbGVS
ZWN0LCBtX3BhaW50UmVjdCk7CisgICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVkT3BhcXVl
UmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgcGFpbnRlZE9wYXF1ZVJlY3QpOworICAgICAg
ICAgICAgaWYgKHRpbGVQYWludGVkT3BhcXVlUmVjdCAhPSB0aWxlUGFpbnRlZFJlY3QgfHwgIXRp
bGUtPm1fb3BhcXVlUmVjdC5jb250YWlucyh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QpKQorICAgICAg
ICAgICAgICAgIHRpbGUtPm1fb3BhcXVlUmVjdCA9IHRpbGVQYWludGVkT3BhcXVlUmVjdDsKKwog
ICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVjdCBhcyBjb3B5QW5kQ2xlYXJEaXJ0eSBhYm92
ZSBtb3ZlZCB0aGUgZXhpc3RpbmcgZGlydHkgcmVjdCB0byBtX3VwZGF0ZVJlY3QuCiAgICAgICAg
ICAgICBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QgPSB0aWxlLT5tX3VwZGF0ZVJlY3Q7CiAgICAg
ICAgICAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gbV90aWxlci0+dGlsZVJlY3Qo
dGlsZSk7CisgICAgICAgICAgICBJbnRSZWN0IGZpeGVkU2l6ZVRpbGVSZWN0V2l0aEJvcmRlcnMg
PSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKKyAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVj
dCA9IGZpeGVkU2l6ZVRpbGVSZWN0V2l0aEJvcmRlcnM7CiAgICAgICAgICAgICBzb3VyY2VSZWN0
LmludGVyc2VjdChkaXJ0eVJlY3QpOwogICAgICAgICAgICAgLy8gUGFpbnQgcmVjdCBub3QgZ3Vh
cmFudGVlZCB0byBsaW5lIHVwIG9uIHRpbGUgYm91bmRhcmllcywgc28KICAgICAgICAgICAgIC8v
IG1ha2Ugc3VyZSB0aGF0IHNvdXJjZVJlY3QgZG9lc24ndCBleHRlbmQgb3V0c2lkZSBvZiBpdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRHJhd1F1YWQuaAppbmRleCBhY2M3YzAyODY2Y2M4OTU5MzE1MTk2YjNiODM4ZDA4ODZi
NTFjNmRlLi41NjU2MzUxODhjNjI1MWQ0MzMyMGY0Yjg1ZDg5ZWIxZDRmYmYyMjY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdR
dWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5oCkBAIC01MSw5ICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmxheWVyUmVj
dCgpOyB9CiAgICAgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3No
YXJlZFF1YWRTdGF0ZS0+Y2xpcFJlY3QoKTsgfQogICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7
IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+b3BhY2l0eSgpOyB9Ci0gICAgLy8gRm9yIHRoZSBw
dXJwb3NlcyBvZiBjdWxsaW5nLCBhcmUgdGhlIGNvbnRlbnRzIG9mIHRoaXMgcXVhZCBvcGFxdWU/
Ci0gICAgYm9vbCBkcmF3c09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRl
LT5pc09wYXF1ZSgpICYmIG1fcXVhZE9wYXF1ZSAmJiBvcGFjaXR5KCkgPT0gMTsgfQotICAgIGJv
b2wgbmVlZHNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3NoYXJlZFF1YWRTdGF0ZS0+aXNP
cGFxdWUoKSB8fCBtX25lZWRzQmxlbmRpbmcgfHwgb3BhY2l0eSgpICE9IDE7IH0KKyAgICAvLyBG
b3IgdGhlIHB1cnBvc2VzIG9mIGN1bGxpbmcsIHdoYXQgcGFydCBvZiB0aGUgY29udGVudHMgb2Yg
dGhpcyBxdWFkIGFyZSBvcGFxdWU/CisgICAgSW50UmVjdCBvcGFxdWVSZWN0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIGlmIChvcGFjaXR5KCkgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBJbnRS
ZWN0KCk7CisgICAgICAgIGlmIChtX3NoYXJlZFF1YWRTdGF0ZS0+aXNPcGFxdWUoKSAmJiBtX3F1
YWRPcGFxdWUpCisgICAgICAgICAgICByZXR1cm4gbV9xdWFkUmVjdDsKKyAgICAgICAgcmV0dXJu
IG1fb3BhcXVlUmVjdDsKKyAgICB9CisgICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZWVkc0JsZW5kaW5nIHx8IG9wYXF1ZVJlY3QoKSAhPSBtX3F1YWRSZWN0OyB9CiAg
ICAgYm9vbCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFy
ZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKTsgfQogCiAgICAgZW51bSBN
YXRlcmlhbCB7CkBAIC05MCw2ICs5NywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gdmFyaWFibGVz
LgogICAgIGJvb2wgbV9xdWFkT3BhcXVlOwogICAgIGJvb2wgbV9uZWVkc0JsZW5kaW5nOworCisg
ICAgLy8gQmUgZGVmYXVsdCwgdGhpcyByZWN0IGlzIGVtcHR5LiBJdCBpcyB1c2VkIHdoZW4gdGhl
IHNoYXJlZCBxdWFkIHN0YXRlIGFuZCBhYm92ZQorICAgIC8vIHZhcmlhYmxlcyBkZXRlcm1pbmUg
dGhhdCB0aGUgcXVhZCBpcyBub3QgZnVsbHkgb3BhcXVlIGJ1dCBtYXkgYmUgcGFydGlhbGx5IG9w
YXF1ZS4KKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuY3BwCmluZGV4IDA3OWFhN2ZmNmIzMWIxYjQ2ZjJjMjlmYTcxZjVmNzQ4OGI0YmI5MDku
LmVhN2EyMmU1ZWVmMDQ5YWFlOTdkOWNiMzkwMTgxMWYwZThhODEyMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmNwcApAQCAtNzcsOCArNzcsMTAgQEAgdm9pZCBDQ1F1YWRDdWxsZXI6OmN1bGxP
Y2NsdWRlZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0KQogCiAgICAgICAgIGJvb2wga2VlcFF1
YWQgPSAhcmVnaW9uQ29udGFpbnNSZWN0KG9wYXF1ZUNvdmVyYWdlVGh1c0ZhciwgcXVhZFJlY3Qp
OwogCi0gICAgICAgIGlmIChrZWVwUXVhZCAmJiBkcmF3UXVhZC0+ZHJhd3NPcGFxdWUoKSAmJiBk
cmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKQotICAgICAgICAgICAgb3BhcXVl
Q292ZXJhZ2VUaHVzRmFyLnVuaXRlKFJlZ2lvbihxdWFkUmVjdCkpOworICAgICAgICBpZiAoa2Vl
cFF1YWQgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkgeworICAgICAg
ICAgICAgSW50UmVjdCBvcGFxdWVSZWN0ID0gZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBS
ZWN0KGRyYXdRdWFkLT5vcGFxdWVSZWN0KCkpOworICAgICAgICAgICAgb3BhcXVlQ292ZXJhZ2VU
aHVzRmFyLnVuaXRlKG9wYXF1ZVJlY3QpOworICAgICAgICB9CiAKICAgICAgICAgaWYgKGtlZXBR
dWFkKQogICAgICAgICAgICAgY3VsbGVkTGlzdC5hcHBlbmQocXVhZExpc3RbaV0ucmVsZWFzZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcAppbmRleCBkMWM3Mjlh
NDE1N2RkMjIxNzJiNmM4MzFkNzcwMGNjNDIwYjRlZTZhLi5kYTQ2Nzc2YzZhZmQ4NGEzNjU1MmU1
YzE1YzFmYjU1YzNlODVkMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1
YWQuY3BwCkBAIC0zOCw4ICszOCwxMCBAQCBDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Q0NTb2xpZENv
bG9yRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdAogICAgIDog
Q0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IsIHF1YWRS
ZWN0KQogICAgICwgbV9jb2xvcihjb2xvcikKIHsKLSAgICBpZiAobV9jb2xvci5hbHBoYSgpICE9
IDEpCisgICAgaWYgKG1fY29sb3IuYWxwaGEoKSAhPSAyNTUpCiAgICAgICAgIG1fcXVhZE9wYXF1
ZSA9IGZhbHNlOworICAgIGVsc2UKKyAgICAgICAgbV9vcGFxdWVSZWN0ID0gcXVhZFJlY3Q7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcAppbmRleCBkZjgzMDUwOGEyYzgyY2Ey
NzhiMzVjY2MwMDViM2QwNzlhMWM3ZmM2Li5iMzViNmY2OWYzYzIwMTZmNGUyMzg3NzNmMGRjOTRj
Njk1NmIwMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCkBAIC0yOSwxMiArMjks
MTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDVGlsZURyYXdRdWFk
PiBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1
cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29s
IGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRv
bUVkZ2VBQSkKK1Bhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IENDVGlsZURyYXdRdWFkOjpjcmVh
dGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVj
dCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYg
dGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMs
IGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wg
Ym90dG9tRWRnZUFBKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaWxlRHJhd1F1YWQo
c2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGV4dHVyZUlkLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0
dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgc3dpenpsZUNvbnRlbnRzLCBsZWZ0RWRnZUFBLCB0b3BF
ZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENDVGlsZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJlY3Qs
IHRleHR1cmVJZCwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIHN3
aXp6bGVDb250ZW50cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9t
RWRnZUFBKSk7CiB9CiAKLUNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0
LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29s
IHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCBy
aWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCitDQ1RpbGVEcmF3UXVhZDo6Q0NUaWxlRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6
ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVu
dHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJv
b2wgYm90dG9tRWRnZUFBKQogICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJh
d1F1YWQ6OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCiAgICAgLCBtX3RleHR1cmVJZCh0ZXh0dXJl
SWQpCiAgICAgLCBtX3RleHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkKQEAgLTQ4LDYgKzQ4LDcg
QEAgQ0NUaWxlRHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEkKIHsKICAgICBpZiAoaXNBbnRpYWxpYXNlZCgpKQog
ICAgICAgICBtX25lZWRzQmxlbmRpbmcgPSB0cnVlOworICAgIG1fb3BhcXVlUmVjdCA9IG9wYXF1
ZVJlY3Q7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCmluZGV4IDEyZTUzZGJkMmE4
ZjVkMWZiM2QzMzMxOWIyYzAzMTFlYzUzZjVjYTguLjMzNTAxYTgwNmNmYWZmOTYwZjI0YzZkZDZm
MWM3ODIwYTE1Nzg4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZCA6IHB1YmxpYyBD
Q0RyYXdRdWFkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1RpbGVEcmF3UXVhZCk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IGNyZWF0ZShjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IElu
dFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNv
bnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFB
LCBib29sIGJvdHRvbUVkZ2VBQSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJhd1F1
YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRS
ZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJ
ZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVT
aXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxl
ZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVk
Z2VBQSk7CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dHVyZUlkOyB9CiAgICAgSW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZU9mZnNldDsgfQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0FudGlhbGlhc2VkKCkgY29uc3QgeyByZXR1cm4gbGVmdEVkZ2VBQSgpIHx8IHRvcEVkZ2VB
QSgpIHx8IHJpZ2h0RWRnZUFBKCkgfHwgYm90dG9tRWRnZUFBKCk7IH0KIAogcHJpdmF0ZToKLSAg
ICBDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3Qm
IHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRl
eHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVG
aWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRn
ZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CisgICAgQ0NUaWxlRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
Y29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNv
bnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwg
R0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRn
ZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEp
OwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKICAgICBJbnRQb2ludCBtX3Rl
eHR1cmVPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDU4NDll
ZjFlYjBmMGMzNDhiODdhNDk1MThhNjFjYzYzMzA1ZjkyY2IuLmU0MDhkZDIwZTZiN2MwODkzM2U0
NjAyMmQwZjEzOWQzZTA3NDM3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
CkBAIC01MSw4ICs1MSwxMyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CiAgICAgdm9pZCBzZXRUZXh0dXJl
SWQoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7
IH0KKworICAgIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX29w
YXF1ZVJlY3Q7IH0KKyAgICB2b2lkIHNldE9wYXF1ZVJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVl
UmVjdCkgeyBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OyB9CisKIHByaXZhdGU6CiAgICAgUGxh
dGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIH07
CiAKIENDVGlsZWRMYXllckltcGw6OkNDVGlsZWRMYXllckltcGwoaW50IGlkKQpAQCAtMTMyLDcg
KzEzNyw5IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlCiAgICAgICAgICAgICBEcmF3YWJsZVRp
bGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0g
bV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKICAgICAgICAgICAgIEludFJlY3QgZGlzcGxheVJl
Y3QgPSB0aWxlUmVjdDsKKyAgICAgICAgICAgIEludFJlY3QgdGlsZU9wYXF1ZVJlY3QgPSB0aWxl
LT5vcGFxdWVSZWN0KCk7CiAgICAgICAgICAgICB0aWxlUmVjdC5pbnRlcnNlY3QobGF5ZXJSZWN0
KTsKKyAgICAgICAgICAgIHRpbGVPcGFxdWVSZWN0LmludGVyc2VjdChsYXllclJlY3QpOwogCiAg
ICAgICAgICAgICAvLyBTa2lwIGVtcHR5IHRpbGVzLgogICAgICAgICAgICAgaWYgKHRpbGVSZWN0
LmlzRW1wdHkoKSkKQEAgLTE1OSw3ICsxNjYsNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZQog
ICAgICAgICAgICAgYm9vbCBib3R0b21FZGdlQUEgPSBqID09IG1fdGlsZXItPm51bVRpbGVzWSgp
IC0gMSAmJiB1c2VBQTsKIAogICAgICAgICAgICAgY29uc3QgR0MzRGludCB0ZXh0dXJlRmlsdGVy
ID0gbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElORUFS
IDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0gICAgICAgICAgICBxdWFkTGlzdC5hcHBl
bmQoQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0aWxl
LT50ZXh0dXJlSWQoKSwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIs
IGNvbnRlbnRzU3dpenpsZWQoKSwgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwg
Ym90dG9tRWRnZUFBKSk7CisgICAgICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUaWxlRHJhd1F1
YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0aWxlT3BhcXVlUmVjdCwgdGls
ZS0+dGV4dHVyZUlkKCksIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVy
LCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEs
IGJvdHRvbUVkZ2VBQSkpOwogCiAgICAgICAgICAgICBpZiAoaGFzRGVidWdCb3JkZXJzKCkpIHsK
ICAgICAgICAgICAgICAgICBDb2xvciBjb2xvcihkZWJ1Z0JvcmRlckNvbG9yKCkucmVkKCksIGRl
YnVnQm9yZGVyQ29sb3IoKS5ncmVlbigpLCBkZWJ1Z0JvcmRlckNvbG9yKCkuYmx1ZSgpLCBkZWJ1
Z1RpbGVCb3JkZXJBbHBoYSk7CkBAIC0xNzgsMTQgKzE4NSwxNSBAQCB2b2lkIENDVGlsZWRMYXll
ckltcGw6OnNldFRpbGluZ0RhdGEoY29uc3QgQ0NMYXllclRpbGluZ0RhdGEmIHRpbGVyKQogICAg
ICptX3RpbGVyID0gdGlsZXI7CiB9CiAKLXZvaWQgQ0NUaWxlZExheWVySW1wbDo6c3luY1RleHR1
cmVJZChpbnQgaSwgaW50IGosIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKQordm9pZCBDQ1Rp
bGVkTGF5ZXJJbXBsOjpwdXNoVGlsZVByb3BlcnRpZXMoaW50IGksIGludCBqLCBQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKIHsKICAgICBEcmF3
YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAgICAgaWYgKCF0aWxlKQogICAgICAgICB0
aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKICAgICB0aWxlLT5zZXRUZXh0dXJlSWQodGV4dHVyZUlk
KTsKKyAgICB0aWxlLT5zZXRPcGFxdWVSZWN0KG9wYXF1ZVJlY3QpOwogfQogCi19Cit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggNDc4YjAzNDAyMzQ1MDgxOWJiY2Vh
MGE4ZGE1YWQzMjE1NmY1NGJkMi4uN2FkNzE1OTliMjEzNjU4NThhMWM1YTVmN2E5Y2Y0MjQxZWEw
NjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldFNraXBzRHJhdyhib29sIHNraXBzRHJhdykgeyBtX3NraXBz
RHJhdyA9IHNraXBzRHJhdzsgfQogICAgIHZvaWQgc2V0VGlsaW5nRGF0YShjb25zdCBDQ0xheWVy
VGlsaW5nRGF0YSYgdGlsZXIpOwotICAgIHZvaWQgc3luY1RleHR1cmVJZChpbnQsIGludCwgUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpOworICAgIHZvaWQgcHVzaFRpbGVQcm9wZXJ0aWVzKGlu
dCwgaW50LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3BhcXVl
UmVjdCk7CiAKICAgICB2b2lkIHNldENvbnRlbnRzU3dpenpsZWQoYm9vbCBjb250ZW50c1N3aXp6
bGVkKSB7IG1fY29udGVudHNTd2l6emxlZCA9IGNvbnRlbnRzU3dpenpsZWQ7IH0KICAgICBib29s
IGNvbnRlbnRzU3dpenpsZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU3dpenpsZWQ7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAKaW5kZXggNTIyNzg5MjVlMWVhMDk5NjkzYmMzNzU5ZGQ0MWU0MWNkYjMz
YzQyOS4uMDk5NGNiMjJlZTUwMWE1NmNmMzBlOTA1ODg4NmYzYmFkZTE0ZGZmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKQEAgLTE4Nyw4ICsxODcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFw
cGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
c2hhcmVkUXVhZFN0YXRlKQogICAgIHsKICAgICAgICAgbV9xdWFkc0FwcGVuZGVkID0gdHJ1ZTsK
LSAgICAgICAgCi0gICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0QmxlbmRpbmdEcmF3UXVh
ZCA9IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRSZWN0
KDUsIDUsIDUsIDUpLCBDb2xvcjo6d2hpdGUpOworCisgICAgICAgIENvbG9yIGNvbG9yID0gbV9v
cGFxdWVDb2xvciA/IENvbG9yOjp3aGl0ZSA6IENvbG9yKDAsIDAsIDAsIDApOworICAgICAgICBP
d25QdHI8Q0NEcmF3UXVhZD4gdGVzdEJsZW5kaW5nRHJhd1F1YWQgPSBDQ1NvbGlkQ29sb3JEcmF3
UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdCg1LCA1LCA1LCA1KSwgY29sb3Ip
OwogICAgICAgICBFWFBFQ1RfRVEobV9ibGVuZCwgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPm5lZWRz
QmxlbmRpbmcoKSk7CiAgICAgICAgIEVYUEVDVF9FUShtX2hhc1JlbmRlclN1cmZhY2UsICEhcmVu
ZGVyU3VyZmFjZSgpKTsKICAgICB9CkBAIC0yMDIsMTIgKzIwMywxNSBAQCBwdWJsaWM6CiAKICAg
ICBib29sIHF1YWRzQXBwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3F1YWRzQXBwZW5kZWQ7IH0K
IAorICAgIHZvaWQgc2V0T3BhcXVlQ29sb3IoYm9vbCBvcGFxdWVDb2xvcikgeyBtX29wYXF1ZUNv
bG9yID0gb3BhcXVlQ29sb3I7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCbGVuZFN0YXRl
Q2hlY2tMYXllcihpbnQgaWQpCiAgICAgICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgICAgICwg
bV9ibGVuZChmYWxzZSkKICAgICAgICAgLCBtX2hhc1JlbmRlclN1cmZhY2UoZmFsc2UpCiAgICAg
ICAgICwgbV9xdWFkc0FwcGVuZGVkKGZhbHNlKQorICAgICAgICAsIG1fb3BhcXVlQ29sb3IodHJ1
ZSkKICAgICB7CiAgICAgICAgIHNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAg
ICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKQEAgLTIxNyw2ICsyMjEsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9ibGVuZDsKICAgICBib29sIG1faGFzUmVuZGVyU3VyZmFjZTsKICAg
ICBib29sIG1fcXVhZHNBcHBlbmRlZDsKKyAgICBib29sIG1fb3BhcXVlQ29sb3I7CiB9OwogCiAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODMKQEAgLTIzOCwx
OCArMjQzLDM2IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZX
aGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogICAgIC8vIE9wYXF1ZSBsYXllciwgZHJhd24gd2l0
aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEt
PnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2Us
IGZhbHNlKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUo
bGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworCisgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2Vu
dCBjb250ZW50LCBidXQgc29saWQgY29sb3IgaXMgb3BhcXVlLCBzbyBkcmF3biB3aXRob3V0IGJs
ZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICBsYXllcjEtPnNldE9w
YXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNl
KTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIx
LT5xdWFkc0FwcGVuZGVkKCkpOwogCi0gICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBjb250
ZW50LCBkcmF3biB3aXRoIGJsZW5kaW5nLgorICAgIC8vIExheWVyIHdpdGggdHJhbnNsdWNlbnQg
Y29udGVudCBhbmQgcGFpbnRpbmcsIHNvIGRyYXduIHdpdGggYmxlbmRpbmcuCiAgICAgbGF5ZXIx
LT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IoZmFsc2UpOwog
ICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwt
PmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7
CiAKICAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNpdHksIGRyYXduIHdpdGggYmxl
bmRpbmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFx
dWVDb2xvcih0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsKKyAgICBsYXllcjEt
PnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KCk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworCisgICAgLy8g
TGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5IGFuZCBwYWludGluZywgZHJhd24gd2l0aCBi
bGVuZGluZy4KKyAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9w
YXF1ZUNvbG9yKGZhbHNlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsKICAgICBsYXll
cjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5
ZXJzKCk7CkBAIC0yNjAsOSArMjgzLDExIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogICAgIC8vIDIgb3BhcXVl
IGxheWVycywgZHJhd24gd2l0aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0
cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+c2V0
T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAg
ICAgbGF5ZXIyLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb2xvcih0
cnVlKTsKICAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3Rh
dGlvbihmYWxzZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKQEAgLTI3
MiwxOCArMjk3LDMwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdP
ZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICAvLyBQYXJlbnQgbGF5ZXIgd2l0aCB0cmFu
c2x1Y2VudCBjb250ZW50LCBkcmF3biB3aXRoIGJsZW5kaW5nLgogICAgIC8vIENoaWxkIGxheWVy
IHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCiAgICAgbGF5ZXIx
LT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IoZmFsc2UpOwog
ICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIGxheWVyMi0+c2V0
RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7
CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogICAgIEVYUEVDVF9U
UlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKIAorICAgIC8vIFBhcmVudCBsYXllciB3aXRo
IHRyYW5zbHVjZW50IGNvbnRlbnQgYnV0IG9wYXF1ZSBwYWludGluZywgZHJhd24gd2l0aG91dCBi
bGVuZGluZy4KKyAgICAvLyBDaGlsZCBsYXllciB3aXRoIG9wYXF1ZSBjb250ZW50LCBkcmF3biB3
aXRob3V0IGJsZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICBsYXll
cjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFs
c2UsIGZhbHNlKTsKKyAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7Cisg
ICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVh
ZHNBcHBlbmRlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7
CisKICAgICAvLyBQYXJlbnQgbGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5IGFuZCBvcGFx
dWUgY29udGVudC4gU2luY2UgaXQgaGFzIGEKICAgICAvLyBkcmF3aW5nIGNoaWxkLCBpdCdzIGRy
YXduIHRvIGEgcmVuZGVyIHN1cmZhY2Ugd2hpY2ggY2FycmllcyB0aGUgb3BhY2l0eSwKICAgICAv
LyBzbyBpdCdzIGl0c2VsZiBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIC8vIENoaWxkIGxh
eWVyIHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcgKHBhcmVudCBz
dXJmYWNlCiAgICAgLy8gY2FycmllcyB0aGUgaW5oZXJpdGVkIG9wYWNpdHkpLgogICAgIGxheWVy
MS0+c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAg
ICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihm
YWxzZSwgdHJ1ZSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwpA
QCAtMjk0LDkgKzMzMSwxMSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5k
aW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgLy8gRHJhdyBhZ2FpbiwgYnV0IHdp
dGggY2hpbGQgbm9uLW9wYXF1ZSwgdG8gbWFrZSBzdXJlCiAgICAgLy8gbGF5ZXIxIG5vdCBjdWxs
ZWQuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVD
b2xvcih0cnVlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIxLT5zZXRF
eHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3BhcXVlKHRydWUpOwor
ICAgIGxheWVyMi0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFjaXR5
KDAuNSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7CiAgICAgbV9o
b3N0SW1wbC0+ZHJhd0xheWVycygpOwpAQCAtMzA4LDExICszNDcsMjQgQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQog
ICAgIGxheWVyMS0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZh
bHNlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMi0+
c2V0T3BhcXVlQ29sb3IoZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3BhY2l0eSgxKTsKICAgICBs
YXllcjItPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3
TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogICAg
IEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKKworICAgIC8vIEFuZCB3aGVu
IHRoZSBsYXllciBzYXlzIGl0cyBub3Qgb3BhcXVlIGJ1dCBpcyBwYWludGVkIG9wYXF1ZSwgaXQg
aXMgbm90IGJsZW5kZWQuCisgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIx
LT5zZXRPcGFjaXR5KDEpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNl
KTsKKyAgICBsYXllcjItPnNldE9wYXF1ZShmYWxzZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWVD
b2xvcih0cnVlKTsKKyAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7CisgICAgbGF5ZXIyLT5zZXRF
eHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsK
KyAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CisgICAgRVhQRUNUX1RS
VUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogfQogCiBjbGFzcyBSZXNoYXBlVHJhY2tlckNv
bnRleHQ6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggZWQxNWU2YzEw
ZTFmZTQ2MmM5NDk2ODU2ZGIzOTM0NTY5ZmFiODgxYy4uNWVjYmI1OWM4ZTAzYmZiZjE2NjMwZDAy
ZDg5MTk3MTIxMGMzODhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC0zOCwzNSArMzgsMzYgQEAgY2xhc3MgQ0NRdWFkQ3Vs
bGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIAogY2xhc3MgVGVzdERyYXdRdWFkIDog
cHVibGljIENDRHJhd1F1YWQgewogcHVibGljOgotICAgIFRlc3REcmF3UXVhZChjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0IEludFJlY3QmIHJlY3QpCisg
ICAgVGVzdERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJpYWwg
bSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKICAgICA6
IENDRHJhd1F1YWQoc3RhdGUsIG0sIHJlY3QpCiAgICAgeworICAgICAgICBtX29wYXF1ZVJlY3Qg
PSBvcGFxdWVSZWN0OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRlc3REcmF3UXVh
ZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJpYWwgbSwgY29u
c3QgSW50UmVjdCYgcmVjdCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxUZXN0RHJhd1F1YWQ+IGNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCwgb3BhcXVl
UmVjdCkpOwogICAgIH0KIH07CiAKLXZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3RhdGUqIHJv
b3RTdGF0ZSwgQ0NTaGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVhZExpc3QmIHF1YWRM
aXN0KQordm9pZCBzZXRRdWFkcyhDQ1NoYXJlZFF1YWRTdGF0ZSogcm9vdFN0YXRlLCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogY2hpbGRTdGF0ZSwgQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IEludFJl
Y3QmIGNoaWxkT3BhcXVlUmVjdCA9IEludFJlY3QoKSkKIHsKICAgICBxdWFkTGlzdC5jbGVhcigp
OwogCi0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwg
Q0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUoMTAw
LCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290
U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDAp
LCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFk
OjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50
UG9pbnQoMjAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5k
KFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1
YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6
OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAx
MDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3Rh
dGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEwMCks
IEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6
OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQ
b2ludCgwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQo
VGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQs
IEludFJlY3QoSW50UG9pbnQoMTAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBx
dWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFk
OjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAyMDApLCBJbnRTaXplKDEwMCwg
MTAwKSkpKTsKLQotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGls
ZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoKSwgSW50
U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3Jl
YXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2lu
dCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVz
dERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJ
bnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRM
aXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpU
aWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAw
KSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRl
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgx
MDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERy
YXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJl
Y3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3Qp
KTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBD
Q0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAwKSwgSW50U2l6
ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVz
dERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIElu
dFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJl
Y3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRl
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJ
bnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVu
ZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVu
dCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRP
cGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJv
b3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDIw
MCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3Qu
YXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRD
b250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBj
aGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVh
dGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQo
MjAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworCisgICAg
cXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1
YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSks
IGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNy
ZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9p
bnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBx
dWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVh
ZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAx
MDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVh
ZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJ
bnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7
CiB9CiAKICNkZWZpbmUgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTICAgICAgICAg
ICAgICAgXApAQCAtMTQ2LDYgKzE0Nyw1NCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlm
eUN1bGxDaGlsZExpbmVzVXBCb3R0b21SaWdodCkKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6
ZSgpLCA5dSk7CiB9CiAKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lv
bikKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAgIGNoaWxk
VHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOworCisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEu
MCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NT
aGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOworICAgIEludFJlY3QgY2hp
bGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNoaWxk
UmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAvIDIs
IGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgp
LCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKKyAgICBFWFBF
Q1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1
ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEydSk7
Cit9CisKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbjIpCit7Cisg
ICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCisKKyAgICBjaGlsZFRyYW5zZm9y
bS50cmFuc2xhdGUoNTAsIDEwKTsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9v
dFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUp
OworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVh
ZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNo
aWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNlKTsKKyAgICBJbnRSZWN0IGNoaWxkT3BhcXVl
UmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0LCBjaGlsZFJlY3QueSgp
ICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRSZWN0LndpZHRoKCkgLyAyLCBjaGlsZFJl
Y3QuaGVpZ2h0KCkgKiAzIC8gNCk7CisKKyAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNo
aWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9F
UShxdWFkTGlzdC5zaXplKCksIDEzdSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRR
dWFkcyhxdWFkTGlzdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKK30K
KworVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uQ2hlY2tPdmVyY3Vs
bCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAgIGNoaWxk
VHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNDkpOworCisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCksIDEu
MCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0gQ0NT
aGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOworICAgIEludFJlY3QgY2hp
bGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNoaWxk
UmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAvIDIs
IGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgp
LCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKKyAgICBFWFBF
Q1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1
ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7
Cit9CisKIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhpc0FsaWduZWRRdWFkc0Rv
bnRPY2NsdWRlKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0
LmNwcAppbmRleCBhMmVlYTk0NDBjNDNjMzNjMzhlNDk2ZTM3OGJkYzdjMzMxMmU4M2YzLi4xNzg1
MGYyZjg5Yjc4MzEzZmY3MzQ2ZDAxOWNlZmMxZTZiZjFhY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcApAQCAtNDYs
MTEgKzQ2LDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPENDVGlsZWRMYXllckltcGw+IGNyZWF0ZUxh
eWVyKGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBjb25zdCBJCiAgICAgbGF5ZXItPnNldFRpbGlu
Z0RhdGEoKnRpbGVyKTsKICAgICBsYXllci0+c2V0U2tpcHNEcmF3KGZhbHNlKTsKICAgICBsYXll
ci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwor
ICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKIAogICAgIGludCB0ZXh0dXJlSWQgPSAxOwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGlsZXItPm51bVRpbGVzWCgpOyArK2kpCiAgICAgICAg
IGZvciAoaW50IGogPSAwOyBqIDwgdGlsZXItPm51bVRpbGVzWSgpOyArK2opCi0gICAgICAgICAg
ICBsYXllci0+c3luY1RleHR1cmVJZChpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2JqZWN0
Pih0ZXh0dXJlSWQrKykpOworICAgICAgICAgICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhp
LCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2JqZWN0Pih0ZXh0dXJlSWQrKyksIEludFJlY3Qo
MCwgMCwgMSwgMSkpOwogCiAgICAgcmV0dXJuIGxheWVyLnJlbGVhc2UoKTsKIH0KQEAgLTEzNCw3
ICsxMzUsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVja2VyYm9hcmRpbmcpCiAK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRpbGVzWDsgKytpKQogICAgICAgICBmb3IgKGlu
dCBqID0gMDsgaiA8IG51bVRpbGVzWTsgKytqKQotICAgICAgICAgICAgbGF5ZXItPnN5bmNUZXh0
dXJlSWQoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4oMCkpOworICAgICAgICAg
ICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNE
T2JqZWN0PigwKSwgSW50UmVjdCgpKTsKIAogICAgIC8vIEFsbCBjaGVja2VyYm9hcmRpbmcKICAg
ICB7CkBAIC0xNTUsNyArMTU2LDcgQEAgc3RhdGljIGJvb2wgY29tcGxldGVseUNvbnRhaW5zKGNv
bnN0IFJlZ2lvbiYgY29udGFpbmVyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIHJldHVybiB0
ZXN0ZXIuaXNFbXB0eSgpOwogfQogCi1zdGF0aWMgdm9pZCBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBx
dWFkcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xheWVy
VGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRpb24sIGNvbnN0IElu
dFJlY3QmIHZpc2libGVMYXllclJlY3QpCitzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gZ2V0UXVhZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIEludFNpemUgdGlsZVNpemUsIGNvbnN0
IEludFNpemUmIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9u
IGJvcmRlclRleGVsT3B0aW9uLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KQogewog
ICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXpl
LCBsYXllclNpemUsIGJvcmRlclRleGVsT3B0aW9uKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxh
eWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KTsKQEAgLTE2Myw2ICsxNjQsNyBAQCBzdGF0aWMgdm9p
ZCBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50
U2l6ZSYgbGF5ZXJTaQogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFk
U3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAgbGF5ZXItPmFwcGVu
ZFF1YWRzKHF1YWRzLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgIHJldHVybiBzaGFyZWRR
dWFkU3RhdGUucmVsZWFzZSgpOyAvLyBUaGUgc2hhcmVkIGRhdGEgbXVzdCBiZSBvd25lZCBhcyBs
b25nIGFzIHRoZSBxdWFkIGxpc3QgZXhpc3RzLgogfQogCiAvLyBBbGlnbiB3aXRoIGV4cGVjdGVk
IGFuZCBhY3R1YWwgb3V0cHV0CkBAIC0yMDAsNyArMjAyLDggQEAgc3RhdGljIHZvaWQgY292ZXJh
Z2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRl
eGVsT3AKIAogICAgIEludFNpemUgbGF5ZXJTaXplKDEwMDAsIDEwMDApOwogICAgIENDUXVhZExp
c3QgcXVhZHM7Ci0gICAgZ2V0UXVhZHMocXVhZHMsIEludFNpemUoMTAwLCAxMDApLCBsYXllclNp
emUsIGJvcmRlcnMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdldFF1
YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBib3JkZXJzLCBJbnRSZWN0
KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwogICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVj
dChxdWFkcywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKIH0KIFdJVEhfQU5EX1dJ
VEhPVVRfQk9SREVSX1RFU1QoY292ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMpOwpA
QCAtMjE2LDcgKzIxOSw4IEBAIHN0YXRpYyB2b2lkIGNvdmVyYWdlVmlzaWJsZVJlY3RJbnRlcnNl
Y3RzVGlsZXMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0CiAKICAgICBJbnRTaXpl
IGxheWVyU2l6ZSgyNTAsIDI1MCk7CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRRdWFk
cyhxdWFkcywgSW50U2l6ZSg1MCwgNTApLCBJbnRTaXplKDI1MCwgMjUwKSwgQ0NMYXllclRpbGlu
Z0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICBPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMo
cXVhZHMsIEludFNpemUoNTAsIDUwKSwgSW50U2l6ZSgyNTAsIDI1MCksIENDTGF5ZXJUaWxpbmdE
YXRhOjpOb0JvcmRlclRleGVscywgdmlzaWJsZUxheWVyUmVjdCk7CiAgICAgdmVyaWZ5UXVhZHNF
eGFjdGx5Q292ZXJSZWN0KHF1YWRzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKIH0KIFdJVEhfQU5EX1dJ
VEhPVVRfQk9SREVSX1RFU1QoY292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNUaWxlcyk7CkBA
IC0yMjgsNyArMjMyLDggQEAgc3RhdGljIHZvaWQgY292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2Vj
dHNCb3VuZHMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3AKICAgICBJbnRTaXplIGxh
eWVyU2l6ZSgyMjAsIDIxMCk7CiAgICAgSW50UmVjdCB2aXNpYmxlTGF5ZXJSZWN0KEludFBvaW50
KCksIGxheWVyU2l6ZSk7CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRRdWFkcyhxdWFk
cywgSW50U2l6ZSgxMDAsIDEwMCksIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9y
ZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIEludFNp
emUoMTAwLCAxMDApLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVs
cywgdmlzaWJsZUxheWVyUmVjdCk7CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1
YWRzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKIH0KIFdJVEhfQU5EX1dJVEhPVVRfQk9SREVSX1RFU1Qo
Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNCb3VuZHMpOwpAQCAtMjQwLDcgKzI0NSw4IEBA
IFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIHRleHR1cmVJbmZvRm9yTGF5ZXJOb0JvcmRlcnMp
CiAgICAgSW50U2l6ZSB0aWxlU2l6ZSg1MCwgNTApOwogICAgIEludFNpemUgbGF5ZXJTaXplKDI1
MCwgMjUwKTsKICAgICBDQ1F1YWRMaXN0IHF1YWRzOwotICAgIGdldFF1YWRzKHF1YWRzLCB0aWxl
U2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJl
Y3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCB0aWxlU2l6
ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1
YWRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVF9FUShxdWFkc1tpXS0+bWF0ZXJpYWwo
KSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFkU3RyaW5nIDw8IGk7CkBAIC0yNDks
OCArMjU1LDI2IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIHRleHR1cmVJbmZvRm9yTGF5
ZXJOb0JvcmRlcnMpCiAgICAgICAgIEVYUEVDVF9ORShxdWFkLT50ZXh0dXJlSWQoKSwgMHUpIDw8
IHF1YWRTdHJpbmcgPDwgaTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWQtPnRleHR1cmVPZmZzZXQo
KSwgSW50UG9pbnQoKSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgICAgICBFWFBFQ1RfRVEocXVh
ZC0+dGV4dHVyZVNpemUoKSwgdGlsZVNpemUpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICAgICAg
RVhQRUNUX0VRKEludFJlY3QoMCwgMCwgMSwgMSksIHF1YWQtPm9wYXF1ZVJlY3QoKSkgPDwgcXVh
ZFN0cmluZyA8PCBpOwogICAgIH0KIH0KIAorVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGls
ZU9wYXF1ZVJlY3RGb3JMYXllck5vQm9yZGVycykKK3sKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKKworICAgIEludFNpemUgdGlsZVNpemUoNTAsIDUwKTsK
KyAgICBJbnRTaXplIGxheWVyU2l6ZSgyNTAsIDI1MCk7CisgICAgQ0NRdWFkTGlzdCBxdWFkczsK
KyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0
YXRlID0gZ2V0UXVhZHMocXVhZHMsIHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdE
YXRhOjpOb0JvcmRlclRleGVscywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
QVNTRVJUX0VRKHF1YWRzW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQp
IDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICAgICAgQ0NUaWxlRHJhd1F1YWQqIHF1YWQgPSBzdGF0
aWNfY2FzdDxDQ1RpbGVEcmF3UXVhZCo+KHF1YWRzW2ldLmdldCgpKTsKKworICAgICAgICBFWFBF
Q1RfRVEoSW50UmVjdCgwLCAwLCAxLCAxKSwgcXVhZC0+b3BhcXVlUmVjdCgpKSA8PCBxdWFkU3Ry
aW5nIDw8IGk7CisgICAgfQorfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcAppbmRl
eCBiZGJmN2JiMDkzMDE4YmQ2YTZiMzA3ZmY4YmUzODE0MTVmNThhNjczLi45MjJjOGMxOGVjMjg1
YmRmMTllZTA2MTdhODkzMWU2YzRmZmUzNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcApAQCAtMTM3LDcg
KzEzNyw3IEBAIFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90
UHJlc2VudEFmdGVyTm9uT3BhcXVlUGFpbnQpCiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKLVRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRl
c3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxheWVyV2l0aE9wYXF1ZVBhaW50
KQorVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3RQcmVzZW50Rm9y
T3BhcXVlTGF5ZXJXaXRoT3BhcXVlUGFpbnQpCiB7CiAgICAgUGFpbnRGaWxsT3BhcXVlIGZpbGxP
cGFxdWU7CiAgICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHVwZGF0ZXI7CkBAIC0xNDks
MjEgKzE0OSwyMSBAQCBURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVj
dE5vdFByZXNlbnRGb3JPcGFxdWVMYXllcldpdGhPcGFxdWVQYQogICAgIHVwZGF0ZXIgPSBCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCksIGZh
bHNlKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7CiAgICAgdXBkYXRlci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwg
MSwgJm9wYXF1ZVJlY3QpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCks
IG9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNDAwLCA0MDAp
LCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRl
ciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOwog
ICAgIHVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGUocGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUo
dHJ1ZSk7CiAgICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0
MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwotICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJl
Y3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWlu
dGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSk7
CiAgICAgdXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOwogICAgIHVwZGF0ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZv
cGFxdWVSZWN0KTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFx
dWVSZWN0KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgb3Bh
cXVlUmVjdCk7CiB9CiAKIFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVS
ZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxheWVyV2l0aE5vbk9wYXF1ZVBhaW50KQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI2
NzgwYzBhMDc4YTA0OGMxYTliZjkyNzgzYmI2YzY4NWQzN2ZmOGUuLmMwMmZmZmYxOTVmZWVjMzNh
MzRkOGRjYjkzODc5OTkxMjU4NTA5MGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMS0y
MCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIFVzZSByZWdpb24gcmVwb3J0ZWQgcGFpbnRlZCBvcGFxdWUgZm9yIGRyYXcgY3VsbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtLWxpbnV4L2NvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWluLWNvbXBvc2l0ZWQt
bGF5ZXItZXhwZWN0ZWQucG5nOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLW1hYy1sZW9w
YXJkL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXIt
ZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLW1hYy1z
bm93bGVvcGFyZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVk
LWxheWVyLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS13aW4vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXll
ci1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3Rl
ZC5wbmc6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9m
YXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVj
dGVkLnBuZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3JlcGFpbnQvYmxvY2st
c2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3JlcGFpbnQvYmxvY2st
c2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnR4dC4KKwogMjAxMi0w
MS0xOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgR1RLIGdhcmRlbmluZyBza2lwcGluZyAzIG5ldyB0ZXN0IGZhaWx1cmVzLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY29tcG9zaXRp
bmcvaWZyYW1lcy9pZnJhbWUtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFt
ZS1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZwppbmRleCAxZDZmMDNlMTg5N2E4NTVk
MzFiZGQ5MjI1YmMyM2I4MTRkMmNkZDA5Li4xMTQyZmJhZmE4ZmI2NGM2YjFmOTZhNWIyZGY1OGE1
NDQxMDdhNjczIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzQ2Mwp6Y21lQVNATj8o
b2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVCF0aD0K
ekx4YT5iZ0gjS1A2YSEwUl5BdGwlXkhmdDRMITt6R0JOS0JJKD0/YD1EWFZ+bk5xVnxDaEUmWFhk
KUt4fERxRUB7CnphSzxHbWtHSEZDSGU2ZksmP0NFSFg1e0kmdkoqLWxtfkxSUDQpd2J1eXlEZDNZ
RT1ePG47Pk5pXntubyZwUVRRPQp6fE12WmhedC0lO2ZubVl0XipoLWE3PFFPM2FXZzJXWkQzJFgh
ZW8+bXhCdkNFR01IaGApN3k4TDhVRk4mPk0lNlMKeklLYWZ2IUhMMXhgKU5qLXhYJCRaXzk8S3Er
aDtERFUpO358O2VYXm9zTTtJOXd7Z15PX1RyIU9fSUE9bmlRXnhFCno7RCtTdHQ2NipGXnVAWkw3
WDdSJld9TmYoJE4/c2NgdnlGPi0rdWQzJSVJbis+eSNrKCprYSQoSW9vYyh3ZGs4fgp6ITArSVoh
MSVjJEhUfWFBVkBBQ2VCeG1TIz59Rzl6dCsxaU5gKHNHQjYhIzckQ2hpPl5ePGA2IUczflF6V0ln
a34KekdCOHU7ZiVvU0hmZUNlJlAwcmRmSWheRFlWe3FfRVV9UU1MMCVWKnFqWDAzZ21OPXVEckda
fkBMJk1FR193Vm4yCnp5NSg9KHxCSTZ1dyZWeWhLfiV3JmsxfikwWiF8UFVMeFl3WDxsUXFsaDg/
bEx8Sko8fFdVdkVmYG4xaEFiTFJkMwp6UCs7LXJ2QVRXVHBDM35TOEh+MVpGayZtY0Z3MyhjQ1FA
ZXBvdU1GZitXKCgrLSNPeHMjc0J9ODRHTSVWSmYkI1oKenhyYH10X3BCfCRmdXhOUVpfME10fE5y
c2ZnVFp3YmhVZFomMlY4SURuRUE3fUE1T2dJJCM1PmNUWXkwIWpUS21xCnpac1Rhb1JAJV9lb3pO
fD9MayUzI1ZLNSUzbTwzNUVmZlZEWUxXV3E3UWBIeWMjcnpDKyo0QG9CfElXYzZAMDdyfQp6YERX
aHNlOUsma3cqR2w2M3NOeHlPfE9Yays0bzFPWn1SdUIkVVJeSlItVnRrP14kfDledXRuNG9kLSZQ
QjEyd3IKentkbVA5Ui1pZD1tc2MhZnhJK1M/eEp4WUtid0B9JlgzJjIlWXdDUT8wITA9dmdaezVv
ZjJVMzc7WEF3YFpvUGU/CnpUKkhMdDVYJkUxKnhBfDFTdG85ZCtOczY7cWlmbl82V08wSHU1K2pC
QDMpdD1gRnJqNHtUX3olWXJ8RnhoYkBfUQp6YHN3OV5DVnkqUWUkRyFuJU14SCslYkczR3cqQWxm
QjhqJSZ6a2c1dUZKX1VwfDkteU4/NDhSVzxkXk5mRTReUUEKempXXkA8d0AwISE5NHF8dG10KVNl
JT1DaEhuaGJVcUl2WjJkMXVXWCUzcTA2JHZ8UkF0SzBsXn0hWThgdDd7YkB7Cno9IztYKS0qbyRK
cEtPZTlGWUJFSkl2Y0t0N1c1b3IlSlVWRGMqUnZRN3MmR1p5eD9OeUVFQlEkPytZeD4qZEUkaAp6
X2d7RlBlMm5DR1MhUSQ5K2UkWTc0Z0B7OHdvPzFTd0pHOHx2dm4kX3gzeytednRJez5pTWQ5ZFB4
Q1JSZUBvVWkKeislOEU8MEQ3czZAND5Qa2UyblhFY1EkVH5UWXAhV1dsb3d6b0FBQndKUmUkaGB0
eDc/dCRPKDg+RyRRJCVrTjdhCnp6eFozUHAqKFZKbkVJOGc/fClCT3tfP3Jee0Nld2J3VDRAcnto
MSNFKmNjajtBOWRlaFdEdG04VkElTFFTNVIpfQp6RkdoeGp7fk1jRjgzY3JaVnVwP0FqRSYpT1E8
KWhLWHMmQFpJN2FLdChLP2ZzYnRiNCRKSHBifktraV96eU4xUz4KUylWMmI5UnQlbzVlbEZ7cjV9
RS0ydmFBUkkKCmxpdGVyYWwgMzQ2NAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJh
PmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG41dD0KeiF4VGU5JU18MFopTVFLWkw8X1NkM2sh
MnxPVmhNZVF5e31RSVhaaF5EOXx0fFBaITZLaWFCclo/Iy0zWG1UQ3dyCnpTfH0lUj53d3Q7REhl
a2lfTUVpcm90R0k4R3NaQWBaKlVlcFArPXpVO09rell0d0tMTm9GX2hhTmlKbUJAN0hucwp6elBi
SkIldm9YIzM/PV9lelhQM2QtN1NIVTtSdVR1Z00kd1M8SVRHdD8pJlpYeGYoWHQlJnVsPSp1U3hm
bHxldV8KemZgUCVYNXVMRnlUPC1GUnJsKzVOeEJEPURGdVZNdl8/O2xiS1lNTU0rVW9tYTVBKHhi
SGcyd3MpKTlNYlZQfEoyCnpYUHZ3P1lWR3ljTjBUPGo9LUtEJUhFZjxNNXk5fFd4LURfey1GZndW
MmJPTWg8djVjcGJBMD1oJVZvUHxrQUQ8Pwp6Iz5sfmBsT1ZWTDRiUXc5d0Y5akpGciRTZDR6THoo
UzE2RVc1aThKfl9zVDFvRzI5YDZRVCpaZ2IoYk96Z3NYMzgKel8tVSlKKXlyQ3dEUUNpVUNWJHFs
byRkQDhrcTRPPUl5aU0wOGZGey1HSXB8WSZwMnpxUXsyeitMNkpxd1ZEfDZkCnp6cWlsWGNLXk03
bH5CVnBUXz5uMnhiamczYV5RYEkjJU8zanZKcCpFIWl+RmttPklUYkA0dFdFbWd6dmRLKldJQAp6
dilOfXElZ2diIypaK0JQeWtDQzQ1dWR7YEYtMl5wN2lNYGopSXtEcmxWZXpTPlhaSGI9Vy04RXw5
RX1Ce3d5I00Kei0wX3NjbkJfOTIkajAzfSolPX5xI0pjYjFlU2E9NUZETGhHN1IhU2dDaGk+XnYo
Ryt6YEpsayFqNVgoaHBFLWd8CnozYGY9ZyVoN3traVVxI0ZxRSEkbWF7VU0+cXxiMGNjYGgoJXV3
dnwwJFdSTSVZV21fJC1hRSNJK2dvcUhlSjAyRgp6ej9ubFEhUis/aVpAU0JRNH1aOGduUENmTnBx
KzdqY2k+T2xvfVJ6RygrQERtQ30+OTxfJW08Jmx3Q353T2Q0NVoKelRJez5NVmoxSi05JD9adDhY
VWUtYHZEaCsmViF+RSs3R05hQW9iWEBqWnRlcTg4aG0mOUFKOTNGPmR8K1BtPk5OCnpOP2QjV1Jz
OVVKeiRZMjc8eitJKmZnbzlaT18rOWdEcjVZYHFGS3c3PF5OVmFlRG4xQ141KjZEdE56WHdlNmFJ
cwp6Ul9VUnhEQDhrTnRZJDJtdVY0R2A/VjZia1M8QlphMEcmUFVlPGFgR2c4S1VVUHhxT1F6eG4/
QVk/fD9Sa3cwaGkKendwVHlDLWMrampWQXRGVi1mST9wYHtXeGgrcX5zRFhVbHFrLU82eW84eT0/
VEE3cShndypTeU9icE5fMWdIR1JgCnpxbW1DXk8+SkRkP209d1g/ejxiQ3ZsbmVfa2U8UmlaNUxE
RCNmU3JJR251PyY4UHtLcUlOJUdjdiNvcTVBQTlzIQp6bWFsIU15VCRlUV5AbHo7WWRfd1h7OXN2
MWJqeHgxMihDTDtyTDE+bWVOcm0jV3F0cVkhLXMtNTRgdTx3Z3phZDUKej03b3BAXlJJeyYlPVk3
MWIyYVBnSW1TQzhfWjFKNlN7clYtX0loaHxRXlJHUiF2JSthJnR1Iy07cHM9O3o0N3tVCnpfV3Q9
LV41SU1MVn5lVyR0Uk03TlV3emZHPnNSZ2tQYlBuQlVWaEZgS2ckd2V7bjN6RD9pMiQ8Zmx0anVZ
aFlgUgp6bj9kMipLSFdwZztyMHYrQU1DPzZGZmImNiNNQ2V0LSVoUEFWcW1hbjZAQGk4WGlgI3du
PSsjJmtKaVJDdGM/ZTQKZDhvTj0/RDcqS3IkQCFgUjdHUiUtIVBDe3hXdH4kKDY5OFc9UTUqbU8K
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3Jl
cGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBu
ZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvcmVwYWludC9ibG9j
ay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Yzc1YTY4OWQ5YTlmODA5MGRmNzM4NWZlMDQ1MDQ0ZDRl
MGFhOTViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDI5NTcKemNtZUFTQE4/KG9s
SHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RtfW42Cnow
fUQkZGkhP0pjR2xMfGZHPW5ybEJaRmoxTC1TTnExMmRFNHdCK2UwNHlaNk5hTGFxVElFR1pyZDMo
bihFN1ZjSQp6O2JLO3lZdkYoRTJ8NmRzQ2dgXzRhTXwlPV9oWldzJnJKNyhuQzhGVCVnKWVuWmhB
VUQxSCpAIzk2QWdRR1kmOEAKemJaYHpZTXM0amtoV2g4WFUoMHREe1FZZzJfdT1vOzxEMTxYOHZh
az02PVFKbE5ubTYrIWgpNllYNEMoS3Z1RUJNCnpII2FzdTlsd0YwO3FzancyWDdmP1V6LSpBLWl3
PnpmcnhuQ2hISkJhWmFCYHdVfiFeVmRYNFNvYDxHNlkzTlRuKQp6WTtGOCVBXjF3MDtYIX5vK2Nr
Wj83S1FeOF5MVztuWmNjeEhvR3RzYzQjTlctYkd4R1hfcGN2KD5jaGJ4XlpYZGwKejlTMUpMLUpu
PDl7UGQoS0x4RysyQFFReyhvMnU2Q3trfVAhZiNGOTsmSVNnQ0JxbllLMStgSmVYZHNOSGd3YjN1
CmxuaFFwQSFEdWNSUj1MMlFhaHNtKHdrdD1YUDY2QjM0NCRyakY2KjJVbmdEYEhZSHxQbwoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1sZW9wYXJkL2Zhc3Qv
cmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQu
cG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLWxlb3BhcmQvZmFzdC9yZXBh
aW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMzMxMWY4M2M5ZmUwNWIyMTI5OGFkYzRi
NGUxNWI2MGI2NzZhZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMzM5OAp6Y21l
QVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkxQiVRbFlicFJ6bmtCOWdDQ000NyQ9U3VG
eGVPK2oKem1Qc2pUc21aQ3ZXKEl+U0NNbXstcldXUkA3UmdETDJDMnJUaTNVZSZVME45IWN5NCZR
SUVHWnJkMypQdUZTRFY1CnohJHMzWU4tcUNKNn0qeHhUMno5I2V6PCtBcDhuP0lAdFUoMDwhOF50
MDQtX1Vld1E2Y29sfHNSVX0pJUpVfVJ1MAp6VnEjJW5JS2QmbnpAVlQhRzZYO0dgXl8tKmVFITw2
Xkp7QVZ5cz18cVYzN1YxJmQwIXohb3REOEZoTmooZngqRzgKemZxe1dSa2BYQUMocFNsUz9lM1kh
RlFjO0crNXFFRT1KXldGNks3KHdXM1I4WnpHaXd9M0spVis/eU53Szg/RmEzCno3UkIkfSNjU3Rk
JiVtJnRFVHJMIyZHaWxJUFhGYStVfDFuNXMtUVFJbmMrYShhaDROJXt6TSZRVnJhTiQkb09lUwp6
Xl9mM3c2WXN1bjxgNHVibEtDbi07cmR0WSpBV2ExN3AmNWxmUj97ZTl+bSgrezFWPmd3NnJwTFU8
X0lgYjdEKFcKelNYMGBsQVg/VE40VW98UWZ0U09oaUQ1SmBqM3gkTHQoNEsrRmA3R3VRU1NLM3g9
Yy1IXnxnajQyMCV8U2MpSSR6Ckp0YUQwZTBzeXZlKkg4Y2UKCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvZmFzdC9yZXBhaW50L2Jsb2Nr
LXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQvZmFzdC9yZXBhaW50L2Jsb2Nr
LXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MGU4YzE5Njc5YmUxYjE5MmFlY2JkNmEyNWVkZDE4YmMw
NTJiOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMzM5Ngp6Y21lQVNATj8ob2xI
eWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkxQiVRbFlicFJ6bmtCOWdDQ000NyQ9U3VGeGVRNTMKejdL
VWFpN1JlVEFDYUtBV1cpe1c8cmImajBzajIzTTdNN04mVyt2dkZTRHM7RDtKTjFNO3V1bWY9an5s
WEtXMFkoCnpoSig+WngmezglR2R9WDxWWjAkVztrIzA5WHZzT1hKPWMyUG5pPn1+R0JCe3JFOF89
UkhPSUxETko9cz9GKSphQwp6YTQ7fVQ1TDk0YmFCdiRMZzNsX3lHZmNmK3pWXz88SiRxfjMkVDJj
QkBhfnopajNZUV5DZkJqUFBKOHlSV2JNfG4Keks0NVNpeDZFUVRHUUoqbHo0VWNvPHJRR2kzMFA9
MylOVDY5enxlM2prZz4+bT1kWS1tOCtFfEllN2t+U1g2Mm0zCnpvNF8hMmMpeDwtPEkhUlVoOHdT
RUYjTjE4Yyo/QGZ6PnN5RTx3V2ojTCp4N0Q1d0hKQUdCOU13ZTY/NURlfTRVKAp6V0pVJnUqRTR2
NU1zSndVMEV7dnRDS2QqVTZDNDV6Mzx9QilLeD13TjFxWGVBb1M4TkFyWStFdzEjSHJ6QGl2LWYK
d00+RndnMFhBQkFrNSppeEhUaF81STllTUx0Xz9xUHN1YnowWms/MlZvJmc5dlVIeDN2SVZDZyEw
Mz14VW07ZTkoCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2lu
L2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhw
ZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvcmVwYWlu
dC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTViNmQ2YjNlODI3Y2RjMWNhZDU1NjI2MTI5
ODI4NzRkNTlhNjE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDI5MzQKemNtZUFT
QE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1Ru
NTc9CnpeVGZteXZxVGUxTGxZQ0RCeTtsPSk4ciZXM2oraD1MYCQ8fCVjTkQmMzk8fGYrI0hAUmp2
KkN1LXJoMEhKOFU0cAp6O0FuV0Z8SWRIPEFISW9QJSQ7MjNqQUNMaCZ4Qn5Ma0dhRHNRKyRxQHEy
Yil8dElQfXhkISFwIzgzY3FRNyNJd1AKejdofmkzKSRCaUotflFfPCohU181cWdsY0orRWBtQWhD
amgoX2BTT0U/N2Yza0tQckRAbyU0UnF6KStGNHxBNXJ2Cno/V0BuLVhKRntRQCFxOWtvaTstUT5z
I0BOPEFwdG08Klc+QXZmbTNVRzh8fnlifD1Cc0xYZTNlYDxCcyRiTHZocgp6ZmlofFBnJitSM1Rk
QChTSzZtRnFDV2VUYTJiZFQtSUNVNXJabHdLQl88NUkkQSEwdFM3PXdkUDB3Y29fbVFlO1IKejFM
NEA1JiN4cEk4MThrQTJLWj1WOF9qV31yT2p3QTd8akt2eG5Pd2FmO1pCdkpAUmBrbHplSns0UVUy
WFMzajNeCkhQNjxyX0Z7KjRWCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0td2luL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQt
bGF5ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zh
c3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDEwZTcxMzhkODliYmQ0Nzk5
NWQyNjEwMzVjODZiNzFmOTFlM2Q0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3JlcGFp
bnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAotbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAg
ICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw1MCkgc2l6ZSA3ODR4NTQyCi1sYXllciBhdCAoNTgs
NTApIHNpemUgNzM0eDIwCi0gIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg1MCwwKSBzaXplIDczNHgy
MAotICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDd4MTkKLSAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDc6ICJhIgotbGF5ZXIgYXQgKDU4LDUwKSBzaXplIDEwMHgxMDAK
LSAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDApIHNpemUgMTAweDEwMCBb
Ymdjb2xvcj0jRkYwMDAwXQotICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDE5Ci1z
ZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7QlJ9IG9mIGNoaWxkIDEge0RJ
Vn0gb2YgY2hpbGQgMSB7RElWfSBvZiBib2R5Ci1zZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uIDEg
b2YgY2hpbGQgMiB7I3RleHR9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlv
bi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3Np
dGVkLWxheWVyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjBmZjUwNGIzN2IwYmJjMDM3NWE2
NThkOTU4ZDAxNzJiODhkNjA5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODY1CnpjbWVBU0BO
PyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UbjI7
Rwp6UjZfJDNxZVA9NXYmNkpDNlUjKEhsUWdyVyNGVjd1bDtsTHlHKCpNU052andieERJPXxJRUda
cmQzKW1ePVYxb3sKejdSVUw4Wmx+OzdqJkE4WGMlaV4hUmFlNWl2dWtHbFdNSGBQXlBMPDYhdl87
NFpVek9sNEdhdVAhO0c+MkY3djxRCnpJb2FQXlpkPiU8dn1JKDdKSnJtfUFScnZVeitsKW8kezJF
aTVOKjc8bndqQ2k7KS1GSVJFSnM0OH0taWNEQHtrXgptYlRtJGZXaXcka1ZHcUtERWlOe2JjWGpm
c1EjWE5hVTxPWkRLYkxoKjJ+N1p+JEpOe2IKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvcmVwYWludC9ibG9jay1z
ZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4t
Y29tcG9zaXRlZC1sYXllci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAxMGU3MTM4ZDg5YmJk
NDc5OTVkMjYxMDM1Yzg2YjcxZjkxZTNkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNv
bXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw1MCkgc2l6ZSA3ODR4NTQy
CitsYXllciBhdCAoNTgsNTApIHNpemUgNzM0eDIwCisgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICg1
MCwwKSBzaXplIDczNHgyMAorICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDd4
MTkKKyAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc6ICJhIgorbGF5ZXIgYXQgKDU4LDUw
KSBzaXplIDEwMHgxMDAKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDAp
IHNpemUgMTAweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQorICAgIFJlbmRlckJSIHtCUn0gYXQgKDAs
MCkgc2l6ZSAweDE5CitzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7QlJ9
IG9mIGNoaWxkIDEge0RJVn0gb2YgY2hpbGQgMSB7RElWfSBvZiBib2R5CitzZWxlY3Rpb24gZW5k
OiAgIHBvc2l0aW9uIDEgb2YgY2hpbGQgMiB7I3RleHR9IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9k
eQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123346</attachid>
            <date>2012-01-20 11:11:35 -0800</date>
            <delta_ts>2012-01-20 12:27:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120120141133.patch</filename>
            <type>text/plain</type>
            <size>57307</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThlYmM3OTgwMjgwNTc3
OTNkZjRlYzhhODNmNzFmOTBlMWZiYzQzMy4uODU1OTQyMWZjZDdhMTZiMGM1ZGM4OWJmZGQzYzdj
ODE1YmM0ZjcyNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAxLTIwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDUXVhZEN1bGxlclRlc3QuY3BwIGFuZCBDQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6b3BhcXVlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0JsZW5kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yRHJhd1F1YWQ6OkNDU29saWRDb2xvckRy
YXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdhYmxlVGlsZTo6b3BhcXVlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6OnNldE9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aWxlZExheWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisKIDIwMTItMDEtMTkgIEFi
aGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaCBpbiB4
c2x0UGFyc2VHbG9iYWxWYXJpYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjg4
ZDU2ZjA0ZGNkNzBjZTNjYWU2NzZmYTNkNGQxMGVhZjM0ZGZhNy4uNGRjMGFjMTZkNTUxOTRmOWMx
YTExYmNhY2E4ZmFiMDJmOTE2Y2ZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxMi0wMS0yMCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSByZWdpb24gcmVwb3J0ZWQgcGFpbnRlZCBvcGFx
dWUgZm9yIGRyYXcgY3VsbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzYwMTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdl
YktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OnNldE9wYXF1ZUNvbG9yKToKKyAgICAgICAgKFdl
YktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OkJsZW5kU3RhdGVDaGVja0xheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3REcmF3UXVhZDo6VGVzdERyYXdRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3REcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDVGls
ZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UXVhZHMpOgorICAg
ICAgICAoV2ViQ29yZTo6Y292ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNUaWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c0JvdW5kcyk6CisgICAg
ICAgICogdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VEVTVCk6CisKIDIwMTItMDEtMjAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtjaHJvbWl1bV0gYWRkIFdlYkRldlRvb2xz
RnJvbnRlbmRDbGllbnQ6Om9wZW5Jbk5ld1RhYiBmb3IgdXBjb21pbmcgV2ViQ29yZSBjaGFuZ2Uu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CmluZGV4IDBkOTdlNTJhZWRlMGY5ODBhZGExNWRlMGExNGExZDI4ZDg2YTFlODguLjBlOWE0NTJk
OGYzYjIyYTkzNjI0MWEwZDg1ZGQ3YWI4ZTA4MWQ4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC04Miw4ICs4Miw2IEBAIHZv
aWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0CiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNp
emUodGlsZVNpemUpOwogCi0gICAgYm9vbCBsYXllcklzT3BhcXVlID0gbV9jYW52YXMub3BhcXVl
KCk7Ci0KICAgICBtX2NhbnZhcy5yZXNpemUoY29udGVudFJlY3Quc2l6ZSgpKTsKICAgICAvLyBB
c3N1bXB0aW9uOiBpZiBhIHRpbGVyIGlzIHVzaW5nIGJvcmRlciB0ZXhlbHMsIHRoZW4gaXQgaXMg
YmVjYXVzZSB0aGUKICAgICAvLyBsYXllciBpcyBsaWtlbHkgdG8gYmUgZmlsdGVyZWQgb3IgdHJh
bnNmb3JtZWQuIEJlY2F1c2Ugb2YgaXQgbWlnaHQgYmUKQEAgLTkxLDExICs4OSwxMCBAQCB2b2lk
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdAogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpUZXh0T3B0
aW9uIHRleHRPcHRpb24gPQogICAgICAgICBib3JkZXJUZXhlbHMgPyBQbGF0Zm9ybUNhbnZhczo6
UGFpbnRlcjo6R3JheXNjYWxlVGV4dCA6IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpTdWJwaXhl
bFRleHQ7CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRlcigmbV9jYW52
YXMsIHRleHRPcHRpb24pOwotICAgIGNhbnZhc1BhaW50ZXIuc2tpYUNvbnRleHQoKS0+c2V0VHJh
Y2tPcGFxdWVSZWdpb24oIWxheWVySXNPcGFxdWUpOworICAgIGNhbnZhc1BhaW50ZXIuc2tpYUNv
bnRleHQoKS0+c2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7CiAgICAgcGFpbnRDb250ZW50cygq
Y2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKIAot
ICAgIGlmICghbGF5ZXJJc09wYXF1ZSkKLSAgICAgICAgKnJlc3VsdGluZ09wYXF1ZVJlY3QgPSBj
YW52YXNQYWludGVyLnNraWFDb250ZXh0KCktPm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpOworICAg
ICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0gY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5vcGFx
dWVSZWdpb24oKS5hc1JlY3QoKTsKIH0KIAogdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVVcGRhdGVyLmgKaW5kZXggMTc5ZmVhNmUxMmJmMTAzYzViMDc0MzVjZjI0YTNhNDhm
OGNkOTMyMy4uMDQ5ZmQyNDA4M2Y0Mjc1Y2U1MjZkNjFiODhkM2UwNTU1NjNlZjBhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNzEsOCArNzEsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gVGhpcyBmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb21wb25lbnQgb3JkZXIgaW4gdGhlIHNhbXBs
ZWQgdGV4ZWwuCiAgICAgLy8gSWYgdGhlIGZvcm1hdCBpcyBUZXhlbEZvcm1hdEJHUkEsIHZlYzQu
eCBpcyBibHVlIGFuZCB2ZWM0LnogaXMgcmVkLgogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9y
bWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KSA9IDA7Ci0gICAg
Ly8gVGhlIHxyZXN1bHRpbmdPcGFxdWVSZWN0fCBnaXZlcyBiYWNrIGEgcmVnaW9uIG9mIHRoZSBs
YXllciB0aGF0IHdhcyBwYWludGVkIG9wYXF1ZS4gSWYgdGhlIGxheWVyIGlzIG1hcmtlZCBvcGFx
dWUgaW4gdGhlIHVwZGF0ZXIsCi0gICAgLy8gdGhlbiB0aGlzIHJlZ2lvbiBzaG91bGQgYmUgaWdu
b3JlZCBpbiBwcmVmZXJlbmNlIGZvciB0aGUgZW50aXJlIGxheWVyJ3MgYXJlYS4KKyAgICAvLyBU
aGUgfHJlc3VsdGluZ09wYXF1ZVJlY3R8IGdpdmVzIGJhY2sgYSByZWdpb24gb2YgdGhlIGxheWVy
IHRoYXQgd2FzIHBhaW50ZWQgb3BhcXVlLgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRp
bGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxl
ICovLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCogLyogcmVzdWx0
aW5nT3BhcXVlUmVjdCAqLykgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMGQ5NzRmYTYzYTQ0NTdkOWVhYzdj
OGI4NzNmN2U5MWE0ZDI2ODQzYi4uYzlkYWI3MmYxMzJlOGQ5YmI5M2FiMDg1N2MxZDcwNTUwMWQz
ZWNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAg
ICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIpCi0gICAgLCBtX2xheWVySXNP
cGFxdWUoZmFsc2UpCiB7CiB9CiAKQEAgLTU0LDEzICs1MywxMiBAQCB2b2lkIFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UgogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRpbmco
Y29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBsYXRmb3Jt
Q29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KGNhbnZhcyk7CiAgICAgcGxhdGZvcm1Db250ZXh0
LnNldERlZmVycmVkKHRydWUpOwotICAgIHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJl
Z2lvbighbV9sYXllcklzT3BhcXVlKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQuc2V0VHJhY2tPcGFx
dWVSZWdpb24odHJ1ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgmcGxh
dGZvcm1Db250ZXh0KTsKICAgICBwYWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY29udGVu
dFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKIAot
ICAgIGlmICghbV9sYXllcklzT3BhcXVlKQotICAgICAgICAqcmVzdWx0aW5nT3BhcXVlUmVjdCA9
IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKKyAgICAqcmVzdWx0aW5n
T3BhcXVlUmVjdCA9IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKIH0K
IAogdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpkcmF3UGljdHVyZShT
a0NhbnZhcyogY2FudmFzKQpAQCAtNjksMTEgKzY3LDYgQEAgdm9pZCBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpkcmF3UGljdHVyZShTa0NhbnZhcyogY2FudmFzKQogICAgIGNh
bnZhcy0+ZHJhd1BpY3R1cmUobV9waWN0dXJlKTsKIH0KIAotdm9pZCBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCi17Ci0gICAgbV9sYXll
cklzT3BhcXVlID0gb3BhcXVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYg
Ly8gVVNFKFNLSUEpCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmlu
ZGV4IDdmY2M2MDU5ZjkwZTdkOWQxYzMwMWJmMmE3MGY1MTUyYTQ5MjdiMDAuLmU3N2VlMzA5NDYz
YTA0Yjc0YTBhOTM5YTYyMTcyZGZiOWNhOTUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTU0LDEzICs1NCw5IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywg
ZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiAgICAg
dm9pZCBkcmF3UGljdHVyZShTa0NhbnZhcyopOwogCi0gICAgdmlydHVhbCB2b2lkIHNldE9wYXF1
ZShib29sKTsKLQogcHJpdmF0ZToKICAgICAvLyBSZWNvcmRpbmcgY2FudmFzLgogICAgIFNrUGlj
dHVyZSBtX3BpY3R1cmU7Ci0gICAgLy8gVHJ1ZSB3aGVuIGl0IGlzIGtub3duIHRoYXQgYWxsIG91
dHB1dCBwaXhlbHMgd2lsbCBiZSBvcGFxdWUuCi0gICAgYm9vbCBtX2xheWVySXNPcGFxdWU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cAppbmRleCAxNDMwYTYxNjc4OTMyODM5ZjQwYzViM2QxYjliYjc0Zjc3YTlhNTU1Li5iY2FhNjM4
NWRjMWE3NjhhYTAwMDM0OGJhM2FhZTc0MmZjMDkzYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogCiAgICAgSW50UmVjdCBtX2Rp
cnR5UmVjdDsKICAgICBJbnRSZWN0IG1fdXBkYXRlUmVjdDsKKyAgICBJbnRSZWN0IG1fb3BhcXVl
UmVjdDsKIHByaXZhdGU6CiAgICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+
IG1fdGV4dHVyZTsKIH07CkBAIC0yNzIsNyArMjczLDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgICAgICBpZiAodGls
ZS0+aXNEaXJ0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgdGlsZWRMYXll
ci0+c3luY1RleHR1cmVJZChpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQo
KSk7CisgICAgICAgIHRpbGVkTGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCB0aWxlLT5t
YW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgdGlsZS0+bV9vcGFxdWVSZWN0KTsKICAgICB9
CiB9CiAKQEAgLTQxMiw4ICs0MTMsOCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgLy8g
SG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29u
dGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCiAgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2Fs
IHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50
IGNvbXBsZXRlcy4KICAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRl
eHR1cmVVcGRhdGVyKCkpOwotICAgIEludFJlY3Qgb3BhcXVlUmVjdDsgLy8gRklYTUU6IHVudXNl
ZC4gcmVtb3ZlIHRoaXMgYW5kIHN0b3JlIGluIHRoZSBsYXllciB0byBwYXNzIHRvIGltcGwgZm9y
IGRyYXcgY3VsbGluZwotICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0ZShtX3Bh
aW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCks
IGNvbnRlbnRzU2NhbGUoKSwgJm9wYXF1ZVJlY3QpOworICAgIEludFJlY3QgcGFpbnRlZE9wYXF1
ZVJlY3Q7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0
LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVu
dHNTY2FsZSgpLCAmcGFpbnRlZE9wYXF1ZVJlY3QpOwogICAgIGZvciAoaW50IGogPSB0b3A7IGog
PD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7
ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsK
QEAgLTQyMiwxMiArNDIzLDIyIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAg
IGlmICghdGlsZSkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCisgICAgICAgICAgICBJbnRS
ZWN0IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKKworICAgICAgICAgICAg
Ly8gU2F2ZSB3aGF0IHdhcyBwYWludGVkIG9wYXF1ZSBpbiB0aGUgdGlsZS4gSWYgZXZlcnl0aGlu
ZyBwYWludGVkIGluIHRoZSB0aWxlIHdhcyBvcGFxdWUsIGFuZCB0aGUgYXJlYSBpcyBhIHN1YnNl
dCBvZiBhbgorICAgICAgICAgICAgLy8gYWxyZWFkeSBvcGFxdWUgYXJlYSwga2VlcCB0aGUgb2xk
IGFyZWEuCisgICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVkUmVjdCA9IGludGVyc2VjdGlv
bih0aWxlUmVjdCwgbV9wYWludFJlY3QpOworICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRl
ZE9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIHBhaW50ZWRPcGFxdWVSZWN0KTsK
KyAgICAgICAgICAgIGlmICh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBhaW50ZWRSZWN0
IHx8ICF0aWxlLT5tX29wYXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVSZWN0KSkK
KyAgICAgICAgICAgICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9wYXF1ZVJl
Y3Q7CisKICAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFuZENsZWFyRGly
dHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRhdGVSZWN0Lgog
ICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0
OwogICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IG1fdGlsZXItPnRp
bGVSZWN0KHRpbGUpOworICAgICAgICAgICAgSW50UmVjdCBmaXhlZFNpemVUaWxlUmVjdFdpdGhC
b3JkZXJzID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CisgICAgICAgICAgICBJbnRSZWN0IHNv
dXJjZVJlY3QgPSBmaXhlZFNpemVUaWxlUmVjdFdpdGhCb3JkZXJzOwogICAgICAgICAgICAgc291
cmNlUmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0KTsKICAgICAgICAgICAgIC8vIFBhaW50IHJlY3Qg
bm90IGd1YXJhbnRlZWQgdG8gbGluZSB1cCBvbiB0aWxlIGJvdW5kYXJpZXMsIHNvCiAgICAgICAg
ICAgICAvLyBtYWtlIHN1cmUgdGhhdCBzb3VyY2VSZWN0IGRvZXNuJ3QgZXh0ZW5kIG91dHNpZGUg
b2YgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKaW5kZXggYWNjN2MwMjg2NmNjODk1OTMxNTE5NmIzYjgz
OGQwODg2YjUxYzZkZS4uNTY1NjM1MTg4YzYyNTFkNDMzMjBmNGI4NWQ4OWViMWQ0ZmJmMjI2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRHJhd1F1YWQuaApAQCAtNTEsOSArNTEsMTYgQEAgcHVibGljOgogICAgIGNvbnN0
IEludFJlY3QmIGxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5s
YXllclJlY3QoKTsgfQogICAgIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmNsaXBSZWN0KCk7IH0KICAgICBmbG9hdCBvcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPm9wYWNpdHkoKTsgfQotICAgIC8vIEZv
ciB0aGUgcHVycG9zZXMgb2YgY3VsbGluZywgYXJlIHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQg
b3BhcXVlPwotICAgIGJvb2wgZHJhd3NPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1
YWRTdGF0ZS0+aXNPcGFxdWUoKSAmJiBtX3F1YWRPcGFxdWUgJiYgb3BhY2l0eSgpID09IDE7IH0K
LSAgICBib29sIG5lZWRzQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRRdWFkU3Rh
dGUtPmlzT3BhcXVlKCkgfHwgbV9uZWVkc0JsZW5kaW5nIHx8IG9wYWNpdHkoKSAhPSAxOyB9Cisg
ICAgLy8gRm9yIHRoZSBwdXJwb3NlcyBvZiBjdWxsaW5nLCB3aGF0IHBhcnQgb2YgdGhlIGNvbnRl
bnRzIG9mIHRoaXMgcXVhZCBhcmUgb3BhcXVlPworICAgIEludFJlY3Qgb3BhcXVlUmVjdCgpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAob3BhY2l0eSgpICE9IDEpCisgICAgICAgICAgICByZXR1
cm4gSW50UmVjdCgpOworICAgICAgICBpZiAobV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkg
JiYgbV9xdWFkT3BhcXVlKQorICAgICAgICAgICAgcmV0dXJuIG1fcXVhZFJlY3Q7CisgICAgICAg
IHJldHVybiBtX29wYXF1ZVJlY3Q7CisgICAgfQorICAgIGJvb2wgbmVlZHNCbGVuZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNCbGVuZGluZyB8fCBvcGFxdWVSZWN0KCkgIT0gbV9xdWFkUmVj
dDsgfQogICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcmVkUXVhZFN0YXRlLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCk7IH0KIAogICAg
IGVudW0gTWF0ZXJpYWwgewpAQCAtOTAsNiArOTcsMTAgQEAgcHJvdGVjdGVkOgogICAgIC8vIHZh
cmlhYmxlcy4KICAgICBib29sIG1fcXVhZE9wYXF1ZTsKICAgICBib29sIG1fbmVlZHNCbGVuZGlu
ZzsKKworICAgIC8vIEJlIGRlZmF1bHQsIHRoaXMgcmVjdCBpcyBlbXB0eS4gSXQgaXMgdXNlZCB3
aGVuIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBhbmQgYWJvdmUKKyAgICAvLyB2YXJpYWJsZXMgZGV0
ZXJtaW5lIHRoYXQgdGhlIHF1YWQgaXMgbm90IGZ1bGx5IG9wYXF1ZSBidXQgbWF5IGJlIHBhcnRp
YWxseSBvcGFxdWUuCisgICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NRdWFkQ3VsbGVyLmNwcAppbmRleCAwNzlhYTdmZjZiMzFiMWI0NmYyYzI5ZmE3MWY1Zjc0ODhi
NGJiOTA5Li5lYTdhMjJlNWVlZjA0OWFhZTk3ZDljYjM5MDE4MTFmMGU4YTgxMjA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTc3LDggKzc3LDEwIEBAIHZvaWQgQ0NRdWFkQ3VsbGVy
OjpjdWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKIAogICAgICAgICBib29s
IGtlZXBRdWFkID0gIXJlZ2lvbkNvbnRhaW5zUmVjdChvcGFxdWVDb3ZlcmFnZVRodXNGYXIsIHF1
YWRSZWN0KTsKIAotICAgICAgICBpZiAoa2VlcFF1YWQgJiYgZHJhd1F1YWQtPmRyYXdzT3BhcXVl
KCkgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkKLSAgICAgICAgICAg
IG9wYXF1ZUNvdmVyYWdlVGh1c0Zhci51bml0ZShSZWdpb24ocXVhZFJlY3QpKTsKKyAgICAgICAg
aWYgKGtlZXBRdWFkICYmIGRyYXdRdWFkLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkpIHsK
KyAgICAgICAgICAgIEludFJlY3Qgb3BhcXVlUmVjdCA9IGRyYXdRdWFkLT5xdWFkVHJhbnNmb3Jt
KCkubWFwUmVjdChkcmF3UXVhZC0+b3BhcXVlUmVjdCgpKTsKKyAgICAgICAgICAgIG9wYXF1ZUNv
dmVyYWdlVGh1c0Zhci51bml0ZShvcGFxdWVSZWN0KTsKKyAgICAgICAgfQogCiAgICAgICAgIGlm
IChrZWVwUXVhZCkKICAgICAgICAgICAgIGN1bGxlZExpc3QuYXBwZW5kKHF1YWRMaXN0W2ldLnJl
bGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAKaW5kZXgg
ZDFjNzI5YTQxNTdkZDIyMTcyYjZjODMxZDc3MDBjYzQyMGI0ZWU2YS4uN2Y2Zjk4MTEzZDZmOGI5
YTcyNzhiOTY3ODBmNjRiYmY5ODQ1NjE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xv
ckRyYXdRdWFkLmNwcApAQCAtMzgsOCArMzgsMTAgQEAgQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OkND
U29saWRDb2xvckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3QK
ICAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpTb2xpZENvbG9y
LCBxdWFkUmVjdCkKICAgICAsIG1fY29sb3IoY29sb3IpCiB7Ci0gICAgaWYgKG1fY29sb3IuYWxw
aGEoKSAhPSAxKQorICAgIGlmIChtX2NvbG9yLmhhc0FscGhhKCkpCiAgICAgICAgIG1fcXVhZE9w
YXF1ZSA9IGZhbHNlOworICAgIGVsc2UKKyAgICAgICAgbV9vcGFxdWVSZWN0ID0gcXVhZFJlY3Q7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcAppbmRleCBkZjgzMDUwOGEyYzgy
Y2EyNzhiMzVjY2MwMDViM2QwNzlhMWM3ZmM2Li5iMzViNmY2OWYzYzIwMTZmNGUyMzg3NzNmMGRj
OTRjNjk1NmIwMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCkBAIC0yOSwxMiAr
MjksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDVGlsZURyYXdR
dWFkPiBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRl
eHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRl
eHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBi
b29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJv
dHRvbUVkZ2VBQSkKK1Bhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IENDVGlsZURyYXdRdWFkOjpj
cmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6
ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVu
dHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJv
b2wgYm90dG9tRWRnZUFBKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaWxlRHJhd1F1
YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGV4dHVyZUlkLCB0ZXh0dXJlT2Zmc2V0LCB0
ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgc3dpenpsZUNvbnRlbnRzLCBsZWZ0RWRnZUFBLCB0
b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IENDVGlsZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJl
Y3QsIHRleHR1cmVJZCwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIs
IHN3aXp6bGVDb250ZW50cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90
dG9tRWRnZUFBKSk7CiB9CiAKLUNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zm
c2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBi
b29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9v
bCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCitDQ1RpbGVEcmF3UXVhZDo6Q0NUaWxl
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50
U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29u
dGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEs
IGJvb2wgYm90dG9tRWRnZUFBKQogICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIEND
RHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCiAgICAgLCBtX3RleHR1cmVJZCh0ZXh0
dXJlSWQpCiAgICAgLCBtX3RleHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkKQEAgLTQ4LDYgKzQ4
LDcgQEAgQ0NUaWxlRHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEkKIHsKICAgICBpZiAoaXNBbnRpYWxpYXNlZCgp
KQogICAgICAgICBtX25lZWRzQmxlbmRpbmcgPSB0cnVlOworICAgIG1fb3BhcXVlUmVjdCA9IG9w
YXF1ZVJlY3Q7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCmluZGV4IDEyZTUzZGJk
MmE4ZjVkMWZiM2QzMzMxOWIyYzAzMTFlYzUzZjVjYTguLjMzNTAxYTgwNmNmYWZmOTYwZjI0YzZk
ZDZmMWM3ODIwYTE1Nzg4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZCA6IHB1Ymxp
YyBDQ0RyYXdRdWFkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1RpbGVEcmF3UXVhZCk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IGNyZWF0ZShj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9y
bTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0
IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenps
ZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRn
ZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJh
d1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1
cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29s
IGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRv
bUVkZ2VBQSk7CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZUlkOyB9CiAgICAgSW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dHVyZU9mZnNldDsgfQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0FudGlhbGlhc2VkKCkgY29uc3QgeyByZXR1cm4gbGVmdEVkZ2VBQSgpIHx8IHRvcEVk
Z2VBQSgpIHx8IHJpZ2h0RWRnZUFBKCkgfHwgYm90dG9tRWRnZUFBKCk7IH0KIAogcHJpdmF0ZToK
LSAgICBDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQm
IHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1
cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9w
RWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CisgICAgQ0NUaWxl
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQs
IGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6
ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0
RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdl
QUEpOwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKICAgICBJbnRQb2ludCBt
X3RleHR1cmVPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDM0
NGQ3NDI0NWY4ZWMxZjVmZGI2YzJjYjIxZGNkYjkxY2FiNDkxODIuLjAwMGVmZWYyMGY1NzZkOTJi
Y2I0MGQ4MTYyMDQ5YTY3YTg5MzMwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
Y3BwCkBAIC01MSw4ICs1MSwxMyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRl
eHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CiAgICAgdm9pZCBzZXRUZXh0
dXJlSWQoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJl
SWQ7IH0KKworICAgIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QoKSBjb25zdCB7IHJldHVybiBt
X29wYXF1ZVJlY3Q7IH0KKyAgICB2b2lkIHNldE9wYXF1ZVJlY3QoY29uc3QgSW50UmVjdCYgb3Bh
cXVlUmVjdCkgeyBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OyB9CisKIHByaXZhdGU6CiAgICAg
UGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsK
IH07CiAKIENDVGlsZWRMYXllckltcGw6OkNDVGlsZWRMYXllckltcGwoaW50IGlkKQpAQCAtMTM3
LDcgKzE0Miw5IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlz
dCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlCiAgICAgICAgICAgICBEcmF3YWJs
ZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0
ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKICAgICAgICAgICAgIEludFJlY3QgZGlzcGxh
eVJlY3QgPSB0aWxlUmVjdDsKKyAgICAgICAgICAgIEludFJlY3QgdGlsZU9wYXF1ZVJlY3QgPSB0
aWxlLT5vcGFxdWVSZWN0KCk7CiAgICAgICAgICAgICB0aWxlUmVjdC5pbnRlcnNlY3QobGF5ZXJS
ZWN0KTsKKyAgICAgICAgICAgIHRpbGVPcGFxdWVSZWN0LmludGVyc2VjdChsYXllclJlY3QpOwog
CiAgICAgICAgICAgICAvLyBTa2lwIGVtcHR5IHRpbGVzLgogICAgICAgICAgICAgaWYgKHRpbGVS
ZWN0LmlzRW1wdHkoKSkKQEAgLTE2NCw3ICsxNzEsNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6
OmFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZQogICAgICAgICAgICAgYm9vbCBib3R0b21FZGdlQUEgPSBqID09IG1fdGlsZXItPm51bVRpbGVz
WSgpIC0gMSAmJiB1c2VBQTsKIAogICAgICAgICAgICAgY29uc3QgR0MzRGludCB0ZXh0dXJlRmls
dGVyID0gbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElO
RUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0gICAgICAgICAgICBxdWFkTGlzdC5h
cHBlbmQoQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0
aWxlLT50ZXh0dXJlSWQoKSwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0
ZXIsIGNvbnRlbnRzU3dpenpsZWQoKSwgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VB
QSwgYm90dG9tRWRnZUFBKSk7CisgICAgICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUaWxlRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0aWxlT3BhcXVlUmVjdCwg
dGlsZS0+dGV4dHVyZUlkKCksIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmls
dGVyLCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdl
QUEsIGJvdHRvbUVkZ2VBQSkpOwogCiAgICAgICAgICAgICBpZiAoaGFzRGVidWdCb3JkZXJzKCkp
IHsKICAgICAgICAgICAgICAgICBDb2xvciBjb2xvcihkZWJ1Z0JvcmRlckNvbG9yKCkucmVkKCks
IGRlYnVnQm9yZGVyQ29sb3IoKS5ncmVlbigpLCBkZWJ1Z0JvcmRlckNvbG9yKCkuYmx1ZSgpLCBk
ZWJ1Z1RpbGVCb3JkZXJBbHBoYSk7CkBAIC0xODMsMTQgKzE5MCwxNSBAQCB2b2lkIENDVGlsZWRM
YXllckltcGw6OnNldFRpbGluZ0RhdGEoY29uc3QgQ0NMYXllclRpbGluZ0RhdGEmIHRpbGVyKQog
ICAgICptX3RpbGVyID0gdGlsZXI7CiB9CiAKLXZvaWQgQ0NUaWxlZExheWVySW1wbDo6c3luY1Rl
eHR1cmVJZChpbnQgaSwgaW50IGosIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKQordm9pZCBD
Q1RpbGVkTGF5ZXJJbXBsOjpwdXNoVGlsZVByb3BlcnRpZXMoaW50IGksIGludCBqLCBQbGF0Zm9y
bTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKIHsKICAgICBE
cmF3YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAgICAgaWYgKCF0aWxlKQogICAgICAg
ICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKICAgICB0aWxlLT5zZXRUZXh0dXJlSWQodGV4dHVy
ZUlkKTsKKyAgICB0aWxlLT5zZXRPcGFxdWVSZWN0KG9wYXF1ZVJlY3QpOwogfQogCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggNDc4YjAzNDAyMzQ1MDgxOWJi
Y2VhMGE4ZGE1YWQzMjE1NmY1NGJkMi4uN2FkNzE1OTliMjEzNjU4NThhMWM1YTVmN2E5Y2Y0MjQx
ZWEwNjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNraXBzRHJhdyhib29sIHNraXBzRHJhdykgeyBtX3Nr
aXBzRHJhdyA9IHNraXBzRHJhdzsgfQogICAgIHZvaWQgc2V0VGlsaW5nRGF0YShjb25zdCBDQ0xh
eWVyVGlsaW5nRGF0YSYgdGlsZXIpOwotICAgIHZvaWQgc3luY1RleHR1cmVJZChpbnQsIGludCwg
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpOworICAgIHZvaWQgcHVzaFRpbGVQcm9wZXJ0aWVz
KGludCwgaW50LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3Bh
cXVlUmVjdCk7CiAKICAgICB2b2lkIHNldENvbnRlbnRzU3dpenpsZWQoYm9vbCBjb250ZW50c1N3
aXp6bGVkKSB7IG1fY29udGVudHNTd2l6emxlZCA9IGNvbnRlbnRzU3dpenpsZWQ7IH0KICAgICBi
b29sIGNvbnRlbnRzU3dpenpsZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU3dpenpsZWQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNTIyNzg5MjVlMWVhMDk5NjkzYmMzNzU5ZGQ0MWU0MWNk
YjMzYzQyOS4uMDk5NGNiMjJlZTUwMWE1NmNmMzBlOTA1ODg4NmYzYmFkZTE0ZGZmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdC5jcHAKQEAgLTE4Nyw4ICsxODcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlKQogICAgIHsKICAgICAgICAgbV9xdWFkc0FwcGVuZGVkID0gdHJ1
ZTsKLSAgICAgICAgCi0gICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0QmxlbmRpbmdEcmF3
UXVhZCA9IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRS
ZWN0KDUsIDUsIDUsIDUpLCBDb2xvcjo6d2hpdGUpOworCisgICAgICAgIENvbG9yIGNvbG9yID0g
bV9vcGFxdWVDb2xvciA/IENvbG9yOjp3aGl0ZSA6IENvbG9yKDAsIDAsIDAsIDApOworICAgICAg
ICBPd25QdHI8Q0NEcmF3UXVhZD4gdGVzdEJsZW5kaW5nRHJhd1F1YWQgPSBDQ1NvbGlkQ29sb3JE
cmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdCg1LCA1LCA1LCA1KSwgY29s
b3IpOwogICAgICAgICBFWFBFQ1RfRVEobV9ibGVuZCwgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPm5l
ZWRzQmxlbmRpbmcoKSk7CiAgICAgICAgIEVYUEVDVF9FUShtX2hhc1JlbmRlclN1cmZhY2UsICEh
cmVuZGVyU3VyZmFjZSgpKTsKICAgICB9CkBAIC0yMDIsMTIgKzIwMywxNSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIHF1YWRzQXBwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3F1YWRzQXBwZW5kZWQ7
IH0KIAorICAgIHZvaWQgc2V0T3BhcXVlQ29sb3IoYm9vbCBvcGFxdWVDb2xvcikgeyBtX29wYXF1
ZUNvbG9yID0gb3BhcXVlQ29sb3I7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCbGVuZFN0
YXRlQ2hlY2tMYXllcihpbnQgaWQpCiAgICAgICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgICAg
ICwgbV9ibGVuZChmYWxzZSkKICAgICAgICAgLCBtX2hhc1JlbmRlclN1cmZhY2UoZmFsc2UpCiAg
ICAgICAgICwgbV9xdWFkc0FwcGVuZGVkKGZhbHNlKQorICAgICAgICAsIG1fb3BhcXVlQ29sb3Io
dHJ1ZSkKICAgICB7CiAgICAgICAgIHNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwog
ICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKQEAgLTIxNyw2ICsyMjEsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9ibGVuZDsKICAgICBib29sIG1faGFzUmVuZGVyU3VyZmFjZTsK
ICAgICBib29sIG1fcXVhZHNBcHBlbmRlZDsKKyAgICBib29sIG1fb3BhcXVlQ29sb3I7CiB9Owog
CiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODMKQEAgLTIz
OCwxOCArMjQzLDM2IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdP
ZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogICAgIC8vIE9wYXF1ZSBsYXllciwgZHJhd24g
d2l0aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXll
cjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFs
c2UsIGZhbHNlKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RS
VUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworCisgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1
Y2VudCBjb250ZW50LCBidXQgc29saWQgY29sb3IgaXMgb3BhcXVlLCBzbyBkcmF3biB3aXRob3V0
IGJsZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICBsYXllcjEtPnNl
dE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZh
bHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5
ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCi0gICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBj
b250ZW50LCBkcmF3biB3aXRoIGJsZW5kaW5nLgorICAgIC8vIExheWVyIHdpdGggdHJhbnNsdWNl
bnQgY29udGVudCBhbmQgcGFpbnRpbmcsIHNvIGRyYXduIHdpdGggYmxlbmRpbmcuCiAgICAgbGF5
ZXIxLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IoZmFsc2Up
OwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIG1faG9zdElt
cGwtPmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQo
KSk7CiAKICAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNpdHksIGRyYXduIHdpdGgg
YmxlbmRpbmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRP
cGFxdWVDb2xvcih0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsKKyAgICBsYXll
cjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5
ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworCisgICAg
Ly8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5IGFuZCBwYWludGluZywgZHJhd24gd2l0
aCBibGVuZGluZy4KKyAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNl
dE9wYXF1ZUNvbG9yKGZhbHNlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsKICAgICBs
YXllcjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3
TGF5ZXJzKCk7CkBAIC0yNjAsOSArMjgzLDExIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogICAgIC8vIDIgb3Bh
cXVlIGxheWVycywgZHJhd24gd2l0aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1
ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+
c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7
CiAgICAgbGF5ZXIyLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb2xv
cih0cnVlKTsKICAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBl
Y3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKQEAg
LTI3MiwxOCArMjk3LDMwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRp
bmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICAvLyBQYXJlbnQgbGF5ZXIgd2l0aCB0
cmFuc2x1Y2VudCBjb250ZW50LCBkcmF3biB3aXRoIGJsZW5kaW5nLgogICAgIC8vIENoaWxkIGxh
eWVyIHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCiAgICAgbGF5
ZXIxLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IoZmFsc2Up
OwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIGxheWVyMi0+
c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogICAgIEVYUEVD
VF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKIAorICAgIC8vIFBhcmVudCBsYXllciB3
aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQgYnV0IG9wYXF1ZSBwYWludGluZywgZHJhd24gd2l0aG91
dCBibGVuZGluZy4KKyAgICAvLyBDaGlsZCBsYXllciB3aXRoIG9wYXF1ZSBjb250ZW50LCBkcmF3
biB3aXRob3V0IGJsZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICBs
YXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24o
ZmFsc2UsIGZhbHNlKTsKKyAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7
CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+
cXVhZHNBcHBlbmRlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQo
KSk7CisKICAgICAvLyBQYXJlbnQgbGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5IGFuZCBv
cGFxdWUgY29udGVudC4gU2luY2UgaXQgaGFzIGEKICAgICAvLyBkcmF3aW5nIGNoaWxkLCBpdCdz
IGRyYXduIHRvIGEgcmVuZGVyIHN1cmZhY2Ugd2hpY2ggY2FycmllcyB0aGUgb3BhY2l0eSwKICAg
ICAvLyBzbyBpdCdzIGl0c2VsZiBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIC8vIENoaWxk
IGxheWVyIHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcgKHBhcmVu
dCBzdXJmYWNlCiAgICAgLy8gY2FycmllcyB0aGUgaW5oZXJpdGVkIG9wYWNpdHkpLgogICAgIGxh
eWVyMS0+c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7
CiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlv
bihmYWxzZSwgdHJ1ZSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2Up
OwpAQCAtMjk0LDkgKzMzMSwxMSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJs
ZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgLy8gRHJhdyBhZ2FpbiwgYnV0
IHdpdGggY2hpbGQgbm9uLW9wYXF1ZSwgdG8gbWFrZSBzdXJlCiAgICAgLy8gbGF5ZXIxIG5vdCBj
dWxsZWQuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFx
dWVDb2xvcih0cnVlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIxLT5z
ZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3BhcXVlKHRydWUp
OworICAgIGxheWVyMi0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFj
aXR5KDAuNSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7CiAgICAg
bV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwpAQCAtMzA4LDExICszNDcsMjQgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJz
KQogICAgIGxheWVyMS0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9u
KGZhbHNlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVy
Mi0+c2V0T3BhcXVlQ29sb3IoZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3BhY2l0eSgxKTsKICAg
ICBsYXllcjItPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5k
cmF3TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwog
ICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKKworICAgIC8vIEFuZCB3
aGVuIHRoZSBsYXllciBzYXlzIGl0cyBub3Qgb3BhcXVlIGJ1dCBpcyBwYWludGVkIG9wYXF1ZSwg
aXQgaXMgbm90IGJsZW5kZWQuCisgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5
ZXIxLT5zZXRPcGFjaXR5KDEpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZh
bHNlKTsKKyAgICBsYXllcjItPnNldE9wYXF1ZShmYWxzZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFx
dWVDb2xvcih0cnVlKTsKKyAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7CisgICAgbGF5ZXIyLT5z
ZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMo
KTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CisgICAgRVhQRUNU
X1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogfQogCiBjbGFzcyBSZXNoYXBlVHJhY2tl
ckNvbnRleHQ6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggZWQxNWU2
YzEwZTFmZTQ2MmM5NDk2ODU2ZGIzOTM0NTY5ZmFiODgxYy4uNWVjYmI1OWM4ZTAzYmZiZjE2NjMw
ZDAyZDg5MTk3MTIxMGMzODhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC0zOCwzNSArMzgsMzYgQEAgY2xhc3MgQ0NRdWFk
Q3VsbGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIAogY2xhc3MgVGVzdERyYXdRdWFk
IDogcHVibGljIENDRHJhd1F1YWQgewogcHVibGljOgotICAgIFRlc3REcmF3UXVhZChjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CisgICAgVGVzdERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJp
YWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKICAg
ICA6IENDRHJhd1F1YWQoc3RhdGUsIG0sIHJlY3QpCiAgICAgeworICAgICAgICBtX29wYXF1ZVJl
Y3QgPSBvcGFxdWVSZWN0OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRlc3REcmF3
UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJpYWwgbSwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxUZXN0RHJhd1F1YWQ+
IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCwgb3Bh
cXVlUmVjdCkpOwogICAgIH0KIH07CiAKLXZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3RhdGUq
IHJvb3RTdGF0ZSwgQ0NTaGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVhZExpc3QmIHF1
YWRMaXN0KQordm9pZCBzZXRRdWFkcyhDQ1NoYXJlZFF1YWRTdGF0ZSogcm9vdFN0YXRlLCBDQ1No
YXJlZFF1YWRTdGF0ZSogY2hpbGRTdGF0ZSwgQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IElu
dFJlY3QmIGNoaWxkT3BhcXVlUmVjdCA9IEludFJlY3QoKSkKIHsKICAgICBxdWFkTGlzdC5jbGVh
cigpOwogCi0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0
ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUo
MTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShy
b290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAs
IDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdR
dWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3Qo
SW50UG9pbnQoMjAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBw
ZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250
ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAg
IHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1
YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAw
LCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290
U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEw
MCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1
YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJ
bnRQb2ludCgwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBl
bmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRl
bnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAg
ICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdR
dWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAyMDApLCBJbnRTaXplKDEw
MCwgMTAwKSkpKTsKLQotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShj
aGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoKSwg
SW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6
Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQ
b2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQo
VGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1
YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFk
OjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwg
MTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0
YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6
ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVz
dERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIElu
dFJlY3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJl
Y3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRl
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQo
VGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQs
IEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1
ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0
YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDAp
LCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFw
cGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29u
dGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hp
bGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRl
KHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAs
IDIwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExp
c3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGls
ZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkp
LCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpj
cmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9p
bnQoMjAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworCisg
ICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJh
d1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAw
KSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6
OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50
UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAg
ICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3
UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAw
LCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3
UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVj
dChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0
KSk7CiB9CiAKICNkZWZpbmUgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTICAgICAg
ICAgICAgICAgXApAQCAtMTQ2LDYgKzE0Nyw1NCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZl
cmlmeUN1bGxDaGlsZExpbmVzVXBCb3R0b21SaWdodCkKICAgICBFWFBFQ1RfRVEocXVhZExpc3Qu
c2l6ZSgpLCA5dSk7CiB9CiAKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJl
Z2lvbikKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAgIGNo
aWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOworCisgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCks
IDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0g
Q0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOworICAgIEludFJlY3Qg
Y2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNo
aWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAv
IDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdl
dCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKKyAgICBF
WFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9j
Y2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEy
dSk7Cit9CisKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbjIpCit7
CisgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCisKKyAgICBjaGlsZFRyYW5z
Zm9ybS50cmFuc2xhdGUoNTAsIDEwKTsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
cm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRy
dWUpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVk
UXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNlKTsKKyAgICBJbnRSZWN0IGNoaWxkT3Bh
cXVlUmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0LCBjaGlsZFJlY3Qu
eSgpICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRSZWN0LndpZHRoKCkgLyAyLCBjaGls
ZFJlY3QuaGVpZ2h0KCkgKiAzIC8gNCk7CisKKyAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCks
IGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3QpOworICAgIEVYUEVD
VF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVk
ZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsK
K30KKworVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uQ2hlY2tPdmVy
Y3VsbCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAgIGNo
aWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNDkpOworCisgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCks
IDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0g
Q0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOworICAgIEludFJlY3Qg
Y2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNo
aWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAv
IDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdl
dCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKKyAgICBF
WFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9j
Y2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEz
dSk7Cit9CisKIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhpc0FsaWduZWRRdWFk
c0RvbnRPY2NsdWRlKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBs
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxU
ZXN0LmNwcAppbmRleCA1NTQ2MDM3YWRhMmNjYmYxOWVkZTAxZTYzY2RiNzk2OTc0ZGZjMmExLi40
ODg5NjBmZDEyNzMwYzQ5NTdkOGE4NTA1MTQ5NDhmZGNmYWRiNGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcApAQCAt
NDYsMTEgKzQ2LDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPENDVGlsZWRMYXllckltcGw+IGNyZWF0
ZUxheWVyKGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBjb25zdCBJCiAgICAgbGF5ZXItPnNldFRp
bGluZ0RhdGEoKnRpbGVyKTsKICAgICBsYXllci0+c2V0U2tpcHNEcmF3KGZhbHNlKTsKICAgICBs
YXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkp
OworICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKIAogICAgIGludCB0ZXh0dXJlSWQgPSAx
OwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGlsZXItPm51bVRpbGVzWCgpOyArK2kpCiAgICAg
ICAgIGZvciAoaW50IGogPSAwOyBqIDwgdGlsZXItPm51bVRpbGVzWSgpOyArK2opCi0gICAgICAg
ICAgICBsYXllci0+c3luY1RleHR1cmVJZChpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2Jq
ZWN0Pih0ZXh0dXJlSWQrKykpOworICAgICAgICAgICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGll
cyhpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2JqZWN0Pih0ZXh0dXJlSWQrKyksIEludFJl
Y3QoMCwgMCwgMSwgMSkpOwogCiAgICAgcmV0dXJuIGxheWVyLnJlbGVhc2UoKTsKIH0KQEAgLTEz
NCw3ICsxMzUsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVja2VyYm9hcmRpbmcp
CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRpbGVzWDsgKytpKQogICAgICAgICBmb3Ig
KGludCBqID0gMDsgaiA8IG51bVRpbGVzWTsgKytqKQotICAgICAgICAgICAgbGF5ZXItPnN5bmNU
ZXh0dXJlSWQoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4oMCkpOworICAgICAg
ICAgICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9y
bTNET2JqZWN0PigwKSwgSW50UmVjdCgpKTsKIAogICAgIC8vIEFsbCBjaGVja2VyYm9hcmRpbmcK
ICAgICB7CkBAIC0xNTUsNyArMTU2LDcgQEAgc3RhdGljIGJvb2wgY29tcGxldGVseUNvbnRhaW5z
KGNvbnN0IFJlZ2lvbiYgY29udGFpbmVyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIHJldHVy
biB0ZXN0ZXIuaXNFbXB0eSgpOwogfQogCi1zdGF0aWMgdm9pZCBnZXRRdWFkcyhDQ1F1YWRMaXN0
JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xh
eWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRpb24sIGNvbnN0
IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpCitzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gZ2V0UXVhZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIEludFNpemUgdGlsZVNpemUsIGNv
bnN0IEludFNpemUmIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0
aW9uIGJvcmRlclRleGVsT3B0aW9uLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KQog
ewogICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVT
aXplLCBsYXllclNpemUsIGJvcmRlclRleGVsT3B0aW9uKTsKICAgICBsYXllci0+c2V0VmlzaWJs
ZUxheWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KTsKQEAgLTE2Myw2ICsxNjQsNyBAQCBzdGF0aWMg
dm9pZCBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgbGF5ZXJTaQogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRR
dWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAgbGF5ZXItPmFw
cGVuZFF1YWRzKHF1YWRzLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgIHJldHVybiBzaGFy
ZWRRdWFkU3RhdGUucmVsZWFzZSgpOyAvLyBUaGUgc2hhcmVkIGRhdGEgbXVzdCBiZSBvd25lZCBh
cyBsb25nIGFzIHRoZSBxdWFkIGxpc3QgZXhpc3RzLgogfQogCiAvLyBBbGlnbiB3aXRoIGV4cGVj
dGVkIGFuZCBhY3R1YWwgb3V0cHV0CkBAIC0yMDAsNyArMjAyLDggQEAgc3RhdGljIHZvaWQgY292
ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRl
clRleGVsT3AKIAogICAgIEludFNpemUgbGF5ZXJTaXplKDEwMDAsIDEwMDApOwogICAgIENDUXVh
ZExpc3QgcXVhZHM7Ci0gICAgZ2V0UXVhZHMocXVhZHMsIEludFNpemUoMTAwLCAxMDApLCBsYXll
clNpemUsIGJvcmRlcnMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdl
dFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBib3JkZXJzLCBJbnRS
ZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwogICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVy
UmVjdChxdWFkcywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKIH0KIFdJVEhfQU5E
X1dJVEhPVVRfQk9SREVSX1RFU1QoY292ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMp
OwpAQCAtMjE2LDcgKzIxOSw4IEBAIHN0YXRpYyB2b2lkIGNvdmVyYWdlVmlzaWJsZVJlY3RJbnRl
cnNlY3RzVGlsZXMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0CiAKICAgICBJbnRT
aXplIGxheWVyU2l6ZSgyNTAsIDI1MCk7CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRR
dWFkcyhxdWFkcywgSW50U2l6ZSg1MCwgNTApLCBJbnRTaXplKDI1MCwgMjUwKSwgQ0NMYXllclRp
bGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICBPd25QdHI8
Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVh
ZHMocXVhZHMsIEludFNpemUoNTAsIDUwKSwgSW50U2l6ZSgyNTAsIDI1MCksIENDTGF5ZXJUaWxp
bmdEYXRhOjpOb0JvcmRlclRleGVscywgdmlzaWJsZUxheWVyUmVjdCk7CiAgICAgdmVyaWZ5UXVh
ZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKIH0KIFdJVEhfQU5E
X1dJVEhPVVRfQk9SREVSX1RFU1QoY292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNUaWxlcyk7
CkBAIC0yMjgsNyArMjMyLDggQEAgc3RhdGljIHZvaWQgY292ZXJhZ2VWaXNpYmxlUmVjdEludGVy
c2VjdHNCb3VuZHMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3AKICAgICBJbnRTaXpl
IGxheWVyU2l6ZSgyMjAsIDIxMCk7CiAgICAgSW50UmVjdCB2aXNpYmxlTGF5ZXJSZWN0KEludFBv
aW50KCksIGxheWVyU2l6ZSk7CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRRdWFkcyhx
dWFkcywgSW50U2l6ZSgxMDAsIDEwMCksIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5v
Qm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIElu
dFNpemUoMTAwLCAxMDApLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRl
eGVscywgdmlzaWJsZUxheWVyUmVjdCk7CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0
KHF1YWRzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKIH0KIFdJVEhfQU5EX1dJVEhPVVRfQk9SREVSX1RF
U1QoY292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNCb3VuZHMpOwpAQCAtMjQwLDcgKzI0NSw4
IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIHRleHR1cmVJbmZvRm9yTGF5ZXJOb0JvcmRl
cnMpCiAgICAgSW50U2l6ZSB0aWxlU2l6ZSg1MCwgNTApOwogICAgIEludFNpemUgbGF5ZXJTaXpl
KDI1MCwgMjUwKTsKICAgICBDQ1F1YWRMaXN0IHF1YWRzOwotICAgIGdldFF1YWRzKHF1YWRzLCB0
aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIElu
dFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCB0aWxl
U2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJl
Y3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHF1YWRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVF9FUShxdWFkc1tpXS0+bWF0ZXJp
YWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFkU3RyaW5nIDw8IGk7CkBAIC0y
NDksNiArMjU1LDI1IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIHRleHR1cmVJbmZvRm9y
TGF5ZXJOb0JvcmRlcnMpCiAgICAgICAgIEVYUEVDVF9ORShxdWFkLT50ZXh0dXJlSWQoKSwgMHUp
IDw8IHF1YWRTdHJpbmcgPDwgaTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWQtPnRleHR1cmVPZmZz
ZXQoKSwgSW50UG9pbnQoKSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgICAgICBFWFBFQ1RfRVEo
cXVhZC0+dGV4dHVyZVNpemUoKSwgdGlsZVNpemUpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICAg
ICAgRVhQRUNUX0VRKEludFJlY3QoMCwgMCwgMSwgMSksIHF1YWQtPm9wYXF1ZVJlY3QoKSkgPDwg
cXVhZFN0cmluZyA8PCBpOworICAgIH0KK30KKworVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwg
dGlsZU9wYXF1ZVJlY3RGb3JMYXllck5vQm9yZGVycykKK3sKKyAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKKworICAgIEludFNpemUgdGlsZVNpemUoNTAsIDUw
KTsKKyAgICBJbnRTaXplIGxheWVyU2l6ZSgyNTAsIDI1MCk7CisgICAgQ0NRdWFkTGlzdCBxdWFk
czsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJl
ZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxp
bmdEYXRhOjpOb0JvcmRlclRleGVscywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgQVNTRVJUX0VRKHF1YWRzW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRl
bnQpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICAgICAgQ0NUaWxlRHJhd1F1YWQqIHF1YWQgPSBz
dGF0aWNfY2FzdDxDQ1RpbGVEcmF3UXVhZCo+KHF1YWRzW2ldLmdldCgpKTsKKworICAgICAgICBF
WFBFQ1RfRVEoSW50UmVjdCgwLCAwLCAxLCAxKSwgcXVhZC0+b3BhcXVlUmVjdCgpKSA8PCBxdWFk
U3RyaW5nIDw8IGk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCmluZGV4IGJkYmY3YmIwOTMw
MThiZDZhNmIzMDdmZjhiZTM4MTQxNWY1OGE2NzMuLjkyMmM4YzE4ZWMyODViZGYxOWVlMDYxN2E4
OTMxZTZjNGZmZTM2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgVEVT
VChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3ROb3RQcmVzZW50QWZ0ZXJO
b25PcGFxdWVQYWludCkKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBv
cGFxdWVSZWN0KTsKIH0KIAotVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1
ZVJlY3ROb3RQcmVzZW50Rm9yT3BhcXVlTGF5ZXJXaXRoT3BhcXVlUGFpbnQpCitURVNUKExheWVy
VGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVjdFByZXNlbnRGb3JPcGFxdWVMYXllcldp
dGhPcGFxdWVQYWludCkKIHsKICAgICBQYWludEZpbGxPcGFxdWUgZmlsbE9wYXF1ZTsKICAgICBS
ZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gdXBkYXRlcjsKQEAgLTE0OSwyMSArMTQ5LDIxIEBA
IFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZv
ck9wYXF1ZUxheWVyV2l0aE9wYXF1ZVBhCiAgICAgdXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwogICAgIHVw
ZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKICAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVj
dCk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7
CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJlY3Qp
OwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIo
bmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9
IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVy
LnJlbGVhc2UoKSwgZmFsc2UpOwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKICAgICB1
cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUo
NDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3Qo
KTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShm
aWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpKTsKICAgICB1cGRhdGVy
LT5zZXRPcGFxdWUodHJ1ZSk7CiAgICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwot
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOworICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBvcGFxdWVSZWN0KTsKIH0K
IAogVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3ROb3RQcmVzZW50
Rm9yT3BhcXVlTGF5ZXJXaXRoTm9uT3BhcXVlUGFpbnQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmY3YTk1MjhlMTQyNDc4
ZDVhYzM5YmQ4MTU2YTAxMzY0MjNmNGZjMC4uZWUyMTgzZTE3ZThhNTAyYmY1MjRiOGJlM2VmYzM3
Y2UxNjI0ZGI4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTIwICBEYW5hIEphbnNl
bnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIHJlZ2lv
biByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGlu
dXgvY29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3Rl
ZC5wbmc6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbWFjLWxlb3BhcmQvZmFzdC9yZXBh
aW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmc6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkL2Zh
c3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0
ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3Jl
cGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBu
ZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3JlcGFpbnQvYmxv
Y2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZzogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvcmVwYWludC9i
bG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2Fw
LWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2Fw
LWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQudHh0LgorCiAyMDEyLTAxLTE5ICBBYmhpc2hl
ayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4geHNsdFBh
cnNlR2xvYmFsVmFyaWFibGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS1saW51eC9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1pbi1jb21wb3NpdGVkLWxheWVy
LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NvbXBv
c2l0aW5nL2lmcmFtZXMvaWZyYW1lLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nCmlu
ZGV4IDFkNmYwM2UxODk3YTg1NWQzMWJkZDkyMjViYzIzYjgxNGQyY2RkMDkuLjExNDJmYmFmYThm
YjY0YzZiMWY5NmE1YjJkZjU4YTU0NDEwN2E2NzMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAzNDYzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEEl
QFdzJGxIYG9rPG19P29UIXRoPQp6THhhPmJnSCNLUDZhITBSXkF0bCVeSGZ0NEwhO3pHQk5LQkko
PT9gPURYVn5uTnFWfENoRSZYWGQpS3h8RHFFQHsKemFLPEdta0dIRkNIZTZmSyY/Q0VIWDV7SSZ2
SiotbG1+TFJQNCl3YnV5eURkM1lFPV48bjs+Tmlee25vJnBRVFE9Cnp8TXZaaF50LSU7Zm5tWXRe
KmgtYTc8UU8zYVdnMldaRDMkWCFlbz5teEJ2Q0VHTUhoYCk3eThMOFVGTiY+TSU2Uwp6SUthZnYh
SEwxeGApTmoteFgkJFpfOTxLcStoO0REVSk7fnw7ZVheb3NNO0k5d3tnXk9fVHIhT19JQT1uaVFe
eEUKejtEK1N0dDY2KkZedUBaTDdYN1ImV31OZigkTj9zY2B2eUY+LSt1ZDMlJUluKz55I2soKmth
JChJb29jKHdkazh+CnohMCtJWiExJWMkSFR9YUFWQEFDZUJ4bVMjPn1HOXp0KzFpTmAoc0dCNiEj
NyRDaGk+Xl48YDYhRzN+UXpXSWdrfgp6R0I4dTtmJW9TSGZlQ2UmUDByZGZJaF5EWVZ7cV9FVX1R
TUwwJVYqcWpYMDNnbU49dURyR1p+QEwmTUVHX3dWbjIKenk1KD0ofEJJNnV3JlZ5aEt+JXcmazF+
KTBaIXxQVUx4WXdYPGxRcWxoOD9sTHxKSjx8V1V2RWZgbjFoQWJMUmQzCnpQKzstcnZBVFdUcEMz
flM4SH4xWkZrJm1jRnczKGNDUUBlcG91TUZmK1coKCstI094cyNzQn04NEdNJVZKZiQjWgp6eHJg
fXRfcEJ8JGZ1eE5RWl8wTXR8TnJzZmdUWndiaFVkWiYyVjhJRG5FQTd9QTVPZ0kkIzU+Y1RZeTAh
alRLbXEKelpzVGFvUkAlX2Vvek58P0xrJTMjVks1JTNtPDM1RWZmVkRZTFdXcTdRYEh5YyNyekMr
KjRAb0J8SVdjNkAwN3J9CnpgRFdoc2U5SyZrdypHbDYzc054eU98T1hrKzRvMU9afVJ1QiRVUl5K
Ui1WdGs/XiR8OV51dG40b2QtJlBCMTJ3cgp6e2RtUDlSLWlkPW1zYyFmeEkrUz94SnhZS2J3QH0m
WDMmMiVZd0NRPzAhMD12Z1p7NW9mMlUzNztYQXdgWm9QZT8KelQqSEx0NVgmRTEqeEF8MVN0bzlk
K05zNjtxaWZuXzZXTzBIdTUrakJAMyl0PWBGcmo0e1RfeiVZcnxGeGhiQF9RCnpgc3c5XkNWeSpR
ZSRHIW4lTXhIKyViRzNHdypBbGZCOGolJnprZzV1RkpfVXB8OS15Tj80OFJXPGReTmZFNF5RQQp6
aldeQDx3QDAhITk0cXx0bXQpU2UlPUNoSG5oYlVxSXZaMmQxdVdYJTNxMDYkdnxSQXRLMGxefSFZ
OGB0N3tiQHsKej0jO1gpLSpvJEpwS09lOUZZQkVKSXZjS3Q3VzVvciVKVVZEYypSdlE3cyZHWnl4
P055RUVCUSQ/K1l4PipkRSRoCnpfZ3tGUGUybkNHUyFRJDkrZSRZNzRnQHs4d28/MVN3Skc4fHZ2
biRfeDN7K152dEl7PmlNZDlkUHhDUlJlQG9VaQp6KyU4RTwwRDdzNkA0PlBrZTJuWEVjUSRUflRZ
cCFXV2xvd3pvQUFCd0pSZSRoYHR4Nz90JE8oOD5HJFEkJWtON2EKenp4WjNQcCooVkpuRUk4Zz98
KUJPe18/cl57Q2V3YndUNEBye2gxI0UqY2NqO0E5ZGVoV0R0bThWQSVMUVM1Uil9CnpGR2h4ant+
TWNGODNjclpWdXA/QWpFJilPUTwpaEtYcyZAWkk3YUt0KEs/ZnNidGI0JEpIcGJ+S2tpX3p5TjFT
PgpTKVYyYjlSdCVvNWVsRntyNX1FLTJ2YUFSSQoKbGl0ZXJhbCAzNDY0CnpjbWVBU0BOPyhvbEh5
YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UbjV0PQp6IXhU
ZTklTXwwWilNUUtaTDxfU2QzayEyfE9WaE1lUXl7fVFJWFpoXkQ5fHR8UFohNktpYUJyWj8jLTNY
bVRDd3IKelN8fSVSPnd3dDtESGVraV9NRWlyb3RHSThHc1pBYFoqVWVwUCs9elU7T2t6WXR3S0xO
b0ZfaGFOaUptQkA3SG5zCnp6UGJKQiV2b1gjMz89X2V6WFAzZC03U0hVO1J1VHVnTSR3UzxJVEd0
PykmWlh4ZihYdCUmdWw9KnVTeGZsfGV1Xwp6ZmBQJVg1dUxGeVQ8LUZScmwrNU54QkQ9REZ1Vk12
Xz87bGJLWU1NTStVb21hNUEoeGJIZzJ3cykpOU1iVlB8SjIKelhQdnc/WVZHeWNOMFQ8aj0tS0Ql
SEVmPE01eTl8V3gtRF97LUZmd1YyYk9NaDx2NWNwYkEwPWglVm9QfGtBRDw/CnojPmx+YGxPVlZM
NGJRdzl3RjlqSkZyJFNkNHpMeihTMTZFVzVpOEp+X3NUMW9HMjlgNlFUKlpnYihiT3pnc1gzOAp6
Xy1VKUopeXJDd0RRQ2lVQ1YkcWxvJGRAOGtxNE89SXlpTTA4ZkZ7LUdJcHxZJnAyenFRezJ6K0w2
SnF3VkR8NmQKenpxaWxYY0teTTdsfkJWcFRfPm4yeGJqZzNhXlFgSSMlTzNqdkpwKkUhaX5Ga20+
SVRiQDR0V0VtZ3p2ZEsqV0lACnp2KU59cSVnZ2IjKlorQlB5a0NDNDV1ZHtgRi0yXnA3aU1gailJ
e0RybFZlelM+WFpIYj1XLThFfDlFfUJ7d3kjTQp6LTBfc2NuQl85MiRqMDN9KiU9fnEjSmNiMWVT
YT01RkRMaEc3UiFTZ0NoaT5edihHK3pgSmxrIWo1WChocEUtZ3wKejNgZj1nJWg3e2tpVXEjRnFF
ISRtYXtVTT5xfGIwY2NgaCgldXd2fDAkV1JNJVlXbV8kLWFFI0krZ29xSGVKMDJGCnp6P25sUSFS
Kz9pWkBTQlE0fVo4Z25QQ2ZOcHErN2pjaT5PbG99UnpHKCtARG1DfT45PF8lbTwmbHdDfndPZDQ1
Wgp6VEl7Pk1WajFKLTkkP1p0OFhVZS1gdkRoKyZWIX5FKzdHTmFBb2JYQGpadGVxODhobSY5QUo5
M0Y+ZHwrUG0+Tk4Kek4/ZCNXUnM5VUp6JFkyNzx6K0kqZmdvOVpPXys5Z0RyNVlgcUZLdzc8Xk5W
YWVEbjFDXjUqNkR0TnpYd2U2YUlzCnpSX1VSeERAOGtOdFkkMm11VjRHYD9WNmJrUzxCWmEwRyZQ
VWU8YWBHZzhLVVVQeHFPUXp4bj9BWT98P1JrdzBoaQp6d3BUeUMtYytqalZBdEZWLWZJP3Bge1d4
aCtxfnNEWFVscWstTzZ5bzh5PT9UQTdxKGd3KlN5T2JwTl8xZ0hHUmAKenFtbUNeTz5KRGQ/bT13
WD96PGJDdmxuZV9rZTxSaVo1TEREI2ZTcklHbnU/JjhQe0txSU4lR2N2I29xNUFBOXMhCnptYWwh
TXlUJGVRXkBsejtZZF93WHs5c3YxYmp4eDEyKENMO3JMMT5tZU5ybSNXcXRxWSEtcy01NGB1PHdn
emFkNQp6PTdvcEBeUkl7JiU9WTcxYjJhUGdJbVNDOF9aMUo2U3tyVi1fSWhofFFeUkdSIXYlK2Em
dHUjLTtwcz07ejQ3e1UKel9XdD0tXjVJTUxWfmVXJHRSTTdOVXd6Zkc+c1Jna1BiUG5CVVZoRmBL
ZyR3ZXtuM3pEP2kyJDxmbHRqdVloWWBSCnpuP2QyKktIV3BnO3IwditBTUM/NkZmYiY2I01DZXQt
JWhQQVZxbWFuNkBAaThYaWAjd249KyMma0ppUkN0Yz9lNApkOG9OPT9ENypLciRAIWBSN0dSJS0h
UEN7eFd0fiQoNjk4Vz1RNSptTwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLWxpbnV4L2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0
ZWQtbGF5ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGlu
dXgvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1l
eHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNzVhNjg5ZDlhOWY4
MDkwZGY3Mzg1ZmUwNDUwNDRkNGUwYWE5NWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVy
YWwgMjk1Nwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBX
cyRsSGBvazxtfT9vVG19bjYKejB9RCRkaSE/SmNHbEx8Zkc9bnJsQlpGajFMLVNOcTEyZEU0d0Ir
ZTA0eVo2TmFMYXFUSUVHWnJkMyhuKEU3VmNJCno7Yks7eVl2RihFMnw2ZHNDZ2BfNGFNfCU9X2ha
V3Mmcko3KG5DOEZUJWcpZW5aaEFVRDFIKkAjOTZBZ1FHWSY4QAp6YlpgellNczRqa2hXaDhYVSgw
dER7UVlnMl91PW87PEQxPFg4dmFrPTY9UUpsTm5tNishaCk2WVg0QyhLdnVFQk0KekgjYXN1OWx3
RjA7cXNqdzJYN2Y/VXotKkEtaXc+emZyeG5DaEhKQmFaYUJgd1V+IV5WZFg0U29gPEc2WTNOVG4p
CnpZO0Y4JUFeMXcwO1ghfm8rY2taPzdLUV44XkxXO25aY2N4SG9HdHNjNCNOVy1iR3hHWF9wY3Yo
PmNoYnheWlhkbAp6OVMxSkwtSm48OXtQZChLTHhHKzJAUVF7KG8ydTZDe2t9UCFmI0Y5OyZJU2dD
QnFuWUsxK2BKZVhkc05IZ3diM3UKbG5oUXBBIUR1Y1JSPUwyUWFoc20od2t0PVhQNjZCMzQ0JHJq
RjYqMlVuZ0RgSFlIfFBvCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbWFjLWxlb3BhcmQvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9z
aXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1t
YWMtbGVvcGFyZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVk
LWxheWVyLWV4cGVjdGVkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIzMzEx
ZjgzYzlmZTA1YjIxMjk4YWRjNGI0ZTE1YjYwYjY3NmFkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKbGl0ZXJhbCAzMzk4CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFs
WWJwUnpua0I5Z0NDTTQ3JD1TdUZ4ZU8ragp6bVBzalRzbVpDdlcoSX5TQ01tey1yV1dSQDdSZ0RM
MkMyclRpM1VlJlUwTjkhY3k0JlFJRUdacmQzKlB1RlNEVjUKeiEkczNZTi1xQ0o2fSp4eFQyejkj
ZXo8K0FwOG4/SUB0VSgwPCE4XnQwNC1fVWV3UTZjb2x8c1JVfSklSlV9UnUwCnpWcSMlbklLZCZu
ekBWVCFHNlg7R2BeXy0qZUUhPDZeSntBVnlzPXxxVjM3VjEmZDAheiFvdEQ4RmhOaihmeCpHOAp6
ZnF7V1JrYFhBQyhwU2xTP2UzWSFGUWM7Rys1cUVFPUpeV0Y2Szcod1czUjhaekdpd30zSylWKz95
TndLOD9GYTMKejdSQiR9I2NTdGQmJW0mdEVUckwjJkdpbElQWEZhK1V8MW41cy1RUUluYythKGFo
NE4le3pNJlFWcmFOJCRvT2VTCnpeX2YzdzZZc3VuPGA0dWJsS0NuLTtyZHRZKkFXYTE3cCY1bGZS
P3tlOX5tKCt7MVY+Z3c2cnBMVTxfSWBiN0QoVwp6U1gwYGxBWD9UTjRVb3xRZnRTT2hpRDVKYGoz
eCRMdCg0SytGYDdHdVFTU0szeD1jLUhefGdqNDIwJXxTYylJJHoKSnRhRDBlMHN5dmUqSDhjZQoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFy
ZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4
cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFy
ZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4
cGVjdGVkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQwZThjMTk2NzliZTFi
MTkyYWVjYmQ2YTI1ZWRkMThiYzA1MmI5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJh
bCAzMzk2CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFsWWJwUnpua0I5
Z0NDTTQ3JD1TdUZ4ZVE1Mwp6N0tVYWk3UmVUQUNhS0FXVyl7VzxyYiZqMHNqMjNNN003TiZXK3Z2
RlNEcztEO0pOMU07dXVtZj1qfmxYS1cwWSgKemhKKD5aeCZ7OCVHZH1YPFZaMCRXO2sjMDlYdnNP
WEo9YzJQbmk+fX5HQkJ7ckU4Xz1SSE9JTEROSj1zP0YpKmFDCnphNDt9VDVMOTRiYUJ2JExnM2xf
eUdmY2YrelZfPzxKJHF+MyRUMmNCQGF+eilqM1lRXkNmQmpQUEo4eVJXYk18bgp6SzQ1U2l4NkVR
VEdRSipsejRVY288clFHaTMwUD0zKU5UNjl6fGUzamtnPj5tPWRZLW04K0V8SWU3a35TWDYybTMK
em80XyEyYyl4PC08SSFSVWg4d1NFRiNOMThjKj9AZno+c3lFPHdXaiNMKng3RDV3SEpBR0I5TXdl
Nj81RGV9NFUoCnpXSlUmdSpFNHY1TXNKd1UwRXt2dENLZCpVNkM0NXozPH1CKUt4PXdOMXFYZUFv
UzhOQXJZK0V3MSNIcnpAaXYtZgp3TT5Gd2cwWEFCQWs1Kml4SFRoXzVJOWVNTHRfP3FQc3ViejBa
az8yVm8mZzl2VUh4M3ZJVkNnITAzPXhVbTtlOSgKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4t
Y29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS13aW4vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1s
YXllci1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNWI2ZDZi
M2U4MjdjZGMxY2FkNTU2MjYxMjk4Mjg3NGQ1OWE2MTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmxpdGVyYWwgMjkzNAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWhe
aGxBJUBXcyRsSGBvazxtfT9vVG41Nz0Kel5UZm15dnFUZTFMbFlDREJ5O2w9KThyJlczaitoPUxg
JDx8JWNORCYzOTx8ZisjSEBSanYqQ3UtcmgwSEo4VTRwCno7QW5XRnxJZEg8QUhJb1AlJDsyM2pB
Q0xoJnhCfkxrR2FEc1ErJHFAcTJiKXx0SVB9eGQhIXAjODNjcVE3I0l3UAp6N2h+aTMpJEJpSi1+
UV88KiFTXzVxZ2xjSitFYG1BaENqaChfYFNPRT83ZjNrS1ByREBvJTRScXopK0Y0fEE1cnYKej9X
QG4tWEpGe1FAIXE5a29pOy1RPnMjQE48QXB0bTwqVz5BdmZtM1VHOHx+eWJ8PUJzTFhlM2VgPEJz
JGJMdmhyCnpmaWh8UGcmK1IzVGRAKFNLNm1GcUNXZVRhMmJkVC1JQ1U1clpsd0tCXzw1SSRBITB0
Uzc9d2RQMHdjb19tUWU7Ugp6MUw0QDUmI3hwSTgxOGtBMktaPVY4X2pXfXJPandBN3xqS3Z4bk93
YWY7WkJ2SkBSYGtsemVKezRRVTJYUzNqM14KSFA2PHJfRnsqNFYKCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlv
bi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29t
cG9zaXRlZC1sYXllci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDIwMTBlNzEzOGQ4OWJiZDQ3OTk1ZDI2MTAzNWM4NmI3MWY5MWUzZDQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0td2luL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQt
bGF5ZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
Ci1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgw
LDApIHNpemUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDUwKSBzaXplIDc4
NHg1NDIKLWxheWVyIGF0ICg1OCw1MCkgc2l6ZSA3MzR4MjAKLSAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDUwLDApIHNpemUgNzM0eDIwCi0gICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgN3gxOQotICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzogImEiCi1sYXllciBhdCAo
NTgsNTApIHNpemUgMTAweDEwMAotICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQg
KDAsMCkgc2l6ZSAxMDB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCi0gICAgUmVuZGVyQlIge0JSfSBh
dCAoMCwwKSBzaXplIDB4MTkKLXNlbGVjdGlvbiBzdGFydDogcG9zaXRpb24gMCBvZiBjaGlsZCAw
IHtCUn0gb2YgY2hpbGQgMSB7RElWfSBvZiBjaGlsZCAxIHtESVZ9IG9mIGJvZHkKLXNlbGVjdGlv
biBlbmQ6ICAgcG9zaXRpb24gMSBvZiBjaGlsZCAyIHsjdGV4dH0gb2YgY2hpbGQgMSB7RElWfSBv
ZiBib2R5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3Jl
cGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBu
ZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvcmVwYWludC9ibG9jay1zZWxl
Y3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2
MGZmNTA0YjM3YjBiYmMwMzc1YTY1OGQ5NThkMDE3MmI4OGQ2MDkKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDI4NjUKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhs
QSVAV3MkbEhgb2s8bX0/b1RuMjtHCnpSNl8kM3FlUD01diY2SkM2VSMoSGxRZ3JXI0ZWN3VsO2xM
eUcoKk1TTnZqd2J4REk9fElFR1pyZDMpbV49VjFvewp6N1JVTDhabH47N2omQThYYyVpXiFSYWU1
aXZ1a0dsV01IYFBeUEw8NiF2Xzs0WlV6T2w0R2F1UCE7Rz4yRjd2PFEKeklvYVBeWmQ+JTx2fUko
N0pKcm19QVJydlV6K2wpbyR7MkVpNU4qNzxud2pDaTspLUZJUkVKczQ4fS1pY0RAe2teCm1iVG0k
ZldpdyRrVkdxS0RFaU57YmNYamZzUSNYTmFVPE9aREtiTGgqMn43Wn4kSk57YgoKbGl0ZXJhbCAw
CkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3JlcGFpbnQvYmxv
Y2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMDEwZTcxMzhkODliYmQ0Nzk5NWQyNjEwMzVjODZiNzFmOTFlM2Q0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9yZXBhaW50L2Jsb2Nr
LXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0
ICg4LDUwKSBzaXplIDc4NHg1NDIKK2xheWVyIGF0ICg1OCw1MCkgc2l6ZSA3MzR4MjAKKyAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDUwLDApIHNpemUgNzM0eDIwCisgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgN3gxOQorICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzog
ImEiCitsYXllciBhdCAoNTgsNTApIHNpemUgMTAweDEwMAorICBSZW5kZXJCbG9jayAocG9zaXRp
b25lZCkge0RJVn0gYXQgKDAsMCkgc2l6ZSAxMDB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAg
UmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MTkKK3NlbGVjdGlvbiBzdGFydDogcG9zaXRp
b24gMCBvZiBjaGlsZCAwIHtCUn0gb2YgY2hpbGQgMSB7RElWfSBvZiBjaGlsZCAxIHtESVZ9IG9m
IGJvZHkKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gMSBvZiBjaGlsZCAyIHsjdGV4dH0gb2Yg
Y2hpbGQgMSB7RElWfSBvZiBib2R5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123360</attachid>
            <date>2012-01-20 12:27:38 -0800</date>
            <delta_ts>2012-01-23 08:08:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120120152736.patch</filename>
            <type>text/plain</type>
            <size>55643</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThlYmM3OTgwMjgwNTc3
OTNkZjRlYzhhODNmNzFmOTBlMWZiYzQzMy4uODU1OTQyMWZjZDdhMTZiMGM1ZGM4OWJmZGQzYzdj
ODE1YmM0ZjcyNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAxLTIwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDUXVhZEN1bGxlclRlc3QuY3BwIGFuZCBDQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6b3BhcXVlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0JsZW5kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yRHJhd1F1YWQ6OkNDU29saWRDb2xvckRy
YXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdhYmxlVGlsZTo6b3BhcXVlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6OnNldE9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aWxlZExheWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisKIDIwMTItMDEtMTkgIEFi
aGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaCBpbiB4
c2x0UGFyc2VHbG9iYWxWYXJpYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjg4
ZDU2ZjA0ZGNkNzBjZTNjYWU2NzZmYTNkNGQxMGVhZjM0ZGZhNy4uNGRjMGFjMTZkNTUxOTRmOWMx
YTExYmNhY2E4ZmFiMDJmOTE2Y2ZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxMi0wMS0yMCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbY2hyb21pdW1dIFVzZSByZWdpb24gcmVwb3J0ZWQgcGFpbnRlZCBvcGFx
dWUgZm9yIGRyYXcgY3VsbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzYwMTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdl
YktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OnNldE9wYXF1ZUNvbG9yKToKKyAgICAgICAgKFdl
YktpdDo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OkJsZW5kU3RhdGVDaGVja0xheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3REcmF3UXVhZDo6VGVzdERyYXdRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3REcmF3UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDVGls
ZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UXVhZHMpOgorICAg
ICAgICAoV2ViQ29yZTo6Y292ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNUaWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c0JvdW5kcyk6CisgICAg
ICAgICogdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VEVTVCk6CisKIDIwMTItMDEtMjAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtjaHJvbWl1bV0gYWRkIFdlYkRldlRvb2xz
RnJvbnRlbmRDbGllbnQ6Om9wZW5Jbk5ld1RhYiBmb3IgdXBjb21pbmcgV2ViQ29yZSBjaGFuZ2Uu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CmluZGV4IDBkOTdlNTJhZWRlMGY5ODBhZGExNWRlMGExNGExZDI4ZDg2YTFlODguLjBlOWE0NTJk
OGYzYjIyYTkzNjI0MWEwZDg1ZGQ3YWI4ZTA4MWQ4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC04Miw4ICs4Miw2IEBAIHZv
aWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0CiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNp
emUodGlsZVNpemUpOwogCi0gICAgYm9vbCBsYXllcklzT3BhcXVlID0gbV9jYW52YXMub3BhcXVl
KCk7Ci0KICAgICBtX2NhbnZhcy5yZXNpemUoY29udGVudFJlY3Quc2l6ZSgpKTsKICAgICAvLyBB
c3N1bXB0aW9uOiBpZiBhIHRpbGVyIGlzIHVzaW5nIGJvcmRlciB0ZXhlbHMsIHRoZW4gaXQgaXMg
YmVjYXVzZSB0aGUKICAgICAvLyBsYXllciBpcyBsaWtlbHkgdG8gYmUgZmlsdGVyZWQgb3IgdHJh
bnNmb3JtZWQuIEJlY2F1c2Ugb2YgaXQgbWlnaHQgYmUKQEAgLTkxLDExICs4OSwxMCBAQCB2b2lk
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdAogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpUZXh0T3B0
aW9uIHRleHRPcHRpb24gPQogICAgICAgICBib3JkZXJUZXhlbHMgPyBQbGF0Zm9ybUNhbnZhczo6
UGFpbnRlcjo6R3JheXNjYWxlVGV4dCA6IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpTdWJwaXhl
bFRleHQ7CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRlcigmbV9jYW52
YXMsIHRleHRPcHRpb24pOwotICAgIGNhbnZhc1BhaW50ZXIuc2tpYUNvbnRleHQoKS0+c2V0VHJh
Y2tPcGFxdWVSZWdpb24oIWxheWVySXNPcGFxdWUpOworICAgIGNhbnZhc1BhaW50ZXIuc2tpYUNv
bnRleHQoKS0+c2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7CiAgICAgcGFpbnRDb250ZW50cygq
Y2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKIAot
ICAgIGlmICghbGF5ZXJJc09wYXF1ZSkKLSAgICAgICAgKnJlc3VsdGluZ09wYXF1ZVJlY3QgPSBj
YW52YXNQYWludGVyLnNraWFDb250ZXh0KCktPm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpOworICAg
ICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0gY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5vcGFx
dWVSZWdpb24oKS5hc1JlY3QoKTsKIH0KIAogdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVVcGRhdGVyLmgKaW5kZXggMTc5ZmVhNmUxMmJmMTAzYzViMDc0MzVjZjI0YTNhNDhm
OGNkOTMyMy4uMDQ5ZmQyNDA4M2Y0Mjc1Y2U1MjZkNjFiODhkM2UwNTU1NjNlZjBhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNzEsOCArNzEsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gVGhpcyBmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb21wb25lbnQgb3JkZXIgaW4gdGhlIHNhbXBs
ZWQgdGV4ZWwuCiAgICAgLy8gSWYgdGhlIGZvcm1hdCBpcyBUZXhlbEZvcm1hdEJHUkEsIHZlYzQu
eCBpcyBibHVlIGFuZCB2ZWM0LnogaXMgcmVkLgogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9y
bWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KSA9IDA7Ci0gICAg
Ly8gVGhlIHxyZXN1bHRpbmdPcGFxdWVSZWN0fCBnaXZlcyBiYWNrIGEgcmVnaW9uIG9mIHRoZSBs
YXllciB0aGF0IHdhcyBwYWludGVkIG9wYXF1ZS4gSWYgdGhlIGxheWVyIGlzIG1hcmtlZCBvcGFx
dWUgaW4gdGhlIHVwZGF0ZXIsCi0gICAgLy8gdGhlbiB0aGlzIHJlZ2lvbiBzaG91bGQgYmUgaWdu
b3JlZCBpbiBwcmVmZXJlbmNlIGZvciB0aGUgZW50aXJlIGxheWVyJ3MgYXJlYS4KKyAgICAvLyBU
aGUgfHJlc3VsdGluZ09wYXF1ZVJlY3R8IGdpdmVzIGJhY2sgYSByZWdpb24gb2YgdGhlIGxheWVy
IHRoYXQgd2FzIHBhaW50ZWQgb3BhcXVlLgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRp
bGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxl
ICovLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCogLyogcmVzdWx0
aW5nT3BhcXVlUmVjdCAqLykgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMGQ5NzRmYTYzYTQ0NTdkOWVhYzdj
OGI4NzNmN2U5MWE0ZDI2ODQzYi4uYzlkYWI3MmYxMzJlOGQ5YmI5M2FiMDg1N2MxZDcwNTUwMWQz
ZWNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAg
ICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIpCi0gICAgLCBtX2xheWVySXNP
cGFxdWUoZmFsc2UpCiB7CiB9CiAKQEAgLTU0LDEzICs1MywxMiBAQCB2b2lkIFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UgogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRpbmco
Y29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBsYXRmb3Jt
Q29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KGNhbnZhcyk7CiAgICAgcGxhdGZvcm1Db250ZXh0
LnNldERlZmVycmVkKHRydWUpOwotICAgIHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJl
Z2lvbighbV9sYXllcklzT3BhcXVlKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQuc2V0VHJhY2tPcGFx
dWVSZWdpb24odHJ1ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgmcGxh
dGZvcm1Db250ZXh0KTsKICAgICBwYWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY29udGVu
dFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKIAot
ICAgIGlmICghbV9sYXllcklzT3BhcXVlKQotICAgICAgICAqcmVzdWx0aW5nT3BhcXVlUmVjdCA9
IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKKyAgICAqcmVzdWx0aW5n
T3BhcXVlUmVjdCA9IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKIH0K
IAogdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpkcmF3UGljdHVyZShT
a0NhbnZhcyogY2FudmFzKQpAQCAtNjksMTEgKzY3LDYgQEAgdm9pZCBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpkcmF3UGljdHVyZShTa0NhbnZhcyogY2FudmFzKQogICAgIGNh
bnZhcy0+ZHJhd1BpY3R1cmUobV9waWN0dXJlKTsKIH0KIAotdm9pZCBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCi17Ci0gICAgbV9sYXll
cklzT3BhcXVlID0gb3BhcXVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYg
Ly8gVVNFKFNLSUEpCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmlu
ZGV4IDdmY2M2MDU5ZjkwZTdkOWQxYzMwMWJmMmE3MGY1MTUyYTQ5MjdiMDAuLmU3N2VlMzA5NDYz
YTA0Yjc0YTBhOTM5YTYyMTcyZGZiOWNhOTUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTU0LDEzICs1NCw5IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywg
ZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiAgICAg
dm9pZCBkcmF3UGljdHVyZShTa0NhbnZhcyopOwogCi0gICAgdmlydHVhbCB2b2lkIHNldE9wYXF1
ZShib29sKTsKLQogcHJpdmF0ZToKICAgICAvLyBSZWNvcmRpbmcgY2FudmFzLgogICAgIFNrUGlj
dHVyZSBtX3BpY3R1cmU7Ci0gICAgLy8gVHJ1ZSB3aGVuIGl0IGlzIGtub3duIHRoYXQgYWxsIG91
dHB1dCBwaXhlbHMgd2lsbCBiZSBvcGFxdWUuCi0gICAgYm9vbCBtX2xheWVySXNPcGFxdWU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cAppbmRleCAxNDMwYTYxNjc4OTMyODM5ZjQwYzViM2QxYjliYjc0Zjc3YTlhNTU1Li5iY2FhNjM4
NWRjMWE3NjhhYTAwMDM0OGJhM2FhZTc0MmZjMDkzYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogCiAgICAgSW50UmVjdCBtX2Rp
cnR5UmVjdDsKICAgICBJbnRSZWN0IG1fdXBkYXRlUmVjdDsKKyAgICBJbnRSZWN0IG1fb3BhcXVl
UmVjdDsKIHByaXZhdGU6CiAgICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+
IG1fdGV4dHVyZTsKIH07CkBAIC0yNzIsNyArMjczLDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgICAgICBpZiAodGls
ZS0+aXNEaXJ0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgdGlsZWRMYXll
ci0+c3luY1RleHR1cmVJZChpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQo
KSk7CisgICAgICAgIHRpbGVkTGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCB0aWxlLT5t
YW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgdGlsZS0+bV9vcGFxdWVSZWN0KTsKICAgICB9
CiB9CiAKQEAgLTQxMiw4ICs0MTMsOCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgLy8g
SG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29u
dGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCiAgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2Fs
IHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50
IGNvbXBsZXRlcy4KICAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRl
eHR1cmVVcGRhdGVyKCkpOwotICAgIEludFJlY3Qgb3BhcXVlUmVjdDsgLy8gRklYTUU6IHVudXNl
ZC4gcmVtb3ZlIHRoaXMgYW5kIHN0b3JlIGluIHRoZSBsYXllciB0byBwYXNzIHRvIGltcGwgZm9y
IGRyYXcgY3VsbGluZwotICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0ZShtX3Bh
aW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCks
IGNvbnRlbnRzU2NhbGUoKSwgJm9wYXF1ZVJlY3QpOworICAgIEludFJlY3QgcGFpbnRlZE9wYXF1
ZVJlY3Q7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0
LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVu
dHNTY2FsZSgpLCAmcGFpbnRlZE9wYXF1ZVJlY3QpOwogICAgIGZvciAoaW50IGogPSB0b3A7IGog
PD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7
ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsK
QEAgLTQyMiwxMiArNDIzLDIyIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAg
IGlmICghdGlsZSkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCisgICAgICAgICAgICBJbnRS
ZWN0IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKKworICAgICAgICAgICAg
Ly8gU2F2ZSB3aGF0IHdhcyBwYWludGVkIG9wYXF1ZSBpbiB0aGUgdGlsZS4gSWYgZXZlcnl0aGlu
ZyBwYWludGVkIGluIHRoZSB0aWxlIHdhcyBvcGFxdWUsIGFuZCB0aGUgYXJlYSBpcyBhIHN1YnNl
dCBvZiBhbgorICAgICAgICAgICAgLy8gYWxyZWFkeSBvcGFxdWUgYXJlYSwga2VlcCB0aGUgb2xk
IGFyZWEuCisgICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVkUmVjdCA9IGludGVyc2VjdGlv
bih0aWxlUmVjdCwgbV9wYWludFJlY3QpOworICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRl
ZE9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIHBhaW50ZWRPcGFxdWVSZWN0KTsK
KyAgICAgICAgICAgIGlmICh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBhaW50ZWRSZWN0
IHx8ICF0aWxlLT5tX29wYXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVSZWN0KSkK
KyAgICAgICAgICAgICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9wYXF1ZVJl
Y3Q7CisKICAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFuZENsZWFyRGly
dHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRhdGVSZWN0Lgog
ICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0
OwogICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IG1fdGlsZXItPnRp
bGVSZWN0KHRpbGUpOworICAgICAgICAgICAgSW50UmVjdCBmaXhlZFNpemVUaWxlUmVjdFdpdGhC
b3JkZXJzID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CisgICAgICAgICAgICBJbnRSZWN0IHNv
dXJjZVJlY3QgPSBmaXhlZFNpemVUaWxlUmVjdFdpdGhCb3JkZXJzOwogICAgICAgICAgICAgc291
cmNlUmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0KTsKICAgICAgICAgICAgIC8vIFBhaW50IHJlY3Qg
bm90IGd1YXJhbnRlZWQgdG8gbGluZSB1cCBvbiB0aWxlIGJvdW5kYXJpZXMsIHNvCiAgICAgICAg
ICAgICAvLyBtYWtlIHN1cmUgdGhhdCBzb3VyY2VSZWN0IGRvZXNuJ3QgZXh0ZW5kIG91dHNpZGUg
b2YgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKaW5kZXggYWNjN2MwMjg2NmNjODk1OTMxNTE5NmIzYjgz
OGQwODg2YjUxYzZkZS4uNTY1NjM1MTg4YzYyNTFkNDMzMjBmNGI4NWQ4OWViMWQ0ZmJmMjI2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRHJhd1F1YWQuaApAQCAtNTEsOSArNTEsMTYgQEAgcHVibGljOgogICAgIGNvbnN0
IEludFJlY3QmIGxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5s
YXllclJlY3QoKTsgfQogICAgIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmNsaXBSZWN0KCk7IH0KICAgICBmbG9hdCBvcGFjaXR5KCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPm9wYWNpdHkoKTsgfQotICAgIC8vIEZv
ciB0aGUgcHVycG9zZXMgb2YgY3VsbGluZywgYXJlIHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQg
b3BhcXVlPwotICAgIGJvb2wgZHJhd3NPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1
YWRTdGF0ZS0+aXNPcGFxdWUoKSAmJiBtX3F1YWRPcGFxdWUgJiYgb3BhY2l0eSgpID09IDE7IH0K
LSAgICBib29sIG5lZWRzQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRRdWFkU3Rh
dGUtPmlzT3BhcXVlKCkgfHwgbV9uZWVkc0JsZW5kaW5nIHx8IG9wYWNpdHkoKSAhPSAxOyB9Cisg
ICAgLy8gRm9yIHRoZSBwdXJwb3NlcyBvZiBjdWxsaW5nLCB3aGF0IHBhcnQgb2YgdGhlIGNvbnRl
bnRzIG9mIHRoaXMgcXVhZCBhcmUgb3BhcXVlPworICAgIEludFJlY3Qgb3BhcXVlUmVjdCgpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAob3BhY2l0eSgpICE9IDEpCisgICAgICAgICAgICByZXR1
cm4gSW50UmVjdCgpOworICAgICAgICBpZiAobV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkg
JiYgbV9xdWFkT3BhcXVlKQorICAgICAgICAgICAgcmV0dXJuIG1fcXVhZFJlY3Q7CisgICAgICAg
IHJldHVybiBtX29wYXF1ZVJlY3Q7CisgICAgfQorICAgIGJvb2wgbmVlZHNCbGVuZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fbmVlZHNCbGVuZGluZyB8fCBvcGFxdWVSZWN0KCkgIT0gbV9xdWFkUmVj
dDsgfQogICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcmVkUXVhZFN0YXRlLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCk7IH0KIAogICAg
IGVudW0gTWF0ZXJpYWwgewpAQCAtOTAsNiArOTcsMTAgQEAgcHJvdGVjdGVkOgogICAgIC8vIHZh
cmlhYmxlcy4KICAgICBib29sIG1fcXVhZE9wYXF1ZTsKICAgICBib29sIG1fbmVlZHNCbGVuZGlu
ZzsKKworICAgIC8vIEJlIGRlZmF1bHQsIHRoaXMgcmVjdCBpcyBlbXB0eS4gSXQgaXMgdXNlZCB3
aGVuIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBhbmQgYWJvdmUKKyAgICAvLyB2YXJpYWJsZXMgZGV0
ZXJtaW5lIHRoYXQgdGhlIHF1YWQgaXMgbm90IGZ1bGx5IG9wYXF1ZSBidXQgbWF5IGJlIHBhcnRp
YWxseSBvcGFxdWUuCisgICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NRdWFkQ3VsbGVyLmNwcAppbmRleCAwNzlhYTdmZjZiMzFiMWI0NmYyYzI5ZmE3MWY1Zjc0ODhi
NGJiOTA5Li5lYTdhMjJlNWVlZjA0OWFhZTk3ZDljYjM5MDE4MTFmMGU4YTgxMjA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTc3LDggKzc3LDEwIEBAIHZvaWQgQ0NRdWFkQ3VsbGVy
OjpjdWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKIAogICAgICAgICBib29s
IGtlZXBRdWFkID0gIXJlZ2lvbkNvbnRhaW5zUmVjdChvcGFxdWVDb3ZlcmFnZVRodXNGYXIsIHF1
YWRSZWN0KTsKIAotICAgICAgICBpZiAoa2VlcFF1YWQgJiYgZHJhd1F1YWQtPmRyYXdzT3BhcXVl
KCkgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkKLSAgICAgICAgICAg
IG9wYXF1ZUNvdmVyYWdlVGh1c0Zhci51bml0ZShSZWdpb24ocXVhZFJlY3QpKTsKKyAgICAgICAg
aWYgKGtlZXBRdWFkICYmIGRyYXdRdWFkLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkpIHsK
KyAgICAgICAgICAgIEludFJlY3Qgb3BhcXVlUmVjdCA9IGRyYXdRdWFkLT5xdWFkVHJhbnNmb3Jt
KCkubWFwUmVjdChkcmF3UXVhZC0+b3BhcXVlUmVjdCgpKTsKKyAgICAgICAgICAgIG9wYXF1ZUNv
dmVyYWdlVGh1c0Zhci51bml0ZShvcGFxdWVSZWN0KTsKKyAgICAgICAgfQogCiAgICAgICAgIGlm
IChrZWVwUXVhZCkKICAgICAgICAgICAgIGN1bGxlZExpc3QuYXBwZW5kKHF1YWRMaXN0W2ldLnJl
bGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAKaW5kZXgg
ZDFjNzI5YTQxNTdkZDIyMTcyYjZjODMxZDc3MDBjYzQyMGI0ZWU2YS4uN2Y2Zjk4MTEzZDZmOGI5
YTcyNzhiOTY3ODBmNjRiYmY5ODQ1NjE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xv
ckRyYXdRdWFkLmNwcApAQCAtMzgsOCArMzgsMTAgQEAgQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OkND
U29saWRDb2xvckRyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3QK
ICAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpTb2xpZENvbG9y
LCBxdWFkUmVjdCkKICAgICAsIG1fY29sb3IoY29sb3IpCiB7Ci0gICAgaWYgKG1fY29sb3IuYWxw
aGEoKSAhPSAxKQorICAgIGlmIChtX2NvbG9yLmhhc0FscGhhKCkpCiAgICAgICAgIG1fcXVhZE9w
YXF1ZSA9IGZhbHNlOworICAgIGVsc2UKKyAgICAgICAgbV9vcGFxdWVSZWN0ID0gcXVhZFJlY3Q7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcAppbmRleCBkZjgzMDUwOGEyYzgy
Y2EyNzhiMzVjY2MwMDViM2QwNzlhMWM3ZmM2Li5iMzViNmY2OWYzYzIwMTZmNGUyMzg3NzNmMGRj
OTRjNjk1NmIwMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCkBAIC0yOSwxMiAr
MjksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDVGlsZURyYXdR
dWFkPiBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRl
eHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRl
eHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBi
b29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJv
dHRvbUVkZ2VBQSkKK1Bhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IENDVGlsZURyYXdRdWFkOjpj
cmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6
ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVu
dHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJv
b2wgYm90dG9tRWRnZUFBKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaWxlRHJhd1F1
YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGV4dHVyZUlkLCB0ZXh0dXJlT2Zmc2V0LCB0
ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgc3dpenpsZUNvbnRlbnRzLCBsZWZ0RWRnZUFBLCB0
b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IENDVGlsZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG9wYXF1ZVJl
Y3QsIHRleHR1cmVJZCwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIs
IHN3aXp6bGVDb250ZW50cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90
dG9tRWRnZUFBKSk7CiB9CiAKLUNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zm
c2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBi
b29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9v
bCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCitDQ1RpbGVEcmF3UXVhZDo6Q0NUaWxl
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50
U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29u
dGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEs
IGJvb2wgYm90dG9tRWRnZUFBKQogICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIEND
RHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgcXVhZFJlY3QpCiAgICAgLCBtX3RleHR1cmVJZCh0ZXh0
dXJlSWQpCiAgICAgLCBtX3RleHR1cmVPZmZzZXQodGV4dHVyZU9mZnNldCkKQEAgLTQ4LDYgKzQ4
LDcgQEAgQ0NUaWxlRHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEkKIHsKICAgICBpZiAoaXNBbnRpYWxpYXNlZCgp
KQogICAgICAgICBtX25lZWRzQmxlbmRpbmcgPSB0cnVlOworICAgIG1fb3BhcXVlUmVjdCA9IG9w
YXF1ZVJlY3Q7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCmluZGV4IDEyZTUzZGJk
MmE4ZjVkMWZiM2QzMzMxOWIyYzAzMTFlYzUzZjVjYTguLjMzNTAxYTgwNmNmYWZmOTYwZjI0YzZk
ZDZmMWM3ODIwYTE1Nzg4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ1RpbGVEcmF3UXVhZCA6IHB1Ymxp
YyBDQ0RyYXdRdWFkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1RpbGVEcmF3UXVhZCk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IGNyZWF0ZShj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9y
bTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0
IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenps
ZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRn
ZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlRHJh
d1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1
cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29s
IGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRv
bUVkZ2VBQSk7CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZUlkOyB9CiAgICAgSW50UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dHVyZU9mZnNldDsgfQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0FudGlhbGlhc2VkKCkgY29uc3QgeyByZXR1cm4gbGVmdEVkZ2VBQSgpIHx8IHRvcEVk
Z2VBQSgpIHx8IHJpZ2h0RWRnZUFBKCkgfHwgYm90dG9tRWRnZUFBKCk7IH0KIAogcHJpdmF0ZToK
LSAgICBDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQm
IHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1
cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9w
RWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CisgICAgQ0NUaWxl
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQs
IGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6
ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0
RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdl
QUEpOwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKICAgICBJbnRQb2ludCBt
X3RleHR1cmVPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDM0
NGQ3NDI0NWY4ZWMxZjVmZGI2YzJjYjIxZGNkYjkxY2FiNDkxODIuLjAwMGVmZWYyMGY1NzZkOTJi
Y2I0MGQ4MTYyMDQ5YTY3YTg5MzMwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
Y3BwCkBAIC01MSw4ICs1MSwxMyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRl
eHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CiAgICAgdm9pZCBzZXRUZXh0
dXJlSWQoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJl
SWQ7IH0KKworICAgIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QoKSBjb25zdCB7IHJldHVybiBt
X29wYXF1ZVJlY3Q7IH0KKyAgICB2b2lkIHNldE9wYXF1ZVJlY3QoY29uc3QgSW50UmVjdCYgb3Bh
cXVlUmVjdCkgeyBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OyB9CisKIHByaXZhdGU6CiAgICAg
UGxhdGZvcm0zRE9iamVjdCBtX3RleHR1cmVJZDsKKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsK
IH07CiAKIENDVGlsZWRMYXllckltcGw6OkNDVGlsZWRMYXllckltcGwoaW50IGlkKQpAQCAtMTM3
LDcgKzE0Miw5IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlz
dCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlCiAgICAgICAgICAgICBEcmF3YWJs
ZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0
ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKICAgICAgICAgICAgIEludFJlY3QgZGlzcGxh
eVJlY3QgPSB0aWxlUmVjdDsKKyAgICAgICAgICAgIEludFJlY3QgdGlsZU9wYXF1ZVJlY3QgPSB0
aWxlLT5vcGFxdWVSZWN0KCk7CiAgICAgICAgICAgICB0aWxlUmVjdC5pbnRlcnNlY3QobGF5ZXJS
ZWN0KTsKKyAgICAgICAgICAgIHRpbGVPcGFxdWVSZWN0LmludGVyc2VjdChsYXllclJlY3QpOwog
CiAgICAgICAgICAgICAvLyBTa2lwIGVtcHR5IHRpbGVzLgogICAgICAgICAgICAgaWYgKHRpbGVS
ZWN0LmlzRW1wdHkoKSkKQEAgLTE2NCw3ICsxNzEsNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6
OmFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZQogICAgICAgICAgICAgYm9vbCBib3R0b21FZGdlQUEgPSBqID09IG1fdGlsZXItPm51bVRpbGVz
WSgpIC0gMSAmJiB1c2VBQTsKIAogICAgICAgICAgICAgY29uc3QgR0MzRGludCB0ZXh0dXJlRmls
dGVyID0gbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElO
RUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0gICAgICAgICAgICBxdWFkTGlzdC5h
cHBlbmQoQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0
aWxlLT50ZXh0dXJlSWQoKSwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0
ZXIsIGNvbnRlbnRzU3dpenpsZWQoKSwgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VB
QSwgYm90dG9tRWRnZUFBKSk7CisgICAgICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUaWxlRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0aWxlT3BhcXVlUmVjdCwg
dGlsZS0+dGV4dHVyZUlkKCksIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmls
dGVyLCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdl
QUEsIGJvdHRvbUVkZ2VBQSkpOwogCiAgICAgICAgICAgICBpZiAoaGFzRGVidWdCb3JkZXJzKCkp
IHsKICAgICAgICAgICAgICAgICBDb2xvciBjb2xvcihkZWJ1Z0JvcmRlckNvbG9yKCkucmVkKCks
IGRlYnVnQm9yZGVyQ29sb3IoKS5ncmVlbigpLCBkZWJ1Z0JvcmRlckNvbG9yKCkuYmx1ZSgpLCBk
ZWJ1Z1RpbGVCb3JkZXJBbHBoYSk7CkBAIC0xODMsMTQgKzE5MCwxNSBAQCB2b2lkIENDVGlsZWRM
YXllckltcGw6OnNldFRpbGluZ0RhdGEoY29uc3QgQ0NMYXllclRpbGluZ0RhdGEmIHRpbGVyKQog
ICAgICptX3RpbGVyID0gdGlsZXI7CiB9CiAKLXZvaWQgQ0NUaWxlZExheWVySW1wbDo6c3luY1Rl
eHR1cmVJZChpbnQgaSwgaW50IGosIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKQordm9pZCBD
Q1RpbGVkTGF5ZXJJbXBsOjpwdXNoVGlsZVByb3BlcnRpZXMoaW50IGksIGludCBqLCBQbGF0Zm9y
bTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKIHsKICAgICBE
cmF3YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAgICAgaWYgKCF0aWxlKQogICAgICAg
ICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKICAgICB0aWxlLT5zZXRUZXh0dXJlSWQodGV4dHVy
ZUlkKTsKKyAgICB0aWxlLT5zZXRPcGFxdWVSZWN0KG9wYXF1ZVJlY3QpOwogfQogCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggNDc4YjAzNDAyMzQ1MDgxOWJi
Y2VhMGE4ZGE1YWQzMjE1NmY1NGJkMi4uN2FkNzE1OTliMjEzNjU4NThhMWM1YTVmN2E5Y2Y0MjQx
ZWEwNjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNraXBzRHJhdyhib29sIHNraXBzRHJhdykgeyBtX3Nr
aXBzRHJhdyA9IHNraXBzRHJhdzsgfQogICAgIHZvaWQgc2V0VGlsaW5nRGF0YShjb25zdCBDQ0xh
eWVyVGlsaW5nRGF0YSYgdGlsZXIpOwotICAgIHZvaWQgc3luY1RleHR1cmVJZChpbnQsIGludCwg
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpOworICAgIHZvaWQgcHVzaFRpbGVQcm9wZXJ0aWVz
KGludCwgaW50LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3Bh
cXVlUmVjdCk7CiAKICAgICB2b2lkIHNldENvbnRlbnRzU3dpenpsZWQoYm9vbCBjb250ZW50c1N3
aXp6bGVkKSB7IG1fY29udGVudHNTd2l6emxlZCA9IGNvbnRlbnRzU3dpenpsZWQ7IH0KICAgICBi
b29sIGNvbnRlbnRzU3dpenpsZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU3dpenpsZWQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNTIyNzg5MjVlMWVhMDk5NjkzYmMzNzU5ZGQ0MWU0MWNk
YjMzYzQyOS4uMDk5NGNiMjJlZTUwMWE1NmNmMzBlOTA1ODg4NmYzYmFkZTE0ZGZmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdC5jcHAKQEAgLTE4Nyw4ICsxODcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlKQogICAgIHsKICAgICAgICAgbV9xdWFkc0FwcGVuZGVkID0gdHJ1
ZTsKLSAgICAgICAgCi0gICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0QmxlbmRpbmdEcmF3
UXVhZCA9IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRS
ZWN0KDUsIDUsIDUsIDUpLCBDb2xvcjo6d2hpdGUpOworCisgICAgICAgIENvbG9yIGNvbG9yID0g
bV9vcGFxdWVDb2xvciA/IENvbG9yOjp3aGl0ZSA6IENvbG9yKDAsIDAsIDAsIDApOworICAgICAg
ICBPd25QdHI8Q0NEcmF3UXVhZD4gdGVzdEJsZW5kaW5nRHJhd1F1YWQgPSBDQ1NvbGlkQ29sb3JE
cmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdCg1LCA1LCA1LCA1KSwgY29s
b3IpOwogICAgICAgICBFWFBFQ1RfRVEobV9ibGVuZCwgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPm5l
ZWRzQmxlbmRpbmcoKSk7CiAgICAgICAgIEVYUEVDVF9FUShtX2hhc1JlbmRlclN1cmZhY2UsICEh
cmVuZGVyU3VyZmFjZSgpKTsKICAgICB9CkBAIC0yMDIsMTIgKzIwMywxNSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIHF1YWRzQXBwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3F1YWRzQXBwZW5kZWQ7
IH0KIAorICAgIHZvaWQgc2V0T3BhcXVlQ29sb3IoYm9vbCBvcGFxdWVDb2xvcikgeyBtX29wYXF1
ZUNvbG9yID0gb3BhcXVlQ29sb3I7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCbGVuZFN0
YXRlQ2hlY2tMYXllcihpbnQgaWQpCiAgICAgICAgIDogQ0NMYXllckltcGwoaWQpCiAgICAgICAg
ICwgbV9ibGVuZChmYWxzZSkKICAgICAgICAgLCBtX2hhc1JlbmRlclN1cmZhY2UoZmFsc2UpCiAg
ICAgICAgICwgbV9xdWFkc0FwcGVuZGVkKGZhbHNlKQorICAgICAgICAsIG1fb3BhcXVlQ29sb3Io
dHJ1ZSkKICAgICB7CiAgICAgICAgIHNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwog
ICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKQEAgLTIxNyw2ICsyMjEsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9ibGVuZDsKICAgICBib29sIG1faGFzUmVuZGVyU3VyZmFjZTsK
ICAgICBib29sIG1fcXVhZHNBcHBlbmRlZDsKKyAgICBib29sIG1fb3BhcXVlQ29sb3I7CiB9Owog
CiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODMKQEAgLTIz
OCwxOCArMjQzLDM2IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdP
ZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogICAgIC8vIE9wYXF1ZSBsYXllciwgZHJhd24g
d2l0aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXll
cjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFs
c2UsIGZhbHNlKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RS
VUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworCisgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1
Y2VudCBjb250ZW50LCBidXQgc29saWQgY29sb3IgaXMgb3BhcXVlLCBzbyBkcmF3biB3aXRob3V0
IGJsZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICBsYXllcjEtPnNl
dE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZh
bHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5
ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCi0gICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBj
b250ZW50LCBkcmF3biB3aXRoIGJsZW5kaW5nLgorICAgIC8vIExheWVyIHdpdGggdHJhbnNsdWNl
bnQgY29udGVudCBhbmQgcGFpbnRpbmcsIHNvIGRyYXduIHdpdGggYmxlbmRpbmcuCiAgICAgbGF5
ZXIxLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IoZmFsc2Up
OwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIG1faG9zdElt
cGwtPmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQo
KSk7CiAKICAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNpdHksIGRyYXduIHdpdGgg
YmxlbmRpbmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRP
cGFxdWVDb2xvcih0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsKKyAgICBsYXll
cjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5
ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworCisgICAg
Ly8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5IGFuZCBwYWludGluZywgZHJhd24gd2l0
aCBibGVuZGluZy4KKyAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNl
dE9wYXF1ZUNvbG9yKGZhbHNlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsKICAgICBs
YXllcjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3
TGF5ZXJzKCk7CkBAIC0yNjAsOSArMjgzLDExIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogICAgIC8vIDIgb3Bh
cXVlIGxheWVycywgZHJhd24gd2l0aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1
ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+
c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7
CiAgICAgbGF5ZXIyLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb2xv
cih0cnVlKTsKICAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBl
Y3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKQEAg
LTI3MiwxOCArMjk3LDMwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRp
bmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICAvLyBQYXJlbnQgbGF5ZXIgd2l0aCB0
cmFuc2x1Y2VudCBjb250ZW50LCBkcmF3biB3aXRoIGJsZW5kaW5nLgogICAgIC8vIENoaWxkIGxh
eWVyIHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCiAgICAgbGF5
ZXIxLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IoZmFsc2Up
OwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIGxheWVyMi0+
c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogICAgIEVYUEVD
VF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKIAorICAgIC8vIFBhcmVudCBsYXllciB3
aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQgYnV0IG9wYXF1ZSBwYWludGluZywgZHJhd24gd2l0aG91
dCBibGVuZGluZy4KKyAgICAvLyBDaGlsZCBsYXllciB3aXRoIG9wYXF1ZSBjb250ZW50LCBkcmF3
biB3aXRob3V0IGJsZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICBs
YXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24o
ZmFsc2UsIGZhbHNlKTsKKyAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7
CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+
cXVhZHNBcHBlbmRlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQo
KSk7CisKICAgICAvLyBQYXJlbnQgbGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5IGFuZCBv
cGFxdWUgY29udGVudC4gU2luY2UgaXQgaGFzIGEKICAgICAvLyBkcmF3aW5nIGNoaWxkLCBpdCdz
IGRyYXduIHRvIGEgcmVuZGVyIHN1cmZhY2Ugd2hpY2ggY2FycmllcyB0aGUgb3BhY2l0eSwKICAg
ICAvLyBzbyBpdCdzIGl0c2VsZiBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIC8vIENoaWxk
IGxheWVyIHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcgKHBhcmVu
dCBzdXJmYWNlCiAgICAgLy8gY2FycmllcyB0aGUgaW5oZXJpdGVkIG9wYWNpdHkpLgogICAgIGxh
eWVyMS0+c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7
CiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlv
bihmYWxzZSwgdHJ1ZSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2Up
OwpAQCAtMjk0LDkgKzMzMSwxMSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJs
ZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgLy8gRHJhdyBhZ2FpbiwgYnV0
IHdpdGggY2hpbGQgbm9uLW9wYXF1ZSwgdG8gbWFrZSBzdXJlCiAgICAgLy8gbGF5ZXIxIG5vdCBj
dWxsZWQuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFx
dWVDb2xvcih0cnVlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIxLT5z
ZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3BhcXVlKHRydWUp
OworICAgIGxheWVyMi0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFj
aXR5KDAuNSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7CiAgICAg
bV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwpAQCAtMzA4LDExICszNDcsMjQgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJz
KQogICAgIGxheWVyMS0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9u
KGZhbHNlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVy
Mi0+c2V0T3BhcXVlQ29sb3IoZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3BhY2l0eSgxKTsKICAg
ICBsYXllcjItPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5k
cmF3TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwog
ICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKKworICAgIC8vIEFuZCB3
aGVuIHRoZSBsYXllciBzYXlzIGl0cyBub3Qgb3BhcXVlIGJ1dCBpcyBwYWludGVkIG9wYXF1ZSwg
aXQgaXMgbm90IGJsZW5kZWQuCisgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5
ZXIxLT5zZXRPcGFjaXR5KDEpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZh
bHNlKTsKKyAgICBsYXllcjItPnNldE9wYXF1ZShmYWxzZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFx
dWVDb2xvcih0cnVlKTsKKyAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7CisgICAgbGF5ZXIyLT5z
ZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMo
KTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CisgICAgRVhQRUNU
X1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogfQogCiBjbGFzcyBSZXNoYXBlVHJhY2tl
ckNvbnRleHQ6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggZWQxNWU2
YzEwZTFmZTQ2MmM5NDk2ODU2ZGIzOTM0NTY5ZmFiODgxYy4uNWVjYmI1OWM4ZTAzYmZiZjE2NjMw
ZDAyZDg5MTk3MTIxMGMzODhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC0zOCwzNSArMzgsMzYgQEAgY2xhc3MgQ0NRdWFk
Q3VsbGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIAogY2xhc3MgVGVzdERyYXdRdWFk
IDogcHVibGljIENDRHJhd1F1YWQgewogcHVibGljOgotICAgIFRlc3REcmF3UXVhZChjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CisgICAgVGVzdERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJp
YWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKICAg
ICA6IENDRHJhd1F1YWQoc3RhdGUsIG0sIHJlY3QpCiAgICAgeworICAgICAgICBtX29wYXF1ZVJl
Y3QgPSBvcGFxdWVSZWN0OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRlc3REcmF3
UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJpYWwgbSwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxUZXN0RHJhd1F1YWQ+
IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCwgb3Bh
cXVlUmVjdCkpOwogICAgIH0KIH07CiAKLXZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3RhdGUq
IHJvb3RTdGF0ZSwgQ0NTaGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVhZExpc3QmIHF1
YWRMaXN0KQordm9pZCBzZXRRdWFkcyhDQ1NoYXJlZFF1YWRTdGF0ZSogcm9vdFN0YXRlLCBDQ1No
YXJlZFF1YWRTdGF0ZSogY2hpbGRTdGF0ZSwgQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IElu
dFJlY3QmIGNoaWxkT3BhcXVlUmVjdCA9IEludFJlY3QoKSkKIHsKICAgICBxdWFkTGlzdC5jbGVh
cigpOwogCi0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0
ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUo
MTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShy
b290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAs
IDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdR
dWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3Qo
SW50UG9pbnQoMjAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBw
ZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250
ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAg
IHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1
YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAw
LCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290
U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEw
MCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1
YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJ
bnRQb2ludCgwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBl
bmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRl
bnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAg
ICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdR
dWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAyMDApLCBJbnRTaXplKDEw
MCwgMTAwKSkpKTsKLQotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShj
aGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoKSwg
SW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6
Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQ
b2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQo
VGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1
YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFk
OjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwg
MTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0
YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6
ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVz
dERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIElu
dFJlY3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJl
Y3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRl
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQo
VGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQs
IEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1
ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0
YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDAp
LCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFw
cGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29u
dGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hp
bGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRl
KHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAs
IDIwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExp
c3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGls
ZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkp
LCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpj
cmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9p
bnQoMjAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworCisg
ICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJh
d1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAw
KSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6
OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50
UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAg
ICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3
UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAw
LCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3
UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVj
dChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0
KSk7CiB9CiAKICNkZWZpbmUgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTICAgICAg
ICAgICAgICAgXApAQCAtMTQ2LDYgKzE0Nyw1NCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZl
cmlmeUN1bGxDaGlsZExpbmVzVXBCb3R0b21SaWdodCkKICAgICBFWFBFQ1RfRVEocXVhZExpc3Qu
c2l6ZSgpLCA5dSk7CiB9CiAKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJl
Z2lvbikKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAgIGNo
aWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOworCisgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCks
IDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0g
Q0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOworICAgIEludFJlY3Qg
Y2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNo
aWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAv
IDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdl
dCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKKyAgICBF
WFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9j
Y2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEy
dSk7Cit9CisKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbjIpCit7
CisgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCisKKyAgICBjaGlsZFRyYW5z
Zm9ybS50cmFuc2xhdGUoNTAsIDEwKTsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
cm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRy
dWUpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVk
UXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNlKTsKKyAgICBJbnRSZWN0IGNoaWxkT3Bh
cXVlUmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0LCBjaGlsZFJlY3Qu
eSgpICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRSZWN0LndpZHRoKCkgLyAyLCBjaGls
ZFJlY3QuaGVpZ2h0KCkgKiAzIC8gNCk7CisKKyAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCks
IGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3QpOworICAgIEVYUEVD
VF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVk
ZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsK
K30KKworVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uQ2hlY2tPdmVy
Y3VsbCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAgIGNo
aWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNDkpOworCisgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCks
IDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0g
Q0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOworICAgIEludFJlY3Qg
Y2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNo
aWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAv
IDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdl
dCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKKyAgICBF
WFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9j
Y2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEz
dSk7Cit9CisKIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhpc0FsaWduZWRRdWFk
c0RvbnRPY2NsdWRlKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBs
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxU
ZXN0LmNwcAppbmRleCA1NTQ2MDM3YWRhMmNjYmYxOWVkZTAxZTYzY2RiNzk2OTc0ZGZjMmExLi40
ODg5NjBmZDEyNzMwYzQ5NTdkOGE4NTA1MTQ5NDhmZGNmYWRiNGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcApAQCAt
NDYsMTEgKzQ2LDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPENDVGlsZWRMYXllckltcGw+IGNyZWF0
ZUxheWVyKGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBjb25zdCBJCiAgICAgbGF5ZXItPnNldFRp
bGluZ0RhdGEoKnRpbGVyKTsKICAgICBsYXllci0+c2V0U2tpcHNEcmF3KGZhbHNlKTsKICAgICBs
YXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkp
OworICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKIAogICAgIGludCB0ZXh0dXJlSWQgPSAx
OwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGlsZXItPm51bVRpbGVzWCgpOyArK2kpCiAgICAg
ICAgIGZvciAoaW50IGogPSAwOyBqIDwgdGlsZXItPm51bVRpbGVzWSgpOyArK2opCi0gICAgICAg
ICAgICBsYXllci0+c3luY1RleHR1cmVJZChpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2Jq
ZWN0Pih0ZXh0dXJlSWQrKykpOworICAgICAgICAgICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGll
cyhpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2JqZWN0Pih0ZXh0dXJlSWQrKyksIEludFJl
Y3QoMCwgMCwgMSwgMSkpOwogCiAgICAgcmV0dXJuIGxheWVyLnJlbGVhc2UoKTsKIH0KQEAgLTEz
NCw3ICsxMzUsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVja2VyYm9hcmRpbmcp
CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRpbGVzWDsgKytpKQogICAgICAgICBmb3Ig
KGludCBqID0gMDsgaiA8IG51bVRpbGVzWTsgKytqKQotICAgICAgICAgICAgbGF5ZXItPnN5bmNU
ZXh0dXJlSWQoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4oMCkpOworICAgICAg
ICAgICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9y
bTNET2JqZWN0PigwKSwgSW50UmVjdCgpKTsKIAogICAgIC8vIEFsbCBjaGVja2VyYm9hcmRpbmcK
ICAgICB7CkBAIC0xNTUsNyArMTU2LDcgQEAgc3RhdGljIGJvb2wgY29tcGxldGVseUNvbnRhaW5z
KGNvbnN0IFJlZ2lvbiYgY29udGFpbmVyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIHJldHVy
biB0ZXN0ZXIuaXNFbXB0eSgpOwogfQogCi1zdGF0aWMgdm9pZCBnZXRRdWFkcyhDQ1F1YWRMaXN0
JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xh
eWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRpb24sIGNvbnN0
IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpCitzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gZ2V0UXVhZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIEludFNpemUgdGlsZVNpemUsIGNv
bnN0IEludFNpemUmIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0
aW9uIGJvcmRlclRleGVsT3B0aW9uLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KQog
ewogICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVT
aXplLCBsYXllclNpemUsIGJvcmRlclRleGVsT3B0aW9uKTsKICAgICBsYXllci0+c2V0VmlzaWJs
ZUxheWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KTsKQEAgLTE2Myw2ICsxNjQsNyBAQCBzdGF0aWMg
dm9pZCBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgbGF5ZXJTaQogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRR
dWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAgbGF5ZXItPmFw
cGVuZFF1YWRzKHF1YWRzLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworICAgIHJldHVybiBzaGFy
ZWRRdWFkU3RhdGUucmVsZWFzZSgpOyAvLyBUaGUgc2hhcmVkIGRhdGEgbXVzdCBiZSBvd25lZCBh
cyBsb25nIGFzIHRoZSBxdWFkIGxpc3QgZXhpc3RzLgogfQogCiAvLyBBbGlnbiB3aXRoIGV4cGVj
dGVkIGFuZCBhY3R1YWwgb3V0cHV0CkBAIC0yMDAsNyArMjAyLDggQEAgc3RhdGljIHZvaWQgY292
ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRl
clRleGVsT3AKIAogICAgIEludFNpemUgbGF5ZXJTaXplKDEwMDAsIDEwMDApOwogICAgIENDUXVh
ZExpc3QgcXVhZHM7Ci0gICAgZ2V0UXVhZHMocXVhZHMsIEludFNpemUoMTAwLCAxMDApLCBsYXll
clNpemUsIGJvcmRlcnMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdl
dFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBib3JkZXJzLCBJbnRS
ZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwogICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVy
UmVjdChxdWFkcywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKIH0KIFdJVEhfQU5E
X1dJVEhPVVRfQk9SREVSX1RFU1QoY292ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMp
OwpAQCAtMjE2LDcgKzIxOSw4IEBAIHN0YXRpYyB2b2lkIGNvdmVyYWdlVmlzaWJsZVJlY3RJbnRl
cnNlY3RzVGlsZXMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0CiAKICAgICBJbnRT
aXplIGxheWVyU2l6ZSgyNTAsIDI1MCk7CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRR
dWFkcyhxdWFkcywgSW50U2l6ZSg1MCwgNTApLCBJbnRTaXplKDI1MCwgMjUwKSwgQ0NMYXllclRp
bGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICBPd25QdHI8
Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVh
ZHMocXVhZHMsIEludFNpemUoNTAsIDUwKSwgSW50U2l6ZSgyNTAsIDI1MCksIENDTGF5ZXJUaWxp
bmdEYXRhOjpOb0JvcmRlclRleGVscywgdmlzaWJsZUxheWVyUmVjdCk7CiAgICAgdmVyaWZ5UXVh
ZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKIH0KIFdJVEhfQU5E
X1dJVEhPVVRfQk9SREVSX1RFU1QoY292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNUaWxlcyk7
CkBAIC0yMjgsNyArMjMyLDggQEAgc3RhdGljIHZvaWQgY292ZXJhZ2VWaXNpYmxlUmVjdEludGVy
c2VjdHNCb3VuZHMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3AKICAgICBJbnRTaXpl
IGxheWVyU2l6ZSgyMjAsIDIxMCk7CiAgICAgSW50UmVjdCB2aXNpYmxlTGF5ZXJSZWN0KEludFBv
aW50KCksIGxheWVyU2l6ZSk7CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRRdWFkcyhx
dWFkcywgSW50U2l6ZSgxMDAsIDEwMCksIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5v
Qm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIElu
dFNpemUoMTAwLCAxMDApLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRl
eGVscywgdmlzaWJsZUxheWVyUmVjdCk7CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0
KHF1YWRzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKIH0KIFdJVEhfQU5EX1dJVEhPVVRfQk9SREVSX1RF
U1QoY292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNCb3VuZHMpOwpAQCAtMjQwLDcgKzI0NSw4
IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIHRleHR1cmVJbmZvRm9yTGF5ZXJOb0JvcmRl
cnMpCiAgICAgSW50U2l6ZSB0aWxlU2l6ZSg1MCwgNTApOwogICAgIEludFNpemUgbGF5ZXJTaXpl
KDI1MCwgMjUwKTsKICAgICBDQ1F1YWRMaXN0IHF1YWRzOwotICAgIGdldFF1YWRzKHF1YWRzLCB0
aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIElu
dFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCB0aWxl
U2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJl
Y3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHF1YWRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVF9FUShxdWFkc1tpXS0+bWF0ZXJp
YWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFkU3RyaW5nIDw8IGk7CkBAIC0y
NDksNiArMjU1LDI1IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIHRleHR1cmVJbmZvRm9y
TGF5ZXJOb0JvcmRlcnMpCiAgICAgICAgIEVYUEVDVF9ORShxdWFkLT50ZXh0dXJlSWQoKSwgMHUp
IDw8IHF1YWRTdHJpbmcgPDwgaTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWQtPnRleHR1cmVPZmZz
ZXQoKSwgSW50UG9pbnQoKSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgICAgICBFWFBFQ1RfRVEo
cXVhZC0+dGV4dHVyZVNpemUoKSwgdGlsZVNpemUpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICAg
ICAgRVhQRUNUX0VRKEludFJlY3QoMCwgMCwgMSwgMSksIHF1YWQtPm9wYXF1ZVJlY3QoKSkgPDwg
cXVhZFN0cmluZyA8PCBpOworICAgIH0KK30KKworVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwg
dGlsZU9wYXF1ZVJlY3RGb3JMYXllck5vQm9yZGVycykKK3sKKyAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKKworICAgIEludFNpemUgdGlsZVNpemUoNTAsIDUw
KTsKKyAgICBJbnRTaXplIGxheWVyU2l6ZSgyNTAsIDI1MCk7CisgICAgQ0NRdWFkTGlzdCBxdWFk
czsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJl
ZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxp
bmdEYXRhOjpOb0JvcmRlclRleGVscywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgQVNTRVJUX0VRKHF1YWRzW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRl
bnQpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICAgICAgQ0NUaWxlRHJhd1F1YWQqIHF1YWQgPSBz
dGF0aWNfY2FzdDxDQ1RpbGVEcmF3UXVhZCo+KHF1YWRzW2ldLmdldCgpKTsKKworICAgICAgICBF
WFBFQ1RfRVEoSW50UmVjdCgwLCAwLCAxLCAxKSwgcXVhZC0+b3BhcXVlUmVjdCgpKSA8PCBxdWFk
U3RyaW5nIDw8IGk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCmluZGV4IGJkYmY3YmIwOTMw
MThiZDZhNmIzMDdmZjhiZTM4MTQxNWY1OGE2NzMuLjkyMmM4YzE4ZWMyODViZGYxOWVlMDYxN2E4
OTMxZTZjNGZmZTM2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgVEVT
VChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3ROb3RQcmVzZW50QWZ0ZXJO
b25PcGFxdWVQYWludCkKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBv
cGFxdWVSZWN0KTsKIH0KIAotVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1
ZVJlY3ROb3RQcmVzZW50Rm9yT3BhcXVlTGF5ZXJXaXRoT3BhcXVlUGFpbnQpCitURVNUKExheWVy
VGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVjdFByZXNlbnRGb3JPcGFxdWVMYXllcldp
dGhPcGFxdWVQYWludCkKIHsKICAgICBQYWludEZpbGxPcGFxdWUgZmlsbE9wYXF1ZTsKICAgICBS
ZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gdXBkYXRlcjsKQEAgLTE0OSwyMSArMTQ5LDIxIEBA
IFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZv
ck9wYXF1ZUxheWVyV2l0aE9wYXF1ZVBhCiAgICAgdXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwogICAgIHVw
ZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKICAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVj
dCk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7
CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJlY3Qp
OwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIo
bmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9
IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVy
LnJlbGVhc2UoKSwgZmFsc2UpOwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKICAgICB1
cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUo
NDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3Qo
KTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShm
aWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpKTsKICAgICB1cGRhdGVy
LT5zZXRPcGFxdWUodHJ1ZSk7CiAgICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwot
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOworICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBvcGFxdWVSZWN0KTsKIH0K
IAogVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3ROb3RQcmVzZW50
Rm9yT3BhcXVlTGF5ZXJXaXRoTm9uT3BhcXVlUGFpbnQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmY3YTk1MjhlMTQyNDc4
ZDVhYzM5YmQ4MTU2YTAxMzY0MjNmNGZjMC4uZjU3OWIwMTJiNGQyNDQ0Mjk0ODVhYTdhYjZkZTgy
NGU5NGZkOGVjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTIwICBEYW5hIEphbnNl
bnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIHJlZ2lv
biByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGlu
dXgvY29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3Rl
ZC5wbmc6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbWFjLWxlb3BhcmQvZmFzdC9yZXBh
aW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmc6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkL2Zh
c3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0
ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3Jl
cGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBu
ZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3JlcGFpbnQvYmxv
Y2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZzogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvcmVwYWludC9i
bG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMi0w
MS0xOSAgQWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENy
YXNoIGluIHhzbHRQYXJzZUdsb2JhbFZhcmlhYmxlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0tbGludXgvY29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtaW4tY29t
cG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1saW51eC9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1pbi1jb21wb3NpdGVkLWxheWVyLWV4
cGVjdGVkLnBuZwppbmRleCAxZDZmMDNlMTg5N2E4NTVkMzFiZGQ5MjI1YmMyM2I4MTRkMmNkZDA5
Li4xMTQyZmJhZmE4ZmI2NGM2YjFmOTZhNWIyZGY1OGE1NDQxMDdhNjczIDEwMDY0NApHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMzQ2Mwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJh
PmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVCF0aD0Kekx4YT5iZ0gjS1A2YSEwUl5BdGwlXkhm
dDRMITt6R0JOS0JJKD0/YD1EWFZ+bk5xVnxDaEUmWFhkKUt4fERxRUB7CnphSzxHbWtHSEZDSGU2
ZksmP0NFSFg1e0kmdkoqLWxtfkxSUDQpd2J1eXlEZDNZRT1ePG47Pk5pXntubyZwUVRRPQp6fE12
WmhedC0lO2ZubVl0XipoLWE3PFFPM2FXZzJXWkQzJFghZW8+bXhCdkNFR01IaGApN3k4TDhVRk4m
Pk0lNlMKeklLYWZ2IUhMMXhgKU5qLXhYJCRaXzk8S3EraDtERFUpO358O2VYXm9zTTtJOXd7Z15P
X1RyIU9fSUE9bmlRXnhFCno7RCtTdHQ2NipGXnVAWkw3WDdSJld9TmYoJE4/c2NgdnlGPi0rdWQz
JSVJbis+eSNrKCprYSQoSW9vYyh3ZGs4fgp6ITArSVohMSVjJEhUfWFBVkBBQ2VCeG1TIz59Rzl6
dCsxaU5gKHNHQjYhIzckQ2hpPl5ePGA2IUczflF6V0lna34KekdCOHU7ZiVvU0hmZUNlJlAwcmRm
SWheRFlWe3FfRVV9UU1MMCVWKnFqWDAzZ21OPXVEckdafkBMJk1FR193Vm4yCnp5NSg9KHxCSTZ1
dyZWeWhLfiV3JmsxfikwWiF8UFVMeFl3WDxsUXFsaDg/bEx8Sko8fFdVdkVmYG4xaEFiTFJkMwp6
UCs7LXJ2QVRXVHBDM35TOEh+MVpGayZtY0Z3MyhjQ1FAZXBvdU1GZitXKCgrLSNPeHMjc0J9ODRH
TSVWSmYkI1oKenhyYH10X3BCfCRmdXhOUVpfME10fE5yc2ZnVFp3YmhVZFomMlY4SURuRUE3fUE1
T2dJJCM1PmNUWXkwIWpUS21xCnpac1Rhb1JAJV9lb3pOfD9MayUzI1ZLNSUzbTwzNUVmZlZEWUxX
V3E3UWBIeWMjcnpDKyo0QG9CfElXYzZAMDdyfQp6YERXaHNlOUsma3cqR2w2M3NOeHlPfE9Yays0
bzFPWn1SdUIkVVJeSlItVnRrP14kfDledXRuNG9kLSZQQjEyd3IKentkbVA5Ui1pZD1tc2MhZnhJ
K1M/eEp4WUtid0B9JlgzJjIlWXdDUT8wITA9dmdaezVvZjJVMzc7WEF3YFpvUGU/CnpUKkhMdDVY
JkUxKnhBfDFTdG85ZCtOczY7cWlmbl82V08wSHU1K2pCQDMpdD1gRnJqNHtUX3olWXJ8RnhoYkBf
UQp6YHN3OV5DVnkqUWUkRyFuJU14SCslYkczR3cqQWxmQjhqJSZ6a2c1dUZKX1VwfDkteU4/NDhS
VzxkXk5mRTReUUEKempXXkA8d0AwISE5NHF8dG10KVNlJT1DaEhuaGJVcUl2WjJkMXVXWCUzcTA2
JHZ8UkF0SzBsXn0hWThgdDd7YkB7Cno9IztYKS0qbyRKcEtPZTlGWUJFSkl2Y0t0N1c1b3IlSlVW
RGMqUnZRN3MmR1p5eD9OeUVFQlEkPytZeD4qZEUkaAp6X2d7RlBlMm5DR1MhUSQ5K2UkWTc0Z0B7
OHdvPzFTd0pHOHx2dm4kX3gzeytednRJez5pTWQ5ZFB4Q1JSZUBvVWkKeislOEU8MEQ3czZAND5Q
a2UyblhFY1EkVH5UWXAhV1dsb3d6b0FBQndKUmUkaGB0eDc/dCRPKDg+RyRRJCVrTjdhCnp6eFoz
UHAqKFZKbkVJOGc/fClCT3tfP3Jee0Nld2J3VDRAcntoMSNFKmNjajtBOWRlaFdEdG04VkElTFFT
NVIpfQp6RkdoeGp7fk1jRjgzY3JaVnVwP0FqRSYpT1E8KWhLWHMmQFpJN2FLdChLP2ZzYnRiNCRK
SHBifktraV96eU4xUz4KUylWMmI5UnQlbzVlbEZ7cjV9RS0ydmFBUkkKCmxpdGVyYWwgMzQ2NAp6
Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxt
fT9vVG41dD0KeiF4VGU5JU18MFopTVFLWkw8X1NkM2shMnxPVmhNZVF5e31RSVhaaF5EOXx0fFBa
ITZLaWFCclo/Iy0zWG1UQ3dyCnpTfH0lUj53d3Q7REhla2lfTUVpcm90R0k4R3NaQWBaKlVlcFAr
PXpVO09rell0d0tMTm9GX2hhTmlKbUJAN0hucwp6elBiSkIldm9YIzM/PV9lelhQM2QtN1NIVTtS
dVR1Z00kd1M8SVRHdD8pJlpYeGYoWHQlJnVsPSp1U3hmbHxldV8KemZgUCVYNXVMRnlUPC1GUnJs
KzVOeEJEPURGdVZNdl8/O2xiS1lNTU0rVW9tYTVBKHhiSGcyd3MpKTlNYlZQfEoyCnpYUHZ3P1lW
R3ljTjBUPGo9LUtEJUhFZjxNNXk5fFd4LURfey1GZndWMmJPTWg8djVjcGJBMD1oJVZvUHxrQUQ8
Pwp6Iz5sfmBsT1ZWTDRiUXc5d0Y5akpGciRTZDR6THooUzE2RVc1aThKfl9zVDFvRzI5YDZRVCpa
Z2IoYk96Z3NYMzgKel8tVSlKKXlyQ3dEUUNpVUNWJHFsbyRkQDhrcTRPPUl5aU0wOGZGey1HSXB8
WSZwMnpxUXsyeitMNkpxd1ZEfDZkCnp6cWlsWGNLXk03bH5CVnBUXz5uMnhiamczYV5RYEkjJU8z
anZKcCpFIWl+RmttPklUYkA0dFdFbWd6dmRLKldJQAp6dilOfXElZ2diIypaK0JQeWtDQzQ1dWR7
YEYtMl5wN2lNYGopSXtEcmxWZXpTPlhaSGI9Vy04RXw5RX1Ce3d5I00Kei0wX3NjbkJfOTIkajAz
fSolPX5xI0pjYjFlU2E9NUZETGhHN1IhU2dDaGk+XnYoRyt6YEpsayFqNVgoaHBFLWd8CnozYGY9
ZyVoN3traVVxI0ZxRSEkbWF7VU0+cXxiMGNjYGgoJXV3dnwwJFdSTSVZV21fJC1hRSNJK2dvcUhl
SjAyRgp6ej9ubFEhUis/aVpAU0JRNH1aOGduUENmTnBxKzdqY2k+T2xvfVJ6RygrQERtQ30+OTxf
JW08Jmx3Q353T2Q0NVoKelRJez5NVmoxSi05JD9adDhYVWUtYHZEaCsmViF+RSs3R05hQW9iWEBq
WnRlcTg4aG0mOUFKOTNGPmR8K1BtPk5OCnpOP2QjV1JzOVVKeiRZMjc8eitJKmZnbzlaT18rOWdE
cjVZYHFGS3c3PF5OVmFlRG4xQ141KjZEdE56WHdlNmFJcwp6Ul9VUnhEQDhrTnRZJDJtdVY0R2A/
VjZia1M8QlphMEcmUFVlPGFgR2c4S1VVUHhxT1F6eG4/QVk/fD9Sa3cwaGkKendwVHlDLWMrampW
QXRGVi1mST9wYHtXeGgrcX5zRFhVbHFrLU82eW84eT0/VEE3cShndypTeU9icE5fMWdIR1JgCnpx
bW1DXk8+SkRkP209d1g/ejxiQ3ZsbmVfa2U8UmlaNUxERCNmU3JJR251PyY4UHtLcUlOJUdjdiNv
cTVBQTlzIQp6bWFsIU15VCRlUV5AbHo7WWRfd1h7OXN2MWJqeHgxMihDTDtyTDE+bWVOcm0jV3F0
cVkhLXMtNTRgdTx3Z3phZDUKej03b3BAXlJJeyYlPVk3MWIyYVBnSW1TQzhfWjFKNlN7clYtX0lo
aHxRXlJHUiF2JSthJnR1Iy07cHM9O3o0N3tVCnpfV3Q9LV41SU1MVn5lVyR0Uk03TlV3emZHPnNS
Z2tQYlBuQlVWaEZgS2ckd2V7bjN6RD9pMiQ8Zmx0anVZaFlgUgp6bj9kMipLSFdwZztyMHYrQU1D
PzZGZmImNiNNQ2V0LSVoUEFWcW1hbjZAQGk4WGlgI3duPSsjJmtKaVJDdGM/ZTQKZDhvTj0/RDcq
S3IkQCFgUjdHUiUtIVBDe3hXdH4kKDY5OFc9UTUqbU8KCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdh
cC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLWxpbnV4L2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBv
c2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
Yzc1YTY4OWQ5YTlmODA5MGRmNzM4NWZlMDQ1MDQ0ZDRlMGFhOTViLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpsaXRlcmFsIDI5NTcKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5p
MCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RtfW42CnowfUQkZGkhP0pjR2xMfGZHPW5ybEJaRmox
TC1TTnExMmRFNHdCK2UwNHlaNk5hTGFxVElFR1pyZDMobihFN1ZjSQp6O2JLO3lZdkYoRTJ8NmRz
Q2dgXzRhTXwlPV9oWldzJnJKNyhuQzhGVCVnKWVuWmhBVUQxSCpAIzk2QWdRR1kmOEAKemJaYHpZ
TXM0amtoV2g4WFUoMHREe1FZZzJfdT1vOzxEMTxYOHZhaz02PVFKbE5ubTYrIWgpNllYNEMoS3Z1
RUJNCnpII2FzdTlsd0YwO3FzancyWDdmP1V6LSpBLWl3PnpmcnhuQ2hISkJhWmFCYHdVfiFeVmRY
NFNvYDxHNlkzTlRuKQp6WTtGOCVBXjF3MDtYIX5vK2NrWj83S1FeOF5MVztuWmNjeEhvR3RzYzQj
TlctYkd4R1hfcGN2KD5jaGJ4XlpYZGwKejlTMUpMLUpuPDl7UGQoS0x4RysyQFFReyhvMnU2Q3tr
fVAhZiNGOTsmSVNnQ0JxbllLMStgSmVYZHNOSGd3YjN1CmxuaFFwQSFEdWNSUj1MMlFhaHNtKHdr
dD1YUDY2QjM0NCRyakY2KjJVbmdEYEhZSHxQbwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLW1hYy1sZW9wYXJkL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24t
Z2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbWFjLWxlb3BhcmQvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAt
aW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDliMzMxMWY4M2M5ZmUwNWIyMTI5OGFkYzRiNGUxNWI2MGI2NzZhZDkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMzM5OAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7
K3ZZVjJhPmkxQiVRbFlicFJ6bmtCOWdDQ000NyQ9U3VGeGVPK2oKem1Qc2pUc21aQ3ZXKEl+U0NN
bXstcldXUkA3UmdETDJDMnJUaTNVZSZVME45IWN5NCZRSUVHWnJkMypQdUZTRFY1CnohJHMzWU4t
cUNKNn0qeHhUMno5I2V6PCtBcDhuP0lAdFUoMDwhOF50MDQtX1Vld1E2Y29sfHNSVX0pJUpVfVJ1
MAp6VnEjJW5JS2QmbnpAVlQhRzZYO0dgXl8tKmVFITw2Xkp7QVZ5cz18cVYzN1YxJmQwIXohb3RE
OEZoTmooZngqRzgKemZxe1dSa2BYQUMocFNsUz9lM1khRlFjO0crNXFFRT1KXldGNks3KHdXM1I4
WnpHaXd9M0spVis/eU53Szg/RmEzCno3UkIkfSNjU3RkJiVtJnRFVHJMIyZHaWxJUFhGYStVfDFu
NXMtUVFJbmMrYShhaDROJXt6TSZRVnJhTiQkb09lUwp6Xl9mM3c2WXN1bjxgNHVibEtDbi07cmR0
WSpBV2ExN3AmNWxmUj97ZTl+bSgrezFWPmd3NnJwTFU8X0lgYjdEKFcKelNYMGBsQVg/VE40VW98
UWZ0U09oaUQ1SmBqM3gkTHQoNEsrRmA3R3VRU1NLM3g9Yy1IXnxnajQyMCV8U2MpSSR6Ckp0YUQw
ZTBzeXZlKkg4Y2UKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1t
YWMtc25vd2xlb3BhcmQvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9z
aXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1t
YWMtc25vd2xlb3BhcmQvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9z
aXRlZC1sYXllci1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0
MGU4YzE5Njc5YmUxYjE5MmFlY2JkNmEyNWVkZDE4YmMwNTJiOWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmxpdGVyYWwgMzM5Ngp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkx
QiVRbFlicFJ6bmtCOWdDQ000NyQ9U3VGeGVRNTMKejdLVWFpN1JlVEFDYUtBV1cpe1c8cmImajBz
ajIzTTdNN04mVyt2dkZTRHM7RDtKTjFNO3V1bWY9an5sWEtXMFkoCnpoSig+WngmezglR2R9WDxW
WjAkVztrIzA5WHZzT1hKPWMyUG5pPn1+R0JCe3JFOF89UkhPSUxETko9cz9GKSphQwp6YTQ7fVQ1
TDk0YmFCdiRMZzNsX3lHZmNmK3pWXz88SiRxfjMkVDJjQkBhfnopajNZUV5DZkJqUFBKOHlSV2JN
fG4Keks0NVNpeDZFUVRHUUoqbHo0VWNvPHJRR2kzMFA9MylOVDY5enxlM2prZz4+bT1kWS1tOCtF
fEllN2t+U1g2Mm0zCnpvNF8hMmMpeDwtPEkhUlVoOHdTRUYjTjE4Yyo/QGZ6PnN5RTx3V2ojTCp4
N0Q1d0hKQUdCOU13ZTY/NURlfTRVKAp6V0pVJnUqRTR2NU1zSndVMEV7dnRDS2QqVTZDNDV6Mzx9
QilLeD13TjFxWGVBb1M4TkFyWStFdzEjSHJ6QGl2LWYKd00+RndnMFhBQkFrNSppeEhUaF81STll
TUx0Xz9xUHN1YnowWms/MlZvJmc5dlVIeDN2SVZDZyEwMz14VW07ZTkoCgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvcmVwYWludC9ibG9jay1zZWxl
Y3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWlu
LWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA0YTViNmQ2YjNlODI3Y2RjMWNhZDU1NjI2MTI5ODI4NzRkNTlhNjE5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAw
CkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDI5MzQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2
WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuNTc9CnpeVGZteXZxVGUxTGxZQ0RCeTts
PSk4ciZXM2oraD1MYCQ8fCVjTkQmMzk8fGYrI0hAUmp2KkN1LXJoMEhKOFU0cAp6O0FuV0Z8SWRI
PEFISW9QJSQ7MjNqQUNMaCZ4Qn5Ma0dhRHNRKyRxQHEyYil8dElQfXhkISFwIzgzY3FRNyNJd1AK
ejdofmkzKSRCaUotflFfPCohU181cWdsY0orRWBtQWhDamgoX2BTT0U/N2Yza0tQckRAbyU0UnF6
KStGNHxBNXJ2Cno/V0BuLVhKRntRQCFxOWtvaTstUT5zI0BOPEFwdG08Klc+QXZmbTNVRzh8fnli
fD1Cc0xYZTNlYDxCcyRiTHZocgp6ZmlofFBnJitSM1RkQChTSzZtRnFDV2VUYTJiZFQtSUNVNXJa
bHdLQl88NUkkQSEwdFM3PXdkUDB3Y29fbVFlO1IKejFMNEA1JiN4cEk4MThrQTJLWj1WOF9qV31y
T2p3QTd8akt2eG5Pd2FmO1pCdkpAUmBrbHplSns0UVUyWFMzajNeCkhQNjxyX0Z7KjRWCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9yZXBhaW50L2Jsb2Nr
LXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1p
bi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjBmZjUwNGIzN2Iw
YmJjMDM3NWE2NThkOTU4ZDAxNzJiODhkNjA5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODY1
CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9r
PG19P29UbjI7Rwp6UjZfJDNxZVA9NXYmNkpDNlUjKEhsUWdyVyNGVjd1bDtsTHlHKCpNU052andi
eERJPXxJRUdacmQzKW1ePVYxb3sKejdSVUw4Wmx+OzdqJkE4WGMlaV4hUmFlNWl2dWtHbFdNSGBQ
XlBMPDYhdl87NFpVek9sNEdhdVAhO0c+MkY3djxRCnpJb2FQXlpkPiU8dn1JKDdKSnJtfUFScnZV
eitsKW8kezJFaTVOKjc8bndqQ2k7KS1GSVJFSnM0OH0taWNEQHtrXgptYlRtJGZXaXcka1ZHcUtE
RWlOe2JjWGpmc1EjWE5hVTxPWkRLYkxoKjJ+N1p+JEpOe2IKCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAppbmRleCAwMTk3MGZjMTUxZWEwNWQ5N2U0NDNkMGRlNzVjZWEyYmZkZGM4ZDFhLi45
Mjk0NjYxZjY0NDI4OWU1MmJjOTM3NjdjY2ViYjc2YzAxZTliNWM4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC00MDA2
LDMgKzQwMDYsNiBAQCBCVUdfQ0FSWUNMQVJLIE1BQyA6IGZhc3QvZG9tL2JsdXItY29udGVudGVk
aXRhYmxlLmh0bWwgPSBJTUFHRQogCiAvLyBOZWVkIHRvIGltcGxlbWVudCBmaWxlIG5hbWUgbG9n
Z2luZy4KIEJVR1dLNzY1NzIgOiBodHRwL3Rlc3RzL2Rvd25sb2FkID0gRkFJTAorCisvLyBNYXkg
ZmFpbCBpZiB0aGVzZSBwbGF0Zm9ybXMgZGlmZmVyIGZyb20gTGludXguIFJlbW92ZSB0aGlzIG9y
IHJlYmFzZWxpbmUgdGhlbSBvbmNlIHRoZSBidWcgbGFuZHMuCitCVUdXSzc2MDE1IFdJTiBNQUMg
OiBmYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLmh0
bWwgPSBJTUFHRQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123558</attachid>
            <date>2012-01-23 08:08:18 -0800</date>
            <delta_ts>2012-01-23 09:58:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120123110817.patch</filename>
            <type>text/plain</type>
            <size>55845</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFkNDc1MDM0MDIyMTk4
MWM3MmI2ODIxODk2N2M1ZTgwNTFmMWFkOS4uMDIyZWNlNThjNTA4OGY1NzU5N2ZiOGZkNzA0NjNj
ODJkODFjMTliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAxLTIwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDUXVhZEN1bGxlclRlc3QuY3BwIGFuZCBDQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6b3BhcXVlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0JsZW5kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yRHJhd1F1YWQ6OkNDU29saWRDb2xvckRy
YXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdhYmxlVGlsZTo6b3BhcXVlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6OnNldE9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aWxlZExheWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisKIDIwMTItMDEtMjMgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGluc3BlY3RvciBjbG9zZSBidXR0b24gaXMgbWlzc2luZyBpbiB0aGUgZG9jay10by1yaWdo
dCBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhZGNkZTg5NjA2ZDk1OWZhOGIw
NWZlMmVmNjFlZjEwYTZlNjNiOGE3Li44NTQyZTdhMDMyYmMyNGE5ZTFkM2NkZDFhZmE3OWQ0ZWIy
ZDA0MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEy
LTAxLTIwICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtj
aHJvbWl1bV0gVXNlIHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxs
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAx
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVz
dHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0
YXRlQ2hlY2tMYXllcjo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRl
Q2hlY2tMYXllcjo6c2V0T3BhcXVlQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRl
Q2hlY2tMYXllcjo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpURVNU
X0YpOgorICAgICAgICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERyYXdRdWFkOjpUZXN0RHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dERyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0UXVhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VEVTVCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpj
b3ZlcmFnZVZpc2libGVSZWN0T25UaWxlQm91bmRhcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpj
b3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c1RpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
dmVyYWdlVmlzaWJsZVJlY3RJbnRlcnNlY3RzQm91bmRzKToKKyAgICAgICAgKiB0ZXN0cy9MYXll
clRleHR1cmVVcGRhdGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAx
Mi0wMS0yMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogUGFnZUFnZW50Lm9wZW4oKSBkb3Nlbid0IGJlbG9uZyB0byB0aGUgcHJv
dG9jb2wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCmluZGV4IDBkOTdlNTJhZWRlMGY5ODBhZGExNWRlMGExNGExZDI4ZDg2YTFlODguLjBl
OWE0NTJkOGYzYjIyYTkzNjI0MWEwZDg1ZGQ3YWI4ZTA4MWQ4OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC04Miw4ICs4Miw2
IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJ
bWFnZVNpemUodGlsZVNpemUpOwogCi0gICAgYm9vbCBsYXllcklzT3BhcXVlID0gbV9jYW52YXMu
b3BhcXVlKCk7Ci0KICAgICBtX2NhbnZhcy5yZXNpemUoY29udGVudFJlY3Quc2l6ZSgpKTsKICAg
ICAvLyBBc3N1bXB0aW9uOiBpZiBhIHRpbGVyIGlzIHVzaW5nIGJvcmRlciB0ZXhlbHMsIHRoZW4g
aXQgaXMgYmVjYXVzZSB0aGUKICAgICAvLyBsYXllciBpcyBsaWtlbHkgdG8gYmUgZmlsdGVyZWQg
b3IgdHJhbnNmb3JtZWQuIEJlY2F1c2Ugb2YgaXQgbWlnaHQgYmUKQEAgLTkxLDExICs4OSwxMCBA
QCB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdAogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpU
ZXh0T3B0aW9uIHRleHRPcHRpb24gPQogICAgICAgICBib3JkZXJUZXhlbHMgPyBQbGF0Zm9ybUNh
bnZhczo6UGFpbnRlcjo6R3JheXNjYWxlVGV4dCA6IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpT
dWJwaXhlbFRleHQ7CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRlcigm
bV9jYW52YXMsIHRleHRPcHRpb24pOwotICAgIGNhbnZhc1BhaW50ZXIuc2tpYUNvbnRleHQoKS0+
c2V0VHJhY2tPcGFxdWVSZWdpb24oIWxheWVySXNPcGFxdWUpOworICAgIGNhbnZhc1BhaW50ZXIu
c2tpYUNvbnRleHQoKS0+c2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7CiAgICAgcGFpbnRDb250
ZW50cygqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxl
KTsKIAotICAgIGlmICghbGF5ZXJJc09wYXF1ZSkKLSAgICAgICAgKnJlc3VsdGluZ09wYXF1ZVJl
Y3QgPSBjYW52YXNQYWludGVyLnNraWFDb250ZXh0KCktPm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgp
OworICAgICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0gY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgp
LT5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKIH0KIAogdm9pZCBCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggMTc5ZmVhNmUxMmJmMTAzYzViMDc0MzVjZjI0
YTNhNDhmOGNkOTMyMy4uMDQ5ZmQyNDA4M2Y0Mjc1Y2U1MjZkNjFiODhkM2UwNTU1NjNlZjBhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNzEsOCArNzEsNyBAQCBwdWJsaWM6
CiAgICAgLy8gVGhpcyBmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb21wb25lbnQgb3JkZXIgaW4gdGhl
IHNhbXBsZWQgdGV4ZWwuCiAgICAgLy8gSWYgdGhlIGZvcm1hdCBpcyBUZXhlbEZvcm1hdEJHUkEs
IHZlYzQueCBpcyBibHVlIGFuZCB2ZWM0LnogaXMgcmVkLgogICAgIHZpcnR1YWwgU2FtcGxlZFRl
eGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KSA9IDA7
Ci0gICAgLy8gVGhlIHxyZXN1bHRpbmdPcGFxdWVSZWN0fCBnaXZlcyBiYWNrIGEgcmVnaW9uIG9m
IHRoZSBsYXllciB0aGF0IHdhcyBwYWludGVkIG9wYXF1ZS4gSWYgdGhlIGxheWVyIGlzIG1hcmtl
ZCBvcGFxdWUgaW4gdGhlIHVwZGF0ZXIsCi0gICAgLy8gdGhlbiB0aGlzIHJlZ2lvbiBzaG91bGQg
YmUgaWdub3JlZCBpbiBwcmVmZXJlbmNlIGZvciB0aGUgZW50aXJlIGxheWVyJ3MgYXJlYS4KKyAg
ICAvLyBUaGUgfHJlc3VsdGluZ09wYXF1ZVJlY3R8IGdpdmVzIGJhY2sgYSByZWdpb24gb2YgdGhl
IGxheWVyIHRoYXQgd2FzIHBhaW50ZWQgb3BhcXVlLgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUm
IC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50
c1NjYWxlICovLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCogLyog
cmVzdWx0aW5nT3BhcXVlUmVjdCAqLykgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMGQ5NzRmYTYzYTQ0NTdk
OWVhYzdjOGI4NzNmN2U5MWE0ZDI2ODQzYi4uYzlkYWI3MmYxMzJlOGQ5YmI5M2FiMDg1N2MxZDcw
NTUwMWQzZWNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50
ZXIpCiAgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIpCi0gICAgLCBtX2xh
eWVySXNPcGFxdWUoZmFsc2UpCiB7CiB9CiAKQEAgLTU0LDEzICs1MywxMiBAQCB2b2lkIFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRS
ZWN0JiBjb250ZW50UgogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNv
cmRpbmcoY29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBs
YXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KGNhbnZhcyk7CiAgICAgcGxhdGZvcm1D
b250ZXh0LnNldERlZmVycmVkKHRydWUpOwotICAgIHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09w
YXF1ZVJlZ2lvbighbV9sYXllcklzT3BhcXVlKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQuc2V0VHJh
Y2tPcGFxdWVSZWdpb24odHJ1ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4
dCgmcGxhdGZvcm1Db250ZXh0KTsKICAgICBwYWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwg
Y29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmco
KTsKIAotICAgIGlmICghbV9sYXllcklzT3BhcXVlKQotICAgICAgICAqcmVzdWx0aW5nT3BhcXVl
UmVjdCA9IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKKyAgICAqcmVz
dWx0aW5nT3BhcXVlUmVjdCA9IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3Qo
KTsKIH0KIAogdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpkcmF3UGlj
dHVyZShTa0NhbnZhcyogY2FudmFzKQpAQCAtNjksMTEgKzY3LDYgQEAgdm9pZCBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpkcmF3UGljdHVyZShTa0NhbnZhcyogY2FudmFzKQog
ICAgIGNhbnZhcy0+ZHJhd1BpY3R1cmUobV9waWN0dXJlKTsKIH0KIAotdm9pZCBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCi17Ci0gICAg
bV9sYXllcklzT3BhcXVlID0gb3BhcXVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAj
ZW5kaWYgLy8gVVNFKFNLSUEpCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCmluZGV4IDdmY2M2MDU5ZjkwZTdkOWQxYzMwMWJmMmE3MGY1MTUyYTQ5MjdiMDAuLmU3N2Vl
MzA5NDYzYTA0Yjc0YTBhOTM5YTYyMTcyZGZiOWNhOTUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTU0LDEzICs1NCw5
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRl
eGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7
CiAgICAgdm9pZCBkcmF3UGljdHVyZShTa0NhbnZhcyopOwogCi0gICAgdmlydHVhbCB2b2lkIHNl
dE9wYXF1ZShib29sKTsKLQogcHJpdmF0ZToKICAgICAvLyBSZWNvcmRpbmcgY2FudmFzLgogICAg
IFNrUGljdHVyZSBtX3BpY3R1cmU7Ci0gICAgLy8gVHJ1ZSB3aGVuIGl0IGlzIGtub3duIHRoYXQg
YWxsIG91dHB1dCBwaXhlbHMgd2lsbCBiZSBvcGFxdWUuCi0gICAgYm9vbCBtX2xheWVySXNPcGFx
dWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcAppbmRleCA5MmQxMDJlMzIyYTIxODM1NWUxNTY4MWU1MDA1YWQzMmEyZTJiNmU1Li5i
NWM2NTBjZGFiNDNhZTZkMzg2YzZmM2QwZTlkMDZhOTRkNjYwOTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogCiAgICAgSW50UmVj
dCBtX2RpcnR5UmVjdDsKICAgICBJbnRSZWN0IG1fdXBkYXRlUmVjdDsKKyAgICBJbnRSZWN0IG1f
b3BhcXVlUmVjdDsKIHByaXZhdGU6CiAgICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU+IG1fdGV4dHVyZTsKIH07CkBAIC0yNzIsNyArMjczLDcgQEAgdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgICAgICBp
ZiAodGlsZS0+aXNEaXJ0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgdGls
ZWRMYXllci0+c3luY1RleHR1cmVJZChpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0
dXJlSWQoKSk7CisgICAgICAgIHRpbGVkTGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCB0
aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgdGlsZS0+bV9vcGFxdWVSZWN0KTsK
ICAgICB9CiB9CiAKQEAgLTQxNyw4ICs0MTgsOCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAg
ICAgLy8gSG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBo
aWNzQ29udGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCiAgICAgLy8gc28gd2UgZ3JhYiBh
IGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhl
IHBhaW50IGNvbXBsZXRlcy4KICAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVj
dG9yKHRleHR1cmVVcGRhdGVyKCkpOwotICAgIEludFJlY3Qgb3BhcXVlUmVjdDsgLy8gRklYTUU6
IHVudXNlZC4gcmVtb3ZlIHRoaXMgYW5kIHN0b3JlIGluIHRoZSBsYXllciB0byBwYXNzIHRvIGlt
cGwgZm9yIGRyYXcgY3VsbGluZwotICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0
ZShtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4
ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSwgJm9wYXF1ZVJlY3QpOworICAgIEludFJlY3QgcGFpbnRl
ZE9wYXF1ZVJlY3Q7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFp
bnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwg
Y29udGVudHNTY2FsZSgpLCAmcGFpbnRlZE9wYXF1ZVJlY3QpOwogICAgIGZvciAoaW50IGogPSB0
b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0g
cmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChp
LCBqKTsKQEAgLTQyNywxMiArNDI4LDIyIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAg
ICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCisgICAgICAgICAg
ICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKKworICAgICAg
ICAgICAgLy8gU2F2ZSB3aGF0IHdhcyBwYWludGVkIG9wYXF1ZSBpbiB0aGUgdGlsZS4gSWYgZXZl
cnl0aGluZyBwYWludGVkIGluIHRoZSB0aWxlIHdhcyBvcGFxdWUsIGFuZCB0aGUgYXJlYSBpcyBh
IHN1YnNldCBvZiBhbgorICAgICAgICAgICAgLy8gYWxyZWFkeSBvcGFxdWUgYXJlYSwga2VlcCB0
aGUgb2xkIGFyZWEuCisgICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVkUmVjdCA9IGludGVy
c2VjdGlvbih0aWxlUmVjdCwgbV9wYWludFJlY3QpOworICAgICAgICAgICAgSW50UmVjdCB0aWxl
UGFpbnRlZE9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIHBhaW50ZWRPcGFxdWVS
ZWN0KTsKKyAgICAgICAgICAgIGlmICh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBhaW50
ZWRSZWN0IHx8ICF0aWxlLT5tX29wYXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVS
ZWN0KSkKKyAgICAgICAgICAgICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9w
YXF1ZVJlY3Q7CisKICAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFuZENs
ZWFyRGlydHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRhdGVS
ZWN0LgogICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0ID0gdGlsZS0+bV91cGRh
dGVSZWN0OwogICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IG1fdGls
ZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAgSW50UmVjdCBmaXhlZFNpemVUaWxlUmVj
dFdpdGhCb3JkZXJzID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CisgICAgICAgICAgICBJbnRS
ZWN0IHNvdXJjZVJlY3QgPSBmaXhlZFNpemVUaWxlUmVjdFdpdGhCb3JkZXJzOwogICAgICAgICAg
ICAgc291cmNlUmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0KTsKICAgICAgICAgICAgIC8vIFBhaW50
IHJlY3Qgbm90IGd1YXJhbnRlZWQgdG8gbGluZSB1cCBvbiB0aWxlIGJvdW5kYXJpZXMsIHNvCiAg
ICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCBzb3VyY2VSZWN0IGRvZXNuJ3QgZXh0ZW5kIG91
dHNpZGUgb2YgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKaW5kZXggYWNjN2MwMjg2NmNjODk1OTMxNTE5
NmIzYjgzOGQwODg2YjUxYzZkZS4uNTY1NjM1MTg4YzYyNTFkNDMzMjBmNGI4NWQ4OWViMWQ0ZmJm
MjI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaApAQCAtNTEsOSArNTEsMTYgQEAgcHVibGljOgogICAg
IGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0
YXRlLT5sYXllclJlY3QoKTsgfQogICAgIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmNsaXBSZWN0KCk7IH0KICAgICBmbG9hdCBvcGFj
aXR5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPm9wYWNpdHkoKTsgfQotICAg
IC8vIEZvciB0aGUgcHVycG9zZXMgb2YgY3VsbGluZywgYXJlIHRoZSBjb250ZW50cyBvZiB0aGlz
IHF1YWQgb3BhcXVlPwotICAgIGJvb2wgZHJhd3NPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX3No
YXJlZFF1YWRTdGF0ZS0+aXNPcGFxdWUoKSAmJiBtX3F1YWRPcGFxdWUgJiYgb3BhY2l0eSgpID09
IDE7IH0KLSAgICBib29sIG5lZWRzQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRR
dWFkU3RhdGUtPmlzT3BhcXVlKCkgfHwgbV9uZWVkc0JsZW5kaW5nIHx8IG9wYWNpdHkoKSAhPSAx
OyB9CisgICAgLy8gRm9yIHRoZSBwdXJwb3NlcyBvZiBjdWxsaW5nLCB3aGF0IHBhcnQgb2YgdGhl
IGNvbnRlbnRzIG9mIHRoaXMgcXVhZCBhcmUgb3BhcXVlPworICAgIEludFJlY3Qgb3BhcXVlUmVj
dCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAob3BhY2l0eSgpICE9IDEpCisgICAgICAgICAg
ICByZXR1cm4gSW50UmVjdCgpOworICAgICAgICBpZiAobV9zaGFyZWRRdWFkU3RhdGUtPmlzT3Bh
cXVlKCkgJiYgbV9xdWFkT3BhcXVlKQorICAgICAgICAgICAgcmV0dXJuIG1fcXVhZFJlY3Q7Cisg
ICAgICAgIHJldHVybiBtX29wYXF1ZVJlY3Q7CisgICAgfQorICAgIGJvb2wgbmVlZHNCbGVuZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNCbGVuZGluZyB8fCBvcGFxdWVSZWN0KCkgIT0gbV9x
dWFkUmVjdDsgfQogICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCk7IH0K
IAogICAgIGVudW0gTWF0ZXJpYWwgewpAQCAtOTAsNiArOTcsMTAgQEAgcHJvdGVjdGVkOgogICAg
IC8vIHZhcmlhYmxlcy4KICAgICBib29sIG1fcXVhZE9wYXF1ZTsKICAgICBib29sIG1fbmVlZHNC
bGVuZGluZzsKKworICAgIC8vIEJlIGRlZmF1bHQsIHRoaXMgcmVjdCBpcyBlbXB0eS4gSXQgaXMg
dXNlZCB3aGVuIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBhbmQgYWJvdmUKKyAgICAvLyB2YXJpYWJs
ZXMgZGV0ZXJtaW5lIHRoYXQgdGhlIHF1YWQgaXMgbm90IGZ1bGx5IG9wYXF1ZSBidXQgbWF5IGJl
IHBhcnRpYWxseSBvcGFxdWUuCisgICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCBkMzBmZmM4NDBjOTc4OWJmNzQ4MTYxMGY4NjE0
OGVmNjVkOTM2NzNmLi43NzEwMDMyZTA1YzZhZmFhNDMxNzlkOWE3OTI5YTA4MWYzZTBmYjBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBDQ1F1YWRD
dWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0KQogCiAgICAgICAg
IGJvb2wga2VlcFF1YWQgPSAhcmVnaW9uQ29udGFpbnNSZWN0KG9wYXF1ZUNvdmVyYWdlVGh1c0Zh
ciwgcXVhZFJlY3QpOwogCi0gICAgICAgIGlmIChrZWVwUXVhZCAmJiBkcmF3UXVhZC0+ZHJhd3NP
cGFxdWUoKSAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKSB7Ci0gICAg
ICAgICAgICBJbnRSZWN0IG9wYXF1ZVJlY3QgPSBlbmNsb3NlZEludFJlY3QoZHJhd1F1YWQtPnF1
YWRUcmFuc2Zvcm0oKS5tYXBSZWN0KEZsb2F0UmVjdChkcmF3UXVhZC0+cXVhZFJlY3QoKSkpKTsK
KyAgICAgICAgaWYgKGtlZXBRdWFkICYmIGRyYXdRdWFkLT5pc0xheWVyQXhpc0FsaWduZWRJbnRS
ZWN0KCkpIHsKKyAgICAgICAgICAgIEludFJlY3Qgb3BhcXVlUmVjdCA9IGVuY2xvc2VkSW50UmVj
dChkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFJlY3QoRmxvYXRSZWN0KGRyYXdRdWFkLT5v
cGFxdWVSZWN0KCkpKSk7CiAgICAgICAgICAgICBvcGFxdWVDb3ZlcmFnZVRodXNGYXIudW5pdGUo
b3BhcXVlUmVjdCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJh
d1F1YWQuY3BwCmluZGV4IGQxYzcyOWE0MTU3ZGQyMjE3MmI2YzgzMWQ3NzAwY2M0MjBiNGVlNmEu
LjdmNmY5ODExM2Q2ZjhiOWE3Mjc4Yjk2NzgwZjY0YmJmOTg0NTYxNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRy
YXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAKQEAgLTM4LDggKzM4LDEwIEBAIENDU29saWRD
b2xvckRyYXdRdWFkOjpDQ1NvbGlkQ29sb3JEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0CiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3
UXVhZDo6U29saWRDb2xvciwgcXVhZFJlY3QpCiAgICAgLCBtX2NvbG9yKGNvbG9yKQogewotICAg
IGlmIChtX2NvbG9yLmFscGhhKCkgIT0gMSkKKyAgICBpZiAobV9jb2xvci5oYXNBbHBoYSgpKQog
ICAgICAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKKyAgICBlbHNlCisgICAgICAgIG1fb3BhcXVl
UmVjdCA9IHF1YWRSZWN0OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAKaW5k
ZXggZGY4MzA1MDhhMmM4MmNhMjc4YjM1Y2NjMDA1YjNkMDc5YTFjN2ZjNi4uYjM1YjZmNjlmM2My
MDE2ZjRlMjM4NzczZjBkYzk0YzY5NTZiMDM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFk
LmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093
blB0cjxDQ1RpbGVEcmF3UXVhZD4gQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBj
b25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3
aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdo
dEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCitQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBD
Q1RpbGVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0
LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZz
ZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJv
b2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29s
IHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENDVGlsZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJZCwg
dGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIHN3aXp6bGVDb250ZW50
cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RpbGVEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1
YWRSZWN0LCBvcGFxdWVSZWN0LCB0ZXh0dXJlSWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXpl
LCB0ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29udGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwg
cmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogfQogCi1DQ1RpbGVEcmF3UXVhZDo6Q0NUaWxl
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQ
b2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQg
dGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9v
bCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQorQ0NUaWxl
RHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVS
ZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVP
ZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIs
IGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBi
b29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKICAgICA6IENDRHJhd1F1YWQoc2hh
cmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIHF1YWRSZWN0KQogICAgICwg
bV90ZXh0dXJlSWQodGV4dHVyZUlkKQogICAgICwgbV90ZXh0dXJlT2Zmc2V0KHRleHR1cmVPZmZz
ZXQpCkBAIC00OCw2ICs0OCw3IEBAIENDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJCiB7CiAgICAgaWYg
KGlzQW50aWFsaWFzZWQoKSkKICAgICAgICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKKyAgICBt
X29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQu
aAppbmRleCAxMmU1M2RiZDJhOGY1ZDFmYjNkMzMzMTliMmMwMzExZWM1M2Y1Y2E4Li4zMzUwMWE4
MDZjZmFmZjk2MGYyNGM2ZGQ2ZjFjNzgyMGExNTc4OGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdR
dWFkLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NUaWxl
RHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q0NUaWxlRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZURy
YXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBx
dWFkUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0
dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmls
dGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VB
QSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZv
cm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25z
dCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6
bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVk
Z2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
SWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQogICAgIEludFBvaW50IHRleHR1cmVP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVPZmZzZXQ7IH0KQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNBbnRpYWxpYXNlZCgpIGNvbnN0IHsgcmV0dXJuIGxlZnRF
ZGdlQUEoKSB8fCB0b3BFZGdlQUEoKSB8fCByaWdodEVkZ2VBQSgpIHx8IGJvdHRvbUVkZ2VBQSgp
OyB9CiAKIHByaXZhdGU6Ci0gICAgQ0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQs
IGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6
ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0
RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdl
QUEpOworICAgIENDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50
U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29u
dGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEs
IGJvb2wgYm90dG9tRWRnZUFBKTsKIAogICAgIFBsYXRmb3JtM0RPYmplY3QgbV90ZXh0dXJlSWQ7
CiAgICAgSW50UG9pbnQgbV90ZXh0dXJlT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmNwcAppbmRleCAzNDRkNzQyNDVmOGVjMWY1ZmRiNmMyY2IyMWRjZGI5MWNhYjQ5MTgyLi4w
MDBlZmVmMjBmNTc2ZDkyYmNiNDBkODE2MjA0OWE2N2E4OTMzMDNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtNTEsOCArNTEsMTMgQEAgcHVibGljOgogCiAgICAgUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQog
ICAgIHZvaWQgc2V0VGV4dHVyZUlkKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKSB7IG1fdGV4
dHVyZUlkID0gdGV4dHVyZUlkOyB9CisKKyAgICBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9vcGFxdWVSZWN0OyB9CisgICAgdm9pZCBzZXRPcGFxdWVSZWN0KGNv
bnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpIHsgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVjdDsgfQor
CiBwcml2YXRlOgogICAgIFBsYXRmb3JtM0RPYmplY3QgbV90ZXh0dXJlSWQ7CisgICAgSW50UmVj
dCBtX29wYXF1ZVJlY3Q7CiB9OwogCiBDQ1RpbGVkTGF5ZXJJbXBsOjpDQ1RpbGVkTGF5ZXJJbXBs
KGludCBpZCkKQEAgLTEzNyw3ICsxNDIsOSBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVu
ZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZQogICAg
ICAgICAgICAgRHJhd2FibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwogICAgICAgICAgICAg
SW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaik7CiAgICAgICAgICAg
ICBJbnRSZWN0IGRpc3BsYXlSZWN0ID0gdGlsZVJlY3Q7CisgICAgICAgICAgICBJbnRSZWN0IHRp
bGVPcGFxdWVSZWN0ID0gdGlsZS0+b3BhcXVlUmVjdCgpOwogICAgICAgICAgICAgdGlsZVJlY3Qu
aW50ZXJzZWN0KGxheWVyUmVjdCk7CisgICAgICAgICAgICB0aWxlT3BhcXVlUmVjdC5pbnRlcnNl
Y3QobGF5ZXJSZWN0KTsKIAogICAgICAgICAgICAgLy8gU2tpcCBlbXB0eSB0aWxlcy4KICAgICAg
ICAgICAgIGlmICh0aWxlUmVjdC5pc0VtcHR5KCkpCkBAIC0xNjQsNyArMTcxLDcgQEAgdm9pZCBD
Q1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUKICAgICAgICAgICAgIGJvb2wgYm90dG9tRWRnZUFBID0gaiA9PSBt
X3RpbGVyLT5udW1UaWxlc1koKSAtIDEgJiYgdXNlQUE7CiAKICAgICAgICAgICAgIGNvbnN0IEdD
M0RpbnQgdGV4dHVyZUZpbHRlciA9IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8gR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwotICAgICAg
ICAgICAgcXVhZExpc3QuYXBwZW5kKENDVGlsZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0
YXRlLCB0aWxlUmVjdCwgdGlsZS0+dGV4dHVyZUlkKCksIHRleHR1cmVPZmZzZXQsIHRleHR1cmVT
aXplLCB0ZXh0dXJlRmlsdGVyLCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEsIHRvcEVk
Z2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOworICAgICAgICAgICAgcXVhZExpc3Qu
YXBwZW5kKENDVGlsZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwg
dGlsZU9wYXF1ZVJlY3QsIHRpbGUtPnRleHR1cmVJZCgpLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJl
U2l6ZSwgdGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRnZUFBLCB0b3BF
ZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKIAogICAgICAgICAgICAgaWYgKGhh
c0RlYnVnQm9yZGVycygpKSB7CiAgICAgICAgICAgICAgICAgQ29sb3IgY29sb3IoZGVidWdCb3Jk
ZXJDb2xvcigpLnJlZCgpLCBkZWJ1Z0JvcmRlckNvbG9yKCkuZ3JlZW4oKSwgZGVidWdCb3JkZXJD
b2xvcigpLmJsdWUoKSwgZGVidWdUaWxlQm9yZGVyQWxwaGEpOwpAQCAtMTgzLDE0ICsxOTAsMTUg
QEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpzZXRUaWxpbmdEYXRhKGNvbnN0IENDTGF5ZXJUaWxp
bmdEYXRhJiB0aWxlcikKICAgICAqbV90aWxlciA9IHRpbGVyOwogfQogCi12b2lkIENDVGlsZWRM
YXllckltcGw6OnN5bmNUZXh0dXJlSWQoaW50IGksIGludCBqLCBQbGF0Zm9ybTNET2JqZWN0IHRl
eHR1cmVJZCkKK3ZvaWQgQ0NUaWxlZExheWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVzKGludCBp
LCBpbnQgaiwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmIG9wYXF1
ZVJlY3QpCiB7CiAgICAgRHJhd2FibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwogICAgIGlm
ICghdGlsZSkKICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUoaSwgaik7CiAgICAgdGlsZS0+c2V0
VGV4dHVyZUlkKHRleHR1cmVJZCk7CisgICAgdGlsZS0+c2V0T3BhcXVlUmVjdChvcGFxdWVSZWN0
KTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCmluZGV4IDQ3
OGIwMzQwMjM0NTA4MTliYmNlYTBhOGRhNWFkMzIxNTZmNTRiZDIuLjdhZDcxNTk5YjIxMzY1ODU4
YTFjNWE1ZjdhOWNmNDI0MWVhMDY4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgK
QEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTa2lwc0RyYXcoYm9vbCBz
a2lwc0RyYXcpIHsgbV9za2lwc0RyYXcgPSBza2lwc0RyYXc7IH0KICAgICB2b2lkIHNldFRpbGlu
Z0RhdGEoY29uc3QgQ0NMYXllclRpbGluZ0RhdGEmIHRpbGVyKTsKLSAgICB2b2lkIHN5bmNUZXh0
dXJlSWQoaW50LCBpbnQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKTsKKyAgICB2b2lkIHB1
c2hUaWxlUHJvcGVydGllcyhpbnQsIGludCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNv
bnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpOwogCiAgICAgdm9pZCBzZXRDb250ZW50c1N3aXp6bGVk
KGJvb2wgY29udGVudHNTd2l6emxlZCkgeyBtX2NvbnRlbnRzU3dpenpsZWQgPSBjb250ZW50c1N3
aXp6bGVkOyB9CiAgICAgYm9vbCBjb250ZW50c1N3aXp6bGVkKCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZW50c1N3aXp6bGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDg2ODNiODRiMDNjYTM2ZmZj
ZDg0YzI1ZGI2MTk1NGY2ZTI2NjRkYzIuLmY1OTg5M2RlOTA2NDE4ZjhjYmQ3NTc0MGFlMjkzOWUy
M2NjMjM1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zMDcsOCArMzA3LDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKICAgICB7CiAgICAgICAgIG1fcXVh
ZHNBcHBlbmRlZCA9IHRydWU7Ci0gICAgICAgIAotICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4g
dGVzdEJsZW5kaW5nRHJhd1F1YWQgPSBDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgSW50UmVjdCg1LCA1LCA1LCA1KSwgQ29sb3I6OndoaXRlKTsKKworICAgICAg
ICBDb2xvciBjb2xvciA9IG1fb3BhcXVlQ29sb3IgPyBDb2xvcjo6d2hpdGUgOiBDb2xvcigwLCAw
LCAwLCAwKTsKKyAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IHRlc3RCbGVuZGluZ0RyYXdRdWFk
ID0gQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJlY3Qo
NSwgNSwgNSwgNSksIGNvbG9yKTsKICAgICAgICAgRVhQRUNUX0VRKG1fYmxlbmQsIHRlc3RCbGVu
ZGluZ0RyYXdRdWFkLT5uZWVkc0JsZW5kaW5nKCkpOwogICAgICAgICBFWFBFQ1RfRVEobV9oYXNS
ZW5kZXJTdXJmYWNlLCAhIXJlbmRlclN1cmZhY2UoKSk7CiAgICAgfQpAQCAtMzIyLDEyICszMjMs
MTUgQEAgcHVibGljOgogCiAgICAgYm9vbCBxdWFkc0FwcGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9xdWFkc0FwcGVuZGVkOyB9CiAKKyAgICB2b2lkIHNldE9wYXF1ZUNvbG9yKGJvb2wgb3BhcXVl
Q29sb3IpIHsgbV9vcGFxdWVDb2xvciA9IG9wYXF1ZUNvbG9yOyB9CisKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIoaW50IGlkKQogICAgICAgICA6IENDTGF5ZXJJ
bXBsKGlkKQogICAgICAgICAsIG1fYmxlbmQoZmFsc2UpCiAgICAgICAgICwgbV9oYXNSZW5kZXJT
dXJmYWNlKGZhbHNlKQogICAgICAgICAsIG1fcXVhZHNBcHBlbmRlZChmYWxzZSkKKyAgICAgICAg
LCBtX29wYXF1ZUNvbG9yKHRydWUpCiAgICAgewogICAgICAgICBzZXRBbmNob3JQb2ludChGbG9h
dFBvaW50KDAsIDApKTsKICAgICAgICAgc2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CkBAIC0z
MzcsNiArMzQxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYmxlbmQ7CiAgICAgYm9vbCBtX2hh
c1JlbmRlclN1cmZhY2U7CiAgICAgYm9vbCBtX3F1YWRzQXBwZW5kZWQ7CisgICAgYm9vbCBtX29w
YXF1ZUNvbG9yOwogfTsKIAogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc1NzgzCkBAIC0zNTgsMTggKzM2MywzNiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAKICAgICAvLyBPcGFx
dWUgbGF5ZXIsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUo
dHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb2xvcih0cnVlKTsKKyAgICBsYXllcjEtPnNl
dEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygp
OworICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKKworICAgIC8vIExh
eWVyIHdpdGggdHJhbnNsdWNlbnQgY29udGVudCwgYnV0IHNvbGlkIGNvbG9yIGlzIG9wYXF1ZSwg
c28gZHJhd24gd2l0aG91dCBibGVuZGluZy4KKyAgICBsYXllcjEtPnNldE9wYXF1ZShmYWxzZSk7
CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb2xvcih0cnVlKTsKICAgICBsYXllcjEtPnNldEV4cGVj
dGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwogICAg
IEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKIAotICAgIC8vIExheWVyIHdp
dGggdHJhbnNsdWNlbnQgY29udGVudCwgZHJhd24gd2l0aCBibGVuZGluZy4KKyAgICAvLyBMYXll
ciB3aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQgYW5kIHBhaW50aW5nLCBzbyBkcmF3biB3aXRoIGJs
ZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICBsYXllcjEtPnNldE9w
YXF1ZUNvbG9yKGZhbHNlKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNl
KTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIx
LT5xdWFkc0FwcGVuZGVkKCkpOwogCiAgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFj
aXR5LCBkcmF3biB3aXRoIGJsZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOwor
ICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFjaXR5
KDAuNSk7CisgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7CisgICAgbV9o
b3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBl
bmRlZCgpKTsKKworICAgIC8vIExheWVyIHdpdGggdHJhbnNsdWNlbnQgb3BhY2l0eSBhbmQgcGFp
bnRpbmcsIGRyYXduIHdpdGggYmxlbmRpbmcuCisgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7
CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb2xvcihmYWxzZSk7CiAgICAgbGF5ZXIxLT5zZXRPcGFj
aXR5KDAuNSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7CiAgICAg
bV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwpAQCAtMzgwLDkgKzQwMywxMSBAQCBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMp
CiAKICAgICAvLyAyIG9wYXF1ZSBsYXllcnMsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCiAgICAg
bGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb2xvcih0cnVl
KTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlv
bihmYWxzZSwgZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVy
Mi0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFjaXR5KDEpOwogICAg
IGxheWVyMi0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5k
cmF3TGF5ZXJzKCk7CkBAIC0zOTIsMTggKzQxNywzMCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgLy8gUGFy
ZW50IGxheWVyIHdpdGggdHJhbnNsdWNlbnQgY29udGVudCwgZHJhd24gd2l0aCBibGVuZGluZy4K
ICAgICAvLyBDaGlsZCBsYXllciB3aXRoIG9wYXF1ZSBjb250ZW50LCBkcmF3biB3aXRob3V0IGJs
ZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICBsYXllcjEtPnNldE9w
YXF1ZUNvbG9yKGZhbHNlKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNl
KTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAgbV9ob3N0
SW1wbC0+ZHJhd0xheWVycygpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRl
ZCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7CiAKKyAgICAv
LyBQYXJlbnQgbGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBjb250ZW50IGJ1dCBvcGFxdWUgcGFpbnRp
bmcsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCisgICAgLy8gQ2hpbGQgbGF5ZXIgd2l0aCBvcGFx
dWUgY29udGVudCwgZHJhd24gd2l0aG91dCBibGVuZGluZy4KKyAgICBsYXllcjEtPnNldE9wYXF1
ZShmYWxzZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb2xvcih0cnVlKTsKKyAgICBsYXllcjEt
PnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CisgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlv
bihmYWxzZSwgZmFsc2UpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBF
Q1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIy
LT5xdWFkc0FwcGVuZGVkKCkpOworCiAgICAgLy8gUGFyZW50IGxheWVyIHdpdGggdHJhbnNsdWNl
bnQgb3BhY2l0eSBhbmQgb3BhcXVlIGNvbnRlbnQuIFNpbmNlIGl0IGhhcyBhCiAgICAgLy8gZHJh
d2luZyBjaGlsZCwgaXQncyBkcmF3biB0byBhIHJlbmRlciBzdXJmYWNlIHdoaWNoIGNhcnJpZXMg
dGhlIG9wYWNpdHksCiAgICAgLy8gc28gaXQncyBpdHNlbGYgZHJhd24gd2l0aG91dCBibGVuZGlu
Zy4KICAgICAvLyBDaGlsZCBsYXllciB3aXRoIG9wYXF1ZSBjb250ZW50LCBkcmF3biB3aXRob3V0
IGJsZW5kaW5nIChwYXJlbnQgc3VyZmFjZQogICAgIC8vIGNhcnJpZXMgdGhlIGluaGVyaXRlZCBv
cGFjaXR5KS4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9w
YXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+c2V0T3BhY2l0eSgwLjUpOwogICAgIGxheWVy
MS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIHRydWUpOwogICAgIGxheWVyMi0+c2V0RXhwZWN0YXRp
b24oZmFsc2UsIGZhbHNlKTsKQEAgLTQxNCw5ICs0NTEsMTEgQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIC8v
IERyYXcgYWdhaW4sIGJ1dCB3aXRoIGNoaWxkIG5vbi1vcGFxdWUsIHRvIG1ha2Ugc3VyZQogICAg
IC8vIGxheWVyMSBub3QgY3VsbGVkLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOworICAg
IGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDEp
OwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBsYXllcjIt
PnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjItPnNldE9wYXF1ZUNvbG9yKHRydWUpOwogICAg
IGxheWVyMi0+c2V0T3BhY2l0eSgwLjUpOwogICAgIGxheWVyMi0+c2V0RXhwZWN0YXRpb24odHJ1
ZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKQEAgLTQyOCwxMSArNDY3
LDI0IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJh
d2luZ09wYXF1ZUxheWVycykKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIx
LT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3BhcXVlKGZh
bHNlKTsKKyAgICBsYXllcjItPnNldE9wYXF1ZUNvbG9yKGZhbHNlKTsKICAgICBsYXllcjItPnNl
dE9wYWNpdHkoMSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7CiAg
ICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVh
ZHNBcHBlbmRlZCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7
CisKKyAgICAvLyBBbmQgd2hlbiB0aGUgbGF5ZXIgc2F5cyBpdHMgbm90IG9wYXF1ZSBidXQgaXMg
cGFpbnRlZCBvcGFxdWUsIGl0IGlzIG5vdCBibGVuZGVkLgorICAgIGxheWVyMS0+c2V0T3BhcXVl
KHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhY2l0eSgxKTsKKyAgICBsYXllcjEtPnNldEV4cGVj
dGF0aW9uKGZhbHNlLCBmYWxzZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWUoZmFsc2UpOworICAg
IGxheWVyMi0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFjaXR5KDEp
OworICAgIGxheWVyMi0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKKyAgICBtX2hvc3RJ
bXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVk
KCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKIH0KIAogY2xh
c3MgUmVzaGFwZVRyYWNrZXJDb250ZXh0OiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVy
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3Qu
Y3BwCmluZGV4IGVkMTVlNmMxMGUxZmU0NjJjOTQ5Njg1NmRiMzkzNDU2OWZhYjg4MWMuLjVlY2Ji
NTljOGUwM2JmYmYxNjYzMGQwMmQ4OTE5NzEyMTBjMzg4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcApAQCAtMzgsMzUgKzM4LDM2
IEBAIGNsYXNzIENDUXVhZEN1bGxlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAKIGNs
YXNzIFRlc3REcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKIHB1YmxpYzoKLSAgICBUZXN0
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHN0YXRlLCBNYXRlcmlhbCBtLCBjb25z
dCBJbnRSZWN0JiByZWN0KQorICAgIFRlc3REcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3Qm
IG9wYXF1ZVJlY3QpCiAgICAgOiBDQ0RyYXdRdWFkKHN0YXRlLCBtLCByZWN0KQogICAgIHsKKyAg
ICAgICAgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVjdDsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFz
c093blB0cjxUZXN0RHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3Rh
dGUsIE1hdGVyaWFsIG0sIGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgc3RhdGljIFBhc3NPd25Q
dHI8VGVzdERyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHN0YXRlLCBN
YXRlcmlhbCBtLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXN0RHJhd1F1YWQoc3RhdGUs
IG0sIHJlY3QpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXN0RHJhd1F1YWQoc3Rh
dGUsIG0sIHJlY3QsIG9wYXF1ZVJlY3QpKTsKICAgICB9CiB9OwogCi12b2lkIHNldFF1YWRzKEND
U2hhcmVkUXVhZFN0YXRlKiByb290U3RhdGUsIENDU2hhcmVkUXVhZFN0YXRlKiBjaGlsZFN0YXRl
LCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKK3ZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3RhdGUq
IHJvb3RTdGF0ZSwgQ0NTaGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVhZExpc3QmIHF1
YWRMaXN0LCBjb25zdCBJbnRSZWN0JiBjaGlsZE9wYXF1ZVJlY3QgPSBJbnRSZWN0KCkpCiB7CiAg
ICAgcXVhZExpc3QuY2xlYXIoKTsKIAotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6
OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQ
b2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERy
YXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJl
Y3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3Qu
YXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRD
b250ZW50LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOwot
ICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJh
d1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEw
MCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9v
dFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAx
MDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdR
dWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3Qo
SW50UG9pbnQoMjAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5h
cHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENv
bnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0g
ICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3
UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMjAwKSwgSW50U2l6ZSgx
MDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJv
b3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDIwMCwg
MjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0KLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERy
YXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRS
ZWN0KEludFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVu
ZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRl
bnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAg
cXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1
YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEwMCwg
MTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRT
dGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMTAw
KSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVh
ZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KElu
dFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVh
ZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDAp
KSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6
Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBv
aW50KDIwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAg
cXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVh
ZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAx
MDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVh
ZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KElu
dFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsK
KyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0Ry
YXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAxMDApLCBJbnRTaXpl
KDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0
RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50
UmVjdChJbnRQb2ludCgwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVj
dCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUs
IENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDIwMCksIElu
dFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5k
KFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9w
YXF1ZVJlY3QpKTsKKworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShj
aGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoKSwg
SW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBl
bmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250
ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRP
cGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNo
aWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgwLCAx
MDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0
LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxl
ZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSks
IGNoaWxkT3BhcXVlUmVjdCkpOwogfQogCiAjZGVmaW5lIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVf
VEVTVF9RVUFEUyAgICAgICAgICAgICAgIFwKQEAgLTE0Niw2ICsxNDcsNTQgQEAgVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2hpbGRMaW5lc1VwQm90dG9tUmlnaHQpCiAgICAgRVhQ
RUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgOXUpOwogfQogCitURVNUKENDUXVhZEN1bGxlclRlc3Qs
IHZlcmlmeUN1bGxTdWJSZWdpb24pCit7CisgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNU
X1FVQURTCisKKyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKKworICAgIE93
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNy
ZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290
UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0s
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNl
KTsKKyAgICBJbnRSZWN0IGNoaWxkT3BhcXVlUmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0
LndpZHRoKCkgLyA0LCBjaGlsZFJlY3QueSgpICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hp
bGRSZWN0LndpZHRoKCkgLyAyLCBjaGlsZFJlY3QuaGVpZ2h0KCkgLyAyKTsKKworICAgIHNldFF1
YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QsIGNoaWxkT3Bh
cXVlUmVjdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKKyAgICBDQ1F1
YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBFWFBFQ1RfRVEocXVh
ZExpc3Quc2l6ZSgpLCAxMnUpOworfQorCitURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1
bGxTdWJSZWdpb24yKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwor
CisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCAxMCk7CisKKyAgICBPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIElu
dFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxk
U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCBmYWxzZSk7CisgICAg
SW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSArIGNoaWxkUmVjdC53aWR0aCgp
IC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53
aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpICogMyAvIDQpOworCisgICAgc2V0UXVhZHMo
cm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVS
ZWN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1
bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlz
dC5zaXplKCksIDEydSk7Cit9CisKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1
YlJlZ2lvbkNoZWNrT3ZlcmN1bGwpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNU
X1FVQURTCisKKyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDQ5KTsKKworICAgIE93
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNy
ZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290
UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0s
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNl
KTsKKyAgICBJbnRSZWN0IGNoaWxkT3BhcXVlUmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0
LndpZHRoKCkgLyA0LCBjaGlsZFJlY3QueSgpICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hp
bGRSZWN0LndpZHRoKCkgLyAyLCBjaGlsZFJlY3QuaGVpZ2h0KCkgLyAyKTsKKworICAgIHNldFF1
YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QsIGNoaWxkT3Bh
cXVlUmVjdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKKyAgICBDQ1F1
YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBFWFBFQ1RfRVEocXVh
ZExpc3Quc2l6ZSgpLCAxM3UpOworfQorCiBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5v
bkF4aXNBbGlnbmVkUXVhZHNEb250T2NjbHVkZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFM
SVpFX1RFU1RfUVVBRFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaWxlZExheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggNTU0NjAzN2FkYTJjY2JmMTllZGUwMWU2M2Nk
Yjc5Njk3NGRmYzJhMS4uNDg4OTYwZmQxMjczMGM0OTU3ZDhhODUwNTE0OTQ4ZmRjZmFkYjRkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBs
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJ
bXBsVGVzdC5jcHAKQEAgLTQ2LDExICs0NiwxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDQ1RpbGVk
TGF5ZXJJbXBsPiBjcmVhdGVMYXllcihjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgY29uc3QgSQog
ICAgIGxheWVyLT5zZXRUaWxpbmdEYXRhKCp0aWxlcik7CiAgICAgbGF5ZXItPnNldFNraXBzRHJh
dyhmYWxzZSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2lu
dCgpLCBsYXllclNpemUpKTsKKyAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7CiAKICAgICBp
bnQgdGV4dHVyZUlkID0gMTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbGVyLT5udW1UaWxl
c1goKTsgKytpKQogICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHRpbGVyLT5udW1UaWxlc1ko
KTsgKytqKQotICAgICAgICAgICAgbGF5ZXItPnN5bmNUZXh0dXJlSWQoaSwgaiwgc3RhdGljX2Nh
c3Q8UGxhdGZvcm0zRE9iamVjdD4odGV4dHVyZUlkKyspKTsKKyAgICAgICAgICAgIGxheWVyLT5w
dXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4odGV4
dHVyZUlkKyspLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKIAogICAgIHJldHVybiBsYXllci5yZWxl
YXNlKCk7CiB9CkBAIC0xMzQsNyArMTM1LDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwg
Y2hlY2tlcmJvYXJkaW5nKQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlc1g7ICsr
aSkKICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1UaWxlc1k7ICsraikKLSAgICAgICAg
ICAgIGxheWVyLT5zeW5jVGV4dHVyZUlkKGksIGosIHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmpl
Y3Q+KDApKTsKKyAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgc3Rh
dGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4oMCksIEludFJlY3QoKSk7CiAKICAgICAvLyBBbGwg
Y2hlY2tlcmJvYXJkaW5nCiAgICAgewpAQCAtMTU1LDcgKzE1Niw3IEBAIHN0YXRpYyBib29sIGNv
bXBsZXRlbHlDb250YWlucyhjb25zdCBSZWdpb24mIGNvbnRhaW5lciwgY29uc3QgSW50UmVjdCYg
cmVjdCkKICAgICByZXR1cm4gdGVzdGVyLmlzRW1wdHkoKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0
UXVhZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIEludFNpemUgdGlsZVNpemUsIGNvbnN0IEludFNpemUm
IGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9uIGJvcmRlclRl
eGVsT3B0aW9uLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KQorc3RhdGljIFBhc3NP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGdldFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBJbnRT
aXplIHRpbGVTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRh
OjpCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXJUZXhlbE9wdGlvbiwgY29uc3QgSW50UmVjdCYgdmlz
aWJsZUxheWVyUmVjdCkKIHsKICAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBj
cmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBib3JkZXJUZXhlbE9wdGlvbik7CiAgICAg
bGF5ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZUxheWVyUmVjdCk7CkBAIC0xNjMsNiAr
MTY0LDcgQEAgc3RhdGljIHZvaWQgZ2V0UXVhZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIEludFNpemUg
dGlsZVNpemUsIGNvbnN0IEludFNpemUmIGxheWVyU2kKIAogICAgIE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgp
OwogICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkcywgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsK
KyAgICByZXR1cm4gc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKTsgLy8gVGhlIHNoYXJlZCBkYXRh
IG11c3QgYmUgb3duZWQgYXMgbG9uZyBhcyB0aGUgcXVhZCBsaXN0IGV4aXN0cy4KIH0KIAogLy8g
QWxpZ24gd2l0aCBleHBlY3RlZCBhbmQgYWN0dWFsIG91dHB1dApAQCAtMjAwLDcgKzIwMiw4IEBA
IHN0YXRpYyB2b2lkIGNvdmVyYWdlVmlzaWJsZVJlY3RPblRpbGVCb3VuZGFyaWVzKENDTGF5ZXJU
aWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wCiAKICAgICBJbnRTaXplIGxheWVyU2l6ZSgxMDAwLCAx
MDAwKTsKICAgICBDQ1F1YWRMaXN0IHF1YWRzOwotICAgIGdldFF1YWRzKHF1YWRzLCBJbnRTaXpl
KDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBib3JkZXJzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVy
U2l6ZSkpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkU3RhdGU7CisgICAg
c2hhcmVkU3RhdGUgPSBnZXRRdWFkcyhxdWFkcywgSW50U2l6ZSgxMDAsIDEwMCksIGxheWVyU2l6
ZSwgYm9yZGVycywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKICAgICB2ZXJpZnlR
dWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXpl
KSk7CiB9CiBXSVRIX0FORF9XSVRIT1VUX0JPUkRFUl9URVNUKGNvdmVyYWdlVmlzaWJsZVJlY3RP
blRpbGVCb3VuZGFyaWVzKTsKQEAgLTIxNiw3ICsyMTksOCBAQCBzdGF0aWMgdm9pZCBjb3ZlcmFn
ZVZpc2libGVSZWN0SW50ZXJzZWN0c1RpbGVzKENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhl
bE9wdAogCiAgICAgSW50U2l6ZSBsYXllclNpemUoMjUwLCAyNTApOwogICAgIENDUXVhZExpc3Qg
cXVhZHM7Ci0gICAgZ2V0UXVhZHMocXVhZHMsIEludFNpemUoNTAsIDUwKSwgSW50U2l6ZSgyNTAs
IDI1MCksIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscywgdmlzaWJsZUxheWVyUmVj
dCk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFy
ZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDUwLCA1MCksIEludFNpemUoMjUwLCAy
NTApLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVMYXllclJlY3Qp
OwogICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFkcywgdmlzaWJsZUxheWVyUmVj
dCk7CiB9CiBXSVRIX0FORF9XSVRIT1VUX0JPUkRFUl9URVNUKGNvdmVyYWdlVmlzaWJsZVJlY3RJ
bnRlcnNlY3RzVGlsZXMpOwpAQCAtMjI4LDcgKzIzMiw4IEBAIHN0YXRpYyB2b2lkIGNvdmVyYWdl
VmlzaWJsZVJlY3RJbnRlcnNlY3RzQm91bmRzKENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhl
bE9wCiAgICAgSW50U2l6ZSBsYXllclNpemUoMjIwLCAyMTApOwogICAgIEludFJlY3QgdmlzaWJs
ZUxheWVyUmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpOwogICAgIENDUXVhZExpc3QgcXVhZHM7
Ci0gICAgZ2V0UXVhZHMocXVhZHMsIEludFNpemUoMTAwLCAxMDApLCBsYXllclNpemUsIENDTGF5
ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscywgdmlzaWJsZUxheWVyUmVjdCk7CisgICAgT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdl
dFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5n
RGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVMYXllclJlY3QpOwogICAgIHZlcmlmeVF1YWRz
RXhhY3RseUNvdmVyUmVjdChxdWFkcywgdmlzaWJsZUxheWVyUmVjdCk7CiB9CiBXSVRIX0FORF9X
SVRIT1VUX0JPUkRFUl9URVNUKGNvdmVyYWdlVmlzaWJsZVJlY3RJbnRlcnNlY3RzQm91bmRzKTsK
QEAgLTI0MCw3ICsyNDUsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCB0ZXh0dXJlSW5m
b0ZvckxheWVyTm9Cb3JkZXJzKQogICAgIEludFNpemUgdGlsZVNpemUoNTAsIDUwKTsKICAgICBJ
bnRTaXplIGxheWVyU2l6ZSgyNTAsIDI1MCk7CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBn
ZXRRdWFkcyhxdWFkcywgdGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5v
Qm9yZGVyVGV4ZWxzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOworICAgIE93blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkU3RhdGU7CisgICAgc2hhcmVkU3RhdGUgPSBnZXRR
dWFkcyhxdWFkcywgdGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9y
ZGVyVGV4ZWxzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwogCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkgewogICAgICAgICBBU1NFUlRfRVEo
cXVhZHNbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCkgPDwgcXVhZFN0
cmluZyA8PCBpOwpAQCAtMjQ5LDYgKzI1NSwyNSBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0
LCB0ZXh0dXJlSW5mb0ZvckxheWVyTm9Cb3JkZXJzKQogICAgICAgICBFWFBFQ1RfTkUocXVhZC0+
dGV4dHVyZUlkKCksIDB1KSA8PCBxdWFkU3RyaW5nIDw8IGk7CiAgICAgICAgIEVYUEVDVF9FUShx
dWFkLT50ZXh0dXJlT2Zmc2V0KCksIEludFBvaW50KCkpIDw8IHF1YWRTdHJpbmcgPDwgaTsKICAg
ICAgICAgRVhQRUNUX0VRKHF1YWQtPnRleHR1cmVTaXplKCksIHRpbGVTaXplKSA8PCBxdWFkU3Ry
aW5nIDw8IGk7CisgICAgICAgIEVYUEVDVF9FUShJbnRSZWN0KDAsIDAsIDEsIDEpLCBxdWFkLT5v
cGFxdWVSZWN0KCkpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICB9Cit9CisKK1RFU1QoQ0NUaWxl
ZExheWVySW1wbFRlc3QsIHRpbGVPcGFxdWVSZWN0Rm9yTGF5ZXJOb0JvcmRlcnMpCit7CisgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7CisKKyAgICBJbnRTaXpl
IHRpbGVTaXplKDUwLCA1MCk7CisgICAgSW50U2l6ZSBsYXllclNpemUoMjUwLCAyNTApOworICAg
IENDUXVhZExpc3QgcXVhZHM7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRT
dGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCB0aWxlU2l6ZSwgbGF5ZXJT
aXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQo
KSwgbGF5ZXJTaXplKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIEFTU0VSVF9FUShxdWFkc1tpXS0+bWF0ZXJpYWwoKSwgQ0NEcmF3
UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFkU3RyaW5nIDw8IGk7CisgICAgICAgIENDVGlsZURy
YXdRdWFkKiBxdWFkID0gc3RhdGljX2Nhc3Q8Q0NUaWxlRHJhd1F1YWQqPihxdWFkc1tpXS5nZXQo
KSk7CisKKyAgICAgICAgRVhQRUNUX0VRKEludFJlY3QoMCwgMCwgMSwgMSksIHF1YWQtPm9wYXF1
ZVJlY3QoKSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcApp
bmRleCBiZGJmN2JiMDkzMDE4YmQ2YTZiMzA3ZmY4YmUzODE0MTVmNThhNjczLi45MjJjOGMxOGVj
Mjg1YmRmMTllZTA2MTdhODkzMWU2YzRmZmUzNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcApAQCAtMTM3
LDcgKzEzNyw3IEBAIFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0
Tm90UHJlc2VudEFmdGVyTm9uT3BhcXVlUGFpbnQpCiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKLVRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRl
clRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxheWVyV2l0aE9wYXF1ZVBh
aW50KQorVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3RQcmVzZW50
Rm9yT3BhcXVlTGF5ZXJXaXRoT3BhcXVlUGFpbnQpCiB7CiAgICAgUGFpbnRGaWxsT3BhcXVlIGZp
bGxPcGFxdWU7CiAgICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHVwZGF0ZXI7CkBAIC0x
NDksMjEgKzE0OSwyMSBAQCBURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVl
UmVjdE5vdFByZXNlbnRGb3JPcGFxdWVMYXllcldpdGhPcGFxdWVQYQogICAgIHVwZGF0ZXIgPSBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCks
IGZhbHNlKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7CiAgICAgdXBkYXRlci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwg
MCwgMSwgJm9wYXF1ZVJlY3QpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwg
MCksIG9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNDAwLCA0
MDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFp
bnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkp
OwogICAgIHVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsKICAgICB1cGRhdGVyLT5zZXRPcGFx
dWUodHJ1ZSk7CiAgICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAw
LCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwotICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1
ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQ
YWludGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2Uo
KSk7CiAgICAgdXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOwogICAgIHVwZGF0ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEs
ICZvcGFxdWVSZWN0KTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBv
cGFxdWVSZWN0KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwg
b3BhcXVlUmVjdCk7CiB9CiAKIFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFx
dWVSZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxheWVyV2l0aE5vbk9wYXF1ZVBhaW50KQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDc1MTI2MmNmNzdmMzNjMmY2ODFmOGNjNTE1M2M5ZDg4ZDlkYzAyMjguLmUwNGE5NzgzZmI3MzM0
YzVlMjFkNTU0ODUyNWJkZGU0ZjdiOTY0ZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0w
MS0yMCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIFVzZSByZWdpb24gcmVwb3J0ZWQgcGFpbnRlZCBvcGFxdWUgZm9yIGRyYXcgY3VsbGlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtLWxpbnV4L2NvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWluLWNvbXBvc2l0
ZWQtbGF5ZXItZXhwZWN0ZWQucG5nOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLW1hYy1s
ZW9wYXJkL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5
ZXItZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLW1h
Yy1zbm93bGVvcGFyZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3Np
dGVkLWxheWVyLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS13aW4vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1s
YXllci1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBl
Y3RlZC5wbmc6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51
eC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4
cGVjdGVkLnBuZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQ6CisKIDIwMTItMDEtMjMgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIEdUSyBnYXJkZW5pbmcuIFJlYmFzZWxpbmUgYWZ0
ZXIgcjEwNTYxMywgbWFya2VkIDMgc3ZnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1saW51eC9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1pbi1jb21wb3NpdGVk
LWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2NvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQu
cG5nCmluZGV4IDFkNmYwM2UxODk3YTg1NWQzMWJkZDkyMjViYzIzYjgxNGQyY2RkMDkuLjExNDJm
YmFmYThmYjY0YzZiMWY5NmE1YjJkZjU4YTU0NDEwN2E2NzMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAzNDYzCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9
aF5obEElQFdzJGxIYG9rPG19P29UIXRoPQp6THhhPmJnSCNLUDZhITBSXkF0bCVeSGZ0NEwhO3pH
Qk5LQkkoPT9gPURYVn5uTnFWfENoRSZYWGQpS3h8RHFFQHsKemFLPEdta0dIRkNIZTZmSyY/Q0VI
WDV7SSZ2SiotbG1+TFJQNCl3YnV5eURkM1lFPV48bjs+Tmlee25vJnBRVFE9Cnp8TXZaaF50LSU7
Zm5tWXReKmgtYTc8UU8zYVdnMldaRDMkWCFlbz5teEJ2Q0VHTUhoYCk3eThMOFVGTiY+TSU2Uwp6
SUthZnYhSEwxeGApTmoteFgkJFpfOTxLcStoO0REVSk7fnw7ZVheb3NNO0k5d3tnXk9fVHIhT19J
QT1uaVFeeEUKejtEK1N0dDY2KkZedUBaTDdYN1ImV31OZigkTj9zY2B2eUY+LSt1ZDMlJUluKz55
I2soKmthJChJb29jKHdkazh+CnohMCtJWiExJWMkSFR9YUFWQEFDZUJ4bVMjPn1HOXp0KzFpTmAo
c0dCNiEjNyRDaGk+Xl48YDYhRzN+UXpXSWdrfgp6R0I4dTtmJW9TSGZlQ2UmUDByZGZJaF5EWVZ7
cV9FVX1RTUwwJVYqcWpYMDNnbU49dURyR1p+QEwmTUVHX3dWbjIKenk1KD0ofEJJNnV3JlZ5aEt+
JXcmazF+KTBaIXxQVUx4WXdYPGxRcWxoOD9sTHxKSjx8V1V2RWZgbjFoQWJMUmQzCnpQKzstcnZB
VFdUcEMzflM4SH4xWkZrJm1jRnczKGNDUUBlcG91TUZmK1coKCstI094cyNzQn04NEdNJVZKZiQj
Wgp6eHJgfXRfcEJ8JGZ1eE5RWl8wTXR8TnJzZmdUWndiaFVkWiYyVjhJRG5FQTd9QTVPZ0kkIzU+
Y1RZeTAhalRLbXEKelpzVGFvUkAlX2Vvek58P0xrJTMjVks1JTNtPDM1RWZmVkRZTFdXcTdRYEh5
YyNyekMrKjRAb0J8SVdjNkAwN3J9CnpgRFdoc2U5SyZrdypHbDYzc054eU98T1hrKzRvMU9afVJ1
QiRVUl5KUi1WdGs/XiR8OV51dG40b2QtJlBCMTJ3cgp6e2RtUDlSLWlkPW1zYyFmeEkrUz94SnhZ
S2J3QH0mWDMmMiVZd0NRPzAhMD12Z1p7NW9mMlUzNztYQXdgWm9QZT8KelQqSEx0NVgmRTEqeEF8
MVN0bzlkK05zNjtxaWZuXzZXTzBIdTUrakJAMyl0PWBGcmo0e1RfeiVZcnxGeGhiQF9RCnpgc3c5
XkNWeSpRZSRHIW4lTXhIKyViRzNHdypBbGZCOGolJnprZzV1RkpfVXB8OS15Tj80OFJXPGReTmZF
NF5RQQp6aldeQDx3QDAhITk0cXx0bXQpU2UlPUNoSG5oYlVxSXZaMmQxdVdYJTNxMDYkdnxSQXRL
MGxefSFZOGB0N3tiQHsKej0jO1gpLSpvJEpwS09lOUZZQkVKSXZjS3Q3VzVvciVKVVZEYypSdlE3
cyZHWnl4P055RUVCUSQ/K1l4PipkRSRoCnpfZ3tGUGUybkNHUyFRJDkrZSRZNzRnQHs4d28/MVN3
Skc4fHZ2biRfeDN7K152dEl7PmlNZDlkUHhDUlJlQG9VaQp6KyU4RTwwRDdzNkA0PlBrZTJuWEVj
USRUflRZcCFXV2xvd3pvQUFCd0pSZSRoYHR4Nz90JE8oOD5HJFEkJWtON2EKenp4WjNQcCooVkpu
RUk4Zz98KUJPe18/cl57Q2V3YndUNEBye2gxI0UqY2NqO0E5ZGVoV0R0bThWQSVMUVM1Uil9CnpG
R2h4ant+TWNGODNjclpWdXA/QWpFJilPUTwpaEtYcyZAWkk3YUt0KEs/ZnNidGI0JEpIcGJ+S2tp
X3p5TjFTPgpTKVYyYjlSdCVvNWVsRntyNX1FLTJ2YUFSSQoKbGl0ZXJhbCAzNDY0CnpjbWVBU0BO
PyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UbjV0
PQp6IXhUZTklTXwwWilNUUtaTDxfU2QzayEyfE9WaE1lUXl7fVFJWFpoXkQ5fHR8UFohNktpYUJy
Wj8jLTNYbVRDd3IKelN8fSVSPnd3dDtESGVraV9NRWlyb3RHSThHc1pBYFoqVWVwUCs9elU7T2t6
WXR3S0xOb0ZfaGFOaUptQkA3SG5zCnp6UGJKQiV2b1gjMz89X2V6WFAzZC03U0hVO1J1VHVnTSR3
UzxJVEd0PykmWlh4ZihYdCUmdWw9KnVTeGZsfGV1Xwp6ZmBQJVg1dUxGeVQ8LUZScmwrNU54QkQ9
REZ1Vk12Xz87bGJLWU1NTStVb21hNUEoeGJIZzJ3cykpOU1iVlB8SjIKelhQdnc/WVZHeWNOMFQ8
aj0tS0QlSEVmPE01eTl8V3gtRF97LUZmd1YyYk9NaDx2NWNwYkEwPWglVm9QfGtBRDw/CnojPmx+
YGxPVlZMNGJRdzl3RjlqSkZyJFNkNHpMeihTMTZFVzVpOEp+X3NUMW9HMjlgNlFUKlpnYihiT3pn
c1gzOAp6Xy1VKUopeXJDd0RRQ2lVQ1YkcWxvJGRAOGtxNE89SXlpTTA4ZkZ7LUdJcHxZJnAyenFR
ezJ6K0w2SnF3VkR8NmQKenpxaWxYY0teTTdsfkJWcFRfPm4yeGJqZzNhXlFgSSMlTzNqdkpwKkUh
aX5Ga20+SVRiQDR0V0VtZ3p2ZEsqV0lACnp2KU59cSVnZ2IjKlorQlB5a0NDNDV1ZHtgRi0yXnA3
aU1gailJe0RybFZlelM+WFpIYj1XLThFfDlFfUJ7d3kjTQp6LTBfc2NuQl85MiRqMDN9KiU9fnEj
SmNiMWVTYT01RkRMaEc3UiFTZ0NoaT5edihHK3pgSmxrIWo1WChocEUtZ3wKejNgZj1nJWg3e2tp
VXEjRnFFISRtYXtVTT5xfGIwY2NgaCgldXd2fDAkV1JNJVlXbV8kLWFFI0krZ29xSGVKMDJGCnp6
P25sUSFSKz9pWkBTQlE0fVo4Z25QQ2ZOcHErN2pjaT5PbG99UnpHKCtARG1DfT45PF8lbTwmbHdD
fndPZDQ1Wgp6VEl7Pk1WajFKLTkkP1p0OFhVZS1gdkRoKyZWIX5FKzdHTmFBb2JYQGpadGVxODho
bSY5QUo5M0Y+ZHwrUG0+Tk4Kek4/ZCNXUnM5VUp6JFkyNzx6K0kqZmdvOVpPXys5Z0RyNVlgcUZL
dzc8Xk5WYWVEbjFDXjUqNkR0TnpYd2U2YUlzCnpSX1VSeERAOGtOdFkkMm11VjRHYD9WNmJrUzxC
WmEwRyZQVWU8YWBHZzhLVVVQeHFPUXp4bj9BWT98P1JrdzBoaQp6d3BUeUMtYytqalZBdEZWLWZJ
P3Bge1d4aCtxfnNEWFVscWstTzZ5bzh5PT9UQTdxKGd3KlN5T2JwTl8xZ0hHUmAKenFtbUNeTz5K
RGQ/bT13WD96PGJDdmxuZV9rZTxSaVo1TEREI2ZTcklHbnU/JjhQe0txSU4lR2N2I29xNUFBOXMh
CnptYWwhTXlUJGVRXkBsejtZZF93WHs5c3YxYmp4eDEyKENMO3JMMT5tZU5ybSNXcXRxWSEtcy01
NGB1PHdnemFkNQp6PTdvcEBeUkl7JiU9WTcxYjJhUGdJbVNDOF9aMUo2U3tyVi1fSWhofFFeUkdS
IXYlK2EmdHUjLTtwcz07ejQ3e1UKel9XdD0tXjVJTUxWfmVXJHRSTTdOVXd6Zkc+c1Jna1BiUG5C
VVZoRmBLZyR3ZXtuM3pEP2kyJDxmbHRqdVloWWBSCnpuP2QyKktIV3BnO3IwditBTUM/NkZmYiY2
I01DZXQtJWhQQVZxbWFuNkBAaThYaWAjd249KyMma0ppUkN0Yz9lNApkOG9OPT9ENypLciRAIWBS
N0dSJS0hUEN7eFd0fiQoNjk4Vz1RNSptTwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNv
bXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbGludXgvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1s
YXllci1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNzVhNjg5
ZDlhOWY4MDkwZGY3Mzg1ZmUwNDUwNDRkNGUwYWE5NWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmxpdGVyYWwgMjk1Nwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWhe
aGxBJUBXcyRsSGBvazxtfT9vVG19bjYKejB9RCRkaSE/SmNHbEx8Zkc9bnJsQlpGajFMLVNOcTEy
ZEU0d0IrZTA0eVo2TmFMYXFUSUVHWnJkMyhuKEU3VmNJCno7Yks7eVl2RihFMnw2ZHNDZ2BfNGFN
fCU9X2haV3Mmcko3KG5DOEZUJWcpZW5aaEFVRDFIKkAjOTZBZ1FHWSY4QAp6YlpgellNczRqa2hX
aDhYVSgwdER7UVlnMl91PW87PEQxPFg4dmFrPTY9UUpsTm5tNishaCk2WVg0QyhLdnVFQk0Kekgj
YXN1OWx3RjA7cXNqdzJYN2Y/VXotKkEtaXc+emZyeG5DaEhKQmFaYUJgd1V+IV5WZFg0U29gPEc2
WTNOVG4pCnpZO0Y4JUFeMXcwO1ghfm8rY2taPzdLUV44XkxXO25aY2N4SG9HdHNjNCNOVy1iR3hH
WF9wY3YoPmNoYnheWlhkbAp6OVMxSkwtSm48OXtQZChLTHhHKzJAUVF7KG8ydTZDe2t9UCFmI0Y5
OyZJU2dDQnFuWUsxK2BKZVhkc05IZ3diM3UKbG5oUXBBIUR1Y1JSPUwyUWFoc20od2t0PVhQNjZC
MzQ0JHJqRjYqMlVuZ0RgSFlIfFBvCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0tbWFjLWxlb3BhcmQvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4t
Y29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS1tYWMtbGVvcGFyZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21w
b3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OWIzMzExZjgzYzlmZTA1YjIxMjk4YWRjNGI0ZTE1YjYwYjY3NmFkOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21W
P2QwMDAwMQoKbGl0ZXJhbCAzMzk4CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+
aTFCJVFsWWJwUnpua0I5Z0NDTTQ3JD1TdUZ4ZU8ragp6bVBzalRzbVpDdlcoSX5TQ01tey1yV1dS
QDdSZ0RMMkMyclRpM1VlJlUwTjkhY3k0JlFJRUdacmQzKlB1RlNEVjUKeiEkczNZTi1xQ0o2fSp4
eFQyejkjZXo8K0FwOG4/SUB0VSgwPCE4XnQwNC1fVWV3UTZjb2x8c1JVfSklSlV9UnUwCnpWcSMl
bklLZCZuekBWVCFHNlg7R2BeXy0qZUUhPDZeSntBVnlzPXxxVjM3VjEmZDAheiFvdEQ4RmhOaihm
eCpHOAp6ZnF7V1JrYFhBQyhwU2xTP2UzWSFGUWM7Rys1cUVFPUpeV0Y2Szcod1czUjhaekdpd30z
SylWKz95TndLOD9GYTMKejdSQiR9I2NTdGQmJW0mdEVUckwjJkdpbElQWEZhK1V8MW41cy1RUUlu
YythKGFoNE4le3pNJlFWcmFOJCRvT2VTCnpeX2YzdzZZc3VuPGA0dWJsS0NuLTtyZHRZKkFXYTE3
cCY1bGZSP3tlOX5tKCt7MVY+Z3c2cnBMVTxfSWBiN0QoVwp6U1gwYGxBWD9UTjRVb3xRZnRTT2hp
RDVKYGozeCRMdCg0SytGYDdHdVFTU0szeD1jLUhefGdqNDIwJXxTYylJJHoKSnRhRDBlMHN5dmUq
SDhjZQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93
bGVvcGFyZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxh
eWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93
bGVvcGFyZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxh
eWVyLWV4cGVjdGVkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQwZThjMTk2
NzliZTFiMTkyYWVjYmQ2YTI1ZWRkMThiYzA1MmI5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
bGl0ZXJhbCAzMzk2CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFsWWJw
Unpua0I5Z0NDTTQ3JD1TdUZ4ZVE1Mwp6N0tVYWk3UmVUQUNhS0FXVyl7VzxyYiZqMHNqMjNNN003
TiZXK3Z2RlNEcztEO0pOMU07dXVtZj1qfmxYS1cwWSgKemhKKD5aeCZ7OCVHZH1YPFZaMCRXO2sj
MDlYdnNPWEo9YzJQbmk+fX5HQkJ7ckU4Xz1SSE9JTEROSj1zP0YpKmFDCnphNDt9VDVMOTRiYUJ2
JExnM2xfeUdmY2YrelZfPzxKJHF+MyRUMmNCQGF+eilqM1lRXkNmQmpQUEo4eVJXYk18bgp6SzQ1
U2l4NkVRVEdRSipsejRVY288clFHaTMwUD0zKU5UNjl6fGUzamtnPj5tPWRZLW04K0V8SWU3a35T
WDYybTMKem80XyEyYyl4PC08SSFSVWg4d1NFRiNOMThjKj9AZno+c3lFPHdXaiNMKng3RDV3SEpB
R0I5TXdlNj81RGV9NFUoCnpXSlUmdSpFNHY1TXNKd1UwRXt2dENLZCpVNkM0NXozPH1CKUt4PXdO
MXFYZUFvUzhOQXJZK0V3MSNIcnpAaXYtZgp3TT5Gd2cwWEFCQWs1Kml4SFRoXzVJOWVNTHRfP3FQ
c3ViejBaaz8yVm8mZzl2VUh4M3ZJVkNnITAzPXhVbTtlOSgKCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1n
YXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS13aW4vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9z
aXRlZC1sYXllci1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRh
NWI2ZDZiM2U4MjdjZGMxY2FkNTU2MjYxMjk4Mjg3NGQ1OWE2MTkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmxpdGVyYWwgMjkzNAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkw
KlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG41Nz0Kel5UZm15dnFUZTFMbFlDREJ5O2w9KThyJlcz
aitoPUxgJDx8JWNORCYzOTx8ZisjSEBSanYqQ3UtcmgwSEo4VTRwCno7QW5XRnxJZEg8QUhJb1Al
JDsyM2pBQ0xoJnhCfkxrR2FEc1ErJHFAcTJiKXx0SVB9eGQhIXAjODNjcVE3I0l3UAp6N2h+aTMp
JEJpSi1+UV88KiFTXzVxZ2xjSitFYG1BaENqaChfYFNPRT83ZjNrS1ByREBvJTRScXopK0Y0fEE1
cnYKej9XQG4tWEpGe1FAIXE5a29pOy1RPnMjQE48QXB0bTwqVz5BdmZtM1VHOHx+eWJ8PUJzTFhl
M2VgPEJzJGJMdmhyCnpmaWh8UGcmK1IzVGRAKFNLNm1GcUNXZVRhMmJkVC1JQ1U1clpsd0tCXzw1
SSRBITB0Uzc9d2RQMHdjb19tUWU7Ugp6MUw0QDUmI3hwSTgxOGtBMktaPVY4X2pXfXJPandBN3xq
S3Z4bk93YWY7WkJ2SkBSYGtsemVKezRRVTJYUzNqM14KSFA2PHJfRnsqNFYKCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0
aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBv
c2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MGZmNTA0YjM3YjBiYmMwMzc1
YTY1OGQ5NThkMDE3MmI4OGQ2MDkKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NjUKemNtZUFT
QE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1Ru
MjtHCnpSNl8kM3FlUD01diY2SkM2VSMoSGxRZ3JXI0ZWN3VsO2xMeUcoKk1TTnZqd2J4REk9fElF
R1pyZDMpbV49VjFvewp6N1JVTDhabH47N2omQThYYyVpXiFSYWU1aXZ1a0dsV01IYFBeUEw8NiF2
Xzs0WlV6T2w0R2F1UCE7Rz4yRjd2PFEKeklvYVBeWmQ+JTx2fUkoN0pKcm19QVJydlV6K2wpbyR7
MkVpNU4qNzxud2pDaTspLUZJUkVKczQ4fS1pY0RAe2teCm1iVG0kZldpdyRrVkdxS0RFaU57YmNY
amZzUSNYTmFVPE9aREtiTGgqMn43Wn4kSk57YgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CmluZGV4IDY4NTE4OWE3YjFiNDgxMTcwZWNmMjkyNWFhMjZkMzA2ZmVmNGQzZGUuLmUzZjMxNjlh
M2FlYmM5NGY5OGFiMzVhODk5MGRjYzAzN2IzMThlOGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTQwMTYsNiArNDAx
Niw5IEBAIEJVR19DQVJZQ0xBUksgTUFDIDogZWRpdGluZy9zdHlsZS9jcmVhdGUtYmxvY2stZm9y
LXN0eWxlLTAxMi5odG1sID0gSU1BR0UKIEJVR19DQVJZQ0xBUksgTUFDIDogZWRpdGluZy9zdHls
ZS9jcmVhdGUtYmxvY2stZm9yLXN0eWxlLTAxMy5odG1sID0gSU1BR0UKIEJVR19DQVJZQ0xBUksg
TUFDIDogZmFzdC9kb20vYmx1ci1jb250ZW50ZWRpdGFibGUuaHRtbCA9IElNQUdFCiAKKy8vIE1h
eSBmYWlsIGlmIHRoZXNlIHBsYXRmb3JtcyBkaWZmZXIgZnJvbSBMaW51eC4gUmVtb3ZlIHRoaXMg
b3IgcmViYXNlbGluZSB0aGVtIG9uY2UgdGhlIGJ1ZyBsYW5kcy4KK0JVR1dLNzYwMTUgV0lOIE1B
QyA6IGZhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXIu
aHRtbCA9IElNQUdFCisKIC8vIE5lZWQgdG8gaW1wbGVtZW50IGZpbGUgbmFtZSBsb2dnaW5nLgog
QlVHV0s3NjU3MiA6IGh0dHAvdGVzdHMvZG93bmxvYWQgPSBGQUlMCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123570</attachid>
            <date>2012-01-23 09:58:38 -0800</date>
            <delta_ts>2012-01-26 13:52:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120123125837.patch</filename>
            <type>text/plain</type>
            <size>55837</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFkNDc1MDM0MDIyMTk4
MWM3MmI2ODIxODk2N2M1ZTgwNTFmMWFkOS4uMDIyZWNlNThjNTA4OGY1NzU5N2ZiOGZkNzA0NjNj
ODJkODFjMTliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAxLTIwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDUXVhZEN1bGxlclRlc3QuY3BwIGFuZCBDQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6b3BhcXVlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0JsZW5kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yRHJhd1F1YWQ6OkNDU29saWRDb2xvckRy
YXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdhYmxlVGlsZTo6b3BhcXVlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6OnNldE9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aWxlZExheWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisKIDIwMTItMDEtMjMgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGluc3BlY3RvciBjbG9zZSBidXR0b24gaXMgbWlzc2luZyBpbiB0aGUgZG9jay10by1yaWdo
dCBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhZGNkZTg5NjA2ZDk1OWZhOGIw
NWZlMmVmNjFlZjEwYTZlNjNiOGE3Li44NTQyZTdhMDMyYmMyNGE5ZTFkM2NkZDFhZmE3OWQ0ZWIy
ZDA0MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEy
LTAxLTIwICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtj
aHJvbWl1bV0gVXNlIHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxs
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAx
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVz
dHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0
YXRlQ2hlY2tMYXllcjo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRl
Q2hlY2tMYXllcjo6c2V0T3BhcXVlQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRl
Q2hlY2tMYXllcjo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpURVNU
X0YpOgorICAgICAgICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERyYXdRdWFkOjpUZXN0RHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dERyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0UXVhZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VEVTVCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpj
b3ZlcmFnZVZpc2libGVSZWN0T25UaWxlQm91bmRhcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpj
b3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c1RpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
dmVyYWdlVmlzaWJsZVJlY3RJbnRlcnNlY3RzQm91bmRzKToKKyAgICAgICAgKiB0ZXN0cy9MYXll
clRleHR1cmVVcGRhdGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAx
Mi0wMS0yMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogUGFnZUFnZW50Lm9wZW4oKSBkb3Nlbid0IGJlbG9uZyB0byB0aGUgcHJv
dG9jb2wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCmluZGV4IDBkOTdlNTJhZWRlMGY5ODBhZGExNWRlMGExNGExZDI4ZDg2YTFlODguLjBl
OWE0NTJkOGYzYjIyYTkzNjI0MWEwZDg1ZGQ3YWI4ZTA4MWQ4OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC04Miw4ICs4Miw2
IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJ
bWFnZVNpemUodGlsZVNpemUpOwogCi0gICAgYm9vbCBsYXllcklzT3BhcXVlID0gbV9jYW52YXMu
b3BhcXVlKCk7Ci0KICAgICBtX2NhbnZhcy5yZXNpemUoY29udGVudFJlY3Quc2l6ZSgpKTsKICAg
ICAvLyBBc3N1bXB0aW9uOiBpZiBhIHRpbGVyIGlzIHVzaW5nIGJvcmRlciB0ZXhlbHMsIHRoZW4g
aXQgaXMgYmVjYXVzZSB0aGUKICAgICAvLyBsYXllciBpcyBsaWtlbHkgdG8gYmUgZmlsdGVyZWQg
b3IgdHJhbnNmb3JtZWQuIEJlY2F1c2Ugb2YgaXQgbWlnaHQgYmUKQEAgLTkxLDExICs4OSwxMCBA
QCB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdAogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpU
ZXh0T3B0aW9uIHRleHRPcHRpb24gPQogICAgICAgICBib3JkZXJUZXhlbHMgPyBQbGF0Zm9ybUNh
bnZhczo6UGFpbnRlcjo6R3JheXNjYWxlVGV4dCA6IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpT
dWJwaXhlbFRleHQ7CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRlcigm
bV9jYW52YXMsIHRleHRPcHRpb24pOwotICAgIGNhbnZhc1BhaW50ZXIuc2tpYUNvbnRleHQoKS0+
c2V0VHJhY2tPcGFxdWVSZWdpb24oIWxheWVySXNPcGFxdWUpOworICAgIGNhbnZhc1BhaW50ZXIu
c2tpYUNvbnRleHQoKS0+c2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7CiAgICAgcGFpbnRDb250
ZW50cygqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxl
KTsKIAotICAgIGlmICghbGF5ZXJJc09wYXF1ZSkKLSAgICAgICAgKnJlc3VsdGluZ09wYXF1ZVJl
Y3QgPSBjYW52YXNQYWludGVyLnNraWFDb250ZXh0KCktPm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgp
OworICAgICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0gY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgp
LT5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKIH0KIAogdm9pZCBCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggMTc5ZmVhNmUxMmJmMTAzYzViMDc0MzVjZjI0
YTNhNDhmOGNkOTMyMy4uMDQ5ZmQyNDA4M2Y0Mjc1Y2U1MjZkNjFiODhkM2UwNTU1NjNlZjBhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNzEsOCArNzEsNyBAQCBwdWJsaWM6
CiAgICAgLy8gVGhpcyBmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb21wb25lbnQgb3JkZXIgaW4gdGhl
IHNhbXBsZWQgdGV4ZWwuCiAgICAgLy8gSWYgdGhlIGZvcm1hdCBpcyBUZXhlbEZvcm1hdEJHUkEs
IHZlYzQueCBpcyBibHVlIGFuZCB2ZWM0LnogaXMgcmVkLgogICAgIHZpcnR1YWwgU2FtcGxlZFRl
eGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KSA9IDA7
Ci0gICAgLy8gVGhlIHxyZXN1bHRpbmdPcGFxdWVSZWN0fCBnaXZlcyBiYWNrIGEgcmVnaW9uIG9m
IHRoZSBsYXllciB0aGF0IHdhcyBwYWludGVkIG9wYXF1ZS4gSWYgdGhlIGxheWVyIGlzIG1hcmtl
ZCBvcGFxdWUgaW4gdGhlIHVwZGF0ZXIsCi0gICAgLy8gdGhlbiB0aGlzIHJlZ2lvbiBzaG91bGQg
YmUgaWdub3JlZCBpbiBwcmVmZXJlbmNlIGZvciB0aGUgZW50aXJlIGxheWVyJ3MgYXJlYS4KKyAg
ICAvLyBUaGUgfHJlc3VsdGluZ09wYXF1ZVJlY3R8IGdpdmVzIGJhY2sgYSByZWdpb24gb2YgdGhl
IGxheWVyIHRoYXQgd2FzIHBhaW50ZWQgb3BhcXVlLgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUm
IC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50
c1NjYWxlICovLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCogLyog
cmVzdWx0aW5nT3BhcXVlUmVjdCAqLykgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMGQ5NzRmYTYzYTQ0NTdk
OWVhYzdjOGI4NzNmN2U5MWE0ZDI2ODQzYi4uYzlkYWI3MmYxMzJlOGQ5YmI5M2FiMDg1N2MxZDcw
NTUwMWQzZWNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50
ZXIpCiAgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIpCi0gICAgLCBtX2xh
eWVySXNPcGFxdWUoZmFsc2UpCiB7CiB9CiAKQEAgLTU0LDEzICs1MywxMiBAQCB2b2lkIFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRS
ZWN0JiBjb250ZW50UgogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNv
cmRpbmcoY29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBs
YXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KGNhbnZhcyk7CiAgICAgcGxhdGZvcm1D
b250ZXh0LnNldERlZmVycmVkKHRydWUpOwotICAgIHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09w
YXF1ZVJlZ2lvbighbV9sYXllcklzT3BhcXVlKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQuc2V0VHJh
Y2tPcGFxdWVSZWdpb24odHJ1ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4
dCgmcGxhdGZvcm1Db250ZXh0KTsKICAgICBwYWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwg
Y29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmco
KTsKIAotICAgIGlmICghbV9sYXllcklzT3BhcXVlKQotICAgICAgICAqcmVzdWx0aW5nT3BhcXVl
UmVjdCA9IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKKyAgICAqcmVz
dWx0aW5nT3BhcXVlUmVjdCA9IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3Qo
KTsKIH0KIAogdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpkcmF3UGlj
dHVyZShTa0NhbnZhcyogY2FudmFzKQpAQCAtNjksMTEgKzY3LDYgQEAgdm9pZCBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpkcmF3UGljdHVyZShTa0NhbnZhcyogY2FudmFzKQog
ICAgIGNhbnZhcy0+ZHJhd1BpY3R1cmUobV9waWN0dXJlKTsKIH0KIAotdm9pZCBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCi17Ci0gICAg
bV9sYXllcklzT3BhcXVlID0gb3BhcXVlOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAj
ZW5kaWYgLy8gVVNFKFNLSUEpCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCmluZGV4IDdmY2M2MDU5ZjkwZTdkOWQxYzMwMWJmMmE3MGY1MTUyYTQ5MjdiMDAuLmU3N2Vl
MzA5NDYzYTA0Yjc0YTBhOTM5YTYyMTcyZGZiOWNhOTUyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTU0LDEzICs1NCw5
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRl
eGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7
CiAgICAgdm9pZCBkcmF3UGljdHVyZShTa0NhbnZhcyopOwogCi0gICAgdmlydHVhbCB2b2lkIHNl
dE9wYXF1ZShib29sKTsKLQogcHJpdmF0ZToKICAgICAvLyBSZWNvcmRpbmcgY2FudmFzLgogICAg
IFNrUGljdHVyZSBtX3BpY3R1cmU7Ci0gICAgLy8gVHJ1ZSB3aGVuIGl0IGlzIGtub3duIHRoYXQg
YWxsIG91dHB1dCBwaXhlbHMgd2lsbCBiZSBvcGFxdWUuCi0gICAgYm9vbCBtX2xheWVySXNPcGFx
dWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcAppbmRleCA5MmQxMDJlMzIyYTIxODM1NWUxNTY4MWU1MDA1YWQzMmEyZTJiNmU1Li5i
NWM2NTBjZGFiNDNhZTZkMzg2YzZmM2QwZTlkMDZhOTRkNjYwOTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogCiAgICAgSW50UmVj
dCBtX2RpcnR5UmVjdDsKICAgICBJbnRSZWN0IG1fdXBkYXRlUmVjdDsKKyAgICBJbnRSZWN0IG1f
b3BhcXVlUmVjdDsKIHByaXZhdGU6CiAgICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU+IG1fdGV4dHVyZTsKIH07CkBAIC0yNzIsNyArMjczLDcgQEAgdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgICAgICBp
ZiAodGlsZS0+aXNEaXJ0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgdGls
ZWRMYXllci0+c3luY1RleHR1cmVJZChpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0
dXJlSWQoKSk7CisgICAgICAgIHRpbGVkTGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCB0
aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgdGlsZS0+bV9vcGFxdWVSZWN0KTsK
ICAgICB9CiB9CiAKQEAgLTQxNyw4ICs0MTgsOCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAg
ICAgLy8gSG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBo
aWNzQ29udGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCiAgICAgLy8gc28gd2UgZ3JhYiBh
IGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhl
IHBhaW50IGNvbXBsZXRlcy4KICAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVj
dG9yKHRleHR1cmVVcGRhdGVyKCkpOwotICAgIEludFJlY3Qgb3BhcXVlUmVjdDsgLy8gRklYTUU6
IHVudXNlZC4gcmVtb3ZlIHRoaXMgYW5kIHN0b3JlIGluIHRoZSBsYXllciB0byBwYXNzIHRvIGlt
cGwgZm9yIGRyYXcgY3VsbGluZwotICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0
ZShtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4
ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSwgJm9wYXF1ZVJlY3QpOworICAgIEludFJlY3QgcGFpbnRl
ZE9wYXF1ZVJlY3Q7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFp
bnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwg
Y29udGVudHNTY2FsZSgpLCAmcGFpbnRlZE9wYXF1ZVJlY3QpOwogICAgIGZvciAoaW50IGogPSB0
b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0g
cmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChp
LCBqKTsKQEAgLTQyNywxMiArNDI4LDIyIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAg
ICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCisgICAgICAgICAg
ICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKKworICAgICAg
ICAgICAgLy8gU2F2ZSB3aGF0IHdhcyBwYWludGVkIG9wYXF1ZSBpbiB0aGUgdGlsZS4gSWYgZXZl
cnl0aGluZyBwYWludGVkIGluIHRoZSB0aWxlIHdhcyBvcGFxdWUsIGFuZCB0aGUgYXJlYSBpcyBh
IHN1YnNldCBvZiBhbgorICAgICAgICAgICAgLy8gYWxyZWFkeSBvcGFxdWUgYXJlYSwga2VlcCB0
aGUgb2xkIGFyZWEuCisgICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVkUmVjdCA9IGludGVy
c2VjdGlvbih0aWxlUmVjdCwgbV9wYWludFJlY3QpOworICAgICAgICAgICAgSW50UmVjdCB0aWxl
UGFpbnRlZE9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIHBhaW50ZWRPcGFxdWVS
ZWN0KTsKKyAgICAgICAgICAgIGlmICh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBhaW50
ZWRSZWN0IHx8ICF0aWxlLT5tX29wYXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVS
ZWN0KSkKKyAgICAgICAgICAgICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9w
YXF1ZVJlY3Q7CisKICAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFuZENs
ZWFyRGlydHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRhdGVS
ZWN0LgogICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0ID0gdGlsZS0+bV91cGRh
dGVSZWN0OwogICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IG1fdGls
ZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAgSW50UmVjdCBmaXhlZFNpemVUaWxlUmVj
dFdpdGhCb3JkZXJzID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CisgICAgICAgICAgICBJbnRS
ZWN0IHNvdXJjZVJlY3QgPSBmaXhlZFNpemVUaWxlUmVjdFdpdGhCb3JkZXJzOwogICAgICAgICAg
ICAgc291cmNlUmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0KTsKICAgICAgICAgICAgIC8vIFBhaW50
IHJlY3Qgbm90IGd1YXJhbnRlZWQgdG8gbGluZSB1cCBvbiB0aWxlIGJvdW5kYXJpZXMsIHNvCiAg
ICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCBzb3VyY2VSZWN0IGRvZXNuJ3QgZXh0ZW5kIG91
dHNpZGUgb2YgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKaW5kZXggYWNjN2MwMjg2NmNjODk1OTMxNTE5
NmIzYjgzOGQwODg2YjUxYzZkZS4uNTY1NjM1MTg4YzYyNTFkNDMzMjBmNGI4NWQ4OWViMWQ0ZmJm
MjI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaApAQCAtNTEsOSArNTEsMTYgQEAgcHVibGljOgogICAg
IGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0
YXRlLT5sYXllclJlY3QoKTsgfQogICAgIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmNsaXBSZWN0KCk7IH0KICAgICBmbG9hdCBvcGFj
aXR5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPm9wYWNpdHkoKTsgfQotICAg
IC8vIEZvciB0aGUgcHVycG9zZXMgb2YgY3VsbGluZywgYXJlIHRoZSBjb250ZW50cyBvZiB0aGlz
IHF1YWQgb3BhcXVlPwotICAgIGJvb2wgZHJhd3NPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX3No
YXJlZFF1YWRTdGF0ZS0+aXNPcGFxdWUoKSAmJiBtX3F1YWRPcGFxdWUgJiYgb3BhY2l0eSgpID09
IDE7IH0KLSAgICBib29sIG5lZWRzQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRR
dWFkU3RhdGUtPmlzT3BhcXVlKCkgfHwgbV9uZWVkc0JsZW5kaW5nIHx8IG9wYWNpdHkoKSAhPSAx
OyB9CisgICAgLy8gRm9yIHRoZSBwdXJwb3NlcyBvZiBjdWxsaW5nLCB3aGF0IHBhcnQgb2YgdGhl
IGNvbnRlbnRzIG9mIHRoaXMgcXVhZCBhcmUgb3BhcXVlPworICAgIEludFJlY3Qgb3BhcXVlUmVj
dCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAob3BhY2l0eSgpICE9IDEpCisgICAgICAgICAg
ICByZXR1cm4gSW50UmVjdCgpOworICAgICAgICBpZiAobV9zaGFyZWRRdWFkU3RhdGUtPmlzT3Bh
cXVlKCkgJiYgbV9xdWFkT3BhcXVlKQorICAgICAgICAgICAgcmV0dXJuIG1fcXVhZFJlY3Q7Cisg
ICAgICAgIHJldHVybiBtX29wYXF1ZVJlY3Q7CisgICAgfQorICAgIGJvb2wgbmVlZHNCbGVuZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNCbGVuZGluZyB8fCBvcGFxdWVSZWN0KCkgIT0gbV9x
dWFkUmVjdDsgfQogICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCk7IH0K
IAogICAgIGVudW0gTWF0ZXJpYWwgewpAQCAtOTAsNiArOTcsMTAgQEAgcHJvdGVjdGVkOgogICAg
IC8vIHZhcmlhYmxlcy4KICAgICBib29sIG1fcXVhZE9wYXF1ZTsKICAgICBib29sIG1fbmVlZHNC
bGVuZGluZzsKKworICAgIC8vIEJlIGRlZmF1bHQsIHRoaXMgcmVjdCBpcyBlbXB0eS4gSXQgaXMg
dXNlZCB3aGVuIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBhbmQgYWJvdmUKKyAgICAvLyB2YXJpYWJs
ZXMgZGV0ZXJtaW5lIHRoYXQgdGhlIHF1YWQgaXMgbm90IGZ1bGx5IG9wYXF1ZSBidXQgbWF5IGJl
IHBhcnRpYWxseSBvcGFxdWUuCisgICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCBkMzBmZmM4NDBjOTc4OWJmNzQ4MTYxMGY4NjE0
OGVmNjVkOTM2NzNmLi43NzEwMDMyZTA1YzZhZmFhNDMxNzlkOWE3OTI5YTA4MWYzZTBmYjBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBDQ1F1YWRD
dWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0KQogCiAgICAgICAg
IGJvb2wga2VlcFF1YWQgPSAhcmVnaW9uQ29udGFpbnNSZWN0KG9wYXF1ZUNvdmVyYWdlVGh1c0Zh
ciwgcXVhZFJlY3QpOwogCi0gICAgICAgIGlmIChrZWVwUXVhZCAmJiBkcmF3UXVhZC0+ZHJhd3NP
cGFxdWUoKSAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKSB7Ci0gICAg
ICAgICAgICBJbnRSZWN0IG9wYXF1ZVJlY3QgPSBlbmNsb3NlZEludFJlY3QoZHJhd1F1YWQtPnF1
YWRUcmFuc2Zvcm0oKS5tYXBSZWN0KEZsb2F0UmVjdChkcmF3UXVhZC0+cXVhZFJlY3QoKSkpKTsK
KyAgICAgICAgaWYgKGtlZXBRdWFkICYmIGRyYXdRdWFkLT5pc0xheWVyQXhpc0FsaWduZWRJbnRS
ZWN0KCkpIHsKKyAgICAgICAgICAgIEludFJlY3Qgb3BhcXVlUmVjdCA9IGVuY2xvc2VkSW50UmVj
dChkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFJlY3QoRmxvYXRSZWN0KGRyYXdRdWFkLT5v
cGFxdWVSZWN0KCkpKSk7CiAgICAgICAgICAgICBvcGFxdWVDb3ZlcmFnZVRodXNGYXIudW5pdGUo
b3BhcXVlUmVjdCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJh
d1F1YWQuY3BwCmluZGV4IGQxYzcyOWE0MTU3ZGQyMjE3MmI2YzgzMWQ3NzAwY2M0MjBiNGVlNmEu
LjdmNmY5ODExM2Q2ZjhiOWE3Mjc4Yjk2NzgwZjY0YmJmOTg0NTYxNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRy
YXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAKQEAgLTM4LDggKzM4LDEwIEBAIENDU29saWRD
b2xvckRyYXdRdWFkOjpDQ1NvbGlkQ29sb3JEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0CiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3
UXVhZDo6U29saWRDb2xvciwgcXVhZFJlY3QpCiAgICAgLCBtX2NvbG9yKGNvbG9yKQogewotICAg
IGlmIChtX2NvbG9yLmFscGhhKCkgIT0gMSkKKyAgICBpZiAobV9jb2xvci5oYXNBbHBoYSgpKQog
ICAgICAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKKyAgICBlbHNlCisgICAgICAgIG1fb3BhcXVl
UmVjdCA9IHF1YWRSZWN0OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAKaW5k
ZXggZGY4MzA1MDhhMmM4MmNhMjc4YjM1Y2NjMDA1YjNkMDc5YTFjN2ZjNi4uYjM1YjZmNjlmM2My
MDE2ZjRlMjM4NzczZjBkYzk0YzY5NTZiMDM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFk
LmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093
blB0cjxDQ1RpbGVEcmF3UXVhZD4gQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBj
b25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3
aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdo
dEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCitQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBD
Q1RpbGVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFk
U3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0
LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZz
ZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJv
b2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29s
IHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IENDVGlsZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJZCwg
dGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIHN3aXp6bGVDb250ZW50
cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RpbGVEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1
YWRSZWN0LCBvcGFxdWVSZWN0LCB0ZXh0dXJlSWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXpl
LCB0ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29udGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwg
cmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogfQogCi1DQ1RpbGVEcmF3UXVhZDo6Q0NUaWxl
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQ
b2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQg
dGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9v
bCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQorQ0NUaWxl
RHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVS
ZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVP
ZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIs
IGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBi
b29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKICAgICA6IENDRHJhd1F1YWQoc2hh
cmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIHF1YWRSZWN0KQogICAgICwg
bV90ZXh0dXJlSWQodGV4dHVyZUlkKQogICAgICwgbV90ZXh0dXJlT2Zmc2V0KHRleHR1cmVPZmZz
ZXQpCkBAIC00OCw2ICs0OCw3IEBAIENDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJCiB7CiAgICAgaWYg
KGlzQW50aWFsaWFzZWQoKSkKICAgICAgICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKKyAgICBt
X29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQu
aAppbmRleCAxMmU1M2RiZDJhOGY1ZDFmYjNkMzMzMTliMmMwMzExZWM1M2Y1Y2E4Li4zMzUwMWE4
MDZjZmFmZjk2MGYyNGM2ZGQ2ZjFjNzgyMGExNTc4OGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdR
dWFkLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NUaWxl
RHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q0NUaWxlRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZURy
YXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBx
dWFkUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0
dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmls
dGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VB
QSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBj
b25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZv
cm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25z
dCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6
bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVk
Z2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
SWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQogICAgIEludFBvaW50IHRleHR1cmVP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVPZmZzZXQ7IH0KQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNBbnRpYWxpYXNlZCgpIGNvbnN0IHsgcmV0dXJuIGxlZnRF
ZGdlQUEoKSB8fCB0b3BFZGdlQUEoKSB8fCByaWdodEVkZ2VBQSgpIHx8IGJvdHRvbUVkZ2VBQSgp
OyB9CiAKIHByaXZhdGU6Ci0gICAgQ0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQs
IGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6
ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0
RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdl
QUEpOworICAgIENDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50
U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29u
dGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEs
IGJvb2wgYm90dG9tRWRnZUFBKTsKIAogICAgIFBsYXRmb3JtM0RPYmplY3QgbV90ZXh0dXJlSWQ7
CiAgICAgSW50UG9pbnQgbV90ZXh0dXJlT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmNwcAppbmRleCAzNDRkNzQyNDVmOGVjMWY1ZmRiNmMyY2IyMWRjZGI5MWNhYjQ5MTgyLi4x
Y2Q0Nzk5M2ViOTBjZmFlNjJhMjAxZWMyMmQwMTRhMDM2Y2U5MjRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtNTEsOCArNTEsMTMgQEAgcHVibGljOgogCiAgICAgUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQog
ICAgIHZvaWQgc2V0VGV4dHVyZUlkKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKSB7IG1fdGV4
dHVyZUlkID0gdGV4dHVyZUlkOyB9CisKKyAgICBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9vcGFxdWVSZWN0OyB9CisgICAgdm9pZCBzZXRPcGFxdWVSZWN0KGNv
bnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpIHsgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVjdDsgfQor
CiBwcml2YXRlOgogICAgIFBsYXRmb3JtM0RPYmplY3QgbV90ZXh0dXJlSWQ7CisgICAgSW50UmVj
dCBtX29wYXF1ZVJlY3Q7CiB9OwogCiBDQ1RpbGVkTGF5ZXJJbXBsOjpDQ1RpbGVkTGF5ZXJJbXBs
KGludCBpZCkKQEAgLTE0OCw2ICsxNTMsOSBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVu
ZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBJbnRS
ZWN0IHRpbGVPcGFxdWVSZWN0ID0gdGlsZS0+b3BhcXVlUmVjdCgpOworICAgICAgICAgICAgdGls
ZU9wYXF1ZVJlY3QuaW50ZXJzZWN0KGxheWVyUmVjdCk7CisKICAgICAgICAgICAgIC8vIEtlZXAg
dHJhY2sgb2YgaG93IHRoZSB0b3AgbGVmdCBoYXMgbW92ZWQsIHNvIHRoZSB0ZXh0dXJlIGNhbiBi
ZQogICAgICAgICAgICAgLy8gb2Zmc2V0IHRoZSBzYW1lIGFtb3VudC4KICAgICAgICAgICAgIElu
dFNpemUgZGlzcGxheU9mZnNldCA9IHRpbGVSZWN0Lm1pblhNaW5ZQ29ybmVyKCkgLSBkaXNwbGF5
UmVjdC5taW5YTWluWUNvcm5lcigpOwpAQCAtMTY0LDcgKzE3Miw3IEBAIHZvaWQgQ0NUaWxlZExh
eWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlCiAgICAgICAgICAgICBib29sIGJvdHRvbUVkZ2VBQSA9IGogPT0gbV90aWxlci0+
bnVtVGlsZXNZKCkgLSAxICYmIHVzZUFBOwogCiAgICAgICAgICAgICBjb25zdCBHQzNEaW50IHRl
eHR1cmVGaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4
dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKLSAgICAgICAgICAgIHF1
YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGls
ZVJlY3QsIHRpbGUtPnRleHR1cmVJZCgpLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwgdGV4
dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJp
Z2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChD
Q1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGVPcGFx
dWVSZWN0LCB0aWxlLT50ZXh0dXJlSWQoKSwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRl
eHR1cmVGaWx0ZXIsIGNvbnRlbnRzU3dpenpsZWQoKSwgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCBy
aWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7CiAKICAgICAgICAgICAgIGlmIChoYXNEZWJ1Z0Jv
cmRlcnMoKSkgewogICAgICAgICAgICAgICAgIENvbG9yIGNvbG9yKGRlYnVnQm9yZGVyQ29sb3Io
KS5yZWQoKSwgZGVidWdCb3JkZXJDb2xvcigpLmdyZWVuKCksIGRlYnVnQm9yZGVyQ29sb3IoKS5i
bHVlKCksIGRlYnVnVGlsZUJvcmRlckFscGhhKTsKQEAgLTE4MywxNCArMTkxLDE1IEBAIHZvaWQg
Q0NUaWxlZExheWVySW1wbDo6c2V0VGlsaW5nRGF0YShjb25zdCBDQ0xheWVyVGlsaW5nRGF0YSYg
dGlsZXIpCiAgICAgKm1fdGlsZXIgPSB0aWxlcjsKIH0KIAotdm9pZCBDQ1RpbGVkTGF5ZXJJbXBs
OjpzeW5jVGV4dHVyZUlkKGludCBpLCBpbnQgaiwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQp
Cit2b2lkIENDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVydGllcyhpbnQgaSwgaW50IGos
IFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KQog
ewogICAgIERyYXdhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKICAgICBpZiAoIXRpbGUp
CiAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwogICAgIHRpbGUtPnNldFRleHR1cmVJ
ZCh0ZXh0dXJlSWQpOworICAgIHRpbGUtPnNldE9wYXF1ZVJlY3Qob3BhcXVlUmVjdCk7CiB9CiAK
LX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAppbmRleCA0NzhiMDM0MDIz
NDUwODE5YmJjZWEwYThkYTVhZDMyMTU2ZjU0YmQyLi43YWQ3MTU5OWIyMTM2NTg1OGExYzVhNWY3
YTljZjQyNDFlYTA2OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCkBAIC01MSw3
ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U2tpcHNEcmF3KGJvb2wgc2tpcHNEcmF3
KSB7IG1fc2tpcHNEcmF3ID0gc2tpcHNEcmF3OyB9CiAgICAgdm9pZCBzZXRUaWxpbmdEYXRhKGNv
bnN0IENDTGF5ZXJUaWxpbmdEYXRhJiB0aWxlcik7Ci0gICAgdm9pZCBzeW5jVGV4dHVyZUlkKGlu
dCwgaW50LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCk7CisgICAgdm9pZCBwdXNoVGlsZVBy
b3BlcnRpZXMoaW50LCBpbnQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0KTsKIAogICAgIHZvaWQgc2V0Q29udGVudHNTd2l6emxlZChib29sIGNv
bnRlbnRzU3dpenpsZWQpIHsgbV9jb250ZW50c1N3aXp6bGVkID0gY29udGVudHNTd2l6emxlZDsg
fQogICAgIGJvb2wgY29udGVudHNTd2l6emxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNT
d2l6emxlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCA4NjgzYjg0YjAzY2EzNmZmY2Q4NGMyNWRi
NjE5NTRmNmUyNjY0ZGMyLi5mNTk4OTNkZTkwNjQxOGY4Y2JkNzU3NDBhZTI5MzllMjNjYzIzNTBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMzA3LDggKzMwNyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCiAgICAgewogICAgICAgICBtX3F1YWRzQXBwZW5k
ZWQgPSB0cnVlOwotICAgICAgICAKLSAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IHRlc3RCbGVu
ZGluZ0RyYXdRdWFkID0gQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3Rh
dGUsIEludFJlY3QoNSwgNSwgNSwgNSksIENvbG9yOjp3aGl0ZSk7CisKKyAgICAgICAgQ29sb3Ig
Y29sb3IgPSBtX29wYXF1ZUNvbG9yID8gQ29sb3I6OndoaXRlIDogQ29sb3IoMCwgMCwgMCwgMCk7
CisgICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0QmxlbmRpbmdEcmF3UXVhZCA9IENDU29s
aWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRSZWN0KDUsIDUsIDUs
IDUpLCBjb2xvcik7CiAgICAgICAgIEVYUEVDVF9FUShtX2JsZW5kLCB0ZXN0QmxlbmRpbmdEcmF3
UXVhZC0+bmVlZHNCbGVuZGluZygpKTsKICAgICAgICAgRVhQRUNUX0VRKG1faGFzUmVuZGVyU3Vy
ZmFjZSwgISFyZW5kZXJTdXJmYWNlKCkpOwogICAgIH0KQEAgLTMyMiwxMiArMzIzLDE1IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgcXVhZHNBcHBlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZHNB
cHBlbmRlZDsgfQogCisgICAgdm9pZCBzZXRPcGFxdWVDb2xvcihib29sIG9wYXF1ZUNvbG9yKSB7
IG1fb3BhcXVlQ29sb3IgPSBvcGFxdWVDb2xvcjsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IEJsZW5kU3RhdGVDaGVja0xheWVyKGludCBpZCkKICAgICAgICAgOiBDQ0xheWVySW1wbChpZCkK
ICAgICAgICAgLCBtX2JsZW5kKGZhbHNlKQogICAgICAgICAsIG1faGFzUmVuZGVyU3VyZmFjZShm
YWxzZSkKICAgICAgICAgLCBtX3F1YWRzQXBwZW5kZWQoZmFsc2UpCisgICAgICAgICwgbV9vcGFx
dWVDb2xvcih0cnVlKQogICAgIHsKICAgICAgICAgc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgw
LCAwKSk7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwpAQCAtMzM3LDYgKzM0
MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2JsZW5kOwogICAgIGJvb2wgbV9oYXNSZW5kZXJT
dXJmYWNlOwogICAgIGJvb2wgbV9xdWFkc0FwcGVuZGVkOworICAgIGJvb2wgbV9vcGFxdWVDb2xv
cjsKIH07CiAKIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc4
MwpAQCAtMzU4LDE4ICszNjMsMzYgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBi
bGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogCiAgICAgLy8gT3BhcXVlIGxheWVy
LCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOwor
ICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRFeHBlY3Rh
dGlvbihmYWxzZSwgZmFsc2UpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBF
WFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CisKKyAgICAvLyBMYXllciB3aXRo
IHRyYW5zbHVjZW50IGNvbnRlbnQsIGJ1dCBzb2xpZCBjb2xvciBpcyBvcGFxdWUsIHNvIGRyYXdu
IHdpdGhvdXQgYmxlbmRpbmcuCisgICAgbGF5ZXIxLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxh
eWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihm
YWxzZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1Rf
VFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAKLSAgICAvLyBMYXllciB3aXRoIHRyYW5z
bHVjZW50IGNvbnRlbnQsIGRyYXduIHdpdGggYmxlbmRpbmcuCisgICAgLy8gTGF5ZXIgd2l0aCB0
cmFuc2x1Y2VudCBjb250ZW50IGFuZCBwYWludGluZywgc28gZHJhd24gd2l0aCBibGVuZGluZy4K
ICAgICBsYXllcjEtPnNldE9wYXF1ZShmYWxzZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb2xv
cihmYWxzZSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7CiAgICAg
bV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNB
cHBlbmRlZCgpKTsKIAogICAgIC8vIExheWVyIHdpdGggdHJhbnNsdWNlbnQgb3BhY2l0eSwgZHJh
d24gd2l0aCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXll
cjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhY2l0eSgwLjUpOwor
ICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOworICAgIG1faG9zdEltcGwt
PmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7
CisKKyAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNpdHkgYW5kIHBhaW50aW5nLCBk
cmF3biB3aXRoIGJsZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOworICAgIGxh
eWVyMS0+c2V0T3BhcXVlQ29sb3IoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0T3BhY2l0eSgwLjUp
OwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIG1faG9zdElt
cGwtPmRyYXdMYXllcnMoKTsKQEAgLTM4MCw5ICs0MDMsMTEgQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogCiAgICAg
Ly8gMiBvcGFxdWUgbGF5ZXJzLCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+
c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAgICAg
bGF5ZXIxLT5zZXRPcGFjaXR5KDEpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2Us
IGZhbHNlKTsKICAgICBsYXllcjItPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjItPnNldE9w
YXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMi0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjIt
PnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVy
cygpOwpAQCAtMzkyLDE4ICs0MTcsMzAgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogICAgIC8vIFBhcmVudCBsYXll
ciB3aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQsIGRyYXduIHdpdGggYmxlbmRpbmcuCiAgICAgLy8g
Q2hpbGQgbGF5ZXIgd2l0aCBvcGFxdWUgY29udGVudCwgZHJhd24gd2l0aG91dCBibGVuZGluZy4K
ICAgICBsYXllcjEtPnNldE9wYXF1ZShmYWxzZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb2xv
cihmYWxzZSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7CiAgICAg
bGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRy
YXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAg
ICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogCisgICAgLy8gUGFyZW50
IGxheWVyIHdpdGggdHJhbnNsdWNlbnQgY29udGVudCBidXQgb3BhcXVlIHBhaW50aW5nLCBkcmF3
biB3aXRob3V0IGJsZW5kaW5nLgorICAgIC8vIENoaWxkIGxheWVyIHdpdGggb3BhcXVlIGNvbnRl
bnQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCisgICAgbGF5ZXIxLT5zZXRPcGFxdWUoZmFsc2Up
OworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRFeHBl
Y3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIGxheWVyMi0+c2V0RXhwZWN0YXRpb24oZmFsc2Us
IGZhbHNlKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUo
bGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNB
cHBlbmRlZCgpKTsKKwogICAgIC8vIFBhcmVudCBsYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNp
dHkgYW5kIG9wYXF1ZSBjb250ZW50LiBTaW5jZSBpdCBoYXMgYQogICAgIC8vIGRyYXdpbmcgY2hp
bGQsIGl0J3MgZHJhd24gdG8gYSByZW5kZXIgc3VyZmFjZSB3aGljaCBjYXJyaWVzIHRoZSBvcGFj
aXR5LAogICAgIC8vIHNvIGl0J3MgaXRzZWxmIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCiAgICAg
Ly8gQ2hpbGQgbGF5ZXIgd2l0aCBvcGFxdWUgY29udGVudCwgZHJhd24gd2l0aG91dCBibGVuZGlu
ZyAocGFyZW50IHN1cmZhY2UKICAgICAvLyBjYXJyaWVzIHRoZSBpbmhlcml0ZWQgb3BhY2l0eSku
CiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb2xv
cih0cnVlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsKICAgICBsYXllcjEtPnNldEV4
cGVjdGF0aW9uKGZhbHNlLCB0cnVlKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNl
LCBmYWxzZSk7CkBAIC00MTQsOSArNDUxLDExIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICAvLyBEcmF3IGFn
YWluLCBidXQgd2l0aCBjaGlsZCBub24tb3BhcXVlLCB0byBtYWtlIHN1cmUKICAgICAvLyBsYXll
cjEgbm90IGN1bGxlZC4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEt
PnNldE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+c2V0T3BhY2l0eSgxKTsKICAgICBs
YXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFx
dWUodHJ1ZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb2xvcih0cnVlKTsKICAgICBsYXllcjIt
PnNldE9wYWNpdHkoMC41KTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNl
KTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CkBAIC00MjgsMTEgKzQ2NywyNCBAQCBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFx
dWVMYXllcnMpCiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDEpOwogICAgIGxheWVyMS0+c2V0RXhw
ZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBsYXllcjItPnNldE9wYXF1ZShmYWxzZSk7Cisg
ICAgbGF5ZXIyLT5zZXRPcGFxdWVDb2xvcihmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFjaXR5
KDEpOwogICAgIGxheWVyMi0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIG1faG9z
dEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5k
ZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOworCisgICAg
Ly8gQW5kIHdoZW4gdGhlIGxheWVyIHNheXMgaXRzIG5vdCBvcGFxdWUgYnV0IGlzIHBhaW50ZWQg
b3BhcXVlLCBpdCBpcyBub3QgYmxlbmRlZC4KKyAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsK
KyAgICBsYXllcjEtPnNldE9wYWNpdHkoMSk7CisgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihm
YWxzZSwgZmFsc2UpOworICAgIGxheWVyMi0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICBsYXllcjIt
PnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMi0+c2V0T3BhY2l0eSgxKTsKKyAgICBs
YXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CisgICAgbV9ob3N0SW1wbC0+ZHJh
d0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7CiB9CiAKIGNsYXNzIFJlc2hh
cGVUcmFja2VyQ29udGV4dDogcHVibGljIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAppbmRl
eCBlZDE1ZTZjMTBlMWZlNDYyYzk0OTY4NTZkYjM5MzQ1NjlmYWI4ODFjLi41ZWNiYjU5YzhlMDNi
ZmJmMTY2MzBkMDJkODkxOTcxMjEwYzM4OGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTM4LDM1ICszOCwzNiBAQCBjbGFz
cyBDQ1F1YWRDdWxsZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogCiBjbGFzcyBUZXN0
RHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CiBwdWJsaWM6Ci0gICAgVGVzdERyYXdRdWFk
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJpYWwgbSwgY29uc3QgSW50UmVj
dCYgcmVjdCkKKyAgICBUZXN0RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHN0YXRl
LCBNYXRlcmlhbCBtLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVS
ZWN0KQogICAgIDogQ0NEcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCkKICAgICB7CisgICAgICAgIG1f
b3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8
VGVzdERyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHN0YXRlLCBNYXRl
cmlhbCBtLCBjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFRlc3RE
cmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJpYWwg
bSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGVzdERyYXdRdWFkKHN0YXRlLCBtLCByZWN0
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGVzdERyYXdRdWFkKHN0YXRlLCBtLCBy
ZWN0LCBvcGFxdWVSZWN0KSk7CiAgICAgfQogfTsKIAotdm9pZCBzZXRRdWFkcyhDQ1NoYXJlZFF1
YWRTdGF0ZSogcm9vdFN0YXRlLCBDQ1NoYXJlZFF1YWRTdGF0ZSogY2hpbGRTdGF0ZSwgQ0NRdWFk
TGlzdCYgcXVhZExpc3QpCit2b2lkIHNldFF1YWRzKENDU2hhcmVkUXVhZFN0YXRlKiByb290U3Rh
dGUsIENDU2hhcmVkUXVhZFN0YXRlKiBjaGlsZFN0YXRlLCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCwg
Y29uc3QgSW50UmVjdCYgY2hpbGRPcGFxdWVSZWN0ID0gSW50UmVjdCgpKQogewogICAgIHF1YWRM
aXN0LmNsZWFyKCk7CiAKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUo
cm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoKSwg
SW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6
Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBv
aW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChU
ZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwg
SW50UmVjdChJbnRQb2ludCgyMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFk
TGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpU
aWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkp
KSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwg
Q0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMTAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3Jl
YXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50
KDIwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRl
c3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJ
bnRSZWN0KEludFBvaW50KDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRM
aXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRp
bGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDAp
KSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUs
IENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDIwMCksIElu
dFNpemUoMTAwLCAxMDApKSkpOwotCi0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6
Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQ
b2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERy
YXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRS
ZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0
LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxl
ZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7
Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIEND
RHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIEludFNp
emUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0
ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgp
LCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFw
cGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29u
dGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxk
T3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShy
b290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAs
IDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0
LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVk
Q29udGVudCwgSW50UmVjdChJbnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNo
aWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0
ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgx
MDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVh
ZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFk
OjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50
UG9pbnQoMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAg
ICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdR
dWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAyMDApLCBJbnRTaXplKDEw
MCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJh
d1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVj
dChJbnRQb2ludCgyMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0
KSk7CisKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0
ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUo
MTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3RE
cmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50
UmVjdChJbnRQb2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVj
dCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRl
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQo
VGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9w
YXF1ZVJlY3QpKTsKIH0KIAogI2RlZmluZSBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVB
RFMgICAgICAgICAgICAgICBcCkBAIC0xNDYsNiArMTQ3LDU0IEBAIFRFU1QoQ0NRdWFkQ3VsbGVy
VGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcEJvdHRvbVJpZ2h0KQogICAgIEVYUEVDVF9FUShx
dWFkTGlzdC5zaXplKCksIDl1KTsKIH0KIAorVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlD
dWxsU3ViUmVnaW9uKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwor
CisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CisKKyAgICBPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIElu
dFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxk
U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCBmYWxzZSk7CisgICAg
SW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSArIGNoaWxkUmVjdC53aWR0aCgp
IC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53
aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpIC8gMik7CisKKyAgICBzZXRRdWFkcyhyb290
U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3Qp
OworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CisgICAgQ0NRdWFkQ3VsbGVy
OjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNp
emUoKSwgMTJ1KTsKK30KKworVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVn
aW9uMikKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAgIGNo
aWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgMTApOworCisgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCBJbnRSZWN0KCks
IDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjaGlsZFN0YXRlID0g
Q0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOworICAgIEludFJlY3Qg
Y2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNo
aWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAv
IDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAqIDMgLyA0KTsKKworICAgIHNldFF1YWRzKHJvb3RTdGF0
ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QsIGNoaWxkT3BhcXVlUmVjdCk7Cisg
ICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1
bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgp
LCAxMnUpOworfQorCitURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb25D
aGVja092ZXJjdWxsKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwor
CisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA0OSk7CisKKyAgICBPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIElu
dFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxk
U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCBmYWxzZSk7CisgICAg
SW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSArIGNoaWxkUmVjdC53aWR0aCgp
IC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53
aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpIC8gMik7CisKKyAgICBzZXRRdWFkcyhyb290
U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3Qp
OworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CisgICAgQ0NRdWFkQ3VsbGVy
OjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNp
emUoKSwgMTN1KTsKK30KKwogVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlOb25BeGlzQWxp
Z25lZFF1YWRzRG9udE9jY2x1ZGUpCiB7CiAgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNU
X1FVQURTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRM
YXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExh
eWVySW1wbFRlc3QuY3BwCmluZGV4IDU1NDYwMzdhZGEyY2NiZjE5ZWRlMDFlNjNjZGI3OTY5NzRk
ZmMyYTEuLjQ4ODk2MGZkMTI3MzBjNDk1N2Q4YTg1MDUxNDk0OGZkY2ZhZGI0ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3Qu
Y3BwCkBAIC00NiwxMSArNDYsMTIgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q0NUaWxlZExheWVySW1w
bD4gY3JlYXRlTGF5ZXIoY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEkKICAgICBsYXll
ci0+c2V0VGlsaW5nRGF0YSgqdGlsZXIpOwogICAgIGxheWVyLT5zZXRTa2lwc0RyYXcoZmFsc2Up
OwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5
ZXJTaXplKSk7CisgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5KDEpOwogCiAgICAgaW50IHRleHR1
cmVJZCA9IDE7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aWxlci0+bnVtVGlsZXNYKCk7ICsr
aSkKICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB0aWxlci0+bnVtVGlsZXNZKCk7ICsraikK
LSAgICAgICAgICAgIGxheWVyLT5zeW5jVGV4dHVyZUlkKGksIGosIHN0YXRpY19jYXN0PFBsYXRm
b3JtM0RPYmplY3Q+KHRleHR1cmVJZCsrKSk7CisgICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQ
cm9wZXJ0aWVzKGksIGosIHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KHRleHR1cmVJZCsr
KSwgSW50UmVjdCgwLCAwLCAxLCAxKSk7CiAKICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOwog
fQpAQCAtMTM0LDcgKzEzNSw3IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJi
b2FyZGluZykKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGlsZXNYOyArK2kpCiAgICAg
ICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtVGlsZXNZOyArK2opCi0gICAgICAgICAgICBsYXll
ci0+c3luY1RleHR1cmVJZChpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2JqZWN0PigwKSk7
CisgICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHN0YXRpY19jYXN0
PFBsYXRmb3JtM0RPYmplY3Q+KDApLCBJbnRSZWN0KCkpOwogCiAgICAgLy8gQWxsIGNoZWNrZXJi
b2FyZGluZwogICAgIHsKQEAgLTE1NSw3ICsxNTYsNyBAQCBzdGF0aWMgYm9vbCBjb21wbGV0ZWx5
Q29udGFpbnMoY29uc3QgUmVnaW9uJiBjb250YWluZXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAg
ICAgcmV0dXJuIHRlc3Rlci5pc0VtcHR5KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGdldFF1YWRzKEND
UXVhZExpc3QmIHF1YWRzLCBJbnRTaXplIHRpbGVTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclNp
emUsIENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXJUZXhlbE9wdGlv
biwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKK3N0YXRpYyBQYXNzT3duUHRyPEND
U2hhcmVkUXVhZFN0YXRlPiBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkcywgSW50U2l6ZSB0aWxl
U2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVy
VGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRpb24sIGNvbnN0IEludFJlY3QmIHZpc2libGVMYXll
clJlY3QpCiB7CiAgICAgUmVmUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3JlYXRlTGF5
ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgYm9yZGVyVGV4ZWxPcHRpb24pOwogICAgIGxheWVyLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOwpAQCAtMTYzLDYgKzE2NCw3IEBA
IHN0YXRpYyB2b2lkIGdldFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBJbnRTaXplIHRpbGVTaXpl
LCBjb25zdCBJbnRTaXplJiBsYXllclNpCiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKICAgICBs
YXllci0+YXBwZW5kUXVhZHMocXVhZHMsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisgICAgcmV0
dXJuIHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCk7IC8vIFRoZSBzaGFyZWQgZGF0YSBtdXN0IGJl
IG93bmVkIGFzIGxvbmcgYXMgdGhlIHF1YWQgbGlzdCBleGlzdHMuCiB9CiAKIC8vIEFsaWduIHdp
dGggZXhwZWN0ZWQgYW5kIGFjdHVhbCBvdXRwdXQKQEAgLTIwMCw3ICsyMDIsOCBAQCBzdGF0aWMg
dm9pZCBjb3ZlcmFnZVZpc2libGVSZWN0T25UaWxlQm91bmRhcmllcyhDQ0xheWVyVGlsaW5nRGF0
YTo6Qm9yZGVyVGV4ZWxPcAogCiAgICAgSW50U2l6ZSBsYXllclNpemUoMTAwMCwgMTAwMCk7CiAg
ICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRRdWFkcyhxdWFkcywgSW50U2l6ZSgxMDAsIDEw
MCksIGxheWVyU2l6ZSwgYm9yZGVycywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsK
KyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0
YXRlID0gZ2V0UXVhZHMocXVhZHMsIEludFNpemUoMTAwLCAxMDApLCBsYXllclNpemUsIGJvcmRl
cnMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiAgICAgdmVyaWZ5UXVhZHNFeGFj
dGx5Q292ZXJSZWN0KHF1YWRzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwogfQog
V0lUSF9BTkRfV0lUSE9VVF9CT1JERVJfVEVTVChjb3ZlcmFnZVZpc2libGVSZWN0T25UaWxlQm91
bmRhcmllcyk7CkBAIC0yMTYsNyArMjE5LDggQEAgc3RhdGljIHZvaWQgY292ZXJhZ2VWaXNpYmxl
UmVjdEludGVyc2VjdHNUaWxlcyhDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHQKIAog
ICAgIEludFNpemUgbGF5ZXJTaXplKDI1MCwgMjUwKTsKICAgICBDQ1F1YWRMaXN0IHF1YWRzOwot
ICAgIGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDUwLCA1MCksIEludFNpemUoMjUwLCAyNTApLCBD
Q0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVMYXllclJlY3QpOworICAg
IE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkU3RhdGU7CisgICAgc2hhcmVkU3RhdGUg
PSBnZXRRdWFkcyhxdWFkcywgSW50U2l6ZSg1MCwgNTApLCBJbnRTaXplKDI1MCwgMjUwKSwgQ0NM
YXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKICAgICB2
ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZHMsIHZpc2libGVMYXllclJlY3QpOwogfQog
V0lUSF9BTkRfV0lUSE9VVF9CT1JERVJfVEVTVChjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0
c1RpbGVzKTsKQEAgLTIyOCw3ICsyMzIsOCBAQCBzdGF0aWMgdm9pZCBjb3ZlcmFnZVZpc2libGVS
ZWN0SW50ZXJzZWN0c0JvdW5kcyhDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcAogICAg
IEludFNpemUgbGF5ZXJTaXplKDIyMCwgMjEwKTsKICAgICBJbnRSZWN0IHZpc2libGVMYXllclJl
Y3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKTsKICAgICBDQ1F1YWRMaXN0IHF1YWRzOwotICAgIGdl
dFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5n
RGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVMYXllclJlY3QpOworICAgIE93blB0cjxDQ1No
YXJlZFF1YWRTdGF0ZT4gc2hhcmVkU3RhdGU7CisgICAgc2hhcmVkU3RhdGUgPSBnZXRRdWFkcyhx
dWFkcywgSW50U2l6ZSgxMDAsIDEwMCksIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5v
Qm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlD
b3ZlclJlY3QocXVhZHMsIHZpc2libGVMYXllclJlY3QpOwogfQogV0lUSF9BTkRfV0lUSE9VVF9C
T1JERVJfVEVTVChjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c0JvdW5kcyk7CkBAIC0yNDAs
NyArMjQ1LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGV4dHVyZUluZm9Gb3JMYXll
ck5vQm9yZGVycykKICAgICBJbnRTaXplIHRpbGVTaXplKDUwLCA1MCk7CiAgICAgSW50U2l6ZSBs
YXllclNpemUoMjUwLCAyNTApOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgZ2V0UXVhZHMo
cXVhZHMsIHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRl
eGVscywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKKyAgICBPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMocXVh
ZHMsIHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVs
cywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUX0VRKHF1YWRzW2ld
LT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpIDw8IHF1YWRTdHJpbmcgPDwg
aTsKQEAgLTI0OSw2ICsyNTUsMjUgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGV4dHVy
ZUluZm9Gb3JMYXllck5vQm9yZGVycykKICAgICAgICAgRVhQRUNUX05FKHF1YWQtPnRleHR1cmVJ
ZCgpLCAwdSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZC0+dGV4
dHVyZU9mZnNldCgpLCBJbnRQb2ludCgpKSA8PCBxdWFkU3RyaW5nIDw8IGk7CiAgICAgICAgIEVY
UEVDVF9FUShxdWFkLT50ZXh0dXJlU2l6ZSgpLCB0aWxlU2l6ZSkgPDwgcXVhZFN0cmluZyA8PCBp
OworICAgICAgICBFWFBFQ1RfRVEoSW50UmVjdCgwLCAwLCAxLCAxKSwgcXVhZC0+b3BhcXVlUmVj
dCgpKSA8PCBxdWFkU3RyaW5nIDw8IGk7CisgICAgfQorfQorCitURVNUKENDVGlsZWRMYXllcklt
cGxUZXN0LCB0aWxlT3BhcXVlUmVjdEZvckxheWVyTm9Cb3JkZXJzKQoreworICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBzY29wZWRJbXBsVGhyZWFkOworCisgICAgSW50U2l6ZSB0aWxlU2l6
ZSg1MCwgNTApOworICAgIEludFNpemUgbGF5ZXJTaXplKDI1MCwgMjUwKTsKKyAgICBDQ1F1YWRM
aXN0IHF1YWRzOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkU3RhdGU7Cisg
ICAgc2hhcmVkU3RhdGUgPSBnZXRRdWFkcyhxdWFkcywgdGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NM
YXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVy
U2l6ZSkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkg
eworICAgICAgICBBU1NFUlRfRVEocXVhZHNbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlRp
bGVkQ29udGVudCkgPDwgcXVhZFN0cmluZyA8PCBpOworICAgICAgICBDQ1RpbGVEcmF3UXVhZCog
cXVhZCA9IHN0YXRpY19jYXN0PENDVGlsZURyYXdRdWFkKj4ocXVhZHNbaV0uZ2V0KCkpOworCisg
ICAgICAgIEVYUEVDVF9FUShJbnRSZWN0KDAsIDAsIDEsIDEpLCBxdWFkLT5vcGFxdWVSZWN0KCkp
IDw8IHF1YWRTdHJpbmcgPDwgaTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAKaW5kZXggYmRi
ZjdiYjA5MzAxOGJkNmE2YjMwN2ZmOGJlMzgxNDE1ZjU4YTY3My4uOTIyYzhjMThlYzI4NWJkZjE5
ZWUwNjE3YTg5MzFlNmM0ZmZlMzZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAKQEAgLTEzNyw3ICsxMzcs
NyBAQCBURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVjdE5vdFByZXNl
bnRBZnRlck5vbk9wYXF1ZVBhaW50KQogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwg
MCwgMCksIG9wYXF1ZVJlY3QpOwogfQogCi1URVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0
ZXN0T3BhcXVlUmVjdE5vdFByZXNlbnRGb3JPcGFxdWVMYXllcldpdGhPcGFxdWVQYWludCkKK1RF
U1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0UHJlc2VudEZvck9wYXF1
ZUxheWVyV2l0aE9wYXF1ZVBhaW50KQogewogICAgIFBhaW50RmlsbE9wYXF1ZSBmaWxsT3BhcXVl
OwogICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiB1cGRhdGVyOwpAQCAtMTQ5LDIxICsx
NDksMjEgQEAgVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3ROb3RQ
cmVzZW50Rm9yT3BhcXVlTGF5ZXJXaXRoT3BhcXVlUGEKICAgICB1cGRhdGVyID0gQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7
CiAgICAgdXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOwogICAgIHVwZGF0ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZv
cGFxdWVSZWN0KTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFx
dWVSZWN0KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgb3Bh
cXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBh
ZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxPcGFxdWUpKTsKICAgICB1
cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRl
KHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CiAgICAgdXBkYXRlci0+c2V0T3BhcXVlKHRydWUp
OwogICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwg
SW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0g
SW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNo
cm9taXVtKGZpbGxPcGFxdWUpKTsKICAgICB1cGRhdGVyID0gRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCkpOwogICAg
IHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKICAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVl
UmVjdCk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVj
dCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJl
Y3QpOwogfQogCiBURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVjdE5v
dFByZXNlbnRGb3JPcGFxdWVMYXllcldpdGhOb25PcGFxdWVQYWludCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NTEyNjJj
Zjc3ZjMzYzJmNjgxZjhjYzUxNTNjOWQ4OGQ5ZGMwMjI4Li5lMDRhOTc4M2ZiNzMzNGM1ZTIxZDU1
NDg1MjViZGRlNGY3Yjk2NGY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDEtMjAgIERh
bmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBV
c2UgcmVnaW9uIHJlcG9ydGVkIHBhaW50ZWQgb3BhcXVlIGZvciBkcmF3IGN1bGxpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDE1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS1saW51eC9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1pbi1jb21wb3NpdGVkLWxheWVy
LWV4cGVjdGVkLnBuZzoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMtbGVvcGFyZC9m
YXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVj
dGVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xl
b3BhcmQvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXll
ci1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2lu
L2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhw
ZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvcmVw
YWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5n
OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC9y
ZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5w
bmcuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Ogor
CiAyMDEyLTAxLTIzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBHVEsgZ2FyZGVuaW5nLiBSZWJhc2VsaW5lIGFmdGVyIHIxMDU2
MTMsIG1hcmtlZCAzIHN2ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbGludXgvY29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtaW4tY29tcG9zaXRlZC1sYXllci1l
eHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jb21wb3Np
dGluZy9pZnJhbWVzL2lmcmFtZS1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZwppbmRl
eCAxZDZmMDNlMTg5N2E4NTVkMzFiZGQ5MjI1YmMyM2I4MTRkMmNkZDA5Li4xMTQyZmJhZmE4ZmI2
NGM2YjFmOTZhNWIyZGY1OGE1NDQxMDdhNjczIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMzQ2Mwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBX
cyRsSGBvazxtfT9vVCF0aD0Kekx4YT5iZ0gjS1A2YSEwUl5BdGwlXkhmdDRMITt6R0JOS0JJKD0/
YD1EWFZ+bk5xVnxDaEUmWFhkKUt4fERxRUB7CnphSzxHbWtHSEZDSGU2ZksmP0NFSFg1e0kmdkoq
LWxtfkxSUDQpd2J1eXlEZDNZRT1ePG47Pk5pXntubyZwUVRRPQp6fE12WmhedC0lO2ZubVl0Xipo
LWE3PFFPM2FXZzJXWkQzJFghZW8+bXhCdkNFR01IaGApN3k4TDhVRk4mPk0lNlMKeklLYWZ2IUhM
MXhgKU5qLXhYJCRaXzk8S3EraDtERFUpO358O2VYXm9zTTtJOXd7Z15PX1RyIU9fSUE9bmlRXnhF
Cno7RCtTdHQ2NipGXnVAWkw3WDdSJld9TmYoJE4/c2NgdnlGPi0rdWQzJSVJbis+eSNrKCprYSQo
SW9vYyh3ZGs4fgp6ITArSVohMSVjJEhUfWFBVkBBQ2VCeG1TIz59Rzl6dCsxaU5gKHNHQjYhIzck
Q2hpPl5ePGA2IUczflF6V0lna34KekdCOHU7ZiVvU0hmZUNlJlAwcmRmSWheRFlWe3FfRVV9UU1M
MCVWKnFqWDAzZ21OPXVEckdafkBMJk1FR193Vm4yCnp5NSg9KHxCSTZ1dyZWeWhLfiV3Jmsxfikw
WiF8UFVMeFl3WDxsUXFsaDg/bEx8Sko8fFdVdkVmYG4xaEFiTFJkMwp6UCs7LXJ2QVRXVHBDM35T
OEh+MVpGayZtY0Z3MyhjQ1FAZXBvdU1GZitXKCgrLSNPeHMjc0J9ODRHTSVWSmYkI1oKenhyYH10
X3BCfCRmdXhOUVpfME10fE5yc2ZnVFp3YmhVZFomMlY4SURuRUE3fUE1T2dJJCM1PmNUWXkwIWpU
S21xCnpac1Rhb1JAJV9lb3pOfD9MayUzI1ZLNSUzbTwzNUVmZlZEWUxXV3E3UWBIeWMjcnpDKyo0
QG9CfElXYzZAMDdyfQp6YERXaHNlOUsma3cqR2w2M3NOeHlPfE9Yays0bzFPWn1SdUIkVVJeSlIt
VnRrP14kfDledXRuNG9kLSZQQjEyd3IKentkbVA5Ui1pZD1tc2MhZnhJK1M/eEp4WUtid0B9Jlgz
JjIlWXdDUT8wITA9dmdaezVvZjJVMzc7WEF3YFpvUGU/CnpUKkhMdDVYJkUxKnhBfDFTdG85ZCtO
czY7cWlmbl82V08wSHU1K2pCQDMpdD1gRnJqNHtUX3olWXJ8RnhoYkBfUQp6YHN3OV5DVnkqUWUk
RyFuJU14SCslYkczR3cqQWxmQjhqJSZ6a2c1dUZKX1VwfDkteU4/NDhSVzxkXk5mRTReUUEKempX
XkA8d0AwISE5NHF8dG10KVNlJT1DaEhuaGJVcUl2WjJkMXVXWCUzcTA2JHZ8UkF0SzBsXn0hWThg
dDd7YkB7Cno9IztYKS0qbyRKcEtPZTlGWUJFSkl2Y0t0N1c1b3IlSlVWRGMqUnZRN3MmR1p5eD9O
eUVFQlEkPytZeD4qZEUkaAp6X2d7RlBlMm5DR1MhUSQ5K2UkWTc0Z0B7OHdvPzFTd0pHOHx2dm4k
X3gzeytednRJez5pTWQ5ZFB4Q1JSZUBvVWkKeislOEU8MEQ3czZAND5Qa2UyblhFY1EkVH5UWXAh
V1dsb3d6b0FBQndKUmUkaGB0eDc/dCRPKDg+RyRRJCVrTjdhCnp6eFozUHAqKFZKbkVJOGc/fClC
T3tfP3Jee0Nld2J3VDRAcntoMSNFKmNjajtBOWRlaFdEdG04VkElTFFTNVIpfQp6RkdoeGp7fk1j
RjgzY3JaVnVwP0FqRSYpT1E8KWhLWHMmQFpJN2FLdChLP2ZzYnRiNCRKSHBifktraV96eU4xUz4K
UylWMmI5UnQlbzVlbEZ7cjV9RS0ydmFBUkkKCmxpdGVyYWwgMzQ2NAp6Y21lQVNATj8ob2xIeWB1
VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG41dD0KeiF4VGU5
JU18MFopTVFLWkw8X1NkM2shMnxPVmhNZVF5e31RSVhaaF5EOXx0fFBaITZLaWFCclo/Iy0zWG1U
Q3dyCnpTfH0lUj53d3Q7REhla2lfTUVpcm90R0k4R3NaQWBaKlVlcFArPXpVO09rell0d0tMTm9G
X2hhTmlKbUJAN0hucwp6elBiSkIldm9YIzM/PV9lelhQM2QtN1NIVTtSdVR1Z00kd1M8SVRHdD8p
JlpYeGYoWHQlJnVsPSp1U3hmbHxldV8KemZgUCVYNXVMRnlUPC1GUnJsKzVOeEJEPURGdVZNdl8/
O2xiS1lNTU0rVW9tYTVBKHhiSGcyd3MpKTlNYlZQfEoyCnpYUHZ3P1lWR3ljTjBUPGo9LUtEJUhF
ZjxNNXk5fFd4LURfey1GZndWMmJPTWg8djVjcGJBMD1oJVZvUHxrQUQ8Pwp6Iz5sfmBsT1ZWTDRi
UXc5d0Y5akpGciRTZDR6THooUzE2RVc1aThKfl9zVDFvRzI5YDZRVCpaZ2IoYk96Z3NYMzgKel8t
VSlKKXlyQ3dEUUNpVUNWJHFsbyRkQDhrcTRPPUl5aU0wOGZGey1HSXB8WSZwMnpxUXsyeitMNkpx
d1ZEfDZkCnp6cWlsWGNLXk03bH5CVnBUXz5uMnhiamczYV5RYEkjJU8zanZKcCpFIWl+RmttPklU
YkA0dFdFbWd6dmRLKldJQAp6dilOfXElZ2diIypaK0JQeWtDQzQ1dWR7YEYtMl5wN2lNYGopSXtE
cmxWZXpTPlhaSGI9Vy04RXw5RX1Ce3d5I00Kei0wX3NjbkJfOTIkajAzfSolPX5xI0pjYjFlU2E9
NUZETGhHN1IhU2dDaGk+XnYoRyt6YEpsayFqNVgoaHBFLWd8CnozYGY9ZyVoN3traVVxI0ZxRSEk
bWF7VU0+cXxiMGNjYGgoJXV3dnwwJFdSTSVZV21fJC1hRSNJK2dvcUhlSjAyRgp6ej9ubFEhUis/
aVpAU0JRNH1aOGduUENmTnBxKzdqY2k+T2xvfVJ6RygrQERtQ30+OTxfJW08Jmx3Q353T2Q0NVoK
elRJez5NVmoxSi05JD9adDhYVWUtYHZEaCsmViF+RSs3R05hQW9iWEBqWnRlcTg4aG0mOUFKOTNG
PmR8K1BtPk5OCnpOP2QjV1JzOVVKeiRZMjc8eitJKmZnbzlaT18rOWdEcjVZYHFGS3c3PF5OVmFl
RG4xQ141KjZEdE56WHdlNmFJcwp6Ul9VUnhEQDhrTnRZJDJtdVY0R2A/VjZia1M8QlphMEcmUFVl
PGFgR2c4S1VVUHhxT1F6eG4/QVk/fD9Sa3cwaGkKendwVHlDLWMrampWQXRGVi1mST9wYHtXeGgr
cX5zRFhVbHFrLU82eW84eT0/VEE3cShndypTeU9icE5fMWdIR1JgCnpxbW1DXk8+SkRkP209d1g/
ejxiQ3ZsbmVfa2U8UmlaNUxERCNmU3JJR251PyY4UHtLcUlOJUdjdiNvcTVBQTlzIQp6bWFsIU15
VCRlUV5AbHo7WWRfd1h7OXN2MWJqeHgxMihDTDtyTDE+bWVOcm0jV3F0cVkhLXMtNTRgdTx3Z3ph
ZDUKej03b3BAXlJJeyYlPVk3MWIyYVBnSW1TQzhfWjFKNlN7clYtX0loaHxRXlJHUiF2JSthJnR1
Iy07cHM9O3o0N3tVCnpfV3Q9LV41SU1MVn5lVyR0Uk03TlV3emZHPnNSZ2tQYlBuQlVWaEZgS2ck
d2V7bjN6RD9pMiQ8Zmx0anVZaFlgUgp6bj9kMipLSFdwZztyMHYrQU1DPzZGZmImNiNNQ2V0LSVo
UEFWcW1hbjZAQGk4WGlgI3duPSsjJmtKaVJDdGM/ZTQKZDhvTj0/RDcqS3IkQCFgUjdHUiUtIVBD
e3hXdH4kKDY5OFc9UTUqbU8KCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS1saW51eC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVk
LWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhw
ZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Yzc1YTY4OWQ5YTlmODA5
MGRmNzM4NWZlMDQ1MDQ0ZDRlMGFhOTViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFs
IDI5NTcKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3Mk
bEhgb2s8bX0/b1RtfW42CnowfUQkZGkhP0pjR2xMfGZHPW5ybEJaRmoxTC1TTnExMmRFNHdCK2Uw
NHlaNk5hTGFxVElFR1pyZDMobihFN1ZjSQp6O2JLO3lZdkYoRTJ8NmRzQ2dgXzRhTXwlPV9oWldz
JnJKNyhuQzhGVCVnKWVuWmhBVUQxSCpAIzk2QWdRR1kmOEAKemJaYHpZTXM0amtoV2g4WFUoMHRE
e1FZZzJfdT1vOzxEMTxYOHZhaz02PVFKbE5ubTYrIWgpNllYNEMoS3Z1RUJNCnpII2FzdTlsd0Yw
O3FzancyWDdmP1V6LSpBLWl3PnpmcnhuQ2hISkJhWmFCYHdVfiFeVmRYNFNvYDxHNlkzTlRuKQp6
WTtGOCVBXjF3MDtYIX5vK2NrWj83S1FeOF5MVztuWmNjeEhvR3RzYzQjTlctYkd4R1hfcGN2KD5j
aGJ4XlpYZGwKejlTMUpMLUpuPDl7UGQoS0x4RysyQFFReyhvMnU2Q3trfVAhZiNGOTsmSVNnQ0Jx
bllLMStgSmVYZHNOSGd3YjN1CmxuaFFwQSFEdWNSUj1MMlFhaHNtKHdrdD1YUDY2QjM0NCRyakY2
KjJVbmdEYEhZSHxQbwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LW1hYy1sZW9wYXJkL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0
ZWQtbGF5ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFj
LWxlb3BhcmQvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1s
YXllci1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMzMxMWY4
M2M5ZmUwNWIyMTI5OGFkYzRiNGUxNWI2MGI2NzZhZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmxpdGVyYWwgMzM5OAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkxQiVRbFli
cFJ6bmtCOWdDQ000NyQ9U3VGeGVPK2oKem1Qc2pUc21aQ3ZXKEl+U0NNbXstcldXUkA3UmdETDJD
MnJUaTNVZSZVME45IWN5NCZRSUVHWnJkMypQdUZTRFY1CnohJHMzWU4tcUNKNn0qeHhUMno5I2V6
PCtBcDhuP0lAdFUoMDwhOF50MDQtX1Vld1E2Y29sfHNSVX0pJUpVfVJ1MAp6VnEjJW5JS2QmbnpA
VlQhRzZYO0dgXl8tKmVFITw2Xkp7QVZ5cz18cVYzN1YxJmQwIXohb3REOEZoTmooZngqRzgKemZx
e1dSa2BYQUMocFNsUz9lM1khRlFjO0crNXFFRT1KXldGNks3KHdXM1I4WnpHaXd9M0spVis/eU53
Szg/RmEzCno3UkIkfSNjU3RkJiVtJnRFVHJMIyZHaWxJUFhGYStVfDFuNXMtUVFJbmMrYShhaDRO
JXt6TSZRVnJhTiQkb09lUwp6Xl9mM3c2WXN1bjxgNHVibEtDbi07cmR0WSpBV2ExN3AmNWxmUj97
ZTl+bSgrezFWPmd3NnJwTFU8X0lgYjdEKFcKelNYMGBsQVg/VE40VW98UWZ0U09oaUQ1SmBqM3gk
THQoNEsrRmA3R3VRU1NLM3g9Yy1IXnxnajQyMCV8U2MpSSR6Ckp0YUQwZTBzeXZlKkg4Y2UKCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQv
ZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBl
Y3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMtc25vd2xlb3BhcmQv
ZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBl
Y3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MGU4YzE5Njc5YmUxYjE5
MmFlY2JkNmEyNWVkZDE4YmMwNTJiOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwg
MzM5Ngp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkxQiVRbFlicFJ6bmtCOWdD
Q000NyQ9U3VGeGVRNTMKejdLVWFpN1JlVEFDYUtBV1cpe1c8cmImajBzajIzTTdNN04mVyt2dkZT
RHM7RDtKTjFNO3V1bWY9an5sWEtXMFkoCnpoSig+WngmezglR2R9WDxWWjAkVztrIzA5WHZzT1hK
PWMyUG5pPn1+R0JCe3JFOF89UkhPSUxETko9cz9GKSphQwp6YTQ7fVQ1TDk0YmFCdiRMZzNsX3lH
ZmNmK3pWXz88SiRxfjMkVDJjQkBhfnopajNZUV5DZkJqUFBKOHlSV2JNfG4Keks0NVNpeDZFUVRH
UUoqbHo0VWNvPHJRR2kzMFA9MylOVDY5enxlM2prZz4+bT1kWS1tOCtFfEllN2t+U1g2Mm0zCnpv
NF8hMmMpeDwtPEkhUlVoOHdTRUYjTjE4Yyo/QGZ6PnN5RTx3V2ojTCp4N0Q1d0hKQUdCOU13ZTY/
NURlfTRVKAp6V0pVJnUqRTR2NU1zSndVMEV7dnRDS2QqVTZDNDV6Mzx9QilLeD13TjFxWGVBb1M4
TkFyWStFdzEjSHJ6QGl2LWYKd00+RndnMFhBQkFrNSppeEhUaF81STllTUx0Xz9xUHN1YnowWms/
MlZvJmc5dlVIeDN2SVZDZyEwMz14VW07ZTkoCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0td2luL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNv
bXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0td2luL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5
ZXItZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTViNmQ2YjNl
ODI3Y2RjMWNhZDU1NjI2MTI5ODI4NzRkNTlhNjE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgps
aXRlcmFsIDI5MzQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhs
QSVAV3MkbEhgb2s8bX0/b1RuNTc9CnpeVGZteXZxVGUxTGxZQ0RCeTtsPSk4ciZXM2oraD1MYCQ8
fCVjTkQmMzk8fGYrI0hAUmp2KkN1LXJoMEhKOFU0cAp6O0FuV0Z8SWRIPEFISW9QJSQ7MjNqQUNM
aCZ4Qn5Ma0dhRHNRKyRxQHEyYil8dElQfXhkISFwIzgzY3FRNyNJd1AKejdofmkzKSRCaUotflFf
PCohU181cWdsY0orRWBtQWhDamgoX2BTT0U/N2Yza0tQckRAbyU0UnF6KStGNHxBNXJ2Cno/V0Bu
LVhKRntRQCFxOWtvaTstUT5zI0BOPEFwdG08Klc+QXZmbTNVRzh8fnlifD1Cc0xYZTNlYDxCcyRi
THZocgp6ZmlofFBnJitSM1RkQChTSzZtRnFDV2VUYTJiZFQtSUNVNXJabHdLQl88NUkkQSEwdFM3
PXdkUDB3Y29fbVFlO1IKejFMNEA1JiN4cEk4MThrQTJLWj1WOF9qV31yT2p3QTd8akt2eG5Pd2Fm
O1pCdkpAUmBrbHplSns0UVUyWFMzajNeCkhQNjxyX0Z7KjRWCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAt
aW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxh
eWVyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjBmZjUwNGIzN2IwYmJjMDM3NWE2NThkOTU4
ZDAxNzJiODhkNjA5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODY1CnpjbWVBU0BOPyhvbEh5
YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UbjI7Rwp6UjZf
JDNxZVA9NXYmNkpDNlUjKEhsUWdyVyNGVjd1bDtsTHlHKCpNU052andieERJPXxJRUdacmQzKW1e
PVYxb3sKejdSVUw4Wmx+OzdqJkE4WGMlaV4hUmFlNWl2dWtHbFdNSGBQXlBMPDYhdl87NFpVek9s
NEdhdVAhO0c+MkY3djxRCnpJb2FQXlpkPiU8dn1JKDdKSnJtfUFScnZVeitsKW8kezJFaTVOKjc8
bndqQ2k7KS1GSVJFSnM0OH0taWNEQHtrXgptYlRtJGZXaXcka1ZHcUtERWlOe2JjWGpmc1EjWE5h
VTxPWkRLYkxoKjJ+N1p+JEpOe2IKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA2
ODUxODlhN2IxYjQ4MTE3MGVjZjI5MjVhYTI2ZDMwNmZlZjRkM2RlLi5lM2YzMTY5YTNhZWJjOTRm
OThhYjM1YTg5OTBkY2MwMzdiMzE4ZThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC00MDE2LDYgKzQwMTYsOSBAQCBC
VUdfQ0FSWUNMQVJLIE1BQyA6IGVkaXRpbmcvc3R5bGUvY3JlYXRlLWJsb2NrLWZvci1zdHlsZS0w
MTIuaHRtbCA9IElNQUdFCiBCVUdfQ0FSWUNMQVJLIE1BQyA6IGVkaXRpbmcvc3R5bGUvY3JlYXRl
LWJsb2NrLWZvci1zdHlsZS0wMTMuaHRtbCA9IElNQUdFCiBCVUdfQ0FSWUNMQVJLIE1BQyA6IGZh
c3QvZG9tL2JsdXItY29udGVudGVkaXRhYmxlLmh0bWwgPSBJTUFHRQogCisvLyBNYXkgZmFpbCBp
ZiB0aGVzZSBwbGF0Zm9ybXMgZGlmZmVyIGZyb20gTGludXguIFJlbW92ZSB0aGlzIG9yIHJlYmFz
ZWxpbmUgdGhlbSBvbmNlIHRoZSBidWcgbGFuZHMuCitCVUdXSzc2MDE1IFdJTiBNQUMgOiBmYXN0
L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLmh0bWwgPSBJ
TUFHRQorCiAvLyBOZWVkIHRvIGltcGxlbWVudCBmaWxlIG5hbWUgbG9nZ2luZy4KIEJVR1dLNzY1
NzIgOiBodHRwL3Rlc3RzL2Rvd25sb2FkID0gRkFJTAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124173</attachid>
            <date>2012-01-26 13:52:59 -0800</date>
            <delta_ts>2012-01-27 12:32:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120126165258.patch</filename>
            <type>text/plain</type>
            <size>55710</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVkNDhlMDgzYWQ4ZDgy
MDdjZGFhYzQ1MmZmNTg0YTI4OGNhZWJkMi4uOGRmZDZjMmE2YmMyNjExMTdiMzk1MDcwNmE3M2E2
MTU2MjhjMDQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAxLTIwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDUXVhZEN1bGxlclRlc3QuY3BwIGFuZCBDQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6b3BhcXVlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0JsZW5kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yRHJhd1F1YWQ6OkNDU29saWRDb2xvckRy
YXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdhYmxlVGlsZTo6b3BhcXVlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6OnNldE9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aWxlZExheWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisKIDIwMTItMDEtMjYgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmxpbmUgYmVn
aW5TY3JvbGxHZXN0dXJlL2VuZFNjcm9sbEdlc3R1cmUgaW4gaGFuZGxlV2hlZWxFdmVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkZTYxNmJhYjdjNTQ4ZTgxNjA5ZDU4Y2Q4NGIxOWJi
MGI2Y2FlMTY0Li45MmQxMjQzZThmN2UzN2UyNDVlMTUwZjc3OTNkMmMxYzExOWU3NjRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAxLTIwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRlQ2hlY2tMYXll
cjo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRlQ2hlY2tMYXllcjo6
c2V0T3BhcXVlQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRlQ2hlY2tMYXllcjo6
QmxlbmRTdGF0ZUNoZWNrTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorICAgICAg
ICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERy
YXdRdWFkOjpUZXN0RHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERyYXdRdWFkOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0UXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6
VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpjb3ZlcmFnZVZpc2li
bGVSZWN0T25UaWxlQm91bmRhcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpjb3ZlcmFnZVZpc2li
bGVSZWN0SW50ZXJzZWN0c1RpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvdmVyYWdlVmlzaWJs
ZVJlY3RJbnRlcnNlY3RzQm91bmRzKToKKyAgICAgICAgKiB0ZXN0cy9MYXllclRleHR1cmVVcGRh
dGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wMS0yNiAgSm9o
biBCYXRlcyAgPGpiYXRlc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJvbGwgY2hyb21pdW1fcmV2
IHRvIDExOTI0OApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcAppbmRleCAwZDk3ZTUyYWVkZTBmOTgwYWRhMTVkZTBhMTRhMWQyOGQ4NmExZTg4
Li4wZTlhNDUyZDhmM2IyMmE5MzYyNDFhMGQ4NWRkN2FiOGUwODFkODk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtODIsOCAr
ODIsNiBAQCB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1Vw
ZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdAogewogICAgIG1fdGV4U3ViSW1hZ2Uuc2V0
U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKIAotICAgIGJvb2wgbGF5ZXJJc09wYXF1ZSA9IG1fY2Fu
dmFzLm9wYXF1ZSgpOwotCiAgICAgbV9jYW52YXMucmVzaXplKGNvbnRlbnRSZWN0LnNpemUoKSk7
CiAgICAgLy8gQXNzdW1wdGlvbjogaWYgYSB0aWxlciBpcyB1c2luZyBib3JkZXIgdGV4ZWxzLCB0
aGVuIGl0IGlzIGJlY2F1c2UgdGhlCiAgICAgLy8gbGF5ZXIgaXMgbGlrZWx5IHRvIGJlIGZpbHRl
cmVkIG9yIHRyYW5zZm9ybWVkLiBCZWNhdXNlIG9mIGl0IG1pZ2h0IGJlCkBAIC05MSwxMSArODks
MTAgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRl
cjo6VGV4dE9wdGlvbiB0ZXh0T3B0aW9uID0KICAgICAgICAgYm9yZGVyVGV4ZWxzID8gUGxhdGZv
cm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0Zm9ybUNhbnZhczo6UGFpbnRl
cjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIGNhbnZhc1BhaW50
ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKLSAgICBjYW52YXNQYWludGVyLnNraWFDb250ZXh0
KCktPnNldFRyYWNrT3BhcXVlUmVnaW9uKCFsYXllcklzT3BhcXVlKTsKKyAgICBjYW52YXNQYWlu
dGVyLnNraWFDb250ZXh0KCktPnNldFRyYWNrT3BhcXVlUmVnaW9uKHRydWUpOwogICAgIHBhaW50
Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNT
Y2FsZSk7CiAKLSAgICBpZiAoIWxheWVySXNPcGFxdWUpCi0gICAgICAgICpyZXN1bHRpbmdPcGFx
dWVSZWN0ID0gY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5vcGFxdWVSZWdpb24oKS5hc1Jl
Y3QoKTsKKyAgICAqcmVzdWx0aW5nT3BhcXVlUmVjdCA9IGNhbnZhc1BhaW50ZXIuc2tpYUNvbnRl
eHQoKS0+b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCk7CiB9CiAKIHZvaWQgQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDE3OWZlYTZlMTJiZjEwM2M1YjA3NDM1
Y2YyNGEzYTQ4ZjhjZDkzMjMuLjA0OWZkMjQwODNmNDI3NWNlNTI2ZDYxYjg4ZDNlMDU1NTYzZWYw
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTcxLDggKzcxLDcgQEAgcHVi
bGljOgogICAgIC8vIFRoaXMgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29tcG9uZW50IG9yZGVyIGlu
IHRoZSBzYW1wbGVkIHRleGVsLgogICAgIC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRC
R1JBLCB2ZWM0LnggaXMgYmx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KICAgICB2aXJ0dWFsIFNhbXBs
ZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkg
PSAwOwotICAgIC8vIFRoZSB8cmVzdWx0aW5nT3BhcXVlUmVjdHwgZ2l2ZXMgYmFjayBhIHJlZ2lv
biBvZiB0aGUgbGF5ZXIgdGhhdCB3YXMgcGFpbnRlZCBvcGFxdWUuIElmIHRoZSBsYXllciBpcyBt
YXJrZWQgb3BhcXVlIGluIHRoZSB1cGRhdGVyLAotICAgIC8vIHRoZW4gdGhpcyByZWdpb24gc2hv
dWxkIGJlIGlnbm9yZWQgaW4gcHJlZmVyZW5jZSBmb3IgdGhlIGVudGlyZSBsYXllcidzIGFyZWEu
CisgICAgLy8gVGhlIHxyZXN1bHRpbmdPcGFxdWVSZWN0fCBnaXZlcyBiYWNrIGEgcmVnaW9uIG9m
IHRoZSBsYXllciB0aGF0IHdhcyBwYWludGVkIG9wYXF1ZS4KICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRT
aXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29u
dGVudHNTY2FsZSAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFJlY3Qq
IC8qIHJlc3VsdGluZ09wYXF1ZVJlY3QgKi8pIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDBkOTc0ZmE2M2E0
NDU3ZDllYWM3YzhiODczZjdlOTFhNGQyNjg0M2IuLmM5ZGFiNzJmMTMyZThkOWJiOTNhYjA4NTdj
MWQ3MDU1MDFkM2VjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00MSw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBw
YWludGVyKQogICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyKQotICAgICwg
bV9sYXllcklzT3BhcXVlKGZhbHNlKQogewogfQogCkBAIC01NCwxMyArNTMsMTIgQEAgdm9pZCBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgY29udGVudFIKICAgICBTa0NhbnZhcyogY2FudmFzID0gbV9waWN0dXJlLmJlZ2lu
UmVjb3JkaW5nKGNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0LmhlaWdodCgpKTsKICAg
ICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dChjYW52YXMpOwogICAgIHBsYXRm
b3JtQ29udGV4dC5zZXREZWZlcnJlZCh0cnVlKTsKLSAgICBwbGF0Zm9ybUNvbnRleHQuc2V0VHJh
Y2tPcGFxdWVSZWdpb24oIW1fbGF5ZXJJc09wYXF1ZSk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNl
dFRyYWNrT3BhcXVlUmVnaW9uKHRydWUpOwogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0Nv
bnRleHQoJnBsYXRmb3JtQ29udGV4dCk7CiAgICAgcGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRl
eHQsIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3Jk
aW5nKCk7CiAKLSAgICBpZiAoIW1fbGF5ZXJJc09wYXF1ZSkKLSAgICAgICAgKnJlc3VsdGluZ09w
YXF1ZVJlY3QgPSBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCk7CisgICAg
KnJlc3VsdGluZ09wYXF1ZVJlY3QgPSBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNS
ZWN0KCk7CiB9CiAKIHZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6ZHJh
d1BpY3R1cmUoU2tDYW52YXMqIGNhbnZhcykKQEAgLTY5LDExICs2Nyw2IEBAIHZvaWQgU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6ZHJhd1BpY3R1cmUoU2tDYW52YXMqIGNhbnZh
cykKICAgICBjYW52YXMtPmRyYXdQaWN0dXJlKG1fcGljdHVyZSk7CiB9CiAKLXZvaWQgU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQotewot
ICAgIG1fbGF5ZXJJc09wYXF1ZSA9IG9wYXF1ZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogI2VuZGlmIC8vIFVTRShTS0lBKQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAppbmRleCA3ZmNjNjA1OWY5MGU3ZDlkMWMzMDFiZjJhNzBmNTE1MmE0OTI3YjAwLi5l
NzdlZTMwOTQ2M2EwNGI3NGEwYTkzOWE2MjE3MmRmYjljYTk1MjZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC01NCwxMyAr
NTQsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3Jk
ZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJl
Y3QpOwogICAgIHZvaWQgZHJhd1BpY3R1cmUoU2tDYW52YXMqKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBzZXRPcGFxdWUoYm9vbCk7Ci0KIHByaXZhdGU6CiAgICAgLy8gUmVjb3JkaW5nIGNhbnZhcy4K
ICAgICBTa1BpY3R1cmUgbV9waWN0dXJlOwotICAgIC8vIFRydWUgd2hlbiBpdCBpcyBrbm93biB0
aGF0IGFsbCBvdXRwdXQgcGl4ZWxzIHdpbGwgYmUgb3BhcXVlLgotICAgIGJvb2wgbV9sYXllcklz
T3BhcXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggNjM4NWQ2ODkwODE2MGEzNWNiZDc5NGE3MDM5YmUxZTNkMGZiNTcy
Ni4uZGRlZDU1NGIzMjExOTNiNDFjZjg4NDk3NTIzMzljYzBhZTlhMDI0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIElu
dFJlY3QgbV9kaXJ0eVJlY3Q7CiAgICAgSW50UmVjdCBtX3VwZGF0ZVJlY3Q7CisgICAgSW50UmVj
dCBtX29wYXF1ZVJlY3Q7CiBwcml2YXRlOgogICAgIE93blB0cjxMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlPiBtX3RleHR1cmU7CiB9OwpAQCAtMjc2LDcgKzI3Nyw3IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICAg
ICAgaWYgKHRpbGUtPmlzRGlydHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IHRpbGVkTGF5ZXItPnN5bmNUZXh0dXJlSWQoaSwgaiwgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+
dGV4dHVyZUlkKCkpOworICAgICAgICB0aWxlZExheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwg
aiwgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+dGV4dHVyZUlkKCksIHRpbGUtPm1fb3BhcXVlUmVj
dCk7CiAgICAgfQogfQogCkBAIC00MjEsOCArNDIyLDggQEAgdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGlu
dAogICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBH
cmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAogICAgIC8vIHNvIHdlIGdy
YWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGls
IHRoZSBwYWludCBjb21wbGV0ZXMuCiAgICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHBy
b3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKLSAgICBJbnRSZWN0IG9wYXF1ZVJlY3Q7IC8vIEZJ
WE1FOiB1bnVzZWQuIHJlbW92ZSB0aGlzIGFuZCBzdG9yZSBpbiB0aGUgbGF5ZXIgdG8gcGFzcyB0
byBpbXBsIGZvciBkcmF3IGN1bGxpbmcKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9V
cGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRl
clRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZvcGFxdWVSZWN0KTsKKyAgICBJbnRSZWN0IHBh
aW50ZWRPcGFxdWVSZWN0OworICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0ZSht
X3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxz
KCksIGNvbnRlbnRzU2NhbGUoKSwgJnBhaW50ZWRPcGFxdWVSZWN0KTsKICAgICBmb3IgKGludCBq
ID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBp
IDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxl
QXQoaSwgaik7CkBAIC00MzEsMTIgKzQzMiwyMiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAg
ICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAorICAgICAg
ICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaik7CisKKyAg
ICAgICAgICAgIC8vIFNhdmUgd2hhdCB3YXMgcGFpbnRlZCBvcGFxdWUgaW4gdGhlIHRpbGUuIElm
IGV2ZXJ5dGhpbmcgcGFpbnRlZCBpbiB0aGUgdGlsZSB3YXMgb3BhcXVlLCBhbmQgdGhlIGFyZWEg
aXMgYSBzdWJzZXQgb2YgYW4KKyAgICAgICAgICAgIC8vIGFscmVhZHkgb3BhcXVlIGFyZWEsIGtl
ZXAgdGhlIG9sZCBhcmVhLgorICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRlZFJlY3QgPSBp
bnRlcnNlY3Rpb24odGlsZVJlY3QsIG1fcGFpbnRSZWN0KTsKKyAgICAgICAgICAgIEludFJlY3Qg
dGlsZVBhaW50ZWRPcGFxdWVSZWN0ID0gaW50ZXJzZWN0aW9uKHRpbGVSZWN0LCBwYWludGVkT3Bh
cXVlUmVjdCk7CisgICAgICAgICAgICBpZiAodGlsZVBhaW50ZWRPcGFxdWVSZWN0ICE9IHRpbGVQ
YWludGVkUmVjdCB8fCAhdGlsZS0+bV9vcGFxdWVSZWN0LmNvbnRhaW5zKHRpbGVQYWludGVkT3Bh
cXVlUmVjdCkpCisgICAgICAgICAgICAgICAgdGlsZS0+bV9vcGFxdWVSZWN0ID0gdGlsZVBhaW50
ZWRPcGFxdWVSZWN0OworCiAgICAgICAgICAgICAvLyBVc2UgbV91cGRhdGVSZWN0IGFzIGNvcHlB
bmRDbGVhckRpcnR5IGFib3ZlIG1vdmVkIHRoZSBleGlzdGluZyBkaXJ0eSByZWN0IHRvIG1fdXBk
YXRlUmVjdC4KICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCA9IHRpbGUtPm1f
dXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSBt
X3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKKyAgICAgICAgICAgIEludFJlY3QgZml4ZWRTaXplVGls
ZVJlY3RXaXRoQm9yZGVycyA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAg
SW50UmVjdCBzb3VyY2VSZWN0ID0gZml4ZWRTaXplVGlsZVJlY3RXaXRoQm9yZGVyczsKICAgICAg
ICAgICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CiAgICAgICAgICAgICAvLyBQ
YWludCByZWN0IG5vdCBndWFyYW50ZWVkIHRvIGxpbmUgdXAgb24gdGlsZSBib3VuZGFyaWVzLCBz
bwogICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgc291cmNlUmVjdCBkb2Vzbid0IGV4dGVu
ZCBvdXRzaWRlIG9mIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCmluZGV4IGFjYzdjMDI4NjZjYzg5NTkz
MTUxOTZiM2I4MzhkMDg4NmI1MWM2ZGUuLjU2NTYzNTE4OGM2MjUxZDQzMzIwZjRiODVkODllYjFk
NGZiZjIyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAgLTUxLDkgKzUxLDE2IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1
YWRTdGF0ZS0+bGF5ZXJSZWN0KCk7IH0KICAgICBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5jbGlwUmVjdCgpOyB9CiAgICAgZmxvYXQg
b3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5vcGFjaXR5KCk7IH0K
LSAgICAvLyBGb3IgdGhlIHB1cnBvc2VzIG9mIGN1bGxpbmcsIGFyZSB0aGUgY29udGVudHMgb2Yg
dGhpcyBxdWFkIG9wYXF1ZT8KLSAgICBib29sIGRyYXdzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4g
bV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkgJiYgbV9xdWFkT3BhcXVlICYmIG9wYWNpdHko
KSA9PSAxOyB9Ci0gICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gIW1fc2hh
cmVkUXVhZFN0YXRlLT5pc09wYXF1ZSgpIHx8IG1fbmVlZHNCbGVuZGluZyB8fCBvcGFjaXR5KCkg
IT0gMTsgfQorICAgIC8vIEZvciB0aGUgcHVycG9zZXMgb2YgY3VsbGluZywgd2hhdCBwYXJ0IG9m
IHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQgYXJlIG9wYXF1ZT8KKyAgICBJbnRSZWN0IG9wYXF1
ZVJlY3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG9wYWNpdHkoKSAhPSAxKQorICAgICAg
ICAgICAgcmV0dXJuIEludFJlY3QoKTsKKyAgICAgICAgaWYgKG1fc2hhcmVkUXVhZFN0YXRlLT5p
c09wYXF1ZSgpICYmIG1fcXVhZE9wYXF1ZSkKKyAgICAgICAgICAgIHJldHVybiBtX3F1YWRSZWN0
OworICAgICAgICByZXR1cm4gbV9vcGFxdWVSZWN0OworICAgIH0KKyAgICBib29sIG5lZWRzQmxl
bmRpbmcoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQmxlbmRpbmcgfHwgb3BhcXVlUmVjdCgpICE9
IG1fcXVhZFJlY3Q7IH0KICAgICBib29sIGlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgp
OyB9CiAKICAgICBlbnVtIE1hdGVyaWFsIHsKQEAgLTkwLDYgKzk3LDEwIEBAIHByb3RlY3RlZDoK
ICAgICAvLyB2YXJpYWJsZXMuCiAgICAgYm9vbCBtX3F1YWRPcGFxdWU7CiAgICAgYm9vbCBtX25l
ZWRzQmxlbmRpbmc7CisKKyAgICAvLyBCZSBkZWZhdWx0LCB0aGlzIHJlY3QgaXMgZW1wdHkuIEl0
IGlzIHVzZWQgd2hlbiB0aGUgc2hhcmVkIHF1YWQgc3RhdGUgYW5kIGFib3ZlCisgICAgLy8gdmFy
aWFibGVzIGRldGVybWluZSB0aGF0IHRoZSBxdWFkIGlzIG5vdCBmdWxseSBvcGFxdWUgYnV0IG1h
eSBiZSBwYXJ0aWFsbHkgb3BhcXVlLgorICAgIEludFJlY3QgbV9vcGFxdWVSZWN0OwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NRdWFkQ3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKaW5kZXggZDMwZmZjODQwYzk3ODliZjc0ODE2MTBm
ODYxNDhlZjY1ZDkzNjczZi4uNzcxMDAzMmUwNWM2YWZhYTQzMTc5ZDlhNzkyOWEwODFmM2UwZmIw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NRdWFkQ3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC05MSw4ICs5MSw4IEBAIHZvaWQgQ0NR
dWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKIAogICAg
ICAgICBib29sIGtlZXBRdWFkID0gIXJlZ2lvbkNvbnRhaW5zUmVjdChvcGFxdWVDb3ZlcmFnZVRo
dXNGYXIsIHF1YWRSZWN0KTsKIAotICAgICAgICBpZiAoa2VlcFF1YWQgJiYgZHJhd1F1YWQtPmRy
YXdzT3BhcXVlKCkgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkgewot
ICAgICAgICAgICAgSW50UmVjdCBvcGFxdWVSZWN0ID0gZW5jbG9zZWRJbnRSZWN0KGRyYXdRdWFk
LT5xdWFkVHJhbnNmb3JtKCkubWFwUmVjdChGbG9hdFJlY3QoZHJhd1F1YWQtPnF1YWRSZWN0KCkp
KSk7CisgICAgICAgIGlmIChrZWVwUXVhZCAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVk
SW50UmVjdCgpKSB7CisgICAgICAgICAgICBJbnRSZWN0IG9wYXF1ZVJlY3QgPSBlbmNsb3NlZElu
dFJlY3QoZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBSZWN0KEZsb2F0UmVjdChkcmF3UXVh
ZC0+b3BhcXVlUmVjdCgpKSkpOwogICAgICAgICAgICAgb3BhcXVlQ292ZXJhZ2VUaHVzRmFyLnVu
aXRlKG9wYXF1ZVJlY3QpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xv
ckRyYXdRdWFkLmNwcAppbmRleCBkMWM3MjlhNDE1N2RkMjIxNzJiNmM4MzFkNzcwMGNjNDIwYjRl
ZTZhLi43ZjZmOTgxMTNkNmY4YjlhNzI3OGI5Njc4MGY2NGJiZjk4NDU2MTUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29s
b3JEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwCkBAIC0zOCw4ICszOCwxMCBAQCBDQ1Nv
bGlkQ29sb3JEcmF3UXVhZDo6Q0NTb2xpZENvbG9yRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHNoYXJlZFF1YWRTdAogICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIEND
RHJhd1F1YWQ6OlNvbGlkQ29sb3IsIHF1YWRSZWN0KQogICAgICwgbV9jb2xvcihjb2xvcikKIHsK
LSAgICBpZiAobV9jb2xvci5hbHBoYSgpICE9IDEpCisgICAgaWYgKG1fY29sb3IuaGFzQWxwaGEo
KSkKICAgICAgICAgbV9xdWFkT3BhcXVlID0gZmFsc2U7CisgICAgZWxzZQorICAgICAgICBtX29w
YXF1ZVJlY3QgPSBxdWFkUmVjdDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3Bw
CmluZGV4IGRmODMwNTA4YTJjODJjYTI3OGIzNWNjYzAwNWIzZDA3OWExYzdmYzYuLmIzNWI2ZjY5
ZjNjMjAxNmY0ZTIzODc3M2YwZGM5NGM2OTU2YjAzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3
UXVhZC5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBh
c3NPd25QdHI8Q0NUaWxlRHJhd1F1YWQ+IENDVGlsZURyYXdRdWFkOjpjcmVhdGUoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3Qs
IFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNl
dCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9v
bCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wg
cmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQorUGFzc093blB0cjxDQ1RpbGVEcmF3UXVh
ZD4gQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVl
UmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJl
T2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVy
LCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwg
Ym9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDQ1RpbGVEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCB0ZXh0dXJl
SWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29u
dGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkp
OworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaWxlRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgb3BhcXVlUmVjdCwgdGV4dHVyZUlkLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJl
U2l6ZSwgdGV4dHVyZUZpbHRlciwgc3dpenpsZUNvbnRlbnRzLCBsZWZ0RWRnZUFBLCB0b3BFZGdl
QUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKIH0KIAotQ0NUaWxlRHJhd1F1YWQ6OkND
VGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNv
bnN0IEludFJlY3QmIHF1YWRSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3Qg
SW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNE
aW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEs
IGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKK0ND
VGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYgb3Bh
cXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0
dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmls
dGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VB
QSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCiAgICAgOiBDQ0RyYXdRdWFk
KHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBxdWFkUmVjdCkKICAg
ICAsIG1fdGV4dHVyZUlkKHRleHR1cmVJZCkKICAgICAsIG1fdGV4dHVyZU9mZnNldCh0ZXh0dXJl
T2Zmc2V0KQpAQCAtNDgsNiArNDgsNyBAQCBDQ1RpbGVEcmF3UXVhZDo6Q0NUaWxlRHJhd1F1YWQo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSQogewogICAg
IGlmIChpc0FudGlhbGlhc2VkKCkpCiAgICAgICAgIG1fbmVlZHNCbGVuZGluZyA9IHRydWU7Cisg
ICAgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVjdDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdR
dWFkLmgKaW5kZXggMTJlNTNkYmQyYThmNWQxZmIzZDMzMzE5YjJjMDMxMWVjNTNmNWNhOC4uMzM1
MDFhODA2Y2ZhZmY5NjBmMjRjNmRkNmYxYzc4MjBhMTU3ODhjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEND
VGlsZURyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKENDVGlsZURyYXdRdWFkKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Rp
bGVEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVj
dCYgcXVhZFJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYg
dGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVy
ZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BF
ZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKKyAgICBzdGF0aWMg
UGFzc093blB0cjxDQ1RpbGVEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwg
Y29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBz
d2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmln
aHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKIAogICAgIFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KICAgICBJbnRQb2ludCB0ZXh0
dXJlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlT2Zmc2V0OyB9CkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQW50aWFsaWFzZWQoKSBjb25zdCB7IHJldHVybiBs
ZWZ0RWRnZUFBKCkgfHwgdG9wRWRnZUFBKCkgfHwgcmlnaHRFZGdlQUEoKSB8fCBib3R0b21FZGdl
QUEoKTsgfQogCiBwcml2YXRlOgotICAgIENDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVy
ZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVy
ZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wg
bGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9t
RWRnZUFBKTsKKyAgICBDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9y
bTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0
IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenps
ZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRn
ZUFBLCBib29sIGJvdHRvbUVkZ2VBQSk7CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVy
ZUlkOwogICAgIEludFBvaW50IG1fdGV4dHVyZU9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5jcHAKaW5kZXggMzQ0ZDc0MjQ1ZjhlYzFmNWZkYjZjMmNiMjFkY2RiOTFjYWI0OTE4
Mi4uMWNkNDc5OTNlYjkwY2ZhZTYyYTIwMWVjMjJkMDE0YTAzNmNlOTI0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTUxLDggKzUxLDEzIEBAIHB1YmxpYzoKIAogICAg
IFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7
IH0KICAgICB2b2lkIHNldFRleHR1cmVJZChQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCkgeyBt
X3RleHR1cmVJZCA9IHRleHR1cmVJZDsgfQorCisgICAgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhcXVlUmVjdDsgfQorICAgIHZvaWQgc2V0T3BhcXVlUmVj
dChjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KSB7IG1fb3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7
IH0KKwogcHJpdmF0ZToKICAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZUlkOworICAgIElu
dFJlY3QgbV9vcGFxdWVSZWN0OwogfTsKIAogQ0NUaWxlZExheWVySW1wbDo6Q0NUaWxlZExheWVy
SW1wbChpbnQgaWQpCkBAIC0xNDgsNiArMTUzLDkgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAg
SW50UmVjdCB0aWxlT3BhcXVlUmVjdCA9IHRpbGUtPm9wYXF1ZVJlY3QoKTsKKyAgICAgICAgICAg
IHRpbGVPcGFxdWVSZWN0LmludGVyc2VjdChsYXllclJlY3QpOworCiAgICAgICAgICAgICAvLyBL
ZWVwIHRyYWNrIG9mIGhvdyB0aGUgdG9wIGxlZnQgaGFzIG1vdmVkLCBzbyB0aGUgdGV4dHVyZSBj
YW4gYmUKICAgICAgICAgICAgIC8vIG9mZnNldCB0aGUgc2FtZSBhbW91bnQuCiAgICAgICAgICAg
ICBJbnRTaXplIGRpc3BsYXlPZmZzZXQgPSB0aWxlUmVjdC5taW5YTWluWUNvcm5lcigpIC0gZGlz
cGxheVJlY3QubWluWE1pbllDb3JuZXIoKTsKQEAgLTE2NCw3ICsxNzIsNyBAQCB2b2lkIENDVGls
ZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZQogICAgICAgICAgICAgYm9vbCBib3R0b21FZGdlQUEgPSBqID09IG1fdGls
ZXItPm51bVRpbGVzWSgpIC0gMSAmJiB1c2VBQTsKIAogICAgICAgICAgICAgY29uc3QgR0MzRGlu
dCB0ZXh0dXJlRmlsdGVyID0gbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0Nv
bnRleHQzRDo6TElORUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0gICAgICAgICAg
ICBxdWFkTGlzdC5hcHBlbmQoQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUs
IHRpbGVSZWN0LCB0aWxlLT50ZXh0dXJlSWQoKSwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUs
IHRleHR1cmVGaWx0ZXIsIGNvbnRlbnRzU3dpenpsZWQoKSwgbGVmdEVkZ2VBQSwgdG9wRWRnZUFB
LCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7CisgICAgICAgICAgICBxdWFkTGlzdC5hcHBl
bmQoQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0aWxl
T3BhcXVlUmVjdCwgdGlsZS0+dGV4dHVyZUlkKCksIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXpl
LCB0ZXh0dXJlRmlsdGVyLCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEsIHRvcEVkZ2VB
QSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogCiAgICAgICAgICAgICBpZiAoaGFzRGVi
dWdCb3JkZXJzKCkpIHsKICAgICAgICAgICAgICAgICBDb2xvciBjb2xvcihkZWJ1Z0JvcmRlckNv
bG9yKCkucmVkKCksIGRlYnVnQm9yZGVyQ29sb3IoKS5ncmVlbigpLCBkZWJ1Z0JvcmRlckNvbG9y
KCkuYmx1ZSgpLCBkZWJ1Z1RpbGVCb3JkZXJBbHBoYSk7CkBAIC0xODMsMTQgKzE5MSwxNSBAQCB2
b2lkIENDVGlsZWRMYXllckltcGw6OnNldFRpbGluZ0RhdGEoY29uc3QgQ0NMYXllclRpbGluZ0Rh
dGEmIHRpbGVyKQogICAgICptX3RpbGVyID0gdGlsZXI7CiB9CiAKLXZvaWQgQ0NUaWxlZExheWVy
SW1wbDo6c3luY1RleHR1cmVJZChpbnQgaSwgaW50IGosIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVy
ZUlkKQordm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpwdXNoVGlsZVByb3BlcnRpZXMoaW50IGksIGlu
dCBqLCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVj
dCkKIHsKICAgICBEcmF3YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAgICAgaWYgKCF0
aWxlKQogICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKICAgICB0aWxlLT5zZXRUZXh0
dXJlSWQodGV4dHVyZUlkKTsKKyAgICB0aWxlLT5zZXRPcGFxdWVSZWN0KG9wYXF1ZVJlY3QpOwog
fQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggNDc4YjAz
NDAyMzQ1MDgxOWJiY2VhMGE4ZGE1YWQzMjE1NmY1NGJkMi4uN2FkNzE1OTliMjEzNjU4NThhMWM1
YTVmN2E5Y2Y0MjQxZWEwNjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNraXBzRHJhdyhib29sIHNraXBz
RHJhdykgeyBtX3NraXBzRHJhdyA9IHNraXBzRHJhdzsgfQogICAgIHZvaWQgc2V0VGlsaW5nRGF0
YShjb25zdCBDQ0xheWVyVGlsaW5nRGF0YSYgdGlsZXIpOwotICAgIHZvaWQgc3luY1RleHR1cmVJ
ZChpbnQsIGludCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpOworICAgIHZvaWQgcHVzaFRp
bGVQcm9wZXJ0aWVzKGludCwgaW50LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3Qg
SW50UmVjdCYgb3BhcXVlUmVjdCk7CiAKICAgICB2b2lkIHNldENvbnRlbnRzU3dpenpsZWQoYm9v
bCBjb250ZW50c1N3aXp6bGVkKSB7IG1fY29udGVudHNTd2l6emxlZCA9IGNvbnRlbnRzU3dpenps
ZWQ7IH0KICAgICBib29sIGNvbnRlbnRzU3dpenpsZWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
bnRzU3dpenpsZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggODY4M2I4NGIwM2NhMzZmZmNkODRj
MjVkYjYxOTU0ZjZlMjY2NGRjMi4uZjU5ODkzZGU5MDY0MThmOGNiZDc1NzQwYWUyOTM5ZTIzY2My
MzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTMwNyw4ICszMDcsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKQogICAgIHsKICAgICAgICAgbV9xdWFkc0Fw
cGVuZGVkID0gdHJ1ZTsKLSAgICAgICAgCi0gICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0
QmxlbmRpbmdEcmF3UXVhZCA9IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBJbnRSZWN0KDUsIDUsIDUsIDUpLCBDb2xvcjo6d2hpdGUpOworCisgICAgICAgIENv
bG9yIGNvbG9yID0gbV9vcGFxdWVDb2xvciA/IENvbG9yOjp3aGl0ZSA6IENvbG9yKDAsIDAsIDAs
IDApOworICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gdGVzdEJsZW5kaW5nRHJhd1F1YWQgPSBD
Q1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdCg1LCA1
LCA1LCA1KSwgY29sb3IpOwogICAgICAgICBFWFBFQ1RfRVEobV9ibGVuZCwgdGVzdEJsZW5kaW5n
RHJhd1F1YWQtPm5lZWRzQmxlbmRpbmcoKSk7CiAgICAgICAgIEVYUEVDVF9FUShtX2hhc1JlbmRl
clN1cmZhY2UsICEhcmVuZGVyU3VyZmFjZSgpKTsKICAgICB9CkBAIC0zMjIsMTIgKzMyMywxNSBA
QCBwdWJsaWM6CiAKICAgICBib29sIHF1YWRzQXBwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3F1
YWRzQXBwZW5kZWQ7IH0KIAorICAgIHZvaWQgc2V0T3BhcXVlQ29sb3IoYm9vbCBvcGFxdWVDb2xv
cikgeyBtX29wYXF1ZUNvbG9yID0gb3BhcXVlQ29sb3I7IH0KKwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBCbGVuZFN0YXRlQ2hlY2tMYXllcihpbnQgaWQpCiAgICAgICAgIDogQ0NMYXllckltcGwo
aWQpCiAgICAgICAgICwgbV9ibGVuZChmYWxzZSkKICAgICAgICAgLCBtX2hhc1JlbmRlclN1cmZh
Y2UoZmFsc2UpCiAgICAgICAgICwgbV9xdWFkc0FwcGVuZGVkKGZhbHNlKQorICAgICAgICAsIG1f
b3BhcXVlQ29sb3IodHJ1ZSkKICAgICB7CiAgICAgICAgIHNldEFuY2hvclBvaW50KEZsb2F0UG9p
bnQoMCwgMCkpOwogICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKQEAgLTMzNyw2
ICszNDEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ibGVuZDsKICAgICBib29sIG1faGFzUmVu
ZGVyU3VyZmFjZTsKICAgICBib29sIG1fcXVhZHNBcHBlbmRlZDsKKyAgICBib29sIG1fb3BhcXVl
Q29sb3I7CiB9OwogCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzU3ODMKQEAgLTM1OCwxOCArMzYzLDM2IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAogICAgIC8vIE9wYXF1ZSBs
YXllciwgZHJhd24gd2l0aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVl
KTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+c2V0RXhw
ZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7Cisg
ICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworCisgICAgLy8gTGF5ZXIg
d2l0aCB0cmFuc2x1Y2VudCBjb250ZW50LCBidXQgc29saWQgY29sb3IgaXMgb3BhcXVlLCBzbyBk
cmF3biB3aXRob3V0IGJsZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3BhcXVlKGZhbHNlKTsKKyAg
ICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRp
b24oZmFsc2UsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgRVhQ
RUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOwogCi0gICAgLy8gTGF5ZXIgd2l0aCB0
cmFuc2x1Y2VudCBjb250ZW50LCBkcmF3biB3aXRoIGJsZW5kaW5nLgorICAgIC8vIExheWVyIHdp
dGggdHJhbnNsdWNlbnQgY29udGVudCBhbmQgcGFpbnRpbmcsIHNvIGRyYXduIHdpdGggYmxlbmRp
bmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVl
Q29sb3IoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwog
ICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1
YWRzQXBwZW5kZWQoKSk7CiAKICAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNpdHks
IGRyYXduIHdpdGggYmxlbmRpbmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAg
bGF5ZXIxLT5zZXRPcGFxdWVDb2xvcih0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41
KTsKKyAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKKyAgICBtX2hvc3RJ
bXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVk
KCkpOworCisgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBvcGFjaXR5IGFuZCBwYWludGlu
ZywgZHJhd24gd2l0aCBibGVuZGluZy4KKyAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAg
ICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKGZhbHNlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHko
MC41KTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hv
c3RJbXBsLT5kcmF3TGF5ZXJzKCk7CkBAIC0zODAsOSArNDAzLDExIEBAIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKIAog
ICAgIC8vIDIgb3BhcXVlIGxheWVycywgZHJhd24gd2l0aG91dCBibGVuZGluZy4KICAgICBsYXll
cjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOwog
ICAgIGxheWVyMS0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZh
bHNlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIyLT5z
ZXRPcGFxdWVDb2xvcih0cnVlKTsKICAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7CiAgICAgbGF5
ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdM
YXllcnMoKTsKQEAgLTM5MiwxOCArNDE3LDMwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVycykKICAgICAvLyBQYXJlbnQg
bGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBjb250ZW50LCBkcmF3biB3aXRoIGJsZW5kaW5nLgogICAg
IC8vIENoaWxkIGxheWVyIHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxlbmRp
bmcuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVl
Q29sb3IoZmFsc2UpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwog
ICAgIGxheWVyMi0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBs
LT5kcmF3TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkp
OwogICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKIAorICAgIC8vIFBh
cmVudCBsYXllciB3aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQgYnV0IG9wYXF1ZSBwYWludGluZywg
ZHJhd24gd2l0aG91dCBibGVuZGluZy4KKyAgICAvLyBDaGlsZCBsYXllciB3aXRoIG9wYXF1ZSBj
b250ZW50LCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3BhcXVlKGZh
bHNlKTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+c2V0
RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKKyAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZh
bHNlLCBmYWxzZSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9U
UlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1
YWRzQXBwZW5kZWQoKSk7CisKICAgICAvLyBQYXJlbnQgbGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBv
cGFjaXR5IGFuZCBvcGFxdWUgY29udGVudC4gU2luY2UgaXQgaGFzIGEKICAgICAvLyBkcmF3aW5n
IGNoaWxkLCBpdCdzIGRyYXduIHRvIGEgcmVuZGVyIHN1cmZhY2Ugd2hpY2ggY2FycmllcyB0aGUg
b3BhY2l0eSwKICAgICAvLyBzbyBpdCdzIGl0c2VsZiBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgog
ICAgIC8vIENoaWxkIGxheWVyIHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxl
bmRpbmcgKHBhcmVudCBzdXJmYWNlCiAgICAgLy8gY2FycmllcyB0aGUgaW5oZXJpdGVkIG9wYWNp
dHkpLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVl
Q29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIxLT5z
ZXRFeHBlY3RhdGlvbihmYWxzZSwgdHJ1ZSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihm
YWxzZSwgZmFsc2UpOwpAQCAtNDE0LDkgKzQ1MSwxMSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgLy8gRHJh
dyBhZ2FpbiwgYnV0IHdpdGggY2hpbGQgbm9uLW9wYXF1ZSwgdG8gbWFrZSBzdXJlCiAgICAgLy8g
bGF5ZXIxIG5vdCBjdWxsZWQuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5
ZXIxLT5zZXRPcGFxdWVDb2xvcih0cnVlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMSk7CiAg
ICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIGxheWVyMi0+c2V0
T3BhcXVlKHRydWUpOworICAgIGxheWVyMi0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAgICAgbGF5
ZXIyLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbih0cnVlLCBm
YWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwpAQCAtNDI4LDExICs0NjcsMjQg
QEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5n
T3BhcXVlTGF5ZXJzKQogICAgIGxheWVyMS0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNl
dEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFxdWUoZmFsc2Up
OworICAgIGxheWVyMi0+c2V0T3BhcXVlQ29sb3IoZmFsc2UpOwogICAgIGxheWVyMi0+c2V0T3Bh
Y2l0eSgxKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBt
X2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0Fw
cGVuZGVkKCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKKwor
ICAgIC8vIEFuZCB3aGVuIHRoZSBsYXllciBzYXlzIGl0cyBub3Qgb3BhcXVlIGJ1dCBpcyBwYWlu
dGVkIG9wYXF1ZSwgaXQgaXMgbm90IGJsZW5kZWQuCisgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1
ZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDEpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRp
b24oZmFsc2UsIGZhbHNlKTsKKyAgICBsYXllcjItPnNldE9wYXF1ZShmYWxzZSk7CisgICAgbGF5
ZXIyLT5zZXRPcGFxdWVDb2xvcih0cnVlKTsKKyAgICBsYXllcjItPnNldE9wYWNpdHkoMSk7Cisg
ICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIG1faG9zdEltcGwt
PmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7
CisgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOwogfQogCiBjbGFzcyBS
ZXNoYXBlVHJhY2tlckNvbnRleHQ6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Qgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAK
aW5kZXggZWQxNWU2YzEwZTFmZTQ2MmM5NDk2ODU2ZGIzOTM0NTY5ZmFiODgxYy4uNWVjYmI1OWM4
ZTAzYmZiZjE2NjMwZDAyZDg5MTk3MTIxMGMzODhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC0zOCwzNSArMzgsMzYgQEAg
Y2xhc3MgQ0NRdWFkQ3VsbGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIAogY2xhc3Mg
VGVzdERyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewogcHVibGljOgotICAgIFRlc3REcmF3
UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0IElu
dFJlY3QmIHJlY3QpCisgICAgVGVzdERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
dGF0ZSwgTWF0ZXJpYWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYgb3Bh
cXVlUmVjdCkKICAgICA6IENDRHJhd1F1YWQoc3RhdGUsIG0sIHJlY3QpCiAgICAgeworICAgICAg
ICBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzT3du
UHRyPFRlc3REcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwg
TWF0ZXJpYWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxU
ZXN0RHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVy
aWFsIG0sIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwgbSwg
cmVjdCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwg
bSwgcmVjdCwgb3BhcXVlUmVjdCkpOwogICAgIH0KIH07CiAKLXZvaWQgc2V0UXVhZHMoQ0NTaGFy
ZWRRdWFkU3RhdGUqIHJvb3RTdGF0ZSwgQ0NTaGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIEND
UXVhZExpc3QmIHF1YWRMaXN0KQordm9pZCBzZXRRdWFkcyhDQ1NoYXJlZFF1YWRTdGF0ZSogcm9v
dFN0YXRlLCBDQ1NoYXJlZFF1YWRTdGF0ZSogY2hpbGRTdGF0ZSwgQ0NRdWFkTGlzdCYgcXVhZExp
c3QsIGNvbnN0IEludFJlY3QmIGNoaWxkT3BhcXVlUmVjdCA9IEludFJlY3QoKSkKIHsKICAgICBx
dWFkTGlzdC5jbGVhcigpOwogCi0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3Jl
YXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50
KCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1
YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJ
bnRQb2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBl
bmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRl
bnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAg
cXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVh
ZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAx
MDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3Rh
dGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCks
IEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6
OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQ
b2ludCgyMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVu
ZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVu
dCwgSW50UmVjdChJbnRQb2ludCgwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBx
dWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFk
OjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAyMDApLCBJbnRTaXplKDEwMCwg
MTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0
YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAyMDAp
LCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLQotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1
YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3Qo
SW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRl
c3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwg
SW50UmVjdChJbnRQb2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFk
TGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDAp
KSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRl
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJ
bnRTaXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpj
cmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9p
bnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlz
dC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxl
ZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBj
aGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVh
dGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQo
MjAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFk
TGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpU
aWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkp
LCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpj
cmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9p
bnQoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAg
IHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1
YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEwMCksIEludFNpemUoMTAw
LCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3
UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0
KEludFBvaW50KDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7
CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NE
cmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMjAwKSwgSW50U2l6
ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVz
dERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIElu
dFJlY3QoSW50UG9pbnQoMjAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVl
UmVjdCkpOworCisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxk
U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRT
aXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChU
ZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQs
IEludFJlY3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1
ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRT
dGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCks
IEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBw
ZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29u
dGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hp
bGRPcGFxdWVSZWN0KSk7CiB9CiAKICNkZWZpbmUgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNU
X1FVQURTICAgICAgICAgICAgICAgXApAQCAtMTQ2LDYgKzE0Nyw1NCBAQCBURVNUKENDUXVhZEN1
bGxlclRlc3QsIHZlcmlmeUN1bGxDaGlsZExpbmVzVXBCb3R0b21SaWdodCkKICAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCA5dSk7CiB9CiAKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVy
aWZ5Q3VsbFN1YlJlZ2lvbikKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVB
RFMKKworICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOworCisgICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRl
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0
LCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBj
aGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOwor
ICAgIEludFJlY3QgY2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lk
dGgoKSAvIDQsIGNoaWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJl
Y3Qud2lkdGgoKSAvIDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgc2V0UXVhZHMo
cm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVS
ZWN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1
bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlz
dC5zaXplKCksIDEydSk7Cit9CisKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1
YlJlZ2lvbjIpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCisKKyAg
ICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDEwKTsKKworICAgIE93blB0cjxDQ1NoYXJl
ZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVj
dCgpLCAxLjAsIHRydWUpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0
ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNlKTsKKyAgICBJbnRS
ZWN0IGNoaWxkT3BhcXVlUmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0
LCBjaGlsZFJlY3QueSgpICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRSZWN0LndpZHRo
KCkgLyAyLCBjaGlsZFJlY3QuaGVpZ2h0KCkgKiAzIC8gNCk7CisKKyAgICBzZXRRdWFkcyhyb290
U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3Qp
OworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CisgICAgQ0NRdWFkQ3VsbGVy
OjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNp
emUoKSwgMTJ1KTsKK30KKworVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVn
aW9uQ2hlY2tPdmVyY3VsbCkKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVB
RFMKKworICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNDkpOworCisgICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRl
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0
LCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBj
aGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9ybSwgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFsc2UpOwor
ICAgIEludFJlY3QgY2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lk
dGgoKSAvIDQsIGNoaWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJl
Y3Qud2lkdGgoKSAvIDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOworCisgICAgc2V0UXVhZHMo
cm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVS
ZWN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1
bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlz
dC5zaXplKCksIDEzdSk7Cit9CisKIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhp
c0FsaWduZWRRdWFkc0RvbnRPY2NsdWRlKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVf
VEVTVF9RVUFEUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rp
bGVkTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGls
ZWRMYXllckltcGxUZXN0LmNwcAppbmRleCAwMmZhNzM0NjQyYTYxYWQ5ZGEzN2NkZDE0YjAxZmZj
YmYzZTdlOWVlLi5kNTVjMGJjMTY0NGUyYTg5MDc0ZjJiODlmNjFlZGYyMjBmNzg2ZmMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxU
ZXN0LmNwcApAQCAtNDcsMTEgKzQ3LDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPENDVGlsZWRMYXll
ckltcGw+IGNyZWF0ZUxheWVyKGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBjb25zdCBJCiAgICAg
bGF5ZXItPnNldFRpbGluZ0RhdGEoKnRpbGVyKTsKICAgICBsYXllci0+c2V0U2tpcHNEcmF3KGZh
bHNlKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCks
IGxheWVyU2l6ZSkpOworICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKIAogICAgIGludCB0
ZXh0dXJlSWQgPSAxOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGlsZXItPm51bVRpbGVzWCgp
OyArK2kpCiAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdGlsZXItPm51bVRpbGVzWSgpOyAr
K2opCi0gICAgICAgICAgICBsYXllci0+c3luY1RleHR1cmVJZChpLCBqLCBzdGF0aWNfY2FzdDxQ
bGF0Zm9ybTNET2JqZWN0Pih0ZXh0dXJlSWQrKykpOworICAgICAgICAgICAgbGF5ZXItPnB1c2hU
aWxlUHJvcGVydGllcyhpLCBqLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybTNET2JqZWN0Pih0ZXh0dXJl
SWQrKyksIEludFJlY3QoMCwgMCwgMSwgMSkpOwogCiAgICAgcmV0dXJuIGxheWVyLnJlbGVhc2Uo
KTsKIH0KQEAgLTEzNSw3ICsxMzYsNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVj
a2VyYm9hcmRpbmcpCiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRpbGVzWDsgKytpKQog
ICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bVRpbGVzWTsgKytqKQotICAgICAgICAgICAg
bGF5ZXItPnN5bmNUZXh0dXJlSWQoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4o
MCkpOworICAgICAgICAgICAgbGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCBzdGF0aWNf
Y2FzdDxQbGF0Zm9ybTNET2JqZWN0PigwKSwgSW50UmVjdCgpKTsKIAogICAgIC8vIEFsbCBjaGVj
a2VyYm9hcmRpbmcKICAgICB7CkBAIC0xNDcsNyArMTQ4LDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJ
bXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgZ2V0UXVh
ZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIEludFNpemUgdGlsZVNpemUsIGNvbnN0IEludFNpemUmIGxh
eWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9uIGJvcmRlclRleGVs
T3B0aW9uLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KQorc3RhdGljIFBhc3NPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGdldFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBJbnRTaXpl
IHRpbGVTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpC
b3JkZXJUZXhlbE9wdGlvbiBib3JkZXJUZXhlbE9wdGlvbiwgY29uc3QgSW50UmVjdCYgdmlzaWJs
ZUxheWVyUmVjdCkKIHsKICAgICBSZWZQdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVh
dGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBib3JkZXJUZXhlbE9wdGlvbik7CiAgICAgbGF5
ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZUxheWVyUmVjdCk7CkBAIC0xNTUsNiArMTU2
LDcgQEAgc3RhdGljIHZvaWQgZ2V0UXVhZHMoQ0NRdWFkTGlzdCYgcXVhZHMsIEludFNpemUgdGls
ZVNpemUsIGNvbnN0IEludFNpemUmIGxheWVyU2kKIAogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwog
ICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkcywgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKyAg
ICByZXR1cm4gc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKTsgLy8gVGhlIHNoYXJlZCBkYXRhIG11
c3QgYmUgb3duZWQgYXMgbG9uZyBhcyB0aGUgcXVhZCBsaXN0IGV4aXN0cy4KIH0KIAogLy8gVGVz
dCB3aXRoIGJvdGggYm9yZGVyIHRleGVscyBhbmQgd2l0aG91dC4KQEAgLTE3NCw3ICsxNzYsOCBA
QCBzdGF0aWMgdm9pZCBjb3ZlcmFnZVZpc2libGVSZWN0T25UaWxlQm91bmRhcmllcyhDQ0xheWVy
VGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcAogCiAgICAgSW50U2l6ZSBsYXllclNpemUoMTAwMCwg
MTAwMCk7CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRRdWFkcyhxdWFkcywgSW50U2l6
ZSgxMDAsIDEwMCksIGxheWVyU2l6ZSwgYm9yZGVycywgSW50UmVjdChJbnRQb2ludCgpLCBsYXll
clNpemUpKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAg
IHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIEludFNpemUoMTAwLCAxMDApLCBsYXllclNp
emUsIGJvcmRlcnMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiAgICAgdmVyaWZ5
UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6
ZSkpOwogfQogV0lUSF9BTkRfV0lUSE9VVF9CT1JERVJfVEVTVChjb3ZlcmFnZVZpc2libGVSZWN0
T25UaWxlQm91bmRhcmllcyk7CkBAIC0xOTAsNyArMTkzLDggQEAgc3RhdGljIHZvaWQgY292ZXJh
Z2VWaXNpYmxlUmVjdEludGVyc2VjdHNUaWxlcyhDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4
ZWxPcHQKIAogICAgIEludFNpemUgbGF5ZXJTaXplKDI1MCwgMjUwKTsKICAgICBDQ1F1YWRMaXN0
IHF1YWRzOwotICAgIGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDUwLCA1MCksIEludFNpemUoMjUw
LCAyNTApLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVMYXllclJl
Y3QpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkU3RhdGU7CisgICAgc2hh
cmVkU3RhdGUgPSBnZXRRdWFkcyhxdWFkcywgSW50U2l6ZSg1MCwgNTApLCBJbnRTaXplKDI1MCwg
MjUwKSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0
KTsKICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZHMsIHZpc2libGVMYXllclJl
Y3QpOwogfQogV0lUSF9BTkRfV0lUSE9VVF9CT1JERVJfVEVTVChjb3ZlcmFnZVZpc2libGVSZWN0
SW50ZXJzZWN0c1RpbGVzKTsKQEAgLTIwMiw3ICsyMDYsOCBAQCBzdGF0aWMgdm9pZCBjb3ZlcmFn
ZVZpc2libGVSZWN0SW50ZXJzZWN0c0JvdW5kcyhDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4
ZWxPcAogICAgIEludFNpemUgbGF5ZXJTaXplKDIyMCwgMjEwKTsKICAgICBJbnRSZWN0IHZpc2li
bGVMYXllclJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKTsKICAgICBDQ1F1YWRMaXN0IHF1YWRz
OwotICAgIGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBDQ0xh
eWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVMYXllclJlY3QpOworICAgIE93
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkU3RhdGU7CisgICAgc2hhcmVkU3RhdGUgPSBn
ZXRRdWFkcyhxdWFkcywgSW50U2l6ZSgxMDAsIDEwMCksIGxheWVyU2l6ZSwgQ0NMYXllclRpbGlu
Z0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKICAgICB2ZXJpZnlRdWFk
c0V4YWN0bHlDb3ZlclJlY3QocXVhZHMsIHZpc2libGVMYXllclJlY3QpOwogfQogV0lUSF9BTkRf
V0lUSE9VVF9CT1JERVJfVEVTVChjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c0JvdW5kcyk7
CkBAIC0yMTQsNyArMjE5LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGV4dHVyZUlu
Zm9Gb3JMYXllck5vQm9yZGVycykKICAgICBJbnRTaXplIHRpbGVTaXplKDUwLCA1MCk7CiAgICAg
SW50U2l6ZSBsYXllclNpemUoMjUwLCAyNTApOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAg
Z2V0UXVhZHMocXVhZHMsIHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpO
b0JvcmRlclRleGVscywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKKyAgICBPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0
UXVhZHMocXVhZHMsIHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0Jv
cmRlclRleGVscywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNTRVJUX0VR
KHF1YWRzW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpIDw8IHF1YWRT
dHJpbmcgPDwgaTsKQEAgLTIyMyw2ICsyMjksMjUgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVz
dCwgdGV4dHVyZUluZm9Gb3JMYXllck5vQm9yZGVycykKICAgICAgICAgRVhQRUNUX05FKHF1YWQt
PnRleHR1cmVJZCgpLCAwdSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgICAgICBFWFBFQ1RfRVEo
cXVhZC0+dGV4dHVyZU9mZnNldCgpLCBJbnRQb2ludCgpKSA8PCBxdWFkU3RyaW5nIDw8IGk7CiAg
ICAgICAgIEVYUEVDVF9FUShxdWFkLT50ZXh0dXJlU2l6ZSgpLCB0aWxlU2l6ZSkgPDwgcXVhZFN0
cmluZyA8PCBpOworICAgICAgICBFWFBFQ1RfRVEoSW50UmVjdCgwLCAwLCAxLCAxKSwgcXVhZC0+
b3BhcXVlUmVjdCgpKSA8PCBxdWFkU3RyaW5nIDw8IGk7CisgICAgfQorfQorCitURVNUKENDVGls
ZWRMYXllckltcGxUZXN0LCB0aWxlT3BhcXVlUmVjdEZvckxheWVyTm9Cb3JkZXJzKQoreworICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzY29wZWRJbXBsVGhyZWFkOworCisgICAgSW50U2l6
ZSB0aWxlU2l6ZSg1MCwgNTApOworICAgIEludFNpemUgbGF5ZXJTaXplKDI1MCwgMjUwKTsKKyAg
ICBDQ1F1YWRMaXN0IHF1YWRzOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVk
U3RhdGU7CisgICAgc2hhcmVkU3RhdGUgPSBnZXRRdWFkcyhxdWFkcywgdGlsZVNpemUsIGxheWVy
U2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCBJbnRSZWN0KEludFBvaW50
KCksIGxheWVyU2l6ZSkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXpl
KCk7ICsraSkgeworICAgICAgICBBU1NFUlRfRVEocXVhZHNbaV0tPm1hdGVyaWFsKCksIENDRHJh
d1F1YWQ6OlRpbGVkQ29udGVudCkgPDwgcXVhZFN0cmluZyA8PCBpOworICAgICAgICBDQ1RpbGVE
cmF3UXVhZCogcXVhZCA9IHN0YXRpY19jYXN0PENDVGlsZURyYXdRdWFkKj4ocXVhZHNbaV0uZ2V0
KCkpOworCisgICAgICAgIEVYUEVDVF9FUShJbnRSZWN0KDAsIDAsIDEsIDEpLCBxdWFkLT5vcGFx
dWVSZWN0KCkpIDw8IHF1YWRTdHJpbmcgPDwgaTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAK
aW5kZXggYmRiZjdiYjA5MzAxOGJkNmE2YjMwN2ZmOGJlMzgxNDE1ZjU4YTY3My4uOTIyYzhjMThl
YzI4NWJkZjE5ZWUwNjE3YTg5MzFlNmM0ZmZlMzZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHAKQEAgLTEz
Nyw3ICsxMzcsNyBAQCBURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVj
dE5vdFByZXNlbnRBZnRlck5vbk9wYXF1ZVBhaW50KQogICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOwogfQogCi1URVNUKExheWVyVGV4dHVyZVVwZGF0
ZXJUZXN0LCB0ZXN0T3BhcXVlUmVjdE5vdFByZXNlbnRGb3JPcGFxdWVMYXllcldpdGhPcGFxdWVQ
YWludCkKK1RFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0UHJlc2Vu
dEZvck9wYXF1ZUxheWVyV2l0aE9wYXF1ZVBhaW50KQogewogICAgIFBhaW50RmlsbE9wYXF1ZSBm
aWxsT3BhcXVlOwogICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiB1cGRhdGVyOwpAQCAt
MTQ5LDIxICsxNDksMjEgQEAgVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1
ZVJlY3ROb3RQcmVzZW50Rm9yT3BhcXVlTGF5ZXJXaXRoT3BhcXVlUGEKICAgICB1cGRhdGVyID0g
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgp
LCBmYWxzZSk7CiAgICAgdXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOwogICAgIHVwZGF0ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCks
IDAsIDEsICZvcGFxdWVSZWN0KTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAs
IDApLCBvcGFxdWVSZWN0KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDQwMCwg
NDAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBh
aW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxPcGFxdWUp
KTsKICAgICB1cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CiAgICAgdXBkYXRlci0+c2V0T3Bh
cXVlKHRydWUpOwogICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQw
MCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKKyAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFx
dWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVy
UGFpbnRlckNocm9taXVtKGZpbGxPcGFxdWUpKTsKICAgICB1cGRhdGVyID0gRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNl
KCkpOwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKICAgICB1cGRhdGVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAx
LCAmb3BhcXVlUmVjdCk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwg
b3BhcXVlUmVjdCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCks
IG9wYXF1ZVJlY3QpOwogfQogCiBURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3Bh
cXVlUmVjdE5vdFByZXNlbnRGb3JPcGFxdWVMYXllcldpdGhOb25PcGFxdWVQYWludCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAzM2Y2NzIwYzE2MzA1NDBiYmI4ODhiZDQ5M2Y1YTM4YjNmNTUxZTc2Li5kMmUyZjY5OGNmNjMy
NzQzYTQ5MmM0M2ZjNmNhYjQ5ZTU0YjNiOGE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTIt
MDEtMjAgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBVc2UgcmVnaW9uIHJlcG9ydGVkIHBhaW50ZWQgb3BhcXVlIGZvciBkcmF3IGN1bGxp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDE1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS1saW51eC9jb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1pbi1jb21wb3Np
dGVkLWxheWVyLWV4cGVjdGVkLnBuZzoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMt
bGVvcGFyZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxh
eWVyLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1t
YWMtc25vd2xlb3BhcmQvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9z
aXRlZC1sYXllci1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0td2luL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQt
bGF5ZXItZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhw
ZWN0ZWQucG5nOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGlu
dXgvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1l
eHBlY3RlZC5wbmcuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0OgorCiAyMDEyLTAxLTI2ICBFbGkgRmlkbGVyICA8ZWZpZGxlckByaW0uY29tPgogCiAg
ICAgICAgIFtKU0NdIEluc3BlY3RvciBpbnN0cnVtZW50YXRpb24gZm9yIEphdmFTY3JpcHQgY2Fs
bHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9jb21w
b3NpdGluZy9pZnJhbWVzL2lmcmFtZS1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NvbXBvc2l0aW5nL2lmcmFtZXMv
aWZyYW1lLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nCmluZGV4IDFkNmYwM2UxODk3
YTg1NWQzMWJkZDkyMjViYzIzYjgxNGQyY2RkMDkuLjExNDJmYmFmYThmYjY0YzZiMWY5NmE1YjJk
ZjU4YTU0NDEwN2E2NzMgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNDYzCnpjbWVB
U0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29U
IXRoPQp6THhhPmJnSCNLUDZhITBSXkF0bCVeSGZ0NEwhO3pHQk5LQkkoPT9gPURYVn5uTnFWfENo
RSZYWGQpS3h8RHFFQHsKemFLPEdta0dIRkNIZTZmSyY/Q0VIWDV7SSZ2SiotbG1+TFJQNCl3YnV5
eURkM1lFPV48bjs+Tmlee25vJnBRVFE9Cnp8TXZaaF50LSU7Zm5tWXReKmgtYTc8UU8zYVdnMlda
RDMkWCFlbz5teEJ2Q0VHTUhoYCk3eThMOFVGTiY+TSU2Uwp6SUthZnYhSEwxeGApTmoteFgkJFpf
OTxLcStoO0REVSk7fnw7ZVheb3NNO0k5d3tnXk9fVHIhT19JQT1uaVFeeEUKejtEK1N0dDY2KkZe
dUBaTDdYN1ImV31OZigkTj9zY2B2eUY+LSt1ZDMlJUluKz55I2soKmthJChJb29jKHdkazh+Cnoh
MCtJWiExJWMkSFR9YUFWQEFDZUJ4bVMjPn1HOXp0KzFpTmAoc0dCNiEjNyRDaGk+Xl48YDYhRzN+
UXpXSWdrfgp6R0I4dTtmJW9TSGZlQ2UmUDByZGZJaF5EWVZ7cV9FVX1RTUwwJVYqcWpYMDNnbU49
dURyR1p+QEwmTUVHX3dWbjIKenk1KD0ofEJJNnV3JlZ5aEt+JXcmazF+KTBaIXxQVUx4WXdYPGxR
cWxoOD9sTHxKSjx8V1V2RWZgbjFoQWJMUmQzCnpQKzstcnZBVFdUcEMzflM4SH4xWkZrJm1jRncz
KGNDUUBlcG91TUZmK1coKCstI094cyNzQn04NEdNJVZKZiQjWgp6eHJgfXRfcEJ8JGZ1eE5RWl8w
TXR8TnJzZmdUWndiaFVkWiYyVjhJRG5FQTd9QTVPZ0kkIzU+Y1RZeTAhalRLbXEKelpzVGFvUkAl
X2Vvek58P0xrJTMjVks1JTNtPDM1RWZmVkRZTFdXcTdRYEh5YyNyekMrKjRAb0J8SVdjNkAwN3J9
CnpgRFdoc2U5SyZrdypHbDYzc054eU98T1hrKzRvMU9afVJ1QiRVUl5KUi1WdGs/XiR8OV51dG40
b2QtJlBCMTJ3cgp6e2RtUDlSLWlkPW1zYyFmeEkrUz94SnhZS2J3QH0mWDMmMiVZd0NRPzAhMD12
Z1p7NW9mMlUzNztYQXdgWm9QZT8KelQqSEx0NVgmRTEqeEF8MVN0bzlkK05zNjtxaWZuXzZXTzBI
dTUrakJAMyl0PWBGcmo0e1RfeiVZcnxGeGhiQF9RCnpgc3c5XkNWeSpRZSRHIW4lTXhIKyViRzNH
dypBbGZCOGolJnprZzV1RkpfVXB8OS15Tj80OFJXPGReTmZFNF5RQQp6aldeQDx3QDAhITk0cXx0
bXQpU2UlPUNoSG5oYlVxSXZaMmQxdVdYJTNxMDYkdnxSQXRLMGxefSFZOGB0N3tiQHsKej0jO1gp
LSpvJEpwS09lOUZZQkVKSXZjS3Q3VzVvciVKVVZEYypSdlE3cyZHWnl4P055RUVCUSQ/K1l4Pipk
RSRoCnpfZ3tGUGUybkNHUyFRJDkrZSRZNzRnQHs4d28/MVN3Skc4fHZ2biRfeDN7K152dEl7PmlN
ZDlkUHhDUlJlQG9VaQp6KyU4RTwwRDdzNkA0PlBrZTJuWEVjUSRUflRZcCFXV2xvd3pvQUFCd0pS
ZSRoYHR4Nz90JE8oOD5HJFEkJWtON2EKenp4WjNQcCooVkpuRUk4Zz98KUJPe18/cl57Q2V3YndU
NEBye2gxI0UqY2NqO0E5ZGVoV0R0bThWQSVMUVM1Uil9CnpGR2h4ant+TWNGODNjclpWdXA/QWpF
JilPUTwpaEtYcyZAWkk3YUt0KEs/ZnNidGI0JEpIcGJ+S2tpX3p5TjFTPgpTKVYyYjlSdCVvNWVs
RntyNX1FLTJ2YUFSSQoKbGl0ZXJhbCAzNDY0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsr
dllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UbjV0PQp6IXhUZTklTXwwWilNUUtaTDxf
U2QzayEyfE9WaE1lUXl7fVFJWFpoXkQ5fHR8UFohNktpYUJyWj8jLTNYbVRDd3IKelN8fSVSPnd3
dDtESGVraV9NRWlyb3RHSThHc1pBYFoqVWVwUCs9elU7T2t6WXR3S0xOb0ZfaGFOaUptQkA3SG5z
Cnp6UGJKQiV2b1gjMz89X2V6WFAzZC03U0hVO1J1VHVnTSR3UzxJVEd0PykmWlh4ZihYdCUmdWw9
KnVTeGZsfGV1Xwp6ZmBQJVg1dUxGeVQ8LUZScmwrNU54QkQ9REZ1Vk12Xz87bGJLWU1NTStVb21h
NUEoeGJIZzJ3cykpOU1iVlB8SjIKelhQdnc/WVZHeWNOMFQ8aj0tS0QlSEVmPE01eTl8V3gtRF97
LUZmd1YyYk9NaDx2NWNwYkEwPWglVm9QfGtBRDw/CnojPmx+YGxPVlZMNGJRdzl3RjlqSkZyJFNk
NHpMeihTMTZFVzVpOEp+X3NUMW9HMjlgNlFUKlpnYihiT3pnc1gzOAp6Xy1VKUopeXJDd0RRQ2lV
Q1YkcWxvJGRAOGtxNE89SXlpTTA4ZkZ7LUdJcHxZJnAyenFRezJ6K0w2SnF3VkR8NmQKenpxaWxY
Y0teTTdsfkJWcFRfPm4yeGJqZzNhXlFgSSMlTzNqdkpwKkUhaX5Ga20+SVRiQDR0V0VtZ3p2ZEsq
V0lACnp2KU59cSVnZ2IjKlorQlB5a0NDNDV1ZHtgRi0yXnA3aU1gailJe0RybFZlelM+WFpIYj1X
LThFfDlFfUJ7d3kjTQp6LTBfc2NuQl85MiRqMDN9KiU9fnEjSmNiMWVTYT01RkRMaEc3UiFTZ0No
aT5edihHK3pgSmxrIWo1WChocEUtZ3wKejNgZj1nJWg3e2tpVXEjRnFFISRtYXtVTT5xfGIwY2Ng
aCgldXd2fDAkV1JNJVlXbV8kLWFFI0krZ29xSGVKMDJGCnp6P25sUSFSKz9pWkBTQlE0fVo4Z25Q
Q2ZOcHErN2pjaT5PbG99UnpHKCtARG1DfT45PF8lbTwmbHdDfndPZDQ1Wgp6VEl7Pk1WajFKLTkk
P1p0OFhVZS1gdkRoKyZWIX5FKzdHTmFBb2JYQGpadGVxODhobSY5QUo5M0Y+ZHwrUG0+Tk4Kek4/
ZCNXUnM5VUp6JFkyNzx6K0kqZmdvOVpPXys5Z0RyNVlgcUZLdzc8Xk5WYWVEbjFDXjUqNkR0TnpY
d2U2YUlzCnpSX1VSeERAOGtOdFkkMm11VjRHYD9WNmJrUzxCWmEwRyZQVWU8YWBHZzhLVVVQeHFP
UXp4bj9BWT98P1JrdzBoaQp6d3BUeUMtYytqalZBdEZWLWZJP3Bge1d4aCtxfnNEWFVscWstTzZ5
bzh5PT9UQTdxKGd3KlN5T2JwTl8xZ0hHUmAKenFtbUNeTz5KRGQ/bT13WD96PGJDdmxuZV9rZTxS
aVo1TEREI2ZTcklHbnU/JjhQe0txSU4lR2N2I29xNUFBOXMhCnptYWwhTXlUJGVRXkBsejtZZF93
WHs5c3YxYmp4eDEyKENMO3JMMT5tZU5ybSNXcXRxWSEtcy01NGB1PHdnemFkNQp6PTdvcEBeUkl7
JiU9WTcxYjJhUGdJbVNDOF9aMUo2U3tyVi1fSWhofFFeUkdSIXYlK2EmdHUjLTtwcz07ejQ3e1UK
el9XdD0tXjVJTUxWfmVXJHRSTTdOVXd6Zkc+c1Jna1BiUG5CVVZoRmBLZyR3ZXtuM3pEP2kyJDxm
bHRqdVloWWBSCnpuP2QyKktIV3BnO3IwditBTUM/NkZmYiY2I01DZXQtJWhQQVZxbWFuNkBAaThY
aWAjd249KyMma0ppUkN0Yz9lNApkOG9OPT9ENypLciRAIWBSN0dSJS0hUEN7eFd0fiQoNjk4Vz1R
NSptTwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zh
c3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0
ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC9yZXBhaW50
L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNzVhNjg5ZDlhOWY4MDkwZGY3Mzg1ZmUwNDUw
NDRkNGUwYWE5NWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMjk1Nwp6Y21lQVNA
Tj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG19
bjYKejB9RCRkaSE/SmNHbEx8Zkc9bnJsQlpGajFMLVNOcTEyZEU0d0IrZTA0eVo2TmFMYXFUSUVH
WnJkMyhuKEU3VmNJCno7Yks7eVl2RihFMnw2ZHNDZ2BfNGFNfCU9X2haV3Mmcko3KG5DOEZUJWcp
ZW5aaEFVRDFIKkAjOTZBZ1FHWSY4QAp6YlpgellNczRqa2hXaDhYVSgwdER7UVlnMl91PW87PEQx
PFg4dmFrPTY9UUpsTm5tNishaCk2WVg0QyhLdnVFQk0KekgjYXN1OWx3RjA7cXNqdzJYN2Y/VXot
KkEtaXc+emZyeG5DaEhKQmFaYUJgd1V+IV5WZFg0U29gPEc2WTNOVG4pCnpZO0Y4JUFeMXcwO1gh
fm8rY2taPzdLUV44XkxXO25aY2N4SG9HdHNjNCNOVy1iR3hHWF9wY3YoPmNoYnheWlhkbAp6OVMx
SkwtSm48OXtQZChLTHhHKzJAUVF7KG8ydTZDe2t9UCFmI0Y5OyZJU2dDQnFuWUsxK2BKZVhkc05I
Z3diM3UKbG5oUXBBIUR1Y1JSPUwyUWFoc20od2t0PVhQNjZCMzQ0JHJqRjYqMlVuZ0RgSFlIfFBv
CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLWxlb3BhcmQv
ZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBl
Y3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMtbGVvcGFyZC9mYXN0
L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVk
LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIzMzExZjgzYzlmZTA1YjIxMjk4
YWRjNGI0ZTE1YjYwYjY3NmFkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAzMzk4
CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFsWWJwUnpua0I5Z0NDTTQ3
JD1TdUZ4ZU8ragp6bVBzalRzbVpDdlcoSX5TQ01tey1yV1dSQDdSZ0RMMkMyclRpM1VlJlUwTjkh
Y3k0JlFJRUdacmQzKlB1RlNEVjUKeiEkczNZTi1xQ0o2fSp4eFQyejkjZXo8K0FwOG4/SUB0VSgw
PCE4XnQwNC1fVWV3UTZjb2x8c1JVfSklSlV9UnUwCnpWcSMlbklLZCZuekBWVCFHNlg7R2BeXy0q
ZUUhPDZeSntBVnlzPXxxVjM3VjEmZDAheiFvdEQ4RmhOaihmeCpHOAp6ZnF7V1JrYFhBQyhwU2xT
P2UzWSFGUWM7Rys1cUVFPUpeV0Y2Szcod1czUjhaekdpd30zSylWKz95TndLOD9GYTMKejdSQiR9
I2NTdGQmJW0mdEVUckwjJkdpbElQWEZhK1V8MW41cy1RUUluYythKGFoNE4le3pNJlFWcmFOJCRv
T2VTCnpeX2YzdzZZc3VuPGA0dWJsS0NuLTtyZHRZKkFXYTE3cCY1bGZSP3tlOX5tKCt7MVY+Z3c2
cnBMVTxfSWBiN0QoVwp6U1gwYGxBWD9UTjRVb3xRZnRTT2hpRDVKYGozeCRMdCg0SytGYDdHdVFT
U0szeD1jLUhefGdqNDIwJXxTYylJJHoKSnRhRDBlMHN5dmUqSDhjZQoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC9mYXN0L3JlcGFpbnQv
YmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1zbm93bGVvcGFyZC9mYXN0L3JlcGFpbnQv
YmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQwZThjMTk2NzliZTFiMTkyYWVjYmQ2YTI1ZWRk
MThiYzA1MmI5Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAzMzk2CnpjbWVBU0BO
PyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFsWWJwUnpua0I5Z0NDTTQ3JD1TdUZ4ZVE1
Mwp6N0tVYWk3UmVUQUNhS0FXVyl7VzxyYiZqMHNqMjNNN003TiZXK3Z2RlNEcztEO0pOMU07dXVt
Zj1qfmxYS1cwWSgKemhKKD5aeCZ7OCVHZH1YPFZaMCRXO2sjMDlYdnNPWEo9YzJQbmk+fX5HQkJ7
ckU4Xz1SSE9JTEROSj1zP0YpKmFDCnphNDt9VDVMOTRiYUJ2JExnM2xfeUdmY2YrelZfPzxKJHF+
MyRUMmNCQGF+eilqM1lRXkNmQmpQUEo4eVJXYk18bgp6SzQ1U2l4NkVRVEdRSipsejRVY288clFH
aTMwUD0zKU5UNjl6fGUzamtnPj5tPWRZLW04K0V8SWU3a35TWDYybTMKem80XyEyYyl4PC08SSFS
VWg4d1NFRiNOMThjKj9AZno+c3lFPHdXaiNMKng3RDV3SEpBR0I5TXdlNj81RGV9NFUoCnpXSlUm
dSpFNHY1TXNKd1UwRXt2dENLZCpVNkM0NXozPH1CKUt4PXdOMXFYZUFvUzhOQXJZK0V3MSNIcnpA
aXYtZgp3TT5Gd2cwWEFCQWs1Kml4SFRoXzVJOWVNTHRfP3FQc3ViejBaaz8yVm8mZzl2VUh4M3ZJ
VkNnITAzPXhVbTtlOSgKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS13aW4vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXll
ci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9y
ZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5w
bmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNWI2ZDZiM2U4MjdjZGMxY2FkNTU2
MjYxMjk4Mjg3NGQ1OWE2MTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMjkzNAp6
Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxt
fT9vVG41Nz0Kel5UZm15dnFUZTFMbFlDREJ5O2w9KThyJlczaitoPUxgJDx8JWNORCYzOTx8Zisj
SEBSanYqQ3UtcmgwSEo4VTRwCno7QW5XRnxJZEg8QUhJb1AlJDsyM2pBQ0xoJnhCfkxrR2FEc1Er
JHFAcTJiKXx0SVB9eGQhIXAjODNjcVE3I0l3UAp6N2h+aTMpJEJpSi1+UV88KiFTXzVxZ2xjSitF
YG1BaENqaChfYFNPRT83ZjNrS1ByREBvJTRScXopK0Y0fEE1cnYKej9XQG4tWEpGe1FAIXE5a29p
Oy1RPnMjQE48QXB0bTwqVz5BdmZtM1VHOHx+eWJ8PUJzTFhlM2VgPEJzJGJMdmhyCnpmaWh8UGcm
K1IzVGRAKFNLNm1GcUNXZVRhMmJkVC1JQ1U1clpsd0tCXzw1SSRBITB0Uzc9d2RQMHdjb19tUWU7
Ugp6MUw0QDUmI3hwSTgxOGtBMktaPVY4X2pXfXJPandBN3xqS3Z4bk93YWY7WkJ2SkBSYGtsemVK
ezRRVTJYUzNqM14KSFA2PHJfRnsqNFYKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVk
LWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
cmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQu
cG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc2MGZmNTA0YjM3YjBiYmMwMzc1YTY1OGQ5NThkMDE3MmI4OGQ2MDkK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NjUKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlV
eyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuMjtHCnpSNl8kM3FlUD01diY2SkM2
VSMoSGxRZ3JXI0ZWN3VsO2xMeUcoKk1TTnZqd2J4REk9fElFR1pyZDMpbV49VjFvewp6N1JVTDha
bH47N2omQThYYyVpXiFSYWU1aXZ1a0dsV01IYFBeUEw8NiF2Xzs0WlV6T2w0R2F1UCE7Rz4yRjd2
PFEKeklvYVBeWmQ+JTx2fUkoN0pKcm19QVJydlV6K2wpbyR7MkVpNU4qNzxud2pDaTspLUZJUkVK
czQ4fS1pY0RAe2teCm1iVG0kZldpdyRrVkdxS0RFaU57YmNYamZzUSNYTmFVPE9aREtiTGgqMn43
Wn4kSk57YgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDA2NWM0MmQ1YzI2NWZi
YzA5ZWYzYjI3ZjJlNDU0ODRiOWVmNTJiOTcuLjUyNTEwZDIyYzMwOTY1ZTY4YWY5NGU0N2UyMDE0
ODU2MTc0ZmFiODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTM5OTksNiArMzk5OSw5IEBAIEJVR19DQVJZQ0xBUksg
TUFDIDogZWRpdGluZy9zdHlsZS9jcmVhdGUtYmxvY2stZm9yLXN0eWxlLTAxMi5odG1sID0gSU1B
R0UKIEJVR19DQVJZQ0xBUksgTUFDIDogZWRpdGluZy9zdHlsZS9jcmVhdGUtYmxvY2stZm9yLXN0
eWxlLTAxMy5odG1sID0gSU1BR0UKIEJVR19DQVJZQ0xBUksgTUFDIDogZmFzdC9kb20vYmx1ci1j
b250ZW50ZWRpdGFibGUuaHRtbCA9IElNQUdFCiAKKy8vIE1heSBmYWlsIGlmIHRoZXNlIHBsYXRm
b3JtcyBkaWZmZXIgZnJvbSBMaW51eC4gUmVtb3ZlIHRoaXMgb3IgcmViYXNlbGluZSB0aGVtIG9u
Y2UgdGhlIGJ1ZyBsYW5kcy4KK0JVR1dLNzYwMTUgV0lOIE1BQyA6IGZhc3QvcmVwYWludC9ibG9j
ay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXIuaHRtbCA9IElNQUdFCisKIC8vIE5l
ZWQgdG8gaW1wbGVtZW50IGZpbGUgbmFtZSBsb2dnaW5nLgogQlVHV0s3NjU3MiA6IGh0dHAvdGVz
dHMvZG93bmxvYWQgPSBGQUlMCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124350</attachid>
            <date>2012-01-27 12:32:45 -0800</date>
            <delta_ts>2012-01-27 15:30:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120127153243.patch</filename>
            <type>text/plain</type>
            <size>49103</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVkNDhlMDgzYWQ4ZDgy
MDdjZGFhYzQ1MmZmNTg0YTI4OGNhZWJkMi4uNDUxMmJjMGQ1YWViZmUzNTdmMjZhYzIwZDUyMzQy
OGZmNzE0ZTI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAxLTI3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDVGlsZWRMYXllckltcGxUZXN0LmNwcCwgQ0NRdWFkQ3VsbGVyVGVzdC5jcHAsIENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpz
ZXRPcGFxdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDRHJhd1F1YWQ6Om9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAg
ICAgICAoQ0NEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0Js
ZW5kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRR
dWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENv
bG9yRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yRHJhd1F1YWQ6
OkNDU29saWRDb2xvckRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3
UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVE
cmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxl
RHJhd1F1YWQuaDoKKyAgICAgICAgKENDVGlsZURyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKERy
YXdhYmxlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6Om9wYXF1ZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2FibGVUaWxlOjpzZXRPcGFxdWVSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVydGllcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAg
ICAoQ0NUaWxlZExheWVySW1wbCk6CisKIDIwMTItMDEtMjYgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmxpbmUgYmVnaW5TY3JvbGxHZXN0dXJlL2Vu
ZFNjcm9sbEdlc3R1cmUgaW4gaGFuZGxlV2hlZWxFdmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCBkZTYxNmJhYjdjNTQ4ZTgxNjA5ZDU4Y2Q4NGIxOWJiMGI2Y2FlMTY0Li5mNWRlNTk1
MzkzOTU5YjA0ZTlhOTE5ODg2YzgzYjQzYmRlZWMzNWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAxLTI3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIHJlZ2lvbiByZXBvcnRlZCBw
YWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRlQ2hlY2tMYXllcjo6YXBwZW5kUXVhZHMpOgor
ICAgICAgICAoV2ViS2l0OjpCbGVuZFN0YXRlQ2hlY2tMYXllcjo6c2V0T3BhcXVlQ29sb3IpOgor
ICAgICAgICAoQmxlbmRTdGF0ZUNoZWNrTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpCbGVuZFN0
YXRlQ2hlY2tMYXllcjo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpU
RVNUX0YpOgorICAgICAgICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdERyYXdRdWFkOjpUZXN0RHJhd1F1YWQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdERyYXdRdWFkOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0UXVhZHMpOgorICAg
ICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0
cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6
Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OlRFU1QpOgorICAgICAg
ICAoQ0NMYXllclRlc3RDb21tb246OmdldFF1YWRzKToKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29t
bW9uOjpjb3ZlcmFnZVZpc2libGVSZWN0T25UaWxlQm91bmRhcmllcyk6CisgICAgICAgIChDQ0xh
eWVyVGVzdENvbW1vbjo6Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNUaWxlcyk6CisgICAg
ICAgIChDQ0xheWVyVGVzdENvbW1vbjo6Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNCb3Vu
ZHMpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb24pOgorCiAyMDEyLTAxLTI2ICBKb2huIEJh
dGVzICA8amJhdGVzQGdvb2dsZS5jb20+CiAKICAgICAgICAgUm9sbCBjaHJvbWl1bV9yZXYgdG8g
MTE5MjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDRjNjNkZmQ3ZDI2ODI4N2I1Zjg1YTc3
YmM0MDQyNWYwNjBhOGE1ODIuLjI5MDg3YzU3MWFmYWM1NDU2ZGMyNDUwOGNmMDExYWM1ODdlZTI4
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBMYXll
ckNocm9taXVtOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCiAgICAgaWYgKG1fb3BhcXVlID09IG9w
YXF1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fb3BhcXVlID0gb3BhcXVlOwotICAgIHNldE5l
ZWRzQ29tbWl0KCk7CisgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKIHZvaWQgTGF5ZXJDaHJv
bWl1bTo6c2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcAppbmRleCA2Mzg1ZDY4OTA4MTYwYTM1Y2JkNzk0YTcwMzliZTFl
M2QwZmI1NzI2Li5kZGVkNTU0YjMyMTE5M2I0MWNmODg0OTc1MjMzOWNjMGFlOWEwMjRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgog
CiAgICAgSW50UmVjdCBtX2RpcnR5UmVjdDsKICAgICBJbnRSZWN0IG1fdXBkYXRlUmVjdDsKKyAg
ICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIHByaXZhdGU6CiAgICAgT3duUHRyPExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU+IG1fdGV4dHVyZTsKIH07CkBAIC0yNzYsNyArMjc3LDcgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVy
KQogICAgICAgICBpZiAodGlsZS0+aXNEaXJ0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgdGlsZWRMYXllci0+c3luY1RleHR1cmVJZChpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4
dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgICAgIHRpbGVkTGF5ZXItPnB1c2hUaWxlUHJvcGVy
dGllcyhpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgdGlsZS0+bV9v
cGFxdWVSZWN0KTsKICAgICB9CiB9CiAKQEAgLTQyMSw4ICs0MjIsOCBAQCB2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50
IHRvcCwgaW50CiAgICAgLy8gSG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tp
bmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCiAgICAgLy8g
c28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxp
dmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KICAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBk
YXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkpOwotICAgIEludFJlY3Qgb3BhcXVlUmVj
dDsgLy8gRklYTUU6IHVudXNlZC4gcmVtb3ZlIHRoaXMgYW5kIHN0b3JlIGluIHRoZSBsYXllciB0
byBwYXNzIHRvIGltcGwgZm9yIGRyYXcgY3VsbGluZwotICAgIHRleHR1cmVVcGRhdGVyKCktPnBy
ZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+
aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSwgJm9wYXF1ZVJlY3QpOworICAgIElu
dFJlY3QgcGFpbnRlZE9wYXF1ZVJlY3Q7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRv
VXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3Jk
ZXJUZXhlbHMoKSwgY29udGVudHNTY2FsZSgpLCAmcGFpbnRlZE9wYXF1ZVJlY3QpOwogICAgIGZv
ciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9
IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGls
ZSA9IHRpbGVBdChpLCBqKTsKQEAgLTQzMSwxMiArNDMyLDIyIEBAIHZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9w
LCBpbnQKICAgICAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwog
CisgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBq
KTsKKworICAgICAgICAgICAgLy8gU2F2ZSB3aGF0IHdhcyBwYWludGVkIG9wYXF1ZSBpbiB0aGUg
dGlsZS4gSWYgZXZlcnl0aGluZyBwYWludGVkIGluIHRoZSB0aWxlIHdhcyBvcGFxdWUsIGFuZCB0
aGUgYXJlYSBpcyBhIHN1YnNldCBvZiBhbgorICAgICAgICAgICAgLy8gYWxyZWFkeSBvcGFxdWUg
YXJlYSwga2VlcCB0aGUgb2xkIGFyZWEuCisgICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVk
UmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgbV9wYWludFJlY3QpOworICAgICAgICAgICAg
SW50UmVjdCB0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIHBh
aW50ZWRPcGFxdWVSZWN0KTsKKyAgICAgICAgICAgIGlmICh0aWxlUGFpbnRlZE9wYXF1ZVJlY3Qg
IT0gdGlsZVBhaW50ZWRSZWN0IHx8ICF0aWxlLT5tX29wYXF1ZVJlY3QuY29udGFpbnModGlsZVBh
aW50ZWRPcGFxdWVSZWN0KSkKKyAgICAgICAgICAgICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0
aWxlUGFpbnRlZE9wYXF1ZVJlY3Q7CisKICAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3Qg
YXMgY29weUFuZENsZWFyRGlydHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3Qg
dG8gbV91cGRhdGVSZWN0LgogICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0ID0g
dGlsZS0+bV91cGRhdGVSZWN0OwogICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIEludFJlY3Qgc291cmNl
UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAgSW50UmVjdCBmaXhl
ZFNpemVUaWxlUmVjdFdpdGhCb3JkZXJzID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CisgICAg
ICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSBmaXhlZFNpemVUaWxlUmVjdFdpdGhCb3JkZXJz
OwogICAgICAgICAgICAgc291cmNlUmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0KTsKICAgICAgICAg
ICAgIC8vIFBhaW50IHJlY3Qgbm90IGd1YXJhbnRlZWQgdG8gbGluZSB1cCBvbiB0aWxlIGJvdW5k
YXJpZXMsIHNvCiAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCBzb3VyY2VSZWN0IGRvZXNu
J3QgZXh0ZW5kIG91dHNpZGUgb2YgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCmluZGV4IDFiYmZi
YjZlNDQ1MTQyZTIyM2VlNzBkNzhhMjY1OTNjMTU3MDMwYzEuLjFkMGU2OTQ0MzdhZTVmYzNmOTAx
ZTNhODI3YzU1ZDhlYTMxYzViNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwCkBAIC00OSw2ICs0
OSwxNSBAQCBDQ0RyYXdRdWFkOjpDQ0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIE1hdGVyaWFsIG1hdGVyaQogICAgIEFTU0VSVChtX21hdGVyaWFsICE9
IEludmFsaWQpOwogfQogCitJbnRSZWN0IENDRHJhd1F1YWQ6Om9wYXF1ZVJlY3QoKSBjb25zdAor
eworICAgIGlmIChvcGFjaXR5KCkgIT0gMSkKKyAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKKyAg
ICBpZiAobV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkgJiYgbV9xdWFkT3BhcXVlKQorICAg
ICAgICByZXR1cm4gbV9xdWFkUmVjdDsKKyAgICByZXR1cm4gbV9vcGFxdWVSZWN0OworfQorCiBj
b25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqIENDRHJhd1F1YWQ6OnRvRGVidWdCb3JkZXJEcmF3
UXVhZCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fbWF0ZXJpYWwgPT0gRGVidWdCb3JkZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEcmF3UXVhZC5oCmluZGV4IGFjYzdjMDI4NjZjYzg5NTkzMTUxOTZiM2I4MzhkMDg4NmI1
MWM2ZGUuLjAzYjE5YjFiYTFkOTZjZDY3YjIzOTA0MjFmMjZiNGE5ZjAwYzMwMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RyYXdRdWFkLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogICAgIGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclJlY3Qo
KTsgfQogICAgIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFy
ZWRRdWFkU3RhdGUtPmNsaXBSZWN0KCk7IH0KICAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPm9wYWNpdHkoKTsgfQotICAgIC8vIEZvciB0aGUgcHVy
cG9zZXMgb2YgY3VsbGluZywgYXJlIHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQgb3BhcXVlPwot
ICAgIGJvb2wgZHJhd3NPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+
aXNPcGFxdWUoKSAmJiBtX3F1YWRPcGFxdWUgJiYgb3BhY2l0eSgpID09IDE7IH0KLSAgICBib29s
IG5lZWRzQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRRdWFkU3RhdGUtPmlzT3Bh
cXVlKCkgfHwgbV9uZWVkc0JsZW5kaW5nIHx8IG9wYWNpdHkoKSAhPSAxOyB9CisgICAgLy8gRm9y
IHRoZSBwdXJwb3NlcyBvZiBjdWxsaW5nLCB3aGF0IHBhcnQgb2YgdGhlIGNvbnRlbnRzIG9mIHRo
aXMgcXVhZCBhcmUgb3BhcXVlPworICAgIEludFJlY3Qgb3BhcXVlUmVjdCgpIGNvbnN0OworICAg
IGJvb2wgbmVlZHNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNCbGVuZGluZyB8fCBv
cGFxdWVSZWN0KCkgIT0gbV9xdWFkUmVjdDsgfQogICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVk
SW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5pc0xheWVyQXhpc0Fs
aWduZWRJbnRSZWN0KCk7IH0KIAogICAgIGVudW0gTWF0ZXJpYWwgewpAQCAtOTAsNiArOTAsMTAg
QEAgcHJvdGVjdGVkOgogICAgIC8vIHZhcmlhYmxlcy4KICAgICBib29sIG1fcXVhZE9wYXF1ZTsK
ICAgICBib29sIG1fbmVlZHNCbGVuZGluZzsKKworICAgIC8vIEJlIGRlZmF1bHQsIHRoaXMgcmVj
dCBpcyBlbXB0eS4gSXQgaXMgdXNlZCB3aGVuIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBhbmQgYWJv
dmUKKyAgICAvLyB2YXJpYWJsZXMgZGV0ZXJtaW5lIHRoYXQgdGhlIHF1YWQgaXMgbm90IGZ1bGx5
IG9wYXF1ZSBidXQgbWF5IGJlIHBhcnRpYWxseSBvcGFxdWUuCisgICAgSW50UmVjdCBtX29wYXF1
ZVJlY3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCBkMzBmZmM4NDBj
OTc4OWJmNzQ4MTYxMGY4NjE0OGVmNjVkOTM2NzNmLi43NzEwMDMyZTA1YzZhZmFhNDMxNzlkOWE3
OTI5YTA4MWYzZTBmYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTkxLDggKzkx
LDggQEAgdm9pZCBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmIHF1
YWRMaXN0KQogCiAgICAgICAgIGJvb2wga2VlcFF1YWQgPSAhcmVnaW9uQ29udGFpbnNSZWN0KG9w
YXF1ZUNvdmVyYWdlVGh1c0ZhciwgcXVhZFJlY3QpOwogCi0gICAgICAgIGlmIChrZWVwUXVhZCAm
JiBkcmF3UXVhZC0+ZHJhd3NPcGFxdWUoKSAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVk
SW50UmVjdCgpKSB7Ci0gICAgICAgICAgICBJbnRSZWN0IG9wYXF1ZVJlY3QgPSBlbmNsb3NlZElu
dFJlY3QoZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBSZWN0KEZsb2F0UmVjdChkcmF3UXVh
ZC0+cXVhZFJlY3QoKSkpKTsKKyAgICAgICAgaWYgKGtlZXBRdWFkICYmIGRyYXdRdWFkLT5pc0xh
eWVyQXhpc0FsaWduZWRJbnRSZWN0KCkpIHsKKyAgICAgICAgICAgIEludFJlY3Qgb3BhcXVlUmVj
dCA9IGVuY2xvc2VkSW50UmVjdChkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFJlY3QoRmxv
YXRSZWN0KGRyYXdRdWFkLT5vcGFxdWVSZWN0KCkpKSk7CiAgICAgICAgICAgICBvcGFxdWVDb3Zl
cmFnZVRodXNGYXIudW5pdGUob3BhcXVlUmVjdCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9y
RHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwCmluZGV4IGQxYzcyOWE0MTU3ZGQyMjE3MmI2Yzgz
MWQ3NzAwY2M0MjBiNGVlNmEuLjdmNmY5ODExM2Q2ZjhiOWE3Mjc4Yjk2NzgwZjY0YmJmOTg0NTYx
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAKQEAgLTM4LDgg
KzM4LDEwIEBAIENDU29saWRDb2xvckRyYXdRdWFkOjpDQ1NvbGlkQ29sb3JEcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0CiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJl
ZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6U29saWRDb2xvciwgcXVhZFJlY3QpCiAgICAgLCBtX2Nv
bG9yKGNvbG9yKQogewotICAgIGlmIChtX2NvbG9yLmFscGhhKCkgIT0gMSkKKyAgICBpZiAobV9j
b2xvci5oYXNBbHBoYSgpKQogICAgICAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKKyAgICBlbHNl
CisgICAgICAgIG1fb3BhcXVlUmVjdCA9IHF1YWRSZWN0OwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVEcmF3UXVhZC5jcHAKaW5kZXggZGY4MzA1MDhhMmM4MmNhMjc4YjM1Y2NjMDA1YjNkMDc5YTFj
N2ZjNi4uYjM1YjZmNjlmM2MyMDE2ZjRlMjM4NzczZjBkYzk0YzY5NTZiMDM5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJh
d1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZURyYXdRdWFkLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1RpbGVEcmF3UXVhZD4gQ0NUaWxlRHJhd1F1YWQ6OmNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50
JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0
dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRv
cEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCitQYXNzT3duUHRy
PENDVGlsZURyYXdRdWFkPiBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJ
bnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50
UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50
IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJv
b2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGlsZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVh
ZFJlY3QsIHRleHR1cmVJZCwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0
ZXIsIHN3aXp6bGVDb250ZW50cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwg
Ym90dG9tRWRnZUFBKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RpbGVEcmF3UXVhZChz
aGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVSZWN0LCB0ZXh0dXJlSWQsIHRleHR1cmVP
ZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29udGVudHMsIGxlZnRF
ZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogfQogCi1DQ1Rp
bGVEcmF3UXVhZDo6Q0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4
dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJv
b2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90
dG9tRWRnZUFBKQorQ0NUaWxlRHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25z
dCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3Qg
SW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNE
aW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEs
IGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKICAg
ICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQs
IHF1YWRSZWN0KQogICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQogICAgICwgbV90ZXh0dXJl
T2Zmc2V0KHRleHR1cmVPZmZzZXQpCkBAIC00OCw2ICs0OCw3IEBAIENDVGlsZURyYXdRdWFkOjpD
Q1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJCiB7CiAgICAgaWYgKGlzQW50aWFsaWFzZWQoKSkKICAgICAgICAgbV9uZWVkc0JsZW5k
aW5nID0gdHJ1ZTsKKyAgICBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlRHJhd1F1YWQuaAppbmRleCAxMmU1M2RiZDJhOGY1ZDFmYjNkMzMzMTliMmMwMzEx
ZWM1M2Y1Y2E4Li4zMzUwMWE4MDZjZmFmZjk2MGYyNGM2ZGQ2ZjFjNzgyMGExNTc4OGM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ0NUaWxlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ0NUaWxlRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNv
bnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwg
R0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRn
ZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEp
OworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYg
b3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0
ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJl
RmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVk
Z2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOwogCiAgICAgUGxhdGZv
cm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQogICAg
IEludFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVPZmZzZXQ7
IH0KQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbnRpYWxpYXNlZCgpIGNv
bnN0IHsgcmV0dXJuIGxlZnRFZGdlQUEoKSB8fCB0b3BFZGdlQUEoKSB8fCByaWdodEVkZ2VBQSgp
IHx8IGJvdHRvbUVkZ2VBQSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0NUaWxlRHJhd1F1YWQoY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJ
bnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVD
b250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VB
QSwgYm9vbCBib3R0b21FZGdlQUEpOworICAgIENDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1
ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVy
ZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRl
ciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEs
IGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKIAogICAgIFBsYXRmb3JtM0RP
YmplY3QgbV90ZXh0dXJlSWQ7CiAgICAgSW50UG9pbnQgbV90ZXh0dXJlT2Zmc2V0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxl
ZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCAzNDRkNzQyNDVmOGVjMWY1ZmRiNmMyY2Iy
MWRjZGI5MWNhYjQ5MTgyLi4xY2Q0Nzk5M2ViOTBjZmFlNjJhMjAxZWMyMmQwMTRhMDM2Y2U5MjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtNTEsOCArNTEsMTMgQEAg
cHVibGljOgogCiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVy
biBtX3RleHR1cmVJZDsgfQogICAgIHZvaWQgc2V0VGV4dHVyZUlkKFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZUlkKSB7IG1fdGV4dHVyZUlkID0gdGV4dHVyZUlkOyB9CisKKyAgICBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWVSZWN0OyB9CisgICAgdm9p
ZCBzZXRPcGFxdWVSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpIHsgbV9vcGFxdWVSZWN0
ID0gb3BhcXVlUmVjdDsgfQorCiBwcml2YXRlOgogICAgIFBsYXRmb3JtM0RPYmplY3QgbV90ZXh0
dXJlSWQ7CisgICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7CiB9OwogCiBDQ1RpbGVkTGF5ZXJJbXBs
OjpDQ1RpbGVkTGF5ZXJJbXBsKGludCBpZCkKQEAgLTE0OCw2ICsxNTMsOSBAQCB2b2lkIENDVGls
ZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQog
CisgICAgICAgICAgICBJbnRSZWN0IHRpbGVPcGFxdWVSZWN0ID0gdGlsZS0+b3BhcXVlUmVjdCgp
OworICAgICAgICAgICAgdGlsZU9wYXF1ZVJlY3QuaW50ZXJzZWN0KGxheWVyUmVjdCk7CisKICAg
ICAgICAgICAgIC8vIEtlZXAgdHJhY2sgb2YgaG93IHRoZSB0b3AgbGVmdCBoYXMgbW92ZWQsIHNv
IHRoZSB0ZXh0dXJlIGNhbiBiZQogICAgICAgICAgICAgLy8gb2Zmc2V0IHRoZSBzYW1lIGFtb3Vu
dC4KICAgICAgICAgICAgIEludFNpemUgZGlzcGxheU9mZnNldCA9IHRpbGVSZWN0Lm1pblhNaW5Z
Q29ybmVyKCkgLSBkaXNwbGF5UmVjdC5taW5YTWluWUNvcm5lcigpOwpAQCAtMTY0LDcgKzE3Miw3
IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExp
c3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlCiAgICAgICAgICAgICBib29sIGJvdHRvbUVkZ2VB
QSA9IGogPT0gbV90aWxlci0+bnVtVGlsZXNZKCkgLSAxICYmIHVzZUFBOwogCiAgICAgICAgICAg
ICBjb25zdCBHQzNEaW50IHRleHR1cmVGaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMo
KSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVT
VDsKLSAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGUtPnRleHR1cmVJZCgpLCB0ZXh0dXJlT2Zmc2V0
LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRn
ZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICAgICAgICAg
IHF1YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwg
dGlsZVJlY3QsIHRpbGVPcGFxdWVSZWN0LCB0aWxlLT50ZXh0dXJlSWQoKSwgdGV4dHVyZU9mZnNl
dCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIGNvbnRlbnRzU3dpenpsZWQoKSwgbGVmdEVk
Z2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7CiAKICAgICAgICAg
ICAgIGlmIChoYXNEZWJ1Z0JvcmRlcnMoKSkgewogICAgICAgICAgICAgICAgIENvbG9yIGNvbG9y
KGRlYnVnQm9yZGVyQ29sb3IoKS5yZWQoKSwgZGVidWdCb3JkZXJDb2xvcigpLmdyZWVuKCksIGRl
YnVnQm9yZGVyQ29sb3IoKS5ibHVlKCksIGRlYnVnVGlsZUJvcmRlckFscGhhKTsKQEAgLTE4Mywx
NCArMTkxLDE1IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6c2V0VGlsaW5nRGF0YShjb25zdCBD
Q0xheWVyVGlsaW5nRGF0YSYgdGlsZXIpCiAgICAgKm1fdGlsZXIgPSB0aWxlcjsKIH0KIAotdm9p
ZCBDQ1RpbGVkTGF5ZXJJbXBsOjpzeW5jVGV4dHVyZUlkKGludCBpLCBpbnQgaiwgUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlSWQpCit2b2lkIENDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVy
dGllcyhpbnQgaSwgaW50IGosIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0KQogewogICAgIERyYXdhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBq
KTsKICAgICBpZiAoIXRpbGUpCiAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwogICAg
IHRpbGUtPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOworICAgIHRpbGUtPnNldE9wYXF1ZVJlY3Qo
b3BhcXVlUmVjdCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
aAppbmRleCA0NzhiMDM0MDIzNDUwODE5YmJjZWEwYThkYTVhZDMyMTU2ZjU0YmQyLi43YWQ3MTU5
OWIyMTM2NTg1OGExYzVhNWY3YTljZjQyNDFlYTA2OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U2tpcHNE
cmF3KGJvb2wgc2tpcHNEcmF3KSB7IG1fc2tpcHNEcmF3ID0gc2tpcHNEcmF3OyB9CiAgICAgdm9p
ZCBzZXRUaWxpbmdEYXRhKGNvbnN0IENDTGF5ZXJUaWxpbmdEYXRhJiB0aWxlcik7Ci0gICAgdm9p
ZCBzeW5jVGV4dHVyZUlkKGludCwgaW50LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCk7Cisg
ICAgdm9pZCBwdXNoVGlsZVByb3BlcnRpZXMoaW50LCBpbnQsIFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KTsKIAogICAgIHZvaWQgc2V0Q29udGVu
dHNTd2l6emxlZChib29sIGNvbnRlbnRzU3dpenpsZWQpIHsgbV9jb250ZW50c1N3aXp6bGVkID0g
Y29udGVudHNTd2l6emxlZDsgfQogICAgIGJvb2wgY29udGVudHNTd2l6emxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudHNTd2l6emxlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCA4NjgzYjg0
YjAzY2EzNmZmY2Q4NGMyNWRiNjE5NTRmNmUyNjY0ZGMyLi5mNTk4OTNkZTkwNjQxOGY4Y2JkNzU3
NDBhZTI5MzllMjNjYzIzNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMzA3LDggKzMwNyw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExp
c3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCiAgICAgewogICAg
ICAgICBtX3F1YWRzQXBwZW5kZWQgPSB0cnVlOwotICAgICAgICAKLSAgICAgICAgT3duUHRyPEND
RHJhd1F1YWQ+IHRlc3RCbGVuZGluZ0RyYXdRdWFkID0gQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNy
ZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJlY3QoNSwgNSwgNSwgNSksIENvbG9yOjp3aGl0ZSk7
CisKKyAgICAgICAgQ29sb3IgY29sb3IgPSBtX29wYXF1ZUNvbG9yID8gQ29sb3I6OndoaXRlIDog
Q29sb3IoMCwgMCwgMCwgMCk7CisgICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0QmxlbmRp
bmdEcmF3UXVhZCA9IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBJbnRSZWN0KDUsIDUsIDUsIDUpLCBjb2xvcik7CiAgICAgICAgIEVYUEVDVF9FUShtX2JsZW5k
LCB0ZXN0QmxlbmRpbmdEcmF3UXVhZC0+bmVlZHNCbGVuZGluZygpKTsKICAgICAgICAgRVhQRUNU
X0VRKG1faGFzUmVuZGVyU3VyZmFjZSwgISFyZW5kZXJTdXJmYWNlKCkpOwogICAgIH0KQEAgLTMy
MiwxMiArMzIzLDE1IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcXVhZHNBcHBlbmRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcXVhZHNBcHBlbmRlZDsgfQogCisgICAgdm9pZCBzZXRPcGFxdWVDb2xvcihi
b29sIG9wYXF1ZUNvbG9yKSB7IG1fb3BhcXVlQ29sb3IgPSBvcGFxdWVDb2xvcjsgfQorCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IEJsZW5kU3RhdGVDaGVja0xheWVyKGludCBpZCkKICAgICAgICAg
OiBDQ0xheWVySW1wbChpZCkKICAgICAgICAgLCBtX2JsZW5kKGZhbHNlKQogICAgICAgICAsIG1f
aGFzUmVuZGVyU3VyZmFjZShmYWxzZSkKICAgICAgICAgLCBtX3F1YWRzQXBwZW5kZWQoZmFsc2Up
CisgICAgICAgICwgbV9vcGFxdWVDb2xvcih0cnVlKQogICAgIHsKICAgICAgICAgc2V0QW5jaG9y
UG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAx
MCkpOwpAQCAtMzM3LDYgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2JsZW5kOwogICAg
IGJvb2wgbV9oYXNSZW5kZXJTdXJmYWNlOwogICAgIGJvb2wgbV9xdWFkc0FwcGVuZGVkOworICAg
IGJvb2wgbV9vcGFxdWVDb2xvcjsKIH07CiAKIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NTc4MwpAQCAtMzU4LDE4ICszNjMsMzYgQEAgVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogCiAg
ICAgLy8gT3BhcXVlIGxheWVyLCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+
c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CisgICAg
bGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIG1faG9zdEltcGwtPmRy
YXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CisK
KyAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQsIGJ1dCBzb2xpZCBjb2xvciBp
cyBvcGFxdWUsIHNvIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCisgICAgbGF5ZXIxLT5zZXRPcGFx
dWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIx
LT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXll
cnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAKLSAgICAv
LyBMYXllciB3aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQsIGRyYXduIHdpdGggYmxlbmRpbmcuCisg
ICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBjb250ZW50IGFuZCBwYWludGluZywgc28gZHJh
d24gd2l0aCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZShmYWxzZSk7CisgICAgbGF5
ZXIxLT5zZXRPcGFxdWVDb2xvcihmYWxzZSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0
cnVlLCBmYWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwogICAgIEVYUEVDVF9U
UlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKIAogICAgIC8vIExheWVyIHdpdGggdHJhbnNs
dWNlbnQgb3BhY2l0eSwgZHJhd24gd2l0aCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1
ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+
c2V0T3BhY2l0eSgwLjUpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2Up
OworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjEt
PnF1YWRzQXBwZW5kZWQoKSk7CisKKyAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNp
dHkgYW5kIHBhaW50aW5nLCBkcmF3biB3aXRoIGJsZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3Bh
cXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IoZmFsc2UpOwogICAgIGxheWVy
MS0+c2V0T3BhY2l0eSgwLjUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFs
c2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKQEAgLTM4MCw5ICs0MDMsMTEgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3Bh
cXVlTGF5ZXJzKQogCiAgICAgLy8gMiBvcGFxdWUgbGF5ZXJzLCBkcmF3biB3aXRob3V0IGJsZW5k
aW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVl
Q29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDEpOwogICAgIGxheWVyMS0+c2V0
RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBsYXllcjItPnNldE9wYXF1ZSh0cnVlKTsK
KyAgICBsYXllcjItPnNldE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMi0+c2V0T3BhY2l0
eSgxKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAgbV9o
b3N0SW1wbC0+ZHJhd0xheWVycygpOwpAQCAtMzkyLDE4ICs0MTcsMzAgQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQog
ICAgIC8vIFBhcmVudCBsYXllciB3aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQsIGRyYXduIHdpdGgg
YmxlbmRpbmcuCiAgICAgLy8gQ2hpbGQgbGF5ZXIgd2l0aCBvcGFxdWUgY29udGVudCwgZHJhd24g
d2l0aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZShmYWxzZSk7CisgICAgbGF5
ZXIxLT5zZXRPcGFxdWVDb2xvcihmYWxzZSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0
cnVlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwog
ICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1
YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkp
OwogCisgICAgLy8gUGFyZW50IGxheWVyIHdpdGggdHJhbnNsdWNlbnQgY29udGVudCBidXQgb3Bh
cXVlIHBhaW50aW5nLCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgorICAgIC8vIENoaWxkIGxheWVy
IHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCisgICAgbGF5ZXIx
LT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7Cisg
ICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIGxheWVyMi0+c2V0
RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7
CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworICAgIEVYUEVDVF9U
UlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKKwogICAgIC8vIFBhcmVudCBsYXllciB3aXRo
IHRyYW5zbHVjZW50IG9wYWNpdHkgYW5kIG9wYXF1ZSBjb250ZW50LiBTaW5jZSBpdCBoYXMgYQog
ICAgIC8vIGRyYXdpbmcgY2hpbGQsIGl0J3MgZHJhd24gdG8gYSByZW5kZXIgc3VyZmFjZSB3aGlj
aCBjYXJyaWVzIHRoZSBvcGFjaXR5LAogICAgIC8vIHNvIGl0J3MgaXRzZWxmIGRyYXduIHdpdGhv
dXQgYmxlbmRpbmcuCiAgICAgLy8gQ2hpbGQgbGF5ZXIgd2l0aCBvcGFxdWUgY29udGVudCwgZHJh
d24gd2l0aG91dCBibGVuZGluZyAocGFyZW50IHN1cmZhY2UKICAgICAvLyBjYXJyaWVzIHRoZSBp
bmhlcml0ZWQgb3BhY2l0eSkuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5
ZXIxLT5zZXRPcGFxdWVDb2xvcih0cnVlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsK
ICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCB0cnVlKTsKICAgICBsYXllcjItPnNl
dEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CkBAIC00MTQsOSArNDUxLDExIEBAIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVy
cykKICAgICAvLyBEcmF3IGFnYWluLCBidXQgd2l0aCBjaGlsZCBub24tb3BhcXVlLCB0byBtYWtl
IHN1cmUKICAgICAvLyBsYXllcjEgbm90IGN1bGxlZC4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0
cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+c2V0
T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAg
ICAgbGF5ZXIyLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb2xvcih0
cnVlKTsKICAgICBsYXllcjItPnNldE9wYWNpdHkoMC41KTsKICAgICBsYXllcjItPnNldEV4cGVj
dGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CkBAIC00
MjgsMTEgKzQ2NywyNCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5n
T2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDEpOwog
ICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBsYXllcjItPnNl
dE9wYXF1ZShmYWxzZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb2xvcihmYWxzZSk7CiAgICAg
bGF5ZXIyLT5zZXRPcGFjaXR5KDEpOwogICAgIGxheWVyMi0+c2V0RXhwZWN0YXRpb24odHJ1ZSwg
ZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShs
YXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0Fw
cGVuZGVkKCkpOworCisgICAgLy8gQW5kIHdoZW4gdGhlIGxheWVyIHNheXMgaXRzIG5vdCBvcGFx
dWUgYnV0IGlzIHBhaW50ZWQgb3BhcXVlLCBpdCBpcyBub3QgYmxlbmRlZC4KKyAgICBsYXllcjEt
PnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYWNpdHkoMSk7CisgICAgbGF5ZXIx
LT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIGxheWVyMi0+c2V0T3BhcXVlKGZh
bHNlKTsKKyAgICBsYXllcjItPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMi0+c2V0
T3BhY2l0eSgxKTsKKyAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7Cisg
ICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVh
ZHNBcHBlbmRlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7
CiB9CiAKIGNsYXNzIFJlc2hhcGVUcmFja2VyQ29udGV4dDogcHVibGljIEZha2VXZWJHcmFwaGlj
c0NvbnRleHQzRCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
UXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcAppbmRleCBlZDE1ZTZjMTBlMWZlNDYyYzk0OTY4NTZkYjM5MzQ1NjlmYWI4
ODFjLi41ZWNiYjU5YzhlMDNiZmJmMTY2MzBkMDJkODkxOTcxMjEwYzM4OGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTM4
LDM1ICszOCwzNiBAQCBjbGFzcyBDQ1F1YWRDdWxsZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewogCiBjbGFzcyBUZXN0RHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CiBwdWJsaWM6
Ci0gICAgVGVzdERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJp
YWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICBUZXN0RHJhd1F1YWQoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHN0YXRlLCBNYXRlcmlhbCBtLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBJbnRSZWN0JiBvcGFxdWVSZWN0KQogICAgIDogQ0NEcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCkK
ICAgICB7CisgICAgICAgIG1fb3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7CiAgICAgfQogCi0gICAg
c3RhdGljIFBhc3NPd25QdHI8VGVzdERyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqIHN0YXRlLCBNYXRlcmlhbCBtLCBjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHN0YXRp
YyBQYXNzT3duUHRyPFRlc3REcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzdGF0ZSwgTWF0ZXJpYWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UmVjdCYg
b3BhcXVlUmVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGVzdERyYXdR
dWFkKHN0YXRlLCBtLCByZWN0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGVzdERy
YXdRdWFkKHN0YXRlLCBtLCByZWN0LCBvcGFxdWVSZWN0KSk7CiAgICAgfQogfTsKIAotdm9pZCBz
ZXRRdWFkcyhDQ1NoYXJlZFF1YWRTdGF0ZSogcm9vdFN0YXRlLCBDQ1NoYXJlZFF1YWRTdGF0ZSog
Y2hpbGRTdGF0ZSwgQ0NRdWFkTGlzdCYgcXVhZExpc3QpCit2b2lkIHNldFF1YWRzKENDU2hhcmVk
UXVhZFN0YXRlKiByb290U3RhdGUsIENDU2hhcmVkUXVhZFN0YXRlKiBjaGlsZFN0YXRlLCBDQ1F1
YWRMaXN0JiBxdWFkTGlzdCwgY29uc3QgSW50UmVjdCYgY2hpbGRPcGFxdWVSZWN0ID0gSW50UmVj
dCgpKQogewogICAgIHF1YWRMaXN0LmNsZWFyKCk7CiAKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVz
dERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIElu
dFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBw
ZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250
ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAg
IHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1
YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDApLCBJbnRTaXplKDEwMCwg
MTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0
YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwg
SW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6
Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBv
aW50KDEwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5k
KFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAg
cXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVh
ZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDIwMCksIEludFNpemUoMTAwLCAx
MDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3Rh
dGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDIwMCks
IEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6
OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQ
b2ludCgyMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotCi0gICAgcXVhZExpc3QuYXBw
ZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29u
dGVudCwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFk
TGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDAp
KSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRl
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3Jl
YXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2lu
dCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChU
ZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwg
SW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkp
OworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIEND
RHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDApLCBJbnRTaXpl
KDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0
RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50
UmVjdChJbnRQb2ludCgyMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVj
dCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUs
IENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgwLCAxMDApLCBJbnRT
aXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChU
ZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwg
SW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFx
dWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RT
dGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMTAw
KSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5h
cHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENv
bnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGls
ZE9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUo
cm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAw
LCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRM
aXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRp
bGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDAp
KSwgY2hpbGRPcGFxdWVSZWN0KSk7CisKKyAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFk
OjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KElu
dFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSwgY2hpbGRPcGFxdWVSZWN0KSk7CisgICAgcXVh
ZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6
OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAw
KSksIGNoaWxkT3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6
OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50
UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKKyAg
ICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3
UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgx
MDAsIDEwMCkpLCBjaGlsZE9wYXF1ZVJlY3QpKTsKIH0KIAogI2RlZmluZSBERUNMQVJFX0FORF9J
TklUSUFMSVpFX1RFU1RfUVVBRFMgICAgICAgICAgICAgICBcCkBAIC0xNDYsNiArMTQ3LDU0IEBA
IFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcEJvdHRvbVJpZ2h0
KQogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDl1KTsKIH0KIAorVEVTVChDQ1F1YWRD
dWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRJ
QUxJWkVfVEVTVF9RVUFEUworCisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7
CisKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVh
ZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxk
VHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwg
MS4wLCBmYWxzZSk7CisgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSAr
IGNoaWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQo
KSAvIDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpIC8gMik7CisK
KyAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0
LCBjaGlsZE9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7
CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgRVhQ
RUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKK30KKworVEVTVChDQ1F1YWRDdWxsZXJUZXN0
LCB2ZXJpZnlDdWxsU3ViUmVnaW9uMikKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RF
U1RfUVVBRFMKKworICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgMTApOworCisgICAg
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByb290U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6
Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJv
b3RSZWN0LCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBjaGlsZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjaGlsZFRyYW5zZm9y
bSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCBJbnRSZWN0KCksIDEuMCwgZmFs
c2UpOworICAgIEludFJlY3QgY2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJl
Y3Qud2lkdGgoKSAvIDQsIGNoaWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBj
aGlsZFJlY3Qud2lkdGgoKSAvIDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAqIDMgLyA0KTsKKworICAg
IHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QsIGNo
aWxkT3BhcXVlUmVjdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKKyAg
ICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOworfQorCitURVNUKENDUXVhZEN1bGxlclRlc3QsIHZl
cmlmeUN1bGxTdWJSZWdpb25DaGVja092ZXJjdWxsKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRJ
QUxJWkVfVEVTVF9RVUFEUworCisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA0OSk7
CisKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVh
ZFN0YXRlOjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxk
VHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwg
MS4wLCBmYWxzZSk7CisgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSAr
IGNoaWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQo
KSAvIDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpIC8gMik7CisK
KyAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0
LCBjaGlsZE9wYXF1ZVJlY3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7
CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgRVhQ
RUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKK30KKwogVEVTVChDQ1F1YWRDdWxsZXJUZXN0
LCB2ZXJpZnlOb25BeGlzQWxpZ25lZFF1YWRzRG9udE9jY2x1ZGUpCiB7CiAgICAgREVDTEFSRV9B
TkRfSU5JVElBTElaRV9URVNUX1FVQURTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCmluZGV4IDAyZmE3MzQ2NDJhNjFhZDlk
YTM3Y2RkMTRiMDFmZmNiZjNlN2U5ZWUuLmQ1NWMwYmMxNjQ0ZTJhODkwNzRmMmI4OWY2MWVkZjIy
MGY3ODZmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aWxlZExheWVySW1wbFRlc3QuY3BwCkBAIC00NywxMSArNDcsMTIgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8Q0NUaWxlZExheWVySW1wbD4gY3JlYXRlTGF5ZXIoY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IGNvbnN0IEkKICAgICBsYXllci0+c2V0VGlsaW5nRGF0YSgqdGlsZXIpOwogICAgIGxheWVyLT5z
ZXRTa2lwc0RyYXcoZmFsc2UpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJl
Y3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5KDEp
OwogCiAgICAgaW50IHRleHR1cmVJZCA9IDE7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aWxl
ci0+bnVtVGlsZXNYKCk7ICsraSkKICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB0aWxlci0+
bnVtVGlsZXNZKCk7ICsraikKLSAgICAgICAgICAgIGxheWVyLT5zeW5jVGV4dHVyZUlkKGksIGos
IHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KHRleHR1cmVJZCsrKSk7CisgICAgICAgICAg
ICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHN0YXRpY19jYXN0PFBsYXRmb3JtM0RP
YmplY3Q+KHRleHR1cmVJZCsrKSwgSW50UmVjdCgwLCAwLCAxLCAxKSk7CiAKICAgICByZXR1cm4g
bGF5ZXIucmVsZWFzZSgpOwogfQpAQCAtMTM1LDcgKzEzNiw3IEBAIFRFU1QoQ0NUaWxlZExheWVy
SW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
VGlsZXNYOyArK2kpCiAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtVGlsZXNZOyArK2op
Ci0gICAgICAgICAgICBsYXllci0+c3luY1RleHR1cmVJZChpLCBqLCBzdGF0aWNfY2FzdDxQbGF0
Zm9ybTNET2JqZWN0PigwKSk7CisgICAgICAgICAgICBsYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVz
KGksIGosIHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+KDApLCBJbnRSZWN0KCkpOwogCiAg
ICAgLy8gQWxsIGNoZWNrZXJib2FyZGluZwogICAgIHsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBURVNU
KENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVja2VyYm9hcmRpbmcpCiAgICAgfQogfQogCi1zdGF0
aWMgdm9pZCBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29u
c3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRp
b24gYm9yZGVyVGV4ZWxPcHRpb24sIGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpCitz
dGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gZ2V0UXVhZHMoQ0NRdWFkTGlzdCYg
cXVhZHMsIEludFNpemUgdGlsZVNpemUsIGNvbnN0IEludFNpemUmIGxheWVyU2l6ZSwgQ0NMYXll
clRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9uIGJvcmRlclRleGVsT3B0aW9uLCBjb25zdCBJ
bnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KQogewogICAgIFJlZlB0cjxDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIGJvcmRlclRleGVsT3B0
aW9uKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KTsK
QEAgLTE1NSw2ICsxNTYsNyBAQCBzdGF0aWMgdm9pZCBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFk
cywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaQogCiAgICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVk
UXVhZFN0YXRlKCk7CiAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRzLCBzaGFyZWRRdWFkU3Rh
dGUuZ2V0KCkpOworICAgIHJldHVybiBzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpOyAvLyBUaGUg
c2hhcmVkIGRhdGEgbXVzdCBiZSBvd25lZCBhcyBsb25nIGFzIHRoZSBxdWFkIGxpc3QgZXhpc3Rz
LgogfQogCiAvLyBUZXN0IHdpdGggYm90aCBib3JkZXIgdGV4ZWxzIGFuZCB3aXRob3V0LgpAQCAt
MTc0LDcgKzE3Niw4IEBAIHN0YXRpYyB2b2lkIGNvdmVyYWdlVmlzaWJsZVJlY3RPblRpbGVCb3Vu
ZGFyaWVzKENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wCiAKICAgICBJbnRTaXplIGxh
eWVyU2l6ZSgxMDAwLCAxMDAwKTsKICAgICBDQ1F1YWRMaXN0IHF1YWRzOwotICAgIGdldFF1YWRz
KHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBib3JkZXJzLCBJbnRSZWN0KElu
dFBvaW50KCksIGxheWVyU2l6ZSkpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hh
cmVkU3RhdGU7CisgICAgc2hhcmVkU3RhdGUgPSBnZXRRdWFkcyhxdWFkcywgSW50U2l6ZSgxMDAs
IDEwMCksIGxheWVyU2l6ZSwgYm9yZGVycywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUp
KTsKICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZHMsIEludFJlY3QoSW50UG9p
bnQoKSwgbGF5ZXJTaXplKSk7CiB9CiBXSVRIX0FORF9XSVRIT1VUX0JPUkRFUl9URVNUKGNvdmVy
YWdlVmlzaWJsZVJlY3RPblRpbGVCb3VuZGFyaWVzKTsKQEAgLTE5MCw3ICsxOTMsOCBAQCBzdGF0
aWMgdm9pZCBjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c1RpbGVzKENDTGF5ZXJUaWxpbmdE
YXRhOjpCb3JkZXJUZXhlbE9wdAogCiAgICAgSW50U2l6ZSBsYXllclNpemUoMjUwLCAyNTApOwog
ICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgZ2V0UXVhZHMocXVhZHMsIEludFNpemUoNTAsIDUw
KSwgSW50U2l6ZSgyNTAsIDI1MCksIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscywg
dmlzaWJsZUxheWVyUmVjdCk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRT
dGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDUwLCA1MCks
IEludFNpemUoMjUwLCAyNTApLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZp
c2libGVMYXllclJlY3QpOwogICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFkcywg
dmlzaWJsZUxheWVyUmVjdCk7CiB9CiBXSVRIX0FORF9XSVRIT1VUX0JPUkRFUl9URVNUKGNvdmVy
YWdlVmlzaWJsZVJlY3RJbnRlcnNlY3RzVGlsZXMpOwpAQCAtMjAyLDcgKzIwNiw4IEBAIHN0YXRp
YyB2b2lkIGNvdmVyYWdlVmlzaWJsZVJlY3RJbnRlcnNlY3RzQm91bmRzKENDTGF5ZXJUaWxpbmdE
YXRhOjpCb3JkZXJUZXhlbE9wCiAgICAgSW50U2l6ZSBsYXllclNpemUoMjIwLCAyMTApOwogICAg
IEludFJlY3QgdmlzaWJsZUxheWVyUmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpOwogICAgIEND
UXVhZExpc3QgcXVhZHM7Ci0gICAgZ2V0UXVhZHMocXVhZHMsIEludFNpemUoMTAwLCAxMDApLCBs
YXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscywgdmlzaWJsZUxheWVy
UmVjdCk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBz
aGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXpl
LCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVMYXllclJlY3QpOwog
ICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFkcywgdmlzaWJsZUxheWVyUmVjdCk7
CiB9CiBXSVRIX0FORF9XSVRIT1VUX0JPUkRFUl9URVNUKGNvdmVyYWdlVmlzaWJsZVJlY3RJbnRl
cnNlY3RzQm91bmRzKTsKQEAgLTIxNCw3ICsyMTksOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxU
ZXN0LCB0ZXh0dXJlSW5mb0ZvckxheWVyTm9Cb3JkZXJzKQogICAgIEludFNpemUgdGlsZVNpemUo
NTAsIDUwKTsKICAgICBJbnRTaXplIGxheWVyU2l6ZSgyNTAsIDI1MCk7CiAgICAgQ0NRdWFkTGlz
dCBxdWFkczsKLSAgICBnZXRRdWFkcyhxdWFkcywgdGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXll
clRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6
ZSkpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkU3RhdGU7CisgICAgc2hh
cmVkU3RhdGUgPSBnZXRRdWFkcyhxdWFkcywgdGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRp
bGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkp
OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkgewogICAg
ICAgICBBU1NFUlRfRVEocXVhZHNbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlRpbGVkQ29u
dGVudCkgPDwgcXVhZFN0cmluZyA8PCBpOwpAQCAtMjIzLDYgKzIyOSwyNSBAQCBURVNUKENDVGls
ZWRMYXllckltcGxUZXN0LCB0ZXh0dXJlSW5mb0ZvckxheWVyTm9Cb3JkZXJzKQogICAgICAgICBF
WFBFQ1RfTkUocXVhZC0+dGV4dHVyZUlkKCksIDB1KSA8PCBxdWFkU3RyaW5nIDw8IGk7CiAgICAg
ICAgIEVYUEVDVF9FUShxdWFkLT50ZXh0dXJlT2Zmc2V0KCksIEludFBvaW50KCkpIDw8IHF1YWRT
dHJpbmcgPDwgaTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWQtPnRleHR1cmVTaXplKCksIHRpbGVT
aXplKSA8PCBxdWFkU3RyaW5nIDw8IGk7CisgICAgICAgIEVYUEVDVF9FUShJbnRSZWN0KDAsIDAs
IDEsIDEpLCBxdWFkLT5vcGFxdWVSZWN0KCkpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICB9Cit9
CisKK1RFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIHRpbGVPcGFxdWVSZWN0Rm9yTGF5ZXJOb0Jv
cmRlcnMpCit7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7
CisKKyAgICBJbnRTaXplIHRpbGVTaXplKDUwLCA1MCk7CisgICAgSW50U2l6ZSBsYXllclNpemUo
MjUwLCAyNTApOworICAgIENDUXVhZExpc3QgcXVhZHM7CisgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCB0
aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIElu
dFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHF1YWRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEFTU0VSVF9FUShxdWFkc1tpXS0+bWF0
ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFkU3RyaW5nIDw8IGk7Cisg
ICAgICAgIENDVGlsZURyYXdRdWFkKiBxdWFkID0gc3RhdGljX2Nhc3Q8Q0NUaWxlRHJhd1F1YWQq
PihxdWFkc1tpXS5nZXQoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRKEludFJlY3QoMCwgMCwgMSwg
MSksIHF1YWQtPm9wYXF1ZVJlY3QoKSkgPDwgcXVhZFN0cmluZyA8PCBpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDMzZjY3MjBjMTYzMDU0MGJiYjg4OGJkNDkzZjVhMzhiM2Y1NTFlNzYuLjNmOTU3YmZh
MTJjM2ZiOGVhYzU1YjU0ZDZmZjlhOTUxMmE3YjM4ODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxMi0wMS0yNyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIFVzZSByZWdpb24gcmVwb3J0ZWQgcGFpbnRlZCBvcGFxdWUgZm9yIGRyYXcg
Y3VsbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzYwMTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2NvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWluLWNv
bXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
LW1hYy1sZW9wYXJkL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0
ZWQtbGF5ZXItZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtLW1hYy1zbm93bGVvcGFyZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1j
b21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS13aW4vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9z
aXRlZC1sYXllci1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXll
ci1leHBlY3RlZC5wbmc6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1saW51eC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxh
eWVyLWV4cGVjdGVkLnBuZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQ6CisKIDIwMTItMDEtMjYgIEVsaSBGaWRsZXIgIDxlZmlkbGVyQHJpbS5jb20+
CiAKICAgICAgICAgW0pTQ10gSW5zcGVjdG9yIGluc3RydW1lbnRhdGlvbiBmb3IgSmF2YVNjcmlw
dCBjYWxscy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2NvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQu
cG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY29tcG9zaXRpbmcvaWZy
YW1lcy9pZnJhbWUtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcKaW5kZXggMWQ2ZjAz
ZTE4OTdhODU1ZDMxYmRkOTIyNWJjMjNiODE0ZDJjZGQwOS4uMTE0MmZiYWZhOGZiNjRjNmIxZjk2
YTViMmRmNThhNTQ0MTA3YTY3MyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM0NjMK
emNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8
bX0/b1QhdGg9CnpMeGE+YmdII0tQNmEhMFJeQXRsJV5IZnQ0TCE7ekdCTktCSSg9P2A9RFhWfm5O
cVZ8Q2hFJlhYZClLeHxEcUVAewp6YUs8R21rR0hGQ0hlNmZLJj9DRUhYNXtJJnZKKi1sbX5MUlA0
KXdidXl5RGQzWUU9XjxuOz5OaV57bm8mcFFUUT0KenxNdlpoXnQtJTtmbm1ZdF4qaC1hNzxRTzNh
V2cyV1pEMyRYIWVvPm14QnZDRUdNSGhgKTd5OEw4VUZOJj5NJTZTCnpJS2FmdiFITDF4YClOai14
WCQkWl85PEtxK2g7RERVKTt+fDtlWF5vc007STl3e2deT19UciFPX0lBPW5pUV54RQp6O0QrU3R0
NjYqRl51QFpMN1g3UiZXfU5mKCROP3NjYHZ5Rj4tK3VkMyUlSW4rPnkjaygqa2EkKElvb2Mod2Rr
OH4KeiEwK0laITElYyRIVH1hQVZAQUNlQnhtUyM+fUc5enQrMWlOYChzR0I2ISM3JENoaT5eXjxg
NiFHM35ReldJZ2t+CnpHQjh1O2Ylb1NIZmVDZSZQMHJkZkloXkRZVntxX0VVfVFNTDAlVipxalgw
M2dtTj11RHJHWn5ATCZNRUdfd1ZuMgp6eTUoPSh8Qkk2dXcmVnloS34ldyZrMX4pMFohfFBVTHhZ
d1g8bFFxbGg4P2xMfEpKPHxXVXZFZmBuMWhBYkxSZDMKelArOy1ydkFUV1RwQzN+UzhIfjFaRmsm
bWNGdzMoY0NRQGVwb3VNRmYrVygoKy0jT3hzI3NCfTg0R00lVkpmJCNaCnp4cmB9dF9wQnwkZnV4
TlFaXzBNdHxOcnNmZ1Rad2JoVWRaJjJWOElEbkVBN31BNU9nSSQjNT5jVFl5MCFqVEttcQp6WnNU
YW9SQCVfZW96Tnw/TGslMyNWSzUlM208MzVFZmZWRFlMV1dxN1FgSHljI3J6QysqNEBvQnxJV2M2
QDA3cn0KemBEV2hzZTlLJmt3KkdsNjNzTnh5T3xPWGsrNG8xT1p9UnVCJFVSXkpSLVZ0az9eJHw5
XnV0bjRvZC0mUEIxMndyCnp7ZG1QOVItaWQ9bXNjIWZ4SStTP3hKeFlLYndAfSZYMyYyJVl3Q1E/
MCEwPXZnWns1b2YyVTM3O1hBd2Bab1BlPwp6VCpITHQ1WCZFMSp4QXwxU3RvOWQrTnM2O3FpZm5f
NldPMEh1NStqQkAzKXQ9YEZyajR7VF96JVlyfEZ4aGJAX1EKemBzdzleQ1Z5KlFlJEchbiVNeEgr
JWJHM0d3KkFsZkI4aiUmemtnNXVGSl9VcHw5LXlOPzQ4Ulc8ZF5OZkU0XlFBCnpqV15APHdAMCEh
OTRxfHRtdClTZSU9Q2hIbmhiVXFJdloyZDF1V1glM3EwNiR2fFJBdEswbF59IVk4YHQ3e2JAewp6
PSM7WCktKm8kSnBLT2U5RllCRUpJdmNLdDdXNW9yJUpVVkRjKlJ2UTdzJkdaeXg/TnlFRUJRJD8r
WXg+KmRFJGgKel9ne0ZQZTJuQ0dTIVEkOStlJFk3NGdAezh3bz8xU3dKRzh8dnZuJF94M3srXnZ0
SXs+aU1kOWRQeENSUmVAb1VpCnorJThFPDBEN3M2QDQ+UGtlMm5YRWNRJFR+VFlwIVdXbG93em9B
QUJ3SlJlJGhgdHg3P3QkTyg4PkckUSQla043YQp6enhaM1BwKihWSm5FSThnP3wpQk97Xz9yXntD
ZXdid1Q0QHJ7aDEjRSpjY2o7QTlkZWhXRHRtOFZBJUxRUzVSKX0KekZHaHhqe35NY0Y4M2NyWlZ1
cD9BakUmKU9RPCloS1hzJkBaSTdhS3QoSz9mc2J0YjQkSkhwYn5La2lfenlOMVM+ClMpVjJiOVJ0
JW81ZWxGe3I1fUUtMnZhQVJJCgpsaXRlcmFsIDM0NjQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5
fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuNXQ9CnoheFRlOSVNfDBaKU1R
S1pMPF9TZDNrITJ8T1ZoTWVReXt9UUlYWmheRDl8dHxQWiE2S2lhQnJaPyMtM1htVEN3cgp6U3x9
JVI+d3d0O0RIZWtpX01FaXJvdEdJOEdzWkFgWipVZXBQKz16VTtPa3pZdHdLTE5vRl9oYU5pSm1C
QDdIbnMKenpQYkpCJXZvWCMzPz1fZXpYUDNkLTdTSFU7UnVUdWdNJHdTPElUR3Q/KSZaWHhmKFh0
JSZ1bD0qdVN4Zmx8ZXVfCnpmYFAlWDV1TEZ5VDwtRlJybCs1TnhCRD1ERnVWTXZfPztsYktZTU1N
K1VvbWE1QSh4YkhnMndzKSk5TWJWUHxKMgp6WFB2dz9ZVkd5Y04wVDxqPS1LRCVIRWY8TTV5OXxX
eC1EX3stRmZ3VjJiT01oPHY1Y3BiQTA9aCVWb1B8a0FEPD8KeiM+bH5gbE9WVkw0YlF3OXdGOWpK
RnIkU2Q0ekx6KFMxNkVXNWk4Sn5fc1Qxb0cyOWA2UVQqWmdiKGJPemdzWDM4CnpfLVUpSil5ckN3
RFFDaVVDViRxbG8kZEA4a3E0Tz1JeWlNMDhmRnstR0lwfFkmcDJ6cVF7MnorTDZKcXdWRHw2ZAp6
enFpbFhjS15NN2x+QlZwVF8+bjJ4YmpnM2FeUWBJIyVPM2p2SnAqRSFpfkZrbT5JVGJANHRXRW1n
enZkSypXSUAKenYpTn1xJWdnYiMqWitCUHlrQ0M0NXVke2BGLTJecDdpTWBqKUl7RHJsVmV6Uz5Y
WkhiPVctOEV8OUV9Qnt3eSNNCnotMF9zY25CXzkyJGowM30qJT1+cSNKY2IxZVNhPTVGRExoRzdS
IVNnQ2hpPl52KEcremBKbGshajVYKGhwRS1nfAp6M2BmPWclaDd7a2lVcSNGcUUhJG1he1VNPnF8
YjBjY2BoKCV1d3Z8MCRXUk0lWVdtXyQtYUUjSStnb3FIZUowMkYKeno/bmxRIVIrP2laQFNCUTR9
WjhnblBDZk5wcSs3amNpPk9sb31SekcoK0BEbUN9Pjk8XyVtPCZsd0N+d09kNDVaCnpUSXs+TVZq
MUotOSQ/WnQ4WFVlLWB2RGgrJlYhfkUrN0dOYUFvYlhAalp0ZXE4OGhtJjlBSjkzRj5kfCtQbT5O
Tgp6Tj9kI1dSczlVSnokWTI3PHorSSpmZ285Wk9fKzlnRHI1WWBxRkt3NzxeTlZhZURuMUNeNSo2
RHROelh3ZTZhSXMKelJfVVJ4REA4a050WSQybXVWNEdgP1Y2YmtTPEJaYTBHJlBVZTxhYEdnOEtV
VVB4cU9RenhuP0FZP3w/Umt3MGhpCnp3cFR5Qy1jK2pqVkF0RlYtZkk/cGB7V3hoK3F+c0RYVWxx
ay1PNnlvOHk9P1RBN3EoZ3cqU3lPYnBOXzFnSEdSYAp6cW1tQ15PPkpEZD9tPXdYP3o8YkN2bG5l
X2tlPFJpWjVMREQjZlNySUdudT8mOFB7S3FJTiVHY3Yjb3E1QUE5cyEKem1hbCFNeVQkZVFeQGx6
O1lkX3dYezlzdjFianh4MTIoQ0w7ckwxPm1lTnJtI1dxdHFZIS1zLTU0YHU8d2d6YWQ1Cno9N29w
QF5SSXsmJT1ZNzFiMmFQZ0ltU0M4X1oxSjZTe3JWLV9JaGh8UV5SR1IhdiUrYSZ0dSMtO3BzPTt6
NDd7VQp6X1d0PS1eNUlNTFZ+ZVckdFJNN05Vd3pmRz5zUmdrUGJQbkJVVmhGYEtnJHdle24zekQ/
aTIkPGZsdGp1WWhZYFIKem4/ZDIqS0hXcGc7cjB2K0FNQz82RmZiJjYjTUNldC0laFBBVnFtYW42
QEBpOFhpYCN3bj0rIyZrSmlSQ3RjP2U0CmQ4b049P0Q3KktyJEAhYFI3R1IlLSFQQ3t4V3R+JCg2
OThXPVE1Km1PCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGlu
dXgvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1l
eHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3Jl
cGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBu
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M3NWE2ODlkOWE5ZjgwOTBkZjczODVm
ZTA0NTA0NGQ0ZTBhYTk1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyOTU3Cnpj
bWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19
P29UbX1uNgp6MH1EJGRpIT9KY0dsTHxmRz1ucmxCWkZqMUwtU05xMTJkRTR3QitlMDR5WjZOYUxh
cVRJRUdacmQzKG4oRTdWY0kKejtiSzt5WXZGKEUyfDZkc0NnYF80YU18JT1faFpXcyZySjcobkM4
RlQlZyllblpoQVVEMUgqQCM5NkFnUUdZJjhACnpiWmB6WU1zNGpraFdoOFhVKDB0RHtRWWcyX3U9
bzs8RDE8WDh2YWs9Nj1RSmxObm02KyFoKTZZWDRDKEt2dUVCTQp6SCNhc3U5bHdGMDtxc2p3Mlg3
Zj9Vei0qQS1pdz56ZnJ4bkNoSEpCYVphQmB3VX4hXlZkWDRTb2A8RzZZM05UbikKelk7RjglQV4x
dzA7WCF+bytja1o/N0tRXjheTFc7blpjY3hIb0d0c2M0I05XLWJHeEdYX3Bjdig+Y2hieF5aWGRs
Cno5UzFKTC1Kbjw5e1BkKEtMeEcrMkBRUXsobzJ1NkN7a31QIWYjRjk7JklTZ0NCcW5ZSzErYEpl
WGRzTkhnd2IzdQpsbmhRcEEhRHVjUlI9TDJRYWhzbSh3a3Q9WFA2NkIzNDQkcmpGNioyVW5nRGBI
WUh8UG8KCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMtbGVv
cGFyZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVy
LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1sZW9wYXJk
L2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhw
ZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjMzMTFmODNjOWZlMDVi
MjEyOThhZGM0YjRlMTViNjBiNjc2YWQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFs
IDMzOTgKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMUIlUWxZYnBSem5rQjln
Q0NNNDckPVN1RnhlTytqCnptUHNqVHNtWkN2VyhJflNDTW17LXJXV1JAN1JnREwyQzJyVGkzVWUm
VTBOOSFjeTQmUUlFR1pyZDMqUHVGU0RWNQp6ISRzM1lOLXFDSjZ9Knh4VDJ6OSNlejwrQXA4bj9J
QHRVKDA8IThedDA0LV9VZXdRNmNvbHxzUlV9KSVKVX1SdTAKelZxIyVuSUtkJm56QFZUIUc2WDtH
YF5fLSplRSE8Nl5Ke0FWeXM9fHFWMzdWMSZkMCF6IW90RDhGaE5qKGZ4Kkc4CnpmcXtXUmtgWEFD
KHBTbFM/ZTNZIUZRYztHKzVxRUU9Sl5XRjZLNyh3VzNSOFp6R2l3fTNLKVYrP3lOd0s4P0ZhMwp6
N1JCJH0jY1N0ZCYlbSZ0RVRyTCMmR2lsSVBYRmErVXwxbjVzLVFRSW5jK2EoYWg0TiV7ek0mUVZy
YU4kJG9PZVMKel5fZjN3NllzdW48YDR1YmxLQ24tO3JkdFkqQVdhMTdwJjVsZlI/e2U5fm0oK3sx
Vj5ndzZycExVPF9JYGI3RChXCnpTWDBgbEFYP1RONFVvfFFmdFNPaGlENUpgajN4JEx0KDRLK0Zg
N0d1UVNTSzN4PWMtSF58Z2o0MjAlfFNjKUkkegpKdGFEMGUwc3l2ZSpIOGNlCgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkL2Zhc3QvcmVw
YWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5n
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkL2Zhc3QvcmVw
YWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDBlOGMxOTY3OWJlMWIxOTJhZWNiZDZh
MjVlZGQxOGJjMDUyYjljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDMzOTYKemNt
ZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMUIlUWxZYnBSem5rQjlnQ0NNNDckPVN1
RnhlUTUzCno3S1VhaTdSZVRBQ2FLQVdXKXtXPHJiJmowc2oyM003TTdOJlcrdnZGU0RzO0Q7Sk4x
TTt1dW1mPWp+bFhLVzBZKAp6aEooPlp4Jns4JUdkfVg8VlowJFc7ayMwOVh2c09YSj1jMlBuaT59
fkdCQntyRThfPVJIT0lMRE5KPXM/RikqYUMKemE0O31UNUw5NGJhQnYkTGczbF95R2ZjZit6Vl8/
PEokcX4zJFQyY0JAYX56KWozWVFeQ2ZCalBQSjh5UldiTXxuCnpLNDVTaXg2RVFUR1FKKmx6NFVj
bzxyUUdpMzBQPTMpTlQ2OXp8ZTNqa2c+Pm09ZFktbTgrRXxJZTdrflNYNjJtMwp6bzRfITJjKXg8
LTxJIVJVaDh3U0VGI04xOGMqP0Bmej5zeUU8d1dqI0wqeDdENXdISkFHQjlNd2U2PzVEZX00VSgK
eldKVSZ1KkU0djVNc0p3VTBFe3Z0Q0tkKlU2QzQ1ejM8fUIpS3g9d04xcVhlQW9TOE5BclkrRXcx
I0hyekBpdi1mCndNPkZ3ZzBYQUJBazUqaXhIVGhfNUk5ZU1MdF8/cVBzdWJ6MFprPzJWbyZnOXZV
SHgzdklWQ2chMDM9eFVtO2U5KAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLXdpbi9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVk
LWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9m
YXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVj
dGVkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE1YjZkNmIzZTgyN2NkYzFj
YWQ1NTYyNjEyOTgyODc0ZDU5YTYxOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAy
OTM0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxI
YG9rPG19P29UbjU3PQp6XlRmbXl2cVRlMUxsWUNEQnk7bD0pOHImVzNqK2g9TGAkPHwlY05EJjM5
PHxmKyNIQFJqdipDdS1yaDBISjhVNHAKejtBbldGfElkSDxBSElvUCUkOzIzakFDTGgmeEJ+TGtH
YURzUSskcUBxMmIpfHRJUH14ZCEhcCM4M2NxUTcjSXdQCno3aH5pMykkQmlKLX5RXzwqIVNfNXFn
bGNKK0VgbUFoQ2poKF9gU09FPzdmM2tLUHJEQG8lNFJxeikrRjR8QTVydgp6P1dAbi1YSkZ7UUAh
cTlrb2k7LVE+cyNATjxBcHRtPCpXPkF2Zm0zVUc4fH55Ynw9QnNMWGUzZWA8QnMkYkx2aHIKemZp
aHxQZyYrUjNUZEAoU0s2bUZxQ1dlVGEyYmRULUlDVTVyWmx3S0JfPDVJJEEhMHRTNz13ZFAwd2Nv
X21RZTtSCnoxTDRANSYjeHBJODE4a0EyS1o9Vjhfald9ck9qd0E3fGpLdnhuT3dhZjtaQnZKQFJg
a2x6ZUp7NFFVMlhTM2ozXgpIUDY8cl9Geyo0VgoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBv
c2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBl
Y3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYwZmY1MDRiMzdiMGJiYzAzNzVhNjU4ZDk1OGQwMTcyYjg4
ZDYwOQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2NQp6Y21lQVNATj8ob2xIeWB1VkJxIWlh
MHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG4yO0cKelI2XyQzcWVQPTV2
JjZKQzZVIyhIbFFnclcjRlY3dWw7bEx5RygqTVNOdmp3YnhEST18SUVHWnJkMyltXj1WMW97Cno3
UlVMOFpsfjs3aiZBOFhjJWleIVJhZTVpdnVrR2xXTUhgUF5QTDw2IXZfOzRaVXpPbDRHYXVQITtH
PjJGN3Y8UQp6SW9hUF5aZD4lPHZ9SSg3SkpybX1BUnJ2VXorbClvJHsyRWk1Tio3PG53akNpOykt
RklSRUpzNDh9LWljREB7a14KbWJUbSRmV2l3JGtWR3FLREVpTntiY1hqZnNRI1hOYVU8T1pES2JM
aCoyfjdafiRKTntiCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggMDY1YzQyZDVj
MjY1ZmJjMDllZjNiMjdmMmU0NTQ4NGI5ZWY1MmI5Ny4uNTI1MTBkMjJjMzA5NjVlNjhhZjk0ZTQ3
ZTIwMTQ4NTYxNzRmYWI4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMzk5OSw2ICszOTk5LDkgQEAgQlVHX0NBUllD
TEFSSyBNQUMgOiBlZGl0aW5nL3N0eWxlL2NyZWF0ZS1ibG9jay1mb3Itc3R5bGUtMDEyLmh0bWwg
PSBJTUFHRQogQlVHX0NBUllDTEFSSyBNQUMgOiBlZGl0aW5nL3N0eWxlL2NyZWF0ZS1ibG9jay1m
b3Itc3R5bGUtMDEzLmh0bWwgPSBJTUFHRQogQlVHX0NBUllDTEFSSyBNQUMgOiBmYXN0L2RvbS9i
bHVyLWNvbnRlbnRlZGl0YWJsZS5odG1sID0gSU1BR0UKIAorLy8gTWF5IGZhaWwgaWYgdGhlc2Ug
cGxhdGZvcm1zIGRpZmZlciBmcm9tIExpbnV4LiBSZW1vdmUgdGhpcyBvciByZWJhc2VsaW5lIHRo
ZW0gb25jZSB0aGUgYnVnIGxhbmRzLgorQlVHV0s3NjAxNSBXSU4gTUFDIDogZmFzdC9yZXBhaW50
L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci5odG1sID0gSU1BR0UKKwog
Ly8gTmVlZCB0byBpbXBsZW1lbnQgZmlsZSBuYW1lIGxvZ2dpbmcuCiBCVUdXSzc2NTcyIDogaHR0
cC90ZXN0cy9kb3dubG9hZCA9IEZBSUwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124383</attachid>
            <date>2012-01-27 15:30:21 -0800</date>
            <delta_ts>2012-01-27 23:14:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120127183020.patch</filename>
            <type>text/plain</type>
            <size>48206</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBjY2Q2MGQxMDRlMGY0
OTFiZjc0Y2Q3OTg0MjJmMzcyMjA0MTYzNC4uNDQwZmJlMjI0ZWJmMjliMGM4N2M3ZGFiZjYyMzhm
NGZkMzJkNzA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAxLTI3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDVGlsZWRMYXllckltcGxUZXN0LmNwcCwgQ0NRdWFkQ3VsbGVyVGVzdC5jcHAsIENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpz
ZXRPcGFxdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDRHJhd1F1YWQ6Om9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAg
ICAgICAoQ0NEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0Js
ZW5kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRR
dWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENv
bG9yRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yRHJhd1F1YWQ6
OkNDU29saWRDb2xvckRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3
UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVE
cmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxl
RHJhd1F1YWQuaDoKKyAgICAgICAgKENDVGlsZURyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKERy
YXdhYmxlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6Om9wYXF1ZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2FibGVUaWxlOjpzZXRPcGFxdWVSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVydGllcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAg
ICAoQ0NUaWxlZExheWVySW1wbCk6CisKIDIwMTItMDEtMjcgIFZpY3RvciBDYXJidW5lICA8dmlj
dG9yQHJvc2VkdS5vcmc+CiAKICAgICAgICAgQWRkZWQgdGhlIEdlbmVyaWNFdmVudFF1ZXVlIGNs
YXNzIGluIG9yZGVyIHRvIGdlbmVyYWxpemUgYXN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGM2NjdlNmY0MjE3OTM0ZDAxOTM5ZTI4ODM5OTExMDRlNWM0YTZhOGEuLjg2
MTBjYmZiNTJlYmRlOTEzYzY3MjIyMDlkNWNkYjBiMWE4NmZjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDEtMjcgIERhbmEgSmFuc2VucyAgPGRh
bmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVc2UgcmVnaW9uIHJlcG9y
dGVkIHBhaW50ZWQgb3BhcXVlIGZvciBkcmF3IGN1bGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsZW5kU3RhdGVDaGVja0xheWVyOjphcHBlbmRRdWFk
cyk6CisgICAgICAgIChXZWJLaXQ6OkJsZW5kU3RhdGVDaGVja0xheWVyOjpzZXRPcGFxdWVDb2xv
cik6CisgICAgICAgIChCbGVuZFN0YXRlQ2hlY2tMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkJs
ZW5kU3RhdGVDaGVja0xheWVyOjpCbGVuZFN0YXRlQ2hlY2tMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNYWtlVGlsZVF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0UXVhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChDQ0xheWVyVGVzdENv
bW1vbjo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OlRFU1QpOgor
ICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OmdldFF1YWRzKToKKyAgICAgICAgKENDTGF5ZXJU
ZXN0Q29tbW9uOjpjb3ZlcmFnZVZpc2libGVSZWN0T25UaWxlQm91bmRhcmllcyk6CisgICAgICAg
IChDQ0xheWVyVGVzdENvbW1vbjo6Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNUaWxlcyk6
CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2Vj
dHNCb3VuZHMpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb24pOgorCiAyMDEyLTAxLTI3ICBG
YWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmFtZSBzaG91
bGRMYXlvdXRGaXhlZEVsZW1lbnRzUmVsYXRpdmVUb0ZyYW1lIGFuZCBtYWtlIGl0IGEgc2V0dGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCA0YTkyNzUxZjczMDgyMjQ5MDNmMDRkOTU3NWQ5
MDI3ZGM4MWQxN2FhLi5jMzFhODYwYmM3YjMzMmZjNzBmOThjNWRhMGZkMmFmMmM5OTJhMDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgTGF5ZXJDaHJv
bWl1bTo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQogICAgIGlmIChtX29wYXF1ZSA9PSBvcGFxdWUp
CiAgICAgICAgIHJldHVybjsKICAgICBtX29wYXF1ZSA9IG9wYXF1ZTsKLSAgICBzZXROZWVkc0Nv
bW1pdCgpOworICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCiB2b2lkIExheWVyQ2hyb21pdW06
OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHAKaW5kZXggZjJlMzEyMmY5NzgyNzljMjdlZTMxNzIxZTFlYzAwNjAwMmYx
MmNmMC4uYjFmNTZjN2FkNTliNGE5MWVmYmQ2M2Q0NTRmMTQ0NmNmZDkzZDcyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAg
IEludFJlY3QgbV9kaXJ0eVJlY3Q7CiAgICAgSW50UmVjdCBtX3VwZGF0ZVJlY3Q7CisgICAgSW50
UmVjdCBtX29wYXF1ZVJlY3Q7CiBwcml2YXRlOgogICAgIE93blB0cjxMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlPiBtX3RleHR1cmU7CiB9OwpAQCAtMjczLDcgKzI3NCw3IEBAIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAg
ICAgICAgaWYgKHRpbGUtPmlzRGlydHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIHRpbGVkTGF5ZXItPnN5bmNUZXh0dXJlSWQoaSwgaiwgdGlsZS0+bWFuYWdlZFRleHR1cmUo
KS0+dGV4dHVyZUlkKCkpOworICAgICAgICB0aWxlZExheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMo
aSwgaiwgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+dGV4dHVyZUlkKCksIHRpbGUtPm1fb3BhcXVl
UmVjdCk7CiAgICAgfQogfQogCkBAIC00MTgsOCArNDE5LDggQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3As
IGludAogICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRo
ZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAogICAgIC8vIHNvIHdl
IGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVu
dGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCiAgICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+
IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKLSAgICBJbnRSZWN0IG9wYXF1ZVJlY3Q7IC8v
IEZJWE1FOiB1bnVzZWQuIHJlbW92ZSB0aGlzIGFuZCBzdG9yZSBpbiB0aGUgbGF5ZXIgdG8gcGFz
cyB0byBpbXBsIGZvciBkcmF3IGN1bGxpbmcKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
VG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0Jv
cmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZvcGFxdWVSZWN0KTsKKyAgICBJbnRSZWN0
IHBhaW50ZWRPcGFxdWVSZWN0OworICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0
ZShtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4
ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSwgJnBhaW50ZWRPcGFxdWVSZWN0KTsKICAgICBmb3IgKGlu
dCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0
OyBpIDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0
aWxlQXQoaSwgaik7CkBAIC00MjgsMTIgKzQyOSwyMiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50
CiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAorICAg
ICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaik7CisK
KyAgICAgICAgICAgIC8vIFNhdmUgd2hhdCB3YXMgcGFpbnRlZCBvcGFxdWUgaW4gdGhlIHRpbGUu
IElmIGV2ZXJ5dGhpbmcgcGFpbnRlZCBpbiB0aGUgdGlsZSB3YXMgb3BhcXVlLCBhbmQgdGhlIGFy
ZWEgaXMgYSBzdWJzZXQgb2YgYW4KKyAgICAgICAgICAgIC8vIGFscmVhZHkgb3BhcXVlIGFyZWEs
IGtlZXAgdGhlIG9sZCBhcmVhLgorICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRlZFJlY3Qg
PSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIG1fcGFpbnRSZWN0KTsKKyAgICAgICAgICAgIEludFJl
Y3QgdGlsZVBhaW50ZWRPcGFxdWVSZWN0ID0gaW50ZXJzZWN0aW9uKHRpbGVSZWN0LCBwYWludGVk
T3BhcXVlUmVjdCk7CisgICAgICAgICAgICBpZiAodGlsZVBhaW50ZWRPcGFxdWVSZWN0ICE9IHRp
bGVQYWludGVkUmVjdCB8fCAhdGlsZS0+bV9vcGFxdWVSZWN0LmNvbnRhaW5zKHRpbGVQYWludGVk
T3BhcXVlUmVjdCkpCisgICAgICAgICAgICAgICAgdGlsZS0+bV9vcGFxdWVSZWN0ID0gdGlsZVBh
aW50ZWRPcGFxdWVSZWN0OworCiAgICAgICAgICAgICAvLyBVc2UgbV91cGRhdGVSZWN0IGFzIGNv
cHlBbmRDbGVhckRpcnR5IGFib3ZlIG1vdmVkIHRoZSBleGlzdGluZyBkaXJ0eSByZWN0IHRvIG1f
dXBkYXRlUmVjdC4KICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCA9IHRpbGUt
Pm1fdXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Qg
PSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKKyAgICAgICAgICAgIEludFJlY3QgZml4ZWRTaXpl
VGlsZVJlY3RXaXRoQm9yZGVycyA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAg
ICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZml4ZWRTaXplVGlsZVJlY3RXaXRoQm9yZGVyczsKICAg
ICAgICAgICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CiAgICAgICAgICAgICAv
LyBQYWludCByZWN0IG5vdCBndWFyYW50ZWVkIHRvIGxpbmUgdXAgb24gdGlsZSBib3VuZGFyaWVz
LCBzbwogICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgc291cmNlUmVjdCBkb2Vzbid0IGV4
dGVuZCBvdXRzaWRlIG9mIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAppbmRleCBlMWYwYTgwOWMx
ODdkYTdjMWE0MjE0NzMxMGRkMzlmODcyOWNlMjQyLi43MDg1MDAyNjcyMThmNmE1MDI2ZDdiZWU2
ZTIxOTkyMzY5MjIxMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcApAQCAtNTAsNiArNTAsMTUg
QEAgQ0NEcmF3UXVhZDo6Q0NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBNYXRlcmlhbCBtYXRlcmkKICAgICBBU1NFUlQobV9tYXRlcmlhbCAhPSBJbnZh
bGlkKTsKIH0KIAorSW50UmVjdCBDQ0RyYXdRdWFkOjpvcGFxdWVSZWN0KCkgY29uc3QKK3sKKyAg
ICBpZiAob3BhY2l0eSgpICE9IDEpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisgICAgaWYg
KG1fc2hhcmVkUXVhZFN0YXRlLT5pc09wYXF1ZSgpICYmIG1fcXVhZE9wYXF1ZSkKKyAgICAgICAg
cmV0dXJuIG1fcXVhZFJlY3Q7CisgICAgcmV0dXJuIG1fb3BhcXVlUmVjdDsKK30KKwogdm9pZCBD
Q0RyYXdRdWFkOjpzZXRRdWFkVmlzaWJsZVJlY3QoY29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVS
ZWN0KQogewogICAgIG1fcXVhZFZpc2libGVSZWN0ID0gcXVhZFZpc2libGVSZWN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3
UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
cmF3UXVhZC5oCmluZGV4IDU4NDFmOTliYzNkMTcxZTY4MTA5M2RlNTY2Zjc2YWFmOTdiMTkyMzIu
LjE3MzhiNGIwZTc1ZTdjYWQ5NWQ0Y2IyZjg3YmM3OWY1NTg5YzAyYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdR
dWFkLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogICAgIGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclJlY3QoKTsgfQog
ICAgIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFk
U3RhdGUtPmNsaXBSZWN0KCk7IH0KICAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4g
bV9zaGFyZWRRdWFkU3RhdGUtPm9wYWNpdHkoKTsgfQotICAgIC8vIEZvciB0aGUgcHVycG9zZXMg
b2YgY3VsbGluZywgYXJlIHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQgb3BhcXVlPwotICAgIGJv
b2wgZHJhd3NPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+aXNPcGFx
dWUoKSAmJiBtX3F1YWRPcGFxdWUgJiYgb3BhY2l0eSgpID09IDE7IH0KLSAgICBib29sIG5lZWRz
QmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkg
fHwgbV9uZWVkc0JsZW5kaW5nIHx8IG9wYWNpdHkoKSAhPSAxOyB9CisgICAgLy8gRm9yIHRoZSBw
dXJwb3NlcyBvZiBjdWxsaW5nLCB3aGF0IHBhcnQgb2YgdGhlIGNvbnRlbnRzIG9mIHRoaXMgcXVh
ZCBhcmUgb3BhcXVlPworICAgIEludFJlY3Qgb3BhcXVlUmVjdCgpIGNvbnN0OworICAgIGJvb2wg
bmVlZHNCbGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNCbGVuZGluZyB8fCBvcGFxdWVS
ZWN0KCkgIT0gbV9xdWFkUmVjdDsgfQogICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5pc0xheWVyQXhpc0FsaWduZWRJ
bnRSZWN0KCk7IH0KIAogICAgIC8vIEFsbG93cyBjaGFuZ2luZyB0aGUgcmVjdCB0aGF0IGdldHMg
ZHJhd24gdG8gbWFrZSBpdCBzbWFsbGVyLiBQYXJhbWV0ZXIgcGFzc2VkCkBAIC05Niw2ICs5Niwx
MCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gdmFyaWFibGVzLgogICAgIGJvb2wgbV9xdWFkT3BhcXVl
OwogICAgIGJvb2wgbV9uZWVkc0JsZW5kaW5nOworCisgICAgLy8gQmUgZGVmYXVsdCwgdGhpcyBy
ZWN0IGlzIGVtcHR5LiBJdCBpcyB1c2VkIHdoZW4gdGhlIHNoYXJlZCBxdWFkIHN0YXRlIGFuZCBh
Ym92ZQorICAgIC8vIHZhcmlhYmxlcyBkZXRlcm1pbmUgdGhhdCB0aGUgcXVhZCBpcyBub3QgZnVs
bHkgb3BhcXVlIGJ1dCBtYXkgYmUgcGFydGlhbGx5IG9wYXF1ZS4KKyAgICBJbnRSZWN0IG1fb3Bh
cXVlUmVjdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4IDA2NzcwZGE5
YzI2MmM2MGMwMGFmYmI4NDY4YzFiZTVkMzk3ZDBhYmQuLmJhOWM2NmU4NzQ5MjA2MjU3NWY1NTBl
YjBmNWVlZjM2ZDU1Y2Y0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApAQCAtMTEzLDgg
KzExMywxMCBAQCB2b2lkIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMoQ0NRdWFkTGlz
dCYgcXVhZExpc3QpCiAgICAgICAgICAgICBkcmF3UXVhZC0+c2V0UXVhZFZpc2libGVSZWN0KGRy
YXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1hcFJlY3QodHJhbnNmb3JtZWRWaXNp
YmxlUXVhZFJlY3QpKTsKIAogICAgICAgICAvLyBXaGVuIGFkZGluZyByZWN0IHRvIG9wYXF1ZSBy
ZWdpb24sIGRlZmxhdGUgaXQgdG8gc3RheSBjb25zZXJ2YXRpdmUuCi0gICAgICAgIGlmIChrZWVw
UXVhZCAmJiBkcmF3UXVhZC0+ZHJhd3NPcGFxdWUoKSAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNB
bGlnbmVkSW50UmVjdCgpKQotICAgICAgICAgICAgb3BhcXVlQ292ZXJhZ2VUaHVzRmFyLnVuaXRl
KFJlZ2lvbihlbmNsb3NlZEludFJlY3QoZmxvYXRUcmFuc2Zvcm1lZFJlY3QpKSk7CisgICAgICAg
IGlmIChrZWVwUXVhZCAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKSB7
CisgICAgICAgICAgICBGbG9hdFJlY3QgZmxvYXRPcGFxdWVSZWN0ID0gZHJhd1F1YWQtPnF1YWRU
cmFuc2Zvcm0oKS5tYXBSZWN0KEZsb2F0UmVjdChkcmF3UXVhZC0+b3BhcXVlUmVjdCgpKSk7Cisg
ICAgICAgICAgICBvcGFxdWVDb3ZlcmFnZVRodXNGYXIudW5pdGUoUmVnaW9uKGVuY2xvc2VkSW50
UmVjdChmbG9hdE9wYXF1ZVJlY3QpKSk7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoa2VlcFF1
YWQpCiAgICAgICAgICAgICBjdWxsZWRMaXN0LmFwcGVuZChxdWFkTGlzdFtpXS5yZWxlYXNlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwCmluZGV4IGQxYzcyOWE0
MTU3ZGQyMjE3MmI2YzgzMWQ3NzAwY2M0MjBiNGVlNmEuLjdmNmY5ODExM2Q2ZjhiOWE3Mjc4Yjk2
NzgwZjY0YmJmOTg0NTYxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVh
ZC5jcHAKQEAgLTM4LDggKzM4LDEwIEBAIENDU29saWRDb2xvckRyYXdRdWFkOjpDQ1NvbGlkQ29s
b3JEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0CiAgICAgOiBD
Q0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6U29saWRDb2xvciwgcXVhZFJl
Y3QpCiAgICAgLCBtX2NvbG9yKGNvbG9yKQogewotICAgIGlmIChtX2NvbG9yLmFscGhhKCkgIT0g
MSkKKyAgICBpZiAobV9jb2xvci5oYXNBbHBoYSgpKQogICAgICAgICBtX3F1YWRPcGFxdWUgPSBm
YWxzZTsKKyAgICBlbHNlCisgICAgICAgIG1fb3BhcXVlUmVjdCA9IHF1YWRSZWN0OwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHAKaW5kZXggZGY4MzA1MDhhMmM4MmNhMjc4YjM1
Y2NjMDA1YjNkMDc5YTFjN2ZjNi4uYjM1YjZmNjlmM2MyMDE2ZjRlMjM4NzczZjBkYzk0YzY5NTZi
MDM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaWxlRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmNwcApAQCAtMjksMTIgKzI5LDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1RpbGVEcmF3UXVhZD4gQ0NU
aWxlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0
YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQs
IGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6
ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0
RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdl
QUEpCitQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1
YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1
cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29s
IGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRv
bUVkZ2VBQSkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGlsZURyYXdRdWFkKHNoYXJl
ZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHRleHR1cmVJZCwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNp
emUsIHRleHR1cmVGaWx0ZXIsIHN3aXp6bGVDb250ZW50cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFB
LCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
Q1RpbGVEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVSZWN0LCB0ZXh0
dXJlSWQsIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBzd2l6emxl
Q29udGVudHMsIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VB
QSkpOwogfQogCi1DQ1RpbGVEcmF3UXVhZDo6Q0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFBsYXRm
b3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29u
c3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6
emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRF
ZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKQorQ0NUaWxlRHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFk
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3Qm
IHF1YWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRl
eHR1cmVJZCwgY29uc3QgSW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRl
eHR1cmVTaXplLCBHQzNEaW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBi
b29sIGxlZnRFZGdlQUEsIGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJv
dHRvbUVkZ2VBQSkKICAgICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFk
OjpUaWxlZENvbnRlbnQsIHF1YWRSZWN0KQogICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQog
ICAgICwgbV90ZXh0dXJlT2Zmc2V0KHRleHR1cmVPZmZzZXQpCkBAIC00OCw2ICs0OCw3IEBAIEND
VGlsZURyYXdRdWFkOjpDQ1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBjb25zdCBJCiB7CiAgICAgaWYgKGlzQW50aWFsaWFzZWQoKSkKICAgICAg
ICAgbV9uZWVkc0JsZW5kaW5nID0gdHJ1ZTsKKyAgICBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaAppbmRleCAxMmU1M2RiZDJhOGY1ZDFm
YjNkMzMzMTliMmMwMzExZWM1M2Y1Y2E4Li4zMzUwMWE4MDZjZmFmZjk2MGYyNGM2ZGQ2ZjFjNzgy
MGExNTc4OGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NUaWxlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3
UXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NUaWxlRHJhd1F1YWQpOwogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXpl
JiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50
cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9v
bCBib3R0b21FZGdlQUEpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBj
cmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
Y29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNv
bnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwg
R0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRn
ZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEp
OwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmVJZDsgfQogICAgIEludFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmVPZmZzZXQ7IH0KQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNB
bnRpYWxpYXNlZCgpIGNvbnN0IHsgcmV0dXJuIGxlZnRFZGdlQUEoKSB8fCB0b3BFZGdlQUEoKSB8
fCByaWdodEVkZ2VBQSgpIHx8IGJvdHRvbUVkZ2VBQSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0NU
aWxlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFk
UmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJl
T2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVy
LCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwg
Ym9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOworICAgIENDVGlsZURyYXdRdWFk
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0
IEludFJlY3QmIG9wYXF1ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJ
bnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0Rp
bnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwg
Ym9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKIAog
ICAgIFBsYXRmb3JtM0RPYmplY3QgbV90ZXh0dXJlSWQ7CiAgICAgSW50UG9pbnQgbV90ZXh0dXJl
T2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCAzNDRkNzQyNDVm
OGVjMWY1ZmRiNmMyY2IyMWRjZGI5MWNhYjQ5MTgyLi4xY2Q0Nzk5M2ViOTBjZmFlNjJhMjAxZWMy
MmQwMTRhMDM2Y2U5MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAt
NTEsOCArNTEsMTMgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQo
KSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQogICAgIHZvaWQgc2V0VGV4dHVyZUlkKFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKSB7IG1fdGV4dHVyZUlkID0gdGV4dHVyZUlkOyB9CisK
KyAgICBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWVS
ZWN0OyB9CisgICAgdm9pZCBzZXRPcGFxdWVSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3Qp
IHsgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVjdDsgfQorCiBwcml2YXRlOgogICAgIFBsYXRmb3Jt
M0RPYmplY3QgbV90ZXh0dXJlSWQ7CisgICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7CiB9OwogCiBD
Q1RpbGVkTGF5ZXJJbXBsOjpDQ1RpbGVkTGF5ZXJJbXBsKGludCBpZCkKQEAgLTE0OCw2ICsxNTMs
OSBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRM
aXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgfQogCisgICAgICAgICAgICBJbnRSZWN0IHRpbGVPcGFxdWVSZWN0ID0gdGls
ZS0+b3BhcXVlUmVjdCgpOworICAgICAgICAgICAgdGlsZU9wYXF1ZVJlY3QuaW50ZXJzZWN0KGxh
eWVyUmVjdCk7CisKICAgICAgICAgICAgIC8vIEtlZXAgdHJhY2sgb2YgaG93IHRoZSB0b3AgbGVm
dCBoYXMgbW92ZWQsIHNvIHRoZSB0ZXh0dXJlIGNhbiBiZQogICAgICAgICAgICAgLy8gb2Zmc2V0
IHRoZSBzYW1lIGFtb3VudC4KICAgICAgICAgICAgIEludFNpemUgZGlzcGxheU9mZnNldCA9IHRp
bGVSZWN0Lm1pblhNaW5ZQ29ybmVyKCkgLSBkaXNwbGF5UmVjdC5taW5YTWluWUNvcm5lcigpOwpA
QCAtMTY0LDcgKzE3Miw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NR
dWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlCiAgICAgICAgICAgICBi
b29sIGJvdHRvbUVkZ2VBQSA9IGogPT0gbV90aWxlci0+bnVtVGlsZXNZKCkgLSAxICYmIHVzZUFB
OwogCiAgICAgICAgICAgICBjb25zdCBHQzNEaW50IHRleHR1cmVGaWx0ZXIgPSBtX3RpbGVyLT5o
YXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0Nv
bnRleHQzRDo6TkVBUkVTVDsKLSAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3
UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGUtPnRleHR1cmVJZCgp
LCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6
emxlZCgpLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEp
KTsKKyAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGVPcGFxdWVSZWN0LCB0aWxlLT50ZXh0dXJlSWQo
KSwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIGNvbnRlbnRzU3dp
enpsZWQoKSwgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFB
KSk7CiAKICAgICAgICAgICAgIGlmIChoYXNEZWJ1Z0JvcmRlcnMoKSkgewogICAgICAgICAgICAg
ICAgIENvbG9yIGNvbG9yKGRlYnVnQm9yZGVyQ29sb3IoKS5yZWQoKSwgZGVidWdCb3JkZXJDb2xv
cigpLmdyZWVuKCksIGRlYnVnQm9yZGVyQ29sb3IoKS5ibHVlKCksIGRlYnVnVGlsZUJvcmRlckFs
cGhhKTsKQEAgLTE4MywxNCArMTkxLDE1IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6c2V0VGls
aW5nRGF0YShjb25zdCBDQ0xheWVyVGlsaW5nRGF0YSYgdGlsZXIpCiAgICAgKm1fdGlsZXIgPSB0
aWxlcjsKIH0KIAotdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpzeW5jVGV4dHVyZUlkKGludCBpLCBp
bnQgaiwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQpCit2b2lkIENDVGlsZWRMYXllckltcGw6
OnB1c2hUaWxlUHJvcGVydGllcyhpbnQgaSwgaW50IGosIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVy
ZUlkLCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KQogewogICAgIERyYXdhYmxlVGlsZSogdGls
ZSA9IHRpbGVBdChpLCBqKTsKICAgICBpZiAoIXRpbGUpCiAgICAgICAgIHRpbGUgPSBjcmVhdGVU
aWxlKGksIGopOwogICAgIHRpbGUtPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOworICAgIHRpbGUt
PnNldE9wYXF1ZVJlY3Qob3BhcXVlUmVjdCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGlsZWRMYXllckltcGwuaAppbmRleCA0NzhiMDM0MDIzNDUwODE5YmJjZWEwYThkYTVhZDMyMTU2
ZjU0YmQyLi43YWQ3MTU5OWIyMTM2NTg1OGExYzVhNWY3YTljZjQyNDFlYTA2OGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0U2tpcHNEcmF3KGJvb2wgc2tpcHNEcmF3KSB7IG1fc2tpcHNEcmF3ID0gc2tpcHNE
cmF3OyB9CiAgICAgdm9pZCBzZXRUaWxpbmdEYXRhKGNvbnN0IENDTGF5ZXJUaWxpbmdEYXRhJiB0
aWxlcik7Ci0gICAgdm9pZCBzeW5jVGV4dHVyZUlkKGludCwgaW50LCBQbGF0Zm9ybTNET2JqZWN0
IHRleHR1cmVJZCk7CisgICAgdm9pZCBwdXNoVGlsZVByb3BlcnRpZXMoaW50LCBpbnQsIFBsYXRm
b3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KTsKIAogICAg
IHZvaWQgc2V0Q29udGVudHNTd2l6emxlZChib29sIGNvbnRlbnRzU3dpenpsZWQpIHsgbV9jb250
ZW50c1N3aXp6bGVkID0gY29udGVudHNTd2l6emxlZDsgfQogICAgIGJvb2wgY29udGVudHNTd2l6
emxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTd2l6emxlZDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNw
cAppbmRleCA4NjgzYjg0YjAzY2EzNmZmY2Q4NGMyNWRiNjE5NTRmNmUyNjY0ZGMyLi5mNTk4OTNk
ZTkwNjQxOGY4Y2JkNzU3NDBhZTI5MzllMjNjYzIzNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAt
MzA3LDggKzMwNyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NR
dWFkTGlzdCYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUpCiAgICAgewogICAgICAgICBtX3F1YWRzQXBwZW5kZWQgPSB0cnVlOwotICAgICAgICAKLSAg
ICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IHRlc3RCbGVuZGluZ0RyYXdRdWFkID0gQ0NTb2xpZENv
bG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJlY3QoNSwgNSwgNSwgNSks
IENvbG9yOjp3aGl0ZSk7CisKKyAgICAgICAgQ29sb3IgY29sb3IgPSBtX29wYXF1ZUNvbG9yID8g
Q29sb3I6OndoaXRlIDogQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgICAgIE93blB0cjxDQ0RyYXdR
dWFkPiB0ZXN0QmxlbmRpbmdEcmF3UXVhZCA9IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUo
c2hhcmVkUXVhZFN0YXRlLCBJbnRSZWN0KDUsIDUsIDUsIDUpLCBjb2xvcik7CiAgICAgICAgIEVY
UEVDVF9FUShtX2JsZW5kLCB0ZXN0QmxlbmRpbmdEcmF3UXVhZC0+bmVlZHNCbGVuZGluZygpKTsK
ICAgICAgICAgRVhQRUNUX0VRKG1faGFzUmVuZGVyU3VyZmFjZSwgISFyZW5kZXJTdXJmYWNlKCkp
OwogICAgIH0KQEAgLTMyMiwxMiArMzIzLDE1IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcXVhZHNB
cHBlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZHNBcHBlbmRlZDsgfQogCisgICAgdm9pZCBz
ZXRPcGFxdWVDb2xvcihib29sIG9wYXF1ZUNvbG9yKSB7IG1fb3BhcXVlQ29sb3IgPSBvcGFxdWVD
b2xvcjsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEJsZW5kU3RhdGVDaGVja0xheWVyKGlu
dCBpZCkKICAgICAgICAgOiBDQ0xheWVySW1wbChpZCkKICAgICAgICAgLCBtX2JsZW5kKGZhbHNl
KQogICAgICAgICAsIG1faGFzUmVuZGVyU3VyZmFjZShmYWxzZSkKICAgICAgICAgLCBtX3F1YWRz
QXBwZW5kZWQoZmFsc2UpCisgICAgICAgICwgbV9vcGFxdWVDb2xvcih0cnVlKQogICAgIHsKICAg
ICAgICAgc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgIHNldEJvdW5k
cyhJbnRTaXplKDEwLCAxMCkpOwpAQCAtMzM3LDYgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2JsZW5kOwogICAgIGJvb2wgbV9oYXNSZW5kZXJTdXJmYWNlOwogICAgIGJvb2wgbV9xdWFk
c0FwcGVuZGVkOworICAgIGJvb2wgbV9vcGFxdWVDb2xvcjsKIH07CiAKIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc4MwpAQCAtMzU4LDE4ICszNjMsMzYgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3Bh
cXVlTGF5ZXJzKQogCiAgICAgLy8gT3BhcXVlIGxheWVyLCBkcmF3biB3aXRob3V0IGJsZW5kaW5n
LgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29s
b3IodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAg
IG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRz
QXBwZW5kZWQoKSk7CisKKyAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQsIGJ1
dCBzb2xpZCBjb2xvciBpcyBvcGFxdWUsIHNvIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCisgICAg
bGF5ZXIxLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1
ZSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIG1faG9z
dEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5k
ZWQoKSk7CiAKLSAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQsIGRyYXduIHdp
dGggYmxlbmRpbmcuCisgICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBjb250ZW50IGFuZCBw
YWludGluZywgc28gZHJhd24gd2l0aCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZShm
YWxzZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb2xvcihmYWxzZSk7CiAgICAgbGF5ZXIxLT5z
ZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygp
OwogICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKIAogICAgIC8vIExh
eWVyIHdpdGggdHJhbnNsdWNlbnQgb3BhY2l0eSwgZHJhd24gd2l0aCBibGVuZGluZy4KICAgICBs
YXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUp
OworICAgIGxheWVyMS0+c2V0T3BhY2l0eSgwLjUpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRp
b24odHJ1ZSwgZmFsc2UpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBF
Q1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CisKKyAgICAvLyBMYXllciB3aXRoIHRy
YW5zbHVjZW50IG9wYWNpdHkgYW5kIHBhaW50aW5nLCBkcmF3biB3aXRoIGJsZW5kaW5nLgorICAg
IGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IoZmFs
c2UpOwogICAgIGxheWVyMS0+c2V0T3BhY2l0eSgwLjUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0
YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKQEAgLTM4
MCw5ICs0MDMsMTEgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09m
ZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogCiAgICAgLy8gMiBvcGFxdWUgbGF5ZXJzLCBkcmF3
biB3aXRob3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOworICAgIGxh
eWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDEpOwog
ICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBsYXllcjItPnNl
dE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjItPnNldE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxh
eWVyMi0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBm
YWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwpAQCAtMzkyLDE4ICs0MTcsMzAg
QEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5n
T3BhcXVlTGF5ZXJzKQogICAgIC8vIFBhcmVudCBsYXllciB3aXRoIHRyYW5zbHVjZW50IGNvbnRl
bnQsIGRyYXduIHdpdGggYmxlbmRpbmcuCiAgICAgLy8gQ2hpbGQgbGF5ZXIgd2l0aCBvcGFxdWUg
Y29udGVudCwgZHJhd24gd2l0aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZShm
YWxzZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb2xvcihmYWxzZSk7CiAgICAgbGF5ZXIxLT5z
ZXRFeHBlY3RhdGlvbih0cnVlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihm
YWxzZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1Rf
VFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5x
dWFkc0FwcGVuZGVkKCkpOwogCisgICAgLy8gUGFyZW50IGxheWVyIHdpdGggdHJhbnNsdWNlbnQg
Y29udGVudCBidXQgb3BhcXVlIHBhaW50aW5nLCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgorICAg
IC8vIENoaWxkIGxheWVyIHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxlbmRp
bmcuCisgICAgbGF5ZXIxLT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVl
Q29sb3IodHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwor
ICAgIGxheWVyMi0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKKyAgICBtX2hvc3RJbXBs
LT5kcmF3TGF5ZXJzKCk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkp
OworICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKKwogICAgIC8vIFBh
cmVudCBsYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNpdHkgYW5kIG9wYXF1ZSBjb250ZW50LiBT
aW5jZSBpdCBoYXMgYQogICAgIC8vIGRyYXdpbmcgY2hpbGQsIGl0J3MgZHJhd24gdG8gYSByZW5k
ZXIgc3VyZmFjZSB3aGljaCBjYXJyaWVzIHRoZSBvcGFjaXR5LAogICAgIC8vIHNvIGl0J3MgaXRz
ZWxmIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCiAgICAgLy8gQ2hpbGQgbGF5ZXIgd2l0aCBvcGFx
dWUgY29udGVudCwgZHJhd24gd2l0aG91dCBibGVuZGluZyAocGFyZW50IHN1cmZhY2UKICAgICAv
LyBjYXJyaWVzIHRoZSBpbmhlcml0ZWQgb3BhY2l0eSkuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUo
dHJ1ZSk7CisgICAgbGF5ZXIxLT5zZXRPcGFxdWVDb2xvcih0cnVlKTsKICAgICBsYXllcjEtPnNl
dE9wYWNpdHkoMC41KTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCB0cnVlKTsK
ICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CkBAIC00MTQsOSArNDUx
LDExIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJh
d2luZ09wYXF1ZUxheWVycykKICAgICAvLyBEcmF3IGFnYWluLCBidXQgd2l0aCBjaGlsZCBub24t
b3BhcXVlLCB0byBtYWtlIHN1cmUKICAgICAvLyBsYXllcjEgbm90IGN1bGxlZC4KICAgICBsYXll
cjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOwog
ICAgIGxheWVyMS0+c2V0T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZh
bHNlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIyLT5z
ZXRPcGFxdWVDb2xvcih0cnVlKTsKICAgICBsYXllcjItPnNldE9wYWNpdHkoMC41KTsKICAgICBs
YXllcjItPnNldEV4cGVjdGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3
TGF5ZXJzKCk7CkBAIC00MjgsMTEgKzQ2NywyNCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIxLT5z
ZXRPcGFjaXR5KDEpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsK
ICAgICBsYXllcjItPnNldE9wYXF1ZShmYWxzZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb2xv
cihmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRPcGFjaXR5KDEpOwogICAgIGxheWVyMi0+c2V0RXhw
ZWN0YXRpb24odHJ1ZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAg
ICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUo
bGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkpOworCisgICAgLy8gQW5kIHdoZW4gdGhlIGxheWVyIHNh
eXMgaXRzIG5vdCBvcGFxdWUgYnV0IGlzIHBhaW50ZWQgb3BhcXVlLCBpdCBpcyBub3QgYmxlbmRl
ZC4KKyAgICBsYXllcjEtPnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYWNpdHko
MSk7CisgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIGxheWVy
Mi0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICBsYXllcjItPnNldE9wYXF1ZUNvbG9yKHRydWUpOwor
ICAgIGxheWVyMi0+c2V0T3BhY2l0eSgxKTsKKyAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZh
bHNlLCBmYWxzZSk7CisgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9U
UlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1
YWRzQXBwZW5kZWQoKSk7CiB9CiAKIGNsYXNzIFJlc2hhcGVUcmFja2VyQ29udGV4dDogcHVibGlj
IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAppbmRleCA5NzM4NGIwYjJmYWIwYzVlYzQ0NDVh
NzU4ZjNlNzJiOWJjMGM0NDA4Li4yOTllNWM3ZTViYzU2Y2Q0OTBmNzYxN2JmNjY0NjJmZjU0ZDkz
YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxl
clRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVy
VGVzdC5jcHAKQEAgLTM3LDI5ICszNywyOSBAQCBuYW1lc3BhY2UgewogY2xhc3MgQ0NRdWFkQ3Vs
bGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIH07CiAKLXN0YXRpYyBQYXNzT3duUHRy
PENDRHJhd1F1YWQ+IE1ha2VUaWxlUXVhZChDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIGNvbnN0
IEludFJlY3QmIHJlY3QpCitzdGF0aWMgUGFzc093blB0cjxDQ0RyYXdRdWFkPiBNYWtlVGlsZVF1
YWQoQ0NTaGFyZWRRdWFkU3RhdGUqIHN0YXRlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bnRSZWN0JiBvcGFxdWVSZWN0ID0gSW50UmVjdCgpKQogewotICAgIHJldHVybiBDQ1RpbGVEcmF3
UXVhZDo6Y3JlYXRlKHN0YXRlLCByZWN0LCAxLCBJbnRQb2ludCgxLCAxKSwgSW50U2l6ZSgxMDAs
IDEwMCksIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgcmV0dXJu
IENDVGlsZURyYXdRdWFkOjpjcmVhdGUoc3RhdGUsIHJlY3QsIGludGVyc2VjdGlvbihyZWN0LCBv
cGFxdWVSZWN0KSwgMSwgSW50UG9pbnQoMSwgMSksIEludFNpemUoMTAwLCAxMDApLCAwLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwogfQogCi12b2lkIHNldFF1YWRzKENDU2hh
cmVkUXVhZFN0YXRlKiByb290U3RhdGUsIENDU2hhcmVkUXVhZFN0YXRlKiBjaGlsZFN0YXRlLCBD
Q1F1YWRMaXN0JiBxdWFkTGlzdCkKK3ZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3RhdGUqIHJv
b3RTdGF0ZSwgQ0NTaGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVhZExpc3QmIHF1YWRM
aXN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0ID0gSW50UmVjdCgpKQogewogICAgIHF1YWRM
aXN0LmNsZWFyKCk7CiAKLSAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0
ZSwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlz
dC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgxMDAsIDAp
LCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFk
KHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgyMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkp
KTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJ
bnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBl
bmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIElu
dFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9v
dFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDIwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7
Ci0gICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50
UG9pbnQoMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5k
KE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMTAwLCAyMDApLCBJbnRT
aXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RT
dGF0ZSwgSW50UmVjdChJbnRQb2ludCgyMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwot
Ci0gICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0YXRlLCBJbnRSZWN0KElu
dFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChNYWtl
VGlsZVF1YWQoY2hpbGRTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgxMDAsIDApLCBJbnRTaXplKDEw
MCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUs
IEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVh
ZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDEw
MCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VU
aWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkp
LCBvcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3Rh
dGUsIEludFJlY3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBvcGFxdWVS
ZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJl
Y3QoSW50UG9pbnQoMjAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBvcGFxdWVSZWN0KSk7Cisg
ICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9p
bnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBvcGFxdWVSZWN0KSk7CisgICAgcXVhZExp
c3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMTAwLCAx
MDApLCBJbnRTaXplKDEwMCwgMTAwKSksIG9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBl
bmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEwMCksIElu
dFNpemUoMTAwLCAxMDApKSwgb3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtl
VGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDAsIDIwMCksIEludFNpemUoMTAw
LCAxMDApKSwgb3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQo
cm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDEwMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkp
LCBvcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3Rh
dGUsIEludFJlY3QoSW50UG9pbnQoMjAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIG9wYXF1
ZVJlY3QpKTsKKworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQoY2hpbGRTdGF0ZSwg
SW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSksIG9wYXF1ZVJlY3QpKTsKKyAg
ICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUsIEludFJlY3QoSW50UG9p
bnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBvcGFxdWVSZWN0KSk7CisgICAgcXVhZExp
c3QuYXBwZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDAsIDEw
MCksIEludFNpemUoMTAwLCAxMDApKSwgb3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVu
ZChNYWtlVGlsZVF1YWQoY2hpbGRTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIElu
dFNpemUoMTAwLCAxMDApKSwgb3BhcXVlUmVjdCkpOwogfQogCiAjZGVmaW5lIERFQ0xBUkVfQU5E
X0lOSVRJQUxJWkVfVEVTVF9RVUFEUyAgICAgICAgICAgICAgIFwKQEAgLTIwMCw2ICsyMDAsNTQg
QEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2hpbGRMaW5lc1VwQm90dG9tUmln
aHQpCiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgOXUpOwogfQogCitURVNUKENDUXVh
ZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb24pCit7CisgICAgREVDTEFSRV9BTkRfSU5J
VElBTElaRV9URVNUX1FVQURTCisKKyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUw
KTsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRR
dWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOworICAgIE93blB0cjxDQ1No
YXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hp
bGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgp
LCAxLjAsIGZhbHNlKTsKKyAgICBJbnRSZWN0IGNoaWxkT3BhcXVlUmVjdChjaGlsZFJlY3QueCgp
ICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0LCBjaGlsZFJlY3QueSgpICsgY2hpbGRSZWN0LmhlaWdo
dCgpIC8gNCwgY2hpbGRSZWN0LndpZHRoKCkgLyAyLCBjaGlsZFJlY3QuaGVpZ2h0KCkgLyAyKTsK
KworICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExp
c3QsIGNoaWxkT3BhcXVlUmVjdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1
KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBF
WFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOworfQorCitURVNUKENDUXVhZEN1bGxlclRl
c3QsIHZlcmlmeUN1bGxTdWJSZWdpb24yKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVf
VEVTVF9RVUFEUworCisgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCAxMCk7CisKKyAg
ICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRl
OjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwg
cm9vdFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+IGNoaWxkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNm
b3JtLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCBm
YWxzZSk7CisgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSArIGNoaWxk
UmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDQs
IGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpICogMyAvIDQpOworCisg
ICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwg
Y2hpbGRPcGFxdWVSZWN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwor
ICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVD
VF9FUShxdWFkTGlzdC5zaXplKCksIDEydSk7Cit9CisKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwg
dmVyaWZ5Q3VsbFN1YlJlZ2lvbkNoZWNrT3ZlcmN1bGwpCit7CisgICAgREVDTEFSRV9BTkRfSU5J
VElBTElaRV9URVNUX1FVQURTCisKKyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDQ5
KTsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRR
dWFkU3RhdGU6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOworICAgIE93blB0cjxDQ1No
YXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hp
bGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgp
LCAxLjAsIGZhbHNlKTsKKyAgICBJbnRSZWN0IGNoaWxkT3BhcXVlUmVjdChjaGlsZFJlY3QueCgp
ICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0LCBjaGlsZFJlY3QueSgpICsgY2hpbGRSZWN0LmhlaWdo
dCgpIC8gNCwgY2hpbGRSZWN0LndpZHRoKCkgLyAyLCBjaGlsZFJlY3QuaGVpZ2h0KCkgLyAyKTsK
KworICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExp
c3QsIGNoaWxkT3BhcXVlUmVjdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1
KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBF
WFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworfQorCiBURVNUKENDUXVhZEN1bGxlclRl
c3QsIHZlcmlmeU5vbkF4aXNBbGlnbmVkUXVhZHNEb250T2NjbHVkZSkKIHsKICAgICBERUNMQVJF
X0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggMDJmYTczNDY0MmE2MWFk
OWRhMzdjZGQxNGIwMWZmY2JmM2U3ZTllZS4uZDU1YzBiYzE2NDRlMmE4OTA3NGYyYjg5ZjYxZWRm
MjIwZjc4NmZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rp
bGVkTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTQ3LDExICs0NywxMiBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjcmVhdGVMYXllcihjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgY29uc3QgSQogICAgIGxheWVyLT5zZXRUaWxpbmdEYXRhKCp0aWxlcik7CiAgICAgbGF5ZXIt
PnNldFNraXBzRHJhdyhmYWxzZSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50
UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKKyAgICBsYXllci0+c2V0RHJhd09wYWNpdHko
MSk7CiAKICAgICBpbnQgdGV4dHVyZUlkID0gMTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRp
bGVyLT5udW1UaWxlc1goKTsgKytpKQogICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHRpbGVy
LT5udW1UaWxlc1koKTsgKytqKQotICAgICAgICAgICAgbGF5ZXItPnN5bmNUZXh0dXJlSWQoaSwg
aiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4odGV4dHVyZUlkKyspKTsKKyAgICAgICAg
ICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0z
RE9iamVjdD4odGV4dHVyZUlkKyspLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKIAogICAgIHJldHVy
biBsYXllci5yZWxlYXNlKCk7CiB9CkBAIC0xMzUsNyArMTM2LDcgQEAgVEVTVChDQ1RpbGVkTGF5
ZXJJbXBsVGVzdCwgY2hlY2tlcmJvYXJkaW5nKQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1UaWxlc1g7ICsraSkKICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1UaWxlc1k7ICsr
aikKLSAgICAgICAgICAgIGxheWVyLT5zeW5jVGV4dHVyZUlkKGksIGosIHN0YXRpY19jYXN0PFBs
YXRmb3JtM0RPYmplY3Q+KDApKTsKKyAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRp
ZXMoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4oMCksIEludFJlY3QoKSk7CiAK
ICAgICAvLyBBbGwgY2hlY2tlcmJvYXJkaW5nCiAgICAgewpAQCAtMTQ3LDcgKzE0OCw3IEBAIFRF
U1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKICAgICB9CiB9CiAKLXN0
YXRpYyB2b2lkIGdldFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBJbnRTaXplIHRpbGVTaXplLCBj
b25zdCBJbnRTaXplJiBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9w
dGlvbiBib3JkZXJUZXhlbE9wdGlvbiwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkK
K3N0YXRpYyBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBnZXRRdWFkcyhDQ1F1YWRMaXN0
JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xh
eWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRpb24sIGNvbnN0
IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpCiB7CiAgICAgUmVmUHRyPENDVGlsZWRMYXllcklt
cGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgYm9yZGVyVGV4ZWxP
cHRpb24pOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3Qp
OwpAQCAtMTU1LDYgKzE1Niw3IEBAIHN0YXRpYyB2b2lkIGdldFF1YWRzKENDUXVhZExpc3QmIHF1
YWRzLCBJbnRTaXplIHRpbGVTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclNpCiAKICAgICBPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFy
ZWRRdWFkU3RhdGUoKTsKICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZHMsIHNoYXJlZFF1YWRT
dGF0ZS5nZXQoKSk7CisgICAgcmV0dXJuIHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCk7IC8vIFRo
ZSBzaGFyZWQgZGF0YSBtdXN0IGJlIG93bmVkIGFzIGxvbmcgYXMgdGhlIHF1YWQgbGlzdCBleGlz
dHMuCiB9CiAKIC8vIFRlc3Qgd2l0aCBib3RoIGJvcmRlciB0ZXhlbHMgYW5kIHdpdGhvdXQuCkBA
IC0xNzQsNyArMTc2LDggQEAgc3RhdGljIHZvaWQgY292ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJv
dW5kYXJpZXMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3AKIAogICAgIEludFNpemUg
bGF5ZXJTaXplKDEwMDAsIDEwMDApOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgZ2V0UXVh
ZHMocXVhZHMsIEludFNpemUoMTAwLCAxMDApLCBsYXllclNpemUsIGJvcmRlcnMsIEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBz
aGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDEw
MCwgMTAwKSwgbGF5ZXJTaXplLCBib3JkZXJzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6
ZSkpOwogICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFkcywgSW50UmVjdChJbnRQ
b2ludCgpLCBsYXllclNpemUpKTsKIH0KIFdJVEhfQU5EX1dJVEhPVVRfQk9SREVSX1RFU1QoY292
ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMpOwpAQCAtMTkwLDcgKzE5Myw4IEBAIHN0
YXRpYyB2b2lkIGNvdmVyYWdlVmlzaWJsZVJlY3RJbnRlcnNlY3RzVGlsZXMoQ0NMYXllclRpbGlu
Z0RhdGE6OkJvcmRlclRleGVsT3B0CiAKICAgICBJbnRTaXplIGxheWVyU2l6ZSgyNTAsIDI1MCk7
CiAgICAgQ0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRRdWFkcyhxdWFkcywgSW50U2l6ZSg1MCwg
NTApLCBJbnRTaXplKDI1MCwgMjUwKSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxz
LCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJl
ZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIEludFNpemUoNTAsIDUw
KSwgSW50U2l6ZSgyNTAsIDI1MCksIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscywg
dmlzaWJsZUxheWVyUmVjdCk7CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRz
LCB2aXNpYmxlTGF5ZXJSZWN0KTsKIH0KIFdJVEhfQU5EX1dJVEhPVVRfQk9SREVSX1RFU1QoY292
ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNUaWxlcyk7CkBAIC0yMDIsNyArMjA2LDggQEAgc3Rh
dGljIHZvaWQgY292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNCb3VuZHMoQ0NMYXllclRpbGlu
Z0RhdGE6OkJvcmRlclRleGVsT3AKICAgICBJbnRTaXplIGxheWVyU2l6ZSgyMjAsIDIxMCk7CiAg
ICAgSW50UmVjdCB2aXNpYmxlTGF5ZXJSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSk7CiAgICAg
Q0NRdWFkTGlzdCBxdWFkczsKLSAgICBnZXRRdWFkcyhxdWFkcywgSW50U2l6ZSgxMDAsIDEwMCks
IGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5
ZXJSZWN0KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAg
IHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIEludFNpemUoMTAwLCAxMDApLCBsYXllclNp
emUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscywgdmlzaWJsZUxheWVyUmVjdCk7
CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRzLCB2aXNpYmxlTGF5ZXJSZWN0
KTsKIH0KIFdJVEhfQU5EX1dJVEhPVVRfQk9SREVSX1RFU1QoY292ZXJhZ2VWaXNpYmxlUmVjdElu
dGVyc2VjdHNCb3VuZHMpOwpAQCAtMjE0LDcgKzIxOSw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1w
bFRlc3QsIHRleHR1cmVJbmZvRm9yTGF5ZXJOb0JvcmRlcnMpCiAgICAgSW50U2l6ZSB0aWxlU2l6
ZSg1MCwgNTApOwogICAgIEludFNpemUgbGF5ZXJTaXplKDI1MCwgMjUwKTsKICAgICBDQ1F1YWRM
aXN0IHF1YWRzOwotICAgIGdldFF1YWRzKHF1YWRzLCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xh
eWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJT
aXplKSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBz
aGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVy
VGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXpl
KSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIEFTU0VSVF9FUShxdWFkc1tpXS0+bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRD
b250ZW50KSA8PCBxdWFkU3RyaW5nIDw8IGk7CkBAIC0yMjMsNiArMjI5LDI1IEBAIFRFU1QoQ0NU
aWxlZExheWVySW1wbFRlc3QsIHRleHR1cmVJbmZvRm9yTGF5ZXJOb0JvcmRlcnMpCiAgICAgICAg
IEVYUEVDVF9ORShxdWFkLT50ZXh0dXJlSWQoKSwgMHUpIDw8IHF1YWRTdHJpbmcgPDwgaTsKICAg
ICAgICAgRVhQRUNUX0VRKHF1YWQtPnRleHR1cmVPZmZzZXQoKSwgSW50UG9pbnQoKSkgPDwgcXVh
ZFN0cmluZyA8PCBpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZC0+dGV4dHVyZVNpemUoKSwgdGls
ZVNpemUpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICAgICAgRVhQRUNUX0VRKEludFJlY3QoMCwg
MCwgMSwgMSksIHF1YWQtPm9wYXF1ZVJlY3QoKSkgPDwgcXVhZFN0cmluZyA8PCBpOworICAgIH0K
K30KKworVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGlsZU9wYXF1ZVJlY3RGb3JMYXllck5v
Qm9yZGVycykKK3sKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2NvcGVkSW1wbFRocmVh
ZDsKKworICAgIEludFNpemUgdGlsZVNpemUoNTAsIDUwKTsKKyAgICBJbnRTaXplIGxheWVyU2l6
ZSgyNTAsIDI1MCk7CisgICAgQ0NRdWFkTGlzdCBxdWFkczsKKyAgICBPd25QdHI8Q0NTaGFyZWRR
dWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMs
IHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscywg
SW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUX0VRKHF1YWRzW2ldLT5t
YXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpIDw8IHF1YWRTdHJpbmcgPDwgaTsK
KyAgICAgICAgQ0NUaWxlRHJhd1F1YWQqIHF1YWQgPSBzdGF0aWNfY2FzdDxDQ1RpbGVEcmF3UXVh
ZCo+KHF1YWRzW2ldLmdldCgpKTsKKworICAgICAgICBFWFBFQ1RfRVEoSW50UmVjdCgwLCAwLCAx
LCAxKSwgcXVhZC0+b3BhcXVlUmVjdCgpKSA8PCBxdWFkU3RyaW5nIDw8IGk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggY2M5Y2ZjOTI3YzRiOTc0ZjA3YTMzYjY0MzlkZDE1NjM5MDllMTZiMy4uMWQyYWM0
ODgwYmUxOGY2OTkyMDVhODhhNGU3OWZhMGVkMTgzMGQ5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTAxLTI3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gVXNlIHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJh
dyBjdWxsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NjAxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtaW4t
Y29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmc6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0tbWFjLWxlb3BhcmQvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9z
aXRlZC1sYXllci1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0tbWFjLXNub3dsZW9wYXJkL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWlu
LWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtLXdpbi9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21w
b3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxh
eWVyLWV4cGVjdGVkLnBuZzogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLWxpbnV4L2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQt
bGF5ZXItZXhwZWN0ZWQucG5nLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dDoKKwogMjAxMi0wMS0yNyAgS2VuIEJ1Y2hhbmFuICA8a2VucmJAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIENyYXNoIGluIHVwZGF0ZUZpcnN0TGV0dGVyKCkgZnJvbSB1bm5l
Y2Vzc2FyeSBhbm9ueW1vdXMgYmxvY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLWxpbnV4L2NvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWluLWNvbXBvc2l0ZWQt
bGF5ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgv
Y29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5w
bmcKaW5kZXggMWQ2ZjAzZTE4OTdhODU1ZDMxYmRkOTIyNWJjMjNiODE0ZDJjZGQwOS4uMTE0MmZi
YWZhOGZiNjRjNmIxZjk2YTViMmRmNThhNTQ0MTA3YTY3MyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRj
aApsaXRlcmFsIDM0NjMKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1o
XmhsQSVAV3MkbEhgb2s8bX0/b1QhdGg9CnpMeGE+YmdII0tQNmEhMFJeQXRsJV5IZnQ0TCE7ekdC
TktCSSg9P2A9RFhWfm5OcVZ8Q2hFJlhYZClLeHxEcUVAewp6YUs8R21rR0hGQ0hlNmZLJj9DRUhY
NXtJJnZKKi1sbX5MUlA0KXdidXl5RGQzWUU9XjxuOz5OaV57bm8mcFFUUT0KenxNdlpoXnQtJTtm
bm1ZdF4qaC1hNzxRTzNhV2cyV1pEMyRYIWVvPm14QnZDRUdNSGhgKTd5OEw4VUZOJj5NJTZTCnpJ
S2FmdiFITDF4YClOai14WCQkWl85PEtxK2g7RERVKTt+fDtlWF5vc007STl3e2deT19UciFPX0lB
PW5pUV54RQp6O0QrU3R0NjYqRl51QFpMN1g3UiZXfU5mKCROP3NjYHZ5Rj4tK3VkMyUlSW4rPnkj
aygqa2EkKElvb2Mod2RrOH4KeiEwK0laITElYyRIVH1hQVZAQUNlQnhtUyM+fUc5enQrMWlOYChz
R0I2ISM3JENoaT5eXjxgNiFHM35ReldJZ2t+CnpHQjh1O2Ylb1NIZmVDZSZQMHJkZkloXkRZVntx
X0VVfVFNTDAlVipxalgwM2dtTj11RHJHWn5ATCZNRUdfd1ZuMgp6eTUoPSh8Qkk2dXcmVnloS34l
dyZrMX4pMFohfFBVTHhZd1g8bFFxbGg4P2xMfEpKPHxXVXZFZmBuMWhBYkxSZDMKelArOy1ydkFU
V1RwQzN+UzhIfjFaRmsmbWNGdzMoY0NRQGVwb3VNRmYrVygoKy0jT3hzI3NCfTg0R00lVkpmJCNa
Cnp4cmB9dF9wQnwkZnV4TlFaXzBNdHxOcnNmZ1Rad2JoVWRaJjJWOElEbkVBN31BNU9nSSQjNT5j
VFl5MCFqVEttcQp6WnNUYW9SQCVfZW96Tnw/TGslMyNWSzUlM208MzVFZmZWRFlMV1dxN1FgSHlj
I3J6QysqNEBvQnxJV2M2QDA3cn0KemBEV2hzZTlLJmt3KkdsNjNzTnh5T3xPWGsrNG8xT1p9UnVC
JFVSXkpSLVZ0az9eJHw5XnV0bjRvZC0mUEIxMndyCnp7ZG1QOVItaWQ9bXNjIWZ4SStTP3hKeFlL
YndAfSZYMyYyJVl3Q1E/MCEwPXZnWns1b2YyVTM3O1hBd2Bab1BlPwp6VCpITHQ1WCZFMSp4QXwx
U3RvOWQrTnM2O3FpZm5fNldPMEh1NStqQkAzKXQ9YEZyajR7VF96JVlyfEZ4aGJAX1EKemBzdzle
Q1Z5KlFlJEchbiVNeEgrJWJHM0d3KkFsZkI4aiUmemtnNXVGSl9VcHw5LXlOPzQ4Ulc8ZF5OZkU0
XlFBCnpqV15APHdAMCEhOTRxfHRtdClTZSU9Q2hIbmhiVXFJdloyZDF1V1glM3EwNiR2fFJBdEsw
bF59IVk4YHQ3e2JAewp6PSM7WCktKm8kSnBLT2U5RllCRUpJdmNLdDdXNW9yJUpVVkRjKlJ2UTdz
JkdaeXg/TnlFRUJRJD8rWXg+KmRFJGgKel9ne0ZQZTJuQ0dTIVEkOStlJFk3NGdAezh3bz8xU3dK
Rzh8dnZuJF94M3srXnZ0SXs+aU1kOWRQeENSUmVAb1VpCnorJThFPDBEN3M2QDQ+UGtlMm5YRWNR
JFR+VFlwIVdXbG93em9BQUJ3SlJlJGhgdHg3P3QkTyg4PkckUSQla043YQp6enhaM1BwKihWSm5F
SThnP3wpQk97Xz9yXntDZXdid1Q0QHJ7aDEjRSpjY2o7QTlkZWhXRHRtOFZBJUxRUzVSKX0KekZH
aHhqe35NY0Y4M2NyWlZ1cD9BakUmKU9RPCloS1hzJkBaSTdhS3QoSz9mc2J0YjQkSkhwYn5La2lf
enlOMVM+ClMpVjJiOVJ0JW81ZWxGe3I1fUUtMnZhQVJJCgpsaXRlcmFsIDM0NjQKemNtZUFTQE4/
KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuNXQ9
CnoheFRlOSVNfDBaKU1RS1pMPF9TZDNrITJ8T1ZoTWVReXt9UUlYWmheRDl8dHxQWiE2S2lhQnJa
PyMtM1htVEN3cgp6U3x9JVI+d3d0O0RIZWtpX01FaXJvdEdJOEdzWkFgWipVZXBQKz16VTtPa3pZ
dHdLTE5vRl9oYU5pSm1CQDdIbnMKenpQYkpCJXZvWCMzPz1fZXpYUDNkLTdTSFU7UnVUdWdNJHdT
PElUR3Q/KSZaWHhmKFh0JSZ1bD0qdVN4Zmx8ZXVfCnpmYFAlWDV1TEZ5VDwtRlJybCs1TnhCRD1E
RnVWTXZfPztsYktZTU1NK1VvbWE1QSh4YkhnMndzKSk5TWJWUHxKMgp6WFB2dz9ZVkd5Y04wVDxq
PS1LRCVIRWY8TTV5OXxXeC1EX3stRmZ3VjJiT01oPHY1Y3BiQTA9aCVWb1B8a0FEPD8KeiM+bH5g
bE9WVkw0YlF3OXdGOWpKRnIkU2Q0ekx6KFMxNkVXNWk4Sn5fc1Qxb0cyOWA2UVQqWmdiKGJPemdz
WDM4CnpfLVUpSil5ckN3RFFDaVVDViRxbG8kZEA4a3E0Tz1JeWlNMDhmRnstR0lwfFkmcDJ6cVF7
MnorTDZKcXdWRHw2ZAp6enFpbFhjS15NN2x+QlZwVF8+bjJ4YmpnM2FeUWBJIyVPM2p2SnAqRSFp
fkZrbT5JVGJANHRXRW1nenZkSypXSUAKenYpTn1xJWdnYiMqWitCUHlrQ0M0NXVke2BGLTJecDdp
TWBqKUl7RHJsVmV6Uz5YWkhiPVctOEV8OUV9Qnt3eSNNCnotMF9zY25CXzkyJGowM30qJT1+cSNK
Y2IxZVNhPTVGRExoRzdSIVNnQ2hpPl52KEcremBKbGshajVYKGhwRS1nfAp6M2BmPWclaDd7a2lV
cSNGcUUhJG1he1VNPnF8YjBjY2BoKCV1d3Z8MCRXUk0lWVdtXyQtYUUjSStnb3FIZUowMkYKeno/
bmxRIVIrP2laQFNCUTR9WjhnblBDZk5wcSs3amNpPk9sb31SekcoK0BEbUN9Pjk8XyVtPCZsd0N+
d09kNDVaCnpUSXs+TVZqMUotOSQ/WnQ4WFVlLWB2RGgrJlYhfkUrN0dOYUFvYlhAalp0ZXE4OGht
JjlBSjkzRj5kfCtQbT5OTgp6Tj9kI1dSczlVSnokWTI3PHorSSpmZ285Wk9fKzlnRHI1WWBxRkt3
NzxeTlZhZURuMUNeNSo2RHROelh3ZTZhSXMKelJfVVJ4REA4a050WSQybXVWNEdgP1Y2YmtTPEJa
YTBHJlBVZTxhYEdnOEtVVVB4cU9RenhuP0FZP3w/Umt3MGhpCnp3cFR5Qy1jK2pqVkF0RlYtZkk/
cGB7V3hoK3F+c0RYVWxxay1PNnlvOHk9P1RBN3EoZ3cqU3lPYnBOXzFnSEdSYAp6cW1tQ15PPkpE
ZD9tPXdYP3o8YkN2bG5lX2tlPFJpWjVMREQjZlNySUdudT8mOFB7S3FJTiVHY3Yjb3E1QUE5cyEK
em1hbCFNeVQkZVFeQGx6O1lkX3dYezlzdjFianh4MTIoQ0w7ckwxPm1lTnJtI1dxdHFZIS1zLTU0
YHU8d2d6YWQ1Cno9N29wQF5SSXsmJT1ZNzFiMmFQZ0ltU0M4X1oxSjZTe3JWLV9JaGh8UV5SR1Ih
diUrYSZ0dSMtO3BzPTt6NDd7VQp6X1d0PS1eNUlNTFZ+ZVckdFJNN05Vd3pmRz5zUmdrUGJQbkJV
VmhGYEtnJHdle24zekQ/aTIkPGZsdGp1WWhZYFIKem4/ZDIqS0hXcGc7cjB2K0FNQz82RmZiJjYj
TUNldC0laFBBVnFtYW42QEBpOFhpYCN3bj0rIyZrSmlSQ3RjP2U0CmQ4b049P0Q3KktyJEAhYFI3
R1IlLSFQQ3t4V3R+JCg2OThXPVE1Km1PCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29t
cG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1saW51eC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxh
eWVyLWV4cGVjdGVkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M3NWE2ODlk
OWE5ZjgwOTBkZjczODVmZTA0NTA0NGQ0ZTBhYTk1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
bGl0ZXJhbCAyOTU3CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5o
bEElQFdzJGxIYG9rPG19P29UbX1uNgp6MH1EJGRpIT9KY0dsTHxmRz1ucmxCWkZqMUwtU05xMTJk
RTR3QitlMDR5WjZOYUxhcVRJRUdacmQzKG4oRTdWY0kKejtiSzt5WXZGKEUyfDZkc0NnYF80YU18
JT1faFpXcyZySjcobkM4RlQlZyllblpoQVVEMUgqQCM5NkFnUUdZJjhACnpiWmB6WU1zNGpraFdo
OFhVKDB0RHtRWWcyX3U9bzs8RDE8WDh2YWs9Nj1RSmxObm02KyFoKTZZWDRDKEt2dUVCTQp6SCNh
c3U5bHdGMDtxc2p3Mlg3Zj9Vei0qQS1pdz56ZnJ4bkNoSEpCYVphQmB3VX4hXlZkWDRTb2A8RzZZ
M05UbikKelk7RjglQV4xdzA7WCF+bytja1o/N0tRXjheTFc7blpjY3hIb0d0c2M0I05XLWJHeEdY
X3Bjdig+Y2hieF5aWGRsCno5UzFKTC1Kbjw5e1BkKEtMeEcrMkBRUXsobzJ1NkN7a31QIWYjRjk7
JklTZ0NCcW5ZSzErYEplWGRzTkhnd2IzdQpsbmhRcEEhRHVjUlI9TDJRYWhzbSh3a3Q9WFA2NkIz
NDQkcmpGNioyVW5nRGBIWUh8UG8KCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS1tYWMtbGVvcGFyZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1j
b21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtLW1hYy1sZW9wYXJkL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBv
c2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
YjMzMTFmODNjOWZlMDViMjEyOThhZGM0YjRlMTViNjBiNjc2YWQ5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpsaXRlcmFsIDMzOTgKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5p
MUIlUWxZYnBSem5rQjlnQ0NNNDckPVN1RnhlTytqCnptUHNqVHNtWkN2VyhJflNDTW17LXJXV1JA
N1JnREwyQzJyVGkzVWUmVTBOOSFjeTQmUUlFR1pyZDMqUHVGU0RWNQp6ISRzM1lOLXFDSjZ9Knh4
VDJ6OSNlejwrQXA4bj9JQHRVKDA8IThedDA0LV9VZXdRNmNvbHxzUlV9KSVKVX1SdTAKelZxIyVu
SUtkJm56QFZUIUc2WDtHYF5fLSplRSE8Nl5Ke0FWeXM9fHFWMzdWMSZkMCF6IW90RDhGaE5qKGZ4
Kkc4CnpmcXtXUmtgWEFDKHBTbFM/ZTNZIUZRYztHKzVxRUU9Sl5XRjZLNyh3VzNSOFp6R2l3fTNL
KVYrP3lOd0s4P0ZhMwp6N1JCJH0jY1N0ZCYlbSZ0RVRyTCMmR2lsSVBYRmErVXwxbjVzLVFRSW5j
K2EoYWg0TiV7ek0mUVZyYU4kJG9PZVMKel5fZjN3NllzdW48YDR1YmxLQ24tO3JkdFkqQVdhMTdw
JjVsZlI/e2U5fm0oK3sxVj5ndzZycExVPF9JYGI3RChXCnpTWDBgbEFYP1RONFVvfFFmdFNPaGlE
NUpgajN4JEx0KDRLK0ZgN0d1UVNTSzN4PWMtSF58Z2o0MjAlfFNjKUkkegpKdGFEMGUwc3l2ZSpI
OGNlCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3ds
ZW9wYXJkL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5
ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3ds
ZW9wYXJkL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5
ZXItZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDBlOGMxOTY3
OWJlMWIxOTJhZWNiZDZhMjVlZGQxOGJjMDUyYjljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgps
aXRlcmFsIDMzOTYKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMUIlUWxZYnBS
em5rQjlnQ0NNNDckPVN1RnhlUTUzCno3S1VhaTdSZVRBQ2FLQVdXKXtXPHJiJmowc2oyM003TTdO
JlcrdnZGU0RzO0Q7Sk4xTTt1dW1mPWp+bFhLVzBZKAp6aEooPlp4Jns4JUdkfVg8VlowJFc7ayMw
OVh2c09YSj1jMlBuaT59fkdCQntyRThfPVJIT0lMRE5KPXM/RikqYUMKemE0O31UNUw5NGJhQnYk
TGczbF95R2ZjZit6Vl8/PEokcX4zJFQyY0JAYX56KWozWVFeQ2ZCalBQSjh5UldiTXxuCnpLNDVT
aXg2RVFUR1FKKmx6NFVjbzxyUUdpMzBQPTMpTlQ2OXp8ZTNqa2c+Pm09ZFktbTgrRXxJZTdrflNY
NjJtMwp6bzRfITJjKXg8LTxJIVJVaDh3U0VGI04xOGMqP0Bmej5zeUU8d1dqI0wqeDdENXdISkFH
QjlNd2U2PzVEZX00VSgKeldKVSZ1KkU0djVNc0p3VTBFe3Z0Q0tkKlU2QzQ1ejM8fUIpS3g9d04x
cVhlQW9TOE5BclkrRXcxI0hyekBpdi1mCndNPkZ3ZzBYQUJBazUqaXhIVGhfNUk5ZU1MdF8/cVBz
dWJ6MFprPzJWbyZnOXZVSHgzdklWQ2chMDM9eFVtO2U5KAoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdh
cC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLXdpbi9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3Np
dGVkLWxheWVyLWV4cGVjdGVkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE1
YjZkNmIzZTgyN2NkYzFjYWQ1NTYyNjEyOTgyODc0ZDU5YTYxOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2Qw
MDAwMQoKbGl0ZXJhbCAyOTM0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAq
Wik9aF5obEElQFdzJGxIYG9rPG19P29UbjU3PQp6XlRmbXl2cVRlMUxsWUNEQnk7bD0pOHImVzNq
K2g9TGAkPHwlY05EJjM5PHxmKyNIQFJqdipDdS1yaDBISjhVNHAKejtBbldGfElkSDxBSElvUCUk
OzIzakFDTGgmeEJ+TGtHYURzUSskcUBxMmIpfHRJUH14ZCEhcCM4M2NxUTcjSXdQCno3aH5pMykk
QmlKLX5RXzwqIVNfNXFnbGNKK0VgbUFoQ2poKF9gU09FPzdmM2tLUHJEQG8lNFJxeikrRjR8QTVy
dgp6P1dAbi1YSkZ7UUAhcTlrb2k7LVE+cyNATjxBcHRtPCpXPkF2Zm0zVUc4fH55Ynw9QnNMWGUz
ZWA8QnMkYkx2aHIKemZpaHxQZyYrUjNUZEAoU0s2bUZxQ1dlVGEyYmRULUlDVTVyWmx3S0JfPDVJ
JEEhMHRTNz13ZFAwd2NvX21RZTtSCnoxTDRANSYjeHBJODE4a0EyS1o9Vjhfald9ck9qd0E3fGpL
dnhuT3dhZjtaQnZKQFJga2x6ZUp7NFFVMlhTM2ozXgpIUDY8cl9Geyo0VgoKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rp
b24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9z
aXRlZC1sYXllci1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYwZmY1MDRiMzdiMGJiYzAzNzVh
NjU4ZDk1OGQwMTcyYjg4ZDYwOQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2NQp6Y21lQVNA
Tj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG4y
O0cKelI2XyQzcWVQPTV2JjZKQzZVIyhIbFFnclcjRlY3dWw7bEx5RygqTVNOdmp3YnhEST18SUVH
WnJkMyltXj1WMW97Cno3UlVMOFpsfjs3aiZBOFhjJWleIVJhZTVpdnVrR2xXTUhgUF5QTDw2IXZf
OzRaVXpPbDRHYXVQITtHPjJGN3Y8UQp6SW9hUF5aZD4lPHZ9SSg3SkpybX1BUnJ2VXorbClvJHsy
RWk1Tio3PG53akNpOyktRklSRUpzNDh9LWljREB7a14KbWJUbSRmV2l3JGtWR3FLREVpTntiY1hq
ZnNRI1hOYVU8T1pES2JMaCoyfjdafiRKTntiCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQK
aW5kZXggZjI2ZmFmNDY3NDRkMDIzZmY2NjhkYzc5NDgxZTBlMWNiNWQ0ZmRjMi4uOTE3YjczYTc2
MzQ3OTI3YzUzMGE0YmUwMjZmM2VjYzE3N2JhOWUyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtNDAxMSw2ICs0MDEx
LDkgQEAgQlVHX0NBUllDTEFSSyBNQUMgOiBlZGl0aW5nL3N0eWxlL2NyZWF0ZS1ibG9jay1mb3It
c3R5bGUtMDEyLmh0bWwgPSBJTUFHRQogQlVHX0NBUllDTEFSSyBNQUMgOiBlZGl0aW5nL3N0eWxl
L2NyZWF0ZS1ibG9jay1mb3Itc3R5bGUtMDEzLmh0bWwgPSBJTUFHRQogQlVHX0NBUllDTEFSSyBN
QUMgOiBmYXN0L2RvbS9ibHVyLWNvbnRlbnRlZGl0YWJsZS5odG1sID0gSU1BR0UKIAorLy8gTWF5
IGZhaWwgaWYgdGhlc2UgcGxhdGZvcm1zIGRpZmZlciBmcm9tIExpbnV4LiBSZW1vdmUgdGhpcyBv
ciByZWJhc2VsaW5lIHRoZW0gb25jZSB0aGUgYnVnIGxhbmRzLgorQlVHV0s3NjAxNSBXSU4gTUFD
IDogZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci5o
dG1sID0gSU1BR0UKKwogLy8gTmVlZCB0byBpbXBsZW1lbnQgZmlsZSBuYW1lIGxvZ2dpbmcuCiBC
VUdXSzc2NTcyIDogaHR0cC90ZXN0cy9kb3dubG9hZCA9IEZBSUwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124431</attachid>
            <date>2012-01-27 23:14:19 -0800</date>
            <delta_ts>2012-01-30 16:29:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76015-20120128021418.patch</filename>
            <type>text/plain</type>
            <size>48077</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBjY2Q2MGQxMDRlMGY0
OTFiZjc0Y2Q3OTg0MjJmMzcyMjA0MTYzNC4uNDQwZmJlMjI0ZWJmMjliMGM4N2M3ZGFiZjYyMzhm
NGZkMzJkNzA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAxLTI3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB1bml0IHRlc3RzIGlu
IENDVGlsZWRMYXllckltcGxUZXN0LmNwcCwgQ0NRdWFkQ3VsbGVyVGVzdC5jcHAsIENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpz
ZXRPcGFxdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDRHJhd1F1YWQ6Om9wYXF1ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAg
ICAgICAoQ0NEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpuZWVkc0Js
ZW5kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRR
dWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENv
bG9yRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yRHJhd1F1YWQ6
OkNDU29saWRDb2xvckRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3
UXVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZURyYXdRdWFkOjpDQ1RpbGVE
cmF3UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxl
RHJhd1F1YWQuaDoKKyAgICAgICAgKENDVGlsZURyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKERy
YXdhYmxlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3YWJsZVRpbGU6Om9wYXF1ZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd2FibGVUaWxlOjpzZXRPcGFxdWVSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVydGllcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAg
ICAoQ0NUaWxlZExheWVySW1wbCk6CisKIDIwMTItMDEtMjcgIFZpY3RvciBDYXJidW5lICA8dmlj
dG9yQHJvc2VkdS5vcmc+CiAKICAgICAgICAgQWRkZWQgdGhlIEdlbmVyaWNFdmVudFF1ZXVlIGNs
YXNzIGluIG9yZGVyIHRvIGdlbmVyYWxpemUgYXN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGM2NjdlNmY0MjE3OTM0ZDAxOTM5ZTI4ODM5OTExMDRlNWM0YTZhOGEuLjg2
MTBjYmZiNTJlYmRlOTEzYzY3MjIyMDlkNWNkYjBiMWE4NmZjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDEtMjcgIERhbmEgSmFuc2VucyAgPGRh
bmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVc2UgcmVnaW9uIHJlcG9y
dGVkIHBhaW50ZWQgb3BhcXVlIGZvciBkcmF3IGN1bGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkJsZW5kU3RhdGVDaGVja0xheWVyOjphcHBlbmRRdWFk
cyk6CisgICAgICAgIChXZWJLaXQ6OkJsZW5kU3RhdGVDaGVja0xheWVyOjpzZXRPcGFxdWVDb2xv
cik6CisgICAgICAgIChCbGVuZFN0YXRlQ2hlY2tMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkJs
ZW5kU3RhdGVDaGVja0xheWVyOjpCbGVuZFN0YXRlQ2hlY2tMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNYWtlVGlsZVF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0UXVhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiB0ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChDQ0xheWVyVGVzdENv
bW1vbjo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OlRFU1QpOgor
ICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OmdldFF1YWRzKToKKyAgICAgICAgKENDTGF5ZXJU
ZXN0Q29tbW9uOjpjb3ZlcmFnZVZpc2libGVSZWN0T25UaWxlQm91bmRhcmllcyk6CisgICAgICAg
IChDQ0xheWVyVGVzdENvbW1vbjo6Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNUaWxlcyk6
CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6Y292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2Vj
dHNCb3VuZHMpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb24pOgorCiAyMDEyLTAxLTI3ICBG
YWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmFtZSBzaG91
bGRMYXlvdXRGaXhlZEVsZW1lbnRzUmVsYXRpdmVUb0ZyYW1lIGFuZCBtYWtlIGl0IGEgc2V0dGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCA0YTkyNzUxZjczMDgyMjQ5MDNmMDRkOTU3NWQ5
MDI3ZGM4MWQxN2FhLi5jMzFhODYwYmM3YjMzMmZjNzBmOThjNWRhMGZkMmFmMmM5OTJhMDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgTGF5ZXJDaHJv
bWl1bTo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQogICAgIGlmIChtX29wYXF1ZSA9PSBvcGFxdWUp
CiAgICAgICAgIHJldHVybjsKICAgICBtX29wYXF1ZSA9IG9wYXF1ZTsKLSAgICBzZXROZWVkc0Nv
bW1pdCgpOworICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCiB2b2lkIExheWVyQ2hyb21pdW06
OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHAKaW5kZXggZjJlMzEyMmY5NzgyNzljMjdlZTMxNzIxZTFlYzAwNjAwMmYx
MmNmMC4uYWIzYzM2NWEwNmFmYmRjYWQwMzUxY2NiNDRjNTRlMWQ1YzFhYWE0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAg
IEludFJlY3QgbV9kaXJ0eVJlY3Q7CiAgICAgSW50UmVjdCBtX3VwZGF0ZVJlY3Q7CisgICAgSW50
UmVjdCBtX29wYXF1ZVJlY3Q7CiBwcml2YXRlOgogICAgIE93blB0cjxMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlPiBtX3RleHR1cmU7CiB9OwpAQCAtMjczLDcgKzI3NCw3IEBAIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAg
ICAgICAgaWYgKHRpbGUtPmlzRGlydHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIHRpbGVkTGF5ZXItPnN5bmNUZXh0dXJlSWQoaSwgaiwgdGlsZS0+bWFuYWdlZFRleHR1cmUo
KS0+dGV4dHVyZUlkKCkpOworICAgICAgICB0aWxlZExheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMo
aSwgaiwgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+dGV4dHVyZUlkKCksIHRpbGUtPm1fb3BhcXVl
UmVjdCk7CiAgICAgfQogfQogCkBAIC00MTgsOCArNDE5LDggQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3As
IGludAogICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRo
ZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAogICAgIC8vIHNvIHdl
IGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVu
dGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCiAgICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+
IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKLSAgICBJbnRSZWN0IG9wYXF1ZVJlY3Q7IC8v
IEZJWE1FOiB1bnVzZWQuIHJlbW92ZSB0aGlzIGFuZCBzdG9yZSBpbiB0aGUgbGF5ZXIgdG8gcGFz
cyB0byBpbXBsIGZvciBkcmF3IGN1bGxpbmcKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
VG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0Jv
cmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZvcGFxdWVSZWN0KTsKKyAgICBJbnRSZWN0
IHBhaW50ZWRPcGFxdWVSZWN0OworICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0
ZShtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4
ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSwgJnBhaW50ZWRPcGFxdWVSZWN0KTsKICAgICBmb3IgKGlu
dCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0
OyBpIDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0
aWxlQXQoaSwgaik7CkBAIC00MjgsMTEgKzQyOSwyMSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50
CiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAorICAg
ICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaik7CisK
KyAgICAgICAgICAgIC8vIFNhdmUgd2hhdCB3YXMgcGFpbnRlZCBvcGFxdWUgaW4gdGhlIHRpbGUu
IElmIGV2ZXJ5dGhpbmcgcGFpbnRlZCBpbiB0aGUgdGlsZSB3YXMgb3BhcXVlLCBhbmQgdGhlIGFy
ZWEgaXMgYSBzdWJzZXQgb2YgYW4KKyAgICAgICAgICAgIC8vIGFscmVhZHkgb3BhcXVlIGFyZWEs
IGtlZXAgdGhlIG9sZCBhcmVhLgorICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRlZFJlY3Qg
PSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIG1fcGFpbnRSZWN0KTsKKyAgICAgICAgICAgIEludFJl
Y3QgdGlsZVBhaW50ZWRPcGFxdWVSZWN0ID0gaW50ZXJzZWN0aW9uKHRpbGVSZWN0LCBwYWludGVk
T3BhcXVlUmVjdCk7CisgICAgICAgICAgICBpZiAodGlsZVBhaW50ZWRPcGFxdWVSZWN0ICE9IHRp
bGVQYWludGVkUmVjdCB8fCAhdGlsZS0+bV9vcGFxdWVSZWN0LmNvbnRhaW5zKHRpbGVQYWludGVk
T3BhcXVlUmVjdCkpCisgICAgICAgICAgICAgICAgdGlsZS0+bV9vcGFxdWVSZWN0ID0gdGlsZVBh
aW50ZWRPcGFxdWVSZWN0OworCiAgICAgICAgICAgICAvLyBVc2UgbV91cGRhdGVSZWN0IGFzIGNv
cHlBbmRDbGVhckRpcnR5IGFib3ZlIG1vdmVkIHRoZSBleGlzdGluZyBkaXJ0eSByZWN0IHRvIG1f
dXBkYXRlUmVjdC4KICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCA9IHRpbGUt
Pm1fdXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCisgICAgICAgICAgICAvLyBzb3VyY2VSZWN0IHN0YXJ0
cyBhcyBhIGZ1bGwtc2l6ZWQgdGlsZSB3aXRoIGJvcmRlciB0ZXhlbHMgaW5jbHVkZWQuCiAgICAg
ICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKICAg
ICAgICAgICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CiAgICAgICAgICAgICAv
LyBQYWludCByZWN0IG5vdCBndWFyYW50ZWVkIHRvIGxpbmUgdXAgb24gdGlsZSBib3VuZGFyaWVz
LCBzbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAppbmRleCBlMWYwYTgwOWMxODdkYTdjMWE0MjE0NzMx
MGRkMzlmODcyOWNlMjQyLi43MDg1MDAyNjcyMThmNmE1MDI2ZDdiZWU2ZTIxOTkyMzY5MjIxMzdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcApAQCAtNTAsNiArNTAsMTUgQEAgQ0NEcmF3UXVhZDo6
Q0NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBNYXRl
cmlhbCBtYXRlcmkKICAgICBBU1NFUlQobV9tYXRlcmlhbCAhPSBJbnZhbGlkKTsKIH0KIAorSW50
UmVjdCBDQ0RyYXdRdWFkOjpvcGFxdWVSZWN0KCkgY29uc3QKK3sKKyAgICBpZiAob3BhY2l0eSgp
ICE9IDEpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisgICAgaWYgKG1fc2hhcmVkUXVhZFN0
YXRlLT5pc09wYXF1ZSgpICYmIG1fcXVhZE9wYXF1ZSkKKyAgICAgICAgcmV0dXJuIG1fcXVhZFJl
Y3Q7CisgICAgcmV0dXJuIG1fb3BhcXVlUmVjdDsKK30KKwogdm9pZCBDQ0RyYXdRdWFkOjpzZXRR
dWFkVmlzaWJsZVJlY3QoY29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVSZWN0KQogewogICAgIG1f
cXVhZFZpc2libGVSZWN0ID0gcXVhZFZpc2libGVSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCmluZGV4
IDU4NDFmOTliYzNkMTcxZTY4MTA5M2RlNTY2Zjc2YWFmOTdiMTkyMzIuLjE3MzhiNGIwZTc1ZTdj
YWQ5NWQ0Y2IyZjg3YmM3OWY1NTg5YzAyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAgLTUxLDkg
KzUxLDkgQEAgcHVibGljOgogICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclJlY3QoKTsgfQogICAgIGNvbnN0IEludFJl
Y3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmNsaXBSZWN0
KCk7IH0KICAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3Rh
dGUtPm9wYWNpdHkoKTsgfQotICAgIC8vIEZvciB0aGUgcHVycG9zZXMgb2YgY3VsbGluZywgYXJl
IHRoZSBjb250ZW50cyBvZiB0aGlzIHF1YWQgb3BhcXVlPwotICAgIGJvb2wgZHJhd3NPcGFxdWUo
KSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+aXNPcGFxdWUoKSAmJiBtX3F1YWRP
cGFxdWUgJiYgb3BhY2l0eSgpID09IDE7IH0KLSAgICBib29sIG5lZWRzQmxlbmRpbmcoKSBjb25z
dCB7IHJldHVybiAhbV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkgfHwgbV9uZWVkc0JsZW5k
aW5nIHx8IG9wYWNpdHkoKSAhPSAxOyB9CisgICAgLy8gRm9yIHRoZSBwdXJwb3NlcyBvZiBjdWxs
aW5nLCB3aGF0IHBhcnQgb2YgdGhlIGNvbnRlbnRzIG9mIHRoaXMgcXVhZCBhcmUgb3BhcXVlPwor
ICAgIEludFJlY3Qgb3BhcXVlUmVjdCgpIGNvbnN0OworICAgIGJvb2wgbmVlZHNCbGVuZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNCbGVuZGluZyB8fCBvcGFxdWVSZWN0KCkgIT0gbV9xdWFk
UmVjdDsgfQogICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCk7IH0KIAog
ICAgIC8vIEFsbG93cyBjaGFuZ2luZyB0aGUgcmVjdCB0aGF0IGdldHMgZHJhd24gdG8gbWFrZSBp
dCBzbWFsbGVyLiBQYXJhbWV0ZXIgcGFzc2VkCkBAIC05Niw2ICs5NiwxMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgLy8gdmFyaWFibGVzLgogICAgIGJvb2wgbV9xdWFkT3BhcXVlOwogICAgIGJvb2wgbV9u
ZWVkc0JsZW5kaW5nOworCisgICAgLy8gQmUgZGVmYXVsdCwgdGhpcyByZWN0IGlzIGVtcHR5LiBJ
dCBpcyB1c2VkIHdoZW4gdGhlIHNoYXJlZCBxdWFkIHN0YXRlIGFuZCBhYm92ZQorICAgIC8vIHZh
cmlhYmxlcyBkZXRlcm1pbmUgdGhhdCB0aGUgcXVhZCBpcyBub3QgZnVsbHkgb3BhcXVlIGJ1dCBt
YXkgYmUgcGFydGlhbGx5IG9wYXF1ZS4KKyAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4IDA2NzcwZGE5YzI2MmM2MGMwMGFmYmI4
NDY4YzFiZTVkMzk3ZDBhYmQuLmJhOWM2NmU4NzQ5MjA2MjU3NWY1NTBlYjBmNWVlZjM2ZDU1Y2Y0
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApAQCAtMTEzLDggKzExMywxMCBAQCB2b2lk
IENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QpCiAg
ICAgICAgICAgICBkcmF3UXVhZC0+c2V0UXVhZFZpc2libGVSZWN0KGRyYXdRdWFkLT5xdWFkVHJh
bnNmb3JtKCkuaW52ZXJzZSgpLm1hcFJlY3QodHJhbnNmb3JtZWRWaXNpYmxlUXVhZFJlY3QpKTsK
IAogICAgICAgICAvLyBXaGVuIGFkZGluZyByZWN0IHRvIG9wYXF1ZSByZWdpb24sIGRlZmxhdGUg
aXQgdG8gc3RheSBjb25zZXJ2YXRpdmUuCi0gICAgICAgIGlmIChrZWVwUXVhZCAmJiBkcmF3UXVh
ZC0+ZHJhd3NPcGFxdWUoKSAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgp
KQotICAgICAgICAgICAgb3BhcXVlQ292ZXJhZ2VUaHVzRmFyLnVuaXRlKFJlZ2lvbihlbmNsb3Nl
ZEludFJlY3QoZmxvYXRUcmFuc2Zvcm1lZFJlY3QpKSk7CisgICAgICAgIGlmIChrZWVwUXVhZCAm
JiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKSB7CisgICAgICAgICAgICBG
bG9hdFJlY3QgZmxvYXRPcGFxdWVSZWN0ID0gZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBS
ZWN0KEZsb2F0UmVjdChkcmF3UXVhZC0+b3BhcXVlUmVjdCgpKSk7CisgICAgICAgICAgICBvcGFx
dWVDb3ZlcmFnZVRodXNGYXIudW5pdGUoUmVnaW9uKGVuY2xvc2VkSW50UmVjdChmbG9hdE9wYXF1
ZVJlY3QpKSk7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoa2VlcFF1YWQpCiAgICAgICAgICAg
ICBjdWxsZWRMaXN0LmFwcGVuZChxdWFkTGlzdFtpXS5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9y
RHJhd1F1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuY3BwCmluZGV4IGQxYzcyOWE0MTU3ZGQyMjE3MmI2Yzgz
MWQ3NzAwY2M0MjBiNGVlNmEuLjdmNmY5ODExM2Q2ZjhiOWE3Mjc4Yjk2NzgwZjY0YmJmOTg0NTYx
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckRyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5jcHAKQEAgLTM4LDgg
KzM4LDEwIEBAIENDU29saWRDb2xvckRyYXdRdWFkOjpDQ1NvbGlkQ29sb3JEcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0CiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJl
ZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6U29saWRDb2xvciwgcXVhZFJlY3QpCiAgICAgLCBtX2Nv
bG9yKGNvbG9yKQogewotICAgIGlmIChtX2NvbG9yLmFscGhhKCkgIT0gMSkKKyAgICBpZiAobV9j
b2xvci5oYXNBbHBoYSgpKQogICAgICAgICBtX3F1YWRPcGFxdWUgPSBmYWxzZTsKKyAgICBlbHNl
CisgICAgICAgIG1fb3BhcXVlUmVjdCA9IHF1YWRSZWN0OwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVEcmF3UXVhZC5jcHAKaW5kZXggZGY4MzA1MDhhMmM4MmNhMjc4YjM1Y2NjMDA1YjNkMDc5YTFj
N2ZjNi4uYjM1YjZmNjlmM2MyMDE2ZjRlMjM4NzczZjBkYzk0YzY5NTZiMDM5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJh
d1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZURyYXdRdWFkLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1RpbGVEcmF3UXVhZD4gQ0NUaWxlRHJhd1F1YWQ6OmNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50
JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0
dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRv
cEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpCitQYXNzT3duUHRy
PENDVGlsZURyYXdRdWFkPiBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25zdCBJ
bnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50
UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNEaW50
IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEsIGJv
b2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGlsZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVh
ZFJlY3QsIHRleHR1cmVJZCwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0
ZXIsIHN3aXp6bGVDb250ZW50cywgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwg
Ym90dG9tRWRnZUFBKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RpbGVEcmF3UXVhZChz
aGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBvcGFxdWVSZWN0LCB0ZXh0dXJlSWQsIHRleHR1cmVP
ZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBzd2l6emxlQ29udGVudHMsIGxlZnRF
ZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogfQogCi1DQ1Rp
bGVEcmF3UXVhZDo6Q0NUaWxlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVyZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4
dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRlciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJv
b2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEsIGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90
dG9tRWRnZUFBKQorQ0NUaWxlRHJhd1F1YWQ6OkNDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBjb25z
dCBJbnRSZWN0JiBvcGFxdWVSZWN0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3Qg
SW50UG9pbnQmIHRleHR1cmVPZmZzZXQsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBHQzNE
aW50IHRleHR1cmVGaWx0ZXIsIGJvb2wgc3dpenpsZUNvbnRlbnRzLCBib29sIGxlZnRFZGdlQUEs
IGJvb2wgdG9wRWRnZUFBLCBib29sIHJpZ2h0RWRnZUFBLCBib29sIGJvdHRvbUVkZ2VBQSkKICAg
ICA6IENDRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQs
IHF1YWRSZWN0KQogICAgICwgbV90ZXh0dXJlSWQodGV4dHVyZUlkKQogICAgICwgbV90ZXh0dXJl
T2Zmc2V0KHRleHR1cmVPZmZzZXQpCkBAIC00OCw2ICs0OCw3IEBAIENDVGlsZURyYXdRdWFkOjpD
Q1RpbGVEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBj
b25zdCBJCiB7CiAgICAgaWYgKGlzQW50aWFsaWFzZWQoKSkKICAgICAgICAgbV9uZWVkc0JsZW5k
aW5nID0gdHJ1ZTsKKyAgICBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlRHJhd1F1YWQuaAppbmRleCAxMmU1M2RiZDJhOGY1ZDFmYjNkMzMzMTliMmMwMzEx
ZWM1M2Y1Y2E4Li4zMzUwMWE4MDZjZmFmZjk2MGYyNGM2ZGQ2ZjFjNzgyMGExNTc4OGM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ0NUaWxlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ0NUaWxlRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNv
bnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwg
R0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRn
ZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEp
OworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZURyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgY29uc3QgSW50UmVjdCYg
b3BhcXVlUmVjdCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0
ZXh0dXJlT2Zmc2V0LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJl
RmlsdGVyLCBib29sIHN3aXp6bGVDb250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVk
Z2VBQSwgYm9vbCByaWdodEVkZ2VBQSwgYm9vbCBib3R0b21FZGdlQUEpOwogCiAgICAgUGxhdGZv
cm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQogICAg
IEludFBvaW50IHRleHR1cmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVPZmZzZXQ7
IH0KQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbnRpYWxpYXNlZCgpIGNv
bnN0IHsgcmV0dXJuIGxlZnRFZGdlQUEoKSB8fCB0b3BFZGdlQUEoKSB8fCByaWdodEVkZ2VBQSgp
IHx8IGJvdHRvbUVkZ2VBQSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0NUaWxlRHJhd1F1YWQoY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlSWQsIGNvbnN0IEludFBvaW50JiB0ZXh0dXJlT2Zmc2V0LCBjb25zdCBJ
bnRTaXplJiB0ZXh0dXJlU2l6ZSwgR0MzRGludCB0ZXh0dXJlRmlsdGVyLCBib29sIHN3aXp6bGVD
b250ZW50cywgYm9vbCBsZWZ0RWRnZUFBLCBib29sIHRvcEVkZ2VBQSwgYm9vbCByaWdodEVkZ2VB
QSwgYm9vbCBib3R0b21FZGdlQUEpOworICAgIENDVGlsZURyYXdRdWFkKGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1
ZVJlY3QsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRQb2ludCYgdGV4dHVy
ZU9mZnNldCwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIEdDM0RpbnQgdGV4dHVyZUZpbHRl
ciwgYm9vbCBzd2l6emxlQ29udGVudHMsIGJvb2wgbGVmdEVkZ2VBQSwgYm9vbCB0b3BFZGdlQUEs
IGJvb2wgcmlnaHRFZGdlQUEsIGJvb2wgYm90dG9tRWRnZUFBKTsKIAogICAgIFBsYXRmb3JtM0RP
YmplY3QgbV90ZXh0dXJlSWQ7CiAgICAgSW50UG9pbnQgbV90ZXh0dXJlT2Zmc2V0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxl
ZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCAzNDRkNzQyNDVmOGVjMWY1ZmRiNmMyY2Iy
MWRjZGI5MWNhYjQ5MTgyLi4xY2Q0Nzk5M2ViOTBjZmFlNjJhMjAxZWMyMmQwMTRhMDM2Y2U5MjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtNTEsOCArNTEsMTMgQEAg
cHVibGljOgogCiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVy
biBtX3RleHR1cmVJZDsgfQogICAgIHZvaWQgc2V0VGV4dHVyZUlkKFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZUlkKSB7IG1fdGV4dHVyZUlkID0gdGV4dHVyZUlkOyB9CisKKyAgICBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWVSZWN0OyB9CisgICAgdm9p
ZCBzZXRPcGFxdWVSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpIHsgbV9vcGFxdWVSZWN0
ID0gb3BhcXVlUmVjdDsgfQorCiBwcml2YXRlOgogICAgIFBsYXRmb3JtM0RPYmplY3QgbV90ZXh0
dXJlSWQ7CisgICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7CiB9OwogCiBDQ1RpbGVkTGF5ZXJJbXBs
OjpDQ1RpbGVkTGF5ZXJJbXBsKGludCBpZCkKQEAgLTE0OCw2ICsxNTMsOSBAQCB2b2lkIENDVGls
ZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQog
CisgICAgICAgICAgICBJbnRSZWN0IHRpbGVPcGFxdWVSZWN0ID0gdGlsZS0+b3BhcXVlUmVjdCgp
OworICAgICAgICAgICAgdGlsZU9wYXF1ZVJlY3QuaW50ZXJzZWN0KGxheWVyUmVjdCk7CisKICAg
ICAgICAgICAgIC8vIEtlZXAgdHJhY2sgb2YgaG93IHRoZSB0b3AgbGVmdCBoYXMgbW92ZWQsIHNv
IHRoZSB0ZXh0dXJlIGNhbiBiZQogICAgICAgICAgICAgLy8gb2Zmc2V0IHRoZSBzYW1lIGFtb3Vu
dC4KICAgICAgICAgICAgIEludFNpemUgZGlzcGxheU9mZnNldCA9IHRpbGVSZWN0Lm1pblhNaW5Z
Q29ybmVyKCkgLSBkaXNwbGF5UmVjdC5taW5YTWluWUNvcm5lcigpOwpAQCAtMTY0LDcgKzE3Miw3
IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExp
c3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlCiAgICAgICAgICAgICBib29sIGJvdHRvbUVkZ2VB
QSA9IGogPT0gbV90aWxlci0+bnVtVGlsZXNZKCkgLSAxICYmIHVzZUFBOwogCiAgICAgICAgICAg
ICBjb25zdCBHQzNEaW50IHRleHR1cmVGaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMo
KSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVT
VDsKLSAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGUtPnRleHR1cmVJZCgpLCB0ZXh0dXJlT2Zmc2V0
LCB0ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRn
ZUFBLCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICAgICAgICAg
IHF1YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwg
dGlsZVJlY3QsIHRpbGVPcGFxdWVSZWN0LCB0aWxlLT50ZXh0dXJlSWQoKSwgdGV4dHVyZU9mZnNl
dCwgdGV4dHVyZVNpemUsIHRleHR1cmVGaWx0ZXIsIGNvbnRlbnRzU3dpenpsZWQoKSwgbGVmdEVk
Z2VBQSwgdG9wRWRnZUFBLCByaWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7CiAKICAgICAgICAg
ICAgIGlmIChoYXNEZWJ1Z0JvcmRlcnMoKSkgewogICAgICAgICAgICAgICAgIENvbG9yIGNvbG9y
KGRlYnVnQm9yZGVyQ29sb3IoKS5yZWQoKSwgZGVidWdCb3JkZXJDb2xvcigpLmdyZWVuKCksIGRl
YnVnQm9yZGVyQ29sb3IoKS5ibHVlKCksIGRlYnVnVGlsZUJvcmRlckFscGhhKTsKQEAgLTE4Mywx
NCArMTkxLDE1IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6c2V0VGlsaW5nRGF0YShjb25zdCBD
Q0xheWVyVGlsaW5nRGF0YSYgdGlsZXIpCiAgICAgKm1fdGlsZXIgPSB0aWxlcjsKIH0KIAotdm9p
ZCBDQ1RpbGVkTGF5ZXJJbXBsOjpzeW5jVGV4dHVyZUlkKGludCBpLCBpbnQgaiwgUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlSWQpCit2b2lkIENDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVy
dGllcyhpbnQgaSwgaW50IGosIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0KQogewogICAgIERyYXdhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBq
KTsKICAgICBpZiAoIXRpbGUpCiAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwogICAg
IHRpbGUtPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOworICAgIHRpbGUtPnNldE9wYXF1ZVJlY3Qo
b3BhcXVlUmVjdCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
aAppbmRleCA0NzhiMDM0MDIzNDUwODE5YmJjZWEwYThkYTVhZDMyMTU2ZjU0YmQyLi43YWQ3MTU5
OWIyMTM2NTg1OGExYzVhNWY3YTljZjQyNDFlYTA2OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U2tpcHNE
cmF3KGJvb2wgc2tpcHNEcmF3KSB7IG1fc2tpcHNEcmF3ID0gc2tpcHNEcmF3OyB9CiAgICAgdm9p
ZCBzZXRUaWxpbmdEYXRhKGNvbnN0IENDTGF5ZXJUaWxpbmdEYXRhJiB0aWxlcik7Ci0gICAgdm9p
ZCBzeW5jVGV4dHVyZUlkKGludCwgaW50LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCk7Cisg
ICAgdm9pZCBwdXNoVGlsZVByb3BlcnRpZXMoaW50LCBpbnQsIFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KTsKIAogICAgIHZvaWQgc2V0Q29udGVu
dHNTd2l6emxlZChib29sIGNvbnRlbnRzU3dpenpsZWQpIHsgbV9jb250ZW50c1N3aXp6bGVkID0g
Y29udGVudHNTd2l6emxlZDsgfQogICAgIGJvb2wgY29udGVudHNTd2l6emxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudHNTd2l6emxlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCA4NjgzYjg0
YjAzY2EzNmZmY2Q4NGMyNWRiNjE5NTRmNmUyNjY0ZGMyLi5mNTk4OTNkZTkwNjQxOGY4Y2JkNzU3
NDBhZTI5MzllMjNjYzIzNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMzA3LDggKzMwNyw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExp
c3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCiAgICAgewogICAg
ICAgICBtX3F1YWRzQXBwZW5kZWQgPSB0cnVlOwotICAgICAgICAKLSAgICAgICAgT3duUHRyPEND
RHJhd1F1YWQ+IHRlc3RCbGVuZGluZ0RyYXdRdWFkID0gQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNy
ZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJlY3QoNSwgNSwgNSwgNSksIENvbG9yOjp3aGl0ZSk7
CisKKyAgICAgICAgQ29sb3IgY29sb3IgPSBtX29wYXF1ZUNvbG9yID8gQ29sb3I6OndoaXRlIDog
Q29sb3IoMCwgMCwgMCwgMCk7CisgICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0QmxlbmRp
bmdEcmF3UXVhZCA9IENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBJbnRSZWN0KDUsIDUsIDUsIDUpLCBjb2xvcik7CiAgICAgICAgIEVYUEVDVF9FUShtX2JsZW5k
LCB0ZXN0QmxlbmRpbmdEcmF3UXVhZC0+bmVlZHNCbGVuZGluZygpKTsKICAgICAgICAgRVhQRUNU
X0VRKG1faGFzUmVuZGVyU3VyZmFjZSwgISFyZW5kZXJTdXJmYWNlKCkpOwogICAgIH0KQEAgLTMy
MiwxMiArMzIzLDE1IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcXVhZHNBcHBlbmRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcXVhZHNBcHBlbmRlZDsgfQogCisgICAgdm9pZCBzZXRPcGFxdWVDb2xvcihi
b29sIG9wYXF1ZUNvbG9yKSB7IG1fb3BhcXVlQ29sb3IgPSBvcGFxdWVDb2xvcjsgfQorCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IEJsZW5kU3RhdGVDaGVja0xheWVyKGludCBpZCkKICAgICAgICAg
OiBDQ0xheWVySW1wbChpZCkKICAgICAgICAgLCBtX2JsZW5kKGZhbHNlKQogICAgICAgICAsIG1f
aGFzUmVuZGVyU3VyZmFjZShmYWxzZSkKICAgICAgICAgLCBtX3F1YWRzQXBwZW5kZWQoZmFsc2Up
CisgICAgICAgICwgbV9vcGFxdWVDb2xvcih0cnVlKQogICAgIHsKICAgICAgICAgc2V0QW5jaG9y
UG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAx
MCkpOwpAQCAtMzM3LDYgKzM0MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2JsZW5kOwogICAg
IGJvb2wgbV9oYXNSZW5kZXJTdXJmYWNlOwogICAgIGJvb2wgbV9xdWFkc0FwcGVuZGVkOworICAg
IGJvb2wgbV9vcGFxdWVDb2xvcjsKIH07CiAKIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NTc4MwpAQCAtMzU4LDE4ICszNjMsMzYgQEAgVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogCiAg
ICAgLy8gT3BhcXVlIGxheWVyLCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgogICAgIGxheWVyMS0+
c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CisgICAg
bGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIG1faG9zdEltcGwtPmRy
YXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CisK
KyAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQsIGJ1dCBzb2xpZCBjb2xvciBp
cyBvcGFxdWUsIHNvIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCisgICAgbGF5ZXIxLT5zZXRPcGFx
dWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIx
LT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXll
cnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAKLSAgICAv
LyBMYXllciB3aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQsIGRyYXduIHdpdGggYmxlbmRpbmcuCisg
ICAgLy8gTGF5ZXIgd2l0aCB0cmFuc2x1Y2VudCBjb250ZW50IGFuZCBwYWludGluZywgc28gZHJh
d24gd2l0aCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZShmYWxzZSk7CisgICAgbGF5
ZXIxLT5zZXRPcGFxdWVDb2xvcihmYWxzZSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0
cnVlLCBmYWxzZSk7CiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOwogICAgIEVYUEVDVF9U
UlVFKGxheWVyMS0+cXVhZHNBcHBlbmRlZCgpKTsKIAogICAgIC8vIExheWVyIHdpdGggdHJhbnNs
dWNlbnQgb3BhY2l0eSwgZHJhd24gd2l0aCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1
ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMS0+
c2V0T3BhY2l0eSgwLjUpOworICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFsc2Up
OworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjEt
PnF1YWRzQXBwZW5kZWQoKSk7CisKKyAgICAvLyBMYXllciB3aXRoIHRyYW5zbHVjZW50IG9wYWNp
dHkgYW5kIHBhaW50aW5nLCBkcmF3biB3aXRoIGJsZW5kaW5nLgorICAgIGxheWVyMS0+c2V0T3Bh
cXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IoZmFsc2UpOwogICAgIGxheWVy
MS0+c2V0T3BhY2l0eSgwLjUpOwogICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24odHJ1ZSwgZmFs
c2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKQEAgLTM4MCw5ICs0MDMsMTEgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3Bh
cXVlTGF5ZXJzKQogCiAgICAgLy8gMiBvcGFxdWUgbGF5ZXJzLCBkcmF3biB3aXRob3V0IGJsZW5k
aW5nLgogICAgIGxheWVyMS0+c2V0T3BhcXVlKHRydWUpOworICAgIGxheWVyMS0+c2V0T3BhcXVl
Q29sb3IodHJ1ZSk7CiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDEpOwogICAgIGxheWVyMS0+c2V0
RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBsYXllcjItPnNldE9wYXF1ZSh0cnVlKTsK
KyAgICBsYXllcjItPnNldE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMi0+c2V0T3BhY2l0
eSgxKTsKICAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAgICAgbV9o
b3N0SW1wbC0+ZHJhd0xheWVycygpOwpAQCAtMzkyLDE4ICs0MTcsMzAgQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQog
ICAgIC8vIFBhcmVudCBsYXllciB3aXRoIHRyYW5zbHVjZW50IGNvbnRlbnQsIGRyYXduIHdpdGgg
YmxlbmRpbmcuCiAgICAgLy8gQ2hpbGQgbGF5ZXIgd2l0aCBvcGFxdWUgY29udGVudCwgZHJhd24g
d2l0aG91dCBibGVuZGluZy4KICAgICBsYXllcjEtPnNldE9wYXF1ZShmYWxzZSk7CisgICAgbGF5
ZXIxLT5zZXRPcGFxdWVDb2xvcihmYWxzZSk7CiAgICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbih0
cnVlLCBmYWxzZSk7CiAgICAgbGF5ZXIyLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOwog
ICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShsYXllcjEtPnF1
YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0FwcGVuZGVkKCkp
OwogCisgICAgLy8gUGFyZW50IGxheWVyIHdpdGggdHJhbnNsdWNlbnQgY29udGVudCBidXQgb3Bh
cXVlIHBhaW50aW5nLCBkcmF3biB3aXRob3V0IGJsZW5kaW5nLgorICAgIC8vIENoaWxkIGxheWVy
IHdpdGggb3BhcXVlIGNvbnRlbnQsIGRyYXduIHdpdGhvdXQgYmxlbmRpbmcuCisgICAgbGF5ZXIx
LT5zZXRPcGFxdWUoZmFsc2UpOworICAgIGxheWVyMS0+c2V0T3BhcXVlQ29sb3IodHJ1ZSk7Cisg
ICAgbGF5ZXIxLT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIGxheWVyMi0+c2V0
RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7
CisgICAgRVhQRUNUX1RSVUUobGF5ZXIxLT5xdWFkc0FwcGVuZGVkKCkpOworICAgIEVYUEVDVF9U
UlVFKGxheWVyMi0+cXVhZHNBcHBlbmRlZCgpKTsKKwogICAgIC8vIFBhcmVudCBsYXllciB3aXRo
IHRyYW5zbHVjZW50IG9wYWNpdHkgYW5kIG9wYXF1ZSBjb250ZW50LiBTaW5jZSBpdCBoYXMgYQog
ICAgIC8vIGRyYXdpbmcgY2hpbGQsIGl0J3MgZHJhd24gdG8gYSByZW5kZXIgc3VyZmFjZSB3aGlj
aCBjYXJyaWVzIHRoZSBvcGFjaXR5LAogICAgIC8vIHNvIGl0J3MgaXRzZWxmIGRyYXduIHdpdGhv
dXQgYmxlbmRpbmcuCiAgICAgLy8gQ2hpbGQgbGF5ZXIgd2l0aCBvcGFxdWUgY29udGVudCwgZHJh
d24gd2l0aG91dCBibGVuZGluZyAocGFyZW50IHN1cmZhY2UKICAgICAvLyBjYXJyaWVzIHRoZSBp
bmhlcml0ZWQgb3BhY2l0eSkuCiAgICAgbGF5ZXIxLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5
ZXIxLT5zZXRPcGFxdWVDb2xvcih0cnVlKTsKICAgICBsYXllcjEtPnNldE9wYWNpdHkoMC41KTsK
ICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCB0cnVlKTsKICAgICBsYXllcjItPnNl
dEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CkBAIC00MTQsOSArNDUxLDExIEBAIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxheWVy
cykKICAgICAvLyBEcmF3IGFnYWluLCBidXQgd2l0aCBjaGlsZCBub24tb3BhcXVlLCB0byBtYWtl
IHN1cmUKICAgICAvLyBsYXllcjEgbm90IGN1bGxlZC4KICAgICBsYXllcjEtPnNldE9wYXF1ZSh0
cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYXF1ZUNvbG9yKHRydWUpOwogICAgIGxheWVyMS0+c2V0
T3BhY2l0eSgxKTsKICAgICBsYXllcjEtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7CiAg
ICAgbGF5ZXIyLT5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb2xvcih0
cnVlKTsKICAgICBsYXllcjItPnNldE9wYWNpdHkoMC41KTsKICAgICBsYXllcjItPnNldEV4cGVj
dGF0aW9uKHRydWUsIGZhbHNlKTsKICAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CkBAIC00
MjgsMTEgKzQ2NywyNCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGJsZW5kaW5n
T2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAgICAgbGF5ZXIxLT5zZXRPcGFjaXR5KDEpOwog
ICAgIGxheWVyMS0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIGZhbHNlKTsKICAgICBsYXllcjItPnNl
dE9wYXF1ZShmYWxzZSk7CisgICAgbGF5ZXIyLT5zZXRPcGFxdWVDb2xvcihmYWxzZSk7CiAgICAg
bGF5ZXIyLT5zZXRPcGFjaXR5KDEpOwogICAgIGxheWVyMi0+c2V0RXhwZWN0YXRpb24odHJ1ZSwg
ZmFsc2UpOwogICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoKTsKICAgICBFWFBFQ1RfVFJVRShs
YXllcjEtPnF1YWRzQXBwZW5kZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5xdWFkc0Fw
cGVuZGVkKCkpOworCisgICAgLy8gQW5kIHdoZW4gdGhlIGxheWVyIHNheXMgaXRzIG5vdCBvcGFx
dWUgYnV0IGlzIHBhaW50ZWQgb3BhcXVlLCBpdCBpcyBub3QgYmxlbmRlZC4KKyAgICBsYXllcjEt
PnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllcjEtPnNldE9wYWNpdHkoMSk7CisgICAgbGF5ZXIx
LT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgZmFsc2UpOworICAgIGxheWVyMi0+c2V0T3BhcXVlKGZh
bHNlKTsKKyAgICBsYXllcjItPnNldE9wYXF1ZUNvbG9yKHRydWUpOworICAgIGxheWVyMi0+c2V0
T3BhY2l0eSgxKTsKKyAgICBsYXllcjItPnNldEV4cGVjdGF0aW9uKGZhbHNlLCBmYWxzZSk7Cisg
ICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIEVYUEVDVF9UUlVFKGxheWVyMS0+cXVh
ZHNBcHBlbmRlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllcjItPnF1YWRzQXBwZW5kZWQoKSk7
CiB9CiAKIGNsYXNzIFJlc2hhcGVUcmFja2VyQ29udGV4dDogcHVibGljIEZha2VXZWJHcmFwaGlj
c0NvbnRleHQzRCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
UXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcAppbmRleCA5NzM4NGIwYjJmYWIwYzVlYzQ0NDVhNzU4ZjNlNzJiOWJjMGM0
NDA4Li4yOTllNWM3ZTViYzU2Y2Q0OTBmNzYxN2JmNjY0NjJmZjU0ZDkzYzNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTM3
LDI5ICszNywyOSBAQCBuYW1lc3BhY2UgewogY2xhc3MgQ0NRdWFkQ3VsbGVyVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKIH07CiAKLXN0YXRpYyBQYXNzT3duUHRyPENDRHJhd1F1YWQ+IE1h
a2VUaWxlUXVhZChDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CitzdGF0aWMgUGFzc093blB0cjxDQ0RyYXdRdWFkPiBNYWtlVGlsZVF1YWQoQ0NTaGFyZWRRdWFk
U3RhdGUqIHN0YXRlLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVS
ZWN0ID0gSW50UmVjdCgpKQogewotICAgIHJldHVybiBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHN0
YXRlLCByZWN0LCAxLCBJbnRQb2ludCgxLCAxKSwgSW50U2l6ZSgxMDAsIDEwMCksIDAsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgcmV0dXJuIENDVGlsZURyYXdRdWFk
OjpjcmVhdGUoc3RhdGUsIHJlY3QsIGludGVyc2VjdGlvbihyZWN0LCBvcGFxdWVSZWN0KSwgMSwg
SW50UG9pbnQoMSwgMSksIEludFNpemUoMTAwLCAxMDApLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UpOwogfQogCi12b2lkIHNldFF1YWRzKENDU2hhcmVkUXVhZFN0YXRlKiBy
b290U3RhdGUsIENDU2hhcmVkUXVhZFN0YXRlKiBjaGlsZFN0YXRlLCBDQ1F1YWRMaXN0JiBxdWFk
TGlzdCkKK3ZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3RhdGUqIHJvb3RTdGF0ZSwgQ0NTaGFy
ZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBJbnRS
ZWN0JiBvcGFxdWVSZWN0ID0gSW50UmVjdCgpKQogewogICAgIHF1YWRMaXN0LmNsZWFyKCk7CiAK
LSAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQ
b2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRp
bGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwg
MTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50
UmVjdChJbnRQb2ludCgyMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlz
dC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgwLCAxMDAp
LCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFk
KHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDAp
KSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0
KEludFBvaW50KDIwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3Qu
YXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMCwgMjAwKSwg
SW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChy
b290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMTAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkp
KTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJ
bnRQb2ludCgyMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotCi0gICAgcXVhZExpc3Qu
YXBwZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0YXRlLCBJbnRSZWN0KEludFBvaW50KCksIEludFNp
emUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQoY2hpbGRT
dGF0ZSwgSW50UmVjdChJbnRQb2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAg
ICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUsIEludFJlY3QoSW50UG9p
bnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKE1h
a2VUaWxlUXVhZChjaGlsZFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDEwMCwgMTAwKSwgSW50U2l6
ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3Rh
dGUsIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBvcGFxdWVSZWN0KSk7
CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50
UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBvcGFxdWVSZWN0KSk7CisgICAgcXVh
ZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMjAw
LCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBvcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBw
ZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpLCBvcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VU
aWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDEw
MCwgMTAwKSksIG9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFk
KHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDAp
KSwgb3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0
YXRlLCBJbnRSZWN0KEludFBvaW50KDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSwgb3BhcXVl
UmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRS
ZWN0KEludFBvaW50KDEwMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpLCBvcGFxdWVSZWN0KSk7
CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50
UG9pbnQoMjAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSksIG9wYXF1ZVJlY3QpKTsKKworICAg
IHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQoY2hpbGRTdGF0ZSwgSW50UmVjdChJbnRQb2lu
dCgpLCBJbnRTaXplKDEwMCwgMTAwKSksIG9wYXF1ZVJlY3QpKTsKKyAgICBxdWFkTGlzdC5hcHBl
bmQoTWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUsIEludFJlY3QoSW50UG9pbnQoMTAwLCAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpLCBvcGFxdWVSZWN0KSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VU
aWxlUXVhZChjaGlsZFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAw
LCAxMDApKSwgb3BhcXVlUmVjdCkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQo
Y2hpbGRTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDAp
KSwgb3BhcXVlUmVjdCkpOwogfQogCiAjZGVmaW5lIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVT
VF9RVUFEUyAgICAgICAgICAgICAgIFwKQEAgLTIwMCw2ICsyMDAsNTQgQEAgVEVTVChDQ1F1YWRD
dWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2hpbGRMaW5lc1VwQm90dG9tUmlnaHQpCiAgICAgRVhQRUNU
X0VRKHF1YWRMaXN0LnNpemUoKSwgOXUpOwogfQogCitURVNUKENDUXVhZEN1bGxlclRlc3QsIHZl
cmlmeUN1bGxTdWJSZWdpb24pCit7CisgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FV
QURTCisKKyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKKworICAgIE93blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0
ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVj
dCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
Y2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNlKTsK
KyAgICBJbnRSZWN0IGNoaWxkT3BhcXVlUmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0Lndp
ZHRoKCkgLyA0LCBjaGlsZFJlY3QueSgpICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRS
ZWN0LndpZHRoKCkgLyAyLCBjaGlsZFJlY3QuaGVpZ2h0KCkgLyAyKTsKKworICAgIHNldFF1YWRz
KHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QsIGNoaWxkT3BhcXVl
UmVjdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKKyAgICBDQ1F1YWRD
dWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExp
c3Quc2l6ZSgpLCAxMnUpOworfQorCitURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxT
dWJSZWdpb24yKQoreworICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUworCisg
ICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCAxMCk7CisKKyAgICBPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJl
Y3QoKSwgMS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3Rh
dGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCBmYWxzZSk7CisgICAgSW50
UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSArIGNoaWxkUmVjdC53aWR0aCgpIC8g
NCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53aWR0
aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpICogMyAvIDQpOworCisgICAgc2V0UXVhZHMocm9v
dFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0
KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIENDUXVhZEN1bGxl
cjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5z
aXplKCksIDEydSk7Cit9CisKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJl
Z2lvbkNoZWNrT3ZlcmN1bGwpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FV
QURTCisKKyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDQ5KTsKKworICAgIE93blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0
ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVj
dCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
Y2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoY2hpbGRUcmFuc2Zvcm0sIFRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50UmVjdCgpLCAxLjAsIGZhbHNlKTsK
KyAgICBJbnRSZWN0IGNoaWxkT3BhcXVlUmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0Lndp
ZHRoKCkgLyA0LCBjaGlsZFJlY3QueSgpICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRS
ZWN0LndpZHRoKCkgLyAyLCBjaGlsZFJlY3QuaGVpZ2h0KCkgLyAyKTsKKworICAgIHNldFF1YWRz
KHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QsIGNoaWxkT3BhcXVl
UmVjdCk7CisgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKKyAgICBDQ1F1YWRD
dWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExp
c3Quc2l6ZSgpLCAxM3UpOworfQorCiBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4
aXNBbGlnbmVkUXVhZHNEb250T2NjbHVkZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpF
X1RFU1RfUVVBRFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aWxlZExheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rp
bGVkTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggMDJmYTczNDY0MmE2MWFkOWRhMzdjZGQxNGIwMWZm
Y2JmM2U3ZTllZS4uZDU1YzBiYzE2NDRlMmE4OTA3NGYyYjg5ZjYxZWRmMjIwZjc4NmZjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBs
VGVzdC5jcHAKQEAgLTQ3LDExICs0NywxMiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiBjcmVhdGVMYXllcihjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgY29uc3QgSQogICAg
IGxheWVyLT5zZXRUaWxpbmdEYXRhKCp0aWxlcik7CiAgICAgbGF5ZXItPnNldFNraXBzRHJhdyhm
YWxzZSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCBsYXllclNpemUpKTsKKyAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7CiAKICAgICBpbnQg
dGV4dHVyZUlkID0gMTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbGVyLT5udW1UaWxlc1go
KTsgKytpKQogICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHRpbGVyLT5udW1UaWxlc1koKTsg
KytqKQotICAgICAgICAgICAgbGF5ZXItPnN5bmNUZXh0dXJlSWQoaSwgaiwgc3RhdGljX2Nhc3Q8
UGxhdGZvcm0zRE9iamVjdD4odGV4dHVyZUlkKyspKTsKKyAgICAgICAgICAgIGxheWVyLT5wdXNo
VGlsZVByb3BlcnRpZXMoaSwgaiwgc3RhdGljX2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4odGV4dHVy
ZUlkKyspLCBJbnRSZWN0KDAsIDAsIDEsIDEpKTsKIAogICAgIHJldHVybiBsYXllci5yZWxlYXNl
KCk7CiB9CkBAIC0xMzUsNyArMTM2LDcgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgY2hl
Y2tlcmJvYXJkaW5nKQogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UaWxlc1g7ICsraSkK
ICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1UaWxlc1k7ICsraikKLSAgICAgICAgICAg
IGxheWVyLT5zeW5jVGV4dHVyZUlkKGksIGosIHN0YXRpY19jYXN0PFBsYXRmb3JtM0RPYmplY3Q+
KDApKTsKKyAgICAgICAgICAgIGxheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgc3RhdGlj
X2Nhc3Q8UGxhdGZvcm0zRE9iamVjdD4oMCksIEludFJlY3QoKSk7CiAKICAgICAvLyBBbGwgY2hl
Y2tlcmJvYXJkaW5nCiAgICAgewpAQCAtMTQ3LDcgKzE0OCw3IEBAIFRFU1QoQ0NUaWxlZExheWVy
SW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGdldFF1
YWRzKENDUXVhZExpc3QmIHF1YWRzLCBJbnRTaXplIHRpbGVTaXplLCBjb25zdCBJbnRTaXplJiBs
YXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXJUZXhl
bE9wdGlvbiwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKK3N0YXRpYyBQYXNzT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkcywgSW50U2l6
ZSB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6
Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRpb24sIGNvbnN0IEludFJlY3QmIHZpc2li
bGVMYXllclJlY3QpCiB7CiAgICAgUmVmUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gY3Jl
YXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgYm9yZGVyVGV4ZWxPcHRpb24pOwogICAgIGxh
eWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOwpAQCAtMTU1LDYgKzE1
Niw3IEBAIHN0YXRpYyB2b2lkIGdldFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBJbnRTaXplIHRp
bGVTaXplLCBjb25zdCBJbnRTaXplJiBsYXllclNpCiAKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsK
ICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZHMsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7Cisg
ICAgcmV0dXJuIHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCk7IC8vIFRoZSBzaGFyZWQgZGF0YSBt
dXN0IGJlIG93bmVkIGFzIGxvbmcgYXMgdGhlIHF1YWQgbGlzdCBleGlzdHMuCiB9CiAKIC8vIFRl
c3Qgd2l0aCBib3RoIGJvcmRlciB0ZXhlbHMgYW5kIHdpdGhvdXQuCkBAIC0xNzQsNyArMTc2LDgg
QEAgc3RhdGljIHZvaWQgY292ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMoQ0NMYXll
clRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3AKIAogICAgIEludFNpemUgbGF5ZXJTaXplKDEwMDAs
IDEwMDApOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgZ2V0UXVhZHMocXVhZHMsIEludFNp
emUoMTAwLCAxMDApLCBsYXllclNpemUsIGJvcmRlcnMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5
ZXJTaXplKSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAg
ICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJT
aXplLCBib3JkZXJzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwogICAgIHZlcmlm
eVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFkcywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNp
emUpKTsKIH0KIFdJVEhfQU5EX1dJVEhPVVRfQk9SREVSX1RFU1QoY292ZXJhZ2VWaXNpYmxlUmVj
dE9uVGlsZUJvdW5kYXJpZXMpOwpAQCAtMTkwLDcgKzE5Myw4IEBAIHN0YXRpYyB2b2lkIGNvdmVy
YWdlVmlzaWJsZVJlY3RJbnRlcnNlY3RzVGlsZXMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRl
eGVsT3B0CiAKICAgICBJbnRTaXplIGxheWVyU2l6ZSgyNTAsIDI1MCk7CiAgICAgQ0NRdWFkTGlz
dCBxdWFkczsKLSAgICBnZXRRdWFkcyhxdWFkcywgSW50U2l6ZSg1MCwgNTApLCBJbnRTaXplKDI1
MCwgMjUwKSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJS
ZWN0KTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNo
YXJlZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIEludFNpemUoNTAsIDUwKSwgSW50U2l6ZSgyNTAs
IDI1MCksIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscywgdmlzaWJsZUxheWVyUmVj
dCk7CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRzLCB2aXNpYmxlTGF5ZXJS
ZWN0KTsKIH0KIFdJVEhfQU5EX1dJVEhPVVRfQk9SREVSX1RFU1QoY292ZXJhZ2VWaXNpYmxlUmVj
dEludGVyc2VjdHNUaWxlcyk7CkBAIC0yMDIsNyArMjA2LDggQEAgc3RhdGljIHZvaWQgY292ZXJh
Z2VWaXNpYmxlUmVjdEludGVyc2VjdHNCb3VuZHMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRl
eGVsT3AKICAgICBJbnRTaXplIGxheWVyU2l6ZSgyMjAsIDIxMCk7CiAgICAgSW50UmVjdCB2aXNp
YmxlTGF5ZXJSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSk7CiAgICAgQ0NRdWFkTGlzdCBxdWFk
czsKLSAgICBnZXRRdWFkcyhxdWFkcywgSW50U2l6ZSgxMDAsIDEwMCksIGxheWVyU2l6ZSwgQ0NM
YXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICBP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0g
Z2V0UXVhZHMocXVhZHMsIEludFNpemUoMTAwLCAxMDApLCBsYXllclNpemUsIENDTGF5ZXJUaWxp
bmdEYXRhOjpOb0JvcmRlclRleGVscywgdmlzaWJsZUxheWVyUmVjdCk7CiAgICAgdmVyaWZ5UXVh
ZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRzLCB2aXNpYmxlTGF5ZXJSZWN0KTsKIH0KIFdJVEhfQU5E
X1dJVEhPVVRfQk9SREVSX1RFU1QoY292ZXJhZ2VWaXNpYmxlUmVjdEludGVyc2VjdHNCb3VuZHMp
OwpAQCAtMjE0LDcgKzIxOSw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIHRleHR1cmVJ
bmZvRm9yTGF5ZXJOb0JvcmRlcnMpCiAgICAgSW50U2l6ZSB0aWxlU2l6ZSg1MCwgNTApOwogICAg
IEludFNpemUgbGF5ZXJTaXplKDI1MCwgMjUwKTsKICAgICBDQ1F1YWRMaXN0IHF1YWRzOwotICAg
IGdldFF1YWRzKHF1YWRzLCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6
Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKKyAgICBzaGFyZWRTdGF0ZSA9IGdl
dFF1YWRzKHF1YWRzLCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9C
b3JkZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHF1YWRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVF9F
UShxdWFkc1tpXS0+bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFk
U3RyaW5nIDw8IGk7CkBAIC0yMjMsNiArMjI5LDI1IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRl
c3QsIHRleHR1cmVJbmZvRm9yTGF5ZXJOb0JvcmRlcnMpCiAgICAgICAgIEVYUEVDVF9ORShxdWFk
LT50ZXh0dXJlSWQoKSwgMHUpIDw8IHF1YWRTdHJpbmcgPDwgaTsKICAgICAgICAgRVhQRUNUX0VR
KHF1YWQtPnRleHR1cmVPZmZzZXQoKSwgSW50UG9pbnQoKSkgPDwgcXVhZFN0cmluZyA8PCBpOwog
ICAgICAgICBFWFBFQ1RfRVEocXVhZC0+dGV4dHVyZVNpemUoKSwgdGlsZVNpemUpIDw8IHF1YWRT
dHJpbmcgPDwgaTsKKyAgICAgICAgRVhQRUNUX0VRKEludFJlY3QoMCwgMCwgMSwgMSksIHF1YWQt
Pm9wYXF1ZVJlY3QoKSkgPDwgcXVhZFN0cmluZyA8PCBpOworICAgIH0KK30KKworVEVTVChDQ1Rp
bGVkTGF5ZXJJbXBsVGVzdCwgdGlsZU9wYXF1ZVJlY3RGb3JMYXllck5vQm9yZGVycykKK3sKKyAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKKworICAgIEludFNp
emUgdGlsZVNpemUoNTAsIDUwKTsKKyAgICBJbnRTaXplIGxheWVyU2l6ZSgyNTAsIDI1MCk7Cisg
ICAgQ0NRdWFkTGlzdCBxdWFkczsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJl
ZFN0YXRlOworICAgIHNoYXJlZFN0YXRlID0gZ2V0UXVhZHMocXVhZHMsIHRpbGVTaXplLCBsYXll
clNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscywgSW50UmVjdChJbnRQb2lu
dCgpLCBsYXllclNpemUpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUX0VRKHF1YWRzW2ldLT5tYXRlcmlhbCgpLCBDQ0Ry
YXdRdWFkOjpUaWxlZENvbnRlbnQpIDw8IHF1YWRTdHJpbmcgPDwgaTsKKyAgICAgICAgQ0NUaWxl
RHJhd1F1YWQqIHF1YWQgPSBzdGF0aWNfY2FzdDxDQ1RpbGVEcmF3UXVhZCo+KHF1YWRzW2ldLmdl
dCgpKTsKKworICAgICAgICBFWFBFQ1RfRVEoSW50UmVjdCgwLCAwLCAxLCAxKSwgcXVhZC0+b3Bh
cXVlUmVjdCgpKSA8PCBxdWFkU3RyaW5nIDw8IGk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2M5Y2Zj
OTI3YzRiOTc0ZjA3YTMzYjY0MzlkZDE1NjM5MDllMTZiMy4uMWQyYWM0ODgwYmUxOGY2OTkyMDVh
ODhhNGU3OWZhMGVkMTgzMGQ5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTI3ICBE
YW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
VXNlIHJlZ2lvbiByZXBvcnRlZCBwYWludGVkIG9wYXF1ZSBmb3IgZHJhdyBjdWxsaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0tbGludXgvY29tcG9zaXRpbmcvaWZyYW1lcy9pZnJhbWUtaW4tY29tcG9zaXRlZC1sYXll
ci1leHBlY3RlZC5wbmc6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbWFjLWxlb3BhcmQv
ZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBl
Y3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3ds
ZW9wYXJkL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5
ZXItZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdp
bi9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4
cGVjdGVkLnBuZzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3Jl
cGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBu
ZzogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3Qv
cmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQu
cG5nLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoK
KwogMjAxMi0wMS0yNyAgS2VuIEJ1Y2hhbmFuICA8a2VucmJAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIENyYXNoIGluIHVwZGF0ZUZpcnN0TGV0dGVyKCkgZnJvbSB1bm5lY2Vzc2FyeSBhbm9ueW1v
dXMgYmxvY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2NvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1lLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQu
cG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGludXgvY29tcG9zaXRpbmcvaWZy
YW1lcy9pZnJhbWUtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcKaW5kZXggMWQ2ZjAz
ZTE4OTdhODU1ZDMxYmRkOTIyNWJjMjNiODE0ZDJjZGQwOS4uMTE0MmZiYWZhOGZiNjRjNmIxZjk2
YTViMmRmNThhNTQ0MTA3YTY3MyAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM0NjMK
emNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8
bX0/b1QhdGg9CnpMeGE+YmdII0tQNmEhMFJeQXRsJV5IZnQ0TCE7ekdCTktCSSg9P2A9RFhWfm5O
cVZ8Q2hFJlhYZClLeHxEcUVAewp6YUs8R21rR0hGQ0hlNmZLJj9DRUhYNXtJJnZKKi1sbX5MUlA0
KXdidXl5RGQzWUU9XjxuOz5OaV57bm8mcFFUUT0KenxNdlpoXnQtJTtmbm1ZdF4qaC1hNzxRTzNh
V2cyV1pEMyRYIWVvPm14QnZDRUdNSGhgKTd5OEw4VUZOJj5NJTZTCnpJS2FmdiFITDF4YClOai14
WCQkWl85PEtxK2g7RERVKTt+fDtlWF5vc007STl3e2deT19UciFPX0lBPW5pUV54RQp6O0QrU3R0
NjYqRl51QFpMN1g3UiZXfU5mKCROP3NjYHZ5Rj4tK3VkMyUlSW4rPnkjaygqa2EkKElvb2Mod2Rr
OH4KeiEwK0laITElYyRIVH1hQVZAQUNlQnhtUyM+fUc5enQrMWlOYChzR0I2ISM3JENoaT5eXjxg
NiFHM35ReldJZ2t+CnpHQjh1O2Ylb1NIZmVDZSZQMHJkZkloXkRZVntxX0VVfVFNTDAlVipxalgw
M2dtTj11RHJHWn5ATCZNRUdfd1ZuMgp6eTUoPSh8Qkk2dXcmVnloS34ldyZrMX4pMFohfFBVTHhZ
d1g8bFFxbGg4P2xMfEpKPHxXVXZFZmBuMWhBYkxSZDMKelArOy1ydkFUV1RwQzN+UzhIfjFaRmsm
bWNGdzMoY0NRQGVwb3VNRmYrVygoKy0jT3hzI3NCfTg0R00lVkpmJCNaCnp4cmB9dF9wQnwkZnV4
TlFaXzBNdHxOcnNmZ1Rad2JoVWRaJjJWOElEbkVBN31BNU9nSSQjNT5jVFl5MCFqVEttcQp6WnNU
YW9SQCVfZW96Tnw/TGslMyNWSzUlM208MzVFZmZWRFlMV1dxN1FgSHljI3J6QysqNEBvQnxJV2M2
QDA3cn0KemBEV2hzZTlLJmt3KkdsNjNzTnh5T3xPWGsrNG8xT1p9UnVCJFVSXkpSLVZ0az9eJHw5
XnV0bjRvZC0mUEIxMndyCnp7ZG1QOVItaWQ9bXNjIWZ4SStTP3hKeFlLYndAfSZYMyYyJVl3Q1E/
MCEwPXZnWns1b2YyVTM3O1hBd2Bab1BlPwp6VCpITHQ1WCZFMSp4QXwxU3RvOWQrTnM2O3FpZm5f
NldPMEh1NStqQkAzKXQ9YEZyajR7VF96JVlyfEZ4aGJAX1EKemBzdzleQ1Z5KlFlJEchbiVNeEgr
JWJHM0d3KkFsZkI4aiUmemtnNXVGSl9VcHw5LXlOPzQ4Ulc8ZF5OZkU0XlFBCnpqV15APHdAMCEh
OTRxfHRtdClTZSU9Q2hIbmhiVXFJdloyZDF1V1glM3EwNiR2fFJBdEswbF59IVk4YHQ3e2JAewp6
PSM7WCktKm8kSnBLT2U5RllCRUpJdmNLdDdXNW9yJUpVVkRjKlJ2UTdzJkdaeXg/TnlFRUJRJD8r
WXg+KmRFJGgKel9ne0ZQZTJuQ0dTIVEkOStlJFk3NGdAezh3bz8xU3dKRzh8dnZuJF94M3srXnZ0
SXs+aU1kOWRQeENSUmVAb1VpCnorJThFPDBEN3M2QDQ+UGtlMm5YRWNRJFR+VFlwIVdXbG93em9B
QUJ3SlJlJGhgdHg3P3QkTyg4PkckUSQla043YQp6enhaM1BwKihWSm5FSThnP3wpQk97Xz9yXntD
ZXdid1Q0QHJ7aDEjRSpjY2o7QTlkZWhXRHRtOFZBJUxRUzVSKX0KekZHaHhqe35NY0Y4M2NyWlZ1
cD9BakUmKU9RPCloS1hzJkBaSTdhS3QoSz9mc2J0YjQkSkhwYn5La2lfenlOMVM+ClMpVjJiOVJ0
JW81ZWxGe3I1fUUtMnZhQVJJCgpsaXRlcmFsIDM0NjQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5
fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuNXQ9CnoheFRlOSVNfDBaKU1R
S1pMPF9TZDNrITJ8T1ZoTWVReXt9UUlYWmheRDl8dHxQWiE2S2lhQnJaPyMtM1htVEN3cgp6U3x9
JVI+d3d0O0RIZWtpX01FaXJvdEdJOEdzWkFgWipVZXBQKz16VTtPa3pZdHdLTE5vRl9oYU5pSm1C
QDdIbnMKenpQYkpCJXZvWCMzPz1fZXpYUDNkLTdTSFU7UnVUdWdNJHdTPElUR3Q/KSZaWHhmKFh0
JSZ1bD0qdVN4Zmx8ZXVfCnpmYFAlWDV1TEZ5VDwtRlJybCs1TnhCRD1ERnVWTXZfPztsYktZTU1N
K1VvbWE1QSh4YkhnMndzKSk5TWJWUHxKMgp6WFB2dz9ZVkd5Y04wVDxqPS1LRCVIRWY8TTV5OXxX
eC1EX3stRmZ3VjJiT01oPHY1Y3BiQTA9aCVWb1B8a0FEPD8KeiM+bH5gbE9WVkw0YlF3OXdGOWpK
RnIkU2Q0ekx6KFMxNkVXNWk4Sn5fc1Qxb0cyOWA2UVQqWmdiKGJPemdzWDM4CnpfLVUpSil5ckN3
RFFDaVVDViRxbG8kZEA4a3E0Tz1JeWlNMDhmRnstR0lwfFkmcDJ6cVF7MnorTDZKcXdWRHw2ZAp6
enFpbFhjS15NN2x+QlZwVF8+bjJ4YmpnM2FeUWBJIyVPM2p2SnAqRSFpfkZrbT5JVGJANHRXRW1n
enZkSypXSUAKenYpTn1xJWdnYiMqWitCUHlrQ0M0NXVke2BGLTJecDdpTWBqKUl7RHJsVmV6Uz5Y
WkhiPVctOEV8OUV9Qnt3eSNNCnotMF9zY25CXzkyJGowM30qJT1+cSNKY2IxZVNhPTVGRExoRzdS
IVNnQ2hpPl52KEcremBKbGshajVYKGhwRS1nfAp6M2BmPWclaDd7a2lVcSNGcUUhJG1he1VNPnF8
YjBjY2BoKCV1d3Z8MCRXUk0lWVdtXyQtYUUjSStnb3FIZUowMkYKeno/bmxRIVIrP2laQFNCUTR9
WjhnblBDZk5wcSs3amNpPk9sb31SekcoK0BEbUN9Pjk8XyVtPCZsd0N+d09kNDVaCnpUSXs+TVZq
MUotOSQ/WnQ4WFVlLWB2RGgrJlYhfkUrN0dOYUFvYlhAalp0ZXE4OGhtJjlBSjkzRj5kfCtQbT5O
Tgp6Tj9kI1dSczlVSnokWTI3PHorSSpmZ285Wk9fKzlnRHI1WWBxRkt3NzxeTlZhZURuMUNeNSo2
RHROelh3ZTZhSXMKelJfVVJ4REA4a050WSQybXVWNEdgP1Y2YmtTPEJaYTBHJlBVZTxhYEdnOEtV
VVB4cU9RenhuP0FZP3w/Umt3MGhpCnp3cFR5Qy1jK2pqVkF0RlYtZkk/cGB7V3hoK3F+c0RYVWxx
ay1PNnlvOHk9P1RBN3EoZ3cqU3lPYnBOXzFnSEdSYAp6cW1tQ15PPkpEZD9tPXdYP3o8YkN2bG5l
X2tlPFJpWjVMREQjZlNySUdudT8mOFB7S3FJTiVHY3Yjb3E1QUE5cyEKem1hbCFNeVQkZVFeQGx6
O1lkX3dYezlzdjFianh4MTIoQ0w7ckwxPm1lTnJtI1dxdHFZIS1zLTU0YHU8d2d6YWQ1Cno9N29w
QF5SSXsmJT1ZNzFiMmFQZ0ltU0M4X1oxSjZTe3JWLV9JaGh8UV5SR1IhdiUrYSZ0dSMtO3BzPTt6
NDd7VQp6X1d0PS1eNUlNTFZ+ZVckdFJNN05Vd3pmRz5zUmdrUGJQbkJVVmhGYEtnJHdle24zekQ/
aTIkPGZsdGp1WWhZYFIKem4/ZDIqS0hXcGc7cjB2K0FNQz82RmZiJjYjTUNldC0laFBBVnFtYW42
QEBpOFhpYCN3bj0rIyZrSmlSQ3RjP2U0CmQ4b049P0Q3KktyJEAhYFI3R1IlLSFQQ3t4V3R+JCg2
OThXPVE1Km1PCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbGlu
dXgvZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1l
eHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L3Jl
cGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBu
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M3NWE2ODlkOWE5ZjgwOTBkZjczODVm
ZTA0NTA0NGQ0ZTBhYTk1Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyOTU3Cnpj
bWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19
P29UbX1uNgp6MH1EJGRpIT9KY0dsTHxmRz1ucmxCWkZqMUwtU05xMTJkRTR3QitlMDR5WjZOYUxh
cVRJRUdacmQzKG4oRTdWY0kKejtiSzt5WXZGKEUyfDZkc0NnYF80YU18JT1faFpXcyZySjcobkM4
RlQlZyllblpoQVVEMUgqQCM5NkFnUUdZJjhACnpiWmB6WU1zNGpraFdoOFhVKDB0RHtRWWcyX3U9
bzs8RDE8WDh2YWs9Nj1RSmxObm02KyFoKTZZWDRDKEt2dUVCTQp6SCNhc3U5bHdGMDtxc2p3Mlg3
Zj9Vei0qQS1pdz56ZnJ4bkNoSEpCYVphQmB3VX4hXlZkWDRTb2A8RzZZM05UbikKelk7RjglQV4x
dzA7WCF+bytja1o/N0tRXjheTFc7blpjY3hIb0d0c2M0I05XLWJHeEdYX3Bjdig+Y2hieF5aWGRs
Cno5UzFKTC1Kbjw5e1BkKEtMeEcrMkBRUXsobzJ1NkN7a31QIWYjRjk7JklTZ0NCcW5ZSzErYEpl
WGRzTkhnd2IzdQpsbmhRcEEhRHVjUlI9TDJRYWhzbSh3a3Q9WFA2NkIzNDQkcmpGNioyVW5nRGBI
WUh8UG8KCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMtbGVv
cGFyZC9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVy
LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy1sZW9wYXJk
L2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhw
ZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjMzMTFmODNjOWZlMDVi
MjEyOThhZGM0YjRlMTViNjBiNjc2YWQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFs
IDMzOTgKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMUIlUWxZYnBSem5rQjln
Q0NNNDckPVN1RnhlTytqCnptUHNqVHNtWkN2VyhJflNDTW17LXJXV1JAN1JnREwyQzJyVGkzVWUm
VTBOOSFjeTQmUUlFR1pyZDMqUHVGU0RWNQp6ISRzM1lOLXFDSjZ9Knh4VDJ6OSNlejwrQXA4bj9J
QHRVKDA8IThedDA0LV9VZXdRNmNvbHxzUlV9KSVKVX1SdTAKelZxIyVuSUtkJm56QFZUIUc2WDtH
YF5fLSplRSE8Nl5Ke0FWeXM9fHFWMzdWMSZkMCF6IW90RDhGaE5qKGZ4Kkc4CnpmcXtXUmtgWEFD
KHBTbFM/ZTNZIUZRYztHKzVxRUU9Sl5XRjZLNyh3VzNSOFp6R2l3fTNLKVYrP3lOd0s4P0ZhMwp6
N1JCJH0jY1N0ZCYlbSZ0RVRyTCMmR2lsSVBYRmErVXwxbjVzLVFRSW5jK2EoYWg0TiV7ek0mUVZy
YU4kJG9PZVMKel5fZjN3NllzdW48YDR1YmxLQ24tO3JkdFkqQVdhMTdwJjVsZlI/e2U5fm0oK3sx
Vj5ndzZycExVPF9JYGI3RChXCnpTWDBgbEFYP1RONFVvfFFmdFNPaGlENUpgajN4JEx0KDRLK0Zg
N0d1UVNTSzN4PWMtSF58Z2o0MjAlfFNjKUkkegpKdGFEMGUwc3l2ZSpIOGNlCgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkL2Zhc3QvcmVw
YWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5n
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjLXNub3dsZW9wYXJkL2Zhc3QvcmVw
YWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDBlOGMxOTY3OWJlMWIxOTJhZWNiZDZh
MjVlZGQxOGJjMDUyYjljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDMzOTYKemNt
ZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMUIlUWxZYnBSem5rQjlnQ0NNNDckPVN1
RnhlUTUzCno3S1VhaTdSZVRBQ2FLQVdXKXtXPHJiJmowc2oyM003TTdOJlcrdnZGU0RzO0Q7Sk4x
TTt1dW1mPWp+bFhLVzBZKAp6aEooPlp4Jns4JUdkfVg8VlowJFc7ayMwOVh2c09YSj1jMlBuaT59
fkdCQntyRThfPVJIT0lMRE5KPXM/RikqYUMKemE0O31UNUw5NGJhQnYkTGczbF95R2ZjZit6Vl8/
PEokcX4zJFQyY0JAYX56KWozWVFeQ2ZCalBQSjh5UldiTXxuCnpLNDVTaXg2RVFUR1FKKmx6NFVj
bzxyUUdpMzBQPTMpTlQ2OXp8ZTNqa2c+Pm09ZFktbTgrRXxJZTdrflNYNjJtMwp6bzRfITJjKXg8
LTxJIVJVaDh3U0VGI04xOGMqP0Bmej5zeUU8d1dqI0wqeDdENXdISkFHQjlNd2U2PzVEZX00VSgK
eldKVSZ1KkU0djVNc0p3VTBFe3Z0Q0tkKlU2QzQ1ejM8fUIpS3g9d04xcVhlQW9TOE5BclkrRXcx
I0hyekBpdi1mCndNPkZ3ZzBYQUJBazUqaXhIVGhfNUk5ZU1MdF8/cVBzdWJ6MFprPzJWbyZnOXZV
SHgzdklWQ2chMDM9eFVtO2U5KAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLXdpbi9mYXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVk
LWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9m
YXN0L3JlcGFpbnQvYmxvY2stc2VsZWN0aW9uLWdhcC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVj
dGVkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE1YjZkNmIzZTgyN2NkYzFj
YWQ1NTYyNjEyOTgyODc0ZDU5YTYxOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAy
OTM0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxI
YG9rPG19P29UbjU3PQp6XlRmbXl2cVRlMUxsWUNEQnk7bD0pOHImVzNqK2g9TGAkPHwlY05EJjM5
PHxmKyNIQFJqdipDdS1yaDBISjhVNHAKejtBbldGfElkSDxBSElvUCUkOzIzakFDTGgmeEJ+TGtH
YURzUSskcUBxMmIpfHRJUH14ZCEhcCM4M2NxUTcjSXdQCno3aH5pMykkQmlKLX5RXzwqIVNfNXFn
bGNKK0VgbUFoQ2poKF9gU09FPzdmM2tLUHJEQG8lNFJxeikrRjR8QTVydgp6P1dAbi1YSkZ7UUAh
cTlrb2k7LVE+cyNATjxBcHRtPCpXPkF2Zm0zVUc4fH55Ynw9QnNMWGUzZWA8QnMkYkx2aHIKemZp
aHxQZyYrUjNUZEAoU0s2bUZxQ1dlVGEyYmRULUlDVTVyWmx3S0JfPDVJJEEhMHRTNz13ZFAwd2Nv
X21RZTtSCnoxTDRANSYjeHBJODE4a0EyS1o9Vjhfald9ck9qd0E3fGpLdnhuT3dhZjtaQnZKQFJg
a2x6ZUp7NFFVMlhTM2ozXgpIUDY8cl9Geyo0VgoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvcmVwYWludC9ibG9jay1zZWxlY3Rpb24tZ2FwLWluLWNvbXBv
c2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci1leHBl
Y3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYwZmY1MDRiMzdiMGJiYzAzNzVhNjU4ZDk1OGQwMTcyYjg4
ZDYwOQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2NQp6Y21lQVNATj8ob2xIeWB1VkJxIWlh
MHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG4yO0cKelI2XyQzcWVQPTV2
JjZKQzZVIyhIbFFnclcjRlY3dWw7bEx5RygqTVNOdmp3YnhEST18SUVHWnJkMyltXj1WMW97Cno3
UlVMOFpsfjs3aiZBOFhjJWleIVJhZTVpdnVrR2xXTUhgUF5QTDw2IXZfOzRaVXpPbDRHYXVQITtH
PjJGN3Y8UQp6SW9hUF5aZD4lPHZ9SSg3SkpybX1BUnJ2VXorbClvJHsyRWk1Tio3PG53akNpOykt
RklSRUpzNDh9LWljREB7a14KbWJUbSRmV2l3JGtWR3FLREVpTntiY1hqZnNRI1hOYVU8T1pES2JM
aCoyfjdafiRKTntiCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggZjI2ZmFmNDY3
NDRkMDIzZmY2NjhkYzc5NDgxZTBlMWNiNWQ0ZmRjMi4uOTE3YjczYTc2MzQ3OTI3YzUzMGE0YmUw
MjZmM2VjYzE3N2JhOWUyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtNDAxMSw2ICs0MDExLDkgQEAgQlVHX0NBUllD
TEFSSyBNQUMgOiBlZGl0aW5nL3N0eWxlL2NyZWF0ZS1ibG9jay1mb3Itc3R5bGUtMDEyLmh0bWwg
PSBJTUFHRQogQlVHX0NBUllDTEFSSyBNQUMgOiBlZGl0aW5nL3N0eWxlL2NyZWF0ZS1ibG9jay1m
b3Itc3R5bGUtMDEzLmh0bWwgPSBJTUFHRQogQlVHX0NBUllDTEFSSyBNQUMgOiBmYXN0L2RvbS9i
bHVyLWNvbnRlbnRlZGl0YWJsZS5odG1sID0gSU1BR0UKIAorLy8gTWF5IGZhaWwgaWYgdGhlc2Ug
cGxhdGZvcm1zIGRpZmZlciBmcm9tIExpbnV4LiBSZW1vdmUgdGhpcyBvciByZWJhc2VsaW5lIHRo
ZW0gb25jZSB0aGUgYnVnIGxhbmRzLgorQlVHV0s3NjAxNSBXSU4gTUFDIDogZmFzdC9yZXBhaW50
L2Jsb2NrLXNlbGVjdGlvbi1nYXAtaW4tY29tcG9zaXRlZC1sYXllci5odG1sID0gSU1BR0UKKwog
Ly8gTmVlZCB0byBpbXBsZW1lbnQgZmlsZSBuYW1lIGxvZ2dpbmcuCiBCVUdXSzc2NTcyIDogaHR0
cC90ZXN0cy9kb3dubG9hZCA9IEZBSUwKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>