<?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>83530</bug_id>
          
          <creation_ts>2012-04-09 17:39:52 -0700</creation_ts>
          <short_desc>[chromium] Fold LayerChromium::updateCompositorResources into main update</short_desc>
          <delta_ts>2012-04-11 00:33:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>83514</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>nduca</cc>
    
    <cc>reveman</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>598800</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-09 17:39:52 -0700</bug_when>
    <thetext>[chromium] Fold LayerChromium::updateCompositorResources into main update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598801</commentid>
    <comment_count>1</comment_count>
      <attachid>136352</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-09 17:40:21 -0700</bug_when>
    <thetext>Created attachment 136352
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598803</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-09 17:41:44 -0700</bug_when>
    <thetext>Has a dependency on https://bugs.webkit.org/show_bug.cgi?id=83514.  Seems to work except for a few unit tests in TiledLayerChromium - layout tests all pass.

The basic idea here is we don&apos;t need an impl-thread updateCompositorResources pass since layers are queuing their compositor texture operations on CCTextureUpdater anyway.  This folds paintContentsIfDirty() / updateCompositorResources() into one function called update() that just does the right thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598804</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-09 17:42:16 -0700</bug_when>
    <thetext>This fails TiledLayerChromiumTest.invalidateFromPrepare and TiledLayerChromiumTest.visibleContentOpaqueRegion but I&apos;m not quite sure why yet.  Still debugging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598820</commentid>
    <comment_count>4</comment_count>
      <attachid>136352</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-09 18:01:00 -0700</bug_when>
    <thetext>Comment on attachment 136352
Patch

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

very cool :)

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:431
&gt; +    m_updateRect.scale(widthScale, heightScale);

should use scaleNonUniform() here I think.

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:-541
&gt; -            tile-&gt;m_updateRect = sourceRect;

Probably a copy-paste thing, but why is this removed? This is used to tell that the tile was updated this frame for Tile::isDirtyForCurrentFrame().

What if the updateRect was non-empty in the loop above, but the sourceRect became empty here?

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:578
&gt;      // Abort if we have already prepared a paint or run out of memory.

is &quot;prepared a paint&quot; the right wording still here?

&gt; Source/WebCore/platform/graphics/chromium/WebGLLayerChromium.cpp:-89
&gt; -    if (!m_drawingBuffer)

should the update() function early-out if prepareBackBuffer() failed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598837</commentid>
    <comment_count>5</comment_count>
      <attachid>136352</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-09 18:25:14 -0700</bug_when>
    <thetext>Comment on attachment 136352
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:431
&gt;&gt; +    m_updateRect.scale(widthScale, heightScale);
&gt; 
&gt; should use scaleNonUniform() here I think.

That&apos;s for matrices, this is a FloatRect so all scales are 2d

&gt;&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:-541
&gt;&gt; -            tile-&gt;m_updateRect = sourceRect;
&gt; 
&gt; Probably a copy-paste thing, but why is this removed? This is used to tell that the tile was updated this frame for Tile::isDirtyForCurrentFrame().
&gt; 
&gt; What if the updateRect was non-empty in the loop above, but the sourceRect became empty here?

I removed it because I didn&apos;t see any callers further down, but it looks like isDirtyForCurrentFrame() is called in pushPropertiesTo so we probably do need to preserve this state until the next update() call.  Will fix

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:578
&gt;      // Abort if we have already prepared a paint or run out of memory.

Nope, I think &quot;painted&quot; is better here. Fixed.

&gt;&gt; Source/WebCore/platform/graphics/chromium/WebGLLayerChromium.cpp:-89
&gt;&gt; -    if (!m_drawingBuffer)
&gt; 
&gt; should the update() function early-out if prepareBackBuffer() failed?

prepareBackBuffer() can&apos;t fail. we bail out of this function if we don&apos;t have an m_drawingBuffer since drawsContent() checks for that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598859</commentid>
    <comment_count>6</comment_count>
      <attachid>136366</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-09 18:46:59 -0700</bug_when>
    <thetext>Created attachment 136366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598862</commentid>
    <comment_count>7</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-09 18:49:04 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=136352&amp;action=review

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/WebGLLayerChromium.cpp:-89
&gt;&gt;&gt; -    if (!m_drawingBuffer)
&gt;&gt; 
&gt;&gt; should the update() function early-out if prepareBackBuffer() failed?
&gt; 
&gt; prepareBackBuffer() can&apos;t fail. we bail out of this function if we don&apos;t have an m_drawingBuffer since drawsContent() checks for that

forgive the cluelessness, but I don&apos;t see a check for m_drawingBuffer in drawsContent() or anywhere else. drawsContent() is just checking m_contextLost. how is it being checkded right now?

Secondly, now that I look at it. We check drawsContent() and return if false. But we actually set m_contextLost later in this function. Is that order correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598874</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-09 18:56:46 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136352&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/WebGLLayerChromium.cpp:-89
&gt; &gt;&gt;&gt; -    if (!m_drawingBuffer)
&gt; &gt;&gt; 
&gt; &gt;&gt; should the update() function early-out if prepareBackBuffer() failed?
&gt; &gt; 
&gt; &gt; prepareBackBuffer() can&apos;t fail. we bail out of this function if we don&apos;t have an m_drawingBuffer since drawsContent() checks for that
&gt; 
&gt; forgive the cluelessness, but I don&apos;t see a check for m_drawingBuffer in drawsContent() or anywhere else. drawsContent() is just checking m_contextLost. how is it being checkded right now?

Whoops!  That is probably not right!  I&apos;ll add a null check back.

&gt; 
&gt; Secondly, now that I look at it. We check drawsContent() and return if false. But we actually set m_contextLost later in this function. Is that order correct?

Lost context is asynchronous - we only hear about it at some point after the context was actually lost.  The placement in ::update() is put after the flush to try to update the state for the next frame.  The idea here is we may try to put up a frame or two after we lost the context, but we want to eventually stop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598884</commentid>
    <comment_count>9</comment_count>
      <attachid>136372</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-09 19:08:30 -0700</bug_when>
    <thetext>Created attachment 136372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599519</commentid>
    <comment_count>10</comment_count>
      <attachid>136516</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-10 12:37:36 -0700</bug_when>
    <thetext>Created attachment 136516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599777</commentid>
    <comment_count>11</comment_count>
      <attachid>136516</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-10 16:24:47 -0700</bug_when>
    <thetext>Comment on attachment 136516
Patch

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

I&apos;m a little ಠ_ಠ about having so many refactoring changes in the same patch (e.g. new update function, renaming member variables in UpdatableTexture, changing trace event names, not clearing surfaces).

&gt; Source/WebCore/platform/graphics/chromium/Canvas2DLayerChromium.cpp:98
&gt; -    TRACE_EVENT(&quot;Canvas2DLayerChromium::paintContentsIfDirty&quot;, this, 0);
&gt; +    TRACE_EVENT0(&quot;cc&quot;, &quot;Canvas2DLayerChromium::paintContentsIfDirty&quot;);

s/paintContentsIfDirty/update/

Should all TRACE_EVENT be TRACE_EVENT0(&quot;cc&quot;, ...)? We seem to do this very inconsistently.  Are you just changing it because you&apos;re here?

&gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:-715
&gt; -            if (m_requestedUpdateTilesRect.contains(IntPoint(i, j)))
&gt; -                continue;

So, previously, if we had done a normal paint, then we wouldn&apos;t consider anything in that paint for idle painting? I guess that hasn&apos;t been true since we started considering animations for idle paint.  I&apos;m fairly confident we can remove this check, but can you convince me?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:457
&gt; +    LayerList updateList;
&gt; +    updateList.append(rootLayer);

&lt;3

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:-594
&gt; -        layer-&gt;clearRenderSurface();

This is a little sketchy, but I think it doesn&apos;t end up causing problems for CCLayerTreeHostCommon.

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:496
&gt; -        webKitPlatformSupport()-&gt;currentThread()-&gt;postDelayedTask(m_timeoutTask, 5000);
&gt; +        webKitPlatformSupport()-&gt;currentThread()-&gt;postDelayedTask(m_timeoutTask, 5000*10000);

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599796</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-10 16:49:07 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 136516 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136516&amp;action=review
&gt; 
&gt; I&apos;m a little ಠ_ಠ about having so many refactoring changes in the same patch (e.g. new update function, renaming member variables in UpdatableTexture, changing trace event names, not clearing surfaces).
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/Canvas2DLayerChromium.cpp:98
&gt; &gt; -    TRACE_EVENT(&quot;Canvas2DLayerChromium::paintContentsIfDirty&quot;, this, 0);
&gt; &gt; +    TRACE_EVENT0(&quot;cc&quot;, &quot;Canvas2DLayerChromium::paintContentsIfDirty&quot;);
&gt; 
&gt; s/paintContentsIfDirty/update/
&gt; 
&gt; Should all TRACE_EVENT be TRACE_EVENT0(&quot;cc&quot;, ...)? We seem to do this very inconsistently.  Are you just changing it because you&apos;re here?

They should all be TRACE_EVENT0(&quot;cc&quot;, ...) so they get the correct category - all of the TRACE_EVENT() traces are going into the &quot;webkit&quot; category so we can&apos;t filter them. I just changed the ones I happened to be near.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp:-715
&gt; &gt; -            if (m_requestedUpdateTilesRect.contains(IntPoint(i, j)))
&gt; &gt; -                continue;
&gt; 
&gt; So, previously, if we had done a normal paint, then we wouldn&apos;t consider anything in that paint for idle painting? I guess that hasn&apos;t been true since we started considering animations for idle paint.  I&apos;m fairly confident we can remove this check, but can you convince me?
&gt; 

The behavior here is the same - if we paint anything in the normal paint, then we don&apos;t idle paint anything on the layer.  The m_requestUpdateTilesRect checks are redundant with the m_didPaint check in this patch.  Old path:

m_requestUpdateTilesRect and m_paintRect set to the empty rect in prepareToUpdate() at the start of the frame
m_requestUpdateTilesRect and m_paintRect set to non-empty in prepareToUpdateTiles() if we actually do a paint (if we make it to textureUpdater()-&gt;prepareToUpdate())
if m_paintRect is non-empty, prepareToUpdateIdle() bails immediately

New path:

m_didPaint set to false at the start of a frame
if we call textureUpdater()-&gt;prepareToUpdate(), m_didPaint set to true
if m_didPaint is true, idleUpdateLayerRect bails immediately


&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:457
&gt; &gt; +    LayerList updateList;
&gt; &gt; +    updateList.append(rootLayer);
&gt; 
&gt; &lt;3
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:-594
&gt; &gt; -        layer-&gt;clearRenderSurface();
&gt; 
&gt; This is a little sketchy, but I think it doesn&apos;t end up causing problems for CCLayerTreeHostCommon.

Hmmm - I&apos;m less confident with this part of the change now that I look in detail.  I was exciting about deleting the manual cleanup of the LayerList as a member, but didn&apos;t think too much about clearing the layer pointers to the RenderSurfaces. They&apos;ll get blown away on the next calculateDrawTransforms...(), but they&apos;ll sit around until then...

I&apos;ll add this clear back (to the local LayerList in CCLTH::updateLayers).

&gt; 
&gt; &gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:496
&gt; &gt; -        webKitPlatformSupport()-&gt;currentThread()-&gt;postDelayedTask(m_timeoutTask, 5000);
&gt; &gt; +        webKitPlatformSupport()-&gt;currentThread()-&gt;postDelayedTask(m_timeoutTask, 5000*10000);
&gt; 
&gt; ?

Oh whoops, that was so I could gdb.  Will revert before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599805</commentid>
    <comment_count>13</comment_count>
      <attachid>136575</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-10 16:57:20 -0700</bug_when>
    <thetext>Created attachment 136575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599905</commentid>
    <comment_count>14</comment_count>
      <attachid>136575</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-10 18:31:45 -0700</bug_when>
    <thetext>Comment on attachment 136575
Patch

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

R=me.  Thanks for the explanation about the needsIdlePaint change.

&gt; Source/WebCore/platform/graphics/chromium/Canvas2DLayerChromium.cpp:98
&gt; -    TRACE_EVENT(&quot;Canvas2DLayerChromium::paintContentsIfDirty&quot;, this, 0);
&gt; +    TRACE_EVENT0(&quot;cc&quot;, &quot;Canvas2DLayerChromium::paintContentsIfDirty&quot;);

Second verse, same as the first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599934</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-10 19:13:54 -0700</bug_when>
    <thetext>Committed r113809: &lt;http://trac.webkit.org/changeset/113809&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600091</commentid>
    <comment_count>16</comment_count>
      <attachid>136575</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-04-11 00:33:17 -0700</bug_when>
    <thetext>Comment on attachment 136575
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:416
&gt; +    m_pendingBeginFrameRequest-&gt;updater = m_currentTextureUpdaterOnImplThread.get();

Would it be better if we PassOwnPtr this and then the commit can PassOwnPtr it back? I worry about it being in both places at once.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136352</attachid>
            <date>2012-04-09 17:40:21 -0700</date>
            <delta_ts>2012-04-09 18:46:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83530-20120409174020.patch</filename>
            <type>text/plain</type>
            <size>114016</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc0NjViYjlmNjBlOTI2
NDQzNmEzNzQxZTI3YjgxMjEwZDBiOTk4MC4uZmU0ODIzMjJlYzcxZTRkMjBjOGJlNDdmM2U5Yjhh
NDM1ZWEzZDhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc3IEBACiAyMDEyLTA0LTA5ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBG
b2xkIExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaW50byBtYWluIHVw
ZGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM1
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExh
eWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6CisgICAgICAgIChDYW52YXMyRExheWVyQ2hyb21p
dW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjp1cGRh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVVcGRhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmg6CisgICAgICAgIChDb250ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlTGF5ZXJSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKElt
YWdlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6dXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmlkbGVVcGRhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjppc0RpcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlVwZGF0YWJsZVRpbGU6OmNvcHlBbmRDbGVhckRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlVwZGF0YWJsZVRpbGU6OmlzRGlydHlGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoVXBkYXRh
YmxlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxlOjpVcGRhdGFibGVUaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNocm9t
aXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dGlsZU9ubHlOZWVkc1BhcnRp
YWxVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVU
aWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnJlc2VydmVUZXh0
dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnJlc2V0VXBkYXRl
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVMYXll
clJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjppZGxlVXBkYXRl
TGF5ZXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6bmVlZHNJ
ZGxlUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVGlsZWRMYXllckNocm9taXVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2Vi
R0xMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojp+Q0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6
Y29tbWl0Q29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRh
dGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpyZXNlcnZlVGV4
dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVu
ZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5
ZXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAg
ICAgICAgKENDU2luZ2xlVGhyZWFkUHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJv
eHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6OkJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZTo6QmVnaW5GcmFtZUFuZENv
bW1pdFN0YXRlKToKKyAgICAgICAgKEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSk6CisKKzIwMTIt
MDQtMDkgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwogICAgICAgICBb
Y2hyb21pdW1dIERlZmVyIHRleHR1cmUgaWQgYWxsb2NhdGlvbiBmb3IgY29waWVzIHVudGlsIHRo
ZSBhY3R1YWwgY29weSBleGVjdXRlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODM1MTQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4OTcw
YjE3M2RkYTIzMGQwOTUyZjhjZTMxZTAyYjkxZjI4ODkwZTdhLi4yN2Y2ZTNlZGZmZGU5YjhhYmQ5
Zjc0NzAzZTJlMDA4N2E4NDM0NjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDM3IEBACiAyMDEyLTA0LTA5ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5v
cmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBGb2xkIExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMgaW50byBtYWluIHVwZGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM1MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0OjpydW5UZXN0KToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnVwZGF0ZSk6CisgICAg
ICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjppZGxlVXBk
YXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmc6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKToKKyAgICAgICAgKENv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKToKKyAgICAgICAgKFdURjo6Q0NM
YXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2U6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RTZXRWaWV3cG9ydFNpemU6OmJlZ2luVGVzdCk6CisgICAgICAg
IChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBdG9taWNDb21taXRXaXRoUGFydGlhbFVwZGF0ZTo6
Y29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKToKKyAgICAgICAgKFdURjo6VGVzdExheWVyQ2hyb21p
dW06OnVwZGF0ZSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RMYXllck9jY2x1
c2lvbjo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdENvbnRl
bnRMYXllck9jY2x1c2lvbjo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdExheWVyT2NjbHVzaW9uV2l0aEZpbHRlcnM6OmJlZ2luVGVzdCk6CisgICAgICAgIChX
VEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RNYW55U3VyZmFjZXM6OmJlZ2luVGVzdCk6CisgICAgICAg
ICogdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0
czo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZUxheWVyUmVjdCk6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKToKKyAgICAgICAgKiB0
ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmg6CisgICAgICAgIChGYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcik6CisgICAgICAgIChGYWtlVGlsZWRMYXllckNocm9taXVtKToKKyAgICAgICAgKiB0
ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6VEVTVCk6CisgICAgICAgIChX
VEY6OmlkbGVQYWludFJlcGVhdCk6CisKKzIwMTItMDQtMDkgIEphbWVzIFJvYmluc29uICA8amFt
ZXNyQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIERlZmVyIHRleHR1cmUgaWQg
YWxsb2NhdGlvbiBmb3IgY29waWVzIHVudGlsIHRoZSBhY3R1YWwgY29weSBleGVjdXRlcwogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM1MTQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYmZhODM0ZTI2MmYzMTZlY2Fk
NDczNTY5MmUwYWNjNDBkYWFmY2FiMC4uM2ExNGQ1YTEwZWVjODczMTU1NGFmNWU1YjA4Njk2Y2E5
ZGU0NTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC05Myw5
ICs5Myw5IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpzZXRDYW52YXMoU2tDYW52YXMq
IGNhbnZhcykKICAgICBtX2NhbnZhcyA9IGNhbnZhczsKIH0KIAotdm9pZCBDYW52YXMyRExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciog
Lyogb2NjbHVzaW9uICovKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1Rl
eHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKQogewotICAg
IFRSQUNFX0VWRU5UKCJDYW52YXMyRExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
IiwgdGhpcywgMCk7CisgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDYW52YXMyRExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5Iik7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xMDUsNyArMTA1LDggQEAgdm9pZCBDYW52YXMyRExheWVyQ2hy
b21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogLyog
b2MKICAgICAgICAgICAgIG1fZnJvbnRUZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdlcih0ZXh0dXJl
TWFuYWdlcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fZnJvbnRUZXh0dXJlID0gTWFu
YWdlZFRleHR1cmU6OmNyZWF0ZSh0ZXh0dXJlTWFuYWdlcik7Ci0gICAgICAgIG1fZnJvbnRUZXh0
dXJlLT5yZXNlcnZlKG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICBp
ZiAobV9mcm9udFRleHR1cmUtPnJlc2VydmUobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSkpCisgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZE1hbmFnZWRDb3B5KG1fYmFja1RleHR1cmVJ
ZCwgbV9mcm9udFRleHR1cmUuZ2V0KCksIG1fc2l6ZSk7CiAgICAgfQogCiAgICAgaWYgKCFuZWVk
c0Rpc3BsYXkoKSkKQEAgLTEyMSwyMiArMTIyLDE0IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9j
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2NhbnZhcykgewotICAgICAgICBUUkFDRV9F
VkVOVCgiU2tDYW52YXM6OmZsdXNoIiwgbV9jYW52YXMsIDApOworICAgICAgICBUUkFDRV9FVkVO
VDAoImNjIiwgIlNrQ2FudmFzOjpmbHVzaCIpOwogICAgICAgICBtX2NhbnZhcy0+Zmx1c2goKTsK
ICAgICB9CiAKLSAgICBUUkFDRV9FVkVOVCgiR3JhcGhpY3NDb250ZXh0M0Q6OmZsdXNoIiwgbV9j
b250ZXh0LCAwKTsKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkdyYXBoaWNzQ29udGV4dDNEOjpm
bHVzaCIpOwogICAgIG1fY29udGV4dC0+Zmx1c2goKTsKIH0KIAotdm9pZCBDYW52YXMyRExheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCi17Ci0gICAgaWYgKCFtX2JhY2tUZXh0
dXJlSWQgfHwgIW1fZnJvbnRUZXh0dXJlIHx8ICFtX2Zyb250VGV4dHVyZS0+aXNWYWxpZChtX3Np
emUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdXBk
YXRlci5hcHBlbmRNYW5hZ2VkQ29weShtX2JhY2tUZXh0dXJlSWQsIG1fZnJvbnRUZXh0dXJlLmdl
dCgpLCBtX3NpemUpOwotfQotCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVzaFByb3Bl
cnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiB7CiAgICAgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6
cHVzaFByb3BlcnRpZXNUbyhsYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5o
CmluZGV4IGI1ZDBjMjM4OTFmYjA1YjYyMTgyNDkxMDI1MGQ1OTBiOGI3MmM2NzIuLmEyMmY5N2Vi
ZGI3ODE1ZmE0MzNlMDJkOWNjYjQxYjIxMzYxMjY1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5
ZXJDaHJvbWl1bS5oCkBAIC01NSw5ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TmVlZHNEaXNwbGF5UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lm
RGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0
ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBD
Q09jY2x1c2lvblRyYWNrZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhD
Q0xheWVySW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDc1MWJjNjVmNmVl
M2U3NGY1MTcyMTA5ZjE1OGYwNTVhMDBhZWQwM2QuLmFlOGQzMjA4YmZiYWI4ZDdhZGU5ODJhN2Q4
YTkzYTJkODNlZDdkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTk0LDI5ICs5NCwyOSBAQCBib29sIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQo
KSBjb25zdAogICAgIHJldHVybiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpICYm
IG1fZGVsZWdhdGU7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVu
dHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQordm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0
IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogewogICAgIHVwZGF0ZVRpbGVTaXplQW5k
VGlsaW5nT3B0aW9uKCk7CiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwogCiAg
ICAgSW50UmVjdCBsYXllclJlY3Q7CiAKLSAgICAvLyBBbHdheXMgY2FsbCBwcmVwYXJlVG9VcGRh
dGUoKSBidXQgd2l0aCBhbiBlbXB0eSBsYXllciByZWN0YW5nbGUgd2hlbgorICAgIC8vIEFsd2F5
cyBjYWxsIHVwZGF0ZUxheWVyUmVjdCgpIGJ1dCB3aXRoIGFuIGVtcHR5IGxheWVyIHJlY3Rhbmds
ZSB3aGVuCiAgICAgLy8gbGF5ZXIgZG9lc24ndCBkcmF3IGNvbnRlbnRzLgogICAgIGlmIChkcmF3
c0NvbnRlbnQoKSkKICAgICAgICAgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOwogCi0g
ICAgcHJlcGFyZVRvVXBkYXRlKGxheWVyUmVjdCwgb2NjbHVzaW9uKTsKKyAgICB1cGRhdGVMYXll
clJlY3QodXBkYXRlciwgbGF5ZXJSZWN0LCBvY2NsdXNpb24pOwogICAgIG1fbmVlZHNEaXNwbGF5
ID0gZmFsc2U7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRl
bnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKK3ZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OmlkbGVVcGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwg
Y29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgaWYgKCFkcmF3c0Nv
bnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgSW50UmVjdCBsYXllclJlY3Qg
PSB2aXNpYmxlTGF5ZXJSZWN0KCk7Ci0gICAgcHJlcGFyZVRvVXBkYXRlSWRsZShsYXllclJlY3Qs
IG9jY2x1c2lvbik7CisgICAgaWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBsYXllclJlY3Qs
IG9jY2x1c2lvbik7CiAgICAgaWYgKG5lZWRzSWRsZVBhaW50KGxheWVyUmVjdCkpCiAgICAgICAg
IHNldE5lZWRzQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRl
eCBlNjk5NGEyMWFlZmFjMjE0MDg4N2U1YmJkOGFiYjIwM2M5YWI4MTc5Li40NzNiMzgwZmFmMzU1
MDE4ZDcxZGFhODcyN2Q0YmY2MzVkYTFlYmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmgKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJEZWxlZ2F0ZSgp
IHsgbV9kZWxlZ2F0ZSA9IDA7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2Ns
dXNpb25UcmFja2VyKik7Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0
eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKEND
VGV4dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgaWRsZVVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmNwcAppbmRleCAzOTM5MTU4YTg1YjU3M2ZiMmQ0YjU3ZmUxYTVlZjZm
MmZiZjBmZjAxLi5kNGE0MzAxMmQ0NTZiOTEwMDBkYWY3MmUyMWM1YmRlYWRiNTM1YmM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJH
QkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogICAgIH0K
IAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBm
bG9hdCAvKiBjb250ZW50c1NjYWxlICovLCBJbnRSZWN0KiAvKiByZXN1bHRpbmdPcGFxdWVSZWN0
ICovKQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllclJlY3QoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovLCBJbnRSZWN0KiAvKiByZXN1bHRpbmdPcGFxdWVS
ZWN0ICovKQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGls
ZVNpemUpOwogICAgIH0KQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1
bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE5lZWRzRGlzcGxheSgpOwog
fQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tl
ciogb2NjbHVzaW9uKQogewogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsKICAg
ICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEltYWdlTGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
KiBvY2NsdXNpbwogICAgICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogICAgIH0KIAotICAg
IHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCksIG9jY2x1c2lvbik7CisgICAgdXBk
YXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVMYXllclJlY3QoKSwgb2NjbHVzaW9uKTsKIH0K
IAogdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCBiMDFlZjI5ZGExM2QwZTExMTVlODQx
YWMyMGY0ZTYwZThhYzE2NDNmLi40OTQ4OGNkMDgwNDIxZDRjMThiOTg5YmM2OTRiNzIwYjIxYjk2
NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNDksNyArNDksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJ
ZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogICAgIHZp
cnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29u
dGVudHMoSW1hZ2UqIGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBiOTgwMjJiNTJkYTU4
YjkxOTdjYmY1NDQ4Y2I2ZDQwYTlhMDdjMjcwLi43NGRiOGY4ZDEyM2MxOWZkMjI5OWNlNzdhYWNh
YjFlOGE0YjZhYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xNzEsOSArMTcxLDggQEAgcHVi
bGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3Jp
dHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNEcmF3YWJsZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9jY2x1c2lvbiAqLykg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09j
Y2x1c2lvblRyYWNrZXIqIC8qIG9jY2x1c2lvbiAqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRh
dGVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiwgY29u
c3QgQ0NPY2NsdXNpb25UcmFja2VyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIGlkbGVVcGRhdGUo
Q0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2
ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0
dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCBmMWYxMGU5N2Jh
MGI1Zjk5YzU0ZjIwMjIxMTE4ZjJhMzRjOWUwOWVhLi5kOTRlYTcyMmEzZTE3OTJkNGQ5ODQ5ODUy
MmI3Y2Q3NTdjYjhmOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTY0
LDI0ICs2NCwyNCBAQCBwdWJsaWM6CiAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
dGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogICAgIE1hbmFnZWRUZXh0dXJl
KiBtYW5hZ2VkVGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS0+dGV4dHVyZSgpOyB9CiAKLSAg
ICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhbV9kaXJ0eVJlY3QuaXNFbXB0eSgpOyB9
CisgICAgYm9vbCBpc0RpcnR5KCkgY29uc3QgeyByZXR1cm4gIWRpcnR5UmVjdC5pc0VtcHR5KCk7
IH0KICAgICB2b2lkIGNvcHlBbmRDbGVhckRpcnR5KCkKICAgICB7Ci0gICAgICAgIG1fdXBkYXRl
UmVjdCA9IG1fZGlydHlSZWN0OwotICAgICAgICBtX2RpcnR5UmVjdCA9IEludFJlY3QoKTsKKyAg
ICAgICAgdXBkYXRlUmVjdCA9IGRpcnR5UmVjdDsKKyAgICAgICAgZGlydHlSZWN0ID0gSW50UmVj
dCgpOwogICAgIH0KICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGxheWVyIHdhcyBkaXJ0eSBh
bmQgbm90IHVwZGF0ZWQgaW4gdGhlIGN1cnJlbnQgZnJhbWUuIEZvciB0aWxlcyB0aGF0IHdlcmUg
bm90IGN1bGxlZCwgdGhlCiAgICAgLy8gdXBkYXRlUmVjdCBob2xkcyB0aGUgYXJlYSBvZiB0aGUg
dGlsZSB0aGF0IHdhcyB1cGRhdGVkLiBPdGhlcndpc2UsIHRoZSBhcmVhIHRoYXQgd291bGQgaGF2
ZSBiZWVuIHVwZGF0ZWQuCi0gICAgYm9vbCBpc0RpcnR5Rm9yQ3VycmVudEZyYW1lKCkgeyByZXR1
cm4gIW1fZGlydHlSZWN0LmlzRW1wdHkoKSAmJiAobV91cGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAh
bV91cGRhdGVkKTsgfQorICAgIGJvb2wgaXNEaXJ0eUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJu
ICFkaXJ0eVJlY3QuaXNFbXB0eSgpICYmICh1cGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhdXBkYXRl
ZCk7IH0KIAotICAgIEludFJlY3QgbV9kaXJ0eVJlY3Q7Ci0gICAgSW50UmVjdCBtX3VwZGF0ZVJl
Y3Q7Ci0gICAgYm9vbCBtX3BhcnRpYWxVcGRhdGU7Ci0gICAgYm9vbCBtX3VwZGF0ZWQ7CisgICAg
SW50UmVjdCBkaXJ0eVJlY3Q7CisgICAgSW50UmVjdCB1cGRhdGVSZWN0OworICAgIGJvb2wgcGFy
dGlhbFVwZGF0ZTsKKyAgICBib29sIHVwZGF0ZWQ7CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFVw
ZGF0YWJsZVRpbGUoUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiB0ZXh0
dXJlKQotICAgICAgICA6IG1fcGFydGlhbFVwZGF0ZShmYWxzZSkKLSAgICAgICAgLCBtX3VwZGF0
ZWQoZmFsc2UpCisgICAgICAgIDogcGFydGlhbFVwZGF0ZShmYWxzZSkKKyAgICAgICAgLCB1cGRh
dGVkKGZhbHNlKQogICAgICAgICAsIG1fdGV4dHVyZSh0ZXh0dXJlKQogICAgIHsKICAgICB9CkBA
IC05NSw2ICs5NSw3IEBAIFRpbGVkTGF5ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNocm9taXVtKCkK
ICAgICAsIG1fc2tpcHNEcmF3KGZhbHNlKQogICAgICwgbV9za2lwc0lkbGVQYWludChmYWxzZSkK
ICAgICAsIG1fc2FtcGxlZFRleGVsRm9ybWF0KExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRU
ZXhlbEZvcm1hdEludmFsaWQpCisgICAgLCBtX2RpZFBhaW50KGZhbHNlKQogICAgICwgbV90aWxp
bmdPcHRpb24oQXV0b1RpbGUpCiB7CiAgICAgbV90aWxlciA9IENDTGF5ZXJUaWxpbmdEYXRhOjpj
cmVhdGUoSW50U2l6ZShkZWZhdWx0VGlsZVNpemUsIGRlZmF1bHRUaWxlU2l6ZSksIENDTGF5ZXJU
aWxpbmdEYXRhOjpIYXNCb3JkZXJUZXhlbHMpOwpAQCAtMTgzLDY4ICsxODQsNiBAQCBJbnRTaXpl
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y29udGVudEJvdW5kcygpIGNvbnN0CiAgICAgcmV0dXJuIElu
dFNpemUobHJvdW5kZihib3VuZHMoKS53aWR0aCgpICogY29udGVudHNTY2FsZSgpKSwgbHJvdW5k
Zihib3VuZHMoKS5oZWlnaHQoKSAqIGNvbnRlbnRzU2NhbGUoKSkpOwogfQogCi12b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCosIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCi17Ci0gICAgLy8gUGFpbnRpbmcgY291bGQg
Y2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUg
dGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRhdGUuCi0gICAgaWYgKG1fc2tpcHNE
cmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LmlzRW1wdHkoKSB8fCBtX3RpbGVyLT5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGludCBsZWZ0ID0gbV9yZXF1ZXN0ZWRV
cGRhdGVUaWxlc1JlY3QueCgpOwotICAgIGludCB0b3AgPSBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVz
UmVjdC55KCk7Ci0gICAgaW50IHJpZ2h0ID0gbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QubWF4
WCgpIC0gMTsKLSAgICBpbnQgYm90dG9tID0gbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QubWF4
WSgpIC0gMTsKLSAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7Ci0gICAg
ICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKLSAgICAgICAgICAgIFVw
ZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7Ci0KLSAgICAgICAgICAgIC8vIFJlcXVp
cmVkIHRpbGVzIGFyZSBjcmVhdGVkIGluIHByZXBhcmVUb1VwZGF0ZSgpLiBBIHRpbGUgc2hvdWxk
Ci0gICAgICAgICAgICAvLyBuZXZlciBiZSByZW1vdmVkIGJldHdlZW4gdGhlIGNhbGwgdG8gcHJl
cGFyZVRvVXBkYXRlKCkgYW5kIHRoZQotICAgICAgICAgICAgLy8gY2FsbCB0byB1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKCkuCi0gICAgICAgICAgICBpZiAoIXRpbGUpCi0gICAgICAgICAgICAg
ICAgQ1JBU0goKTsKLQotICAgICAgICAgICAgaWYgKCF0aWxlLT5tX3VwZGF0ZWQpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IHRp
bGUtPm1fdXBkYXRlUmVjdDsKLSAgICAgICAgICAgIGlmICh0aWxlLT5tX3VwZGF0ZVJlY3QuaXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBBU1NFUlQo
dGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNSZXNlcnZlZCgpKTsKLSAgICAgICAgICAgIGNvbnN0
IEludFBvaW50IGFuY2hvciA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpLmxvY2F0aW9uKCk7Ci0K
LSAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aWxlLXNwYWNlIHJlY3RhbmdsZSB0byB1cGxvYWQg
aW50by4KLSAgICAgICAgICAgIEludFJlY3QgZGVzdFJlY3QoSW50UG9pbnQoc291cmNlUmVjdC54
KCkgLSBhbmNob3IueCgpLCBzb3VyY2VSZWN0LnkoKSAtIGFuY2hvci55KCkpLCBzb3VyY2VSZWN0
LnNpemUoKSk7Ci0gICAgICAgICAgICBpZiAoZGVzdFJlY3QueCgpIDwgMCkKLSAgICAgICAgICAg
ICAgICBDUkFTSCgpOwotICAgICAgICAgICAgaWYgKGRlc3RSZWN0LnkoKSA8IDApCi0gICAgICAg
ICAgICAgICAgQ1JBU0goKTsKLQotICAgICAgICAgICAgLy8gT2Zmc2V0IGZyb20gcGFpbnQgcmVj
dGFuZ2xlIHRvIHRoaXMgdGlsZSdzIGRpcnR5IHJlY3RhbmdsZS4KLSAgICAgICAgICAgIEludFBv
aW50IHBhaW50T2Zmc2V0KHNvdXJjZVJlY3QueCgpIC0gbV9wYWludFJlY3QueCgpLCBzb3VyY2VS
ZWN0LnkoKSAtIG1fcGFpbnRSZWN0LnkoKSk7Ci0gICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQu
eCgpIDwgMCkKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotICAgICAgICAgICAgaWYgKHBhaW50
T2Zmc2V0LnkoKSA8IDApCi0gICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgICAgIGlm
IChwYWludE9mZnNldC54KCkgKyBkZXN0UmVjdC53aWR0aCgpID4gbV9wYWludFJlY3Qud2lkdGgo
KSkKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0
LnkoKSArIGRlc3RSZWN0LmhlaWdodCgpID4gbV9wYWludFJlY3QuaGVpZ2h0KCkpCi0gICAgICAg
ICAgICAgICAgQ1JBU0goKTsKLQotICAgICAgICAgICAgaWYgKHRpbGUtPm1fcGFydGlhbFVwZGF0
ZSkKLSAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZFBhcnRpYWxVcGRhdGUodGlsZS0+dGV4
dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgdXBkYXRlci5hcHBlbmRVcGRhdGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBUaGUgdXBkYXRlUmVjdCBz
aG91bGQgYmUgaW4gbGF5ZXIgc3BhY2UuIFNvIHdlIGhhdmUgdG8gY29udmVydCB0aGUgcGFpbnRS
ZWN0IGZyb20gY29udGVudCBzcGFjZSB0byBsYXllciBzcGFjZS4KLSAgICBtX3VwZGF0ZVJlY3Qg
PSBGbG9hdFJlY3QobV9wYWludFJlY3QpOwotICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBib3VuZHMo
KS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKTsK
LSAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IGJvdW5kcygpLmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSk7Ci0gICAgbV91cGRhdGVSZWN0LnNjYWxl
KHdpZHRoU2NhbGUsIGhlaWdodFNjYWxlKTsKLX0KLQogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24gdGlsaW5nT3B0aW9uKQogewogICAgIG1fdGls
aW5nT3B0aW9uID0gdGlsaW5nT3B0aW9uOwpAQCAtMzEyLDcgKzI1MSw3IEBAIFVwZGF0YWJsZVRp
bGUqIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZShpbnQgaSwgaW50IGopCiAgICAgVXBk
YXRhYmxlVGlsZSogYWRkZWRUaWxlID0gdGlsZS5nZXQoKTsKICAgICBtX3RpbGVyLT5hZGRUaWxl
KHRpbGUucmVsZWFzZSgpLCBpLCBqKTsKIAotICAgIGFkZGVkVGlsZS0+bV9kaXJ0eVJlY3QgPSBt
X3RpbGVyLT50aWxlUmVjdChhZGRlZFRpbGUpOworICAgIGFkZGVkVGlsZS0+ZGlydHlSZWN0ID0g
bV90aWxlci0+dGlsZVJlY3QoYWRkZWRUaWxlKTsKICAgICByZXR1cm4gYWRkZWRUaWxlOwogfQog
CkBAIC0zNTAsNyArMjg5LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVS
ZWN0KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKICAgICAgICAgQVNTRVJUKHRpbGUpOwogICAg
ICAgICBJbnRSZWN0IGJvdW5kID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CiAgICAgICAgIGJv
dW5kLmludGVyc2VjdChsYXllclJlY3QpOwotICAgICAgICB0aWxlLT5tX2RpcnR5UmVjdC51bml0
ZShib3VuZCk7CisgICAgICAgIHRpbGUtPmRpcnR5UmVjdC51bml0ZShib3VuZCk7CiAgICAgfQog
fQogCkBAIC0zODcsNyArMzI2LDcgQEAgYm9vbCBUaWxlZExheWVyQ2hyb21pdW06OnRpbGVPbmx5
TmVlZHNQYXJ0aWFsVXBkYXRlKFVwZGF0YWJsZVRpbGUqIHRpbGUpCiAgICAgaWYgKCF0aWxlLT5p
c0RpcnR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiAhdGlsZS0+bV9k
aXJ0eVJlY3QuY29udGFpbnMobV90aWxlci0+dGlsZVJlY3QodGlsZSkpOworICAgIHJldHVybiAh
dGlsZS0+ZGlydHlSZWN0LmNvbnRhaW5zKG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpKTsKIH0KIAog
Ly8gRGlydHkgdGlsZXMgd2l0aCB2YWxpZCB0ZXh0dXJlcyBuZWVkcyBidWZmZXJlZCB1cGRhdGUg
dG8gZ3VhcmFudGVlIHRoYXQKQEAgLTQwNywxNSArMzQ2LDE1IEBAIGJvb2wgVGlsZWRMYXllckNo
cm9taXVtOjp0aWxlTmVlZHNCdWZmZXJlZFVwZGF0ZShVcGRhdGFibGVUaWxlKiB0aWxlKQogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBk
YXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90
dG9tLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKK3ZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjp1cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQg
cmlnaHQsIGludCBib3R0b20sIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2Nj
bHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogewogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZO
ZWVkZWQoKTsKIAogICAgIC8vIENyZWF0ZSB0aWxlcyBhcyBuZWVkZWQsIGV4cGFuZGluZyBhIGRp
cnR5IHJlY3QgdG8gY29udGFpbiBhbGwKICAgICAvLyB0aGUgZGlydHkgcmVnaW9ucyBjdXJyZW50
bHkgYmVpbmcgZHJhd24uIEFsbCBkaXJ0eSB0aWxlcyB0aGF0IGFyZSB0byBiZSBwYWludGVkCi0g
ICAgLy8gZ2V0IHRoZWlyIG1fdXBkYXRlUmVjdCBzZXQgdG8gbV9kaXJ0eVJlY3QgYW5kIG1fZGly
dHlSZWN0IGNsZWFyZWQuIFRoaXMgd2F5IGlmCi0gICAgLy8gaW52YWxpZGF0ZVJlY3QgaXMgaW52
b2tlZCBkdXJpbmcgcHJlcGFyZVRvVXBkYXRlIHdlIGRvbid0IGxvc2UgdGhlIHJlcXVlc3QuCi0g
ICAgSW50UmVjdCBkaXJ0eUxheWVyUmVjdDsKKyAgICAvLyBnZXQgdGhlaXIgdXBkYXRlUmVjdCBz
ZXQgdG8gZGlydHlSZWN0IGFuZCBkaXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKKyAgICAv
LyBpbnZhbGlkYXRlUmVjdCBpcyBpbnZva2VkIGR1cmluZyB1cGRhdGVMYXllclJlY3Qgd2UgZG9u
J3QgbG9zZSB0aGUgcmVxdWVzdC4KKyAgICBJbnRSZWN0IHBhaW50UmVjdDsKICAgICBmb3IgKGlu
dCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0
OyBpIDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0
aWxlQXQoaSwgaik7CkBAIC00MjQsNyArMzYzLDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAog
CiAgICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxl
ci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkgewogICAgICAgICAgICAgICAgIC8vIFNl
dHMgdGhlIGRpcnR5IHJlY3QgdG8gYSBmdWxsLXNpemVkIHRpbGUgd2l0aCBib3JkZXIgdGV4ZWxz
LgotICAgICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3Qo
dGlsZSk7CisgICAgICAgICAgICAgICAgdGlsZS0+ZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJl
Y3QodGlsZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFdoZW4gbm90IGlkbGUg
cGFpbnRpbmcsIGlmIHRoZSB2aXNpYmxlIHJlZ2lvbiBvZiB0aGUgdGlsZSBpcyBvY2NsdWRlZCwg
ZG9uJ3QgcmVzZXJ2ZSBhIHRleHR1cmUgb3IgdXBkYXRlIHRoZSB0aWxlLgpAQCAtNDMyLDIzICsz
NzEsMjMgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJv
b2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgaWYgKCFpZGxlICYm
IG9jY2x1c2lvbikgewogICAgICAgICAgICAgICAgIEludFJlY3QgdmlzaWJsZVRpbGVSZWN0ID0g
aW50ZXJzZWN0aW9uKG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaiksIHZpc2libGVMYXllclJlY3Qo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKG9jY2x1c2lvbi0+b2NjbHVkZWQodGhpcywgdmlzaWJs
ZVRpbGVSZWN0KSkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIXRpbGUtPm1fdXBkYXRl
ZCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghdGlsZS0+dXBkYXRlZCk7CiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgLy8gV2UgY29tZSB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gbXVsdGlwbGUg
dGltZXMgZHVyaW5nIGEgY29tbWl0LCBhbmQgbV91cGRhdGVkIHNob3VsZCBiZSB0cnVlIGlmIHRo
ZSB0aWxlIGlzIG5vdCBjdWxsZWQKKyAgICAgICAgICAgIC8vIFdlIGNvbWUgdGhyb3VnaCB0aGlz
IGZ1bmN0aW9uIG11bHRpcGxlIHRpbWVzIGR1cmluZyBhIGNvbW1pdCwgYW5kIHVwZGF0ZWQgc2hv
dWxkIGJlIHRydWUgaWYgdGhlIHRpbGUgaXMgbm90IGN1bGxlZAogICAgICAgICAgICAgLy8gYW55
IHNpbmdsZSB0aW1lIHRocm91Z2ggdGhlIGZ1bmN0aW9uLgotICAgICAgICAgICAgdGlsZS0+bV91
cGRhdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRpbGUtPnVwZGF0ZWQgPSB0cnVlOwogCiAgICAg
ICAgICAgICAvLyBGSVhNRTogRGVjaWRlIGlmIHBhcnRpYWwgdXBkYXRlIHNob3VsZCBiZSBhbGxv
d2VkIGJhc2VkIG9uIGNvc3QKICAgICAgICAgICAgIC8vIG9mIHVwZGF0ZS4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3Mzc2CiAgICAgICAgICAgICBpZiAodGlsZU9u
bHlOZWVkc1BhcnRpYWxVcGRhdGUodGlsZSkgJiYgbGF5ZXJUcmVlSG9zdCgpICYmIGxheWVyVHJl
ZUhvc3QoKS0+cmVxdWVzdFBhcnRpYWxUZXh0dXJlVXBkYXRlKCkpCi0gICAgICAgICAgICAgICAg
dGlsZS0+bV9wYXJ0aWFsVXBkYXRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aWxlLT5wYXJ0
aWFsVXBkYXRlID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2UgaWYgKHRpbGVOZWVkc0J1ZmZlcmVk
VXBkYXRlKHRpbGUpICYmIGxheWVyVHJlZUhvc3QoKSkgewogICAgICAgICAgICAgICAgIGxheWVy
VHJlZUhvc3QoKS0+ZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0KHRpbGUtPm1hbmFnZWRUZXh0dXJl
KCktPnN0ZWFsKCkpOwogICAgICAgICAgICAgICAgIC8vIFNldHMgdGhlIGRpcnR5IHJlY3QgdG8g
YSBmdWxsLXNpemVkIHRpbGUgd2l0aCBib3JkZXIgdGV4ZWxzLgotICAgICAgICAgICAgICAgIHRp
bGUtPm1fZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CisgICAgICAgICAgICAg
ICAgdGlsZS0+ZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+cmVzZXJ2ZSht
X3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7CkBAIC00NTksMTMgKzM5OCwx
MSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBp
ZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgICAgICAgICAgICAgIGlmICghYmFj
a2dyb3VuZENvdmVyc1ZpZXdwb3J0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3NraXBz
RHJhdyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIG1fdGlsZXItPnJlc2V0KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fcGFpbnRSZWN0ID0gSW50UmVjdCgpOwotICAgICAgICAgICAgICAg
ICAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QoKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBkaXJ0eUxheWVyUmVjdC51bml0ZSh0aWxlLT5tX2RpcnR5UmVjdCk7CisgICAgICAgICAg
ICBwYWludFJlY3QudW5pdGUodGlsZS0+ZGlydHlSZWN0KTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtNDc0LDI0ICs0MTEsMjQgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgIGZvciAoaW50
IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7
IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRp
bGVBdChpLCBqKTsKLSAgICAgICAgICAgIGlmICh0aWxlLT5tX3VwZGF0ZWQpCisgICAgICAgICAg
ICBpZiAodGlsZS0+dXBkYXRlZCkKICAgICAgICAgICAgICAgICB0aWxlLT5jb3B5QW5kQ2xlYXJE
aXJ0eSgpOwogICAgICAgICAgICAgZWxzZSBpZiAoIWlkbGUgJiYgb2NjbHVzaW9uICYmIHRpbGUt
PmlzRGlydHkoKSkKICAgICAgICAgICAgICAgICBvY2NsdXNpb24tPm92ZXJkcmF3TWV0cmljcygp
LmRpZEN1bGxUaWxlRm9yVXBsb2FkKCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX3BhaW50
UmVjdCA9IGRpcnR5TGF5ZXJSZWN0OwotICAgIGlmIChkaXJ0eUxheWVyUmVjdC5pc0VtcHR5KCkp
CisgICAgaWYgKHBhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChvY2NsdXNpb24pCi0gICAgICAgIG9jY2x1c2lvbi0+b3ZlcmRyYXdNZXRyaWNzKCkuZGlkUGFp
bnQobV9wYWludFJlY3QpOworICAgICAgICBvY2NsdXNpb24tPm92ZXJkcmF3TWV0cmljcygpLmRp
ZFBhaW50KHBhaW50UmVjdCk7CiAKLSAgICAvLyBEdWUgdG8gYm9yZGVycywgd2hlbiB0aGUgcGFp
bnQgcmVjdCBpcyBleHRlbmRlZCB0byB0aWxlIGJvdW5kYXJpZXMsIGl0Ci0gICAgLy8gbWF5IGVu
ZCB1cCBvdmVybGFwcGluZyBtb3JlIHRpbGVzIHRoYW4gdGhlIG9yaWdpbmFsIGNvbnRlbnQgcmVj
dC4gUmVjb3JkCi0gICAgLy8gdGhlIG9yaWdpbmFsIHRpbGVzIHNvIHdlIGRvbid0IHVwbG9hZCBt
b3JlIHRpbGVzIHRoYW4gbmVjZXNzYXJ5LgotICAgIG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0
ID0gSW50UmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCArIDEsIGJvdHRvbSAtIHRvcCArIDEp
OworICAgIC8vIFRoZSB1cGRhdGVSZWN0IHNob3VsZCBiZSBpbiBsYXllciBzcGFjZS4gU28gd2Ug
aGF2ZSB0byBjb252ZXJ0IHRoZSBwYWludFJlY3QgZnJvbSBjb250ZW50IHNwYWNlIHRvIGxheWVy
IHNwYWNlLgorICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChwYWludFJlY3QpOworICAgIGZs
b2F0IHdpZHRoU2NhbGUgPSBib3VuZHMoKS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNv
bnRlbnRCb3VuZHMoKS53aWR0aCgpKTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IGJvdW5kcygp
LmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSk7
CisgICAgbV91cGRhdGVSZWN0LnNjYWxlKHdpZHRoU2NhbGUsIGhlaWdodFNjYWxlKTsKIAogICAg
IC8vIENhbGxpbmcgcHJlcGFyZVRvVXBkYXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQs
IHdoaWNoIG1heSBoYXZlIHRoZSBzaWRlCiAgICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21w
b3NpdGluZywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRl
ciB0byBiZSBkZWxldGVkLgpAQCAtNDk5LDI4ICs0MzYsMjYgQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3As
IGludAogICAgIC8vIHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRo
ZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCiAgICAgUmVmUHRyPExh
eWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKICAgICBJbnRS
ZWN0IHBhaW50ZWRPcGFxdWVSZWN0OwotICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1Vw
ZGF0ZShtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVy
VGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSwgJnBhaW50ZWRPcGFxdWVSZWN0KTsKKyAgICB0ZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUocGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6
ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVudHNTY2FsZSgpLCAmcGFpbnRl
ZE9wYXF1ZVJlY3QpOworICAgIG1fZGlkUGFpbnQgPSB0cnVlOworCiAgICAgZm9yIChpbnQgaiA9
IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8
PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0
KGksIGopOwogCi0gICAgICAgICAgICAvLyBUaWxlcyBhcmUgY3JlYXRlZCBiZWZvcmUgcHJlcGFy
ZVRvVXBkYXRlKCkgaXMgY2FsbGVkLgotICAgICAgICAgICAgaWYgKCF0aWxlKQotICAgICAgICAg
ICAgICAgIENSQVNIKCk7Ci0KICAgICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGVy
LT50aWxlQm91bmRzKGksIGopOwogCi0gICAgICAgICAgICBpZiAoIXRpbGUtPm1fdXBkYXRlZCkK
KyAgICAgICAgICAgIGlmICghdGlsZS0+dXBkYXRlZCkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVjdCBhcyB0aGUgYWJvdmUgbG9vcCBj
b3BpZWQgdGhlIGRpcnR5IHJlY3QgZm9yIHRoaXMgZnJhbWUgdG8gbV91cGRhdGVSZWN0LgotICAg
ICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0Owor
ICAgICAgICAgICAgLy8gVXNlIHVwZGF0ZVJlY3QgYXMgdGhlIGFib3ZlIGxvb3AgY29waWVkIHRo
ZSBkaXJ0eSByZWN0IGZvciB0aGlzIGZyYW1lIHRvIHVwZGF0ZVJlY3QuCisgICAgICAgICAgICBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QgPSB0aWxlLT51cGRhdGVSZWN0OwogICAgICAgICAgICAg
aWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIC8vIFNhdmUgd2hhdCB3YXMgcGFpbnRlZCBvcGFxdWUgaW4gdGhlIHRpbGUuIEtl
ZXAgdGhlIG9sZCBhcmVhIGlmIHRoZSBwYWludCBkaWRuJ3QgdG91Y2ggaXQsIGFuZCBkaWRuJ3Qg
cGFpbnQgc29tZQogICAgICAgICAgICAgLy8gb3RoZXIgcGFydCBvZiB0aGUgdGlsZSBvcGFxdWUu
Ci0gICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVkUmVjdCA9IGludGVyc2VjdGlvbih0aWxl
UmVjdCwgbV9wYWludFJlY3QpOworICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRlZFJlY3Qg
PSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIHBhaW50UmVjdCk7CiAgICAgICAgICAgICBJbnRSZWN0
IHRpbGVQYWludGVkT3BhcXVlUmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgcGFpbnRlZE9w
YXF1ZVJlY3QpOwogICAgICAgICAgICAgaWYgKCF0aWxlUGFpbnRlZFJlY3QuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAgICAgSW50UmVjdCBwYWludEluc2lkZVRpbGVPcGFxdWVSZWN0ID0gaW50
ZXJzZWN0aW9uKHRpbGUtPm9wYXF1ZVJlY3QoKSwgdGlsZVBhaW50ZWRSZWN0KTsKQEAgLTUzNiwx
NSArNDcxLDM5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxl
cyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIHNvdXJjZVJl
Y3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CiAgICAgICAgICAgICAvLyBQYWludCByZWN0IG5vdCBn
dWFyYW50ZWVkIHRvIGxpbmUgdXAgb24gdGlsZSBib3VuZGFyaWVzLCBzbwogICAgICAgICAgICAg
Ly8gbWFrZSBzdXJlIHRoYXQgc291cmNlUmVjdCBkb2Vzbid0IGV4dGVuZCBvdXRzaWRlIG9mIGl0
LgotICAgICAgICAgICAgc291cmNlUmVjdC5pbnRlcnNlY3QobV9wYWludFJlY3QpOworICAgICAg
ICAgICAgc291cmNlUmVjdC5pbnRlcnNlY3QocGFpbnRSZWN0KTsKIAotICAgICAgICAgICAgdGls
ZS0+bV91cGRhdGVSZWN0ID0gc291cmNlUmVjdDsKICAgICAgICAgICAgIGlmIChzb3VyY2VSZWN0
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgdGls
ZS0+dGV4dHVyZSgpLT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKICAgICAgICAgICAgIGlmIChv
Y2NsdXNpb24pCiAgICAgICAgICAgICAgICAgb2NjbHVzaW9uLT5vdmVyZHJhd01ldHJpY3MoKS5k
aWRVcGxvYWQoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgc291cmNlUmVjdCwgdGlsZS0+b3BhcXVl
UmVjdCgpKTsKKworICAgICAgICAgICAgY29uc3QgSW50UG9pbnQgYW5jaG9yID0gbV90aWxlci0+
dGlsZVJlY3QodGlsZSkubG9jYXRpb24oKTsKKworICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRp
bGUtc3BhY2UgcmVjdGFuZ2xlIHRvIHVwbG9hZCBpbnRvLgorICAgICAgICAgICAgSW50UmVjdCBk
ZXN0UmVjdChJbnRQb2ludChzb3VyY2VSZWN0LngoKSAtIGFuY2hvci54KCksIHNvdXJjZVJlY3Qu
eSgpIC0gYW5jaG9yLnkoKSksIHNvdXJjZVJlY3Quc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChk
ZXN0UmVjdC54KCkgPCAwKQorICAgICAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgICAgICBp
ZiAoZGVzdFJlY3QueSgpIDwgMCkKKyAgICAgICAgICAgICAgICBDUkFTSCgpOworCisgICAgICAg
ICAgICAvLyBPZmZzZXQgZnJvbSBwYWludCByZWN0YW5nbGUgdG8gdGhpcyB0aWxlJ3MgZGlydHkg
cmVjdGFuZ2xlLgorICAgICAgICAgICAgSW50UG9pbnQgcGFpbnRPZmZzZXQoc291cmNlUmVjdC54
KCkgLSBwYWludFJlY3QueCgpLCBzb3VyY2VSZWN0LnkoKSAtIHBhaW50UmVjdC55KCkpOworICAg
ICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LngoKSA8IDApCisgICAgICAgICAgICAgICAgQ1JBU0go
KTsKKyAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgPCAwKQorICAgICAgICAgICAgICAg
IENSQVNIKCk7CisgICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueCgpICsgZGVzdFJlY3Qud2lk
dGgoKSA+IHBhaW50UmVjdC53aWR0aCgpKQorICAgICAgICAgICAgICAgIENSQVNIKCk7CisgICAg
ICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBwYWludFJl
Y3QuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKworICAgICAgICAgICAgaWYg
KHRpbGUtPnBhcnRpYWxVcGRhdGUpCisgICAgICAgICAgICAgICAgdXBkYXRlci5hcHBlbmRQYXJ0
aWFsVXBkYXRlKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kVXBkYXRlKHRpbGUtPnRl
eHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAt
NTY4LDcgKzUyNyw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpyZXNlcnZlVGV4dHVyZXMo
KQogICAgICAgICAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwogCiAgICAgICAgICAg
ICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+dGlsZVNpemUo
KSwgbV90ZXh0dXJlRm9ybWF0KSkKLSAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5UmVjdCA9
IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAgICAgIHRpbGUtPmRpcnR5UmVj
dCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOwogCiAgICAgICAgICAgICBpZiAoIXRpbGUtPm1h
bmFnZWRUZXh0dXJlKCktPnJlc2VydmUobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9y
bWF0KSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01ODYsMjIgKzU0NSwyMCBAQCBSZWdp
b24gVGlsZWRMYXllckNocm9taXVtOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0
CiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpyZXNldFVwZGF0ZVN0YXRlKCkKIHsKLSAgICAv
LyBSZXNldCBtX3VwZGF0ZVJlY3QgZm9yIGFsbCB0aWxlcy4KICAgICBDQ0xheWVyVGlsaW5nRGF0
YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV90aWxlci0+dGlsZXMoKS5lbmQoKTsK
ICAgICBmb3IgKENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdGVy
ID0gbV90aWxlci0+dGlsZXMoKS5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAg
ICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxlKj4oaXRl
ci0+c2Vjb25kLmdldCgpKTsKLSAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gSW50UmVjdCgp
OwotICAgICAgICB0aWxlLT5tX3BhcnRpYWxVcGRhdGUgPSBmYWxzZTsKLSAgICAgICAgdGlsZS0+
bV91cGRhdGVkID0gZmFsc2U7CisgICAgICAgIHRpbGUtPnVwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7
CisgICAgICAgIHRpbGUtPnBhcnRpYWxVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgdGlsZS0+dXBk
YXRlZCA9IGZhbHNlOwogICAgIH0KIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IENDT2NjbHVzaW9uVHJh
Y2tlciogb2NjbHVzaW9uKQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUmVj
dChDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNv
bnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogewogICAgIG1fc2tpcHNEcmF3ID0g
ZmFsc2U7CiAgICAgbV9za2lwc0lkbGVQYWludCA9IGZhbHNlOwotICAgIG1fcmVxdWVzdGVkVXBk
YXRlVGlsZXNSZWN0ID0gSW50UmVjdCgpOwotICAgIG1fcGFpbnRSZWN0ID0gSW50UmVjdCgpOwor
ICAgIG1fZGlkUGFpbnQgPSBmYWxzZTsKIAogICAgIHVwZGF0ZUJvdW5kcygpOwogCkBAIC02MTMs
MTMgKzU3MCwxMyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdQogICAgIGludCBsZWZ0LCB0b3As
IHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXll
clJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAKLSAgICBwcmVwYXJlVG9VcGRhdGVU
aWxlcyhmYWxzZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCBvY2NsdXNpb24pOworICAgIHVw
ZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20sIHVwZGF0ZXIsIG9jY2x1
c2lvbik7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxl
KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2Ns
dXNpb24pCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6aWRsZVVwZGF0ZUxheWVyUmVjdChDQ1Rl
eHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEND
T2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogewogICAgIC8vIEFib3J0IGlmIHdlIGhhdmUg
YWxyZWFkeSBwcmVwYXJlZCBhIHBhaW50IG9yIHJ1biBvdXQgb2YgbWVtb3J5LgotICAgIGlmICht
X3NraXBzSWRsZVBhaW50IHx8ICFtX3BhaW50UmVjdC5pc0VtcHR5KCkpCisgICAgaWYgKG1fc2tp
cHNJZGxlUGFpbnQgfHwgbV9kaWRQYWludCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJU
KG1fdGlsZXIpOwpAQCAtNjQzLDE3ICs2MDAsMTYgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBDQ08K
IAogICAgIC8vIElmIHRoZSBsYXllciBpcyBub3QgdmlzaWJsZSwgd2UgaGF2ZSBub3RoaW5nIHRv
IGV4cGFuZCBmcm9tLCBzbyBpbnN0ZWFkIHdlIHByZXBhaW50IHRoZSBvdXRlci1tb3N0IHNldCBv
ZiB0aWxlcy4KICAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBwcmVwYXJl
VG9VcGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludExlZnQsIHByZXBhaW50VG9wLCBwcmVwYWludFJp
Z2h0LCBwcmVwYWludFRvcCwgMCk7Ci0gICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgp
IHx8IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgIHVwZGF0ZVRpbGVzKHRydWUsIHByZXBhaW50
TGVmdCwgcHJlcGFpbnRUb3AsIHByZXBhaW50UmlnaHQsIHByZXBhaW50VG9wLCB1cGRhdGVyLCAw
KTsKKyAgICAgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgcHJlcGFpbnRM
ZWZ0LCBwcmVwYWludEJvdHRvbSwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b20sIDApOwot
ICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQor
ICAgICAgICB1cGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludExlZnQsIHByZXBhaW50Qm90dG9tLCBw
cmVwYWludFJpZ2h0LCBwcmVwYWludEJvdHRvbSwgdXBkYXRlciwgMCk7CisgICAgICAgIGlmICht
X2RpZFBhaW50IHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3As
IHByZXBhaW50TGVmdCwgcHJlcGFpbnRCb3R0b20sIDApOwotICAgICAgICBpZiAoIW1fcGFpbnRS
ZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQorICAgICAgICB1cGRhdGVUaWxlcyh0
cnVlLCBwcmVwYWludExlZnQsIHByZXBhaW50VG9wLCBwcmVwYWludExlZnQsIHByZXBhaW50Qm90
dG9tLCB1cGRhdGVyLCAwKTsKKyAgICAgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQ
YWludCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXMo
dHJ1ZSwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRUb3AsIHByZXBhaW50UmlnaHQsIHByZXBhaW50
Qm90dG9tLCAwKTsKLQorICAgICAgICB1cGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludFJpZ2h0LCBw
cmVwYWludFRvcCwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b20sIHVwZGF0ZXIsIDApOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NjEsMzQgKzYxNywzNCBAQCB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJl
Y3QsIGNvbnN0IENDTwogICAgIG1fdGlsZXItPmxheWVyUmVjdFRvVGlsZUluZGljZXMobGF5ZXJS
ZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogCiAgICAgLy8gT3RoZXJ3aXNlLCBwcmVw
YWludCBhbnl0aGluZyB0aGF0IHdhcyBvY2NsdWRlZCBidXQgaW5zaWRlIHRoZSBsYXllcidzIHZp
c2libGUgcmVnaW9uLgotICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwg
cmlnaHQsIGJvdHRvbSwgMCk7Ci0gICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9z
a2lwc0lkbGVQYWludCkKKyAgICB1cGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCBi
b3R0b20sIHVwZGF0ZXIsIDApOworICAgIGlmIChtX2RpZFBhaW50IHx8IG1fc2tpcHNJZGxlUGFp
bnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZW4gZXhwYW5kIG91dHdhcmRzIGZyb20g
dGhlIHZpc2libGUgYXJlYSB1bnRpbCB3ZSBmaW5kIGEgZGlydHkgcm93IG9yIGNvbHVtbiB0byB1
cGRhdGUuCiAgICAgd2hpbGUgKCFtX3NraXBzSWRsZVBhaW50ICYmIChsZWZ0ID4gcHJlcGFpbnRM
ZWZ0IHx8IHRvcCA+IHByZXBhaW50VG9wIHx8IHJpZ2h0IDwgcHJlcGFpbnRSaWdodCB8fCBib3R0
b20gPCBwcmVwYWludEJvdHRvbSkpIHsKICAgICAgICAgaWYgKGJvdHRvbSA8IHByZXBhaW50Qm90
dG9tKSB7CiAgICAgICAgICAgICArK2JvdHRvbTsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0
ZVRpbGVzKHRydWUsIGxlZnQsIGJvdHRvbSwgcmlnaHQsIGJvdHRvbSwgMCk7Ci0gICAgICAgICAg
ICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQorICAgICAg
ICAgICAgdXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdodCwgYm90dG9tLCB1cGRh
dGVyLCAwKTsKKyAgICAgICAgICAgIGlmIChtX2RpZFBhaW50IHx8IG1fc2tpcHNJZGxlUGFpbnQp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRvcCA+IHBy
ZXBhaW50VG9wKSB7CiAgICAgICAgICAgICAtLXRvcDsKLSAgICAgICAgICAgIHByZXBhcmVUb1Vw
ZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIHRvcCwgMCk7Ci0gICAgICAgICAgICBp
ZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQorICAgICAgICAg
ICAgdXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgdG9wLCB1cGRhdGVyLCAwKTsK
KyAgICAgICAgICAgIGlmIChtX2RpZFBhaW50IHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlZnQgPiBwcmVwYWludExl
ZnQpIHsKICAgICAgICAgICAgIC0tbGVmdDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRp
bGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tLCAwKTsKLSAgICAgICAgICAgIGlmICgh
bV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgICAgICB1
cGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIGxlZnQsIGJvdHRvbSwgdXBkYXRlciwgMCk7Cisg
ICAgICAgICAgICBpZiAobV9kaWRQYWludCB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChyaWdodCA8IHByZXBhaW50Umln
aHQpIHsKICAgICAgICAgICAgICsrcmlnaHQ7Ci0gICAgICAgICAgICBwcmVwYXJlVG9VcGRhdGVU
aWxlcyh0cnVlLCByaWdodCwgdG9wLCByaWdodCwgYm90dG9tLCAwKTsKLSAgICAgICAgICAgIGlm
ICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgICAg
ICB1cGRhdGVUaWxlcyh0cnVlLCByaWdodCwgdG9wLCByaWdodCwgYm90dG9tLCB1cGRhdGVyLCAw
KTsKKyAgICAgICAgICAgIGlmIChtX2RpZFBhaW50IHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC03MTMsOCArNjY5LDYgQEAg
Ym9vbCBUaWxlZExheWVyQ2hyb21pdW06Om5lZWRzSWRsZVBhaW50KGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCkKICAgICAgICAgICAgIC8vIElmIHRoZSBsYXllclJlY3QgaXMgZW1wdHksIHRoZW4g
d2UgYXJlIHBhaW50aW5nIHRoZSBvdXRlci1tb3N0IHNldCBvZiB0aWxlcyBvbmx5LgogICAgICAg
ICAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkgJiYgaSAhPSBsZWZ0ICYmIGkgIT0gcmlnaHQg
JiYgaiAhPSB0b3AgJiYgaiAhPSBib3R0b20pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBpZiAobV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QuY29udGFpbnMoSW50UG9p
bnQoaSwgaikpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgVXBkYXRh
YmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKICAgICAgICAgICAgIGlmICghdGlsZSB8fCAh
dGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3Rl
eHR1cmVGb3JtYXQpIHx8IHRpbGUtPmlzRGlydHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggODFlZTI0OGE3NjhmZjk5ZGY4
NmNlYzBmMThjNGEzMGJjMGFjYzdkYy4uNjA2MDg5M2VjYjNkMjhkMTU4NzFjYzA2YjhkMzEzNzVl
MWU5ZWU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTQyLDcgKzQyLDYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIEND
VGV4dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKQEAgLTg5LDEw
ICs4OCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCByZXNldFVwZGF0ZVN0YXRlKCk7CiAKICAg
ICAvLyBQcmVwYXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2Vj
dCB3aXRoIGxheWVyUmVjdC4KLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBsYXllclJlY3QsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOworICAgIHZvaWQgdXBkYXRl
TGF5ZXJSZWN0KENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNv
bnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogCiAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHRo
aXMgd2lsbCB0cnkgdG8gcGFpbnQgYWRkaXRpb25hbCBzdXJyb3VuZGluZyBjb250ZW50IGlmIGlk
bGUuCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CisgICAgdm9pZCBpZGxlVXBkYXRlTGF5ZXJS
ZWN0KENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEND
T2NjbHVzaW9uVHJhY2tlciopOwogCiAgICAgLy8gQWZ0ZXIgcHJlcGFyaW5nIGFuIHVwZGF0ZSwg
cmV0dXJucyB0cnVlIGlmIG1vcmUgcHJlLXBhaW50aW5nIGlzIG5lZWRlZC4KICAgICBib29sIG5l
ZWRzSWRsZVBhaW50KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CkBAIC0xMTQsMjMgKzExMywx
OSBAQCBwcml2YXRlOgogICAgIGJvb2wgdGlsZU9ubHlOZWVkc1BhcnRpYWxVcGRhdGUoVXBkYXRh
YmxlVGlsZSopOwogICAgIGJvb2wgdGlsZU5lZWRzQnVmZmVyZWRVcGRhdGUoVXBkYXRhYmxlVGls
ZSopOwogCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0
LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20sIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tl
ciopOworICAgIHZvaWQgdXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwg
aW50IHJpZ2h0LCBpbnQgYm90dG9tLCBDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNp
b25UcmFja2VyKik7CiAKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50LCBpbnQpIGNvbnN0
OwogICAgIFVwZGF0YWJsZVRpbGUqIGNyZWF0ZVRpbGUoaW50LCBpbnQpOwogCi0gICAgLy8gVGVt
cG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygpLgotICAgIEludFJlY3QgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1Jl
Y3Q7Ci0KLSAgICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHB1
c2hQcm9wZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRoZSBhcmVhCi0gICAgLy8gb2YgdGhl
IGxheWVyIHRoYXQgaXMgYWN0dWFsbHkgcmUtcGFpbnRlZCBieSBXZWJLaXQuCi0gICAgSW50UmVj
dCBtX3BhaW50UmVjdDsKLQogICAgIEdDM0RlbnVtIG1fdGV4dHVyZUZvcm1hdDsKICAgICBib29s
IG1fc2tpcHNEcmF3OwogICAgIGJvb2wgbV9za2lwc0lkbGVQYWludDsKICAgICBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgbV9zYW1wbGVkVGV4ZWxGb3JtYXQ7CiAKKyAg
ICAvLyBUcmFja3MgaWYgd2UndmUgZG9uZSBhbnkgcGFpbnRpbmcgb24gdGhpcyB1cGRhdGUgY3lj
bGUuCisgICAgYm9vbCBtX2RpZFBhaW50OworCiAgICAgVGlsaW5nT3B0aW9uIG1fdGlsaW5nT3B0
aW9uOwogICAgIE93blB0cjxDQ0xheWVyVGlsaW5nRGF0YT4gbV90aWxlcjsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCA4N2QwMTY4ODY2YzBhNDYzZmEyZTNiNjVlMTU0
OTliNDdkZjI1ZTc3Li5mM2Y2NTU2MGIyZjJlZmMyN2M4OGNkNWNiZTJlMzNhNDdlN2Y4MWNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBX
ZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIExheWVy
Q2hyb21pdW06OmRyYXdzQ29udGVudCgpICYmICFtX2NvbnRleHRMb3N0OwogfQogCi12b2lkIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyKiAvKiBvY2NsdXNpb24gKi8pCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
KENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopCiB7
CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSB8fCAhbV9uZWVkc0Rpc3BsYXkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTgyLDEyICs4Miw2IEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9jY2x1CiAgICAgY29u
dGV4dCgpLT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxz
ZTsKICAgICBtX2NvbnRleHRMb3N0ID0gY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1I7Ci19
Ci0KLXZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKLXsKLSAgICBpZiAo
IW1fZHJhd2luZ0J1ZmZlcikKLSAgICAgICAgcmV0dXJuOwogCiAgICAgbV90ZXh0dXJlSWQgPSBt
X2RyYXdpbmdCdWZmZXItPmZyb250Q29sb3JCdWZmZXIoKTsKICAgICBpZiAobV9kcmF3aW5nQnVm
ZmVyLT5yZXF1aXJlc0NvcHlGcm9tQmFja1RvRnJvbnRCdWZmZXIoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmgKaW5kZXggNzExYzBiZTgyNDcyYmE1NWEwNDIyNTE4ZDgzYTAyYzFjY2NkNmM4
ZC4uZGI4MjFkMDkwNjViZjI4OTI2NGE1NWU5Yzc2MTFiNWNiM2E3OTExYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmgKQEAgLTUwLDggKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fldlYkdMTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09j
Y2x1c2lvblRyYWNrZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIq
KTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwogICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAg
IGJvb2wgcGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggOGRjOWI0ZjNkMDJhOTZiMWFkNzFhNmE1YmRi
ZjFkYTE4NWM1MWRiYy4uYThmMTAxN2Q0OTRjYWYxMjgwNjE4OGRkNjg5MTFmODNjZWY1M2E1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0xMDksNyArMTA5LDYgQEAgQ0NM
YXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0KCkKICAgICBBU1NFUlQobV9wcm94eSk7CiAg
ICAgbV9wcm94eS0+c3RvcCgpOwogICAgIG1fcHJveHkuY2xlYXIoKTsKLSAgICBjbGVhclBlbmRp
bmdVcGRhdGUoKTsKICAgICBudW1MYXllclRyZWVJbnN0YW5jZXMtLTsKIH0KIApAQCAtMjI3LDcg
KzIyNiw2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbkltcGxUaHJlYWQo
Q0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29t
bWl0Q29tcGxldGUoKQogewogICAgIG1fZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0TGlzdC5jbGVh
cigpOwotICAgIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogICAgIG1fY29udGVudHNUZXh0dXJlTWFu
YWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKICAgICBtX2NsaWVudC0+ZGlkQ29tbWl0KCk7
CiB9CkBAIC00MTksNyArNDE3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgp
CiAgICAgc3RhdGljX2Nhc3Q8Q0NTaW5nbGVUaHJlYWRQcm94eSo+KG1fcHJveHkuZ2V0KCkpLT5j
b21wb3NpdGVJbW1lZGlhdGVseSgpOwogfQogCi1ib29sIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRl
TGF5ZXJzKCkKK2Jvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoQ0NUZXh0dXJlVXBk
YXRlciYgdXBkYXRlcikKIHsKICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlckluaXRpYWxpemVkKSB7
CiAgICAgICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7CkBAIC00MzgsMTEgKzQzNiwxMSBA
QCBib29sIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAodmlld3BvcnRT
aXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHVwZGF0ZUxheWVy
cyhyb290TGF5ZXIoKSk7CisgICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpLCB1cGRhdGVyKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVy
cyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRl
TGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllciwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRl
cikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0
aGlzLCAwKTsKIApAQCAtNDUzLDEwICs0NTEsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBk
YXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAgICBJbnRSZWN0IHJvb3RDbGlw
UmVjdChJbnRQb2ludCgpLCB2aWV3cG9ydFNpemUoKSk7CiAgICAgcm9vdExheWVyLT5zZXRDbGlw
UmVjdChyb290Q2xpcFJlY3QpOwogCi0gICAgLy8gVGhpcyBhc3NlcnQgZmlyZXMgaWYgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyB3YXNuJ3QgY2FsbGVkIGFmdGVyCi0gICAgLy8gdXBkYXRlTGF5
ZXJzLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCi0g
ICAgQVNTRVJUKCFtX3VwZGF0ZUxpc3Quc2l6ZSgpKTsKLSAgICBtX3VwZGF0ZUxpc3QuYXBwZW5k
KHJvb3RMYXllcik7CisgICAgTGF5ZXJMaXN0IHVwZGF0ZUxpc3Q7CisgICAgdXBkYXRlTGlzdC5h
cHBlbmQocm9vdExheWVyKTsKIAogICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcm9vdFJlbmRl
clN1cmZhY2UgPSByb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICByb290UmVuZGVyU3Vy
ZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKQEAgLTQ2NCwxNSArNDYwLDE1IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIHsKICAgICAgICAgVFJBQ0Vf
RVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzOjpjYWxjRHJhd0V0YyIsIHRoaXMs
IDApOwotICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCBtX3VwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3Qo
KSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKKyAgICAgICAg
Q0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxp
dHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwg
dXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwogICAgIH0KIAogICAgIC8vIFJlc2V0IHBh
cnRpYWwgdGV4dHVyZSB1cGRhdGUgcmVxdWVzdHMuCiAgICAgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0
ZVJlcXVlc3RzID0gMDsKIAotICAgIHJlc2VydmVUZXh0dXJlcygpOworICAgIHJlc2VydmVUZXh0
dXJlcyh1cGRhdGVMaXN0KTsKIAotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3Qs
IFBhaW50VmlzaWJsZSk7CisgICAgcGFpbnRMYXllckNvbnRlbnRzKHVwZGF0ZUxpc3QsIFBhaW50
VmlzaWJsZSwgdXBkYXRlcik7CiAgICAgaWYgKCFtX3RyaWdnZXJJZGxlUGFpbnRzKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTQ4NiwxNyArNDgyLDE3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIC8vIG90aGVyd2lzZSBp
dCB3aWxsIGFsd2F5cyBwdXNoIHVzIHRvd2FyZHMgdGhlIG1heGltdW0gbGltaXQuCiAgICAgbV9j
b250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZExp
bWl0Qnl0ZXMpOwogICAgIC8vIFRoZSBzZWNvbmQgKGlkbGUpIHBhaW50IHdpbGwgYmUgYSBuby1v
cCBpbiBsYXllcnMgd2hlcmUgcGFpbnRpbmcgYWxyZWFkeSBvY2N1cmVkIGFib3ZlLgotICAgIHBh
aW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QsIFBhaW50SWRsZSk7CisgICAgcGFpbnRMYXll
ckNvbnRlbnRzKHVwZGF0ZUxpc3QsIFBhaW50SWRsZSwgdXBkYXRlcik7CiAgICAgbV9jb250ZW50
c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1heExpbWl0Qnl0ZXMpOwog
fQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1cmVzKCkKK3ZvaWQgQ0NMYXll
clRyZWVIb3N0OjpyZXNlcnZlVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQog
ewogICAgIC8vIFVzZSBCYWNrVG9Gcm9udCBzaW5jZSBpdCdzIGNoZWFwIGFuZCB0aGlzIGlzbid0
IG9yZGVyLWRlcGVuZGVudC4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9t
aXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1
bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5
cGU7CiAKLSAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6
OmVuZCgmbV91cGRhdGVMaXN0KTsKLSAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBD
Q0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmbV91cGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0
KSB7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpl
bmQoJnVwZGF0ZUxpc3QpOworICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5
ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZ1cGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgIGlmICghaXQucmVwcmVzZW50c0l0c2VsZigpIHx8ICFpdC0+YWx3YXlzUmVzZXJ2ZVRl
eHR1cmVzKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaXQtPnJlc2VydmVUZXh0
dXJlcygpOwpAQCAtNTA0LDE3ICs1MDAsMTcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnJlc2Vy
dmVUZXh0dXJlcygpCiB9CiAKIC8vIHN0YXRpYwotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50
Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBQYWludFR5cGUgcGFpbnRUeXBl
LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUsIEND
VGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVz
aW9uKQogewogICAgIEFTU0VSVChsYXllcik7CiAgICAgQVNTRVJUKFBhaW50VmlzaWJsZSA9PSBw
YWludFR5cGUgfHwgUGFpbnRJZGxlID09IHBhaW50VHlwZSk7CiAgICAgaWYgKFBhaW50VmlzaWJs
ZSA9PSBwYWludFR5cGUpCi0gICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eShvY2Ns
dXNpb24pOworICAgICAgICBsYXllci0+dXBkYXRlKHVwZGF0ZXIsIG9jY2x1c2lvbik7CiAgICAg
ZWxzZQotICAgICAgICBsYXllci0+aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1c2lvbik7
CisgICAgICAgIGxheWVyLT5pZGxlVXBkYXRlKHVwZGF0ZXIsIG9jY2x1c2lvbik7CiB9CiAKLXZv
aWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShM
YXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUpCit2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2Uo
TGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBQYWludFR5cGUgcGFpbnRUeXBlLCBD
Q1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCByZXBs
aWNhcyBvbmx5IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJZiB3
ZSByZWFjaCB0aGlzIHBvaW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRoYXQg
YXQgbGVhc3Qgc29tZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJmYWNl
LCBzbyB0aGUKQEAgLTUyNCwyMSArNTIwLDIxIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWlu
dE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAK
ICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICByZW5k
ZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgcmVuZGVyU3VyZmFjZUxheWVyLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAg
ICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwg
cGFpbnRUeXBlLCAwKTsKKyAgICAgICAgdXBkYXRlKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xh
eWVyKCksIHBhaW50VHlwZSwgdXBkYXRlciwgMCk7CiAgICAgfQogCiAgICAgTGF5ZXJDaHJvbWl1
bSogcmVwbGljYUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKTsKICAg
ICBpZiAocmVwbGljYUxheWVyKSB7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxp
Y2FMYXllciwgcGFpbnRUeXBlLCAwKTsKKyAgICAgICAgdXBkYXRlKHJlcGxpY2FMYXllciwgcGFp
bnRUeXBlLCB1cGRhdGVyLCAwKTsKIAogICAgICAgICBpZiAocmVwbGljYUxheWVyLT5tYXNrTGF5
ZXIoKSkgewogICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJs
ZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkt
PmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVw
bGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgcGFpbnRUeXBlLCAwKTsKKyAgICAgICAgICAgIHVwZGF0
ZShyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUsIHVwZGF0ZXIsIDApOwogICAg
ICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRl
bnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgUGFpbnRUeXBlIHBh
aW50VHlwZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3Qg
TGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBQYWludFR5cGUgcGFpbnRUeXBlLCBD
Q1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewogICAgIC8vIFVzZSBGcm9udFRvQmFjayB0byBh
bGxvdyBmb3IgdGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcg
dGhlIHRyZWUgd2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVt
LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwg
Q0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7
CkBAIC01NTMsMTIgKzU0OSwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNv
bnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogICAgICAgICAg
ICAgQVNTRVJUKGl0LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5KCkgfHwgaXQtPnJlbmRl
clN1cmZhY2UoKS0+ZHJhd09wYWNpdHlJc0FuaW1hdGluZygpKTsKIAogICAgICAgICAgICAgb2Nj
bHVzaW9uVHJhY2tlci5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoKml0LCBpdC0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICAgICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJm
YWNlKCppdCwgcGFpbnRUeXBlKTsKKyAgICAgICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JS
ZW5kZXJTdXJmYWNlKCppdCwgcGFpbnRUeXBlLCB1cGRhdGVyKTsKICAgICAgICAgfSBlbHNlIGlm
IChpdC5yZXByZXNlbnRzSXRzZWxmKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXQtPmJvdW5k
cygpLmlzRW1wdHkoKSk7CiAKICAgICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGl0LT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICAgICAg
cGFpbnRDb250ZW50c0lmRGlydHkoKml0LCBwYWludFR5cGUsICZvY2NsdXNpb25UcmFja2VyKTsK
KyAgICAgICAgICAgIHVwZGF0ZSgqaXQsIHBhaW50VHlwZSwgdXBkYXRlciwgJm9jY2x1c2lvblRy
YWNrZXIpOwogICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcigqaXQpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIu
bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UoaXQudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCkt
PnJlbmRlclN1cmZhY2UoKSk7CkBAIC01NjcsMzggKzU2Myw2IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0CiAgICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5yZWNvcmRNZXRy
aWNzKHRoaXMpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBk
YXRlcikKLXsKLSAgICAvLyBVc2UgQmFja1RvRnJvbnQgc2luY2UgaXQncyBjaGVhcCBhbmQgdGhp
cyBpc24ndCBvcmRlci1kZXBlbmRlbnQuCi0gICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5
ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNl
Q2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250PiBDQ0xheWVySXRl
cmF0b3JUeXBlOwotCi0gICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0
b3JUeXBlOjplbmQoJm1fdXBkYXRlTGlzdCk7Ci0gICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBl
IGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJm1fdXBkYXRlTGlzdCk7IGl0ICE9IGVu
ZDsgKytpdCkgewotICAgICAgICBpZiAoaXQucmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2Uo
KSkgewotICAgICAgICAgICAgQVNTRVJUKGl0LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5
KCkgfHwgaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHlJc0FuaW1hdGluZygpKTsKLSAg
ICAgICAgICAgIGlmIChpdC0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAgaXQtPm1hc2tM
YXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotCi0g
ICAgICAgICAgICBpZiAoaXQtPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAgICAgICAgICAgaXQt
PnJlcGxpY2FMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0
ZXIpOwotICAgICAgICAgICAgICAgIGlmIChpdC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigp
KQotICAgICAgICAgICAgICAgICAgICBpdC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSkKLSAgICAgICAgICAg
IGl0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgIH0K
LX0KLQotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCi17Ci0gICAg
Zm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0
LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIg
PSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKLSAgICAgICAgQVNTRVJUKGxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBsYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7
Ci0gICAgfQotICAgIG1fdXBkYXRlTGlzdC5jbGVhcigpOwotfQotCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZv
KQogewogICAgIC8vIEZJWE1FOiBwdXNoaW5nIHNjcm9sbCBvZmZzZXRzIHRvIG5vbi1yb290IGxh
eWVycyBub3QgaW1wbGVtZW50ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggOWNh
MTRmYzA0NDg4M2FiMGMzMTA5YTk3ZmI4YmUxYjJiYTIzNzE2MS4uNDc0MzNhMWU3Njk2NjcxOGRi
NzMxODY0OWVkZjUwMTBlOWI0MWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAg
LTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJz
KCkgeyBtX2NsaWVudC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOyB9CiAgICAgdm9pZCBkZWxl
dGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICAv
LyBSZXR1cm5zIGZhbHNlIGlmIHdlIHNob3VsZCBhYm9ydCB0aGlzIGZyYW1lIGR1ZSB0byBpbml0
aWFsaXphdGlvbiBmYWlsdXJlLgotICAgIGJvb2wgdXBkYXRlTGF5ZXJzKCk7CisgICAgYm9vbCB1
cGRhdGVMYXllcnMoQ0NUZXh0dXJlVXBkYXRlciYpOwogCiAgICAgQ0NMYXllclRyZWVIb3N0Q2xp
ZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCkBAIC0yMDgsNyArMjA4LDYgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXpl
JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVy
YXRpb25TZWMpOwogCi0gICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZvaWQgYXBwbHlTY3JvbGxBbmRT
Y2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0Jik7CiAgICAgdm9pZCBzdGFydFJhdGVMaW1p
dGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdm9pZCBzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhp
Y3NDb250ZXh0M0QqKTsKQEAgLTIyNywxNCArMjI2LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBp
bml0aWFsaXplTGF5ZXJSZW5kZXJlcigpOwogCiAgICAgZW51bSBQYWludFR5cGUgeyBQYWludFZp
c2libGUsIFBhaW50SWRsZSB9OwotICAgIHN0YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5
KExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwot
ICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYsIFBhaW50VHlwZSk7
Ci0gICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9t
aXVtKiwgUGFpbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCB1cGRhdGUoTGF5ZXJDaHJvbWl1bSos
IFBhaW50VHlwZSwgQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciop
OworICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYsIFBhaW50VHlw
ZSwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJl
bmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSwgQ0NUZXh0dXJlVXBkYXRlciYp
OwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgdXBk
YXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgLy8gUHJl
LXJlc2VydmUgdGV4dHVyZXMgZm9yIGFueSBsYXllciBtYXJrZWQgImFsd2F5cyByZXNlcnZlIHRl
eHR1cmVzIgotICAgIHZvaWQgcmVzZXJ2ZVRleHR1cmVzKCk7Ci0gICAgdm9pZCBjbGVhclBlbmRp
bmdVcGRhdGUoKTsKKyAgICB2b2lkIHJlc2VydmVUZXh0dXJlcyhjb25zdCBMYXllckxpc3QmKTsK
IAogICAgIHZvaWQgYW5pbWF0ZUxheWVycyhkb3VibGUgbW9ub3RvbmljVGltZSk7CiAgICAgYm9v
bCBhbmltYXRlTGF5ZXJzUmVjdXJzaXZlKExheWVyQ2hyb21pdW0qIGN1cnJlbnQsIGRvdWJsZSBt
b25vdG9uaWNUaW1lKTsKQEAgLTI1OCw4ICsyNTYsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1f
Y29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIExheWVyTGlzdCBtX3VwZGF0ZUxpc3Q7Ci0K
ICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CiAKICAgICBJbnRTaXplIG1fdmlld3BvcnRTaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCA1N2YwYzIwNjM2
YjY5NDBkZDNjMDgzNmUxYWQyOTBlNmViZmEyMzQ4Li45MjIzYzVmNmIwMGQxZWRkMWVhNjM0NjBj
OWYwOTk5YTRkZmRiZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cApAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNB
bmltYXRlKCkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBDQ1NpbmdsZVRo
cmVhZFByb3h5Ojpkb0NvbW1pdCgpCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0
KENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFp
blRocmVhZCgpKTsKICAgICAvLyBDb21taXQgaW1tZWRpYXRlbHkKQEAgLTIwMCw4ICsyMDAsNiBA
QCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKICAgICAgICAgbV9sYXllclRy
ZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmJl
Z2luQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwotICAgICAg
ICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHVw
ZGF0ZXIpOwogICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLCBt
X2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSwgbnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICBBU1NFUlQoIXVwZGF0ZXIuaGFz
TW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUo
bV9sYXllclRyZWVIb3N0LT52aXNpYmxlKCkpOwpAQCAtMjg3LDEwICsyODUsMTIgQEAgYm9vbCBD
Q1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJv
eHk6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVM
YXllcnMoKSkKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisKKyAgICBpZiAoIW1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBkb0NvbW1pdCgpOworICAgIGRvQ29tbWl0KHVwZGF0ZXIpOwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggOTg4NzQz
MmViYWQ2ZTUzY2U0MDUyNmM2MGUxMjAxMTYwNjE2MzE0ZS4uOTYxMTBjMzI4OTAxMDlhZTZjMWRj
NjhiM2FiMGI4Zjg5MTI2ZTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IENDU2luZ2xlVGhyZWFk
UHJveHkoQ0NMYXllclRyZWVIb3N0Kik7CiAKICAgICBib29sIGNvbW1pdElmTmVlZGVkKCk7Ci0g
ICAgdm9pZCBkb0NvbW1pdCgpOworICAgIHZvaWQgZG9Db21taXQoQ0NUZXh0dXJlVXBkYXRlciYp
OwogICAgIGJvb2wgZG9Db21wb3NpdGUoKTsKICAgICB2b2lkIGRpZFN3YXBGcmFtZSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IGViY2U4YmYyOTFkNmI0YjYxOGFlNjBiNzU3
ZGQyZjRhYWM4MDhlYzUuLjc1MTk4NmYzNWJiMGFlMzc3ZjQ4ZmRhZDNmYjFlNDdjYWRmY2QzMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC00MTIsNiArNDEyLDggQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkKICAgICBtX3BlbmRpbmdC
ZWdpbkZyYW1lUmVxdWVzdCA9IGFkb3B0UHRyKG5ldyBCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUo
KSk7CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPm1vbm90b25pY0ZyYW1lQmVnaW5U
aW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgbV9wZW5kaW5nQmVnaW5G
cmFtZVJlcXVlc3QtPnNjcm9sbEluZm8gPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5wcm9jZXNzU2Ny
b2xsRGVsdGFzKCk7CisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBh
ZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcik7CisgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJl
cXVlc3QtPnVwZGF0ZXIgPSBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5nZXQo
KTsKIAogICAgIG1fbWFpblRocmVhZFByb3h5LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2so
dGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUpKTsKIApAQCAtNDY1LDcgKzQ2Nyw3IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSgpCiAgICAgLy8gdXBkYXRlTGF5ZXJzLgog
ICAgIG1fY29tbWl0UmVxdWVzdGVkID0gZmFsc2U7CiAKLSAgICBpZiAoIW1fbGF5ZXJUcmVlSG9z
dC0+dXBkYXRlTGF5ZXJzKCkpCisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cygqcmVxdWVzdC0+dXBkYXRlcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEJlZm9yZSBh
cHBseWluZyBzY3JvbGxzIGFuZCBjYWxsaW5nIGFuaW1hdGUsIHdlIHNldCBtX2FuaW1hdGVSZXF1
ZXN0ZWQgdG8gZmFsc2UuCkBAIC00OTUsNiArNDk3LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24KICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NjaGVkdWxlck9u
SW1wbFRocmVhZCk7CiAgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5jb21taXRQ
ZW5kaW5nKCkpOworCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CiAgICAgICAgIGNv
bXBsZXRpb24tPnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CkBAIC01MDIsMTAgKzUwNSw2IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiAKICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9u
SW1wbFRocmVhZCA9IGNvbXBsZXRpb247CiAKLSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKTsKLSAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4
dCgpLCAqbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotCiAgICAgbV9zY2hl
ZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogfQogCkBAIC01MzQsMTMg
KzUzMywxMyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVS
ZXNvdXJjZXMoKQogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQog
ewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQi
LCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CiAgICAgQVNTRVJUKCFtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgQVNTRVJU
KG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKIAogICAgIG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CiAKLQogICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29tbWl0
T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oCmluZGV4IDM1ZmUxZGJhZmY0MGI0YTZlMmRmOWZjZDg0ZDIyZjkyNTYwYzliMzcuLmEz
ODMxMmRlNTYwNTU2MjRiYmU3YWJhOGM3N2M4N2VkNTYyNDEyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmgKQEAgLTk0LDkgKzk0LDE1IEBAIHByaXZhdGU6CiAKICAgICAvLyBTZXQgb24gaW1w
bCB0aHJlYWQsIHJlYWQgb24gbWFpbiB0aHJlYWQuCiAgICAgc3RydWN0IEJlZ2luRnJhbWVBbmRD
b21taXRTdGF0ZSB7Ci0gICAgICAgIEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSgpIDogbW9ub3Rv
bmljRnJhbWVCZWdpblRpbWUoKSB7IH0KKyAgICAgICAgQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRl
KCkKKyAgICAgICAgICAgIDogbW9ub3RvbmljRnJhbWVCZWdpblRpbWUoMCkKKyAgICAgICAgICAg
ICwgdXBkYXRlcigwKQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICBkb3VibGUgbW9u
b3RvbmljRnJhbWVCZWdpblRpbWU7CiAgICAgICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0
PiBzY3JvbGxJbmZvOworICAgICAgICBDQ1RleHR1cmVVcGRhdGVyKiB1cGRhdGVyOwogICAgIH07
CiAgICAgT3duUHRyPEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZT4gbV9wZW5kaW5nQmVnaW5GcmFt
ZVJlcXVlc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGUyMjVkMjZkYjJiOTI5NThlZWJjZTMyZmQ5NWMxZDY1
NzJkMjUzYWYuLjUwYWMwNzU2YWRhNGRhNjg1MDQ5ZjljODRmMWU3ZDg3MjI5MDhmZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9u
LmgiCiAjaW5jbHVkZSAiQ0NPY2NsdXNpb25UcmFja2VyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUg
IkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDb21wb3NpdG9yRmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgiCkBAIC00OTIsNyArNDkzLDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICBtX2JlZ2luVGFzayA9IG5ldyBCZWdpblRhc2sodGhpcyk7CiAgICAgICAgIHdl
YktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jdXJyZW50VGhyZWFkKCktPnBvc3REZWxheWVkVGFzayht
X2JlZ2luVGFzaywgMCk7IC8vIHBvc3REZWxheWVkVGFzayB0YWtlcyBvd25lcnNoaXAgb2YgdGhl
IHRhc2sKICAgICAgICAgbV90aW1lb3V0VGFzayA9IG5ldyBUaW1lb3V0VGFzayh0aGlzKTsKLSAg
ICAgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmN1cnJlbnRUaHJlYWQoKS0+cG9zdERlbGF5
ZWRUYXNrKG1fdGltZW91dFRhc2ssIDUwMDApOworICAgICAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBv
cnQoKS0+Y3VycmVudFRocmVhZCgpLT5wb3N0RGVsYXllZFRhc2sobV90aW1lb3V0VGFzaywgNTAw
MCoxMDAwMCk7CiAgICAgICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jdXJyZW50VGhyZWFk
KCktPmVudGVyUnVuTG9vcCgpOwogCiAgICAgICAgIGlmIChtX2xheWVyVHJlZUhvc3QgJiYgbV9s
YXllclRyZWVIb3N0LT5yb290TGF5ZXIoKSkKQEAgLTEzOTcsMzMgKzEzOTgsMjMgQEAgcHVibGlj
OgogICAgIGludCBpZGxlUGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9pZGxlUGFpbnRD
b250ZW50c0NvdW50OyB9CiAgICAgdm9pZCByZXNldFBhaW50Q29udGVudHNDb3VudCgpIHsgbV9w
YWludENvbnRlbnRzQ291bnQgPSAwOyBtX2lkbGVQYWludENvbnRlbnRzQ291bnQgPSAwO30KIAot
ICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fdXBkYXRlQ291bnQ7IH0KLSAgICB2b2lk
IHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291bnQgPSAwOyB9Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2Ns
dXNpb24pCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVy
LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKICAgICB7Ci0gICAgICAgIENv
bnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdXNpb24pOworICAg
ICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlKHVwZGF0ZXIsIG9jY2x1c2lvbik7CiAg
ICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1
c2lvbikKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiB1cGRh
dGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKICAgICB7Ci0gICAgICAg
IENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVzaW9u
KTsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVVcGRhdGUodXBkYXRlciwgb2Nj
bHVzaW9uKTsKICAgICAgICAgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCi0gICAgewotICAgICAgICBD
b250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1
cGRhdGVyKTsKLSAgICAgICAgbV91cGRhdGVDb3VudCsrOwotICAgIH0KLQogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhDb250ZW50
TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgICAgIDogQ29udGVudExheWVyQ2hyb21pdW0o
ZGVsZWdhdGUpCiAgICAgICAgICwgbV9wYWludENvbnRlbnRzQ291bnQoMCkKICAgICAgICAgLCBt
X2lkbGVQYWludENvbnRlbnRzQ291bnQoMCkKLSAgICAgICAgLCBtX3VwZGF0ZUNvdW50KDApCiAg
ICAgewogICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKICAgICAgICAgc2V0SXNE
cmF3YWJsZSh0cnVlKTsKQEAgLTE0MzEsNyArMTQyMiw2IEBAIHByaXZhdGU6CiAKICAgICBpbnQg
bV9wYWludENvbnRlbnRzQ291bnQ7CiAgICAgaW50IG1faWRsZVBhaW50Q29udGVudHNDb3VudDsK
LSAgICBpbnQgbV91cGRhdGVDb3VudDsKIH07CiAKIC8vIExheWVyIG9wYWNpdHkgY2hhbmdlIGR1
cmluZyBwYWludCBzaG91bGQgbm90IHByZXZlbnQgY29tcG9zaXRvciByZXNvdXJjZXMgZnJvbSBi
ZWluZyB1cGRhdGVkIGR1cmluZyBjb21taXQuCkBAIC0xNDU4LDE3ICsxNDQ4LDEyIEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQogICAgIHsKLSAgICAgICAgLy8gcGFp
bnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAg
ICAvLyB1cGRhdGUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgogICAgICAgICBFWFBF
Q1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSk7CiAKLSAg
ICAgICAgLy8gaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxs
ZWQgb25jZQorICAgICAgICAvLyBpZGxlVXBkYXRlKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQg
b25jZQogICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5pZGxlUGFpbnRD
b250ZW50c0NvdW50KCkpOwogCi0gICAgICAgIC8vIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
KSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQotICAgICAgICAvLyBhbW91dCBvZiB0
aW1lcyBhcyBwYWludENvbnRlbnRzSWZEaXJ0eSgpLgotICAgICAgICBFWFBFQ1RfRVEobV91cGRh
dGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSwKLSAgICAgICAgICAgICAgICAgIG1f
dXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlQ291bnQoKSk7Ci0KICAgICAgICAgLy8gY2xlYXIgbV91
cGRhdGVDaGVja0xheWVyIHNvIENDTGF5ZXJUcmVlSG9zdCBkaWVzLgogICAgICAgICBtX3VwZGF0
ZUNoZWNrTGF5ZXIuY2xlYXIoKTsKICAgICB9CkBAIC0xNDk3LDcgKzE0ODIsOCBAQCBwdWJsaWM6
CiAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplKDEwLCAxMCk7CiAgICAgICAgIGxheWVyVHJl
ZUhvc3QoKS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CiAKLSAgICAgICAgbGF5ZXJU
cmVlSG9zdCgpLT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRh
dGVyOworICAgICAgICBsYXllclRyZWVIb3N0KCktPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKIAog
ICAgICAgICBFWFBFQ1RfRVEodmlld3BvcnRTaXplLCBsYXllclRyZWVIb3N0KCktPnZpZXdwb3J0
U2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRl
cyh2aWV3cG9ydFNpemUpLCBsYXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIo
KS0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsKQEAgLTE2ODYsOSArMTY3Miw5IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJlcyB1c2VkIGZvciBjb21taXQgc2hvdWxk
IHN0aWxsIGJlIHR3by4KICAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBjb250ZXh0LT5udW1Vc2Vk
VGV4dHVyZXMoKSk7CiAgICAgICAgICAgICAvLyBGaXJzdCB0ZXh0dXJlIHNob3VsZCBub3QgaGF2
ZSBiZWVuIHVzZWQuCi0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UoY29udGV4dC0+dXNlZFRleHR1
cmUoY29udGV4dC0+dGV4dHVyZSgwKSkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGV4
dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgwKSkpOwogICAgICAgICAgICAgLy8gU2Vj
b25kIHRleHR1cmUgc2hvdWxkIGhhdmUgYmVlbiB1c2VkLgotICAgICAgICAgICAgRVhQRUNUX1RS
VUUoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgxKSkpOworICAgICAgICAg
ICAgRVhQRUNUX0ZBTFNFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQtPnRleHR1cmUoMSkp
KTsKICAgICAgICAgICAgIC8vIE5ldyB0ZXh0dXJlcyBzaG91bGQgaGF2ZSBiZWVuIHVzZWQuCiAg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0
dXJlKDIpKSk7CiAKQEAgLTE3NjAsNyArMTc0Niw3IEBAIGNsYXNzIFRlc3RMYXllckNocm9taXVt
IDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFRlc3RMYXllckNocm9taXVtPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGVzdExh
eWVyQ2hyb21pdW0oKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0
eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1
c2lvbikKICAgICB7CiAgICAgICAgIC8vIEdhaW4gYWNjZXNzIHRvIGludGVybmFscyBvZiB0aGUg
Q0NPY2NsdXNpb25UcmFja2VyLgogICAgICAgICBjb25zdCBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
KiB0ZXN0T2NjbHVzaW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgVGVzdENDT2NjbHVzaW9uVHJhY2tl
cio+KG9jY2x1c2lvbik7CkBAIC0xODI1LDcgKzE4MTEsOCBAQCBwdWJsaWM6CiAKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgICAgIENDVGV4dHVyZVVwZGF0
ZXIgdXBkYXRlcjsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRl
cik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIGdyYW5kQ2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7CkBAIC0xODQyLDcgKzE4MjksNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1p
dENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBncmFuZENo
aWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwpAQCAtMTg2MCw3ICsxODQ3LDcg
QEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RM
YXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXll
ci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwor
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygp
KTsKQEAgLTE4ODAsNyArMTg2Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVI
b3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnModXBkYXRlcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsK
IAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIGdyYW5kQ2hpbGQtPm9jY2x1ZGVk
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0xOTAyLDcgKzE4ODksNyBAQCBwdWJsaWM6CiAK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7
Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgp
LCBncmFuZENoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwpAQCAtMTkyNCw3
ICsxOTExLDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExh
eWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXpl
KHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxh
eWVycygpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91
bmRzKCkpOwpAQCAtMTk0Nyw3ICsxOTM0LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0
ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0
ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2Nj
bHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE5NzAsNyArMTk1Nyw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5k
cygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAg
bV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KCksIGNoaWxkMi0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTIwMTMs
NyArMjAwMCw4IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RM
YXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6
ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVM
YXllcnMoKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
KSwgY2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0yMDcxLDcgKzIw
NTksOCBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIo
cm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9v
dExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJz
KCk7CisgICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIGNo
aWxkMi0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTIwOTgsNyArMjA4Nyw3
IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290
TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5
ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsK
KyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KCksIGNoaWxkMi0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
QEAgLTIxNTgsNyArMjE0Nyw4IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFJvb3RMYXllcihsYXllcnNbMF0uZ2V0KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFZpZXdwb3J0U2l6ZShsYXllcnNbMF0tPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVy
OworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbnVtU3VyZmFjZXMtMTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcAppbmRleCBmN2Q3
ODk0YjcwNDZmN2Y3ZWY4ZTRhODJkMWI2YmZmMGQ5YTdkMzYzLi5kY2Y4MzZhZDRkY2NkZDQ2NTEw
NjRjMGEzYWJiMGM3NDc5ZDhkYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAg
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6On5GYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9
CiAKLXZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQsIEludFJlY3Qq
IHJlc3VsdGluZ09wYXF1ZVJlY3QpCit2b2lkIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjp1cGRh
dGVMYXllclJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmLCBp
bnQsIGZsb2F0LCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQogewogICAgIG1fcHJlcGFy
ZUNvdW50Kys7CiAgICAgbV9sYXN0VXBkYXRlUmVjdCA9IGNvbnRlbnRSZWN0OwpAQCAtMTE2LDkg
KzExNiw5IEBAIHZvaWQgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgVGlsZWRMYXllckNocm9taXVtOjpzZXROZWVk
c0Rpc3BsYXlSZWN0KHJlY3QpOwogfQogCi12b2lkIEZha2VUaWxlZExheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQor
dm9pZCBGYWtlVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYgdXBk
YXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7Ci0gICAgcHJlcGFy
ZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2NjbHVzaW9uKTsKKyAgICB1cGRhdGVMYXll
clJlY3QodXBkYXRlciwgdmlzaWJsZUxheWVyUmVjdCgpLCBvY2NsdXNpb24pOwogfQogCiBGYWtl
VGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHM6OkZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5k
cyhUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IDgxYmQxMTQx
MDA4N2RjNGE2MmRiMmQzYjRlOWVmZmRhZmE0NmNjYjAuLmNkNGVkMjJlYTc3ZDMwYzhmMjUyNGE4
ZDIzNDg4ZTlmY2U4Y2JhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCkBAIC02MCwxNCArNjAsMTQgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtKSB7IHJl
dHVybiBTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZVRvVXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgaW50LCBmbG9hdCwgV2ViQ29yZTo6SW50UmVjdCogcmVzdWx0aW5nT3Bh
cXVlUmVjdCk7Ci0gICAgLy8gU2V0cyB0aGUgcmVjdCB0byBpbnZhbGlkYXRlIGR1cmluZyB0aGUg
bmV4dCBjYWxsIHRvIHByZXBhcmVUb1VwZGF0ZSgpLiBBZnRlciB0aGUgbmV4dAotICAgIC8vIGNh
bGwgdG8gcHJlcGFyZVRvVXBkYXRlKCkgdGhlIHJlY3QgaXMgcmVzZXQuCisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUxheWVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGludCwgZmxvYXQsIFdlYkNvcmU6OkludFJlY3QqIHJl
c3VsdGluZ09wYXF1ZVJlY3QpOworICAgIC8vIFNldHMgdGhlIHJlY3QgdG8gaW52YWxpZGF0ZSBk
dXJpbmcgdGhlIG5leHQgY2FsbCB0byB1cGRhdGVMYXllclJlY3QoKS4gQWZ0ZXIgdGhlIG5leHQK
KyAgICAvLyBjYWxsIHRvIHVwZGF0ZUxheWVyUmVjdCgpIHRoZSByZWN0IGlzIHJlc2V0LgogICAg
IHZvaWQgc2V0UmVjdFRvSW52YWxpZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgRmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bSopOwotICAgIC8vIExhc3QgcmVjdCBwYXNzZWQgdG8gcHJlcGFyZVRv
VXBkYXRlKCkuCisgICAgLy8gTGFzdCByZWN0IHBhc3NlZCB0byB1cGRhdGVMYXllclJlY3QoKS4K
ICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBsYXN0VXBkYXRlUmVjdCgpICBjb25zdCB7IHJl
dHVybiBtX2xhc3RVcGRhdGVSZWN0OyB9CiAKLSAgICAvLyBOdW1iZXIgb2YgdGltZXMgcHJlcGFy
ZVRvVXBkYXRlIGhhcyBiZWVuIGludm9rZWQuCisgICAgLy8gTnVtYmVyIG9mIHRpbWVzIHVwZGF0
ZUxheWVyUmVjdCBoYXMgYmVlbiBpbnZva2VkLgogICAgIGludCBwcmVwYXJlQ291bnQoKSBjb25z
dCB7IHJldHVybiBtX3ByZXBhcmVDb3VudDsgfQogICAgIHZvaWQgY2xlYXJQcmVwYXJlQ291bnQo
KSB7IG1fcHJlcGFyZUNvdW50ID0gMDsgfQogCkBAIC0xMTAsOCArMTEwLDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRTaXplIHRpbGVTaXplKCkgeyByZXR1cm4gV2ViQ29yZTo6
SW50U2l6ZSgxMDAsIDEwMCk7IH0KIAogICAgIHVzaW5nIFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJv
bWl1bTo6aW52YWxpZGF0ZVJlY3Q7Ci0gICAgdXNpbmcgV2ViQ29yZTo6VGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGU7Ci0gICAgdXNpbmcgV2ViQ29yZTo6VGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlOworICAgIHVzaW5nIFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlTGF5ZXJSZWN0OworICAgIHVzaW5nIFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6aWRsZVVwZGF0ZUxheWVyUmVjdDsKICAgICB1c2luZyBXZWJDb3JlOjpUaWxlZExh
eWVyQ2hyb21pdW06Om5lZWRzSWRsZVBhaW50OwogICAgIHVzaW5nIFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6c2tpcHNEcmF3OwogICAgIHVzaW5nIFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJv
bWl1bTo6bnVtUGFpbnRlZFRpbGVzOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0TmVlZHNEaXNwbGF5UmVjdDsgfQogCiAgICAgLy8gVXBkYXRlcyB0aGUgdmlz
aWJsZUxheWVyUmVjdCgpLgotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShj
b25zdCBXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBXZWJDb3JlOjpDQ09jY2x1c2lv
blRyYWNrZXIqKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXIqIHRleHR1
cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWFuYWdlcjsgfQogICAgIEZha2VM
YXllclRleHR1cmVVcGRhdGVyKiBmYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1f
ZmFrZVRleHR1cmVVcGRhdGVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBmY2Zh
YTE0MDY4MDAwNGIxMTkzOTk2ZmM1MWQ2YjA1ZDIyODZkODI0Li5lMzQ3YzJjNzI3MTNkZjA0YTdh
NjY5ZDVmZTZkYjRmZWYyOTg4OWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTExMyw3ICsx
MTMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgUmVmUHRyPEZha2VDQ0xheWVyVHJlZUhvc3Q+
IGxheWVyVHJlZUhvc3QgPSBGYWtlQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoKTsKICAgICAgICAg
Ly8gRm9yY2UgYW4gdXBkYXRlLCBzbyB0aGF0IHdlIGdldCBhIHZhbGlkIFRleHR1cmVNYW5hZ2Vy
LgotICAgICAgICBsYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogCiAgICAgICAgIGNvbnN0IFdlYkdMSWQg
YmFja1RleHR1cmVJZCA9IDE7CiAgICAgICAgIGNvbnN0IFdlYkdMSWQgZnJvbnRUZXh0dXJlSWQg
PSAyOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByb3RlY3RlZDoKIAogICAgICAgICBjYW52YXMtPnNl
dE5lZWRzRGlzcGxheSgpOwogICAgICAgICBFWFBFQ1RfVFJVRShjYW52YXMtPm5lZWRzRGlzcGxh
eSgpKTsKLSAgICAgICAgY2FudmFzLT5wYWludENvbnRlbnRzSWZEaXJ0eSgwKTsKKyAgICAgICAg
Y2FudmFzLT51cGRhdGUodXBkYXRlciwgMCk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShjYW52YXMt
Pm5lZWRzRGlzcGxheSgpKTsKICAgICAgICAgewogICAgICAgICAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7CkBAIC0xNTMsNyArMTUzLDYgQEAgcHJvdGVjdGVk
OgogICAgICAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNy
ZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0
PENDVGV4dHVyZUxheWVySW1wbCo+KGxheWVySW1wbC5nZXQoKSktPnRleHR1cmVJZCgpKTsKIAot
ICAgICAgICAgICAgY2FudmFzLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGltcGxDb250ZXh0
LmdldCgpLCB1cGRhdGVyKTsKICAgICAgICAgICAgIHVwZGF0ZXIudXBkYXRlKGltcGxDb250ZXh0
LmdldCgpLCAmYWxsb2NhdG9yTW9jaywgJmNvcGllck1vY2ssIDEpOwogICAgICAgICAgICAgY2Fu
dmFzLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmlu
ZGV4IGE0OTkzZTZiYjZiZWU5ZDE2ODg5ZmQ0ZWVlNzA4MmY1YzZmN2NjMjcuLmFjZmRhMWQ3YTAz
ZDhlNzNmMzBjMTE0NTQ3MzVkZTIyYzAyYmFhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNzcsOCAr
NzcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAg
IC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhl
biBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIw
MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAg
bGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwg
MCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAg
IC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTkwLDgg
Kzg5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAg
ICAvLyBJbnZhbGlkYXRlcyBib3RoIHRpbGVzLi4uCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRh
dGUgb25lIG9mIHRoZW0uCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwg
dXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSwgMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBvbmx5IGhhdmUgdGhlIGZpcnN0IHRpbGUgc2lu
Y2UgdGhlIG90aGVyIHRpbGUgd2FzIGludmFsaWRhdGVkIGJ1dCBub3QgcGFpbnRlZC4KQEAgLTEx
NCw4ICsxMTIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERp
cnR5VGlsZXMpCiAgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3Vu
ZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCksICZvY2NsdWRlZCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsKICAgICBsYXllci0+cHVzaFBy
b3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQu
b3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMzIs
OCArMTI5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVkZWREaXJ0
eVRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDUwLCA1MCkp
OwogICAgIC8vIC4uLi5idXQgdGhlIGFyZWEgaXMgb2NjbHVkZWQuCiAgICAgb2NjbHVkZWQuc2V0
T2NjbHVzaW9uKEludFJlY3QoMCwgMCwgNTAsIDUwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKLSAgICBsYXllci0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5
ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOwogICAg
IGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICBFWFBFQ1Rf
TkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAw
LCAxKTsKQEAgLTE1OSw4ICsxNTUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hEZWxldGVkVGlsZXMpCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlz
IGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJv
dW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUg
aW1wbCBzaWRlLgpAQCAtMTc5LDggKzE3NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcHVzaERlbGV0ZWRUaWxlcykKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxl
QXQoMCwgMSkpOwogCiAgICAgLy8gVGhpcyBzaG91bGQgcmVjcmVhdGUgYW5kIHVwZGF0ZSB0aGUg
ZGVsZXRlZCB0ZXh0dXJlcy4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwg
MCwgMTAwLCAxMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygw
LCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllcklt
cGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSB0aGUgZmlyc3QgdGlsZSBz
aW5jZSB0aGUgb3RoZXIgdGlsZSB3YXMgaW52YWxpZGF0ZWQgYnV0IG5vdCBwYWludGVkLgpAQCAt
MjA2LDEyICsyMDAsMTEgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBh
aW50VGlsZXMpCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzKTsKICAgICBsYXll
ci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlUmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KGNvbnRlbnRSZWN0KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVS
ZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0
LCAwKTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxl
cyBpbiB0aGUgY2VudGVyLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2
aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwg
dXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
IAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0y
MjEsMTAgKzIxNCw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWlu
dFRpbGVzKQogCiAgICAgLy8gRm9yIHRoZSBuZXh0IGZvdXIgdXBkYXRlcywgd2Ugc2hvdWxkIGRl
dGVjdCB3ZSBzdGlsbCBuZWVkIGlkbGUgcGFpbnRpbmcuCiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCA0OyBpKyspIHsKLSAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwg
MCk7CisgICAgICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3Qs
IDApOwogICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJl
Y3QpKTsKLSAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIDAp
OwotICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsK
KyAgICAgICAgbGF5ZXItPmlkbGVVcGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3Qs
IDApOwogICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwog
ICAgICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKICAgICB9CkBA
IC0yNzIsMjggKzI2NCwyNCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxl
c0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIGxheWVyMS0+c2V0Qm91bmRzKGxheWVyUmVjdC5z
aXplKCkpOwogICAgIGxheWVyMS0+c2V0VmlzaWJsZUxheWVyUmVjdChsYXllclJlY3QpOwogICAg
IGxheWVyMS0+aW52YWxpZGF0ZVJlY3QobGF5ZXJSZWN0KTsKLSAgICBsYXllcjEtPnByZXBhcmVU
b1VwZGF0ZShsYXllclJlY3QsIDApOworICAgIGxheWVyMS0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0
ZXIsIGxheWVyUmVjdCwgMCk7CiAKICAgICAvLyBQYWludCBhIHNpbmdsZSB0aWxlIGluIGxheWVy
MiBzbyB0aGF0IGl0IHdpbGwgaWRsZSBwYWludC4KLSAgICBsYXllcjItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVMYXllclJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogCiAgICAgLy8gV2Ugc2hv
dWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgYm90aCByZW1haW5pbmcgdGlsZXMgaW4gbGF5ZXIy
LgogICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+bmVlZHNJZGxlUGFpbnQobGF5ZXIyUmVjdCkpOwog
CiAgICAgLy8gQ29tbWl0IHRoZSBmcmFtZSBvdmVyIHRvIGltcGwuCi0gICAgbGF5ZXIxLT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwotICAgIGxheWVyMi0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxs
b2NhdG9yLCAmY29waWVyLCA1MDAwKTsKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsMS5nZXQoKSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDIu
Z2V0KCkpOwogCiAgICAgLy8gTm93IGlkbGUgcGFpbnQgbGF5ZXIyLiBXZSBhcmUgZ29pbmcgdG8g
cnVuIG91dCBvZiBtZW1vcnkgdGhvdWdoIQotICAgIGxheWVyMi0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKLSAgICBsYXllcjItPnByZXBhcmVUb1VwZGF0ZUlk
bGUobGF5ZXIyUmVjdCwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOworICAgIGxheWVyMi0+aWRsZVVwZGF0ZUxheWVy
UmVjdCh1cGRhdGVyLCBsYXllcjJSZWN0LCAwKTsKIAogICAgIC8vIE9oIHdlbGwsIGNvbW1pdCB0
aGUgZnJhbWUgYW5kIHB1c2guCi0gICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KDAsIHVwZGF0ZXIpOwotICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAmY29waWVyLCA1MDAw
KTsKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsMS5nZXQoKSk7CiAgICAg
bGF5ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDIuZ2V0KCkpOwpAQCAtMzEwLDExICsy
OTgsOSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBh
aW50RmFpbGVkKQogICAgIC8vIE5vdyBpZiBsYXllcjIgYmVjb21lcyBmdWxseSB2aXNpYmxlLCB3
ZSBzaG91bGQgYmUgYWJsZSB0byBwYWludCBpdCBhbmQgcHVzaCB2YWxpZCB0ZXh0dXJlcy4KICAg
ICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKIAotICAgIGxheWVyMi0+
cHJlcGFyZVRvVXBkYXRlKGxheWVyMlJlY3QsIDApOwotICAgIGxheWVyMS0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoKSwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwg
bGF5ZXIyUmVjdCwgMCk7CisgICAgbGF5ZXIxLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50
UmVjdCgpLCAwKTsKIAotICAgIGxheWVyMS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKLSAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CiAgICAgdXBkYXRlci51cGRhdGUoMCwgJmFsbG9jYXRvciwgJmNvcGllciwgNTAwMCk7CiAg
ICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDEuZ2V0KCkpOwogICAgIGxheWVy
Mi0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwyLmdldCgpKTsKQEAgLTM0NCw5ICszMzAsOCBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRlZE9jY2x1ZGVkVGls
ZXMpCiAgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwg
MCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5o
ZWlnaHQoKSAvIDIuMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCksICZvY2NsdWRlZCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUoSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+
aWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9j
Y2x1ZGVkKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwog
CiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgdGhlIHByZXBhaW50ZWQgdGlsZSBvbiB0aGUgaW1wbCBz
aWRlLgpAQCAtMzY4LDggKzM1Myw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVz
aFRpbGVzTWFya2VkRGlydHlEdXJpbmdQYWludCkKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNp
emUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0
VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXllci5nZXQoKSk7Ci0gICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXIt
PnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdl
IHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTM5MywxNCArMzc3
LDExIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWRE
aXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiAgICAgbGF5ZXIyLT5zZXRCb3VuZHMoSW50U2l6
ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyMi0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCkpOwogCi0gICAgbGF5ZXIxLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCksIDApOworICAgIGxheWVyMS0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKIAogICAgIC8vIEludmFsaWRhdGUgYSB0aWxlIG9uIGxh
eWVyMQogICAgIGxheWVyMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52
YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIxLmdldCgpKTsKLSAgICBsYXll
cjItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0KLSAgICBs
YXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Ci0gICAgbGF5ZXIy
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyMi0+dXBk
YXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKIAogICAg
IGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjFJbXBsLmdldCgpKTsKICAgICBsYXllcjIt
PnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIySW1wbC5nZXQoKSk7CkBAIC00MzAsMTIgKzQxMSw5IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1
cmluZ1BhaW50T25QcmV2aW91c0xheWVyCiAKICAgICAvLyBJbnZhbGlkYXRlIGEgdGlsZSBvbiBs
YXllcjIKICAgICBsYXllcjEtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0lu
dmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVyMi5nZXQoKSk7Ci0gICAgbGF5
ZXIxLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotCi0gICAg
bGF5ZXIyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAg
IGxheWVyMS0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
LCAwKTsKIAotICAgIGxheWVyMS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVy
KTsKLSAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Cisg
ICAgbGF5ZXIyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCksIDApOwogCiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVyMUltcGwuZ2V0KCkp
OwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjJJbXBsLmdldCgpKTsKQEAgLTQ2
OCwyNSArNDQ2LDIzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0
T2ZNZW1vcnkpCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzKTsKICAgICBsYXll
ci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlUmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KGNvbnRlbnRSZWN0KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVS
ZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0
LCAwKTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxl
cyBzdXJvdW5kaW5nIHZpc2libGUgdGlsZS4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJ
ZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBvbmUgdGlsZSBvbiB0aGUgaW1wbCBz
aWRlLgogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDEsIDEpKTsKIAogICAg
IHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIDApOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJ
ZGxlKHZpc2libGVSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIs
IHZpc2libGVSZWN0LCAwKTsKKyAgICBsYXllci0+aWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRhdGVy
LCB2aXNpYmxlUmVjdCwgMCk7CiAKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2lnbmFsIHdlIG5lZWQg
YW5vdGhlciBpZGxlIHBhaW50IGFmdGVyIHdlIHJ1biBvdXQgb2YgbWVtb3J5LgogICAgIEVYUEVD
VF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKIAotICAgIGxheWVy
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNo
UHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiB9CiAKQEAgLTUwNSw3ICs0ODEsNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludFplcm9TaXplZExheWVyKQogICAg
IGxheWVyLT5zZXRCb3VuZHMoY29udGVudFJlY3Quc2l6ZSgpKTsKICAgICBsYXllci0+c2V0Vmlz
aWJsZUxheWVyUmVjdChjb250ZW50UmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNv
bnRlbnRSZWN0KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRSZWN0LCAwKTsK
KyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKIAog
ICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgogICAgIEVYUEVDVF9FUSgwdSwg
bGF5ZXItPm51bVBhaW50ZWRUaWxlcygpKTsKQEAgLTUxMywxOSArNDg5LDE3IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkTGF5ZXIpCiAgICAgLy8gRW1w
dHkgbGF5ZXJzIGRvbid0IG5lZWQgcHJlcGFpbnQuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5u
ZWVkc0lkbGVQYWludChjb250ZW50UmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgog
ICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CiAKICAgICAvLyBO
b24tdmlzaWJsZSBsYXllcnMgZG9uJ3QgaWRsZSBwYWludC4KLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlSWRsZShjb250ZW50UmVjdCwgMCk7CisgICAgbGF5ZXItPmlkbGVVcGRhdGVMYXllclJl
Y3QodXBkYXRlciwgY29udGVudFJlY3QsIDApOwogCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0
IGhhdmUgdGlsZXMuCiAgICAgRVhQRUNUX0VRKDB1LCBsYXllci0+bnVtUGFpbnRlZFRpbGVzKCkp
OwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIEVt
cHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgpAQCAtNTUwLDcgKzUyNCw3IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkQW5pbWF0aW5nTGF5ZXIpCiAg
ICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50UmVjdC5zaXplKCkpOwogICAgIGxheWVyLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KGNvbnRlbnRSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
Y29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudFJlY3QsIDAp
OworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVudFJlY3QsIDApOwog
CiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCiAgICAgRVhQRUNUX0VRKDB1
LCBsYXllci0+bnVtUGFpbnRlZFRpbGVzKCkpOwpAQCAtNTU4LDE5ICs1MzIsMTcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6ZWRBbmltYXRpbmdMYXllcikK
ICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgbmVlZCBwcmVwYWludC4KICAgICBFWFBFQ1RfRkFM
U0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KGNvbnRlbnRSZWN0KSk7CiAKLSAgICBsYXllci0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhh
dmUgdGlsZXMuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsK
IAogICAgIC8vIE5vbi12aXNpYmxlIGxheWVycyBkb24ndCBpZGxlIHBhaW50LgotICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnRlbnRSZWN0LCAwKTsKKyAgICBsYXllci0+aWRsZVVw
ZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CiAKICAgICAvLyBFbXB0eSBs
YXllcnMgZG9uJ3QgaGF2ZSB0aWxlcy4KICAgICBFWFBFQ1RfRVEoMHUsIGxheWVyLT5udW1QYWlu
dGVkVGlsZXMoKSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwog
CiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCkBAIC01OTUsMjEgKzU2Nywx
OSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXll
cnMpCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+c2V0
VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlUmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KGNvbnRlbnRSZWN0KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCAw
KTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsK
IAogICAgIC8vIE5vbi12aXNpYmxlIGxheWVycyBkb24ndCBuZWVkIGlkbGUgcGFpbnQuCiAgICAg
RVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXIt
PnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBu
b3QgaGF2ZSBhbnkgdGlsZXMgcHVzaGVkIHNpbmNlIHRoZSBsYXllciBpcyBub3QgdmlzaWJsZS4K
ICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwogCiAgICAgLy8g
Tm9uLXZpc2libGUgbGF5ZXJzIGRvbid0IGlkbGUgcGFpbnQuCi0gICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT5pZGxlVXBkYXRlTGF5ZXJS
ZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgbm90IGhhdmUgYW55IHRpbGVzIHB1
c2hlZCBzaW5jZSB0aGUgbGF5ZXIgaXMgbm90IHZpc2libGUuCkBAIC02MTksOSArNTg5LDggQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlTGF5ZXJzKQog
c3RhdGljIHZvaWQgaWRsZVBhaW50UmVwZWF0KGludCByZXBlYXRUaW1lcywgRmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bSogbGF5ZXIsIEZha2VDQ1RpbGVkTGF5ZXJJbXBsKiBsYXllckltcGwsIENDVGV4
dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0KQogewogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0VGltZXM7ICsraSkgewotICAgICAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCAwKTsKLSAgICAgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIDApOwotICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVj
dCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CisgICAgICAgIGxheWVyLT5pZGxlVXBkYXRlTGF5
ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsKTsKICAgICB9CiB9CkBAIC02NjksOCArNjM4LDcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlQW5pbWF0aW5nTGF5ZXJz
KQogICAgICAgICAgICAgYm9vbCBzaG91bGRQcmVwYWludCA9ICFsYXllci0+aWRsZVBhaW50UmVj
dCh2aXNpYmxlUmVjdCkuaXNFbXB0eSgpOwogCiAgICAgICAgICAgICAvLyBUaGlzIHBhaW50cyB0
aGUgbGF5ZXIgYnV0IHRoZXJlJ3Mgbm90aGluZyB2aXNpYmxlIHNvIGl0J3MgYSBuby1vcC4KLSAg
ICAgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIDApOwotICAgICAg
ICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAg
ICAgICAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsK
ICAgICAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAK
ICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBub3QgaGF2ZSBhbnkgdGlsZXMgcHVzaGVkIHlldCBz
aW5jZSB0aGUgbGF5ZXIgaXMgbm90IHZpc2libGUgYW5kIHdlJ3ZlIG5vdCBwcmVwYWludGVkLgpA
QCAtNjk5LDEyICs2NjcsMTUgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlk
YXRlRnJvbVByZXBhcmUpCiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllcklt
cGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKICAgICBDQ1RleHR1
cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgZmFrZUFsbG9jYXRv
cjsKKyAgICBGYWtlVGV4dHVyZUNvcGllciBmYWtlQ29waWVyOworICAgIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHQzRD4gY29udGV4dCA9IGNyZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0
M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSk7CiAKICAgICAvLyBUaGUgdGlsZSBz
aXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0
aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVM
YXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIHVwZGF0
ZXIudXBkYXRlKGNvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgMTAw
MCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAg
IC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTcxNCwy
MCArNjg1LDIzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21Q
cmVwYXJlKQogICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogCiAg
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7
Ci0gICAgLy8gSW52b2tlIHByZXBhcmVUb1VwZGF0ZSBhZ2Fpbi4gQXMgdGhlIGxheWVyIGlzIHZh
bGlkIHByZXBhcmVUb1VwZGF0ZSBzaG91bGRuJ3QgYmUgaW52b2tlZCBvbgorICAgIC8vIEludm9r
ZSB1cGRhdGVMYXllclJlY3QgYWdhaW4uIEFzIHRoZSBsYXllciBpcyB2YWxpZCB1cGRhdGVMYXll
clJlY3Qgc2hvdWxkbid0IGJlIGludm9rZWQgb24KICAgICAvLyB0aGUgTGF5ZXJUZXh0dXJlVXBk
YXRlci4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
LCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwg
MTAwLCAyMDApLCAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShjb250ZXh0LmdldCgpLCAmZmFrZUFs
bG9jYXRvciwgJmZha2VDb3BpZXIsIDEwMDApOwogICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogCiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7Ci0gICAgLy8gc2V0UmVjdFRvSW52
YWxpZGF0ZSB0cmlnZ2VycyBpbnZhbGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVw
YXJlVG9VcGRhdGUuCisgICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0ZSB0cmlnZ2VycyBpbnZhbGlk
YXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSB1cGRhdGVMYXllclJlY3QuCiAgICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgy
NSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJS
ZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICB1cGRhdGVyLnVw
ZGF0ZShjb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VDb3BpZXIsIDEwMDApOwog
ICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZUNvdW50KCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclBy
ZXBhcmVDb3VudCgpOwotICAgIC8vIFRoZSBsYXllciBzaG91bGQgc3RpbGwgYmUgaW52YWxpZCBh
cyBwcmVwYXJlVG9VcGRhdGUgaW52b2tlZCBpbnZhbGlkYXRlLgotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIC8vIFRoZSBsYXllciBz
aG91bGQgc3RpbGwgYmUgaW52YWxpZCBhcyB1cGRhdGVMYXllclJlY3QgaW52b2tlZCBpbnZhbGlk
YXRlLgorICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCksIDApOworICAgIHVwZGF0ZXIudXBkYXRlKGNvbnRleHQuZ2V0KCksICZmYWtlQWxs
b2NhdG9yLCAmZmFrZUNvcGllciwgMTAwMCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiB9CiAKQEAgLTc1MSwyMSAr
NzI1LDE4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdo
ZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogICAgIC8vIE9uIGZpcnN0IHVwZGF0ZSwgdGhlIHVw
ZGF0ZVJlY3QgaW5jbHVkZXMgYWxsIHRpbGVzLCBldmVuIGJleW9uZCB0aGUgYm91bmRhcmllcyBv
ZiB0aGUgbGF5ZXIuCiAgICAgLy8gSG93ZXZlciwgaXQgc2hvdWxkIHN0aWxsIGJlIGluIGxheWVy
IHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29u
dGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAw
KTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAg
ICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwogICAg
IEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAzMDAsIDMwMCAqIDAuOCksIGxh
eWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFyZSB1cGRhdGVk
IG9uY2UsIGFub3RoZXIgaW52YWxpZGF0ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0aGUgYm91bmRz
IG9mIHRoZSBsYXllci4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAwKTsKLSAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBk
YXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9B
VF9SRUNUX0VRKEZsb2F0UmVjdChsYXllckJvdW5kcyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwog
CiAgICAgLy8gUGFydGlhbCByZS1wYWludCBzaG91bGQgYWxzbyBiZSByZXByZXNlbnRlZCBieSB0
aGUgdXBkYXRlUmVjdCBpbiBsYXllciBzcGFjZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAgICAgSW50
UmVjdCBwYXJ0aWFsRGFtYWdlKDMwLCAxMDAsIDEwLCAxMCk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KHBhcnRpYWxEYW1hZ2UpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVu
dEJvdW5kcywgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBk
YXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRz
LCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoNDUsIDgwLCAxNSwgOCks
IGxheWVyLT51cGRhdGVSZWN0KCkpOwogfQogCkBAIC03ODYsOCArNzU3LDcgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNo
YW5nZXMpCiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDEwMCwgMTAw
KSwgbGF5ZXItPmxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkpOwogCiAgICAgLy8gUHVzaCB0aGUgdGls
ZXMgdG8gdGhlIGltcGwgc2lkZSBhbmQgY2hlY2sgdGhhdCB0aGVyZSBpcyBleGFjdGx5IG9uZS4K
LSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsK
LSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBs
YXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAw
KTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIEVY
UEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKICAgICBFWFBFQ1RfRkFMU0Uo
bGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkpOwpAQCAtODAwLDggKzc3MCw3IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVD
aGFuZ2VzKQogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEw
MCksIGxheWVyLT5sYXN0TmVlZHNEaXNwbGF5UmVjdCgpKTsKIAogICAgIC8vIFRoZSBpbXBsIHNp
ZGUgc2hvdWxkIGdldCAyeDIgdGlsZXMgbm93LgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCAyMDAsIDIwMCksIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRl
ciwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCksIDApOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxl
QXQoMCwgMCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsK
QEAgLTgxMSw4ICs3ODAsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUlu
dmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICAvLyBJbnZhbGlkYXRlIHRo
ZSBlbnRpcmUgbGF5ZXIgYWdhaW4sIGJ1dCBkbyBub3QgcGFpbnQuIEFsbCB0aWxlcyBzaG91bGQg
YmUgZ29uZSBub3cgZnJvbSB0aGUKICAgICAvLyBpbXBsIHNpZGUuCiAgICAgbGF5ZXItPnNldE5l
ZWRzRGlzcGxheSgpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgxLCAwLCAw
LCAxKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDEsIDAsIDAs
IDEpLCAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwog
ICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CiAgICAgRVhQRUNU
X0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsKQEAgLTg1MSw4ICs4MTksNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBzRHJhd0dldHNSZXNldCkKICAgICBjY0xh
eWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgIGNjTGF5ZXJUcmVlSG9z
dC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAzMDApKTsKICAgICB0ZXh0dXJlTWFuYWdl
ci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhtZW1vcnlMaW1pdCk7Ci0gICAgY2NMYXllclRyZWVI
b3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOworICAgIGNj
TGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogCiAgICAgLy8gV2UnbGwgc2tp
cCB0aGUgcm9vdCBsYXllci4KICAgICBFWFBFQ1RfVFJVRShyb290TGF5ZXItPnNraXBzRHJhdygp
KTsKQEAgLTg2NCw3ICs4MzEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBz
RHJhd0dldHNSZXNldCkKICAgICAvLyBSZW1vdmUgdGhlIGNoaWxkIGxheWVyLgogICAgIHJvb3RM
YXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKCk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAg
ICAgRVhQRUNUX0ZBTFNFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOwogCiAgICAgY2NMYXllclRy
ZWVIb3N0LT5zZXRSb290TGF5ZXIoMCk7CkBAIC04NzYsMTAgKzg0MywxMSBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHJlc2l6ZVRvU21hbGxlcikKIHsKICAgICBPd25QdHI8VGV4dHVy
ZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg2MCoxMDI0
KjEwMjQsIDYwKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hy
b21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVy
ZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICBs
YXllci0+c2V0Qm91bmRzKEludFNpemUoNzAwLCA3MDApKTsKICAgICBsYXllci0+aW52YWxpZGF0
ZVJlY3QoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRh
dGUoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOwogCiAgICAgbGF5ZXItPnNl
dEJvdW5kcyhJbnRTaXplKDIwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoMCwgMCwgMjAwLCAyMDApKTsKQEAgLTg4OSwxMyArODU3LDE0IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgaHVnZUxheWVyVXBkYXRlQ3Jhc2gpCiB7CiAgICAgT3duUHRyPFRl
eHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAq
MTAyNCoxMDI0LCA2MCoxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
ckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRl
eHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwogCiAg
ICAgaW50IHNpemUgPSAxIDw8IDMwOwogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZShzaXpl
LCBzaXplKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgc2l6ZSwg
c2l6ZSkpOwogCiAgICAgLy8gRW5zdXJlIG5vIGNyYXNoIGZvciBib3VuZHMgd2hlcmUgc2l6ZSAq
IHNpemUgd291bGQgb3ZlcmZsb3cgYW4gaW50LgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3Qo
dXBkYXRlciwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOwogfQogCiBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQpAQCAtOTI1LDggKzg5NCw3IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgY2NMYXllclRyZWVI
b3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDIwMCkpOwogCiAgICAgLy8gRnVsbCB1
cGRhdGUgb2YgYWxsIDYgdGlsZXMuCi0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMo
KTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXll
clRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBk
YXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgIHVwZGF0ZXIudXBkYXRlKDAsICZhbGxvY2F0b3IsICZj
b3BpZXIsIDQpOwogICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBk
YXRlcygpKTsKQEAgLTkzOSw4ICs5MDcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHBhcnRpYWxVcGRhdGVzKQogCiAgICAgLy8gRnVsbCB1cGRhdGUgb2YgMyB0aWxlcyBhbmQgcGFy
dGlhbCB1cGRhdGUgb2YgMyB0aWxlcy4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCAzMDAsIDE1MCkpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7
Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJU
cmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0
ZUxheWVycyh1cGRhdGVyKTsKICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAmY29w
aWVyLCA0KTsKICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZUNvdW50KCkpOwogICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0
ZXMoKSk7CkBAIC05NTMsOCArOTIwLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
YXJ0aWFsVXBkYXRlcykKIAogICAgIC8vIFBhcnRpYWwgdXBkYXRlIG9mIDYgdGlsZXMuCiAgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAsIDEwMCkpOwotICAgIGNj
TGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVy
KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICB1cGRh
dGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAmY29waWVyLCA0KTsKICAgICBFWFBFQ1RfRVEoMiwg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgIEVY
UEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CkBAIC05NzQsMTIgKzk0MCwxMyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhvdXRPY2NsdXNp
b24pCiB7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1
cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBS
ZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIENDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhp
cyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRC
b3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0
ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiB9CiAKQEAg
LTk4OCw2ICs5NTUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRl
ZFdpdGhPY2NsdXNpb24pCiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdl
ciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0
KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihu
ZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRh
dGVyOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgogCkBAIC05OTcsNyArOTY1
LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVz
aW9uKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEw
MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwg
bGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwg
MCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwg
NjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRl
ciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2
LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkp
OwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBs
b2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMDA4LDcgKzk3Niw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikKIAogICAgIG9jY2x1ZGVk
LnNldE9jY2x1c2lvbihJbnRSZWN0KDI1MCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXll
ci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2Nj
bHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0yLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92
ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTAxOSw3
ICs5ODcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhP
Y2NsdXNpb24pCiAKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyNTAsIDI1MCwg
MzAwLCAxMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAg
RVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFx
dWUoKSwgMCwgMSk7CkBAIC0xMDMyLDYgKzEwMDAsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxpdHlDb25zdHJhaW50cykK
ICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxG
YWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
ckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJh
Y2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAvLyBU
aGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKQEAgLTEwNDIsNyArMTAxMSw3IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0
eUNvbnN0cmFpbnRzKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAw
LCAzMDAsIDE1MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwg
MCwgNjAwLCAzNjApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2
MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAs
IDM2MCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJ
bnRSZWN0KDAsIDAsIDYwMCwgMzYwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMjQtMywg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAK
ICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRl
ZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwNTUsNyArMTAyNCw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFp
bnRzKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1
MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAz
NTApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDM1MCksICZv
Y2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDYwMCwgMzUwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMjQtNiwgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBF
Q1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgp
LCAwLCAxKTsKQEAgLTEwNjgsNyArMTAzNyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAg
IG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCkpOwogICAg
IGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNDApKTsKICAg
ICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDM0MCksICZvY2NsdWRlZCk7
CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwg
MzQwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMjQtNiwgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihv
Y2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsK
QEAgLTEwODIsNiArMTA1MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNO
b3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMiox
MDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXll
ciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdl
dCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1
cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAK
QEAgLTEwOTEsNyArMTA2MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNO
b3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24o
SW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVy
UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVMYXll
clJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAg
RVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
UmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMTAxLDcgKzEwNzEsNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlk
YXRpb24pCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFy
ZVJlY3RDb3VudCgpOwogCiAgICAgLy8gUmVwYWludCB3aXRob3V0IG1hcmtpbmcgaXQgZGlydHku
IFRoZSBjdWxsZWQgdGlsZXMgcmVtYWluZWQgZGlydHkuCi0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBk
YXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQp
OwogICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJl
cGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0
cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTExNCw2ICsxMDg0LDcg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9u
QW5kVHJhbnNmb3JtcykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKQEAgLTExMjgsNyArMTA5
OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1
c2lvbkFuZFRyYW5zZm9ybXMpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMTAw
LCAxMDAsIDE1MCwgNTApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0
KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5
ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAg
IEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmlj
cygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTE0MSw2ICsxMTEyLDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5k
U2NhbGluZykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAg
IFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtl
VGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAK
ICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKQEAgLTExNTQsNyArMTEyNiw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFu
ZFNjYWxpbmcpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMw
MCwgMTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2lu
dCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICAvLyBUaGUg
Y29udGVudCBpcyBoYWxmIHRoZSBzaXplIG9mIHRoZSBsYXllciAoc28gdGhlIG51bWJlciBvZiB0
aWxlcyBpcyBmZXdlcikuCiAgICAgLy8gSW4gdGhpcyBjYXNlLCB0aGUgY29udGVudCBpcyAzMDB4
MzAwLCBhbmQgc2luY2UgdGhlIHRpbGUgc2l6ZSBpcyAxMDAsIHRoZQogICAgIC8vIG51bWJlciBv
ZiB0aWxlcyAzeDMuCkBAIC0xMTcyLDcgKzExNDQsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIG9jY2x1ZGVk
LnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDIwMCkpOwogICAgIGxheWVyLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVk
ZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2
MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVB
UihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAx
KTsKQEAgLTExOTAsNyArMTE2Miw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGls
ZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVz
aW9uKEludFJlY3QoMTAwLCAxMDAsIDE1MCwgMTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVM
YXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAg
bGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwg
Jm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVk
Lm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTIw
Myw2ICsxMTc1LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVu
dE9wYXF1ZVJlZ2lvbikKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0
ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcyBpbiB2YXJpb3VzIHdheXMuCiAKQEAgLTEyMjAs
NyArMTE5Myw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRP
cGFxdWVSZWdpb24pCiAgICAgLy8gSWYgdGhlIGxheWVyIGRvZXNuJ3QgcGFpbnQgb3BhcXVlIGNv
bnRlbnQsIHRoZW4gdGhlIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uIHNob3VsZCBiZSBlbXB0
eS4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRS
ZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsK
KyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2Ns
dWRlZCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVS
ZWdpb24oKTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250ZW50cy5pc0VtcHR5KCkpOwogCkBA
IC0xMjMzLDcgKzEyMDYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVD
b250ZW50T3BhcXVlUmVnaW9uKQogICAgIG9wYXF1ZVBhaW50UmVjdCA9IEludFJlY3QoMTAsIDEw
LCA5MCwgMTkwKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3Bh
cXVlUGFpbnRSZWN0KG9wYXF1ZVBhaW50UmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5k
cywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRl
bnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJs
ZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24o
b3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkp
OwogICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwpAQCAt
MTI0NSw3ICsxMjE4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29u
dGVudE9wYXF1ZVJlZ2lvbikKIAogICAgIC8vIElmIHdlIHBhaW50IGFnYWluIHdpdGhvdXQgaW52
YWxpZGF0aW5nLCB0aGUgc2FtZSBzdHVmZiBzaG91bGQgYmUgb3BhcXVlLgogICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsK
LSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7Cisg
ICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVk
ZWQpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVn
aW9uKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwg
dmlzaWJsZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEo
MXUsIG9wYXF1ZUNvbnRlbnRzLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTEyNTksNyArMTIzMiw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24p
CiAgICAgLy8gbm90IGJlIGFmZmVjdGVkLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxLCAxKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3Qo
dXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICBvcGFxdWVDb250ZW50cyA9
IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNU
KGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250
ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVDb250ZW50cy5yZWN0cygp
LnNpemUoKSk7CkBAIC0xMjczLDcgKzEyNDYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIC8vIG5vdCBiZSBhZmZlY3RlZC4K
ICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0
KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMTAsIDEwLCAx
LCAxKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAmb2NjbHVk
ZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywg
Jm9jY2x1ZGVkKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9w
YXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihJbnRSZWN0KDEw
LCAxMDAsIDkwLCAxMDApLCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkp
OwogICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwpAQCAt
MTI4NCw3ICsxMjU3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29u
dGVudE9wYXF1ZVJlZ2lvbikKICAgICBFWFBFQ1RfRVEoMCwgb2NjbHVkZWQub3ZlcmRyYXdNZXRy
aWNzKCkudGlsZXNDdWxsZWRGb3JVcGxvYWQoKSk7CiAKICAgICAvLyBObyBtZXRyaWNzIGFyZSBy
ZWNvcmRlZCBpbiBwcmVwYWludCwgc28gdGhlIHZhbHVlcyBzaG91bGQgbm90IGNoYW5nZSBmcm9t
IGFib3ZlLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnRlbnRCb3VuZHMsICZv
Y2NsdWRlZCk7CisgICAgbGF5ZXItPmlkbGVVcGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVu
dEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01l
dHJpY3MoKS5waXhlbHNQYWludGVkKCksIDIwMDAwICogMiArIDEgICsgMSwgMSk7CiAgICAgRVhQ
RUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUo
KSwgMTcxMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygp
LnBpeGVsc1VwbG9hZGVkVHJhbnNsdWNlbnQoKSwgMjAwMDAgKyAyMDAwMCAtIDE3MTAwICsgMSAr
IDEsIDEpOwpAQCAtMTI5Niw2ICsxMjY5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwaXhlbHNQYWludGVkTWV0cmljcykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEw
MjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7
CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1cmVVcGRh
dGVyIHVwZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMg
aW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcyBpbiB2YXJpb3VzIHdheXMuCiAK
QEAgLTEzMTMsNyArMTI4Nyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4ZWxz
UGFpbnRlZE1ldHJpY3MpCiAgICAgLy8gSW52YWxpZGF0ZXMgYW5kIHBhaW50cyB0aGUgd2hvbGUg
bGF5ZXIuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBh
aW50UmVjdChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91
bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRl
ZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAm
b2NjbHVkZWQpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50T3Bh
cXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX1RSVUUob3BhcXVlQ29udGVudHMuaXNFbXB0eSgpKTsK
IApAQCAtMTMyNyw3ICsxMzAxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwaXhl
bHNQYWludGVkTWV0cmljcykKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgMSwgMSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0
KDUwLCAyMDAsIDEwLCAxMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJv
dW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNv
bnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlz
aWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250ZW50
cy5pc0VtcHR5KCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136366</attachid>
            <date>2012-04-09 18:46:59 -0700</date>
            <delta_ts>2012-04-09 19:08:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83530-20120409184658.patch</filename>
            <type>text/plain</type>
            <size>113974</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg2OTdkZjgyNDRkZmJj
ZDQyMTRhZmUwNjg3NDI5MjFlOWFjYzZlZS4uOTUxYTEyM2I5NTI1OTQ1MDFlMDg3ZThhN2VjZWRh
NTY1NjAyN2NjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkyIEBACiAyMDEyLTA0LTA5ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBG
b2xkIExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaW50byBtYWluIHVw
ZGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM1
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB1
c2VkIHRvIHVwZGF0ZSBsYXllciBjb250ZW50cyBpbiB0d28gcGhhc2VzLiBUaGUgZmlyc3QsIGNh
bGxlZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIC8KKyAgICAgICAgaWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KCksIHJhbiBvbiB0aGUgbWFpbiBXZWJLaXQgdGhyZWFkIGFuZCB0b29rIGNhcmUgb2Yg
YW55IG1haW4tdGhyZWFkIHdvcmsgLSBwcmltYXJpbHkKKyAgICAgICAgV2ViQ29yZSBwYWludGlu
ZyBhcyB0aGUgbmFtZSBpbXBsaWVzLiBUaGUgc2Vjb25kLCBjYWxsZWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygpLCByYW4gb24gdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgdGhyZWFkIHdpdGgg
dGhlIG1haW4gdGhyZWFkIGJsb2NrZWQgYW5kIHRvb2sgY2FyZSBvZiBhbnkgYWN0aW9ucyB0aGF0
IHJlcXVpcmVkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGNvbXBvc2l0b3IncworICAgICAgICBjb250
ZXh0IC0gc3VjaCBhcyB0ZXh0dXJlIHVwbG9hZHMgaW50byBjb21wb3NpdG9yLW1hbmFnZWQgdGV4
dHVyZXMuIE5vdyB0aGF0IGFsbCBjb21wb3NpdG9yIHRleHR1cmUgb3BlcmF0aW9ucworICAgICAg
ICBhcmUgcXVldWVkIG9uIGEgQ0NUZXh0dXJlVXBkYXRlciwgdGhlIGNvbXBvc2l0b3IgY2FuIHRh
a2UgY2FyZSBvZiB0aGVzZSBvcGVyYXRpb25zIG9uIHRoZSBjb3JyZWN0IHRocmVhZCBhdCB0aGUK
KyAgICAgICAgcmlnaHQgdGltZSB3aXRob3V0IG5lZWRpbmcgbGF5ZXItc3BlY2lmaWMgbG9naWMu
CisKKyAgICAgICAgVGhpcyBmb2xkcyBib3RoIGZ1bmN0aW9ucyBpbnRvIG9uZSBmdW5jdGlvbiBj
YWxsZWQgTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKCkgKGFuZCBpZGxlVXBkYXRlKCkgZm9yIGlkbGUK
KyAgICAgICAgcHJlcGFpbnRpbmcpIGFuZCBhZGRzIGEgQ0NUZXh0dXJlVXBkYXRlciByZWZlcmVu
Y2UgZm9yIHF1ZXVpbmcgdXAgdGV4dHVyZSBvcGVyYXRpb25zLgorICAgICAgICAKKyAgICAgICAg
VGhlIENDUHJveHkgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgQ0NUZXh0
dXJlVXBkYXRlci4gSW4gdGhlIHRocmVhZGVkIHByb3h5LCB0aGUgdXBkYXRlciBpcworICAgICAg
ICB0aWVkIHRvIHRoZSBsaWZldGltZSBvZiB0aGUgYmVnaW5GcmFtZSBvcGVyYXRpb24uIFNwZWNp
ZmljYWxseSBpdCdzIGNvbnN0cnVjdGVkIG9uIHRoZSBpbXBsIHRocmVhZCB3aGVuIHRoZQorICAg
ICAgICBiZWdpbkZyYW1lIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkLCBpcyBhY2Nlc3NlZCBieSByZWZl
cmVuY2Ugb24gdGhlIG1haW4gdGhyZWFkIGR1cmluZyB0aGUgY29tbWl0LCBhbmQgdGhlbgorICAg
ICAgICBkZXN0cm95ZWQgYnkgdGhlIHByb3h5IHdoZW4gdGhlIGNvbW1pdCBpcyBjb21wbGV0ZS4g
Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiB0aGUgaW1w
bAorICAgICAgICB0aHJlYWQgYnkgdGhlIHByb3h5LiBJbiB0aGUgZnV0dXJlLCBpdCBtaWdodCBi
ZSB3b3J0aCBleHBvc2luZyBhIG1vcmUgbGltaXRlZCBpbnRlcmZhY2UgdG8gbGF5ZXJzLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKENhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKENvbnRl
bnRMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1
cmVVcGRhdGVyOjp1cGRhdGVMYXllclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXll
ckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoSW1hZ2VMYXllckNocm9taXVtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bTo6aWRsZVVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0
YWJsZVRpbGU6OmlzRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRhYmxlVGlsZTo6Y29w
eUFuZENsZWFyRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRhYmxlVGlsZTo6aXNEaXJ0
eUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlVwZGF0YWJsZVRpbGU6OlVwZGF0YWJsZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRMYXllckNocm9taXVtOjpUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkTGF5ZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjp0aWxlT25seU5lZWRzUGFydGlhbFVwZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cmVzZXJ2ZVRleHR1cmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cmVzZXRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmlkbGVVcGRhdGVMYXllclJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpuZWVkc0lkbGVQYWludCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAg
IChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVy
Q2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJHTExheWVyQ2hyb21pdW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6On5DQ0xheWVyVHJlZUhvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpjb21taXRDb21wbGV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnJlc2VydmVUZXh0dXJlcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAg
ICAgKENDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Npbmds
ZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpjb21taXRJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAoQ0NTaW5nbGVUaHJlYWRQ
cm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rp
b25CZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxl
ZEFjdGlvbkNvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6QmVnaW5G
cmFtZUFuZENvbW1pdFN0YXRlOjpCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUpOgorICAgICAgICAo
QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKToKKworMjAxMi0wNC0wOSAgSmFtZXMgUm9iaW5zb24g
IDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gRGVmZXIgdGV4dHVy
ZSBpZCBhbGxvY2F0aW9uIGZvciBjb3BpZXMgdW50aWwgdGhlIGFjdHVhbCBjb3B5IGV4ZWN1dGVz
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzUxNAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDgxNzZiYjEyZGVhMzkxZjc1ZDY0MmY5Mzky
MGNhZWEzMzE0ZGE2YzYuLmQ5Nzg5YmY1MTQxYjg1NDBlNDA3ODNjMmMzNTUzZmU4NjhjMTI4ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzkgQEAKIDIwMTItMDQtMDkg
IEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21p
dW1dIEZvbGQgTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyBpbnRvIG1h
aW4gdXBkYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MzUzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSB0ZXN0cyBmb3IgaW50ZXJmYWNlIGNoYW5nZXMuCisKKyAgICAgICAgKiB0ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVz
dDo6cnVuVGVzdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjp1cGRhdGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6aWRsZVVwZGF0ZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZyk6CisgICAgICAgIChDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZyk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjph
ZnRlclRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2V0Vmlld3BvcnRT
aXplOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWlj
Q29tbWl0V2l0aFBhcnRpYWxVcGRhdGU6OmNvbW1pdENvbXBsZXRlT25DQ1RocmVhZCk6CisgICAg
ICAgIChXVEY6OlRlc3RMYXllckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0TGF5ZXJPY2NsdXNpb246OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RDb250ZW50TGF5ZXJPY2NsdXNpb246OmJlZ2luVGVzdCk6Cisg
ICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RMYXllck9jY2x1c2lvbldpdGhGaWx0ZXJz
OjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0TWFueVN1cmZh
Y2VzOjpiZWdpblRlc3QpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24u
Y3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjp1cGRh
dGVMYXllclJlY3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VUaWxlZExheWVyQ2hyb21p
dW06OnVwZGF0ZSk6CisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oOgor
ICAgICAgICAoRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoRmFrZVRpbGVkTGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgICogdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAg
IChXVEY6OlRFU1QpOgorICAgICAgICAoV1RGOjppZGxlUGFpbnRSZXBlYXQpOgorCisyMDEyLTA0
LTA5ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2No
cm9taXVtXSBEZWZlciB0ZXh0dXJlIGlkIGFsbG9jYXRpb24gZm9yIGNvcGllcyB1bnRpbCB0aGUg
YWN0dWFsIGNvcHkgZXhlY3V0ZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNTE0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IGJmYTgzNGUyNjJmMzE2ZWNhZDQ3MzU2OTJlMGFjYzQwZGFhZmNhYjAuLjNhMTRkNWEx
MGVlYzg3MzE1NTRhZjVlNWIwODY5NmNhOWRlNDU3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmNwcApAQCAtOTMsOSArOTMsOSBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6c2V0Q2FudmFzKFNrQ2FudmFzKiBjYW52YXMpCiAgICAgbV9jYW52YXMgPSBjYW52YXM7
CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShj
b25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9jY2x1c2lvbiAqLykKK3ZvaWQgQ2FudmFzMkRM
YXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ2FudmFzMkRMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSIsIHRoaXMsIDApOworICAgIFRSQUNFX0VWRU5UMCgi
Y2MiLCAiQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSIpOwogICAg
IGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTA1LDcgKzEwNSw4
IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25z
dCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9jCiAgICAgICAgICAgICBtX2Zyb250VGV4dHVyZS0+
c2V0VGV4dHVyZU1hbmFnZXIodGV4dHVyZU1hbmFnZXIpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBtX2Zyb250VGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFn
ZXIpOwotICAgICAgICBtX2Zyb250VGV4dHVyZS0+cmVzZXJ2ZShtX3NpemUsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBKTsKKyAgICAgICAgaWYgKG1fZnJvbnRUZXh0dXJlLT5yZXNlcnZlKG1fc2l6
ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQorICAgICAgICAgICAgdXBkYXRlci5hcHBlbmRN
YW5hZ2VkQ29weShtX2JhY2tUZXh0dXJlSWQsIG1fZnJvbnRUZXh0dXJlLmdldCgpLCBtX3NpemUp
OwogICAgIH0KIAogICAgIGlmICghbmVlZHNEaXNwbGF5KCkpCkBAIC0xMjEsMjIgKzEyMiwxNCBA
QCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKiAvKiBvYwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9j
YW52YXMpIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIlNrQ2FudmFzOjpmbHVzaCIsIG1fY2FudmFz
LCAwKTsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJTa0NhbnZhczo6Zmx1c2giKTsKICAg
ICAgICAgbV9jYW52YXMtPmZsdXNoKCk7CiAgICAgfQogCi0gICAgVFJBQ0VfRVZFTlQoIkdyYXBo
aWNzQ29udGV4dDNEOjpmbHVzaCIsIG1fY29udGV4dCwgMCk7CisgICAgVFJBQ0VfRVZFTlQwKCJj
YyIsICJHcmFwaGljc0NvbnRleHQzRDo6Zmx1c2giKTsKICAgICBtX2NvbnRleHQtPmZsdXNoKCk7
CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVy
KQotewotICAgIGlmICghbV9iYWNrVGV4dHVyZUlkIHx8ICFtX2Zyb250VGV4dHVyZSB8fCAhbV9m
cm9udFRleHR1cmUtPmlzVmFsaWQobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHVwZGF0ZXIuYXBwZW5kTWFuYWdlZENvcHkobV9iYWNrVGV4
dHVyZUlkLCBtX2Zyb250VGV4dHVyZS5nZXQoKSwgbV9zaXplKTsKLX0KLQogdm9pZCBDYW52YXMy
RExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogewog
ICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCBiNWQwYzIzODkxZmIwNWI2MjE4MjQ5MTAy
NTBkNTkwYjhiNzJjNjcyLi5hMjJmOTdlYmRiNzgxNWZhNDMzZTAyZDljY2I0MWIyMTM2MTI2NTA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNTUsOSArNTUsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheVJlY3QoY29uc3QgRmxvYXRS
ZWN0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciop
OwotCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShD
Q1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CiAgICAgdmlydHVh
bCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQg
dW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmNwcAppbmRleCA3NTFiYzY1ZjZlZTNlNzRmNTE3MjEwOWYxNThmMDU1YTAwYWVkMDNkLi5h
ZThkMzIwOGJmYmFiOGQ3YWRlOTgyYTdkOGE5M2EyZDgzZWQ3ZGFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC05NCwyOSArOTQsMjkgQEAgYm9vbCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gVGlsZWRMYXllckNo
cm9taXVtOjpkcmF3c0NvbnRlbnQoKSAmJiBtX2RlbGVnYXRlOwogfQogCi12b2lkIENvbnRlbnRM
YXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNr
ZXIqIG9jY2x1c2lvbikKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1
cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikK
IHsKICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpOwogICAgIGNyZWF0ZVRleHR1
cmVVcGRhdGVySWZOZWVkZWQoKTsKIAogICAgIEludFJlY3QgbGF5ZXJSZWN0OwogCi0gICAgLy8g
QWx3YXlzIGNhbGwgcHJlcGFyZVRvVXBkYXRlKCkgYnV0IHdpdGggYW4gZW1wdHkgbGF5ZXIgcmVj
dGFuZ2xlIHdoZW4KKyAgICAvLyBBbHdheXMgY2FsbCB1cGRhdGVMYXllclJlY3QoKSBidXQgd2l0
aCBhbiBlbXB0eSBsYXllciByZWN0YW5nbGUgd2hlbgogICAgIC8vIGxheWVyIGRvZXNuJ3QgZHJh
dyBjb250ZW50cy4KICAgICBpZiAoZHJhd3NDb250ZW50KCkpCiAgICAgICAgIGxheWVyUmVjdCA9
IHZpc2libGVMYXllclJlY3QoKTsKIAotICAgIHByZXBhcmVUb1VwZGF0ZShsYXllclJlY3QsIG9j
Y2x1c2lvbik7CisgICAgdXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGxheWVyUmVjdCwgb2NjbHVz
aW9uKTsKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogfQogCi12b2lkIENvbnRlbnRMYXll
ckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyKiBvY2NsdXNpb24pCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlVXBkYXRlKEND
VGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVz
aW9uKQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGNvbnN0IEludFJlY3QgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOwotICAgIHByZXBh
cmVUb1VwZGF0ZUlkbGUobGF5ZXJSZWN0LCBvY2NsdXNpb24pOworICAgIGlkbGVVcGRhdGVMYXll
clJlY3QodXBkYXRlciwgbGF5ZXJSZWN0LCBvY2NsdXNpb24pOwogICAgIGlmIChuZWVkc0lkbGVQ
YWludChsYXllclJlY3QpKQogICAgICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggZTY5OTRhMjFhZWZhYzIxNDA4ODdlNWJiZDhhYmIy
MDNjOWFiODE3OS4uNDczYjM4MGZhZjM1NTAxOGQ3MWRhYTg3MjdkNGJmNjM1ZGExZWJhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNsZWFyRGVsZWdhdGUoKSB7IG1fZGVsZWdhdGUgPSAwOyB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwotICAgIHZpcnR1YWwgdm9p
ZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNp
b25UcmFja2VyKik7CisgICAgdmlydHVhbCB2b2lkIGlkbGVVcGRhdGUoQ0NUZXh0dXJlVXBkYXRl
ciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE9w
YXF1ZShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMzkzOTE1
OGE4NWI1NzNmYjJkNGI1N2ZlMWE1ZWY2ZjJmYmYwZmYwMS4uZDRhNDMwMTJkNDU2YjkxMDAwZGFm
NzJlMjFjNWJkZWFkYjUzNWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRh
dGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxl
ZFRleGVsRm9ybWF0QkdSQTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
aW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLywgSW50UmVj
dCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5
ZXJSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLywgSW50
UmVjdCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykKICAgICB7CiAgICAgICAgIG1fdGV4U3Vi
SW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CkBAIC0xNTgsNyArMTU4LDcg
QEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnNldENvbnRlbnRzKEltYWdlKiBjb250ZW50cykK
ICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAotdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQor
dm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVy
LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKIHsKICAgICBjcmVhdGVUZXh0
dXJlVXBkYXRlcklmTmVlZGVkKCk7CiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5KSB7CkBAIC0xNjgs
NyArMTY4LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW8KICAgICAgICAgbV9uZWVkc0Rpc3Bs
YXkgPSBmYWxzZTsKICAgICB9CiAKLSAgICBwcmVwYXJlVG9VcGRhdGUodmlzaWJsZUxheWVyUmVj
dCgpLCBvY2NsdXNpb24pOworICAgIHVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCB2aXNpYmxlTGF5
ZXJSZWN0KCksIG9jY2x1c2lvbik7CiB9CiAKIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpjcmVh
dGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKaW5k
ZXggYjAxZWYyOWRhMTNkMGUxMTE1ZTg0MWFjMjBmNGU2MGU4YWMxNjQzZi4uNDk0ODhjZDA4MDQy
MWQ0YzE4Yjk4OWJjNjk0YjcyMGIyMWI5Njc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJv
bWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09j
Y2x1c2lvblRyYWNrZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkg
Y29uc3Q7CiAKICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmgKaW5kZXggZTg3YjA3NGNiMjAxOWE5Mjg0YTNhZDJiZGM0NGM3ZTNkZmJlNTZiYy4uYjEz
MWExYmI2OGFmM2RhOTJkMGJhN2Q4N2E0ODgwNDIzZGM0ZWNkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aApAQCAtMTcxLDkgKzE3MSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgdHlw
aWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBjbGFzc2VzLgogICAgIHZp
cnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2lzRHJhd2FibGU7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyKiAvKiBvY2NsdXNpb24gKi8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRD
b250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiAvKiBvY2NsdXNpb24gKi8p
IHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBpZGxlVXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09jY2x1
c2lvblRyYWNrZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggZjFmMTBlOTdiYTBiNWY5OWM1NGYyMDIyMTExOGYyYTM0YzllMDllYS4u
ZWVkM2VlZGNmYWNkY2ZiZGZmOTEzYTg0NDE2MjhiMGJlNTM0YzFmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwCkBAIC02NCwyNCArNjQsMjQgQEAgcHVibGljOgogICAgIExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0
KCk7IH0KICAgICBNYW5hZ2VkVGV4dHVyZSogbWFuYWdlZFRleHR1cmUoKSB7IHJldHVybiBtX3Rl
eHR1cmUtPnRleHR1cmUoKTsgfQogCi0gICAgYm9vbCBpc0RpcnR5KCkgY29uc3QgeyByZXR1cm4g
IW1fZGlydHlSZWN0LmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaXNEaXJ0eSgpIGNvbnN0IHsgcmV0
dXJuICFkaXJ0eVJlY3QuaXNFbXB0eSgpOyB9CiAgICAgdm9pZCBjb3B5QW5kQ2xlYXJEaXJ0eSgp
CiAgICAgewotICAgICAgICBtX3VwZGF0ZVJlY3QgPSBtX2RpcnR5UmVjdDsKLSAgICAgICAgbV9k
aXJ0eVJlY3QgPSBJbnRSZWN0KCk7CisgICAgICAgIHVwZGF0ZVJlY3QgPSBkaXJ0eVJlY3Q7Cisg
ICAgICAgIGRpcnR5UmVjdCA9IEludFJlY3QoKTsKICAgICB9CiAgICAgLy8gUmV0dXJucyB3aGV0
aGVyIHRoZSBsYXllciB3YXMgZGlydHkgYW5kIG5vdCB1cGRhdGVkIGluIHRoZSBjdXJyZW50IGZy
YW1lLiBGb3IgdGlsZXMgdGhhdCB3ZXJlIG5vdCBjdWxsZWQsIHRoZQogICAgIC8vIHVwZGF0ZVJl
Y3QgaG9sZHMgdGhlIGFyZWEgb2YgdGhlIHRpbGUgdGhhdCB3YXMgdXBkYXRlZC4gT3RoZXJ3aXNl
LCB0aGUgYXJlYSB0aGF0IHdvdWxkIGhhdmUgYmVlbiB1cGRhdGVkLgotICAgIGJvb2wgaXNEaXJ0
eUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuICFtX2RpcnR5UmVjdC5pc0VtcHR5KCkgJiYgKG1f
dXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdXBkYXRlZCk7IH0KKyAgICBib29sIGlzRGlydHlG
b3JDdXJyZW50RnJhbWUoKSB7IHJldHVybiAhZGlydHlSZWN0LmlzRW1wdHkoKSAmJiAodXBkYXRl
UmVjdC5pc0VtcHR5KCkgfHwgIXVwZGF0ZWQpOyB9CiAKLSAgICBJbnRSZWN0IG1fZGlydHlSZWN0
OwotICAgIEludFJlY3QgbV91cGRhdGVSZWN0OwotICAgIGJvb2wgbV9wYXJ0aWFsVXBkYXRlOwot
ICAgIGJvb2wgbV91cGRhdGVkOworICAgIEludFJlY3QgZGlydHlSZWN0OworICAgIEludFJlY3Qg
dXBkYXRlUmVjdDsKKyAgICBib29sIHBhcnRpYWxVcGRhdGU7CisgICAgYm9vbCB1cGRhdGVkOwog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBVcGRhdGFibGVUaWxlKFBhc3NPd25QdHI8TGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZT4gdGV4dHVyZSkKLSAgICAgICAgOiBtX3BhcnRpYWxVcGRhdGUo
ZmFsc2UpCi0gICAgICAgICwgbV91cGRhdGVkKGZhbHNlKQorICAgICAgICA6IHBhcnRpYWxVcGRh
dGUoZmFsc2UpCisgICAgICAgICwgdXBkYXRlZChmYWxzZSkKICAgICAgICAgLCBtX3RleHR1cmUo
dGV4dHVyZSkKICAgICB7CiAgICAgfQpAQCAtOTUsNiArOTUsNyBAQCBUaWxlZExheWVyQ2hyb21p
dW06OlRpbGVkTGF5ZXJDaHJvbWl1bSgpCiAgICAgLCBtX3NraXBzRHJhdyhmYWxzZSkKICAgICAs
IG1fc2tpcHNJZGxlUGFpbnQoZmFsc2UpCiAgICAgLCBtX3NhbXBsZWRUZXhlbEZvcm1hdChMYXll
clRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRJbnZhbGlkKQorICAgICwgbV9kaWRQ
YWludChmYWxzZSkKICAgICAsIG1fdGlsaW5nT3B0aW9uKEF1dG9UaWxlKQogewogICAgIG1fdGls
ZXIgPSBDQ0xheWVyVGlsaW5nRGF0YTo6Y3JlYXRlKEludFNpemUoZGVmYXVsdFRpbGVTaXplLCBk
ZWZhdWx0VGlsZVNpemUpLCBDQ0xheWVyVGlsaW5nRGF0YTo6SGFzQm9yZGVyVGV4ZWxzKTsKQEAg
LTE4Myw2OCArMTg0LDYgQEAgSW50U2l6ZSBUaWxlZExheWVyQ2hyb21pdW06OmNvbnRlbnRCb3Vu
ZHMoKSBjb25zdAogICAgIHJldHVybiBJbnRTaXplKGxyb3VuZGYoYm91bmRzKCkud2lkdGgoKSAq
IGNvbnRlbnRzU2NhbGUoKSksIGxyb3VuZGYoYm91bmRzKCkuaGVpZ2h0KCkgKiBjb250ZW50c1Nj
YWxlKCkpKTsKIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQot
ewotICAgIC8vIFBhaW50aW5nIGNvdWxkIGNhdXNlIGNvbXBvc2l0aW5nIHRvIGdldCB0dXJuZWQg
b2ZmLCB3aGljaCBtYXkgY2F1c2UgdGhlIHRpbGVyIHRvIGJlY29tZSBpbnZhbGlkYXRlZCBtaWQt
dXBkYXRlLgotICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVj
dC5pc0VtcHR5KCkgfHwgbV90aWxlci0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpbnQgbGVmdCA9IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LngoKTsKLSAgICBpbnQgdG9w
ID0gbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QueSgpOwotICAgIGludCByaWdodCA9IG1fcmVx
dWVzdGVkVXBkYXRlVGlsZXNSZWN0Lm1heFgoKSAtIDE7Ci0gICAgaW50IGJvdHRvbSA9IG1fcmVx
dWVzdGVkVXBkYXRlVGlsZXNSZWN0Lm1heFkoKSAtIDE7Ci0gICAgZm9yIChpbnQgaiA9IHRvcDsg
aiA8PSBib3R0b207ICsraikgewotICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdo
dDsgKytpKSB7Ci0gICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGop
OwotCi0gICAgICAgICAgICAvLyBSZXF1aXJlZCB0aWxlcyBhcmUgY3JlYXRlZCBpbiBwcmVwYXJl
VG9VcGRhdGUoKS4gQSB0aWxlIHNob3VsZAotICAgICAgICAgICAgLy8gbmV2ZXIgYmUgcmVtb3Zl
ZCBiZXR3ZWVuIHRoZSBjYWxsIHRvIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB0aGUKLSAgICAgICAg
ICAgIC8vIGNhbGwgdG8gdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpLgotICAgICAgICAgICAg
aWYgKCF0aWxlKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0KLSAgICAgICAgICAgIGlmICgh
dGlsZS0+bV91cGRhdGVkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICBJbnRSZWN0IHNvdXJjZVJlY3QgPSB0aWxlLT5tX3VwZGF0ZVJlY3Q7Ci0gICAgICAgICAgICBp
ZiAodGlsZS0+bV91cGRhdGVSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICAgICAgQVNTRVJUKHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzUmVzZXJ2
ZWQoKSk7Ci0gICAgICAgICAgICBjb25zdCBJbnRQb2ludCBhbmNob3IgPSBtX3RpbGVyLT50aWxl
UmVjdCh0aWxlKS5sb2NhdGlvbigpOwotCi0gICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGlsZS1z
cGFjZSByZWN0YW5nbGUgdG8gdXBsb2FkIGludG8uCi0gICAgICAgICAgICBJbnRSZWN0IGRlc3RS
ZWN0KEludFBvaW50KHNvdXJjZVJlY3QueCgpIC0gYW5jaG9yLngoKSwgc291cmNlUmVjdC55KCkg
LSBhbmNob3IueSgpKSwgc291cmNlUmVjdC5zaXplKCkpOwotICAgICAgICAgICAgaWYgKGRlc3RS
ZWN0LngoKSA8IDApCi0gICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgICAgIGlmIChk
ZXN0UmVjdC55KCkgPCAwKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0KLSAgICAgICAgICAg
IC8vIE9mZnNldCBmcm9tIHBhaW50IHJlY3RhbmdsZSB0byB0aGlzIHRpbGUncyBkaXJ0eSByZWN0
YW5nbGUuCi0gICAgICAgICAgICBJbnRQb2ludCBwYWludE9mZnNldChzb3VyY2VSZWN0LngoKSAt
IG1fcGFpbnRSZWN0LngoKSwgc291cmNlUmVjdC55KCkgLSBtX3BhaW50UmVjdC55KCkpOwotICAg
ICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LngoKSA8IDApCi0gICAgICAgICAgICAgICAgQ1JBU0go
KTsKLSAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgPCAwKQotICAgICAgICAgICAgICAg
IENSQVNIKCk7Ci0gICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueCgpICsgZGVzdFJlY3Qud2lk
dGgoKSA+IG1fcGFpbnRSZWN0LndpZHRoKCkpCi0gICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAg
ICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFp
bnRSZWN0LmhlaWdodCgpKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0KLSAgICAgICAgICAg
IGlmICh0aWxlLT5tX3BhcnRpYWxVcGRhdGUpCi0gICAgICAgICAgICAgICAgdXBkYXRlci5hcHBl
bmRQYXJ0aWFsVXBkYXRlKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kVXBkYXRlKHRp
bGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgLy8gVGhlIHVwZGF0ZVJlY3Qgc2hvdWxkIGJlIGluIGxheWVyIHNwYWNlLiBTbyB3ZSBo
YXZlIHRvIGNvbnZlcnQgdGhlIHBhaW50UmVjdCBmcm9tIGNvbnRlbnQgc3BhY2UgdG8gbGF5ZXIg
c3BhY2UuCi0gICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KG1fcGFpbnRSZWN0KTsKLSAgICBm
bG9hdCB3aWR0aFNjYWxlID0gYm91bmRzKCkud2lkdGgoKSAvIHN0YXRpY19jYXN0PGZsb2F0Pihj
b250ZW50Qm91bmRzKCkud2lkdGgoKSk7Ci0gICAgZmxvYXQgaGVpZ2h0U2NhbGUgPSBib3VuZHMo
KS5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkp
OwotICAgIG1fdXBkYXRlUmVjdC5zY2FsZSh3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSk7Ci19Ci0K
IHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uIHRp
bGluZ09wdGlvbikKIHsKICAgICBtX3RpbGluZ09wdGlvbiA9IHRpbGluZ09wdGlvbjsKQEAgLTMx
Miw3ICsyNTEsNyBAQCBVcGRhdGFibGVUaWxlKiBUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZVRp
bGUoaW50IGksIGludCBqKQogICAgIFVwZGF0YWJsZVRpbGUqIGFkZGVkVGlsZSA9IHRpbGUuZ2V0
KCk7CiAgICAgbV90aWxlci0+YWRkVGlsZSh0aWxlLnJlbGVhc2UoKSwgaSwgaik7CiAKLSAgICBh
ZGRlZFRpbGUtPm1fZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3QoYWRkZWRUaWxlKTsKKyAg
ICBhZGRlZFRpbGUtPmRpcnR5UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KGFkZGVkVGlsZSk7CiAg
ICAgcmV0dXJuIGFkZGVkVGlsZTsKIH0KIApAQCAtMzUwLDcgKzI4OSw3IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAg
ICAgICAgIEFTU0VSVCh0aWxlKTsKICAgICAgICAgSW50UmVjdCBib3VuZCA9IG1fdGlsZXItPnRp
bGVSZWN0KHRpbGUpOwogICAgICAgICBib3VuZC5pbnRlcnNlY3QobGF5ZXJSZWN0KTsKLSAgICAg
ICAgdGlsZS0+bV9kaXJ0eVJlY3QudW5pdGUoYm91bmQpOworICAgICAgICB0aWxlLT5kaXJ0eVJl
Y3QudW5pdGUoYm91bmQpOwogICAgIH0KIH0KIApAQCAtMzg3LDcgKzMyNiw3IEBAIGJvb2wgVGls
ZWRMYXllckNocm9taXVtOjp0aWxlT25seU5lZWRzUGFydGlhbFVwZGF0ZShVcGRhdGFibGVUaWxl
KiB0aWxlKQogICAgIGlmICghdGlsZS0+aXNEaXJ0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gIXRpbGUtPm1fZGlydHlSZWN0LmNvbnRhaW5zKG1fdGlsZXItPnRpbGVS
ZWN0KHRpbGUpKTsKKyAgICByZXR1cm4gIXRpbGUtPmRpcnR5UmVjdC5jb250YWlucyhtX3RpbGVy
LT50aWxlUmVjdCh0aWxlKSk7CiB9CiAKIC8vIERpcnR5IHRpbGVzIHdpdGggdmFsaWQgdGV4dHVy
ZXMgbmVlZHMgYnVmZmVyZWQgdXBkYXRlIHRvIGd1YXJhbnRlZSB0aGF0CkBAIC00MDcsMTUgKzM0
NiwxNSBAQCBib29sIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dGlsZU5lZWRzQnVmZmVyZWRVcGRhdGUo
VXBkYXRhYmxlVGlsZSogdGlsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGlu
dCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBv
Y2NsdXNpb24pCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZXMoYm9vbCBpZGxl
LCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBDQ1RleHR1cmVVcGRh
dGVyJiB1cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKIHsKICAg
ICBjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCk7CiAKICAgICAvLyBDcmVhdGUgdGlsZXMg
YXMgbmVlZGVkLCBleHBhbmRpbmcgYSBkaXJ0eSByZWN0IHRvIGNvbnRhaW4gYWxsCiAgICAgLy8g
dGhlIGRpcnR5IHJlZ2lvbnMgY3VycmVudGx5IGJlaW5nIGRyYXduLiBBbGwgZGlydHkgdGlsZXMg
dGhhdCBhcmUgdG8gYmUgcGFpbnRlZAotICAgIC8vIGdldCB0aGVpciBtX3VwZGF0ZVJlY3Qgc2V0
IHRvIG1fZGlydHlSZWN0IGFuZCBtX2RpcnR5UmVjdCBjbGVhcmVkLiBUaGlzIHdheSBpZgotICAg
IC8vIGludmFsaWRhdGVSZWN0IGlzIGludm9rZWQgZHVyaW5nIHByZXBhcmVUb1VwZGF0ZSB3ZSBk
b24ndCBsb3NlIHRoZSByZXF1ZXN0LgotICAgIEludFJlY3QgZGlydHlMYXllclJlY3Q7CisgICAg
Ly8gZ2V0IHRoZWlyIHVwZGF0ZVJlY3Qgc2V0IHRvIGRpcnR5UmVjdCBhbmQgZGlydHlSZWN0IGNs
ZWFyZWQuIFRoaXMgd2F5IGlmCisgICAgLy8gaW52YWxpZGF0ZVJlY3QgaXMgaW52b2tlZCBkdXJp
bmcgdXBkYXRlTGF5ZXJSZWN0IHdlIGRvbid0IGxvc2UgdGhlIHJlcXVlc3QuCisgICAgSW50UmVj
dCBwYWludFJlY3Q7CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewog
ICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAgICAg
ICBVcGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwpAQCAtNDI0LDcgKzM2Myw3IEBA
IHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUs
IGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKIAogICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2Vk
VGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkp
IHsKICAgICAgICAgICAgICAgICAvLyBTZXRzIHRoZSBkaXJ0eSByZWN0IHRvIGEgZnVsbC1zaXpl
ZCB0aWxlIHdpdGggYm9yZGVyIHRleGVscy4KLSAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5
UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAgICAgIHRpbGUtPmRp
cnR5UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAvLyBXaGVuIG5vdCBpZGxlIHBhaW50aW5nLCBpZiB0aGUgdmlzaWJsZSByZWdpb24g
b2YgdGhlIHRpbGUgaXMgb2NjbHVkZWQsIGRvbid0IHJlc2VydmUgYSB0ZXh0dXJlIG9yIHVwZGF0
ZSB0aGUgdGlsZS4KQEAgLTQzMiwyMyArMzcxLDIzIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQK
ICAgICAgICAgICAgIGlmICghaWRsZSAmJiBvY2NsdXNpb24pIHsKICAgICAgICAgICAgICAgICBJ
bnRSZWN0IHZpc2libGVUaWxlUmVjdCA9IGludGVyc2VjdGlvbihtX3RpbGVyLT50aWxlQm91bmRz
KGksIGopLCB2aXNpYmxlTGF5ZXJSZWN0KCkpOwogICAgICAgICAgICAgICAgIGlmIChvY2NsdXNp
b24tPm9jY2x1ZGVkKHRoaXMsIHZpc2libGVUaWxlUmVjdCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKCF0aWxlLT5tX3VwZGF0ZWQpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
IXRpbGUtPnVwZGF0ZWQpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIFdlIGNvbWUgdGhyb3Vn
aCB0aGlzIGZ1bmN0aW9uIG11bHRpcGxlIHRpbWVzIGR1cmluZyBhIGNvbW1pdCwgYW5kIG1fdXBk
YXRlZCBzaG91bGQgYmUgdHJ1ZSBpZiB0aGUgdGlsZSBpcyBub3QgY3VsbGVkCisgICAgICAgICAg
ICAvLyBXZSBjb21lIHRocm91Z2ggdGhpcyBmdW5jdGlvbiBtdWx0aXBsZSB0aW1lcyBkdXJpbmcg
YSBjb21taXQsIGFuZCB1cGRhdGVkIHNob3VsZCBiZSB0cnVlIGlmIHRoZSB0aWxlIGlzIG5vdCBj
dWxsZWQKICAgICAgICAgICAgIC8vIGFueSBzaW5nbGUgdGltZSB0aHJvdWdoIHRoZSBmdW5jdGlv
bi4KLSAgICAgICAgICAgIHRpbGUtPm1fdXBkYXRlZCA9IHRydWU7CisgICAgICAgICAgICB0aWxl
LT51cGRhdGVkID0gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gRklYTUU6IERlY2lkZSBpZiBwYXJ0
aWFsIHVwZGF0ZSBzaG91bGQgYmUgYWxsb3dlZCBiYXNlZCBvbiBjb3N0CiAgICAgICAgICAgICAv
LyBvZiB1cGRhdGUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzM3
NgogICAgICAgICAgICAgaWYgKHRpbGVPbmx5TmVlZHNQYXJ0aWFsVXBkYXRlKHRpbGUpICYmIGxh
eWVyVHJlZUhvc3QoKSAmJiBsYXllclRyZWVIb3N0KCktPnJlcXVlc3RQYXJ0aWFsVGV4dHVyZVVw
ZGF0ZSgpKQotICAgICAgICAgICAgICAgIHRpbGUtPm1fcGFydGlhbFVwZGF0ZSA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgdGlsZS0+cGFydGlhbFVwZGF0ZSA9IHRydWU7CiAgICAgICAgICAgICBl
bHNlIGlmICh0aWxlTmVlZHNCdWZmZXJlZFVwZGF0ZSh0aWxlKSAmJiBsYXllclRyZWVIb3N0KCkp
IHsKICAgICAgICAgICAgICAgICBsYXllclRyZWVIb3N0KCktPmRlbGV0ZVRleHR1cmVBZnRlckNv
bW1pdCh0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5zdGVhbCgpKTsKICAgICAgICAgICAgICAgICAv
LyBTZXRzIHRoZSBkaXJ0eSByZWN0IHRvIGEgZnVsbC1zaXplZCB0aWxlIHdpdGggYm9yZGVyIHRl
eGVscy4KLSAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5UmVjdCA9IG1fdGlsZXItPnRpbGVS
ZWN0KHRpbGUpOworICAgICAgICAgICAgICAgIHRpbGUtPmRpcnR5UmVjdCA9IG1fdGlsZXItPnRp
bGVSZWN0KHRpbGUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIXRpbGUtPm1h
bmFnZWRUZXh0dXJlKCktPnJlc2VydmUobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9y
bWF0KSkgewpAQCAtNDU5LDEzICszOTgsMTEgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAg
ICAgICAgICAgICAgICAgICBpZiAoIWJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICBtX3RpbGVyLT5yZXNldCgpOwotICAgICAgICAgICAgICAgICAgICBtX3BhaW50UmVjdCA9IElu
dFJlY3QoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3Qg
PSBJbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZGlydHlMYXllclJlY3QudW5pdGUodGlsZS0+
bV9kaXJ0eVJlY3QpOworICAgICAgICAgICAgcGFpbnRSZWN0LnVuaXRlKHRpbGUtPmRpcnR5UmVj
dCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3NCwyNCArNDExLDI0IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBp
bnQgdG9wLCBpbnQKICAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAg
ICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAg
IFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7Ci0gICAgICAgICAgICBpZiAodGls
ZS0+bV91cGRhdGVkKQorICAgICAgICAgICAgaWYgKHRpbGUtPnVwZGF0ZWQpCiAgICAgICAgICAg
ICAgICAgdGlsZS0+Y29weUFuZENsZWFyRGlydHkoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFp
ZGxlICYmIG9jY2x1c2lvbiAmJiB0aWxlLT5pc0RpcnR5KCkpCiAgICAgICAgICAgICAgICAgb2Nj
bHVzaW9uLT5vdmVyZHJhd01ldHJpY3MoKS5kaWRDdWxsVGlsZUZvclVwbG9hZCgpOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgbV9wYWludFJlY3QgPSBkaXJ0eUxheWVyUmVjdDsKLSAgICBpZiAo
ZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChwYWludFJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAob2NjbHVzaW9uKQotICAgICAgICBvY2NsdXNpb24t
Pm92ZXJkcmF3TWV0cmljcygpLmRpZFBhaW50KG1fcGFpbnRSZWN0KTsKKyAgICAgICAgb2NjbHVz
aW9uLT5vdmVyZHJhd01ldHJpY3MoKS5kaWRQYWludChwYWludFJlY3QpOwogCi0gICAgLy8gRHVl
IHRvIGJvcmRlcnMsIHdoZW4gdGhlIHBhaW50IHJlY3QgaXMgZXh0ZW5kZWQgdG8gdGlsZSBib3Vu
ZGFyaWVzLCBpdAotICAgIC8vIG1heSBlbmQgdXAgb3ZlcmxhcHBpbmcgbW9yZSB0aWxlcyB0aGFu
IHRoZSBvcmlnaW5hbCBjb250ZW50IHJlY3QuIFJlY29yZAotICAgIC8vIHRoZSBvcmlnaW5hbCB0
aWxlcyBzbyB3ZSBkb24ndCB1cGxvYWQgbW9yZSB0aWxlcyB0aGFuIG5lY2Vzc2FyeS4KLSAgICBt
X3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QobGVmdCwgdG9wLCByaWdodCAtIGxl
ZnQgKyAxLCBib3R0b20gLSB0b3AgKyAxKTsKKyAgICAvLyBUaGUgdXBkYXRlUmVjdCBzaG91bGQg
YmUgaW4gbGF5ZXIgc3BhY2UuIFNvIHdlIGhhdmUgdG8gY29udmVydCB0aGUgcGFpbnRSZWN0IGZy
b20gY29udGVudCBzcGFjZSB0byBsYXllciBzcGFjZS4KKyAgICBtX3VwZGF0ZVJlY3QgPSBGbG9h
dFJlY3QocGFpbnRSZWN0KTsKKyAgICBmbG9hdCB3aWR0aFNjYWxlID0gYm91bmRzKCkud2lkdGgo
KSAvIHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkud2lkdGgoKSk7CisgICAgZmxv
YXQgaGVpZ2h0U2NhbGUgPSBib3VuZHMoKS5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGZsb2F0Pihj
b250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpOworICAgIG1fdXBkYXRlUmVjdC5zY2FsZSh3aWR0aFNj
YWxlLCBoZWlnaHRTY2FsZSk7CiAKICAgICAvLyBDYWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNh
bGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQogICAgIC8v
IGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJl
bmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KQEAgLTQ5OSwyOCArNDM2
LDI2IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29s
IGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwg
cmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQg
Y29tcGxldGVzLgogICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4
dHVyZVVwZGF0ZXIoKSk7CiAgICAgSW50UmVjdCBwYWludGVkT3BhcXVlUmVjdDsKLSAgICB0ZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVT
aXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZwYWlu
dGVkT3BhcXVlUmVjdCk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKHBh
aW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCks
IGNvbnRlbnRzU2NhbGUoKSwgJnBhaW50ZWRPcGFxdWVSZWN0KTsKKyAgICBtX2RpZFBhaW50ID0g
dHJ1ZTsKKwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAg
ICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBk
YXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKIAotICAgICAgICAgICAgLy8gVGlsZXMg
YXJlIGNyZWF0ZWQgYmVmb3JlIHByZXBhcmVUb1VwZGF0ZSgpIGlzIGNhbGxlZC4KLSAgICAgICAg
ICAgIGlmICghdGlsZSkKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotCiAgICAgICAgICAgICBJ
bnRSZWN0IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKIAotICAgICAgICAg
ICAgaWYgKCF0aWxlLT5tX3VwZGF0ZWQpCisgICAgICAgICAgICBpZiAoIXRpbGUtPnVwZGF0ZWQp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0
ZVJlY3QgYXMgdGhlIGFib3ZlIGxvb3AgY29waWVkIHRoZSBkaXJ0eSByZWN0IGZvciB0aGlzIGZy
YW1lIHRvIG1fdXBkYXRlUmVjdC4KLSAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCA9IHRpbGUtPm1fdXBkYXRlUmVjdDsKKyAgICAgICAgICAgIC8vIFVzZSB1cGRhdGVSZWN0IGFz
IHRoZSBhYm92ZSBsb29wIGNvcGllZCB0aGUgZGlydHkgcmVjdCBmb3IgdGhpcyBmcmFtZSB0byB1
cGRhdGVSZWN0LgorICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0ID0gdGlsZS0+
dXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvLyBTYXZlIHdoYXQgd2FzIHBhaW50
ZWQgb3BhcXVlIGluIHRoZSB0aWxlLiBLZWVwIHRoZSBvbGQgYXJlYSBpZiB0aGUgcGFpbnQgZGlk
bid0IHRvdWNoIGl0LCBhbmQgZGlkbid0IHBhaW50IHNvbWUKICAgICAgICAgICAgIC8vIG90aGVy
IHBhcnQgb2YgdGhlIHRpbGUgb3BhcXVlLgotICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRl
ZFJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIG1fcGFpbnRSZWN0KTsKKyAgICAgICAgICAg
IEludFJlY3QgdGlsZVBhaW50ZWRSZWN0ID0gaW50ZXJzZWN0aW9uKHRpbGVSZWN0LCBwYWludFJl
Y3QpOwogICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgPSBpbnRlcnNl
Y3Rpb24odGlsZVJlY3QsIHBhaW50ZWRPcGFxdWVSZWN0KTsKICAgICAgICAgICAgIGlmICghdGls
ZVBhaW50ZWRSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIEludFJlY3QgcGFpbnRJ
bnNpZGVUaWxlT3BhcXVlUmVjdCA9IGludGVyc2VjdGlvbih0aWxlLT5vcGFxdWVSZWN0KCksIHRp
bGVQYWludGVkUmVjdCk7CkBAIC01MzYsMTUgKzQ3MSw0MSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwg
aW50CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2VjdChkaXJ0eVJlY3QpOwogICAgICAg
ICAgICAgLy8gUGFpbnQgcmVjdCBub3QgZ3VhcmFudGVlZCB0byBsaW5lIHVwIG9uIHRpbGUgYm91
bmRhcmllcywgc28KICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHNvdXJjZVJlY3QgZG9l
c24ndCBleHRlbmQgb3V0c2lkZSBvZiBpdC4KLSAgICAgICAgICAgIHNvdXJjZVJlY3QuaW50ZXJz
ZWN0KG1fcGFpbnRSZWN0KTsKKyAgICAgICAgICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KHBhaW50
UmVjdCk7CisKKyAgICAgICAgICAgIHRpbGUtPnVwZGF0ZVJlY3QgPSBzb3VyY2VSZWN0OwogCi0g
ICAgICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBzb3VyY2VSZWN0OwogICAgICAgICAgICAg
aWYgKHNvdXJjZVJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnByZXBhcmVSZWN0KHNvdXJjZVJlY3QpOwogICAg
ICAgICAgICAgaWYgKG9jY2x1c2lvbikKICAgICAgICAgICAgICAgICBvY2NsdXNpb24tPm92ZXJk
cmF3TWV0cmljcygpLmRpZFVwbG9hZChUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBzb3VyY2VSZWN0
LCB0aWxlLT5vcGFxdWVSZWN0KCkpOworCisgICAgICAgICAgICBjb25zdCBJbnRQb2ludCBhbmNo
b3IgPSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKS5sb2NhdGlvbigpOworCisgICAgICAgICAgICAv
LyBDYWxjdWxhdGUgdGlsZS1zcGFjZSByZWN0YW5nbGUgdG8gdXBsb2FkIGludG8uCisgICAgICAg
ICAgICBJbnRSZWN0IGRlc3RSZWN0KEludFBvaW50KHNvdXJjZVJlY3QueCgpIC0gYW5jaG9yLngo
KSwgc291cmNlUmVjdC55KCkgLSBhbmNob3IueSgpKSwgc291cmNlUmVjdC5zaXplKCkpOworICAg
ICAgICAgICAgaWYgKGRlc3RSZWN0LngoKSA8IDApCisgICAgICAgICAgICAgICAgQ1JBU0goKTsK
KyAgICAgICAgICAgIGlmIChkZXN0UmVjdC55KCkgPCAwKQorICAgICAgICAgICAgICAgIENSQVNI
KCk7CisKKyAgICAgICAgICAgIC8vIE9mZnNldCBmcm9tIHBhaW50IHJlY3RhbmdsZSB0byB0aGlz
IHRpbGUncyBkaXJ0eSByZWN0YW5nbGUuCisgICAgICAgICAgICBJbnRQb2ludCBwYWludE9mZnNl
dChzb3VyY2VSZWN0LngoKSAtIHBhaW50UmVjdC54KCksIHNvdXJjZVJlY3QueSgpIC0gcGFpbnRS
ZWN0LnkoKSk7CisgICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueCgpIDwgMCkKKyAgICAgICAg
ICAgICAgICBDUkFTSCgpOworICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSA8IDApCisg
ICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIGlmIChwYWludE9mZnNldC54KCkg
KyBkZXN0UmVjdC53aWR0aCgpID4gcGFpbnRSZWN0LndpZHRoKCkpCisgICAgICAgICAgICAgICAg
Q1JBU0goKTsKKyAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWln
aHQoKSA+IHBhaW50UmVjdC5oZWlnaHQoKSkKKyAgICAgICAgICAgICAgICBDUkFTSCgpOworCisg
ICAgICAgICAgICBpZiAodGlsZS0+cGFydGlhbFVwZGF0ZSkKKyAgICAgICAgICAgICAgICB1cGRh
dGVyLmFwcGVuZFBhcnRpYWxVcGRhdGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdXBkYXRlci5hcHBlbmRV
cGRhdGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0K
ICAgICB9CiB9CkBAIC01NjgsNyArNTI5LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnJl
c2VydmVUZXh0dXJlcygpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNyZWF0ZVRpbGUoaSwgaik7
CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3Rp
bGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQotICAgICAgICAgICAgICAgIHRpbGUt
Pm1fZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CisgICAgICAgICAgICAgICAg
dGlsZS0+ZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSk7CiAKICAgICAgICAgICAg
IGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+cmVzZXJ2ZShtX3RpbGVyLT50aWxlU2l6ZSgp
LCBtX3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU4NiwyMiAr
NTQ3LDIwIEBAIFJlZ2lvbiBUaWxlZExheWVyQ2hyb21pdW06OnZpc2libGVDb250ZW50T3BhcXVl
UmVnaW9uKCkgY29uc3QKIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnJlc2V0VXBkYXRlU3Rh
dGUoKQogewotICAgIC8vIFJlc2V0IG1fdXBkYXRlUmVjdCBmb3IgYWxsIHRpbGVzLgogICAgIEND
TGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3RpbGVyLT50
aWxlcygpLmVuZCgpOwogICAgIGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBtX3RpbGVyLT50aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIpIHsKICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0
YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwotICAgICAgICB0aWxlLT5tX3VwZGF0ZVJl
Y3QgPSBJbnRSZWN0KCk7Ci0gICAgICAgIHRpbGUtPm1fcGFydGlhbFVwZGF0ZSA9IGZhbHNlOwot
ICAgICAgICB0aWxlLT5tX3VwZGF0ZWQgPSBmYWxzZTsKKyAgICAgICAgdGlsZS0+dXBkYXRlUmVj
dCA9IEludFJlY3QoKTsKKyAgICAgICAgdGlsZS0+cGFydGlhbFVwZGF0ZSA9IGZhbHNlOworICAg
ICAgICB0aWxlLT51cGRhdGVkID0gZmFsc2U7CiAgICAgfQogfQogCi12b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlTGF5ZXJSZWN0KENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAg
bV9za2lwc0RyYXcgPSBmYWxzZTsKICAgICBtX3NraXBzSWRsZVBhaW50ID0gZmFsc2U7Ci0gICAg
bV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QgPSBJbnRSZWN0KCk7Ci0gICAgbV9wYWludFJlY3Qg
PSBJbnRSZWN0KCk7CisgICAgbV9kaWRQYWludCA9IGZhbHNlOwogCiAgICAgdXBkYXRlQm91bmRz
KCk7CiAKQEAgLTYxMywxMyArNTcyLDEzIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBDQ09jY2x1CiAgICAg
aW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBtX3RpbGVyLT5sYXllclJlY3RUb1Rp
bGVJbmRpY2VzKGxheWVyUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKIAotICAgIHBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20sIG9jY2x1
c2lvbik7CisgICAgdXBkYXRlVGlsZXMoZmFsc2UsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwg
dXBkYXRlciwgb2NjbHVzaW9uKTsKIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBDQ09jY2x1c2lv
blRyYWNrZXIqIG9jY2x1c2lvbikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjppZGxlVXBkYXRl
TGF5ZXJSZWN0KENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7Ci0gICAgLy8gQWJv
cnQgaWYgd2UgaGF2ZSBhbHJlYWR5IHByZXBhcmVkIGEgcGFpbnQgb3IgcnVuIG91dCBvZiBtZW1v
cnkuCi0gICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQgfHwgIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSkK
KyAgICAvLyBBYm9ydCBpZiB3ZSBoYXZlIGFscmVhZHkgcGFpbnRlZCBvciBydW4gb3V0IG9mIG1l
bW9yeS4KKyAgICBpZiAobV9za2lwc0lkbGVQYWludCB8fCBtX2RpZFBhaW50KQogICAgICAgICBy
ZXR1cm47CiAKICAgICBBU1NFUlQobV90aWxlcik7CkBAIC02NDMsMTcgKzYwMiwxNiBAQCB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBs
YXllclJlY3QsIGNvbnN0IENDTwogCiAgICAgLy8gSWYgdGhlIGxheWVyIGlzIG5vdCB2aXNpYmxl
LCB3ZSBoYXZlIG5vdGhpbmcgdG8gZXhwYW5kIGZyb20sIHNvIGluc3RlYWQgd2UgcHJlcGFpbnQg
dGhlIG91dGVyLW1vc3Qgc2V0IG9mIHRpbGVzLgogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHByZXBhaW50TGVmdCwgcHJl
cGFpbnRUb3AsIHByZXBhaW50UmlnaHQsIHByZXBhaW50VG9wLCAwKTsKLSAgICAgICAgaWYgKCFt
X3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKKyAgICAgICAgdXBkYXRl
VGlsZXModHJ1ZSwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRSaWdodCwgcHJl
cGFpbnRUb3AsIHVwZGF0ZXIsIDApOworICAgICAgICBpZiAobV9kaWRQYWludCB8fCBtX3NraXBz
SWRsZVBhaW50KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBwcmVwYXJlVG9VcGRhdGVU
aWxlcyh0cnVlLCBwcmVwYWludExlZnQsIHByZXBhaW50Qm90dG9tLCBwcmVwYWludFJpZ2h0LCBw
cmVwYWludEJvdHRvbSwgMCk7Ci0gICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8
IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgIHVwZGF0ZVRpbGVzKHRydWUsIHByZXBhaW50TGVm
dCwgcHJlcGFpbnRCb3R0b20sIHByZXBhaW50UmlnaHQsIHByZXBhaW50Qm90dG9tLCB1cGRhdGVy
LCAwKTsKKyAgICAgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgcHJlcGFp
bnRMZWZ0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludEJvdHRvbSwgMCk7Ci0g
ICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisg
ICAgICAgIHVwZGF0ZVRpbGVzKHRydWUsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3AsIHByZXBh
aW50TGVmdCwgcHJlcGFpbnRCb3R0b20sIHVwZGF0ZXIsIDApOworICAgICAgICBpZiAobV9kaWRQ
YWludCB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBw
cmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludFJpZ2h0LCBwcmVwYWludFRvcCwgcHJl
cGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b20sIDApOwotCisgICAgICAgIHVwZGF0ZVRpbGVzKHRy
dWUsIHByZXBhaW50UmlnaHQsIHByZXBhaW50VG9wLCBwcmVwYWludFJpZ2h0LCBwcmVwYWludEJv
dHRvbSwgdXBkYXRlciwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY2MSwzNCAr
NjE5LDM0IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPCiAgICAgbV90aWxlci0+bGF5ZXJSZWN0
VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAKICAg
ICAvLyBPdGhlcndpc2UsIHByZXBhaW50IGFueXRoaW5nIHRoYXQgd2FzIG9jY2x1ZGVkIGJ1dCBp
bnNpZGUgdGhlIGxheWVyJ3MgdmlzaWJsZSByZWdpb24uCi0gICAgcHJlcGFyZVRvVXBkYXRlVGls
ZXModHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCAwKTsKLSAgICBpZiAoIW1fcGFpbnRS
ZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQorICAgIHVwZGF0ZVRpbGVzKHRydWUs
IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgdXBkYXRlciwgMCk7CisgICAgaWYgKG1fZGlkUGFp
bnQgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlbiBl
eHBhbmQgb3V0d2FyZHMgZnJvbSB0aGUgdmlzaWJsZSBhcmVhIHVudGlsIHdlIGZpbmQgYSBkaXJ0
eSByb3cgb3IgY29sdW1uIHRvIHVwZGF0ZS4KICAgICB3aGlsZSAoIW1fc2tpcHNJZGxlUGFpbnQg
JiYgKGxlZnQgPiBwcmVwYWludExlZnQgfHwgdG9wID4gcHJlcGFpbnRUb3AgfHwgcmlnaHQgPCBw
cmVwYWludFJpZ2h0IHx8IGJvdHRvbSA8IHByZXBhaW50Qm90dG9tKSkgewogICAgICAgICBpZiAo
Ym90dG9tIDwgcHJlcGFpbnRCb3R0b20pIHsKICAgICAgICAgICAgICsrYm90dG9tOwotICAgICAg
ICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdodCwgYm90
dG9tLCAwKTsKLSAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tp
cHNJZGxlUGFpbnQpCisgICAgICAgICAgICB1cGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCBib3R0b20s
IHJpZ2h0LCBib3R0b20sIHVwZGF0ZXIsIDApOworICAgICAgICAgICAgaWYgKG1fZGlkUGFpbnQg
fHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBpZiAodG9wID4gcHJlcGFpbnRUb3ApIHsKICAgICAgICAgICAgIC0tdG9wOwotICAg
ICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgdG9w
LCAwKTsKLSAgICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJ
ZGxlUGFpbnQpCisgICAgICAgICAgICB1cGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0
LCB0b3AsIHVwZGF0ZXIsIDApOworICAgICAgICAgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9za2lw
c0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBp
ZiAobGVmdCA+IHByZXBhaW50TGVmdCkgewogICAgICAgICAgICAgLS1sZWZ0OwotICAgICAgICAg
ICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20sIDAp
OwotICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQ
YWludCkKKyAgICAgICAgICAgIHVwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90
dG9tLCB1cGRhdGVyLCAwKTsKKyAgICAgICAgICAgIGlmIChtX2RpZFBhaW50IHx8IG1fc2tpcHNJ
ZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KHJpZ2h0IDwgcHJlcGFpbnRSaWdodCkgewogICAgICAgICAgICAgKytyaWdodDsKLSAgICAgICAg
ICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHJpZ2h0LCB0b3AsIHJpZ2h0LCBib3R0b20s
IDApOwotICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lk
bGVQYWludCkKKyAgICAgICAgICAgIHVwZGF0ZVRpbGVzKHRydWUsIHJpZ2h0LCB0b3AsIHJpZ2h0
LCBib3R0b20sIHVwZGF0ZXIsIDApOworICAgICAgICAgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9z
a2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0K
QEAgLTcxMyw4ICs2NzEsNiBAQCBib29sIFRpbGVkTGF5ZXJDaHJvbWl1bTo6bmVlZHNJZGxlUGFp
bnQoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgICAgICAgICAgLy8gSWYgdGhlIGxheWVy
UmVjdCBpcyBlbXB0eSwgdGhlbiB3ZSBhcmUgcGFpbnRpbmcgdGhlIG91dGVyLW1vc3Qgc2V0IG9m
IHRpbGVzIG9ubHkuCiAgICAgICAgICAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSAmJiBpICE9
IGxlZnQgJiYgaSAhPSByaWdodCAmJiBqICE9IHRvcCAmJiBqICE9IGJvdHRvbSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChtX3JlcXVlc3RlZFVwZGF0ZVRpbGVz
UmVjdC5jb250YWlucyhJbnRQb2ludChpLCBqKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwogICAgICAg
ICAgICAgaWYgKCF0aWxlIHx8ICF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGls
ZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkgfHwgdGlsZS0+aXNEaXJ0eSgpKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRl
eCA4MWVlMjQ4YTc2OGZmOTlkZjg2Y2VjMGYxOGM0YTMwYmMwYWNjN2RjLi42MDYwODkzZWNiM2Qy
OGQxNTg3MWNjMDZiOGQzMTM3NWUxZTllZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aApAQCAtNDIsNyArNDIsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UaWxlZExheWVyQ2hy
b21pdW0oKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJc01hc2soYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCopOwpAQCAtODksMTAgKzg4LDEwIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJlc2V0
VXBkYXRlU3RhdGUoKTsKIAogICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRl
eHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0LgotICAgIHZvaWQgcHJlcGFyZVRv
VXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
Kik7CisgICAgdm9pZCB1cGRhdGVMYXllclJlY3QoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IElu
dFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CiAKICAgICAvLyBT
YW1lIGFzIGFib3ZlLCBidXQgdGhpcyB3aWxsIHRyeSB0byBwYWludCBhZGRpdGlvbmFsIHN1cnJv
dW5kaW5nIGNvbnRlbnQgaWYgaWRsZS4KLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZUlkbGUoY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKKyAgICB2
b2lkIGlkbGVVcGRhdGVMYXllclJlY3QoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CiAKICAgICAvLyBBZnRlciBw
cmVwYXJpbmcgYW4gdXBkYXRlLCByZXR1cm5zIHRydWUgaWYgbW9yZSBwcmUtcGFpbnRpbmcgaXMg
bmVlZGVkLgogICAgIGJvb2wgbmVlZHNJZGxlUGFpbnQoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
KTsKQEAgLTExNCwyMyArMTEzLDE5IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0aWxlT25seU5lZWRz
UGFydGlhbFVwZGF0ZShVcGRhdGFibGVUaWxlKik7CiAgICAgYm9vbCB0aWxlTmVlZHNCdWZmZXJl
ZFVwZGF0ZShVcGRhdGFibGVUaWxlKik7CiAKLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZVRpbGVz
KGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgY29u
c3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CisgICAgdm9pZCB1cGRhdGVUaWxlcyhib29sIGlkbGUs
IGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20sIENDVGV4dHVyZVVwZGF0
ZXImLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKIAogICAgIFVwZGF0YWJsZVRpbGUqIHRp
bGVBdChpbnQsIGludCkgY29uc3Q7CiAgICAgVXBkYXRhYmxlVGlsZSogY3JlYXRlVGlsZShpbnQs
IGludCk7CiAKLSAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1Vw
ZGF0ZSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkuCi0gICAgSW50UmVjdCBtX3Jl
cXVlc3RlZFVwZGF0ZVRpbGVzUmVjdDsKLQotICAgIC8vIFN0YXRlIGhlbGQgYmV0d2VlbiBwcmVw
YXJlVG9VcGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlzIHJlcHJlc2VudHMgdGhl
IGFyZWEKLSAgICAvLyBvZiB0aGUgbGF5ZXIgdGhhdCBpcyBhY3R1YWxseSByZS1wYWludGVkIGJ5
IFdlYktpdC4KLSAgICBJbnRSZWN0IG1fcGFpbnRSZWN0OwotCiAgICAgR0MzRGVudW0gbV90ZXh0
dXJlRm9ybWF0OwogICAgIGJvb2wgbV9za2lwc0RyYXc7CiAgICAgYm9vbCBtX3NraXBzSWRsZVBh
aW50OwogICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBtX3NhbXBs
ZWRUZXhlbEZvcm1hdDsKIAorICAgIC8vIFRyYWNrcyBpZiB3ZSd2ZSBkb25lIGFueSBwYWludGlu
ZyBvbiB0aGlzIHVwZGF0ZSBjeWNsZS4KKyAgICBib29sIG1fZGlkUGFpbnQ7CisKICAgICBUaWxp
bmdPcHRpb24gbV90aWxpbmdPcHRpb247CiAgICAgT3duUHRyPENDTGF5ZXJUaWxpbmdEYXRhPiBt
X3RpbGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDg3ZDAxNjg4
NjZjMGE0NjNmYTJlM2I2NWUxNTQ5OWI0N2RmMjVlNzcuLmYzZjY1NTYwYjJmMmVmYzI3Yzg4Y2Q1
Y2JlMmUzM2E0N2U3ZjgxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAt
NzEsNyArNzEsNyBAQCBib29sIFdlYkdMTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29u
c3QKICAgICByZXR1cm4gTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgJiYgIW1fY29udGV4
dExvc3Q7CiB9CiAKLXZvaWQgV2ViR0xMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0
eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9jY2x1c2lvbiAqLykKK3ZvaWQgV2ViR0xM
YXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKikKIHsKICAgICBpZiAoIWRyYXdzQ29udGVudCgpIHx8ICFtX25lZWRz
RGlzcGxheSkKICAgICAgICAgcmV0dXJuOwpAQCAtODIsMTIgKzgyLDYgQEAgdm9pZCBXZWJHTExh
eWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tl
ciogLyogb2NjbHUKICAgICBjb250ZXh0KCktPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBt
X25lZWRzRGlzcGxheSA9IGZhbHNlOwogICAgIG1fY29udGV4dExvc3QgPSBjb250ZXh0KCktPmdl
dEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdyYXBoaWNzQ29u
dGV4dDNEOjpOT19FUlJPUjsKLX0KLQotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJiB1
cGRhdGVyKQotewotICAgIGlmICghbV9kcmF3aW5nQnVmZmVyKQotICAgICAgICByZXR1cm47CiAK
ICAgICBtX3RleHR1cmVJZCA9IG1fZHJhd2luZ0J1ZmZlci0+ZnJvbnRDb2xvckJ1ZmZlcigpOwog
ICAgIGlmIChtX2RyYXdpbmdCdWZmZXItPnJlcXVpcmVzQ29weUZyb21CYWNrVG9Gcm9udEJ1ZmZl
cigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCA3MTFjMGJlODI0NzJiYTU1YTA0
MjI1MThkODNhMDJjMWNjY2Q2YzhkLi5kYjgyMWQwOTA2NWJmMjg5MjY0YTU1ZTljNzYxMWI1Y2Iz
YTc5MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtNTAsOCArNTAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFs
IGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBk
YXRlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0
IENDT2NjbHVzaW9uVHJhY2tlciopOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1Rv
KENDTGF5ZXJJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheVJlY3QoY29u
c3QgRmxvYXRSZWN0Jik7CiAgICAgYm9vbCBwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKElt
YWdlQnVmZmVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA2YmU1Nzhj
M2M2NGQ5NGIxNjcwOGE0OTVjZGMxMDA4N2RkNDRhY2Q2Li42Nzk1NGYwYmEwYzFkNjE0NmEwOWVi
YjkyYjY1NTEzMWNiODAzZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTEwOSw3ICsxMDksNiBAQCBDQ0xheWVyVHJlZUhvc3Q6On5DQ0xheWVyVHJlZUhvc3QoKQogICAg
IEFTU0VSVChtX3Byb3h5KTsKICAgICBtX3Byb3h5LT5zdG9wKCk7CiAgICAgbV9wcm94eS5jbGVh
cigpOwotICAgIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogICAgIG51bUxheWVyVHJlZUluc3RhbmNl
cy0tOwogfQogCkBAIC0yMjcsNyArMjI2LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlz
aENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKIHZvaWQg
Q0NMYXllclRyZWVIb3N0Ojpjb21taXRDb21wbGV0ZSgpCiB7CiAgICAgbV9kZWxldGVUZXh0dXJl
QWZ0ZXJDb21taXRMaXN0LmNsZWFyKCk7Ci0gICAgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAgICAg
bV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIG1f
Y2xpZW50LT5kaWRDb21taXQoKTsKIH0KQEAgLTQxOSw3ICs0MTcsNyBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6Y29tcG9zaXRlKCkKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRocmVhZFByb3h5
Kj4obV9wcm94eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAKLWJvb2wgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQorYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycyhDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewogICAgIGlmICghbV9sYXllclJl
bmRlcmVySW5pdGlhbGl6ZWQpIHsKICAgICAgICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKTsK
QEAgLTQzOCwxMSArNDM2LDExIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMo
KQogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpKTsKKyAgICB1cGRhdGVMYXllcnMocm9v
dExheWVyKCksIHVwZGF0ZXIpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyLCBDQ1Rl
eHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOwogCkBAIC00NTMsMTAgKzQ1MSw4IEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQog
ICAgIEludFJlY3Qgcm9vdENsaXBSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKTsKICAg
ICByb290TGF5ZXItPnNldENsaXBSZWN0KHJvb3RDbGlwUmVjdCk7CiAKLSAgICAvLyBUaGlzIGFz
c2VydCBmaXJlcyBpZiB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIHdhc24ndCBjYWxsZWQgYWZ0
ZXIKLSAgICAvLyB1cGRhdGVMYXllcnMuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBh
dCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBBU1NFUlQoIW1fdXBkYXRlTGlzdC5zaXplKCkpOwotICAg
IG1fdXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsKKyAgICBMYXllckxpc3QgdXBkYXRlTGlz
dDsKKyAgICB1cGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOwogCiAgICAgUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiByb290UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgp
OwogICAgIHJvb3RSZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwpAQCAtNDY0LDE1ICs0
NjAsMTUgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVt
KiByb290TGF5ZXIpCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAg
ICAgewogICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6
OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6
Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVy
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRl
clN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4
dHVyZVNpemUpOworICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgaWRlbnRpdHlNYXRy
aXgsIGlkZW50aXR5TWF0cml4LCB1cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJM
aXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAgICAg
fQogCiAgICAgLy8gUmVzZXQgcGFydGlhbCB0ZXh0dXJlIHVwZGF0ZSByZXF1ZXN0cy4KICAgICBt
X3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMgPSAwOwogCi0gICAgcmVzZXJ2ZVRleHR1cmVz
KCk7CisgICAgcmVzZXJ2ZVRleHR1cmVzKHVwZGF0ZUxpc3QpOwogCi0gICAgcGFpbnRMYXllckNv
bnRlbnRzKG1fdXBkYXRlTGlzdCwgUGFpbnRWaXNpYmxlKTsKKyAgICBwYWludExheWVyQ29udGVu
dHModXBkYXRlTGlzdCwgUGFpbnRWaXNpYmxlLCB1cGRhdGVyKTsKICAgICBpZiAoIW1fdHJpZ2dl
cklkbGVQYWludHMpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDg2LDE3ICs0ODIsMTcgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIp
CiAgICAgLy8gb3RoZXJ3aXNlIGl0IHdpbGwgYWx3YXlzIHB1c2ggdXMgdG93YXJkcyB0aGUgbWF4
aW11bSBsaW1pdC4KICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxp
bWl0Qnl0ZXMocHJlZmVycmVkTGltaXRCeXRlcyk7CiAgICAgLy8gVGhlIHNlY29uZCAoaWRsZSkg
cGFpbnQgd2lsbCBiZSBhIG5vLW9wIGluIGxheWVycyB3aGVyZSBwYWludGluZyBhbHJlYWR5IG9j
Y3VyZWQgYWJvdmUuCi0gICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCwgUGFpbnRJ
ZGxlKTsKKyAgICBwYWludExheWVyQ29udGVudHModXBkYXRlTGlzdCwgUGFpbnRJZGxlLCB1cGRh
dGVyKTsKICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0
ZXMobWF4TGltaXRCeXRlcyk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpyZXNlcnZlVGV4
dHVyZXMoKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnJlc2VydmVUZXh0dXJlcyhjb25zdCBMYXll
ckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3Mg
Y2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgogICAgIHR5cGVkZWYgQ0NMYXll
ckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwg
UmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9u
dD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0g
Q0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZtX3VwZGF0ZUxpc3QpOwotICAgIGZvciAoQ0NMYXll
ckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX3VwZGF0ZUxp
c3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IEND
TGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmdXBkYXRlTGlzdCk7CisgICAgZm9yIChDQ0xheWVySXRl
cmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnVwZGF0ZUxpc3QpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKCFpdC5yZXByZXNlbnRzSXRzZWxmKCkgfHwg
IWl0LT5hbHdheXNSZXNlcnZlVGV4dHVyZXMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBpdC0+cmVzZXJ2ZVRleHR1cmVzKCk7CkBAIC01MDQsMTcgKzUwMCwxNyBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1cmVzKCkKIH0KIAogLy8gc3RhdGljCi12b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIs
IFBhaW50VHlwZSBwYWludFR5cGUsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9u
KQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZShMYXllckNocm9taXVtKiBsYXllciwgUGFp
bnRUeXBlIHBhaW50VHlwZSwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3QgQ0NPY2Ns
dXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgQVNTRVJUKGxheWVyKTsKICAgICBBU1NF
UlQoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSB8fCBQYWludElkbGUgPT0gcGFpbnRUeXBlKTsK
ICAgICBpZiAoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSkKLSAgICAgICAgbGF5ZXItPnBhaW50
Q29udGVudHNJZkRpcnR5KG9jY2x1c2lvbik7CisgICAgICAgIGxheWVyLT51cGRhdGUodXBkYXRl
ciwgb2NjbHVzaW9uKTsKICAgICBlbHNlCi0gICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50
c0lmRGlydHkob2NjbHVzaW9uKTsKKyAgICAgICAgbGF5ZXItPmlkbGVVcGRhdGUodXBkYXRlciwg
b2NjbHVzaW9uKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxp
Y2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgUGFp
bnRUeXBlIHBhaW50VHlwZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBs
aWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIsIFBh
aW50VHlwZSBwYWludFR5cGUsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgLy8g
Tm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkgZXhpc3QgZm9yIGxheWVycyB0aGF0IG93biBy
ZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQKICAgICAvLyBpbiBjb2RlLCB3
ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBzb21ldGhpbmcgd2lsbCBiZSBkcmF3biBpbnRv
IHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpAQCAtNTI0LDIxICs1MjAsMjEgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVy
Q2hyb21pdW0qIHJlbmRlclMKIAogICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXll
cigpKSB7CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnNldFZpc2li
bGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRl
bnRCb3VuZHMoKSkpOwotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNl
TGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUsIDApOworICAgICAgICB1cGRhdGUocmVuZGVy
U3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgcGFpbnRUeXBlLCB1cGRhdGVyLCAwKTsKICAgICB9
CiAKICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXIt
PnJlcGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKLSAgICAgICAgcGFpbnRD
b250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLCBwYWludFR5cGUsIDApOworICAgICAgICB1cGRh
dGUocmVwbGljYUxheWVyLCBwYWludFR5cGUsIHVwZGF0ZXIsIDApOwogCiAgICAgICAgIGlmIChy
ZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1h
c2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGlj
YUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICBwYWlu
dENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUsIDAp
OworICAgICAgICAgICAgdXBkYXRlKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHBhaW50VHlw
ZSwgdXBkYXRlciwgMCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVI
b3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LCBQYWludFR5cGUgcGFpbnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50
TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFBh
aW50VHlwZSBwYWludFR5cGUsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgLy8g
VXNlIEZyb250VG9CYWNrIHRvIGFsbG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9y
bWluZyBjdWxsaW5nIGR1cmluZyB0aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXllckl0
ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVu
ZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4g
Q0NMYXllckl0ZXJhdG9yVHlwZTsKQEAgLTU1MywxMiArNTQ5LDEyIEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0CiAgICAgICAgICAgICBBU1NFUlQoaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09w
YWNpdHkoKSB8fCBpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkp
OwogCiAgICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3Vy
ZmFjZSgqaXQsIGl0LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICAgICAgcGFpbnRNYXNrQW5k
UmVwbGljYUZvclJlbmRlclN1cmZhY2UoKml0LCBwYWludFR5cGUpOworICAgICAgICAgICAgcGFp
bnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoKml0LCBwYWludFR5cGUsIHVwZGF0ZXIp
OwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSkgewogICAgICAgICAg
ICAgQVNTRVJUKCFpdC0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKIAogICAgICAgICAgICAgb2NjbHVz
aW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoaXQtPnRhcmdldFJlbmRlclN1cmZh
Y2UoKSk7Ci0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eSgqaXQsIHBhaW50VHlwZSwg
Jm9jY2x1c2lvblRyYWNrZXIpOworICAgICAgICAgICAgdXBkYXRlKCppdCwgcGFpbnRUeXBlLCB1
cGRhdGVyLCAmb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgICAgICAgICBvY2NsdXNpb25UcmFja2Vy
Lm1hcmtPY2NsdWRlZEJlaGluZExheWVyKCppdCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgb2NjbHVzaW9uVHJhY2tlci5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShpdC50YXJnZXRS
ZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpKTsKQEAgLTU2NywzOCArNTYzLDYg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxp
c3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3
TWV0cmljcygpLnJlY29yZE1ldHJpY3ModGhpcyk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBD
Q1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQotewotICAgIC8vIFVzZSBCYWNrVG9Gcm9udCBzaW5j
ZSBpdCdzIGNoZWFwIGFuZCB0aGlzIGlzbid0IG9yZGVyLWRlcGVuZGVudC4KLSAgICB0eXBlZGVm
IENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFj
a1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7Ci0KLSAgICBDQ0xheWVySXRlcmF0b3JUeXBl
IGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmbV91cGRhdGVMaXN0KTsKLSAgICBmb3Ig
KENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmbV91
cGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC5yZXByZXNlbnRz
VGFyZ2V0UmVuZGVyU3VyZmFjZSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXQtPnJlbmRlclN1
cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSB8fCBpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0
eUlzQW5pbWF0aW5nKCkpOwotICAgICAgICAgICAgaWYgKGl0LT5tYXNrTGF5ZXIoKSkKLSAgICAg
ICAgICAgICAgICBpdC0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29u
dGV4dCwgdXBkYXRlcik7Ci0KLSAgICAgICAgICAgIGlmIChpdC0+cmVwbGljYUxheWVyKCkpIHsK
LSAgICAgICAgICAgICAgICBpdC0+cmVwbGljYUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGl0LT5yZXBsaWNh
TGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGl0LT5yZXBsaWNhTGF5
ZXIoKS0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBk
YXRlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0
c2VsZigpKQotICAgICAgICAgICAgaXQtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4
dCwgdXBkYXRlcik7Ci0gICAgfQotfQotCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5k
aW5nVXBkYXRlKCkKLXsKLSAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNl
SW5kZXggPCBtX3VwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJbmRleCkgewotICAgICAgICBM
YXllckNocm9taXVtKiBsYXllciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwot
ICAgICAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIGxheWVyLT5j
bGVhclJlbmRlclN1cmZhY2UoKTsKLSAgICB9Ci0gICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7Ci19
Ci0KIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Ny
b2xsQW5kU2NhbGVTZXQmIGluZm8pCiB7CiAgICAgLy8gRklYTUU6IHB1c2hpbmcgc2Nyb2xsIG9m
ZnNldHMgdG8gbm9uLXJvb3QgbGF5ZXJzIG5vdCBpbXBsZW1lbnRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaAppbmRleCAxYzIyYTRkNWViZTIyNWE4MzY0NWYwZmViYWM0NDU0MzM5MzkxMzM4
Li44NTU1MmEzMzRiYzFhYjUyZDFiM2E3YWRkYjJlZDNlZmQwNWZlMzY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaApAQCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSB7IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJz
KCk7IH0KICAgICB2b2lkIGRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVy
ZUFsbG9jYXRvciopOwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2Ugc2hvdWxkIGFib3J0IHRo
aXMgZnJhbWUgZHVlIHRvIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuCi0gICAgYm9vbCB1cGRhdGVM
YXllcnMoKTsKKyAgICBib29sIHVwZGF0ZUxheWVycyhDQ1RleHR1cmVVcGRhdGVyJik7CiAKICAg
ICBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAK
QEAgLTIwOSw3ICsyMDksNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5p
bWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxv
YXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYyk7CiAKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAg
dm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsKICAg
ICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHN0
b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwpAQCAtMjI4LDE0ICsyMjcsMTMgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7CiAKICAgICBlbnVt
IFBhaW50VHlwZSB7IFBhaW50VmlzaWJsZSwgUGFpbnRJZGxlIH07Ci0gICAgc3RhdGljIHZvaWQg
cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSwgY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKik7Ci0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5
ZXJMaXN0JiwgUGFpbnRUeXBlKTsKLSAgICB2b2lkIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5k
ZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHVw
ZGF0ZShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlLCBDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKik7CisgICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3Qg
TGF5ZXJMaXN0JiwgUGFpbnRUeXBlLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCBwYWlu
dE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwgUGFpbnRUeXBl
LCBDQ1RleHR1cmVVcGRhdGVyJik7CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9t
aXVtKik7CisgICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSosIENDVGV4dHVyZVVw
ZGF0ZXImKTsKICAgICAvLyBQcmUtcmVzZXJ2ZSB0ZXh0dXJlcyBmb3IgYW55IGxheWVyIG1hcmtl
ZCAiYWx3YXlzIHJlc2VydmUgdGV4dHVyZXMiCi0gICAgdm9pZCByZXNlcnZlVGV4dHVyZXMoKTsK
LSAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOworICAgIHZvaWQgcmVzZXJ2ZVRleHR1cmVz
KGNvbnN0IExheWVyTGlzdCYpOwogCiAgICAgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25v
dG9uaWNUaW1lKTsKICAgICBib29sIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1
bSogY3VycmVudCwgZG91YmxlIG1vbm90b25pY1RpbWUpOwpAQCAtMjU5LDggKzI1Nyw2IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0
cjxUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyOwogCi0gICAgTGF5ZXJM
aXN0IG1fdXBkYXRlTGlzdDsKLQogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKIAogICAgIElu
dFNpemUgbV92aWV3cG9ydFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
Y3BwCmluZGV4IDU3ZjBjMjA2MzZiNjk0MGRkM2MwODM2ZTFhZDI5MGU2ZWJmYTIzNDguLjkyMjNj
NWY2YjAwZDFlZGQxZWE2MzQ2MGM5ZjA5OTlhNGRmZGJkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBDQ1NpbmdsZVRo
cmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGUoKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi12b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKK3ZvaWQgQ0NTaW5nbGVU
aHJlYWRQcm94eTo6ZG9Db21taXQoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICBB
U1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAgIC8vIENvbW1pdCBpbW1lZGlhdGVs
eQpAQCAtMjAwLDggKzIwMCw2IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQo
KQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0
SW1wbC5nZXQoKSk7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKLSAgICAgICAg
bV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRleHQoKSwgdXBkYXRlcik7CiAgICAgICAgIHVwZGF0ZXIudXBkYXRlKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNU
ZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+
dGV4dHVyZUNvcGllcigpLCBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgICAg
IEFTU0VSVCghdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0SW1wbC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CkBAIC0yODcs
MTAgKzI4NSwxMiBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKCkK
IHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKCFtX2xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpKQorICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRl
cjsKKworICAgIGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRvQ29tbWl0KCk7CisgICAgZG9Db21taXQodXBk
YXRlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaAppbmRleCA5ODg3NDMyZWJhZDZlNTNjZTQwNTI2YzYwZTEyMDExNjA2MTYzMTRlLi45
NjExMGMzMjg5MDEwOWFlNmMxZGM2OGIzYWIwYjhmODkxMjZlNzMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgQ0NTaW5nbGVUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIAogICAgIGJvb2wg
Y29tbWl0SWZOZWVkZWQoKTsKLSAgICB2b2lkIGRvQ29tbWl0KCk7CisgICAgdm9pZCBkb0NvbW1p
dChDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgYm9vbCBkb0NvbXBvc2l0ZSgpOwogICAgIHZvaWQg
ZGlkU3dhcEZyYW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZWJjZThi
ZjI5MWQ2YjRiNjE4YWU2MGI3NTdkZDJmNGFhYzgwOGVjNS4uNzUxOTg2ZjM1YmIwYWUzNzdmNDhm
ZGFkM2ZiMWU0N2NhZGZjZDMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTQx
Miw2ICs0MTIsOCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJh
bWUoKQogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0ID0gYWRvcHRQdHIobmV3IEJlZ2lu
RnJhbWVBbmRDb21taXRTdGF0ZSgpKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+
bW9ub3RvbmljRnJhbWVCZWdpblRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsK
ICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+c2Nyb2xsSW5mbyA9IG1fbGF5ZXJUcmVl
SG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKKyAgICBtX2N1cnJlbnRUZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKTsKKyAgICBt
X3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+dXBkYXRlciA9IG1fY3VycmVudFRleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkLmdldCgpOwogCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNr
KGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSkpOwog
CkBAIC00NjUsNyArNDY3LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAg
ICAvLyB1cGRhdGVMYXllcnMuCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotICAg
IGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKSkKKyAgICBpZiAoIW1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCpyZXF1ZXN0LT51cGRhdGVyKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5pbWF0ZSwg
d2Ugc2V0IG1fYW5pbWF0ZVJlcXVlc3RlZCB0byBmYWxzZS4KQEAgLTQ5NSw2ICs0OTcsNyBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCogY29tcGxldGlvbgogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAg
QVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJP
bkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CisKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9z
dEltcGwpIHsKICAgICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTUwMiwxMCArNTA1LDYgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxl
dGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29t
bWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKIAotICAgIEFTU0VS
VCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIp
OwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCk7Ci0KICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRl
KCk7CiB9CiAKQEAgLTUzNCwxMyArNTMzLDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvbkNvbW1pdCgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvbkNvbW1pdCIsIHRoaXMsIDApOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQo
KSk7CiAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKICAg
ICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBk
YXRlcygpKTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQp
OwogCiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKIAot
CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIAogICAgIG1fbGF5ZXJU
cmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMzVmZTFkYmFmZjQwYjRhNmUyZGY5ZmNk
ODRkMjJmOTI1NjBjOWIzNy4uYTM4MzEyZGU1NjA1NTYyNGJiZTdhYmE4Yzc3Yzg3ZWQ1NjI0MTIw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtOTQsOSArOTQsMTUgQEAgcHJpdmF0ZToK
IAogICAgIC8vIFNldCBvbiBpbXBsIHRocmVhZCwgcmVhZCBvbiBtYWluIHRocmVhZC4KICAgICBz
dHJ1Y3QgQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlIHsKLSAgICAgICAgQmVnaW5GcmFtZUFuZENv
bW1pdFN0YXRlKCkgOiBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSgpIHsgfQorICAgICAgICBCZWdp
bkZyYW1lQW5kQ29tbWl0U3RhdGUoKQorICAgICAgICAgICAgOiBtb25vdG9uaWNGcmFtZUJlZ2lu
VGltZSgwKQorICAgICAgICAgICAgLCB1cGRhdGVyKDApCisgICAgICAgIHsKKyAgICAgICAgfQor
CiAgICAgICAgIGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZTsKICAgICAgICAgT3duUHRy
PENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm87CisgICAgICAgIENDVGV4dHVyZVVwZGF0
ZXIqIHVwZGF0ZXI7CiAgICAgfTsKICAgICBPd25QdHI8QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRl
PiBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggOGY2YWMyYmE3NDhl
ZDVlNmVmMDk5YWQ2YzBhNjBlNDg2YTc0NjlkOC4uMjEwYzcyOGUyZDg5MDE4ZDY3ZTUxOWIwYWMz
NzdlNjU1ZDhiYzQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJD
Q0FuaW1hdGlvblRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ09jY2x1c2lvblRyYWNrZXJUZXN0
Q29tbW9uLmgiCisjaW5jbHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgogI2luY2x1ZGUg
IkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJDb250ZW50
TGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKQEAgLTQ5Miw3
ICs0OTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fYmVnaW5UYXNrID0gbmV3IEJlZ2luVGFz
ayh0aGlzKTsKICAgICAgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmN1cnJlbnRUaHJlYWQo
KS0+cG9zdERlbGF5ZWRUYXNrKG1fYmVnaW5UYXNrLCAwKTsgLy8gcG9zdERlbGF5ZWRUYXNrIHRh
a2VzIG93bmVyc2hpcCBvZiB0aGUgdGFzawogICAgICAgICBtX3RpbWVvdXRUYXNrID0gbmV3IFRp
bWVvdXRUYXNrKHRoaXMpOwotICAgICAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3VycmVu
dFRocmVhZCgpLT5wb3N0RGVsYXllZFRhc2sobV90aW1lb3V0VGFzaywgNTAwMCk7CisgICAgICAg
IHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jdXJyZW50VGhyZWFkKCktPnBvc3REZWxheWVkVGFz
ayhtX3RpbWVvdXRUYXNrLCA1MDAwKjEwMDAwKTsKICAgICAgICAgd2ViS2l0UGxhdGZvcm1TdXBw
b3J0KCktPmN1cnJlbnRUaHJlYWQoKS0+ZW50ZXJSdW5Mb29wKCk7CiAKICAgICAgICAgaWYgKG1f
bGF5ZXJUcmVlSG9zdCAmJiBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpKQpAQCAtMTM5Nywz
MyArMTM5OCwyMyBAQCBwdWJsaWM6CiAgICAgaW50IGlkbGVQYWludENvbnRlbnRzQ291bnQoKSB7
IHJldHVybiBtX2lkbGVQYWludENvbnRlbnRzQ291bnQ7IH0KICAgICB2b2lkIHJlc2V0UGFpbnRD
b250ZW50c0NvdW50KCkgeyBtX3BhaW50Q29udGVudHNDb3VudCA9IDA7IG1faWRsZVBhaW50Q29u
dGVudHNDb3VudCA9IDA7fQogCi0gICAgaW50IHVwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV91cGRh
dGVDb3VudDsgfQotICAgIHZvaWQgcmVzZXRVcGRhdGVDb3VudCgpIHsgbV91cGRhdGVDb3VudCA9
IDA7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09j
Y2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4
dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9u
KQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRp
cnR5KG9jY2x1c2lvbik7CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGUodXBk
YXRlciwgb2NjbHVzaW9uKTsKICAgICAgICAgbV9wYWludENvbnRlbnRzQ291bnQrKzsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2Nj
bHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQorICAgIHZpcnR1YWwgdm9pZCBpZGxlVXBkYXRlKEND
VGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVz
aW9uKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRl
bnRzSWZEaXJ0eShvY2NsdXNpb24pOworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRs
ZVVwZGF0ZSh1cGRhdGVyLCBvY2NsdXNpb24pOwogICAgICAgICBtX2lkbGVQYWludENvbnRlbnRz
Q291bnQrKzsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRl
cikKLSAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICBtX3VwZGF0ZUNvdW50Kys7Ci0g
ICAgfQotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nKENvbnRlbnRMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICAgICAgOiBD
b250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKICAgICAgICAgLCBtX3BhaW50Q29udGVudHND
b3VudCgwKQogICAgICAgICAsIG1faWRsZVBhaW50Q29udGVudHNDb3VudCgwKQotICAgICAgICAs
IG1fdXBkYXRlQ291bnQoMCkKICAgICB7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAx
MCkpOwogICAgICAgICBzZXRJc0RyYXdhYmxlKHRydWUpOwpAQCAtMTQzMSw3ICsxNDIyLDYgQEAg
cHJpdmF0ZToKIAogICAgIGludCBtX3BhaW50Q29udGVudHNDb3VudDsKICAgICBpbnQgbV9pZGxl
UGFpbnRDb250ZW50c0NvdW50OwotICAgIGludCBtX3VwZGF0ZUNvdW50OwogfTsKIAogLy8gTGF5
ZXIgb3BhY2l0eSBjaGFuZ2UgZHVyaW5nIHBhaW50IHNob3VsZCBub3QgcHJldmVudCBjb21wb3Np
dG9yIHJlc291cmNlcyBmcm9tIGJlaW5nIHVwZGF0ZWQgZHVyaW5nIGNvbW1pdC4KQEAgLTE0NTgs
MTcgKzE0NDgsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCiAg
ICAgewotICAgICAgICAvLyBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIG9uY2UuCisgICAgICAgIC8vIHVwZGF0ZSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVk
IG9uY2UuCiAgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29u
dGVudHNDb3VudCgpKTsKIAotICAgICAgICAvLyBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSBz
aG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlCisgICAgICAgIC8vIGlkbGVVcGRhdGUoKSBzaG91
bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlCiAgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNo
ZWNrTGF5ZXItPmlkbGVQYWludENvbnRlbnRzQ291bnQoKSk7CiAKLSAgICAgICAgLy8gdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCi0g
ICAgICAgIC8vIGFtb3V0IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNJZkRpcnR5KCkuCi0gICAg
ICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpLAot
ICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVDb3VudCgpKTsKLQog
ICAgICAgICAvLyBjbGVhciBtX3VwZGF0ZUNoZWNrTGF5ZXIgc28gQ0NMYXllclRyZWVIb3N0IGRp
ZXMuCiAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci5jbGVhcigpOwogICAgIH0KQEAgLTE0OTcs
NyArMTQ4Miw4IEBAIHB1YmxpYzoKICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUoMTAsIDEw
KTsKICAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXpl
KTsKIAotICAgICAgICBsYXllclRyZWVIb3N0KCktPnVwZGF0ZUxheWVycygpOworICAgICAgICBD
Q1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgICAgIGxheWVyVHJlZUhvc3QoKS0+dXBkYXRl
TGF5ZXJzKHVwZGF0ZXIpOwogCiAgICAgICAgIEVYUEVDVF9FUSh2aWV3cG9ydFNpemUsIGxheWVy
VHJlZUhvc3QoKS0+dmlld3BvcnRTaXplKCkpOwogICAgICAgICBFWFBFQ1RfRVEoVGV4dHVyZU1h
bmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSksIGxheWVyVHJlZUhvc3QoKS0+Y29u
dGVudHNUZXh0dXJlTWFuYWdlcigpLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwpAQCAtMTY4Niw5
ICsxNjcyLDkgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVz
ZWQgZm9yIGNvbW1pdCBzaG91bGQgc3RpbGwgYmUgdHdvLgogICAgICAgICAgICAgRVhQRUNUX0VR
KDIsIGNvbnRleHQtPm51bVVzZWRUZXh0dXJlcygpKTsKICAgICAgICAgICAgIC8vIEZpcnN0IHRl
eHR1cmUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gdXNlZC4KLSAgICAgICAgICAgIEVYUEVDVF9GQUxT
RShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7CisgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7
CiAgICAgICAgICAgICAvLyBTZWNvbmQgdGV4dHVyZSBzaG91bGQgaGF2ZSBiZWVuIHVzZWQuCi0g
ICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0
dXJlKDEpKSk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoY29udGV4dC0+dXNlZFRleHR1cmUo
Y29udGV4dC0+dGV4dHVyZSgxKSkpOwogICAgICAgICAgICAgLy8gTmV3IHRleHR1cmVzIHNob3Vs
ZCBoYXZlIGJlZW4gdXNlZC4KICAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRU
ZXh0dXJlKGNvbnRleHQtPnRleHR1cmUoMikpKTsKIApAQCAtMTc2MCw3ICsxNzQ2LDcgQEAgY2xh
c3MgVGVzdExheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBUZXN0TGF5ZXJDaHJvbWl1bSgpKTsgfQogCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9u
KQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2Nj
bHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogICAgIHsKICAgICAgICAgLy8gR2FpbiBhY2Nlc3Mg
dG8gaW50ZXJuYWxzIG9mIHRoZSBDQ09jY2x1c2lvblRyYWNrZXIuCiAgICAgICAgIGNvbnN0IFRl
c3RDQ09jY2x1c2lvblRyYWNrZXIqIHRlc3RPY2NsdXNpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VyKj4ob2NjbHVzaW9uKTsKQEAgLTE4MjUsNyArMTgxMSw4IEBA
IHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5
ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXIt
PmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAg
ICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRD
b21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGls
ZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE4NDIsNyArMTgyOSw3IEBA
IHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5
ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXIt
PmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KCksIGdyYW5kQ2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7
CkBAIC0xODYwLDcgKzE4NDcsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRW
aWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJz
KHVwZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAK
ICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBncmFuZENoaWxkLT5vY2NsdWRlZFNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOwpAQCAtMTg4MCw3ICsxODY3LDcgQEAgcHVibGljOgogCiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwot
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwg
Z3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE5MDIsNyAr
MTg4OSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXll
cihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShy
b290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnMoKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KCksIGdyYW5kQ2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7CkBAIC0xOTI0LDcgKzE5MTEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBk
YXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBs
ZXRlKCk7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBjaGlsZDItPm9jY2x1
ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0xOTQ3LDcgKzE5MzQsNyBAQCBwdWJsaWM6
CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMo
KSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgpLCBncmFuZENoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwpAQCAtMTk3
MCw3ICsxOTU3LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9v
dExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRT
aXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0
ZUxheWVycygpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVy
KTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCku
Ym91bmRzKCkpOwpAQCAtMjAxMyw3ICsyMDAwLDggQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVw
ZGF0ZXI7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBjaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5k
cygpKTsKQEAgLTIwNzEsNyArMjA1OSw4IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVy
OworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkp
OwpAQCAtMjA5OCw3ICsyMDg3LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwog
CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVl
blNwYWNlKCkuYm91bmRzKCkpOwpAQCAtMjE1OCw3ICsyMTQ3LDggQEAgcHVibGljOgogCiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKGxheWVyc1swXS5nZXQoKSk7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKGxheWVyc1swXS0+Ym91bmRzKCkp
OwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBDQ1Rl
eHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKHVwZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7
CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1TdXJmYWNlcy0xOyArK2kpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RD
b21tb24uY3BwCmluZGV4IGY3ZDc4OTRiNzA0NmY3ZjdlZjhlNGE4MmQxYjZiZmYwZDlhN2QzNjMu
LjMzNDUzN2Q0NGIxOWJkM2U0NDczNzIwYWNkMzQxZTMxNDNmYWUzNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNw
cApAQCAtMTE2LDkgKzExNiw5IEBAIHZvaWQgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TmVl
ZHNEaXNwbGF5UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgVGlsZWRMYXllckNocm9t
aXVtOjpzZXROZWVkc0Rpc3BsYXlSZWN0KHJlY3QpOwogfQogCi12b2lkIEZha2VUaWxlZExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciog
b2NjbHVzaW9uKQordm9pZCBGYWtlVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJl
VXBkYXRlciYgdXBkYXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7
Ci0gICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2NjbHVzaW9uKTsKKyAg
ICB1cGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZUxheWVyUmVjdCgpLCBvY2NsdXNpb24p
OwogfQogCiBGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHM6OkZha2VUaWxlZExheWVyV2l0
aFNjYWxlZEJvdW5kcyhUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmlu
ZGV4IDgxYmQxMTQxMDA4N2RjNGE2MmRiMmQzYjRlOWVmZmRhZmE0NmNjYjAuLjI5NzRkYWZhYjFk
ZmViODZjOGI5MmFiYjFiZWI4MmU0NTU4MDk5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCkBAIC0xMTAsOCArMTEw
LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRTaXplIHRpbGVTaXplKCkgeyBy
ZXR1cm4gV2ViQ29yZTo6SW50U2l6ZSgxMDAsIDEwMCk7IH0KIAogICAgIHVzaW5nIFdlYkNvcmU6
OlRpbGVkTGF5ZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJlY3Q7Ci0gICAgdXNpbmcgV2ViQ29yZTo6
VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGU7Ci0gICAgdXNpbmcgV2ViQ29yZTo6
VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlOworICAgIHVzaW5nIFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJSZWN0OworICAgIHVzaW5nIFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6aWRsZVVwZGF0ZUxheWVyUmVjdDsKICAgICB1c2luZyBX
ZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06Om5lZWRzSWRsZVBhaW50OwogICAgIHVzaW5nIFdl
YkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6c2tpcHNEcmF3OwogICAgIHVzaW5nIFdlYkNvcmU6
OlRpbGVkTGF5ZXJDaHJvbWl1bTo6bnVtUGFpbnRlZFRpbGVzOwpAQCAtMTIxLDcgKzEyMSw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGxhc3ROZWVkc0Rpc3BsYXlS
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TmVlZHNEaXNwbGF5UmVjdDsgfQogCiAgICAgLy8g
VXBkYXRlcyB0aGUgdmlzaWJsZUxheWVyUmVjdCgpLgotICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXIqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBXZWJD
b3JlOjpDQ09jY2x1c2lvblRyYWNrZXIqKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4dHVy
ZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWFuYWdl
cjsgfQogICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKiBmYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpIHsgcmV0dXJuIG1fZmFrZVRleHR1cmVVcGRhdGVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0
LmNwcAppbmRleCA2ZTE0NDE4ZDgwMGJmZTE5MWZlODk0MTE5NzhhZjVmYzJlNTlkMDg3Li4zODg2
YWI1MWNlN2MwOTliMjExZGUxZmVhMzY2YzMxNjUxNzg3OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgT3duUHRyPEZha2VD
Q0xheWVyVHJlZUhvc3Q+IGxheWVyVHJlZUhvc3QgPSBGYWtlQ0NMYXllclRyZWVIb3N0OjpjcmVh
dGUoKTsKICAgICAgICAgLy8gRm9yY2UgYW4gdXBkYXRlLCBzbyB0aGF0IHdlIGdldCBhIHZhbGlk
IFRleHR1cmVNYW5hZ2VyLgotICAgICAgICBsYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsK
KyAgICAgICAgbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogCiAgICAgICAg
IGNvbnN0IFdlYkdMSWQgYmFja1RleHR1cmVJZCA9IDE7CiAgICAgICAgIGNvbnN0IFdlYkdMSWQg
ZnJvbnRUZXh0dXJlSWQgPSAyOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByb3RlY3RlZDoKIAogICAg
ICAgICBjYW52YXMtPnNldE5lZWRzRGlzcGxheSgpOwogICAgICAgICBFWFBFQ1RfVFJVRShjYW52
YXMtPm5lZWRzRGlzcGxheSgpKTsKLSAgICAgICAgY2FudmFzLT5wYWludENvbnRlbnRzSWZEaXJ0
eSgwKTsKKyAgICAgICAgY2FudmFzLT51cGRhdGUodXBkYXRlciwgMCk7CiAgICAgICAgIEVYUEVD
VF9GQUxTRShjYW52YXMtPm5lZWRzRGlzcGxheSgpKTsKICAgICAgICAgewogICAgICAgICAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7CkBAIC0xNTMsNyArMTUz
LDYgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllcklt
cGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEo
MHUsIHN0YXRpY19jYXN0PENDVGV4dHVyZUxheWVySW1wbCo+KGxheWVySW1wbC5nZXQoKSktPnRl
eHR1cmVJZCgpKTsKIAotICAgICAgICAgICAgY2FudmFzLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKGltcGxDb250ZXh0LmdldCgpLCB1cGRhdGVyKTsKICAgICAgICAgICAgIHVwZGF0ZXIudXBk
YXRlKGltcGxDb250ZXh0LmdldCgpLCAmYWxsb2NhdG9yTW9jaywgJmNvcGllck1vY2ssIDEpOwog
ICAgICAgICAgICAgY2FudmFzLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9t
aXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCmluZGV4IGMzNmU1MWEzMGRhYTk4Mjg5ZjIxZGQwYjlhNzZjZDdjYTMxMjNi
M2QuLmUwZWNhNWEyNDQxOTRiMDE1OTE5ZWMyNWVlZTE4YjhkNTMyMDdiNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcApAQCAtNzcsOCArNzcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hE
aXJ0eVRpbGVzKQogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZh
bGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMo
SW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwg
dXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSwgMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwg
c2lkZS4KQEAgLTkwLDggKzg5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNo
RGlydHlUaWxlcykKICAgICAvLyBJbnZhbGlkYXRlcyBib3RoIHRpbGVzLi4uCiAgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0
IHRoZW4gb25seSB1cGRhdGUgb25lIG9mIHRoZW0uCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBvbmx5IGhhdmUgdGhl
IGZpcnN0IHRpbGUgc2luY2UgdGhlIG90aGVyIHRpbGUgd2FzIGludmFsaWRhdGVkIGJ1dCBub3Qg
cGFpbnRlZC4KQEAgLTExNCw4ICsxMTIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJh
bnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAy
LjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2NsdWRlZCk7Ci0gICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxh
eWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsKICAg
ICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgRVhQRUNU
X05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwg
MCwgMSk7CkBAIC0xMzIsOCArMTI5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoT2NjbHVkZWREaXJ0eVRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0
KDAsIDAsIDUwLCA1MCkpOwogICAgIC8vIC4uLi5idXQgdGhlIGFyZWEgaXMgb2NjbHVkZWQuCiAg
ICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMCwgMCwgNTAsIDUwKSk7Ci0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsK
LSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBs
YXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAm
b2NjbHVkZWQpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7
CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxv
YWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTE1OSw4ICsxNTUsNyBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGlsZXMpCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAx
MDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAg
ICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFs
aWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBsYXllci0+cHVzaFBy
b3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90
aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMTc5LDggKzE3NCw3IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKICAgICBFWFBFQ1RfRkFMU0UobGF5
ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkpOwogCiAgICAgLy8gVGhpcyBzaG91bGQgcmVjcmVhdGUg
YW5kIHVwZGF0ZSB0aGUgZGVsZXRlZCB0ZXh0dXJlcy4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICBsYXllci0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSB0
aGUgZmlyc3QgdGlsZSBzaW5jZSB0aGUgb3RoZXIgdGlsZSB3YXMgaW52YWxpZGF0ZWQgYnV0IG5v
dCBwYWludGVkLgpAQCAtMjA2LDEyICsyMDAsMTEgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91
bmRzKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlUmVjdCk7CiAgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKHZpc2libGVSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0
ZXIsIHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRp
bmcgZm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5u
ZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBp
bXBsIHNpZGUuCkBAIC0yMjEsMTAgKzIxNCw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcHVzaElkbGVQYWludFRpbGVzKQogCiAgICAgLy8gRm9yIHRoZSBuZXh0IGZvdXIgdXBkYXRl
cywgd2Ugc2hvdWxkIGRldGVjdCB3ZSBzdGlsbCBuZWVkIGlkbGUgcGFpbnRpbmcuCiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZSh2aXNpYmxlUmVjdCwgMCk7CisgICAgICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRl
ciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxl
UGFpbnQodmlzaWJsZVJlY3QpKTsKLSAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUo
dmlzaWJsZVJlY3QsIDApOwotICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cygwLCB1cGRhdGVyKTsKKyAgICAgICAgbGF5ZXItPmlkbGVVcGRhdGVMYXllclJlY3QodXBkYXRl
ciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVy
ZXMoKTsKICAgICB9CkBAIC0yNzIsMjggKzI2NCwyNCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIGxheWVyMS0+c2V0Qm91
bmRzKGxheWVyUmVjdC5zaXplKCkpOwogICAgIGxheWVyMS0+c2V0VmlzaWJsZUxheWVyUmVjdChs
YXllclJlY3QpOwogICAgIGxheWVyMS0+aW52YWxpZGF0ZVJlY3QobGF5ZXJSZWN0KTsKLSAgICBs
YXllcjEtPnByZXBhcmVUb1VwZGF0ZShsYXllclJlY3QsIDApOworICAgIGxheWVyMS0+dXBkYXRl
TGF5ZXJSZWN0KHVwZGF0ZXIsIGxheWVyUmVjdCwgMCk7CiAKICAgICAvLyBQYWludCBhIHNpbmds
ZSB0aWxlIGluIGxheWVyMiBzbyB0aGF0IGl0IHdpbGwgaWRsZSBwYWludC4KLSAgICBsYXllcjIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CisgICAgbGF5ZXIy
LT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwog
CiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgYm90aCByZW1haW5pbmcg
dGlsZXMgaW4gbGF5ZXIyLgogICAgIEVYUEVDVF9UUlVFKGxheWVyMi0+bmVlZHNJZGxlUGFpbnQo
bGF5ZXIyUmVjdCkpOwogCiAgICAgLy8gQ29tbWl0IHRoZSBmcmFtZSBvdmVyIHRvIGltcGwuCi0g
ICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwotICAgIGxh
eWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICB1cGRhdGVy
LnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAmY29waWVyLCA1MDAwKTsKICAgICBsYXllcjEtPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsMS5nZXQoKSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbDIuZ2V0KCkpOwogCiAgICAgLy8gTm93IGlkbGUgcGFpbnQgbGF5ZXIyLiBX
ZSBhcmUgZ29pbmcgdG8gcnVuIG91dCBvZiBtZW1vcnkgdGhvdWdoIQotICAgIGxheWVyMi0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKLSAgICBsYXllcjItPnBy
ZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXIyUmVjdCwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVMYXll
clJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOworICAgIGxheWVyMi0+
aWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBsYXllcjJSZWN0LCAwKTsKIAogICAgIC8vIE9o
IHdlbGwsIGNvbW1pdCB0aGUgZnJhbWUgYW5kIHB1c2guCi0gICAgbGF5ZXIxLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwotICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9y
LCAmY29waWVyLCA1MDAwKTsKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
MS5nZXQoKSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDIuZ2V0KCkp
OwpAQCAtMzEwLDExICsyOTgsOSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hU
aWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIC8vIE5vdyBpZiBsYXllcjIgYmVjb21lcyBm
dWxseSB2aXNpYmxlLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBwYWludCBpdCBhbmQgcHVzaCB2YWxp
ZCB0ZXh0dXJlcy4KICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsK
IAotICAgIGxheWVyMi0+cHJlcGFyZVRvVXBkYXRlKGxheWVyMlJlY3QsIDApOwotICAgIGxheWVy
MS0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoKSwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVMYXll
clJlY3QodXBkYXRlciwgbGF5ZXIyUmVjdCwgMCk7CisgICAgbGF5ZXIxLT51cGRhdGVMYXllclJl
Y3QodXBkYXRlciwgSW50UmVjdCgpLCAwKTsKIAotICAgIGxheWVyMS0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygwLCB1cGRhdGVyKTsKLSAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoMCwgdXBkYXRlcik7CiAgICAgdXBkYXRlci51cGRhdGUoMCwgJmFsbG9jYXRvciwgJmNv
cGllciwgNTAwMCk7CiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDEuZ2V0
KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwyLmdldCgpKTsKQEAg
LTM0NCw5ICszMzAsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFp
bnRlZE9jY2x1ZGVkVGlsZXMpCiAgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJhbnNmb3Jt
YXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxh
eWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5
ZXJSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7Ci0gICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZUlkbGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7Ci0gICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVw
ZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVk
KTsKKyAgICBsYXllci0+aWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgdGhlIHByZXBhaW50ZWQgdGls
ZSBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMzY4LDggKzM1Myw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaFRpbGVzTWFya2VkRGlydHlEdXJpbmdQYWludCkKICAgICBsYXllci0+
c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXll
ci5nZXQoKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSwgMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4K
QEAgLTM5MywxNCArMzc3LDExIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRp
bGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIpCiAgICAgbGF5ZXIyLT5z
ZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyMi0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCi0gICAgbGF5ZXIxLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyMS0+dXBkYXRlTGF5ZXJSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKIAogICAgIC8vIEludmFsaWRh
dGUgYSB0aWxlIG9uIGxheWVyMQogICAgIGxheWVyMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIxLmdl
dCgpKTsKLSAgICBsYXllcjItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSwgMCk7Ci0KLSAgICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwor
ICAgIGxheWVyMi0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCAwKTsKIAogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjFJbXBsLmdldCgp
KTsKICAgICBsYXllcjItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIySW1wbC5nZXQoKSk7CkBAIC00
MzAsMTIgKzQxMSw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5
ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25QcmV2aW91c0xheWVyCiAKICAgICAvLyBJbnZhbGlk
YXRlIGEgdGlsZSBvbiBsYXllcjIKICAgICBsYXllcjEtPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVyMi5n
ZXQoKSk7Ci0gICAgbGF5ZXIxLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCksIDApOwotCi0gICAgbGF5ZXIyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCksIDApOworICAgIGxheWVyMS0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApLCAwKTsKIAotICAgIGxheWVyMS0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygwLCB1cGRhdGVyKTsKLSAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
MCwgdXBkYXRlcik7CisgICAgbGF5ZXIyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCksIDApOwogCiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVyMUltcGwuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjJJbXBs
LmdldCgpKTsKQEAgLTQ2OCwyNSArNDQ2LDIzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91
bmRzKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlUmVjdCk7CiAgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKHZpc2libGVSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0
ZXIsIHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRp
bmcgZm9yIDN4MyB0aWxlcyBzdXJvdW5kaW5nIHZpc2libGUgdGlsZS4KICAgICBFWFBFQ1RfVFJV
RShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKIAotICAgIGxheWVyLT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVy
dGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBvbmUgdGls
ZSBvbiB0aGUgaW1wbCBzaWRlLgogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0
KDEsIDEpKTsKIAogICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIDApOwotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5
ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKKyAgICBsYXllci0+aWRsZVVwZGF0ZUxh
eWVyUmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAKICAgICAvLyBXZSBzaG91bGRuJ3Qg
c2lnbmFsIHdlIG5lZWQgYW5vdGhlciBpZGxlIHBhaW50IGFmdGVyIHdlIHJ1biBvdXQgb2YgbWVt
b3J5LgogICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3Qp
KTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwog
ICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiB9CiAKQEAgLTUw
NSw3ICs0ODEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludFplcm9T
aXplZExheWVyKQogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudFJlY3Quc2l6ZSgpKTsKICAg
ICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChjb250ZW50UmVjdCk7CiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNv
bnRlbnRSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRl
bnRSZWN0LCAwKTsKIAogICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgogICAg
IEVYUEVDVF9FUSgwdSwgbGF5ZXItPm51bVBhaW50ZWRUaWxlcygpKTsKQEAgLTUxMywxOSArNDg5
LDE3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkTGF5
ZXIpCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IG5lZWQgcHJlcGFpbnQuCiAgICAgRVhQRUNU
X0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludChjb250ZW50UmVjdCkpOwogCi0gICAgbGF5ZXIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIEVtcHR5IGxheWVycyBkb24n
dCBoYXZlIHRpbGVzLgogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAw
KSk7CiAKICAgICAvLyBOb24tdmlzaWJsZSBsYXllcnMgZG9uJ3QgaWRsZSBwYWludC4KLSAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZShjb250ZW50UmVjdCwgMCk7CisgICAgbGF5ZXItPmlk
bGVVcGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVudFJlY3QsIDApOwogCiAgICAgLy8gRW1w
dHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCiAgICAgRVhQRUNUX0VRKDB1LCBsYXllci0+bnVt
UGFpbnRlZFRpbGVzKCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
MCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKIAogICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgpAQCAtNTUwLDcgKzUy
NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkQW5p
bWF0aW5nTGF5ZXIpCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50UmVjdC5zaXplKCkpOwog
ICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnRlbnRSZWN0KTsKICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
Y29udGVudFJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgY29u
dGVudFJlY3QsIDApOwogCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCiAg
ICAgRVhQRUNUX0VRKDB1LCBsYXllci0+bnVtUGFpbnRlZFRpbGVzKCkpOwpAQCAtNTU4LDE5ICs1
MzIsMTcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6ZWRB
bmltYXRpbmdMYXllcikKICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgbmVlZCBwcmVwYWludC4K
ICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KGNvbnRlbnRSZWN0KSk7CiAK
LSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBs
YXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gRW1wdHkg
bGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFz
VGlsZUF0KDAsIDApKTsKIAogICAgIC8vIE5vbi12aXNpYmxlIGxheWVycyBkb24ndCBpZGxlIHBh
aW50LgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnRlbnRSZWN0LCAwKTsKKyAg
ICBsYXllci0+aWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CiAK
ICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxlcy4KICAgICBFWFBFQ1RfRVEoMHUs
IGxheWVyLT5udW1QYWludGVkVGlsZXMoKSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCkBA
IC01OTUsMjEgKzU2NywxOSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWlu
dE5vblZpc2libGVMYXllcnMpCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzKTsK
ICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlUmVjdCk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KHZpc2libGVSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZp
c2libGVSZWN0LCAwKTsKIAogICAgIC8vIE5vbi12aXNpYmxlIGxheWVycyBkb24ndCBuZWVkIGlk
bGUgcGFpbnQuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxl
UmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAg
IC8vIFdlIHNob3VsZCBub3QgaGF2ZSBhbnkgdGlsZXMgcHVzaGVkIHNpbmNlIHRoZSBsYXllciBp
cyBub3QgdmlzaWJsZS4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwg
MCkpOwogCiAgICAgLy8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0IGlkbGUgcGFpbnQuCi0gICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT5p
ZGxlVXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKIAotICAgIGxheWVy
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNo
UHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgbm90IGhh
dmUgYW55IHRpbGVzIHB1c2hlZCBzaW5jZSB0aGUgbGF5ZXIgaXMgbm90IHZpc2libGUuCkBAIC02
MTksOSArNTg5LDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25W
aXNpYmxlTGF5ZXJzKQogc3RhdGljIHZvaWQgaWRsZVBhaW50UmVwZWF0KGludCByZXBlYXRUaW1l
cywgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIEZha2VDQ1RpbGVkTGF5ZXJJbXBsKiBs
YXllckltcGwsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IEludFJlY3QmIHZpc2li
bGVSZWN0KQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0VGltZXM7ICsraSkgewot
ICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCAwKTsKLSAgICAgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIDApOwotICAgICAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICAgICAgbGF5ZXIt
PnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CisgICAgICAgIGxheWVy
LT5pZGxlVXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKICAgICAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsKTsKICAgICB9CiB9CkBAIC02NjksOCAr
NjM4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxl
QW5pbWF0aW5nTGF5ZXJzKQogICAgICAgICAgICAgYm9vbCBzaG91bGRQcmVwYWludCA9ICFsYXll
ci0+aWRsZVBhaW50UmVjdCh2aXNpYmxlUmVjdCkuaXNFbXB0eSgpOwogCiAgICAgICAgICAgICAv
LyBUaGlzIHBhaW50cyB0aGUgbGF5ZXIgYnV0IHRoZXJlJ3Mgbm90aGluZyB2aXNpYmxlIHNvIGl0
J3MgYSBuby1vcC4KLSAgICAgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJl
Y3QsIDApOwotICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwg
dXBkYXRlcik7CisgICAgICAgICAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZp
c2libGVSZWN0LCAwKTsKICAgICAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CiAKICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBub3QgaGF2ZSBhbnkgdGls
ZXMgcHVzaGVkIHlldCBzaW5jZSB0aGUgbGF5ZXIgaXMgbm90IHZpc2libGUgYW5kIHdlJ3ZlIG5v
dCBwcmVwYWludGVkLgpAQCAtNjk5LDEyICs2NjcsMTUgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7
CiAKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgRmFrZVRleHR1cmVBbGxvY2F0
b3IgZmFrZUFsbG9jYXRvcjsKKyAgICBGYWtlVGV4dHVyZUNvcGllciBmYWtlQ29waWVyOworICAg
IFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IGNyZWF0ZUNvbXBvc2l0b3JNb2Nr
R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMoKSk7CiAKICAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRo
ZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAy
MDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDAp
OwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAg
IGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCks
IDApOworICAgIHVwZGF0ZXIudXBkYXRlKGNvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAm
ZmFrZUNvcGllciwgMTAwMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwg
c2lkZS4KQEAgLTcxNCwyMCArNjg1LDIzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
aW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxU
ZXh0dXJlcygpOwogCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
UHJlcGFyZUNvdW50KCk7Ci0gICAgLy8gSW52b2tlIHByZXBhcmVUb1VwZGF0ZSBhZ2Fpbi4gQXMg
dGhlIGxheWVyIGlzIHZhbGlkIHByZXBhcmVUb1VwZGF0ZSBzaG91bGRuJ3QgYmUgaW52b2tlZCBv
bgorICAgIC8vIEludm9rZSB1cGRhdGVMYXllclJlY3QgYWdhaW4uIEFzIHRoZSBsYXllciBpcyB2
YWxpZCB1cGRhdGVMYXllclJlY3Qgc2hvdWxkbid0IGJlIGludm9rZWQgb24KICAgICAvLyB0aGUg
TGF5ZXJUZXh0dXJlVXBkYXRlci4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIs
IEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShjb250ZXh0
LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VDb3BpZXIsIDEwMDApOwogICAgIEVYUEVDVF9F
USgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwog
CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7Ci0gICAg
Ly8gc2V0UmVjdFRvSW52YWxpZGF0ZSB0cmlnZ2VycyBpbnZhbGlkYXRlUmVjdCgpIGJlaW5nIGlu
dm9rZWQgZnJvbSBwcmVwYXJlVG9VcGRhdGUuCisgICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0ZSB0
cmlnZ2VycyBpbnZhbGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSB1cGRhdGVMYXllclJl
Y3QuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFs
aWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKICAgICBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXll
ci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsK
KyAgICB1cGRhdGVyLnVwZGF0ZShjb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VD
b3BpZXIsIDEwMDApOwogICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwotICAgIC8vIFRoZSBsYXllciBzaG91bGQgc3Rp
bGwgYmUgaW52YWxpZCBhcyBwcmVwYXJlVG9VcGRhdGUgaW52b2tlZCBpbnZhbGlkYXRlLgotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAg
IC8vIFRoZSBsYXllciBzaG91bGQgc3RpbGwgYmUgaW52YWxpZCBhcyB1cGRhdGVMYXllclJlY3Qg
aW52b2tlZCBpbnZhbGlkYXRlLgorICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIHVwZGF0ZXIudXBkYXRlKGNvbnRleHQu
Z2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgMTAwMCk7CiAgICAgRVhQRUNUX0VR
KDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiB9
CiAKQEAgLTc1MSwyMSArNzI1LDE4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVy
aWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogICAgIC8vIE9uIGZpcnN0
IHVwZGF0ZSwgdGhlIHVwZGF0ZVJlY3QgaW5jbHVkZXMgYWxsIHRpbGVzLCBldmVuIGJleW9uZCB0
aGUgYm91bmRhcmllcyBvZiB0aGUgbGF5ZXIuCiAgICAgLy8gSG93ZXZlciwgaXQgc2hvdWxkIHN0
aWxsIGJlIGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShj
b250ZW50Qm91bmRzLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygw
LCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRC
b3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAzMDAs
IDMwMCAqIDAuOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gQWZ0ZXIgdGhlIHRp
bGVzIGFyZSB1cGRhdGVkIG9uY2UsIGFub3RoZXIgaW52YWxpZGF0ZSBvbmx5IG5lZWRzIHRvIHVw
ZGF0ZSB0aGUgYm91bmRzIG9mIHRoZSBsYXllci4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
Y29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRz
LCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsK
KyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwog
ICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdChsYXllckJvdW5kcyksIGxheWVyLT51
cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gUGFydGlhbCByZS1wYWludCBzaG91bGQgYWxzbyBiZSBy
ZXByZXNlbnRlZCBieSB0aGUgdXBkYXRlUmVjdCBpbiBsYXllciBzcGFjZSwgbm90IGNvbnRlbnQg
c3BhY2UuCiAgICAgSW50UmVjdCBwYXJ0aWFsRGFtYWdlKDMwLCAxMDAsIDEwLCAxMCk7CiAgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KHBhcnRpYWxEYW1hZ2UpOwotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVy
LCBjb250ZW50Qm91bmRzLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3Qo
NDUsIDgwLCAxNSwgOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogfQogCkBAIC03ODYsOCArNzU3
LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVu
Q29udGVudHNTY2FsZUNoYW5nZXMpCiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0
KDAsIDAsIDEwMCwgMTAwKSwgbGF5ZXItPmxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkpOwogCiAgICAg
Ly8gUHVzaCB0aGUgdGlsZXMgdG8gdGhlIGltcGwgc2lkZSBhbmQgY2hlY2sgdGhhdCB0aGVyZSBp
cyBleGFjdGx5IG9uZS4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwg
MTAwLCAxMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApLCAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwu
Z2V0KCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKICAg
ICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkpOwpAQCAtODAwLDggKzc3
MCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hl
bkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVj
dCgwLCAwLCAxMDAsIDEwMCksIGxheWVyLT5sYXN0TmVlZHNEaXNwbGF5UmVjdCgpKTsKIAogICAg
IC8vIFRoZSBpbXBsIHNpZGUgc2hvdWxkIGdldCAyeDIgdGlsZXMgbm93LgotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAyMDAsIDIwMCksIDApOwotICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVM
YXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCksIDApOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5
ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFz
VGlsZUF0KDAsIDEpKTsKQEAgLTgxMSw4ICs3ODAsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICAv
LyBJbnZhbGlkYXRlIHRoZSBlbnRpcmUgbGF5ZXIgYWdhaW4sIGJ1dCBkbyBub3QgcGFpbnQuIEFs
bCB0aWxlcyBzaG91bGQgYmUgZ29uZSBub3cgZnJvbSB0aGUKICAgICAvLyBpbXBsIHNpZGUuCiAg
ICAgbGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgxLCAwLCAwLCAxKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJ
bnRSZWN0KDEsIDAsIDAsIDEpLCAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAw
KSk7CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsKQEAgLTg1
MSw4ICs4MTksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBzRHJhd0dldHNS
ZXNldCkKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAg
IGNjTGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAzMDApKTsKICAg
ICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhtZW1vcnlMaW1pdCk7Ci0g
ICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICBjY0xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVw
ZGF0ZXIpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogCiAg
ICAgLy8gV2UnbGwgc2tpcCB0aGUgcm9vdCBsYXllci4KICAgICBFWFBFQ1RfVFJVRShyb290TGF5
ZXItPnNraXBzRHJhdygpKTsKQEAgLTg2NCw3ICs4MzEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHNraXBzRHJhd0dldHNSZXNldCkKICAgICAvLyBSZW1vdmUgdGhlIGNoaWxkIGxh
eWVyLgogICAgIHJvb3RMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAotICAgIGNjTGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnModXBkYXRlcik7CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOwog
CiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoMCk7CkBAIC04NzYsMTAgKzg0Mywx
MSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHJlc2l6ZVRvU21hbGxlcikKIHsKICAg
ICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZSg2MCoxMDI0KjEwMjQsIDYwKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
Q2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVw
ZGF0ZXI7CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNzAwLCA3MDApKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwotICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOworICAgIGxheWVy
LT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOwog
CiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDIwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMjAwLCAyMDApKTsKQEAgLTg4OSwxMyArODU3LDE0
IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaHVnZUxheWVyVXBkYXRlQ3Jhc2gpCiB7
CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5h
Z2VyOjpjcmVhdGUoNjAqMTAyNCoxMDI0LCA2MCoxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0
cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRM
YXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgQ0NUZXh0dXJlVXBkYXRl
ciB1cGRhdGVyOwogCiAgICAgaW50IHNpemUgPSAxIDw8IDMwOwogICAgIGxheWVyLT5zZXRCb3Vu
ZHMoSW50U2l6ZShzaXplLCBzaXplKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoMCwgMCwgc2l6ZSwgc2l6ZSkpOwogCiAgICAgLy8gRW5zdXJlIG5vIGNyYXNoIGZvciBib3Vu
ZHMgd2hlcmUgc2l6ZSAqIHNpemUgd291bGQgb3ZlcmZsb3cgYW4gaW50LgotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOworICAgIGxheWVyLT51
cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDApOwogfQog
CiBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQpAQCAtOTI1LDgg
Kzg5NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAg
ICAgY2NMYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDIwMCkpOwog
CiAgICAgLy8gRnVsbCB1cGRhdGUgb2YgYWxsIDYgdGlsZXMuCi0gICAgY2NMYXllclRyZWVIb3N0
LT51cGRhdGVMYXllcnMoKTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOworICAgIGNjTGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgIHVwZGF0ZXIudXBkYXRlKDAs
ICZhbGxvY2F0b3IsICZjb3BpZXIsIDQpOwogICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUodXBk
YXRlci5oYXNNb3JlVXBkYXRlcygpKTsKQEAgLTkzOSw4ICs5MDcsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogCiAgICAgLy8gRnVsbCB1cGRhdGUgb2Yg
MyB0aWxlcyBhbmQgcGFydGlhbCB1cGRhdGUgb2YgMyB0aWxlcy4KICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAzMDAsIDE1MCkpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+
dXBkYXRlTGF5ZXJzKCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAgICBjY0xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAm
YWxsb2NhdG9yLCAmY29waWVyLCA0KTsKICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgIEVYUEVDVF9UUlVFKHVwZGF0
ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CkBAIC05NTMsOCArOTIwLDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKIAogICAgIC8vIFBhcnRpYWwgdXBkYXRlIG9m
IDYgdGlsZXMuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAs
IDEwMCkpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgY2NMYXll
clRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29u
dGV4dCgpLCB1cGRhdGVyKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRh
dGVyKTsKICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAmY29waWVyLCA0KTsKICAg
ICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNv
dW50KCkpOwogICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CkBAIC05
NzQsMTIgKzk0MCwxMyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRl
ZFdpdGhvdXRPY2NsdXNpb24pCiB7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJl
TWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0
LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9w
dFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwor
ICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMg
MTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgog
ICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogCiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRl
TGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBFWFBF
Q1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291
bnQoKSk7CiB9CiAKQEAgLTk4OCw2ICs5NTUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2Vy
PiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQsIDIq
MTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5n
ZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CisgICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgog
CkBAIC05OTcsNyArOTY1LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1Bh
aW50ZWRXaXRoT2NjbHVzaW9uKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIw
MCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJl
Y3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVM
YXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAg
ICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRy
aWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMDA4LDcgKzk3Niw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikK
IAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDI1MCwgMjAwLCAzMDAsIDEwMCkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0g
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1
ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwg
NjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0yLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9O
RUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAs
IDEpOwpAQCAtMTAxOSw3ICs5ODcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRp
bGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiAKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50
UmVjdCgyNTAsIDI1MCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVj
dCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBF
Q1RfRVEoMzYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENv
dW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4
ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMDMyLDYgKzEwMDAsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxp
dHlDb25zdHJhaW50cykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQp
OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKQEAgLTEwNDIsNyArMTAx
MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1
c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJ
bnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNjApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCA2MDAsIDM2MCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVy
UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzYwKSwgJm9jY2x1ZGVkKTsKICAgICBF
WFBFQ1RfRVEoMjQtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVS
ZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3Mo
KS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwNTUsNyArMTAyNCw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZp
c2libGl0eUNvbnN0cmFpbnRzKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIw
MCwgMjAwLCAzMDAsIDE1MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJl
Y3QoMCwgMCwgNjAwLCAzNTApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAw
LCA2MDAsIDM1MCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzUwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEo
MjQtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNV
cGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwNjgsNyArMTAzNyw3IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNv
bnN0cmFpbnRzKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAz
MDAsIDE1MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwg
NjAwLCAzNDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAs
IDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDM0
MCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDYwMCwgMzQwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMjQtNiwgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAg
ICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9w
YXF1ZSgpLCAwLCAxKTsKQEAgLTEwODIsNiArMTA1MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKICAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0
KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
ckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRl
eHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRl
ZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAuCiAKQEAgLTEwOTEsNyArMTA2MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKICAgICBvY2NsdWRl
ZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+
c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxh
eWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZv
Y2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQu
b3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMTAx
LDcgKzEwNzEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRl
ZFdpdGhvdXRJbnZhbGlkYXRpb24pCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOwogCiAgICAgLy8gUmVwYWludCB3aXRob3V0IG1h
cmtpbmcgaXQgZGlydHkuIFRoZSBjdWxsZWQgdGlsZXMgcmVtYWluZWQgZGlydHkuCi0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsK
KyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2
MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1
ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAt
MTExNCw2ICsxMDg0LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50
ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3JtcykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMiox
MDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXll
ciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdl
dCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1
cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAK
QEAgLTExMjgsNyArMTA5OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQ
YWludGVkV2l0aE9jY2x1c2lvbkFuZFRyYW5zZm9ybXMpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVz
aW9uKEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxh
eWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBs
YXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAm
b2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVk
Lm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTE0
MSw2ICsxMTEyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRX
aXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1
cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEw
MjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFk
b3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7
CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1cmVVcGRh
dGVyIHVwZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKQEAgLTEx
NTQsNyArMTEyNiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVk
V2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJl
Y3QoMjAwLCAyMDAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qo
SW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVw
ZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVk
KTsKICAgICAvLyBUaGUgY29udGVudCBpcyBoYWxmIHRoZSBzaXplIG9mIHRoZSBsYXllciAoc28g
dGhlIG51bWJlciBvZiB0aWxlcyBpcyBmZXdlcikuCiAgICAgLy8gSW4gdGhpcyBjYXNlLCB0aGUg
Y29udGVudCBpcyAzMDB4MzAwLCBhbmQgc2luY2UgdGhlIHRpbGUgc2l6ZSBpcyAxMDAsIHRoZQog
ICAgIC8vIG51bWJlciBvZiB0aWxlcyAzeDMuCkBAIC0xMTcyLDcgKzExNDQsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5n
KQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDIwMCkp
OwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5
ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwg
NjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAw
LCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDktMSwg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAK
ICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRl
ZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTExOTAsNyArMTE2Miw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgb2Nj
bHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDE1MCwgMTAwKSk7CiAgICAgbGF5
ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRz
KCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZv
Y2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVD
VF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCks
IDAsIDEpOwpAQCAtMTIwMyw2ICsxMTc1LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+
IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMiox
MDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXll
ciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdl
dCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1
cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNv
IHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcyBpbiB2YXJpb3VzIHdh
eXMuCiAKQEAgLTEyMjAsNyArMTE5Myw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgLy8gSWYgdGhlIGxheWVyIGRvZXNuJ3Qg
cGFpbnQgb3BhcXVlIGNvbnRlbnQsIHRoZW4gdGhlIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9u
IHNob3VsZCBiZSBlbXB0eS4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5k
cywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRl
bnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJs
ZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250ZW50cy5p
c0VtcHR5KCkpOwogCkBAIC0xMjMzLDcgKzEyMDYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIG9wYXF1ZVBhaW50UmVjdCA9
IEludFJlY3QoMTAsIDEwLCA5MCwgMTkwKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KG9wYXF1ZVBhaW50UmVjdCk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRh
dGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0
KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgb3BhcXVlQ29udGVudHMg
PSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfRVFfUkVD
VChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29u
dGVudHMuYm91bmRzKCkpOwogICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMo
KS5zaXplKCkpOwpAQCAtMTI0NSw3ICsxMjE4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKIAogICAgIC8vIElmIHdlIHBhaW50IGFn
YWluIHdpdGhvdXQgaW52YWxpZGF0aW5nLCB0aGUgc2FtZSBzdHVmZiBzaG91bGQgYmUgb3BhcXVl
LgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJl
Y3QoSW50UmVjdCgpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMs
ICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBjb250ZW50
Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVD
b250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9w
YXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsK
ICAgICBFWFBFQ1RfRVEoMXUsIG9wYXF1ZUNvbnRlbnRzLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTEy
NTksNyArMTIzMiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNvbnRl
bnRPcGFxdWVSZWdpb24pCiAgICAgLy8gbm90IGJlIGFmZmVjdGVkLgogICAgIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAg
ICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxLCAxKSk7Ci0gICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51
cGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICBv
cGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAg
IEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3Vu
ZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVD
b250ZW50cy5yZWN0cygpLnNpemUoKSk7CkBAIC0xMjczLDcgKzEyNDYsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIC8vIG5v
dCBiZSBhZmZlY3RlZC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0
T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoMTAsIDEwLCAxLCAxKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50
Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwg
Y29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52
aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2Vj
dGlvbihJbnRSZWN0KDEwLCAxMDAsIDkwLCAxMDApLCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29u
dGVudHMuYm91bmRzKCkpOwogICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMo
KS5zaXplKCkpOwpAQCAtMTI4NCw3ICsxMjU3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKICAgICBFWFBFQ1RfRVEoMCwgb2NjbHVk
ZWQub3ZlcmRyYXdNZXRyaWNzKCkudGlsZXNDdWxsZWRGb3JVcGxvYWQoKSk7CiAKICAgICAvLyBO
byBtZXRyaWNzIGFyZSByZWNvcmRlZCBpbiBwcmVwYWludCwgc28gdGhlIHZhbHVlcyBzaG91bGQg
bm90IGNoYW5nZSBmcm9tIGFib3ZlLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKGNv
bnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPmlkbGVVcGRhdGVMYXllclJlY3Qo
dXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfTkVBUihvY2Ns
dWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNQYWludGVkKCksIDIwMDAwICogMiArIDEgICsg
MSwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxz
VXBsb2FkZWRPcGFxdWUoKSwgMTcxMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92
ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkVHJhbnNsdWNlbnQoKSwgMjAwMDAgKyAyMDAw
MCAtIDE3MTAwICsgMSArIDEsIDEpOwpAQCAtMTI5Niw2ICsxMjY5LDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwaXhlbHNQYWludGVkTWV0cmljcykKICAgICBPd25QdHI8VGV4dHVy
ZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQq
MTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9t
aXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVN
YW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAg
ICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEw
MHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcyBpbiB2
YXJpb3VzIHdheXMuCiAKQEAgLTEzMTMsNyArMTI4Nyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcGl4ZWxzUGFpbnRlZE1ldHJpY3MpCiAgICAgLy8gSW52YWxpZGF0ZXMgYW5kIHBh
aW50cyB0aGUgd2hvbGUgbGF5ZXIuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRl
UmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRC
b3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBj
b250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZp
c2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX1RSVUUob3BhcXVlQ29udGVu
dHMuaXNFbXB0eSgpKTsKIApAQCAtMTMyNyw3ICsxMzAxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBwaXhlbHNQYWludGVkTWV0cmljcykKICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMSwgMSkpOwogICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChJbnRSZWN0KDUwLCAyMDAsIDEwLCAxMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJS
ZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgb3BhcXVlQ29udGVu
dHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJV
RShvcGFxdWVDb250ZW50cy5pc0VtcHR5KCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136372</attachid>
            <date>2012-04-09 19:08:30 -0700</date>
            <delta_ts>2012-04-10 12:37:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83530-20120409190829.patch</filename>
            <type>text/plain</type>
            <size>114075</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQ4NzBiNWNiYmExZjM2
YjQ3NTI2ZjcyOWRiYTVjZTdjNzhmNjI4YS4uNWU0NmVlNTViNGNlZjk3ODE1MjgxODlhMjk4Njgx
MjE5MDcwMTg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkyIEBACiAyMDEyLTA0LTA5ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBG
b2xkIExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaW50byBtYWluIHVw
ZGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM1
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB1
c2VkIHRvIHVwZGF0ZSBsYXllciBjb250ZW50cyBpbiB0d28gcGhhc2VzLiBUaGUgZmlyc3QsIGNh
bGxlZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIC8KKyAgICAgICAgaWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KCksIHJhbiBvbiB0aGUgbWFpbiBXZWJLaXQgdGhyZWFkIGFuZCB0b29rIGNhcmUgb2Yg
YW55IG1haW4tdGhyZWFkIHdvcmsgLSBwcmltYXJpbHkKKyAgICAgICAgV2ViQ29yZSBwYWludGlu
ZyBhcyB0aGUgbmFtZSBpbXBsaWVzLiBUaGUgc2Vjb25kLCBjYWxsZWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygpLCByYW4gb24gdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgdGhyZWFkIHdpdGgg
dGhlIG1haW4gdGhyZWFkIGJsb2NrZWQgYW5kIHRvb2sgY2FyZSBvZiBhbnkgYWN0aW9ucyB0aGF0
IHJlcXVpcmVkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGNvbXBvc2l0b3IncworICAgICAgICBjb250
ZXh0IC0gc3VjaCBhcyB0ZXh0dXJlIHVwbG9hZHMgaW50byBjb21wb3NpdG9yLW1hbmFnZWQgdGV4
dHVyZXMuIE5vdyB0aGF0IGFsbCBjb21wb3NpdG9yIHRleHR1cmUgb3BlcmF0aW9ucworICAgICAg
ICBhcmUgcXVldWVkIG9uIGEgQ0NUZXh0dXJlVXBkYXRlciwgdGhlIGNvbXBvc2l0b3IgY2FuIHRh
a2UgY2FyZSBvZiB0aGVzZSBvcGVyYXRpb25zIG9uIHRoZSBjb3JyZWN0IHRocmVhZCBhdCB0aGUK
KyAgICAgICAgcmlnaHQgdGltZSB3aXRob3V0IG5lZWRpbmcgbGF5ZXItc3BlY2lmaWMgbG9naWMu
CisKKyAgICAgICAgVGhpcyBmb2xkcyBib3RoIGZ1bmN0aW9ucyBpbnRvIG9uZSBmdW5jdGlvbiBj
YWxsZWQgTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKCkgKGFuZCBpZGxlVXBkYXRlKCkgZm9yIGlkbGUK
KyAgICAgICAgcHJlcGFpbnRpbmcpIGFuZCBhZGRzIGEgQ0NUZXh0dXJlVXBkYXRlciByZWZlcmVu
Y2UgZm9yIHF1ZXVpbmcgdXAgdGV4dHVyZSBvcGVyYXRpb25zLgorCisgICAgICAgIFRoZSBDQ1By
b3h5IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIENDVGV4dHVyZVVwZGF0
ZXIuIEluIHRoZSB0aHJlYWRlZCBwcm94eSwgdGhlIHVwZGF0ZXIgaXMKKyAgICAgICAgdGllZCB0
byB0aGUgbGlmZXRpbWUgb2YgdGhlIGJlZ2luRnJhbWUgb3BlcmF0aW9uLiBTcGVjaWZpY2FsbHkg
aXQncyBjb25zdHJ1Y3RlZCBvbiB0aGUgaW1wbCB0aHJlYWQgd2hlbiB0aGUKKyAgICAgICAgYmVn
aW5GcmFtZSBtZXNzYWdlIGlzIGdlbmVyYXRlZCwgaXMgYWNjZXNzZWQgYnkgcmVmZXJlbmNlIG9u
IHRoZSBtYWluIHRocmVhZCBkdXJpbmcgdGhlIGNvbW1pdCwgYW5kIHRoZW4KKyAgICAgICAgZGVz
dHJveWVkIGJ5IHRoZSBwcm94eSB3aGVuIHRoZSBjb21taXQgaXMgY29tcGxldGUuIENDVGV4dHVy
ZVVwZGF0ZXI6OnVwZGF0ZSBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIGltcGwKKyAgICAg
ICAgdGhyZWFkIGJ5IHRoZSBwcm94eS4gSW4gdGhlIGZ1dHVyZSwgaXQgbWlnaHQgYmUgd29ydGgg
ZXhwb3NpbmcgYSBtb3JlIGxpbWl0ZWQgaW50ZXJmYWNlIHRvIGxheWVycy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChDYW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dExheWVyQ2hyb21pdW06OmlkbGVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgIChDb250ZW50TGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6dXBkYXRlTGF5ZXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKEltYWdlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hy
b21pdW06OmlkbGVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxl
Ojppc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0YWJsZVRpbGU6OmNvcHlBbmRDbGVh
ckRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0YWJsZVRpbGU6OmlzRGlydHlGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoVXBkYXRhYmxlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpV
cGRhdGFibGVUaWxlOjpVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVk
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVy
Q2hyb21pdW06OmludmFsaWRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6dGlsZU9ubHlOZWVkc1BhcnRpYWxVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZExheWVyQ2hyb21pdW06OnJlc2VydmVUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZExheWVyQ2hyb21pdW06OnJlc2V0VXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjp1cGRhdGVMYXllclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjppZGxlVXBkYXRlTGF5ZXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVkTGF5ZXJDaHJvbWl1bTo6bmVlZHNJZGxlUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVGlsZWRM
YXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVt
Ojp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0Q29tcGxldGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjpyZXNlcnZlVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xh
eWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQ
cm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6
Y29tbWl0SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDU2luZ2xlVGhyZWFkUHJveHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5G
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25D
b21taXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OkJlZ2luRnJhbWVBbmRD
b21taXRTdGF0ZTo6QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKToKKyAgICAgICAgKEJlZ2luRnJh
bWVBbmRDb21taXRTdGF0ZSk6CisKKzIwMTItMDQtMDkgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIERlZmVyIHRleHR1cmUgaWQgYWxs
b2NhdGlvbiBmb3IgY29waWVzIHVudGlsIHRoZSBhY3R1YWwgY29weSBleGVjdXRlcwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM1MTQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCA1ZGEyN2NjNmEwMzk4NzIzZGY2OWFlOTgxMGUwZDA3YzBh
YjVkOGUwLi4yOThmNzJkNzg2MDhlMjQ3NzU2NTIwYWExMDc1MTkwZjk1OGQwZmZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDEyLTA0LTA5ICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBGb2xk
IExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaW50byBtYWluIHVwZGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM1MzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
dGVzdHMgZm9yIGludGVyZmFjZSBjaGFuZ2VzLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OnJ1blRl
c3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6dXBkYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OmlkbGVVcGRhdGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmcpOgorICAgICAgICAoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6YWZ0ZXJUZXN0
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFNldFZpZXdwb3J0U2l6ZTo6YmVn
aW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdp
dGhQYXJ0aWFsVXBkYXRlOjpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RG
OjpUZXN0TGF5ZXJDaHJvbWl1bTo6dXBkYXRlKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdExheWVyT2NjbHVzaW9uOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0Q29udGVudExheWVyT2NjbHVzaW9uOjpiZWdpblRlc3QpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0TGF5ZXJPY2NsdXNpb25XaXRoRmlsdGVyczo6YmVnaW5U
ZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE1hbnlTdXJmYWNlczo6YmVn
aW5UZXN0KToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlTGF5ZXJS
ZWN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjp1cGRh
dGUpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAgICAgICAg
KEZha2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKEZha2VUaWxlZExheWVyQ2hyb21p
dW0pOgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAg
ICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpU
RVNUKToKKyAgICAgICAgKFdURjo6aWRsZVBhaW50UmVwZWF0KToKKworMjAxMi0wNC0wOSAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0g
RGVmZXIgdGV4dHVyZSBpZCBhbGxvY2F0aW9uIGZvciBjb3BpZXMgdW50aWwgdGhlIGFjdHVhbCBj
b3B5IGV4ZWN1dGVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MzUxNAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCBi
ZmE4MzRlMjYyZjMxNmVjYWQ0NzM1NjkyZTBhY2M0MGRhYWZjYWIwLi4zYTE0ZDVhMTBlZWM4NzMx
NTU0YWY1ZTViMDg2OTZjYTlkZTQ1N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTkzLDkgKzkzLDkgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnNl
dENhbnZhcyhTa0NhbnZhcyogY2FudmFzKQogICAgIG1fY2FudmFzID0gY2FudmFzOwogfQogCi12
b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKiAvKiBvY2NsdXNpb24gKi8pCit2b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9u
VHJhY2tlciopCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50c0lmRGlydHkiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNh
bnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkiKTsKICAgICBpZiAoIWRy
YXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwNSw3ICsxMDUsOCBAQCB2b2lk
IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2Ns
dXNpb25UcmFja2VyKiAvKiBvYwogICAgICAgICAgICAgbV9mcm9udFRleHR1cmUtPnNldFRleHR1
cmVNYW5hZ2VyKHRleHR1cmVNYW5hZ2VyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9m
cm9udFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsKLSAg
ICAgICAgbV9mcm9udFRleHR1cmUtPnJlc2VydmUobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSk7CisgICAgICAgIGlmIChtX2Zyb250VGV4dHVyZS0+cmVzZXJ2ZShtX3NpemUsIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBKSkKKyAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kTWFuYWdlZENv
cHkobV9iYWNrVGV4dHVyZUlkLCBtX2Zyb250VGV4dHVyZS5nZXQoKSwgbV9zaXplKTsKICAgICB9
CiAKICAgICBpZiAoIW5lZWRzRGlzcGxheSgpKQpAQCAtMTIxLDIyICsxMjIsMTQgQEAgdm9pZCBD
YW52YXMyRExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVz
aW9uVHJhY2tlciogLyogb2MKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2FudmFzKSB7
Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJTa0NhbnZhczo6Zmx1c2giLCBtX2NhbnZhcywgMCk7Cisg
ICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiU2tDYW52YXM6OmZsdXNoIik7CiAgICAgICAgIG1f
Y2FudmFzLT5mbHVzaCgpOwogICAgIH0KIAotICAgIFRSQUNFX0VWRU5UKCJHcmFwaGljc0NvbnRl
eHQzRDo6Zmx1c2giLCBtX2NvbnRleHQsIDApOworICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiR3Jh
cGhpY3NDb250ZXh0M0Q6OmZsdXNoIik7CiAgICAgbV9jb250ZXh0LT5mbHVzaCgpOwogfQogCi12
b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKLXsKLSAg
ICBpZiAoIW1fYmFja1RleHR1cmVJZCB8fCAhbV9mcm9udFRleHR1cmUgfHwgIW1fZnJvbnRUZXh0
dXJlLT5pc1ZhbGlkKG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICB1cGRhdGVyLmFwcGVuZE1hbmFnZWRDb3B5KG1fYmFja1RleHR1cmVJZCwg
bV9mcm9udFRleHR1cmUuZ2V0KCksIG1fc2l6ZSk7Ci19Ci0KIHZvaWQgQ2FudmFzMkRMYXllckNo
cm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIHsKICAgICBDYW52
YXNMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKGxheWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmgKaW5kZXggYjVkMGMyMzg5MWZiMDViNjIxODI0OTEwMjUwZDU5MGI4
YjcyYzY3Mi4uYTIyZjk3ZWJkYjc4MTVmYTQzM2UwMmQ5Y2NiNDFiMjEzNjEyNjUwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTU1LDkgKzU1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwog
CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKLQotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJl
VXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogICAgIHZpcnR1YWwgdm9pZCBw
dXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2
ZUNvbnRlbnRzVGV4dHVyZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggNzUxYmM2NWY2ZWUzZTc0ZjUxNzIxMDlmMTU4ZjA1NWEwMGFlZDAzZC4uYWU4ZDMyMDhi
ZmJhYjhkN2FkZTk4MmE3ZDhhOTNhMmQ4M2VkN2RhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcApAQCAtOTQsMjkgKzk0LDI5IEBAIGJvb2wgQ29udGVudExheWVyQ2hyb21p
dW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
ZHJhd3NDb250ZW50KCkgJiYgbV9kZWxlZ2F0ZTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2Ns
dXNpb24pCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRl
ciYgdXBkYXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAg
dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKICAgICBjcmVhdGVUZXh0dXJlVXBkYXRl
cklmTmVlZGVkKCk7CiAKICAgICBJbnRSZWN0IGxheWVyUmVjdDsKIAotICAgIC8vIEFsd2F5cyBj
YWxsIHByZXBhcmVUb1VwZGF0ZSgpIGJ1dCB3aXRoIGFuIGVtcHR5IGxheWVyIHJlY3RhbmdsZSB3
aGVuCisgICAgLy8gQWx3YXlzIGNhbGwgdXBkYXRlTGF5ZXJSZWN0KCkgYnV0IHdpdGggYW4gZW1w
dHkgbGF5ZXIgcmVjdGFuZ2xlIHdoZW4KICAgICAvLyBsYXllciBkb2Vzbid0IGRyYXcgY29udGVu
dHMuCiAgICAgaWYgKGRyYXdzQ29udGVudCgpKQogICAgICAgICBsYXllclJlY3QgPSB2aXNpYmxl
TGF5ZXJSZWN0KCk7CiAKLSAgICBwcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0LCBvY2NsdXNpb24p
OworICAgIHVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBsYXllclJlY3QsIG9jY2x1c2lvbik7CiAg
ICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2Nj
bHVzaW9uKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVVwZGF0ZShDQ1RleHR1cmVV
cGRhdGVyJiB1cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKIHsK
ICAgICBpZiAoIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBJ
bnRSZWN0IGxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKLSAgICBwcmVwYXJlVG9VcGRh
dGVJZGxlKGxheWVyUmVjdCwgb2NjbHVzaW9uKTsKKyAgICBpZGxlVXBkYXRlTGF5ZXJSZWN0KHVw
ZGF0ZXIsIGxheWVyUmVjdCwgb2NjbHVzaW9uKTsKICAgICBpZiAobmVlZHNJZGxlUGFpbnQobGF5
ZXJSZWN0KSkKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oCmluZGV4IGU2OTk0YTIxYWVmYWMyMTQwODg3ZTViYmQ4YWJiMjAzYzlhYjgx
NzkuLjQ3M2IzODBmYWYzNTUwMThkNzFkYWE4NzI3ZDRiZjYzNWRhMWViYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjbGVhckRlbGVnYXRlKCkgeyBtX2RlbGVnYXRlID0gMDsgfQogCiAgICAgdmlydHVhbCBib29s
IGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZE
aXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tl
ciopOworICAgIHZpcnR1YWwgdm9pZCBpZGxlVXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBjb25z
dCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9v
bCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDM5MzkxNThhODViNTcz
ZmIyZDRiNTdmZTFhNWVmNmYyZmJmMGZmMDEuLmQ0YTQzMDEyZDQ1NmI5MTAwMGRhZjcyZTIxYzVi
ZGVhZGI1MzViYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtODMsNyAr
ODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2Ft
cGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZv
cm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCAvKiBi
b3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sIEludFJlY3QqIC8qIHJl
c3VsdGluZ09wYXF1ZVJlY3QgKi8pCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyUmVjdChj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCAv
KiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sIEludFJlY3QqIC8q
IHJlc3VsdGluZ09wYXF1ZVJlY3QgKi8pCiAgICAgewogICAgICAgICBtX3RleFN1YkltYWdlLnNl
dFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAgICAgfQpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQg
SW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAgICAgc2V0
TmVlZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKK3ZvaWQgSW1h
Z2VMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0
ZXJJZk5lZWRlZCgpOwogICAgIGlmIChtX25lZWRzRGlzcGxheSkgewpAQCAtMTY4LDcgKzE2OCw3
IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBD
Q09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvCiAgICAgICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFs
c2U7CiAgICAgfQogCi0gICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2Nj
bHVzaW9uKTsKKyAgICB1cGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZUxheWVyUmVjdCgp
LCBvY2NsdXNpb24pOwogfQogCiB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVy
ZVVwZGF0ZXJJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGIwMWVm
MjlkYTEzZDBlMTExNWU4NDFhYzIwZjRlNjBlOGFjMTY0M2YuLjQ5NDg4Y2QwODA0MjFkNGMxOGI5
ODliYzY5NGI3MjBiMjFiOTY3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0oKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyKik7CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0Owog
CiAgICAgdm9pZCBzZXRDb250ZW50cyhJbWFnZSogaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IGU4N2IwNzRjYjIwMTlhOTI4NGEzYWQyYmRjNDRjN2UzZGZiZTU2YmMuLmIxMzFhMWJiNjhh
ZjNkYTkyZDBiYTdkODdhNDg4MDQyM2RjNGVjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE3
MSw5ICsxNzEsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBu
ZWVkIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciog
Lyogb2NjbHVzaW9uICovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogLyogb2NjbHVzaW9uICovKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4
dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgaWRsZVVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IGYxZjEwZTk3YmEwYjVmOTljNTRmMjAyMjExMThmMmEzNGM5ZTA5ZWEuLmVlZDNlZWRj
ZmFjZGNmYmRmZjkxM2E4NDQxNjI4YjBiZTUzNGMxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcApAQCAtNjQsMjQgKzY0LDI0IEBAIHB1YmxpYzoKICAgICBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CiAg
ICAgTWFuYWdlZFRleHR1cmUqIG1hbmFnZWRUZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLT50
ZXh0dXJlKCk7IH0KIAotICAgIGJvb2wgaXNEaXJ0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2RpcnR5
UmVjdC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhZGly
dHlSZWN0LmlzRW1wdHkoKTsgfQogICAgIHZvaWQgY29weUFuZENsZWFyRGlydHkoKQogICAgIHsK
LSAgICAgICAgbV91cGRhdGVSZWN0ID0gbV9kaXJ0eVJlY3Q7Ci0gICAgICAgIG1fZGlydHlSZWN0
ID0gSW50UmVjdCgpOworICAgICAgICB1cGRhdGVSZWN0ID0gZGlydHlSZWN0OworICAgICAgICBk
aXJ0eVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgfQogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUg
bGF5ZXIgd2FzIGRpcnR5IGFuZCBub3QgdXBkYXRlZCBpbiB0aGUgY3VycmVudCBmcmFtZS4gRm9y
IHRpbGVzIHRoYXQgd2VyZSBub3QgY3VsbGVkLCB0aGUKICAgICAvLyB1cGRhdGVSZWN0IGhvbGRz
IHRoZSBhcmVhIG9mIHRoZSB0aWxlIHRoYXQgd2FzIHVwZGF0ZWQuIE90aGVyd2lzZSwgdGhlIGFy
ZWEgdGhhdCB3b3VsZCBoYXZlIGJlZW4gdXBkYXRlZC4KLSAgICBib29sIGlzRGlydHlGb3JDdXJy
ZW50RnJhbWUoKSB7IHJldHVybiAhbV9kaXJ0eVJlY3QuaXNFbXB0eSgpICYmIChtX3VwZGF0ZVJl
Y3QuaXNFbXB0eSgpIHx8ICFtX3VwZGF0ZWQpOyB9CisgICAgYm9vbCBpc0RpcnR5Rm9yQ3VycmVu
dEZyYW1lKCkgeyByZXR1cm4gIWRpcnR5UmVjdC5pc0VtcHR5KCkgJiYgKHVwZGF0ZVJlY3QuaXNF
bXB0eSgpIHx8ICF1cGRhdGVkKTsgfQogCi0gICAgSW50UmVjdCBtX2RpcnR5UmVjdDsKLSAgICBJ
bnRSZWN0IG1fdXBkYXRlUmVjdDsKLSAgICBib29sIG1fcGFydGlhbFVwZGF0ZTsKLSAgICBib29s
IG1fdXBkYXRlZDsKKyAgICBJbnRSZWN0IGRpcnR5UmVjdDsKKyAgICBJbnRSZWN0IHVwZGF0ZVJl
Y3Q7CisgICAgYm9vbCBwYXJ0aWFsVXBkYXRlOworICAgIGJvb2wgdXBkYXRlZDsKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgVXBkYXRhYmxlVGlsZShQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU+IHRleHR1cmUpCi0gICAgICAgIDogbV9wYXJ0aWFsVXBkYXRlKGZhbHNlKQot
ICAgICAgICAsIG1fdXBkYXRlZChmYWxzZSkKKyAgICAgICAgOiBwYXJ0aWFsVXBkYXRlKGZhbHNl
KQorICAgICAgICAsIHVwZGF0ZWQoZmFsc2UpCiAgICAgICAgICwgbV90ZXh0dXJlKHRleHR1cmUp
CiAgICAgewogICAgIH0KQEAgLTk1LDYgKzk1LDcgQEAgVGlsZWRMYXllckNocm9taXVtOjpUaWxl
ZExheWVyQ2hyb21pdW0oKQogICAgICwgbV9za2lwc0RyYXcoZmFsc2UpCiAgICAgLCBtX3NraXBz
SWRsZVBhaW50KGZhbHNlKQogICAgICwgbV9zYW1wbGVkVGV4ZWxGb3JtYXQoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0SW52YWxpZCkKKyAgICAsIG1fZGlkUGFpbnQoZmFs
c2UpCiAgICAgLCBtX3RpbGluZ09wdGlvbihBdXRvVGlsZSkKIHsKICAgICBtX3RpbGVyID0gQ0NM
YXllclRpbGluZ0RhdGE6OmNyZWF0ZShJbnRTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVmYXVsdFRp
bGVTaXplKSwgQ0NMYXllclRpbGluZ0RhdGE6Okhhc0JvcmRlclRleGVscyk7CkBAIC0xODMsNjgg
KzE4NCw2IEBAIEludFNpemUgVGlsZWRMYXllckNocm9taXVtOjpjb250ZW50Qm91bmRzKCkgY29u
c3QKICAgICByZXR1cm4gSW50U2l6ZShscm91bmRmKGJvdW5kcygpLndpZHRoKCkgKiBjb250ZW50
c1NjYWxlKCkpLCBscm91bmRmKGJvdW5kcygpLmhlaWdodCgpICogY29udGVudHNTY2FsZSgpKSk7
CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKLXsKLSAgICAv
LyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hp
Y2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4K
LSAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QuaXNFbXB0
eSgpIHx8IG1fdGlsZXItPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW50IGxl
ZnQgPSBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC54KCk7Ci0gICAgaW50IHRvcCA9IG1fcmVx
dWVzdGVkVXBkYXRlVGlsZXNSZWN0LnkoKTsKLSAgICBpbnQgcmlnaHQgPSBtX3JlcXVlc3RlZFVw
ZGF0ZVRpbGVzUmVjdC5tYXhYKCkgLSAxOwotICAgIGludCBib3R0b20gPSBtX3JlcXVlc3RlZFVw
ZGF0ZVRpbGVzUmVjdC5tYXhZKCkgLSAxOwotICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90
dG9tOyArK2opIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkg
ewotICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKLQotICAg
ICAgICAgICAgLy8gUmVxdWlyZWQgdGlsZXMgYXJlIGNyZWF0ZWQgaW4gcHJlcGFyZVRvVXBkYXRl
KCkuIEEgdGlsZSBzaG91bGQKLSAgICAgICAgICAgIC8vIG5ldmVyIGJlIHJlbW92ZWQgYmV0d2Vl
biB0aGUgY2FsbCB0byBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgdGhlCi0gICAgICAgICAgICAvLyBj
YWxsIHRvIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKS4KLSAgICAgICAgICAgIGlmICghdGls
ZSkKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotCi0gICAgICAgICAgICBpZiAoIXRpbGUtPm1f
dXBkYXRlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgSW50UmVj
dCBzb3VyY2VSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0OwotICAgICAgICAgICAgaWYgKHRpbGUt
Pm1fdXBkYXRlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgICAgIEFTU0VSVCh0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1Jlc2VydmVkKCkpOwot
ICAgICAgICAgICAgY29uc3QgSW50UG9pbnQgYW5jaG9yID0gbV90aWxlci0+dGlsZVJlY3QodGls
ZSkubG9jYXRpb24oKTsKLQotICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRpbGUtc3BhY2UgcmVj
dGFuZ2xlIHRvIHVwbG9hZCBpbnRvLgotICAgICAgICAgICAgSW50UmVjdCBkZXN0UmVjdChJbnRQ
b2ludChzb3VyY2VSZWN0LngoKSAtIGFuY2hvci54KCksIHNvdXJjZVJlY3QueSgpIC0gYW5jaG9y
LnkoKSksIHNvdXJjZVJlY3Quc2l6ZSgpKTsKLSAgICAgICAgICAgIGlmIChkZXN0UmVjdC54KCkg
PCAwKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAgICBpZiAoZGVzdFJlY3Qu
eSgpIDwgMCkKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotCi0gICAgICAgICAgICAvLyBPZmZz
ZXQgZnJvbSBwYWludCByZWN0YW5nbGUgdG8gdGhpcyB0aWxlJ3MgZGlydHkgcmVjdGFuZ2xlLgot
ICAgICAgICAgICAgSW50UG9pbnQgcGFpbnRPZmZzZXQoc291cmNlUmVjdC54KCkgLSBtX3BhaW50
UmVjdC54KCksIHNvdXJjZVJlY3QueSgpIC0gbV9wYWludFJlY3QueSgpKTsKLSAgICAgICAgICAg
IGlmIChwYWludE9mZnNldC54KCkgPCAwKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAg
ICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpIDwgMCkKLSAgICAgICAgICAgICAgICBDUkFTSCgp
OwotICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LngoKSArIGRlc3RSZWN0LndpZHRoKCkgPiBt
X3BhaW50UmVjdC53aWR0aCgpKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAg
ICBpZiAocGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBtX3BhaW50UmVjdC5o
ZWlnaHQoKSkKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotCi0gICAgICAgICAgICBpZiAodGls
ZS0+bV9wYXJ0aWFsVXBkYXRlKQotICAgICAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kUGFydGlh
bFVwZGF0ZSh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZFVwZGF0ZSh0aWxlLT50ZXh0
dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IFRoZSB1cGRhdGVSZWN0IHNob3VsZCBiZSBpbiBsYXllciBzcGFjZS4gU28gd2UgaGF2ZSB0byBj
b252ZXJ0IHRoZSBwYWludFJlY3QgZnJvbSBjb250ZW50IHNwYWNlIHRvIGxheWVyIHNwYWNlLgot
ICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3BhaW50UmVjdCk7Ci0gICAgZmxvYXQgd2lk
dGhTY2FsZSA9IGJvdW5kcygpLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJv
dW5kcygpLndpZHRoKCkpOwotICAgIGZsb2F0IGhlaWdodFNjYWxlID0gYm91bmRzKCkuaGVpZ2h0
KCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLmhlaWdodCgpKTsKLSAgICBt
X3VwZGF0ZVJlY3Quc2NhbGUod2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOwotfQotCiB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiB0aWxpbmdPcHRp
b24pCiB7CiAgICAgbV90aWxpbmdPcHRpb24gPSB0aWxpbmdPcHRpb247CkBAIC0zMTIsNyArMjUx
LDcgQEAgVXBkYXRhYmxlVGlsZSogVGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVUaWxlKGludCBp
LCBpbnQgaikKICAgICBVcGRhdGFibGVUaWxlKiBhZGRlZFRpbGUgPSB0aWxlLmdldCgpOwogICAg
IG1fdGlsZXItPmFkZFRpbGUodGlsZS5yZWxlYXNlKCksIGksIGopOwogCi0gICAgYWRkZWRUaWxl
LT5tX2RpcnR5UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KGFkZGVkVGlsZSk7CisgICAgYWRkZWRU
aWxlLT5kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdChhZGRlZFRpbGUpOwogICAgIHJldHVy
biBhZGRlZFRpbGU7CiB9CiAKQEAgLTM1MCw3ICsyODksNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgICAgICBB
U1NFUlQodGlsZSk7CiAgICAgICAgIEludFJlY3QgYm91bmQgPSBtX3RpbGVyLT50aWxlUmVjdCh0
aWxlKTsKICAgICAgICAgYm91bmQuaW50ZXJzZWN0KGxheWVyUmVjdCk7Ci0gICAgICAgIHRpbGUt
Pm1fZGlydHlSZWN0LnVuaXRlKGJvdW5kKTsKKyAgICAgICAgdGlsZS0+ZGlydHlSZWN0LnVuaXRl
KGJvdW5kKTsKICAgICB9CiB9CiAKQEAgLTM4Nyw3ICszMjYsNyBAQCBib29sIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6dGlsZU9ubHlOZWVkc1BhcnRpYWxVcGRhdGUoVXBkYXRhYmxlVGlsZSogdGlsZSkK
ICAgICBpZiAoIXRpbGUtPmlzRGlydHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
cmV0dXJuICF0aWxlLT5tX2RpcnR5UmVjdC5jb250YWlucyhtX3RpbGVyLT50aWxlUmVjdCh0aWxl
KSk7CisgICAgcmV0dXJuICF0aWxlLT5kaXJ0eVJlY3QuY29udGFpbnMobV90aWxlci0+dGlsZVJl
Y3QodGlsZSkpOwogfQogCiAvLyBEaXJ0eSB0aWxlcyB3aXRoIHZhbGlkIHRleHR1cmVzIG5lZWRz
IGJ1ZmZlcmVkIHVwZGF0ZSB0byBndWFyYW50ZWUgdGhhdApAQCAtNDA3LDE1ICszNDYsMTUgQEAg
Ym9vbCBUaWxlZExheWVyQ2hyb21pdW06OnRpbGVOZWVkc0J1ZmZlcmVkVXBkYXRlKFVwZGF0YWJs
ZVRpbGUqIHRpbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBp
bnQgcmlnaHQsIGludCBib3R0b20sIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9u
KQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxl
ZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgQ0NUZXh0dXJlVXBkYXRlciYgdXBk
YXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgY3JlYXRl
VGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwogCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRl
ZCwgZXhwYW5kaW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8vIHRoZSBkaXJ0
eSByZWdpb25zIGN1cnJlbnRseSBiZWluZyBkcmF3bi4gQWxsIGRpcnR5IHRpbGVzIHRoYXQgYXJl
IHRvIGJlIHBhaW50ZWQKLSAgICAvLyBnZXQgdGhlaXIgbV91cGRhdGVSZWN0IHNldCB0byBtX2Rp
cnR5UmVjdCBhbmQgbV9kaXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKLSAgICAvLyBpbnZh
bGlkYXRlUmVjdCBpcyBpbnZva2VkIGR1cmluZyBwcmVwYXJlVG9VcGRhdGUgd2UgZG9uJ3QgbG9z
ZSB0aGUgcmVxdWVzdC4KLSAgICBJbnRSZWN0IGRpcnR5TGF5ZXJSZWN0OworICAgIC8vIGdldCB0
aGVpciB1cGRhdGVSZWN0IHNldCB0byBkaXJ0eVJlY3QgYW5kIGRpcnR5UmVjdCBjbGVhcmVkLiBU
aGlzIHdheSBpZgorICAgIC8vIGludmFsaWRhdGVSZWN0IGlzIGludm9rZWQgZHVyaW5nIHVwZGF0
ZUxheWVyUmVjdCB3ZSBkb24ndCBsb3NlIHRoZSByZXF1ZXN0LgorICAgIEludFJlY3QgcGFpbnRS
ZWN0OwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAg
Zm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRh
YmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKQEAgLTQyNCw3ICszNjMsNyBAQCB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVm
dCwgaW50IHRvcCwgaW50CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUo
KS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gU2V0cyB0aGUgZGlydHkgcmVjdCB0byBhIGZ1bGwtc2l6ZWQgdGlsZSB3
aXRoIGJvcmRlciB0ZXhlbHMuCi0gICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eVJlY3QgPSBt
X3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKKyAgICAgICAgICAgICAgICB0aWxlLT5kaXJ0eVJlY3Qg
PSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Ly8gV2hlbiBub3QgaWRsZSBwYWludGluZywgaWYgdGhlIHZpc2libGUgcmVnaW9uIG9mIHRoZSB0
aWxlIGlzIG9jY2x1ZGVkLCBkb24ndCByZXNlcnZlIGEgdGV4dHVyZSBvciB1cGRhdGUgdGhlIHRp
bGUuCkBAIC00MzIsMjMgKzM3MSwyMyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAg
ICAgICBpZiAoIWlkbGUgJiYgb2NjbHVzaW9uKSB7CiAgICAgICAgICAgICAgICAgSW50UmVjdCB2
aXNpYmxlVGlsZVJlY3QgPSBpbnRlcnNlY3Rpb24obV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKSwg
dmlzaWJsZUxheWVyUmVjdCgpKTsKICAgICAgICAgICAgICAgICBpZiAob2NjbHVzaW9uLT5vY2Ns
dWRlZCh0aGlzLCB2aXNpYmxlVGlsZVJlY3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VCghdGlsZS0+bV91cGRhdGVkKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCF0aWxlLT51
cGRhdGVkKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBXZSBjb21lIHRocm91Z2ggdGhpcyBm
dW5jdGlvbiBtdWx0aXBsZSB0aW1lcyBkdXJpbmcgYSBjb21taXQsIGFuZCBtX3VwZGF0ZWQgc2hv
dWxkIGJlIHRydWUgaWYgdGhlIHRpbGUgaXMgbm90IGN1bGxlZAorICAgICAgICAgICAgLy8gV2Ug
Y29tZSB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gbXVsdGlwbGUgdGltZXMgZHVyaW5nIGEgY29tbWl0
LCBhbmQgdXBkYXRlZCBzaG91bGQgYmUgdHJ1ZSBpZiB0aGUgdGlsZSBpcyBub3QgY3VsbGVkCiAg
ICAgICAgICAgICAvLyBhbnkgc2luZ2xlIHRpbWUgdGhyb3VnaCB0aGUgZnVuY3Rpb24uCi0gICAg
ICAgICAgICB0aWxlLT5tX3VwZGF0ZWQgPSB0cnVlOworICAgICAgICAgICAgdGlsZS0+dXBkYXRl
ZCA9IHRydWU7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBEZWNpZGUgaWYgcGFydGlhbCB1cGRh
dGUgc2hvdWxkIGJlIGFsbG93ZWQgYmFzZWQgb24gY29zdAogICAgICAgICAgICAgLy8gb2YgdXBk
YXRlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNzYKICAgICAg
ICAgICAgIGlmICh0aWxlT25seU5lZWRzUGFydGlhbFVwZGF0ZSh0aWxlKSAmJiBsYXllclRyZWVI
b3N0KCkgJiYgbGF5ZXJUcmVlSG9zdCgpLT5yZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKSkK
LSAgICAgICAgICAgICAgICB0aWxlLT5tX3BhcnRpYWxVcGRhdGUgPSB0cnVlOworICAgICAgICAg
ICAgICAgIHRpbGUtPnBhcnRpYWxVcGRhdGUgPSB0cnVlOwogICAgICAgICAgICAgZWxzZSBpZiAo
dGlsZU5lZWRzQnVmZmVyZWRVcGRhdGUodGlsZSkgJiYgbGF5ZXJUcmVlSG9zdCgpKSB7CiAgICAg
ICAgICAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQodGls
ZS0+bWFuYWdlZFRleHR1cmUoKS0+c3RlYWwoKSk7CiAgICAgICAgICAgICAgICAgLy8gU2V0cyB0
aGUgZGlydHkgcmVjdCB0byBhIGZ1bGwtc2l6ZWQgdGlsZSB3aXRoIGJvcmRlciB0ZXhlbHMuCi0g
ICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdCh0aWxl
KTsKKyAgICAgICAgICAgICAgICB0aWxlLT5kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdCh0
aWxlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4
dHVyZSgpLT5yZXNlcnZlKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsK
QEAgLTQ1OSwxMyArMzk4LDExIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQoKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgbV90aWxl
ci0+cmVzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9wYWludFJlY3QgPSBJbnRSZWN0KCk7
Ci0gICAgICAgICAgICAgICAgICAgIG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0ID0gSW50UmVj
dCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGRpcnR5TGF5ZXJSZWN0LnVuaXRlKHRpbGUtPm1fZGlydHlS
ZWN0KTsKKyAgICAgICAgICAgIHBhaW50UmVjdC51bml0ZSh0aWxlLT5kaXJ0eVJlY3QpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC00NzQsMjQgKzQxMSwyNCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwg
aW50CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBm
b3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBVcGRhdGFi
bGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwotICAgICAgICAgICAgaWYgKHRpbGUtPm1fdXBk
YXRlZCkKKyAgICAgICAgICAgIGlmICh0aWxlLT51cGRhdGVkKQogICAgICAgICAgICAgICAgIHRp
bGUtPmNvcHlBbmRDbGVhckRpcnR5KCk7CiAgICAgICAgICAgICBlbHNlIGlmICghaWRsZSAmJiBv
Y2NsdXNpb24gJiYgdGlsZS0+aXNEaXJ0eSgpKQogICAgICAgICAgICAgICAgIG9jY2x1c2lvbi0+
b3ZlcmRyYXdNZXRyaWNzKCkuZGlkQ3VsbFRpbGVGb3JVcGxvYWQoKTsKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1fcGFpbnRSZWN0ID0gZGlydHlMYXllclJlY3Q7Ci0gICAgaWYgKGRpcnR5TGF5
ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAocGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG9jY2x1c2lvbikKLSAgICAgICAgb2NjbHVzaW9uLT5vdmVyZHJh
d01ldHJpY3MoKS5kaWRQYWludChtX3BhaW50UmVjdCk7CisgICAgICAgIG9jY2x1c2lvbi0+b3Zl
cmRyYXdNZXRyaWNzKCkuZGlkUGFpbnQocGFpbnRSZWN0KTsKIAotICAgIC8vIER1ZSB0byBib3Jk
ZXJzLCB3aGVuIHRoZSBwYWludCByZWN0IGlzIGV4dGVuZGVkIHRvIHRpbGUgYm91bmRhcmllcywg
aXQKLSAgICAvLyBtYXkgZW5kIHVwIG92ZXJsYXBwaW5nIG1vcmUgdGlsZXMgdGhhbiB0aGUgb3Jp
Z2luYWwgY29udGVudCByZWN0LiBSZWNvcmQKLSAgICAvLyB0aGUgb3JpZ2luYWwgdGlsZXMgc28g
d2UgZG9uJ3QgdXBsb2FkIG1vcmUgdGlsZXMgdGhhbiBuZWNlc3NhcnkuCi0gICAgbV9yZXF1ZXN0
ZWRVcGRhdGVUaWxlc1JlY3QgPSBJbnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0ICsgMSwg
Ym90dG9tIC0gdG9wICsgMSk7CisgICAgLy8gVGhlIHVwZGF0ZVJlY3Qgc2hvdWxkIGJlIGluIGxh
eWVyIHNwYWNlLiBTbyB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHBhaW50UmVjdCBmcm9tIGNvbnRl
bnQgc3BhY2UgdG8gbGF5ZXIgc3BhY2UuCisgICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KHBh
aW50UmVjdCk7CisgICAgZmxvYXQgd2lkdGhTY2FsZSA9IGJvdW5kcygpLndpZHRoKCkgLyBzdGF0
aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpOworICAgIGZsb2F0IGhlaWdo
dFNjYWxlID0gYm91bmRzKCkuaGVpZ2h0KCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJv
dW5kcygpLmhlaWdodCgpKTsKKyAgICBtX3VwZGF0ZVJlY3Quc2NhbGUod2lkdGhTY2FsZSwgaGVp
Z2h0U2NhbGUpOwogCiAgICAgLy8gQ2FsbGluZyBwcmVwYXJlVG9VcGRhdGUoKSBjYWxscyBpbnRv
IFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKICAgICAvLyBlZmZlY3Qg
b2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0
aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCkBAIC00OTksMjggKzQzNiwyNiBAQCB2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBp
bnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5j
ZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRl
cy4KICAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRh
dGVyKCkpOwogICAgIEludFJlY3QgcGFpbnRlZE9wYXF1ZVJlY3Q7Ci0gICAgdGV4dHVyZVVwZGF0
ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBt
X3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVudHNTY2FsZSgpLCAmcGFpbnRlZE9wYXF1
ZVJlY3QpOworICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0ZShwYWludFJlY3Qs
IG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50
c1NjYWxlKCksICZwYWludGVkT3BhcXVlUmVjdCk7CisgICAgbV9kaWRQYWludCA9IHRydWU7CisK
ICAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAo
aW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRp
bGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAKLSAgICAgICAgICAgIC8vIFRpbGVzIGFyZSBjcmVh
dGVkIGJlZm9yZSBwcmVwYXJlVG9VcGRhdGUoKSBpcyBjYWxsZWQuCi0gICAgICAgICAgICBpZiAo
IXRpbGUpCi0gICAgICAgICAgICAgICAgQ1JBU0goKTsKLQogICAgICAgICAgICAgSW50UmVjdCB0
aWxlUmVjdCA9IG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaik7CiAKLSAgICAgICAgICAgIGlmICgh
dGlsZS0+bV91cGRhdGVkKQorICAgICAgICAgICAgaWYgKCF0aWxlLT51cGRhdGVkKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAvLyBVc2UgbV91cGRhdGVSZWN0IGFz
IHRoZSBhYm92ZSBsb29wIGNvcGllZCB0aGUgZGlydHkgcmVjdCBmb3IgdGhpcyBmcmFtZSB0byBt
X3VwZGF0ZVJlY3QuCi0gICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QgPSB0aWxl
LT5tX3VwZGF0ZVJlY3Q7CisgICAgICAgICAgICAvLyBVc2UgdXBkYXRlUmVjdCBhcyB0aGUgYWJv
dmUgbG9vcCBjb3BpZWQgdGhlIGRpcnR5IHJlY3QgZm9yIHRoaXMgZnJhbWUgdG8gdXBkYXRlUmVj
dC4KKyAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCA9IHRpbGUtPnVwZGF0ZVJl
Y3Q7CiAgICAgICAgICAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICAgICAgLy8gU2F2ZSB3aGF0IHdhcyBwYWludGVkIG9wYXF1
ZSBpbiB0aGUgdGlsZS4gS2VlcCB0aGUgb2xkIGFyZWEgaWYgdGhlIHBhaW50IGRpZG4ndCB0b3Vj
aCBpdCwgYW5kIGRpZG4ndCBwYWludCBzb21lCiAgICAgICAgICAgICAvLyBvdGhlciBwYXJ0IG9m
IHRoZSB0aWxlIG9wYXF1ZS4KLSAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRSZWN0ID0g
aW50ZXJzZWN0aW9uKHRpbGVSZWN0LCBtX3BhaW50UmVjdCk7CisgICAgICAgICAgICBJbnRSZWN0
IHRpbGVQYWludGVkUmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgcGFpbnRSZWN0KTsKICAg
ICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRPcGFxdWVSZWN0ID0gaW50ZXJzZWN0aW9uKHRp
bGVSZWN0LCBwYWludGVkT3BhcXVlUmVjdCk7CiAgICAgICAgICAgICBpZiAoIXRpbGVQYWludGVk
UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBJbnRSZWN0IHBhaW50SW5zaWRlVGls
ZU9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZS0+b3BhcXVlUmVjdCgpLCB0aWxlUGFpbnRl
ZFJlY3QpOwpAQCAtNTM2LDE1ICs0NzEsNDEgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAg
ICAgICAgICAgc291cmNlUmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0KTsKICAgICAgICAgICAgIC8v
IFBhaW50IHJlY3Qgbm90IGd1YXJhbnRlZWQgdG8gbGluZSB1cCBvbiB0aWxlIGJvdW5kYXJpZXMs
IHNvCiAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCBzb3VyY2VSZWN0IGRvZXNuJ3QgZXh0
ZW5kIG91dHNpZGUgb2YgaXQuCi0gICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2VjdChtX3Bh
aW50UmVjdCk7CisgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2VjdChwYWludFJlY3QpOwor
CisgICAgICAgICAgICB0aWxlLT51cGRhdGVSZWN0ID0gc291cmNlUmVjdDsKIAotICAgICAgICAg
ICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gc291cmNlUmVjdDsKICAgICAgICAgICAgIGlmIChzb3Vy
Y2VSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAg
ICAgdGlsZS0+dGV4dHVyZSgpLT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKICAgICAgICAgICAg
IGlmIChvY2NsdXNpb24pCiAgICAgICAgICAgICAgICAgb2NjbHVzaW9uLT5vdmVyZHJhd01ldHJp
Y3MoKS5kaWRVcGxvYWQoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgc291cmNlUmVjdCwgdGlsZS0+
b3BhcXVlUmVjdCgpKTsKKworICAgICAgICAgICAgY29uc3QgSW50UG9pbnQgYW5jaG9yID0gbV90
aWxlci0+dGlsZVJlY3QodGlsZSkubG9jYXRpb24oKTsKKworICAgICAgICAgICAgLy8gQ2FsY3Vs
YXRlIHRpbGUtc3BhY2UgcmVjdGFuZ2xlIHRvIHVwbG9hZCBpbnRvLgorICAgICAgICAgICAgSW50
UmVjdCBkZXN0UmVjdChJbnRQb2ludChzb3VyY2VSZWN0LngoKSAtIGFuY2hvci54KCksIHNvdXJj
ZVJlY3QueSgpIC0gYW5jaG9yLnkoKSksIHNvdXJjZVJlY3Quc2l6ZSgpKTsKKyAgICAgICAgICAg
IGlmIChkZXN0UmVjdC54KCkgPCAwKQorICAgICAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAg
ICAgICBpZiAoZGVzdFJlY3QueSgpIDwgMCkKKyAgICAgICAgICAgICAgICBDUkFTSCgpOworCisg
ICAgICAgICAgICAvLyBPZmZzZXQgZnJvbSBwYWludCByZWN0YW5nbGUgdG8gdGhpcyB0aWxlJ3Mg
ZGlydHkgcmVjdGFuZ2xlLgorICAgICAgICAgICAgSW50UG9pbnQgcGFpbnRPZmZzZXQoc291cmNl
UmVjdC54KCkgLSBwYWludFJlY3QueCgpLCBzb3VyY2VSZWN0LnkoKSAtIHBhaW50UmVjdC55KCkp
OworICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LngoKSA8IDApCisgICAgICAgICAgICAgICAg
Q1JBU0goKTsKKyAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgPCAwKQorICAgICAgICAg
ICAgICAgIENSQVNIKCk7CisgICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueCgpICsgZGVzdFJl
Y3Qud2lkdGgoKSA+IHBhaW50UmVjdC53aWR0aCgpKQorICAgICAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBw
YWludFJlY3QuaGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKworICAgICAgICAg
ICAgaWYgKHRpbGUtPnBhcnRpYWxVcGRhdGUpCisgICAgICAgICAgICAgICAgdXBkYXRlci5hcHBl
bmRQYXJ0aWFsVXBkYXRlKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kVXBkYXRlKHRp
bGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAgICAgfQog
fQpAQCAtNTY4LDcgKzUyOSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpyZXNlcnZlVGV4
dHVyZXMoKQogICAgICAgICAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwogCiAgICAg
ICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+dGls
ZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkKLSAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5
UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOworICAgICAgICAgICAgICAgIHRpbGUtPmRp
cnR5UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KHRpbGUpOwogCiAgICAgICAgICAgICBpZiAoIXRp
bGUtPm1hbmFnZWRUZXh0dXJlKCktPnJlc2VydmUobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0
dXJlRm9ybWF0KSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01ODYsMjIgKzU0NywyMCBA
QCBSZWdpb24gVGlsZWRMYXllckNocm9taXVtOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigp
IGNvbnN0CiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpyZXNldFVwZGF0ZVN0YXRlKCkKIHsK
LSAgICAvLyBSZXNldCBtX3VwZGF0ZVJlY3QgZm9yIGFsbCB0aWxlcy4KICAgICBDQ0xheWVyVGls
aW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV90aWxlci0+dGlsZXMoKS5l
bmQoKTsKICAgICBmb3IgKENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFwOjpjb25zdF9pdGVyYXRv
ciBpdGVyID0gbV90aWxlci0+dGlsZXMoKS5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CiAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxl
Kj4oaXRlci0+c2Vjb25kLmdldCgpKTsKLSAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gSW50
UmVjdCgpOwotICAgICAgICB0aWxlLT5tX3BhcnRpYWxVcGRhdGUgPSBmYWxzZTsKLSAgICAgICAg
dGlsZS0+bV91cGRhdGVkID0gZmFsc2U7CisgICAgICAgIHRpbGUtPnVwZGF0ZVJlY3QgPSBJbnRS
ZWN0KCk7CisgICAgICAgIHRpbGUtPnBhcnRpYWxVcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgdGls
ZS0+dXBkYXRlZCA9IGZhbHNlOwogICAgIH0KIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IENDT2NjbHVz
aW9uVHJhY2tlciogb2NjbHVzaW9uKQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUxh
eWVyUmVjdChDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBJbnRSZWN0JiBsYXllclJl
Y3QsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogewogICAgIG1fc2tpcHNE
cmF3ID0gZmFsc2U7CiAgICAgbV9za2lwc0lkbGVQYWludCA9IGZhbHNlOwotICAgIG1fcmVxdWVz
dGVkVXBkYXRlVGlsZXNSZWN0ID0gSW50UmVjdCgpOwotICAgIG1fcGFpbnRSZWN0ID0gSW50UmVj
dCgpOworICAgIG1fZGlkUGFpbnQgPSBmYWxzZTsKIAogICAgIHVwZGF0ZUJvdW5kcygpOwogCkBA
IC02MTMsMTMgKzU3MiwxMyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdQogICAgIGludCBsZWZ0
LCB0b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNl
cyhsYXllclJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAKLSAgICBwcmVwYXJlVG9V
cGRhdGVUaWxlcyhmYWxzZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCBvY2NsdXNpb24pOwor
ICAgIHVwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20sIHVwZGF0ZXIs
IG9jY2x1c2lvbik7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
KiBvY2NsdXNpb24pCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6aWRsZVVwZGF0ZUxheWVyUmVj
dChDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNv
bnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogewotICAgIC8vIEFib3J0IGlmIHdl
IGhhdmUgYWxyZWFkeSBwcmVwYXJlZCBhIHBhaW50IG9yIHJ1biBvdXQgb2YgbWVtb3J5LgotICAg
IGlmIChtX3NraXBzSWRsZVBhaW50IHx8ICFtX3BhaW50UmVjdC5pc0VtcHR5KCkpCisgICAgLy8g
QWJvcnQgaWYgd2UgaGF2ZSBhbHJlYWR5IHBhaW50ZWQgb3IgcnVuIG91dCBvZiBtZW1vcnkuCisg
ICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQgfHwgbV9kaWRQYWludCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQVNTRVJUKG1fdGlsZXIpOwpAQCAtNjQzLDE3ICs2MDIsMTYgQEAgdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
LCBjb25zdCBDQ08KIAogICAgIC8vIElmIHRoZSBsYXllciBpcyBub3QgdmlzaWJsZSwgd2UgaGF2
ZSBub3RoaW5nIHRvIGV4cGFuZCBmcm9tLCBzbyBpbnN0ZWFkIHdlIHByZXBhaW50IHRoZSBvdXRl
ci1tb3N0IHNldCBvZiB0aWxlcy4KICAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkgewotICAg
ICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludExlZnQsIHByZXBhaW50VG9w
LCBwcmVwYWludFJpZ2h0LCBwcmVwYWludFRvcCwgMCk7Ci0gICAgICAgIGlmICghbV9wYWludFJl
Y3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgIHVwZGF0ZVRpbGVzKHRy
dWUsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3AsIHByZXBhaW50UmlnaHQsIHByZXBhaW50VG9w
LCB1cGRhdGVyLCAwKTsKKyAgICAgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWlu
dCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1
ZSwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludEJvdHRvbSwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRC
b3R0b20sIDApOwotICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBz
SWRsZVBhaW50KQorICAgICAgICB1cGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludExlZnQsIHByZXBh
aW50Qm90dG9tLCBwcmVwYWludFJpZ2h0LCBwcmVwYWludEJvdHRvbSwgdXBkYXRlciwgMCk7Cisg
ICAgICAgIGlmIChtX2RpZFBhaW50IHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHByZXBhaW50TGVmdCwg
cHJlcGFpbnRUb3AsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRCb3R0b20sIDApOwotICAgICAgICBp
ZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQorICAgICAgICB1
cGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludExlZnQsIHByZXBhaW50VG9wLCBwcmVwYWludExlZnQs
IHByZXBhaW50Qm90dG9tLCB1cGRhdGVyLCAwKTsKKyAgICAgICAgaWYgKG1fZGlkUGFpbnQgfHwg
bV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcHJlcGFyZVRv
VXBkYXRlVGlsZXModHJ1ZSwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRUb3AsIHByZXBhaW50Umln
aHQsIHByZXBhaW50Qm90dG9tLCAwKTsKLQorICAgICAgICB1cGRhdGVUaWxlcyh0cnVlLCBwcmVw
YWludFJpZ2h0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b20sIHVw
ZGF0ZXIsIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NjEsMzQgKzYxOSwzNCBA
QCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRS
ZWN0JiBsYXllclJlY3QsIGNvbnN0IENDTwogICAgIG1fdGlsZXItPmxheWVyUmVjdFRvVGlsZUlu
ZGljZXMobGF5ZXJSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogCiAgICAgLy8gT3Ro
ZXJ3aXNlLCBwcmVwYWludCBhbnl0aGluZyB0aGF0IHdhcyBvY2NsdWRlZCBidXQgaW5zaWRlIHRo
ZSBsYXllcidzIHZpc2libGUgcmVnaW9uLgotICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUs
IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgMCk7Ci0gICAgaWYgKCFtX3BhaW50UmVjdC5pc0Vt
cHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKKyAgICB1cGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0
b3AsIHJpZ2h0LCBib3R0b20sIHVwZGF0ZXIsIDApOworICAgIGlmIChtX2RpZFBhaW50IHx8IG1f
c2tpcHNJZGxlUGFpbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZW4gZXhwYW5kIG91
dHdhcmRzIGZyb20gdGhlIHZpc2libGUgYXJlYSB1bnRpbCB3ZSBmaW5kIGEgZGlydHkgcm93IG9y
IGNvbHVtbiB0byB1cGRhdGUuCiAgICAgd2hpbGUgKCFtX3NraXBzSWRsZVBhaW50ICYmIChsZWZ0
ID4gcHJlcGFpbnRMZWZ0IHx8IHRvcCA+IHByZXBhaW50VG9wIHx8IHJpZ2h0IDwgcHJlcGFpbnRS
aWdodCB8fCBib3R0b20gPCBwcmVwYWludEJvdHRvbSkpIHsKICAgICAgICAgaWYgKGJvdHRvbSA8
IHByZXBhaW50Qm90dG9tKSB7CiAgICAgICAgICAgICArK2JvdHRvbTsKLSAgICAgICAgICAgIHBy
ZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIGJvdHRvbSwgcmlnaHQsIGJvdHRvbSwgMCk7
Ci0gICAgICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBh
aW50KQorICAgICAgICAgICAgdXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdodCwg
Ym90dG9tLCB1cGRhdGVyLCAwKTsKKyAgICAgICAgICAgIGlmIChtX2RpZFBhaW50IHx8IG1fc2tp
cHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKHRvcCA+IHByZXBhaW50VG9wKSB7CiAgICAgICAgICAgICAtLXRvcDsKLSAgICAgICAgICAg
IHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIHRvcCwgMCk7Ci0g
ICAgICAgICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50
KQorICAgICAgICAgICAgdXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgdG9wLCB1
cGRhdGVyLCAwKTsKKyAgICAgICAgICAgIGlmIChtX2RpZFBhaW50IHx8IG1fc2tpcHNJZGxlUGFp
bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlZnQg
PiBwcmVwYWludExlZnQpIHsKICAgICAgICAgICAgIC0tbGVmdDsKLSAgICAgICAgICAgIHByZXBh
cmVUb1VwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tLCAwKTsKLSAgICAg
ICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisg
ICAgICAgICAgICB1cGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIGxlZnQsIGJvdHRvbSwgdXBk
YXRlciwgMCk7CisgICAgICAgICAgICBpZiAobV9kaWRQYWludCB8fCBtX3NraXBzSWRsZVBhaW50
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChyaWdodCA8
IHByZXBhaW50UmlnaHQpIHsKICAgICAgICAgICAgICsrcmlnaHQ7Ci0gICAgICAgICAgICBwcmVw
YXJlVG9VcGRhdGVUaWxlcyh0cnVlLCByaWdodCwgdG9wLCByaWdodCwgYm90dG9tLCAwKTsKLSAg
ICAgICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQp
CisgICAgICAgICAgICB1cGRhdGVUaWxlcyh0cnVlLCByaWdodCwgdG9wLCByaWdodCwgYm90dG9t
LCB1cGRhdGVyLCAwKTsKKyAgICAgICAgICAgIGlmIChtX2RpZFBhaW50IHx8IG1fc2tpcHNJZGxl
UGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC03MTMs
OCArNjcxLDYgQEAgYm9vbCBUaWxlZExheWVyQ2hyb21pdW06Om5lZWRzSWRsZVBhaW50KGNvbnN0
IEludFJlY3QmIGxheWVyUmVjdCkKICAgICAgICAgICAgIC8vIElmIHRoZSBsYXllclJlY3QgaXMg
ZW1wdHksIHRoZW4gd2UgYXJlIHBhaW50aW5nIHRoZSBvdXRlci1tb3N0IHNldCBvZiB0aWxlcyBv
bmx5LgogICAgICAgICAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkgJiYgaSAhPSBsZWZ0ICYm
IGkgIT0gcmlnaHQgJiYgaiAhPSB0b3AgJiYgaiAhPSBib3R0b20pCiAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QuY29u
dGFpbnMoSW50UG9pbnQoaSwgaikpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKICAgICAgICAgICAgIGlm
ICghdGlsZSB8fCAhdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxl
U2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpIHx8IHRpbGUtPmlzRGlydHkoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggODFlZTI0
OGE3NjhmZjk5ZGY4NmNlYzBmMThjNGEzMGJjMGFjYzdkYy4uNjA2MDg5M2VjYjNkMjhkMTU4NzFj
YzA2YjhkMzEzNzVlMWU5ZWU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTQy
LDcgKzQyLDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNr
KGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwq
KTsKQEAgLTg5LDEwICs4OCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCByZXNldFVwZGF0ZVN0
YXRlKCk7CiAKICAgICAvLyBQcmVwYXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0
aGF0IGludGVyc2VjdCB3aXRoIGxheWVyUmVjdC4KLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOworICAg
IHZvaWQgdXBkYXRlTGF5ZXJSZWN0KENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBJbnRSZWN0JiBs
YXllclJlY3QsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogCiAgICAgLy8gU2FtZSBhcyBh
Ym92ZSwgYnV0IHRoaXMgd2lsbCB0cnkgdG8gcGFpbnQgYWRkaXRpb25hbCBzdXJyb3VuZGluZyBj
b250ZW50IGlmIGlkbGUuCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJl
Y3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CisgICAgdm9pZCBpZGxl
VXBkYXRlTGF5ZXJSZWN0KENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBJbnRSZWN0JiBsYXllclJl
Y3QsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogCiAgICAgLy8gQWZ0ZXIgcHJlcGFyaW5n
IGFuIHVwZGF0ZSwgcmV0dXJucyB0cnVlIGlmIG1vcmUgcHJlLXBhaW50aW5nIGlzIG5lZWRlZC4K
ICAgICBib29sIG5lZWRzSWRsZVBhaW50KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CkBAIC0x
MTQsMjMgKzExMywxOSBAQCBwcml2YXRlOgogICAgIGJvb2wgdGlsZU9ubHlOZWVkc1BhcnRpYWxV
cGRhdGUoVXBkYXRhYmxlVGlsZSopOwogICAgIGJvb2wgdGlsZU5lZWRzQnVmZmVyZWRVcGRhdGUo
VXBkYXRhYmxlVGlsZSopOwogCi0gICAgdm9pZCBwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlk
bGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20sIGNvbnN0IENDT2Nj
bHVzaW9uVHJhY2tlciopOworICAgIHZvaWQgdXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVm
dCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBDQ1RleHR1cmVVcGRhdGVyJiwgY29u
c3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CiAKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50
LCBpbnQpIGNvbnN0OwogICAgIFVwZGF0YWJsZVRpbGUqIGNyZWF0ZVRpbGUoaW50LCBpbnQpOwog
Ci0gICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBh
bmQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpLgotICAgIEludFJlY3QgbV9yZXF1ZXN0ZWRV
cGRhdGVUaWxlc1JlY3Q7Ci0KLSAgICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBk
YXRlKCkgYW5kIHB1c2hQcm9wZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRoZSBhcmVhCi0g
ICAgLy8gb2YgdGhlIGxheWVyIHRoYXQgaXMgYWN0dWFsbHkgcmUtcGFpbnRlZCBieSBXZWJLaXQu
Ci0gICAgSW50UmVjdCBtX3BhaW50UmVjdDsKLQogICAgIEdDM0RlbnVtIG1fdGV4dHVyZUZvcm1h
dDsKICAgICBib29sIG1fc2tpcHNEcmF3OwogICAgIGJvb2wgbV9za2lwc0lkbGVQYWludDsKICAg
ICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgbV9zYW1wbGVkVGV4ZWxG
b3JtYXQ7CiAKKyAgICAvLyBUcmFja3MgaWYgd2UndmUgZG9uZSBhbnkgcGFpbnRpbmcgb24gdGhp
cyB1cGRhdGUgY3ljbGUuCisgICAgYm9vbCBtX2RpZFBhaW50OworCiAgICAgVGlsaW5nT3B0aW9u
IG1fdGlsaW5nT3B0aW9uOwogICAgIE93blB0cjxDQ0xheWVyVGlsaW5nRGF0YT4gbV90aWxlcjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCA4N2QwMTY4ODY2YzBhNDYz
ZmEyZTNiNjVlMTU0OTliNDdkZjI1ZTc3Li4yMGZmNWUxZWI4MTZkZjhhYzFhN2U5NWM0MjYzMTc1
YWU0ZWI5OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTcxLDkgKzcx
LDkgQEAgYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAg
cmV0dXJuIExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpICYmICFtX2NvbnRleHRMb3N0Owog
fQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKiAvKiBvY2NsdXNpb24gKi8pCit2b2lkIFdlYkdMTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9u
VHJhY2tlciopCiB7Ci0gICAgaWYgKCFkcmF3c0NvbnRlbnQoKSB8fCAhbV9uZWVkc0Rpc3BsYXkp
CisgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSB8fCAhbV9uZWVkc0Rpc3BsYXkgfHwgIW1fZHJhd2lu
Z0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kcmF3aW5nQnVmZmVyLT5wcmVwYXJl
QmFja0J1ZmZlcigpOwpAQCAtODIsMTIgKzgyLDYgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06
OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogLyogb2NjbHUK
ICAgICBjb250ZXh0KCktPm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKICAgICBtX25lZWRzRGlzcGxh
eSA9IGZhbHNlOwogICAgIG1fY29udGV4dExvc3QgPSBjb250ZXh0KCktPmdldEV4dGVuc2lvbnMo
KS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19F
UlJPUjsKLX0KLQotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQotewot
ICAgIGlmICghbV9kcmF3aW5nQnVmZmVyKQotICAgICAgICByZXR1cm47CiAKICAgICBtX3RleHR1
cmVJZCA9IG1fZHJhd2luZ0J1ZmZlci0+ZnJvbnRDb2xvckJ1ZmZlcigpOwogICAgIGlmIChtX2Ry
YXdpbmdCdWZmZXItPnJlcXVpcmVzQ29weUZyb21CYWNrVG9Gcm9udEJ1ZmZlcigpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCA3MTFjMGJlODI0NzJiYTU1YTA0MjI1MThkODNhMDJj
MWNjY2Q2YzhkLi5kYjgyMWQwOTA2NWJmMjg5MjY0YTU1ZTljNzYxMWI1Y2IzYTc5MTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExh
eWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtNTAsOCArNTAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3ND
b250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNv
bnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9u
VHJhY2tlciopOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBs
Kik7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheVJlY3QoY29uc3QgRmxvYXRSZWN0
Jik7CiAgICAgYm9vbCBwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA2YmU1NzhjM2M2NGQ5NGIxNjcw
OGE0OTVjZGMxMDA4N2RkNDRhY2Q2Li42Nzk1NGYwYmEwYzFkNjE0NmEwOWViYjkyYjY1NTEzMWNi
ODAzZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTEwOSw3ICsxMDks
NiBAQCBDQ0xheWVyVHJlZUhvc3Q6On5DQ0xheWVyVHJlZUhvc3QoKQogICAgIEFTU0VSVChtX3By
b3h5KTsKICAgICBtX3Byb3h5LT5zdG9wKCk7CiAgICAgbV9wcm94eS5jbGVhcigpOwotICAgIGNs
ZWFyUGVuZGluZ1VwZGF0ZSgpOwogICAgIG51bUxheWVyVHJlZUluc3RhbmNlcy0tOwogfQogCkBA
IC0yMjcsNyArMjI2LDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9uSW1w
bFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKIHZvaWQgQ0NMYXllclRyZWVI
b3N0Ojpjb21taXRDb21wbGV0ZSgpCiB7CiAgICAgbV9kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXRM
aXN0LmNsZWFyKCk7Ci0gICAgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAgICAgbV9jb250ZW50c1Rl
eHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIG1fY2xpZW50LT5kaWRD
b21taXQoKTsKIH0KQEAgLTQxOSw3ICs0MTcsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29t
cG9zaXRlKCkKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRocmVhZFByb3h5Kj4obV9wcm94eS5n
ZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAKLWJvb2wgQ0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVMYXllcnMoKQorYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhDQ1Rl
eHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewogICAgIGlmICghbV9sYXllclJlbmRlcmVySW5pdGlh
bGl6ZWQpIHsKICAgICAgICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKTsKQEAgLTQzOCwxMSAr
NDM2LDExIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQogICAgIGlmICh2
aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgdXBk
YXRlTGF5ZXJzKHJvb3RMYXllcigpKTsKKyAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCksIHVw
ZGF0ZXIpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBk
YXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyLCBDQ1RleHR1cmVVcGRhdGVy
JiB1cGRhdGVyKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxh
eWVycyIsIHRoaXMsIDApOwogCkBAIC00NTMsMTAgKzQ1MSw4IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIEludFJlY3Qg
cm9vdENsaXBSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKTsKICAgICByb290TGF5ZXIt
PnNldENsaXBSZWN0KHJvb3RDbGlwUmVjdCk7CiAKLSAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBp
ZiB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIHdhc24ndCBjYWxsZWQgYWZ0ZXIKLSAgICAvLyB1
cGRhdGVMYXllcnMuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4g
dGltZS4KLSAgICBBU1NFUlQoIW1fdXBkYXRlTGlzdC5zaXplKCkpOwotICAgIG1fdXBkYXRlTGlz
dC5hcHBlbmQocm9vdExheWVyKTsKKyAgICBMYXllckxpc3QgdXBkYXRlTGlzdDsKKyAgICB1cGRh
dGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOwogCiAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiBy
b290UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAgIHJvb3RS
ZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwpAQCAtNDY0LDE1ICs0NjAsMTUgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIp
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgewogICAgICAg
ICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRj
IiwgdGhpcywgMCk7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxh
eWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwor
ICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5k
VmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5
TWF0cml4LCB1cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVy
UmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgfQogCiAgICAgLy8g
UmVzZXQgcGFydGlhbCB0ZXh0dXJlIHVwZGF0ZSByZXF1ZXN0cy4KICAgICBtX3BhcnRpYWxUZXh0
dXJlVXBkYXRlUmVxdWVzdHMgPSAwOwogCi0gICAgcmVzZXJ2ZVRleHR1cmVzKCk7CisgICAgcmVz
ZXJ2ZVRleHR1cmVzKHVwZGF0ZUxpc3QpOwogCi0gICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBk
YXRlTGlzdCwgUGFpbnRWaXNpYmxlKTsKKyAgICBwYWludExheWVyQ29udGVudHModXBkYXRlTGlz
dCwgUGFpbnRWaXNpYmxlLCB1cGRhdGVyKTsKICAgICBpZiAoIW1fdHJpZ2dlcklkbGVQYWludHMp
CiAgICAgICAgIHJldHVybjsKIApAQCAtNDg2LDE3ICs0ODIsMTcgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgLy8gb3Ro
ZXJ3aXNlIGl0IHdpbGwgYWx3YXlzIHB1c2ggdXMgdG93YXJkcyB0aGUgbWF4aW11bSBsaW1pdC4K
ICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMocHJl
ZmVycmVkTGltaXRCeXRlcyk7CiAgICAgLy8gVGhlIHNlY29uZCAoaWRsZSkgcGFpbnQgd2lsbCBi
ZSBhIG5vLW9wIGluIGxheWVycyB3aGVyZSBwYWludGluZyBhbHJlYWR5IG9jY3VyZWQgYWJvdmUu
Ci0gICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCwgUGFpbnRJZGxlKTsKKyAgICBw
YWludExheWVyQ29udGVudHModXBkYXRlTGlzdCwgUGFpbnRJZGxlLCB1cGRhdGVyKTsKICAgICBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWF4TGltaXRC
eXRlcyk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpyZXNlcnZlVGV4dHVyZXMoKQordm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnJlc2VydmVUZXh0dXJlcyhjb25zdCBMYXllckxpc3QmIHVwZGF0
ZUxpc3QpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRo
aXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExh
eWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFj
ZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0
ZXJhdG9yVHlwZTsKIAotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJh
dG9yVHlwZTo6ZW5kKCZtX3VwZGF0ZUxpc3QpOwotICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlw
ZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX3VwZGF0ZUxpc3QpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRv
clR5cGU6OmVuZCgmdXBkYXRlTGlzdCk7CisgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0
ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnVwZGF0ZUxpc3QpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKICAgICAgICAgaWYgKCFpdC5yZXByZXNlbnRzSXRzZWxmKCkgfHwgIWl0LT5hbHdheXNS
ZXNlcnZlVGV4dHVyZXMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpdC0+cmVz
ZXJ2ZVRleHR1cmVzKCk7CkBAIC01MDQsMTcgKzUwMCwxNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6cmVzZXJ2ZVRleHR1cmVzKCkKIH0KIAogLy8gc3RhdGljCi12b2lkIENDTGF5ZXJUcmVlSG9z
dDo6cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBw
YWludFR5cGUsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZShMYXllckNocm9taXVtKiBsYXllciwgUGFpbnRUeXBlIHBhaW50
VHlwZSwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
KiBvY2NsdXNpb24pCiB7CiAgICAgQVNTRVJUKGxheWVyKTsKICAgICBBU1NFUlQoUGFpbnRWaXNp
YmxlID09IHBhaW50VHlwZSB8fCBQYWludElkbGUgPT0gcGFpbnRUeXBlKTsKICAgICBpZiAoUGFp
bnRWaXNpYmxlID09IHBhaW50VHlwZSkKLSAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRp
cnR5KG9jY2x1c2lvbik7CisgICAgICAgIGxheWVyLT51cGRhdGUodXBkYXRlciwgb2NjbHVzaW9u
KTsKICAgICBlbHNlCi0gICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50c0lmRGlydHkob2Nj
bHVzaW9uKTsKKyAgICAgICAgbGF5ZXItPmlkbGVVcGRhdGUodXBkYXRlciwgb2NjbHVzaW9uKTsK
IH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJT
dXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgUGFpbnRUeXBlIHBhaW50
VHlwZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVy
U3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIsIFBhaW50VHlwZSBwYWlu
dFR5cGUsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgLy8gTm90ZTogTWFza3Mg
YW5kIHJlcGxpY2FzIG9ubHkgZXhpc3QgZm9yIGxheWVycyB0aGF0IG93biByZW5kZXIgc3VyZmFj
ZXMuIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQKICAgICAvLyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtu
b3cgdGhhdCBhdCBsZWFzdCBzb21ldGhpbmcgd2lsbCBiZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVy
IHN1cmZhY2UsIHNvIHRoZQpAQCAtNTI0LDIxICs1MjAsMjEgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJl
bmRlclMKIAogICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAg
ICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3Qo
SW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkp
OwotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tM
YXllcigpLCBwYWludFR5cGUsIDApOworICAgICAgICB1cGRhdGUocmVuZGVyU3VyZmFjZUxheWVy
LT5tYXNrTGF5ZXIoKSwgcGFpbnRUeXBlLCB1cGRhdGVyLCAwKTsKICAgICB9CiAKICAgICBMYXll
ckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXll
cigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKLSAgICAgICAgcGFpbnRDb250ZW50c0lmRGly
dHkocmVwbGljYUxheWVyLCBwYWludFR5cGUsIDApOworICAgICAgICB1cGRhdGUocmVwbGljYUxh
eWVyLCBwYWludFR5cGUsIHVwZGF0ZXIsIDApOwogCiAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXIt
Pm1hc2tMYXllcigpKSB7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNr
TGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZE
aXJ0eShyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUsIDApOworICAgICAgICAg
ICAgdXBkYXRlKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHBhaW50VHlwZSwgdXBkYXRlciwg
MCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExh
eWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBQYWlu
dFR5cGUgcGFpbnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50
cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFBhaW50VHlwZSBwYWlu
dFR5cGUsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgLy8gVXNlIEZyb250VG9C
YWNrIHRvIGFsbG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9ybWluZyBjdWxsaW5n
IGR1cmluZyB0aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVy
Q2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNo
cm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJh
dG9yVHlwZTsKQEAgLTU1MywxMiArNTQ5LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWlu
dExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAg
ICAgICAgICAgICBBU1NFUlQoaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSB8fCBp
dC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOwogCiAgICAgICAg
ICAgICBvY2NsdXNpb25UcmFja2VyLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZSgqaXQsIGl0
LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJl
bmRlclN1cmZhY2UoKml0LCBwYWludFR5cGUpOworICAgICAgICAgICAgcGFpbnRNYXNrQW5kUmVw
bGljYUZvclJlbmRlclN1cmZhY2UoKml0LCBwYWludFR5cGUsIHVwZGF0ZXIpOwogICAgICAgICB9
IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSkgewogICAgICAgICAgICAgQVNTRVJUKCFp
dC0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKIAogICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2UoaXQtPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
ICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eSgqaXQsIHBhaW50VHlwZSwgJm9jY2x1c2lvblRy
YWNrZXIpOworICAgICAgICAgICAgdXBkYXRlKCppdCwgcGFpbnRUeXBlLCB1cGRhdGVyLCAmb2Nj
bHVzaW9uVHJhY2tlcik7CiAgICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKCppdCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgb2NjbHVzaW9u
VHJhY2tlci5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShpdC50YXJnZXRSZW5kZXJTdXJmYWNl
TGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpKTsKQEAgLTU2NywzOCArNTYzLDYgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1
cmZhY2VMYXllckxpc3QKICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnJl
Y29yZE1ldHJpY3ModGhpcyk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRh
dGVyJiB1cGRhdGVyKQotewotICAgIC8vIFVzZSBCYWNrVG9Gcm9udCBzaW5jZSBpdCdzIGNoZWFw
IGFuZCB0aGlzIGlzbid0IG9yZGVyLWRlcGVuZGVudC4KLSAgICB0eXBlZGVmIENDTGF5ZXJJdGVy
YXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRl
clN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ+IEND
TGF5ZXJJdGVyYXRvclR5cGU7Ci0KLSAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5
ZXJJdGVyYXRvclR5cGU6OmVuZCgmbV91cGRhdGVMaXN0KTsKLSAgICBmb3IgKENDTGF5ZXJJdGVy
YXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmbV91cGRhdGVMaXN0KTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVy
U3VyZmFjZSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJh
d09wYWNpdHkoKSB8fCBpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5n
KCkpOwotICAgICAgICAgICAgaWYgKGl0LT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgICAgICBp
dC0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRl
cik7Ci0KLSAgICAgICAgICAgIGlmIChpdC0+cmVwbGljYUxheWVyKCkpIHsKLSAgICAgICAgICAg
ICAgICBpdC0+cmVwbGljYUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4
dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGl0LT5yZXBsaWNhTGF5ZXIoKS0+bWFz
a0xheWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGl0LT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xh
eWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0c2VsZigpKQotICAg
ICAgICAgICAgaXQtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7
Ci0gICAgfQotfQotCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkK
LXsKLSAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3Vw
ZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVt
KiBsYXllciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwotICAgICAgICBBU1NF
UlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIGxheWVyLT5jbGVhclJlbmRlclN1
cmZhY2UoKTsKLSAgICB9Ci0gICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7Ci19Ci0KIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVT
ZXQmIGluZm8pCiB7CiAgICAgLy8gRklYTUU6IHB1c2hpbmcgc2Nyb2xsIG9mZnNldHMgdG8gbm9u
LXJvb3QgbGF5ZXJzIG5vdCBpbXBsZW1lbnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApp
bmRleCAxYzIyYTRkNWViZTIyNWE4MzY0NWYwZmViYWM0NDU0MzM5MzkxMzM4Li44NTU1MmEzMzRi
YzFhYjUyZDFiM2E3YWRkYjJlZDNlZmQwNWZlMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaApAQCAtMTU1LDcgKzE1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENvbXBsZXRlU3dh
cEJ1ZmZlcnMoKSB7IG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7IH0KICAgICB2
b2lkIGRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciop
OwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgd2Ugc2hvdWxkIGFib3J0IHRoaXMgZnJhbWUgZHVl
IHRvIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuCi0gICAgYm9vbCB1cGRhdGVMYXllcnMoKTsKKyAg
ICBib29sIHVwZGF0ZUxheWVycyhDQ1RleHR1cmVVcGRhdGVyJik7CiAKICAgICBDQ0xheWVyVHJl
ZUhvc3RDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKQEAgLTIwOSw3ICsy
MDksNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0
IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRv
dWJsZSBkdXJhdGlvblNlYyk7CiAKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgdm9pZCBhcHBseVNj
cm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0
UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHN0b3BSYXRlTGltaXRl
cihHcmFwaGljc0NvbnRleHQzRCopOwpAQCAtMjI4LDE0ICsyMjcsMTMgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7CiAKICAgICBlbnVtIFBhaW50VHlwZSB7
IFBhaW50VmlzaWJsZSwgUGFpbnRJZGxlIH07Ci0gICAgc3RhdGljIHZvaWQgcGFpbnRDb250ZW50
c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSwgY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyKik7Ci0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiwgUGFp
bnRUeXBlKTsKLSAgICB2b2lkIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExh
eWVyQ2hyb21pdW0qLCBQYWludFR5cGUpOworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZShMYXllckNo
cm9taXVtKiwgUGFpbnRUeXBlLCBDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyKik7CisgICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0Jiwg
UGFpbnRUeXBlLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCBwYWludE1hc2tBbmRSZXBs
aWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlLCBDQ1RleHR1cmVV
cGRhdGVyJik7CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKik7CisgICAg
dm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAg
ICAvLyBQcmUtcmVzZXJ2ZSB0ZXh0dXJlcyBmb3IgYW55IGxheWVyIG1hcmtlZCAiYWx3YXlzIHJl
c2VydmUgdGV4dHVyZXMiCi0gICAgdm9pZCByZXNlcnZlVGV4dHVyZXMoKTsKLSAgICB2b2lkIGNs
ZWFyUGVuZGluZ1VwZGF0ZSgpOworICAgIHZvaWQgcmVzZXJ2ZVRleHR1cmVzKGNvbnN0IExheWVy
TGlzdCYpOwogCiAgICAgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsK
ICAgICBib29sIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogY3VycmVudCwg
ZG91YmxlIG1vbm90b25pY1RpbWUpOwpAQCAtMjU5LDggKzI1Nyw2IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0cjxUZXh0dXJlTWFu
YWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyOwogCi0gICAgTGF5ZXJMaXN0IG1fdXBkYXRl
TGlzdDsKLQogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKIAogICAgIEludFNpemUgbV92aWV3
cG9ydFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDU3
ZjBjMjA2MzZiNjk0MGRkM2MwODM2ZTFhZDI5MGU2ZWJmYTIzNDguLjkyMjNjNWY2YjAwZDFlZGQx
ZWE2MzQ2MGM5ZjA5OTlhNGRmZGJkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpz
ZXROZWVkc0FuaW1hdGUoKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEND
U2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
ZG9Db21taXQoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICBBU1NFUlQoQ0NQcm94
eTo6aXNNYWluVGhyZWFkKCkpOwogICAgIC8vIENvbW1pdCBpbW1lZGlhdGVseQpAQCAtMjAwLDgg
KzIwMCw2IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogICAgICAgICBt
X2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7
Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKLSAgICAgICAgbV9sYXllclRyZWVI
b3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
eHQoKSwgdXBkYXRlcik7CiAgICAgICAgIHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGll
cigpLCBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgICAgIEFTU0VSVCghdXBk
YXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0
VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CkBAIC0yODcsMTAgKzI4NSwxMiBA
QCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKCkKIHsKICAgICBBU1NF
UlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKCFtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUxheWVycygpKQorICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKworICAgIGlm
ICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGRvQ29tbWl0KCk7CisgICAgZG9Db21taXQodXBkYXRlcik7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRl
eCA5ODg3NDMyZWJhZDZlNTNjZTQwNTI2YzYwZTEyMDExNjA2MTYzMTRlLi45NjExMGMzMjg5MDEw
OWFlNmMxZGM2OGIzYWIwYjhmODkxMjZlNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NTaW5n
bGVUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIAogICAgIGJvb2wgY29tbWl0SWZOZWVk
ZWQoKTsKLSAgICB2b2lkIGRvQ29tbWl0KCk7CisgICAgdm9pZCBkb0NvbW1pdChDQ1RleHR1cmVV
cGRhdGVyJik7CiAgICAgYm9vbCBkb0NvbXBvc2l0ZSgpOwogICAgIHZvaWQgZGlkU3dhcEZyYW1l
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZWJjZThiZjI5MWQ2YjRiNjE4
YWU2MGI3NTdkZDJmNGFhYzgwOGVjNS4uNzUxOTg2ZjM1YmIwYWUzNzdmNDhmZGFkM2ZiMWU0N2Nh
ZGZjZDMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTQxMiw2ICs0MTIsOCBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKQogICAgIG1f
cGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0ID0gYWRvcHRQdHIobmV3IEJlZ2luRnJhbWVBbmRDb21t
aXRTdGF0ZSgpKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+bW9ub3RvbmljRnJh
bWVCZWdpblRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBtX3BlbmRp
bmdCZWdpbkZyYW1lUmVxdWVzdC0+c2Nyb2xsSW5mbyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnBy
b2Nlc3NTY3JvbGxEZWx0YXMoKTsKKyAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKTsKKyAgICBtX3BlbmRpbmdCZWdp
bkZyYW1lUmVxdWVzdC0+dXBkYXRlciA9IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkLmdldCgpOwogCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSkpOwogCkBAIC00NjUsNyAr
NDY3LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICAvLyB1cGRhdGVM
YXllcnMuCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotICAgIGlmICghbV9sYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnMoKSkKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+dXBk
YXRlTGF5ZXJzKCpyZXF1ZXN0LT51cGRhdGVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
QmVmb3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5pbWF0ZSwgd2Ugc2V0IG1fYW5p
bWF0ZVJlcXVlc3RlZCB0byBmYWxzZS4KQEAgLTQ5NSw2ICs0OTcsNyBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCog
Y29tcGxldGlvbgogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fc2No
ZWR1bGVyT25JbXBsVGhyZWFkKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQt
PmNvbW1pdFBlbmRpbmcoKSk7CisKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsKICAg
ICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTUwMiwxMCAr
NTA1LDYgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0Q29tcGxldGlv
bkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKIAotICAgIEFTU0VSVCghbV9jdXJyZW50
VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIpOwotICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0KICAg
ICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CiB9CiAKQEAg
LTUzNCwxMyArNTMzLDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBk
YXRlTW9yZVJlc291cmNlcygpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNv
bW1pdCgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlv
bkNvbW1pdCIsIHRoaXMsIDApOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNT
RVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKICAgICBBU1NFUlQoIW1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsKICAg
ICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogCiAgICAgbV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKIAotCiAgICAgbV9sYXll
clRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIAogICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVn
aW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmgKaW5kZXggMzVmZTFkYmFmZjQwYjRhNmUyZGY5ZmNkODRkMjJmOTI1NjBj
OWIzNy4uYTM4MzEyZGU1NjA1NTYyNGJiZTdhYmE4Yzc3Yzg3ZWQ1NjI0MTIwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaApAQCAtOTQsOSArOTQsMTUgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNl
dCBvbiBpbXBsIHRocmVhZCwgcmVhZCBvbiBtYWluIHRocmVhZC4KICAgICBzdHJ1Y3QgQmVnaW5G
cmFtZUFuZENvbW1pdFN0YXRlIHsKLSAgICAgICAgQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKCkg
OiBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSgpIHsgfQorICAgICAgICBCZWdpbkZyYW1lQW5kQ29t
bWl0U3RhdGUoKQorICAgICAgICAgICAgOiBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSgwKQorICAg
ICAgICAgICAgLCB1cGRhdGVyKDApCisgICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIGRv
dWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZTsKICAgICAgICAgT3duUHRyPENDU2Nyb2xsQW5k
U2NhbGVTZXQ+IHNjcm9sbEluZm87CisgICAgICAgIENDVGV4dHVyZVVwZGF0ZXIqIHVwZGF0ZXI7
CiAgICAgfTsKICAgICBPd25QdHI8QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlPiBtX3BlbmRpbmdC
ZWdpbkZyYW1lUmVxdWVzdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggOGY2YWMyYmE3NDhlZDVlNmVmMDk5YWQ2
YzBhNjBlNDg2YTc0NjlkOC4uMjEwYzcyOGUyZDg5MDE4ZDY3ZTUxOWIwYWMzNzdlNjU1ZDhiYzQz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRl
c3RDb21tb24uaCIKICNpbmNsdWRlICJDQ09jY2x1c2lvblRyYWNrZXJUZXN0Q29tbW9uLmgiCisj
aW5jbHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNvbXBvc2l0b3JG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJDb250ZW50TGF5ZXJDaHJvbWl1
bS5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKQEAgLTQ5Miw3ICs0OTMsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIG1fYmVnaW5UYXNrID0gbmV3IEJlZ2luVGFzayh0aGlzKTsKICAg
ICAgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmN1cnJlbnRUaHJlYWQoKS0+cG9zdERlbGF5
ZWRUYXNrKG1fYmVnaW5UYXNrLCAwKTsgLy8gcG9zdERlbGF5ZWRUYXNrIHRha2VzIG93bmVyc2hp
cCBvZiB0aGUgdGFzawogICAgICAgICBtX3RpbWVvdXRUYXNrID0gbmV3IFRpbWVvdXRUYXNrKHRo
aXMpOwotICAgICAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3VycmVudFRocmVhZCgpLT5w
b3N0RGVsYXllZFRhc2sobV90aW1lb3V0VGFzaywgNTAwMCk7CisgICAgICAgIHdlYktpdFBsYXRm
b3JtU3VwcG9ydCgpLT5jdXJyZW50VGhyZWFkKCktPnBvc3REZWxheWVkVGFzayhtX3RpbWVvdXRU
YXNrLCA1MDAwKjEwMDAwKTsKICAgICAgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmN1cnJl
bnRUaHJlYWQoKS0+ZW50ZXJSdW5Mb29wKCk7CiAKICAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dCAmJiBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpKQpAQCAtMTM5NywzMyArMTM5OCwyMyBA
QCBwdWJsaWM6CiAgICAgaW50IGlkbGVQYWludENvbnRlbnRzQ291bnQoKSB7IHJldHVybiBtX2lk
bGVQYWludENvbnRlbnRzQ291bnQ7IH0KICAgICB2b2lkIHJlc2V0UGFpbnRDb250ZW50c0NvdW50
KCkgeyBtX3BhaW50Q29udGVudHNDb3VudCA9IDA7IG1faWRsZVBhaW50Q29udGVudHNDb3VudCA9
IDA7fQogCi0gICAgaW50IHVwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV91cGRhdGVDb3VudDsgfQot
ICAgIHZvaWQgcmVzZXRVcGRhdGVDb3VudCgpIHsgbV91cGRhdGVDb3VudCA9IDA7IH0KLQotICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNr
ZXIqIG9jY2x1c2lvbikKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZXIm
IHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogICAgIHsKLSAg
ICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1c2lv
bik7CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGUodXBkYXRlciwgb2NjbHVz
aW9uKTsKICAgICAgICAgbV9wYWludENvbnRlbnRzQ291bnQrKzsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tl
ciogb2NjbHVzaW9uKQorICAgIHZpcnR1YWwgdm9pZCBpZGxlVXBkYXRlKENDVGV4dHVyZVVwZGF0
ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQogICAgIHsK
LSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShv
Y2NsdXNpb24pOworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVVwZGF0ZSh1cGRh
dGVyLCBvY2NsdXNpb24pOwogICAgICAgICBtX2lkbGVQYWludENvbnRlbnRzQ291bnQrKzsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKLSAgICB7Ci0g
ICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNv
bnRleHQsIHVwZGF0ZXIpOwotICAgICAgICBtX3VwZGF0ZUNvdW50Kys7Ci0gICAgfQotCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
KENvbnRlbnRMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICAgICAgOiBDb250ZW50TGF5ZXJD
aHJvbWl1bShkZWxlZ2F0ZSkKICAgICAgICAgLCBtX3BhaW50Q29udGVudHNDb3VudCgwKQogICAg
ICAgICAsIG1faWRsZVBhaW50Q29udGVudHNDb3VudCgwKQotICAgICAgICAsIG1fdXBkYXRlQ291
bnQoMCkKICAgICB7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgICAg
ICBzZXRJc0RyYXdhYmxlKHRydWUpOwpAQCAtMTQzMSw3ICsxNDIyLDYgQEAgcHJpdmF0ZToKIAog
ICAgIGludCBtX3BhaW50Q29udGVudHNDb3VudDsKICAgICBpbnQgbV9pZGxlUGFpbnRDb250ZW50
c0NvdW50OwotICAgIGludCBtX3VwZGF0ZUNvdW50OwogfTsKIAogLy8gTGF5ZXIgb3BhY2l0eSBj
aGFuZ2UgZHVyaW5nIHBhaW50IHNob3VsZCBub3QgcHJldmVudCBjb21wb3NpdG9yIHJlc291cmNl
cyBmcm9tIGJlaW5nIHVwZGF0ZWQgZHVyaW5nIGNvbW1pdC4KQEAgLTE0NTgsMTcgKzE0NDgsMTIg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCiAgICAgewotICAgICAg
ICAvLyBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2Uu
CisgICAgICAgIC8vIHVwZGF0ZSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCiAgICAg
ICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgp
KTsKIAotICAgICAgICAvLyBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQgaGF2ZSBi
ZWVuIGNhbGxlZCBvbmNlCisgICAgICAgIC8vIGlkbGVVcGRhdGUoKSBzaG91bGQgaGF2ZSBiZWVu
IGNhbGxlZCBvbmNlCiAgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPmlk
bGVQYWludENvbnRlbnRzQ291bnQoKSk7CiAKLSAgICAgICAgLy8gdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCi0gICAgICAgIC8vIGFt
b3V0IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNJZkRpcnR5KCkuCi0gICAgICAgIEVYUEVDVF9F
UShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpLAotICAgICAgICAgICAg
ICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVDb3VudCgpKTsKLQogICAgICAgICAvLyBj
bGVhciBtX3VwZGF0ZUNoZWNrTGF5ZXIgc28gQ0NMYXllclRyZWVIb3N0IGRpZXMuCiAgICAgICAg
IG1fdXBkYXRlQ2hlY2tMYXllci5jbGVhcigpOwogICAgIH0KQEAgLTE0OTcsNyArMTQ4Miw4IEBA
IHB1YmxpYzoKICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUoMTAsIDEwKTsKICAgICAgICAg
bGF5ZXJUcmVlSG9zdCgpLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKIAotICAgICAg
ICBsYXllclRyZWVIb3N0KCktPnVwZGF0ZUxheWVycygpOworICAgICAgICBDQ1RleHR1cmVVcGRh
dGVyIHVwZGF0ZXI7CisgICAgICAgIGxheWVyVHJlZUhvc3QoKS0+dXBkYXRlTGF5ZXJzKHVwZGF0
ZXIpOwogCiAgICAgICAgIEVYUEVDVF9FUSh2aWV3cG9ydFNpemUsIGxheWVyVHJlZUhvc3QoKS0+
dmlld3BvcnRTaXplKCkpOwogICAgICAgICBFWFBFQ1RfRVEoVGV4dHVyZU1hbmFnZXI6OmhpZ2hM
aW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSksIGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJl
TWFuYWdlcigpLT5tYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwpAQCAtMTY4Niw5ICsxNjcyLDkgQEAg
cHVibGljOgogICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRleHR1cmVzIHVzZWQgZm9yIGNvbW1p
dCBzaG91bGQgc3RpbGwgYmUgdHdvLgogICAgICAgICAgICAgRVhQRUNUX0VRKDIsIGNvbnRleHQt
Pm51bVVzZWRUZXh0dXJlcygpKTsKICAgICAgICAgICAgIC8vIEZpcnN0IHRleHR1cmUgc2hvdWxk
IG5vdCBoYXZlIGJlZW4gdXNlZC4KLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShjb250ZXh0LT51
c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJV
RShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDApKSk7CiAgICAgICAgICAg
ICAvLyBTZWNvbmQgdGV4dHVyZSBzaG91bGQgaGF2ZSBiZWVuIHVzZWQuCi0gICAgICAgICAgICBF
WFBFQ1RfVFJVRShjb250ZXh0LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDEpKSk7Cisg
ICAgICAgICAgICBFWFBFQ1RfRkFMU0UoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4
dHVyZSgxKSkpOwogICAgICAgICAgICAgLy8gTmV3IHRleHR1cmVzIHNob3VsZCBoYXZlIGJlZW4g
dXNlZC4KICAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRl
eHQtPnRleHR1cmUoMikpKTsKIApAQCAtMTc2MCw3ICsxNzQ2LDcgQEAgY2xhc3MgVGVzdExheWVy
Q2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBUZXN0TGF5ZXJDaHJvbWl1bSgpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tl
ciogb2NjbHVzaW9uKQogICAgIHsKICAgICAgICAgLy8gR2FpbiBhY2Nlc3MgdG8gaW50ZXJuYWxz
IG9mIHRoZSBDQ09jY2x1c2lvblRyYWNrZXIuCiAgICAgICAgIGNvbnN0IFRlc3RDQ09jY2x1c2lv
blRyYWNrZXIqIHRlc3RPY2NsdXNpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyKj4ob2NjbHVzaW9uKTsKQEAgLTE4MjUsNyArMTgxMSw4IEBAIHB1YmxpYzoKIAog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsK
LSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwog
CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRT
Y3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE4NDIsNyArMTgyOSw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsK
LSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCks
IGdyYW5kQ2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0xODYwLDcg
KzE4NDcsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5
ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUo
cm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBncmFuZENoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCku
Ym91bmRzKCkpOwpAQCAtMTg4MCw3ICsxODY3LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21w
bGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+
b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE5MDIsNyArMTg4OSw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIp
OwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJv
dW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KCksIGdyYW5kQ2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBA
IC0xOTI0LDcgKzE5MTEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3
cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
dXBkYXRlTGF5ZXJzKCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVw
ZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBjaGlsZDItPm9jY2x1ZGVkU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7CkBAIC0xOTQ3LDcgKzE5MzQsNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1p
dENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBncmFuZENo
aWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwpAQCAtMTk3MCw3ICsxOTU3LDcg
QEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RM
YXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXll
ci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwor
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwpA
QCAtMjAxMyw3ICsyMDAwLDggQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmll
d3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUxheWVycygpOworICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgpLCBjaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTIw
NzEsNyArMjA1OSw4IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJv
b3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0
U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRh
dGVMYXllcnMoKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwpAQCAtMjA5OCw3
ICsyMDg3LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExh
eWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXpl
KHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxh
eWVycygpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91
bmRzKCkpOwpAQCAtMjE1OCw3ICsyMTQ3LDggQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Um9vdExheWVyKGxheWVyc1swXS5nZXQoKSk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKGxheWVyc1swXS0+Ym91bmRzKCkpOwotICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBDQ1RleHR1cmVVcGRhdGVy
IHVwZGF0ZXI7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIp
OwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1TdXJmYWNlcy0xOyArK2kpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCmlu
ZGV4IGY3ZDc4OTRiNzA0NmY3ZjdlZjhlNGE4MmQxYjZiZmYwZDlhN2QzNjMuLjMzNDUzN2Q0NGIx
OWJkM2U0NDczNzIwYWNkMzQxZTMxNDNmYWUzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcApAQCAtMTE2LDkg
KzExNiw5IEBAIHZvaWQgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgVGlsZWRMYXllckNocm9taXVtOjpzZXROZWVk
c0Rpc3BsYXlSZWN0KHJlY3QpOwogfQogCi12b2lkIEZha2VUaWxlZExheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQor
dm9pZCBGYWtlVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYgdXBk
YXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7Ci0gICAgcHJlcGFy
ZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2NjbHVzaW9uKTsKKyAgICB1cGRhdGVMYXll
clJlY3QodXBkYXRlciwgdmlzaWJsZUxheWVyUmVjdCgpLCBvY2NsdXNpb24pOwogfQogCiBGYWtl
VGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHM6OkZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5k
cyhUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IDgxYmQxMTQx
MDA4N2RjNGE2MmRiMmQzYjRlOWVmZmRhZmE0NmNjYjAuLjI5NzRkYWZhYjFkZmViODZjOGI5MmFi
YjFiZWI4MmU0NTU4MDk5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCkBAIC0xMTAsOCArMTEwLDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRTaXplIHRpbGVTaXplKCkgeyByZXR1cm4gV2ViQ29y
ZTo6SW50U2l6ZSgxMDAsIDEwMCk7IH0KIAogICAgIHVzaW5nIFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6aW52YWxpZGF0ZVJlY3Q7Ci0gICAgdXNpbmcgV2ViQ29yZTo6VGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGU7Ci0gICAgdXNpbmcgV2ViQ29yZTo6VGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlOworICAgIHVzaW5nIFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJSZWN0OworICAgIHVzaW5nIFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6aWRsZVVwZGF0ZUxheWVyUmVjdDsKICAgICB1c2luZyBXZWJDb3JlOjpUaWxl
ZExheWVyQ2hyb21pdW06Om5lZWRzSWRsZVBhaW50OwogICAgIHVzaW5nIFdlYkNvcmU6OlRpbGVk
TGF5ZXJDaHJvbWl1bTo6c2tpcHNEcmF3OwogICAgIHVzaW5nIFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6bnVtUGFpbnRlZFRpbGVzOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkgY29uc3Qg
eyByZXR1cm4gbV9sYXN0TmVlZHNEaXNwbGF5UmVjdDsgfQogCiAgICAgLy8gVXBkYXRlcyB0aGUg
dmlzaWJsZUxheWVyUmVjdCgpLgotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0
eShjb25zdCBXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBXZWJDb3JlOjpDQ09jY2x1
c2lvblRyYWNrZXIqKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4dHVyZU1hbmFnZXIqIHRl
eHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWFuYWdlcjsgfQogICAgIEZh
a2VMYXllclRleHR1cmVVcGRhdGVyKiBmYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJu
IG1fZmFrZVRleHR1cmVVcGRhdGVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCAx
NmQxNzRmNWZlMDI1NzRmMmRmMzlmNTcxMmViZDZmMDU0NDlkMzg1Li5hMGY4MDA2ZTQ3MmUzZmNl
OGM5NThmZGZkZmNjZmU4NzdkNjA3MzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTExMyw3
ICsxMTMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgT3duUHRyPEZha2VDQ0xheWVyVHJlZUhv
c3Q+IGxheWVyVHJlZUhvc3QoRmFrZUNDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCkpOwogICAgICAg
ICAvLyBGb3JjZSBhbiB1cGRhdGUsIHNvIHRoYXQgd2UgZ2V0IGEgdmFsaWQgVGV4dHVyZU1hbmFn
ZXIuCi0gICAgICAgIGxheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBsYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAKICAgICAgICAgY29uc3QgV2ViR0xJ
ZCBiYWNrVGV4dHVyZUlkID0gMTsKICAgICAgICAgY29uc3QgV2ViR0xJZCBmcm9udFRleHR1cmVJ
ZCA9IDI7CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIGNhbnZhcy0+
c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNhbnZhcy0+bmVlZHNEaXNw
bGF5KCkpOwotICAgICAgICBjYW52YXMtPnBhaW50Q29udGVudHNJZkRpcnR5KDApOworICAgICAg
ICBjYW52YXMtPnVwZGF0ZSh1cGRhdGVyLCAwKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGNhbnZh
cy0+bmVlZHNEaXNwbGF5KCkpOwogICAgICAgICB7CiAgICAgICAgICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKQEAgLTE1Myw3ICsxNTMsNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgICAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVySW1wbCA9IGNhbnZhcy0+
Y3JlYXRlQ0NMYXllckltcGwoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUSgwdSwgc3RhdGljX2Nh
c3Q8Q0NUZXh0dXJlTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwog
Ci0gICAgICAgICAgICBjYW52YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1wbENvbnRl
eHQuZ2V0KCksIHVwZGF0ZXIpOwogICAgICAgICAgICAgdXBkYXRlci51cGRhdGUoaW1wbENvbnRl
eHQuZ2V0KCksICZhbGxvY2F0b3JNb2NrLCAmY29waWVyTW9jaywgMSk7CiAgICAgICAgICAgICBj
YW52YXMtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAK
aW5kZXggYzM2ZTUxYTMwZGFhOTgyODlmMjFkZDBiOWE3NmNkN2NhMzEyM2IzZC4uZTBlY2E1YTI0
NDE5NGIwMTU5MTllYzI1ZWVlMThiOGQ1MzIwN2I0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC03Nyw4
ICs3Nyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAg
ICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0
aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwg
MjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAw
KTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAg
ICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
LCAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAg
ICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtOTAs
OCArODksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQog
ICAgIC8vIEludmFsaWRhdGVzIGJvdGggdGlsZXMuLi4KICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVw
ZGF0ZSBvbmUgb2YgdGhlbS4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwg
MCwgMTAwLCAxMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygw
LCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllcklt
cGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSB0aGUgZmlyc3QgdGlsZSBz
aW5jZSB0aGUgb3RoZXIgdGlsZSB3YXMgaW52YWxpZGF0ZWQgYnV0IG5vdCBwYWludGVkLgpAQCAt
MTE0LDggKzExMiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaE9jY2x1ZGVk
RGlydHlUaWxlcykKICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJv
dW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0
ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAmb2NjbHVkZWQpOwogICAgIGxheWVyLT5wdXNo
UHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRl
ZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEz
Miw4ICsxMjksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERp
cnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUw
KSk7CiAgICAgLy8gLi4uLmJ1dCB0aGUgYXJlYSBpcyBvY2NsdWRlZC4KICAgICBvY2NsdWRlZC5z
ZXRPY2NsdXNpb24oSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOwotICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVM
YXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CiAg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIEVYUEVD
VF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCks
IDAsIDEpOwpAQCAtMTU5LDggKzE1NSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaERlbGV0ZWRUaWxlcykKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRo
aXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0
Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBib3RoIHRpbGVzIG9uIHRo
ZSBpbXBsIHNpZGUuCkBAIC0xNzksOCArMTc0LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1Rp
bGVBdCgwLCAxKSk7CiAKICAgICAvLyBUaGlzIHNob3VsZCByZWNyZWF0ZSBhbmQgdXBkYXRlIHRo
ZSBkZWxldGVkIHRleHR1cmVzLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCksIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCksIDApOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgb25seSBoYXZlIHRoZSBmaXJzdCB0aWxl
IHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlkYXRlZCBidXQgbm90IHBhaW50ZWQuCkBA
IC0yMDYsMTIgKzIwMCwxMSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxl
UGFpbnRUaWxlcykKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwogICAgIGxh
eWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJs
ZVJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZVJl
Y3QsIDApOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRp
bGVzIGluIHRoZSBjZW50ZXIuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50
KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygw
LCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgb24gdGhlIGltcGwgc2lkZS4KQEAg
LTIyMSwxMCArMjE0LDkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBh
aW50VGlsZXMpCiAKICAgICAvLyBGb3IgdGhlIG5leHQgZm91ciB1cGRhdGVzLCB3ZSBzaG91bGQg
ZGV0ZWN0IHdlIHN0aWxsIG5lZWQgaWRsZSBwYWludGluZy4KICAgICBmb3IgKGludCBpID0gMDsg
aSA8IDQ7IGkrKykgewotICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0
LCAwKTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVj
dCwgMCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxl
UmVjdCkpOwotICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwg
MCk7Ci0gICAgICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OworICAgICAgICBsYXllci0+aWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVj
dCwgMCk7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7
CiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIH0K
QEAgLTI3MiwyOCArMjY0LDI0IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRp
bGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgbGF5ZXIxLT5zZXRCb3VuZHMobGF5ZXJSZWN0
LnNpemUoKSk7CiAgICAgbGF5ZXIxLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KGxheWVyUmVjdCk7CiAg
ICAgbGF5ZXIxLT5pbnZhbGlkYXRlUmVjdChsYXllclJlY3QpOwotICAgIGxheWVyMS0+cHJlcGFy
ZVRvVXBkYXRlKGxheWVyUmVjdCwgMCk7CisgICAgbGF5ZXIxLT51cGRhdGVMYXllclJlY3QodXBk
YXRlciwgbGF5ZXJSZWN0LCAwKTsKIAogICAgIC8vIFBhaW50IGEgc2luZ2xlIHRpbGUgaW4gbGF5
ZXIyIHNvIHRoYXQgaXQgd2lsbCBpZGxlIHBhaW50LgotICAgIGxheWVyMi0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKKyAgICBsYXllcjItPnVwZGF0ZUxheWVy
UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CiAKICAgICAvLyBXZSBz
aG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciBib3RoIHJlbWFpbmluZyB0aWxlcyBpbiBsYXll
cjIuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5uZWVkc0lkbGVQYWludChsYXllcjJSZWN0KSk7
CiAKICAgICAvLyBDb21taXQgdGhlIGZyYW1lIG92ZXIgdG8gaW1wbC4KLSAgICBsYXllcjEtPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Ci0gICAgbGF5ZXIyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIHVwZGF0ZXIudXBkYXRlKDAsICZh
bGxvY2F0b3IsICZjb3BpZXIsIDUwMDApOwogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwxLmdldCgpKTsKICAgICBsYXllcjItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
Mi5nZXQoKSk7CiAKICAgICAvLyBOb3cgaWRsZSBwYWludCBsYXllcjIuIFdlIGFyZSBnb2luZyB0
byBydW4gb3V0IG9mIG1lbW9yeSB0aG91Z2ghCi0gICAgbGF5ZXIyLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwotICAgIGxheWVyMi0+cHJlcGFyZVRvVXBkYXRl
SWRsZShsYXllcjJSZWN0LCAwKTsKKyAgICBsYXllcjItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CisgICAgbGF5ZXIyLT5pZGxlVXBkYXRlTGF5
ZXJSZWN0KHVwZGF0ZXIsIGxheWVyMlJlY3QsIDApOwogCiAgICAgLy8gT2ggd2VsbCwgY29tbWl0
IHRoZSBmcmFtZSBhbmQgcHVzaC4KLSAgICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoMCwgdXBkYXRlcik7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAs
IHVwZGF0ZXIpOwogICAgIHVwZGF0ZXIudXBkYXRlKDAsICZhbGxvY2F0b3IsICZjb3BpZXIsIDUw
MDApOwogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwxLmdldCgpKTsKICAg
ICBsYXllcjItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsMi5nZXQoKSk7CkBAIC0zMTAsMTEg
KzI5OCw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxl
UGFpbnRGYWlsZWQpCiAgICAgLy8gTm93IGlmIGxheWVyMiBiZWNvbWVzIGZ1bGx5IHZpc2libGUs
IHdlIHNob3VsZCBiZSBhYmxlIHRvIHBhaW50IGl0IGFuZCBwdXNoIHZhbGlkIHRleHR1cmVzLgog
ICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogCi0gICAgbGF5ZXIy
LT5wcmVwYXJlVG9VcGRhdGUobGF5ZXIyUmVjdCwgMCk7Ci0gICAgbGF5ZXIxLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgpLCAwKTsKKyAgICBsYXllcjItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVy
LCBsYXllcjJSZWN0LCAwKTsKKyAgICBsYXllcjEtPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJ
bnRSZWN0KCksIDApOwogCi0gICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAs
IHVwZGF0ZXIpOwotICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRh
dGVyKTsKICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAmY29waWVyLCA1MDAwKTsK
ICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsMS5nZXQoKSk7CiAgICAgbGF5
ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDIuZ2V0KCkpOwpAQCAtMzQ0LDkgKzMzMCw4
IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludGVkT2NjbHVkZWRU
aWxlcykKICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgx
LCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygp
LmhlaWdodCgpIC8gMi4wKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZShJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKLSAgICBsYXllci0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOworICAgIGxheWVy
LT5pZGxlVXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAm
b2NjbHVkZWQpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7
CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSB0aGUgcHJlcGFpbnRlZCB0aWxlIG9uIHRoZSBpbXBs
IHNpZGUuCkBAIC0zNjgsOCArMzUzLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoVGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50
U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJl
Y3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVyLmdldCgpKTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKLSAg
ICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXll
ci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsK
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8g
V2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMzkzLDE0ICsz
NzcsMTEgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtl
ZERpcnR5RHVyaW5nUGFpbnRPbk5leHRMYXllcikKICAgICBsYXllcjItPnNldEJvdW5kcyhJbnRT
aXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSk7CiAKLSAgICBsYXllcjEtPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXIxLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogCiAgICAgLy8gSW52YWxpZGF0ZSBhIHRpbGUgb24g
bGF5ZXIxCiAgICAgbGF5ZXIyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9J
bnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXllcjEuZ2V0KCkpOwotICAgIGxh
eWVyMi0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKLQotICAg
IGxheWVyMS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKLSAgICBsYXll
cjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXIyLT51
cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogCiAg
ICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVyMUltcGwuZ2V0KCkpOwogICAgIGxheWVy
Mi0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjJJbXBsLmdldCgpKTsKQEAgLTQzMCwxMiArNDExLDkg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5
RHVyaW5nUGFpbnRPblByZXZpb3VzTGF5ZXIKIAogICAgIC8vIEludmFsaWRhdGUgYSB0aWxlIG9u
IGxheWVyMgogICAgIGxheWVyMS0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRv
SW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5ZXIyLmdldCgpKTsKLSAgICBs
YXllcjEtPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0KLSAg
ICBsYXllcjItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Cisg
ICAgbGF5ZXIxLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCksIDApOwogCi0gICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0
ZXIpOwotICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsK
KyAgICBsYXllcjItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSwgMCk7CiAKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIxSW1wbC5nZXQo
KSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVyMkltcGwuZ2V0KCkpOwpAQCAt
NDY4LDI1ICs0NDYsMjMgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRP
dXRPZk1lbW9yeSkKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwogICAgIGxh
eWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJs
ZVJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZVJl
Y3QsIDApOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRp
bGVzIHN1cm91bmRpbmcgdmlzaWJsZSB0aWxlLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVk
c0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBpbXBs
IHNpZGUuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMSwgMSkpOwogCiAg
ICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgMCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZUlkbGUodmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRl
ciwgdmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT5pZGxlVXBkYXRlTGF5ZXJSZWN0KHVwZGF0
ZXIsIHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2UgbmVl
ZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgRVhQ
RUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIH0KIApAQCAtNTA1LDcgKzQ4MSw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkTGF5ZXIpCiAg
ICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50UmVjdC5zaXplKCkpOwogICAgIGxheWVyLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KGNvbnRlbnRSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
Y29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudFJlY3QsIDAp
OworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVudFJlY3QsIDApOwog
CiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCiAgICAgRVhQRUNUX0VRKDB1
LCBsYXllci0+bnVtUGFpbnRlZFRpbGVzKCkpOwpAQCAtNTEzLDE5ICs0ODksMTcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6ZWRMYXllcikKICAgICAvLyBF
bXB0eSBsYXllcnMgZG9uJ3QgbmVlZCBwcmVwYWludC4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXIt
Pm5lZWRzSWRsZVBhaW50KGNvbnRlbnRSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMu
CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKIAogICAgIC8v
IE5vbi12aXNpYmxlIGxheWVycyBkb24ndCBpZGxlIHBhaW50LgotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGVJZGxlKGNvbnRlbnRSZWN0LCAwKTsKKyAgICBsYXllci0+aWRsZVVwZGF0ZUxheWVy
UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CiAKICAgICAvLyBFbXB0eSBsYXllcnMgZG9u
J3QgaGF2ZSB0aWxlcy4KICAgICBFWFBFQ1RfRVEoMHUsIGxheWVyLT5udW1QYWludGVkVGlsZXMo
KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsK
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8g
RW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCkBAIC01NTAsNyArNTI0LDcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6ZWRBbmltYXRpbmdMYXllcikK
ICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRSZWN0LnNpemUoKSk7CiAgICAgbGF5ZXItPnNl
dFZpc2libGVMYXllclJlY3QoY29udGVudFJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChjb250ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50UmVjdCwg
MCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7
CiAKICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxlcy4KICAgICBFWFBFQ1RfRVEo
MHUsIGxheWVyLT5udW1QYWludGVkVGlsZXMoKSk7CkBAIC01NTgsMTkgKzUzMiwxNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludFplcm9TaXplZEFuaW1hdGluZ0xheWVy
KQogICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBuZWVkIHByZXBhaW50LgogICAgIEVYUEVDVF9G
QUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQoY29udGVudFJlY3QpKTsKIAotICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJv
cGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3Qg
aGF2ZSB0aWxlcy4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkp
OwogCiAgICAgLy8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0IGlkbGUgcGFpbnQuCi0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUoY29udGVudFJlY3QsIDApOworICAgIGxheWVyLT5pZGxl
VXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKIAogICAgIC8vIEVtcHR5
IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgogICAgIEVYUEVDVF9FUSgwdSwgbGF5ZXItPm51bVBh
aW50ZWRUaWxlcygpKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAs
IHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7
CiAKICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxlcy4KQEAgLTU5NSwyMSArNTY3
LDE5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUxh
eWVycykKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwogICAgIGxheWVyLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3Qs
IDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDAp
OwogCiAgICAgLy8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0IG5lZWQgaWRsZSBwYWludC4KICAg
ICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAKLSAg
ICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXll
ci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxk
IG5vdCBoYXZlIGFueSB0aWxlcyBwdXNoZWQgc2luY2UgdGhlIGxheWVyIGlzIG5vdCB2aXNpYmxl
LgogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CiAKICAgICAv
LyBOb24tdmlzaWJsZSBsYXllcnMgZG9uJ3QgaWRsZSBwYWludC4KLSAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgMCk7CisgICAgbGF5ZXItPmlkbGVVcGRhdGVMYXll
clJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8o
bGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBub3QgaGF2ZSBhbnkgdGlsZXMg
cHVzaGVkIHNpbmNlIHRoZSBsYXllciBpcyBub3QgdmlzaWJsZS4KQEAgLTYxOSw5ICs1ODksOCBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMp
CiBzdGF0aWMgdm9pZCBpZGxlUGFpbnRSZXBlYXQoaW50IHJlcGVhdFRpbWVzLCBGYWtlVGlsZWRM
YXllckNocm9taXVtKiBsYXllciwgRmFrZUNDVGlsZWRMYXllckltcGwqIGxheWVySW1wbCwgQ0NU
ZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QpCiB7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRUaW1lczsgKytpKSB7Ci0gICAgICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIDApOwotICAgICAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgMCk7Ci0gICAgICAgIGxheWVyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgICAgICBsYXllci0+dXBkYXRlTGF5ZXJS
ZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKKyAgICAgICAgbGF5ZXItPmlkbGVVcGRhdGVM
YXllclJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICBsYXllci0+cHVzaFBy
b3BlcnRpZXNUbyhsYXllckltcGwpOwogICAgIH0KIH0KQEAgLTY2OSw4ICs2MzgsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVBbmltYXRpbmdMYXll
cnMpCiAgICAgICAgICAgICBib29sIHNob3VsZFByZXBhaW50ID0gIWxheWVyLT5pZGxlUGFpbnRS
ZWN0KHZpc2libGVSZWN0KS5pc0VtcHR5KCk7CiAKICAgICAgICAgICAgIC8vIFRoaXMgcGFpbnRz
IHRoZSBsYXllciBidXQgdGhlcmUncyBub3RoaW5nIHZpc2libGUgc28gaXQncyBhIG5vLW9wLgot
ICAgICAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgMCk7Ci0gICAg
ICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAg
ICAgICAgICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDAp
OwogICAgICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
IAogICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBoYXZlIGFueSB0aWxlcyBwdXNoZWQgeWV0
IHNpbmNlIHRoZSBsYXllciBpcyBub3QgdmlzaWJsZSBhbmQgd2UndmUgbm90IHByZXBhaW50ZWQu
CkBAIC02OTksMTIgKzY2NywxNSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFs
aWRhdGVGcm9tUHJlcGFyZSkKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVy
SW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKIAogICAgIENDVGV4
dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciBmYWtlQWxsb2Nh
dG9yOworICAgIEZha2VUZXh0dXJlQ29waWVyIGZha2VDb3BpZXI7CisgICAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBjb250ZXh0ID0gY3JlYXRlQ29tcG9zaXRvck1vY2tHcmFwaGljc0NvbnRl
eHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcygpKTsKIAogICAgIC8vIFRoZSB0aWxl
IHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdv
IHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgbGF5ZXIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0
ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgdXBk
YXRlci51cGRhdGUoY29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAx
MDAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAg
ICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtNzE0
LDIwICs2ODUsMjMgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJv
bVByZXBhcmUpCiAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CiAK
ICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQo
KTsKLSAgICAvLyBJbnZva2UgcHJlcGFyZVRvVXBkYXRlIGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMg
dmFsaWQgcHJlcGFyZVRvVXBkYXRlIHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCisgICAgLy8gSW52
b2tlIHVwZGF0ZUxheWVyUmVjdCBhZ2Fpbi4gQXMgdGhlIGxheWVyIGlzIHZhbGlkIHVwZGF0ZUxh
eWVyUmVjdCBzaG91bGRuJ3QgYmUgaW52b2tlZCBvbgogICAgIC8vIHRoZSBMYXllclRleHR1cmVV
cGRhdGVyLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCksIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCksIDApOworICAgIHVwZGF0ZXIudXBkYXRlKGNvbnRleHQuZ2V0KCksICZmYWtl
QWxsb2NhdG9yLCAmZmFrZUNvcGllciwgMTAwMCk7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAKICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKLSAgICAvLyBzZXRSZWN0VG9J
bnZhbGlkYXRlIHRyaWdnZXJzIGludmFsaWRhdGVSZWN0KCkgYmVpbmcgaW52b2tlZCBmcm9tIHBy
ZXBhcmVUb1VwZGF0ZS4KKyAgICAvLyBzZXRSZWN0VG9JbnZhbGlkYXRlIHRyaWdnZXJzIGludmFs
aWRhdGVSZWN0KCkgYmVpbmcgaW52b2tlZCBmcm9tIHVwZGF0ZUxheWVyUmVjdC4KICAgICBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0
KDI1LCAyNSwgNTAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyLT51cGRhdGVMYXll
clJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIHVwZGF0ZXIu
dXBkYXRlKGNvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgMTAwMCk7
CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
UHJlcGFyZUNvdW50KCk7Ci0gICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlk
IGFzIHByZXBhcmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUuCi0gICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgLy8gVGhlIGxheWVy
IHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHVwZGF0ZUxheWVyUmVjdCBpbnZva2VkIGludmFs
aWRhdGUuCisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgMCk7CisgICAgdXBkYXRlci51cGRhdGUoY29udGV4dC5nZXQoKSwgJmZha2VB
bGxvY2F0b3IsICZmYWtlQ29waWVyLCAxMDAwKTsKICAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsKIH0KIApAQCAtNzUxLDIx
ICs3MjUsMTggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0
V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgLy8gT24gZmlyc3QgdXBkYXRlLCB0aGUg
dXBkYXRlUmVjdCBpbmNsdWRlcyBhbGwgdGlsZXMsIGV2ZW4gYmV5b25kIHRoZSBib3VuZGFyaWVz
IG9mIHRoZSBsYXllci4KICAgICAvLyBIb3dldmVyLCBpdCBzaG91bGQgc3RpbGwgYmUgaW4gbGF5
ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChj
b250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMs
IDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwor
ICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7CiAg
ICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDMwMCwgMzAwICogMC44KSwg
bGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAgICAvLyBBZnRlciB0aGUgdGlsZXMgYXJlIHVwZGF0
ZWQgb25jZSwgYW5vdGhlciBpbnZhbGlkYXRlIG9ubHkgbmVlZHMgdG8gdXBkYXRlIHRoZSBib3Vu
ZHMgb2YgdGhlIGxheWVyLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRz
KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIDApOwotICAgIGxh
eWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51
cGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgMCk7CiAgICAgRVhQRUNUX0ZM
T0FUX1JFQ1RfRVEoRmxvYXRSZWN0KGxheWVyQm91bmRzKSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7
CiAKICAgICAvLyBQYXJ0aWFsIHJlLXBhaW50IHNob3VsZCBhbHNvIGJlIHJlcHJlc2VudGVkIGJ5
IHRoZSB1cGRhdGVSZWN0IGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBJ
bnRSZWN0IHBhcnRpYWxEYW1hZ2UoMzAsIDEwMCwgMTAsIDEwKTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QocGFydGlhbERhbWFnZSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250
ZW50Qm91bmRzLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3Vu
ZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCg0NSwgODAsIDE1LCA4
KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiB9CiAKQEAgLTc4Niw4ICs3NTcsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxl
Q2hhbmdlcykKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwgMCwgMTAwLCAx
MDApLCBsYXllci0+bGFzdE5lZWRzRGlzcGxheVJlY3QoKSk7CiAKICAgICAvLyBQdXNoIHRoZSB0
aWxlcyB0byB0aGUgaW1wbCBzaWRlIGFuZCBjaGVjayB0aGF0IHRoZXJlIGlzIGV4YWN0bHkgb25l
LgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDAp
OwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAg
IGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCks
IDApOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAg
RVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwogICAgIEVYUEVDVF9GQUxT
RShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CkBAIC04MDAsOCArNzcwLDcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2Fs
ZUNoYW5nZXMpCiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDEwMCwg
MTAwKSwgbGF5ZXItPmxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkpOwogCiAgICAgLy8gVGhlIGltcGwg
c2lkZSBzaG91bGQgZ2V0IDJ4MiB0aWxlcyBub3cuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwgMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1Rp
bGVBdCgwLCAwKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkp
OwpAQCAtODExLDggKzc4MCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5
SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIC8vIEludmFsaWRhdGUg
dGhlIGVudGlyZSBsYXllciBhZ2FpbiwgYnV0IGRvIG5vdCBwYWludC4gQWxsIHRpbGVzIHNob3Vs
ZCBiZSBnb25lIG5vdyBmcm9tIHRoZQogICAgIC8vIGltcGwgc2lkZS4KICAgICBsYXllci0+c2V0
TmVlZHNEaXNwbGF5KCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDEsIDAs
IDAsIDEpLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRh
dGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMSwgMCwg
MCwgMSksIDApOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7
CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKICAgICBFWFBF
Q1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkpOwpAQCAtODUxLDggKzgxOSw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIGNj
TGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgY2NMYXllclRyZWVI
b3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDMwMCkpOwogICAgIHRleHR1cmVNYW5h
Z2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0KTsKLSAgICBjY0xheWVyVHJl
ZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRleHQoKSwgdXBkYXRlcik7CisgICAg
Y2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAKICAgICAvLyBXZSdsbCBz
a2lwIHRoZSByb290IGxheWVyLgogICAgIEVYUEVDVF9UUlVFKHJvb3RMYXllci0+c2tpcHNEcmF3
KCkpOwpAQCAtODY0LDcgKzgzMSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tp
cHNEcmF3R2V0c1Jlc2V0KQogICAgIC8vIFJlbW92ZSB0aGUgY2hpbGQgbGF5ZXIuCiAgICAgcm9v
dExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwogCi0gICAgY2NMYXllclRyZWVIb3N0LT51cGRh
dGVMYXllcnMoKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsK
ICAgICBFWFBFQ1RfRkFMU0Uocm9vdExheWVyLT5za2lwc0RyYXcoKSk7CiAKICAgICBjY0xheWVy
VHJlZUhvc3QtPnNldFJvb3RMYXllcigwKTsKQEAgLTg3NiwxMCArODQzLDExIEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFsbGVyKQogewogICAgIE93blB0cjxUZXh0
dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDYwKjEw
MjQqMTAyNCwgNjAqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0
dXJlTWFuYWdlci5nZXQoKSkpOworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKIAogICAg
IGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg3MDAsIDcwMCkpOwogICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVy
UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7CiAKICAgICBsYXllci0+
c2V0Qm91bmRzKEludFNpemUoMjAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpOwpAQCAtODg5LDEzICs4NTcsMTQgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBodWdlTGF5ZXJVcGRhdGVDcmFzaCkKIHsKICAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg2
MCoxMDI0KjEwMjQsIDYwKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExh
eWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0o
dGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAK
ICAgICBpbnQgc2l6ZSA9IDEgPDwgMzA7CiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKHNp
emUsIHNpemUpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCBzaXpl
LCBzaXplKSk7CiAKICAgICAvLyBFbnN1cmUgbm8gY3Jhc2ggZm9yIGJvdW5kcyB3aGVyZSBzaXpl
ICogc2l6ZSB3b3VsZCBvdmVyZmxvdyBhbiBpbnQuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVj
dCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7CiB9CiAKIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCkBAIC05MjUsOCArODk0LDcgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKICAgICBjY0xheWVyVHJl
ZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDMwMCwgMjAwKSk7CiAKICAgICAvLyBGdWxs
IHVwZGF0ZSBvZiBhbGwgNiB0aWxlcy4KLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cygpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjY0xh
eWVyVHJlZUhvc3QtPmNvbnRleHQoKSwgdXBkYXRlcik7CisgICAgY2NMYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgdXBkYXRlci51cGRhdGUoMCwgJmFsbG9jYXRvciwg
JmNvcGllciwgNCk7CiAgICAgRVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICBFWFBFQ1RfVFJVRSh1cGRhdGVyLmhhc01vcmVV
cGRhdGVzKCkpOwpAQCAtOTM5LDggKzkwNyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcGFydGlhbFVwZGF0ZXMpCiAKICAgICAvLyBGdWxsIHVwZGF0ZSBvZiAzIHRpbGVzIGFuZCBw
YXJ0aWFsIHVwZGF0ZSBvZiAzIHRpbGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDAsIDAsIDMwMCwgMTUwKSk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMo
KTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXll
clRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBk
YXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgIHVwZGF0ZXIudXBkYXRlKDAsICZhbGxvY2F0b3IsICZj
b3BpZXIsIDQpOwogICAgIEVYUEVDVF9FUSgzLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBk
YXRlcygpKTsKQEAgLTk1Myw4ICs5MjAsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHBhcnRpYWxVcGRhdGVzKQogCiAgICAgLy8gUGFydGlhbCB1cGRhdGUgb2YgNiB0aWxlcy4KICAg
ICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMTAwKSk7Ci0gICAg
Y2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0
ZXIpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgIHVw
ZGF0ZXIudXBkYXRlKDAsICZhbGxvY2F0b3IsICZjb3BpZXIsIDQpOwogICAgIEVYUEVDVF9FUSgy
LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAg
RVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKQEAgLTk3NCwxMiArOTQwLDEz
IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aG91dE9jY2x1
c2lvbikKIHsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4
dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAg
IFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtl
VGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisgICAgQ0NUZXh0dXJl
VXBkYXRlciB1cGRhdGVyOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0
aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNl
dEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBk
YXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIEVYUEVDVF9FUSgyLCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIH0KIApA
QCAtOTg4LDYgKzk1NSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWlu
dGVkV2l0aE9jY2x1c2lvbikKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5h
Z2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEw
MjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVm
KG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVw
ZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKQEAgLTk5Nyw3ICs5
NjUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2Ns
dXNpb24pCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwg
MTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEo
MzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQo
KSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNV
cGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwMDgsNyArOTc2LDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQogCiAgICAgb2NjbHVk
ZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjUwLCAyMDAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxh
eWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZv
Y2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQu
b3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMDE5
LDcgKzk4Nyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0
aE9jY2x1c2lvbikKIAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDI1MCwgMjUw
LCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYw
MCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNiwgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAg
ICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9w
YXF1ZSgpLCAwLCAxKTsKQEAgLTEwMzIsNiArMTAwMCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRz
KQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRy
PEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExh
eWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyIG9jY2x1ZGVkOworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKIAogICAgIC8v
IFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KIApAQCAtMTA0Miw3ICsxMDExLDcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJs
aXR5Q29uc3RyYWludHMpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAy
MDAsIDMwMCwgMTUwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgw
LCAwLCA2MDAsIDM2MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYw
MCwgMzYwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIs
IEludFJlY3QoMCwgMCwgNjAwLCAzNjApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgyNC0z
LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsK
IAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9h
ZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTA1NSw3ICsxMDI0LDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3Ry
YWludHMpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwg
MTUwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAs
IDM1MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgMzUwKSwg
Jm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3Qo
MCwgMCwgNjAwLCAzNTApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgyNC02LCBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVY
UEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVl
KCksIDAsIDEpOwpAQCAtMTA2OCw3ICsxMDM3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiAg
ICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTUwKSk7CiAg
ICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM0MCkpOwog
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgMzQwKSwgJm9jY2x1ZGVk
KTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAw
LCAzNDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgyNC02LCBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFS
KG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEp
OwpAQCAtMTA4Miw2ICsxMDUxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxl
c05vdFBhaW50ZWRXaXRob3V0SW52YWxpZGF0aW9uKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdl
cj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAy
KjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxh
eWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIu
Z2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOworICAgIENDVGV4
dHVyZVVwZGF0ZXIgdXBkYXRlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4K
IApAQCAtMTA5MSw3ICsxMDYxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxl
c05vdFBhaW50ZWRXaXRob3V0SW52YWxpZGF0aW9uKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lv
bihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5
ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxh
eWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAg
ICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBh
cmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJp
Y3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTExMDEsNyArMTA3MSw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFs
aWRhdGlvbikKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVw
YXJlUmVjdENvdW50KCk7CiAKICAgICAvLyBSZXBhaW50IHdpdGhvdXQgbWFya2luZyBpdCBkaXJ0
eS4gVGhlIGN1bGxlZCB0aWxlcyByZW1haW5lZCBkaXJ0eS4KLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51
cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRl
ZCk7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5w
cmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdN
ZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMTE0LDYgKzEwODQs
NyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNp
b25BbmRUcmFuc2Zvcm1zKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAy
NCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYo
bmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KIApAQCAtMTEyOCw3ICsx
MDk5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2Nj
bHVzaW9uQW5kVHJhbnNmb3JtcykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgx
MDAsIDEwMCwgMTUwLCA1MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJl
Y3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVM
YXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAg
ICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVw
YXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRy
aWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMTQxLDYgKzExMTIsNyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25B
bmRTY2FsaW5nKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBU
ZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAg
ICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZh
a2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsK
IAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KIApAQCAtMTE1NCw3ICsxMTI2LDcg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9u
QW5kU2NhbGluZykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwg
MzAwLCAxMDApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBv
aW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIC8vIFRo
ZSBjb250ZW50IGlzIGhhbGYgdGhlIHNpemUgb2YgdGhlIGxheWVyIChzbyB0aGUgbnVtYmVyIG9m
IHRpbGVzIGlzIGZld2VyKS4KICAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBjb250ZW50IGlzIDMw
MHgzMDAsIGFuZCBzaW5jZSB0aGUgdGlsZSBzaXplIGlzIDEwMCwgdGhlCiAgICAgLy8gbnVtYmVy
IG9mIHRpbGVzIDN4My4KQEAgLTExNzIsNyArMTE0NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgb2NjbHVk
ZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMjAwKSk7CiAgICAgbGF5ZXIt
PnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkp
KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2Ns
dWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoOS0xLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9O
RUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAs
IDEpOwpAQCAtMTE5MCw3ICsxMTYyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0
aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICBvY2NsdWRlZC5zZXRPY2Ns
dXNpb24oSW50UmVjdCgxMDAsIDEwMCwgMTUwLCAxMDApKTsKICAgICBsYXllci0+c2V0VmlzaWJs
ZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAg
ICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDAp
LCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVk
ZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0x
MjAzLDYgKzExNzUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250
ZW50T3BhcXVlUmVnaW9uKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFn
ZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAy
NCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYo
bmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlk
YXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzIGluIHZhcmlvdXMgd2F5cy4KIApAQCAtMTIy
MCw3ICsxMTkzLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVu
dE9wYXF1ZVJlZ2lvbikKICAgICAvLyBJZiB0aGUgbGF5ZXIgZG9lc24ndCBwYWludCBvcGFxdWUg
Y29udGVudCwgdGhlbiB0aGUgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24gc2hvdWxkIGJlIGVt
cHR5LgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWlu
dFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5k
cyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQp
OworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9j
Y2x1ZGVkKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1
ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CiAK
QEAgLTEyMzMsNyArMTIwNiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmlzaWJs
ZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgb3BhcXVlUGFpbnRSZWN0ID0gSW50UmVjdCgxMCwg
MTAsIDkwLCAxOTApOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRP
cGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91
bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgY29u
dGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNp
YmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlv
bihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMo
KSk7CiAgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVDb250ZW50cy5yZWN0cygpLnNpemUoKSk7CkBA
IC0xMjQ1LDcgKzEyMTgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVD
b250ZW50T3BhcXVlUmVnaW9uKQogCiAgICAgLy8gSWYgd2UgcGFpbnQgYWdhaW4gd2l0aG91dCBp
bnZhbGlkYXRpbmcsIHRoZSBzYW1lIHN0dWZmIHNob3VsZCBiZSBvcGFxdWUuCiAgICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkp
OwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsK
KyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2Ns
dWRlZCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVS
ZWdpb24oKTsKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0
LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwogICAgIEVYUEVDVF9F
USgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwpAQCAtMTI1OSw3ICsxMjMyLDcg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lv
bikKICAgICAvLyBub3QgYmUgYWZmZWN0ZWQuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEsIDEpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVj
dCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIG9wYXF1ZUNvbnRlbnRz
ID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX0VRX1JF
Q1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcyksIG9wYXF1ZUNv
bnRlbnRzLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9wYXF1ZUNvbnRlbnRzLnJlY3Rz
KCkuc2l6ZSgpKTsKQEAgLTEyNzMsNyArMTI0Niw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgLy8gbm90IGJlIGFmZmVjdGVk
LgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJl
Y3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgxMCwgMTAs
IDEsIDEpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsICZvY2Ns
dWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRz
LCAmb2NjbHVkZWQpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50
T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKEludFJlY3Qo
MTAsIDEwMCwgOTAsIDEwMCksIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMo
KSk7CiAgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVDb250ZW50cy5yZWN0cygpLnNpemUoKSk7CkBA
IC0xMjg0LDcgKzEyNTcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVD
b250ZW50T3BhcXVlUmVnaW9uKQogICAgIEVYUEVDVF9FUSgwLCBvY2NsdWRlZC5vdmVyZHJhd01l
dHJpY3MoKS50aWxlc0N1bGxlZEZvclVwbG9hZCgpKTsKIAogICAgIC8vIE5vIG1ldHJpY3MgYXJl
IHJlY29yZGVkIGluIHByZXBhaW50LCBzbyB0aGUgdmFsdWVzIHNob3VsZCBub3QgY2hhbmdlIGZy
b20gYWJvdmUuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUoY29udGVudEJvdW5kcywg
Jm9jY2x1ZGVkKTsKKyAgICBsYXllci0+aWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBjb250
ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3
TWV0cmljcygpLnBpeGVsc1BhaW50ZWQoKSwgMjAwMDAgKiAyICsgMSAgKyAxLCAxKTsKICAgICBF
WFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1
ZSgpLCAxNzEwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzVXBsb2FkZWRUcmFuc2x1Y2VudCgpLCAyMDAwMCArIDIwMDAwIC0gMTcxMDAgKyAx
ICsgMSwgMSk7CkBAIC0xMjk2LDYgKzEyNjksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHBpeGVsc1BhaW50ZWRNZXRyaWNzKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4
dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQq
MTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0g
YWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkp
KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOworICAgIENDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhp
cyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzIGluIHZhcmlvdXMgd2F5cy4K
IApAQCAtMTMxMyw3ICsxMjg3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwaXhl
bHNQYWludGVkTWV0cmljcykKICAgICAvLyBJbnZhbGlkYXRlcyBhbmQgcGFpbnRzIHRoZSB3aG9s
ZSBsYXllci4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVl
UGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRC
b3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1
ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMs
ICZvY2NsdWRlZCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRP
cGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250ZW50cy5pc0VtcHR5KCkp
OwogCkBAIC0xMzI3LDcgKzEzMDEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBp
eGVsc1BhaW50ZWRNZXRyaWNzKQogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdCgwLCAwLCAxLCAxKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoNTAsIDIwMCwgMTAsIDEwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50
Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwg
Y29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52
aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRl
bnRzLmlzRW1wdHkoKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136516</attachid>
            <date>2012-04-10 12:37:36 -0700</date>
            <delta_ts>2012-04-10 16:57:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83530-20120410123735.patch</filename>
            <type>text/plain</type>
            <size>113308</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWIzOGUwOGUwNjRjYWQ0
YjRkYjc0MGY3YTYxNTVlOTZlOGQ5ZmIyZC4uNmEzZTllZTFmNjgzZTEzOWNkNmZmZjhhMGNiYjIx
NzNkYTIyMTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTA0LTEwICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBG
b2xkIExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaW50byBtYWluIHVw
ZGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM1
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB1
c2VkIHRvIHVwZGF0ZSBsYXllciBjb250ZW50cyBpbiB0d28gcGhhc2VzLiBUaGUgZmlyc3QsIGNh
bGxlZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIC8KKyAgICAgICAgaWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KCksIHJhbiBvbiB0aGUgbWFpbiBXZWJLaXQgdGhyZWFkIGFuZCB0b29rIGNhcmUgb2Yg
YW55IG1haW4tdGhyZWFkIHdvcmsgLSBwcmltYXJpbHkKKyAgICAgICAgV2ViQ29yZSBwYWludGlu
ZyBhcyB0aGUgbmFtZSBpbXBsaWVzLiBUaGUgc2Vjb25kLCBjYWxsZWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygpLCByYW4gb24gdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgdGhyZWFkIHdpdGgg
dGhlIG1haW4gdGhyZWFkIGJsb2NrZWQgYW5kIHRvb2sgY2FyZSBvZiBhbnkgYWN0aW9ucyB0aGF0
IHJlcXVpcmVkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGNvbXBvc2l0b3IncworICAgICAgICBjb250
ZXh0IC0gc3VjaCBhcyB0ZXh0dXJlIHVwbG9hZHMgaW50byBjb21wb3NpdG9yLW1hbmFnZWQgdGV4
dHVyZXMuIE5vdyB0aGF0IGFsbCBjb21wb3NpdG9yIHRleHR1cmUgb3BlcmF0aW9ucworICAgICAg
ICBhcmUgcXVldWVkIG9uIGEgQ0NUZXh0dXJlVXBkYXRlciwgdGhlIGNvbXBvc2l0b3IgY2FuIHRh
a2UgY2FyZSBvZiB0aGVzZSBvcGVyYXRpb25zIG9uIHRoZSBjb3JyZWN0IHRocmVhZCBhdCB0aGUK
KyAgICAgICAgcmlnaHQgdGltZSB3aXRob3V0IG5lZWRpbmcgbGF5ZXItc3BlY2lmaWMgbG9naWMu
CisKKyAgICAgICAgVGhpcyBmb2xkcyBib3RoIGZ1bmN0aW9ucyBpbnRvIG9uZSBmdW5jdGlvbiBj
YWxsZWQgTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKCkgKGFuZCBpZGxlVXBkYXRlKCkgZm9yIGlkbGUK
KyAgICAgICAgcHJlcGFpbnRpbmcpIGFuZCBhZGRzIGEgQ0NUZXh0dXJlVXBkYXRlciByZWZlcmVu
Y2UgZm9yIHF1ZXVpbmcgdXAgdGV4dHVyZSBvcGVyYXRpb25zLgorCisgICAgICAgIFRoZSBDQ1By
b3h5IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIENDVGV4dHVyZVVwZGF0
ZXIuIEluIHRoZSB0aHJlYWRlZCBwcm94eSwgdGhlIHVwZGF0ZXIgaXMKKyAgICAgICAgdGllZCB0
byB0aGUgbGlmZXRpbWUgb2YgdGhlIGJlZ2luRnJhbWUgb3BlcmF0aW9uLiBTcGVjaWZpY2FsbHkg
aXQncyBjb25zdHJ1Y3RlZCBvbiB0aGUgaW1wbCB0aHJlYWQgd2hlbiB0aGUKKyAgICAgICAgYmVn
aW5GcmFtZSBtZXNzYWdlIGlzIGdlbmVyYXRlZCwgaXMgYWNjZXNzZWQgYnkgcmVmZXJlbmNlIG9u
IHRoZSBtYWluIHRocmVhZCBkdXJpbmcgdGhlIGNvbW1pdCwgYW5kIHRoZW4KKyAgICAgICAgZGVz
dHJveWVkIGJ5IHRoZSBwcm94eSB3aGVuIHRoZSBjb21taXQgaXMgY29tcGxldGUuIENDVGV4dHVy
ZVVwZGF0ZXI6OnVwZGF0ZSBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIGltcGwKKyAgICAg
ICAgdGhyZWFkIGJ5IHRoZSBwcm94eS4gSW4gdGhlIGZ1dHVyZSwgaXQgbWlnaHQgYmUgd29ydGgg
ZXhwb3NpbmcgYSBtb3JlIGxpbWl0ZWQgaW50ZXJmYWNlIHRvIGxheWVycy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChDYW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dExheWVyQ2hyb21pdW06OmlkbGVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgIChDb250ZW50TGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6dXBkYXRlTGF5ZXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKEltYWdlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hy
b21pdW06OmlkbGVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxl
Ojppc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0YWJsZVRpbGU6OmNvcHlBbmRDbGVh
ckRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0YWJsZVRpbGU6OmlzRGlydHlGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoVXBkYXRhYmxlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpV
cGRhdGFibGVUaWxlOjpVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVk
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVy
Q2hyb21pdW06OmludmFsaWRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6dGlsZU9ubHlOZWVkc1BhcnRpYWxVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZExheWVyQ2hyb21pdW06OnJlc2VydmVUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZExheWVyQ2hyb21pdW06OnJlc2V0VXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjp1cGRhdGVMYXllclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjppZGxlVXBkYXRlTGF5ZXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVkTGF5ZXJDaHJvbWl1bTo6bmVlZHNJZGxlUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVGlsZWRM
YXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVt
Ojp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0Q29tcGxldGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjpyZXNlcnZlVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xh
eWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQ
cm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6
Y29tbWl0SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDU2luZ2xlVGhyZWFkUHJveHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5G
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25D
b21taXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OkJlZ2luRnJhbWVBbmRD
b21taXRTdGF0ZTo6QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKToKKyAgICAgICAgKEJlZ2luRnJh
bWVBbmRDb21taXRTdGF0ZSk6CisKIDIwMTItMDQtMDkgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERlZmVyIHRleHR1cmUgaWQgYWxs
b2NhdGlvbiBmb3IgY29waWVzIHVudGlsIHRoZSBhY3R1YWwgY29weSBleGVjdXRlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBlZGQ3MjhkMzgzYzZjZDI2ZjQzYzNhOTBmODNlMjY1NjFk
MDVhNGQxLi5lMGZmYjdmNWM0NDRiNGIwNzgzY2Q3MGY5MmYzOTA2ZDNmZWM5YWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA0LTEwICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBGb2xk
IExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaW50byBtYWluIHVwZGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM1MzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
dGVzdHMgZm9yIGludGVyZmFjZSBjaGFuZ2VzLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OnJ1blRl
c3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6dXBkYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OmlkbGVVcGRhdGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmcpOgorICAgICAgICAoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6YWZ0ZXJUZXN0
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFNldFZpZXdwb3J0U2l6ZTo6YmVn
aW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdp
dGhQYXJ0aWFsVXBkYXRlOjpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RG
OjpUZXN0TGF5ZXJDaHJvbWl1bTo6dXBkYXRlKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdExheWVyT2NjbHVzaW9uOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0Q29udGVudExheWVyT2NjbHVzaW9uOjpiZWdpblRlc3QpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0TGF5ZXJPY2NsdXNpb25XaXRoRmlsdGVyczo6YmVnaW5U
ZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE1hbnlTdXJmYWNlczo6YmVn
aW5UZXN0KToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlTGF5ZXJS
ZWN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjp1cGRh
dGUpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAgICAgICAg
KEZha2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKEZha2VUaWxlZExheWVyQ2hyb21p
dW0pOgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAg
ICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpU
RVNUKToKKyAgICAgICAgKFdURjo6aWRsZVBhaW50UmVwZWF0KToKKwogMjAxMi0wNC0wOSAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
RGVmZXIgdGV4dHVyZSBpZCBhbGxvY2F0aW9uIGZvciBjb3BpZXMgdW50aWwgdGhlIGFjdHVhbCBj
b3B5IGV4ZWN1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCBi
ZmE4MzRlMjYyZjMxNmVjYWQ0NzM1NjkyZTBhY2M0MGRhYWZjYWIwLi4zYTE0ZDVhMTBlZWM4NzMx
NTU0YWY1ZTViMDg2OTZjYTlkZTQ1N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTkzLDkgKzkzLDkgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnNl
dENhbnZhcyhTa0NhbnZhcyogY2FudmFzKQogICAgIG1fY2FudmFzID0gY2FudmFzOwogfQogCi12
b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKiAvKiBvY2NsdXNpb24gKi8pCit2b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9u
VHJhY2tlciopCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50c0lmRGlydHkiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNh
bnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkiKTsKICAgICBpZiAoIWRy
YXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwNSw3ICsxMDUsOCBAQCB2b2lk
IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2Ns
dXNpb25UcmFja2VyKiAvKiBvYwogICAgICAgICAgICAgbV9mcm9udFRleHR1cmUtPnNldFRleHR1
cmVNYW5hZ2VyKHRleHR1cmVNYW5hZ2VyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9m
cm9udFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsKLSAg
ICAgICAgbV9mcm9udFRleHR1cmUtPnJlc2VydmUobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSk7CisgICAgICAgIGlmIChtX2Zyb250VGV4dHVyZS0+cmVzZXJ2ZShtX3NpemUsIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBKSkKKyAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kTWFuYWdlZENv
cHkobV9iYWNrVGV4dHVyZUlkLCBtX2Zyb250VGV4dHVyZS5nZXQoKSwgbV9zaXplKTsKICAgICB9
CiAKICAgICBpZiAoIW5lZWRzRGlzcGxheSgpKQpAQCAtMTIxLDIyICsxMjIsMTQgQEAgdm9pZCBD
YW52YXMyRExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVz
aW9uVHJhY2tlciogLyogb2MKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2FudmFzKSB7
Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJTa0NhbnZhczo6Zmx1c2giLCBtX2NhbnZhcywgMCk7Cisg
ICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiU2tDYW52YXM6OmZsdXNoIik7CiAgICAgICAgIG1f
Y2FudmFzLT5mbHVzaCgpOwogICAgIH0KIAotICAgIFRSQUNFX0VWRU5UKCJHcmFwaGljc0NvbnRl
eHQzRDo6Zmx1c2giLCBtX2NvbnRleHQsIDApOworICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiR3Jh
cGhpY3NDb250ZXh0M0Q6OmZsdXNoIik7CiAgICAgbV9jb250ZXh0LT5mbHVzaCgpOwogfQogCi12
b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKLXsKLSAg
ICBpZiAoIW1fYmFja1RleHR1cmVJZCB8fCAhbV9mcm9udFRleHR1cmUgfHwgIW1fZnJvbnRUZXh0
dXJlLT5pc1ZhbGlkKG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICB1cGRhdGVyLmFwcGVuZE1hbmFnZWRDb3B5KG1fYmFja1RleHR1cmVJZCwg
bV9mcm9udFRleHR1cmUuZ2V0KCksIG1fc2l6ZSk7Ci19Ci0KIHZvaWQgQ2FudmFzMkRMYXllckNo
cm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIHsKICAgICBDYW52
YXNMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKGxheWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmgKaW5kZXggYjVkMGMyMzg5MWZiMDViNjIxODI0OTEwMjUwZDU5MGI4
YjcyYzY3Mi4uYTIyZjk3ZWJkYjc4MTVmYTQzM2UwMmQ5Y2NiNDFiMjEzNjEyNjUwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTU1LDkgKzU1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwog
CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKLQotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJl
VXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogICAgIHZpcnR1YWwgdm9pZCBw
dXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2
ZUNvbnRlbnRzVGV4dHVyZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggNzUxYmM2NWY2ZWUzZTc0ZjUxNzIxMDlmMTU4ZjA1NWEwMGFlZDAzZC4uYWU4ZDMyMDhi
ZmJhYjhkN2FkZTk4MmE3ZDhhOTNhMmQ4M2VkN2RhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcApAQCAtOTQsMjkgKzk0LDI5IEBAIGJvb2wgQ29udGVudExheWVyQ2hyb21p
dW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
ZHJhd3NDb250ZW50KCkgJiYgbV9kZWxlZ2F0ZTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2Ns
dXNpb24pCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRl
ciYgdXBkYXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAg
dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKICAgICBjcmVhdGVUZXh0dXJlVXBkYXRl
cklmTmVlZGVkKCk7CiAKICAgICBJbnRSZWN0IGxheWVyUmVjdDsKIAotICAgIC8vIEFsd2F5cyBj
YWxsIHByZXBhcmVUb1VwZGF0ZSgpIGJ1dCB3aXRoIGFuIGVtcHR5IGxheWVyIHJlY3RhbmdsZSB3
aGVuCisgICAgLy8gQWx3YXlzIGNhbGwgdXBkYXRlTGF5ZXJSZWN0KCkgYnV0IHdpdGggYW4gZW1w
dHkgbGF5ZXIgcmVjdGFuZ2xlIHdoZW4KICAgICAvLyBsYXllciBkb2Vzbid0IGRyYXcgY29udGVu
dHMuCiAgICAgaWYgKGRyYXdzQ29udGVudCgpKQogICAgICAgICBsYXllclJlY3QgPSB2aXNpYmxl
TGF5ZXJSZWN0KCk7CiAKLSAgICBwcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0LCBvY2NsdXNpb24p
OworICAgIHVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBsYXllclJlY3QsIG9jY2x1c2lvbik7CiAg
ICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2Nj
bHVzaW9uKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVVwZGF0ZShDQ1RleHR1cmVV
cGRhdGVyJiB1cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKIHsK
ICAgICBpZiAoIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBJ
bnRSZWN0IGxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKLSAgICBwcmVwYXJlVG9VcGRh
dGVJZGxlKGxheWVyUmVjdCwgb2NjbHVzaW9uKTsKKyAgICBpZGxlVXBkYXRlTGF5ZXJSZWN0KHVw
ZGF0ZXIsIGxheWVyUmVjdCwgb2NjbHVzaW9uKTsKICAgICBpZiAobmVlZHNJZGxlUGFpbnQobGF5
ZXJSZWN0KSkKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oCmluZGV4IGU2OTk0YTIxYWVmYWMyMTQwODg3ZTViYmQ4YWJiMjAzYzlhYjgx
NzkuLjQ3M2IzODBmYWYzNTUwMThkNzFkYWE4NzI3ZDRiZjYzNWRhMWViYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjbGVhckRlbGVnYXRlKCkgeyBtX2RlbGVnYXRlID0gMDsgfQogCiAgICAgdmlydHVhbCBib29s
IGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZE
aXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tl
ciopOworICAgIHZpcnR1YWwgdm9pZCBpZGxlVXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBjb25z
dCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9v
bCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDM5MzkxNThhODViNTcz
ZmIyZDRiNTdmZTFhNWVmNmYyZmJmMGZmMDEuLmQ0YTQzMDEyZDQ1NmI5MTAwMGRhZjcyZTIxYzVi
ZGVhZGI1MzViYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtODMsNyAr
ODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2Ft
cGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZv
cm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCAvKiBi
b3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sIEludFJlY3QqIC8qIHJl
c3VsdGluZ09wYXF1ZVJlY3QgKi8pCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyUmVjdChj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCAv
KiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sIEludFJlY3QqIC8q
IHJlc3VsdGluZ09wYXF1ZVJlY3QgKi8pCiAgICAgewogICAgICAgICBtX3RleFN1YkltYWdlLnNl
dFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAgICAgfQpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQg
SW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAgICAgc2V0
TmVlZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKK3ZvaWQgSW1h
Z2VMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0
ZXJJZk5lZWRlZCgpOwogICAgIGlmIChtX25lZWRzRGlzcGxheSkgewpAQCAtMTY4LDcgKzE2OCw3
IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBD
Q09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvCiAgICAgICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFs
c2U7CiAgICAgfQogCi0gICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2Nj
bHVzaW9uKTsKKyAgICB1cGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZUxheWVyUmVjdCgp
LCBvY2NsdXNpb24pOwogfQogCiB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVy
ZVVwZGF0ZXJJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGIwMWVm
MjlkYTEzZDBlMTExNWU4NDFhYzIwZjRlNjBlOGFjMTY0M2YuLjQ5NDg4Y2QwODA0MjFkNGMxOGI5
ODliYzY5NGI3MjBiMjFiOTY3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0oKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyKik7CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0Owog
CiAgICAgdm9pZCBzZXRDb250ZW50cyhJbWFnZSogaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IDUyNGUxNWRmOTVhOTE0YmIyMGZiZWIwMjQ1Y2UzYmYwMWJjNzZmNmUuLjkyNGExNTRiZGQz
YWViN2JjODc2ZDc3MjAyNTZhMDJiNDcxZWRlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE2
OCw5ICsxNjgsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBu
ZWVkIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciog
Lyogb2NjbHVzaW9uICovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogLyogb2NjbHVzaW9uICovKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4
dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgaWRsZVVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDdjOWMzMDZkODZiNzRkZTRlYTI1MjQ4M2RhNjUyMDJkYTY5NzA1N2EuLmYyZmZiMzFl
YjlhYTg5YTE0YjJiYTBjMzViYTg2MzdmMjA4ZmQ0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcApAQCAtNjQsMjQgKzY0LDI0IEBAIHB1YmxpYzoKICAgICBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CiAg
ICAgTWFuYWdlZFRleHR1cmUqIG1hbmFnZWRUZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLT50
ZXh0dXJlKCk7IH0KIAotICAgIGJvb2wgaXNEaXJ0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2RpcnR5
UmVjdC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhZGly
dHlSZWN0LmlzRW1wdHkoKTsgfQogICAgIHZvaWQgY29weUFuZENsZWFyRGlydHkoKQogICAgIHsK
LSAgICAgICAgbV91cGRhdGVSZWN0ID0gbV9kaXJ0eVJlY3Q7Ci0gICAgICAgIG1fZGlydHlSZWN0
ID0gSW50UmVjdCgpOworICAgICAgICB1cGRhdGVSZWN0ID0gZGlydHlSZWN0OworICAgICAgICBk
aXJ0eVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgfQogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUg
bGF5ZXIgd2FzIGRpcnR5IGFuZCBub3QgdXBkYXRlZCBpbiB0aGUgY3VycmVudCBmcmFtZS4gRm9y
IHRpbGVzIHRoYXQgd2VyZSBub3QgY3VsbGVkLCB0aGUKICAgICAvLyB1cGRhdGVSZWN0IGhvbGRz
IHRoZSBhcmVhIG9mIHRoZSB0aWxlIHRoYXQgd2FzIHVwZGF0ZWQuIE90aGVyd2lzZSwgdGhlIGFy
ZWEgdGhhdCB3b3VsZCBoYXZlIGJlZW4gdXBkYXRlZC4KLSAgICBib29sIGlzRGlydHlGb3JDdXJy
ZW50RnJhbWUoKSB7IHJldHVybiAhbV9kaXJ0eVJlY3QuaXNFbXB0eSgpICYmIChtX3VwZGF0ZVJl
Y3QuaXNFbXB0eSgpIHx8ICFtX3VwZGF0ZWQpOyB9CisgICAgYm9vbCBpc0RpcnR5Rm9yQ3VycmVu
dEZyYW1lKCkgeyByZXR1cm4gIWRpcnR5UmVjdC5pc0VtcHR5KCkgJiYgKHVwZGF0ZVJlY3QuaXNF
bXB0eSgpIHx8ICF1cGRhdGVkKTsgfQogCi0gICAgSW50UmVjdCBtX2RpcnR5UmVjdDsKLSAgICBJ
bnRSZWN0IG1fdXBkYXRlUmVjdDsKLSAgICBib29sIG1fcGFydGlhbFVwZGF0ZTsKLSAgICBib29s
IG1fdXBkYXRlZDsKKyAgICBJbnRSZWN0IGRpcnR5UmVjdDsKKyAgICBJbnRSZWN0IHVwZGF0ZVJl
Y3Q7CisgICAgYm9vbCBwYXJ0aWFsVXBkYXRlOworICAgIGJvb2wgdXBkYXRlZDsKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgVXBkYXRhYmxlVGlsZShQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU+IHRleHR1cmUpCi0gICAgICAgIDogbV9wYXJ0aWFsVXBkYXRlKGZhbHNlKQot
ICAgICAgICAsIG1fdXBkYXRlZChmYWxzZSkKKyAgICAgICAgOiBwYXJ0aWFsVXBkYXRlKGZhbHNl
KQorICAgICAgICAsIHVwZGF0ZWQoZmFsc2UpCiAgICAgICAgICwgbV90ZXh0dXJlKHRleHR1cmUp
CiAgICAgewogICAgIH0KQEAgLTk1LDYgKzk1LDcgQEAgVGlsZWRMYXllckNocm9taXVtOjpUaWxl
ZExheWVyQ2hyb21pdW0oKQogICAgICwgbV9za2lwc0RyYXcoZmFsc2UpCiAgICAgLCBtX3NraXBz
SWRsZVBhaW50KGZhbHNlKQogICAgICwgbV9zYW1wbGVkVGV4ZWxGb3JtYXQoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0SW52YWxpZCkKKyAgICAsIG1fZGlkUGFpbnQoZmFs
c2UpCiAgICAgLCBtX3RpbGluZ09wdGlvbihBdXRvVGlsZSkKIHsKICAgICBtX3RpbGVyID0gQ0NM
YXllclRpbGluZ0RhdGE6OmNyZWF0ZShJbnRTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVmYXVsdFRp
bGVTaXplKSwgQ0NMYXllclRpbGluZ0RhdGE6Okhhc0JvcmRlclRleGVscyk7CkBAIC0xODMsNjgg
KzE4NCw2IEBAIEludFNpemUgVGlsZWRMYXllckNocm9taXVtOjpjb250ZW50Qm91bmRzKCkgY29u
c3QKICAgICByZXR1cm4gSW50U2l6ZShscm91bmRmKGJvdW5kcygpLndpZHRoKCkgKiBjb250ZW50
c1NjYWxlKCkpLCBscm91bmRmKGJvdW5kcygpLmhlaWdodCgpICogY29udGVudHNTY2FsZSgpKSk7
CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKLXsKLSAgICAv
LyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hp
Y2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4K
LSAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QuaXNFbXB0
eSgpIHx8IG1fdGlsZXItPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW50IGxl
ZnQgPSBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC54KCk7Ci0gICAgaW50IHRvcCA9IG1fcmVx
dWVzdGVkVXBkYXRlVGlsZXNSZWN0LnkoKTsKLSAgICBpbnQgcmlnaHQgPSBtX3JlcXVlc3RlZFVw
ZGF0ZVRpbGVzUmVjdC5tYXhYKCkgLSAxOwotICAgIGludCBib3R0b20gPSBtX3JlcXVlc3RlZFVw
ZGF0ZVRpbGVzUmVjdC5tYXhZKCkgLSAxOwotICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90
dG9tOyArK2opIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkg
ewotICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKLQotICAg
ICAgICAgICAgLy8gUmVxdWlyZWQgdGlsZXMgYXJlIGNyZWF0ZWQgaW4gcHJlcGFyZVRvVXBkYXRl
KCkuIEEgdGlsZSBzaG91bGQKLSAgICAgICAgICAgIC8vIG5ldmVyIGJlIHJlbW92ZWQgYmV0d2Vl
biB0aGUgY2FsbCB0byBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgdGhlCi0gICAgICAgICAgICAvLyBj
YWxsIHRvIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKS4KLSAgICAgICAgICAgIGlmICghdGls
ZSkKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotCi0gICAgICAgICAgICBpZiAoIXRpbGUtPm1f
dXBkYXRlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgSW50UmVj
dCBzb3VyY2VSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0OwotICAgICAgICAgICAgaWYgKHRpbGUt
Pm1fdXBkYXRlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgICAgIEFTU0VSVCh0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1Jlc2VydmVkKCkpOwot
ICAgICAgICAgICAgY29uc3QgSW50UG9pbnQgYW5jaG9yID0gbV90aWxlci0+dGlsZVJlY3QodGls
ZSkubG9jYXRpb24oKTsKLQotICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRpbGUtc3BhY2UgcmVj
dGFuZ2xlIHRvIHVwbG9hZCBpbnRvLgotICAgICAgICAgICAgSW50UmVjdCBkZXN0UmVjdChJbnRQ
b2ludChzb3VyY2VSZWN0LngoKSAtIGFuY2hvci54KCksIHNvdXJjZVJlY3QueSgpIC0gYW5jaG9y
LnkoKSksIHNvdXJjZVJlY3Quc2l6ZSgpKTsKLSAgICAgICAgICAgIGlmIChkZXN0UmVjdC54KCkg
PCAwKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAgICBpZiAoZGVzdFJlY3Qu
eSgpIDwgMCkKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotCi0gICAgICAgICAgICAvLyBPZmZz
ZXQgZnJvbSBwYWludCByZWN0YW5nbGUgdG8gdGhpcyB0aWxlJ3MgZGlydHkgcmVjdGFuZ2xlLgot
ICAgICAgICAgICAgSW50UG9pbnQgcGFpbnRPZmZzZXQoc291cmNlUmVjdC54KCkgLSBtX3BhaW50
UmVjdC54KCksIHNvdXJjZVJlY3QueSgpIC0gbV9wYWludFJlY3QueSgpKTsKLSAgICAgICAgICAg
IGlmIChwYWludE9mZnNldC54KCkgPCAwKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAg
ICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpIDwgMCkKLSAgICAgICAgICAgICAgICBDUkFTSCgp
OwotICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LngoKSArIGRlc3RSZWN0LndpZHRoKCkgPiBt
X3BhaW50UmVjdC53aWR0aCgpKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAg
ICBpZiAocGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBtX3BhaW50UmVjdC5o
ZWlnaHQoKSkKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotCi0gICAgICAgICAgICBpZiAodGls
ZS0+bV9wYXJ0aWFsVXBkYXRlKQotICAgICAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kUGFydGlh
bFVwZGF0ZSh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZFVwZGF0ZSh0aWxlLT50ZXh0
dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IFRoZSB1cGRhdGVSZWN0IHNob3VsZCBiZSBpbiBsYXllciBzcGFjZS4gU28gd2UgaGF2ZSB0byBj
b252ZXJ0IHRoZSBwYWludFJlY3QgZnJvbSBjb250ZW50IHNwYWNlIHRvIGxheWVyIHNwYWNlLgot
ICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3BhaW50UmVjdCk7Ci0gICAgZmxvYXQgd2lk
dGhTY2FsZSA9IGJvdW5kcygpLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJv
dW5kcygpLndpZHRoKCkpOwotICAgIGZsb2F0IGhlaWdodFNjYWxlID0gYm91bmRzKCkuaGVpZ2h0
KCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLmhlaWdodCgpKTsKLSAgICBt
X3VwZGF0ZVJlY3Quc2NhbGUod2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOwotfQotCiB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiB0aWxpbmdPcHRp
b24pCiB7CiAgICAgbV90aWxpbmdPcHRpb24gPSB0aWxpbmdPcHRpb247CkBAIC0zMTIsNyArMjUx
LDcgQEAgVXBkYXRhYmxlVGlsZSogVGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVUaWxlKGludCBp
LCBpbnQgaikKICAgICBVcGRhdGFibGVUaWxlKiBhZGRlZFRpbGUgPSB0aWxlLmdldCgpOwogICAg
IG1fdGlsZXItPmFkZFRpbGUodGlsZS5yZWxlYXNlKCksIGksIGopOwogCi0gICAgYWRkZWRUaWxl
LT5tX2RpcnR5UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KGFkZGVkVGlsZSk7CisgICAgYWRkZWRU
aWxlLT5kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdChhZGRlZFRpbGUpOwogICAgIHJldHVy
biBhZGRlZFRpbGU7CiB9CiAKQEAgLTM1MCw3ICsyODksNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgICAgICBB
U1NFUlQodGlsZSk7CiAgICAgICAgIEludFJlY3QgYm91bmQgPSBtX3RpbGVyLT50aWxlUmVjdCh0
aWxlKTsKICAgICAgICAgYm91bmQuaW50ZXJzZWN0KGxheWVyUmVjdCk7Ci0gICAgICAgIHRpbGUt
Pm1fZGlydHlSZWN0LnVuaXRlKGJvdW5kKTsKKyAgICAgICAgdGlsZS0+ZGlydHlSZWN0LnVuaXRl
KGJvdW5kKTsKICAgICB9CiB9CiAKQEAgLTM4Nyw3ICszMjYsNyBAQCBib29sIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6dGlsZU9ubHlOZWVkc1BhcnRpYWxVcGRhdGUoVXBkYXRhYmxlVGlsZSogdGlsZSkK
ICAgICBpZiAoIXRpbGUtPmlzRGlydHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
cmV0dXJuICF0aWxlLT5tX2RpcnR5UmVjdC5jb250YWlucyhtX3RpbGVyLT50aWxlUmVjdCh0aWxl
KSk7CisgICAgcmV0dXJuICF0aWxlLT5kaXJ0eVJlY3QuY29udGFpbnMobV90aWxlci0+dGlsZVJl
Y3QodGlsZSkpOwogfQogCiAvLyBEaXJ0eSB0aWxlcyB3aXRoIHZhbGlkIHRleHR1cmVzIG5lZWRz
IGJ1ZmZlcmVkIHVwZGF0ZSB0byBndWFyYW50ZWUgdGhhdApAQCAtNDA3LDE1ICszNDYsMTUgQEAg
Ym9vbCBUaWxlZExheWVyQ2hyb21pdW06OnRpbGVOZWVkc0J1ZmZlcmVkVXBkYXRlKFVwZGF0YWJs
ZVRpbGUqIHRpbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBp
bnQgcmlnaHQsIGludCBib3R0b20sIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9u
KQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxl
ZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgQ0NUZXh0dXJlVXBkYXRlciYgdXBk
YXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgY3JlYXRl
VGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwogCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRl
ZCwgZXhwYW5kaW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8vIHRoZSBkaXJ0
eSByZWdpb25zIGN1cnJlbnRseSBiZWluZyBkcmF3bi4gQWxsIGRpcnR5IHRpbGVzIHRoYXQgYXJl
IHRvIGJlIHBhaW50ZWQKLSAgICAvLyBnZXQgdGhlaXIgbV91cGRhdGVSZWN0IHNldCB0byBtX2Rp
cnR5UmVjdCBhbmQgbV9kaXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKLSAgICAvLyBpbnZh
bGlkYXRlUmVjdCBpcyBpbnZva2VkIGR1cmluZyBwcmVwYXJlVG9VcGRhdGUgd2UgZG9uJ3QgbG9z
ZSB0aGUgcmVxdWVzdC4KLSAgICBJbnRSZWN0IGRpcnR5TGF5ZXJSZWN0OworICAgIC8vIGdldCB0
aGVpciB1cGRhdGVSZWN0IHNldCB0byBkaXJ0eVJlY3QgYW5kIGRpcnR5UmVjdCBjbGVhcmVkLiBU
aGlzIHdheSBpZgorICAgIC8vIGludmFsaWRhdGVSZWN0IGlzIGludm9rZWQgZHVyaW5nIHVwZGF0
ZUxheWVyUmVjdCB3ZSBkb24ndCBsb3NlIHRoZSByZXF1ZXN0LgorICAgIEludFJlY3QgcGFpbnRS
ZWN0OwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAg
Zm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRh
YmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKQEAgLTQyNCw3ICszNjMsNyBAQCB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVm
dCwgaW50IHRvcCwgaW50CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUo
KS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gU2V0cyB0aGUgZGlydHkgcmVjdCB0byBhIGZ1bGwtc2l6ZWQgdGlsZSB3
aXRoIGJvcmRlciB0ZXhlbHMuCi0gICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eVJlY3QgPSBt
X3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKKyAgICAgICAgICAgICAgICB0aWxlLT5kaXJ0eVJlY3Qg
PSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Ly8gV2hlbiBub3QgaWRsZSBwYWludGluZywgaWYgdGhlIHZpc2libGUgcmVnaW9uIG9mIHRoZSB0
aWxlIGlzIG9jY2x1ZGVkLCBkb24ndCByZXNlcnZlIGEgdGV4dHVyZSBvciB1cGRhdGUgdGhlIHRp
bGUuCkBAIC00MzIsMjMgKzM3MSwyMyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAg
ICAgICBpZiAoIWlkbGUgJiYgb2NjbHVzaW9uKSB7CiAgICAgICAgICAgICAgICAgSW50UmVjdCB2
aXNpYmxlVGlsZVJlY3QgPSBpbnRlcnNlY3Rpb24obV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKSwg
dmlzaWJsZUxheWVyUmVjdCgpKTsKICAgICAgICAgICAgICAgICBpZiAob2NjbHVzaW9uLT5vY2Ns
dWRlZCh0aGlzLCB2aXNpYmxlVGlsZVJlY3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VCghdGlsZS0+bV91cGRhdGVkKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCF0aWxlLT51
cGRhdGVkKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBXZSBjb21lIHRocm91Z2ggdGhpcyBm
dW5jdGlvbiBtdWx0aXBsZSB0aW1lcyBkdXJpbmcgYSBjb21taXQsIGFuZCBtX3VwZGF0ZWQgc2hv
dWxkIGJlIHRydWUgaWYgdGhlIHRpbGUgaXMgbm90IGN1bGxlZAorICAgICAgICAgICAgLy8gV2Ug
Y29tZSB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gbXVsdGlwbGUgdGltZXMgZHVyaW5nIGEgY29tbWl0
LCBhbmQgdXBkYXRlZCBzaG91bGQgYmUgdHJ1ZSBpZiB0aGUgdGlsZSBpcyBub3QgY3VsbGVkCiAg
ICAgICAgICAgICAvLyBhbnkgc2luZ2xlIHRpbWUgdGhyb3VnaCB0aGUgZnVuY3Rpb24uCi0gICAg
ICAgICAgICB0aWxlLT5tX3VwZGF0ZWQgPSB0cnVlOworICAgICAgICAgICAgdGlsZS0+dXBkYXRl
ZCA9IHRydWU7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBEZWNpZGUgaWYgcGFydGlhbCB1cGRh
dGUgc2hvdWxkIGJlIGFsbG93ZWQgYmFzZWQgb24gY29zdAogICAgICAgICAgICAgLy8gb2YgdXBk
YXRlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNzYKICAgICAg
ICAgICAgIGlmICh0aWxlT25seU5lZWRzUGFydGlhbFVwZGF0ZSh0aWxlKSAmJiBsYXllclRyZWVI
b3N0KCkgJiYgbGF5ZXJUcmVlSG9zdCgpLT5yZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKSkK
LSAgICAgICAgICAgICAgICB0aWxlLT5tX3BhcnRpYWxVcGRhdGUgPSB0cnVlOworICAgICAgICAg
ICAgICAgIHRpbGUtPnBhcnRpYWxVcGRhdGUgPSB0cnVlOwogICAgICAgICAgICAgZWxzZSBpZiAo
dGlsZU5lZWRzQnVmZmVyZWRVcGRhdGUodGlsZSkgJiYgbGF5ZXJUcmVlSG9zdCgpKSB7CiAgICAg
ICAgICAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQodGls
ZS0+bWFuYWdlZFRleHR1cmUoKS0+c3RlYWwoKSk7CiAgICAgICAgICAgICAgICAgLy8gU2V0cyB0
aGUgZGlydHkgcmVjdCB0byBhIGZ1bGwtc2l6ZWQgdGlsZSB3aXRoIGJvcmRlciB0ZXhlbHMuCi0g
ICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdCh0aWxl
KTsKKyAgICAgICAgICAgICAgICB0aWxlLT5kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdCh0
aWxlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4
dHVyZSgpLT5yZXNlcnZlKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsK
QEAgLTQ1NiwxMyArMzk1LDExIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAg
ICAgICBpZiAoIWlkbGUpIHsKICAgICAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICBtX3RpbGVyLT5yZXNldCgpOwotICAgICAgICAgICAgICAg
ICAgICBtX3BhaW50UmVjdCA9IEludFJlY3QoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9yZXF1
ZXN0ZWRVcGRhdGVUaWxlc1JlY3QgPSBJbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZGlydHlM
YXllclJlY3QudW5pdGUodGlsZS0+bV9kaXJ0eVJlY3QpOworICAgICAgICAgICAgcGFpbnRSZWN0
LnVuaXRlKHRpbGUtPmRpcnR5UmVjdCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3MSwyNCAr
NDA4LDI0IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhi
b29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICBmb3IgKGludCBqID0gdG9wOyBq
IDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0
OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7
Ci0gICAgICAgICAgICBpZiAodGlsZS0+bV91cGRhdGVkKQorICAgICAgICAgICAgaWYgKHRpbGUt
PnVwZGF0ZWQpCiAgICAgICAgICAgICAgICAgdGlsZS0+Y29weUFuZENsZWFyRGlydHkoKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKCFpZGxlICYmIG9jY2x1c2lvbiAmJiB0aWxlLT5pc0RpcnR5KCkp
CiAgICAgICAgICAgICAgICAgb2NjbHVzaW9uLT5vdmVyZHJhd01ldHJpY3MoKS5kaWRDdWxsVGls
ZUZvclVwbG9hZCgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9wYWludFJlY3QgPSBkaXJ0
eUxheWVyUmVjdDsKLSAgICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChw
YWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAob2NjbHVzaW9u
KQotICAgICAgICBvY2NsdXNpb24tPm92ZXJkcmF3TWV0cmljcygpLmRpZFBhaW50KG1fcGFpbnRS
ZWN0KTsKKyAgICAgICAgb2NjbHVzaW9uLT5vdmVyZHJhd01ldHJpY3MoKS5kaWRQYWludChwYWlu
dFJlY3QpOwogCi0gICAgLy8gRHVlIHRvIGJvcmRlcnMsIHdoZW4gdGhlIHBhaW50IHJlY3QgaXMg
ZXh0ZW5kZWQgdG8gdGlsZSBib3VuZGFyaWVzLCBpdAotICAgIC8vIG1heSBlbmQgdXAgb3Zlcmxh
cHBpbmcgbW9yZSB0aWxlcyB0aGFuIHRoZSBvcmlnaW5hbCBjb250ZW50IHJlY3QuIFJlY29yZAot
ICAgIC8vIHRoZSBvcmlnaW5hbCB0aWxlcyBzbyB3ZSBkb24ndCB1cGxvYWQgbW9yZSB0aWxlcyB0
aGFuIG5lY2Vzc2FyeS4KLSAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3Qo
bGVmdCwgdG9wLCByaWdodCAtIGxlZnQgKyAxLCBib3R0b20gLSB0b3AgKyAxKTsKKyAgICAvLyBU
aGUgdXBkYXRlUmVjdCBzaG91bGQgYmUgaW4gbGF5ZXIgc3BhY2UuIFNvIHdlIGhhdmUgdG8gY29u
dmVydCB0aGUgcGFpbnRSZWN0IGZyb20gY29udGVudCBzcGFjZSB0byBsYXllciBzcGFjZS4KKyAg
ICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QocGFpbnRSZWN0KTsKKyAgICBmbG9hdCB3aWR0aFNj
YWxlID0gYm91bmRzKCkud2lkdGgoKSAvIHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRz
KCkud2lkdGgoKSk7CisgICAgZmxvYXQgaGVpZ2h0U2NhbGUgPSBib3VuZHMoKS5oZWlnaHQoKSAv
IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpOworICAgIG1fdXBk
YXRlUmVjdC5zY2FsZSh3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSk7CiAKICAgICAvLyBDYWxsaW5n
IHByZXBhcmVUb1VwZGF0ZSgpIGNhbGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkg
aGF2ZSB0aGUgc2lkZQogICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdo
aWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVs
ZXRlZC4KQEAgLTQ5NiwyOCArNDMzLDI2IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAv
LyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBh
bGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgogICAgIFJlZlB0cjxMYXllclRleHR1cmVV
cGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7CiAgICAgSW50UmVjdCBwYWludGVk
T3BhcXVlUmVjdDsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUobV9wYWlu
dFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBj
b250ZW50c1NjYWxlKCksICZwYWludGVkT3BhcXVlUmVjdCk7CisgICAgdGV4dHVyZVVwZGF0ZXIo
KS0+cHJlcGFyZVRvVXBkYXRlKHBhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxl
ci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSwgJnBhaW50ZWRPcGFxdWVSZWN0
KTsKKyAgICBtX2RpZFBhaW50ID0gdHJ1ZTsKKwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0g
Ym90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsr
aSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKIAot
ICAgICAgICAgICAgLy8gVGlsZXMgYXJlIGNyZWF0ZWQgYmVmb3JlIHByZXBhcmVUb1VwZGF0ZSgp
IGlzIGNhbGxlZC4KLSAgICAgICAgICAgIGlmICghdGlsZSkKLSAgICAgICAgICAgICAgICBDUkFT
SCgpOwotCiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5k
cyhpLCBqKTsKIAotICAgICAgICAgICAgaWYgKCF0aWxlLT5tX3VwZGF0ZWQpCisgICAgICAgICAg
ICBpZiAoIXRpbGUtPnVwZGF0ZWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgdGhlIGFib3ZlIGxvb3AgY29waWVkIHRoZSBk
aXJ0eSByZWN0IGZvciB0aGlzIGZyYW1lIHRvIG1fdXBkYXRlUmVjdC4KLSAgICAgICAgICAgIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCA9IHRpbGUtPm1fdXBkYXRlUmVjdDsKKyAgICAgICAgICAg
IC8vIFVzZSB1cGRhdGVSZWN0IGFzIHRoZSBhYm92ZSBsb29wIGNvcGllZCB0aGUgZGlydHkgcmVj
dCBmb3IgdGhpcyBmcmFtZSB0byB1cGRhdGVSZWN0LgorICAgICAgICAgICAgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0ID0gdGlsZS0+dXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlmIChkaXJ0eVJl
Y3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAv
LyBTYXZlIHdoYXQgd2FzIHBhaW50ZWQgb3BhcXVlIGluIHRoZSB0aWxlLiBLZWVwIHRoZSBvbGQg
YXJlYSBpZiB0aGUgcGFpbnQgZGlkbid0IHRvdWNoIGl0LCBhbmQgZGlkbid0IHBhaW50IHNvbWUK
ICAgICAgICAgICAgIC8vIG90aGVyIHBhcnQgb2YgdGhlIHRpbGUgb3BhcXVlLgotICAgICAgICAg
ICAgSW50UmVjdCB0aWxlUGFpbnRlZFJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIG1fcGFp
bnRSZWN0KTsKKyAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRSZWN0ID0gaW50ZXJzZWN0
aW9uKHRpbGVSZWN0LCBwYWludFJlY3QpOwogICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRl
ZE9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIHBhaW50ZWRPcGFxdWVSZWN0KTsK
ICAgICAgICAgICAgIGlmICghdGlsZVBhaW50ZWRSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgIEludFJlY3QgcGFpbnRJbnNpZGVUaWxlT3BhcXVlUmVjdCA9IGludGVyc2VjdGlvbih0
aWxlLT5vcGFxdWVSZWN0KCksIHRpbGVQYWludGVkUmVjdCk7CkBAIC01MzMsMTUgKzQ2OCw0MSBA
QCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxl
LCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2Vj
dChkaXJ0eVJlY3QpOwogICAgICAgICAgICAgLy8gUGFpbnQgcmVjdCBub3QgZ3VhcmFudGVlZCB0
byBsaW5lIHVwIG9uIHRpbGUgYm91bmRhcmllcywgc28KICAgICAgICAgICAgIC8vIG1ha2Ugc3Vy
ZSB0aGF0IHNvdXJjZVJlY3QgZG9lc24ndCBleHRlbmQgb3V0c2lkZSBvZiBpdC4KLSAgICAgICAg
ICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KG1fcGFpbnRSZWN0KTsKKyAgICAgICAgICAgIHNvdXJj
ZVJlY3QuaW50ZXJzZWN0KHBhaW50UmVjdCk7CisKKyAgICAgICAgICAgIHRpbGUtPnVwZGF0ZVJl
Y3QgPSBzb3VyY2VSZWN0OwogCi0gICAgICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBzb3Vy
Y2VSZWN0OwogICAgICAgICAgICAgaWYgKHNvdXJjZVJlY3QuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnByZXBhcmVS
ZWN0KHNvdXJjZVJlY3QpOwogICAgICAgICAgICAgaWYgKG9jY2x1c2lvbikKICAgICAgICAgICAg
ICAgICBvY2NsdXNpb24tPm92ZXJkcmF3TWV0cmljcygpLmRpZFVwbG9hZChUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCBzb3VyY2VSZWN0LCB0aWxlLT5vcGFxdWVSZWN0KCkpOworCisgICAgICAgICAg
ICBjb25zdCBJbnRQb2ludCBhbmNob3IgPSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKS5sb2NhdGlv
bigpOworCisgICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGlsZS1zcGFjZSByZWN0YW5nbGUgdG8g
dXBsb2FkIGludG8uCisgICAgICAgICAgICBJbnRSZWN0IGRlc3RSZWN0KEludFBvaW50KHNvdXJj
ZVJlY3QueCgpIC0gYW5jaG9yLngoKSwgc291cmNlUmVjdC55KCkgLSBhbmNob3IueSgpKSwgc291
cmNlUmVjdC5zaXplKCkpOworICAgICAgICAgICAgaWYgKGRlc3RSZWN0LngoKSA8IDApCisgICAg
ICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIGlmIChkZXN0UmVjdC55KCkgPCAwKQor
ICAgICAgICAgICAgICAgIENSQVNIKCk7CisKKyAgICAgICAgICAgIC8vIE9mZnNldCBmcm9tIHBh
aW50IHJlY3RhbmdsZSB0byB0aGlzIHRpbGUncyBkaXJ0eSByZWN0YW5nbGUuCisgICAgICAgICAg
ICBJbnRQb2ludCBwYWludE9mZnNldChzb3VyY2VSZWN0LngoKSAtIHBhaW50UmVjdC54KCksIHNv
dXJjZVJlY3QueSgpIC0gcGFpbnRSZWN0LnkoKSk7CisgICAgICAgICAgICBpZiAocGFpbnRPZmZz
ZXQueCgpIDwgMCkKKyAgICAgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAgICAgaWYgKHBh
aW50T2Zmc2V0LnkoKSA8IDApCisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAg
IGlmIChwYWludE9mZnNldC54KCkgKyBkZXN0UmVjdC53aWR0aCgpID4gcGFpbnRSZWN0LndpZHRo
KCkpCisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIGlmIChwYWludE9mZnNl
dC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IHBhaW50UmVjdC5oZWlnaHQoKSkKKyAgICAgICAg
ICAgICAgICBDUkFTSCgpOworCisgICAgICAgICAgICBpZiAodGlsZS0+cGFydGlhbFVwZGF0ZSkK
KyAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZFBhcnRpYWxVcGRhdGUodGlsZS0+dGV4dHVy
ZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdXBkYXRlci5hcHBlbmRVcGRhdGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC01NjUsNyArNTI2LDcgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnJlc2VydmVUZXh0dXJlcygpCiAgICAgICAgICAgICAgICAgdGls
ZSA9IGNyZWF0ZVRpbGUoaSwgaik7CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRl
eHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQot
ICAgICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3QodGls
ZSk7CisgICAgICAgICAgICAgICAgdGlsZS0+ZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3Qo
dGlsZSk7CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+cmVzZXJ2
ZShtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTU4NCwyMiArNTQ1LDIwIEBAIFJlZ2lvbiBUaWxlZExheWVyQ2hyb21pdW06
OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3QKIAogdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnJlc2V0VXBkYXRlU3RhdGUoKQogewotICAgIC8vIFJlc2V0IG1fdXBkYXRlUmVjdCBm
b3IgYWxsIHRpbGVzLgogICAgIENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOwogICAgIGZvciAoQ0NMYXllclRpbGlu
Z0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3RpbGVyLT50aWxlcygpLmJl
Z2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGls
ZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwotICAg
ICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7Ci0gICAgICAgIHRpbGUtPm1fcGFy
dGlhbFVwZGF0ZSA9IGZhbHNlOwotICAgICAgICB0aWxlLT5tX3VwZGF0ZWQgPSBmYWxzZTsKKyAg
ICAgICAgdGlsZS0+dXBkYXRlUmVjdCA9IEludFJlY3QoKTsKKyAgICAgICAgdGlsZS0+cGFydGlh
bFVwZGF0ZSA9IGZhbHNlOworICAgICAgICB0aWxlLT51cGRhdGVkID0gZmFsc2U7CiAgICAgfQog
fQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJl
Y3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCit2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJSZWN0KENDVGV4dHVyZVVwZGF0ZXImIHVw
ZGF0ZXIsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
KiBvY2NsdXNpb24pCiB7CiAgICAgbV9za2lwc0RyYXcgPSBmYWxzZTsKICAgICBtX3NraXBzSWRs
ZVBhaW50ID0gZmFsc2U7Ci0gICAgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QgPSBJbnRSZWN0
KCk7Ci0gICAgbV9wYWludFJlY3QgPSBJbnRSZWN0KCk7CisgICAgbV9kaWRQYWludCA9IGZhbHNl
OwogCiAgICAgdXBkYXRlQm91bmRzKCk7CiAKQEAgLTYxMSwxMyArNTcwLDEzIEBAIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
LCBjb25zdCBDQ09jY2x1CiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBt
X3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2VzKGxheWVyUmVjdCwgbGVmdCwgdG9wLCByaWdo
dCwgYm90dG9tKTsKIAotICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3As
IHJpZ2h0LCBib3R0b20sIG9jY2x1c2lvbik7CisgICAgdXBkYXRlVGlsZXMoZmFsc2UsIGxlZnQs
IHRvcCwgcmlnaHQsIGJvdHRvbSwgdXBkYXRlciwgb2NjbHVzaW9uKTsKIH0KIAotdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKK3ZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjppZGxlVXBkYXRlTGF5ZXJSZWN0KENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIs
IGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2Ns
dXNpb24pCiB7Ci0gICAgLy8gQWJvcnQgaWYgd2UgaGF2ZSBhbHJlYWR5IHByZXBhcmVkIGEgcGFp
bnQgb3IgcnVuIG91dCBvZiBtZW1vcnkuCi0gICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQgfHwgIW1f
cGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAvLyBBYm9ydCBpZiB3ZSBoYXZlIGFscmVhZHkgcGFp
bnRlZCBvciBydW4gb3V0IG9mIG1lbW9yeS4KKyAgICBpZiAobV9za2lwc0lkbGVQYWludCB8fCBt
X2RpZFBhaW50KQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV90aWxlcik7CkBAIC02
NDEsMTcgKzYwMCwxNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRl
SWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IENDTwogCiAgICAgLy8gSWYgdGhl
IGxheWVyIGlzIG5vdCB2aXNpYmxlLCB3ZSBoYXZlIG5vdGhpbmcgdG8gZXhwYW5kIGZyb20sIHNv
IGluc3RlYWQgd2UgcHJlcGFpbnQgdGhlIG91dGVyLW1vc3Qgc2V0IG9mIHRpbGVzLgogICAgIGlm
IChsYXllclJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRy
dWUsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3AsIHByZXBhaW50UmlnaHQsIHByZXBhaW50VG9w
LCAwKTsKLSAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQ
YWludCkKKyAgICAgICAgdXBkYXRlVGlsZXModHJ1ZSwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRv
cCwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRUb3AsIHVwZGF0ZXIsIDApOworICAgICAgICBpZiAo
bV9kaWRQYWludCB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludExlZnQsIHByZXBhaW50Qm90
dG9tLCBwcmVwYWludFJpZ2h0LCBwcmVwYWludEJvdHRvbSwgMCk7Ci0gICAgICAgIGlmICghbV9w
YWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgIHVwZGF0ZVRp
bGVzKHRydWUsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRCb3R0b20sIHByZXBhaW50UmlnaHQsIHBy
ZXBhaW50Qm90dG9tLCB1cGRhdGVyLCAwKTsKKyAgICAgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9z
a2lwc0lkbGVQYWludCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcHJlcGFyZVRvVXBk
YXRlVGlsZXModHJ1ZSwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRMZWZ0LCBw
cmVwYWludEJvdHRvbSwgMCk7Ci0gICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8
IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgIHVwZGF0ZVRpbGVzKHRydWUsIHByZXBhaW50TGVm
dCwgcHJlcGFpbnRUb3AsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRCb3R0b20sIHVwZGF0ZXIsIDAp
OworICAgICAgICBpZiAobV9kaWRQYWludCB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludFJp
Z2h0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b20sIDApOwotCisg
ICAgICAgIHVwZGF0ZVRpbGVzKHRydWUsIHByZXBhaW50UmlnaHQsIHByZXBhaW50VG9wLCBwcmVw
YWludFJpZ2h0LCBwcmVwYWludEJvdHRvbSwgdXBkYXRlciwgMCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTY1OSwzNCArNjE3LDM0IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPCiAg
ICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwg
cmlnaHQsIGJvdHRvbSk7CiAKICAgICAvLyBPdGhlcndpc2UsIHByZXBhaW50IGFueXRoaW5nIHRo
YXQgd2FzIG9jY2x1ZGVkIGJ1dCBpbnNpZGUgdGhlIGxheWVyJ3MgdmlzaWJsZSByZWdpb24uCi0g
ICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCAw
KTsKLSAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQor
ICAgIHVwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgdXBkYXRlciwg
MCk7CisgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gVGhlbiBleHBhbmQgb3V0d2FyZHMgZnJvbSB0aGUgdmlzaWJsZSBhcmVh
IHVudGlsIHdlIGZpbmQgYSBkaXJ0eSByb3cgb3IgY29sdW1uIHRvIHVwZGF0ZS4KICAgICB3aGls
ZSAoIW1fc2tpcHNJZGxlUGFpbnQgJiYgKGxlZnQgPiBwcmVwYWludExlZnQgfHwgdG9wID4gcHJl
cGFpbnRUb3AgfHwgcmlnaHQgPCBwcmVwYWludFJpZ2h0IHx8IGJvdHRvbSA8IHByZXBhaW50Qm90
dG9tKSkgewogICAgICAgICBpZiAoYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pIHsKICAgICAgICAg
ICAgICsrYm90dG9tOwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVm
dCwgYm90dG9tLCByaWdodCwgYm90dG9tLCAwKTsKLSAgICAgICAgICAgIGlmICghbV9wYWludFJl
Y3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgICAgICB1cGRhdGVUaWxl
cyh0cnVlLCBsZWZ0LCBib3R0b20sIHJpZ2h0LCBib3R0b20sIHVwZGF0ZXIsIDApOworICAgICAg
ICAgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAodG9wID4gcHJlcGFpbnRUb3ApIHsKICAg
ICAgICAgICAgIC0tdG9wOwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwg
bGVmdCwgdG9wLCByaWdodCwgdG9wLCAwKTsKLSAgICAgICAgICAgIGlmICghbV9wYWludFJlY3Qu
aXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgICAgICB1cGRhdGVUaWxlcyh0
cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCB0b3AsIHVwZGF0ZXIsIDApOworICAgICAgICAgICAgaWYg
KG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBpZiAobGVmdCA+IHByZXBhaW50TGVmdCkgewogICAgICAgICAg
ICAgLS1sZWZ0OwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwg
dG9wLCBsZWZ0LCBib3R0b20sIDApOwotICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0Vt
cHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKKyAgICAgICAgICAgIHVwZGF0ZVRpbGVzKHRydWUs
IGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tLCB1cGRhdGVyLCAwKTsKKyAgICAgICAgICAgIGlmICht
X2RpZFBhaW50IHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHJpZ2h0IDwgcHJlcGFpbnRSaWdodCkgewogICAgICAgICAg
ICAgKytyaWdodDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHJpZ2h0
LCB0b3AsIHJpZ2h0LCBib3R0b20sIDApOwotICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5p
c0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKKyAgICAgICAgICAgIHVwZGF0ZVRpbGVzKHRy
dWUsIHJpZ2h0LCB0b3AsIHJpZ2h0LCBib3R0b20sIHVwZGF0ZXIsIDApOworICAgICAgICAgICAg
aWYgKG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KQEAgLTcxMSw4ICs2NjksNiBAQCBib29sIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6bmVlZHNJZGxlUGFpbnQoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgICAg
ICAgICAgLy8gSWYgdGhlIGxheWVyUmVjdCBpcyBlbXB0eSwgdGhlbiB3ZSBhcmUgcGFpbnRpbmcg
dGhlIG91dGVyLW1vc3Qgc2V0IG9mIHRpbGVzIG9ubHkuCiAgICAgICAgICAgICBpZiAobGF5ZXJS
ZWN0LmlzRW1wdHkoKSAmJiBpICE9IGxlZnQgJiYgaSAhPSByaWdodCAmJiBqICE9IHRvcCAmJiBq
ICE9IGJvdHRvbSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICht
X3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5jb250YWlucyhJbnRQb2ludChpLCBqKSkpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0g
dGlsZUF0KGksIGopOwogICAgICAgICAgICAgaWYgKCF0aWxlIHx8ICF0aWxlLT5tYW5hZ2VkVGV4
dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkgfHwg
dGlsZS0+aXNEaXJ0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uaAppbmRleCA4MWVlMjQ4YTc2OGZmOTlkZjg2Y2VjMGYxOGM0YTMwYmMw
YWNjN2RjLi42MDYwODkzZWNiM2QyOGQxNTg3MWNjMDZiOGQzMTM3NWUxZTllZTk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNDIsNyArNDIsNiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5UaWxlZExheWVyQ2hyb21pdW0oKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpAQCAtODksMTAgKzg4LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHJlc2V0VXBkYXRlU3RhdGUoKTsKIAogICAgIC8vIFByZXBhcmUgZGF0
YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0
LgotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29u
c3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CisgICAgdm9pZCB1cGRhdGVMYXllclJlY3QoQ0NUZXh0
dXJlVXBkYXRlciYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyKik7CiAKICAgICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgdGhpcyB3aWxsIHRyeSB0byBw
YWludCBhZGRpdGlvbmFsIHN1cnJvdW5kaW5nIGNvbnRlbnQgaWYgaWRsZS4KLSAgICB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBDQ09jY2x1
c2lvblRyYWNrZXIqKTsKKyAgICB2b2lkIGlkbGVVcGRhdGVMYXllclJlY3QoQ0NUZXh0dXJlVXBk
YXRlciYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
Kik7CiAKICAgICAvLyBBZnRlciBwcmVwYXJpbmcgYW4gdXBkYXRlLCByZXR1cm5zIHRydWUgaWYg
bW9yZSBwcmUtcGFpbnRpbmcgaXMgbmVlZGVkLgogICAgIGJvb2wgbmVlZHNJZGxlUGFpbnQoY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKQEAgLTExNCwyMyArMTEzLDE5IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCB0aWxlT25seU5lZWRzUGFydGlhbFVwZGF0ZShVcGRhdGFibGVUaWxlKik7CiAgICAg
Ym9vbCB0aWxlTmVlZHNCdWZmZXJlZFVwZGF0ZShVcGRhdGFibGVUaWxlKik7CiAKLSAgICB2b2lk
IHByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCBy
aWdodCwgaW50IGJvdHRvbSwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CisgICAgdm9pZCB1
cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBi
b3R0b20sIENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKIAog
ICAgIFVwZGF0YWJsZVRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7CiAgICAgVXBkYXRhYmxl
VGlsZSogY3JlYXRlVGlsZShpbnQsIGludCk7CiAKLSAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVs
ZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KCkuCi0gICAgSW50UmVjdCBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdDsKLQotICAgIC8vIFN0
YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygp
LiBUaGlzIHJlcHJlc2VudHMgdGhlIGFyZWEKLSAgICAvLyBvZiB0aGUgbGF5ZXIgdGhhdCBpcyBh
Y3R1YWxseSByZS1wYWludGVkIGJ5IFdlYktpdC4KLSAgICBJbnRSZWN0IG1fcGFpbnRSZWN0Owot
CiAgICAgR0MzRGVudW0gbV90ZXh0dXJlRm9ybWF0OwogICAgIGJvb2wgbV9za2lwc0RyYXc7CiAg
ICAgYm9vbCBtX3NraXBzSWRsZVBhaW50OwogICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBs
ZWRUZXhlbEZvcm1hdCBtX3NhbXBsZWRUZXhlbEZvcm1hdDsKIAorICAgIC8vIFRyYWNrcyBpZiB3
ZSd2ZSBkb25lIGFueSBwYWludGluZyBvbiB0aGlzIHVwZGF0ZSBjeWNsZS4KKyAgICBib29sIG1f
ZGlkUGFpbnQ7CisKICAgICBUaWxpbmdPcHRpb24gbV90aWxpbmdPcHRpb247CiAgICAgT3duUHRy
PENDTGF5ZXJUaWxpbmdEYXRhPiBtX3RpbGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDg3ZDAxNjg4NjZjMGE0NjNmYTJlM2I2NWUxNTQ5OWI0N2RmMjVlNzcuLjIw
ZmY1ZTFlYjgxNmRmOGFjMWE3ZTk1YzQyNjMxNzVhZTRlYjk5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmNwcApAQCAtNzEsOSArNzEsOSBAQCBib29sIFdlYkdMTGF5ZXJDaHJvbWl1
bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gTGF5ZXJDaHJvbWl1bTo6ZHJhd3ND
b250ZW50KCkgJiYgIW1fY29udGV4dExvc3Q7CiB9CiAKLXZvaWQgV2ViR0xMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9jY2x1
c2lvbiAqLykKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRl
ciYgdXBkYXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKikKIHsKLSAgICBpZiAoIWRyYXdz
Q29udGVudCgpIHx8ICFtX25lZWRzRGlzcGxheSkKKyAgICBpZiAoIWRyYXdzQ29udGVudCgpIHx8
ICFtX25lZWRzRGlzcGxheSB8fCAhbV9kcmF3aW5nQnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2RyYXdpbmdCdWZmZXItPnByZXBhcmVCYWNrQnVmZmVyKCk7CkBAIC04MiwxMiArODIs
NiBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKiAvKiBvY2NsdQogICAgIGNvbnRleHQoKS0+bWFya0xheWVyQ29t
cG9zaXRlZCgpOwogICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CiAgICAgbV9jb250ZXh0TG9z
dCA9IGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOwotfQotCi12b2lkIFdlYkdMTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIEND
VGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCi17Ci0gICAgaWYgKCFtX2RyYXdpbmdCdWZmZXIpCi0g
ICAgICAgIHJldHVybjsKIAogICAgIG1fdGV4dHVyZUlkID0gbV9kcmF3aW5nQnVmZmVyLT5mcm9u
dENvbG9yQnVmZmVyKCk7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlci0+cmVxdWlyZXNDb3B5RnJv
bUJhY2tUb0Zyb250QnVmZmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDcx
MWMwYmU4MjQ3MmJhNTVhMDQyMjUxOGQ4M2EwMmMxY2NjZDZjOGQuLmRiODIxZDA5MDY1YmYyODky
NjRhNTVlOWM3NjExYjVjYjNhNzkxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBA
IC01MCw4ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTExheWVyQ2hyb21pdW0o
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1
cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CiAgICAgdmlydHVhbCB2b2lk
IHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgICBib29sIHBhaW50UmVuZGVyZWRS
ZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IDA4NmE2NzhiN2UxYjI3OGUyOTIwMzc3NmRkYjM4MzkyYjY1MzliZjQuLmIyZDE2
YTU5ZmM1NGZjYjNmMTkyZTEwMTdmYjg2N2UxODkxZjBjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcApAQCAtMTEwLDcgKzExMCw2IEBAIENDTGF5ZXJUcmVlSG9zdDo6fkNDTGF5
ZXJUcmVlSG9zdCgpCiAgICAgQVNTRVJUKG1fcHJveHkpOwogICAgIG1fcHJveHktPnN0b3AoKTsK
ICAgICBtX3Byb3h5LmNsZWFyKCk7Ci0gICAgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAgICAgbnVt
TGF5ZXJUcmVlSW5zdGFuY2VzLS07CiB9CiAKQEAgLTIyOSw3ICsyMjgsNiBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
IGhvc3RJbXBsKQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdENvbXBsZXRlKCkKIHsKICAg
ICBtX2RlbGV0ZVRleHR1cmVBZnRlckNvbW1pdExpc3QuY2xlYXIoKTsKLSAgICBjbGVhclBlbmRp
bmdVcGRhdGUoKTsKICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRl
eHR1cmVzKCk7CiAgICAgbV9jbGllbnQtPmRpZENvbW1pdCgpOwogfQpAQCAtNDIxLDcgKzQxOSw3
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAgIHN0YXRpY19jYXN0PEND
U2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRlbHko
KTsKIH0KIAotYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCitib29sIENDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAg
ICAgaWYgKCFtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCkgewogICAgICAgICBpbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcigpOwpAQCAtNDQwLDExICs0MzgsMTEgQEAgYm9vbCBDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVycygpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkpOworICAg
IHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSwgdXBkYXRlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9v
dExheWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVt
KiByb290TGF5ZXIsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgVFJBQ0VfRVZF
TlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CiAKQEAgLTQ1NSwx
MCArNDUzLDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9t
aXVtKiByb290TGF5ZXIpCiAgICAgSW50UmVjdCByb290Q2xpcFJlY3QoSW50UG9pbnQoKSwgdmll
d3BvcnRTaXplKCkpOwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJlY3Qocm9vdENsaXBSZWN0KTsK
IAotICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMg
d2Fzbid0IGNhbGxlZCBhZnRlcgotICAgIC8vIHVwZGF0ZUxheWVycy4gT25seSBvbmUgdXBkYXRl
IGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgotICAgIEFTU0VSVCghbV91cGRhdGVM
aXN0LnNpemUoKSk7Ci0gICAgbV91cGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOworICAgIExh
eWVyTGlzdCB1cGRhdGVMaXN0OworICAgIHVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CiAK
ICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9vdExheWVy
LT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0
KCk7CkBAIC00NjYsMTUgKzQ2MiwxNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5
ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
ZGVudGl0eU1hdHJpeDsKICAgICB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9v
dExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRh
dGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1v
bjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExh
eWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHVwZGF0ZUxpc3QsIHJvb3RSZW5k
ZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRl
eHR1cmVTaXplKTsKICAgICB9CiAKICAgICAvLyBSZXNldCBwYXJ0aWFsIHRleHR1cmUgdXBkYXRl
IHJlcXVlc3RzLgogICAgIG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA9IDA7CiAKLSAg
ICByZXNlcnZlVGV4dHVyZXMoKTsKKyAgICByZXNlcnZlVGV4dHVyZXModXBkYXRlTGlzdCk7CiAK
LSAgICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVMaXN0LCBQYWludFZpc2libGUpOworICAg
IHBhaW50TGF5ZXJDb250ZW50cyh1cGRhdGVMaXN0LCBQYWludFZpc2libGUsIHVwZGF0ZXIpOwog
ICAgIGlmICghbV90cmlnZ2VySWRsZVBhaW50cykKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODgs
MTcgKzQ4NCwxNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hy
b21pdW0qIHJvb3RMYXllcikKICAgICAvLyBvdGhlcndpc2UgaXQgd2lsbCBhbHdheXMgcHVzaCB1
cyB0b3dhcmRzIHRoZSBtYXhpbXVtIGxpbWl0LgogICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdl
ci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhwcmVmZXJyZWRMaW1pdEJ5dGVzKTsKICAgICAvLyBU
aGUgc2Vjb25kIChpZGxlKSBwYWludCB3aWxsIGJlIGEgbm8tb3AgaW4gbGF5ZXJzIHdoZXJlIHBh
aW50aW5nIGFscmVhZHkgb2NjdXJlZCBhYm92ZS4KLSAgICBwYWludExheWVyQ29udGVudHMobV91
cGRhdGVMaXN0LCBQYWludElkbGUpOworICAgIHBhaW50TGF5ZXJDb250ZW50cyh1cGRhdGVMaXN0
LCBQYWludElkbGUsIHVwZGF0ZXIpOwogICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0
TWF4TWVtb3J5TGltaXRCeXRlcyhtYXhMaW1pdEJ5dGVzKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnJlc2VydmVUZXh0dXJlcygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRl
eHR1cmVzKGNvbnN0IExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsKICAgICAvLyBVc2UgQmFja1Rv
RnJvbnQgc2luY2UgaXQncyBjaGVhcCBhbmQgdGhpcyBpc24ndCBvcmRlci1kZXBlbmRlbnQuCiAg
ICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFj
dGlvbnM6OkJhY2tUb0Zyb250PiBDQ0xheWVySXRlcmF0b3JUeXBlOwogCi0gICAgQ0NMYXllckl0
ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJm1fdXBkYXRlTGlzdCk7
Ci0gICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6
YmVnaW4oJm1fdXBkYXRlTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIENDTGF5ZXJJdGVy
YXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZ1cGRhdGVMaXN0KTsKKyAg
ICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdp
bigmdXBkYXRlTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoIWl0LnJlcHJl
c2VudHNJdHNlbGYoKSB8fCAhaXQtPmFsd2F5c1Jlc2VydmVUZXh0dXJlcygpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGl0LT5yZXNlcnZlVGV4dHVyZXMoKTsKQEAgLTUwNiwxNyAr
NTAyLDE3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpyZXNlcnZlVGV4dHVyZXMoKQogfQogCiAv
LyBzdGF0aWMKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzSWZEaXJ0eShMYXll
ckNocm9taXVtKiBsYXllciwgUGFpbnRUeXBlIHBhaW50VHlwZSwgY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyKiBvY2NsdXNpb24pCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlKExheWVyQ2hy
b21pdW0qIGxheWVyLCBQYWludFR5cGUgcGFpbnRUeXBlLCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRh
dGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKIHsKICAgICBBU1NFUlQo
bGF5ZXIpOwogICAgIEFTU0VSVChQYWludFZpc2libGUgPT0gcGFpbnRUeXBlIHx8IFBhaW50SWRs
ZSA9PSBwYWludFR5cGUpOwogICAgIGlmIChQYWludFZpc2libGUgPT0gcGFpbnRUeXBlKQotICAg
ICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVzaW9uKTsKKyAgICAgICAgbGF5
ZXItPnVwZGF0ZSh1cGRhdGVyLCBvY2NsdXNpb24pOwogICAgIGVsc2UKLSAgICAgICAgbGF5ZXIt
PmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdXNpb24pOworICAgICAgICBsYXllci0+aWRs
ZVVwZGF0ZSh1cGRhdGVyLCBvY2NsdXNpb24pOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6
cGFpbnRNYXNrc0ZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxh
eWVyLCBQYWludFR5cGUgcGFpbnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFz
a3NGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgUGFp
bnRUeXBlIHBhaW50VHlwZSwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICAvLyBO
b3RlOiBNYXNrcyBhbmQgcmVwbGljYXMgb25seSBleGlzdCBmb3IgbGF5ZXJzIHRoYXQgb3duIHJl
bmRlciBzdXJmYWNlcy4gSWYgd2UgcmVhY2ggdGhpcyBwb2ludAogICAgIC8vIGluIGNvZGUsIHdl
IGFscmVhZHkga25vdyB0aGF0IGF0IGxlYXN0IHNvbWV0aGluZyB3aWxsIGJlIGRyYXduIGludG8g
dGhpcyByZW5kZXIgc3VyZmFjZSwgc28gdGhlCkBAIC01MjUsMTcgKzUyMSwxNyBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrc0ZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSog
cmVuZGVyU3VyZmFjZUxheQogICAgIExheWVyQ2hyb21pdW0qIG1hc2tMYXllciA9IHJlbmRlclN1
cmZhY2VMYXllci0+bWFza0xheWVyKCk7CiAgICAgaWYgKG1hc2tMYXllcikgewogICAgICAgICBt
YXNrTGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJT
dXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICBwYWludENvbnRlbnRzSWZE
aXJ0eShtYXNrTGF5ZXIsIHBhaW50VHlwZSwgMCk7CisgICAgICAgIHVwZGF0ZShtYXNrTGF5ZXIs
IHBhaW50VHlwZSwgdXBkYXRlciwgMCk7CiAgICAgfQogCiAgICAgTGF5ZXJDaHJvbWl1bSogcmVw
bGljYU1hc2tMYXllciA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCkgPyByZW5k
ZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSA6IDA7CiAgICAgaWYg
KHJlcGxpY2FNYXNrTGF5ZXIpIHsKICAgICAgICAgcmVwbGljYU1hc2tMYXllci0+c2V0VmlzaWJs
ZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVu
dEJvdW5kcygpKSk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FNYXNrTGF5
ZXIsIHBhaW50VHlwZSwgMCk7CisgICAgICAgIHVwZGF0ZShyZXBsaWNhTWFza0xheWVyLCBwYWlu
dFR5cGUsIHVwZGF0ZXIsIDApOwogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBh
aW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IFBhaW50VHlwZSBwYWludFR5cGUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNv
bnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgUGFpbnRUeXBl
IHBhaW50VHlwZSwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICAvLyBVc2UgRnJv
bnRUb0JhY2sgdG8gYWxsb3cgZm9yIHRlc3Rpbmcgb2NjbHVzaW9uIGFuZCBwZXJmb3JtaW5nIGN1
bGxpbmcgZHVyaW5nIHRoZSB0cmVlIHdhbGsuCiAgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8
TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrPiBDQ0xheWVy
SXRlcmF0b3JUeXBlOwpAQCAtNTUwLDEyICs1NDYsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxp
c3QKICAgICAgICAgICAgIEFTU0VSVChpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgp
IHx8IGl0LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSk7CiAKICAg
ICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIuZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKCpp
dCwgaXQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgICAgICBwYWludE1hc2tzRm9yUmVuZGVy
U3VyZmFjZSgqaXQsIHBhaW50VHlwZSk7CisgICAgICAgICAgICBwYWludE1hc2tzRm9yUmVuZGVy
U3VyZmFjZSgqaXQsIHBhaW50VHlwZSwgdXBkYXRlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoaXQu
cmVwcmVzZW50c0l0c2VsZigpKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWl0LT5ib3VuZHMoKS5p
c0VtcHR5KCkpOwogCiAgICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShpdC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgICAgIHBhaW50
Q29udGVudHNJZkRpcnR5KCppdCwgcGFpbnRUeXBlLCAmb2NjbHVzaW9uVHJhY2tlcik7CisgICAg
ICAgICAgICB1cGRhdGUoKml0LCBwYWludFR5cGUsIHVwZGF0ZXIsICZvY2NsdXNpb25UcmFja2Vy
KTsKICAgICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
Kml0KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLmxlYXZl
VG9UYXJnZXRSZW5kZXJTdXJmYWNlKGl0LnRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpLT5yZW5k
ZXJTdXJmYWNlKCkpOwpAQCAtNTY0LDM4ICs1NjAsNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dAogICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucmVjb3JkTWV0cmljcyh0
aGlzKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIp
Ci17Ci0gICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNu
J3Qgb3JkZXItZGVwZW5kZW50LgotICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hy
b21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9t
aXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9y
VHlwZTsKLQotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlw
ZTo6ZW5kKCZtX3VwZGF0ZUxpc3QpOwotICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9
IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX3VwZGF0ZUxpc3QpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLSAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNUYXJnZXRSZW5kZXJTdXJmYWNlKCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVChpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgpIHx8
IGl0LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSk7Ci0gICAgICAg
ICAgICBpZiAoaXQtPm1hc2tMYXllcigpKQotICAgICAgICAgICAgICAgIGl0LT5tYXNrTGF5ZXIo
KS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLQotICAgICAg
ICAgICAgaWYgKGl0LT5yZXBsaWNhTGF5ZXIoKSkgewotICAgICAgICAgICAgICAgIGl0LT5yZXBs
aWNhTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsK
LSAgICAgICAgICAgICAgICBpZiAoaXQtPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSkKLSAg
ICAgICAgICAgICAgICAgICAgaXQtPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkpCi0gICAgICAgICAgICBpdC0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICB9Ci19Ci0K
LXZvaWQgQ0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUoKQotewotICAgIGZvciAo
c2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJbmRleCA8IG1fdXBkYXRlTGlzdC5zaXpl
KCk7ICsrc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV91
cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7Ci0gICAgICAgIEFTU0VSVChsYXllci0+cmVu
ZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgbGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwotICAg
IH0KLSAgICBtX3VwZGF0ZUxpc3QuY2xlYXIoKTsKLX0KLQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYgaW5mbykKIHsK
ICAgICAvLyBGSVhNRTogcHVzaGluZyBzY3JvbGwgb2Zmc2V0cyB0byBub24tcm9vdCBsYXllcnMg
bm90IGltcGxlbWVudGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDliYTYwMWRl
NDIxOGZiNzhlZWMzNTE5ZGY5NDEzOGU5M2VhZWQxZTEuLjc5ZTFjMTk1MTExNjM1MzYzYjJlOWY0
NmYwYjEyYzg5Y2EyYzBjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0xNTYs
NyArMTU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIHsg
bV9jbGllbnQtPmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQogICAgIHZvaWQgZGVsZXRlQ29u
dGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgLy8gUmV0
dXJucyBmYWxzZSBpZiB3ZSBzaG91bGQgYWJvcnQgdGhpcyBmcmFtZSBkdWUgdG8gaW5pdGlhbGl6
YXRpb24gZmFpbHVyZS4KLSAgICBib29sIHVwZGF0ZUxheWVycygpOworICAgIGJvb2wgdXBkYXRl
TGF5ZXJzKENDVGV4dHVyZVVwZGF0ZXImKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdENsaWVudCog
Y2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIApAQCAtMjEyLDcgKzIxMiw2IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFy
Z2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9u
U2VjKTsKIAotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUo
Y29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwogICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihH
cmFwaGljc0NvbnRleHQzRCopOwogICAgIHZvaWQgc3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29u
dGV4dDNEKik7CkBAIC0yMzEsMTQgKzIzMCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlh
bGl6ZUxheWVyUmVuZGVyZXIoKTsKIAogICAgIGVudW0gUGFpbnRUeXBlIHsgUGFpbnRWaXNpYmxl
LCBQYWludElkbGUgfTsKLSAgICBzdGF0aWMgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShMYXll
ckNocm9taXVtKiwgUGFpbnRUeXBlLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKLSAgICB2
b2lkIHBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmLCBQYWludFR5cGUpOwotICAg
IHZvaWQgcGFpbnRNYXNrc0ZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlw
ZSk7CisgICAgc3RhdGljIHZvaWQgdXBkYXRlKExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUsIEND
VGV4dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKKyAgICB2b2lkIHBh
aW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmLCBQYWludFR5cGUsIENDVGV4dHVyZVVw
ZGF0ZXImKTsKKyAgICB2b2lkIHBhaW50TWFza3NGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21p
dW0qLCBQYWludFR5cGUsIENDVGV4dHVyZVVwZGF0ZXImKTsKIAotICAgIHZvaWQgdXBkYXRlTGF5
ZXJzKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVt
KiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIC8vIFByZS1yZXNlcnZlIHRleHR1cmVzIGZvciBh
bnkgbGF5ZXIgbWFya2VkICJhbHdheXMgcmVzZXJ2ZSB0ZXh0dXJlcyIKLSAgICB2b2lkIHJlc2Vy
dmVUZXh0dXJlcygpOwotICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CisgICAgdm9pZCBy
ZXNlcnZlVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0Jik7CiAKICAgICB2b2lkIGFuaW1hdGVMYXll
cnMoZG91YmxlIG1vbm90b25pY1RpbWUpOwogICAgIGJvb2wgYW5pbWF0ZUxheWVyc1JlY3Vyc2l2
ZShMYXllckNocm9taXVtKiBjdXJyZW50LCBkb3VibGUgbW9ub3RvbmljVGltZSk7CkBAIC0yNjIs
OCArMjYwLDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5
ZXI7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7
CiAKLSAgICBMYXllckxpc3QgbV91cGRhdGVMaXN0OwotCiAgICAgQ0NTZXR0aW5ncyBtX3NldHRp
bmdzOwogCiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNTdmMGMyMDYzNmI2OTQwZGQzYzA4MzZlMWFkMjkwZTZl
YmZhMjM0OC4uOTIyM2M1ZjZiMDBkMWVkZDFlYTYzNDYwYzlmMDk5OWE0ZGZkYmQwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCB2
b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZSgpCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQor
dm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdChDQ1RleHR1cmVVcGRhdGVyJiB1cGRh
dGVyKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAgICAgLy8gQ29t
bWl0IGltbWVkaWF0ZWx5CkBAIC0yMDAsOCArMjAwLDYgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFBy
b3h5Ojpkb0NvbW1pdCgpCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0
KCk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRh
dGVyOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKICAgICAgICAgdXBkYXRl
ci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5
ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKICAgICAgICAgQVNTRVJUKCF1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJs
ZSgpKTsKQEAgLTI4NywxMCArMjg1LDEyIEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29t
bWl0SWZOZWVkZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAK
LSAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCkpCisgICAgQ0NUZXh0dXJl
VXBkYXRlciB1cGRhdGVyOworCisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cyh1cGRhdGVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZG9Db21taXQoKTsKKyAg
ICBkb0NvbW1pdCh1cGRhdGVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDk4ODc0MzJlYmFkNmU1M2NlNDA1MjZjNjBlMTIw
MTE2MDYxNjMxNGUuLjk2MTEwYzMyODkwMTA5YWU2YzFkYzY4YjNhYjBiOGY4OTEyNmU3MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHJp
dmF0ZToKICAgICBleHBsaWNpdCBDQ1NpbmdsZVRocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCop
OwogCiAgICAgYm9vbCBjb21taXRJZk5lZWRlZCgpOwotICAgIHZvaWQgZG9Db21taXQoKTsKKyAg
ICB2b2lkIGRvQ29tbWl0KENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICBib29sIGRvQ29tcG9zaXRl
KCk7CiAgICAgdm9pZCBkaWRTd2FwRnJhbWUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cAppbmRleCA1YmRlZTRlOTcyMmY4OGFiNjYyYWJiYzRjYTcyYTQxNjVlYjQ1YmI0Li5kYmRjYTZh
N2QwNTM4ZDA0ODVlMTkxMTNlZDk3MTY3NTFkN2E1MWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcApAQCAtNDEyLDYgKzQxMiw4IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVk
QWN0aW9uQmVnaW5GcmFtZSgpCiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QgPSBhZG9w
dFB0cihuZXcgQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKCkpOwogICAgIG1fcGVuZGluZ0JlZ2lu
RnJhbWVSZXF1ZXN0LT5tb25vdG9uaWNGcmFtZUJlZ2luVGltZSA9IG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpOwogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5zY3JvbGxJbmZv
ID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOworICAgIG1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVw
ZGF0ZXIpOworICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT51cGRhdGVyID0gbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuZ2V0KCk7CiAKICAgICBtX21haW5UaHJlYWRQ
cm94eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lKSk7CiAKQEAgLTQ2NSw3ICs0NjcsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJl
Z2luRnJhbWUoKQogICAgIC8vIHVwZGF0ZUxheWVycy4KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9
IGZhbHNlOwogCi0gICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpKQorICAg
IGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKnJlcXVlc3QtPnVwZGF0ZXIpKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgc2Nyb2xscyBhbmQgY2Fs
bGluZyBhbmltYXRlLCB3ZSBzZXQgbV9hbmltYXRlUmVxdWVzdGVkIHRvIGZhbHNlLgpAQCAtNDk1
LDYgKzQ5Nyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiAgICAgQVNTRVJUKGlzSW1wbFRo
cmVhZCgpKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQpOwogICAgIEFTU0VS
VChtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGluZygpKTsKKwogICAgIGlmICgh
bV9sYXllclRyZWVIb3N0SW1wbCkgewogICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNTAyLDEwICs1MDUsNiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJl
Z2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlv
bgogCiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBjb21wbGV0aW9u
OwogCi0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0g
ICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NU
ZXh0dXJlVXBkYXRlcik7Ci0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgKm1fY3VycmVudFRleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkKTsKLQogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdp
bkZyYW1lQ29tcGxldGUoKTsKIH0KIApAQCAtNTM0LDEzICs1MzMsMTMgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgdGhpcywgMCk7CisgICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQpOwogICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQtPmhhc01vcmVVcGRhdGVzKCkpOwogICAgIEFTU0VSVChtX2NvbW1pdENvbXBsZXRpb25FdmVu
dE9uSW1wbFRocmVhZCk7CiAKICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZC5jbGVhcigpOwogCi0KICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwog
CiAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJl
ZUhvc3RJbXBsLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCAzNWZlMWRiYWZm
NDBiNGE2ZTJkZjlmY2Q4NGQyMmY5MjU2MGM5YjM3Li5hMzgzMTJkZTU2MDU1NjI0YmJlN2FiYThj
NzdjODdlZDU2MjQxMjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC05NCw5ICs5NCwx
NSBAQCBwcml2YXRlOgogCiAgICAgLy8gU2V0IG9uIGltcGwgdGhyZWFkLCByZWFkIG9uIG1haW4g
dGhyZWFkLgogICAgIHN0cnVjdCBCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUgewotICAgICAgICBC
ZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUoKSA6IG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKCkgeyB9
CisgICAgICAgIEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSgpCisgICAgICAgICAgICA6IG1vbm90
b25pY0ZyYW1lQmVnaW5UaW1lKDApCisgICAgICAgICAgICAsIHVwZGF0ZXIoMCkKKyAgICAgICAg
eworICAgICAgICB9CisKICAgICAgICAgZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lOwog
ICAgICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbzsKKyAgICAgICAg
Q0NUZXh0dXJlVXBkYXRlciogdXBkYXRlcjsKICAgICB9OwogICAgIE93blB0cjxCZWdpbkZyYW1l
QW5kQ29tbWl0U3RhdGU+IG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRl
eCA0YTE0ZGNiNTYzNDM2MzQzZGY5Zjc0ZTc3Y2ZkMGEyMjcwZTZiZWY1Li41NWU3OGI0MzFhMDVk
NWQxMDg1MmM1MzNjMzIyNmFjZmQxMzg5MjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNDT2NjbHVz
aW9uVHJhY2tlclRlc3RDb21tb24uaCIKKyNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9u
LmgiCiAjaW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9u
cy5oIgpAQCAtNDkyLDcgKzQ5Myw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9iZWdpblRhc2sg
PSBuZXcgQmVnaW5UYXNrKHRoaXMpOwogICAgICAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+
Y3VycmVudFRocmVhZCgpLT5wb3N0RGVsYXllZFRhc2sobV9iZWdpblRhc2ssIDApOyAvLyBwb3N0
RGVsYXllZFRhc2sgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSB0YXNrCiAgICAgICAgIG1fdGltZW91
dFRhc2sgPSBuZXcgVGltZW91dFRhc2sodGhpcyk7Ci0gICAgICAgIHdlYktpdFBsYXRmb3JtU3Vw
cG9ydCgpLT5jdXJyZW50VGhyZWFkKCktPnBvc3REZWxheWVkVGFzayhtX3RpbWVvdXRUYXNrLCA1
MDAwKTsKKyAgICAgICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmN1cnJlbnRUaHJlYWQoKS0+
cG9zdERlbGF5ZWRUYXNrKG1fdGltZW91dFRhc2ssIDUwMDAqMTAwMDApOwogICAgICAgICB3ZWJL
aXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3VycmVudFRocmVhZCgpLT5lbnRlclJ1bkxvb3AoKTsKIAog
ICAgICAgICBpZiAobV9sYXllclRyZWVIb3N0ICYmIG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVy
KCkpCkBAIC0xNDI5LDMzICsxNDMwLDIzIEBAIHB1YmxpYzoKICAgICBpbnQgaWRsZVBhaW50Q29u
dGVudHNDb3VudCgpIHsgcmV0dXJuIG1faWRsZVBhaW50Q29udGVudHNDb3VudDsgfQogICAgIHZv
aWQgcmVzZXRQYWludENvbnRlbnRzQ291bnQoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50ID0gMDsg
bV9pZGxlUGFpbnRDb250ZW50c0NvdW50ID0gMDt9CiAKLSAgICBpbnQgdXBkYXRlQ291bnQoKSB7
IHJldHVybiBtX3VwZGF0ZUNvdW50OyB9Ci0gICAgdm9pZCByZXNldFVwZGF0ZUNvdW50KCkgeyBt
X3VwZGF0ZUNvdW50ID0gMDsgfQotCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRp
cnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uKQorICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyKiBvY2NsdXNpb24pCiAgICAgewotICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50c0lmRGlydHkob2NjbHVzaW9uKTsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21p
dW06OnVwZGF0ZSh1cGRhdGVyLCBvY2NsdXNpb24pOwogICAgICAgICBtX3BhaW50Q29udGVudHND
b3VudCsrOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGly
dHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCisgICAgdmlydHVhbCB2b2lk
IGlkbGVVcGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyKiBvY2NsdXNpb24pCiAgICAgewotICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1c2lvbik7CisgICAgICAgIENvbnRlbnRMYXll
ckNocm9taXVtOjppZGxlVXBkYXRlKHVwZGF0ZXIsIG9jY2x1c2lvbik7CiAgICAgICAgIG1faWRs
ZVBhaW50Q29udGVudHNDb3VudCsrOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVV
cGRhdGVyJiB1cGRhdGVyKQotICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIG1fdXBk
YXRlQ291bnQrKzsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ29udGVudExheWVyRGVsZWdhdGUqIGRlbGVnYXRl
KQogICAgICAgICA6IENvbnRlbnRMYXllckNocm9taXVtKGRlbGVnYXRlKQogICAgICAgICAsIG1f
cGFpbnRDb250ZW50c0NvdW50KDApCiAgICAgICAgICwgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50
KDApCi0gICAgICAgICwgbV91cGRhdGVDb3VudCgwKQogICAgIHsKICAgICAgICAgc2V0Qm91bmRz
KEludFNpemUoMTAsIDEwKSk7CiAgICAgICAgIHNldElzRHJhd2FibGUodHJ1ZSk7CkBAIC0xNDYz
LDcgKzE0NTQsNiBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fcGFpbnRDb250ZW50c0NvdW50Owog
ICAgIGludCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1fdXBkYXRlQ291bnQ7
CiB9OwogCiAvLyBMYXllciBvcGFjaXR5IGNoYW5nZSBkdXJpbmcgcGFpbnQgc2hvdWxkIG5vdCBw
cmV2ZW50IGNvbXBvc2l0b3IgcmVzb3VyY2VzIGZyb20gYmVpbmcgdXBkYXRlZCBkdXJpbmcgY29t
bWl0LgpAQCAtMTQ5MCwxNyArMTQ4MCwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
YWZ0ZXJUZXN0KCkKICAgICB7Ci0gICAgICAgIC8vIHBhaW50Q29udGVudHNJZkRpcnR5KCkgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KKyAgICAgICAgLy8gdXBkYXRlKCkgc2hvdWxkIGhh
dmUgYmVlbiBjYWxsZWQgb25jZS4KICAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tM
YXllci0+cGFpbnRDb250ZW50c0NvdW50KCkpOwogCi0gICAgICAgIC8vIGlkbGVQYWludENvbnRl
bnRzSWZEaXJ0eSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UKKyAgICAgICAgLy8gaWRs
ZVVwZGF0ZSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UKICAgICAgICAgRVhQRUNUX0VR
KDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+aWRsZVBhaW50Q29udGVudHNDb3VudCgpKTsKIAotICAg
ICAgICAvLyB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxs
ZWQgdGhlIHNhbWUKLSAgICAgICAgLy8gYW1vdXQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50c0lm
RGlydHkoKS4KLSAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250
ZW50c0NvdW50KCksCi0gICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0
ZUNvdW50KCkpOwotCiAgICAgICAgIC8vIGNsZWFyIG1fdXBkYXRlQ2hlY2tMYXllciBzbyBDQ0xh
eWVyVHJlZUhvc3QgZGllcy4KICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLmNsZWFyKCk7CiAg
ICAgfQpAQCAtMTUyOSw3ICsxNTE0LDggQEAgcHVibGljOgogICAgICAgICBJbnRTaXplIHZpZXdw
b3J0U2l6ZSgxMCwgMTApOwogICAgICAgICBsYXllclRyZWVIb3N0KCktPnNldFZpZXdwb3J0U2l6
ZSh2aWV3cG9ydFNpemUpOwogCi0gICAgICAgIGxheWVyVHJlZUhvc3QoKS0+dXBkYXRlTGF5ZXJz
KCk7CisgICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICAgICAgbGF5ZXJUcmVl
SG9zdCgpLT51cGRhdGVMYXllcnModXBkYXRlcik7CiAKICAgICAgICAgRVhQRUNUX0VRKHZpZXdw
b3J0U2l6ZSwgbGF5ZXJUcmVlSG9zdCgpLT52aWV3cG9ydFNpemUoKSk7CiAgICAgICAgIEVYUEVD
VF9FUShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKSwgbGF5ZXJU
cmVlSG9zdCgpLT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPm1heE1lbW9yeUxpbWl0Qnl0ZXMo
KSk7CkBAIC0xNzE4LDkgKzE3MDQsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBOdW1iZXIg
b2YgdGV4dHVyZXMgdXNlZCBmb3IgY29tbWl0IHNob3VsZCBzdGlsbCBiZSB0d28uCiAgICAgICAg
ICAgICBFWFBFQ1RfRVEoMiwgY29udGV4dC0+bnVtVXNlZFRleHR1cmVzKCkpOwogICAgICAgICAg
ICAgLy8gRmlyc3QgdGV4dHVyZSBzaG91bGQgbm90IGhhdmUgYmVlbiB1c2VkLgotICAgICAgICAg
ICAgRVhQRUNUX0ZBTFNFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQtPnRleHR1cmUoMCkp
KTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0dXJlKGNvbnRleHQt
PnRleHR1cmUoMCkpKTsKICAgICAgICAgICAgIC8vIFNlY29uZCB0ZXh0dXJlIHNob3VsZCBoYXZl
IGJlZW4gdXNlZC4KLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGNvbnRleHQtPnVzZWRUZXh0dXJl
KGNvbnRleHQtPnRleHR1cmUoMSkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShjb250ZXh0
LT51c2VkVGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDEpKSk7CiAgICAgICAgICAgICAvLyBOZXcg
dGV4dHVyZXMgc2hvdWxkIGhhdmUgYmVlbiB1c2VkLgogICAgICAgICAgICAgRVhQRUNUX1RSVUUo
Y29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgyKSkpOwogCkBAIC0xNzkyLDcg
KzE3NzgsNyBAQCBjbGFzcyBUZXN0TGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVt
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXN0TGF5ZXJDaHJvbWl1bT4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFRlc3RMYXllckNocm9taXVtKCkpOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyKiBvY2NsdXNpb24pCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVy
JiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiAgICAgewogICAgICAgICAv
LyBHYWluIGFjY2VzcyB0byBpbnRlcm5hbHMgb2YgdGhlIENDT2NjbHVzaW9uVHJhY2tlci4KICAg
ICAgICAgY29uc3QgVGVzdENDT2NjbHVzaW9uVHJhY2tlciogdGVzdE9jY2x1c2lvbiA9IHN0YXRp
Y19jYXN0PGNvbnN0IFRlc3RDQ09jY2x1c2lvblRyYWNrZXIqPihvY2NsdXNpb24pOwpAQCAtMTg1
Myw3ICsxODM5LDggQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9v
dExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRT
aXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0
ZUxheWVycygpOworICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgpLCBncmFuZENoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwpAQCAtMTg3
MCw3ICsxODU3LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9v
dExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRT
aXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0
ZUxheWVycygpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVy
KTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKQEAgLTE4ODgsNyArMTg3NSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAg
bV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0
LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0
Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIGdyYW5kQ2hp
bGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0xOTA4LDcgKzE4OTUsNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExh
eWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVy
LT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Cisg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgpLCBncmFuZENoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkp
OwpAQCAtMTkzMCw3ICsxOTE3LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwog
CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRT
Y3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE5NTIsNyArMTkzOSw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsK
LSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCks
IGNoaWxkMi0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE5NzUsNyArMTk2
Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihy
b290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290
TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMo
KTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KCksIGdyYW5kQ2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3Vu
ZHMoKSk7CkBAIC0xOTk4LDcgKzE5ODUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKHVwZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRl
KCk7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBjaGlsZDItPm9jY2x1ZGVk
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0yMDU5LDcgKzIwNDYsOCBAQCBwdWJsaWM6CiAK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7
Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgICAgIENDVGV4
dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnModXBkYXRlcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsK
IAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIGNoaWxkMi0+b2NjbHVkZWRTY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTIwODYsNyArMjA3NCw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIGNo
aWxkMi0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTIxNDYsNyArMjEzNCw4
IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihsYXll
cnNbMF0uZ2V0KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShs
YXllcnNbMF0tPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnMoKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtU3Vy
ZmFjZXMtMTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcAppbmRleCBmN2Q3ODk0YjcwNDZmN2Y3ZWY4ZTRh
ODJkMWI2YmZmMGQ5YTdkMzYzLi4zMzQ1MzdkNDRiMTliZDNlNDQ3MzcyMGFjZDM0MWUzMTQzZmFl
MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXll
clRlc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVyVGVzdENvbW1vbi5jcHAKQEAgLTExNiw5ICsxMTYsOSBAQCB2b2lkIEZha2VUaWxlZExh
eWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5UmVjdChyZWN0KTsKIH0KIAot
dm9pZCBGYWtlVGlsZWRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBD
Q09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKK3ZvaWQgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJh
Y2tlciogb2NjbHVzaW9uKQogewotICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0
KCksIG9jY2x1c2lvbik7CisgICAgdXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVMYXll
clJlY3QoKSwgb2NjbHVzaW9uKTsKIH0KIAogRmFrZVRpbGVkTGF5ZXJXaXRoU2NhbGVkQm91bmRz
OjpGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHMoVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVN
YW5hZ2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVk
TGF5ZXJUZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRM
YXllclRlc3RDb21tb24uaAppbmRleCA4MWJkMTE0MTAwODdkYzRhNjJkYjJkM2I0ZTllZmZkYWZh
NDZjY2IwLi4yOTc0ZGFmYWIxZGZlYjg2YzhiOTJhYmIxYmViODJlNDU1ODA5OTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21t
b24uaApAQCAtMTEwLDggKzExMCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViQ29yZTo6SW50
U2l6ZSB0aWxlU2l6ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OkludFNpemUoMTAwLCAxMDApOyB9CiAK
ICAgICB1c2luZyBXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0Owot
ICAgIHVzaW5nIFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlOwot
ICAgIHVzaW5nIFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRs
ZTsKKyAgICB1c2luZyBXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUmVj
dDsKKyAgICB1c2luZyBXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OmlkbGVVcGRhdGVMYXll
clJlY3Q7CiAgICAgdXNpbmcgV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpuZWVkc0lkbGVQ
YWludDsKICAgICB1c2luZyBXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnNraXBzRHJhdzsK
ICAgICB1c2luZyBXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06Om51bVBhaW50ZWRUaWxlczsK
QEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBsYXN0TmVlZHNEaXNwbGF5UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE5lZWRzRGlzcGxh
eVJlY3Q7IH0KIAogICAgIC8vIFVwZGF0ZXMgdGhlIHZpc2libGVMYXllclJlY3QoKS4KLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgV2ViQ29yZTo6Q0NPY2NsdXNp
b25UcmFja2VyKik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShXZWJDb3JlOjpDQ1RleHR1cmVV
cGRhdGVyJiwgY29uc3QgV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyKik7CiAKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OlRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZU1hbmFnZXI7IH0KICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX2Zha2VUZXh0dXJlVXBkYXRlci5nZXQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExh
eWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFz
MkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggMTZkMTc0ZjVmZTAyNTc0ZjJkZjM5ZjU3MTJl
YmQ2ZjA1NDQ5ZDM4NS4uYTBmODAwNmU0NzJlM2ZjZThjOTU4ZmRmZGZjY2ZlODc3ZDYwNzM3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hy
b21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgICAgIE93blB0cjxGYWtlQ0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0KEZha2VDQ0xh
eWVyVHJlZUhvc3Q6OmNyZWF0ZSgpKTsKICAgICAgICAgLy8gRm9yY2UgYW4gdXBkYXRlLCBzbyB0
aGF0IHdlIGdldCBhIHZhbGlkIFRleHR1cmVNYW5hZ2VyLgotICAgICAgICBsYXllclRyZWVIb3N0
LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVw
ZGF0ZXIpOwogCiAgICAgICAgIGNvbnN0IFdlYkdMSWQgYmFja1RleHR1cmVJZCA9IDE7CiAgICAg
ICAgIGNvbnN0IFdlYkdMSWQgZnJvbnRUZXh0dXJlSWQgPSAyOwpAQCAtMTQ1LDcgKzE0NSw3IEBA
IHByb3RlY3RlZDoKIAogICAgICAgICBjYW52YXMtPnNldE5lZWRzRGlzcGxheSgpOwogICAgICAg
ICBFWFBFQ1RfVFJVRShjYW52YXMtPm5lZWRzRGlzcGxheSgpKTsKLSAgICAgICAgY2FudmFzLT5w
YWludENvbnRlbnRzSWZEaXJ0eSgwKTsKKyAgICAgICAgY2FudmFzLT51cGRhdGUodXBkYXRlciwg
MCk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShjYW52YXMtPm5lZWRzRGlzcGxheSgpKTsKICAgICAg
ICAgewogICAgICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJl
YWQ7CkBAIC0xNTMsNyArMTUzLDYgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgT3duUHRyPEND
TGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAg
ICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0PENDVGV4dHVyZUxheWVySW1wbCo+KGxh
eWVySW1wbC5nZXQoKSktPnRleHR1cmVJZCgpKTsKIAotICAgICAgICAgICAgY2FudmFzLT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKGltcGxDb250ZXh0LmdldCgpLCB1cGRhdGVyKTsKICAgICAg
ICAgICAgIHVwZGF0ZXIudXBkYXRlKGltcGxDb250ZXh0LmdldCgpLCAmYWxsb2NhdG9yTW9jaywg
JmNvcGllck1vY2ssIDEpOwogICAgICAgICAgICAgY2FudmFzLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVySW1wbC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGMzNmU1MWEzMGRhYTk4Mjg5ZjIx
ZGQwYjlhNzZjZDdjYTMxMjNiM2QuLmUwZWNhNWEyNDQxOTRiMDE1OTE5ZWMyNWVlZTE4YjhkNTMy
MDdiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNzcsOCArNzcsNyBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAw
eDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAg
IGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGgg
dGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTkwLDggKzg5LDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICAvLyBJbnZhbGlkYXRlcyBib3RoIHRp
bGVzLi4uCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
KTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25lIG9mIHRoZW0uCi0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7Ci0gICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVw
ZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CiAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGhhdmUgdGhlIGZpcnN0IHRpbGUgc2luY2UgdGhlIG90aGVyIHRpbGUgd2FzIGlu
dmFsaWRhdGVkIGJ1dCBub3QgcGFpbnRlZC4KQEAgLTExNCw4ICsxMTIsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPnNl
dERyYXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJv
dW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwog
ICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2NsdWRl
ZCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Cisg
ICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSwgJm9jY2x1ZGVkKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0
KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxz
VXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMzIsOCArMTI5LDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoT2NjbHVkZWREaXJ0eVRpbGVzKQogICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDUwLCA1MCkpOwogICAgIC8vIC4uLi5idXQgdGhlIGFy
ZWEgaXMgb2NjbHVkZWQuCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
NTAsIDUwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSwgJm9jY2x1ZGVkKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygw
LCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01l
dHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTE1OSw4ICsxNTUsNyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGlsZXMpCiAgICAgLy8g
VGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBh
aW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKLSAg
ICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXll
ci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsK
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8g
V2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMTc5LDggKzE3
NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKICAg
ICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkpOwogCiAgICAgLy8gVGhp
cyBzaG91bGQgcmVjcmVhdGUgYW5kIHVwZGF0ZSB0aGUgZGVsZXRlZCB0ZXh0dXJlcy4KLSAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKLSAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+
dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKICAg
ICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgaGF2ZSB0aGUgZmlyc3QgdGlsZSBzaW5jZSB0aGUgb3RoZXIgdGlsZSB3YXMg
aW52YWxpZGF0ZWQgYnV0IG5vdCBwYWludGVkLgpAQCAtMjA2LDEyICsyMDAsMTEgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgbGF5ZXItPnNl
dEJvdW5kcyhjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2
aXNpYmxlUmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCAwKTsKKyAgICBsYXllci0+dXBk
YXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIFdlIHNob3Vs
ZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgogICAgIEVY
UEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZl
IG9uZSB0aWxlIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0yMjEsMTAgKzIxNCw5IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogCiAgICAgLy8gRm9yIHRo
ZSBuZXh0IGZvdXIgdXBkYXRlcywgd2Ugc2hvdWxkIGRldGVjdCB3ZSBzdGlsbCBuZWVkIGlkbGUg
cGFpbnRpbmcuCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAgICAgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgMCk7CisgICAgICAgIGxheWVyLT51cGRh
dGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICBFWFBFQ1RfVFJV
RShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKLSAgICAgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIDApOwotICAgICAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICAgICAgbGF5ZXItPmlkbGVVcGRh
dGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+
dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKICAgICB9CkBAIC0yNzIsMjggKzI2NCwyNCBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQog
ICAgIGxheWVyMS0+c2V0Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOwogICAgIGxheWVyMS0+c2V0
VmlzaWJsZUxheWVyUmVjdChsYXllclJlY3QpOwogICAgIGxheWVyMS0+aW52YWxpZGF0ZVJlY3Qo
bGF5ZXJSZWN0KTsKLSAgICBsYXllcjEtPnByZXBhcmVUb1VwZGF0ZShsYXllclJlY3QsIDApOwor
ICAgIGxheWVyMS0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGxheWVyUmVjdCwgMCk7CiAKICAg
ICAvLyBQYWludCBhIHNpbmdsZSB0aWxlIGluIGxheWVyMiBzbyB0aGF0IGl0IHdpbGwgaWRsZSBw
YWludC4KLSAgICBsYXllcjItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSwgMCk7CisgICAgbGF5ZXIyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCksIDApOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBm
b3IgYm90aCByZW1haW5pbmcgdGlsZXMgaW4gbGF5ZXIyLgogICAgIEVYUEVDVF9UUlVFKGxheWVy
Mi0+bmVlZHNJZGxlUGFpbnQobGF5ZXIyUmVjdCkpOwogCiAgICAgLy8gQ29tbWl0IHRoZSBmcmFt
ZSBvdmVyIHRvIGltcGwuCi0gICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAs
IHVwZGF0ZXIpOwotICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRh
dGVyKTsKICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAmY29waWVyLCA1MDAwKTsK
ICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsMS5nZXQoKSk7CiAgICAgbGF5
ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDIuZ2V0KCkpOwogCiAgICAgLy8gTm93IGlk
bGUgcGFpbnQgbGF5ZXIyLiBXZSBhcmUgZ29pbmcgdG8gcnVuIG91dCBvZiBtZW1vcnkgdGhvdWdo
IQotICAgIGxheWVyMi0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAw
KTsKLSAgICBsYXllcjItPnByZXBhcmVUb1VwZGF0ZUlkbGUobGF5ZXIyUmVjdCwgMCk7CisgICAg
bGF5ZXIyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCks
IDApOworICAgIGxheWVyMi0+aWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBsYXllcjJSZWN0
LCAwKTsKIAogICAgIC8vIE9oIHdlbGwsIGNvbW1pdCB0aGUgZnJhbWUgYW5kIHB1c2guCi0gICAg
bGF5ZXIxLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwotICAgIGxheWVy
Mi0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICB1cGRhdGVyLnVw
ZGF0ZSgwLCAmYWxsb2NhdG9yLCAmY29waWVyLCA1MDAwKTsKICAgICBsYXllcjEtPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsMS5nZXQoKSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbDIuZ2V0KCkpOwpAQCAtMzEwLDExICsyOTgsOSBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIC8vIE5vdyBp
ZiBsYXllcjIgYmVjb21lcyBmdWxseSB2aXNpYmxlLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBwYWlu
dCBpdCBhbmQgcHVzaCB2YWxpZCB0ZXh0dXJlcy4KICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90
ZWN0QWxsVGV4dHVyZXMoKTsKIAotICAgIGxheWVyMi0+cHJlcGFyZVRvVXBkYXRlKGxheWVyMlJl
Y3QsIDApOwotICAgIGxheWVyMS0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoKSwgMCk7CisgICAg
bGF5ZXIyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgbGF5ZXIyUmVjdCwgMCk7CisgICAgbGF5
ZXIxLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgpLCAwKTsKIAotICAgIGxheWVy
MS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKLSAgICBsYXllcjItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgdXBkYXRlci51cGRhdGUo
MCwgJmFsbG9jYXRvciwgJmNvcGllciwgNTAwMCk7CiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbDEuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwyLmdldCgpKTsKQEAgLTM0NCw5ICszMzAsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHB1c2hJZGxlUGFpbnRlZE9jY2x1ZGVkVGlsZXMpCiAgICAgbGF5ZXItPnNldERyYXdU
cmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygp
LndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogICAgIGxh
eWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwotICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7Ci0g
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZv
Y2NsdWRlZCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+aWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKICAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUg
dGhlIHByZXBhaW50ZWQgdGlsZSBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMzY4LDggKzM1Myw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTWFya2VkRGlydHlEdXJpbmdQ
YWludCkKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwg
NTAsIDEwMCwgNTApLCBsYXllci5nZXQoKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVy
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVz
VG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMg
b24gdGhlIGltcGwgc2lkZS4KQEAgLTM5MywxNCArMzc3LDExIEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5
ZXIpCiAgICAgbGF5ZXIyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVy
Mi0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogCi0gICAgbGF5ZXIx
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVy
MS0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsK
IAogICAgIC8vIEludmFsaWRhdGUgYSB0aWxlIG9uIGxheWVyMQogICAgIGxheWVyMi0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAx
MDAsIDUwKSwgbGF5ZXIxLmdldCgpKTsKLSAgICBsYXllcjItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7Ci0KLSAgICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyMi0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKIAogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNU
byhsYXllcjFJbXBsLmdldCgpKTsKICAgICBsYXllcjItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIy
SW1wbC5nZXQoKSk7CkBAIC00MzAsMTIgKzQxMSw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25QcmV2aW91c0xheWVy
CiAKICAgICAvLyBJbnZhbGlkYXRlIGEgdGlsZSBvbiBsYXllcjIKICAgICBsYXllcjEtPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwg
MTAwLCA1MCksIGxheWVyMi5nZXQoKSk7Ci0gICAgbGF5ZXIxLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotCi0gICAgbGF5ZXIyLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyMS0+dXBkYXRlTGF5ZXJSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKIAotICAgIGxheWVyMS0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKLSAgICBsYXllcjItPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXIyLT51cGRhdGVMYXllclJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogCiAgICAgbGF5ZXIxLT5w
dXNoUHJvcGVydGllc1RvKGxheWVyMUltcGwuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllcjJJbXBsLmdldCgpKTsKQEAgLTQ2OCwyNSArNDQ2LDIzIEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgbGF5ZXItPnNl
dEJvdW5kcyhjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2
aXNpYmxlUmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCAwKTsKKyAgICBsYXllci0+dXBk
YXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIFdlIHNob3Vs
ZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBzdXJvdW5kaW5nIHZpc2libGUgdGls
ZS4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsK
IAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAg
IGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBz
aG91bGQgaGF2ZSBvbmUgdGlsZSBvbiB0aGUgaW1wbCBzaWRlLgogICAgIEVYUEVDVF9UUlVFKGxh
eWVySW1wbC0+aGFzVGlsZUF0KDEsIDEpKTsKIAogICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3Rl
Y3RBbGxUZXh0dXJlcygpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3Qs
IDApOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0LCAwKTsKKyAg
ICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKKyAgICBs
YXllci0+aWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAKICAg
ICAvLyBXZSBzaG91bGRuJ3Qgc2lnbmFsIHdlIG5lZWQgYW5vdGhlciBpZGxlIHBhaW50IGFmdGVy
IHdlIHJ1biBvdXQgb2YgbWVtb3J5LgogICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxl
UGFpbnQodmlzaWJsZVJlY3QpKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5n
ZXQoKSk7CiB9CiAKQEAgLTUwNSw3ICs0ODEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIGlkbGVQYWludFplcm9TaXplZExheWVyKQogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVu
dFJlY3Quc2l6ZSgpKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChjb250ZW50UmVj
dCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKLSAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJS
ZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwKTsKIAogICAgIC8vIEVtcHR5IGxheWVycyBkb24n
dCBoYXZlIHRpbGVzLgogICAgIEVYUEVDVF9FUSgwdSwgbGF5ZXItPm51bVBhaW50ZWRUaWxlcygp
KTsKQEAgLTUxMywxOSArNDg5LDE3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRs
ZVBhaW50WmVyb1NpemVkTGF5ZXIpCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IG5lZWQgcHJl
cGFpbnQuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludChjb250ZW50UmVj
dCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7
CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8v
IEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgogICAgIEVYUEVDVF9GQUxTRShsYXllcklt
cGwtPmhhc1RpbGVBdCgwLCAwKSk7CiAKICAgICAvLyBOb24tdmlzaWJsZSBsYXllcnMgZG9uJ3Qg
aWRsZSBwYWludC4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZShjb250ZW50UmVjdCwg
MCk7CisgICAgbGF5ZXItPmlkbGVVcGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVudFJlY3Qs
IDApOwogCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCiAgICAgRVhQRUNU
X0VRKDB1LCBsYXllci0+bnVtUGFpbnRlZFRpbGVzKCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVz
VG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRp
bGVzLgpAQCAtNTUwLDcgKzUyNCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRs
ZVBhaW50WmVyb1NpemVkQW5pbWF0aW5nTGF5ZXIpCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250
ZW50UmVjdC5zaXplKCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnRlbnRS
ZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoY29udGVudFJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVMYXll
clJlY3QodXBkYXRlciwgY29udGVudFJlY3QsIDApOwogCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRv
bid0IGhhdmUgdGlsZXMuCiAgICAgRVhQRUNUX0VRKDB1LCBsYXllci0+bnVtUGFpbnRlZFRpbGVz
KCkpOwpAQCAtNTU4LDE5ICs1MzIsMTcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBp
ZGxlUGFpbnRaZXJvU2l6ZWRBbmltYXRpbmdMYXllcikKICAgICAvLyBFbXB0eSBsYXllcnMgZG9u
J3QgbmVlZCBwcmVwYWludC4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50
KGNvbnRlbnRSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygw
LCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwogCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCiAgICAgRVhQRUNUX0ZB
TFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKIAogICAgIC8vIE5vbi12aXNpYmxlIGxh
eWVycyBkb24ndCBpZGxlIHBhaW50LgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKGNv
bnRlbnRSZWN0LCAwKTsKKyAgICBsYXllci0+aWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBj
b250ZW50UmVjdCwgMCk7CiAKICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxlcy4K
ICAgICBFWFBFQ1RfRVEoMHUsIGxheWVyLT5udW1QYWludGVkVGlsZXMoKSk7CiAKLSAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRv
bid0IGhhdmUgdGlsZXMuCkBAIC01OTUsMjEgKzU2NywxOSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXllcnMpCiAgICAgbGF5ZXItPnNldEJvdW5k
cyhjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxl
UmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0LCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5
ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIE5vbi12aXNpYmxlIGxh
eWVycyBkb24ndCBuZWVkIGlkbGUgcGFpbnQuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVk
c0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBub3QgaGF2ZSBhbnkgdGlsZXMgcHVzaGVk
IHNpbmNlIHRoZSBsYXllciBpcyBub3QgdmlzaWJsZS4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJ
bXBsLT5oYXNUaWxlQXQoMCwgMCkpOwogCiAgICAgLy8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0
IGlkbGUgcGFpbnQuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3Qs
IDApOworICAgIGxheWVyLT5pZGxlVXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0
LCAwKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAv
LyBXZSBzaG91bGQgbm90IGhhdmUgYW55IHRpbGVzIHB1c2hlZCBzaW5jZSB0aGUgbGF5ZXIgaXMg
bm90IHZpc2libGUuCkBAIC02MTksOSArNTg5LDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlTGF5ZXJzKQogc3RhdGljIHZvaWQgaWRsZVBhaW50UmVw
ZWF0KGludCByZXBlYXRUaW1lcywgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIEZha2VD
Q1RpbGVkTGF5ZXJJbXBsKiBsYXllckltcGwsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNv
bnN0IEludFJlY3QmIHZpc2libGVSZWN0KQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVw
ZWF0VGltZXM7ICsraSkgewotICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVS
ZWN0LCAwKTsKLSAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3Qs
IDApOwotICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVy
KTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCB2aXNpYmxlUmVjdCwg
MCk7CisgICAgICAgIGxheWVyLT5pZGxlVXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVS
ZWN0LCAwKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsKTsKICAg
ICB9CiB9CkBAIC02NjksOCArNjM4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBp
ZGxlUGFpbnROb25WaXNpYmxlQW5pbWF0aW5nTGF5ZXJzKQogICAgICAgICAgICAgYm9vbCBzaG91
bGRQcmVwYWludCA9ICFsYXllci0+aWRsZVBhaW50UmVjdCh2aXNpYmxlUmVjdCkuaXNFbXB0eSgp
OwogCiAgICAgICAgICAgICAvLyBUaGlzIHBhaW50cyB0aGUgbGF5ZXIgYnV0IHRoZXJlJ3Mgbm90
aGluZyB2aXNpYmxlIHNvIGl0J3MgYSBuby1vcC4KLSAgICAgICAgICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUodmlzaWJsZVJlY3QsIDApOwotICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgICAgICAgICBsYXllci0+dXBkYXRlTGF5
ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKICAgICAgICAgICAgIGxheWVyLT5wdXNo
UHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAgICAgICAgIC8vIFdlIHNob3Vs
ZCBub3QgaGF2ZSBhbnkgdGlsZXMgcHVzaGVkIHlldCBzaW5jZSB0aGUgbGF5ZXIgaXMgbm90IHZp
c2libGUgYW5kIHdlJ3ZlIG5vdCBwcmVwYWludGVkLgpAQCAtNjk5LDEyICs2NjcsMTUgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgT3du
UHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsKDApKSk7CiAKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAg
RmFrZVRleHR1cmVBbGxvY2F0b3IgZmFrZUFsbG9jYXRvcjsKKyAgICBGYWtlVGV4dHVyZUNvcGll
ciBmYWtlQ29waWVyOworICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCA9IGNy
ZWF0ZUNvbXBvc2l0b3JNb2NrR3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMoKSk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMg
aW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91
bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCksIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIHVwZGF0ZXIudXBkYXRlKGNvbnRleHQuZ2V0KCks
ICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgMTAwMCk7CiAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGgg
dGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTcxNCwyMCArNjg1LDIzIEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIHRleHR1cmVNYW5h
Z2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7Ci0gICAgLy8gSW52b2tlIHByZXBhcmVU
b1VwZGF0ZSBhZ2Fpbi4gQXMgdGhlIGxheWVyIGlzIHZhbGlkIHByZXBhcmVUb1VwZGF0ZSBzaG91
bGRuJ3QgYmUgaW52b2tlZCBvbgorICAgIC8vIEludm9rZSB1cGRhdGVMYXllclJlY3QgYWdhaW4u
IEFzIHRoZSBsYXllciBpcyB2YWxpZCB1cGRhdGVMYXllclJlY3Qgc2hvdWxkbid0IGJlIGludm9r
ZWQgb24KICAgICAvLyB0aGUgTGF5ZXJUZXh0dXJlVXBkYXRlci4KLSAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRl
TGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKKyAgICB1cGRh
dGVyLnVwZGF0ZShjb250ZXh0LmdldCgpLCAmZmFrZUFsbG9jYXRvciwgJmZha2VDb3BpZXIsIDEw
MDApOwogICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cHJlcGFyZUNvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwg
MCwgNTAsIDUwKSk7Ci0gICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0ZSB0cmlnZ2VycyBpbnZhbGlk
YXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVwYXJlVG9VcGRhdGUuCisgICAgLy8gc2V0
UmVjdFRvSW52YWxpZGF0ZSB0cmlnZ2VycyBpbnZhbGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQg
ZnJvbSB1cGRhdGVMYXllclJlY3QuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdl
dCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJl
Q291bnQoKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCAwKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwg
MCwgMTAwLCAyMDApLCAwKTsKKyAgICB1cGRhdGVyLnVwZGF0ZShjb250ZXh0LmdldCgpLCAmZmFr
ZUFsbG9jYXRvciwgJmZha2VDb3BpZXIsIDEwMDApOwogICAgIEVYUEVDVF9FUSgxLCBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwogICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwotICAgIC8vIFRo
ZSBsYXllciBzaG91bGQgc3RpbGwgYmUgaW52YWxpZCBhcyBwcmVwYXJlVG9VcGRhdGUgaW52b2tl
ZCBpbnZhbGlkYXRlLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCksIDApOworICAgIC8vIFRoZSBsYXllciBzaG91bGQgc3RpbGwgYmUgaW52YWxpZCBh
cyB1cGRhdGVMYXllclJlY3QgaW52b2tlZCBpbnZhbGlkYXRlLgorICAgIGxheWVyLT51cGRhdGVM
YXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIHVwZGF0
ZXIudXBkYXRlKGNvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgMTAw
MCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5w
cmVwYXJlQ291bnQoKSk7CiB9CiAKQEAgLTc1MSwyMSArNzI1LDE4IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVk
KQogICAgIC8vIE9uIGZpcnN0IHVwZGF0ZSwgdGhlIHVwZGF0ZVJlY3QgaW5jbHVkZXMgYWxsIHRp
bGVzLCBldmVuIGJleW9uZCB0aGUgYm91bmRhcmllcyBvZiB0aGUgbGF5ZXIuCiAgICAgLy8gSG93
ZXZlciwgaXQgc2hvdWxkIHN0aWxsIGJlIGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFj
ZS4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0
KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZs
b2F0UmVjdCgwLCAwLCAzMDAsIDMwMCAqIDAuOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogCiAg
ICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFyZSB1cGRhdGVkIG9uY2UsIGFub3RoZXIgaW52YWxpZGF0
ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0aGUgYm91bmRzIG9mIHRoZSBsYXllci4KICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShjb250ZW50Qm91bmRzLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNv
bnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdChsYXll
ckJvdW5kcyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gUGFydGlhbCByZS1wYWlu
dCBzaG91bGQgYWxzbyBiZSByZXByZXNlbnRlZCBieSB0aGUgdXBkYXRlUmVjdCBpbiBsYXllciBz
cGFjZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAgICAgSW50UmVjdCBwYXJ0aWFsRGFtYWdlKDMwLCAx
MDAsIDEwLCAxMCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KHBhcnRpYWxEYW1hZ2UpOwot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgMCk7Ci0gICAgbGF5ZXIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0
ZUxheWVyUmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAwKTsKICAgICBFWFBFQ1RfRkxPQVRf
UkVDVF9FUShGbG9hdFJlY3QoNDUsIDgwLCAxNSwgOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwog
fQogCkBAIC03ODYsOCArNzU3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJp
ZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAgICAgRVhQRUNUX0ZMT0FU
X1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgbGF5ZXItPmxhc3ROZWVkc0Rpc3Bs
YXlSZWN0KCkpOwogCiAgICAgLy8gUHVzaCB0aGUgdGlsZXMgdG8gdGhlIGltcGwgc2lkZSBhbmQg
Y2hlY2sgdGhhdCB0aGVyZSBpcyBleGFjdGx5IG9uZS4KLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICBsYXllci0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFz
VGlsZUF0KDAsIDApKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwg
MSkpOwpAQCAtODAwLDggKzc3MCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVy
aWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIEVYUEVDVF9GTE9B
VF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCksIGxheWVyLT5sYXN0TmVlZHNEaXNw
bGF5UmVjdCgpKTsKIAogICAgIC8vIFRoZSBpbXBsIHNpZGUgc2hvdWxkIGdldCAyeDIgdGlsZXMg
bm93LgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAyMDAsIDIwMCks
IDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwor
ICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAyMDAsIDIw
MCksIDApOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAg
ICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwogICAgIEVYUEVDVF9U
UlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsKQEAgLTgxMSw4ICs3ODAsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1Nj
YWxlQ2hhbmdlcykKICAgICAvLyBJbnZhbGlkYXRlIHRoZSBlbnRpcmUgbGF5ZXIgYWdhaW4sIGJ1
dCBkbyBub3QgcGFpbnQuIEFsbCB0aWxlcyBzaG91bGQgYmUgZ29uZSBub3cgZnJvbSB0aGUKICAg
ICAvLyBpbXBsIHNpZGUuCiAgICAgbGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwotICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgxLCAwLCAwLCAxKSwgMCk7Ci0gICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVwZGF0ZUxh
eWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDEsIDAsIDAsIDEpLCAwKTsKICAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllcklt
cGwtPmhhc1RpbGVBdCgwLCAwKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGls
ZUF0KDAsIDEpKTsKQEAgLTg1MSw4ICs4MTksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHNraXBzRHJhd0dldHNSZXNldCkKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXll
cihyb290TGF5ZXIpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNp
emUoMzAwLCAzMDApKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRl
cyhtZW1vcnlMaW1pdCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKLSAg
ICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRyZWVI
b3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKHVwZGF0ZXIpOwogCiAgICAgLy8gV2UnbGwgc2tpcCB0aGUgcm9vdCBsYXllci4KICAgICBF
WFBFQ1RfVFJVRShyb290TGF5ZXItPnNraXBzRHJhdygpKTsKQEAgLTg2NCw3ICs4MzEsNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHNraXBzRHJhd0dldHNSZXNldCkKICAgICAvLyBS
ZW1vdmUgdGhlIGNoaWxkIGxheWVyLgogICAgIHJvb3RMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4o
KTsKIAotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgY2NMYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3RMYXll
ci0+c2tpcHNEcmF3KCkpOwogCiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoMCk7
CkBAIC04NzYsMTAgKzg0MywxMSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHJlc2l6
ZVRvU21hbGxlcikKIHsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2Vy
ID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg2MCoxMDI0KjEwMjQsIDYwKjEwMjQqMTAyNCwgMTAy
NCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYo
bmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBD
Q1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUo
NzAwLCA3MDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA3MDAs
IDcwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA3MDAsIDcw
MCksIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAw
LCA3MDAsIDcwMCksIDApOwogCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDIwMCwgMjAw
KSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMjAwLCAyMDApKTsK
QEAgLTg4OSwxMyArODU3LDE0IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaHVnZUxh
eWVyVXBkYXRlQ3Jhc2gpCiB7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFu
YWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNjAqMTAyNCoxMDI0LCA2MCoxMDI0KjEwMjQs
IDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0
UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7Cisg
ICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwogCiAgICAgaW50IHNpemUgPSAxIDw8IDMwOwog
ICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZShzaXplLCBzaXplKSk7CiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgc2l6ZSwgc2l6ZSkpOwogCiAgICAgLy8gRW5zdXJl
IG5vIGNyYXNoIGZvciBib3VuZHMgd2hlcmUgc2l6ZSAqIHNpemUgd291bGQgb3ZlcmZsb3cgYW4g
aW50LgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA3MDAsIDcwMCks
IDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA3
MDAsIDcwMCksIDApOwogfQogCiBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxV
cGRhdGVzKQpAQCAtOTI1LDggKzg5NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cGFydGlhbFVwZGF0ZXMpCiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50
U2l6ZSgzMDAsIDIwMCkpOwogCiAgICAgLy8gRnVsbCB1cGRhdGUgb2YgYWxsIDYgdGlsZXMuCi0g
ICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICBjY0xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVw
ZGF0ZXIpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAg
IHVwZGF0ZXIudXBkYXRlKDAsICZhbGxvY2F0b3IsICZjb3BpZXIsIDQpOwogICAgIEVYUEVDVF9F
USg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAg
ICAgRVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKQEAgLTkzOSw4ICs5MDcs
NyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogCiAgICAg
Ly8gRnVsbCB1cGRhdGUgb2YgMyB0aWxlcyBhbmQgcGFydGlhbCB1cGRhdGUgb2YgMyB0aWxlcy4K
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAzMDAsIDE1MCkpOwotICAg
IGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRh
dGVyKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICB1
cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9yLCAmY29waWVyLCA0KTsKICAgICBFWFBFQ1RfRVEo
MywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAg
IEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CkBAIC05NTMsOCArOTIwLDcg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKIAogICAgIC8v
IFBhcnRpYWwgdXBkYXRlIG9mIDYgdGlsZXMuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoNTAsIDUwLCAyMDAsIDEwMCkpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNj
TGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAgICBjY0xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9y
LCAmY29waWVyLCA0KTsKICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9y
ZVVwZGF0ZXMoKSk7CkBAIC05NzQsMTIgKzk0MCwxMyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhvdXRPY2NsdXNpb24pCiB7CiAgICAgT3duUHRyPFRleHR1
cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0
KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJl
TWFuYWdlci5nZXQoKSkpOworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKIAogICAgIC8v
IFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBw
YWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkp
OwogCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsK
LSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwKTsK
KyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCAwKTsKICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiB9CiAKQEAgLTk4OCw2ICs5NTUsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiAgICAgT3du
UHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1
bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2Nj
bHVkZWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwogCiAgICAgLy8gVGhlIHRpbGUg
c2l6ZSBpcyAxMDB4MTAwLgogCkBAIC05OTcsNyArOTY1LDcgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uKQogICAgIG9jY2x1ZGVkLnNldE9j
Y2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwor
ICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2Nj
bHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBA
IC0xMDA4LDcgKzk3Niw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWlu
dGVkV2l0aE9jY2x1c2lvbikKIAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDI1
MCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0
ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgz
Ni0yLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgp
KTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1Vw
bG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTAxOSw3ICs5ODcsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiAKICAgICBvY2NsdWRl
ZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyNTAsIDI1MCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5
ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9j
Y2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3Zl
cmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMDMyLDYg
KzEwMDAsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhP
Y2NsdXNpb25BbmRWaXNpYmxpdHlDb25zdHJhaW50cykKICAgICBPd25QdHI8VGV4dHVyZU1hbmFn
ZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwg
MioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBs
YXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2Vy
LmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBDQ1Rl
eHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAu
CiAKQEAgLTEwNDIsNyArMTAxMSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGls
ZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAgIG9jY2x1
ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCkpOwogICAgIGxheWVy
LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNjApKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDM2MCksICZvY2NsdWRlZCk7CisgICAg
bGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzYwKSwg
Jm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMjQtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRl
ZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEw
NTUsNyArMTAyNCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVk
V2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAgIG9jY2x1ZGVkLnNldE9j
Y2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCkpOwogICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNTApKTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDM1MCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVw
ZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzUwKSwgJm9jY2x1ZGVk
KTsKICAgICBFWFBFQ1RfRVEoMjQtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJh
d01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwNjgsNyArMTAz
Nyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1
c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJ
bnRSZWN0KDIwMCwgMjAwLCAzMDAsIDE1MCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCAzNDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCA2MDAsIDM0MCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVy
UmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzQwKSwgJm9jY2x1ZGVkKTsKICAgICBF
WFBFQ1RfRVEoMjQtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVS
ZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3Mo
KS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwODIsNiArMTA1MSw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRh
dGlvbikKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJl
ZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGls
ZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKQEAgLTEwOTEsNyArMTA2MSw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRh
dGlvbikKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAx
MDApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDAp
KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAm
b2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQ
RUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUo
KSwgMCwgMSk7CkBAIC0xMTAxLDcgKzEwNzEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlkYXRpb24pCiAgICAgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOwogCiAgICAgLy8g
UmVwYWludCB3aXRob3V0IG1hcmtpbmcgaXQgZGlydHkuIFRoZSBjdWxsZWQgdGlsZXMgcmVtYWlu
ZWQgZGlydHkuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgwLCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAg
IEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3Bh
cXVlKCksIDAsIDEpOwpAQCAtMTExNCw2ICsxMDg0LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3JtcykKICAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRM
YXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVt
KHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2Ns
dWRlZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBz
aXplIGlzIDEwMHgxMDAuCiAKQEAgLTExMjgsNyArMTA5OSw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFRyYW5zZm9ybXMpCiAgICAg
b2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTApKTsKICAgICBs
YXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3Vu
ZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwg
Jm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3Qo
MCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVY
UEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVl
KCksIDAsIDEpOwpAQCAtMTE0MSw2ICsxMTEyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICBPd25QdHI8VGV4
dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEw
MjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNo
cm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1
cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsK
KyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlz
IDEwMHgxMDAuCiAKQEAgLTExNTQsNyArMTEyNiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgb2NjbHVkZWQu
c2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPnNl
dFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRl
ZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYw
MCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICAvLyBUaGUgY29udGVudCBpcyBoYWxmIHRoZSBzaXpl
IG9mIHRoZSBsYXllciAoc28gdGhlIG51bWJlciBvZiB0aWxlcyBpcyBmZXdlcikuCiAgICAgLy8g
SW4gdGhpcyBjYXNlLCB0aGUgY29udGVudCBpcyAzMDB4MzAwLCBhbmQgc2luY2UgdGhlIHRpbGUg
c2l6ZSBpcyAxMDAsIHRoZQogICAgIC8vIG51bWJlciBvZiB0aWxlcyAzeDMuCkBAIC0xMTcyLDcg
KzExNDQsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhP
Y2NsdXNpb25BbmRTY2FsaW5nKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIw
MCwgMjAwLCAzMDAsIDIwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJl
Y3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVM
YXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAg
ICAgRVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBh
cmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJp
Y3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTExOTAsNyArMTE2Miw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFu
ZFNjYWxpbmcpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDE1
MCwgMTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2lu
dCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1Rf
RVEoOS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3Vu
dCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVs
c1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTIwMyw2ICsxMTc1LDcgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKICAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRM
YXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVt
KHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2Ns
dWRlZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBz
aXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0
aWxlcyBpbiB2YXJpb3VzIHdheXMuCiAKQEAgLTEyMjAsNyArMTE5Myw3IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgLy8gSWYg
dGhlIGxheWVyIGRvZXNuJ3QgcGFpbnQgb3BhcXVlIGNvbnRlbnQsIHRoZW4gdGhlIHZpc2libGVD
b250ZW50T3BhcXVlUmVnaW9uIHNob3VsZCBiZSBlbXB0eS4KICAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5
ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJS
ZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgb3BhcXVlQ29udGVu
dHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJV
RShvcGFxdWVDb250ZW50cy5pc0VtcHR5KCkpOwogCkBAIC0xMjMzLDcgKzEyMDYsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAg
IG9wYXF1ZVBhaW50UmVjdCA9IEludFJlY3QoMTAsIDEwLCA5MCwgMTkwKTsKICAgICBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KG9wYXF1ZVBhaW50
UmVjdCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXll
ci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAg
ICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsK
ICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxl
Qm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwogICAgIEVYUEVDVF9FUSgxdSwgb3Bh
cXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwpAQCAtMTI0NSw3ICsxMjE4LDcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKIAogICAg
IC8vIElmIHdlIHBhaW50IGFnYWluIHdpdGhvdXQgaW52YWxpZGF0aW5nLCB0aGUgc2FtZSBzdHVm
ZiBzaG91bGQgYmUgb3BhcXVlLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVj
dCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIG9wYXF1ZUNvbnRlbnRz
ID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX0VRX1JF
Q1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcyksIG9wYXF1ZUNv
bnRlbnRzLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9wYXF1ZUNvbnRlbnRzLnJlY3Rz
KCkuc2l6ZSgpKTsKQEAgLTEyNTksNyArMTIzMiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgLy8gbm90IGJlIGFmZmVjdGVk
LgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJl
Y3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAx
LCAxKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAmb2NjbHVk
ZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywg
Jm9jY2x1ZGVkKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9w
YXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWlu
dFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQ
RUNUX0VRKDF1LCBvcGFxdWVDb250ZW50cy5yZWN0cygpLnNpemUoKSk7CkBAIC0xMjczLDcgKzEy
NDYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVl
UmVnaW9uKQogICAgIC8vIG5vdCBiZSBhZmZlY3RlZC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KEludFJlY3QoMTAsIDEwLCAxLCAxKSk7Ci0gICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVM
YXllclJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICBvcGFxdWVD
b250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVD
VF9FUV9SRUNUKGludGVyc2VjdGlvbihJbnRSZWN0KDEwLCAxMDAsIDkwLCAxMDApLCB2aXNpYmxl
Qm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwogICAgIEVYUEVDVF9FUSgxdSwgb3Bh
cXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwpAQCAtMTI4NCw3ICsxMjU3LDcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKICAgICBF
WFBFQ1RfRVEoMCwgb2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkudGlsZXNDdWxsZWRGb3JVcGxv
YWQoKSk7CiAKICAgICAvLyBObyBtZXRyaWNzIGFyZSByZWNvcmRlZCBpbiBwcmVwYWludCwgc28g
dGhlIHZhbHVlcyBzaG91bGQgbm90IGNoYW5nZSBmcm9tIGFib3ZlLgotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGVJZGxlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPmlk
bGVVcGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAg
ICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNQYWludGVkKCks
IDIwMDAwICogMiArIDEgICsgMSwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRy
YXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMTcxMDAsIDEpOwogICAgIEVYUEVD
VF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkVHJhbnNsdWNl
bnQoKSwgMjAwMDAgKyAyMDAwMCAtIDE3MTAwICsgMSArIDEsIDEpOwpAQCAtMTI5Niw2ICsxMjY5
LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwaXhlbHNQYWludGVkTWV0cmljcykK
ICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFn
ZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxG
YWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
ckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJh
Y2tlciBvY2NsdWRlZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAvLyBU
aGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFp
bnRzIHR3byB0aWxlcyBpbiB2YXJpb3VzIHdheXMuCiAKQEAgLTEzMTMsNyArMTI4Nyw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4ZWxzUGFpbnRlZE1ldHJpY3MpCiAgICAgLy8g
SW52YWxpZGF0ZXMgYW5kIHBhaW50cyB0aGUgd2hvbGUgbGF5ZXIuCiAgICAgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwogICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxh
eWVyUmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIG9wYXF1ZUNv
bnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNU
X1RSVUUob3BhcXVlQ29udGVudHMuaXNFbXB0eSgpKTsKIApAQCAtMTMyNyw3ICsxMzAxLDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwaXhlbHNQYWludGVkTWV0cmljcykKICAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJl
Y3QoKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMSwgMSkpOwog
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDUwLCAyMDAsIDEwLCAxMCkpOwotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBs
YXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7
CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24o
KTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250ZW50cy5pc0VtcHR5KCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136575</attachid>
            <date>2012-04-10 16:57:20 -0700</date>
            <delta_ts>2012-04-11 00:33:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83530-20120410165719.patch</filename>
            <type>text/plain</type>
            <size>112839</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWIzOGUwOGUwNjRjYWQ0
YjRkYjc0MGY3YTYxNTVlOTZlOGQ5ZmIyZC4uNmEzZTllZTFmNjgzZTEzOWNkNmZmZjhhMGNiYjIx
NzNkYTIyMTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTA0LTEwICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBG
b2xkIExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaW50byBtYWluIHVw
ZGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM1
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB1
c2VkIHRvIHVwZGF0ZSBsYXllciBjb250ZW50cyBpbiB0d28gcGhhc2VzLiBUaGUgZmlyc3QsIGNh
bGxlZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIC8KKyAgICAgICAgaWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KCksIHJhbiBvbiB0aGUgbWFpbiBXZWJLaXQgdGhyZWFkIGFuZCB0b29rIGNhcmUgb2Yg
YW55IG1haW4tdGhyZWFkIHdvcmsgLSBwcmltYXJpbHkKKyAgICAgICAgV2ViQ29yZSBwYWludGlu
ZyBhcyB0aGUgbmFtZSBpbXBsaWVzLiBUaGUgc2Vjb25kLCBjYWxsZWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygpLCByYW4gb24gdGhlIGNvbXBvc2l0b3IKKyAgICAgICAgdGhyZWFkIHdpdGgg
dGhlIG1haW4gdGhyZWFkIGJsb2NrZWQgYW5kIHRvb2sgY2FyZSBvZiBhbnkgYWN0aW9ucyB0aGF0
IHJlcXVpcmVkIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGNvbXBvc2l0b3IncworICAgICAgICBjb250
ZXh0IC0gc3VjaCBhcyB0ZXh0dXJlIHVwbG9hZHMgaW50byBjb21wb3NpdG9yLW1hbmFnZWQgdGV4
dHVyZXMuIE5vdyB0aGF0IGFsbCBjb21wb3NpdG9yIHRleHR1cmUgb3BlcmF0aW9ucworICAgICAg
ICBhcmUgcXVldWVkIG9uIGEgQ0NUZXh0dXJlVXBkYXRlciwgdGhlIGNvbXBvc2l0b3IgY2FuIHRh
a2UgY2FyZSBvZiB0aGVzZSBvcGVyYXRpb25zIG9uIHRoZSBjb3JyZWN0IHRocmVhZCBhdCB0aGUK
KyAgICAgICAgcmlnaHQgdGltZSB3aXRob3V0IG5lZWRpbmcgbGF5ZXItc3BlY2lmaWMgbG9naWMu
CisKKyAgICAgICAgVGhpcyBmb2xkcyBib3RoIGZ1bmN0aW9ucyBpbnRvIG9uZSBmdW5jdGlvbiBj
YWxsZWQgTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKCkgKGFuZCBpZGxlVXBkYXRlKCkgZm9yIGlkbGUK
KyAgICAgICAgcHJlcGFpbnRpbmcpIGFuZCBhZGRzIGEgQ0NUZXh0dXJlVXBkYXRlciByZWZlcmVu
Y2UgZm9yIHF1ZXVpbmcgdXAgdGV4dHVyZSBvcGVyYXRpb25zLgorCisgICAgICAgIFRoZSBDQ1By
b3h5IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIENDVGV4dHVyZVVwZGF0
ZXIuIEluIHRoZSB0aHJlYWRlZCBwcm94eSwgdGhlIHVwZGF0ZXIgaXMKKyAgICAgICAgdGllZCB0
byB0aGUgbGlmZXRpbWUgb2YgdGhlIGJlZ2luRnJhbWUgb3BlcmF0aW9uLiBTcGVjaWZpY2FsbHkg
aXQncyBjb25zdHJ1Y3RlZCBvbiB0aGUgaW1wbCB0aHJlYWQgd2hlbiB0aGUKKyAgICAgICAgYmVn
aW5GcmFtZSBtZXNzYWdlIGlzIGdlbmVyYXRlZCwgaXMgYWNjZXNzZWQgYnkgcmVmZXJlbmNlIG9u
IHRoZSBtYWluIHRocmVhZCBkdXJpbmcgdGhlIGNvbW1pdCwgYW5kIHRoZW4KKyAgICAgICAgZGVz
dHJveWVkIGJ5IHRoZSBwcm94eSB3aGVuIHRoZSBjb21taXQgaXMgY29tcGxldGUuIENDVGV4dHVy
ZVVwZGF0ZXI6OnVwZGF0ZSBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIGltcGwKKyAgICAg
ICAgdGhyZWFkIGJ5IHRoZSBwcm94eS4gSW4gdGhlIGZ1dHVyZSwgaXQgbWlnaHQgYmUgd29ydGgg
ZXhwb3NpbmcgYSBtb3JlIGxpbWl0ZWQgaW50ZXJmYWNlIHRvIGxheWVycy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChDYW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dExheWVyQ2hyb21pdW06OmlkbGVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgIChDb250ZW50TGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6dXBkYXRlTGF5ZXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKEltYWdlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hy
b21pdW06OmlkbGVVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGFibGVUaWxl
Ojppc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0YWJsZVRpbGU6OmNvcHlBbmRDbGVh
ckRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0YWJsZVRpbGU6OmlzRGlydHlGb3JDdXJy
ZW50RnJhbWUpOgorICAgICAgICAoVXBkYXRhYmxlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpV
cGRhdGFibGVUaWxlOjpVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVk
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVy
Q2hyb21pdW06OmludmFsaWRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6dGlsZU9ubHlOZWVkc1BhcnRpYWxVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZExheWVyQ2hyb21pdW06OnJlc2VydmVUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZExheWVyQ2hyb21pdW06OnJlc2V0VXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjp1cGRhdGVMYXllclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjppZGxlVXBkYXRlTGF5ZXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbGVkTGF5ZXJDaHJvbWl1bTo6bmVlZHNJZGxlUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVGlsZWRM
YXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVt
Ojp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp+Q0NMYXllclRyZWVIb3N0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0Q29tcGxldGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjpyZXNlcnZlVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xh
eWVyVHJlZUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQ
cm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6
Y29tbWl0SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKENDU2luZ2xlVGhyZWFkUHJveHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5G
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25D
b21taXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OkJlZ2luRnJhbWVBbmRD
b21taXRTdGF0ZTo6QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKToKKyAgICAgICAgKEJlZ2luRnJh
bWVBbmRDb21taXRTdGF0ZSk6CisKIDIwMTItMDQtMDkgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERlZmVyIHRleHR1cmUgaWQgYWxs
b2NhdGlvbiBmb3IgY29waWVzIHVudGlsIHRoZSBhY3R1YWwgY29weSBleGVjdXRlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBlZGQ3MjhkMzgzYzZjZDI2ZjQzYzNhOTBmODNlMjY1NjFk
MDVhNGQxLi5lMGZmYjdmNWM0NDRiNGIwNzgzY2Q3MGY5MmYzOTA2ZDNmZWM5YWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA0LTEwICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBGb2xk
IExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaW50byBtYWluIHVwZGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM1MzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
dGVzdHMgZm9yIGludGVyZmFjZSBjaGFuZ2VzLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OnJ1blRl
c3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6dXBkYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OmlkbGVVcGRhdGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmcpOgorICAgICAgICAoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6YWZ0ZXJUZXN0
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFNldFZpZXdwb3J0U2l6ZTo6YmVn
aW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdFdp
dGhQYXJ0aWFsVXBkYXRlOjpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RG
OjpUZXN0TGF5ZXJDaHJvbWl1bTo6dXBkYXRlKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdExheWVyT2NjbHVzaW9uOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0Q29udGVudExheWVyT2NjbHVzaW9uOjpiZWdpblRlc3QpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0TGF5ZXJPY2NsdXNpb25XaXRoRmlsdGVyczo6YmVnaW5U
ZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE1hbnlTdXJmYWNlczo6YmVn
aW5UZXN0KToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlTGF5ZXJS
ZWN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjp1cGRh
dGUpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAgICAgICAg
KEZha2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKEZha2VUaWxlZExheWVyQ2hyb21p
dW0pOgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAg
ICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpU
RVNUKToKKyAgICAgICAgKFdURjo6aWRsZVBhaW50UmVwZWF0KToKKwogMjAxMi0wNC0wOSAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
RGVmZXIgdGV4dHVyZSBpZCBhbGxvY2F0aW9uIGZvciBjb3BpZXMgdW50aWwgdGhlIGFjdHVhbCBj
b3B5IGV4ZWN1dGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCBi
ZmE4MzRlMjYyZjMxNmVjYWQ0NzM1NjkyZTBhY2M0MGRhYWZjYWIwLi4zYTE0ZDVhMTBlZWM4NzMx
NTU0YWY1ZTViMDg2OTZjYTlkZTQ1N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTkzLDkgKzkzLDkgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnNl
dENhbnZhcyhTa0NhbnZhcyogY2FudmFzKQogICAgIG1fY2FudmFzID0gY2FudmFzOwogfQogCi12
b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKiAvKiBvY2NsdXNpb24gKi8pCit2b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9u
VHJhY2tlciopCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50c0lmRGlydHkiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNh
bnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkiKTsKICAgICBpZiAoIWRy
YXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwNSw3ICsxMDUsOCBAQCB2b2lk
IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2Ns
dXNpb25UcmFja2VyKiAvKiBvYwogICAgICAgICAgICAgbV9mcm9udFRleHR1cmUtPnNldFRleHR1
cmVNYW5hZ2VyKHRleHR1cmVNYW5hZ2VyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9m
cm9udFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsKLSAg
ICAgICAgbV9mcm9udFRleHR1cmUtPnJlc2VydmUobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSk7CisgICAgICAgIGlmIChtX2Zyb250VGV4dHVyZS0+cmVzZXJ2ZShtX3NpemUsIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBKSkKKyAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kTWFuYWdlZENv
cHkobV9iYWNrVGV4dHVyZUlkLCBtX2Zyb250VGV4dHVyZS5nZXQoKSwgbV9zaXplKTsKICAgICB9
CiAKICAgICBpZiAoIW5lZWRzRGlzcGxheSgpKQpAQCAtMTIxLDIyICsxMjIsMTQgQEAgdm9pZCBD
YW52YXMyRExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVz
aW9uVHJhY2tlciogLyogb2MKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2FudmFzKSB7
Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJTa0NhbnZhczo6Zmx1c2giLCBtX2NhbnZhcywgMCk7Cisg
ICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiU2tDYW52YXM6OmZsdXNoIik7CiAgICAgICAgIG1f
Y2FudmFzLT5mbHVzaCgpOwogICAgIH0KIAotICAgIFRSQUNFX0VWRU5UKCJHcmFwaGljc0NvbnRl
eHQzRDo6Zmx1c2giLCBtX2NvbnRleHQsIDApOworICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiR3Jh
cGhpY3NDb250ZXh0M0Q6OmZsdXNoIik7CiAgICAgbV9jb250ZXh0LT5mbHVzaCgpOwogfQogCi12
b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKLXsKLSAg
ICBpZiAoIW1fYmFja1RleHR1cmVJZCB8fCAhbV9mcm9udFRleHR1cmUgfHwgIW1fZnJvbnRUZXh0
dXJlLT5pc1ZhbGlkKG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICB1cGRhdGVyLmFwcGVuZE1hbmFnZWRDb3B5KG1fYmFja1RleHR1cmVJZCwg
bV9mcm9udFRleHR1cmUuZ2V0KCksIG1fc2l6ZSk7Ci19Ci0KIHZvaWQgQ2FudmFzMkRMYXllckNo
cm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIHsKICAgICBDYW52
YXNMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKGxheWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmgKaW5kZXggYjVkMGMyMzg5MWZiMDViNjIxODI0OTEwMjUwZDU5MGI4
YjcyYzY3Mi4uYTIyZjk3ZWJkYjc4MTVmYTQzM2UwMmQ5Y2NiNDFiMjEzNjEyNjUwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTU1LDkgKzU1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwog
CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKLQotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJl
VXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOwogICAgIHZpcnR1YWwgdm9pZCBw
dXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2
ZUNvbnRlbnRzVGV4dHVyZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggNzUxYmM2NWY2ZWUzZTc0ZjUxNzIxMDlmMTU4ZjA1NWEwMGFlZDAzZC4uYWU4ZDMyMDhi
ZmJhYjhkN2FkZTk4MmE3ZDhhOTNhMmQ4M2VkN2RhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcApAQCAtOTQsMjkgKzk0LDI5IEBAIGJvb2wgQ29udGVudExheWVyQ2hyb21p
dW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
ZHJhd3NDb250ZW50KCkgJiYgbV9kZWxlZ2F0ZTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2Ns
dXNpb24pCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRl
ciYgdXBkYXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAg
dXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKICAgICBjcmVhdGVUZXh0dXJlVXBkYXRl
cklmTmVlZGVkKCk7CiAKICAgICBJbnRSZWN0IGxheWVyUmVjdDsKIAotICAgIC8vIEFsd2F5cyBj
YWxsIHByZXBhcmVUb1VwZGF0ZSgpIGJ1dCB3aXRoIGFuIGVtcHR5IGxheWVyIHJlY3RhbmdsZSB3
aGVuCisgICAgLy8gQWx3YXlzIGNhbGwgdXBkYXRlTGF5ZXJSZWN0KCkgYnV0IHdpdGggYW4gZW1w
dHkgbGF5ZXIgcmVjdGFuZ2xlIHdoZW4KICAgICAvLyBsYXllciBkb2Vzbid0IGRyYXcgY29udGVu
dHMuCiAgICAgaWYgKGRyYXdzQ29udGVudCgpKQogICAgICAgICBsYXllclJlY3QgPSB2aXNpYmxl
TGF5ZXJSZWN0KCk7CiAKLSAgICBwcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0LCBvY2NsdXNpb24p
OworICAgIHVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBsYXllclJlY3QsIG9jY2x1c2lvbik7CiAg
ICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2Nj
bHVzaW9uKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVVwZGF0ZShDQ1RleHR1cmVV
cGRhdGVyJiB1cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKIHsK
ICAgICBpZiAoIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBJ
bnRSZWN0IGxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKLSAgICBwcmVwYXJlVG9VcGRh
dGVJZGxlKGxheWVyUmVjdCwgb2NjbHVzaW9uKTsKKyAgICBpZGxlVXBkYXRlTGF5ZXJSZWN0KHVw
ZGF0ZXIsIGxheWVyUmVjdCwgb2NjbHVzaW9uKTsKICAgICBpZiAobmVlZHNJZGxlUGFpbnQobGF5
ZXJSZWN0KSkKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oCmluZGV4IGU2OTk0YTIxYWVmYWMyMTQwODg3ZTViYmQ4YWJiMjAzYzlhYjgx
NzkuLjQ3M2IzODBmYWYzNTUwMThkNzFkYWE4NzI3ZDRiZjYzNWRhMWViYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjbGVhckRlbGVnYXRlKCkgeyBtX2RlbGVnYXRlID0gMDsgfQogCiAgICAgdmlydHVhbCBib29s
IGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZE
aXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciopOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tl
ciopOworICAgIHZpcnR1YWwgdm9pZCBpZGxlVXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBjb25z
dCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9v
bCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDM5MzkxNThhODViNTcz
ZmIyZDRiNTdmZTFhNWVmNmYyZmJmMGZmMDEuLmQ0YTQzMDEyZDQ1NmI5MTAwMGRhZjcyZTIxYzVi
ZGVhZGI1MzViYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtODMsNyAr
ODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2Ft
cGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZv
cm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCAvKiBi
b3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sIEludFJlY3QqIC8qIHJl
c3VsdGluZ09wYXF1ZVJlY3QgKi8pCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyUmVjdChj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCAv
KiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sIEludFJlY3QqIC8q
IHJlc3VsdGluZ09wYXF1ZVJlY3QgKi8pCiAgICAgewogICAgICAgICBtX3RleFN1YkltYWdlLnNl
dFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAgICAgfQpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQg
SW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAgICAgc2V0
TmVlZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKK3ZvaWQgSW1h
Z2VMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0
ZXJJZk5lZWRlZCgpOwogICAgIGlmIChtX25lZWRzRGlzcGxheSkgewpAQCAtMTY4LDcgKzE2OCw3
IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBD
Q09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvCiAgICAgICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFs
c2U7CiAgICAgfQogCi0gICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2Nj
bHVzaW9uKTsKKyAgICB1cGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZUxheWVyUmVjdCgp
LCBvY2NsdXNpb24pOwogfQogCiB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVy
ZVVwZGF0ZXJJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGIwMWVm
MjlkYTEzZDBlMTExNWU4NDFhYzIwZjRlNjBlOGFjMTY0M2YuLjQ5NDg4Y2QwODA0MjFkNGMxOGI5
ODliYzY5NGI3MjBiMjFiOTY3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0oKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyKik7CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0Owog
CiAgICAgdm9pZCBzZXRDb250ZW50cyhJbWFnZSogaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IDUyNGUxNWRmOTVhOTE0YmIyMGZiZWIwMjQ1Y2UzYmYwMWJjNzZmNmUuLjkyNGExNTRiZGQz
YWViN2JjODc2ZDc3MjAyNTZhMDJiNDcxZWRlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE2
OCw5ICsxNjgsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBu
ZWVkIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciog
Lyogb2NjbHVzaW9uICovKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogLyogb2NjbHVzaW9uICovKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4
dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgaWRsZVVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDdjOWMzMDZkODZiNzRkZTRlYTI1MjQ4M2RhNjUyMDJkYTY5NzA1N2EuLmYyZmZiMzFl
YjlhYTg5YTE0YjJiYTBjMzViYTg2MzdmMjA4ZmQ0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcApAQCAtNjQsMjQgKzY0LDI0IEBAIHB1YmxpYzoKICAgICBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CiAg
ICAgTWFuYWdlZFRleHR1cmUqIG1hbmFnZWRUZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLT50
ZXh0dXJlKCk7IH0KIAotICAgIGJvb2wgaXNEaXJ0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2RpcnR5
UmVjdC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiAhZGly
dHlSZWN0LmlzRW1wdHkoKTsgfQogICAgIHZvaWQgY29weUFuZENsZWFyRGlydHkoKQogICAgIHsK
LSAgICAgICAgbV91cGRhdGVSZWN0ID0gbV9kaXJ0eVJlY3Q7Ci0gICAgICAgIG1fZGlydHlSZWN0
ID0gSW50UmVjdCgpOworICAgICAgICB1cGRhdGVSZWN0ID0gZGlydHlSZWN0OworICAgICAgICBk
aXJ0eVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgfQogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUg
bGF5ZXIgd2FzIGRpcnR5IGFuZCBub3QgdXBkYXRlZCBpbiB0aGUgY3VycmVudCBmcmFtZS4gRm9y
IHRpbGVzIHRoYXQgd2VyZSBub3QgY3VsbGVkLCB0aGUKICAgICAvLyB1cGRhdGVSZWN0IGhvbGRz
IHRoZSBhcmVhIG9mIHRoZSB0aWxlIHRoYXQgd2FzIHVwZGF0ZWQuIE90aGVyd2lzZSwgdGhlIGFy
ZWEgdGhhdCB3b3VsZCBoYXZlIGJlZW4gdXBkYXRlZC4KLSAgICBib29sIGlzRGlydHlGb3JDdXJy
ZW50RnJhbWUoKSB7IHJldHVybiAhbV9kaXJ0eVJlY3QuaXNFbXB0eSgpICYmIChtX3VwZGF0ZVJl
Y3QuaXNFbXB0eSgpIHx8ICFtX3VwZGF0ZWQpOyB9CisgICAgYm9vbCBpc0RpcnR5Rm9yQ3VycmVu
dEZyYW1lKCkgeyByZXR1cm4gIWRpcnR5UmVjdC5pc0VtcHR5KCkgJiYgKHVwZGF0ZVJlY3QuaXNF
bXB0eSgpIHx8ICF1cGRhdGVkKTsgfQogCi0gICAgSW50UmVjdCBtX2RpcnR5UmVjdDsKLSAgICBJ
bnRSZWN0IG1fdXBkYXRlUmVjdDsKLSAgICBib29sIG1fcGFydGlhbFVwZGF0ZTsKLSAgICBib29s
IG1fdXBkYXRlZDsKKyAgICBJbnRSZWN0IGRpcnR5UmVjdDsKKyAgICBJbnRSZWN0IHVwZGF0ZVJl
Y3Q7CisgICAgYm9vbCBwYXJ0aWFsVXBkYXRlOworICAgIGJvb2wgdXBkYXRlZDsKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgVXBkYXRhYmxlVGlsZShQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU+IHRleHR1cmUpCi0gICAgICAgIDogbV9wYXJ0aWFsVXBkYXRlKGZhbHNlKQot
ICAgICAgICAsIG1fdXBkYXRlZChmYWxzZSkKKyAgICAgICAgOiBwYXJ0aWFsVXBkYXRlKGZhbHNl
KQorICAgICAgICAsIHVwZGF0ZWQoZmFsc2UpCiAgICAgICAgICwgbV90ZXh0dXJlKHRleHR1cmUp
CiAgICAgewogICAgIH0KQEAgLTk1LDYgKzk1LDcgQEAgVGlsZWRMYXllckNocm9taXVtOjpUaWxl
ZExheWVyQ2hyb21pdW0oKQogICAgICwgbV9za2lwc0RyYXcoZmFsc2UpCiAgICAgLCBtX3NraXBz
SWRsZVBhaW50KGZhbHNlKQogICAgICwgbV9zYW1wbGVkVGV4ZWxGb3JtYXQoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0SW52YWxpZCkKKyAgICAsIG1fZGlkUGFpbnQoZmFs
c2UpCiAgICAgLCBtX3RpbGluZ09wdGlvbihBdXRvVGlsZSkKIHsKICAgICBtX3RpbGVyID0gQ0NM
YXllclRpbGluZ0RhdGE6OmNyZWF0ZShJbnRTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVmYXVsdFRp
bGVTaXplKSwgQ0NMYXllclRpbGluZ0RhdGE6Okhhc0JvcmRlclRleGVscyk7CkBAIC0xODMsNjgg
KzE4NCw2IEBAIEludFNpemUgVGlsZWRMYXllckNocm9taXVtOjpjb250ZW50Qm91bmRzKCkgY29u
c3QKICAgICByZXR1cm4gSW50U2l6ZShscm91bmRmKGJvdW5kcygpLndpZHRoKCkgKiBjb250ZW50
c1NjYWxlKCkpLCBscm91bmRmKGJvdW5kcygpLmhlaWdodCgpICogY29udGVudHNTY2FsZSgpKSk7
CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKLXsKLSAgICAv
LyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hp
Y2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4K
LSAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QuaXNFbXB0
eSgpIHx8IG1fdGlsZXItPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW50IGxl
ZnQgPSBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC54KCk7Ci0gICAgaW50IHRvcCA9IG1fcmVx
dWVzdGVkVXBkYXRlVGlsZXNSZWN0LnkoKTsKLSAgICBpbnQgcmlnaHQgPSBtX3JlcXVlc3RlZFVw
ZGF0ZVRpbGVzUmVjdC5tYXhYKCkgLSAxOwotICAgIGludCBib3R0b20gPSBtX3JlcXVlc3RlZFVw
ZGF0ZVRpbGVzUmVjdC5tYXhZKCkgLSAxOwotICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90
dG9tOyArK2opIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkg
ewotICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKLQotICAg
ICAgICAgICAgLy8gUmVxdWlyZWQgdGlsZXMgYXJlIGNyZWF0ZWQgaW4gcHJlcGFyZVRvVXBkYXRl
KCkuIEEgdGlsZSBzaG91bGQKLSAgICAgICAgICAgIC8vIG5ldmVyIGJlIHJlbW92ZWQgYmV0d2Vl
biB0aGUgY2FsbCB0byBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgdGhlCi0gICAgICAgICAgICAvLyBj
YWxsIHRvIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKS4KLSAgICAgICAgICAgIGlmICghdGls
ZSkKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotCi0gICAgICAgICAgICBpZiAoIXRpbGUtPm1f
dXBkYXRlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgSW50UmVj
dCBzb3VyY2VSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0OwotICAgICAgICAgICAgaWYgKHRpbGUt
Pm1fdXBkYXRlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgICAgIEFTU0VSVCh0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5pc1Jlc2VydmVkKCkpOwot
ICAgICAgICAgICAgY29uc3QgSW50UG9pbnQgYW5jaG9yID0gbV90aWxlci0+dGlsZVJlY3QodGls
ZSkubG9jYXRpb24oKTsKLQotICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRpbGUtc3BhY2UgcmVj
dGFuZ2xlIHRvIHVwbG9hZCBpbnRvLgotICAgICAgICAgICAgSW50UmVjdCBkZXN0UmVjdChJbnRQ
b2ludChzb3VyY2VSZWN0LngoKSAtIGFuY2hvci54KCksIHNvdXJjZVJlY3QueSgpIC0gYW5jaG9y
LnkoKSksIHNvdXJjZVJlY3Quc2l6ZSgpKTsKLSAgICAgICAgICAgIGlmIChkZXN0UmVjdC54KCkg
PCAwKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAgICBpZiAoZGVzdFJlY3Qu
eSgpIDwgMCkKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotCi0gICAgICAgICAgICAvLyBPZmZz
ZXQgZnJvbSBwYWludCByZWN0YW5nbGUgdG8gdGhpcyB0aWxlJ3MgZGlydHkgcmVjdGFuZ2xlLgot
ICAgICAgICAgICAgSW50UG9pbnQgcGFpbnRPZmZzZXQoc291cmNlUmVjdC54KCkgLSBtX3BhaW50
UmVjdC54KCksIHNvdXJjZVJlY3QueSgpIC0gbV9wYWludFJlY3QueSgpKTsKLSAgICAgICAgICAg
IGlmIChwYWludE9mZnNldC54KCkgPCAwKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAg
ICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpIDwgMCkKLSAgICAgICAgICAgICAgICBDUkFTSCgp
OwotICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LngoKSArIGRlc3RSZWN0LndpZHRoKCkgPiBt
X3BhaW50UmVjdC53aWR0aCgpKQotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAg
ICBpZiAocGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBtX3BhaW50UmVjdC5o
ZWlnaHQoKSkKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotCi0gICAgICAgICAgICBpZiAodGls
ZS0+bV9wYXJ0aWFsVXBkYXRlKQotICAgICAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kUGFydGlh
bFVwZGF0ZSh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZFVwZGF0ZSh0aWxlLT50ZXh0
dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IFRoZSB1cGRhdGVSZWN0IHNob3VsZCBiZSBpbiBsYXllciBzcGFjZS4gU28gd2UgaGF2ZSB0byBj
b252ZXJ0IHRoZSBwYWludFJlY3QgZnJvbSBjb250ZW50IHNwYWNlIHRvIGxheWVyIHNwYWNlLgot
ICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3BhaW50UmVjdCk7Ci0gICAgZmxvYXQgd2lk
dGhTY2FsZSA9IGJvdW5kcygpLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJv
dW5kcygpLndpZHRoKCkpOwotICAgIGZsb2F0IGhlaWdodFNjYWxlID0gYm91bmRzKCkuaGVpZ2h0
KCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLmhlaWdodCgpKTsKLSAgICBt
X3VwZGF0ZVJlY3Quc2NhbGUod2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOwotfQotCiB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiB0aWxpbmdPcHRp
b24pCiB7CiAgICAgbV90aWxpbmdPcHRpb24gPSB0aWxpbmdPcHRpb247CkBAIC0zMTIsNyArMjUx
LDcgQEAgVXBkYXRhYmxlVGlsZSogVGlsZWRMYXllckNocm9taXVtOjpjcmVhdGVUaWxlKGludCBp
LCBpbnQgaikKICAgICBVcGRhdGFibGVUaWxlKiBhZGRlZFRpbGUgPSB0aWxlLmdldCgpOwogICAg
IG1fdGlsZXItPmFkZFRpbGUodGlsZS5yZWxlYXNlKCksIGksIGopOwogCi0gICAgYWRkZWRUaWxl
LT5tX2RpcnR5UmVjdCA9IG1fdGlsZXItPnRpbGVSZWN0KGFkZGVkVGlsZSk7CisgICAgYWRkZWRU
aWxlLT5kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdChhZGRlZFRpbGUpOwogICAgIHJldHVy
biBhZGRlZFRpbGU7CiB9CiAKQEAgLTM1MCw3ICsyODksNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgICAgICBB
U1NFUlQodGlsZSk7CiAgICAgICAgIEludFJlY3QgYm91bmQgPSBtX3RpbGVyLT50aWxlUmVjdCh0
aWxlKTsKICAgICAgICAgYm91bmQuaW50ZXJzZWN0KGxheWVyUmVjdCk7Ci0gICAgICAgIHRpbGUt
Pm1fZGlydHlSZWN0LnVuaXRlKGJvdW5kKTsKKyAgICAgICAgdGlsZS0+ZGlydHlSZWN0LnVuaXRl
KGJvdW5kKTsKICAgICB9CiB9CiAKQEAgLTM4Nyw3ICszMjYsNyBAQCBib29sIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6dGlsZU9ubHlOZWVkc1BhcnRpYWxVcGRhdGUoVXBkYXRhYmxlVGlsZSogdGlsZSkK
ICAgICBpZiAoIXRpbGUtPmlzRGlydHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
cmV0dXJuICF0aWxlLT5tX2RpcnR5UmVjdC5jb250YWlucyhtX3RpbGVyLT50aWxlUmVjdCh0aWxl
KSk7CisgICAgcmV0dXJuICF0aWxlLT5kaXJ0eVJlY3QuY29udGFpbnMobV90aWxlci0+dGlsZVJl
Y3QodGlsZSkpOwogfQogCiAvLyBEaXJ0eSB0aWxlcyB3aXRoIHZhbGlkIHRleHR1cmVzIG5lZWRz
IGJ1ZmZlcmVkIHVwZGF0ZSB0byBndWFyYW50ZWUgdGhhdApAQCAtNDA3LDE1ICszNDYsMTUgQEAg
Ym9vbCBUaWxlZExheWVyQ2hyb21pdW06OnRpbGVOZWVkc0J1ZmZlcmVkVXBkYXRlKFVwZGF0YWJs
ZVRpbGUqIHRpbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBp
bnQgcmlnaHQsIGludCBib3R0b20sIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9u
KQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxl
ZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSwgQ0NUZXh0dXJlVXBkYXRlciYgdXBk
YXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgY3JlYXRl
VGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwogCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRl
ZCwgZXhwYW5kaW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8vIHRoZSBkaXJ0
eSByZWdpb25zIGN1cnJlbnRseSBiZWluZyBkcmF3bi4gQWxsIGRpcnR5IHRpbGVzIHRoYXQgYXJl
IHRvIGJlIHBhaW50ZWQKLSAgICAvLyBnZXQgdGhlaXIgbV91cGRhdGVSZWN0IHNldCB0byBtX2Rp
cnR5UmVjdCBhbmQgbV9kaXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKLSAgICAvLyBpbnZh
bGlkYXRlUmVjdCBpcyBpbnZva2VkIGR1cmluZyBwcmVwYXJlVG9VcGRhdGUgd2UgZG9uJ3QgbG9z
ZSB0aGUgcmVxdWVzdC4KLSAgICBJbnRSZWN0IGRpcnR5TGF5ZXJSZWN0OworICAgIC8vIGdldCB0
aGVpciB1cGRhdGVSZWN0IHNldCB0byBkaXJ0eVJlY3QgYW5kIGRpcnR5UmVjdCBjbGVhcmVkLiBU
aGlzIHdheSBpZgorICAgIC8vIGludmFsaWRhdGVSZWN0IGlzIGludm9rZWQgZHVyaW5nIHVwZGF0
ZUxheWVyUmVjdCB3ZSBkb24ndCBsb3NlIHRoZSByZXF1ZXN0LgorICAgIEludFJlY3QgcGFpbnRS
ZWN0OwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAg
Zm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRh
YmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKQEAgLTQyNCw3ICszNjMsNyBAQCB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVm
dCwgaW50IHRvcCwgaW50CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUo
KS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gU2V0cyB0aGUgZGlydHkgcmVjdCB0byBhIGZ1bGwtc2l6ZWQgdGlsZSB3
aXRoIGJvcmRlciB0ZXhlbHMuCi0gICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eVJlY3QgPSBt
X3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKKyAgICAgICAgICAgICAgICB0aWxlLT5kaXJ0eVJlY3Qg
PSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Ly8gV2hlbiBub3QgaWRsZSBwYWludGluZywgaWYgdGhlIHZpc2libGUgcmVnaW9uIG9mIHRoZSB0
aWxlIGlzIG9jY2x1ZGVkLCBkb24ndCByZXNlcnZlIGEgdGV4dHVyZSBvciB1cGRhdGUgdGhlIHRp
bGUuCkBAIC00MzIsMjMgKzM3MSwyMyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAg
ICAgICBpZiAoIWlkbGUgJiYgb2NjbHVzaW9uKSB7CiAgICAgICAgICAgICAgICAgSW50UmVjdCB2
aXNpYmxlVGlsZVJlY3QgPSBpbnRlcnNlY3Rpb24obV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKSwg
dmlzaWJsZUxheWVyUmVjdCgpKTsKICAgICAgICAgICAgICAgICBpZiAob2NjbHVzaW9uLT5vY2Ns
dWRlZCh0aGlzLCB2aXNpYmxlVGlsZVJlY3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VCghdGlsZS0+bV91cGRhdGVkKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCF0aWxlLT51
cGRhdGVkKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBXZSBjb21lIHRocm91Z2ggdGhpcyBm
dW5jdGlvbiBtdWx0aXBsZSB0aW1lcyBkdXJpbmcgYSBjb21taXQsIGFuZCBtX3VwZGF0ZWQgc2hv
dWxkIGJlIHRydWUgaWYgdGhlIHRpbGUgaXMgbm90IGN1bGxlZAorICAgICAgICAgICAgLy8gV2Ug
Y29tZSB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gbXVsdGlwbGUgdGltZXMgZHVyaW5nIGEgY29tbWl0
LCBhbmQgdXBkYXRlZCBzaG91bGQgYmUgdHJ1ZSBpZiB0aGUgdGlsZSBpcyBub3QgY3VsbGVkCiAg
ICAgICAgICAgICAvLyBhbnkgc2luZ2xlIHRpbWUgdGhyb3VnaCB0aGUgZnVuY3Rpb24uCi0gICAg
ICAgICAgICB0aWxlLT5tX3VwZGF0ZWQgPSB0cnVlOworICAgICAgICAgICAgdGlsZS0+dXBkYXRl
ZCA9IHRydWU7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBEZWNpZGUgaWYgcGFydGlhbCB1cGRh
dGUgc2hvdWxkIGJlIGFsbG93ZWQgYmFzZWQgb24gY29zdAogICAgICAgICAgICAgLy8gb2YgdXBk
YXRlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNzYKICAgICAg
ICAgICAgIGlmICh0aWxlT25seU5lZWRzUGFydGlhbFVwZGF0ZSh0aWxlKSAmJiBsYXllclRyZWVI
b3N0KCkgJiYgbGF5ZXJUcmVlSG9zdCgpLT5yZXF1ZXN0UGFydGlhbFRleHR1cmVVcGRhdGUoKSkK
LSAgICAgICAgICAgICAgICB0aWxlLT5tX3BhcnRpYWxVcGRhdGUgPSB0cnVlOworICAgICAgICAg
ICAgICAgIHRpbGUtPnBhcnRpYWxVcGRhdGUgPSB0cnVlOwogICAgICAgICAgICAgZWxzZSBpZiAo
dGlsZU5lZWRzQnVmZmVyZWRVcGRhdGUodGlsZSkgJiYgbGF5ZXJUcmVlSG9zdCgpKSB7CiAgICAg
ICAgICAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5kZWxldGVUZXh0dXJlQWZ0ZXJDb21taXQodGls
ZS0+bWFuYWdlZFRleHR1cmUoKS0+c3RlYWwoKSk7CiAgICAgICAgICAgICAgICAgLy8gU2V0cyB0
aGUgZGlydHkgcmVjdCB0byBhIGZ1bGwtc2l6ZWQgdGlsZSB3aXRoIGJvcmRlciB0ZXhlbHMuCi0g
ICAgICAgICAgICAgICAgdGlsZS0+bV9kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdCh0aWxl
KTsKKyAgICAgICAgICAgICAgICB0aWxlLT5kaXJ0eVJlY3QgPSBtX3RpbGVyLT50aWxlUmVjdCh0
aWxlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4
dHVyZSgpLT5yZXNlcnZlKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsK
QEAgLTQ1NiwxMyArMzk1LDExIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAg
ICAgICBpZiAoIWlkbGUpIHsKICAgICAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICBtX3RpbGVyLT5yZXNldCgpOwotICAgICAgICAgICAgICAg
ICAgICBtX3BhaW50UmVjdCA9IEludFJlY3QoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9yZXF1
ZXN0ZWRVcGRhdGVUaWxlc1JlY3QgPSBJbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZGlydHlM
YXllclJlY3QudW5pdGUodGlsZS0+bV9kaXJ0eVJlY3QpOworICAgICAgICAgICAgcGFpbnRSZWN0
LnVuaXRlKHRpbGUtPmRpcnR5UmVjdCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3MSwyNCAr
NDA4LDI0IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhi
b29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICBmb3IgKGludCBqID0gdG9wOyBq
IDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0
OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7
Ci0gICAgICAgICAgICBpZiAodGlsZS0+bV91cGRhdGVkKQorICAgICAgICAgICAgaWYgKHRpbGUt
PnVwZGF0ZWQpCiAgICAgICAgICAgICAgICAgdGlsZS0+Y29weUFuZENsZWFyRGlydHkoKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKCFpZGxlICYmIG9jY2x1c2lvbiAmJiB0aWxlLT5pc0RpcnR5KCkp
CiAgICAgICAgICAgICAgICAgb2NjbHVzaW9uLT5vdmVyZHJhd01ldHJpY3MoKS5kaWRDdWxsVGls
ZUZvclVwbG9hZCgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9wYWludFJlY3QgPSBkaXJ0
eUxheWVyUmVjdDsKLSAgICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChw
YWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAob2NjbHVzaW9u
KQotICAgICAgICBvY2NsdXNpb24tPm92ZXJkcmF3TWV0cmljcygpLmRpZFBhaW50KG1fcGFpbnRS
ZWN0KTsKKyAgICAgICAgb2NjbHVzaW9uLT5vdmVyZHJhd01ldHJpY3MoKS5kaWRQYWludChwYWlu
dFJlY3QpOwogCi0gICAgLy8gRHVlIHRvIGJvcmRlcnMsIHdoZW4gdGhlIHBhaW50IHJlY3QgaXMg
ZXh0ZW5kZWQgdG8gdGlsZSBib3VuZGFyaWVzLCBpdAotICAgIC8vIG1heSBlbmQgdXAgb3Zlcmxh
cHBpbmcgbW9yZSB0aWxlcyB0aGFuIHRoZSBvcmlnaW5hbCBjb250ZW50IHJlY3QuIFJlY29yZAot
ICAgIC8vIHRoZSBvcmlnaW5hbCB0aWxlcyBzbyB3ZSBkb24ndCB1cGxvYWQgbW9yZSB0aWxlcyB0
aGFuIG5lY2Vzc2FyeS4KLSAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3Qo
bGVmdCwgdG9wLCByaWdodCAtIGxlZnQgKyAxLCBib3R0b20gLSB0b3AgKyAxKTsKKyAgICAvLyBU
aGUgdXBkYXRlUmVjdCBzaG91bGQgYmUgaW4gbGF5ZXIgc3BhY2UuIFNvIHdlIGhhdmUgdG8gY29u
dmVydCB0aGUgcGFpbnRSZWN0IGZyb20gY29udGVudCBzcGFjZSB0byBsYXllciBzcGFjZS4KKyAg
ICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QocGFpbnRSZWN0KTsKKyAgICBmbG9hdCB3aWR0aFNj
YWxlID0gYm91bmRzKCkud2lkdGgoKSAvIHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRz
KCkud2lkdGgoKSk7CisgICAgZmxvYXQgaGVpZ2h0U2NhbGUgPSBib3VuZHMoKS5oZWlnaHQoKSAv
IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpOworICAgIG1fdXBk
YXRlUmVjdC5zY2FsZSh3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSk7CiAKICAgICAvLyBDYWxsaW5n
IHByZXBhcmVUb1VwZGF0ZSgpIGNhbGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkg
aGF2ZSB0aGUgc2lkZQogICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdo
aWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVs
ZXRlZC4KQEAgLTQ5NiwyOCArNDMzLDI2IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAv
LyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBh
bGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgogICAgIFJlZlB0cjxMYXllclRleHR1cmVV
cGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7CiAgICAgSW50UmVjdCBwYWludGVk
T3BhcXVlUmVjdDsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUobV9wYWlu
dFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBj
b250ZW50c1NjYWxlKCksICZwYWludGVkT3BhcXVlUmVjdCk7CisgICAgdGV4dHVyZVVwZGF0ZXIo
KS0+cHJlcGFyZVRvVXBkYXRlKHBhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxl
ci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSwgJnBhaW50ZWRPcGFxdWVSZWN0
KTsKKyAgICBtX2RpZFBhaW50ID0gdHJ1ZTsKKwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0g
Ym90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsr
aSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKIAot
ICAgICAgICAgICAgLy8gVGlsZXMgYXJlIGNyZWF0ZWQgYmVmb3JlIHByZXBhcmVUb1VwZGF0ZSgp
IGlzIGNhbGxlZC4KLSAgICAgICAgICAgIGlmICghdGlsZSkKLSAgICAgICAgICAgICAgICBDUkFT
SCgpOwotCiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5k
cyhpLCBqKTsKIAotICAgICAgICAgICAgaWYgKCF0aWxlLT5tX3VwZGF0ZWQpCisgICAgICAgICAg
ICBpZiAoIXRpbGUtPnVwZGF0ZWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgdGhlIGFib3ZlIGxvb3AgY29waWVkIHRoZSBk
aXJ0eSByZWN0IGZvciB0aGlzIGZyYW1lIHRvIG1fdXBkYXRlUmVjdC4KLSAgICAgICAgICAgIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCA9IHRpbGUtPm1fdXBkYXRlUmVjdDsKKyAgICAgICAgICAg
IC8vIFVzZSB1cGRhdGVSZWN0IGFzIHRoZSBhYm92ZSBsb29wIGNvcGllZCB0aGUgZGlydHkgcmVj
dCBmb3IgdGhpcyBmcmFtZSB0byB1cGRhdGVSZWN0LgorICAgICAgICAgICAgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0ID0gdGlsZS0+dXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlmIChkaXJ0eVJl
Y3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAv
LyBTYXZlIHdoYXQgd2FzIHBhaW50ZWQgb3BhcXVlIGluIHRoZSB0aWxlLiBLZWVwIHRoZSBvbGQg
YXJlYSBpZiB0aGUgcGFpbnQgZGlkbid0IHRvdWNoIGl0LCBhbmQgZGlkbid0IHBhaW50IHNvbWUK
ICAgICAgICAgICAgIC8vIG90aGVyIHBhcnQgb2YgdGhlIHRpbGUgb3BhcXVlLgotICAgICAgICAg
ICAgSW50UmVjdCB0aWxlUGFpbnRlZFJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIG1fcGFp
bnRSZWN0KTsKKyAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRSZWN0ID0gaW50ZXJzZWN0
aW9uKHRpbGVSZWN0LCBwYWludFJlY3QpOwogICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRl
ZE9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIHBhaW50ZWRPcGFxdWVSZWN0KTsK
ICAgICAgICAgICAgIGlmICghdGlsZVBhaW50ZWRSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgIEludFJlY3QgcGFpbnRJbnNpZGVUaWxlT3BhcXVlUmVjdCA9IGludGVyc2VjdGlvbih0
aWxlLT5vcGFxdWVSZWN0KCksIHRpbGVQYWludGVkUmVjdCk7CkBAIC01MzMsMTUgKzQ2OCw0MSBA
QCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxl
LCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2Vj
dChkaXJ0eVJlY3QpOwogICAgICAgICAgICAgLy8gUGFpbnQgcmVjdCBub3QgZ3VhcmFudGVlZCB0
byBsaW5lIHVwIG9uIHRpbGUgYm91bmRhcmllcywgc28KICAgICAgICAgICAgIC8vIG1ha2Ugc3Vy
ZSB0aGF0IHNvdXJjZVJlY3QgZG9lc24ndCBleHRlbmQgb3V0c2lkZSBvZiBpdC4KLSAgICAgICAg
ICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KG1fcGFpbnRSZWN0KTsKKyAgICAgICAgICAgIHNvdXJj
ZVJlY3QuaW50ZXJzZWN0KHBhaW50UmVjdCk7CisKKyAgICAgICAgICAgIHRpbGUtPnVwZGF0ZVJl
Y3QgPSBzb3VyY2VSZWN0OwogCi0gICAgICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBzb3Vy
Y2VSZWN0OwogICAgICAgICAgICAgaWYgKHNvdXJjZVJlY3QuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnByZXBhcmVS
ZWN0KHNvdXJjZVJlY3QpOwogICAgICAgICAgICAgaWYgKG9jY2x1c2lvbikKICAgICAgICAgICAg
ICAgICBvY2NsdXNpb24tPm92ZXJkcmF3TWV0cmljcygpLmRpZFVwbG9hZChUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCBzb3VyY2VSZWN0LCB0aWxlLT5vcGFxdWVSZWN0KCkpOworCisgICAgICAgICAg
ICBjb25zdCBJbnRQb2ludCBhbmNob3IgPSBtX3RpbGVyLT50aWxlUmVjdCh0aWxlKS5sb2NhdGlv
bigpOworCisgICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGlsZS1zcGFjZSByZWN0YW5nbGUgdG8g
dXBsb2FkIGludG8uCisgICAgICAgICAgICBJbnRSZWN0IGRlc3RSZWN0KEludFBvaW50KHNvdXJj
ZVJlY3QueCgpIC0gYW5jaG9yLngoKSwgc291cmNlUmVjdC55KCkgLSBhbmNob3IueSgpKSwgc291
cmNlUmVjdC5zaXplKCkpOworICAgICAgICAgICAgaWYgKGRlc3RSZWN0LngoKSA8IDApCisgICAg
ICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIGlmIChkZXN0UmVjdC55KCkgPCAwKQor
ICAgICAgICAgICAgICAgIENSQVNIKCk7CisKKyAgICAgICAgICAgIC8vIE9mZnNldCBmcm9tIHBh
aW50IHJlY3RhbmdsZSB0byB0aGlzIHRpbGUncyBkaXJ0eSByZWN0YW5nbGUuCisgICAgICAgICAg
ICBJbnRQb2ludCBwYWludE9mZnNldChzb3VyY2VSZWN0LngoKSAtIHBhaW50UmVjdC54KCksIHNv
dXJjZVJlY3QueSgpIC0gcGFpbnRSZWN0LnkoKSk7CisgICAgICAgICAgICBpZiAocGFpbnRPZmZz
ZXQueCgpIDwgMCkKKyAgICAgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAgICAgaWYgKHBh
aW50T2Zmc2V0LnkoKSA8IDApCisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAg
IGlmIChwYWludE9mZnNldC54KCkgKyBkZXN0UmVjdC53aWR0aCgpID4gcGFpbnRSZWN0LndpZHRo
KCkpCisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIGlmIChwYWludE9mZnNl
dC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IHBhaW50UmVjdC5oZWlnaHQoKSkKKyAgICAgICAg
ICAgICAgICBDUkFTSCgpOworCisgICAgICAgICAgICBpZiAodGlsZS0+cGFydGlhbFVwZGF0ZSkK
KyAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZFBhcnRpYWxVcGRhdGUodGlsZS0+dGV4dHVy
ZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdXBkYXRlci5hcHBlbmRVcGRhdGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC01NjUsNyArNTI2LDcgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnJlc2VydmVUZXh0dXJlcygpCiAgICAgICAgICAgICAgICAgdGls
ZSA9IGNyZWF0ZVRpbGUoaSwgaik7CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRl
eHR1cmUoKS0+aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQot
ICAgICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3QodGls
ZSk7CisgICAgICAgICAgICAgICAgdGlsZS0+ZGlydHlSZWN0ID0gbV90aWxlci0+dGlsZVJlY3Qo
dGlsZSk7CiAKICAgICAgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+cmVzZXJ2
ZShtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTU4NCwyMiArNTQ1LDIwIEBAIFJlZ2lvbiBUaWxlZExheWVyQ2hyb21pdW06
OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3QKIAogdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnJlc2V0VXBkYXRlU3RhdGUoKQogewotICAgIC8vIFJlc2V0IG1fdXBkYXRlUmVjdCBm
b3IgYWxsIHRpbGVzLgogICAgIENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOwogICAgIGZvciAoQ0NMYXllclRpbGlu
Z0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3RpbGVyLT50aWxlcygpLmJl
Z2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGls
ZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwotICAg
ICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7Ci0gICAgICAgIHRpbGUtPm1fcGFy
dGlhbFVwZGF0ZSA9IGZhbHNlOwotICAgICAgICB0aWxlLT5tX3VwZGF0ZWQgPSBmYWxzZTsKKyAg
ICAgICAgdGlsZS0+dXBkYXRlUmVjdCA9IEludFJlY3QoKTsKKyAgICAgICAgdGlsZS0+cGFydGlh
bFVwZGF0ZSA9IGZhbHNlOworICAgICAgICB0aWxlLT51cGRhdGVkID0gZmFsc2U7CiAgICAgfQog
fQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJl
Y3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCit2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJSZWN0KENDVGV4dHVyZVVwZGF0ZXImIHVw
ZGF0ZXIsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
KiBvY2NsdXNpb24pCiB7CiAgICAgbV9za2lwc0RyYXcgPSBmYWxzZTsKICAgICBtX3NraXBzSWRs
ZVBhaW50ID0gZmFsc2U7Ci0gICAgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QgPSBJbnRSZWN0
KCk7Ci0gICAgbV9wYWludFJlY3QgPSBJbnRSZWN0KCk7CisgICAgbV9kaWRQYWludCA9IGZhbHNl
OwogCiAgICAgdXBkYXRlQm91bmRzKCk7CiAKQEAgLTYxMSwxMyArNTcwLDEzIEBAIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
LCBjb25zdCBDQ09jY2x1CiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBt
X3RpbGVyLT5sYXllclJlY3RUb1RpbGVJbmRpY2VzKGxheWVyUmVjdCwgbGVmdCwgdG9wLCByaWdo
dCwgYm90dG9tKTsKIAotICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3As
IHJpZ2h0LCBib3R0b20sIG9jY2x1c2lvbik7CisgICAgdXBkYXRlVGlsZXMoZmFsc2UsIGxlZnQs
IHRvcCwgcmlnaHQsIGJvdHRvbSwgdXBkYXRlciwgb2NjbHVzaW9uKTsKIH0KIAotdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKK3ZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjppZGxlVXBkYXRlTGF5ZXJSZWN0KENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIs
IGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2Ns
dXNpb24pCiB7Ci0gICAgLy8gQWJvcnQgaWYgd2UgaGF2ZSBhbHJlYWR5IHByZXBhcmVkIGEgcGFp
bnQgb3IgcnVuIG91dCBvZiBtZW1vcnkuCi0gICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQgfHwgIW1f
cGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAvLyBBYm9ydCBpZiB3ZSBoYXZlIGFscmVhZHkgcGFp
bnRlZCBvciBydW4gb3V0IG9mIG1lbW9yeS4KKyAgICBpZiAobV9za2lwc0lkbGVQYWludCB8fCBt
X2RpZFBhaW50KQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV90aWxlcik7CkBAIC02
NDEsMTcgKzYwMCwxNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRl
SWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IENDTwogCiAgICAgLy8gSWYgdGhl
IGxheWVyIGlzIG5vdCB2aXNpYmxlLCB3ZSBoYXZlIG5vdGhpbmcgdG8gZXhwYW5kIGZyb20sIHNv
IGluc3RlYWQgd2UgcHJlcGFpbnQgdGhlIG91dGVyLW1vc3Qgc2V0IG9mIHRpbGVzLgogICAgIGlm
IChsYXllclJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRy
dWUsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3AsIHByZXBhaW50UmlnaHQsIHByZXBhaW50VG9w
LCAwKTsKLSAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQ
YWludCkKKyAgICAgICAgdXBkYXRlVGlsZXModHJ1ZSwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRv
cCwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRUb3AsIHVwZGF0ZXIsIDApOworICAgICAgICBpZiAo
bV9kaWRQYWludCB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludExlZnQsIHByZXBhaW50Qm90
dG9tLCBwcmVwYWludFJpZ2h0LCBwcmVwYWludEJvdHRvbSwgMCk7Ci0gICAgICAgIGlmICghbV9w
YWludFJlY3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgIHVwZGF0ZVRp
bGVzKHRydWUsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRCb3R0b20sIHByZXBhaW50UmlnaHQsIHBy
ZXBhaW50Qm90dG9tLCB1cGRhdGVyLCAwKTsKKyAgICAgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9z
a2lwc0lkbGVQYWludCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcHJlcGFyZVRvVXBk
YXRlVGlsZXModHJ1ZSwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRMZWZ0LCBw
cmVwYWludEJvdHRvbSwgMCk7Ci0gICAgICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgpIHx8
IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgIHVwZGF0ZVRpbGVzKHRydWUsIHByZXBhaW50TGVm
dCwgcHJlcGFpbnRUb3AsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRCb3R0b20sIHVwZGF0ZXIsIDAp
OworICAgICAgICBpZiAobV9kaWRQYWludCB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBwcmVwYXJlVG9VcGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludFJp
Z2h0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b20sIDApOwotCisg
ICAgICAgIHVwZGF0ZVRpbGVzKHRydWUsIHByZXBhaW50UmlnaHQsIHByZXBhaW50VG9wLCBwcmVw
YWludFJpZ2h0LCBwcmVwYWludEJvdHRvbSwgdXBkYXRlciwgMCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTY1OSwzNCArNjE3LDM0IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVJZGxlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPCiAg
ICAgbV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRvcCwg
cmlnaHQsIGJvdHRvbSk7CiAKICAgICAvLyBPdGhlcndpc2UsIHByZXBhaW50IGFueXRoaW5nIHRo
YXQgd2FzIG9jY2x1ZGVkIGJ1dCBpbnNpZGUgdGhlIGxheWVyJ3MgdmlzaWJsZSByZWdpb24uCi0g
ICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCAw
KTsKLSAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSB8fCBtX3NraXBzSWRsZVBhaW50KQor
ICAgIHVwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgdXBkYXRlciwg
MCk7CisgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gVGhlbiBleHBhbmQgb3V0d2FyZHMgZnJvbSB0aGUgdmlzaWJsZSBhcmVh
IHVudGlsIHdlIGZpbmQgYSBkaXJ0eSByb3cgb3IgY29sdW1uIHRvIHVwZGF0ZS4KICAgICB3aGls
ZSAoIW1fc2tpcHNJZGxlUGFpbnQgJiYgKGxlZnQgPiBwcmVwYWludExlZnQgfHwgdG9wID4gcHJl
cGFpbnRUb3AgfHwgcmlnaHQgPCBwcmVwYWludFJpZ2h0IHx8IGJvdHRvbSA8IHByZXBhaW50Qm90
dG9tKSkgewogICAgICAgICBpZiAoYm90dG9tIDwgcHJlcGFpbnRCb3R0b20pIHsKICAgICAgICAg
ICAgICsrYm90dG9tOwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVm
dCwgYm90dG9tLCByaWdodCwgYm90dG9tLCAwKTsKLSAgICAgICAgICAgIGlmICghbV9wYWludFJl
Y3QuaXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgICAgICB1cGRhdGVUaWxl
cyh0cnVlLCBsZWZ0LCBib3R0b20sIHJpZ2h0LCBib3R0b20sIHVwZGF0ZXIsIDApOworICAgICAg
ICAgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAodG9wID4gcHJlcGFpbnRUb3ApIHsKICAg
ICAgICAgICAgIC0tdG9wOwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwg
bGVmdCwgdG9wLCByaWdodCwgdG9wLCAwKTsKLSAgICAgICAgICAgIGlmICghbV9wYWludFJlY3Qu
aXNFbXB0eSgpIHx8IG1fc2tpcHNJZGxlUGFpbnQpCisgICAgICAgICAgICB1cGRhdGVUaWxlcyh0
cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCB0b3AsIHVwZGF0ZXIsIDApOworICAgICAgICAgICAgaWYg
KG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBpZiAobGVmdCA+IHByZXBhaW50TGVmdCkgewogICAgICAgICAg
ICAgLS1sZWZ0OwotICAgICAgICAgICAgcHJlcGFyZVRvVXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwg
dG9wLCBsZWZ0LCBib3R0b20sIDApOwotICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0Vt
cHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKKyAgICAgICAgICAgIHVwZGF0ZVRpbGVzKHRydWUs
IGxlZnQsIHRvcCwgbGVmdCwgYm90dG9tLCB1cGRhdGVyLCAwKTsKKyAgICAgICAgICAgIGlmICht
X2RpZFBhaW50IHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHJpZ2h0IDwgcHJlcGFpbnRSaWdodCkgewogICAgICAgICAg
ICAgKytyaWdodDsKLSAgICAgICAgICAgIHByZXBhcmVUb1VwZGF0ZVRpbGVzKHRydWUsIHJpZ2h0
LCB0b3AsIHJpZ2h0LCBib3R0b20sIDApOwotICAgICAgICAgICAgaWYgKCFtX3BhaW50UmVjdC5p
c0VtcHR5KCkgfHwgbV9za2lwc0lkbGVQYWludCkKKyAgICAgICAgICAgIHVwZGF0ZVRpbGVzKHRy
dWUsIHJpZ2h0LCB0b3AsIHJpZ2h0LCBib3R0b20sIHVwZGF0ZXIsIDApOworICAgICAgICAgICAg
aWYgKG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KQEAgLTcxMSw4ICs2NjksNiBAQCBib29sIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6bmVlZHNJZGxlUGFpbnQoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgICAg
ICAgICAgLy8gSWYgdGhlIGxheWVyUmVjdCBpcyBlbXB0eSwgdGhlbiB3ZSBhcmUgcGFpbnRpbmcg
dGhlIG91dGVyLW1vc3Qgc2V0IG9mIHRpbGVzIG9ubHkuCiAgICAgICAgICAgICBpZiAobGF5ZXJS
ZWN0LmlzRW1wdHkoKSAmJiBpICE9IGxlZnQgJiYgaSAhPSByaWdodCAmJiBqICE9IHRvcCAmJiBq
ICE9IGJvdHRvbSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICht
X3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5jb250YWlucyhJbnRQb2ludChpLCBqKSkpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0g
dGlsZUF0KGksIGopOwogICAgICAgICAgICAgaWYgKCF0aWxlIHx8ICF0aWxlLT5tYW5hZ2VkVGV4
dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkgfHwg
dGlsZS0+aXNEaXJ0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uaAppbmRleCA4MWVlMjQ4YTc2OGZmOTlkZjg2Y2VjMGYxOGM0YTMwYmMw
YWNjN2RjLi42MDYwODkzZWNiM2QyOGQxNTg3MWNjMDZiOGQzMTM3NWUxZTllZTk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNDIsNyArNDIsNiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5UaWxlZExheWVyQ2hyb21pdW0oKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpAQCAtODksMTAgKzg4LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIHJlc2V0VXBkYXRlU3RhdGUoKTsKIAogICAgIC8vIFByZXBhcmUgZGF0
YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0
LgotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29u
c3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CisgICAgdm9pZCB1cGRhdGVMYXllclJlY3QoQ0NUZXh0
dXJlVXBkYXRlciYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyKik7CiAKICAgICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgdGhpcyB3aWxsIHRyeSB0byBw
YWludCBhZGRpdGlvbmFsIHN1cnJvdW5kaW5nIGNvbnRlbnQgaWYgaWRsZS4KLSAgICB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZUlkbGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBDQ09jY2x1
c2lvblRyYWNrZXIqKTsKKyAgICB2b2lkIGlkbGVVcGRhdGVMYXllclJlY3QoQ0NUZXh0dXJlVXBk
YXRlciYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
Kik7CiAKICAgICAvLyBBZnRlciBwcmVwYXJpbmcgYW4gdXBkYXRlLCByZXR1cm5zIHRydWUgaWYg
bW9yZSBwcmUtcGFpbnRpbmcgaXMgbmVlZGVkLgogICAgIGJvb2wgbmVlZHNJZGxlUGFpbnQoY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKQEAgLTExNCwyMyArMTEzLDE5IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCB0aWxlT25seU5lZWRzUGFydGlhbFVwZGF0ZShVcGRhdGFibGVUaWxlKik7CiAgICAg
Ym9vbCB0aWxlTmVlZHNCdWZmZXJlZFVwZGF0ZShVcGRhdGFibGVUaWxlKik7CiAKLSAgICB2b2lk
IHByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCBy
aWdodCwgaW50IGJvdHRvbSwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CisgICAgdm9pZCB1
cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBi
b3R0b20sIENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKIAog
ICAgIFVwZGF0YWJsZVRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7CiAgICAgVXBkYXRhYmxl
VGlsZSogY3JlYXRlVGlsZShpbnQsIGludCk7CiAKLSAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVs
ZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KCkuCi0gICAgSW50UmVjdCBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdDsKLQotICAgIC8vIFN0
YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygp
LiBUaGlzIHJlcHJlc2VudHMgdGhlIGFyZWEKLSAgICAvLyBvZiB0aGUgbGF5ZXIgdGhhdCBpcyBh
Y3R1YWxseSByZS1wYWludGVkIGJ5IFdlYktpdC4KLSAgICBJbnRSZWN0IG1fcGFpbnRSZWN0Owot
CiAgICAgR0MzRGVudW0gbV90ZXh0dXJlRm9ybWF0OwogICAgIGJvb2wgbV9za2lwc0RyYXc7CiAg
ICAgYm9vbCBtX3NraXBzSWRsZVBhaW50OwogICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBs
ZWRUZXhlbEZvcm1hdCBtX3NhbXBsZWRUZXhlbEZvcm1hdDsKIAorICAgIC8vIFRyYWNrcyBpZiB3
ZSd2ZSBkb25lIGFueSBwYWludGluZyBvbiB0aGlzIHVwZGF0ZSBjeWNsZS4KKyAgICBib29sIG1f
ZGlkUGFpbnQ7CisKICAgICBUaWxpbmdPcHRpb24gbV90aWxpbmdPcHRpb247CiAgICAgT3duUHRy
PENDTGF5ZXJUaWxpbmdEYXRhPiBtX3RpbGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDg3ZDAxNjg4NjZjMGE0NjNmYTJlM2I2NWUxNTQ5OWI0N2RmMjVlNzcuLjIw
ZmY1ZTFlYjgxNmRmOGFjMWE3ZTk1YzQyNjMxNzVhZTRlYjk5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmNwcApAQCAtNzEsOSArNzEsOSBAQCBib29sIFdlYkdMTGF5ZXJDaHJvbWl1
bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gTGF5ZXJDaHJvbWl1bTo6ZHJhd3ND
b250ZW50KCkgJiYgIW1fY29udGV4dExvc3Q7CiB9CiAKLXZvaWQgV2ViR0xMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIC8qIG9jY2x1
c2lvbiAqLykKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRl
ciYgdXBkYXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKikKIHsKLSAgICBpZiAoIWRyYXdz
Q29udGVudCgpIHx8ICFtX25lZWRzRGlzcGxheSkKKyAgICBpZiAoIWRyYXdzQ29udGVudCgpIHx8
ICFtX25lZWRzRGlzcGxheSB8fCAhbV9kcmF3aW5nQnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2RyYXdpbmdCdWZmZXItPnByZXBhcmVCYWNrQnVmZmVyKCk7CkBAIC04MiwxMiArODIs
NiBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
Q0NPY2NsdXNpb25UcmFja2VyKiAvKiBvY2NsdQogICAgIGNvbnRleHQoKS0+bWFya0xheWVyQ29t
cG9zaXRlZCgpOwogICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CiAgICAgbV9jb250ZXh0TG9z
dCA9IGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOwotfQotCi12b2lkIFdlYkdMTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIEND
VGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCi17Ci0gICAgaWYgKCFtX2RyYXdpbmdCdWZmZXIpCi0g
ICAgICAgIHJldHVybjsKIAogICAgIG1fdGV4dHVyZUlkID0gbV9kcmF3aW5nQnVmZmVyLT5mcm9u
dENvbG9yQnVmZmVyKCk7CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlci0+cmVxdWlyZXNDb3B5RnJv
bUJhY2tUb0Zyb250QnVmZmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDcx
MWMwYmU4MjQ3MmJhNTVhMDQyMjUxOGQ4M2EwMmMxY2NjZDZjOGQuLmRiODIxZDA5MDY1YmYyODky
NjRhNTVlOWM3NjExYjVjYjNhNzkxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBA
IC01MCw4ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTExheWVyQ2hyb21pdW0o
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1
cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CiAgICAgdmlydHVhbCB2b2lk
IHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5UmVjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgICBib29sIHBhaW50UmVuZGVyZWRS
ZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IDA4NmE2NzhiN2UxYjI3OGUyOTIwMzc3NmRkYjM4MzkyYjY1MzliZjQuLjhkNDdh
Nzk5YTlkNDJkZjlkNTZmY2M0OGI2M2UxYmU1ZWJhMjRlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcApAQCAtMTEwLDcgKzExMCw2IEBAIENDTGF5ZXJUcmVlSG9zdDo6fkNDTGF5
ZXJUcmVlSG9zdCgpCiAgICAgQVNTRVJUKG1fcHJveHkpOwogICAgIG1fcHJveHktPnN0b3AoKTsK
ICAgICBtX3Byb3h5LmNsZWFyKCk7Ci0gICAgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAgICAgbnVt
TGF5ZXJUcmVlSW5zdGFuY2VzLS07CiB9CiAKQEAgLTIyOSw3ICsyMjgsNiBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
IGhvc3RJbXBsKQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdENvbXBsZXRlKCkKIHsKICAg
ICBtX2RlbGV0ZVRleHR1cmVBZnRlckNvbW1pdExpc3QuY2xlYXIoKTsKLSAgICBjbGVhclBlbmRp
bmdVcGRhdGUoKTsKICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRl
eHR1cmVzKCk7CiAgICAgbV9jbGllbnQtPmRpZENvbW1pdCgpOwogfQpAQCAtNDIxLDcgKzQxOSw3
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAgIHN0YXRpY19jYXN0PEND
U2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRlbHko
KTsKIH0KIAotYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCitib29sIENDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAg
ICAgaWYgKCFtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCkgewogICAgICAgICBpbml0aWFsaXpl
TGF5ZXJSZW5kZXJlcigpOwpAQCAtNDQwLDExICs0MzgsMTEgQEAgYm9vbCBDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVycygpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkpOworICAg
IHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSwgdXBkYXRlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9v
dExheWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVt
KiByb290TGF5ZXIsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgVFJBQ0VfRVZF
TlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CiAKQEAgLTQ1NSwx
MCArNDUzLDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9t
aXVtKiByb290TGF5ZXIpCiAgICAgSW50UmVjdCByb290Q2xpcFJlY3QoSW50UG9pbnQoKSwgdmll
d3BvcnRTaXplKCkpOwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJlY3Qocm9vdENsaXBSZWN0KTsK
IAotICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMg
d2Fzbid0IGNhbGxlZCBhZnRlcgotICAgIC8vIHVwZGF0ZUxheWVycy4gT25seSBvbmUgdXBkYXRl
IGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgotICAgIEFTU0VSVCghbV91cGRhdGVM
aXN0LnNpemUoKSk7Ci0gICAgbV91cGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOworICAgIExh
eWVyTGlzdCB1cGRhdGVMaXN0OworICAgIHVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CiAK
ICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9vdExheWVy
LT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0
KCk7CkBAIC00NjYsMTUgKzQ2MiwxNSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5
ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
ZGVudGl0eU1hdHJpeDsKICAgICB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9v
dExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRh
dGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1v
bjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExh
eWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHVwZGF0ZUxpc3QsIHJvb3RSZW5k
ZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRl
eHR1cmVTaXplKTsKICAgICB9CiAKICAgICAvLyBSZXNldCBwYXJ0aWFsIHRleHR1cmUgdXBkYXRl
IHJlcXVlc3RzLgogICAgIG1fcGFydGlhbFRleHR1cmVVcGRhdGVSZXF1ZXN0cyA9IDA7CiAKLSAg
ICByZXNlcnZlVGV4dHVyZXMoKTsKKyAgICByZXNlcnZlVGV4dHVyZXModXBkYXRlTGlzdCk7CiAK
LSAgICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVMaXN0LCBQYWludFZpc2libGUpOworICAg
IHBhaW50TGF5ZXJDb250ZW50cyh1cGRhdGVMaXN0LCBQYWludFZpc2libGUsIHVwZGF0ZXIpOwog
ICAgIGlmICghbV90cmlnZ2VySWRsZVBhaW50cykKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODgs
MTcgKzQ4NCwyMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hy
b21pdW0qIHJvb3RMYXllcikKICAgICAvLyBvdGhlcndpc2UgaXQgd2lsbCBhbHdheXMgcHVzaCB1
cyB0b3dhcmRzIHRoZSBtYXhpbXVtIGxpbWl0LgogICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdl
ci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhwcmVmZXJyZWRMaW1pdEJ5dGVzKTsKICAgICAvLyBU
aGUgc2Vjb25kIChpZGxlKSBwYWludCB3aWxsIGJlIGEgbm8tb3AgaW4gbGF5ZXJzIHdoZXJlIHBh
aW50aW5nIGFscmVhZHkgb2NjdXJlZCBhYm92ZS4KLSAgICBwYWludExheWVyQ29udGVudHMobV91
cGRhdGVMaXN0LCBQYWludElkbGUpOworICAgIHBhaW50TGF5ZXJDb250ZW50cyh1cGRhdGVMaXN0
LCBQYWludElkbGUsIHVwZGF0ZXIpOwogICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0
TWF4TWVtb3J5TGltaXRCeXRlcyhtYXhMaW1pdEJ5dGVzKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdXBkYXRlTGlzdC5zaXplKCk7ICsraSkKKyAgICAgICAgdXBkYXRlTGlzdFtpXS0+
Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpyZXNlcnZl
VGV4dHVyZXMoKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnJlc2VydmVUZXh0dXJlcyhjb25zdCBM
YXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0
J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgogICAgIHR5cGVkZWYgQ0NM
YXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9G
cm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5k
ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZtX3VwZGF0ZUxpc3QpOwotICAgIGZvciAoQ0NM
YXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX3VwZGF0
ZUxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9
IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmdXBkYXRlTGlzdCk7CisgICAgZm9yIChDQ0xheWVy
SXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnVwZGF0ZUxpc3Qp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKCFpdC5yZXByZXNlbnRzSXRzZWxmKCkg
fHwgIWl0LT5hbHdheXNSZXNlcnZlVGV4dHVyZXMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBpdC0+cmVzZXJ2ZVRleHR1cmVzKCk7CkBAIC01MDYsMTcgKzUwNSwxNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1cmVzKCkKIH0KIAogLy8gc3RhdGljCi12b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5
ZXIsIFBhaW50VHlwZSBwYWludFR5cGUsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVz
aW9uKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZShMYXllckNocm9taXVtKiBsYXllciwg
UGFpbnRUeXBlIHBhaW50VHlwZSwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCiB7CiAgICAgQVNTRVJUKGxheWVyKTsKICAgICBB
U1NFUlQoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSB8fCBQYWludElkbGUgPT0gcGFpbnRUeXBl
KTsKICAgICBpZiAoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSkKLSAgICAgICAgbGF5ZXItPnBh
aW50Q29udGVudHNJZkRpcnR5KG9jY2x1c2lvbik7CisgICAgICAgIGxheWVyLT51cGRhdGUodXBk
YXRlciwgb2NjbHVzaW9uKTsKICAgICBlbHNlCi0gICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250
ZW50c0lmRGlydHkob2NjbHVzaW9uKTsKKyAgICAgICAgbGF5ZXItPmlkbGVVcGRhdGUodXBkYXRl
ciwgb2NjbHVzaW9uKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza3NGb3JS
ZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgUGFpbnRUeXBl
IHBhaW50VHlwZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tzRm9yUmVuZGVyU3Vy
ZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIsIFBhaW50VHlwZSBwYWludFR5
cGUsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgLy8gTm90ZTogTWFza3MgYW5k
IHJlcGxpY2FzIG9ubHkgZXhpc3QgZm9yIGxheWVycyB0aGF0IG93biByZW5kZXIgc3VyZmFjZXMu
IElmIHdlIHJlYWNoIHRoaXMgcG9pbnQKICAgICAvLyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtub3cg
dGhhdCBhdCBsZWFzdCBzb21ldGhpbmcgd2lsbCBiZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVyIHN1
cmZhY2UsIHNvIHRoZQpAQCAtNTI1LDE3ICs1MjQsMTcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50TWFza3NGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VM
YXkKICAgICBMYXllckNocm9taXVtKiBtYXNrTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPm1h
c2tMYXllcigpOwogICAgIGlmIChtYXNrTGF5ZXIpIHsKICAgICAgICAgbWFza0xheWVyLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVuZGVyU3VyZmFjZUxheWVyLT5j
b250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkobWFza0xheWVy
LCBwYWludFR5cGUsIDApOworICAgICAgICB1cGRhdGUobWFza0xheWVyLCBwYWludFR5cGUsIHVw
ZGF0ZXIsIDApOwogICAgIH0KIAogICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FNYXNrTGF5ZXIg
PSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpID8gcmVuZGVyU3VyZmFjZUxheWVy
LT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCkgOiAwOwogICAgIGlmIChyZXBsaWNhTWFza0xh
eWVyKSB7CiAgICAgICAgIHJlcGxpY2FNYXNrTGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50
UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOwot
ICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTWFza0xheWVyLCBwYWludFR5cGUs
IDApOworICAgICAgICB1cGRhdGUocmVwbGljYU1hc2tMYXllciwgcGFpbnRUeXBlLCB1cGRhdGVy
LCAwKTsKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVu
dHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBQYWludFR5cGUgcGFp
bnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBM
YXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFBhaW50VHlwZSBwYWludFR5cGUsIEND
VGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgLy8gVXNlIEZyb250VG9CYWNrIHRvIGFs
bG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9ybWluZyBjdWxsaW5nIGR1cmluZyB0
aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0s
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBD
Q0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsK
QEAgLTU1MCwxMiArNTQ5LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29u
dGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAg
ICBBU1NFUlQoaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSB8fCBpdC0+cmVuZGVy
U3VyZmFjZSgpLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOwogCiAgICAgICAgICAgICBvY2Ns
dXNpb25UcmFja2VyLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZSgqaXQsIGl0LT5yZW5kZXJT
dXJmYWNlKCkpOwotICAgICAgICAgICAgcGFpbnRNYXNrc0ZvclJlbmRlclN1cmZhY2UoKml0LCBw
YWludFR5cGUpOworICAgICAgICAgICAgcGFpbnRNYXNrc0ZvclJlbmRlclN1cmZhY2UoKml0LCBw
YWludFR5cGUsIHVwZGF0ZXIpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNl
bGYoKSkgewogICAgICAgICAgICAgQVNTRVJUKCFpdC0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKIAog
ICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoaXQt
PnRhcmdldFJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0
eSgqaXQsIHBhaW50VHlwZSwgJm9jY2x1c2lvblRyYWNrZXIpOworICAgICAgICAgICAgdXBkYXRl
KCppdCwgcGFpbnRUeXBlLCB1cGRhdGVyLCAmb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgICAgICAg
ICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKCppdCk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5sZWF2ZVRvVGFyZ2V0UmVuZGVy
U3VyZmFjZShpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpKTsK
QEAgLTU2NCwzOCArNTYzLDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250
ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICBvY2NsdXNp
b25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnJlY29yZE1ldHJpY3ModGhpcyk7CiB9CiAKLXZv
aWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQotewotICAgIC8vIFVz
ZSBCYWNrVG9Gcm9udCBzaW5jZSBpdCdzIGNoZWFwIGFuZCB0aGlzIGlzbid0IG9yZGVyLWRlcGVu
ZGVudC4KLSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7Ci0KLSAgICBD
Q0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmbV91cGRh
dGVMaXN0KTsKLSAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0
b3JUeXBlOjpiZWdpbigmbV91cGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAg
IGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpKSB7Ci0gICAgICAgICAgICBB
U1NFUlQoaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSB8fCBpdC0+cmVuZGVyU3Vy
ZmFjZSgpLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOwotICAgICAgICAgICAgaWYgKGl0LT5t
YXNrTGF5ZXIoKSkKLSAgICAgICAgICAgICAgICBpdC0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0KLSAgICAgICAgICAgIGlmIChpdC0+
cmVwbGljYUxheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBpdC0+cmVwbGljYUxheWVyKCktPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAg
ICAgaWYgKGl0LT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGl0LT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXQucmVwcmVzZW50c0l0c2VsZigpKQotICAgICAgICAgICAgaXQtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgfQotfQotCi12b2lkIENDTGF5ZXJU
cmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkKLXsKLSAgICBmb3IgKHNpemVfdCBzdXJmYWNl
SW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3VwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJ
bmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fdXBkYXRlTGlzdFtzdXJm
YWNlSW5kZXhdLmdldCgpOwotICAgICAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
Ci0gICAgICAgIGxheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKLSAgICB9Ci0gICAgbV91cGRh
dGVMaXN0LmNsZWFyKCk7Ci19Ci0KIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFu
ZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmIGluZm8pCiB7CiAgICAgLy8gRklYTUU6
IHB1c2hpbmcgc2Nyb2xsIG9mZnNldHMgdG8gbm9uLXJvb3QgbGF5ZXJzIG5vdCBpbXBsZW1lbnRl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA5YmE2MDFkZTQyMThmYjc4ZWVjMzUx
OWRmOTQxMzhlOTNlYWVkMWUxLi43OWUxYzE5NTExMTYzNTM2M2IyZTlmNDZmMGIxMmM4OWNhMmMw
Y2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTU2LDcgKzE1Niw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKSB7IG1fY2xpZW50LT5kaWRD
b21wbGV0ZVN3YXBCdWZmZXJzKCk7IH0KICAgICB2b2lkIGRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNP
bkltcGxUaHJlYWQoVGV4dHVyZUFsbG9jYXRvciopOwogICAgIC8vIFJldHVybnMgZmFsc2UgaWYg
d2Ugc2hvdWxkIGFib3J0IHRoaXMgZnJhbWUgZHVlIHRvIGluaXRpYWxpemF0aW9uIGZhaWx1cmUu
Ci0gICAgYm9vbCB1cGRhdGVMYXllcnMoKTsKKyAgICBib29sIHVwZGF0ZUxheWVycyhDQ1RleHR1
cmVVcGRhdGVyJik7CiAKICAgICBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCgpIHsgcmV0
dXJuIG1fY2xpZW50OyB9CiAKQEAgLTIxMiw3ICsyMTIsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBi
b29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYyk7CiAKLSAgICB2
b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1
cmVVcGRhdGVyJik7CiAgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xs
QW5kU2NhbGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0
M0QqKTsKICAgICB2b2lkIHN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwpAQCAt
MjMxLDE0ICsyMzAsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVMYXllclJlbmRl
cmVyKCk7CiAKICAgICBlbnVtIFBhaW50VHlwZSB7IFBhaW50VmlzaWJsZSwgUGFpbnRJZGxlIH07
Ci0gICAgc3RhdGljIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSosIFBh
aW50VHlwZSwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7Ci0gICAgdm9pZCBwYWludExheWVy
Q29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlKTsKLSAgICB2b2lkIHBhaW50TWFz
a3NGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUpOworICAgIHN0YXRp
YyB2b2lkIHVwZGF0ZShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlLCBDQ1RleHR1cmVVcGRhdGVy
JiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7CisgICAgdm9pZCBwYWludExheWVyQ29udGVu
dHMoY29uc3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAg
dm9pZCBwYWludE1hc2tzRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwgUGFpbnRUeXBl
LCBDQ1RleHR1cmVVcGRhdGVyJik7CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9t
aXVtKik7CisgICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSosIENDVGV4dHVyZVVw
ZGF0ZXImKTsKICAgICAvLyBQcmUtcmVzZXJ2ZSB0ZXh0dXJlcyBmb3IgYW55IGxheWVyIG1hcmtl
ZCAiYWx3YXlzIHJlc2VydmUgdGV4dHVyZXMiCi0gICAgdm9pZCByZXNlcnZlVGV4dHVyZXMoKTsK
LSAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOworICAgIHZvaWQgcmVzZXJ2ZVRleHR1cmVz
KGNvbnN0IExheWVyTGlzdCYpOwogCiAgICAgdm9pZCBhbmltYXRlTGF5ZXJzKGRvdWJsZSBtb25v
dG9uaWNUaW1lKTsKICAgICBib29sIGFuaW1hdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1
bSogY3VycmVudCwgZG91YmxlIG1vbm90b25pY1RpbWUpOwpAQCAtMjYyLDggKzI2MCw2IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0
cjxUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyOwogCi0gICAgTGF5ZXJM
aXN0IG1fdXBkYXRlTGlzdDsKLQogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKIAogICAgIElu
dFNpemUgbV92aWV3cG9ydFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
Y3BwCmluZGV4IDU3ZjBjMjA2MzZiNjk0MGRkM2MwODM2ZTFhZDI5MGU2ZWJmYTIzNDguLjkyMjNj
NWY2YjAwZDFlZGQxZWE2MzQ2MGM5ZjA5OTlhNGRmZGJkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBDQ1NpbmdsZVRo
cmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGUoKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi12b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKK3ZvaWQgQ0NTaW5nbGVU
aHJlYWRQcm94eTo6ZG9Db21taXQoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICBB
U1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAgIC8vIENvbW1pdCBpbW1lZGlhdGVs
eQpAQCAtMjAwLDggKzIwMCw2IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQo
KQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0
SW1wbC5nZXQoKSk7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKLSAgICAgICAg
bV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRleHQoKSwgdXBkYXRlcik7CiAgICAgICAgIHVwZGF0ZXIudXBkYXRlKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNU
ZXh0dXJlQWxsb2NhdG9yKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+
dGV4dHVyZUNvcGllcigpLCBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgICAg
IEFTU0VSVCghdXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0SW1wbC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CkBAIC0yODcs
MTAgKzI4NSwxMiBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKCkK
IHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKCFtX2xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpKQorICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRl
cjsKKworICAgIGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGRvQ29tbWl0KCk7CisgICAgZG9Db21taXQodXBk
YXRlcik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuaAppbmRleCA5ODg3NDMyZWJhZDZlNTNjZTQwNTI2YzYwZTEyMDExNjA2MTYzMTRlLi45
NjExMGMzMjg5MDEwOWFlNmMxZGM2OGIzYWIwYjhmODkxMjZlNzMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgQ0NTaW5nbGVUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIAogICAgIGJvb2wg
Y29tbWl0SWZOZWVkZWQoKTsKLSAgICB2b2lkIGRvQ29tbWl0KCk7CisgICAgdm9pZCBkb0NvbW1p
dChDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgYm9vbCBkb0NvbXBvc2l0ZSgpOwogICAgIHZvaWQg
ZGlkU3dhcEZyYW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNWJkZWU0
ZTk3MjJmODhhYjY2MmFiYmM0Y2E3MmE0MTY1ZWI0NWJiNC4uZGJkY2E2YTdkMDUzOGQwNDg1ZTE5
MTEzZWQ5NzE2NzUxZDdhNTFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTQx
Miw2ICs0MTIsOCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJh
bWUoKQogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0ID0gYWRvcHRQdHIobmV3IEJlZ2lu
RnJhbWVBbmRDb21taXRTdGF0ZSgpKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+
bW9ub3RvbmljRnJhbWVCZWdpblRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsK
ICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+c2Nyb2xsSW5mbyA9IG1fbGF5ZXJUcmVl
SG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKKyAgICBtX2N1cnJlbnRUZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKTsKKyAgICBt
X3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+dXBkYXRlciA9IG1fY3VycmVudFRleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkLmdldCgpOwogCiAgICAgbV9tYWluVGhyZWFkUHJveHktPnBvc3RUYXNr
KGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSkpOwog
CkBAIC00NjUsNyArNDY3LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAg
ICAvLyB1cGRhdGVMYXllcnMuCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotICAg
IGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKSkKKyAgICBpZiAoIW1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCpyZXF1ZXN0LT51cGRhdGVyKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5pbWF0ZSwg
d2Ugc2V0IG1fYW5pbWF0ZVJlcXVlc3RlZCB0byBmYWxzZS4KQEAgLTQ5NSw2ICs0OTcsNyBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCogY29tcGxldGlvbgogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAg
QVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJP
bkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CisKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9z
dEltcGwpIHsKICAgICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTUwMiwxMCArNTA1LDYgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxl
dGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29t
bWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKIAotICAgIEFTU0VS
VCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIp
OwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCk7Ci0KICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRl
KCk7CiB9CiAKQEAgLTUzNCwxMyArNTMzLDEzIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvbkNvbW1pdCgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvbkNvbW1pdCIsIHRoaXMsIDApOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQo
KSk7CiAgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKICAg
ICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBk
YXRlcygpKTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQp
OwogCiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKIAot
CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIAogICAgIG1fbGF5ZXJU
cmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMzVmZTFkYmFmZjQwYjRhNmUyZGY5ZmNk
ODRkMjJmOTI1NjBjOWIzNy4uYTM4MzEyZGU1NjA1NTYyNGJiZTdhYmE4Yzc3Yzg3ZWQ1NjI0MTIw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtOTQsOSArOTQsMTUgQEAgcHJpdmF0ZToK
IAogICAgIC8vIFNldCBvbiBpbXBsIHRocmVhZCwgcmVhZCBvbiBtYWluIHRocmVhZC4KICAgICBz
dHJ1Y3QgQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlIHsKLSAgICAgICAgQmVnaW5GcmFtZUFuZENv
bW1pdFN0YXRlKCkgOiBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSgpIHsgfQorICAgICAgICBCZWdp
bkZyYW1lQW5kQ29tbWl0U3RhdGUoKQorICAgICAgICAgICAgOiBtb25vdG9uaWNGcmFtZUJlZ2lu
VGltZSgwKQorICAgICAgICAgICAgLCB1cGRhdGVyKDApCisgICAgICAgIHsKKyAgICAgICAgfQor
CiAgICAgICAgIGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZTsKICAgICAgICAgT3duUHRy
PENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm87CisgICAgICAgIENDVGV4dHVyZVVwZGF0
ZXIqIHVwZGF0ZXI7CiAgICAgfTsKICAgICBPd25QdHI8QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRl
PiBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNGExNGRjYjU2MzQz
NjM0M2RmOWY3NGU3N2NmZDBhMjI3MGU2YmVmNS4uNjdjNmU5YTlmODZjMTZkMjgxOWJiZTIyMGYx
MDgxMDQzNTQ3YmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJD
Q0FuaW1hdGlvblRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ09jY2x1c2lvblRyYWNrZXJUZXN0
Q29tbW9uLmgiCisjaW5jbHVkZSAiQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIgogI2luY2x1ZGUg
IkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJDb250ZW50
TGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKQEAgLTE0Mjks
MzMgKzE0MzAsMjMgQEAgcHVibGljOgogICAgIGludCBpZGxlUGFpbnRDb250ZW50c0NvdW50KCkg
eyByZXR1cm4gbV9pZGxlUGFpbnRDb250ZW50c0NvdW50OyB9CiAgICAgdm9pZCByZXNldFBhaW50
Q29udGVudHNDb3VudCgpIHsgbV9wYWludENvbnRlbnRzQ291bnQgPSAwOyBtX2lkbGVQYWludENv
bnRlbnRzQ291bnQgPSAwO30KIAotICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fdXBk
YXRlQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291bnQg
PSAwOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24pCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1Rl
eHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lv
bikKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eShvY2NsdXNpb24pOworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlKHVw
ZGF0ZXIsIG9jY2x1c2lvbik7CiAgICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CiAgICAg
fQogCi0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09j
Y2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVVwZGF0ZShD
Q1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1
c2lvbikKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250
ZW50c0lmRGlydHkob2NjbHVzaW9uKTsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06Omlk
bGVVcGRhdGUodXBkYXRlciwgb2NjbHVzaW9uKTsKICAgICAgICAgbV9pZGxlUGFpbnRDb250ZW50
c0NvdW50Kys7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0
ZXIpCi0gICAgewotICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgbV91cGRhdGVDb3VudCsrOwot
ICAgIH0KLQogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZyhDb250ZW50TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgICAgIDog
Q29udGVudExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCiAgICAgICAgICwgbV9wYWludENvbnRlbnRz
Q291bnQoMCkKICAgICAgICAgLCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQoMCkKLSAgICAgICAg
LCBtX3VwZGF0ZUNvdW50KDApCiAgICAgewogICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwg
MTApKTsKICAgICAgICAgc2V0SXNEcmF3YWJsZSh0cnVlKTsKQEAgLTE0NjMsNyArMTQ1NCw2IEBA
IHByaXZhdGU6CiAKICAgICBpbnQgbV9wYWludENvbnRlbnRzQ291bnQ7CiAgICAgaW50IG1faWRs
ZVBhaW50Q29udGVudHNDb3VudDsKLSAgICBpbnQgbV91cGRhdGVDb3VudDsKIH07CiAKIC8vIExh
eWVyIG9wYWNpdHkgY2hhbmdlIGR1cmluZyBwYWludCBzaG91bGQgbm90IHByZXZlbnQgY29tcG9z
aXRvciByZXNvdXJjZXMgZnJvbSBiZWluZyB1cGRhdGVkIGR1cmluZyBjb21taXQuCkBAIC0xNDkw
LDE3ICsxNDgwLDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQog
ICAgIHsKLSAgICAgICAgLy8gcGFpbnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQgaGF2ZSBiZWVu
IGNhbGxlZCBvbmNlLgorICAgICAgICAvLyB1cGRhdGUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxl
ZCBvbmNlLgogICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENv
bnRlbnRzQ291bnQoKSk7CiAKLSAgICAgICAgLy8gaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkg
c2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZQorICAgICAgICAvLyBpZGxlVXBkYXRlKCkgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZQogICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVD
aGVja0xheWVyLT5pZGxlUGFpbnRDb250ZW50c0NvdW50KCkpOwogCi0gICAgICAgIC8vIHVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQot
ICAgICAgICAvLyBhbW91dCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzSWZEaXJ0eSgpLgotICAg
ICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSwK
LSAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlQ291bnQoKSk7Ci0K
ICAgICAgICAgLy8gY2xlYXIgbV91cGRhdGVDaGVja0xheWVyIHNvIENDTGF5ZXJUcmVlSG9zdCBk
aWVzLgogICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXIuY2xlYXIoKTsKICAgICB9CkBAIC0xNTI5
LDcgKzE1MTQsOCBAQCBwdWJsaWM6CiAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplKDEwLCAx
MCk7CiAgICAgICAgIGxheWVyVHJlZUhvc3QoKS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6
ZSk7CiAKLSAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAg
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAgICAgICBsYXllclRyZWVIb3N0KCktPnVwZGF0
ZUxheWVycyh1cGRhdGVyKTsKIAogICAgICAgICBFWFBFQ1RfRVEodmlld3BvcnRTaXplLCBsYXll
clRyZWVIb3N0KCktPnZpZXdwb3J0U2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRKFRleHR1cmVN
YW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpLCBsYXllclRyZWVIb3N0KCktPmNv
bnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+bWF4TWVtb3J5TGltaXRCeXRlcygpKTsKQEAgLTE3MTgs
OSArMTcwNCw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIE51bWJlciBvZiB0ZXh0dXJlcyB1
c2VkIGZvciBjb21taXQgc2hvdWxkIHN0aWxsIGJlIHR3by4KICAgICAgICAgICAgIEVYUEVDVF9F
USgyLCBjb250ZXh0LT5udW1Vc2VkVGV4dHVyZXMoKSk7CiAgICAgICAgICAgICAvLyBGaXJzdCB0
ZXh0dXJlIHNob3VsZCBub3QgaGF2ZSBiZWVuIHVzZWQuCi0gICAgICAgICAgICBFWFBFQ1RfRkFM
U0UoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgwKSkpOworICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4dHVyZSgwKSkp
OwogICAgICAgICAgICAgLy8gU2Vjb25kIHRleHR1cmUgc2hvdWxkIGhhdmUgYmVlbiB1c2VkLgot
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoY29udGV4dC0+dXNlZFRleHR1cmUoY29udGV4dC0+dGV4
dHVyZSgxKSkpOworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGNvbnRleHQtPnVzZWRUZXh0dXJl
KGNvbnRleHQtPnRleHR1cmUoMSkpKTsKICAgICAgICAgICAgIC8vIE5ldyB0ZXh0dXJlcyBzaG91
bGQgaGF2ZSBiZWVuIHVzZWQuCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShjb250ZXh0LT51c2Vk
VGV4dHVyZShjb250ZXh0LT50ZXh0dXJlKDIpKSk7CiAKQEAgLTE3OTIsNyArMTc3OCw3IEBAIGNs
YXNzIFRlc3RMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlc3RMYXllckNocm9taXVtPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgVGVzdExheWVyQ2hyb21pdW0oKSk7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lv
bikKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09j
Y2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbikKICAgICB7CiAgICAgICAgIC8vIEdhaW4gYWNjZXNz
IHRvIGludGVybmFscyBvZiB0aGUgQ0NPY2NsdXNpb25UcmFja2VyLgogICAgICAgICBjb25zdCBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VyKiB0ZXN0T2NjbHVzaW9uID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
VGVzdENDT2NjbHVzaW9uVHJhY2tlcio+KG9jY2x1c2lvbik7CkBAIC0xODUzLDcgKzE4MzksOCBA
QCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExh
eWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVy
LT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Cisg
ICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0
LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0
Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIGdyYW5kQ2hp
bGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0xODcwLDcgKzE4NTcsNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExh
eWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVy
LT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Cisg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgpLCBncmFuZENoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkp
OwpAQCAtMTg4OCw3ICsxODc1LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwog
CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRT
Y3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE5MDgsNyArMTg5NSw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsK
LSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCks
IGdyYW5kQ2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0xOTMwLDcg
KzE5MTcsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5
ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUo
cm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBncmFuZENoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCku
Ym91bmRzKCkpOwpAQCAtMTk1Miw3ICsxOTM5LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21w
bGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgY2hpbGQyLT5vY2Ns
dWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwpAQCAtMTk3NSw3ICsxOTYyLDcgQEAgcHVibGlj
OgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRz
KCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE5
OTgsNyArMTk4NSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJv
b3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0
U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRh
dGVMYXllcnMoKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRl
cik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIGNoaWxkMi0+b2NjbHVkZWRTY3JlZW5TcGFjZSgp
LmJvdW5kcygpKTsKQEAgLTIwNTksNyArMjA0Niw4IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9s
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1
cGRhdGVyOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1cGRhdGVyKTsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91
bmRzKCkpOwpAQCAtMjA4Niw3ICsyMDc0LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0
ZUxheWVycyh1cGRhdGVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0
ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRl
ZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwpAQCAtMjE0Niw3ICsyMTM0LDggQEAgcHVibGljOgog
CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKGxheWVyc1swXS5nZXQoKSk7
CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKGxheWVyc1swXS0+Ym91
bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgICAg
ICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBk
YXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBs
ZXRlKCk7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1TdXJmYWNlcy0xOyArK2kp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVy
VGVzdENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXll
clRlc3RDb21tb24uY3BwCmluZGV4IGY3ZDc4OTRiNzA0NmY3ZjdlZjhlNGE4MmQxYjZiZmYwZDlh
N2QzNjMuLjMzNDUzN2Q0NGIxOWJkM2U0NDczNzIwYWNkMzQxZTMxNDNmYWUzNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29t
bW9uLmNwcApAQCAtMTE2LDkgKzExNiw5IEBAIHZvaWQgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6
c2V0TmVlZHNEaXNwbGF5UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgVGlsZWRMYXll
ckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXlSZWN0KHJlY3QpOwogfQogCi12b2lkIEZha2VUaWxl
ZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IENDT2NjbHVzaW9uVHJh
Y2tlciogb2NjbHVzaW9uKQordm9pZCBGYWtlVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGUoQ0NU
ZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNp
b24pCiB7Ci0gICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSwgb2NjbHVzaW9u
KTsKKyAgICB1cGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZUxheWVyUmVjdCgpLCBvY2Ns
dXNpb24pOwogfQogCiBGYWtlVGlsZWRMYXllcldpdGhTY2FsZWRCb3VuZHM6OkZha2VUaWxlZExh
eWVyV2l0aFNjYWxlZEJvdW5kcyhUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21t
b24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1v
bi5oCmluZGV4IDgxYmQxMTQxMDA4N2RjNGE2MmRiMmQzYjRlOWVmZmRhZmE0NmNjYjAuLjI5NzRk
YWZhYjFkZmViODZjOGI5MmFiYjFiZWI4MmU0NTU4MDk5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oCkBAIC0xMTAs
OCArMTEwLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJDb3JlOjpJbnRTaXplIHRpbGVTaXpl
KCkgeyByZXR1cm4gV2ViQ29yZTo6SW50U2l6ZSgxMDAsIDEwMCk7IH0KIAogICAgIHVzaW5nIFdl
YkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6aW52YWxpZGF0ZVJlY3Q7Ci0gICAgdXNpbmcgV2Vi
Q29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGU7Ci0gICAgdXNpbmcgV2Vi
Q29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlOworICAgIHVzaW5n
IFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJSZWN0OworICAgIHVzaW5n
IFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6aWRsZVVwZGF0ZUxheWVyUmVjdDsKICAgICB1
c2luZyBXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06Om5lZWRzSWRsZVBhaW50OwogICAgIHVz
aW5nIFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6c2tpcHNEcmF3OwogICAgIHVzaW5nIFdl
YkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6bnVtUGFpbnRlZFRpbGVzOwpAQCAtMTIxLDcgKzEy
MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGxhc3ROZWVkc0Rp
c3BsYXlSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TmVlZHNEaXNwbGF5UmVjdDsgfQogCiAg
ICAgLy8gVXBkYXRlcyB0aGUgdmlzaWJsZUxheWVyUmVjdCgpLgotICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXIqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXImLCBjb25z
dCBXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXIqKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6
VGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJl
TWFuYWdlcjsgfQogICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKiBmYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpIHsgcmV0dXJuIG1fZmFrZVRleHR1cmVVcGRhdGVyLmdldCgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21p
dW1UZXN0LmNwcAppbmRleCAxNmQxNzRmNWZlMDI1NzRmMmRmMzlmNTcxMmViZDZmMDU0NDlkMzg1
Li5hMGY4MDA2ZTQ3MmUzZmNlOGM5NThmZGZkZmNjZmU4NzdkNjA3MzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgT3duUHRy
PEZha2VDQ0xheWVyVHJlZUhvc3Q+IGxheWVyVHJlZUhvc3QoRmFrZUNDTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlKCkpOwogICAgICAgICAvLyBGb3JjZSBhbiB1cGRhdGUsIHNvIHRoYXQgd2UgZ2V0IGEg
dmFsaWQgVGV4dHVyZU1hbmFnZXIuCi0gICAgICAgIGxheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cygpOworICAgICAgICBsYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAKICAg
ICAgICAgY29uc3QgV2ViR0xJZCBiYWNrVGV4dHVyZUlkID0gMTsKICAgICAgICAgY29uc3QgV2Vi
R0xJZCBmcm9udFRleHR1cmVJZCA9IDI7CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgICAgIGNhbnZhcy0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOwotICAgICAgICBjYW52YXMtPnBhaW50Q29udGVudHNJ
ZkRpcnR5KDApOworICAgICAgICBjYW52YXMtPnVwZGF0ZSh1cGRhdGVyLCAwKTsKICAgICAgICAg
RVhQRUNUX0ZBTFNFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOwogICAgICAgICB7CiAgICAgICAg
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKQEAgLTE1Myw3
ICsxNTMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBPd25QdHI8Q0NMYXllckltcGw+IGxh
eWVySW1wbCA9IGNhbnZhcy0+Y3JlYXRlQ0NMYXllckltcGwoKTsKICAgICAgICAgICAgIEVYUEVD
VF9FUSgwdSwgc3RhdGljX2Nhc3Q8Q0NUZXh0dXJlTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgp
KS0+dGV4dHVyZUlkKCkpOwogCi0gICAgICAgICAgICBjYW52YXMtPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoaW1wbENvbnRleHQuZ2V0KCksIHVwZGF0ZXIpOwogICAgICAgICAgICAgdXBkYXRl
ci51cGRhdGUoaW1wbENvbnRleHQuZ2V0KCksICZhbGxvY2F0b3JNb2NrLCAmY29waWVyTW9jaywg
MSk7CiAgICAgICAgICAgICBjYW52YXMtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHAKaW5kZXggYzM2ZTUxYTMwZGFhOTgyODlmMjFkZDBiOWE3NmNkN2Nh
MzEyM2IzZC4uZTBlY2E1YTI0NDE5NGIwMTU5MTllYzI1ZWVlMThiOGQ1MzIwN2I0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCkBAIC03Nyw4ICs3Nyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaERpcnR5VGlsZXMpCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlz
IGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJv
dW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApLCAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUg
aW1wbCBzaWRlLgpAQCAtOTAsOCArODksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHB1c2hEaXJ0eVRpbGVzKQogICAgIC8vIEludmFsaWRhdGVzIGJvdGggdGlsZXMuLi4KICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIC8vIC4u
Li5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KLSAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKICAgICBsYXllci0+cHVzaFBy
b3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2
ZSB0aGUgZmlyc3QgdGlsZSBzaW5jZSB0aGUgb3RoZXIgdGlsZSB3YXMgaW52YWxpZGF0ZWQgYnV0
IG5vdCBwYWludGVkLgpAQCAtMTE0LDggKzExMiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9y
bShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgo
KSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CiAgICAgbGF5ZXItPnNl
dFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkKTsKLSAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBk
YXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAmb2NjbHVkZWQp
OwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICBF
WFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1
ZSgpLCAwLCAxKTsKQEAgLTEzMiw4ICsxMjksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGUgYXJlYSBpcyBvY2NsdWRl
ZC4KICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVk
ZWQpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwor
ICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEw
MCksICZvY2NsdWRlZCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdl
dCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVs
c1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTU5LDggKzE1NSw3IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKICAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxl
cy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwotICAgIGxheWVyLT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVMYXll
clJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAgIGxheWVyLT5w
dXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2
ZSBib3RoIHRpbGVzIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0xNzksOCArMTc0LDcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAgIEVYUEVDVF9GQUxT
RShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CiAKICAgICAvLyBUaGlzIHNob3VsZCByZWNy
ZWF0ZSBhbmQgdXBkYXRlIHRoZSBkZWxldGVkIHRleHR1cmVzLgotICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwotICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVMYXllclJl
Y3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwogICAgIGxheWVyLT5wdXNo
UHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgb25seSBo
YXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlkYXRlZCBi
dXQgbm90IHBhaW50ZWQuCkBAIC0yMDYsMTIgKzIwMCwxMSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRl
bnRCb3VuZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3Qo
dXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1w
YWludGluZyBmb3IgM3gzIHRpbGVzIGluIHRoZSBjZW50ZXIuCiAgICAgRVhQRUNUX1RSVUUobGF5
ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNU
byhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgb24g
dGhlIGltcGwgc2lkZS4KQEAgLTIyMSwxMCArMjE0LDkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAKICAgICAvLyBGb3IgdGhlIG5leHQgZm91ciB1
cGRhdGVzLCB3ZSBzaG91bGQgZGV0ZWN0IHdlIHN0aWxsIG5lZWQgaWRsZSBwYWludGluZy4KICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKHZpc2libGVSZWN0LCAwKTsKKyAgICAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1
cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVk
c0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwotICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
SWRsZSh2aXNpYmxlUmVjdCwgMCk7Ci0gICAgICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKDAsIHVwZGF0ZXIpOworICAgICAgICBsYXllci0+aWRsZVVwZGF0ZUxheWVyUmVjdCh1
cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCk7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxU
ZXh0dXJlcygpOwogICAgIH0KQEAgLTI3MiwyOCArMjY0LDI0IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgbGF5ZXIxLT5z
ZXRCb3VuZHMobGF5ZXJSZWN0LnNpemUoKSk7CiAgICAgbGF5ZXIxLT5zZXRWaXNpYmxlTGF5ZXJS
ZWN0KGxheWVyUmVjdCk7CiAgICAgbGF5ZXIxLT5pbnZhbGlkYXRlUmVjdChsYXllclJlY3QpOwot
ICAgIGxheWVyMS0+cHJlcGFyZVRvVXBkYXRlKGxheWVyUmVjdCwgMCk7CisgICAgbGF5ZXIxLT51
cGRhdGVMYXllclJlY3QodXBkYXRlciwgbGF5ZXJSZWN0LCAwKTsKIAogICAgIC8vIFBhaW50IGEg
c2luZ2xlIHRpbGUgaW4gbGF5ZXIyIHNvIHRoYXQgaXQgd2lsbCBpZGxlIHBhaW50LgotICAgIGxh
eWVyMi0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwKTsKKyAgICBs
YXllcjItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwg
MCk7CiAKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciBib3RoIHJlbWFp
bmluZyB0aWxlcyBpbiBsYXllcjIuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXIyLT5uZWVkc0lkbGVQ
YWludChsYXllcjJSZWN0KSk7CiAKICAgICAvLyBDb21taXQgdGhlIGZyYW1lIG92ZXIgdG8gaW1w
bC4KLSAgICBsYXllcjEtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Ci0g
ICAgbGF5ZXIyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIHVw
ZGF0ZXIudXBkYXRlKDAsICZhbGxvY2F0b3IsICZjb3BpZXIsIDUwMDApOwogICAgIGxheWVyMS0+
cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwxLmdldCgpKTsKICAgICBsYXllcjItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsMi5nZXQoKSk7CiAKICAgICAvLyBOb3cgaWRsZSBwYWludCBsYXll
cjIuIFdlIGFyZSBnb2luZyB0byBydW4gb3V0IG9mIG1lbW9yeSB0aG91Z2ghCi0gICAgbGF5ZXIy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDApOwotICAgIGxheWVy
Mi0+cHJlcGFyZVRvVXBkYXRlSWRsZShsYXllcjJSZWN0LCAwKTsKKyAgICBsYXllcjItPnVwZGF0
ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCk7CisgICAgbGF5
ZXIyLT5pZGxlVXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGxheWVyMlJlY3QsIDApOwogCiAgICAg
Ly8gT2ggd2VsbCwgY29tbWl0IHRoZSBmcmFtZSBhbmQgcHVzaC4KLSAgICBsYXllcjEtPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIHVwZGF0ZXIudXBkYXRlKDAsICZhbGxv
Y2F0b3IsICZjb3BpZXIsIDUwMDApOwogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwxLmdldCgpKTsKICAgICBsYXllcjItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsMi5n
ZXQoKSk7CkBAIC0zMTAsMTEgKzI5OCw5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaFRpbGVzQWZ0ZXJJZGxlUGFpbnRGYWlsZWQpCiAgICAgLy8gTm93IGlmIGxheWVyMiBiZWNv
bWVzIGZ1bGx5IHZpc2libGUsIHdlIHNob3VsZCBiZSBhYmxlIHRvIHBhaW50IGl0IGFuZCBwdXNo
IHZhbGlkIHRleHR1cmVzLgogICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJl
cygpOwogCi0gICAgbGF5ZXIyLT5wcmVwYXJlVG9VcGRhdGUobGF5ZXIyUmVjdCwgMCk7Ci0gICAg
bGF5ZXIxLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgpLCAwKTsKKyAgICBsYXllcjItPnVwZGF0
ZUxheWVyUmVjdCh1cGRhdGVyLCBsYXllcjJSZWN0LCAwKTsKKyAgICBsYXllcjEtPnVwZGF0ZUxh
eWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KCksIDApOwogCi0gICAgbGF5ZXIxLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwotICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICB1cGRhdGVyLnVwZGF0ZSgwLCAmYWxsb2NhdG9y
LCAmY29waWVyLCA1MDAwKTsKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
MS5nZXQoKSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbDIuZ2V0KCkp
OwpAQCAtMzQ0LDkgKzMzMCw4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElk
bGVQYWludGVkT2NjbHVkZWRUaWxlcykKICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIu
MCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CiAgICAgbGF5ZXItPnNldFZpc2li
bGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKLSAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlSWRsZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkKTsKLSAg
ICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXll
ci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2Nj
bHVkZWQpOworICAgIGxheWVyLT5pZGxlVXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSB0aGUgcHJlcGFpbnRl
ZCB0aWxlIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0zNjgsOCArMzUzLDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNNYXJrZWREaXJ0eUR1cmluZ1BhaW50KQogICAgIGxh
eWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRl
UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCks
IGxheWVyLmdldCgpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwg
MTAwLCAyMDApLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwg
MCwgMTAwLCAyMDApLCAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwu
Z2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBz
aWRlLgpAQCAtMzkzLDE0ICszNzcsMTEgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPbk5leHRMYXllcikKICAgICBsYXll
cjItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIyLT5pbnZhbGlkYXRl
UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAKLSAgICBsYXllcjEtPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXIxLT51cGRhdGVMYXll
clJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogCiAgICAgLy8gSW52
YWxpZGF0ZSBhIHRpbGUgb24gbGF5ZXIxCiAgICAgbGF5ZXIyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXll
cjEuZ2V0KCkpOwotICAgIGxheWVyMi0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAw
LCAyMDApLCAwKTsKLQotICAgIGxheWVyMS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKLSAgICBsYXllcjItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgbGF5ZXIyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCksIDApOwogCiAgICAgbGF5ZXIxLT5wdXNoUHJvcGVydGllc1RvKGxheWVyMUltcGwu
Z2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllcjJJbXBsLmdldCgpKTsK
QEAgLTQzMCwxMiArNDExLDkgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGls
ZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPblByZXZpb3VzTGF5ZXIKIAogICAgIC8vIElu
dmFsaWRhdGUgYSB0aWxlIG9uIGxheWVyMgogICAgIGxheWVyMS0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxpZGF0ZShJbnRSZWN0KDAsIDUwLCAxMDAsIDUwKSwgbGF5
ZXIyLmdldCgpKTsKLSAgICBsYXllcjEtPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSwgMCk7Ci0KLSAgICBsYXllcjItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSwgMCk7CisgICAgbGF5ZXIxLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogCi0gICAgbGF5ZXIxLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwotICAgIGxheWVyMi0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllcjItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CiAKICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVz
VG8obGF5ZXIxSW1wbC5nZXQoKSk7CiAgICAgbGF5ZXIyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
MkltcGwuZ2V0KCkpOwpAQCAtNDY4LDI1ICs0NDYsMjMgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRl
bnRCb3VuZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3Qo
dXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1w
YWludGluZyBmb3IgM3gzIHRpbGVzIHN1cm91bmRpbmcgdmlzaWJsZSB0aWxlLgogICAgIEVYUEVD
VF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXItPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9u
ZSB0aWxlIG9uIHRoZSBpbXBsIHNpZGUuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNU
aWxlQXQoMSwgMSkpOwogCiAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVz
KCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCwgMCk7Ci0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT51cGRh
dGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT5pZGxlVXBk
YXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKIAogICAgIC8vIFdlIHNob3Vs
ZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBv
ZiBtZW1vcnkuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxl
UmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIH0KIApA
QCAtNTA1LDcgKzQ4MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50
WmVyb1NpemVkTGF5ZXIpCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50UmVjdC5zaXplKCkp
OwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnRlbnRSZWN0KTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRh
dGUoY29udGVudFJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwg
Y29udGVudFJlY3QsIDApOwogCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMu
CiAgICAgRVhQRUNUX0VRKDB1LCBsYXllci0+bnVtUGFpbnRlZFRpbGVzKCkpOwpAQCAtNTEzLDE5
ICs0ODksMTcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6
ZWRMYXllcikKICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgbmVlZCBwcmVwYWludC4KICAgICBF
WFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KGNvbnRlbnRSZWN0KSk7CiAKLSAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+
cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gRW1wdHkgbGF5ZXJz
IGRvbid0IGhhdmUgdGlsZXMuCiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0
KDAsIDApKTsKIAogICAgIC8vIE5vbi12aXNpYmxlIGxheWVycyBkb24ndCBpZGxlIHBhaW50Lgot
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKGNvbnRlbnRSZWN0LCAwKTsKKyAgICBsYXll
ci0+aWRsZVVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgMCk7CiAKICAgICAv
LyBFbXB0eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxlcy4KICAgICBFWFBFQ1RfRVEoMHUsIGxheWVy
LT5udW1QYWludGVkVGlsZXMoKSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygwLCB1cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwu
Z2V0KCkpOwogCiAgICAgLy8gRW1wdHkgbGF5ZXJzIGRvbid0IGhhdmUgdGlsZXMuCkBAIC01NTAs
NyArNTI0LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRaZXJvU2l6
ZWRBbmltYXRpbmdMYXllcikKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRSZWN0LnNpemUo
KSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoY29udGVudFJlY3QpOwogICAgIGxh
eWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShjb250ZW50UmVjdCwgMCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVy
LCBjb250ZW50UmVjdCwgMCk7CiAKICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxl
cy4KICAgICBFWFBFQ1RfRVEoMHUsIGxheWVyLT5udW1QYWludGVkVGlsZXMoKSk7CkBAIC01NTgs
MTkgKzUzMiwxNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludFplcm9T
aXplZEFuaW1hdGluZ0xheWVyKQogICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBuZWVkIHByZXBh
aW50LgogICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQoY29udGVudFJlY3Qp
KTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwog
ICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBF
bXB0eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxlcy4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBs
LT5oYXNUaWxlQXQoMCwgMCkpOwogCiAgICAgLy8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0IGlk
bGUgcGFpbnQuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUoY29udGVudFJlY3QsIDAp
OworICAgIGxheWVyLT5pZGxlVXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNvbnRlbnRSZWN0LCAw
KTsKIAogICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgogICAgIEVYUEVDVF9F
USgwdSwgbGF5ZXItPm51bVBhaW50ZWRUaWxlcygpKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBFbXB0eSBsYXllcnMgZG9uJ3QgaGF2ZSB0aWxl
cy4KQEAgLTU5NSwyMSArNTY3LDE5IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRs
ZVBhaW50Tm9uVmlzaWJsZUxheWVycykKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3Vu
ZHMpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVSZWN0KTsKICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUodmlzaWJsZVJlY3QsIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRl
ciwgdmlzaWJsZVJlY3QsIDApOwogCiAgICAgLy8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0IG5l
ZWQgaWRsZSBwYWludC4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZp
c2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1
cGRhdGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwog
CiAgICAgLy8gV2Ugc2hvdWxkIG5vdCBoYXZlIGFueSB0aWxlcyBwdXNoZWQgc2luY2UgdGhlIGxh
eWVyIGlzIG5vdCB2aXNpYmxlLgogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVB
dCgwLCAwKSk7CiAKICAgICAvLyBOb24tdmlzaWJsZSBsYXllcnMgZG9uJ3QgaWRsZSBwYWludC4K
LSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgMCk7CisgICAgbGF5
ZXItPmlkbGVVcGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogCi0gICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CiAgICAgbGF5ZXIt
PnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBu
b3QgaGF2ZSBhbnkgdGlsZXMgcHVzaGVkIHNpbmNlIHRoZSBsYXllciBpcyBub3QgdmlzaWJsZS4K
QEAgLTYxOSw5ICs1ODksOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWlu
dE5vblZpc2libGVMYXllcnMpCiBzdGF0aWMgdm9pZCBpZGxlUGFpbnRSZXBlYXQoaW50IHJlcGVh
dFRpbWVzLCBGYWtlVGlsZWRMYXllckNocm9taXVtKiBsYXllciwgRmFrZUNDVGlsZWRMYXllcklt
cGwqIGxheWVySW1wbCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3QgSW50UmVjdCYg
dmlzaWJsZVJlY3QpCiB7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRUaW1lczsgKytp
KSB7Ci0gICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QsIDApOwotICAg
ICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCwgMCk7Ci0gICAgICAg
IGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgICAgICBs
YXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIHZpc2libGVSZWN0LCAwKTsKKyAgICAgICAg
bGF5ZXItPmlkbGVVcGRhdGVMYXllclJlY3QodXBkYXRlciwgdmlzaWJsZVJlY3QsIDApOwogICAg
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwpOwogICAgIH0KIH0KQEAgLTY2
OSw4ICs2MzgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZp
c2libGVBbmltYXRpbmdMYXllcnMpCiAgICAgICAgICAgICBib29sIHNob3VsZFByZXBhaW50ID0g
IWxheWVyLT5pZGxlUGFpbnRSZWN0KHZpc2libGVSZWN0KS5pc0VtcHR5KCk7CiAKICAgICAgICAg
ICAgIC8vIFRoaXMgcGFpbnRzIHRoZSBsYXllciBidXQgdGhlcmUncyBub3RoaW5nIHZpc2libGUg
c28gaXQncyBhIG5vLW9wLgotICAgICAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNp
YmxlUmVjdCwgMCk7Ci0gICAgICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cygwLCB1cGRhdGVyKTsKKyAgICAgICAgICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRl
ciwgdmlzaWJsZVJlY3QsIDApOwogICAgICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8o
bGF5ZXJJbXBsLmdldCgpKTsKIAogICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBoYXZlIGFu
eSB0aWxlcyBwdXNoZWQgeWV0IHNpbmNlIHRoZSBsYXllciBpcyBub3QgdmlzaWJsZSBhbmQgd2Un
dmUgbm90IHByZXBhaW50ZWQuCkBAIC02OTksMTIgKzY2NywxNSBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICBPd25QdHI8RmFrZUNDVGls
ZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwo
MCkpKTsKIAogICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKKyAgICBGYWtlVGV4dHVyZUFs
bG9jYXRvciBmYWtlQWxsb2NhdG9yOworICAgIEZha2VUZXh0dXJlQ29waWVyIGZha2VDb3BpZXI7
CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gY3JlYXRlQ29tcG9zaXRv
ck1vY2tHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcygpKTsK
IAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBh
bmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgx
MDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSwgMCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7
CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSwgMCk7CisgICAgdXBkYXRlci51cGRhdGUoY29udGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0
b3IsICZmYWtlQ29waWVyLCAxMDAwKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUg
aW1wbCBzaWRlLgpAQCAtNzE0LDIwICs2ODUsMjMgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVj
dEFsbFRleHR1cmVzKCk7CiAKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
Y2xlYXJQcmVwYXJlQ291bnQoKTsKLSAgICAvLyBJbnZva2UgcHJlcGFyZVRvVXBkYXRlIGFnYWlu
LiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQgcHJlcGFyZVRvVXBkYXRlIHNob3VsZG4ndCBiZSBpbnZv
a2VkIG9uCisgICAgLy8gSW52b2tlIHVwZGF0ZUxheWVyUmVjdCBhZ2Fpbi4gQXMgdGhlIGxheWVy
IGlzIHZhbGlkIHVwZGF0ZUxheWVyUmVjdCBzaG91bGRuJ3QgYmUgaW52b2tlZCBvbgogICAgIC8v
IHRoZSBMYXllclRleHR1cmVVcGRhdGVyLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBk
YXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIHVwZGF0ZXIudXBkYXRlKGNv
bnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAmZmFrZUNvcGllciwgMTAwMCk7CiAgICAgRVhQ
RUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQo
KSk7CiAKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsK
LSAgICAvLyBzZXRSZWN0VG9JbnZhbGlkYXRlIHRyaWdnZXJzIGludmFsaWRhdGVSZWN0KCkgYmVp
bmcgaW52b2tlZCBmcm9tIHByZXBhcmVUb1VwZGF0ZS4KKyAgICAvLyBzZXRSZWN0VG9JbnZhbGlk
YXRlIHRyaWdnZXJzIGludmFsaWRhdGVSZWN0KCkgYmVpbmcgaW52b2tlZCBmcm9tIHVwZGF0ZUxh
eWVyUmVjdC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRv
SW52YWxpZGF0ZShJbnRSZWN0KDI1LCAyNSwgNTAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwogICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwotICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAg
IGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCks
IDApOworICAgIHVwZGF0ZXIudXBkYXRlKGNvbnRleHQuZ2V0KCksICZmYWtlQWxsb2NhdG9yLCAm
ZmFrZUNvcGllciwgMTAwMCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7Ci0gICAgLy8gVGhlIGxheWVyIHNob3Vs
ZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHByZXBhcmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUu
Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7
CisgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHVwZGF0ZUxheWVy
UmVjdCBpbnZva2VkIGludmFsaWRhdGUuCisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCk7CisgICAgdXBkYXRlci51cGRhdGUoY29u
dGV4dC5nZXQoKSwgJmZha2VBbGxvY2F0b3IsICZmYWtlQ29waWVyLCAxMDAwKTsKICAgICBFWFBF
Q1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgp
KTsKIH0KIApAQCAtNzUxLDIxICs3MjUsMTggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgLy8gT24g
Zmlyc3QgdXBkYXRlLCB0aGUgdXBkYXRlUmVjdCBpbmNsdWRlcyBhbGwgdGlsZXMsIGV2ZW4gYmV5
b25kIHRoZSBib3VuZGFyaWVzIG9mIHRoZSBsYXllci4KICAgICAvLyBIb3dldmVyLCBpdCBzaG91
bGQgc3RpbGwgYmUgaW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKGNvbnRlbnRCb3VuZHMsIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgY29u
dGVudEJvdW5kcywgMCk7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAs
IDMwMCwgMzAwICogMC44KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAgICAvLyBBZnRlciB0
aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25jZSwgYW5vdGhlciBpbnZhbGlkYXRlIG9ubHkgbmVlZHMg
dG8gdXBkYXRlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyLgogICAgIGxheWVyLT5pbnZhbGlkYXRl
UmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRC
b3VuZHMsIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0
ZXIpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywg
MCk7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KGxheWVyQm91bmRzKSwgbGF5
ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAgICAvLyBQYXJ0aWFsIHJlLXBhaW50IHNob3VsZCBhbHNv
IGJlIHJlcHJlc2VudGVkIGJ5IHRoZSB1cGRhdGVSZWN0IGluIGxheWVyIHNwYWNlLCBub3QgY29u
dGVudCBzcGFjZS4KICAgICBJbnRSZWN0IHBhcnRpYWxEYW1hZ2UoMzAsIDEwMCwgMTAsIDEwKTsK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QocGFydGlhbERhbWFnZSk7Ci0gICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVw
ZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDApOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0
UmVjdCg0NSwgODAsIDE1LCA4KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiB9CiAKQEAgLTc4Niw4
ICs3NTcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlv
bldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9h
dFJlY3QoMCwgMCwgMTAwLCAxMDApLCBsYXllci0+bGFzdE5lZWRzRGlzcGxheVJlY3QoKSk7CiAK
ICAgICAvLyBQdXNoIHRoZSB0aWxlcyB0byB0aGUgaW1wbCBzaWRlIGFuZCBjaGVjayB0aGF0IHRo
ZXJlIGlzIGV4YWN0bHkgb25lLgotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCksIDApOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCksIDApOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkp
OwogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CkBAIC04MDAs
OCArNzcwLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRp
b25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxv
YXRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgbGF5ZXItPmxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkpOwog
CiAgICAgLy8gVGhlIGltcGwgc2lkZSBzaG91bGQgZ2V0IDJ4MiB0aWxlcyBub3cuCi0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwgMCk7Ci0gICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnVw
ZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwgMCk7CiAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfVFJV
RShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBs
LT5oYXNUaWxlQXQoMCwgMSkpOwpAQCAtODExLDggKzc4MCw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQog
ICAgIC8vIEludmFsaWRhdGUgdGhlIGVudGlyZSBsYXllciBhZ2FpbiwgYnV0IGRvIG5vdCBwYWlu
dC4gQWxsIHRpbGVzIHNob3VsZCBiZSBnb25lIG5vdyBmcm9tIHRoZQogICAgIC8vIGltcGwgc2lk
ZS4KICAgICBsYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDEsIDAsIDAsIDEpLCAwKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0
ZXIsIEludFJlY3QoMSwgMCwgMCwgMSksIDApOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0
KDAsIDApKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkpOwpA
QCAtODUxLDggKzgxOSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3
R2V0c1Jlc2V0KQogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7
CiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDMwMCkp
OwogICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0
KTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAgIGNjTGF5ZXJUcmVl
SG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRleHQo
KSwgdXBkYXRlcik7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7
CiAKICAgICAvLyBXZSdsbCBza2lwIHRoZSByb290IGxheWVyLgogICAgIEVYUEVDVF9UUlVFKHJv
b3RMYXllci0+c2tpcHNEcmF3KCkpOwpAQCAtODY0LDcgKzgzMSw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIC8vIFJlbW92ZSB0aGUgY2hp
bGQgbGF5ZXIuCiAgICAgcm9vdExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwogCi0gICAgY2NM
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0
ZUxheWVycyh1cGRhdGVyKTsKICAgICBFWFBFQ1RfRkFMU0Uocm9vdExheWVyLT5za2lwc0RyYXco
KSk7CiAKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcigwKTsKQEAgLTg3NiwxMCAr
ODQzLDExIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFsbGVyKQog
ewogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFu
YWdlcjo6Y3JlYXRlKDYwKjEwMjQqMTAyNCwgNjAqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQ
dHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOworICAgIENDVGV4dHVyZVVwZGF0
ZXIgdXBkYXRlcjsKIAogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg3MDAsIDcwMCkpOwog
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSk7Ci0gICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7CisgICAg
bGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwg
MCk7CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMjAwLCAyMDApKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpOwpAQCAtODg5LDEzICs4
NTcsMTQgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBodWdlTGF5ZXJVcGRhdGVDcmFz
aCkKIHsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVy
ZU1hbmFnZXI6OmNyZWF0ZSg2MCoxMDI0KjEwMjQsIDYwKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAg
UmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VU
aWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKKyAgICBDQ1RleHR1cmVV
cGRhdGVyIHVwZGF0ZXI7CiAKICAgICBpbnQgc2l6ZSA9IDEgPDwgMzA7CiAgICAgbGF5ZXItPnNl
dEJvdW5kcyhJbnRTaXplKHNpemUsIHNpemUpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCgwLCAwLCBzaXplLCBzaXplKSk7CiAKICAgICAvLyBFbnN1cmUgbm8gY3Jhc2ggZm9y
IGJvdW5kcyB3aGVyZSBzaXplICogc2l6ZSB3b3VsZCBvdmVyZmxvdyBhbiBpbnQuCi0gICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7CisgICAgbGF5
ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSwgMCk7
CiB9CiAKIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCkBAIC05
MjUsOCArODk0LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRl
cykKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDMwMCwgMjAw
KSk7CiAKICAgICAvLyBGdWxsIHVwZGF0ZSBvZiBhbGwgNiB0aWxlcy4KLSAgICBjY0xheWVyVHJl
ZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRleHQoKSwgdXBkYXRlcik7CisgICAg
Y2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlcik7CiAgICAgdXBkYXRlci51cGRh
dGUoMCwgJmFsbG9jYXRvciwgJmNvcGllciwgNCk7CiAgICAgRVhQRUNUX0VRKDQsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICBFWFBFQ1RfVFJV
RSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwpAQCAtOTM5LDggKzkwNyw3IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAKICAgICAvLyBGdWxsIHVwZGF0
ZSBvZiAzIHRpbGVzIGFuZCBwYXJ0aWFsIHVwZGF0ZSBvZiAzIHRpbGVzLgogICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDMwMCwgMTUwKSk7Ci0gICAgY2NMYXllclRyZWVI
b3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOworICAgIGNj
TGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIpOwogICAgIHVwZGF0ZXIudXBkYXRl
KDAsICZhbGxvY2F0b3IsICZjb3BpZXIsIDQpOwogICAgIEVYUEVDVF9FUSgzLCBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUo
dXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKQEAgLTk1Myw4ICs5MjAsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogCiAgICAgLy8gUGFydGlhbCB1cGRh
dGUgb2YgNiB0aWxlcy4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCg1MCwgNTAs
IDIwMCwgMTAwKSk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICBj
Y0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0
LT5jb250ZXh0KCksIHVwZGF0ZXIpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJz
KHVwZGF0ZXIpOwogICAgIHVwZGF0ZXIudXBkYXRlKDAsICZhbGxvY2F0b3IsICZjb3BpZXIsIDQp
OwogICAgIEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBk
YXRlQ291bnQoKSk7CiAgICAgRVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsK
QEAgLTk3NCwxMiArOTQwLDEzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQ
YWludGVkV2l0aG91dE9jY2x1c2lvbikKIHsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRl
eHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0
KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9
IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgp
KSk7CisgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6
ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGls
ZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOworICAgIGxheWVyLT51
cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDApOwogICAg
IEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJl
Y3RDb3VudCgpKTsKIH0KIApAQCAtOTg4LDYgKzk1NSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikKICAgICBPd25QdHI8VGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAy
NCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVt
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5h
Z2VyLmdldCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKKyAgICBD
Q1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgx
MDAuCiAKQEAgLTk5Nyw3ICs5NjUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRp
bGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJl
Y3QoMjAwLCAyMDAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qo
SW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVw
ZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVk
KTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJh
d01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwMDgsNyArOTc2
LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVz
aW9uKQogCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjUwLCAyMDAsIDMwMCwg
MTAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDAp
KTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAm
b2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTIsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQ
RUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUo
KSwgMCwgMSk7CkBAIC0xMDE5LDcgKzk4Nyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikKIAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lv
bihJbnRSZWN0KDI1MCwgMjUwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5
ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAg
IEVYUEVDVF9FUSgzNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVS
ZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3Mo
KS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwMzIsNiArMTAwMCw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZp
c2libGl0eUNvbnN0cmFpbnRzKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1h
bmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwg
MTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRS
ZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOworICAgIENDVGV4dHVyZVVwZGF0ZXIg
dXBkYXRlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KIApAQCAtMTA0Miw3
ICsxMDExLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRo
T2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVz
aW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTUwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVM
YXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDM2MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRl
UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDYwMCwgMzYwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRl
TGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNjApLCAmb2NjbHVkZWQpOwog
ICAgIEVYUEVDVF9FUSgyNC0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJl
cGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0
cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTA1NSw3ICsxMDI0LDcg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9u
QW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJl
Y3QoMjAwLCAyMDAsIDMwMCwgMTUwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qo
SW50UmVjdCgwLCAwLCA2MDAsIDM1MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDYwMCwgMzUwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0
KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNTApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVD
VF9FUSgyNC02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RD
b3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBp
eGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTA2OCw3ICsxMDM3LDcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJs
aXR5Q29uc3RyYWludHMpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAy
MDAsIDMwMCwgMTUwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgw
LCAwLCA2MDAsIDM0MCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAs
IDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYw
MCwgMzQwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIs
IEludFJlY3QoMCwgMCwgNjAwLCAzNDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSgyNC02
LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsK
IAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9h
ZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTA4Miw2ICsxMDUxLDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB0aWxlc05vdFBhaW50ZWRXaXRob3V0SW52YWxpZGF0aW9uKQogICAgIE93
blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3Jl
YXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxl
ZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21p
dW0odGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9j
Y2x1ZGVkOworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKIAogICAgIC8vIFRoZSB0aWxl
IHNpemUgaXMgMTAweDEwMC4KIApAQCAtMTA5MSw3ICsxMDYxLDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB0aWxlc05vdFBhaW50ZWRXaXRob3V0SW52YWxpZGF0aW9uKQogICAgIG9j
Y2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxh
eWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCk7Cisg
ICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2Ns
dWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAg
LTExMDEsNyArMTA3MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNOb3RQ
YWludGVkV2l0aG91dEludmFsaWRhdGlvbikKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlUmVjdENvdW50KCk7CiAKICAgICAvLyBSZXBhaW50IHdpdGhv
dXQgbWFya2luZyBpdCBkaXJ0eS4gVGhlIGN1bGxlZCB0aWxlcyByZW1haW5lZCBkaXJ0eS4KLSAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVk
ZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2
MDAsIDYwMCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIo
b2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7
CkBAIC0xMTE0LDYgKzEwODQsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVz
UGFpbnRlZFdpdGhPY2NsdXNpb25BbmRUcmFuc2Zvcm1zKQogICAgIE93blB0cjxUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOworICAgIEND
VGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEw
MC4KIApAQCAtMTEyOCw3ICsxMDk5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0
aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVHJhbnNmb3JtcykKICAgICBvY2NsdWRlZC5zZXRP
Y2NsdXNpb24oSW50UmVjdCgxMDAsIDEwMCwgMTUwLCA1MCkpOwogICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKLSAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwor
ICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCksICZvY2NsdWRlZCk7CiAgICAgRVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2Nj
bHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBA
IC0xMTQxLDYgKzExMTIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFp
bnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEw
MjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVy
ID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFnZXIuZ2V0
KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOworICAgIENDVGV4dHVy
ZVVwZGF0ZXIgdXBkYXRlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMC4KIApA
QCAtMTE1NCw3ICsxMTI2LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1Bh
aW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24o
SW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVy
UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwogICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKKyAgICBsYXll
ci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2Nj
bHVkZWQpOwogICAgIC8vIFRoZSBjb250ZW50IGlzIGhhbGYgdGhlIHNpemUgb2YgdGhlIGxheWVy
IChzbyB0aGUgbnVtYmVyIG9mIHRpbGVzIGlzIGZld2VyKS4KICAgICAvLyBJbiB0aGlzIGNhc2Us
IHRoZSBjb250ZW50IGlzIDMwMHgzMDAsIGFuZCBzaW5jZSB0aGUgdGlsZSBzaXplIGlzIDEwMCwg
dGhlCiAgICAgLy8gbnVtYmVyIG9mIHRpbGVzIDN4My4KQEAgLTExNzIsNyArMTE0NCw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNj
YWxpbmcpCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwg
MjAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgw
LCAwLCA2MDAsIDYwMCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCksICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkKTsKICAgICBFWFBFQ1RfRVEo
OS0xLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgp
KTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1Vw
bG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTE5MCw3ICsxMTYyLDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAg
ICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgxMDAsIDEwMCwgMTUwLCAxMDApKTsKICAg
ICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5i
b3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDYwMCwg
NjAwKSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSwgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9FUSg5LTEsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAg
RVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFx
dWUoKSwgMCwgMSk7CkBAIC0xMjAzLDYgKzExNzUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIE93blB0cjxUZXh0dXJlTWFu
YWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0
LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+
IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOworICAgIEND
VGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEw
MCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzIGluIHZhcmlv
dXMgd2F5cy4KIApAQCAtMTIyMCw3ICsxMTkzLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKICAgICAvLyBJZiB0aGUgbGF5ZXIgZG9l
c24ndCBwYWludCBvcGFxdWUgY29udGVudCwgdGhlbiB0aGUgdmlzaWJsZUNvbnRlbnRPcGFxdWVS
ZWdpb24gc2hvdWxkIGJlIGVtcHR5LgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0
ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50
Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwg
Y29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52
aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9UUlVFKG9wYXF1ZUNvbnRl
bnRzLmlzRW1wdHkoKSk7CiAKQEAgLTEyMzMsNyArMTIwNiw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgb3BhcXVlUGFpbnRS
ZWN0ID0gSW50UmVjdCgxMCwgMTAsIDkwLCAxOTApOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVMYXll
clJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICBvcGFxdWVDb250
ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9F
UV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFx
dWVDb250ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVDb250ZW50cy5y
ZWN0cygpLnNpemUoKSk7CkBAIC0xMjQ1LDcgKzEyMTgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogCiAgICAgLy8gSWYgd2UgcGFp
bnQgYWdhaW4gd2l0aG91dCBpbnZhbGlkYXRpbmcsIHRoZSBzYW1lIHN0dWZmIHNob3VsZCBiZSBv
cGFxdWUuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBh
aW50UmVjdChJbnRSZWN0KCkpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJv
dW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0ZXIsIGNv
bnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+dmlz
aWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rp
b24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRz
KCkpOwogICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwpA
QCAtMTI1OSw3ICsxMjMyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxl
Q29udGVudE9wYXF1ZVJlZ2lvbikKICAgICAvLyBub3QgYmUgYWZmZWN0ZWQuCiAgICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEsIDEpKTsKLSAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5
ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwog
ICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7
CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJs
ZUJvdW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKICAgICBFWFBFQ1RfRVEoMXUsIG9w
YXF1ZUNvbnRlbnRzLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTEyNzMsNyArMTI0Niw3IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAg
Ly8gbm90IGJlIGFmZmVjdGVkLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdCgxMCwgMTAsIDEsIDEpKTsKLSAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNv
bnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CisgICAgbGF5ZXItPnVwZGF0ZUxheWVyUmVjdCh1cGRh
dGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5
ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50
ZXJzZWN0aW9uKEludFJlY3QoMTAsIDEwMCwgOTAsIDEwMCksIHZpc2libGVCb3VuZHMpLCBvcGFx
dWVDb250ZW50cy5ib3VuZHMoKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVDb250ZW50cy5y
ZWN0cygpLnNpemUoKSk7CkBAIC0xMjg0LDcgKzEyNTcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIEVYUEVDVF9FUSgwLCBv
Y2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS50aWxlc0N1bGxlZEZvclVwbG9hZCgpKTsKIAogICAg
IC8vIE5vIG1ldHJpY3MgYXJlIHJlY29yZGVkIGluIHByZXBhaW50LCBzbyB0aGUgdmFsdWVzIHNo
b3VsZCBub3QgY2hhbmdlIGZyb20gYWJvdmUuCi0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlk
bGUoY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+aWRsZVVwZGF0ZUxheWVy
UmVjdCh1cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOwogICAgIEVYUEVDVF9ORUFS
KG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc1BhaW50ZWQoKSwgMjAwMDAgKiAyICsg
MSAgKyAxLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5w
aXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAxNzEwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVk
ZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRUcmFuc2x1Y2VudCgpLCAyMDAwMCAr
IDIwMDAwIC0gMTcxMDAgKyAxICsgMSwgMSk7CkBAIC0xMjk2LDYgKzEyNjksNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBpeGVsc1BhaW50ZWRNZXRyaWNzKQogICAgIE93blB0cjxU
ZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQq
MTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVy
Q2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4
dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVk
OworICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUg
aXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVz
IGluIHZhcmlvdXMgd2F5cy4KIApAQCAtMTMxMyw3ICsxMjg3LDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwaXhlbHNQYWludGVkTWV0cmljcykKICAgICAvLyBJbnZhbGlkYXRlcyBh
bmQgcGFpbnRzIHRoZSB3aG9sZSBsYXllci4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmludmFs
aWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29u
dGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKKyAgICBsYXllci0+dXBkYXRlTGF5ZXJSZWN0KHVwZGF0
ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCk7CiAgICAgb3BhcXVlQ29udGVudHMgPSBsYXll
ci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBFQ1RfVFJVRShvcGFxdWVD
b250ZW50cy5pc0VtcHR5KCkpOwogCkBAIC0xMzI3LDcgKzEzMDEsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHBpeGVsc1BhaW50ZWRNZXRyaWNzKQogICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxLCAxKSk7CiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KEludFJlY3QoNTAsIDIwMCwgMTAsIDEwKSk7Ci0gICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQpOworICAgIGxheWVyLT51cGRhdGVM
YXllclJlY3QodXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkKTsKICAgICBvcGFxdWVD
b250ZW50cyA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVD
VF9UUlVFKG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSk7CiAK
</data>
<flag name="review"
          id="141410"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>