<?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>80046</bug_id>
          
          <creation_ts>2012-03-01 14:12:57 -0800</creation_ts>
          <short_desc>[chromium] Background filters for composited layers</short_desc>
          <delta_ts>2013-03-13 10:08:15 -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>
          
          <blocked>80054</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>senorblanco</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>568902</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-01 14:12:57 -0800</bug_when>
    <thetext>[chromium] Background filters for composited layers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568919</commentid>
    <comment_count>1</comment_count>
      <attachid>129743</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-01 14:27:04 -0800</bug_when>
    <thetext>Created attachment 129743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568921</commentid>
    <comment_count>2</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-01 14:27:49 -0800</bug_when>
    <thetext>Here&apos;s how background filters look! Going to see if I can&apos;t test some piece of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570068</commentid>
    <comment_count>3</comment_count>
      <attachid>129985</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-02 18:38:31 -0800</bug_when>
    <thetext>Created attachment 129985
Patch

Cleaned up the LRC::useRenderSurface() stuff, added LRC::useManagedTexture() instead. I think this is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578559</commentid>
    <comment_count>4</comment_count>
      <attachid>131883</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-14 10:58:58 -0700</bug_when>
    <thetext>Created attachment 131883
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578604</commentid>
    <comment_count>5</comment_count>
      <attachid>131883</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-03-14 11:44:11 -0700</bug_when>
    <thetext>Comment on attachment 131883
Patch

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

Could you add some comments about the number of copies and drawing passes that is used to implement background filters this way?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:527
&gt; +                drawingSurface-&gt;drawBackgroundTexture(this, filteredDeviceBackgroundTextureId, deviceRect, contentsDeviceTransform);

I&apos;m not sure I understand what&apos;s going on here. Is this drawing the filtered background to the CCLayerImpl render target? In that case you want texture coordinates to just be scaled and biased fragment coordinates, right? How is this achieved?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593907</commentid>
    <comment_count>6</comment_count>
      <attachid>131883</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-02 15:16:21 -0700</bug_when>
    <thetext>Comment on attachment 131883
Patch

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

Needs tests.

Unfortunately, I don&apos;t think this is something that&apos;s easily testable in a unit test, since correctness is really about final pixel results and less about what calls get made on the way there.  One option might be exposing background filters to window.internals somehow and writing some layout tests.

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:117
&gt; +    // regions in this layer. They are used through the WebLayer interface, and are not exposed to HTML.

Can you expose them to the WebLayer interface in this patch?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:497
&gt; +    bool drawingToRootRenderSurface = m_currentRenderSurface == m_defaultRenderSurface;
&gt; +    if (!drawingToRootRenderSurface)
&gt; +        return;

I kind of wish this case could be handled better and not silently fail, but I am unsure about how to do that.  Even an assert might be overkill, since different content could fall down this path in a way that&apos;s unexpected.  Perhaps a comment on WebLayer::setBackgroundFilters about when this is valid to be used and a comment here about why we&apos;re not handling this case would help?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:512
&gt; +    if (applyBackgroundFilters) {

style nit: early out here instead of indenting.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:516
&gt; +        if (filteredDeviceBackground.getTexture()) {

style nit: early out here instead of indenting.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1211
&gt; +    if (m_currentRenderSurface == renderSurface &amp;&amp; !m_currentManagedTexture)

There&apos;s at least one other place in LRC that makes this same equality check, and we should be consistent in how we check for this state.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderSurface.cpp:116
&gt; +    if (!m_contentsBackgroundTexture-&gt;reserve(requiredSize, GraphicsContext3D::RGBA)) {
&gt; +        m_skipsDraw = true;
&gt; +        return false;
&gt; +    }

I&apos;m not entirely convinced that we should skip drawing the surface here.  If we drew the rest of the surface we&apos;d not have the filter, but would still be able to show all the rest of the content.  You don&apos;t skip the surface if getFramebufferTexture fails, for example.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderSurface.cpp:129
&gt; +bool CCRenderSurface::prepareReplicaBackgroundTexture(LayerRendererChromium* layerRenderer)

This looks a lot like prepareContentsBackgroundTexture.  For the sake of &quot;don&apos;t repeat yourself&quot;, can you combine these somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594084</commentid>
    <comment_count>7</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-02 17:46:26 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 131883 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131883&amp;action=review
&gt; 
&gt; Could you add some comments about the number of copies and drawing passes that is used to implement background filters this way?

done.

&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:527
&gt; &gt; +                drawingSurface-&gt;drawBackgroundTexture(this, filteredDeviceBackgroundTextureId, deviceRect, contentsDeviceTransform);
&gt; 
&gt; I&apos;m not sure I understand what&apos;s going on here. Is this drawing the filtered background to the CCLayerImpl render target? In that case you want texture coordinates to just be scaled and biased fragment coordinates, right? How is this achieved?

This step it drawing from the filtered readback pixels, using the inverse transform of the surface, to make filtered pixels in the content space of the render surface. This implicitly clips to the bounds of the render surface contents, so that when we draw it back into the target, we only replace pixels that will be under the contents of the surface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598638</commentid>
    <comment_count>8</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-09 14:49:02 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 131883 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131883&amp;action=review
&gt; 
&gt; Needs tests.
&gt; 
&gt; Unfortunately, I don&apos;t think this is something that&apos;s easily testable in a unit test, since correctness is really about final pixel results and less about what calls get made on the way there.  One option might be exposing background filters to window.internals somehow and writing some layout tests.

ok will add layout tests and upload once they are done.

&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:117
&gt; &gt; +    // regions in this layer. They are used through the WebLayer interface, and are not exposed to HTML.
&gt; 
&gt; Can you expose them to the WebLayer interface in this patch?

As discussed offline, coming in second patch.

&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:497
&gt; &gt; +    bool drawingToRootRenderSurface = m_currentRenderSurface == m_defaultRenderSurface;
&gt; &gt; +    if (!drawingToRootRenderSurface)
&gt; &gt; +        return;
&gt; 
&gt; I kind of wish this case could be handled better and not silently fail, but I am unsure about how to do that.  Even an assert might be overkill, since different content could fall down this path in a way that&apos;s unexpected.  Perhaps a comment on WebLayer::setBackgroundFilters about when this is valid to be used and a comment here about why we&apos;re not handling this case would help?

FIXME Comment added, and will add a comment on WebLayer too.

&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:512
&gt; &gt; +    if (applyBackgroundFilters) {
&gt; 
&gt; style nit: early out here instead of indenting.

Done.

&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:516
&gt; &gt; +        if (filteredDeviceBackground.getTexture()) {
&gt; 
&gt; style nit: early out here instead of indenting.

Done.

&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1211
&gt; &gt; +    if (m_currentRenderSurface == renderSurface &amp;&amp; !m_currentManagedTexture)
&gt; 
&gt; There&apos;s at least one other place in LRC that makes this same equality check, and we should be consistent in how we check for this state.

Oh thanks, totally missed that. Added bool isCurrentRenderSurface() to make this consistent.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderSurface.cpp:116
&gt; &gt; +    if (!m_contentsBackgroundTexture-&gt;reserve(requiredSize, GraphicsContext3D::RGBA)) {
&gt; &gt; +        m_skipsDraw = true;
&gt; &gt; +        return false;
&gt; &gt; +    }
&gt; 
&gt; I&apos;m not entirely convinced that we should skip drawing the surface here.  If we drew the rest of the surface we&apos;d not have the filter, but would still be able to show all the rest of the content.  You don&apos;t skip the surface if getFramebufferTexture fails, for example.

Agree, changed.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderSurface.cpp:129
&gt; &gt; +bool CCRenderSurface::prepareReplicaBackgroundTexture(LayerRendererChromium* layerRenderer)
&gt; 
&gt; This looks a lot like prepareContentsBackgroundTexture.  For the sake of &quot;don&apos;t repeat yourself&quot;, can you combine these somehow?

Due to quad refactoring, the whole &quot;drawing filters&quot; needs to be done twice now, once for surface once for replica. This is more correct and better etc anyways. We will (lazily perhaps) cache these things in the RenderSurface when we are able to save the filtered texture (pending the same bug as for the foreground filters).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598743</commentid>
    <comment_count>9</comment_count>
      <attachid>136337</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-09 16:40:34 -0700</bug_when>
    <thetext>Created attachment 136337
Patch

layout tests included</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598749</commentid>
    <comment_count>10</comment_count>
      <attachid>136340</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-09 16:46:55 -0700</bug_when>
    <thetext>Created attachment 136340
Patch

- release the background texture if we fail to copy the filtered background into the render surface&apos;s backgroundTexture() so we don&apos;t end up copying bad texture data back to the screen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598785</commentid>
    <comment_count>11</comment_count>
      <attachid>136340</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-09 17:24:45 -0700</bug_when>
    <thetext>Comment on attachment 136340
Patch

Attachment 136340 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12374277</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598806</commentid>
    <comment_count>12</comment_count>
      <attachid>136353</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-09 17:46:24 -0700</bug_when>
    <thetext>Created attachment 136353
Patch

attmpting to fix mac build. the output wasn&apos;t too helpful but i am guessing it was the unused variabled in the function causing the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599030</commentid>
    <comment_count>13</comment_count>
      <attachid>136353</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-09 22:46:35 -0700</bug_when>
    <thetext>Comment on attachment 136353
Patch

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

Just so I&apos;m reading this right:

framebuffer =&gt; (readback) deviceBackgroundTexture
deviceBackgroundTexture =&gt; (filter) filteredDeviceBackground
filteredDeviceBackground =&gt; (copy) drawingSurface-&gt;backgroundTexture()
drawingSurface-&gt;backgroundTexture() =&gt; (copy) targetRenderSurface

It kind of seems like there&apos;s an extra copy (or two?) here.  Is there a reason you can&apos;t just copy directly from the filteredBackgroundTexture into the targetRenderSurface?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:564
&gt; +        drawingSurface-&gt;releaseBackgroundTexture();

I&apos;m a little confused why you only release the background texture here, but not on either of the two returns above this.

&gt; Source/WebCore/testing/Internals.cpp:81
&gt; +#if USE(ACCELERATED_COMPOSITING) &amp;&amp; PLATFORM(CHROMIUM)

Chromium always uses accelerated compositing.

&gt; LayoutTests/ChangeLog:13
&gt; +        * compositing/filters/background-filter-blur-outsets.html: Added.
&gt; +        * compositing/filters/background-filter-blur.html: Added.

I think these html files should be in platform/chromium/compositing/filters/, since they&apos;re not really testing anything for non-Chromium platforms.

&gt; LayoutTests/compositing/filters/background-filter-blur-outsets.html:22
&gt; +  .yellow-parent {
&gt; +    width: 600px;
&gt; +    height:  600px;
&gt; +    -webkit-filter: blur(10px);
&gt; +  }
&gt; +  .centered {
&gt; +    width: 200px;
&gt; +    height: 200px;
&gt; +    position: absolute;
&gt; +    left: 100px;
&gt; +    top: 100px;
&gt; +  }

Unused?

&gt; LayoutTests/compositing/filters/background-filter-blur-outsets.html:33
&gt; +      window.setTimeout(setBlur, 0);

Can you write these tests without using setTimeout?

&gt; LayoutTests/compositing/filters/background-filter-blur-outsets.html:47
&gt; +&lt;div class=&quot;composited green-border&quot; style=&quot;position:absolute; left:50px; top:50px; width:200px; height:200px;&quot;&gt;&lt;/div&gt;
&gt; +&lt;div id=&quot;blur&quot; style=&quot;position:absolute; left:59px; top:59px; width:200px; height:200px; border:1px solid green;&quot;&gt;&lt;/div&gt;

Can you remove the border from the blur node, so that it&apos;s clear that it&apos;s not using its own border?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599323</commentid>
    <comment_count>14</comment_count>
      <attachid>136353</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-10 09:11:42 -0700</bug_when>
    <thetext>Comment on attachment 136353
Patch

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

The third step is missing its key component, which is the clipping.

framebuffer =&gt; (readback) deviceBackgroundTexture
deviceBackgroundTexture =&gt; (filter) filteredDeviceBackground
filteredDeviceBackground =&gt; (copy and clip) drawingSurface-&gt;backgroundTexture()
drawingSurface-&gt;backgroundTexture() =&gt; (copy) targetRenderSurface

I can make a picture for you after lunch if you like :) Basically, the surface may not be a rect in the device, but we readback and filter a rect. So we need to clip it to whatever shape the surface is so that we only replace pixels that will be under the surface. I couldn&apos;t think of how to do that without making a texture in the surface&apos;s content space and drawing it the same way as the surface itself. Perhaps this can be done more cleverly, but we can do that in a followup?

There is for sure an extra copy in the last step and a FIXME in the code. We could blend the background texture with the contents texture and draw them both in a single pass via shader magic. But I figured that would be a nice followup.

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:564
&gt;&gt; +        drawingSurface-&gt;releaseBackgroundTexture();
&gt; 
&gt; I&apos;m a little confused why you only release the background texture here, but not on either of the two returns above this.

Because in the above 2 returns, the texture has not been successfully prepared yet (attempted in line 556).

&gt;&gt; Source/WebCore/testing/Internals.cpp:81
&gt;&gt; +#if USE(ACCELERATED_COMPOSITING) &amp;&amp; PLATFORM(CHROMIUM)
&gt; 
&gt; Chromium always uses accelerated compositing.

We do guard the GraphicsLayerChromium.cpp file like this, if not others. Is it a case of historical ifdefs and future code should not use it?

&gt;&gt; LayoutTests/ChangeLog:13
&gt;&gt; +        * compositing/filters/background-filter-blur.html: Added.
&gt; 
&gt; I think these html files should be in platform/chromium/compositing/filters/, since they&apos;re not really testing anything for non-Chromium platforms.

Oh! Yeh makes sense.

&gt;&gt; LayoutTests/compositing/filters/background-filter-blur-outsets.html:22
&gt;&gt; +  }
&gt; 
&gt; Unused?

Oops, yeh. From the test I copied.

&gt;&gt; LayoutTests/compositing/filters/background-filter-blur-outsets.html:33
&gt;&gt; +      window.setTimeout(setBlur, 0);
&gt; 
&gt; Can you write these tests without using setTimeout?

I tried to, but had difficulty making the blur happen. It seemed that DRT was completing the test before the blur got applied.

&gt;&gt; LayoutTests/compositing/filters/background-filter-blur-outsets.html:47
&gt;&gt; +&lt;div id=&quot;blur&quot; style=&quot;position:absolute; left:59px; top:59px; width:200px; height:200px; border:1px solid green;&quot;&gt;&lt;/div&gt;
&gt; 
&gt; Can you remove the border from the blur node, so that it&apos;s clear that it&apos;s not using its own border?

Without the border, the element is clear and just gets culled from the render tree. I could use something other than a border, but didn&apos;t want to do something like text, and the background needs to remain clear. Maybe I can use a transparent background-image.. or any other preference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599359</commentid>
    <comment_count>15</comment_count>
      <attachid>136476</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-10 10:03:59 -0700</bug_when>
    <thetext>Created attachment 136476
Patch

Comments addressed. Problem solved with a black border!

I tried not using setTimeout again, and just setting the blur directly (and moving the script below the html so it can find the element), but it just fails to work that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599372</commentid>
    <comment_count>16</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-10 10:19:07 -0700</bug_when>
    <thetext>Because a picture&apos;s worth a thousand words http://i.imgur.com/HNkXV.png</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599975</commentid>
    <comment_count>17</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-10 20:06:03 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=136476) [details]
&gt; Patch
&gt; 
&gt; Comments addressed. Problem solved with a black border!

Ooh, the black border is even better.  It makes it clear it&apos;s blurring what&apos;s beneath and the black border is over top.

&gt; I tried not using setTimeout again, and just setting the blur directly (and moving the script below the html so it can find the element), but it just fails to work that way.

Ah, put the setBlur in an onLoad handler for the document, and it should do what you expect.  getElementById would fail if you called setBlur immediately in that script block.

(In reply to comment #14)
&gt; (From update of attachment 136353 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136353&amp;action=review
&gt; 
&gt; The third step is missing its key component, which is the clipping.
&gt; 
&gt; framebuffer =&gt; (readback) deviceBackgroundTexture
&gt; deviceBackgroundTexture =&gt; (filter) filteredDeviceBackground
&gt; filteredDeviceBackground =&gt; (copy and clip) drawingSurface-&gt;backgroundTexture()
&gt; drawingSurface-&gt;backgroundTexture() =&gt; (copy) targetRenderSurface
&gt; 
&gt; I can make a picture for you after lunch if you like :) Basically, the surface may not be a rect in the device, but we readback and filter a rect. So we need to clip it to whatever shape the surface is so that we only replace pixels that will be under the surface. I couldn&apos;t think of how to do that without making a texture in the surface&apos;s content space and drawing it the same way as the surface itself. Perhaps this can be done more cleverly, but we can do that in a followup?

Oh, I see!  Thanks for the diagram.  Needing an extra copy for clipping when you&apos;re not axis-aligned makes sense.  Can you then add one last test that involves a background filter and a perspective transform, where it demonstrates that it is blurring in device space and that non-axis-aligned layers are clipped properly (or not too much)?

&gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:564
&gt; &gt;&gt; +        drawingSurface-&gt;releaseBackgroundTexture();
&gt; &gt; 
&gt; &gt; I&apos;m a little confused why you only release the background texture here, but not on either of the two returns above this.
&gt; 
&gt; Because in the above 2 returns, the texture has not been successfully prepared yet (attempted in line 556).

Oops, quite right! I misread which function was reserving.

&gt; &gt;&gt; Source/WebCore/testing/Internals.cpp:81
&gt; &gt;&gt; +#if USE(ACCELERATED_COMPOSITING) &amp;&amp; PLATFORM(CHROMIUM)
&gt; &gt; 
&gt; &gt; Chromium always uses accelerated compositing.
&gt; 
&gt; We do guard the GraphicsLayerChromium.cpp file like this, if not others. Is it a case of historical ifdefs and future code should not use it?

It&apos;s my opinion that it&apos;s historical and we make assumptions elsewhere that Chromium always has this on.  Maybe jamesr has an opinion here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600002</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-10 21:09:04 -0700</bug_when>
    <thetext>We haven&apos;t always compiled chromium with USE(ACCELERATED_COMPOSITING), but we have for the past few years.  I think in chromium-specific code there is no value in keeping USE(ACCELERATED_COMPOSITING) guards and would recommend not adding any more.

In code that&apos;s not specific to chromium, of course, you need USE(ACCELERATED_COMPOSITING).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601319</commentid>
    <comment_count>19</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-12 10:17:06 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #15)
&gt; &gt; Created an attachment (id=136476) [details] [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Comments addressed. Problem solved with a black border!
&gt; 
&gt; Ooh, the black border is even better.  It makes it clear it&apos;s blurring what&apos;s beneath and the black border is over top.

Cool thanks.

&gt; Ah, put the setBlur in an onLoad handler for the document, and it should do what you expect.  getElementById would fail if you called setBlur immediately in that script block.

Attempting... When I use an onload handler, I get this.

CONSOLE MESSAGE: line 15: Uncaught Error: INVALID_STATE_ERR: DOM Exception 11

Meaning, the render object does not have a renderLayer or it is not composited yet. Can we just use the setTimeout(0)?

&gt; (In reply to comment #14)
&gt; Oh, I see!  Thanks for the diagram.  Needing an extra copy for clipping when you&apos;re not axis-aligned makes sense.  Can you then add one last test that involves a background filter and a perspective transform, where it demonstrates that it is blurring in device space and that non-axis-aligned layers are clipped properly (or not too much)?

k

&gt; It&apos;s my opinion that it&apos;s historical and we make assumptions elsewhere that Chromium always has this on.  Maybe jamesr has an opinion here?

removed the USE() checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601508</commentid>
    <comment_count>20</comment_count>
      <attachid>136966</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-12 13:56:30 -0700</bug_when>
    <thetext>Created attachment 136966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601622</commentid>
    <comment_count>21</comment_count>
      <attachid>136966</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-12 16:32:57 -0700</bug_when>
    <thetext>Comment on attachment 136966
Patch

R=me.  Thanks for the additional test.  I think removing copies and testing this outside of layout tests are both things we can do in the future to improve this, but this is a great start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601623</commentid>
    <comment_count>22</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-12 16:33:43 -0700</bug_when>
    <thetext>I&apos;m a bit concerned.

Regressions: Unexpected image mismatch : (20)
  compositing/backface-visibility-hierarchical-transform.html = IMAGE
  compositing/geometry/fixed-position.html = IMAGE
  compositing/masks/direct-image-mask.html = IMAGE
  compositing/masks/masked-ancestor.html = IMAGE
  compositing/masks/multiple-masks.html = IMAGE
  compositing/masks/simple-composited-mask.html = IMAGE
  compositing/reflections/load-video-in-reflection.html = IMAGE
  compositing/reflections/reflection-positioning.html = IMAGE
  compositing/reflections/reflection-positioning2.html = IMAGE
  compositing/reflections/remove-add-reflection.html = IMAGE
  compositing/reflections/transform-inside-reflection.html = IMAGE
  compositing/webgl/webgl-reflection.html = IMAGE
  css3/filters/effect-blur-hw.html = IMAGE
  fast/canvas/webgl/webgl-composite-modes-repaint.html = IMAGE
  fast/forms/placeholder-position.html = IMAGE
  fast/text/drawBidiText.html = IMAGE
  fast/text/international/bidi-listbox-atsui.html = IMAGE
  fast/text/international/thai-line-breaks.html = IMAGE
  platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html = IMAGE
  platform/chromium/compositing/plugins/webplugin-reflection.html = IMAGE


None of these repro if I run them one at a time. But they end up failing with empty compositor output if I run them as a set. What does this mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601631</commentid>
    <comment_count>23</comment_count>
      <attachid>136966</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-12 16:53:12 -0700</bug_when>
    <thetext>Comment on attachment 136966
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1323
&gt; +    if (isCurrentRenderSurface(renderSurface))
&gt; +        return true;

This is causing the test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601675</commentid>
    <comment_count>24</comment_count>
      <attachid>136966</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-12 17:56:27 -0700</bug_when>
    <thetext>Comment on attachment 136966
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1323
&gt;&gt; +        return true;
&gt; 
&gt; This is causing the test failures.

This was essentially reverting http://trac.webkit.org/changeset/110741. Will remove this check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601676</commentid>
    <comment_count>25</comment_count>
      <attachid>137004</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-12 17:58:41 -0700</bug_when>
    <thetext>Created attachment 137004
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601829</commentid>
    <comment_count>26</comment_count>
      <attachid>137004</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 22:29:04 -0700</bug_when>
    <thetext>Comment on attachment 137004
Patch for landing

Clearing flags on attachment: 137004

Committed r114081: &lt;http://trac.webkit.org/changeset/114081&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601830</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 22:29:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854371</commentid>
    <comment_count>28</comment_count>
      <attachid>137004</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-13 09:49:36 -0700</bug_when>
    <thetext>Comment on attachment 137004
Patch for landing

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

&gt; Source/WebCore/testing/Internals.idl:75
&gt; +        void setBackgroundBlurOnNode(in Node node, in long blurLength) raises(DOMException);

This is abuse of the internals object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854378</commentid>
    <comment_count>29</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2013-03-13 10:08:15 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 137004 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137004&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/testing/Internals.idl:75
&gt; &gt; +        void setBackgroundBlurOnNode(in Node node, in long blurLength) raises(DOMException);
&gt; 
&gt; This is abuse of the internals object.

How would you have tested a feature not exposed to the web like this?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129743</attachid>
            <date>2012-03-01 14:27:04 -0800</date>
            <delta_ts>2012-03-02 18:38:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80046-20120301172703.patch</filename>
            <type>text/plain</type>
            <size>45283</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3NTljYzFiMmQ1NTYz
Y2IwZTcxNTkwYjY3OGVkODA1YzM5Mjc0Zi4uNmZmNzljOWZhOWMzZWJkZDAzZTVkODAyZWUwNTE4
Y2VkYzZiNmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTAzLTAxICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQmFj
a2dyb3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhY2tncm91bmQgZmlsdGVycyB0byBM
YXllckNocm9taXVtL0NDTGF5ZXJJbXBsLiBUaGVzZSBmaWx0ZXJzIGFyZQorICAgICAgICBhcHBs
aWVkIHRvIGFueSBwaXhlbHMgaW4gdGhlIGNvbnRlbnRzIGJlaGluZCB0aGUgbGF5ZXIgYW5kIHNl
ZW4gdGhyb3VnaAorICAgICAgICBpdC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE1heSBuZWVk
IHRvIHRlc3QgdGhpcyBpbiBDaHJvbWl1bS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChMYXll
ckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmJhY2tncm91bmRG
aWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJTdXJmYWNlUXVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRl
clN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZp
bHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpiYWNrZ3Jv
dW5kRmlsdGVycyk6CisgICAgICAgIChSZW5kZXJTdXJmYWNlQ2hyb21pdW0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oOgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckltcGw6OmJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c3VidHJlZVNob3VsZFJlbmRlclRvU2VwYXJhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpjbGVhbnVwUmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6ZHJhd2FibGVDb250ZW50UmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVDb250ZW50c0JhY2tncm91bmRU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJT
dXJmYWNlOjpyZWxlYXNlQ29udGVudHNCYWNrZ3JvdW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVSZXBsaWNhQmFja2dyb3VuZFRleHR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpyZWxlYXNlUmVwbGljYUJhY2tncm91
bmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZURl
dmljZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmNvbXB1
dGVEZXZpY2VCb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6
OmNvbXB1dGVSZWFkYmFja0RldmljZUJvdW5kaW5nQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVuZGVyU3VyZmFjZTo6cmVhZGJhY2tEZXZpY2VDb250ZW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRyYXdCYWNrZ3JvdW5kVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZW5kZXJTdXJmYWNlOjpkcmF3QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRTa0Jp
dG1hcFRleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRyYXcp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlclN1cmZhY2U6Omhhc1JlcGxpY2EpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oOgorICAgICAgICAoQ0NSZW5kZXJTdXJmYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6c2V0QmFja2dyb3VuZEZpbHRl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpiYWNrZ3JvdW5kRmlsdGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmNvbnRlbnRzQmFja2dyb3Vu
ZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpyZXBsaWNhQmFj
a2dyb3VuZFRleHR1cmUpOgorCiAyMDEyLTAyLTI3ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdv
b2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbnJldmlld2VkIHNwZWN1bGF0aXZlIENo
cm9taXVtIHdpbiBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGE2ZTk0
ZGY4OTQyZTM5ZGY3ODVhZDczNzk5OGNjMzQxZjVkMzk2N2UuLmE3ZDNmMjNkYzQwMzM0NzRlOTIy
NWFmZWUzYjZhNjQ0MDNkZDc3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTItMDMtMDEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW2Nocm9taXVtXSBCYWNrZ3JvdW5kIGZpbHRlcnMgZm9yIGNvbXBvc2l0ZWQg
bGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
MDA0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
dGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAy
MDEyLTAyLTI2ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIE1vdmUgQ2hyb21lQ2xpZW50OjpzaG93Q29udGV4dE1lbnUoKSB0byBDb250ZXh0TWVudUNs
aWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCA5MjliYmM3ZTE5MzZlZDU1YzU1MThiMTk0
Y2UyZDIzZTE2ZjI0MzgwLi5lNjlkOTc2MDFjNzNlZGFiZDA0ZTdjZWIxMmJlZWFhYjU4ZWY1YTM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMzg1LDYgKzM4NSwxNCBAQCB2b2lkIExheWVy
Q2hyb21pdW06OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAg
ICBzZXROZWVkc0NvbW1pdCgpOwogfQogCit2b2lkIExheWVyQ2hyb21pdW06OnNldEJhY2tncm91
bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKQorewor
ICAgIGlmIChtX2JhY2tncm91bmRGaWx0ZXJzID09IGJhY2tncm91bmRGaWx0ZXJzKQorICAgICAg
ICByZXR1cm47CisgICAgbV9iYWNrZ3JvdW5kRmlsdGVycyA9IGJhY2tncm91bmRGaWx0ZXJzOwor
ICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0
eShmbG9hdCBvcGFjaXR5KQogewogICAgIGlmIChtX29wYWNpdHkgPT0gb3BhY2l0eSkKQEAgLTUx
Nyw2ICs1MjUsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXll
ckltcGwqIGxheWVyKQogICAgIGxheWVyLT5zZXREb3VibGVTaWRlZChtX2RvdWJsZVNpZGVkKTsK
ICAgICBsYXllci0+c2V0RHJhd3NDb250ZW50KGRyYXdzQ29udGVudCgpKTsKICAgICBsYXllci0+
c2V0RmlsdGVycyhmaWx0ZXJzKCkpOworICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhi
YWNrZ3JvdW5kRmlsdGVycygpKTsKICAgICBsYXllci0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVu
dChtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQpOwogICAgIGxheWVyLT5zZXRNYXNrc1RvQm91bmRz
KG1fbWFza3NUb0JvdW5kcyk7CiAgICAgbGF5ZXItPnNldFNjcm9sbGFibGUobV9zY3JvbGxhYmxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBlMzEyM2JmNzk3NjI5NTAyYmFjOTdkYWJmYTI1YzRk
YWQ4OTJkMmZiLi5iMjg1YTRlYjdkNmI4MTlmODFkYmRkMGI3ZDVkNDMxOGMyOTIyNTgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oCkBAIC0xMTUsNiArMTE1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogICAgIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0KIAorICAgIC8vIEJh
Y2tncm91bmQgZmlsdGVycyBhcmUgZmlsdGVycyBhcHBsaWVkIHRvIHdoYXQgaXMgYmVoaW5kIHRo
aXMgbGF5ZXIsIHdoZW4gdGhleSBhcmUgdmlld2VkIHRocm91Z2ggbm9uLW9wYXF1ZQorICAgIC8v
IHJlZ2lvbnMgaW4gdGhpcyBsYXllci4gVGhleSBhcmUgdXNlZCB0aHJvdWdoIHRoZSBXZWJMYXll
ciBpbnRlcmZhY2UsIGFuZCBhcmUgbm90IGV4cG9zZWQgdG8gSFRNTC4KKyAgICB2b2lkIHNldEJh
Y2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKKyAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dy
b3VuZEZpbHRlcnM7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CiAgICAg
Ym9vbCBvcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZTsgfQogCkBAIC0yOTgsNiArMzAz
LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2RlYnVnQm9yZGVyV2lkdGg7CiAgICAgZmxvYXQg
bV9vcGFjaXR5OwogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOworICAgIEZpbHRlck9w
ZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsKICAgICBmbG9hdCBtX2FuY2hvclBvaW50WjsK
ICAgICBib29sIG1faXNEcmF3YWJsZTsKICAgICBib29sIG1fbWFza3NUb0JvdW5kczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDU0MmIzYWQxYzQyNzEzMzMzMjE3
ODE5YjE4OGVmYjNkZGY3NTU3ODUuLmY1ZjlhOTkyOTA1Y2FjNzliNTQzNjc0Y2Q2OGNmN2Y5OWMw
NWVhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiRmxv
YXRRdWFkLmgiCiAjaW5jbHVkZSAiR2VvbWV0cnlCaW5kaW5nLmgiCisjaW5jbHVkZSAiR3JUZXh0
dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKQEAgLTQ1OCw5ICs0
NTksNjIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdEZWJ1Z0JvcmRlclF1YWQo
Y29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKiBxdWEKICAgICBHTEMoY29udGV4dCgpLCBjb250
ZXh0KCktPmRyYXdFbGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6TElORV9MT09QLCA0LCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQsIDYgKiBzaXplb2YodW5zaWduZWQgc2hvcnQp
KSk7CiB9CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRl
cnMoQ0NSZW5kZXJTdXJmYWNlKiBkcmF3aW5nU3VyZmFjZSkKK3sKKyAgICBJbnRSZWN0IGRldmlj
ZVJlY3QgPSBkcmF3aW5nU3VyZmFjZS0+cmVhZGJhY2tEZXZpY2VDb250ZW50UmVjdCh0aGlzKTsK
KyAgICBkZXZpY2VSZWN0LmludGVyc2VjdChtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5jb250ZW50
UmVjdCgpKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRzRGV2aWNlVHJhbnNm
b3JtID0gZHJhd2luZ1N1cmZhY2UtPmNvbXB1dGVEZXZpY2VUcmFuc2Zvcm0odGhpcywgZHJhd2lu
Z1N1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVw
bGljYURldmljZVRyYW5zZm9ybSA9IGRyYXdpbmdTdXJmYWNlLT5jb21wdXRlRGV2aWNlVHJhbnNm
b3JtKHRoaXMsIGRyYXdpbmdTdXJmYWNlLT5yZXBsaWNhRHJhd1RyYW5zZm9ybSgpKTsKKworICAg
IE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gZGV2aWNlQmFja2dyb3VuZFRleHR1cmUgPSBNYW5hZ2Vk
VGV4dHVyZTo6Y3JlYXRlKG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLmdldCgpKTsKKyAg
ICBib29sIGFwcGx5QmFja2dyb3VuZEZpbHRlcnMgPSBnZXRGcmFtZWJ1ZmZlclRleHR1cmUoZGV2
aWNlQmFja2dyb3VuZFRleHR1cmUuZ2V0KCksIGRldmljZVJlY3QpOworCisgICAgaWYgKGFwcGx5
QmFja2dyb3VuZEZpbHRlcnMpIHsKKyAgICAgICAgQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRSZW5k
ZXJTdXJmYWNlID0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZTsKKworICAgICAgICBTa0JpdG1hcCBm
aWx0ZXJlZERldmljZUJhY2tncm91bmQgPSBkcmF3aW5nU3VyZmFjZS0+YXBwbHlGaWx0ZXJzKHRo
aXMsIGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5kRmlsdGVycygpLCBkZXZpY2VCYWNrZ3JvdW5k
VGV4dHVyZS5nZXQoKSk7CisgICAgICAgIGlmIChmaWx0ZXJlZERldmljZUJhY2tncm91bmQuZ2V0
VGV4dHVyZSgpKSB7CisgICAgICAgICAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJl
dF9jYXN0PEdyVGV4dHVyZSo+KGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZC5nZXRUZXh0dXJlKCkp
OworICAgICAgICAgICAgaW50IGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCA9IHRl
eHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKKworICAgICAgICAgICAgYm9vbCBibGVuZCA9IG1f
Y29udGV4dC0+aXNFbmFibGVkKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCk7CisgICAgICAgICAg
ICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkJMRU5EKSk7CisKKyAgICAgICAgICAgIGJvb2wgc2Npc3NvciA9IG1fY29udGV4dC0+aXNF
bmFibGVkKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpOworICAgICAgICAgICAgR0xD
KG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpT
Q0lTU09SX1RFU1QpKTsKKworICAgICAgICAgICAgaWYgKGRyYXdpbmdTdXJmYWNlLT5oYXNSZXBs
aWNhKCkgJiYgdXNlUmVuZGVyU3VyZmFjZShkcmF3aW5nU3VyZmFjZSwgU1VSRkFDRV9CQUNLR1JP
VU5EX1JFUExJQ0EpKQorICAgICAgICAgICAgICAgIGRyYXdpbmdTdXJmYWNlLT5kcmF3QmFja2dy
b3VuZFRleHR1cmUodGhpcywgZmlsdGVyZWREZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZp
Y2VSZWN0LCByZXBsaWNhRGV2aWNlVHJhbnNmb3JtKTsKKworICAgICAgICAgICAgaWYgKHVzZVJl
bmRlclN1cmZhY2UoZHJhd2luZ1N1cmZhY2UsIFNVUkZBQ0VfQkFDS0dST1VORF9DT05URU5UUykp
CisgICAgICAgICAgICAgICAgZHJhd2luZ1N1cmZhY2UtPmRyYXdCYWNrZ3JvdW5kVGV4dHVyZSh0
aGlzLCBmaWx0ZXJlZERldmljZUJhY2tncm91bmRUZXh0dXJlSWQsIGRldmljZVJlY3QsIGNvbnRl
bnRzRGV2aWNlVHJhbnNmb3JtKTsKKworICAgICAgICAgICAgdXNlUmVuZGVyU3VyZmFjZSh0YXJn
ZXRSZW5kZXJTdXJmYWNlLCBTVVJGQUNFX0NPTlRFTlRTKTsKKworICAgICAgICAgICAgaWYgKHNj
aXNzb3IpCisgICAgICAgICAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5l
bmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOworCisgICAgICAgICAgICBk
cmF3aW5nU3VyZmFjZS0+ZHJhd0JhY2tncm91bmQodGhpcyk7CisKKyAgICAgICAgICAgIGlmIChi
bGVuZCkKKyAgICAgICAgICAgICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmVu
YWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKKworICAgICAgICAgICAgZHJhd2luZ1N1
cmZhY2UtPnJlbGVhc2VSZXBsaWNhQmFja2dyb3VuZFRleHR1cmUoKTsKKyAgICAgICAgICAgIGRy
YXdpbmdTdXJmYWNlLT5yZWxlYXNlQ29udGVudHNCYWNrZ3JvdW5kVGV4dHVyZSgpOworICAgICAg
ICB9CisgICAgfQorfQorCisKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVy
U3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqIHF1YWQpCiB7CiAgICAg
Q0NMYXllckltcGwqIGxheWVyID0gcXVhZC0+bGF5ZXIoKTsKKworICAgIGJvb2wgZHJhd2luZ1Rv
Um9vdFJlbmRlclN1cmZhY2UgPSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID09IG1fZGVmYXVsdFJl
bmRlclN1cmZhY2U7CisgICAgaWYgKGRyYXdpbmdUb1Jvb3RSZW5kZXJTdXJmYWNlICYmICFsYXll
ci0+cmVuZGVyU3VyZmFjZSgpLT5iYWNrZ3JvdW5kRmlsdGVycygpLmlzRW1wdHkoKSkKKyAgICAg
ICAgZHJhd0JhY2tncm91bmRGaWx0ZXJzKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCiAgICAg
bGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+ZHJhdyh0aGlzLCBxdWFkLT5zdXJmYWNlRGFtYWdlUmVj
dCgpKTsKICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5yZWxlYXNlQ29udGVudHNUZXh0dXJl
KCk7CiB9CkBAIC0xMDU1LDYgKzExMDksMTcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmUKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBwaXhlbHMpKTsKIH0KIAor
Ym9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZShNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgZGV2aWNlUmVjdCkKK3sKKyAgICBpZiAo
IXRleHR1cmUtPnJlc2VydmUoZGV2aWNlUmVjdC5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZSht
X2NvbnRleHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwor
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3Qu
eSgpLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogTWFuYWdlZFRleHR1cmUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Z2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCkKIHsKICAgICByZXR1cm4gc2V0dGluZ3MoKS5jb21w
b3NpdGVPZmZzY3JlZW4gJiYgcm9vdExheWVyKCkgPyByb290TGF5ZXIoKS0+cmVuZGVyU3VyZmFj
ZSgpLT5jb250ZW50c1RleHR1cmUoKSA6IDA7CkBAIC0xMDc0LDE0ICsxMTM5LDE5IEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpCiAg
ICAgfQogfQogCi1ib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShD
Q1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UpCitib29sIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dXNlUmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UsIFN1cmZh
Y2VUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZSkKIHsKLSAgICBpZiAobV9jdXJyZW50UmVuZGVyU3Vy
ZmFjZSA9PSByZW5kZXJTdXJmYWNlKQorICAgIGlmIChtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID09
IHJlbmRlclN1cmZhY2UgJiYgbV9jdXJyZW50UmVuZGVyU3VyZmFjZVRleHR1cmVUeXBlID09IHRl
eHR1cmVUeXBlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIG1fY3VycmVudFJlbmRlclN1
cmZhY2UgPSByZW5kZXJTdXJmYWNlOwogCiAgICAgaWYgKChyZW5kZXJTdXJmYWNlID09IG1fZGVm
YXVsdFJlbmRlclN1cmZhY2UgJiYgIXNldHRpbmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVuKSB8fCAo
IXJlbmRlclN1cmZhY2UgJiYgc2V0dGluZ3MoKS5jb21wb3NpdGVPZmZzY3JlZW4pKSB7CisgICAg
ICAgIC8vIFRoZSBkZWZhdWx0IHN1cmZhY2UgZG9lc24ndCBoYXZlIGEgYmFja2dyb3VuZCBiZWhp
bmQgaXQuCisgICAgICAgIGlmICh0ZXh0dXJlVHlwZSAhPSBTVVJGQUNFX0NPTlRFTlRTKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlVGV4
dHVyZVR5cGUgPSB0ZXh0dXJlVHlwZTsKKwogICAgICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IDApKTsKICAgICAgICAgaWYgKHJlbmRlclN1cmZhY2UpCiAgICAgICAgICAgICBzZXREcmF3Vmll
d3BvcnRSZWN0KHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCksIHRydWUpOwpAQCAtMTA5Miwx
MCArMTE2MiwyOCBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFj
ZShDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UpCiAKICAgICBHTEMobV9jb250ZXh0Lmdl
dCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwogCi0gICAgaWYgKCFyZW5kZXJTdXJm
YWNlLT5wcmVwYXJlQ29udGVudHNUZXh0dXJlKHRoaXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgbV9jdXJyZW50UmVuZGVyU3VyZmFjZVRleHR1cmVUeXBlID0gdGV4dHVyZVR5cGU7CiAK
LSAgICByZW5kZXJTdXJmYWNlLT5jb250ZW50c1RleHR1cmUoKS0+ZnJhbWVidWZmZXJUZXh0dXJl
MkQobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgp
KTsKKyAgICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSA9IDA7CisgICAgc3dpdGNoICh0ZXh0dXJl
VHlwZSkgeworICAgIGNhc2UgU1VSRkFDRV9DT05URU5UUzoKKyAgICAgICAgaWYgKCFyZW5kZXJT
dXJmYWNlLT5wcmVwYXJlQ29udGVudHNUZXh0dXJlKHRoaXMpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB0ZXh0dXJlID0gcmVuZGVyU3VyZmFjZS0+Y29udGVudHNUZXh0dXJl
KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU1VSRkFDRV9CQUNLR1JPVU5EX0NPTlRFTlRT
OgorICAgICAgICBpZiAoIXJlbmRlclN1cmZhY2UtPnByZXBhcmVDb250ZW50c0JhY2tncm91bmRU
ZXh0dXJlKHRoaXMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0ZXh0dXJl
ID0gcmVuZGVyU3VyZmFjZS0+Y29udGVudHNCYWNrZ3JvdW5kVGV4dHVyZSgpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFNVUkZBQ0VfQkFDS0dST1VORF9SRVBMSUNBOgorICAgICAgICBpZiAo
IXJlbmRlclN1cmZhY2UtPnByZXBhcmVSZXBsaWNhQmFja2dyb3VuZFRleHR1cmUodGhpcykpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRleHR1cmUgPSByZW5kZXJTdXJmYWNl
LT5yZXBsaWNhQmFja2dyb3VuZFRleHR1cmUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IEFTU0VSVCh0ZXh0dXJlKTsKKyAgICB0ZXh0dXJlLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChtX2Nv
bnRleHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwogCiAj
aWYgIWRlZmluZWQgKCBOREVCVUcgKQogICAgIGlmIChtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgKaW5kZXggZWU5ODk1YWUxZDRjOTRjZGE2MzEwZGM3YjNmYjA0M2QyOTVjYjdkYy4uZTBl
YzNkZDQyYzM3ZWNmMTBmZTYxODhkMTkwZGJlNTNmY2FiOTgzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgKQEAgLTEzMyw2ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
Q0NWaWRlb0xheWVySW1wbDo6U3RyZWFtVGV4dHVyZVByb2dyYW0qIHN0cmVhbVRleHR1cmVMYXll
clByb2dyYW0oKTsKIAogICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxz
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgYm9vbCBnZXRGcmFtZWJ1ZmZlclRleHR1cmUoTWFuYWdl
ZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBkZXZpY2VSZWN0KTsKIAogICAgIFRleHR1cmVNYW5h
Z2VyKiByZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
clN1cmZhY2VUZXh0dXJlTWFuYWdlci5nZXQoKTsgfQogICAgIFRleHR1cmVBbGxvY2F0b3IqIHJl
bmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJTdXJm
YWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKTsgfQpAQCAtMTgxLDkgKzE4MiwxNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBzZXREcmF3Vmlld3BvcnRSZWN0KGNvbnN0IEludFJlY3QmLCBib29sIGZs
aXBZKTsKIAotICAgIGJvb2wgdXNlUmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqKTsKKyAg
ICBlbnVtIFN1cmZhY2VUZXh0dXJlVHlwZSB7CisgICAgICAgIFNVUkZBQ0VfQ09OVEVOVFMsCisg
ICAgICAgIFNVUkZBQ0VfQkFDS0dST1VORF9DT05URU5UUywKKyAgICAgICAgU1VSRkFDRV9CQUNL
R1JPVU5EX1JFUExJQ0EsCisgICAgfTsKKworICAgIGJvb2wgdXNlUmVuZGVyU3VyZmFjZShDQ1Jl
bmRlclN1cmZhY2UqLCBTdXJmYWNlVGV4dHVyZVR5cGUgPSBTVVJGQUNFX0NPTlRFTlRTKTsKICAg
ICB2b2lkIGNsZWFyUmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqLCBDQ1JlbmRlclN1cmZh
Y2UqIHJvb3RSZW5kZXJTdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0
KTsKIAorICAgIHZvaWQgZHJhd0JhY2tncm91bmRGaWx0ZXJzKENDUmVuZGVyU3VyZmFjZSopOwor
CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1cmVzKCk7CiAKICAgICBib29sIG1h
a2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMjA4LDYgKzIxNyw3IEBAIHByaXZhdGU6CiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggbV93aW5kb3dNYXRyaXg7CiAKICAgICBDQ1JlbmRlclN1cmZhY2Uq
IG1fY3VycmVudFJlbmRlclN1cmZhY2U7CisgICAgU3VyZmFjZVRleHR1cmVUeXBlIG1fY3VycmVu
dFJlbmRlclN1cmZhY2VUZXh0dXJlVHlwZTsKICAgICB1bnNpZ25lZCBtX29mZnNjcmVlbkZyYW1l
YnVmZmVySWQ7CiAKICAgICAvLyBTdG9yZSB2YWx1ZXMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4g
aW5zdGFuY2VzIG9mIGVhY2ggbGF5ZXIgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21p
dW0uaAppbmRleCA5MDQ1NDI1YmMzZmJmZjIzYzgyMWZmZmU4YTRiYjA3Mzk1YjBlMjhjLi40N2My
MDc2OTMxMGE3MDA1ZDMwY2VhMDE3Yjk0ZDdlMmZiYmJmZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJT
dXJmYWNlQ2hyb21pdW0uaApAQCAtODAsNiArODAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9maWx0ZXJzID0gZmls
dGVyczsgfQogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbHRlcnM7IH0KIAorICAgIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgeyBtX2JhY2tncm91bmRGaWx0ZXJzID0gZmlsdGVy
czsgfQorICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQorCiAgICAgYm9vbCBza2lwc0RyYXco
KSBjb25zdCB7IHJldHVybiBtX3NraXBzRHJhdzsgfQogICAgIHZvaWQgc2V0U2tpcHNEcmF3KGJv
b2wgc2tpcHNEcmF3KSB7IG1fc2tpcHNEcmF3ID0gc2tpcHNEcmF3OyB9CiAKQEAgLTEwMyw2ICsx
MDYsNyBAQCBwcml2YXRlOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcmVwbGljYURyYXdU
cmFuc2Zvcm07CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9vcmlnaW5UcmFuc2Zvcm07CiAg
ICAgRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CisgICAgRmlsdGVyT3BlcmF0aW9ucyBtX2Jh
Y2tncm91bmRGaWx0ZXJzOwogICAgIEludFJlY3QgbV9jbGlwUmVjdDsKICAgICBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4gbV9sYXllckxpc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cAppbmRleCAwMGM2MDMzMGRmMTE4ZThiYTNiYjlhOWYwMjQyNDNiMzQzOTgwZDFmLi45NzIzODM3
MzhkMzJhOGRhY2I0YTdlZTdjZjJkMzJmZjlmOWZiZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
Y3BwCkBAIC00MDMsNiArNDAzLDE1IEBAIHZvaWQgQ0NMYXllckltcGw6OnNldEZpbHRlcnMoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5n
ZWRGb3JTdWJ0cmVlKCk7CiB9CiAKK3ZvaWQgQ0NMYXllckltcGw6OnNldEJhY2tncm91bmRGaWx0
ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKQoreworICAgIGlm
IChtX2JhY2tncm91bmRGaWx0ZXJzID09IGJhY2tncm91bmRGaWx0ZXJzKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2JhY2tncm91bmRGaWx0ZXJzID0gYmFja2dyb3VuZEZpbHRlcnM7CisgICAg
bV9sYXllclByb3BlcnR5Q2hhbmdlZCA9IHRydWU7Cit9CisKIHZvaWQgQ0NMYXllckltcGw6OnNl
dE1hc2tzVG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKQogewogICAgIGlmIChtX21hc2tzVG9C
b3VuZHMgPT0gbWFza3NUb0JvdW5kcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IGQ2ZmQ0OGEx
NjE2ZThmNmZjNzE1YTRjZTcwNWI5MzYyODU1NjM1ZDIuLjc1NWFiY2RhNGQ0NDE5ZWU4NGJmMWQ0
MGM3MDEzZWYxNzFmNDk1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMTE0LDYgKzExNCw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYp
OwogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBt
X2ZpbHRlcnM7IH0KIAorICAgIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYpOworICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQorCiAgICAgdm9pZCBz
ZXRNYXNrc1RvQm91bmRzKGJvb2wpOwogICAgIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0IHsg
cmV0dXJuIG1fbWFza3NUb0JvdW5kczsgfQogCkBAIC0zMTIsNiArMzE1LDcgQEAgcHJpdmF0ZToK
ICAgICBmbG9hdCBtX2RlYnVnQm9yZGVyV2lkdGg7CiAKICAgICBGaWx0ZXJPcGVyYXRpb25zIG1f
ZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7CiAKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07CiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uY3BwCmluZGV4IGM4NmQ3NGQ4NjFkYWY0ZTZlMzI1ZDFjNTNmZDQ3ZjQ5
ODY0Zjg2YTkuLjI5NGJiZDUyYjlkYjJhYWRkOGJjNjUxOWRkOWRkMmE4YzZlY2E5Y2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcApAQCAtMTI4LDcgKzEyOCw3
IEBAIHN0YXRpYyBib29sIHN1YnRyZWVTaG91bGRSZW5kZXJUb1NlcGFyYXRlU3VyZmFjZShMYXll
clR5cGUqIGxheWVyLCBib29sIGF4aXNBbGlnCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gSWYgdGhlIGxheWVyIHVzZXMgYSBDU1MgZmlsdGVyLgotICAgIGlmICghbGF5ZXItPmZpbHRl
cnMoKS5pc0VtcHR5KCkpCisgICAgaWYgKCFsYXllci0+ZmlsdGVycygpLmlzRW1wdHkoKSB8fCAh
bGF5ZXItPmJhY2tncm91bmRGaWx0ZXJzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIElmIHRoZSBsYXllciBmbGF0dGVucyBpdHMgc3VidHJlZSAoaS5lLiB0aGUg
bGF5ZXIgZG9lc24ndCBwcmVzZXJ2ZS0zZCksIGJ1dCBpdCBpcwpAQCAtMzE0LDYgKzMxNCw4IEBA
IHN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFs
KExheWVyVHlwZSogbGF5ZXIsIExheWVyCiAgICAgICAgICAgICBuZWFyZXN0QW5jZXN0b3JUaGF0
TW92ZXNQaXhlbHMgPSByZW5kZXJTdXJmYWNlOwogICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRO
ZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMobmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4
ZWxzKTsKIAorICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhsYXll
ci0+YmFja2dyb3VuZEZpbHRlcnMoKSk7CisKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5hcHBlbmQobGF5ZXIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxheWVyLT5zZXREcmF3VHJh
bnNmb3JtKGNvbWJpbmVkVHJhbnNmb3JtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3Bw
CmluZGV4IDE2OTk5OTgwOGU4ZTQwYTlhZTRiNzEzMGE5MzNiM2E5ZTBkYzgzMGMuLjU2ZmU1YzM1
MWZlNDUwZTQ2MjFkNTc1NzA1NTZkYzRhYmQzOGNiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlLmNwcApAQCAtNjMsMTAgKzYzLDEyIEBAIENDUmVuZGVyU3VyZmFjZTo6fkNDUmVuZGVy
U3VyZmFjZSgpCiAKIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpjbGVhbnVwUmVzb3VyY2VzKCkKIHsK
LSAgICBpZiAoIW1fY29udGVudHNUZXh0dXJlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Nv
bnRlbnRzVGV4dHVyZS5jbGVhcigpOworICAgIGlmIChtX2NvbnRlbnRzVGV4dHVyZSkKKyAgICAg
ICAgbV9jb250ZW50c1RleHR1cmUuY2xlYXIoKTsKKyAgICBpZiAobV9jb250ZW50c0JhY2tncm91
bmRUZXh0dXJlKQorICAgICAgICBtX2NvbnRlbnRzQmFja2dyb3VuZFRleHR1cmUuY2xlYXIoKTsK
KyAgICBpZiAobV9yZXBsaWNhQmFja2dyb3VuZFRleHR1cmUpCisgICAgICAgIG1fcmVwbGljYUJh
Y2tncm91bmRUZXh0dXJlLmNsZWFyKCk7CiB9CiAKIEZsb2F0UmVjdCBDQ1JlbmRlclN1cmZhY2U6
OmRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdApAQCAtNzQsNyArNzYsNyBAQCBGbG9hdFJlY3Qg
Q0NSZW5kZXJTdXJmYWNlOjpkcmF3YWJsZUNvbnRlbnRSZWN0KCkgY29uc3QKICAgICBGbG9hdFJl
Y3QgbG9jYWxDb250ZW50UmVjdCgtMC41ICogbV9jb250ZW50UmVjdC53aWR0aCgpLCAtMC41ICog
bV9jb250ZW50UmVjdC5oZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2NvbnRlbnRSZWN0LndpZHRoKCksIG1fY29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIEZsb2F0
UmVjdCBkcmF3YWJsZUNvbnRlbnRSZWN0ID0gbV9kcmF3VHJhbnNmb3JtLm1hcFJlY3QobG9jYWxD
b250ZW50UmVjdCk7Ci0gICAgaWYgKG1fb3duaW5nTGF5ZXItPnJlcGxpY2FMYXllcigpKQorICAg
IGlmIChoYXNSZXBsaWNhKCkpCiAgICAgICAgIGRyYXdhYmxlQ29udGVudFJlY3QudW5pdGUobV9y
ZXBsaWNhRHJhd1RyYW5zZm9ybS5tYXBSZWN0KGxvY2FsQ29udGVudFJlY3QpKTsKIAogICAgIHJl
dHVybiBkcmF3YWJsZUNvbnRlbnRSZWN0OwpAQCAtMTA3LDIyICsxMDksMTcwIEBAIHZvaWQgQ0NS
ZW5kZXJTdXJmYWNlOjpyZWxlYXNlQ29udGVudHNUZXh0dXJlKCkKICAgICBtX2NvbnRlbnRzVGV4
dHVyZS0+dW5yZXNlcnZlKCk7CiB9CiAKK2Jvb2wgQ0NSZW5kZXJTdXJmYWNlOjpwcmVwYXJlQ29u
dGVudHNCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIpCit7CisgICAgSW50U2l6ZSByZXF1aXJlZFNpemUobV9jb250ZW50UmVjdC5zaXplKCkpOwor
ICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlciA9IGxheWVyUmVuZGVyZXItPnJlbmRl
clN1cmZhY2VUZXh0dXJlTWFuYWdlcigpOworCisgICAgaWYgKCFtX2NvbnRlbnRzQmFja2dyb3Vu
ZFRleHR1cmUpCisgICAgICAgIG1fY29udGVudHNCYWNrZ3JvdW5kVGV4dHVyZSA9IE1hbmFnZWRU
ZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIpOworCisgICAgaWYgKG1fY29udGVudHNCYWNr
Z3JvdW5kVGV4dHVyZS0+aXNSZXNlcnZlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGlmICghbV9jb250ZW50c0JhY2tncm91bmRUZXh0dXJlLT5yZXNlcnZlKHJlcXVpcmVkU2l6ZSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKSB7CisgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fc2tpcHNEcmF3ID0gZmFsc2U7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpyZWxlYXNlQ29u
dGVudHNCYWNrZ3JvdW5kVGV4dHVyZSgpCit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICFtX2Nv
bnRlbnRzQmFja2dyb3VuZFRleHR1cmUpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRlbnRz
QmFja2dyb3VuZFRleHR1cmUtPnVucmVzZXJ2ZSgpOworfQorCitib29sIENDUmVuZGVyU3VyZmFj
ZTo6cHJlcGFyZVJlcGxpY2FCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0q
IGxheWVyUmVuZGVyZXIpCit7CisgICAgSW50U2l6ZSByZXF1aXJlZFNpemUobV9jb250ZW50UmVj
dC5zaXplKCkpOworICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlciA9IGxheWVyUmVu
ZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpOworCisgICAgaWYgKCFtX3JlcGxp
Y2FCYWNrZ3JvdW5kVGV4dHVyZSkKKyAgICAgICAgbV9yZXBsaWNhQmFja2dyb3VuZFRleHR1cmUg
PSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsKKworICAgIGlmIChtX3Jl
cGxpY2FCYWNrZ3JvdW5kVGV4dHVyZS0+aXNSZXNlcnZlZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGlmICghbV9yZXBsaWNhQmFja2dyb3VuZFRleHR1cmUtPnJlc2VydmUocmVxdWly
ZWRTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpIHsKKyAgICAgICAgbV9za2lwc0RyYXcg
PSB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV9za2lwc0RyYXcg
PSBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDQ1JlbmRlclN1cmZhY2U6OnJl
bGVhc2VSZXBsaWNhQmFja2dyb3VuZFRleHR1cmUoKQoreworICAgIGlmIChtX3NraXBzRHJhdyB8
fCAhbV9yZXBsaWNhQmFja2dyb3VuZFRleHR1cmUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Jl
cGxpY2FCYWNrZ3JvdW5kVGV4dHVyZS0+dW5yZXNlcnZlKCk7Cit9CisKK1RyYW5zZm9ybWF0aW9u
TWF0cml4IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZURldmljZVRyYW5zZm9ybShMYXllclJlbmRl
cmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBk
cmF3VHJhbnNmb3JtKSBjb25zdAoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlclRy
YW5zZm9ybSA9IGRyYXdUcmFuc2Zvcm07CisgICAgLy8gQXBwbHkgYSBzY2FsaW5nIGZhY3RvciB0
byBzaXplIHRoZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRlbmRlZCBzaXplLgorICAgIHJlbmRl
clRyYW5zZm9ybS5zY2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5o
ZWlnaHQoKSwgMSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlVHJhbnNmb3JtID0g
VHJhbnNmb3JtYXRpb25NYXRyaXgobGF5ZXJSZW5kZXJlci0+d2luZG93TWF0cml4KCkgKiBsYXll
clJlbmRlcmVyLT5wcm9qZWN0aW9uTWF0cml4KCkgKiByZW5kZXJUcmFuc2Zvcm0pLnRvMmRUcmFu
c2Zvcm0oKTsKKyAgICByZXR1cm4gZGV2aWNlVHJhbnNmb3JtOworfQorCitJbnRSZWN0IENDUmVu
ZGVyU3VyZmFjZTo6Y29tcHV0ZURldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1
bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zv
cm0pIGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudHNEZXZpY2VUcmFu
c2Zvcm0gPSBjb21wdXRlRGV2aWNlVHJhbnNmb3JtKGxheWVyUmVuZGVyZXIsIGRyYXdUcmFuc2Zv
cm0pOworCisgICAgLy8gQ2FuIG9ubHkgZHJhdyBzdXJmYWNlIGlmIGRldmljZSBtYXRyaXggaXMg
aW52ZXJ0aWJsZS4KKyAgICBpZiAoIWNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLmlzSW52ZXJ0aWJs
ZSgpKQorICAgICAgICByZXR1cm4gSW50UmVjdCgpOworCisgICAgRmxvYXRRdWFkIGRldmljZVF1
YWQgPSBjb250ZW50c0RldmljZVRyYW5zZm9ybS5tYXBRdWFkKGxheWVyUmVuZGVyZXItPnNoYXJl
ZEdlb21ldHJ5UXVhZCgpKTsKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChkZXZpY2VRdWFk
LmJvdW5kaW5nQm94KCkpOworfQorCitJbnRSZWN0IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZVJl
YWRiYWNrRGV2aWNlQm91bmRpbmdCb3goTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgY29uc3QKK3sK
KyAgICBJbnRSZWN0IGRldmljZVJlY3QgPSBjb21wdXRlRGV2aWNlQm91bmRpbmdCb3gobGF5ZXJS
ZW5kZXJlciwgZHJhd1RyYW5zZm9ybSk7CisKKyAgICBpZiAobV9iYWNrZ3JvdW5kRmlsdGVycy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBkZXZpY2VSZWN0OworCisgICAgaW50IHRvcCwgcmln
aHQsIGJvdHRvbSwgbGVmdDsKKyAgICBtX2JhY2tncm91bmRGaWx0ZXJzLmdldE91dHNldHModG9w
LCByaWdodCwgYm90dG9tLCBsZWZ0KTsKKyAgICBkZXZpY2VSZWN0Lm1vdmUoLWxlZnQsIC10b3Ap
OworICAgIGRldmljZVJlY3QuZXhwYW5kKGxlZnQgKyByaWdodCwgdG9wICsgYm90dG9tKTsKKwor
ICAgIHJldHVybiBkZXZpY2VSZWN0OworfQorCitJbnRSZWN0IENDUmVuZGVyU3VyZmFjZTo6cmVh
ZGJhY2tEZXZpY2VDb250ZW50UmVjdChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIpIGNvbnN0Cit7CisgICAgSW50UmVjdCBkZXZpY2VDb250ZW50UmVjdCA9IGNvbXB1dGVSZWFk
YmFja0RldmljZUJvdW5kaW5nQm94KGxheWVyUmVuZGVyZXIsIG1fZHJhd1RyYW5zZm9ybSk7Cisg
ICAgaWYgKGhhc1JlcGxpY2EoKSkKKyAgICAgICAgZGV2aWNlQ29udGVudFJlY3QudW5pdGUoY29t
cHV0ZVJlYWRiYWNrRGV2aWNlQm91bmRpbmdCb3gobGF5ZXJSZW5kZXJlciwgbV9yZXBsaWNhRHJh
d1RyYW5zZm9ybSkpOworICAgIHJldHVybiBkZXZpY2VDb250ZW50UmVjdDsKK30KKwordm9pZCBD
Q1JlbmRlclN1cmZhY2U6OmRyYXdCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21p
dW0qIGxheWVyUmVuZGVyZXIsIGludCBkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBjb25zdCBJ
bnRSZWN0JiBkZXZpY2VUZXh0dXJlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRl
dmljZVRyYW5zZm9ybSkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fYmFja2dyb3VuZEZpbHRlcnMu
aXNFbXB0eSgpKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZVRvU3VyZmFjZVRy
YW5zZm9ybTsKKyAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKG1fY29udGVu
dFJlY3Qud2lkdGgoKSAvIDIuMCwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSAvIDIuMCk7CisgICAg
ZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnNjYWxlM2QobV9jb250ZW50UmVjdC53aWR0aCgpLCBt
X2NvbnRlbnRSZWN0LmhlaWdodCgpLCAxKTsKKyAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0g
Kj0gZGV2aWNlVHJhbnNmb3JtLmludmVyc2UoKTsKKyAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zv
cm0udHJhbnNsYXRlKGRldmljZVRleHR1cmVSZWN0LndpZHRoKCkgLyAyLjAsIGRldmljZVRleHR1
cmVSZWN0LmhlaWdodCgpIC8gMi4wKTsKKyAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0udHJh
bnNsYXRlKGRldmljZVRleHR1cmVSZWN0LngoKSwgZGV2aWNlVGV4dHVyZVJlY3QueSgpKTsKKwor
ICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QgPSBsYXllclJlbmRlcmVyLT5jb250ZXh0
KCk7CisgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFMCkpOworICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+Ymlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIGRldmljZUJhY2tncm91bmRU
ZXh0dXJlSWQpKTsKKyAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpKTsKKyAgICBHTEMoY29udGV4
dDNELCBjb250ZXh0M0QtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4
dDNEOjpMSU5FQVIpKTsKKworICAgIC8vIENvbnZlcnQgdGhlIGRldmljZUJhY2tncm91bmRUZXh0
dXJlIHBpeGVscyBpbnRvIGNvbnRlbnQgc3BhY2UgaW4gYmFja2dyb3VuZFRleHR1cmUoKS4KKwor
ICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVy
ZXItPnJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CisgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNE
LT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOworICAgIEdMQyhjb250ZXh0M0QsIGNv
bnRleHQzRC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0
aW9uKCksIDApKTsKKyAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGRldmljZVRv
U3VyZmFjZVRyYW5zZm9ybSwgZGV2aWNlVGV4dHVyZVJlY3Qud2lkdGgoKSwgZGV2aWNlVGV4dHVy
ZVJlY3QuaGVpZ2h0KCksIDEsIGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVy
KCkubWF0cml4TG9jYXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLTEpOworfQorCitzdGF0aWMgdm9pZCBjb3B5VGV4dHVy
ZVRvRnJhbWVidWZmZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBpbnQg
dGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBkcmF3TWF0cml4KQoreworICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6UHJvZ3JhbSog
cHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CisKKyAgICBH
TEMobGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLCBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPmFj
dGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CisgICAgR0xDKGxheWVy
UmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKSk7CisgICAgR0xDKGxh
eWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgR0xD
KGxheWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT50ZXhQ
YXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisKKyAg
ICBHTEMobGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLCBsYXllclJlbmRlcmVyLT5jb250ZXh0KCkt
PnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisgICAgR0xDKGxheWVyUmVuZGVyZXIt
PmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOworICAgIGxheWVyUmVuZGVy
ZXItPmRyYXdUZXh0dXJlZFF1YWQoZHJhd01hdHJpeCwgYm91bmRzLndpZHRoKCksIGJvdW5kcy5o
ZWlnaHQoKSwgMSwgbGF5ZXJSZW5kZXJlci0+c2hhcmVkR2VvbWV0cnlRdWFkKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRy
aXhMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jh
bS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAtMSk7Cit9CisKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3QmFj
a2dyb3VuZChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCit7CisgICAgaWYg
KGhhc1JlcGxpY2EoKSkKKyAgICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGxheWVyUmVu
ZGVyZXIsIG1fcmVwbGljYUJhY2tncm91bmRUZXh0dXJlLT50ZXh0dXJlSWQoKSwgbV9jb250ZW50
UmVjdC5zaXplKCksIG1fcmVwbGljYURyYXdUcmFuc2Zvcm0pOworCisgICAgY29weVRleHR1cmVU
b0ZyYW1lYnVmZmVyKGxheWVyUmVuZGVyZXIsIG1fY29udGVudHNCYWNrZ3JvdW5kVGV4dHVyZS0+
dGV4dHVyZUlkKCksIG1fY29udGVudFJlY3Quc2l6ZSgpLCBtX2RyYXdUcmFuc2Zvcm0pOworfQor
CitpbmxpbmUgc3RhdGljIGludCBnZXRTa0JpdG1hcFRleHR1cmVJZChjb25zdCBTa0JpdG1hcCYg
Yml0bWFwLCBpbnQgZmFsbGJhY2spCit7CisgICAgaWYgKCFiaXRtYXAuZ2V0VGV4dHVyZSgpKQor
ICAgICAgICByZXR1cm4gZmFsbGJhY2s7CisgICAgR3JUZXh0dXJlKiB0ZXh0dXJlID0gcmVpbnRl
cnByZXRfY2FzdDxHclRleHR1cmUqPihiaXRtYXAuZ2V0VGV4dHVyZSgpKTsKKyAgICByZXR1cm4g
dGV4dHVyZS0+Z2V0VGV4dHVyZUhhbmRsZSgpOworfQorCiB2b2lkIENDUmVuZGVyU3VyZmFjZTo6
ZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVj
dCYgc3VyZmFjZURhbWFnZVJlY3QpCiB7CiAgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICFtX2NvbnRl
bnRzVGV4dHVyZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2tCaXRtYXAgZmlsdGVyQml0bWFw
ID0gYXBwbHlGaWx0ZXJzKGxheWVyUmVuZGVyZXIpOwotICAgIC8vIEZJWE1FOiBCeSB1c2luZyB0
aGUgc2FtZSBSZW5kZXJTdXJmYWNlIGZvciBib3RoIHRoZSBjb250ZW50IGFuZCBpdHMgcmVmbGVj
dGlvbiwKLSAgICAvLyBpdCdzIGN1cnJlbnRseSBub3QgcG9zc2libGUgdG8gYXBwbHkgYSBzZXBh
cmF0ZSBtYXNrIHRvIHRoZSByZWZsZWN0aW9uIGxheWVyCi0gICAgLy8gb3IgY29ycmVjdGx5IGhh
bmRsZSBvcGFjaXR5IGluIHJlZmxlY3Rpb25zIChvcGFjaXR5IG11c3QgYmUgYXBwbGllZCBhZnRl
ciBkcmF3aW5nCi0gICAgLy8gYm90aCB0aGUgbGF5ZXIgYW5kIGl0cyByZWZsZWN0aW9uKS4gVGhl
IHNvbHV0aW9uIGlzIHRvIGludHJvZHVjZSB5ZXQgYW5vdGhlciBSZW5kZXJTdXJmYWNlCi0gICAg
Ly8gdG8gZHJhdyB0aGUgbGF5ZXIgYW5kIGl0cyByZWZsZWN0aW9uIGluLiBGb3Igbm93IHdlIG9u
bHkgYXBwbHkgYSBzZXBhcmF0ZSByZWZsZWN0aW9uCi0gICAgLy8gbWFzayBpZiB0aGUgY29udGVu
dHMgZG9uJ3QgaGF2ZSBhIG1hc2sgb2YgdGhlaXIgb3duLgotICAgIENDTGF5ZXJJbXBsKiByZXBs
aWNhTWFza0xheWVyID0gbV9tYXNrTGF5ZXI7Ci0gICAgaWYgKCFtX21hc2tMYXllciAmJiBtX293
bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgcmVwbGljYU1hc2tMYXllciA9IG1f
b3duaW5nTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKTsKLQogICAgIGlmIChtX293
bmluZ0xheWVyLT5wYXJlbnQoKSAmJiBtX293bmluZ0xheWVyLT5wYXJlbnQoKS0+dXNlc0xheWVy
Q2xpcHBpbmcoKSAmJiBsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxT
d2FwKSB7CiAgICAgICAgIEZsb2F0UmVjdCBjbGlwQW5kRGFtYWdlUmVjdCA9IG1fY2xpcFJlY3Q7
CiAgICAgICAgIGNsaXBBbmREYW1hZ2VSZWN0LmludGVyc2VjdChzdXJmYWNlRGFtYWdlUmVjdCk7
CkBAIC0xMzQsMjAgKzI4NCwzNCBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhdyhMYXllclJl
bmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdAogICAgIGVsc2UK
ICAgICAgICAgR0xDKGxheWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29u
dGV4dCgpLT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKIAorICAg
IC8vIEFwcGx5IGZpbHRlcnMgdG8gdGhlIGNvbnRlbnRzIHRleHR1cmUuCisgICAgU2tCaXRtYXAg
ZmlsdGVyQml0bWFwID0gYXBwbHlGaWx0ZXJzKGxheWVyUmVuZGVyZXIsIG1fZmlsdGVycywgbV9j
b250ZW50c1RleHR1cmUuZ2V0KCkpOworCiAgICAgLy8gUmVmbGVjdGlvbiBkcmF3cyBiZWZvcmUg
dGhlIGxheWVyLgotICAgIGlmIChtX293bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAg
ICAgZHJhd0xheWVyKGxheWVyUmVuZGVyZXIsIHJlcGxpY2FNYXNrTGF5ZXIsIG1fcmVwbGljYURy
YXdUcmFuc2Zvcm0sIGZpbHRlckJpdG1hcCk7CisgICAgaWYgKGhhc1JlcGxpY2EoKSkgeworICAg
ICAgICAvLyBGSVhNRTogQnkgdXNpbmcgdGhlIHNhbWUgUmVuZGVyU3VyZmFjZSBmb3IgYm90aCB0
aGUgY29udGVudCBhbmQgaXRzIHJlZmxlY3Rpb24sCisgICAgICAgIC8vIGl0J3MgY3VycmVudGx5
IG5vdCBwb3NzaWJsZSB0byBhcHBseSBhIHNlcGFyYXRlIG1hc2sgdG8gdGhlIHJlZmxlY3Rpb24g
bGF5ZXIKKyAgICAgICAgLy8gb3IgY29ycmVjdGx5IGhhbmRsZSBvcGFjaXR5IGluIHJlZmxlY3Rp
b25zIChvcGFjaXR5IG11c3QgYmUgYXBwbGllZCBhZnRlciBkcmF3aW5nCisgICAgICAgIC8vIGJv
dGggdGhlIGxheWVyIGFuZCBpdHMgcmVmbGVjdGlvbikuIFRoZSBzb2x1dGlvbiBpcyB0byBpbnRy
b2R1Y2UgeWV0IGFub3RoZXIgUmVuZGVyU3VyZmFjZQorICAgICAgICAvLyB0byBkcmF3IHRoZSBs
YXllciBhbmQgaXRzIHJlZmxlY3Rpb24gaW4uIEZvciBub3cgd2Ugb25seSBhcHBseSBhIHNlcGFy
YXRlIHJlZmxlY3Rpb24KKyAgICAgICAgLy8gbWFzayBpZiB0aGUgY29udGVudHMgZG9uJ3QgaGF2
ZSBhIG1hc2sgb2YgdGhlaXIgb3duLgorICAgICAgICBDQ0xheWVySW1wbCogcmVwbGljYU1hc2tM
YXllciA9IG1fbWFza0xheWVyOworICAgICAgICBpZiAoIW1fbWFza0xheWVyKQorICAgICAgICAg
ICAgcmVwbGljYU1hc2tMYXllciA9IG1fb3duaW5nTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNr
TGF5ZXIoKTsKKworICAgICAgICBpbnQgY29udGVudHNUZXh0dXJlSWQgPSBnZXRTa0JpdG1hcFRl
eHR1cmVJZChmaWx0ZXJCaXRtYXAsIG1fY29udGVudHNUZXh0dXJlLT50ZXh0dXJlSWQoKSk7Cisg
ICAgICAgIGludCBiYWNrZ3JvdW5kVGV4dHVyZUlkID0gbV9yZXBsaWNhQmFja2dyb3VuZFRleHR1
cmUgPyBtX3JlcGxpY2FCYWNrZ3JvdW5kVGV4dHVyZS0+dGV4dHVyZUlkKCkgOiAwOworICAgICAg
ICBkcmF3TGF5ZXIobGF5ZXJSZW5kZXJlciwgcmVwbGljYU1hc2tMYXllciwgbV9yZXBsaWNhRHJh
d1RyYW5zZm9ybSwgY29udGVudHNUZXh0dXJlSWQsIGJhY2tncm91bmRUZXh0dXJlSWQpOworICAg
IH0KIAotICAgIGRyYXdMYXllcihsYXllclJlbmRlcmVyLCBtX21hc2tMYXllciwgbV9kcmF3VHJh
bnNmb3JtLCBmaWx0ZXJCaXRtYXApOworICAgIGludCBjb250ZW50c1RleHR1cmVJZCA9IGdldFNr
Qml0bWFwVGV4dHVyZUlkKGZpbHRlckJpdG1hcCwgbV9jb250ZW50c1RleHR1cmUtPnRleHR1cmVJ
ZCgpKTsKKyAgICBpbnQgYmFja2dyb3VuZFRleHR1cmVJZCA9IG1fY29udGVudHNCYWNrZ3JvdW5k
VGV4dHVyZSA/IG1fY29udGVudHNCYWNrZ3JvdW5kVGV4dHVyZS0+dGV4dHVyZUlkKCkgOiAwOwor
ICAgIGRyYXdMYXllcihsYXllclJlbmRlcmVyLCBtX21hc2tMYXllciwgbV9kcmF3VHJhbnNmb3Jt
LCBjb250ZW50c1RleHR1cmVJZCwgYmFja2dyb3VuZFRleHR1cmVJZCk7CiB9CiAKLXZvaWQgQ0NS
ZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyLCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZHJhd1RyYW5zZm9ybSwgY29uc3QgU2tCaXRtYXAmIGZpbHRlckJpdG1hcCkKK3ZvaWQgQ0NSZW5k
ZXJTdXJmYWNlOjpkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVy
LCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJh
d1RyYW5zZm9ybSwgaW50IGNvbnRlbnRzVGV4dHVyZUlkLCBpbnQgYmFja2dyb3VuZFRleHR1cmVJ
ZCkKIHsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZW5kZXJNYXRyaXggPSBkcmF3VHJhbnNm
b3JtOwotICAgIC8vIEFwcGx5IGEgc2NhbGluZyBmYWN0b3IgdG8gc2l6ZSB0aGUgcXVhZCBmcm9t
IDF4MSB0byBpdHMgaW50ZW5kZWQgc2l6ZS4KLSAgICByZW5kZXJNYXRyaXguc2NhbGUzZChtX2Nv
bnRlbnRSZWN0LndpZHRoKCksIG1fY29udGVudFJlY3QuaGVpZ2h0KCksIDEpOwotCi0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggZGV2aWNlTWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgobGF5
ZXJSZW5kZXJlci0+d2luZG93TWF0cml4KCkgKiBsYXllclJlbmRlcmVyLT5wcm9qZWN0aW9uTWF0
cml4KCkgKiByZW5kZXJNYXRyaXgpLnRvMmRUcmFuc2Zvcm0oKTsKKyAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBkZXZpY2VNYXRyaXggPSBjb21wdXRlRGV2aWNlVHJhbnNmb3JtKGxheWVyUmVuZGVy
ZXIsIGRyYXdUcmFuc2Zvcm0pOwogCiAgICAgLy8gQ2FuIG9ubHkgZHJhdyBzdXJmYWNlIGlmIGRl
dmljZSBtYXRyaXggaXMgaW52ZXJ0aWJsZS4KICAgICBpZiAoIWRldmljZU1hdHJpeC5pc0ludmVy
dGlibGUoKSkKQEAgLTE3MCwyNyArMzM0LDI5IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3
TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySW1wCiAg
ICAgICAgIGlmICghbWFza0xheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICB1
c2VNYXNrID0gdHJ1ZTsKIAorICAgIC8vIEZJWE1FOiB1c2UgYmFja2dyb3VuZFRleHR1cmVJZCBh
bmQgYmxlbmQgdGhlIGJhY2tncm91bmQgaW4gd2l0aCB0aGlzIGRyYXcgaW5zdGVhZCBvZiBoYXZp
bmcgYSBzZXBhcmF0ZSBkcmF3QmFja2dyb3VuZCgpIHBhc3MuCisKICAgICBpZiAodXNlTWFzaykg
ewogICAgICAgICBpZiAodXNlQUEpIHsKICAgICAgICAgICAgIGNvbnN0IE1hc2tQcm9ncmFtQUEq
IHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSgpOwot
ICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJh
bnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgcHJvZ3JhbSwgcHJv
Z3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9uKCksIHByb2dyYW0tPnZl
cnRleFNoYWRlcigpLnBvaW50TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5l
ZGdlTG9jYXRpb24oKSwgZmlsdGVyQml0bWFwKTsKKyAgICAgICAgICAgIGRyYXdTdXJmYWNlKGxh
eWVyUmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZp
Y2VSZWN0LCBsYXllclF1YWQsIGNvbnRlbnRzVGV4dHVyZUlkLCBwcm9ncmFtLCBwcm9ncmFtLT5m
cmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgcHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2Nh
dGlvbigpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnN0IE1hc2tQcm9ncmFt
KiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7Ci0g
ICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFu
c2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCBwcm9n
cmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgLTEsIC0xLCBmaWx0
ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xh
eWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwg
Y29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkubWFz
a1NhbXBsZXJMb2NhdGlvbigpLCAtMSwgLTEpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKHVzZUFBKSB7CiAgICAgICAgICAgICBjb25zdCBQcm9ncmFtQUEqIHByb2dyYW0g
PSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKCk7Ci0gICAgICAgICAgICBk
cmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmlj
ZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCAtMSwgcHJvZ3JhbS0+dmVy
dGV4U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVk
Z2VMb2NhdGlvbigpLCBmaWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5
ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmlj
ZVJlY3QsIGxheWVyUXVhZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIC0xLCBwcm9ncmFt
LT52ZXJ0ZXhTaGFkZXIoKS5wb2ludExvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuZWRnZUxvY2F0aW9uKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29uc3Qg
UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VQcm9ncmFtKCk7
Ci0gICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdU
cmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCAt
MSwgLTEsIC0xLCBmaWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJS
ZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJl
Y3QsIGxheWVyUXVhZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIC0xLCAtMSwgLTEpOwog
ICAgICAgICB9CiAgICAgfQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLXZvaWQgQ0NSZW5kZXJT
dXJmYWNlOjpkcmF3U3VyZmFjZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIs
IENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3
VHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtLCBj
b25zdCBDQ0xheWVyUXVhZCYgZGV2aWNlUmVjdCwgY29uc3QgQ0NMYXllclF1YWQmIGxheWVyUXVh
ZCwgY29uc3QgVCogcHJvZ3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBz
aGFkZXJRdWFkTG9jYXRpb24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24sIGNvbnN0IFNrQml0bWFw
JiBmaWx0ZXJCaXRtYXApCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2UoTGF5ZXJS
ZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXllclF1YWQmIGRldmljZVJl
Y3QsIGNvbnN0IENDTGF5ZXJRdWFkJiBsYXllclF1YWQsIGludCBjb250ZW50c1RleHR1cmVJZCwg
Y29uc3QgVCogcHJvZ3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFk
ZXJRdWFkTG9jYXRpb24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24pCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQzRCA9IGxheWVyUmVuZGVyZXItPmNvbnRleHQoKTsKIApAQCAtMTk5
LDExICszNjUsNyBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySQogCiAgICAgR0xDKGNvbnRleHQz
RCwgY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkp
OwogICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBpZiAoZmlsdGVyQml0bWFw
LmdldFRleHR1cmUoKSkgewotICAgICAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJl
dF9jYXN0PEdyVGV4dHVyZSo+KGZpbHRlckJpdG1hcC5nZXRUZXh0dXJlKCkpOwotICAgICAgICBj
b250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0
dXJlLT5nZXRUZXh0dXJlSGFuZGxlKCkpOwotICAgIH0gZWxzZQotICAgICAgICBtX2NvbnRlbnRz
VGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dDNELCBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJm
YWNlVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBjb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBjb250ZW50c1RleHR1cmVJZCk7CiAKICAgICBpZiAo
c2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiAhPSAtMSkgewogICAgICAgICBHTEMoY29udGV4dDNE
LCBjb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7
CkBAIC0yMjYsMTUgKzM4OCwxNCBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2Uo
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4
TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksIHNo
YWRlclF1YWRMb2NhdGlvbik7CiB9CiAKLVNrQml0bWFwIENDUmVuZGVyU3VyZmFjZTo6YXBwbHlG
aWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK1NrQml0bWFwIEND
UmVuZGVyU3VyZmFjZTo6YXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJS
ZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgTWFuYWdlZFRleHR1cmUq
IHNvdXJjZVRleHR1cmUpCiB7Ci0gICAgLy8gRG9uJ3QgdXNlIHRoZSB1dGlsaXR5IGNvbnRleHQg
aWYgd2UgaGF2ZSBhIGNvbXBvc2l0b3IgdGhyZWFkLCBzaW5jZQotICAgIC8vIGl0IGNhbiByYWNl
IHdpdGggY2FudmFzJ3MgdXNlLgotICAgIGlmICghbV9jb250ZW50c1RleHR1cmUgfHwgIW1fZmls
dGVycy5zaXplKCkgfHwgQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQorICAgIC8vIEZJWE1FOiBE
b24ndCB1c2UgdGhlIHV0aWxpdHkgY29udGV4dCBpZiB3ZSBoYXZlIGEgY29tcG9zaXRvciB0aHJl
YWQsIHNpbmNlIGl0IGNhbiByYWNlIHdpdGggY2FudmFzJ3MgdXNlLgorICAgIGlmIChmaWx0ZXJz
LmlzRW1wdHkoKSB8fCBDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBT
a0JpdG1hcCgpOwogCiAgICAgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5mbHVzaCgpOwotICAg
IHJldHVybiBDQ1JlbmRlclN1cmZhY2VGaWx0ZXJzOjphcHBseShtX2ZpbHRlcnMsIG1fY29udGVu
dHNUZXh0dXJlLT50ZXh0dXJlSWQoKSwgbV9jb250ZW50UmVjdC5zaXplKCksIFNoYXJlZEdyYXBo
aWNzQ29udGV4dDNEOjpnZXQoKSk7CisgICAgcmV0dXJuIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6
OmFwcGx5KGZpbHRlcnMsIHNvdXJjZVRleHR1cmUtPnRleHR1cmVJZCgpLCBzb3VyY2VUZXh0dXJl
LT5zaXplKCksIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQoKSk7CiB9CiAKIFN0cmluZyBD
Q1JlbmRlclN1cmZhY2U6Om5hbWUoKSBjb25zdApAQCAtMjY4LDYgKzQyOSwxMSBAQCB2b2lkIEND
UmVuZGVyU3VyZmFjZTo6ZHVtcFN1cmZhY2UoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNv
bnN0CiAgICAgdHMgPDwgInNpemUoIiA8PCBtX2RhbWFnZVRyYWNrZXItPmN1cnJlbnREYW1hZ2VS
ZWN0KCkud2lkdGgoKSA8PCAiLCIgPDwgbV9kYW1hZ2VUcmFja2VyLT5jdXJyZW50RGFtYWdlUmVj
dCgpLmhlaWdodCgpIDw8ICIpXG4iOwogfQogCitib29sIENDUmVuZGVyU3VyZmFjZTo6aGFzUmVw
bGljYSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fb3duaW5nTGF5ZXItPnJlcGxpY2FMYXllcigp
OworfQorCiBpbnQgQ0NSZW5kZXJTdXJmYWNlOjpvd25pbmdMYXllcklkKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9vd25pbmdMYXllciA/IG1fb3duaW5nTGF5ZXItPmlkKCkgOiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCBlNWU2ODNhNTIzNmVhZDU5NTVhOGIzN2RmMTg3ZGUx
ZWVmZjg2N2QwLi4xMTJmOGRiMDk0Y2I2ZDhjMDA2ZjQwN2E5Mzc1ZmM4NmZkMWMyZDk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtNTUsOCArNTUsMjAgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBwcmVwYXJlQ29udGVudHNUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwog
ICAgIHZvaWQgcmVsZWFzZUNvbnRlbnRzVGV4dHVyZSgpOworCisgICAgYm9vbCBwcmVwYXJlQ29u
dGVudHNCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKKyAgICB2b2lk
IHJlbGVhc2VDb250ZW50c0JhY2tncm91bmRUZXh0dXJlKCk7CisKKyAgICBib29sIHByZXBhcmVS
ZXBsaWNhQmFja2dyb3VuZFRleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisgICAgdm9p
ZCByZWxlYXNlUmVwbGljYUJhY2tncm91bmRUZXh0dXJlKCk7CisKICAgICB2b2lkIGNsZWFudXBS
ZXNvdXJjZXMoKTsKICAgICB2b2lkIGRyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3Qg
RmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CisgICAgLy8gVGFrZXMgYSB0ZXh0dXJlIHdp
dGggcGl4ZWxzIGluIGRldmljZSBjb29yZGluYXRlcywgYW5kIGEgdHJhbnNmb3JtIGZyb20gY29u
dGVudCBzcGFjZSB0byB0aGUgZGV2aWNlLiBEcmF3cyBjb250ZW50cyBvZiB0aGUgZGV2aWNlIGJh
Y2tncm91bmQKKyAgICAvLyBiYWNrIGludG8gY29udGVudCBzcGFjZSBmb3IgdGhlIHN1cmZhY2Uu
IFRoZSBzdXJmYWNlJ3MgY29udGVudHNCYWNrZ3JvdW5kVGV4dHVyZSgpIG9yIHJlcGxpY2FCYWNr
Z3JvdW5kVGV4dHVyZSgpIG11c3QgYmUgdGhlIGFjdGl2ZSBkcmF3aW5nIHRhcmdldC4KKyAgICB2
b2lkIGRyYXdCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBpbnQgZGV2
aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgZGV2aWNlVGV4dHVyZVJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0pIGNvbnN0OworICAg
IC8vIERyYXcgdGhlIGNvbnRlbnRzIGFuZCByZXBsaWNhIGJhY2tncm91bmQgdGV4dHVyZXMgYmFj
ayBpbnRvIHRoZSB0YXJnZXQgc3VyZmFjZS4KKyAgICB2b2lkIGRyYXdCYWNrZ3JvdW5kKExheWVy
UmVuZGVyZXJDaHJvbWl1bSopOwogCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB2b2lk
IGR1bXBTdXJmYWNlKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdDsKQEAgLTY2LDYgKzc4
LDEzIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSByZWN0IHRoYXQgZW5jbG9zZXMgdGhl
IFJlbmRlclN1cmZhY2UgaW5jbHVkaW5nIGFueSByZWZsZWN0aW9uLgogICAgIEZsb2F0UmVjdCBk
cmF3YWJsZUNvbnRlbnRSZWN0KCkgY29uc3Q7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSByZWN0IHRo
YXQgZW5jbG9zZXMgdGhlIFJlbmRlclN1cmZhY2UgaW5jbHVkaW5nIGFueSByZWZsZWN0aW9uIGlu
IHRoZSB0YXJnZXQgZGV2aWNlIGNvb3JkaW5hdGUgc3BhY2UsIGFuZCBpbmNsdWRpbmcgYW55IHBp
eGVscworICAgIC8vIG5lZWRlZCBpbiBvcmRlciB0byBkcmF3IGNvcnJlY3RseS4KKyAgICBJbnRS
ZWN0IHJlYWRiYWNrRGV2aWNlQ29udGVudFJlY3QoTGF5ZXJSZW5kZXJlckNocm9taXVtKikgY29u
c3Q7CisKKyAgICAvLyBHaXZlcyB0aGUgdHJhbnNmb3JtIGZyb20gdGhlIHN1cmZhY2UgY29udGVu
dCBzcGFjZSwgd2l0aCBvcmlnaW4gaW4gdGhlIHRvcCBsZWZ0LCB0byB0aGUgY3VycmVudCB0YXJn
ZXQgZGV2aWNlIHNwYWNlLCB3aXRoIG9yaWdpbiBpbiB0aGUgdG9wIGxlZnQuCisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggY29tcHV0ZURldmljZVRyYW5zZm9ybShMYXllclJlbmRlcmVyQ2hyb21p
dW0qLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgY29uc3Q7CisK
ICAgICBmbG9hdCBkcmF3T3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd09wYWNpdHk7IH0K
ICAgICB2b2lkIHNldERyYXdPcGFjaXR5KGZsb2F0IG9wYWNpdHkpIHsgbV9kcmF3T3BhY2l0eSA9
IG9wYWNpdHk7IH0KIApAQCAtNzQsNyArOTMsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9maWx0ZXJzID0gZmls
dGVyczsgfQogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbHRlcnM7IH0KLSAgICBTa0JpdG1hcCBhcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKik7CisgICAgU2tCaXRtYXAgYXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJv
bWl1bSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBNYW5hZ2VkVGV4dHVyZSogc291cmNlVGV4
dHVyZSk7CisKKyAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMpIHsgbV9iYWNrZ3JvdW5kRmlsdGVycyA9IGZpbHRlcnM7IH0KKyAgICBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KIAogICAgIHZvaWQgc2V0TmVhcmVzdEFuY2VzdG9yVGhh
dE1vdmVzUGl4ZWxzKENDUmVuZGVyU3VyZmFjZSogc3VyZmFjZSkgeyBtX25lYXJlc3RBbmNlc3Rv
clRoYXRNb3Zlc1BpeGVscyA9IHN1cmZhY2U7IH0KICAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2Uq
IG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIG1fbmVhcmVz
dEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzOyB9CkBAIC0xMDUsNiArMTI3LDEwIEBAIHB1YmxpYzoK
ICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hh
ZGVyUkdCQVRleEFscGhhTWFza0FBPiBNYXNrUHJvZ3JhbUFBOwogCiAgICAgTWFuYWdlZFRleHR1
cmUqIGNvbnRlbnRzVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNUZXh0dXJlLmdl
dCgpOyB9CisgICAgTWFuYWdlZFRleHR1cmUqIGNvbnRlbnRzQmFja2dyb3VuZFRleHR1cmUoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRzQmFja2dyb3VuZFRleHR1cmUuZ2V0KCk7IH0KKyAgICBN
YW5hZ2VkVGV4dHVyZSogcmVwbGljYUJhY2tncm91bmRUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXBsaWNhQmFja2dyb3VuZFRleHR1cmUuZ2V0KCk7IH0KKworICAgIGJvb2wgaGFzUmVwbGlj
YSgpIGNvbnN0OwogCiAgICAgaW50IG93bmluZ0xheWVySWQoKSBjb25zdDsKIApAQCAtMTE1LDkg
KzE0MSwxMiBAQCBwdWJsaWM6CiAgICAgQ0NEYW1hZ2VUcmFja2VyKiBkYW1hZ2VUcmFja2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9kYW1hZ2VUcmFja2VyLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwqLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRtYXApOwor
ICAgIEludFJlY3QgY29tcHV0ZURldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1
bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKKyAg
ICBJbnRSZWN0IGNvbXB1dGVSZWFkYmFja0RldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJD
aHJvbWl1bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25z
dDsKKworICAgIHZvaWQgZHJhd0xheWVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIENDTGF5ZXJJ
bXBsKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBpbnQgY29udGVudHNUZXh0dXJlSWQs
IGludCBiYWNrZ3JvdW5kVGV4dHVyZUlkKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICB2
b2lkIGRyYXdTdXJmYWNlKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIENDTGF5ZXJJbXBsKiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0sIGNvbnN0IENDTGF5ZXJRdWFkJiBkZXZpY2VSZWN0
LCBjb25zdCBDQ0xheWVyUXVhZCYsIGNvbnN0IFQqIHByb2dyYW0sIGludCBzaGFkZXJNYXNrU2Ft
cGxlckxvY2F0aW9uLCBpbnQgc2hhZGVyUXVhZExvY2F0aW9uLCBpbnQgc2hhZGVyRWRnZUxvY2F0
aW9uLCBjb25zdCBTa0JpdG1hcCYgZmlsdGVyQml0bWFwKTsKKyAgICB2b2lkIGRyYXdTdXJmYWNl
KExheWVyUmVuZGVyZXJDaHJvbWl1bSosIENDTGF5ZXJJbXBsKiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZp
Y2VUcmFuc2Zvcm0sIGNvbnN0IENDTGF5ZXJRdWFkJiBkZXZpY2VSZWN0LCBjb25zdCBDQ0xheWVy
UXVhZCYsIGludCBjb250ZW50c1RleHR1cmVJZCwgY29uc3QgVCogcHJvZ3JhbSwgaW50IHNoYWRl
ck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFkZXJRdWFkTG9jYXRpb24sIGludCBzaGFkZXJF
ZGdlTG9jYXRpb24pOwogCiAgICAgQ0NMYXllckltcGwqIG1fb3duaW5nTGF5ZXI7CiAgICAgQ0NM
YXllckltcGwqIG1fbWFza0xheWVyOwpAQCAtMTI3LDExICsxNTYsMTUgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fc3VyZmFjZVByb3BlcnR5Q2hhbmdlZDsKIAogICAgIE93blB0cjxNYW5hZ2VkVGV4
dHVyZT4gbV9jb250ZW50c1RleHR1cmU7CisgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX2Nv
bnRlbnRzQmFja2dyb3VuZFRleHR1cmU7CisgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3Jl
cGxpY2FCYWNrZ3JvdW5kVGV4dHVyZTsKKwogICAgIGZsb2F0IG1fZHJhd09wYWNpdHk7CiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbV9kcmF3VHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG1fcmVwbGljYURyYXdUcmFuc2Zvcm07CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
bV9vcmlnaW5UcmFuc2Zvcm07CiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CisgICAg
RmlsdGVyT3BlcmF0aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOwogICAgIEludFJlY3QgbV9jbGlw
UmVjdDsKICAgICBWZWN0b3I8Q0NMYXllckltcGwqPiBtX2xheWVyTGlzdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCmluZGV4IDhhOWYz
NWRjOGE3Yjg5YzBjOTRiZDc1MzdjNjg0NjRmYTc4YTZiYjguLjIyOTk3NDE0ZTA5MWUzZmUwMTI4
ZWRmNGJjMWVkZWVjMTEzZTJiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTExMyw2ICsxMTMsNyBAQCBURVNUKENDTGF5ZXJJ
bXBsVGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5KQogICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0RHJhd3NDb250ZW50KHRy
dWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNl
dEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9P
TkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KHRydWUp
KTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldEJh
Y2tncm91bmRGaWx0ZXJzKGFyYml0cmFyeUZpbHRlcnMpKTsKIAogICAgIC8vIFNwZWNpYWwgY2Fz
ZTogY2hlY2sgdGhhdCBzdWJsYXllciB0cmFuc2Zvcm0gY2hhbmdlcyBhbGwgbGF5ZXIncyBkZXNj
ZW5kYW50cywgYnV0IG5vdCB0aGUgbGF5ZXIgaXRzZWxmLgogICAgIHJvb3QtPnJlc2V0QWxsQ2hh
bmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129985</attachid>
            <date>2012-03-02 18:38:31 -0800</date>
            <delta_ts>2012-03-14 10:58:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80046-20120302213830.patch</filename>
            <type>text/plain</type>
            <size>45477</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY3MzEzOGRjYTg4ZGY4
MzMzYjhlN2Y5ZmYwZDYyNmUyZTk3NmY3MC4uMjQxZjUwZjU1ZWUxMWM5MGFlNjNkMDIxMTk2MTc2
Yjc0NmQwMmFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTAzLTAyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQmFj
a2dyb3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhY2tncm91bmQgZmlsdGVycyB0byBM
YXllckNocm9taXVtL0NDTGF5ZXJJbXBsLiBUaGVzZSBmaWx0ZXJzIGFyZQorICAgICAgICBhcHBs
aWVkIHRvIGFueSBwaXhlbHMgaW4gdGhlIGNvbnRlbnRzIGJlaGluZCB0aGUgbGF5ZXIgYW5kIHNl
ZW4gdGhyb3VnaAorICAgICAgICBpdC4KKworICAgICAgICBVbml0IHRlc3QgdGhlIGJhY2tncm91
bmQgZmlsdGVyIHByb3BlcnR5IGJlaW5nIHBhc3NlZCB0byBpbXBsIGNvcnJlY3RseS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OmJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdSZW5kZXJTdXJmYWNlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjp1c2VNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6
CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OmJhY2tncm91bmRGaWx0ZXJzKToKKyAg
ICAgICAgKFJlbmRlclN1cmZhY2VDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckltcGw6OnNldEJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAg
IChDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YmFja2dyb3Vu
ZEZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJ0cmVlU2hvdWxkUmVu
ZGVyVG9TZXBhcmF0ZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlclN1cmZhY2U6OmNsZWFudXBSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZW5kZXJTdXJmYWNlOjpkcmF3YWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVuZGVyU3VyZmFjZTo6cHJlcGFyZUNvbnRlbnRzQmFja2dyb3VuZFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OnJlbGVhc2VD
b250ZW50c0JhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6cHJlcGFyZVJlcGxpY2FCYWNrZ3JvdW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OnJlbGVhc2VSZXBsaWNhQmFja2dyb3VuZFRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpjb21wdXRlRGV2aWNlVHJhbnNmb3JtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZURldmljZUJvdW5kaW5n
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZVJlYWRiYWNr
RGV2aWNlQm91bmRpbmdCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpy
ZWFkYmFja0RldmljZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6ZHJhd0JhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlUZXh0
dXJlVG9GcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRy
YXdCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFNrQml0bWFwVGV4dHVyZUlkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6ZHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRyYXdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclN1cmZhY2U6OmRyYXdTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6c2V0U2Npc3NvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNl
OjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpoYXNS
ZXBsaWNhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clN1cmZhY2UuaDoKKyAgICAgICAgKENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OnNldEJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVuZGVyU3VyZmFjZTo6YmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJTdXJmYWNlOjpjb250ZW50c0JhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cmVwbGljYUJhY2tncm91bmRUZXh0dXJlKToKKwog
MjAxMi0wMy0wMSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2hy
b21lIDE4IGZhaWxzIGh0bWw1dGVzdC5jb20gWEhSIEJsb2IgcmVzcG9uc2UgdGVzdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAzYjllMGJkNTA5Yzk0M2UxNjUwOWMxMDQwM2I4YzhmZTk0
MGFiM2ZkLi4wYjkyZjA0ODNmNjQ0NDY0ZTZiZmFhM2JhMDkyMzRhNGVmNmFlYjk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDEyLTAzLTAyICBEYW5hIEph
bnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQmFja2dy
b3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpURVNUKToKKworMjAxMi0wMy0wMiAgRGFuYSBKYW5zZW5zICA8ZGFu
YWtqQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbQ2hyb21pdW1dIEFsbG93IHBsdWdpbnMgdG8g
c2V0IG9wYXF1ZSgpIG9uIHRoZWlyIHBsYXRmb3JtIGxheWVyCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE3MQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IGJhNTlkOWU1NDc4OWUwYzU3YTU2MTIzZmNiMDBhNGQ3YWEyMDkwN2YuLjE0YzRhMzBm
ZTZiNGNlYWViMDZjMzY2ZTI2NGY3MDhjMjM4NDE1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3Bw
CkBAIC0zODIsNiArMzgyLDE0IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0RmlsdGVycyhjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAK
K3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMpCit7CisgICAgaWYgKG1fYmFja2dyb3VuZEZpbHRl
cnMgPT0gYmFja2dyb3VuZEZpbHRlcnMpCisgICAgICAgIHJldHVybjsKKyAgICBtX2JhY2tncm91
bmRGaWx0ZXJzID0gYmFja2dyb3VuZEZpbHRlcnM7CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30K
Kwogdm9pZCBMYXllckNocm9taXVtOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiB7CiAgICAg
aWYgKG1fb3BhY2l0eSA9PSBvcGFjaXR5KQpAQCAtNTEyLDYgKzUyMCw3IEBAIHZvaWQgTGF5ZXJD
aHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbGF5ZXIt
PnNldERvdWJsZVNpZGVkKG1fZG91YmxlU2lkZWQpOwogICAgIGxheWVyLT5zZXREcmF3c0NvbnRl
bnQoZHJhd3NDb250ZW50KCkpOwogICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMoKSk7Cisg
ICAgbGF5ZXItPnNldEJhY2tncm91bmRGaWx0ZXJzKGJhY2tncm91bmRGaWx0ZXJzKCkpOwogICAg
IGxheWVyLT5zZXRJc05vbkNvbXBvc2l0ZWRDb250ZW50KG1faXNOb25Db21wb3NpdGVkQ29udGVu
dCk7CiAgICAgbGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsKICAgICBs
YXllci0+c2V0U2Nyb2xsYWJsZShtX3Njcm9sbGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IGE1MDhjOWU2ODMyZjQxNzBiMDBjZTUxYjY1MmNkYzg0Njk2MGY2YjguLjgzYTgwODNmNGY0YjRm
YzJjMDNjMGFiNWYwZTI2MzI1MTk5NDhjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTExMiw2
ICsxMTIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJik7CiAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fZmlsdGVyczsgfQogCisgICAgLy8gQmFja2dyb3VuZCBmaWx0ZXJzIGFyZSBmaWx0
ZXJzIGFwcGxpZWQgdG8gd2hhdCBpcyBiZWhpbmQgdGhpcyBsYXllciwgd2hlbiB0aGV5IGFyZSB2
aWV3ZWQgdGhyb3VnaCBub24tb3BhcXVlCisgICAgLy8gcmVnaW9ucyBpbiB0aGlzIGxheWVyLiBU
aGV5IGFyZSB1c2VkIHRocm91Z2ggdGhlIFdlYkxheWVyIGludGVyZmFjZSwgYW5kIGFyZSBub3Qg
ZXhwb3NlZCB0byBIVE1MLgorICAgIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYpOworICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRG
aWx0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQorCiAgICAgdmly
dHVhbCB2b2lkIHNldE9wYXF1ZShib29sKTsKICAgICBib29sIG9wYXF1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fb3BhcXVlOyB9CiAKQEAgLTI5NSw2ICszMDAsNyBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX2RlYnVnTmFtZTsKICAgICBmbG9hdCBtX29wYWNpdHk7CiAgICAgRmlsdGVyT3BlcmF0aW9u
cyBtX2ZpbHRlcnM7CisgICAgRmlsdGVyT3BlcmF0aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOwog
ICAgIGZsb2F0IG1fYW5jaG9yUG9pbnRaOwogICAgIGJvb2wgbV9pc0RyYXdhYmxlOwogICAgIGJv
b2wgbV9tYXNrc1RvQm91bmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
aW5kZXggMGM2NzFhMmEzZTYzMjAxN2ZjNWVjZThlZDI4MDk1Y2RhZTRmYTk2OC4uZjUzM2NjOGU3
NjhiMzcyNmQ4YmNhYTY1ZGNlOTRkMzgwYjI0NzQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNE
Q2hyb21pdW0uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHZW9tZXRyeUJp
bmRpbmcuaCIKKyNpbmNsdWRlICJHclRleHR1cmUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRC5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclBhaW50
ZXJDaHJvbWl1bS5oIgpAQCAtNDgxLDkgKzQ4Miw2MiBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd0RlYnVnQm9yZGVyUXVhZChjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqIHF1
YQogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+ZHJhd0VsZW1lbnRzKEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FX0xPT1AsIDQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVCwg
NiAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpKTsKIH0KIAordm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVh
ZCogcXVhZCkKK3sKKyAgICBib29sIGRyYXdpbmdUb1Jvb3RSZW5kZXJTdXJmYWNlID0gbV9jdXJy
ZW50UmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlOworICAgIGlmICghZHJh
d2luZ1RvUm9vdFJlbmRlclN1cmZhY2UpCisgICAgICAgIHJldHVybjsKKworICAgIENDUmVuZGVy
U3VyZmFjZSogZHJhd2luZ1N1cmZhY2UgPSBxdWFkLT5sYXllcigpLT5yZW5kZXJTdXJmYWNlKCk7
CisgICAgaWYgKGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5kRmlsdGVycygpLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSW50UmVjdCBkZXZpY2VSZWN0ID0gZHJhd2luZ1N1cmZh
Y2UtPnJlYWRiYWNrRGV2aWNlQ29udGVudFJlY3QodGhpcyk7CisgICAgZGV2aWNlUmVjdC5pbnRl
cnNlY3QobV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKSk7CisKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50c0RldmljZVRyYW5zZm9ybSA9IGRyYXdpbmdTdXJmYWNl
LT5jb21wdXRlRGV2aWNlVHJhbnNmb3JtKHRoaXMsIGRyYXdpbmdTdXJmYWNlLT5kcmF3VHJhbnNm
b3JtKCkpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlcGxpY2FEZXZpY2VUcmFuc2Zvcm0g
PSBkcmF3aW5nU3VyZmFjZS0+Y29tcHV0ZURldmljZVRyYW5zZm9ybSh0aGlzLCBkcmF3aW5nU3Vy
ZmFjZS0+cmVwbGljYURyYXdUcmFuc2Zvcm0oKSk7CisKKyAgICBPd25QdHI8TWFuYWdlZFRleHR1
cmU+IGRldmljZUJhY2tncm91bmRUZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtX3Jl
bmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci5nZXQoKSk7CisgICAgYm9vbCBhcHBseUJhY2tncm91
bmRGaWx0ZXJzID0gZ2V0RnJhbWVidWZmZXJUZXh0dXJlKGRldmljZUJhY2tncm91bmRUZXh0dXJl
LmdldCgpLCBkZXZpY2VSZWN0KTsKKworICAgIGlmIChhcHBseUJhY2tncm91bmRGaWx0ZXJzKSB7
CisgICAgICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0UmVuZGVyU3VyZmFjZSA9IG1fY3VycmVu
dFJlbmRlclN1cmZhY2U7CisKKyAgICAgICAgU2tCaXRtYXAgZmlsdGVyZWREZXZpY2VCYWNrZ3Jv
dW5kID0gZHJhd2luZ1N1cmZhY2UtPmFwcGx5RmlsdGVycyh0aGlzLCBkcmF3aW5nU3VyZmFjZS0+
YmFja2dyb3VuZEZpbHRlcnMoKSwgZGV2aWNlQmFja2dyb3VuZFRleHR1cmUuZ2V0KCkpOworICAg
ICAgICBpZiAoZmlsdGVyZWREZXZpY2VCYWNrZ3JvdW5kLmdldFRleHR1cmUoKSkgeworICAgICAg
ICAgICAgR3JUZXh0dXJlKiB0ZXh0dXJlID0gcmVpbnRlcnByZXRfY2FzdDxHclRleHR1cmUqPihm
aWx0ZXJlZERldmljZUJhY2tncm91bmQuZ2V0VGV4dHVyZSgpKTsKKyAgICAgICAgICAgIGludCBm
aWx0ZXJlZERldmljZUJhY2tncm91bmRUZXh0dXJlSWQgPSB0ZXh0dXJlLT5nZXRUZXh0dXJlSGFu
ZGxlKCk7CisKKyAgICAgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGlz
YWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7CisgICAgICAgICAgICBHTEMo
bV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OkJM
RU5EKSk7CisKKyAgICAgICAgICAgIGlmIChkcmF3aW5nU3VyZmFjZS0+aGFzUmVwbGljYSgpICYm
IGRyYXdpbmdTdXJmYWNlLT5wcmVwYXJlUmVwbGljYUJhY2tncm91bmRUZXh0dXJlKHRoaXMpICYm
IHVzZU1hbmFnZWRUZXh0dXJlKGRyYXdpbmdTdXJmYWNlLT5yZXBsaWNhQmFja2dyb3VuZFRleHR1
cmUoKSwgZHJhd2luZ1N1cmZhY2UtPmNvbnRlbnRSZWN0KCkpKQorICAgICAgICAgICAgICAgIGRy
YXdpbmdTdXJmYWNlLT5kcmF3QmFja2dyb3VuZFRleHR1cmUodGhpcywgZmlsdGVyZWREZXZpY2VC
YWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZpY2VSZWN0LCByZXBsaWNhRGV2aWNlVHJhbnNmb3JtKTsK
KworICAgICAgICAgICAgaWYgKGRyYXdpbmdTdXJmYWNlLT5wcmVwYXJlQ29udGVudHNCYWNrZ3Jv
dW5kVGV4dHVyZSh0aGlzKSAmJiB1c2VNYW5hZ2VkVGV4dHVyZShkcmF3aW5nU3VyZmFjZS0+Y29u
dGVudHNCYWNrZ3JvdW5kVGV4dHVyZSgpLCBkcmF3aW5nU3VyZmFjZS0+Y29udGVudFJlY3QoKSkp
CisgICAgICAgICAgICAgICAgZHJhd2luZ1N1cmZhY2UtPmRyYXdCYWNrZ3JvdW5kVGV4dHVyZSh0
aGlzLCBmaWx0ZXJlZERldmljZUJhY2tncm91bmRUZXh0dXJlSWQsIGRldmljZVJlY3QsIGNvbnRl
bnRzRGV2aWNlVHJhbnNmb3JtKTsKKworICAgICAgICAgICAgdXNlUmVuZGVyU3VyZmFjZSh0YXJn
ZXRSZW5kZXJTdXJmYWNlKTsKKworICAgICAgICAgICAgZHJhd2luZ1N1cmZhY2UtPnNldFNjaXNz
b3JSZWN0KHRoaXMsIHF1YWQtPnN1cmZhY2VEYW1hZ2VSZWN0KCkpOworICAgICAgICAgICAgZHJh
d2luZ1N1cmZhY2UtPmRyYXdCYWNrZ3JvdW5kKHRoaXMpOworCisgICAgICAgICAgICBpZiAocXVh
ZC0+bmVlZHNCbGVuZGluZygpKQorICAgICAgICAgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCks
IG1fY29udGV4dC0+ZW5hYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOworCisgICAgICAg
ICAgICBkcmF3aW5nU3VyZmFjZS0+cmVsZWFzZVJlcGxpY2FCYWNrZ3JvdW5kVGV4dHVyZSgpOwor
ICAgICAgICAgICAgZHJhd2luZ1N1cmZhY2UtPnJlbGVhc2VDb250ZW50c0JhY2tncm91bmRUZXh0
dXJlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqIHF1
YWQpCiB7CiAgICAgQ0NMYXllckltcGwqIGxheWVyID0gcXVhZC0+bGF5ZXIoKTsKKworICAgIGRy
YXdCYWNrZ3JvdW5kRmlsdGVycyhxdWFkKTsKKwogICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCkt
PmRyYXcodGhpcywgcXVhZC0+c3VyZmFjZURhbWFnZVJlY3QoKSk7CiAgICAgbGF5ZXItPnJlbmRl
clN1cmZhY2UoKS0+cmVsZWFzZUNvbnRlbnRzVGV4dHVyZSgpOwogfQpAQCAtMTExNCw2ICsxMTY4
LDE3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRGcmFtZWJ1ZmZlclBpeGVscyh2
b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlCiAgICAgfQogfQogCitib29sIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0
dXJlLCBjb25zdCBJbnRSZWN0JiBkZXZpY2VSZWN0KQoreworICAgIGlmICghdGV4dHVyZS0+cmVz
ZXJ2ZShkZXZpY2VSZWN0LnNpemUoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKG1fY29udGV4dC5nZXQo
KSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CisgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCwgdGV4dHVyZS0+Zm9ybWF0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXZpY2VSZWN0LngoKSwgZGV2aWNlUmVjdC55KCksIGRldmljZVJl
Y3Qud2lkdGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwgMCkpOworICAgIHJldHVybiB0cnVlOwor
fQorCiBNYW5hZ2VkVGV4dHVyZSogTGF5ZXJSZW5kZXJlckNocm9taXVtOjpnZXRPZmZzY3JlZW5M
YXllclRleHR1cmUoKQogewogICAgIHJldHVybiBzZXR0aW5ncygpLmNvbXBvc2l0ZU9mZnNjcmVl
biAmJiByb290TGF5ZXIoKSA/IHJvb3RMYXllcigpLT5yZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRz
VGV4dHVyZSgpIDogMDsKQEAgLTExMzUsMTAgKzEyMDAsMTEgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5KCkKIAogYm9vbCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJT
dXJmYWNlKQogewotICAgIGlmIChtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID09IHJlbmRlclN1cmZh
Y2UpCisgICAgaWYgKG1fY3VycmVudFJlbmRlclN1cmZhY2UgPT0gcmVuZGVyU3VyZmFjZSAmJiAh
bV9jdXJyZW50TWFuYWdlZFRleHR1cmUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgbV9j
dXJyZW50UmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7CisgICAgbV9jdXJyZW50TWFuYWdl
ZFRleHR1cmUgPSAwOwogCiAgICAgaWYgKChyZW5kZXJTdXJmYWNlID09IG1fZGVmYXVsdFJlbmRl
clN1cmZhY2UgJiYgIXNldHRpbmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVuKSB8fCAoIXJlbmRlclN1
cmZhY2UgJiYgc2V0dGluZ3MoKS5jb21wb3NpdGVPZmZzY3JlZW4pKSB7CiAgICAgICAgIEdMQyht
X2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgMCkpOwpAQCAtMTE0OSwxMiArMTIxNSwyOCBAQCBib29sIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqIHJlbmRl
clN1cmZhY2UpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEdMQyhtX2NvbnRl
eHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7Ci0KICAgICBpZiAoIXJlbmRl
clN1cmZhY2UtPnByZXBhcmVDb250ZW50c1RleHR1cmUodGhpcykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHJlbmRlclN1cmZhY2UtPmNvbnRlbnRzVGV4dHVyZSgpLT5mcmFtZWJ1ZmZl
clRleHR1cmUyRChtX2NvbnRleHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0
b3IuZ2V0KCkpOworICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUocmVuZGVyU3Vy
ZmFjZS0+Y29udGVudHNUZXh0dXJlKCksIHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkpOwor
fQorCitib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlTWFuYWdlZFRleHR1cmUoTWFuYWdl
ZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCkKK3sKKyAgICBp
ZiAobV9jdXJyZW50TWFuYWdlZFRleHR1cmUgPT0gdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID0gMDsKKyAgICBtX2N1cnJlbnRNYW5h
Z2VkVGV4dHVyZSA9IHRleHR1cmU7CisKKyAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0
dXJlKHRleHR1cmUsIHZpZXdwb3J0UmVjdCk7Cit9CisKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCkKK3sKKyAgICBHTEMobV9jb250ZXh0LmdldCgpLCBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOworCisgICAgdGV4dHVyZS0+ZnJhbWVidWZmZXJU
ZXh0dXJlMkQobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9y
LmdldCgpKTsKIAogI2lmICFkZWZpbmVkICggTkRFQlVHICkKICAgICBpZiAobV9jb250ZXh0LT5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0g
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CkBAIC0xMTYzLDcgKzEy
NDUsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShDQ1Jl
bmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UpCiAgICAgfQogI2VuZGlmCiAKLSAgICBzZXREcmF3
Vmlld3BvcnRSZWN0KHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCksIGZhbHNlKTsKKyAgICBz
ZXREcmF3Vmlld3BvcnRSZWN0KHZpZXdwb3J0UmVjdCwgZmFsc2UpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGVlOTg5NWFlMWQ0
Yzk0Y2RhNjMxMGRjN2IzZmIwNDNkMjk1Y2I3ZGMuLjg3ZDQxYTY4NWI3NWQ2MTJhZmNiY2NhNGVj
OTk5MTM3N2ZkOGMyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0x
MzMsNiArMTMzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IENDVmlkZW9MYXllckltcGw6OlN0cmVh
bVRleHR1cmVQcm9ncmFtKiBzdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKCk7CiAKICAgICB2b2lk
IGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYpOworICAg
IGJvb2wgZ2V0RnJhbWVidWZmZXJUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVj
dCYgZGV2aWNlUmVjdCk7CiAKICAgICBUZXh0dXJlTWFuYWdlciogcmVuZGVyU3VyZmFjZVRleHR1
cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIu
Z2V0KCk7IH0KICAgICBUZXh0dXJlQWxsb2NhdG9yKiByZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9j
YXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0
KCk7IH0KQEAgLTE2MSw2ICsxNjIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkcmF3UXVhZChj
b25zdCBDQ0RyYXdRdWFkKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CiAg
ICAgdm9pZCBkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCop
OworICAgIHZvaWQgZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURy
YXdRdWFkKik7CiAgICAgdm9pZCBkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdTb2xpZENvbG9yUXVhZChjb25zdCBDQ1Nv
bGlkQ29sb3JEcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURy
YXdRdWFkKik7CkBAIC0xODEsNyArMTgzLDEyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldERy
YXdWaWV3cG9ydFJlY3QoY29uc3QgSW50UmVjdCYsIGJvb2wgZmxpcFkpOwogCisgICAgLy8gVGhl
IGN1cnJlbnQgZHJhd2luZyB0YXJnZXQgaXMgZWl0aGVyIGEgUmVuZGVyU3VyZmFjZSBvciBNYW5h
Z2VkVGV4dHVyZS4gVXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBzd2l0Y2ggdG8gYSBuZXcgZHJhd2lu
ZyB0YXJnZXQuCiAgICAgYm9vbCB1c2VSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSopOwor
ICAgIGJvb2wgdXNlTWFuYWdlZFRleHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0
JiB2aWV3cG9ydFJlY3QpOworCisgICAgYm9vbCBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFu
YWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpOworCiAgICAgdm9pZCBj
bGVhclJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiwgQ0NSZW5kZXJTdXJmYWNlKiByb290
UmVuZGVyU3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CiAKICAg
ICB2b2lkIHJlbGVhc2VSZW5kZXJTdXJmYWNlVGV4dHVyZXMoKTsKQEAgLTIwOCw2ICsyMTUsNyBA
QCBwcml2YXRlOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fd2luZG93TWF0cml4OwogCiAg
ICAgQ0NSZW5kZXJTdXJmYWNlKiBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlOworICAgIE1hbmFnZWRU
ZXh0dXJlKiBtX2N1cnJlbnRNYW5hZ2VkVGV4dHVyZTsKICAgICB1bnNpZ25lZCBtX29mZnNjcmVl
bkZyYW1lYnVmZmVySWQ7CiAKICAgICAvLyBTdG9yZSB2YWx1ZXMgdGhhdCBhcmUgc2hhcmVkIGJl
dHdlZW4gaW5zdGFuY2VzIG9mIGVhY2ggbGF5ZXIgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNl
Q2hyb21pdW0uaAppbmRleCA5MDQ1NDI1YmMzZmJmZjIzYzgyMWZmZmU4YTRiYjA3Mzk1YjBlMjhj
Li40N2MyMDc2OTMxMGE3MDA1ZDMwY2VhMDE3Yjk0ZDdlMmZiYmJmZWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9S
ZW5kZXJTdXJmYWNlQ2hyb21pdW0uaApAQCAtODAsNiArODAsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9maWx0ZXJz
ID0gZmlsdGVyczsgfQogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25z
dCB7IHJldHVybiBtX2ZpbHRlcnM7IH0KIAorICAgIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgeyBtX2JhY2tncm91bmRGaWx0ZXJzID0g
ZmlsdGVyczsgfQorICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQorCiAgICAgYm9vbCBza2lw
c0RyYXcoKSBjb25zdCB7IHJldHVybiBtX3NraXBzRHJhdzsgfQogICAgIHZvaWQgc2V0U2tpcHNE
cmF3KGJvb2wgc2tpcHNEcmF3KSB7IG1fc2tpcHNEcmF3ID0gc2tpcHNEcmF3OyB9CiAKQEAgLTEw
Myw2ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcmVwbGlj
YURyYXdUcmFuc2Zvcm07CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9vcmlnaW5UcmFuc2Zv
cm07CiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CisgICAgRmlsdGVyT3BlcmF0aW9u
cyBtX2JhY2tncm91bmRGaWx0ZXJzOwogICAgIEludFJlY3QgbV9jbGlwUmVjdDsKICAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gbV9sYXllckxpc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmNwcAppbmRleCBjMDMwNjRhOTJkOTU3YTBjYzcwYzhiZTg4NmI1YjQxNmQ1YTFhYWRiLi4y
ZWY3OThmZGFkZGVlMTFhMTI0ZjlmYmZiYjlmY2VjOGExNTU4MTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwCkBAIC00MDMsNiArNDAzLDE1IEBAIHZvaWQgQ0NMYXllckltcGw6OnNldEZpbHRl
cnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9CiAKK3ZvaWQgQ0NMYXllckltcGw6OnNldEJhY2tncm91
bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKQorewor
ICAgIGlmIChtX2JhY2tncm91bmRGaWx0ZXJzID09IGJhY2tncm91bmRGaWx0ZXJzKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2JhY2tncm91bmRGaWx0ZXJzID0gYmFja2dyb3VuZEZpbHRlcnM7
CisgICAgbV9sYXllclByb3BlcnR5Q2hhbmdlZCA9IHRydWU7Cit9CisKIHZvaWQgQ0NMYXllcklt
cGw6OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKQogewogICAgIGlmIChtX21h
c2tzVG9Cb3VuZHMgPT0gbWFza3NUb0JvdW5kcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDc0
NTM4YjEyNGJlMGNlNjdkNDY3YTQ0NGIxNDJkZmY0Mzg5NDdlYjMuLjRkMjM0MTkzODljOWE2NWVl
NGEwYWI0ODkzYWE3NTFhNGE4MWRmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMTE0LDYg
KzExNCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYpOwogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbHRlcnM7IH0KIAorICAgIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYpOworICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91
bmRGaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQorCiAgICAg
dm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOwogICAgIGJvb2wgbWFza3NUb0JvdW5kcygpIGNv
bnN0IHsgcmV0dXJuIG1fbWFza3NUb0JvdW5kczsgfQogCkBAIC0zMTQsNiArMzE3LDcgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9kZWJ1Z05hbWU7CiAKICAgICBGaWx0ZXJPcGVyYXRpb25zIG1f
ZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7CiAKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07CiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uY3BwCmluZGV4IGM4NmQ3NGQ4NjFkYWY0ZTZlMzI1ZDFjNTNmZDQ3ZjQ5
ODY0Zjg2YTkuLjI5NGJiZDUyYjlkYjJhYWRkOGJjNjUxOWRkOWRkMmE4YzZlY2E5Y2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcApAQCAtMTI4LDcgKzEyOCw3
IEBAIHN0YXRpYyBib29sIHN1YnRyZWVTaG91bGRSZW5kZXJUb1NlcGFyYXRlU3VyZmFjZShMYXll
clR5cGUqIGxheWVyLCBib29sIGF4aXNBbGlnCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gSWYgdGhlIGxheWVyIHVzZXMgYSBDU1MgZmlsdGVyLgotICAgIGlmICghbGF5ZXItPmZpbHRl
cnMoKS5pc0VtcHR5KCkpCisgICAgaWYgKCFsYXllci0+ZmlsdGVycygpLmlzRW1wdHkoKSB8fCAh
bGF5ZXItPmJhY2tncm91bmRGaWx0ZXJzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIElmIHRoZSBsYXllciBmbGF0dGVucyBpdHMgc3VidHJlZSAoaS5lLiB0aGUg
bGF5ZXIgZG9lc24ndCBwcmVzZXJ2ZS0zZCksIGJ1dCBpdCBpcwpAQCAtMzE0LDYgKzMxNCw4IEBA
IHN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFs
KExheWVyVHlwZSogbGF5ZXIsIExheWVyCiAgICAgICAgICAgICBuZWFyZXN0QW5jZXN0b3JUaGF0
TW92ZXNQaXhlbHMgPSByZW5kZXJTdXJmYWNlOwogICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRO
ZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMobmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4
ZWxzKTsKIAorICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhsYXll
ci0+YmFja2dyb3VuZEZpbHRlcnMoKSk7CisKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5hcHBlbmQobGF5ZXIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxheWVyLT5zZXREcmF3VHJh
bnNmb3JtKGNvbWJpbmVkVHJhbnNmb3JtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3Bw
CmluZGV4IDAxYjc4YmNkNDAyYWVjOTMwN2ZlODM0NjkxOGUzOTViOTA2NmZjZjAuLjQ5ODljNmMw
NDA4NjM5MjU0ZjQ3OTRkYzBhOGI5YWVkYjAwMGVhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlLmNwcApAQCAtNjMsMTAgKzYzLDEyIEBAIENDUmVuZGVyU3VyZmFjZTo6fkNDUmVuZGVy
U3VyZmFjZSgpCiAKIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpjbGVhbnVwUmVzb3VyY2VzKCkKIHsK
LSAgICBpZiAoIW1fY29udGVudHNUZXh0dXJlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2Nv
bnRlbnRzVGV4dHVyZS5jbGVhcigpOworICAgIGlmIChtX2NvbnRlbnRzVGV4dHVyZSkKKyAgICAg
ICAgbV9jb250ZW50c1RleHR1cmUuY2xlYXIoKTsKKyAgICBpZiAobV9jb250ZW50c0JhY2tncm91
bmRUZXh0dXJlKQorICAgICAgICBtX2NvbnRlbnRzQmFja2dyb3VuZFRleHR1cmUuY2xlYXIoKTsK
KyAgICBpZiAobV9yZXBsaWNhQmFja2dyb3VuZFRleHR1cmUpCisgICAgICAgIG1fcmVwbGljYUJh
Y2tncm91bmRUZXh0dXJlLmNsZWFyKCk7CiB9CiAKIEZsb2F0UmVjdCBDQ1JlbmRlclN1cmZhY2U6
OmRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdApAQCAtNzQsNyArNzYsNyBAQCBGbG9hdFJlY3Qg
Q0NSZW5kZXJTdXJmYWNlOjpkcmF3YWJsZUNvbnRlbnRSZWN0KCkgY29uc3QKICAgICBGbG9hdFJl
Y3QgbG9jYWxDb250ZW50UmVjdCgtMC41ICogbV9jb250ZW50UmVjdC53aWR0aCgpLCAtMC41ICog
bV9jb250ZW50UmVjdC5oZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2NvbnRlbnRSZWN0LndpZHRoKCksIG1fY29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIEZsb2F0
UmVjdCBkcmF3YWJsZUNvbnRlbnRSZWN0ID0gbV9kcmF3VHJhbnNmb3JtLm1hcFJlY3QobG9jYWxD
b250ZW50UmVjdCk7Ci0gICAgaWYgKG1fb3duaW5nTGF5ZXItPnJlcGxpY2FMYXllcigpKQorICAg
IGlmIChoYXNSZXBsaWNhKCkpCiAgICAgICAgIGRyYXdhYmxlQ29udGVudFJlY3QudW5pdGUobV9y
ZXBsaWNhRHJhd1RyYW5zZm9ybS5tYXBSZWN0KGxvY2FsQ29udGVudFJlY3QpKTsKIAogICAgIHJl
dHVybiBkcmF3YWJsZUNvbnRlbnRSZWN0OwpAQCAtMTA3LDQ3ICsxMDksMTg0IEBAIHZvaWQgQ0NS
ZW5kZXJTdXJmYWNlOjpyZWxlYXNlQ29udGVudHNUZXh0dXJlKCkKICAgICBtX2NvbnRlbnRzVGV4
dHVyZS0+dW5yZXNlcnZlKCk7CiB9CiAKK2Jvb2wgQ0NSZW5kZXJTdXJmYWNlOjpwcmVwYXJlQ29u
dGVudHNCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIpCit7CisgICAgSW50U2l6ZSByZXF1aXJlZFNpemUobV9jb250ZW50UmVjdC5zaXplKCkpOwor
ICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlciA9IGxheWVyUmVuZGVyZXItPnJlbmRl
clN1cmZhY2VUZXh0dXJlTWFuYWdlcigpOworCisgICAgaWYgKCFtX2NvbnRlbnRzQmFja2dyb3Vu
ZFRleHR1cmUpCisgICAgICAgIG1fY29udGVudHNCYWNrZ3JvdW5kVGV4dHVyZSA9IE1hbmFnZWRU
ZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIpOworCisgICAgaWYgKG1fY29udGVudHNCYWNr
Z3JvdW5kVGV4dHVyZS0+aXNSZXNlcnZlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGlmICghbV9jb250ZW50c0JhY2tncm91bmRUZXh0dXJlLT5yZXNlcnZlKHJlcXVpcmVkU2l6ZSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKSB7CisgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fc2tpcHNEcmF3ID0gZmFsc2U7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpyZWxlYXNlQ29u
dGVudHNCYWNrZ3JvdW5kVGV4dHVyZSgpCit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICFtX2Nv
bnRlbnRzQmFja2dyb3VuZFRleHR1cmUpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NvbnRlbnRz
QmFja2dyb3VuZFRleHR1cmUtPnVucmVzZXJ2ZSgpOworfQorCitib29sIENDUmVuZGVyU3VyZmFj
ZTo6cHJlcGFyZVJlcGxpY2FCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0q
IGxheWVyUmVuZGVyZXIpCit7CisgICAgSW50U2l6ZSByZXF1aXJlZFNpemUobV9jb250ZW50UmVj
dC5zaXplKCkpOworICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlciA9IGxheWVyUmVu
ZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpOworCisgICAgaWYgKCFtX3JlcGxp
Y2FCYWNrZ3JvdW5kVGV4dHVyZSkKKyAgICAgICAgbV9yZXBsaWNhQmFja2dyb3VuZFRleHR1cmUg
PSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsKKworICAgIGlmIChtX3Jl
cGxpY2FCYWNrZ3JvdW5kVGV4dHVyZS0+aXNSZXNlcnZlZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGlmICghbV9yZXBsaWNhQmFja2dyb3VuZFRleHR1cmUtPnJlc2VydmUocmVxdWly
ZWRTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpIHsKKyAgICAgICAgbV9za2lwc0RyYXcg
PSB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV9za2lwc0RyYXcg
PSBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDQ1JlbmRlclN1cmZhY2U6OnJl
bGVhc2VSZXBsaWNhQmFja2dyb3VuZFRleHR1cmUoKQoreworICAgIGlmIChtX3NraXBzRHJhdyB8
fCAhbV9yZXBsaWNhQmFja2dyb3VuZFRleHR1cmUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Jl
cGxpY2FCYWNrZ3JvdW5kVGV4dHVyZS0+dW5yZXNlcnZlKCk7Cit9CisKK1RyYW5zZm9ybWF0aW9u
TWF0cml4IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZURldmljZVRyYW5zZm9ybShMYXllclJlbmRl
cmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBk
cmF3VHJhbnNmb3JtKSBjb25zdAoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlclRy
YW5zZm9ybSA9IGRyYXdUcmFuc2Zvcm07CisgICAgLy8gQXBwbHkgYSBzY2FsaW5nIGZhY3RvciB0
byBzaXplIHRoZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRlbmRlZCBzaXplLgorICAgIHJlbmRl
clRyYW5zZm9ybS5zY2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5o
ZWlnaHQoKSwgMSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlVHJhbnNmb3JtID0g
VHJhbnNmb3JtYXRpb25NYXRyaXgobGF5ZXJSZW5kZXJlci0+d2luZG93TWF0cml4KCkgKiBsYXll
clJlbmRlcmVyLT5wcm9qZWN0aW9uTWF0cml4KCkgKiByZW5kZXJUcmFuc2Zvcm0pLnRvMmRUcmFu
c2Zvcm0oKTsKKyAgICByZXR1cm4gZGV2aWNlVHJhbnNmb3JtOworfQorCitJbnRSZWN0IENDUmVu
ZGVyU3VyZmFjZTo6Y29tcHV0ZURldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1
bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zv
cm0pIGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudHNEZXZpY2VUcmFu
c2Zvcm0gPSBjb21wdXRlRGV2aWNlVHJhbnNmb3JtKGxheWVyUmVuZGVyZXIsIGRyYXdUcmFuc2Zv
cm0pOworCisgICAgLy8gQ2FuIG9ubHkgZHJhdyBzdXJmYWNlIGlmIGRldmljZSBtYXRyaXggaXMg
aW52ZXJ0aWJsZS4KKyAgICBpZiAoIWNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLmlzSW52ZXJ0aWJs
ZSgpKQorICAgICAgICByZXR1cm4gSW50UmVjdCgpOworCisgICAgRmxvYXRRdWFkIGRldmljZVF1
YWQgPSBjb250ZW50c0RldmljZVRyYW5zZm9ybS5tYXBRdWFkKGxheWVyUmVuZGVyZXItPnNoYXJl
ZEdlb21ldHJ5UXVhZCgpKTsKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChkZXZpY2VRdWFk
LmJvdW5kaW5nQm94KCkpOworfQorCitJbnRSZWN0IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZVJl
YWRiYWNrRGV2aWNlQm91bmRpbmdCb3goTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgY29uc3QKK3sK
KyAgICBJbnRSZWN0IGRldmljZVJlY3QgPSBjb21wdXRlRGV2aWNlQm91bmRpbmdCb3gobGF5ZXJS
ZW5kZXJlciwgZHJhd1RyYW5zZm9ybSk7CisKKyAgICBpZiAobV9iYWNrZ3JvdW5kRmlsdGVycy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBkZXZpY2VSZWN0OworCisgICAgaW50IHRvcCwgcmln
aHQsIGJvdHRvbSwgbGVmdDsKKyAgICBtX2JhY2tncm91bmRGaWx0ZXJzLmdldE91dHNldHModG9w
LCByaWdodCwgYm90dG9tLCBsZWZ0KTsKKyAgICBkZXZpY2VSZWN0Lm1vdmUoLWxlZnQsIC10b3Ap
OworICAgIGRldmljZVJlY3QuZXhwYW5kKGxlZnQgKyByaWdodCwgdG9wICsgYm90dG9tKTsKKwor
ICAgIHJldHVybiBkZXZpY2VSZWN0OworfQorCitJbnRSZWN0IENDUmVuZGVyU3VyZmFjZTo6cmVh
ZGJhY2tEZXZpY2VDb250ZW50UmVjdChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIpIGNvbnN0Cit7CisgICAgSW50UmVjdCBkZXZpY2VDb250ZW50UmVjdCA9IGNvbXB1dGVSZWFk
YmFja0RldmljZUJvdW5kaW5nQm94KGxheWVyUmVuZGVyZXIsIG1fZHJhd1RyYW5zZm9ybSk7Cisg
ICAgaWYgKGhhc1JlcGxpY2EoKSkKKyAgICAgICAgZGV2aWNlQ29udGVudFJlY3QudW5pdGUoY29t
cHV0ZVJlYWRiYWNrRGV2aWNlQm91bmRpbmdCb3gobGF5ZXJSZW5kZXJlciwgbV9yZXBsaWNhRHJh
d1RyYW5zZm9ybSkpOworICAgIHJldHVybiBkZXZpY2VDb250ZW50UmVjdDsKK30KKworc3RhdGlj
IHZvaWQgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5
ZXJSZW5kZXJlciwgaW50IHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCkKK3sKKyAgICBjb25zdCBDQ1JlbmRlclN1
cmZhY2U6OlByb2dyYW0qIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlUHJv
Z3JhbSgpOworCisgICAgR0xDKGxheWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJl
ci0+Y29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkp
OworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRl
eHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJ
ZCkpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNv
bnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJ
TkVBUikpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXIt
PmNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkxJTkVBUikpOworCisgICAgR0xDKGxheWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5k
ZXJlci0+Y29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOworICAgIEdM
QyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+dW5p
Zm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsK
KyAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGRyYXdNYXRyaXgsIGJvdW5kcy53
aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCksIDEsIGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5
UXVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVy
dGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpOworfQorCit2b2lkIENDUmVuZGVy
U3VyZmFjZTo6ZHJhd0JhY2tncm91bmRUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5
ZXJSZW5kZXJlciwgaW50IGRldmljZUJhY2tncm91bmRUZXh0dXJlSWQsIGNvbnN0IEludFJlY3Qm
IGRldmljZVRleHR1cmVSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJh
bnNmb3JtKSBjb25zdAoreworICAgIEFTU0VSVCghbV9iYWNrZ3JvdW5kRmlsdGVycy5pc0VtcHR5
KCkpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3Jt
OworICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS50cmFuc2xhdGUobV9jb250ZW50UmVjdC53
aWR0aCgpIC8gMi4wLCBtX2NvbnRlbnRSZWN0LmhlaWdodCgpIC8gMi4wKTsKKyAgICBkZXZpY2VU
b1N1cmZhY2VUcmFuc2Zvcm0uc2NhbGUzZChtX2NvbnRlbnRSZWN0LndpZHRoKCksIG1fY29udGVu
dFJlY3QuaGVpZ2h0KCksIDEpOworICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybSAqPSBkZXZp
Y2VUcmFuc2Zvcm0uaW52ZXJzZSgpOworICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS50cmFu
c2xhdGUoZGV2aWNlVGV4dHVyZVJlY3Qud2lkdGgoKSAvIDIuMCwgZGV2aWNlVGV4dHVyZVJlY3Qu
aGVpZ2h0KCkgLyAyLjApOworICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS50cmFuc2xhdGUo
ZGV2aWNlVGV4dHVyZVJlY3QueCgpLCBkZXZpY2VUZXh0dXJlUmVjdC55KCkpOworCisgICAgY29w
eVRleHR1cmVUb0ZyYW1lYnVmZmVyKGxheWVyUmVuZGVyZXIsIGRldmljZUJhY2tncm91bmRUZXh0
dXJlSWQsIGRldmljZVRleHR1cmVSZWN0LnNpemUoKSwgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3Jt
KTsKK30KKwordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdCYWNrZ3JvdW5kKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3sKKyAgICBpZiAoaGFzUmVwbGljYSgpKQorICAg
ICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIobGF5ZXJSZW5kZXJlciwgbV9yZXBsaWNhQmFj
a2dyb3VuZFRleHR1cmUtPnRleHR1cmVJZCgpLCBtX2NvbnRlbnRSZWN0LnNpemUoKSwgbV9yZXBs
aWNhRHJhd1RyYW5zZm9ybSk7CisKKyAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIobGF5ZXJS
ZW5kZXJlciwgbV9jb250ZW50c0JhY2tncm91bmRUZXh0dXJlLT50ZXh0dXJlSWQoKSwgbV9jb250
ZW50UmVjdC5zaXplKCksIG1fZHJhd1RyYW5zZm9ybSk7Cit9CisKK2lubGluZSBzdGF0aWMgaW50
IGdldFNrQml0bWFwVGV4dHVyZUlkKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGludCBmYWxsYmFj
aykKK3sKKyAgICBpZiAoIWJpdG1hcC5nZXRUZXh0dXJlKCkpCisgICAgICAgIHJldHVybiBmYWxs
YmFjazsKKyAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJldF9jYXN0PEdyVGV4dHVy
ZSo+KGJpdG1hcC5nZXRUZXh0dXJlKCkpOworICAgIHJldHVybiB0ZXh0dXJlLT5nZXRUZXh0dXJl
SGFuZGxlKCk7Cit9CisKIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3KExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVj
dCkKIHsKICAgICBpZiAobV9za2lwc0RyYXcgfHwgIW1fY29udGVudHNUZXh0dXJlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBTa0JpdG1hcCBmaWx0ZXJCaXRtYXAgPSBhcHBseUZpbHRlcnMobGF5
ZXJSZW5kZXJlcik7Ci0gICAgLy8gRklYTUU6IEJ5IHVzaW5nIHRoZSBzYW1lIFJlbmRlclN1cmZh
Y2UgZm9yIGJvdGggdGhlIGNvbnRlbnQgYW5kIGl0cyByZWZsZWN0aW9uLAotICAgIC8vIGl0J3Mg
Y3VycmVudGx5IG5vdCBwb3NzaWJsZSB0byBhcHBseSBhIHNlcGFyYXRlIG1hc2sgdG8gdGhlIHJl
ZmxlY3Rpb24gbGF5ZXIKLSAgICAvLyBvciBjb3JyZWN0bHkgaGFuZGxlIG9wYWNpdHkgaW4gcmVm
bGVjdGlvbnMgKG9wYWNpdHkgbXVzdCBiZSBhcHBsaWVkIGFmdGVyIGRyYXdpbmcKLSAgICAvLyBi
b3RoIHRoZSBsYXllciBhbmQgaXRzIHJlZmxlY3Rpb24pLiBUaGUgc29sdXRpb24gaXMgdG8gaW50
cm9kdWNlIHlldCBhbm90aGVyIFJlbmRlclN1cmZhY2UKLSAgICAvLyB0byBkcmF3IHRoZSBsYXll
ciBhbmQgaXRzIHJlZmxlY3Rpb24gaW4uIEZvciBub3cgd2Ugb25seSBhcHBseSBhIHNlcGFyYXRl
IHJlZmxlY3Rpb24KLSAgICAvLyBtYXNrIGlmIHRoZSBjb250ZW50cyBkb24ndCBoYXZlIGEgbWFz
ayBvZiB0aGVpciBvd24uCi0gICAgQ0NMYXllckltcGwqIHJlcGxpY2FNYXNrTGF5ZXIgPSBtX21h
c2tMYXllcjsKLSAgICBpZiAoIW1fbWFza0xheWVyICYmIG1fb3duaW5nTGF5ZXItPnJlcGxpY2FM
YXllcigpKQotICAgICAgICByZXBsaWNhTWFza0xheWVyID0gbV9vd25pbmdMYXllci0+cmVwbGlj
YUxheWVyKCktPm1hc2tMYXllcigpOworICAgIHNldFNjaXNzb3JSZWN0KGxheWVyUmVuZGVyZXIs
IHN1cmZhY2VEYW1hZ2VSZWN0KTsKIAotICAgIGlmIChtX293bmluZ0xheWVyLT5wYXJlbnQoKSAm
JiBtX293bmluZ0xheWVyLT5wYXJlbnQoKS0+dXNlc0xheWVyQ2xpcHBpbmcoKSAmJiBsYXllclJl
bmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKSB7Ci0gICAgICAgIEZsb2F0
UmVjdCBjbGlwQW5kRGFtYWdlUmVjdCA9IG1fY2xpcFJlY3Q7Ci0gICAgICAgIGNsaXBBbmREYW1h
Z2VSZWN0LmludGVyc2VjdChzdXJmYWNlRGFtYWdlUmVjdCk7Ci0gICAgICAgIGxheWVyUmVuZGVy
ZXItPnNldFNjaXNzb3JUb1JlY3QoZW5jbG9zaW5nSW50UmVjdChjbGlwQW5kRGFtYWdlUmVjdCkp
OwotICAgIH0gZWxzZSBpZiAobGF5ZXJSZW5kZXJlci0+Y2FwYWJpbGl0aWVzKCkudXNpbmdQYXJ0
aWFsU3dhcCkKLSAgICAgICAgbGF5ZXJSZW5kZXJlci0+c2V0U2Npc3NvclRvUmVjdChlbmNsb3Np
bmdJbnRSZWN0KHN1cmZhY2VEYW1hZ2VSZWN0KSk7Ci0gICAgZWxzZSBpZiAobV9vd25pbmdMYXll
ci0+cGFyZW50KCkgJiYgbV9vd25pbmdMYXllci0+cGFyZW50KCktPnVzZXNMYXllckNsaXBwaW5n
KCkpCi0gICAgICAgIGxheWVyUmVuZGVyZXItPnNldFNjaXNzb3JUb1JlY3QobV9jbGlwUmVjdCk7
Ci0gICAgZWxzZQotICAgICAgICBHTEMobGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLCBsYXllclJl
bmRlcmVyLT5jb250ZXh0KCktPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVT
VCkpOworICAgIC8vIEFwcGx5IGZpbHRlcnMgdG8gdGhlIGNvbnRlbnRzIHRleHR1cmUuCisgICAg
U2tCaXRtYXAgZmlsdGVyQml0bWFwID0gYXBwbHlGaWx0ZXJzKGxheWVyUmVuZGVyZXIsIG1fZmls
dGVycywgbV9jb250ZW50c1RleHR1cmUuZ2V0KCkpOwogCiAgICAgLy8gUmVmbGVjdGlvbiBkcmF3
cyBiZWZvcmUgdGhlIGxheWVyLgotICAgIGlmIChtX293bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIo
KSkKLSAgICAgICAgZHJhd0xheWVyKGxheWVyUmVuZGVyZXIsIHJlcGxpY2FNYXNrTGF5ZXIsIG1f
cmVwbGljYURyYXdUcmFuc2Zvcm0sIGZpbHRlckJpdG1hcCk7CisgICAgaWYgKGhhc1JlcGxpY2Eo
KSkgeworICAgICAgICAvLyBGSVhNRTogQnkgdXNpbmcgdGhlIHNhbWUgUmVuZGVyU3VyZmFjZSBm
b3IgYm90aCB0aGUgY29udGVudCBhbmQgaXRzIHJlZmxlY3Rpb24sCisgICAgICAgIC8vIGl0J3Mg
Y3VycmVudGx5IG5vdCBwb3NzaWJsZSB0byBhcHBseSBhIHNlcGFyYXRlIG1hc2sgdG8gdGhlIHJl
ZmxlY3Rpb24gbGF5ZXIKKyAgICAgICAgLy8gb3IgY29ycmVjdGx5IGhhbmRsZSBvcGFjaXR5IGlu
IHJlZmxlY3Rpb25zIChvcGFjaXR5IG11c3QgYmUgYXBwbGllZCBhZnRlciBkcmF3aW5nCisgICAg
ICAgIC8vIGJvdGggdGhlIGxheWVyIGFuZCBpdHMgcmVmbGVjdGlvbikuIFRoZSBzb2x1dGlvbiBp
cyB0byBpbnRyb2R1Y2UgeWV0IGFub3RoZXIgUmVuZGVyU3VyZmFjZQorICAgICAgICAvLyB0byBk
cmF3IHRoZSBsYXllciBhbmQgaXRzIHJlZmxlY3Rpb24gaW4uIEZvciBub3cgd2Ugb25seSBhcHBs
eSBhIHNlcGFyYXRlIHJlZmxlY3Rpb24KKyAgICAgICAgLy8gbWFzayBpZiB0aGUgY29udGVudHMg
ZG9uJ3QgaGF2ZSBhIG1hc2sgb2YgdGhlaXIgb3duLgorICAgICAgICBDQ0xheWVySW1wbCogcmVw
bGljYU1hc2tMYXllciA9IG1fbWFza0xheWVyOworICAgICAgICBpZiAoIW1fbWFza0xheWVyKQor
ICAgICAgICAgICAgcmVwbGljYU1hc2tMYXllciA9IG1fb3duaW5nTGF5ZXItPnJlcGxpY2FMYXll
cigpLT5tYXNrTGF5ZXIoKTsKKworICAgICAgICBpbnQgY29udGVudHNUZXh0dXJlSWQgPSBnZXRT
a0JpdG1hcFRleHR1cmVJZChmaWx0ZXJCaXRtYXAsIG1fY29udGVudHNUZXh0dXJlLT50ZXh0dXJl
SWQoKSk7CisgICAgICAgIGRyYXdMYXllcihsYXllclJlbmRlcmVyLCByZXBsaWNhTWFza0xheWVy
LCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLCBjb250ZW50c1RleHR1cmVJZCk7CisgICAgfQogCi0g
ICAgZHJhd0xheWVyKGxheWVyUmVuZGVyZXIsIG1fbWFza0xheWVyLCBtX2RyYXdUcmFuc2Zvcm0s
IGZpbHRlckJpdG1hcCk7CisgICAgaW50IGNvbnRlbnRzVGV4dHVyZUlkID0gZ2V0U2tCaXRtYXBU
ZXh0dXJlSWQoZmlsdGVyQml0bWFwLCBtX2NvbnRlbnRzVGV4dHVyZS0+dGV4dHVyZUlkKCkpOwor
ICAgIGRyYXdMYXllcihsYXllclJlbmRlcmVyLCBtX21hc2tMYXllciwgbV9kcmF3VHJhbnNmb3Jt
LCBjb250ZW50c1RleHR1cmVJZCk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3TGF5
ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySW1wbCogbWFz
a0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3Qg
U2tCaXRtYXAmIGZpbHRlckJpdG1hcCkKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXIo
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySW1wbCogbWFza0xh
eWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgaW50IGNvbnRl
bnRzVGV4dHVyZUlkKQogewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlck1hdHJpeCA9
IGRyYXdUcmFuc2Zvcm07Ci0gICAgLy8gQXBwbHkgYSBzY2FsaW5nIGZhY3RvciB0byBzaXplIHRo
ZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRlbmRlZCBzaXplLgotICAgIHJlbmRlck1hdHJpeC5z
Y2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSwgMSk7
Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VNYXRyaXggPSBUcmFuc2Zvcm1hdGlv
bk1hdHJpeChsYXllclJlbmRlcmVyLT53aW5kb3dNYXRyaXgoKSAqIGxheWVyUmVuZGVyZXItPnBy
b2plY3Rpb25NYXRyaXgoKSAqIHJlbmRlck1hdHJpeCkudG8yZFRyYW5zZm9ybSgpOworICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGRldmljZU1hdHJpeCA9IGNvbXB1dGVEZXZpY2VUcmFuc2Zvcm0o
bGF5ZXJSZW5kZXJlciwgZHJhd1RyYW5zZm9ybSk7CiAKICAgICAvLyBDYW4gb25seSBkcmF3IHN1
cmZhY2UgaWYgZGV2aWNlIG1hdHJpeCBpcyBpbnZlcnRpYmxlLgogICAgIGlmICghZGV2aWNlTWF0
cml4LmlzSW52ZXJ0aWJsZSgpKQpAQCAtMTcwLDI3ICszMDksMjkgQEAgdm9pZCBDQ1JlbmRlclN1
cmZhY2U6OmRyYXdMYXllcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIEND
TGF5ZXJJbXAKICAgICAgICAgaWYgKCFtYXNrTGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHVzZU1hc2sgPSB0cnVlOwogCisgICAgLy8gRklYTUU6IHBhc3MgaW4gYmFja2dy
b3VuZFRleHR1cmVJZCBhbmQgYmxlbmQgdGhlIGJhY2tncm91bmQgaW4gd2l0aCB0aGlzIGRyYXcg
aW5zdGVhZCBvZiBoYXZpbmcgYSBzZXBhcmF0ZSBkcmF3QmFja2dyb3VuZCgpIHBhc3MuCisKICAg
ICBpZiAodXNlTWFzaykgewogICAgICAgICBpZiAodXNlQUEpIHsKICAgICAgICAgICAgIGNvbnN0
IE1hc2tQcm9ncmFtQUEqIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlTWFz
a1Byb2dyYW1BQSgpOwotICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFz
a0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVh
ZCwgcHJvZ3JhbSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9u
KCksIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnBvaW50TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJh
Z21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24oKSwgZmlsdGVyQml0bWFwKTsKKyAgICAgICAgICAg
IGRyYXdTdXJmYWNlKGxheWVyUmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5zZm9ybSwgZGV2
aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIGNvbnRlbnRzVGV4dHVyZUlkLCBwcm9n
cmFtLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgcHJv
Z3JhbS0+dmVydGV4U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNo
YWRlcigpLmVkZ2VMb2NhdGlvbigpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNv
bnN0IE1hc2tQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZU1h
c2tQcm9ncmFtKCk7Ci0gICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNr
TGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFk
LCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24o
KSwgLTEsIC0xLCBmaWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJS
ZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJl
Y3QsIGxheWVyUXVhZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkubWFza1NhbXBsZXJMb2NhdGlvbigpLCAtMSwgLTEpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHVzZUFBKSB7CiAgICAgICAgICAgICBjb25zdCBQcm9n
cmFtQUEqIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKCk7
Ci0gICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdU
cmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCAt
MSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFn
bWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigpLCBmaWx0ZXJCaXRtYXApOworICAgICAgICAgICAg
ZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZp
Y2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dy
YW0sIC0xLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5wb2ludExvY2F0aW9uKCksIHByb2dyYW0t
PmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCkpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgY29uc3QgUHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnJlbmRlclN1
cmZhY2VQcm9ncmFtKCk7Ci0gICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBt
YXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJR
dWFkLCBwcm9ncmFtLCAtMSwgLTEsIC0xLCBmaWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJh
d1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VN
YXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0s
IC0xLCAtMSwgLTEpOwogICAgICAgICB9CiAgICAgfQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4K
LXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZShMYXllclJlbmRlcmVyQ2hyb21pdW0q
IGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2
aWNlVHJhbnNmb3JtLCBjb25zdCBDQ0xheWVyUXVhZCYgZGV2aWNlUmVjdCwgY29uc3QgQ0NMYXll
clF1YWQmIGxheWVyUXVhZCwgY29uc3QgVCogcHJvZ3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVy
TG9jYXRpb24sIGludCBzaGFkZXJRdWFkTG9jYXRpb24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24s
IGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRtYXApCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJh
d1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySW1w
bCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXll
clF1YWQmIGRldmljZVJlY3QsIGNvbnN0IENDTGF5ZXJRdWFkJiBsYXllclF1YWQsIGludCBjb250
ZW50c1RleHR1cmVJZCwgY29uc3QgVCogcHJvZ3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9j
YXRpb24sIGludCBzaGFkZXJRdWFkTG9jYXRpb24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24pCiB7
CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCA9IGxheWVyUmVuZGVyZXItPmNvbnRl
eHQoKTsKIApAQCAtMTk5LDExICszNDAsNyBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1
cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySQogCiAg
ICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dW5pZm9ybTFp
KHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBp
ZiAoZmlsdGVyQml0bWFwLmdldFRleHR1cmUoKSkgewotICAgICAgICBHclRleHR1cmUqIHRleHR1
cmUgPSByZWludGVycHJldF9jYXN0PEdyVGV4dHVyZSo+KGZpbHRlckJpdG1hcC5nZXRUZXh0dXJl
KCkpOwotICAgICAgICBjb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCB0ZXh0dXJlLT5nZXRUZXh0dXJlSGFuZGxlKCkpOwotICAgIH0gZWxzZQotICAg
ICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dDNELCBsYXllclJlbmRl
cmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBjb250ZXh0M0QtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBjb250ZW50c1RleHR1cmVJ
ZCk7CiAKICAgICBpZiAoc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiAhPSAtMSkgewogICAgICAg
ICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkUxKSk7CkBAIC0yMjYsMTUgKzM2MywyOCBAQCB2b2lkIENDUmVuZGVyU3VyZmFj
ZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xh
eWVySQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4
U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBo
YUxvY2F0aW9uKCksIHNoYWRlclF1YWRMb2NhdGlvbik7CiB9CiAKLVNrQml0bWFwIENDUmVuZGVy
U3VyZmFjZTo6YXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJl
cikKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpzZXRTY2lzc29yUmVjdChMYXllclJlbmRlcmVyQ2hy
b21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3Qp
IGNvbnN0Cit7CisgICAgaWYgKG1fb3duaW5nTGF5ZXItPnBhcmVudCgpICYmIG1fb3duaW5nTGF5
ZXItPnBhcmVudCgpLT51c2VzTGF5ZXJDbGlwcGluZygpICYmIGxheWVyUmVuZGVyZXItPmNhcGFi
aWxpdGllcygpLnVzaW5nUGFydGlhbFN3YXApIHsKKyAgICAgICAgRmxvYXRSZWN0IGNsaXBBbmRE
YW1hZ2VSZWN0ID0gbV9jbGlwUmVjdDsKKyAgICAgICAgY2xpcEFuZERhbWFnZVJlY3QuaW50ZXJz
ZWN0KHN1cmZhY2VEYW1hZ2VSZWN0KTsKKyAgICAgICAgbGF5ZXJSZW5kZXJlci0+c2V0U2Npc3Nv
clRvUmVjdChlbmNsb3NpbmdJbnRSZWN0KGNsaXBBbmREYW1hZ2VSZWN0KSk7CisgICAgfSBlbHNl
IGlmIChsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKQorICAg
ICAgICBsYXllclJlbmRlcmVyLT5zZXRTY2lzc29yVG9SZWN0KGVuY2xvc2luZ0ludFJlY3Qoc3Vy
ZmFjZURhbWFnZVJlY3QpKTsKKyAgICBlbHNlIGlmIChtX293bmluZ0xheWVyLT5wYXJlbnQoKSAm
JiBtX293bmluZ0xheWVyLT5wYXJlbnQoKS0+dXNlc0xheWVyQ2xpcHBpbmcoKSkKKyAgICAgICAg
bGF5ZXJSZW5kZXJlci0+c2V0U2Npc3NvclRvUmVjdChtX2NsaXBSZWN0KTsKKyAgICBlbHNlCisg
ICAgICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRl
eHQoKS0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7Cit9CisKK1Nr
Qml0bWFwIENDUmVuZGVyU3VyZmFjZTo6YXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1
bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgTWFuYWdl
ZFRleHR1cmUqIHNvdXJjZVRleHR1cmUpCiB7Ci0gICAgLy8gRG9uJ3QgdXNlIHRoZSB1dGlsaXR5
IGNvbnRleHQgaWYgd2UgaGF2ZSBhIGNvbXBvc2l0b3IgdGhyZWFkLCBzaW5jZQotICAgIC8vIGl0
IGNhbiByYWNlIHdpdGggY2FudmFzJ3MgdXNlLgotICAgIGlmICghbV9jb250ZW50c1RleHR1cmUg
fHwgIW1fZmlsdGVycy5zaXplKCkgfHwgQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQorICAgIC8v
IEZJWE1FOiBEb24ndCB1c2UgdGhlIHV0aWxpdHkgY29udGV4dCBpZiB3ZSBoYXZlIGEgY29tcG9z
aXRvciB0aHJlYWQsIHNpbmNlIGl0IGNhbiByYWNlIHdpdGggY2FudmFzJ3MgdXNlLgorICAgIGlm
IChmaWx0ZXJzLmlzRW1wdHkoKSB8fCBDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpCiAgICAgICAg
IHJldHVybiBTa0JpdG1hcCgpOwogCiAgICAgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5mbHVz
aCgpOwotICAgIHJldHVybiBDQ1JlbmRlclN1cmZhY2VGaWx0ZXJzOjphcHBseShtX2ZpbHRlcnMs
IG1fY29udGVudHNUZXh0dXJlLT50ZXh0dXJlSWQoKSwgbV9jb250ZW50UmVjdC5zaXplKCksIFNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQoKSk7CisgICAgcmV0dXJuIENDUmVuZGVyU3VyZmFj
ZUZpbHRlcnM6OmFwcGx5KGZpbHRlcnMsIHNvdXJjZVRleHR1cmUtPnRleHR1cmVJZCgpLCBzb3Vy
Y2VUZXh0dXJlLT5zaXplKCksIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQoKSk7CiB9CiAK
IFN0cmluZyBDQ1JlbmRlclN1cmZhY2U6Om5hbWUoKSBjb25zdApAQCAtMjY4LDYgKzQxOCwxMSBA
QCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHVtcFN1cmZhY2UoVGV4dFN0cmVhbSYgdHMsIGludCBp
bmRlbnQpIGNvbnN0CiAgICAgdHMgPDwgInNpemUoIiA8PCBtX2RhbWFnZVRyYWNrZXItPmN1cnJl
bnREYW1hZ2VSZWN0KCkud2lkdGgoKSA8PCAiLCIgPDwgbV9kYW1hZ2VUcmFja2VyLT5jdXJyZW50
RGFtYWdlUmVjdCgpLmhlaWdodCgpIDw8ICIpXG4iOwogfQogCitib29sIENDUmVuZGVyU3VyZmFj
ZTo6aGFzUmVwbGljYSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fb3duaW5nTGF5ZXItPnJlcGxp
Y2FMYXllcigpOworfQorCiBpbnQgQ0NSZW5kZXJTdXJmYWNlOjpvd25pbmdMYXllcklkKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9vd25pbmdMYXllciA/IG1fb3duaW5nTGF5ZXItPmlkKCkgOiAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCBlNWU2ODNhNTIzNmVhZDU5NTVhOGIz
N2RmMTg3ZGUxZWVmZjg2N2QwLi4xZDI3YmU4OThiZTU2YzU1ODhiYzJhZGYzZDQ2NmU5ODA2YThk
ZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtNTUsOCArNTUsMjMgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBwcmVwYXJlQ29udGVudHNUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJv
bWl1bSopOwogICAgIHZvaWQgcmVsZWFzZUNvbnRlbnRzVGV4dHVyZSgpOworCisgICAgYm9vbCBw
cmVwYXJlQ29udGVudHNCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsK
KyAgICB2b2lkIHJlbGVhc2VDb250ZW50c0JhY2tncm91bmRUZXh0dXJlKCk7CisKKyAgICBib29s
IHByZXBhcmVSZXBsaWNhQmFja2dyb3VuZFRleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7
CisgICAgdm9pZCByZWxlYXNlUmVwbGljYUJhY2tncm91bmRUZXh0dXJlKCk7CisKICAgICB2b2lk
IGNsZWFudXBSZXNvdXJjZXMoKTsKKwogICAgIHZvaWQgZHJhdyhMYXllclJlbmRlcmVyQ2hyb21p
dW0qLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KTsKKyAgICAvLyBUYWtlcyBh
IHRleHR1cmUgd2l0aCBwaXhlbHMgaW4gZGV2aWNlIGNvb3JkaW5hdGVzLCBhbmQgYSB0cmFuc2Zv
cm0gZnJvbSBjb250ZW50IHNwYWNlIHRvIHRoZSBkZXZpY2UuIERyYXdzIGNvbnRlbnRzIG9mIHRo
ZSBkZXZpY2UgYmFja2dyb3VuZAorICAgIC8vIGJhY2sgaW50byBjb250ZW50IHNwYWNlIGZvciB0
aGUgc3VyZmFjZS4gVGhlIHN1cmZhY2UncyBjb250ZW50c0JhY2tncm91bmRUZXh0dXJlKCkgb3Ig
cmVwbGljYUJhY2tncm91bmRUZXh0dXJlKCkgbXVzdCBiZSB0aGUgYWN0aXZlIGRyYXdpbmcgdGFy
Z2V0LgorICAgIHZvaWQgZHJhd0JhY2tncm91bmRUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1
bSosIGludCBkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBkZXZpY2VU
ZXh0dXJlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSkg
Y29uc3Q7CisgICAgLy8gRHJhdyB0aGUgY29udGVudHMgYW5kIHJlcGxpY2EgYmFja2dyb3VuZCB0
ZXh0dXJlcyBiYWNrIGludG8gdGhlIHRhcmdldCBzdXJmYWNlLgorICAgIHZvaWQgZHJhd0JhY2tn
cm91bmQoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisKKyAgICB2b2lkIHNldFNjaXNzb3JSZWN0
KExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJl
Y3QpIGNvbnN0OwogCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB2b2lkIGR1bXBTdXJm
YWNlKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdDsKQEAgLTY2LDYgKzgxLDEzIEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSByZWN0IHRoYXQgZW5jbG9zZXMgdGhlIFJlbmRlclN1
cmZhY2UgaW5jbHVkaW5nIGFueSByZWZsZWN0aW9uLgogICAgIEZsb2F0UmVjdCBkcmF3YWJsZUNv
bnRlbnRSZWN0KCkgY29uc3Q7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSByZWN0IHRoYXQgZW5jbG9z
ZXMgdGhlIFJlbmRlclN1cmZhY2UgaW5jbHVkaW5nIGFueSByZWZsZWN0aW9uIGluIHRoZSB0YXJn
ZXQgZGV2aWNlIGNvb3JkaW5hdGUgc3BhY2UsIGFuZCBpbmNsdWRpbmcgYW55IHBpeGVscworICAg
IC8vIG5lZWRlZCBpbiBvcmRlciB0byBkcmF3IGNvcnJlY3RseS4KKyAgICBJbnRSZWN0IHJlYWRi
YWNrRGV2aWNlQ29udGVudFJlY3QoTGF5ZXJSZW5kZXJlckNocm9taXVtKikgY29uc3Q7CisKKyAg
ICAvLyBHaXZlcyB0aGUgdHJhbnNmb3JtIGZyb20gdGhlIHN1cmZhY2UgY29udGVudCBzcGFjZSwg
d2l0aCBvcmlnaW4gaW4gdGhlIHRvcCBsZWZ0LCB0byB0aGUgY3VycmVudCB0YXJnZXQgZGV2aWNl
IHNwYWNlLCB3aXRoIG9yaWdpbiBpbiB0aGUgdG9wIGxlZnQuCisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggY29tcHV0ZURldmljZVRyYW5zZm9ybShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgY29uc3Q7CisKICAgICBmbG9h
dCBkcmF3T3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd09wYWNpdHk7IH0KICAgICB2b2lk
IHNldERyYXdPcGFjaXR5KGZsb2F0IG9wYWNpdHkpIHsgbV9kcmF3T3BhY2l0eSA9IG9wYWNpdHk7
IH0KIApAQCAtNzQsNyArOTYsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRGaWx0ZXJzKGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9maWx0ZXJzID0gZmlsdGVyczsgfQog
ICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2Zp
bHRlcnM7IH0KLSAgICBTa0JpdG1hcCBhcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9taXVt
Kik7CisgICAgU2tCaXRtYXAgYXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmLCBNYW5hZ2VkVGV4dHVyZSogc291cmNlVGV4dHVyZSk7CisK
KyAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpIHsgbV9iYWNrZ3JvdW5kRmlsdGVycyA9IGZpbHRlcnM7IH0KKyAgICBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dy
b3VuZEZpbHRlcnM7IH0KIAogICAgIHZvaWQgc2V0TmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4
ZWxzKENDUmVuZGVyU3VyZmFjZSogc3VyZmFjZSkgeyBtX25lYXJlc3RBbmNlc3RvclRoYXRNb3Zl
c1BpeGVscyA9IHN1cmZhY2U7IH0KICAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2UqIG5lYXJlc3RB
bmNlc3RvclRoYXRNb3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIG1fbmVhcmVzdEFuY2VzdG9y
VGhhdE1vdmVzUGl4ZWxzOyB9CkBAIC0xMDUsNiArMTMwLDEwIEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclF1YWQsIEZyYWdtZW50U2hhZGVyUkdCQVRl
eEFscGhhTWFza0FBPiBNYXNrUHJvZ3JhbUFBOwogCiAgICAgTWFuYWdlZFRleHR1cmUqIGNvbnRl
bnRzVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNUZXh0dXJlLmdldCgpOyB9Cisg
ICAgTWFuYWdlZFRleHR1cmUqIGNvbnRlbnRzQmFja2dyb3VuZFRleHR1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRzQmFja2dyb3VuZFRleHR1cmUuZ2V0KCk7IH0KKyAgICBNYW5hZ2VkVGV4
dHVyZSogcmVwbGljYUJhY2tncm91bmRUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNh
QmFja2dyb3VuZFRleHR1cmUuZ2V0KCk7IH0KKworICAgIGJvb2wgaGFzUmVwbGljYSgpIGNvbnN0
OwogCiAgICAgaW50IG93bmluZ0xheWVySWQoKSBjb25zdDsKIApAQCAtMTE1LDkgKzE0NCwxMiBA
QCBwdWJsaWM6CiAgICAgQ0NEYW1hZ2VUcmFja2VyKiBkYW1hZ2VUcmFja2VyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYW1hZ2VUcmFja2VyLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkcmF3
TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwqLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRtYXApOworICAgIEludFJl
Y3QgY29tcHV0ZURldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKKyAgICBJbnRSZWN0
IGNvbXB1dGVSZWFkYmFja0RldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1bSos
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKKworICAg
IHZvaWQgZHJhd0xheWVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIENDTGF5ZXJJbXBsKiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBpbnQgY29udGVudHNUZXh0dXJlSWQpOwogICAgIHRl
bXBsYXRlIDxjbGFzcyBUPgotICAgIHZvaWQgZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiwgQ0NMYXllckltcGwqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5z
Zm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3Qg
Q0NMYXllclF1YWQmIGRldmljZVJlY3QsIGNvbnN0IENDTGF5ZXJRdWFkJiwgY29uc3QgVCogcHJv
Z3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFkZXJRdWFkTG9jYXRp
b24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24sIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRtYXAp
OworICAgIHZvaWQgZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllcklt
cGwqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXllclF1YWQmIGRl
dmljZVJlY3QsIGNvbnN0IENDTGF5ZXJRdWFkJiwgaW50IGNvbnRlbnRzVGV4dHVyZUlkLCBjb25z
dCBUKiBwcm9ncmFtLCBpbnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRlclF1
YWRMb2NhdGlvbiwgaW50IHNoYWRlckVkZ2VMb2NhdGlvbik7CiAKICAgICBDQ0xheWVySW1wbCog
bV9vd25pbmdMYXllcjsKICAgICBDQ0xheWVySW1wbCogbV9tYXNrTGF5ZXI7CkBAIC0xMjcsMTEg
KzE1OSwxNSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdXJmYWNlUHJvcGVydHlDaGFuZ2VkOwog
CiAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX2NvbnRlbnRzVGV4dHVyZTsKKyAgICBPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IG1fY29udGVudHNCYWNrZ3JvdW5kVGV4dHVyZTsKKyAgICBPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IG1fcmVwbGljYUJhY2tncm91bmRUZXh0dXJlOworCiAgICAgZmxv
YXQgbV9kcmF3T3BhY2l0eTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zv
cm07CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9yZXBsaWNhRHJhd1RyYW5zZm9ybTsKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX29yaWdpblRyYW5zZm9ybTsKICAgICBGaWx0ZXJPcGVy
YXRpb25zIG1fZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRl
cnM7CiAgICAgSW50UmVjdCBtX2NsaXBSZWN0OwogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IG1f
bGF5ZXJMaXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJ
bXBsVGVzdC5jcHAKaW5kZXggOGE5ZjM1ZGM4YTdiODljMGM5NGJkNzUzN2M2ODQ2NGZhNzhhNmJi
OC4uMjI5OTc0MTRlMDkxZTNmZTAxMjhlZGY0YmMxZWRlZWMxMTNlMmI5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcApAQCAtMTEzLDYg
KzExMyw3IEBAIFRFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVUcmFj
a2VkUHJvcGVybHkpCiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChy
b290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZ
X0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpncmF5KSk7CiAg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXRCYWNrZ3Jv
dW5kQ292ZXJzVmlld3BvcnQodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xB
WUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3VuZEZpbHRlcnMoYXJiaXRyYXJ5RmlsdGVycykp
OwogCiAgICAgLy8gU3BlY2lhbCBjYXNlOiBjaGVjayB0aGF0IHN1YmxheWVyIHRyYW5zZm9ybSBj
aGFuZ2VzIGFsbCBsYXllcidzIGRlc2NlbmRhbnRzLCBidXQgbm90IHRoZSBsYXllciBpdHNlbGYu
CiAgICAgcm9vdC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131883</attachid>
            <date>2012-03-14 10:58:58 -0700</date>
            <delta_ts>2012-04-09 16:40:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80046-20120314135857.patch</filename>
            <type>text/plain</type>
            <size>44911</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY1MzIwYTc4Y2JjZTk5
ZGM1ZTEwMmU0YWIzMmMxNTI1NDEzNjNmYS4uNjc0MjIxOGFhY2M3MzAwNmM3ZTllYzc1NGQ1YWZi
MDk0NThhNmUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTAzLTAyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQmFj
a2dyb3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhY2tncm91bmQgZmlsdGVycyB0byBM
YXllckNocm9taXVtL0NDTGF5ZXJJbXBsLiBUaGVzZSBmaWx0ZXJzIGFyZQorICAgICAgICBhcHBs
aWVkIHRvIGFueSBwaXhlbHMgaW4gdGhlIGNvbnRlbnRzIGJlaGluZCB0aGUgbGF5ZXIgYW5kIHNl
ZW4gdGhyb3VnaAorICAgICAgICBpdC4KKworICAgICAgICBVbml0IHRlc3QgdGhlIGJhY2tncm91
bmQgZmlsdGVyIHByb3BlcnR5IGJlaW5nIHBhc3NlZCB0byBpbXBsIGNvcnJlY3RseS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OmJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdSZW5kZXJTdXJmYWNlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlckNocm9taXVtOjp1c2VNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6
CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OmJhY2tncm91bmRGaWx0ZXJzKToKKyAg
ICAgICAgKFJlbmRlclN1cmZhY2VDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckltcGw6OnNldEJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAg
IChDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YmFja2dyb3Vu
ZEZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJ0cmVlU2hvdWxkUmVu
ZGVyVG9TZXBhcmF0ZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlclN1cmZhY2U6OmNsZWFudXBSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NS
ZW5kZXJTdXJmYWNlOjpkcmF3YWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVuZGVyU3VyZmFjZTo6cHJlcGFyZUNvbnRlbnRzQmFja2dyb3VuZFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OnJlbGVhc2VD
b250ZW50c0JhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6cHJlcGFyZVJlcGxpY2FCYWNrZ3JvdW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OnJlbGVhc2VSZXBsaWNhQmFja2dyb3VuZFRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpjb21wdXRlRGV2aWNlVHJhbnNmb3JtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZURldmljZUJvdW5kaW5n
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZVJlYWRiYWNr
RGV2aWNlQm91bmRpbmdCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpy
ZWFkYmFja0RldmljZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6ZHJhd0JhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlUZXh0
dXJlVG9GcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRy
YXdCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFNrQml0bWFwVGV4dHVyZUlkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6ZHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRyYXdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclN1cmZhY2U6OmRyYXdTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6c2V0U2Npc3NvclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNl
OjphcHBseUZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpoYXNS
ZXBsaWNhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clN1cmZhY2UuaDoKKyAgICAgICAgKENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OnNldEJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVuZGVyU3VyZmFjZTo6YmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJTdXJmYWNlOjpjb250ZW50c0JhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cmVwbGljYUJhY2tncm91bmRUZXh0dXJlKToKKwog
MjAxMi0wMy0xNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBSdW5Mb29wUXQgaXMgbWlzc2luZyByZWVudHJhbmN5IGd1YXJkcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlZjgwZGExNmRjYjgxZGIwZWVkNjIwYzQ4MTg3ODc5
YzkzZWQxOGQxLi5mMzZkNWI4YzAzYmYxNzM2YTllNGQ2YzgyMmI5NjQwNmQ5M2VkYjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAzLTAyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQmFj
a2dyb3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wMy0xMyAgSGFqaW1lIE1vcnJpdGEg
IDxtb3JyaXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBtYXJrIHZlcmlm
eUN1bGxDaGlsZExpbmVzVXBUb3BMZWZ0KCkgYXMgZmFpbGVkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cAppbmRleCBmOTczODgwZmQxNzViMWE0OTM2YTJlZmY0MTc2ZjRjYmYxZTdjOWY1Li42NDA3ODNl
YTE3OTVjZDM2OGRjMDE4ZmVmNjcwYmIwN2QyMmJlNTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cApAQCAtMzgxLDYgKzM4MSwxNCBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldEZpbHRlcnMoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQog
Cit2b2lkIExheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKQoreworICAgIGlmIChtX2JhY2tncm91bmRGaWx0
ZXJzID09IGJhY2tncm91bmRGaWx0ZXJzKQorICAgICAgICByZXR1cm47CisgICAgbV9iYWNrZ3Jv
dW5kRmlsdGVycyA9IGJhY2tncm91bmRGaWx0ZXJzOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9
CisKIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQogewogICAg
IGlmIChtX29wYWNpdHkgPT0gb3BhY2l0eSkKQEAgLTUxMSw2ICs1MTksNyBAQCB2b2lkIExheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIGxheWVy
LT5zZXREb3VibGVTaWRlZChtX2RvdWJsZVNpZGVkKTsKICAgICBsYXllci0+c2V0RHJhd3NDb250
ZW50KGRyYXdzQ29udGVudCgpKTsKICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKCkpOwor
ICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhiYWNrZ3JvdW5kRmlsdGVycygpKTsKICAg
ICBsYXllci0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVudChtX2lzTm9uQ29tcG9zaXRlZENvbnRl
bnQpOwogICAgIGxheWVyLT5zZXRNYXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CiAgICAg
bGF5ZXItPnNldFNjcm9sbGFibGUobV9zY3JvbGxhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRl
eCA4NmZkZjk1MTU2ODg5Mzc4YzNkNjJkMTkxOWE3OTVhMmNlMTI1MTZhLi4zY2U3YjZjYWUzMjJh
ZDI5MzQ5MGI5NTUyMWU0NmNlOTM5NGRlZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xMTMs
NiArMTEzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYpOwogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7
IHJldHVybiBtX2ZpbHRlcnM7IH0KIAorICAgIC8vIEJhY2tncm91bmQgZmlsdGVycyBhcmUgZmls
dGVycyBhcHBsaWVkIHRvIHdoYXQgaXMgYmVoaW5kIHRoaXMgbGF5ZXIsIHdoZW4gdGhleSBhcmUg
dmlld2VkIHRocm91Z2ggbm9uLW9wYXF1ZQorICAgIC8vIHJlZ2lvbnMgaW4gdGhpcyBsYXllci4g
VGhleSBhcmUgdXNlZCB0aHJvdWdoIHRoZSBXZWJMYXllciBpbnRlcmZhY2UsIGFuZCBhcmUgbm90
IGV4cG9zZWQgdG8gSFRNTC4KKyAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmKTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5k
RmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKwogICAgIHZp
cnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CiAgICAgYm9vbCBvcGFxdWUoKSBjb25zdCB7IHJl
dHVybiBtX29wYXF1ZTsgfQogCkBAIC0yOTMsNiArMjk4LDcgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgbV9kZWJ1Z05hbWU7CiAgICAgZmxvYXQgbV9vcGFjaXR5OwogICAgIEZpbHRlck9wZXJhdGlv
bnMgbV9maWx0ZXJzOworICAgIEZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsK
ICAgICBmbG9hdCBtX2FuY2hvclBvaW50WjsKICAgICBib29sIG1faXNEcmF3YWJsZTsKICAgICBi
b29sIG1fbWFza3NUb0JvdW5kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CmluZGV4IGIxNjJlYWI0OWZhMTM0M2MxMDMzM2VlMWYxMDE4YzJlZmE0NzM1Y2QuLjU2NDc3OWZk
YjIxM2I3MTJiNDFlMjEyNmZkNThlZTMyMjY3MDJjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkV4dGVuc2lvbnMz
RENocm9taXVtLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR2VvbWV0cnlC
aW5kaW5nLmgiCisjaW5jbHVkZSAiR3JUZXh0dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWlu
dGVyQ2hyb21pdW0uaCIKQEAgLTQ4OSw5ICs0OTAsNjIgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmRyYXdEZWJ1Z0JvcmRlclF1YWQoY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKiBx
dWEKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmRyYXdFbGVtZW50cyhHcmFwaGljc0Nv
bnRleHQzRDo6TElORV9MT09QLCA0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQs
IDYgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpKSk7CiB9CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQqIHF1YWQpCit7CisgICAgYm9vbCBkcmF3aW5nVG9Sb290UmVuZGVyU3VyZmFjZSA9IG1fY3Vy
cmVudFJlbmRlclN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3VyZmFjZTsKKyAgICBpZiAoIWRy
YXdpbmdUb1Jvb3RSZW5kZXJTdXJmYWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBDQ1JlbmRl
clN1cmZhY2UqIGRyYXdpbmdTdXJmYWNlID0gcXVhZC0+bGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgp
OworICAgIGlmIChkcmF3aW5nU3VyZmFjZS0+YmFja2dyb3VuZEZpbHRlcnMoKS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIEludFJlY3QgZGV2aWNlUmVjdCA9IGRyYXdpbmdTdXJm
YWNlLT5yZWFkYmFja0RldmljZUNvbnRlbnRSZWN0KHRoaXMpOworICAgIGRldmljZVJlY3QuaW50
ZXJzZWN0KG1fY3VycmVudFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkpOworCisgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggY29udGVudHNEZXZpY2VUcmFuc2Zvcm0gPSBkcmF3aW5nU3VyZmFj
ZS0+Y29tcHV0ZURldmljZVRyYW5zZm9ybSh0aGlzLCBkcmF3aW5nU3VyZmFjZS0+ZHJhd1RyYW5z
Zm9ybSgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhRGV2aWNlVHJhbnNmb3Jt
ID0gZHJhd2luZ1N1cmZhY2UtPmNvbXB1dGVEZXZpY2VUcmFuc2Zvcm0odGhpcywgZHJhd2luZ1N1
cmZhY2UtPnJlcGxpY2FEcmF3VHJhbnNmb3JtKCkpOworCisgICAgT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiBkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobV9y
ZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIuZ2V0KCkpOworICAgIGJvb2wgYXBwbHlCYWNrZ3Jv
dW5kRmlsdGVycyA9IGdldEZyYW1lYnVmZmVyVGV4dHVyZShkZXZpY2VCYWNrZ3JvdW5kVGV4dHVy
ZS5nZXQoKSwgZGV2aWNlUmVjdCk7CisKKyAgICBpZiAoYXBwbHlCYWNrZ3JvdW5kRmlsdGVycykg
eworICAgICAgICBDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFJlbmRlclN1cmZhY2UgPSBtX2N1cnJl
bnRSZW5kZXJTdXJmYWNlOworCisgICAgICAgIFNrQml0bWFwIGZpbHRlcmVkRGV2aWNlQmFja2dy
b3VuZCA9IGRyYXdpbmdTdXJmYWNlLT5hcHBseUZpbHRlcnModGhpcywgZHJhd2luZ1N1cmZhY2Ut
PmJhY2tncm91bmRGaWx0ZXJzKCksIGRldmljZUJhY2tncm91bmRUZXh0dXJlLmdldCgpKTsKKyAg
ICAgICAgaWYgKGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZC5nZXRUZXh0dXJlKCkpIHsKKyAgICAg
ICAgICAgIEdyVGV4dHVyZSogdGV4dHVyZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JUZXh0dXJlKj4o
ZmlsdGVyZWREZXZpY2VCYWNrZ3JvdW5kLmdldFRleHR1cmUoKSk7CisgICAgICAgICAgICBpbnQg
ZmlsdGVyZWREZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkID0gdGV4dHVyZS0+Z2V0VGV4dHVyZUhh
bmRsZSgpOworCisgICAgICAgICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRp
c2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkpOworICAgICAgICAgICAgR0xD
KG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpC
TEVORCkpOworCisgICAgICAgICAgICBpZiAoZHJhd2luZ1N1cmZhY2UtPmhhc1JlcGxpY2EoKSAm
JiBkcmF3aW5nU3VyZmFjZS0+cHJlcGFyZVJlcGxpY2FCYWNrZ3JvdW5kVGV4dHVyZSh0aGlzKSAm
JiB1c2VNYW5hZ2VkVGV4dHVyZShkcmF3aW5nU3VyZmFjZS0+cmVwbGljYUJhY2tncm91bmRUZXh0
dXJlKCksIGRyYXdpbmdTdXJmYWNlLT5jb250ZW50UmVjdCgpKSkKKyAgICAgICAgICAgICAgICBk
cmF3aW5nU3VyZmFjZS0+ZHJhd0JhY2tncm91bmRUZXh0dXJlKHRoaXMsIGZpbHRlcmVkRGV2aWNl
QmFja2dyb3VuZFRleHR1cmVJZCwgZGV2aWNlUmVjdCwgcmVwbGljYURldmljZVRyYW5zZm9ybSk7
CisKKyAgICAgICAgICAgIGlmIChkcmF3aW5nU3VyZmFjZS0+cHJlcGFyZUNvbnRlbnRzQmFja2dy
b3VuZFRleHR1cmUodGhpcykgJiYgdXNlTWFuYWdlZFRleHR1cmUoZHJhd2luZ1N1cmZhY2UtPmNv
bnRlbnRzQmFja2dyb3VuZFRleHR1cmUoKSwgZHJhd2luZ1N1cmZhY2UtPmNvbnRlbnRSZWN0KCkp
KQorICAgICAgICAgICAgICAgIGRyYXdpbmdTdXJmYWNlLT5kcmF3QmFja2dyb3VuZFRleHR1cmUo
dGhpcywgZmlsdGVyZWREZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZpY2VSZWN0LCBjb250
ZW50c0RldmljZVRyYW5zZm9ybSk7CisKKyAgICAgICAgICAgIHVzZVJlbmRlclN1cmZhY2UodGFy
Z2V0UmVuZGVyU3VyZmFjZSk7CisKKyAgICAgICAgICAgIGRyYXdpbmdTdXJmYWNlLT5zZXRTY2lz
c29yUmVjdCh0aGlzLCBxdWFkLT5zdXJmYWNlRGFtYWdlUmVjdCgpKTsKKyAgICAgICAgICAgIGRy
YXdpbmdTdXJmYWNlLT5kcmF3QmFja2dyb3VuZCh0aGlzKTsKKworICAgICAgICAgICAgaWYgKHF1
YWQtPm5lZWRzQmxlbmRpbmcoKSkKKyAgICAgICAgICAgICAgICBHTEMobV9jb250ZXh0LmdldCgp
LCBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKKworICAgICAg
ICAgICAgZHJhd2luZ1N1cmZhY2UtPnJlbGVhc2VSZXBsaWNhQmFja2dyb3VuZFRleHR1cmUoKTsK
KyAgICAgICAgICAgIGRyYXdpbmdTdXJmYWNlLT5yZWxlYXNlQ29udGVudHNCYWNrZ3JvdW5kVGV4
dHVyZSgpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1JlbmRlclN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBx
dWFkKQogewogICAgIENDTGF5ZXJJbXBsKiBsYXllciA9IHF1YWQtPmxheWVyKCk7CisKKyAgICBk
cmF3QmFja2dyb3VuZEZpbHRlcnMocXVhZCk7CisKICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgp
LT5kcmF3KHRoaXMsIHF1YWQtPnN1cmZhY2VEYW1hZ2VSZWN0KCkpOwogICAgIGxheWVyLT5yZW5k
ZXJTdXJmYWNlKCktPnJlbGVhc2VDb250ZW50c1RleHR1cmUoKTsKIH0KQEAgLTExMjIsNiArMTE3
NiwxNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJQaXhlbHMo
dm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZQogICAgIH0KIH0KIAorYm9vbCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4
dHVyZSwgY29uc3QgSW50UmVjdCYgZGV2aWNlUmVjdCkKK3sKKyAgICBpZiAoIXRleHR1cmUtPnJl
c2VydmUoZGV2aWNlUmVjdC5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShtX2NvbnRleHQuZ2V0
KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgpLCBkZXZpY2VS
ZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogTWFuYWdlZFRleHR1cmUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0T2Zmc2NyZWVu
TGF5ZXJUZXh0dXJlKCkKIHsKICAgICByZXR1cm4gc2V0dGluZ3MoKS5jb21wb3NpdGVPZmZzY3Jl
ZW4gJiYgcm9vdExheWVyKCkgPyByb290TGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpLT5jb250ZW50
c1RleHR1cmUoKSA6IDA7CkBAIC0xMTQzLDEwICsxMjA4LDExIEBAIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpCiAKIGJvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVy
U3VyZmFjZSkKIHsKLSAgICBpZiAobV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9PSByZW5kZXJTdXJm
YWNlKQorICAgIGlmIChtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID09IHJlbmRlclN1cmZhY2UgJiYg
IW1fY3VycmVudE1hbmFnZWRUZXh0dXJlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIG1f
Y3VycmVudFJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlOworICAgIG1fY3VycmVudE1hbmFn
ZWRUZXh0dXJlID0gMDsKIAogICAgIGlmICgocmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5k
ZXJTdXJmYWNlICYmICFzZXR0aW5ncygpLmNvbXBvc2l0ZU9mZnNjcmVlbikgfHwgKCFyZW5kZXJT
dXJmYWNlICYmIHNldHRpbmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVuKSkgewogICAgICAgICBHTEMo
bV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKQEAgLTExNTcsMTIgKzEyMjMsMjggQEAgYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5k
ZXJTdXJmYWNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBHTEMobV9jb250
ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwotCiAgICAgaWYgKCFyZW5k
ZXJTdXJmYWNlLT5wcmVwYXJlQ29udGVudHNUZXh0dXJlKHRoaXMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICByZW5kZXJTdXJmYWNlLT5jb250ZW50c1RleHR1cmUoKS0+ZnJhbWVidWZm
ZXJUZXh0dXJlMkQobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2Nh
dG9yLmdldCgpKTsKKyAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKHJlbmRlclN1
cmZhY2UtPmNvbnRlbnRzVGV4dHVyZSgpLCByZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpKTsK
K30KKworYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZU1hbmFnZWRUZXh0dXJlKE1hbmFn
ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpCit7CisgICAg
aWYgKG1fY3VycmVudE1hbmFnZWRUZXh0dXJlID09IHRleHR1cmUpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9IDA7CisgICAgbV9jdXJyZW50TWFu
YWdlZFRleHR1cmUgPSB0ZXh0dXJlOworCisgICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZlclRvVGV4
dHVyZSh0ZXh0dXJlLCB2aWV3cG9ydFJlY3QpOworfQorCitib29sIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpCit7CisgICAgR0xDKG1fY29udGV4dC5nZXQoKSwg
bV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpKTsKKworICAgIHRleHR1cmUtPmZyYW1lYnVmZmVy
VGV4dHVyZTJEKG1fY29udGV4dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRv
ci5nZXQoKSk7CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJVRyApCiAgICAgaWYgKG1fY29udGV4dC0+
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9
IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewpAQCAtMTE3MSw3ICsx
MjUzLDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoQ0NS
ZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlKQogICAgIH0KICNlbmRpZgogCi0gICAgc2V0RHJh
d1ZpZXdwb3J0UmVjdChyZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLCBmYWxzZSk7CisgICAg
c2V0RHJhd1ZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3QsIGZhbHNlKTsKIAogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBhNjg3NmU1ZDU2
NzQzZjRlMTk1MzYyMjkxYzZlOWUwMDNlNmZkNmJkLi4wOTY0MTBmM2ZiMGI1MWJhZDBmZjNhNjI3
MjE0YTBmNDllYjFjNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAt
MTM4LDYgKzEzOCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpTdHJl
YW1UZXh0dXJlUHJvZ3JhbSogc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbSgpOwogCiAgICAgdm9p
ZCBnZXRGcmFtZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKKyAg
ICBib29sIGdldEZyYW1lYnVmZmVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIGRldmljZVJlY3QpOwogCiAgICAgVGV4dHVyZU1hbmFnZXIqIHJlbmRlclN1cmZhY2VUZXh0
dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2Vy
LmdldCgpOyB9CiAgICAgVGV4dHVyZUFsbG9jYXRvciogcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxv
Y2F0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdl
dCgpOyB9CkBAIC0xNjYsNiArMTY3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJhd1F1YWQo
Y29uc3QgQ0NEcmF3UXVhZCosIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpOwog
ICAgIHZvaWQgZHJhd0RlYnVnQm9yZGVyUXVhZChjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQq
KTsKKyAgICB2b2lkIGRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclN1cmZhY2VE
cmF3UXVhZCopOwogICAgIHZvaWQgZHJhd1JlbmRlclN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVy
U3VyZmFjZURyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3U29saWRDb2xvclF1YWQoY29uc3QgQ0NT
b2xpZENvbG9yRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdUaWxlUXVhZChjb25zdCBDQ1RpbGVE
cmF3UXVhZCopOwpAQCAtMTg2LDcgKzE4OCwxMiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRE
cmF3Vmlld3BvcnRSZWN0KGNvbnN0IEludFJlY3QmLCBib29sIGZsaXBZKTsKIAorICAgIC8vIFRo
ZSBjdXJyZW50IGRyYXdpbmcgdGFyZ2V0IGlzIGVpdGhlciBhIFJlbmRlclN1cmZhY2Ugb3IgTWFu
YWdlZFRleHR1cmUuIFVzZSB0aGVzZSBmdW5jdGlvbnMgdG8gc3dpdGNoIHRvIGEgbmV3IGRyYXdp
bmcgdGFyZ2V0LgogICAgIGJvb2wgdXNlUmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqKTsK
KyAgICBib29sIHVzZU1hbmFnZWRUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVj
dCYgdmlld3BvcnRSZWN0KTsKKworICAgIGJvb2wgYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1h
bmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KTsKKwogICAgIHZvaWQg
Y2xlYXJSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSosIENDUmVuZGVyU3VyZmFjZSogcm9v
dFJlbmRlclN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpOwogCiAg
ICAgdm9pZCByZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1cmVzKCk7CkBAIC0yMTMsNiArMjIwLDcg
QEAgcHJpdmF0ZToKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3dpbmRvd01hdHJpeDsKIAog
ICAgIENDUmVuZGVyU3VyZmFjZSogbV9jdXJyZW50UmVuZGVyU3VyZmFjZTsKKyAgICBNYW5hZ2Vk
VGV4dHVyZSogbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7CiAgICAgdW5zaWduZWQgbV9vZmZzY3Jl
ZW5GcmFtZWJ1ZmZlcklkOwogCiAgICAgLy8gU3RvcmUgdmFsdWVzIHRoYXQgYXJlIHNoYXJlZCBi
ZXR3ZWVuIGluc3RhbmNlcyBvZiBlYWNoIGxheWVyIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmgKaW5kZXggOTA0NTQyNWJjM2ZiZmYyM2M4MjFmZmZlOGE0YmIwNzM5NWIwZTI4
Yy4uNDdjMjA3NjkzMTBhNzAwNWQzMGNlYTAxN2I5NGQ3ZTJmYmJiZmVmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
UmVuZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTgwLDYgKzgwLDkgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7IG1fZmlsdGVy
cyA9IGZpbHRlcnM7IH0KICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9maWx0ZXJzOyB9CiAKKyAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJz
KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9iYWNrZ3JvdW5kRmlsdGVycyA9
IGZpbHRlcnM7IH0KKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKwogICAgIGJvb2wgc2tp
cHNEcmF3KCkgY29uc3QgeyByZXR1cm4gbV9za2lwc0RyYXc7IH0KICAgICB2b2lkIHNldFNraXBz
RHJhdyhib29sIHNraXBzRHJhdykgeyBtX3NraXBzRHJhdyA9IHNraXBzRHJhdzsgfQogCkBAIC0x
MDMsNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxp
Y2FEcmF3VHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fb3JpZ2luVHJhbnNm
b3JtOwogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOworICAgIEZpbHRlck9wZXJhdGlv
bnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsKICAgICBJbnRSZWN0IG1fY2xpcFJlY3Q7CiAgICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IG1fbGF5ZXJMaXN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAKaW5kZXggNGZjZTc2YjAyNGMzNWFkMDk2NGUwMTE4MjJiZmYwYTM3MmZlMGYwNy4u
OTEyNjhiOWE2NWZjN2M3MzFmNjI5NGNiMWY3NDZjNTNiZWU2YmFiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmNwcApAQCAtMzk4LDYgKzM5OCwxNSBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRGaWx0
ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiAgICAgbm90ZUxheWVyUHJvcGVy
dHlDaGFuZ2VkRm9yU3VidHJlZSgpOwogfQogCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRCYWNrZ3Jv
dW5kRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycykKK3sK
KyAgICBpZiAobV9iYWNrZ3JvdW5kRmlsdGVycyA9PSBiYWNrZ3JvdW5kRmlsdGVycykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9iYWNrZ3JvdW5kRmlsdGVycyA9IGJhY2tncm91bmRGaWx0ZXJz
OworICAgIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQgPSB0cnVlOworfQorCiB2b2lkIENDTGF5ZXJJ
bXBsOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKIHsKICAgICBpZiAobV9t
YXNrc1RvQm91bmRzID09IG1hc2tzVG9Cb3VuZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCA4
ZDMzYjY0MmJkNzk2Zjg0ZTE2MzJlNmE1ZWZjYmNhZWRhYzBhM2Y2Li4zOTU1ZjgxMWQ3OTM4ZDcw
ZTJiNjMxYmRmNjBlZTJmOTE2ZmU0ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTExMyw2
ICsxMTMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmKTsKICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9maWx0ZXJzOyB9CiAKKyAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmKTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3Jv
dW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKwogICAg
IHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsKICAgICBib29sIG1hc2tzVG9Cb3VuZHMoKSBj
b25zdCB7IHJldHVybiBtX21hc2tzVG9Cb3VuZHM7IH0KIApAQCAtMzIwLDYgKzMyMyw3IEBAIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fZGVidWdOYW1lOwogCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBt
X2ZpbHRlcnM7CisgICAgRmlsdGVyT3BlcmF0aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOwogCiAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9kcmF3VHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Q29tbW9uLmNwcAppbmRleCBjODZkNzRkODYxZGFmNGU2ZTMyNWQxYzUzZmQ0N2Y0
OTg2NGY4NmE5Li4yOTRiYmQ1MmI5ZGIyYWFkZDhiYzY1MTlkZDlkZDJhOGM2ZWNhOWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCBzdGF0aWMgYm9vbCBzdWJ0cmVlU2hvdWxkUmVuZGVyVG9TZXBhcmF0ZVN1cmZhY2UoTGF5
ZXJUeXBlKiBsYXllciwgYm9vbCBheGlzQWxpZwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIElmIHRoZSBsYXllciB1c2VzIGEgQ1NTIGZpbHRlci4KLSAgICBpZiAoIWxheWVyLT5maWx0
ZXJzKCkuaXNFbXB0eSgpKQorICAgIGlmICghbGF5ZXItPmZpbHRlcnMoKS5pc0VtcHR5KCkgfHwg
IWxheWVyLT5iYWNrZ3JvdW5kRmlsdGVycygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAvLyBJZiB0aGUgbGF5ZXIgZmxhdHRlbnMgaXRzIHN1YnRyZWUgKGkuZS4gdGhl
IGxheWVyIGRvZXNuJ3QgcHJlc2VydmUtM2QpLCBidXQgaXQgaXMKQEAgLTMxNCw2ICszMTQsOCBA
QCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5h
bChMYXllclR5cGUqIGxheWVyLCBMYXllcgogICAgICAgICAgICAgbmVhcmVzdEFuY2VzdG9yVGhh
dE1vdmVzUGl4ZWxzID0gcmVuZGVyU3VyZmFjZTsKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0
TmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1Bp
eGVscyk7CiAKKyAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0QmFja2dyb3VuZEZpbHRlcnMobGF5
ZXItPmJhY2tncm91bmRGaWx0ZXJzKCkpOworCiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllckxp
c3QuYXBwZW5kKGxheWVyKTsKICAgICB9IGVsc2UgewogICAgICAgICBsYXllci0+c2V0RHJhd1Ry
YW5zZm9ybShjb21iaW5lZFRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNw
cAppbmRleCAzYmUxNDhiMGE3YjMzMDE5NDIzY2IyOTAzMDUxNTQ0Y2RhMzMzZDRiLi5iMDMwZTc2
OTY4OTNmZDQyZTA0ZjdlZWFmZjlhMTU0NDQ0YzUxNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgRmxvYXRSZWN0IENDUmVuZGVyU3VyZmFjZTo6
ZHJhd2FibGVDb250ZW50UmVjdCgpIGNvbnN0CiAgICAgRmxvYXRSZWN0IGxvY2FsQ29udGVudFJl
Y3QoLTAuNSAqIG1fY29udGVudFJlY3Qud2lkdGgoKSwgLTAuNSAqIG1fY29udGVudFJlY3QuaGVp
Z2h0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50UmVjdC53aWR0
aCgpLCBtX2NvbnRlbnRSZWN0LmhlaWdodCgpKTsKICAgICBGbG9hdFJlY3QgZHJhd2FibGVDb250
ZW50UmVjdCA9IG1fZHJhd1RyYW5zZm9ybS5tYXBSZWN0KGxvY2FsQ29udGVudFJlY3QpOwotICAg
IGlmIChtX293bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICBpZiAoaGFzUmVwbGljYSgp
KQogICAgICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRlKG1fcmVwbGljYURyYXdUcmFuc2Zv
cm0ubWFwUmVjdChsb2NhbENvbnRlbnRSZWN0KSk7CiAKICAgICByZXR1cm4gZHJhd2FibGVDb250
ZW50UmVjdDsKQEAgLTk5LDQ3ICs5OSwxODQgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OnJlbGVh
c2VDb250ZW50c1RleHR1cmUoKQogICAgIG1fY29udGVudHNUZXh0dXJlLT51bnJlc2VydmUoKTsK
IH0KIAorYm9vbCBDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVDb250ZW50c0JhY2tncm91bmRUZXh0
dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3sKKyAgICBJbnRTaXpl
IHJlcXVpcmVkU2l6ZShtX2NvbnRlbnRSZWN0LnNpemUoKSk7CisgICAgVGV4dHVyZU1hbmFnZXIq
IHRleHR1cmVNYW5hZ2VyID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5h
Z2VyKCk7CisKKyAgICBpZiAoIW1fY29udGVudHNCYWNrZ3JvdW5kVGV4dHVyZSkKKyAgICAgICAg
bV9jb250ZW50c0JhY2tncm91bmRUZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZSh0ZXh0
dXJlTWFuYWdlcik7CisKKyAgICBpZiAobV9jb250ZW50c0JhY2tncm91bmRUZXh0dXJlLT5pc1Jl
c2VydmVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFtX2NvbnRlbnRzQmFj
a2dyb3VuZFRleHR1cmUtPnJlc2VydmUocmVxdWlyZWRTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSkpIHsKKyAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgbV9za2lwc0RyYXcgPSBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBDQ1JlbmRlclN1cmZhY2U6OnJlbGVhc2VDb250ZW50c0JhY2tncm91bmRUZXh0
dXJlKCkKK3sKKyAgICBpZiAobV9za2lwc0RyYXcgfHwgIW1fY29udGVudHNCYWNrZ3JvdW5kVGV4
dHVyZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGVudHNCYWNrZ3JvdW5kVGV4dHVyZS0+
dW5yZXNlcnZlKCk7Cit9CisKK2Jvb2wgQ0NSZW5kZXJTdXJmYWNlOjpwcmVwYXJlUmVwbGljYUJh
Y2tncm91bmRUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3sK
KyAgICBJbnRTaXplIHJlcXVpcmVkU2l6ZShtX2NvbnRlbnRSZWN0LnNpemUoKSk7CisgICAgVGV4
dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFj
ZVRleHR1cmVNYW5hZ2VyKCk7CisKKyAgICBpZiAoIW1fcmVwbGljYUJhY2tncm91bmRUZXh0dXJl
KQorICAgICAgICBtX3JlcGxpY2FCYWNrZ3JvdW5kVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpj
cmVhdGUodGV4dHVyZU1hbmFnZXIpOworCisgICAgaWYgKG1fcmVwbGljYUJhY2tncm91bmRUZXh0
dXJlLT5pc1Jlc2VydmVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFtX3Jl
cGxpY2FCYWNrZ3JvdW5kVGV4dHVyZS0+cmVzZXJ2ZShyZXF1aXJlZFNpemUsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBKSkgeworICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX3NraXBzRHJhdyA9IGZhbHNlOworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6cmVsZWFzZVJlcGxpY2FCYWNrZ3Jv
dW5kVGV4dHVyZSgpCit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICFtX3JlcGxpY2FCYWNrZ3Jv
dW5kVGV4dHVyZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmVwbGljYUJhY2tncm91bmRUZXh0
dXJlLT51bnJlc2VydmUoKTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NSZW5kZXJTdXJm
YWNlOjpjb21wdXRlRGV2aWNlVHJhbnNmb3JtKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJS
ZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNvbnN0
Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyVHJhbnNmb3JtID0gZHJhd1RyYW5z
Zm9ybTsKKyAgICAvLyBBcHBseSBhIHNjYWxpbmcgZmFjdG9yIHRvIHNpemUgdGhlIHF1YWQgZnJv
bSAxeDEgdG8gaXRzIGludGVuZGVkIHNpemUuCisgICAgcmVuZGVyVHJhbnNmb3JtLnNjYWxlM2Qo
bV9jb250ZW50UmVjdC53aWR0aCgpLCBtX2NvbnRlbnRSZWN0LmhlaWdodCgpLCAxKTsKKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VUcmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJp
eChsYXllclJlbmRlcmVyLT53aW5kb3dNYXRyaXgoKSAqIGxheWVyUmVuZGVyZXItPnByb2plY3Rp
b25NYXRyaXgoKSAqIHJlbmRlclRyYW5zZm9ybSkudG8yZFRyYW5zZm9ybSgpOworICAgIHJldHVy
biBkZXZpY2VUcmFuc2Zvcm07Cit9CisKK0ludFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpjb21wdXRl
RGV2aWNlQm91bmRpbmdCb3goTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgY29uc3QKK3sKKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50c0RldmljZVRyYW5zZm9ybSA9IGNvbXB1dGVEZXZp
Y2VUcmFuc2Zvcm0obGF5ZXJSZW5kZXJlciwgZHJhd1RyYW5zZm9ybSk7CisKKyAgICAvLyBDYW4g
b25seSBkcmF3IHN1cmZhY2UgaWYgZGV2aWNlIG1hdHJpeCBpcyBpbnZlcnRpYmxlLgorICAgIGlm
ICghY29udGVudHNEZXZpY2VUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAgICAgIHJldHVy
biBJbnRSZWN0KCk7CisKKyAgICBGbG9hdFF1YWQgZGV2aWNlUXVhZCA9IGNvbnRlbnRzRGV2aWNl
VHJhbnNmb3JtLm1hcFF1YWQobGF5ZXJSZW5kZXJlci0+c2hhcmVkR2VvbWV0cnlRdWFkKCkpOwor
ICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGRldmljZVF1YWQuYm91bmRpbmdCb3goKSk7Cit9
CisKK0ludFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpjb21wdXRlUmVhZGJhY2tEZXZpY2VCb3VuZGlu
Z0JveChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdAoreworICAgIEludFJlY3QgZGV2aWNl
UmVjdCA9IGNvbXB1dGVEZXZpY2VCb3VuZGluZ0JveChsYXllclJlbmRlcmVyLCBkcmF3VHJhbnNm
b3JtKTsKKworICAgIGlmIChtX2JhY2tncm91bmRGaWx0ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIGRldmljZVJlY3Q7CisKKyAgICBpbnQgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0Owor
ICAgIG1fYmFja2dyb3VuZEZpbHRlcnMuZ2V0T3V0c2V0cyh0b3AsIHJpZ2h0LCBib3R0b20sIGxl
ZnQpOworICAgIGRldmljZVJlY3QubW92ZSgtbGVmdCwgLXRvcCk7CisgICAgZGV2aWNlUmVjdC5l
eHBhbmQobGVmdCArIHJpZ2h0LCB0b3AgKyBib3R0b20pOworCisgICAgcmV0dXJuIGRldmljZVJl
Y3Q7Cit9CisKK0ludFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpyZWFkYmFja0RldmljZUNvbnRlbnRS
ZWN0KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikgY29uc3QKK3sKKyAgICBJ
bnRSZWN0IGRldmljZUNvbnRlbnRSZWN0ID0gY29tcHV0ZVJlYWRiYWNrRGV2aWNlQm91bmRpbmdC
b3gobGF5ZXJSZW5kZXJlciwgbV9kcmF3VHJhbnNmb3JtKTsKKyAgICBpZiAoaGFzUmVwbGljYSgp
KQorICAgICAgICBkZXZpY2VDb250ZW50UmVjdC51bml0ZShjb21wdXRlUmVhZGJhY2tEZXZpY2VC
b3VuZGluZ0JveChsYXllclJlbmRlcmVyLCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtKSk7CisgICAg
cmV0dXJuIGRldmljZUNvbnRlbnRSZWN0OworfQorCitzdGF0aWMgdm9pZCBjb3B5VGV4dHVyZVRv
RnJhbWVidWZmZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBpbnQgdGV4
dHVyZUlkLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkcmF3TWF0cml4KQoreworICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6UHJvZ3JhbSogcHJv
Z3JhbSA9IGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CisKKyAgICBHTEMo
bGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLCBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CisgICAgR0xDKGxheWVyUmVu
ZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5iaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKSk7CisgICAgR0xDKGxheWVy
UmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT50ZXhQYXJhbWV0
ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgR0xDKGxh
eWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisKKyAgICBH
TEMobGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLCBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPnVz
ZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisgICAgR0xDKGxheWVyUmVuZGVyZXItPmNv
bnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJh
Z21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOworICAgIGxheWVyUmVuZGVyZXIt
PmRyYXdUZXh0dXJlZFF1YWQoZHJhd01hdHJpeCwgYm91bmRzLndpZHRoKCksIGJvdW5kcy5oZWln
aHQoKSwgMSwgbGF5ZXJSZW5kZXJlci0+c2hhcmVkR2VvbWV0cnlRdWFkKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhM
b2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtMSk7Cit9CisKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3QmFja2dy
b3VuZFRleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBpbnQgZGV2
aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgZGV2aWNlVGV4dHVyZVJlY3Qs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0pIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKCFtX2JhY2tncm91bmRGaWx0ZXJzLmlzRW1wdHkoKSk7CisKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm07CisgICAgZGV2aWNlVG9TdXJm
YWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShtX2NvbnRlbnRSZWN0LndpZHRoKCkgLyAyLjAsIG1fY29u
dGVudFJlY3QuaGVpZ2h0KCkgLyAyLjApOworICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS5z
Y2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSwgMSk7
CisgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtICo9IGRldmljZVRyYW5zZm9ybS5pbnZlcnNl
KCk7CisgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VUZXh0dXJl
UmVjdC53aWR0aCgpIC8gMi4wLCBkZXZpY2VUZXh0dXJlUmVjdC5oZWlnaHQoKSAvIDIuMCk7Cisg
ICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VUZXh0dXJlUmVjdC54
KCksIGRldmljZVRleHR1cmVSZWN0LnkoKSk7CisKKyAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZm
ZXIobGF5ZXJSZW5kZXJlciwgZGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgZGV2aWNlVGV4dHVy
ZVJlY3Quc2l6ZSgpLCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0pOworfQorCit2b2lkIENDUmVu
ZGVyU3VyZmFjZTo6ZHJhd0JhY2tncm91bmQoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJl
bmRlcmVyKQoreworICAgIGlmIChoYXNSZXBsaWNhKCkpCisgICAgICAgIGNvcHlUZXh0dXJlVG9G
cmFtZWJ1ZmZlcihsYXllclJlbmRlcmVyLCBtX3JlcGxpY2FCYWNrZ3JvdW5kVGV4dHVyZS0+dGV4
dHVyZUlkKCksIG1fY29udGVudFJlY3Quc2l6ZSgpLCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtKTsK
KworICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihsYXllclJlbmRlcmVyLCBtX2NvbnRlbnRz
QmFja2dyb3VuZFRleHR1cmUtPnRleHR1cmVJZCgpLCBtX2NvbnRlbnRSZWN0LnNpemUoKSwgbV9k
cmF3VHJhbnNmb3JtKTsKK30KKworaW5saW5lIHN0YXRpYyBpbnQgZ2V0U2tCaXRtYXBUZXh0dXJl
SWQoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCwgaW50IGZhbGxiYWNrKQoreworICAgIGlmICghYml0
bWFwLmdldFRleHR1cmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrOworICAgIEdyVGV4dHVy
ZSogdGV4dHVyZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JUZXh0dXJlKj4oYml0bWFwLmdldFRleHR1
cmUoKSk7CisgICAgcmV0dXJuIHRleHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKK30KKwogdm9p
ZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KQogewogICAgIGlmIChtX3Nr
aXBzRHJhdyB8fCAhbV9jb250ZW50c1RleHR1cmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNr
Qml0bWFwIGZpbHRlckJpdG1hcCA9IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyKTsKLSAgICAv
LyBGSVhNRTogQnkgdXNpbmcgdGhlIHNhbWUgUmVuZGVyU3VyZmFjZSBmb3IgYm90aCB0aGUgY29u
dGVudCBhbmQgaXRzIHJlZmxlY3Rpb24sCi0gICAgLy8gaXQncyBjdXJyZW50bHkgbm90IHBvc3Np
YmxlIHRvIGFwcGx5IGEgc2VwYXJhdGUgbWFzayB0byB0aGUgcmVmbGVjdGlvbiBsYXllcgotICAg
IC8vIG9yIGNvcnJlY3RseSBoYW5kbGUgb3BhY2l0eSBpbiByZWZsZWN0aW9ucyAob3BhY2l0eSBt
dXN0IGJlIGFwcGxpZWQgYWZ0ZXIgZHJhd2luZwotICAgIC8vIGJvdGggdGhlIGxheWVyIGFuZCBp
dHMgcmVmbGVjdGlvbikuIFRoZSBzb2x1dGlvbiBpcyB0byBpbnRyb2R1Y2UgeWV0IGFub3RoZXIg
UmVuZGVyU3VyZmFjZQotICAgIC8vIHRvIGRyYXcgdGhlIGxheWVyIGFuZCBpdHMgcmVmbGVjdGlv
biBpbi4gRm9yIG5vdyB3ZSBvbmx5IGFwcGx5IGEgc2VwYXJhdGUgcmVmbGVjdGlvbgotICAgIC8v
IG1hc2sgaWYgdGhlIGNvbnRlbnRzIGRvbid0IGhhdmUgYSBtYXNrIG9mIHRoZWlyIG93bi4KLSAg
ICBDQ0xheWVySW1wbCogcmVwbGljYU1hc2tMYXllciA9IG1fbWFza0xheWVyOwotICAgIGlmICgh
bV9tYXNrTGF5ZXIgJiYgbV9vd25pbmdMYXllci0+cmVwbGljYUxheWVyKCkpCi0gICAgICAgIHJl
cGxpY2FNYXNrTGF5ZXIgPSBtX293bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVy
KCk7CisgICAgc2V0U2Npc3NvclJlY3QobGF5ZXJSZW5kZXJlciwgc3VyZmFjZURhbWFnZVJlY3Qp
OwogCi0gICAgaWYgKG1fb3duaW5nTGF5ZXItPnBhcmVudCgpICYmIG1fb3duaW5nTGF5ZXItPnBh
cmVudCgpLT51c2VzTGF5ZXJDbGlwcGluZygpICYmIGxheWVyUmVuZGVyZXItPmNhcGFiaWxpdGll
cygpLnVzaW5nUGFydGlhbFN3YXApIHsKLSAgICAgICAgRmxvYXRSZWN0IGNsaXBBbmREYW1hZ2VS
ZWN0ID0gbV9jbGlwUmVjdDsKLSAgICAgICAgY2xpcEFuZERhbWFnZVJlY3QuaW50ZXJzZWN0KHN1
cmZhY2VEYW1hZ2VSZWN0KTsKLSAgICAgICAgbGF5ZXJSZW5kZXJlci0+c2V0U2Npc3NvclRvUmVj
dChlbmNsb3NpbmdJbnRSZWN0KGNsaXBBbmREYW1hZ2VSZWN0KSk7Ci0gICAgfSBlbHNlIGlmIChs
YXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKQotICAgICAgICBs
YXllclJlbmRlcmVyLT5zZXRTY2lzc29yVG9SZWN0KGVuY2xvc2luZ0ludFJlY3Qoc3VyZmFjZURh
bWFnZVJlY3QpKTsKLSAgICBlbHNlIGlmIChtX293bmluZ0xheWVyLT5wYXJlbnQoKSAmJiBtX293
bmluZ0xheWVyLT5wYXJlbnQoKS0+dXNlc0xheWVyQ2xpcHBpbmcoKSkKLSAgICAgICAgbGF5ZXJS
ZW5kZXJlci0+c2V0U2Npc3NvclRvUmVjdChtX2NsaXBSZWN0KTsKLSAgICBlbHNlCi0gICAgICAg
IEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+
ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7CisgICAgLy8gQXBwbHkg
ZmlsdGVycyB0byB0aGUgY29udGVudHMgdGV4dHVyZS4KKyAgICBTa0JpdG1hcCBmaWx0ZXJCaXRt
YXAgPSBhcHBseUZpbHRlcnMobGF5ZXJSZW5kZXJlciwgbV9maWx0ZXJzLCBtX2NvbnRlbnRzVGV4
dHVyZS5nZXQoKSk7CiAKICAgICAvLyBSZWZsZWN0aW9uIGRyYXdzIGJlZm9yZSB0aGUgbGF5ZXIu
Ci0gICAgaWYgKG1fb3duaW5nTGF5ZXItPnJlcGxpY2FMYXllcigpKQotICAgICAgICBkcmF3TGF5
ZXIobGF5ZXJSZW5kZXJlciwgcmVwbGljYU1hc2tMYXllciwgbV9yZXBsaWNhRHJhd1RyYW5zZm9y
bSwgZmlsdGVyQml0bWFwKTsKKyAgICBpZiAoaGFzUmVwbGljYSgpKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBCeSB1c2luZyB0aGUgc2FtZSBSZW5kZXJTdXJmYWNlIGZvciBib3RoIHRoZSBjb250ZW50
IGFuZCBpdHMgcmVmbGVjdGlvbiwKKyAgICAgICAgLy8gaXQncyBjdXJyZW50bHkgbm90IHBvc3Np
YmxlIHRvIGFwcGx5IGEgc2VwYXJhdGUgbWFzayB0byB0aGUgcmVmbGVjdGlvbiBsYXllcgorICAg
ICAgICAvLyBvciBjb3JyZWN0bHkgaGFuZGxlIG9wYWNpdHkgaW4gcmVmbGVjdGlvbnMgKG9wYWNp
dHkgbXVzdCBiZSBhcHBsaWVkIGFmdGVyIGRyYXdpbmcKKyAgICAgICAgLy8gYm90aCB0aGUgbGF5
ZXIgYW5kIGl0cyByZWZsZWN0aW9uKS4gVGhlIHNvbHV0aW9uIGlzIHRvIGludHJvZHVjZSB5ZXQg
YW5vdGhlciBSZW5kZXJTdXJmYWNlCisgICAgICAgIC8vIHRvIGRyYXcgdGhlIGxheWVyIGFuZCBp
dHMgcmVmbGVjdGlvbiBpbi4gRm9yIG5vdyB3ZSBvbmx5IGFwcGx5IGEgc2VwYXJhdGUgcmVmbGVj
dGlvbgorICAgICAgICAvLyBtYXNrIGlmIHRoZSBjb250ZW50cyBkb24ndCBoYXZlIGEgbWFzayBv
ZiB0aGVpciBvd24uCisgICAgICAgIENDTGF5ZXJJbXBsKiByZXBsaWNhTWFza0xheWVyID0gbV9t
YXNrTGF5ZXI7CisgICAgICAgIGlmICghbV9tYXNrTGF5ZXIpCisgICAgICAgICAgICByZXBsaWNh
TWFza0xheWVyID0gbV9vd25pbmdMYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpOwor
CisgICAgICAgIGludCBjb250ZW50c1RleHR1cmVJZCA9IGdldFNrQml0bWFwVGV4dHVyZUlkKGZp
bHRlckJpdG1hcCwgbV9jb250ZW50c1RleHR1cmUtPnRleHR1cmVJZCgpKTsKKyAgICAgICAgZHJh
d0xheWVyKGxheWVyUmVuZGVyZXIsIHJlcGxpY2FNYXNrTGF5ZXIsIG1fcmVwbGljYURyYXdUcmFu
c2Zvcm0sIGNvbnRlbnRzVGV4dHVyZUlkKTsKKyAgICB9CiAKLSAgICBkcmF3TGF5ZXIobGF5ZXJS
ZW5kZXJlciwgbV9tYXNrTGF5ZXIsIG1fZHJhd1RyYW5zZm9ybSwgZmlsdGVyQml0bWFwKTsKKyAg
ICBpbnQgY29udGVudHNUZXh0dXJlSWQgPSBnZXRTa0JpdG1hcFRleHR1cmVJZChmaWx0ZXJCaXRt
YXAsIG1fY29udGVudHNUZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgZHJhd0xheWVyKGxheWVy
UmVuZGVyZXIsIG1fbWFza0xheWVyLCBtX2RyYXdUcmFuc2Zvcm0sIGNvbnRlbnRzVGV4dHVyZUlk
KTsKIH0KIAotdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdMYXllcihMYXllclJlbmRlcmVyQ2hy
b21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBTa0JpdG1hcCYgZmlsdGVyQml0
bWFwKQordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdMYXllcihMYXllclJlbmRlcmVyQ2hyb21p
dW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBpbnQgY29udGVudHNUZXh0dXJlSWQpCiB7Ci0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyTWF0cml4ID0gZHJhd1RyYW5zZm9ybTsKLSAg
ICAvLyBBcHBseSBhIHNjYWxpbmcgZmFjdG9yIHRvIHNpemUgdGhlIHF1YWQgZnJvbSAxeDEgdG8g
aXRzIGludGVuZGVkIHNpemUuCi0gICAgcmVuZGVyTWF0cml4LnNjYWxlM2QobV9jb250ZW50UmVj
dC53aWR0aCgpLCBtX2NvbnRlbnRSZWN0LmhlaWdodCgpLCAxKTsKLQotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGRldmljZU1hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KGxheWVyUmVuZGVy
ZXItPndpbmRvd01hdHJpeCgpICogbGF5ZXJSZW5kZXJlci0+cHJvamVjdGlvbk1hdHJpeCgpICog
cmVuZGVyTWF0cml4KS50bzJkVHJhbnNmb3JtKCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
ZGV2aWNlTWF0cml4ID0gY29tcHV0ZURldmljZVRyYW5zZm9ybShsYXllclJlbmRlcmVyLCBkcmF3
VHJhbnNmb3JtKTsKIAogICAgIC8vIENhbiBvbmx5IGRyYXcgc3VyZmFjZSBpZiBkZXZpY2UgbWF0
cml4IGlzIGludmVydGlibGUuCiAgICAgaWYgKCFkZXZpY2VNYXRyaXguaXNJbnZlcnRpYmxlKCkp
CkBAIC0xNjIsMjcgKzI5OSwyOSBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd0xheWVyKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgQ0NMYXllckltcAogICAgICAgICBp
ZiAoIW1hc2tMYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgdXNlTWFzayA9
IHRydWU7CiAKKyAgICAvLyBGSVhNRTogcGFzcyBpbiBiYWNrZ3JvdW5kVGV4dHVyZUlkIGFuZCBi
bGVuZCB0aGUgYmFja2dyb3VuZCBpbiB3aXRoIHRoaXMgZHJhdyBpbnN0ZWFkIG9mIGhhdmluZyBh
IHNlcGFyYXRlIGRyYXdCYWNrZ3JvdW5kKCkgcGFzcy4KKwogICAgIGlmICh1c2VNYXNrKSB7CiAg
ICAgICAgIGlmICh1c2VBQSkgewogICAgICAgICAgICAgY29uc3QgTWFza1Byb2dyYW1BQSogcHJv
Z3JhbSA9IGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKCk7Ci0gICAg
ICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zv
cm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCBwcm9ncmFt
LT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgcHJvZ3JhbS0+dmVydGV4
U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VM
b2NhdGlvbigpLCBmaWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJS
ZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJl
Y3QsIGxheWVyUXVhZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkubWFza1NhbXBsZXJMb2NhdGlvbigpLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIo
KS5wb2ludExvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9u
KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29uc3QgTWFza1Byb2dyYW0qIHBy
b2dyYW0gPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0oKTsKLSAgICAg
ICAgICAgIGRyYXdTdXJmYWNlKGxheWVyUmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5zZm9y
bSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIHByb2dyYW0sIHByb2dyYW0t
PmZyYWdtZW50U2hhZGVyKCkubWFza1NhbXBsZXJMb2NhdGlvbigpLCAtMSwgLTEsIGZpbHRlckJp
dG1hcCk7CisgICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIs
IGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBjb250
ZW50c1RleHR1cmVJZCwgcHJvZ3JhbSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5tYXNrU2Ft
cGxlckxvY2F0aW9uKCksIC0xLCAtMSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAodXNlQUEpIHsKICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1BQSogcHJvZ3JhbSA9IGxh
eWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VQcm9ncmFtQUEoKTsKLSAgICAgICAgICAgIGRyYXdT
dXJmYWNlKGxheWVyUmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5zZm9ybSwgZGV2aWNlTWF0
cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIHByb2dyYW0sIC0xLCBwcm9ncmFtLT52ZXJ0ZXhT
aGFkZXIoKS5wb2ludExvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxv
Y2F0aW9uKCksIGZpbHRlckJpdG1hcCk7CisgICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJl
bmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVj
dCwgbGF5ZXJRdWFkLCBjb250ZW50c1RleHR1cmVJZCwgcHJvZ3JhbSwgLTEsIHByb2dyYW0tPnZl
cnRleFNoYWRlcigpLnBvaW50TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5l
ZGdlTG9jYXRpb24oKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBQcm9n
cmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVByb2dyYW0oKTsKLSAg
ICAgICAgICAgIGRyYXdTdXJmYWNlKGxheWVyUmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5z
Zm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIHByb2dyYW0sIC0xLCAt
MSwgLTEsIGZpbHRlckJpdG1hcCk7CisgICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRl
cmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwg
bGF5ZXJRdWFkLCBjb250ZW50c1RleHR1cmVJZCwgcHJvZ3JhbSwgLTEsIC0xLCAtMSk7CiAgICAg
ICAgIH0KICAgICB9CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBUPgotdm9pZCBDQ1JlbmRlclN1cmZh
Y2U6OmRyYXdTdXJmYWNlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgQ0NM
YXllckltcGwqIG1hc2tMYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFu
c2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0sIGNvbnN0
IENDTGF5ZXJRdWFkJiBkZXZpY2VSZWN0LCBjb25zdCBDQ0xheWVyUXVhZCYgbGF5ZXJRdWFkLCBj
b25zdCBUKiBwcm9ncmFtLCBpbnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRl
clF1YWRMb2NhdGlvbiwgaW50IHNoYWRlckVkZ2VMb2NhdGlvbiwgY29uc3QgU2tCaXRtYXAmIGZp
bHRlckJpdG1hcCkKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZShMYXllclJlbmRl
cmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtLCBjb25zdCBDQ0xheWVyUXVhZCYgZGV2aWNlUmVjdCwg
Y29uc3QgQ0NMYXllclF1YWQmIGxheWVyUXVhZCwgaW50IGNvbnRlbnRzVGV4dHVyZUlkLCBjb25z
dCBUKiBwcm9ncmFtLCBpbnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRlclF1
YWRMb2NhdGlvbiwgaW50IHNoYWRlckVkZ2VMb2NhdGlvbikKIHsKICAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dDNEID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogCkBAIC0xOTEsMTEg
KzMzMCw3IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZShMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJCiAKICAgICBHTEMoY29udGV4dDNELCBj
b250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAg
ICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRT
aGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwotICAgIGlmIChmaWx0ZXJCaXRtYXAuZ2V0
VGV4dHVyZSgpKSB7Ci0gICAgICAgIEdyVGV4dHVyZSogdGV4dHVyZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8R3JUZXh0dXJlKj4oZmlsdGVyQml0bWFwLmdldFRleHR1cmUoKSk7Ci0gICAgICAgIGNvbnRl
eHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUt
PmdldFRleHR1cmVIYW5kbGUoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY29udGVudHNUZXh0
dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0M0QsIGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VU
ZXh0dXJlQWxsb2NhdG9yKCkpOworICAgIGNvbnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIGNvbnRlbnRzVGV4dHVyZUlkKTsKIAogICAgIGlmIChzaGFk
ZXJNYXNrU2FtcGxlckxvY2F0aW9uICE9IC0xKSB7CiAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNv
bnRleHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsKQEAg
LTIxOCwxNSArMzUzLDI4IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZShMYXll
clJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2Nh
dGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmFscGhhTG9jYXRpb24oKSwgc2hhZGVy
UXVhZExvY2F0aW9uKTsKIH0KIAotU2tCaXRtYXAgQ0NSZW5kZXJTdXJmYWNlOjphcHBseUZpbHRl
cnMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQordm9pZCBDQ1JlbmRlclN1
cmZhY2U6OnNldFNjaXNzb3JSZWN0KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJl
ciwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCkgY29uc3QKIHsKLSAgICAvLyBE
b24ndCB1c2UgdGhlIHV0aWxpdHkgY29udGV4dCBpZiB3ZSBoYXZlIGEgY29tcG9zaXRvciB0aHJl
YWQsIHNpbmNlCi0gICAgLy8gaXQgY2FuIHJhY2Ugd2l0aCBjYW52YXMncyB1c2UuCi0gICAgaWYg
KCFtX2NvbnRlbnRzVGV4dHVyZSB8fCAhbV9maWx0ZXJzLnNpemUoKSB8fCBDQ1Byb3h5OjpoYXNJ
bXBsVGhyZWFkKCkpCisgICAgaWYgKG1fb3duaW5nTGF5ZXItPnBhcmVudCgpICYmIG1fb3duaW5n
TGF5ZXItPnBhcmVudCgpLT51c2VzTGF5ZXJDbGlwcGluZygpICYmIGxheWVyUmVuZGVyZXItPmNh
cGFiaWxpdGllcygpLnVzaW5nUGFydGlhbFN3YXApIHsKKyAgICAgICAgRmxvYXRSZWN0IGNsaXBB
bmREYW1hZ2VSZWN0ID0gbV9jbGlwUmVjdDsKKyAgICAgICAgY2xpcEFuZERhbWFnZVJlY3QuaW50
ZXJzZWN0KHN1cmZhY2VEYW1hZ2VSZWN0KTsKKyAgICAgICAgbGF5ZXJSZW5kZXJlci0+c2V0U2Np
c3NvclRvUmVjdChlbmNsb3NpbmdJbnRSZWN0KGNsaXBBbmREYW1hZ2VSZWN0KSk7CisgICAgfSBl
bHNlIGlmIChsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKQor
ICAgICAgICBsYXllclJlbmRlcmVyLT5zZXRTY2lzc29yVG9SZWN0KGVuY2xvc2luZ0ludFJlY3Qo
c3VyZmFjZURhbWFnZVJlY3QpKTsKKyAgICBlbHNlIGlmIChtX293bmluZ0xheWVyLT5wYXJlbnQo
KSAmJiBtX293bmluZ0xheWVyLT5wYXJlbnQoKS0+dXNlc0xheWVyQ2xpcHBpbmcoKSkKKyAgICAg
ICAgbGF5ZXJSZW5kZXJlci0+c2V0U2Npc3NvclRvUmVjdChtX2NsaXBSZWN0KTsKKyAgICBlbHNl
CisgICAgICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNv
bnRleHQoKS0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKSk7Cit9CisK
K1NrQml0bWFwIENDUmVuZGVyU3VyZmFjZTo6YXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJv
bWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgTWFu
YWdlZFRleHR1cmUqIHNvdXJjZVRleHR1cmUpCit7CisgICAgLy8gRklYTUU6IERvbid0IHVzZSB0
aGUgdXRpbGl0eSBjb250ZXh0IGlmIHdlIGhhdmUgYSBjb21wb3NpdG9yIHRocmVhZCwgc2luY2Ug
aXQgY2FuIHJhY2Ugd2l0aCBjYW52YXMncyB1c2UuCisgICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgp
IHx8IENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIFNrQml0bWFwKCk7
CiAKICAgICBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPmZsdXNoKCk7Ci0gICAgcmV0dXJuIEND
UmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KG1fZmlsdGVycywgbV9jb250ZW50c1RleHR1cmUt
PnRleHR1cmVJZCgpLCBtX2NvbnRlbnRSZWN0LnNpemUoKSwgU2hhcmVkR3JhcGhpY3NDb250ZXh0
M0Q6OmdldCgpLmdldCgpKTsKKyAgICByZXR1cm4gQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBw
bHkoZmlsdGVycywgc291cmNlVGV4dHVyZS0+dGV4dHVyZUlkKCksIHNvdXJjZVRleHR1cmUtPnNp
emUoKSwgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldCgpLmdldCgpKTsKIH0KIAogU3RyaW5n
IENDUmVuZGVyU3VyZmFjZTo6bmFtZSgpIGNvbnN0CkBAIC0yNjAsNiArNDA4LDExIEBAIHZvaWQg
Q0NSZW5kZXJTdXJmYWNlOjpkdW1wU3VyZmFjZShUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkg
Y29uc3QKICAgICB0cyA8PCAic2l6ZSgiIDw8IG1fZGFtYWdlVHJhY2tlci0+Y3VycmVudERhbWFn
ZVJlY3QoKS53aWR0aCgpIDw8ICIsIiA8PCBtX2RhbWFnZVRyYWNrZXItPmN1cnJlbnREYW1hZ2VS
ZWN0KCkuaGVpZ2h0KCkgPDwgIilcbiI7CiB9CiAKK2Jvb2wgQ0NSZW5kZXJTdXJmYWNlOjpoYXNS
ZXBsaWNhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9vd25pbmdMYXllci0+cmVwbGljYUxheWVy
KCk7Cit9CisKIGludCBDQ1JlbmRlclN1cmZhY2U6Om93bmluZ0xheWVySWQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX293bmluZ0xheWVyID8gbV9vd25pbmdMYXllci0+aWQoKSA6IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4IGI1Y2QzYTgzNDQwYTdhYzI5NWU4MDE1YmYxZGU2
N2JlMTg3N2I1ODcuLjdkN2ZhZjkzODg3ZTBlMzg0ZDNkMmNjZDA3OTM5ZjhkNDQ5NmRlNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC01Nyw3ICs1NywyMCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBwcmVwYXJlQ29udGVudHNUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwog
ICAgIHZvaWQgcmVsZWFzZUNvbnRlbnRzVGV4dHVyZSgpOwogCisgICAgYm9vbCBwcmVwYXJlQ29u
dGVudHNCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKKyAgICB2b2lk
IHJlbGVhc2VDb250ZW50c0JhY2tncm91bmRUZXh0dXJlKCk7CisKKyAgICBib29sIHByZXBhcmVS
ZXBsaWNhQmFja2dyb3VuZFRleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisgICAgdm9p
ZCByZWxlYXNlUmVwbGljYUJhY2tncm91bmRUZXh0dXJlKCk7CisKICAgICB2b2lkIGRyYXcoTGF5
ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7
CisgICAgLy8gVGFrZXMgYSB0ZXh0dXJlIHdpdGggcGl4ZWxzIGluIGRldmljZSBjb29yZGluYXRl
cywgYW5kIGEgdHJhbnNmb3JtIGZyb20gY29udGVudCBzcGFjZSB0byB0aGUgZGV2aWNlLiBEcmF3
cyBjb250ZW50cyBvZiB0aGUgZGV2aWNlIGJhY2tncm91bmQKKyAgICAvLyBiYWNrIGludG8gY29u
dGVudCBzcGFjZSBmb3IgdGhlIHN1cmZhY2UuIFRoZSBzdXJmYWNlJ3MgY29udGVudHNCYWNrZ3Jv
dW5kVGV4dHVyZSgpIG9yIHJlcGxpY2FCYWNrZ3JvdW5kVGV4dHVyZSgpIG11c3QgYmUgdGhlIGFj
dGl2ZSBkcmF3aW5nIHRhcmdldC4KKyAgICB2b2lkIGRyYXdCYWNrZ3JvdW5kVGV4dHVyZShMYXll
clJlbmRlcmVyQ2hyb21pdW0qLCBpbnQgZGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgY29uc3Qg
SW50UmVjdCYgZGV2aWNlVGV4dHVyZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBk
ZXZpY2VUcmFuc2Zvcm0pIGNvbnN0OworICAgIC8vIERyYXcgdGhlIGNvbnRlbnRzIGFuZCByZXBs
aWNhIGJhY2tncm91bmQgdGV4dHVyZXMgYmFjayBpbnRvIHRoZSB0YXJnZXQgc3VyZmFjZS4KKyAg
ICB2b2lkIGRyYXdCYWNrZ3JvdW5kKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOworCisgICAgdm9p
ZCBzZXRTY2lzc29yUmVjdChMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBjb25zdCBGbG9hdFJlY3Qm
IHN1cmZhY2VEYW1hZ2VSZWN0KSBjb25zdDsKIAogICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7CiAg
ICAgdm9pZCBkdW1wU3VyZmFjZShUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Q7CkBAIC02
Nyw2ICs4MCwxMyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgcmVjdCB0aGF0IGVuY2xv
c2VzIHRoZSBSZW5kZXJTdXJmYWNlIGluY2x1ZGluZyBhbnkgcmVmbGVjdGlvbi4KICAgICBGbG9h
dFJlY3QgZHJhd2FibGVDb250ZW50UmVjdCgpIGNvbnN0OwogCisgICAgLy8gUmV0dXJucyB0aGUg
cmVjdCB0aGF0IGVuY2xvc2VzIHRoZSBSZW5kZXJTdXJmYWNlIGluY2x1ZGluZyBhbnkgcmVmbGVj
dGlvbiBpbiB0aGUgdGFyZ2V0IGRldmljZSBjb29yZGluYXRlIHNwYWNlLCBhbmQgaW5jbHVkaW5n
IGFueSBwaXhlbHMKKyAgICAvLyBuZWVkZWQgaW4gb3JkZXIgdG8gZHJhdyBjb3JyZWN0bHkuCisg
ICAgSW50UmVjdCByZWFkYmFja0RldmljZUNvbnRlbnRSZWN0KExheWVyUmVuZGVyZXJDaHJvbWl1
bSopIGNvbnN0OworCisgICAgLy8gR2l2ZXMgdGhlIHRyYW5zZm9ybSBmcm9tIHRoZSBzdXJmYWNl
IGNvbnRlbnQgc3BhY2UsIHdpdGggb3JpZ2luIGluIHRoZSB0b3AgbGVmdCwgdG8gdGhlIGN1cnJl
bnQgdGFyZ2V0IGRldmljZSBzcGFjZSwgd2l0aCBvcmlnaW4gaW4gdGhlIHRvcCBsZWZ0LgorICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbXB1dGVEZXZpY2VUcmFuc2Zvcm0oTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNv
bnN0OworCiAgICAgZmxvYXQgZHJhd09wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2RyYXdPcGFj
aXR5OyB9CiAgICAgdm9pZCBzZXREcmF3T3BhY2l0eShmbG9hdCBvcGFjaXR5KSB7IG1fZHJhd09w
YWNpdHkgPSBvcGFjaXR5OyB9CiAKQEAgLTc1LDcgKzk1LDEwIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7IG1fZmlsdGVy
cyA9IGZpbHRlcnM7IH0KICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9maWx0ZXJzOyB9Ci0gICAgU2tCaXRtYXAgYXBwbHlGaWx0ZXJzKExheWVy
UmVuZGVyZXJDaHJvbWl1bSopOworICAgIFNrQml0bWFwIGFwcGx5RmlsdGVycyhMYXllclJlbmRl
cmVyQ2hyb21pdW0qLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgTWFuYWdlZFRleHR1cmUqIHNv
dXJjZVRleHR1cmUpOworCisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7IG1fYmFja2dyb3VuZEZpbHRlcnMgPSBmaWx0ZXJzOyB9
CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tncm91bmRGaWx0ZXJzOyB9CiAKICAgICB2b2lkIHNldE5lYXJlc3RBbmNl
c3RvclRoYXRNb3Zlc1BpeGVscyhDQ1JlbmRlclN1cmZhY2UqIHN1cmZhY2UpIHsgbV9uZWFyZXN0
QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMgPSBzdXJmYWNlOyB9CiAgICAgY29uc3QgQ0NSZW5kZXJT
dXJmYWNlKiBuZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMoKSBjb25zdCB7IHJldHVybiBt
X25lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVsczsgfQpAQCAtMTA2LDYgKzEyOSwxMCBAQCBw
dWJsaWM6CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFkZXJRdWFkLCBGcmFn
bWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQT4gTWFza1Byb2dyYW1BQTsKIAogICAgIE1hbmFn
ZWRUZXh0dXJlKiBjb250ZW50c1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzVGV4
dHVyZS5nZXQoKTsgfQorICAgIE1hbmFnZWRUZXh0dXJlKiBjb250ZW50c0JhY2tncm91bmRUZXh0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0JhY2tncm91bmRUZXh0dXJlLmdldCgpOyB9
CisgICAgTWFuYWdlZFRleHR1cmUqIHJlcGxpY2FCYWNrZ3JvdW5kVGV4dHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVwbGljYUJhY2tncm91bmRUZXh0dXJlLmdldCgpOyB9CisKKyAgICBib29sIGhh
c1JlcGxpY2EoKSBjb25zdDsKIAogICAgIGludCBvd25pbmdMYXllcklkKCkgY29uc3Q7CiAKQEAg
LTExOCw5ICsxNDUsMTIgQEAgcHVibGljOgogICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZvaWQg
ZHJhd0xheWVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIENDTGF5ZXJJbXBsKiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBTa0JpdG1hcCYgZmlsdGVyQml0bWFwKTsKKyAgICBJ
bnRSZWN0IGNvbXB1dGVEZXZpY2VCb3VuZGluZ0JveChMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgY29uc3Q7CisgICAgSW50
UmVjdCBjb21wdXRlUmVhZGJhY2tEZXZpY2VCb3VuZGluZ0JveChMYXllclJlbmRlcmVyQ2hyb21p
dW0qLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgY29uc3Q7CisK
KyAgICB2b2lkIGRyYXdMYXllcihMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBDQ0xheWVySW1wbCos
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgaW50IGNvbnRlbnRzVGV4dHVyZUlkKTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICB2b2lkIGRyYXdTdXJmYWNlKExheWVyUmVuZGVyZXJD
aHJvbWl1bSosIENDTGF5ZXJJbXBsKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdU
cmFuc2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0sIGNv
bnN0IENDTGF5ZXJRdWFkJiBkZXZpY2VSZWN0LCBjb25zdCBDQ0xheWVyUXVhZCYsIGNvbnN0IFQq
IHByb2dyYW0sIGludCBzaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uLCBpbnQgc2hhZGVyUXVhZExv
Y2F0aW9uLCBpbnQgc2hhZGVyRWRnZUxvY2F0aW9uLCBjb25zdCBTa0JpdG1hcCYgZmlsdGVyQml0
bWFwKTsKKyAgICB2b2lkIGRyYXdTdXJmYWNlKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIENDTGF5
ZXJJbXBsKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0sIGNvbnN0IENDTGF5ZXJRdWFk
JiBkZXZpY2VSZWN0LCBjb25zdCBDQ0xheWVyUXVhZCYsIGludCBjb250ZW50c1RleHR1cmVJZCwg
Y29uc3QgVCogcHJvZ3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFk
ZXJRdWFkTG9jYXRpb24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24pOwogCiAgICAgQ0NMYXllcklt
cGwqIG1fb3duaW5nTGF5ZXI7CiAgICAgQ0NMYXllckltcGwqIG1fbWFza0xheWVyOwpAQCAtMTMw
LDExICsxNjAsMTUgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3VyZmFjZVByb3BlcnR5Q2hhbmdl
ZDsKIAogICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV9jb250ZW50c1RleHR1cmU7CisgICAg
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX2NvbnRlbnRzQmFja2dyb3VuZFRleHR1cmU7CisgICAg
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3JlcGxpY2FCYWNrZ3JvdW5kVGV4dHVyZTsKKwogICAg
IGZsb2F0IG1fZHJhd09wYWNpdHk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9kcmF3VHJh
bnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcmVwbGljYURyYXdUcmFuc2Zvcm07
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9vcmlnaW5UcmFuc2Zvcm07CiAgICAgRmlsdGVy
T3BlcmF0aW9ucyBtX2ZpbHRlcnM7CisgICAgRmlsdGVyT3BlcmF0aW9ucyBtX2JhY2tncm91bmRG
aWx0ZXJzOwogICAgIEludFJlY3QgbV9jbGlwUmVjdDsKICAgICBWZWN0b3I8Q0NMYXllckltcGwq
PiBtX2xheWVyTGlzdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVySW1wbFRlc3QuY3BwCmluZGV4IDhhOWYzNWRjOGE3Yjg5YzBjOTRiZDc1MzdjNjg0NjRmYTc4
YTZiYjguLjIyOTk3NDE0ZTA5MWUzZmUwMTI4ZWRmNGJjMWVkZWVjMTEzZTJiOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTEx
Myw2ICsxMTMsNyBAQCBURVNUKENDTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJl
VHJhY2tlZFByb3Blcmx5KQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5H
RUQocm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllf
T05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSkp
OwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFj
a2dyb3VuZENvdmVyc1ZpZXdwb3J0KHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfT05M
WV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldEJhY2tncm91bmRGaWx0ZXJzKGFyYml0cmFyeUZpbHRl
cnMpKTsKIAogICAgIC8vIFNwZWNpYWwgY2FzZTogY2hlY2sgdGhhdCBzdWJsYXllciB0cmFuc2Zv
cm0gY2hhbmdlcyBhbGwgbGF5ZXIncyBkZXNjZW5kYW50cywgYnV0IG5vdCB0aGUgbGF5ZXIgaXRz
ZWxmLgogICAgIHJvb3QtPnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136337</attachid>
            <date>2012-04-09 16:40:34 -0700</date>
            <delta_ts>2012-04-09 16:46:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80046-20120409194033.patch</filename>
            <type>text/plain</type>
            <size>61279</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGNlZDg3NzIxZDlmZmFl
NTRlNDg1OTlhNjRlZjc5Nzk5YmM1M2Q1OS4uYWEwNWFmODMzZjI2MTFjYWQ1YTkwYmIwYzZhYjBk
MDY3MjliNGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA0LTA5ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQmFj
a2dyb3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhY2tncm91bmQgZmlsdGVycyB0byBM
YXllckNocm9taXVtL0NDTGF5ZXJJbXBsLiBUaGVzZSBmaWx0ZXJzIGFyZQorICAgICAgICBhcHBs
aWVkIHRvIGFueSBwaXhlbHMgaW4gdGhlIGNvbnRlbnRzIGJlaGluZCB0aGUgbGF5ZXIgYW5kIHNl
ZW4gdGhyb3VnaAorICAgICAgICBpdC4KKworICAgICAgICBUaGlzIGlzIGRvbmUgYnkgYWRkaW5n
IGEgYmFja2dyb3VuZFRleHR1cmUoKSB0byB0aGUgcmVuZGVyIHN1cmZhY2UsIHdoaWNoCisgICAg
ICAgIGhvbGRzIHRoZSByZWFkLWJhY2sgY29udGVudHMgb2YgdGhlIHRhcmdldCBmcmFtZWJ1ZmZl
ciwgYmFja2dyb3VuZCBmaWx0ZXIKKyAgICAgICAgYXBwbGllZCwgaW4gdGhlIHN1cmZhY2UncyBv
d24gY29vcmRpbmF0ZSBzcGFjZS4gVGhlbiB0aGlzIGlzIGRyYXduIGJhY2sKKyAgICAgICAgaW50
byB0aGUgZnJhbWUgYnVmZmVyIGJlZm9yZSB0aGUgY29udGVudHMgb2YgdGhlIHN1cmZhY2UgaXRz
ZWxmIGlzIGRyYXduLgorCisgICAgICAgIFRlc3RzOiBjb21wb3NpdGluZy9maWx0ZXJzL2JhY2tn
cm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy5odG1sCisgICAgICAgICAgICAgICBjb21wb3NpdGlu
Zy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXIuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6
YmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1cmZh
Y2VRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJh
bWVidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6aXNDdXJyZW50UmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1c2VNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
OgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpiYWNrZ3JvdW5kRmlsdGVycyk6Cisg
ICAgICAgIChSZW5kZXJTdXJmYWNlQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAg
ICAoQ0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmJhY2tncm91
bmRGaWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VidHJlZVNob3VsZFJl
bmRlclRvU2VwYXJhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZW5kZXJTdXJmYWNlOjpkcmF3YWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUJhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpyZWxlYXNlQmFja2dy
b3VuZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpjb21wdXRl
RGV2aWNlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y29t
cHV0ZURldmljZUJvdW5kaW5nQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFj
ZTo6Y29tcHV0ZVJlYWRiYWNrRGV2aWNlQm91bmRpbmdCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZW5kZXJTdXJmYWNlOjpyZWFkYmFja0RldmljZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclN1cmZhY2U6OmNvcHlEZXZpY2VUb0JhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OmdldFNrQml0bWFwVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVy
U3VyZmFjZTo6ZHJhd0NvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFj
ZTo6ZHJhd1JlcGxpY2EpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVycyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmg6Cisg
ICAgICAgIChDQ1JlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJm
YWNlOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1
cmZhY2U6OmJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6YmFja2dyb3VuZFRleHR1cmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QmFja2dyb3VuZEJsdXJPbk5vZGUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAg
ICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAy
MDEyLTA0LTA5ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQ3Jhc2ggZHVlIHRvIGZsb2F0cyBub3QgY2xlYXJlZCBiZWZvcmUgc3RhcnRpbmcgU1ZHIDx0
ZXh0PiBsYXlvdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUzZDgzOThhY2E3ODEx
OTIwMmQ4ZjJmNTRjZGQwYWU4OTExM2ZiMjUuLjI2NWE4ZjBkMWY2NzMwZWMxY2I0OTQ0MTkwN2I5
NTU3NjFkYzY5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTItMDQtMDkgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBCYWNrZ3JvdW5kIGZpbHRlcnMgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NM
YXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTA0LTA5
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTEzNTYxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRl
eCAyYWQwOWI5NDhhNDNiYjNjZTNhNzE5NTFmYzdiNWQ5ZTEzMDBlYTU1Li5lNDI1ODRjNmU4YzA5
NTFmOTVjNDQzZGZjNjBjZTE4MDUyYmIzOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAt
MzIyLDYgKzMyMiwxNCBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldEZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAgICAgICAgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVk
c0ZpbHRlckNvbnRleHQodHJ1ZSk7CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dy
b3VuZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMpCit7
CisgICAgaWYgKG1fYmFja2dyb3VuZEZpbHRlcnMgPT0gYmFja2dyb3VuZEZpbHRlcnMpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2JhY2tncm91bmRGaWx0ZXJzID0gYmFja2dyb3VuZEZpbHRlcnM7
CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwogdm9pZCBMYXllckNocm9taXVtOjpzZXRPcGFj
aXR5KGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgaWYgKG1fb3BhY2l0eSA9PSBvcGFjaXR5KQpAQCAt
NDc0LDYgKzQ4Miw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCogbGF5ZXIpCiAgICAgICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMoKSk7CiAK
ICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKCkpOworICAgIGxheWVyLT5zZXRCYWNrZ3Jv
dW5kRmlsdGVycyhiYWNrZ3JvdW5kRmlsdGVycygpKTsKICAgICBsYXllci0+c2V0SXNOb25Db21w
b3NpdGVkQ29udGVudChtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQpOwogICAgIGxheWVyLT5zZXRN
YXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CiAgICAgbGF5ZXItPnNldFNjcm9sbGFibGUo
bV9zY3JvbGxhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBiOTgwMjJiNTJkYTU4YjkxOTdj
YmY1NDQ4Y2I2ZDQwYTlhMDdjMjcwLi5hNmU4ZGIxMmUwNGY1MTY5NjQ2NDM1MjI0NDllNmM1OGM4
YTljOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xMjEsNiArMTIxLDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogICAgIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0K
IAorICAgIC8vIEJhY2tncm91bmQgZmlsdGVycyBhcmUgZmlsdGVycyBhcHBsaWVkIHRvIHdoYXQg
aXMgYmVoaW5kIHRoaXMgbGF5ZXIsIHdoZW4gdGhleSBhcmUgdmlld2VkIHRocm91Z2ggbm9uLW9w
YXF1ZQorICAgIC8vIHJlZ2lvbnMgaW4gdGhpcyBsYXllci4gVGhleSBhcmUgdXNlZCB0aHJvdWdo
IHRoZSBXZWJMYXllciBpbnRlcmZhY2UsIGFuZCBhcmUgbm90IGV4cG9zZWQgdG8gSFRNTC4KKyAg
ICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUo
Ym9vbCk7CiAgICAgYm9vbCBvcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZTsgfQogCkBA
IC0zMTEsNiArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9kZWJ1Z05hbWU7CiAgICAg
ZmxvYXQgbV9vcGFjaXR5OwogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOworICAgIEZp
bHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsKICAgICBmbG9hdCBtX2FuY2hvclBv
aW50WjsKICAgICBib29sIG1faXNEcmF3YWJsZTsKICAgICBib29sIG1fbWFza3NUb0JvdW5kczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDBhZDczYjQ2NzJmZWMy
OTc1Y2MwMWVmODNjODUwOTY5NjRlYjM5ZGIuLmExNDlhYjJkYmE2MTM4MTQyZGNkMGJjNTkzMmEz
N2E5MTM5NTMxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVk
ZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR2VvbWV0cnlCaW5kaW5nLmgiCisjaW5jbHVkZSAi
R3JUZXh0dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJM
YXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKQEAgLTUx
MiwxNCArNTEzLDczIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3Jk
ZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogcXVhCiAgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfTE9PUCwg
NCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCA2ICogc2l6ZW9mKHVuc2lnbmVk
IHNob3J0KSkpOwogfQogCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91
bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBxdWFkKQoreworICAgIC8v
IFRoaXMgbWV0aG9kIGRyYXdzIGEgYmFja2dyb3VuZCBmaWx0ZXIsIHdoaWNoIGFwcGxpZXMgYSBm
aWx0ZXIgdG8gYW55IHBpeGVscyBiZWhpbmQgdGhlIHF1YWQgYW5kIHNlZW4gdGhyb3VnaCBpdHMg
YmFja2dyb3VuZC4KKyAgICAvLyBUaGUgYWxnb3JpdGhtIHdvcmtzIGFzIGZvbGxvd3M6CisgICAg
Ly8gMS4gQ29tcHV0ZSBhIGJvdW5kaW5nIGJveCBhcm91bmQgdGhlIHBpeGVscyB0aGF0IHdpbGwg
YmUgdmlzaWJsZSB0aHJvdWdoIHRoZSBxdWFkLgorICAgIC8vIDIuIFJlYWQgdGhlIHBpeGVscyBp
biB0aGUgYm91bmRpbmcgYm94IGludG8gYSBidWZmZXIgUi4KKyAgICAvLyAzLiBBcHBseSB0aGUg
YmFja2dyb3VuZCBmaWx0ZXIgdG8gUiwgc28gdGhhdCBpdCBpcyBhcHBsaWVkIGluIHRoZSBwaXhl
bHMnIGNvb3JkaW5hdGUgc3BhY2UuCisgICAgLy8gNC4gQXBwbHkgdGhlIHF1YWQncyBpbnZlcnNl
IHRyYW5zZm9ybSB0byBtYXAgdGhlIHBpeGVscyBpbiBSIGludG8gdGhlIHF1YWQncyBjb250ZW50
IHNwYWNlLiBUaGlzIGltcGxpY2l0bHkKKyAgICAvLyBjbGlwcyBSIGJ5IHRoZSBjb250ZW50IGJv
dW5kcyBvZiB0aGUgcXVhZCBzaW5jZSB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSBoYXMgYm91bmRz
IG1hdGNoaW5nIHRoZSBxdWFkJ3MgY29udGVudC4KKyAgICAvLyA1LiBEcmF3IHRoZSBiYWNrZ3Jv
dW5kIHRleHR1cmUgZm9yIHRoZSBjb250ZW50cyB1c2luZyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMg
dXNlZCB0byBkcmF3IHRoZSBjb250ZW50cyBpdHNlbGYuIFRoaXMgaXMgZG9uZQorICAgIC8vIHdp
dGhvdXQgYmxlbmRpbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBiYWNrZ3JvdW5kIHBpeGVscyB3
aXRoIHRoZSBuZXcgZmlsdGVyZWQgYmFja2dyb3VuZC4KKyAgICAvLyA2LiBEcmF3IHRoZSBjb250
ZW50cyBvZiB0aGUgcXVhZCBvdmVyIGRyb3Agb2YgdGhlIG5ldyBiYWNrZ3JvdW5kIHdpdGggYmxl
bmRpbmcsIGFzIHBlciB1c3VhbC4gVGhlIGZpbHRlcmVkIGJhY2tncm91bmQKKyAgICAvLyBwaXhl
bHMgd2lsbCBzaG93IHRocm91Z2ggYW55IG5vbi1vcGFxdWUgcGl4ZWxzIGluIHRoaXMgZHJhd3Mu
CisgICAgLy8KKyAgICAvLyBQaXhlbCBjb3BpZXMgaW4gdGhpcyBhbGdvcml0aG0gb2NjdXIgYXQg
c3RlcHMgMiwgMywgNCwgYW5kIDUuCisKKyAgICBDQ1JlbmRlclN1cmZhY2UqIGRyYXdpbmdTdXJm
YWNlID0gcXVhZC0+bGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOworICAgIGlmIChkcmF3aW5nU3Vy
ZmFjZS0+YmFja2dyb3VuZEZpbHRlcnMoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIEZJWE1FOiBXZSBvbmx5IGFsbG93IGJhY2tncm91bmQgZmlsdGVycyBvbiB0aGUgcm9v
dCByZW5kZXIgc3VyZmFjZSBiZWNhdXNlIG90aGVyIHN1cmZhY2VzIG1heSBjb250YWluCisgICAg
Ly8gdHJhbnNsdWNlbnQgcGl4ZWxzLCBhbmQgdGhlIGNvbnRlbnRzIGJlaGluZCB0aG9zZSB0cmFu
c2x1Y2VudCBwaXhlbHMgd291bGRuJ3QgaGF2ZSB0aGUgZmlsdGVyIGFwcGxpZWQuCisgICAgaWYg
KCFpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKG1fZGVmYXVsdFJlbmRlclN1cmZhY2UpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VyZmFjZURyYXdU
cmFuc2Zvcm0gPSBxdWFkLT5pc1JlcGxpY2EoKSA/IGRyYXdpbmdTdXJmYWNlLT5yZXBsaWNhRHJh
d1RyYW5zZm9ybSgpIDogZHJhd2luZ1N1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKTsKKworICAgIC8v
IEZJWE1FOiBEbyBhIHNpbmdsZSByZWFkYmFjayBmb3IgYm90aCB0aGUgc3VyZmFjZSBhbmQgcmVw
bGljYSBhbmQgY2FjaGUgdGhlIGZpbHRlcmVkIHJlc3VsdHMgKG9uY2UgZmlsdGVyIHRleHR1cmVz
IGFyZSBub3QgcmV1c2VkKS4KKyAgICBJbnRSZWN0IGRldmljZVJlY3QgPSBkcmF3aW5nU3VyZmFj
ZS0+cmVhZGJhY2tEZXZpY2VDb250ZW50UmVjdCh0aGlzLCBzdXJmYWNlRHJhd1RyYW5zZm9ybSk7
CisgICAgZGV2aWNlUmVjdC5pbnRlcnNlY3QobV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+Y29udGVu
dFJlY3QoKSk7CisKKyAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IGRldmljZUJhY2tncm91bmRU
ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFu
YWdlci5nZXQoKSk7CisgICAgaWYgKCFnZXRGcmFtZWJ1ZmZlclRleHR1cmUoZGV2aWNlQmFja2dy
b3VuZFRleHR1cmUuZ2V0KCksIGRldmljZVJlY3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBT
a0JpdG1hcCBmaWx0ZXJlZERldmljZUJhY2tncm91bmQgPSBkcmF3aW5nU3VyZmFjZS0+YXBwbHlG
aWx0ZXJzKHRoaXMsIGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5kRmlsdGVycygpLCBkZXZpY2VC
YWNrZ3JvdW5kVGV4dHVyZS5nZXQoKSk7CisgICAgaWYgKCFmaWx0ZXJlZERldmljZUJhY2tncm91
bmQuZ2V0VGV4dHVyZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBHclRleHR1cmUqIHRleHR1
cmUgPSByZWludGVycHJldF9jYXN0PEdyVGV4dHVyZSo+KGZpbHRlcmVkRGV2aWNlQmFja2dyb3Vu
ZC5nZXRUZXh0dXJlKCkpOworICAgIGludCBmaWx0ZXJlZERldmljZUJhY2tncm91bmRUZXh0dXJl
SWQgPSB0ZXh0dXJlLT5nZXRUZXh0dXJlSGFuZGxlKCk7CisKKyAgICBpZiAoIWRyYXdpbmdTdXJm
YWNlLT5wcmVwYXJlQmFja2dyb3VuZFRleHR1cmUodGhpcykpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFRoaXMgbXVzdCBiZSBjb21wdXRlZCBiZWZvcmUgc3dpdGNoaW5nIHRoZSB0YXJnZXQg
cmVuZGVyIHN1cmZhY2UgdG8gdGhlIGJhY2tncm91bmQgdGV4dHVyZS4KKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBjb250ZW50c0RldmljZVRyYW5zZm9ybSA9IGRyYXdpbmdTdXJmYWNlLT5jb21w
dXRlRGV2aWNlVHJhbnNmb3JtKHRoaXMsIHN1cmZhY2VEcmF3VHJhbnNmb3JtKTsKKworICAgIEND
UmVuZGVyU3VyZmFjZSogdGFyZ2V0UmVuZGVyU3VyZmFjZSA9IG1fY3VycmVudFJlbmRlclN1cmZh
Y2U7CisgICAgaWYgKHVzZU1hbmFnZWRUZXh0dXJlKGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5k
VGV4dHVyZSgpLCBkcmF3aW5nU3VyZmFjZS0+Y29udGVudFJlY3QoKSkpIHsKKyAgICAgICAgZHJh
d2luZ1N1cmZhY2UtPmNvcHlEZXZpY2VUb0JhY2tncm91bmRUZXh0dXJlKHRoaXMsIGZpbHRlcmVk
RGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgZGV2aWNlUmVjdCwgY29udGVudHNEZXZpY2VUcmFu
c2Zvcm0pOworICAgICAgICB1c2VSZW5kZXJTdXJmYWNlKHRhcmdldFJlbmRlclN1cmZhY2UpOwor
ICAgIH0KK30KKwogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJTdXJmYWNl
UXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCogcXVhZCkKIHsKICAgICBDQ0xheWVy
SW1wbCogbGF5ZXIgPSBxdWFkLT5sYXllcigpOworCisgICAgZHJhd0JhY2tncm91bmRGaWx0ZXJz
KHF1YWQpOworCiAgICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+c2V0U2Npc3NvclJlY3QodGhp
cywgcXVhZC0+c3VyZmFjZURhbWFnZVJlY3QoKSk7CiAgICAgaWYgKHF1YWQtPmlzUmVwbGljYSgp
KQogICAgICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3UmVwbGljYSh0aGlzKTsKICAg
ICBlbHNlCiAgICAgICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdDb250ZW50cyh0aGlz
KTsKKyAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5yZWxlYXNlQmFja2dyb3VuZFRleHR1cmUo
KTsKICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5yZWxlYXNlQ29udGVudHNUZXh0dXJlKCk7
CiB9CiAKQEAgLTExODYsNiArMTI0NiwxNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Z2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZQogICAg
IH0KIH0KIAorYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVy
ZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgZGV2aWNlUmVjdCkKK3sK
KyAgICBpZiAoIXRleHR1cmUtPnJlc2VydmUoZGV2aWNlUmVjdC5zaXplKCksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB0ZXh0dXJlLT5iaW5k
VGV4dHVyZShtX2NvbnRleHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3Iu
Z2V0KCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRl
dmljZVJlY3QueSgpLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDAp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogTWFuYWdlZFRleHR1cmUqIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6Z2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCkKIHsKICAgICByZXR1cm4gc2V0dGlu
Z3MoKS5jb21wb3NpdGVPZmZzY3JlZW4gJiYgcm9vdExheWVyKCkgPyByb290TGF5ZXIoKS0+cmVu
ZGVyU3VyZmFjZSgpLT5jb250ZW50c1RleHR1cmUoKSA6IDA7CkBAIC0xMjA5LDkgKzEyODAsMTgg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNw
bGF5KCkKICAgICB9CiB9CiAKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0N1cnJlbnRS
ZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSkKK3sKKyAgICByZXR1
cm4gbV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9PSByZW5kZXJTdXJmYWNlICYmICFtX2N1cnJlbnRN
YW5hZ2VkVGV4dHVyZTsKK30KKwogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRl
clN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlKQogeworICAgIGlmIChpc0N1
cnJlbnRSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2UpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KwogICAgIG1fY3VycmVudFJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlOworICAgIG1fY3Vy
cmVudE1hbmFnZWRUZXh0dXJlID0gMDsKIAogICAgIGlmICgocmVuZGVyU3VyZmFjZSA9PSBtX2Rl
ZmF1bHRSZW5kZXJTdXJmYWNlICYmICFzZXR0aW5ncygpLmNvbXBvc2l0ZU9mZnNjcmVlbikgfHwg
KCFyZW5kZXJTdXJmYWNlICYmIHNldHRpbmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVuKSkgewogICAg
ICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKQEAgLTEyMjIsMTIgKzEzMDIsMjggQEAg
Ym9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJm
YWNlKiByZW5kZXJTdXJmYWNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBH
TEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwotCiAgICAg
aWYgKCFyZW5kZXJTdXJmYWNlLT5wcmVwYXJlQ29udGVudHNUZXh0dXJlKHRoaXMpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZW5kZXJTdXJmYWNlLT5jb250ZW50c1RleHR1cmUoKS0+
ZnJhbWVidWZmZXJUZXh0dXJlMkQobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0
dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJl
KHJlbmRlclN1cmZhY2UtPmNvbnRlbnRzVGV4dHVyZSgpLCByZW5kZXJTdXJmYWNlLT5jb250ZW50
UmVjdCgpKTsKK30KKworYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZU1hbmFnZWRUZXh0
dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3Qp
Cit7CisgICAgaWYgKG1fY3VycmVudE1hbmFnZWRUZXh0dXJlID09IHRleHR1cmUpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9IDA7CisgICAgbV9j
dXJyZW50TWFuYWdlZFRleHR1cmUgPSB0ZXh0dXJlOworCisgICAgcmV0dXJuIGJpbmRGcmFtZWJ1
ZmZlclRvVGV4dHVyZSh0ZXh0dXJlLCB2aWV3cG9ydFJlY3QpOworfQorCitib29sIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpCit7CisgICAgR0xDKG1fY29udGV4
dC5nZXQoKSwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpKTsKKworICAgIHRleHR1cmUtPmZy
YW1lYnVmZmVyVGV4dHVyZTJEKG1fY29udGV4dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVy
ZUFsbG9jYXRvci5nZXQoKSk7CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJVRyApCiAgICAgaWYgKG1f
Y29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewpAQCAt
MTIzNiw3ICsxMzMyLDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1
cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlKQogICAgIH0KICNlbmRpZgogCi0g
ICAgc2V0RHJhd1ZpZXdwb3J0UmVjdChyZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLCBmYWxz
ZSk7CisgICAgc2V0RHJhd1ZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3QsIGZhbHNlKTsKIAogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtMTI1Niw3ICsxMzUyLDcgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QpCiAg
ICAgLy8gb2YgdGhlIEdMIHNjaXNzb3IgaXMgdGhlIGJvdHRvbSBvZiBvdXIgbGF5ZXIuCiAgICAg
Ly8gQnV0LCBpZiByZW5kZXJpbmcgdG8gb2Zmc2NyZWVuIHRleHR1cmUsIHdlIHJldmVyc2Ugb3Vy
IHNlbnNlIG9mICd1cHNpZGUgZG93bicuCiAgICAgaW50IHNjaXNzb3JZOwotICAgIGlmIChtX2N1
cnJlbnRSZW5kZXJTdXJmYWNlID09IG1fZGVmYXVsdFJlbmRlclN1cmZhY2UgJiYgIXNldHRpbmdz
KCkuY29tcG9zaXRlT2Zmc2NyZWVuKQorICAgIGlmIChpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKG1f
ZGVmYXVsdFJlbmRlclN1cmZhY2UpICYmICFzZXR0aW5ncygpLmNvbXBvc2l0ZU9mZnNjcmVlbikK
ICAgICAgICAgc2Npc3NvclkgPSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgp
LmhlaWdodCgpIC0gKHNjaXNzb3JSZWN0Lm1heFkoKSAtIG1fY3VycmVudFJlbmRlclN1cmZhY2Ut
PmNvbnRlbnRSZWN0KCkueSgpKTsKICAgICBlbHNlCiAgICAgICAgIHNjaXNzb3JZID0gc2Npc3Nv
clJlY3QueSgpIC0gY29udGVudFJlY3QueSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaAppbmRleCBkNmFjNjgyMjkwNjkxMjdlM2IxMjBlOTM0NDljYmE5NWUxOTc1NjkxLi40NWVl
YmNiMTYyOWRmMThhZjMzMmRjODVmYmE5OTViNWJmZmM3MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uaApAQCAtMTM4LDYgKzEzOCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBD
Q1ZpZGVvTGF5ZXJJbXBsOjpTdHJlYW1UZXh0dXJlUHJvZ3JhbSogc3RyZWFtVGV4dHVyZUxheWVy
UHJvZ3JhbSgpOwogCiAgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMs
IGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIGdldEZyYW1lYnVmZmVyVGV4dHVyZShNYW5hZ2Vk
VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIGRldmljZVJlY3QpOwogCiAgICAgVGV4dHVyZU1hbmFn
ZXIqIHJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVy
U3VyZmFjZVRleHR1cmVNYW5hZ2VyLmdldCgpOyB9CiAgICAgVGV4dHVyZUNvcGllciogdGV4dHVy
ZUNvcGllcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUNvcGllci5nZXQoKTsgfQpAQCAtMTcz
LDYgKzE3NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3UXVhZChjb25z
dCBDQ0RyYXdRdWFkKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CiAgICAg
dm9pZCBkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCopOwor
ICAgIHZvaWQgZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdR
dWFkKik7CiAgICAgdm9pZCBkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJm
YWNlRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdTb2xpZENvbG9yUXVhZChjb25zdCBDQ1NvbGlk
Q29sb3JEcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd1RleHR1cmVRdWFkKGNvbnN0IENDVGV4dHVy
ZURyYXdRdWFkKik7CkBAIC0xOTIsNyArMTk0LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNl
dERyYXdWaWV3cG9ydFJlY3QoY29uc3QgSW50UmVjdCYsIGJvb2wgZmxpcFkpOwogCisgICAgLy8g
VGhlIGN1cnJlbnQgZHJhd2luZyB0YXJnZXQgaXMgZWl0aGVyIGEgUmVuZGVyU3VyZmFjZSBvciBN
YW5hZ2VkVGV4dHVyZS4gVXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBzd2l0Y2ggdG8gYSBuZXcgZHJh
d2luZyB0YXJnZXQuCiAgICAgYm9vbCB1c2VSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSop
OworICAgIGJvb2wgdXNlTWFuYWdlZFRleHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRS
ZWN0JiB2aWV3cG9ydFJlY3QpOworICAgIGJvb2wgaXNDdXJyZW50UmVuZGVyU3VyZmFjZShDQ1Jl
bmRlclN1cmZhY2UqKTsKKworICAgIGJvb2wgYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1hbmFn
ZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KTsKKwogICAgIHZvaWQgY2xl
YXJSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSosIENDUmVuZGVyU3VyZmFjZSogcm9vdFJl
bmRlclN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpOwogCiAgICAg
dm9pZCByZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1cmVzKCk7CkBAIC0yMTcsNiArMjI1LDcgQEAg
cHJpdmF0ZToKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3dpbmRvd01hdHJpeDsKIAogICAg
IENDUmVuZGVyU3VyZmFjZSogbV9jdXJyZW50UmVuZGVyU3VyZmFjZTsKKyAgICBNYW5hZ2VkVGV4
dHVyZSogbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7CiAgICAgdW5zaWduZWQgbV9vZmZzY3JlZW5G
cmFtZWJ1ZmZlcklkOwogCiAgICAgLy8gU3RvcmUgdmFsdWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3
ZWVuIGluc3RhbmNlcyBvZiBlYWNoIGxheWVyIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNo
cm9taXVtLmgKaW5kZXggODNhMjFkOWQ5NzA4NmNjMmRkMmFhNGY4NmMyNWMyZmU2NWFlM2M0OC4u
OWE4NGViYjRlMzg1NDNmMDNmNTFmN2JiZDc0MTQyMzUzMmM3ZDk4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVu
ZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTkzLDYgKzkzLDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7IG1fZmlsdGVycyA9
IGZpbHRlcnM7IH0KICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9maWx0ZXJzOyB9CiAKKyAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9iYWNrZ3JvdW5kRmlsdGVycyA9IGZp
bHRlcnM7IH0KKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKwogICAgIGJvb2wgc2tpcHNE
cmF3KCkgY29uc3QgeyByZXR1cm4gbV9za2lwc0RyYXc7IH0KICAgICB2b2lkIHNldFNraXBzRHJh
dyhib29sIHNraXBzRHJhdykgeyBtX3NraXBzRHJhdyA9IHNraXBzRHJhdzsgfQogCkBAIC0xMjIs
NiArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNB
cmVBbmltYXRpbmc7CiAgICAgYm9vbCBtX3NjcmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGlu
ZzsKICAgICBGaWx0ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25z
IG1fYmFja2dyb3VuZEZpbHRlcnM7CiAgICAgSW50UmVjdCBtX2NsaXBSZWN0OwogICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBtX2xheWVyTGlzdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuY3BwCmluZGV4IDJhZmI5ZDhmZjc0MWY5MzM1OTU2NmExNjlmZDQzNzI5NzAyYTc5NjkuLmJl
ZTlmMjYyMzZmYjhiMjA5NzAzZDNlZTJhMWRiMzdiZTgyZTBhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAKQEAgLTQxMCw2ICs0MTAsMTUgQEAgdm9pZCBDQ0xheWVySW1wbDo6c2V0RmlsdGVy
cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZEZvclN1YnRyZWUoKTsKIH0KIAordm9pZCBDQ0xheWVySW1wbDo6c2V0QmFja2dyb3Vu
ZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMpCit7Cisg
ICAgaWYgKG1fYmFja2dyb3VuZEZpbHRlcnMgPT0gYmFja2dyb3VuZEZpbHRlcnMpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fYmFja2dyb3VuZEZpbHRlcnMgPSBiYWNrZ3JvdW5kRmlsdGVyczsK
KyAgICBtX2xheWVyUHJvcGVydHlDaGFuZ2VkID0gdHJ1ZTsKK30KKwogdm9pZCBDQ0xheWVySW1w
bDo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCiB7CiAgICAgaWYgKG1fbWFz
a3NUb0JvdW5kcyA9PSBtYXNrc1RvQm91bmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggNmNi
NmRmMDNjMjllYWU2MDg3ZTBmNGE5ZWU5NDFjMzJiOTk1MDg5Mi4uMDBkODQ1NGIxMDQ3MjgwZGVh
MmNjZThkNTY4NmYwYzQ0NWM1NDEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0xMTMsNiAr
MTEzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJik7CiAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fZmlsdGVyczsgfQogCisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJik7CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3Vu
ZEZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRGaWx0ZXJzOyB9CisKICAgICB2
b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCk7CiAgICAgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29u
c3QgeyByZXR1cm4gbV9tYXNrc1RvQm91bmRzOyB9CiAKQEAgLTMzNyw2ICszNDAsNyBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBtX2RlYnVnTmFtZTsKIAogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9m
aWx0ZXJzOworICAgIEZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsKIAogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsKICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdENvbW1vbi5jcHAKaW5kZXggOTUxN2U3ZDI3NTBiZjBlNGJhZTk3Nzc0MTMwODU3NTgz
NzU0NWM3ZC4uMWY2ZjY2NjBjZTg5NWM0ZjVjM2Y1Mzk3NTZjZGY3MTZhY2ZlMjY1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC0xNzMsNyArMTczLDcg
QEAgc3RhdGljIGJvb2wgc3VidHJlZVNob3VsZFJlbmRlclRvU2VwYXJhdGVTdXJmYWNlKExheWVy
VHlwZSogbGF5ZXIsIGJvb2wgYXhpc0FsaWcKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAv
LyBJZiB0aGUgbGF5ZXIgdXNlcyBhIENTUyBmaWx0ZXIuCi0gICAgaWYgKCFsYXllci0+ZmlsdGVy
cygpLmlzRW1wdHkoKSkKKyAgICBpZiAoIWxheWVyLT5maWx0ZXJzKCkuaXNFbXB0eSgpIHx8ICFs
YXllci0+YmFja2dyb3VuZEZpbHRlcnMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgLy8gSWYgdGhlIGxheWVyIGZsYXR0ZW5zIGl0cyBzdWJ0cmVlIChpLmUuIHRoZSBs
YXllciBkb2Vzbid0IHByZXNlcnZlLTNkKSwgYnV0IGl0IGlzCkBAIC00MDQsNiArNDA0LDggQEAg
c3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwo
TGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKICAgICAgICAgICAgIG5lYXJlc3RBbmNlc3RvclRoYXRN
b3Zlc1BpeGVscyA9IHJlbmRlclN1cmZhY2U7CiAgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldE5l
YXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyhuZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhl
bHMpOwogCisgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldEJhY2tncm91bmRGaWx0ZXJzKGxheWVy
LT5iYWNrZ3JvdW5kRmlsdGVycygpKTsKKwogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LmFwcGVuZChsYXllcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbGF5ZXItPnNldERyYXdUcmFu
c2Zvcm0oY29tYmluZWRUcmFuc2Zvcm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAK
aW5kZXggYzQ3OTNhNWIyNGM2YjE5NjA0MmVmMGYxZGI2NDdhMjllZDNiODAxOC4uYzhiOTFjZmM2
ZDdkNTQ0ZTljZDFmZDQ1YTc0ZjVhODI2NjAyNTkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2UuY3BwCkBAIC03MSw3ICs3MSw3IEBAIEZsb2F0UmVjdCBDQ1JlbmRlclN1cmZhY2U6OmRy
YXdhYmxlQ29udGVudFJlY3QoKSBjb25zdAogICAgIEZsb2F0UmVjdCBsb2NhbENvbnRlbnRSZWN0
KC0wLjUgKiBtX2NvbnRlbnRSZWN0LndpZHRoKCksIC0wLjUgKiBtX2NvbnRlbnRSZWN0LmhlaWdo
dCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudFJlY3Qud2lkdGgo
KSwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgRmxvYXRSZWN0IGRyYXdhYmxlQ29udGVu
dFJlY3QgPSBtX2RyYXdUcmFuc2Zvcm0ubWFwUmVjdChsb2NhbENvbnRlbnRSZWN0KTsKLSAgICBp
ZiAobV9vd25pbmdMYXllci0+cmVwbGljYUxheWVyKCkpCisgICAgaWYgKGhhc1JlcGxpY2EoKSkK
ICAgICAgICAgZHJhd2FibGVDb250ZW50UmVjdC51bml0ZShtX3JlcGxpY2FEcmF3VHJhbnNmb3Jt
Lm1hcFJlY3QobG9jYWxDb250ZW50UmVjdCkpOwogCiAgICAgcmV0dXJuIGRyYXdhYmxlQ29udGVu
dFJlY3Q7CkBAIC0xMDQsNiArMTA0LDExMCBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6cmVsZWFz
ZUNvbnRlbnRzVGV4dHVyZSgpCiAgICAgbV9jb250ZW50c1RleHR1cmUtPnVucmVzZXJ2ZSgpOwog
fQogCitib29sIENDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUJhY2tncm91bmRUZXh0dXJlKExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3sKKyAgICBJbnRTaXplIHJlcXVpcmVk
U2l6ZShtX2NvbnRlbnRSZWN0LnNpemUoKSk7CisgICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVN
YW5hZ2VyID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCk7CisK
KyAgICBpZiAoIW1fYmFja2dyb3VuZFRleHR1cmUpCisgICAgICAgIG1fYmFja2dyb3VuZFRleHR1
cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsKKworICAgIGlmICht
X2JhY2tncm91bmRUZXh0dXJlLT5pc1Jlc2VydmVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgaWYgKCFtX2JhY2tncm91bmRUZXh0dXJlLT5yZXNlcnZlKHJlcXVpcmVkU2l6ZSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBDQ1JlbmRlclN1cmZhY2U6OnJlbGVhc2VCYWNrZ3JvdW5kVGV4
dHVyZSgpCit7CisgICAgaWYgKCFtX2JhY2tncm91bmRUZXh0dXJlKQorICAgICAgICByZXR1cm47
CisgICAgbV9iYWNrZ3JvdW5kVGV4dHVyZS0+dW5yZXNlcnZlKCk7Cit9CisKK1RyYW5zZm9ybWF0
aW9uTWF0cml4IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZURldmljZVRyYW5zZm9ybShMYXllclJl
bmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkcmF3VHJhbnNmb3JtKSBjb25zdAoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRl
clRyYW5zZm9ybSA9IGRyYXdUcmFuc2Zvcm07CisgICAgLy8gQXBwbHkgYSBzY2FsaW5nIGZhY3Rv
ciB0byBzaXplIHRoZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRlbmRlZCBzaXplLgorICAgIHJl
bmRlclRyYW5zZm9ybS5zY2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVj
dC5oZWlnaHQoKSwgMSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlVHJhbnNmb3Jt
ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgobGF5ZXJSZW5kZXJlci0+d2luZG93TWF0cml4KCkgKiBs
YXllclJlbmRlcmVyLT5wcm9qZWN0aW9uTWF0cml4KCkgKiByZW5kZXJUcmFuc2Zvcm0pLnRvMmRU
cmFuc2Zvcm0oKTsKKyAgICByZXR1cm4gZGV2aWNlVHJhbnNmb3JtOworfQorCitJbnRSZWN0IEND
UmVuZGVyU3VyZmFjZTo6Y29tcHV0ZURldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJv
bWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFu
c2Zvcm0pIGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudHNEZXZpY2VU
cmFuc2Zvcm0gPSBjb21wdXRlRGV2aWNlVHJhbnNmb3JtKGxheWVyUmVuZGVyZXIsIGRyYXdUcmFu
c2Zvcm0pOworCisgICAgLy8gQ2FuIG9ubHkgZHJhdyBzdXJmYWNlIGlmIGRldmljZSBtYXRyaXgg
aXMgaW52ZXJ0aWJsZS4KKyAgICBpZiAoIWNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLmlzSW52ZXJ0
aWJsZSgpKQorICAgICAgICByZXR1cm4gSW50UmVjdCgpOworCisgICAgRmxvYXRRdWFkIGRldmlj
ZVF1YWQgPSBjb250ZW50c0RldmljZVRyYW5zZm9ybS5tYXBRdWFkKGxheWVyUmVuZGVyZXItPnNo
YXJlZEdlb21ldHJ5UXVhZCgpKTsKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChkZXZpY2VR
dWFkLmJvdW5kaW5nQm94KCkpOworfQorCitJbnRSZWN0IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0
ZVJlYWRiYWNrRGV2aWNlQm91bmRpbmdCb3goTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJl
bmRlcmVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgY29uc3QK
K3sKKyAgICBJbnRSZWN0IGRldmljZVJlY3QgPSBjb21wdXRlRGV2aWNlQm91bmRpbmdCb3gobGF5
ZXJSZW5kZXJlciwgZHJhd1RyYW5zZm9ybSk7CisKKyAgICBpZiAobV9iYWNrZ3JvdW5kRmlsdGVy
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBkZXZpY2VSZWN0OworCisgICAgaW50IHRvcCwg
cmlnaHQsIGJvdHRvbSwgbGVmdDsKKyAgICBtX2JhY2tncm91bmRGaWx0ZXJzLmdldE91dHNldHMo
dG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKKyAgICBkZXZpY2VSZWN0Lm1vdmUoLWxlZnQsIC10
b3ApOworICAgIGRldmljZVJlY3QuZXhwYW5kKGxlZnQgKyByaWdodCwgdG9wICsgYm90dG9tKTsK
KworICAgIHJldHVybiBkZXZpY2VSZWN0OworfQorCitJbnRSZWN0IENDUmVuZGVyU3VyZmFjZTo6
cmVhZGJhY2tEZXZpY2VDb250ZW50UmVjdChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVu
ZGVyZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdAor
eworICAgIHJldHVybiBjb21wdXRlUmVhZGJhY2tEZXZpY2VCb3VuZGluZ0JveChsYXllclJlbmRl
cmVyLCBkcmF3VHJhbnNmb3JtKTsKK30KKworc3RhdGljIHZvaWQgY29weVRleHR1cmVUb0ZyYW1l
YnVmZmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgaW50IHRleHR1cmVJ
ZCwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJh
d01hdHJpeCkKK3sKKyAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2U6OlByb2dyYW0qIHByb2dyYW0g
PSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlUHJvZ3JhbSgpOworCisgICAgR0xDKGxheWVy
UmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5hY3RpdmVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOworICAgIEdMQyhsYXllclJlbmRlcmVy
LT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOworICAgIEdMQyhsYXllclJlbmRl
cmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
TUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhsYXllclJl
bmRlcmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+dGV4UGFyYW1ldGVy
aShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworCisgICAgR0xDKGxh
eWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT51c2VQcm9n
cmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0
KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKKyAgICBsYXllclJlbmRlcmVyLT5kcmF3
VGV4dHVyZWRRdWFkKGRyYXdNYXRyaXgsIGJvdW5kcy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCks
IDEsIGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRp
b24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdt
ZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLTEpOworfQorCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6Y29weURldmljZVRvQmFj
a2dyb3VuZFRleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBpbnQg
ZGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgZGV2aWNlVGV4dHVyZVJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0pIGNvbnN0Cit7
CisgICAgQVNTRVJUKCFtX2JhY2tncm91bmRGaWx0ZXJzLmlzRW1wdHkoKSk7CisKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm07CisgICAgZGV2aWNlVG9T
dXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShtX2NvbnRlbnRSZWN0LndpZHRoKCkgLyAyLjAsIG1f
Y29udGVudFJlY3QuaGVpZ2h0KCkgLyAyLjApOworICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9y
bS5zY2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSwg
MSk7CisgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtICo9IGRldmljZVRyYW5zZm9ybS5pbnZl
cnNlKCk7CisgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VUZXh0
dXJlUmVjdC53aWR0aCgpIC8gMi4wLCBkZXZpY2VUZXh0dXJlUmVjdC5oZWlnaHQoKSAvIDIuMCk7
CisgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VUZXh0dXJlUmVj
dC54KCksIGRldmljZVRleHR1cmVSZWN0LnkoKSk7CisKKyAgICBjb3B5VGV4dHVyZVRvRnJhbWVi
dWZmZXIobGF5ZXJSZW5kZXJlciwgZGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgZGV2aWNlVGV4
dHVyZVJlY3Quc2l6ZSgpLCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0pOworfQorCitpbmxpbmUg
c3RhdGljIGludCBnZXRTa0JpdG1hcFRleHR1cmVJZChjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBp
bnQgZmFsbGJhY2spCit7CisgICAgaWYgKCFiaXRtYXAuZ2V0VGV4dHVyZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsbGJhY2s7CisgICAgR3JUZXh0dXJlKiB0ZXh0dXJlID0gcmVpbnRlcnByZXRfY2Fz
dDxHclRleHR1cmUqPihiaXRtYXAuZ2V0VGV4dHVyZSgpKTsKKyAgICByZXR1cm4gdGV4dHVyZS0+
Z2V0VGV4dHVyZUhhbmRsZSgpOworfQorCiB2b2lkIENDUmVuZGVyU3VyZmFjZTo6c2V0U2Npc3Nv
clJlY3QoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBGbG9hdFJl
Y3QmIHN1cmZhY2VEYW1hZ2VSZWN0KSBjb25zdAogewogICAgIGlmIChtX293bmluZ0xheWVyLT5w
YXJlbnQoKSAmJiBtX293bmluZ0xheWVyLT5wYXJlbnQoKS0+dXNlc0xheWVyQ2xpcHBpbmcoKSAm
JiBsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKSB7CkBAIC0x
MjQsOCArMjI4LDExIEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3Q29udGVudHMoTGF5ZXJS
ZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBGSVhNRTogQ2FjaGUgdGhpcyB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gZG8gaXQg
Zm9yIGJvdGggdGhlIHN1cmZhY2UgYW5kIGl0cyByZXBsaWNhLgotICAgIFNrQml0bWFwIGZpbHRl
ckJpdG1hcCA9IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyKTsKLSAgICBkcmF3TGF5ZXIobGF5
ZXJSZW5kZXJlciwgbV9tYXNrTGF5ZXIsIG1fZHJhd1RyYW5zZm9ybSwgZmlsdGVyQml0bWFwKTsK
KyAgICAvLyBBcHBseSBmaWx0ZXJzIHRvIHRoZSBjb250ZW50cyB0ZXh0dXJlLgorICAgIFNrQml0
bWFwIGZpbHRlckJpdG1hcCA9IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyLCBtX2ZpbHRlcnMs
IG1fY29udGVudHNUZXh0dXJlLmdldCgpKTsKKworICAgIGludCBjb250ZW50c1RleHR1cmVJZCA9
IGdldFNrQml0bWFwVGV4dHVyZUlkKGZpbHRlckJpdG1hcCwgbV9jb250ZW50c1RleHR1cmUtPnRl
eHR1cmVJZCgpKTsKKyAgICBkcmF3TGF5ZXIobGF5ZXJSZW5kZXJlciwgbV9tYXNrTGF5ZXIsIG1f
ZHJhd1RyYW5zZm9ybSwgY29udGVudHNUZXh0dXJlSWQpOwogfQogCiB2b2lkIENDUmVuZGVyU3Vy
ZmFjZTo6ZHJhd1JlcGxpY2EoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQpA
QCAtMTM0LDcgKzI0MSw5IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3UmVwbGljYShMYXll
clJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAgaWYgKCFoYXNSZXBsaWNhKCkg
fHwgbV9za2lwc0RyYXcgfHwgIW1fY29udGVudHNUZXh0dXJlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTa0JpdG1hcCBmaWx0ZXJCaXRtYXAgPSBhcHBseUZpbHRlcnMobGF5ZXJSZW5kZXJlcik7
CisgICAgLy8gQXBwbHkgZmlsdGVycyB0byB0aGUgY29udGVudHMgdGV4dHVyZS4KKyAgICBTa0Jp
dG1hcCBmaWx0ZXJCaXRtYXAgPSBhcHBseUZpbHRlcnMobGF5ZXJSZW5kZXJlciwgbV9maWx0ZXJz
LCBtX2NvbnRlbnRzVGV4dHVyZS5nZXQoKSk7CisKICAgICAvLyBGSVhNRTogQnkgdXNpbmcgdGhl
IHNhbWUgUmVuZGVyU3VyZmFjZSBmb3IgYm90aCB0aGUgY29udGVudCBhbmQgaXRzIHJlZmxlY3Rp
b24sCiAgICAgLy8gaXQncyBjdXJyZW50bHkgbm90IHBvc3NpYmxlIHRvIGFwcGx5IGEgc2VwYXJh
dGUgbWFzayB0byB0aGUgcmVmbGVjdGlvbiBsYXllcgogICAgIC8vIG9yIGNvcnJlY3RseSBoYW5k
bGUgb3BhY2l0eSBpbiByZWZsZWN0aW9ucyAob3BhY2l0eSBtdXN0IGJlIGFwcGxpZWQgYWZ0ZXIg
ZHJhd2luZwpAQCAtMTQ1LDIxICsyNTQsMjIgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdS
ZXBsaWNhKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICBpZiAoIW1f
bWFza0xheWVyICYmIG1fb3duaW5nTGF5ZXItPnJlcGxpY2FMYXllcigpKQogICAgICAgICByZXBs
aWNhTWFza0xheWVyID0gbV9vd25pbmdMYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigp
OwogCi0gICAgZHJhd0xheWVyKGxheWVyUmVuZGVyZXIsIHJlcGxpY2FNYXNrTGF5ZXIsIG1fcmVw
bGljYURyYXdUcmFuc2Zvcm0sIGZpbHRlckJpdG1hcCk7CisgICAgaW50IGNvbnRlbnRzVGV4dHVy
ZUlkID0gZ2V0U2tCaXRtYXBUZXh0dXJlSWQoZmlsdGVyQml0bWFwLCBtX2NvbnRlbnRzVGV4dHVy
ZS0+dGV4dHVyZUlkKCkpOworICAgIGRyYXdMYXllcihsYXllclJlbmRlcmVyLCByZXBsaWNhTWFz
a0xheWVyLCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLCBjb250ZW50c1RleHR1cmVJZCk7CiB9CiAK
LXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBs
YXllclJlbmRlcmVyLCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgU2tCaXRtYXAmIGZpbHRlckJpdG1hcCkKK3Zv
aWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXll
clJlbmRlcmVyLCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZHJhd1RyYW5zZm9ybSwgaW50IGNvbnRlbnRzVGV4dHVyZUlkKQogewotICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHJlbmRlck1hdHJpeCA9IGRyYXdUcmFuc2Zvcm07Ci0gICAgLy8gQXBw
bHkgYSBzY2FsaW5nIGZhY3RvciB0byBzaXplIHRoZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRl
bmRlZCBzaXplLgotICAgIHJlbmRlck1hdHJpeC5zY2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgo
KSwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSwgMSk7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBkZXZpY2VNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChsYXllclJlbmRlcmVyLT53aW5k
b3dNYXRyaXgoKSAqIGxheWVyUmVuZGVyZXItPnByb2plY3Rpb25NYXRyaXgoKSAqIHJlbmRlck1h
dHJpeCkudG8yZFRyYW5zZm9ybSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZU1h
dHJpeCA9IGNvbXB1dGVEZXZpY2VUcmFuc2Zvcm0obGF5ZXJSZW5kZXJlciwgZHJhd1RyYW5zZm9y
bSk7CiAKICAgICAvLyBDYW4gb25seSBkcmF3IHN1cmZhY2UgaWYgZGV2aWNlIG1hdHJpeCBpcyBp
bnZlcnRpYmxlLgogICAgIGlmICghZGV2aWNlTWF0cml4LmlzSW52ZXJ0aWJsZSgpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICAvLyBEcmF3IHRoZSBiYWNrZ3JvdW5kIHRleHR1cmUgaWYgdGhlcmUg
aXMgb25lLgorICAgIGlmIChtX2JhY2tncm91bmRUZXh0dXJlICYmIG1fYmFja2dyb3VuZFRleHR1
cmUtPmlzUmVzZXJ2ZWQoKSkKKyAgICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGxheWVy
UmVuZGVyZXIsIG1fYmFja2dyb3VuZFRleHR1cmUtPnRleHR1cmVJZCgpLCBtX2NvbnRlbnRSZWN0
LnNpemUoKSwgZHJhd1RyYW5zZm9ybSk7CisKICAgICBGbG9hdFF1YWQgcXVhZCA9IGRldmljZU1h
dHJpeC5tYXBRdWFkKGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpKTsKICAgICBD
Q0xheWVyUXVhZCBkZXZpY2VSZWN0ID0gQ0NMYXllclF1YWQoRmxvYXRRdWFkKHF1YWQuYm91bmRp
bmdCb3goKSkpOwogICAgIENDTGF5ZXJRdWFkIGxheWVyUXVhZCA9IENDTGF5ZXJRdWFkKHF1YWQp
OwpAQCAtMTc3LDI3ICsyODcsMjkgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdMYXllcihM
YXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJbXAKICAgICAgICAg
aWYgKCFtYXNrTGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHVzZU1hc2sg
PSB0cnVlOwogCisgICAgLy8gRklYTUU6IHBhc3MgaW4gYmFja2dyb3VuZFRleHR1cmVJZCBhbmQg
YmxlbmQgdGhlIGJhY2tncm91bmQgaW4gd2l0aCB0aGlzIGRyYXcgaW5zdGVhZCBvZiBoYXZpbmcg
YSBzZXBhcmF0ZSBkcmF3QmFja2dyb3VuZCgpIHBhc3MuCisKICAgICBpZiAodXNlTWFzaykgewog
ICAgICAgICBpZiAodXNlQUEpIHsKICAgICAgICAgICAgIGNvbnN0IE1hc2tQcm9ncmFtQUEqIHBy
b2dyYW0gPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSgpOwotICAg
ICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNm
b3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgcHJvZ3JhbSwgcHJvZ3Jh
bS0+ZnJhZ21lbnRTaGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9uKCksIHByb2dyYW0tPnZlcnRl
eFNoYWRlcigpLnBvaW50TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdl
TG9jYXRpb24oKSwgZmlsdGVyQml0bWFwKTsKKyAgICAgICAgICAgIGRyYXdTdXJmYWNlKGxheWVy
UmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VS
ZWN0LCBsYXllclF1YWQsIGNvbnRlbnRzVGV4dHVyZUlkLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFn
bWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVy
KCkucG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlv
bigpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnN0IE1hc2tQcm9ncmFtKiBw
cm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7Ci0gICAg
ICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zv
cm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCBwcm9ncmFt
LT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgLTEsIC0xLCBmaWx0ZXJC
aXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVy
LCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgY29u
dGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkubWFza1Nh
bXBsZXJMb2NhdGlvbigpLCAtMSwgLTEpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgaWYgKHVzZUFBKSB7CiAgICAgICAgICAgICBjb25zdCBQcm9ncmFtQUEqIHByb2dyYW0gPSBs
YXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKCk7Ci0gICAgICAgICAgICBkcmF3
U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1h
dHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCAtMSwgcHJvZ3JhbS0+dmVydGV4
U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VM
b2NhdGlvbigpLCBmaWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJS
ZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJl
Y3QsIGxheWVyUXVhZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIC0xLCBwcm9ncmFtLT52
ZXJ0ZXhTaGFkZXIoKS5wb2ludExvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
ZWRnZUxvY2F0aW9uKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29uc3QgUHJv
Z3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VQcm9ncmFtKCk7Ci0g
ICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFu
c2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCAtMSwg
LTEsIC0xLCBmaWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5k
ZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3Qs
IGxheWVyUXVhZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIC0xLCAtMSwgLTEpOwogICAg
ICAgICB9CiAgICAgfQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLXZvaWQgQ0NSZW5kZXJTdXJm
YWNlOjpkcmF3U3VyZmFjZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIEND
TGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJh
bnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtLCBjb25z
dCBDQ0xheWVyUXVhZCYgZGV2aWNlUmVjdCwgY29uc3QgQ0NMYXllclF1YWQmIGxheWVyUXVhZCwg
Y29uc3QgVCogcHJvZ3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFk
ZXJRdWFkTG9jYXRpb24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24sIGNvbnN0IFNrQml0bWFwJiBm
aWx0ZXJCaXRtYXApCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXllclF1YWQmIGRldmljZVJlY3Qs
IGNvbnN0IENDTGF5ZXJRdWFkJiBsYXllclF1YWQsIGludCBjb250ZW50c1RleHR1cmVJZCwgY29u
c3QgVCogcHJvZ3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFkZXJR
dWFkTG9jYXRpb24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQzRCA9IGxheWVyUmVuZGVyZXItPmNvbnRleHQoKTsKIApAQCAtMjA2LDEx
ICszMTgsNyBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySQogCiAgICAgR0xDKGNvbnRleHQzRCwg
Y29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwog
ICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBpZiAoZmlsdGVyQml0bWFwLmdl
dFRleHR1cmUoKSkgewotICAgICAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJldF9j
YXN0PEdyVGV4dHVyZSo+KGZpbHRlckJpdG1hcC5nZXRUZXh0dXJlKCkpOwotICAgICAgICBjb250
ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJl
LT5nZXRUZXh0dXJlSGFuZGxlKCkpOwotICAgIH0gZWxzZQotICAgICAgICBtX2NvbnRlbnRzVGV4
dHVyZS0+YmluZFRleHR1cmUoY29udGV4dDNELCBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNl
VGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBjb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBjb250ZW50c1RleHR1cmVJZCk7CiAKICAgICBpZiAoc2hh
ZGVyTWFza1NhbXBsZXJMb2NhdGlvbiAhPSAtMSkgewogICAgICAgICBHTEMoY29udGV4dDNELCBj
b250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7CkBA
IC0yMzMsOSArMzQxLDkgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdTdXJmYWNlKExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgQ0NMYXllckkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0
aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCBzaGFkZXJR
dWFkTG9jYXRpb24pOwogfQogCi1Ta0JpdG1hcCBDQ1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVy
cyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCitTa0JpdG1hcCBDQ1JlbmRl
clN1cmZhY2U6OmFwcGx5RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIE1hbmFnZWRUZXh0dXJlKiBzb3Vy
Y2VUZXh0dXJlKQogewotICAgIGlmICghbV9jb250ZW50c1RleHR1cmUgfHwgIW1fZmlsdGVycy5z
aXplKCkpCisgICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU2tCaXRt
YXAoKTsKIAogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gZmlsdGVyQ29udGV4dCA9IEND
UHJveHk6Omhhc0ltcGxUaHJlYWQoKSA/IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGb3JJ
bXBsVGhyZWFkKCkgOiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCk7CkBAIC0yNDQsNyAr
MzUyLDcgQEAgU2tCaXRtYXAgQ0NSZW5kZXJTdXJmYWNlOjphcHBseUZpbHRlcnMoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogCiAgICAgbGF5ZXJSZW5kZXJlci0+Y29udGV4
dCgpLT5mbHVzaCgpOwogCi0gICAgcmV0dXJuIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5
KG1fZmlsdGVycywgbV9jb250ZW50c1RleHR1cmUtPnRleHR1cmVJZCgpLCBtX2NvbnRlbnRSZWN0
LnNpemUoKSwgZmlsdGVyQ29udGV4dC5nZXQoKSk7CisgICAgcmV0dXJuIENDUmVuZGVyU3VyZmFj
ZUZpbHRlcnM6OmFwcGx5KGZpbHRlcnMsIHNvdXJjZVRleHR1cmUtPnRleHR1cmVJZCgpLCBzb3Vy
Y2VUZXh0dXJlLT5zaXplKCksIGZpbHRlckNvbnRleHQuZ2V0KCkpOwogfQogCiBTdHJpbmcgQ0NS
ZW5kZXJTdXJmYWNlOjpuYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKaW5k
ZXggNDJjZGEzMjZjMDM4ZmNiZDQ4ZmExOGE2ZWY4MGRmZTk0NGQ4YjExNy4uZjQxMzJlMjBjZjhm
NTQzM2U0YWQyNGRmNmJmOTA2YjVkODFlNTAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNl
LmgKQEAgLTU3LDExICs1NywxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcmVwYXJlQ29udGVudHNU
ZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwogICAgIHZvaWQgcmVsZWFzZUNvbnRlbnRz
VGV4dHVyZSgpOwogCisgICAgYm9vbCBwcmVwYXJlQmFja2dyb3VuZFRleHR1cmUoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKik7CisgICAgdm9pZCByZWxlYXNlQmFja2dyb3VuZFRleHR1cmUoKTsKKwog
ICAgIHZvaWQgc2V0U2Npc3NvclJlY3QoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgRmxv
YXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCkgY29uc3Q7CiAKICAgICB2b2lkIGRyYXdDb250ZW50
cyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKICAgICB2b2lkIGRyYXdSZXBsaWNhKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSopOwogCisgICAgLy8gVGFrZXMgYSB0ZXh0dXJlIHdpdGggcGl4ZWxzIGlu
IGRldmljZSBzcGFjZSwgYW5kIGEgdHJhbnNmb3JtIGZyb20gY29udGVudCBzcGFjZSB0byB0aGUg
ZGV2aWNlLiBDb3BpZXMgdGhlIGRldmljZS1zcGFjZSB0ZXh0dXJlIGJhY2sgaW50bworICAgIC8v
IGNvbnRlbnQgc3BhY2UgZm9yIHRoZSBzdXJmYWNlLCBzdG9yaW5nIHRoZSByZXN1bHQgaW4gdGhl
IGJhY2tncm91bmRUZXh0dXJlKCkuIFRoZSBzdXJmYWNlJ3MgYmFja2dyb3VuZFRleHR1cmUoKSBt
dXN0IGJlIHRoZSBhY3RpdmUgZHJhd2luZyB0YXJnZXQuCisgICAgdm9pZCBjb3B5RGV2aWNlVG9C
YWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBpbnQgZGV2aWNlQmFja2dy
b3VuZFRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgZGV2aWNlVGV4dHVyZVJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0pIGNvbnN0OworCiAgICAgU3RyaW5n
IG5hbWUoKSBjb25zdDsKICAgICB2b2lkIGR1bXBTdXJmYWNlKFRleHRTdHJlYW0mLCBpbnQgaW5k
ZW50KSBjb25zdDsKIApAQCAtNjksMTMgKzc2LDIxIEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVy
bnMgdGhlIHJlY3QgdGhhdCBlbmNsb3NlcyB0aGUgUmVuZGVyU3VyZmFjZSBpbmNsdWRpbmcgYW55
IHJlZmxlY3Rpb24uCiAgICAgRmxvYXRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdDsK
KyAgICAvLyBSZXR1cm5zIHRoZSByZWN0IHRoYXQgZW5jbG9zZXMgdGhlIHBpeGVscyB0aGF0IG1h
eSBhZmZlY3QgdGhlIHBpeGVsIHZhbHVlcyBpbiB0aGlzIHN1cmZhY2UgdGhyb3VnaCBiYWNrZ3Jv
dW5kIGZpbHRlcnMuCisgICAgSW50UmVjdCByZWFkYmFja0RldmljZUNvbnRlbnRSZWN0KExheWVy
UmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNm
b3JtKSBjb25zdDsKKworICAgIC8vIEdpdmVzIHRoZSB0cmFuc2Zvcm0gZnJvbSB0aGUgc3VyZmFj
ZSBjb250ZW50IHNwYWNlLCB3aXRoIG9yaWdpbiBpbiB0aGUgdG9wIGxlZnQsIHRvIHRoZSBjdXJy
ZW50IHRhcmdldCBkZXZpY2Ugc3BhY2UsIHdpdGggb3JpZ2luIGluIHRoZSB0b3AgbGVmdC4KKyAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb21wdXRlRGV2aWNlVHJhbnNmb3JtKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBj
b25zdDsKIAogICAgIGZsb2F0IGRyYXdPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3T3Bh
Y2l0eTsgfQogICAgIHZvaWQgc2V0RHJhd09wYWNpdHkoZmxvYXQgb3BhY2l0eSkgeyBtX2RyYXdP
cGFjaXR5ID0gb3BhY2l0eTsgfQogCiAgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9maWx0ZXJzID0gZmlsdGVyczsgfQogICAgIGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0KLSAg
ICBTa0JpdG1hcCBhcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisgICAgU2tC
aXRtYXAgYXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmLCBNYW5hZ2VkVGV4dHVyZSogc291cmNlVGV4dHVyZSk7CisKKyAgICB2b2lkIHNl
dEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9i
YWNrZ3JvdW5kRmlsdGVycyA9IGZpbHRlcnM7IH0KKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7
IH0KIAogICAgIHZvaWQgc2V0TmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKENDUmVuZGVy
U3VyZmFjZSogc3VyZmFjZSkgeyBtX25lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyA9IHN1
cmZhY2U7IH0KICAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2UqIG5lYXJlc3RBbmNlc3RvclRoYXRN
b3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIG1fbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4
ZWxzOyB9CkBAIC0xMjcsNiArMTQyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJp
bmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE+
IE1hc2tQcm9ncmFtQUE7CiAKICAgICBNYW5hZ2VkVGV4dHVyZSogY29udGVudHNUZXh0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50c1RleHR1cmUuZ2V0KCk7IH0KKyAgICBNYW5hZ2VkVGV4
dHVyZSogYmFja2dyb3VuZFRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRUZXh0
dXJlLmdldCgpOyB9CiAKICAgICBpbnQgb3duaW5nTGF5ZXJJZCgpIGNvbnN0OwogCkBAIC0xNDIs
OSArMTU4LDEyIEBAIHB1YmxpYzoKICAgICBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBj
cmVhdGVSZXBsaWNhU2hhcmVkUXVhZFN0YXRlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwqLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRtYXApOworICAg
IEludFJlY3QgY29tcHV0ZURldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1bSos
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKKyAgICBJ
bnRSZWN0IGNvbXB1dGVSZWFkYmFja0RldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJv
bWl1bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsK
KworICAgIHZvaWQgZHJhd0xheWVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIENDTGF5ZXJJbXBs
KiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBpbnQgY29udGVudHNUZXh0dXJlSWQpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHZvaWQgZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiwgQ0NMYXllckltcGwqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJh
d1RyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwg
Y29uc3QgQ0NMYXllclF1YWQmIGRldmljZVJlY3QsIGNvbnN0IENDTGF5ZXJRdWFkJiwgY29uc3Qg
VCogcHJvZ3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFkZXJRdWFk
TG9jYXRpb24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24sIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJC
aXRtYXApOworICAgIHZvaWQgZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NM
YXllckltcGwqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXllclF1
YWQmIGRldmljZVJlY3QsIGNvbnN0IENDTGF5ZXJRdWFkJiwgaW50IGNvbnRlbnRzVGV4dHVyZUlk
LCBjb25zdCBUKiBwcm9ncmFtLCBpbnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNo
YWRlclF1YWRMb2NhdGlvbiwgaW50IHNoYWRlckVkZ2VMb2NhdGlvbik7CiAKICAgICBDQ0xheWVy
SW1wbCogbV9vd25pbmdMYXllcjsKICAgICBDQ0xheWVySW1wbCogbV9tYXNrTGF5ZXI7CkBAIC0x
NTQsNiArMTczLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3VyZmFjZVByb3BlcnR5Q2hhbmdl
ZDsKIAogICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV9jb250ZW50c1RleHR1cmU7CisgICAg
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX2JhY2tncm91bmRUZXh0dXJlOworCiAgICAgZmxvYXQg
bV9kcmF3T3BhY2l0eTsKICAgICBib29sIG1fZHJhd09wYWNpdHlJc0FuaW1hdGluZzsKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07CkBAIC0xNjUsNiArMTg2LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fdGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7
CiAgICAgYm9vbCBtX3NjcmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKICAgICBGaWx0
ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3Vu
ZEZpbHRlcnM7CiAgICAgSW50UmVjdCBtX2NsaXBSZWN0OwogICAgIFZlY3RvcjxDQ0xheWVySW1w
bCo+IG1fbGF5ZXJMaXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
ODcyYmNmZWY2ZTVhNzM0ZjUyY2UzMTU4Zjg5NmZhYTk0MDc4NThkNC4uMWUyNWQyOTFhOWVjZWI2
NTdkZWI5ZTFhOTI5YzdkZmNjNTVmYWYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtNzgsNiArNzgsMTMgQEAKICNpbmNsdWRlICJXZWJLaXRQb2ludC5oIgogI2VuZGlm
CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFBMQVRGT1JNKENIUk9NSVVN
KQorI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVy
LmgiCisjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFj
a2luZy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgbWFy
a2VyVHlwZXNGcm9tKGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1h
cmtlclR5cGVzJiByZXN1bHQpCkBAIC00MjMsNiArNDMwLDQ0IEBAIFBhc3NSZWZQdHI8Q2xpZW50
UmVjdExpc3Q+IEludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoRG9jdW1lbnQqIGRv
Y3VtZW50CiAjZW5kaWYKIH0KIAordm9pZCBJbnRlcm5hbHM6OnNldEJhY2tncm91bmRCbHVyT25O
b2RlKE5vZGUqIG5vZGUsIGludCBibHVyTGVuZ3RoLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFBMQVRGT1JNKENIUk9NSVVNKQorICAg
IGlmICghbm9kZSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gbm9kZS0+
cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlck9iamVjdCkgeworICAgICAgICBlYyA9IElOVkFM
SURfTk9ERV9UWVBFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlbmRlckxh
eWVyKiByZW5kZXJMYXllciA9IHJlbmRlck9iamVjdC0+ZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICBp
ZiAoIXJlbmRlckxheWVyIHx8ICFyZW5kZXJMYXllci0+aXNDb21wb3NpdGVkKCkpIHsKKyAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIgPSByZW5kZXJMYXllci0+YmFja2luZygpLT5n
cmFwaGljc0xheWVyKCk7CisgICAgaWYgKCFncmFwaGljc0xheWVyKSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9OT0RFX1RZUEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KTsKKyAgICBpZiAoIXBsYXRmb3JtTGF5ZXIpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX05PREVf
VFlQRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGaWx0ZXJPcGVyYXRpb25z
IGZpbHRlcnM7CisgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJsdXJGaWx0ZXJPcGVy
YXRpb246OmNyZWF0ZShMZW5ndGgoYmx1ckxlbmd0aCwgRml4ZWQpLCBGaWx0ZXJPcGVyYXRpb246
OkJMVVIpKTsKKyAgICBwbGF0Zm9ybUxheWVyLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhmaWx0ZXJz
KTsKKyNlbmRpZgorfQorCiB1bnNpZ25lZCBJbnRlcm5hbHM6Om1hcmtlckNvdW50Rm9yTm9kZShO
b2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIGlmICghbm9kZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNmIy
MGI4YzcwNWJjMjhjNDMxNzI5NGFmY2Y3MzhjMzVlZDcxZDBlYy4uNmM1ZTg3MjgyZTI0ZDhiZWU3
Y2FlM2FhNDRhYWVlMDZlN2U0YTVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBA
IC0xMDAsNiArMTAwLDggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlz
dD4gaW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAK
KyAgICB2b2lkIHNldEJhY2tncm91bmRCbHVyT25Ob2RlKE5vZGUqLCBpbnQgYmx1ckxlbmd0aCwg
RXhjZXB0aW9uQ29kZSYpOworCiAgICAgdW5zaWduZWQgbWFya2VyQ291bnRGb3JOb2RlKE5vZGUq
LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4g
bWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2ln
bmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9u
Rm9yTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwg
RXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDE1
Y2UwYTNhYzE4ZGZhNGZjZmJkMDk1ODI5MGFkMjYwMWU3NGQzY2EuLjA0ZDRlOTdkMDEzYTljMTVl
OWE3ODNmNjY2MDQ3NjcwM2M1ZTc5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKQEAgLTcyLDYgKzcyLDggQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgQ2xpZW50UmVj
dExpc3QgaW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKIAorICAgICAgICB2b2lkIHNldEJhY2tncm91bmRCbHVyT25Ob2Rl
KGluIE5vZGUgbm9kZSwgaW4gbG9uZyBibHVyTGVuZ3RoKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
KwogICAgICAgICB1bnNpZ25lZCBsb25nIG1hcmtlckNvdW50Rm9yTm9kZShpbiBOb2RlIG5vZGUs
IGluIERPTVN0cmluZyBtYXJrZXJUeXBlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAg
UmFuZ2UgbWFya2VyUmFuZ2VGb3JOb2RlKGluIE5vZGUgbm9kZSwgaW4gRE9NU3RyaW5nIG1hcmtl
clR5cGUsIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
ICAgICBET01TdHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JOb2RlKGluIE5vZGUgbm9kZSwgaW4g
RE9NU3RyaW5nIG1hcmtlclR5cGUsIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhET01F
eGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1w
bFRlc3QuY3BwCmluZGV4IDhhOWYzNWRjOGE3Yjg5YzBjOTRiZDc1MzdjNjg0NjRmYTc4YTZiYjgu
LjIyOTk3NDE0ZTA5MWUzZmUwMTI4ZWRmNGJjMWVkZWVjMTEzZTJiOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTExMyw2ICsx
MTMsNyBAQCBURVNUKENDTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJlVHJhY2tl
ZFByb3Blcmx5KQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9v
dC0+c2V0RHJhd3NDb250ZW50KHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9M
QVlFUl9DSEFOR0VEKHJvb3QtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSkpOwogICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3Vu
ZENvdmVyc1ZpZXdwb3J0KHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlF
Ul9DSEFOR0VEKHJvb3QtPnNldEJhY2tncm91bmRGaWx0ZXJzKGFyYml0cmFyeUZpbHRlcnMpKTsK
IAogICAgIC8vIFNwZWNpYWwgY2FzZTogY2hlY2sgdGhhdCBzdWJsYXllciB0cmFuc2Zvcm0gY2hh
bmdlcyBhbGwgbGF5ZXIncyBkZXNjZW5kYW50cywgYnV0IG5vdCB0aGUgbGF5ZXIgaXRzZWxmLgog
ICAgIHJvb3QtPnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWEz
NDM5YjJhZmIyZWJiZjQxMDExNzcwYzRkOTdlNmIzOTBmYmZiNC4uM2QxZTc4MGRjZDg5YmNlZGNm
MDZkNGQ5OWMyN2E1YWUzNWIwMmZhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA0LTA5
ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQmFja2dyb3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL2ZpbHRlcnMv
YmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGNv
bXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1
ci1vdXRzZXRzLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvZmls
dGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBjb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0
c2V0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91
bmQtZmlsdGVyLWJsdXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
Y29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnBuZzog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9i
YWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVy
LW91dHNldHMtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorCiAyMDEyLTA0LTA5ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRmlsdGVyIGZpbGVzIGZyb20gZGF0YVRyYW5zZmVyLmdldERhdGEg
b24gTWFjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tn
cm91bmQtZmlsdGVyLWJsdXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
ZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
OTllMmU0NTgyYmJjOTgzNjhiZDk1ZmZmOWZkMmE3ZWVjNWI3ZjU2CkdJVCBiaW5hcnkgcGF0Y2gK
bGl0ZXJhbCAyODYxCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5o
bEElQFdzJGxIYG9rPG19P29UbjNZNQp6QlFyQSNHZlA3Z0djIVlUQmE8fFhsKkUpb0d0MU9lTHNK
V2pMfn1NNEhCQU52dUtrYGFqdipDdS1yaExLJD5ib3cKejtePT1TeH5JblhLPkZjQmspajd9Vz9M
RzZXPykkR2BIbWF8THhGVDdEfSNWPTFPdFFOQE0zSmR7O2xFdXgjdjBsCno1MWM7RmQmfGwyaG1+
SzkhTkRoaWs+TG8tQ31UN2JNcEZXdmJIU1Q0WFRHczlHXzA9SnpgJjVpI0xifGZIcCY8YwpvZ3dk
MlJuaFFwQSFEdWMoJHAhSnxDd04hNCt8enZtWjJ2Tk55ODV9U2I0cTllMDJeb2hOQntyOwoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
ZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQwOGJkYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3Vu
ZC1maWx0ZXItYmx1ci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0
c2V0cy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tn
cm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY0MDIy
MTE2MjM3OTBkMThmZmM2ZmE1OGNjMDViNTA3MWZjOTdiMgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMjg4Mwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBX
cyRsSGBvazxtfT9vVG1+fnMKejB9SW9YKUtvSnxxZn0kVkx9UURqRz5iJTI8NVhpeWdCMFR3THlO
JGItPSFFQnhVUEQtSUVHWnJkMylFOCVnSXJJCnopaU0wdi1sTFFJSCFmaGl2YEgmZXkmfT4wO0ph
QmZnJjcjO2V0eVR1ITBfS0tmc3g/fGl4YDgwJit1WnJ4bmNXWQp6VmA9UGVeI2dOdm9fV1d+QFB8
aVNob05EezBWYWtIUFcrNDspQXYzM0hfTHFNUG5RNGUzO340KTNGeyFuKUtOOX4Kekx3eilTTSNC
ZU4pfEIxTno5JXtNSXhxKF9gMHBnUGhgTSY+JXs+TiY1OCpLejcjTmI2eEVVMUdNajR9bEZxI3Ja
CmhiSFFqWDc/UWNie00lN01xbnFBXnlNVjE/MjJXUSVtdnY0Rk8jczVTYS0wQUYKCmxpdGVyYWwg
MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpbHRl
cnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRl
ZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZmlsdGVy
cy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEg
QEAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3Jv
dW5kLWZpbHRlci1ibHVyLW91dHNldHMuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Zp
bHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAy
NTEwZmJhZWMxZjIxYWY5ZWNhNmM4ZTk5ODJiMzQwNTRhOTYyNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1v
dXRzZXRzLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD48aGVh
ZD4KKzx0aXRsZT5CYWNrZ3JvdW5kIGZpbHRlciBibHVyIHRlc3QuPC90aXRsZT4KKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CisgIC5jb21wb3NpdGVkIHsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTog
dHJhbnNsYXRlWigwKTsKKyAgfQorICAuZ3JlZW4tYm9yZGVyIHsKKyAgICBib3JkZXI6IDEwcHgg
c29saWQgZ3JlZW47CisgIH0KKyAgLnllbGxvdy1wYXJlbnQgeworICAgIHdpZHRoOiA2MDBweDsK
KyAgICBoZWlnaHQ6ICA2MDBweDsKKyAgICAtd2Via2l0LWZpbHRlcjogYmx1cigxMHB4KTsKKyAg
fQorICAuY2VudGVyZWQgeworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4Owor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAxMDBweDsKKyAgICB0b3A6IDEwMHB4
OworICB9Cis8L3N0eWxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBmdW5j
dGlvbiBzZXRCbHVyKCkgeworICAgIHZhciBibHVyTm9kZSA9IHdpbmRvdy5kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYmx1cicpOworICAgICAgd2luZG93LmludGVybmFscy5zZXRCYWNrZ3JvdW5k
Qmx1ck9uTm9kZShibHVyTm9kZSwgMTApOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICB9CisKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgd2luZG93LnNldFRpbWVvdXQoc2V0Qmx1ciwgMCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICB9CisgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KHRydWUpOworICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPCEtLQorICAg
VGhlIGdyZWVuIGJvcmRlciBpcyBvdXRzaWRlIHRoZSBsYXllciB3aXRoIGJhY2tncm91bmQgYmx1
ciwgYnV0IHRoZSBiYWNrZ3JvdW5kIGJsdXIgc2hvdWxkIHVzZSBwaXhlbHMgZnJvbSBvdXRzaWRl
CisgICBpdHMgbGF5ZXIgYm9yZGVycywgdXAgdG8gdGhlIHJhZGl1cyBvZiB0aGUgYmx1ciBlZmZl
Y3QuIFNvIHRoZSBib3JkZXIgc2hvdWxkIGJlIGJsdXJyZWQgdW5kZXJuZWF0aCB0aGUgdG9wIGxh
eWVyCisgICBjYXVzaW5nIHRoZSBpbnNpZGUgb2YgdGhlIGJvcmRlciB0byBiZSBibHVycmVkLgor
ICAtLT4KKzxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQgZ3JlZW4tYm9yZGVyIiBzdHlsZT0icG9zaXRp
b246YWJzb2x1dGU7IGxlZnQ6NTBweDsgdG9wOjUwcHg7IHdpZHRoOjIwMHB4OyBoZWlnaHQ6MjAw
cHg7Ij48L2Rpdj4KKzxkaXYgaWQ9ImJsdXIiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgbGVm
dDo1OXB4OyB0b3A6NTlweDsgd2lkdGg6MjAwcHg7IGhlaWdodDoyMDBweDsgYm9yZGVyOjFweCBz
b2xpZCBncmVlbjsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLmh0bWwgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zODk5ZDk2YTg3ZTYxNjkxM2I4YTIzMjI0ZjU5NjYxZDIzYTlkODEzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3Jv
dW5kLWZpbHRlci1ibHVyLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD48aGVhZD4KKzx0aXRsZT5CYWNrZ3JvdW5kIGZpbHRlciBibHVyIHRlc3QuPC90aXRsZT4K
KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgIC5jb21wb3NpdGVkIHsKKyAgICAtd2Via2l0LXRy
YW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgfQorICAuZ3JlZW4geworICAgIGJhY2tncm91bmQt
Y29sb3I6IGdyZWVuOworICB9CisgIC55ZWxsb3ctcGFyZW50IHsKKyAgICB3aWR0aDogNjAwcHg7
CisgICAgaGVpZ2h0OiAgNjAwcHg7CisgICAgLXdlYmtpdC1maWx0ZXI6IGJsdXIoMTBweCk7Cisg
IH0KKyAgLmNlbnRlcmVkIHsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMTAwcHg7CisgICAgdG9wOiAxMDBw
eDsKKyAgfQorPC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgZnVu
Y3Rpb24gc2V0Qmx1cigpIHsKKyAgICB2YXIgYmx1ck5vZGUgPSB3aW5kb3cuZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2JsdXInKTsKKyAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0QmFja2dyb3Vu
ZEJsdXJPbk5vZGUoYmx1ck5vZGUsIDIpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworICB9CisKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgd2luZG93LnNldFRpbWVvdXQoc2V0Qmx1ciwgMCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICB9CisgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KHRydWUpOworICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cis8IS0tCisg
ICBUaGUgZ3JlZW4gYm94IGlzIGVudGlyZWx5IGJlaGluZCBhIGxheWVyIHdpdGggYmFja2dyb3Vu
ZCBibHVyLCBzbyBpdCBzaG91bGQgYXBwZWFyIGJsdXJyZWQgb24gaXRzIGVkZ2VzLgorICAtLT4K
KzxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQgZ3JlZW4iIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsg
bGVmdDo1MHB4OyB0b3A6NTBweDsgd2lkdGg6MjAwcHg7IGhlaWdodDoyMDBweDsiPjwvZGl2Pgor
PGRpdiBpZD0iYmx1ciIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjMwcHg7IHRvcDoz
MHB4OyB3aWR0aDoyNDBweDsgaGVpZ2h0OjI0MHB4OyBib3JkZXI6MXB4IHNvbGlkIHdoaXRlOyI+
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItZXhw
ZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmls
dGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTNi
YzM2M2M5Y2U4MjJmMDBkNzhkMDYwOGQ3MjNhNTY4OWZiNTMwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAzNzc2CnpjbWVIS2VAeFA4OURiJGpyJDQmdU83eHU2WmdzVkZOQGJEIyhBRFg2d2FkPElg
Sz17fTkmfCM5czBkPC13dVk0egp6eVBIVmBPNnp2ZmhTQiNiZilmPyZKN3RUJkJgMmdEQm9kbGdm
TzNrMiFoUVNldyk/YUg/IzRnd2ArNDdZZCFLakQKektGezspejQoM2gtc21MPk84QH1UYEBZUlEx
aS12aTBBUWQrNzw2YUZYRGh4JHJ9WShDUCh7Jj88UlYlKl5FQjkkCnpNJXNxb059dj54RFJePyk3
U2lVVEEyeDRJckh+M3FnX0pHbXV5TUZpMFlKPjVlVk14dHZxa1QkVF92Qko8Nz1QQwp6fEQwck1K
bHU2SVpveT1iLT03dD87SzhFdjJAa0dPemJrOUkpcH09bGpeP1Q0KG5mPEZ7QXVmc3tMOExwLURN
blkKemlVNzVTSH1XX0RKaW1NYjBrRSt5NS1lTihBMSF7PCheN2BpNVJWKytkRzsyKkNVNjs8OEtn
eEZYPDN6WiU7USVOCnpAfUNYIXRNXk8kbF5oUFNJdFI9UzhQPnJ+cV9rdSRHNjgzfU12P1htbXJw
elFVPDBOaHFjRXxEa3d9cDBEZUBhOAp6QlNuN256RGRkO0glNGw3WCVmd2BDUzx9PiUydExyQSMk
KVJHIS1POztEWGVaeSo/PDxLflc5M1k7VGtBRysyZSEKeiRgQENxaktzKjVBak5xY0dvSVF4aTFZ
YWgrO25jb29ISG59MVN+M2xOJjImVEN5ZTVhVnpyRTJHUmFpTW1WRTJtCno1fVZyPWlALUB7c3JF
QDkxbGxpbm0kZHJ2KyNCbElOdkEtfmVJTC1PX3pKYm4jX2YyQ285M0hzX0cqI3I1IzF6Mgp6QUB2
cmFjdHAlMnptTz5gUTxWPH5UTmc7cWdaOVNxI2pQWjQmNW99M1l+S1czITQzRnp5PCVLP1p+ZWdm
KXhEK0wKemFVenFeSVgjSlYqT1JjYUo1bTw/PHMzNiRjOWZsWSpCe35lVnV3SnBVNEoqNTEtbkw2
bUk2OUFJT3wzNiNZeVM8CnpmUGRvM298ejtHVldDN3soYjE5QVdWYyNhRVV5KUArZT4jfHpsaWJO
SG1yZXBCJmJQQ2dTQDBwbCYtNGE/M2g+Xwp6b2JiZmZiJGZTNG4mMnEyV2p0YC1Dc0V8YGI8Z2pt
MUw3YT9rKjNte01QS1BpUmtPZUh7UF5DMHBBPWRKdnc2OEUKenE3Z2lPQj09WXxAajVJMz9CYkts
QSlWMXptTyEzIVAzLTsyJjFeJTBJTXIoZlF5JTN+Jmh6WHN0YzhPQFc3WkFICnpzOWI9RWBUQlZw
c1ZDIVcwMTdjbiFLJEB6eENvT0Y/dTN0NGZ6VjlVZ2ZfKUVqTlU8LXk7bUVJNz9PKClvVmFyRQp6
ckRHZkZjfmgyP1NSTlQ3bVJIUiN6Smo8M2VjT1UtQTd7cGFsI3g+eThrUj9BJTlHNShlIylfZk0k
WE54TXRxZGsKenhlbEhvTjtLJUFJT1gmYTtnbUFTQDQ/Z3g3fmorfTZPSzNjUUdGQ3ZUMFN4NDxZ
NFFvR0x+Kj12OUVfXjNiVmxJCnpibT83PE08cUVYK1duWVgrYCNZaU89R3Y4YXBYM2NCRzFeNWRT
Uj5wJDczaktscjZFfDUzY1RKQ1MxcktBMWtaJgp6K2xMWUtTVU5eayo8XlhOeFFCcTlHeHtsbjs2
KilvRHVQTz1BWXxtdnJBOHF0aDE7ZEp4bmwkNVd6WlEjWnF7ajIKeiRhYWBPciZyUHxDOUQ0ZGJy
YyZvWlAkfSsxP3sqVkpHSEclPXBJNE5Lcnk9OEdXSiNEd2EoJlFgM0xnUVRZVn5ECnpvVSF7KyVN
cilaYEFjZ0I8LXxKWFAxTSFrZUFJQkFSd1BKTHppcDE0SlNFOX1xRWAtLUpWcWJWRmc5RiNaVmUz
Qgp6WCUycj57bEJBWEZTOHByXiNZUlckTDIyVHNTazx3SzE5dSUlYjQrMyUwekpzZDFrdDlHKG1s
fiM7Mm5LUG5qVloKendQSlJBVS1HQHpKSVBJNUQ/bilCQz5EKSpGNGVJQXF1VV4/cGZHamU5MHt1
K3RiK2ZFM1pfJHs7eyhtMlNFMz5HClBPQTdYN1dvT0Z2b0grTTQhVGNCdAoKbGl0ZXJhbCAwCkhj
bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29t
cG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3Vu
ZC1maWx0ZXItYmx1ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIxMzc4OTE3OTFmZTk2OTI3
YWQ3OGU2NGIwYWFkN2JkZWQwOGJkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1
ci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJs
dXItb3V0c2V0cy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9j
b21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3Rl
ZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDNiYTZiMjM1YjIyODNlYzZjOWNhMWZjYzdjZDRiYjU0MjhhN2Ux
ZQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTkwNAp6Y21lSTA9fnErdF9RbnJgQjJLZ3BSOGNf
TnN+cj9qQSVRPzRSI0I+MHhDa0wzajJhMSQ1VGN9QGhEbkB6RTF8WCQKejZiVl5NNXk9RCpQNkVM
Jk5LM1I0eFBhIyUyX3pzd1l5dEBnQTtAXitAQW5WZlM5ZE1mXjNgeyh2LVdxYmVhXkdACnplbS1h
YV52fEd4SDdneGYwc3llKSRvS3hvMGw7Yi0wOWZLeVNlbDx+K18zUldeWVFoTWhqMmQ8NjV8UEVT
e2VsKQp6NVojZDtOWTdLbWVWKDNQQ3B9SVFrY2QtNmNMSVRrQkFrcU9fYWRZPE1PKn57YH07QHl6
WTlCOEprfXE9Nzx5VzgKendSNms4S0U+ISQhJlNCUGVuak5nQyFNfih4dU5XdmpKX1B5JnJlVzA5
dWBGTz01Nj9XSWw2RGZPLWckTjBLQT91CnpFR2AyOHpxfT8oVjh3YkkwR3pOfjEjQ01PWDh+TmMt
Mz9zV2xlLU1+V00+cnNKaDhTMV9UVDxjZ0lATldVOXZRUQp6SVc+bUdqUlZpLT1qUWRYNzhtNHVu
KlpCKG87JXBfZFhjO3wmKDBCJT8jNCg+RCFoKkdDWFZjPE0+YlkzbyNOKysKell+KHFWakhab2tW
O3pHTkpkfW94OT1WTj5aSm5kcyplaVF6bG49YHxUSSRsQSpwUTZgR09xX040PH1SVnMxVihfCnpn
UGslYXZWbiZ0aiRAVVZkWVppOWYtVlUmR3xiVnQxQz8tPio0fXhUbyVMTSFTZyslWTlqK31zPCZp
KVNkJSE9Kwp6eS1LXk1vK0xFfGdjJVdoaDdkJStjeCskLWhCYm9RUTYoVmVhWm54azskQlElezYo
LXxLZEI7O09FSHk1PHkqSXUKekAyMkAzJVAtYG93bCZlODMjTXlHM291b2o/bjh1Q3hjblZZZTU7
T0MzOC13bXFYdzY2M3pNVnNQPk4qSjhMQVpHCno2KE1CQjItJnsmRS1kZ20zUS0wM0xiVHtDVzk2
YHF5aWtlY21BQ0Z8cDR8fGZpKHU9O2t8TFQpbGNsN0NKVWpDbAp6e3JSWnpJdjJJazl6WWVZPUVi
V2FwYGJ6MDxLNjd0PVFoYjdJeHZXbyhPR2Q3Kys3TD4tS35mfnlvPlZYKyNDNjsKemZyckE/MHs5
a3dDeW8qaEo9YG16TDsmTjMoZTcydVVKUlBJK1JzNzkmRWUtbElnZ0ljT3QhdkM2JCFoaWsySit3
CnohNDVjaTEyXjU3Rng2YHFpenlaUDt0KFdKLTVNZFY/YWg7MVBfVyRUTDNyJGZaV0IleSM5TGch
Qmt9UTZESlJIQgp6YyQ2NjNKQEkoOEB2JF9FJT00Uz0hcFF+RyF3cldxbEBabTQma3RLJXVSazN9
TmlzcVclb0BDdnVJZ2toZV9hYU8KenlVIUZTXnwwQG0jQUVZbXVAdGUmZTJ1Y3psSXhfcSMzITxe
OygkfXBoJD5Oc3QpUFh8R1dJQE1xdlItI09yKEAyCnplXnQlaDwtQDh0NSQoKnwrajwqT3hjKi0l
alRBJHN0PGxBJlcwYlpJQnZtVVAtfWAjKXsob2J2YlV6O0dqT1VObgp6YHEkb2c2cUYwSDNUbTl6
PysoMSZsUXozeSg2NTBiQiE9X0xpSFZSUmsmbGpmNjtqPlMqX3VwaUcmZ0xqPmxVMDsKekp4aSVt
USlTUCF4YC17UndaaUYlZzYoaHRpLS0rQSRQMTBiYTZfcylENXRAYXp3WUkhQnUkcHZiZFBlPWBk
K0tyCnp4dEVwSnhecEtAMyRMen14NHc7ZExaLTgjckZPaGRKZXBARyFYRk1WJkZjKGNONUAld2Fg
c3UxY1RDVF9hfX52Kgp6Tm0qZCFQKDs1dj5lbCRWdGBPSjZgYWp6SyowJUctTk0mailtX3QwQlIy
a1YxdztBTWo2UStsc1R2NS1UMCVvP0UKeml2aiNpZG8jaSlzOV9aRDkySi1VeWVeemwlRz1qMGNA
K1ApIyUlKiFPY0N8TSUwI3sqbktxNCpKcURHRGdnVWtFCnpGYGIlS0JmUX5tdkYrOGJ4bk5uPmBD
Rz0hSkRNVFBrTD8tPCgwfUdyeEJgPWJ8MilkZ0pBIVd2RkhLbnhAbUg2cQp6VHIhSHBlbnBgTzsx
Z09+bFMwZHhlZlBeZGt6a2hZaylebjVPeDxAakZVX1RUQiRhLX14N3h7JCokWlZlc3NvfX4KekdP
Vm42eyUpTWJGRXBxTDU4SEBzOG8lTlgpeEp0JlhIOzxJM09FMVNHSDdUYmQheHFCdFlFfERDPTQx
RmM+PSg5CnpKKiM7d0pDPztfN1p9YFkkfiVYfHhgU3dfSz5sZT0xUSRzYl4taX5YX2Y8fiMmT0g+
bT5fQUgrZzkyTjM7PmBXegp6VUtMWlM2YElTeU5BI2pRRXA7dHE3V2hPR1omZVlacjxFZ09eXkB3
bENmfGwhPClwPSpQVTNhZjR8fjxgWWNAKygKemx4c302MipTfGRqV0swYE8+bFlBOCs0dEB5e0Mp
Z0AqNXxPVmNabDtMR1JILXJCfEFJMUdYc1o8Rm5BbylMaW92CnpVczBiTj1qaShLdkVjemQrQjAp
PVNuKkM9ZTBvfkVPdX50UEk3Q25zYkFFaCZVQDhUKlJgN1RrYTl3Z0xqeFlQOAp6PC13Z0g+c1Bt
Ym43aHB4M3hMWmRUe3hfJF98X2x9M3oyOzUtVkZOd2JNamBXOCRzXmRGbEo2blE8UkdWMyVXdU4K
ek5SPWwtV2dXS3FFRFg0bksxT1MtRWZiYkJnekRDczspXzVTO31ndGhfPjJTWk9Ba3lgcVM8VGox
YjBfeHMoO2VrCnpDPC1PMXdObURlLSRgfF5Da2RKMD5sYmdXZzN9UHJVdnl8RCVLTmR2ezk1YzlV
UWI3a0gxX2slbDR4a3MhWjxiNAp6SUJQdjRYV0g0cGE8VnY2RiNkTkwrbzBZUGVERFkwWTJCJGZt
Z2kwfXkock40RVl3aThQKndWX1I/fEE4ejBkckcKeiE8bHNBNFZNKz9mMHBlTyg8fVJfS1E9YW4z
SUc+Zkh7JVNUWFJLZUZ1dzw2QnIwbHtLZj5BRC11a1ZSJFZNMTF3CnokXzloK0RNdGRvemp3e1dO
OWxnb29uK3owcE03eUArMmhlMjduWXY7NihyOWthI1hKTiZNTGRjbklwaldieXttKAp6NFNPVlph
bEVwelFYdFVKdFZ7e0tSKjlaOEckc0g4bTk+bDN0QUdLIUZGdHNLe2IwJTlXOChXP1Z5d3Q7VXk2
RjYKemV0Y24oV3g4WnE0Sjt3ZFpCe3lidUZlcT05MTlPVXJPJUcmM052cVhiN1JyeGBONCtHITF3
UGlIX2N2UT1qfiNzCnomekBlYHZzQyVuaX5YeEVzMFI7UGxKNmQkbSFKN2x4dCkxJUcrXzQ2eCNu
R0tvMmJVXnhrazh5NylIYzg2WiU2RAp6clohQ1ppfG9ta00mND1RYHBtMzhjRUlnNjF8eDM8bk0x
PkdTdUpjNUxjPGRVYX0+IXNQY0VLM3lnd3NDc21xZTYKenQ+fTh7ampeJGI9YFc/cmZUeG53SUY9
JUBXSiYpTHFxS1hEPFpfXnJhREd2JTxZRCl5SHQ4YjVSRzFDRitaZmE2Cnp1Slohczd6c2RBZl9h
e2ApajRldEM7Z0dgaz4kJjRNfmFfOF9eQGdoYnV6P1UoVHl3Z2ExUEF2RDZObmtvQWp1bwp6Jikl
VzRxVVp9Mj9gTWRrRlF3eEFaaWtmRXQod2ljUUlkI3w+fWJjODw5X0NQTzswSjZpPDxhPHJ8c1NZ
VCgzN3IKemlqbVpTemxfQD9qej18dkpgfXlwUGBkc2JSfXhoeGNBSGgyU342I1lTZ0p0YWxoa0tU
b1N1N3NXO1U9NWl6Mj93Cno1Tjk4RTdOQ0NkY2lXe3hRJWwyeFp5X1ltX34jQlF2T2VIaGM/Zio+
ciRiNXxpNT0lK15KMyZGb3VhWFlHbFI3Mwp6Vjs7ZTJZNGhUU2NraDdsPyp5QjEjXllmJGhRcilL
bHRHelhkWURYVU09OVBeeVR5dW5NUngwND1ZKnJRI2B8bXIKemtIa1E9Wlleem5PTUgwKSNjYSVL
dE5jR0NXeXFKcXJEWkEpSVEwfih2PClWNUlTVU9LRT0tSmNBVE1rPjtvREUhCno3fGYzSWZ9bC1H
PC1pIWxySFdvdFhsb0NJbT5xOU9wfXpNcE5LQXxLe2YxT1ckcSZSdyFgKDw7M3htcn1oZmRVagp6
Yn5QZzdMMTBCNEYlQWxpVz9gP2EpbUBAbT5ieDUwbkBecmAoVE88YlNoaDkxeFp1cm1eNnZaIVhs
ekRVaz1yezwKenJ0eiM0KUE/OChEYV48KiElaDVgdSo4QjM3Sjx4Z2o0aDgkQDZXP2whYFZlY2Vn
K3glV2JVekFsbEE7ZSU+SztYCno4P3NIKzc2WWBYZU59TTNGMjl1TXlyOXgmT3tyIz87ZXBacHZs
UGE4b2o5YmxxaFhZJCl7OzxuPlRUZ2VWO05QVgp6RF5GVWkkJj9DfGVran03UjNeflZ2Z1h0T0Yh
bCRweFheTE5PZ2IpQmokNnBlbE1ufH1TdGJ+e0VqNU1ePlpwOFEKej01bEFIM1c1KykqSDZRdEJ4
VzU5KWwkb2gtaEZzQFcjZTJnRnBlQEMzNHN3I2lDajVhUDBhKUlEdygkTUQyO0tSCnpFYmNyXkhC
LUlJcnp1Sl5hPVU3T2JURFB6OCVIJm0leik2a3NnbE1zV0ZHKUI4TE1wSTw1PEZ0alEmVispLStP
YQp6Vy1DSEQzVDVjeiVYdW1+UzlHSGlQc1ZfWk41dX5ZaSgpIW4kSzxjZFpNNVN9eFEqYnszenZi
SnQ+KjZLa2dFRy0KelFsbllLRjRBMFh5aHUxJkQ9e2gpT1I/MGs1VWxhc09tVm9TNCZSPVRpZTQ/
dTc5RWAtJStLdTIta2teZmQzbkhSCnooYzF3KColZDJ0MSRWQzJGZWt1c0x5VFRpRGdgQ05ldzEm
NTNuZn45NTMpWT5lJj88WGJoRWNMVHVoNXgoYFR2awp6KTF5YzdvaE4xOHxHSDwhTl5NYXQ7eExI
VWFfQ1RJLXtDZXReMCRtZlN3QzxRUlU4VjkkNjFITm51ciZUPU5fe2cKemhsRCsoJGp8NVo8YGx5
IyNXY0BNKHxTdkBoVkU0KC1zTzBNWjFHNmJ1JXh9VEhFez9AJjR+N2VaRjxaYHlvST93CnpGR2pL
V15eLXpkSU8kOCtUU204cl5DdCsodUBwT2Q7RWNIfTlwcTByNWRFN0BxKkVGdXBaakwyRTtJRz9t
UlF6dwp6OTBwUzB3QSNPN3d2Y18kYX1EZHNjTHxqQnl6YEN1bnZRaSRiSjhRYHF5eGFUaShzKU4x
MnFnZTtWMkIwYDQ9dG8KeitfK2I+IVZmaiRVSEB4RCZweS1IcnRUbWZKTm9BN0prSWNvUWtncjBW
TFlXKiZ1OUtXLUomJC1NdjBaOG5BSGk9CnpmMyFkSGY3ek9APU5oZm88bzd+IVZyUDFjZUhhIzch
KlpONXtATmttcztkeHxtPFchfSQ9ejxpXjslKmE8eXdvIwp6RFg+U1Bva1hUb3c/KT5zQXZAQzJ6
T3tsK1R6ZTBuTVk2cnszR3AxVS1nVTQtRDlWZUZhczZ7OWYzcTA0XiF7X3YKemhldzlCcDdQcko5
OHdzRlhSWih6Rz42N1AxWUpSXk1BOVNTWHR1LU1HRiFEdWQhe1U1e2NobUNkMVQxOWdQMWw0Cnom
Pi1VczlXRUI3cSZpY0lpUCRkZlpeQGReX315RHxScEdUXkZVfk1QbXNPbHlLPSFyaTFTaC0jP1Fm
VUVkfWwmVwp6RU51VzVrMWY+YVNPNkQtfDB7ZiV6RTwrZzVnM3BoYF5ZKlV7eXlhK0hHUjBkdSNl
aCgpYjQrfSUzWld1KipvPmMKVUJOJHBeVVUzNlE0aDh1TzQjWnZqNEA9MTtydkx4fAoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmls
dGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJz
L2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBA
QAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136340</attachid>
            <date>2012-04-09 16:46:55 -0700</date>
            <delta_ts>2012-04-09 17:46:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80046-20120409194653.patch</filename>
            <type>text/plain</type>
            <size>61384</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGNlZDg3NzIxZDlmZmFl
NTRlNDg1OTlhNjRlZjc5Nzk5YmM1M2Q1OS4uYWEwNWFmODMzZjI2MTFjYWQ1YTkwYmIwYzZhYjBk
MDY3MjliNGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA0LTA5ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQmFj
a2dyb3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhY2tncm91bmQgZmlsdGVycyB0byBM
YXllckNocm9taXVtL0NDTGF5ZXJJbXBsLiBUaGVzZSBmaWx0ZXJzIGFyZQorICAgICAgICBhcHBs
aWVkIHRvIGFueSBwaXhlbHMgaW4gdGhlIGNvbnRlbnRzIGJlaGluZCB0aGUgbGF5ZXIgYW5kIHNl
ZW4gdGhyb3VnaAorICAgICAgICBpdC4KKworICAgICAgICBUaGlzIGlzIGRvbmUgYnkgYWRkaW5n
IGEgYmFja2dyb3VuZFRleHR1cmUoKSB0byB0aGUgcmVuZGVyIHN1cmZhY2UsIHdoaWNoCisgICAg
ICAgIGhvbGRzIHRoZSByZWFkLWJhY2sgY29udGVudHMgb2YgdGhlIHRhcmdldCBmcmFtZWJ1ZmZl
ciwgYmFja2dyb3VuZCBmaWx0ZXIKKyAgICAgICAgYXBwbGllZCwgaW4gdGhlIHN1cmZhY2UncyBv
d24gY29vcmRpbmF0ZSBzcGFjZS4gVGhlbiB0aGlzIGlzIGRyYXduIGJhY2sKKyAgICAgICAgaW50
byB0aGUgZnJhbWUgYnVmZmVyIGJlZm9yZSB0aGUgY29udGVudHMgb2YgdGhlIHN1cmZhY2UgaXRz
ZWxmIGlzIGRyYXduLgorCisgICAgICAgIFRlc3RzOiBjb21wb3NpdGluZy9maWx0ZXJzL2JhY2tn
cm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy5odG1sCisgICAgICAgICAgICAgICBjb21wb3NpdGlu
Zy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXIuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6
YmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1cmZh
Y2VRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJh
bWVidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6aXNDdXJyZW50UmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1c2VNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
OgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpiYWNrZ3JvdW5kRmlsdGVycyk6Cisg
ICAgICAgIChSZW5kZXJTdXJmYWNlQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAg
ICAoQ0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmJhY2tncm91
bmRGaWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VidHJlZVNob3VsZFJl
bmRlclRvU2VwYXJhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZW5kZXJTdXJmYWNlOjpkcmF3YWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUJhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpyZWxlYXNlQmFja2dy
b3VuZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpjb21wdXRl
RGV2aWNlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y29t
cHV0ZURldmljZUJvdW5kaW5nQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFj
ZTo6Y29tcHV0ZVJlYWRiYWNrRGV2aWNlQm91bmRpbmdCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZW5kZXJTdXJmYWNlOjpyZWFkYmFja0RldmljZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclN1cmZhY2U6OmNvcHlEZXZpY2VUb0JhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OmdldFNrQml0bWFwVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVy
U3VyZmFjZTo6ZHJhd0NvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFj
ZTo6ZHJhd1JlcGxpY2EpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVycyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmg6Cisg
ICAgICAgIChDQ1JlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJm
YWNlOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1
cmZhY2U6OmJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6YmFja2dyb3VuZFRleHR1cmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QmFja2dyb3VuZEJsdXJPbk5vZGUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAg
ICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAy
MDEyLTA0LTA5ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQ3Jhc2ggZHVlIHRvIGZsb2F0cyBub3QgY2xlYXJlZCBiZWZvcmUgc3RhcnRpbmcgU1ZHIDx0
ZXh0PiBsYXlvdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUzZDgzOThhY2E3ODEx
OTIwMmQ4ZjJmNTRjZGQwYWU4OTExM2ZiMjUuLjI2NWE4ZjBkMWY2NzMwZWMxY2I0OTQ0MTkwN2I5
NTU3NjFkYzY5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTItMDQtMDkgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBCYWNrZ3JvdW5kIGZpbHRlcnMgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NM
YXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTA0LTA5
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTEzNTYxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRl
eCAyYWQwOWI5NDhhNDNiYjNjZTNhNzE5NTFmYzdiNWQ5ZTEzMDBlYTU1Li5lNDI1ODRjNmU4YzA5
NTFmOTVjNDQzZGZjNjBjZTE4MDUyYmIzOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAt
MzIyLDYgKzMyMiwxNCBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldEZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAgICAgICAgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVk
c0ZpbHRlckNvbnRleHQodHJ1ZSk7CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dy
b3VuZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMpCit7
CisgICAgaWYgKG1fYmFja2dyb3VuZEZpbHRlcnMgPT0gYmFja2dyb3VuZEZpbHRlcnMpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2JhY2tncm91bmRGaWx0ZXJzID0gYmFja2dyb3VuZEZpbHRlcnM7
CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwogdm9pZCBMYXllckNocm9taXVtOjpzZXRPcGFj
aXR5KGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgaWYgKG1fb3BhY2l0eSA9PSBvcGFjaXR5KQpAQCAt
NDc0LDYgKzQ4Miw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCogbGF5ZXIpCiAgICAgICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMoKSk7CiAK
ICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKCkpOworICAgIGxheWVyLT5zZXRCYWNrZ3Jv
dW5kRmlsdGVycyhiYWNrZ3JvdW5kRmlsdGVycygpKTsKICAgICBsYXllci0+c2V0SXNOb25Db21w
b3NpdGVkQ29udGVudChtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQpOwogICAgIGxheWVyLT5zZXRN
YXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CiAgICAgbGF5ZXItPnNldFNjcm9sbGFibGUo
bV9zY3JvbGxhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBiOTgwMjJiNTJkYTU4YjkxOTdj
YmY1NDQ4Y2I2ZDQwYTlhMDdjMjcwLi5hNmU4ZGIxMmUwNGY1MTY5NjQ2NDM1MjI0NDllNmM1OGM4
YTljOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xMjEsNiArMTIxLDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogICAgIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0K
IAorICAgIC8vIEJhY2tncm91bmQgZmlsdGVycyBhcmUgZmlsdGVycyBhcHBsaWVkIHRvIHdoYXQg
aXMgYmVoaW5kIHRoaXMgbGF5ZXIsIHdoZW4gdGhleSBhcmUgdmlld2VkIHRocm91Z2ggbm9uLW9w
YXF1ZQorICAgIC8vIHJlZ2lvbnMgaW4gdGhpcyBsYXllci4gVGhleSBhcmUgdXNlZCB0aHJvdWdo
IHRoZSBXZWJMYXllciBpbnRlcmZhY2UsIGFuZCBhcmUgbm90IGV4cG9zZWQgdG8gSFRNTC4KKyAg
ICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUo
Ym9vbCk7CiAgICAgYm9vbCBvcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZTsgfQogCkBA
IC0zMTEsNiArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9kZWJ1Z05hbWU7CiAgICAg
ZmxvYXQgbV9vcGFjaXR5OwogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOworICAgIEZp
bHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsKICAgICBmbG9hdCBtX2FuY2hvclBv
aW50WjsKICAgICBib29sIG1faXNEcmF3YWJsZTsKICAgICBib29sIG1fbWFza3NUb0JvdW5kczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDBhZDczYjQ2NzJmZWMy
OTc1Y2MwMWVmODNjODUwOTY5NjRlYjM5ZGIuLjFmODI0MGUzNzI1ODI2MGU2NWNlNDMzZjY3ZTQ5
MDZhZTEzMDMwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVk
ZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR2VvbWV0cnlCaW5kaW5nLmgiCisjaW5jbHVkZSAi
R3JUZXh0dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJM
YXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKQEAgLTUx
MiwxNCArNTEzLDc1IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3Jk
ZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogcXVhCiAgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfTE9PUCwg
NCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCA2ICogc2l6ZW9mKHVuc2lnbmVk
IHNob3J0KSkpOwogfQogCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91
bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBxdWFkKQoreworICAgIC8v
IFRoaXMgbWV0aG9kIGRyYXdzIGEgYmFja2dyb3VuZCBmaWx0ZXIsIHdoaWNoIGFwcGxpZXMgYSBm
aWx0ZXIgdG8gYW55IHBpeGVscyBiZWhpbmQgdGhlIHF1YWQgYW5kIHNlZW4gdGhyb3VnaCBpdHMg
YmFja2dyb3VuZC4KKyAgICAvLyBUaGUgYWxnb3JpdGhtIHdvcmtzIGFzIGZvbGxvd3M6CisgICAg
Ly8gMS4gQ29tcHV0ZSBhIGJvdW5kaW5nIGJveCBhcm91bmQgdGhlIHBpeGVscyB0aGF0IHdpbGwg
YmUgdmlzaWJsZSB0aHJvdWdoIHRoZSBxdWFkLgorICAgIC8vIDIuIFJlYWQgdGhlIHBpeGVscyBp
biB0aGUgYm91bmRpbmcgYm94IGludG8gYSBidWZmZXIgUi4KKyAgICAvLyAzLiBBcHBseSB0aGUg
YmFja2dyb3VuZCBmaWx0ZXIgdG8gUiwgc28gdGhhdCBpdCBpcyBhcHBsaWVkIGluIHRoZSBwaXhl
bHMnIGNvb3JkaW5hdGUgc3BhY2UuCisgICAgLy8gNC4gQXBwbHkgdGhlIHF1YWQncyBpbnZlcnNl
IHRyYW5zZm9ybSB0byBtYXAgdGhlIHBpeGVscyBpbiBSIGludG8gdGhlIHF1YWQncyBjb250ZW50
IHNwYWNlLiBUaGlzIGltcGxpY2l0bHkKKyAgICAvLyBjbGlwcyBSIGJ5IHRoZSBjb250ZW50IGJv
dW5kcyBvZiB0aGUgcXVhZCBzaW5jZSB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSBoYXMgYm91bmRz
IG1hdGNoaW5nIHRoZSBxdWFkJ3MgY29udGVudC4KKyAgICAvLyA1LiBEcmF3IHRoZSBiYWNrZ3Jv
dW5kIHRleHR1cmUgZm9yIHRoZSBjb250ZW50cyB1c2luZyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMg
dXNlZCB0byBkcmF3IHRoZSBjb250ZW50cyBpdHNlbGYuIFRoaXMgaXMgZG9uZQorICAgIC8vIHdp
dGhvdXQgYmxlbmRpbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBiYWNrZ3JvdW5kIHBpeGVscyB3
aXRoIHRoZSBuZXcgZmlsdGVyZWQgYmFja2dyb3VuZC4KKyAgICAvLyA2LiBEcmF3IHRoZSBjb250
ZW50cyBvZiB0aGUgcXVhZCBvdmVyIGRyb3Agb2YgdGhlIG5ldyBiYWNrZ3JvdW5kIHdpdGggYmxl
bmRpbmcsIGFzIHBlciB1c3VhbC4gVGhlIGZpbHRlcmVkIGJhY2tncm91bmQKKyAgICAvLyBwaXhl
bHMgd2lsbCBzaG93IHRocm91Z2ggYW55IG5vbi1vcGFxdWUgcGl4ZWxzIGluIHRoaXMgZHJhd3Mu
CisgICAgLy8KKyAgICAvLyBQaXhlbCBjb3BpZXMgaW4gdGhpcyBhbGdvcml0aG0gb2NjdXIgYXQg
c3RlcHMgMiwgMywgNCwgYW5kIDUuCisKKyAgICBDQ1JlbmRlclN1cmZhY2UqIGRyYXdpbmdTdXJm
YWNlID0gcXVhZC0+bGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOworICAgIGlmIChkcmF3aW5nU3Vy
ZmFjZS0+YmFja2dyb3VuZEZpbHRlcnMoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIEZJWE1FOiBXZSBvbmx5IGFsbG93IGJhY2tncm91bmQgZmlsdGVycyBvbiB0aGUgcm9v
dCByZW5kZXIgc3VyZmFjZSBiZWNhdXNlIG90aGVyIHN1cmZhY2VzIG1heSBjb250YWluCisgICAg
Ly8gdHJhbnNsdWNlbnQgcGl4ZWxzLCBhbmQgdGhlIGNvbnRlbnRzIGJlaGluZCB0aG9zZSB0cmFu
c2x1Y2VudCBwaXhlbHMgd291bGRuJ3QgaGF2ZSB0aGUgZmlsdGVyIGFwcGxpZWQuCisgICAgaWYg
KCFpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKG1fZGVmYXVsdFJlbmRlclN1cmZhY2UpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VyZmFjZURyYXdU
cmFuc2Zvcm0gPSBxdWFkLT5pc1JlcGxpY2EoKSA/IGRyYXdpbmdTdXJmYWNlLT5yZXBsaWNhRHJh
d1RyYW5zZm9ybSgpIDogZHJhd2luZ1N1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKTsKKworICAgIC8v
IEZJWE1FOiBEbyBhIHNpbmdsZSByZWFkYmFjayBmb3IgYm90aCB0aGUgc3VyZmFjZSBhbmQgcmVw
bGljYSBhbmQgY2FjaGUgdGhlIGZpbHRlcmVkIHJlc3VsdHMgKG9uY2UgZmlsdGVyIHRleHR1cmVz
IGFyZSBub3QgcmV1c2VkKS4KKyAgICBJbnRSZWN0IGRldmljZVJlY3QgPSBkcmF3aW5nU3VyZmFj
ZS0+cmVhZGJhY2tEZXZpY2VDb250ZW50UmVjdCh0aGlzLCBzdXJmYWNlRHJhd1RyYW5zZm9ybSk7
CisgICAgZGV2aWNlUmVjdC5pbnRlcnNlY3QobV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+Y29udGVu
dFJlY3QoKSk7CisKKyAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IGRldmljZUJhY2tncm91bmRU
ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFu
YWdlci5nZXQoKSk7CisgICAgaWYgKCFnZXRGcmFtZWJ1ZmZlclRleHR1cmUoZGV2aWNlQmFja2dy
b3VuZFRleHR1cmUuZ2V0KCksIGRldmljZVJlY3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBT
a0JpdG1hcCBmaWx0ZXJlZERldmljZUJhY2tncm91bmQgPSBkcmF3aW5nU3VyZmFjZS0+YXBwbHlG
aWx0ZXJzKHRoaXMsIGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5kRmlsdGVycygpLCBkZXZpY2VC
YWNrZ3JvdW5kVGV4dHVyZS5nZXQoKSk7CisgICAgR3JUZXh0dXJlKiBmaWx0ZXJlZERldmljZUJh
Y2tncm91bmRUZXh0dXJlID0gcmVpbnRlcnByZXRfY2FzdDxHclRleHR1cmUqPihmaWx0ZXJlZERl
dmljZUJhY2tncm91bmQuZ2V0VGV4dHVyZSgpKTsKKyAgICBpZiAoIWZpbHRlcmVkRGV2aWNlQmFj
a2dyb3VuZFRleHR1cmUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZHJhd2luZ1N1cmZh
Y2UtPnByZXBhcmVCYWNrZ3JvdW5kVGV4dHVyZSh0aGlzKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gVGhpcyBtdXN0IGJlIGNvbXB1dGVkIGJlZm9yZSBzd2l0Y2hpbmcgdGhlIHRhcmdldCBy
ZW5kZXIgc3VyZmFjZSB0byB0aGUgYmFja2dyb3VuZCB0ZXh0dXJlLgorICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtID0gZHJhd2luZ1N1cmZhY2UtPmNvbXB1
dGVEZXZpY2VUcmFuc2Zvcm0odGhpcywgc3VyZmFjZURyYXdUcmFuc2Zvcm0pOworCisgICAgQ0NS
ZW5kZXJTdXJmYWNlKiB0YXJnZXRSZW5kZXJTdXJmYWNlID0gbV9jdXJyZW50UmVuZGVyU3VyZmFj
ZTsKKyAgICBpZiAoIXVzZU1hbmFnZWRUZXh0dXJlKGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5k
VGV4dHVyZSgpLCBkcmF3aW5nU3VyZmFjZS0+Y29udGVudFJlY3QoKSkpIHsKKyAgICAgICAgZHJh
d2luZ1N1cmZhY2UtPnJlbGVhc2VCYWNrZ3JvdW5kVGV4dHVyZSgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaW50IGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCA9IGZp
bHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKKyAgICBk
cmF3aW5nU3VyZmFjZS0+Y29weURldmljZVRvQmFja2dyb3VuZFRleHR1cmUodGhpcywgZmlsdGVy
ZWREZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZpY2VSZWN0LCBjb250ZW50c0RldmljZVRy
YW5zZm9ybSk7CisgICAgdXNlUmVuZGVyU3VyZmFjZSh0YXJnZXRSZW5kZXJTdXJmYWNlKTsKK30K
Kwogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25z
dCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCogcXVhZCkKIHsKICAgICBDQ0xheWVySW1wbCogbGF5
ZXIgPSBxdWFkLT5sYXllcigpOworCisgICAgZHJhd0JhY2tncm91bmRGaWx0ZXJzKHF1YWQpOwor
CiAgICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+c2V0U2Npc3NvclJlY3QodGhpcywgcXVhZC0+
c3VyZmFjZURhbWFnZVJlY3QoKSk7CiAgICAgaWYgKHF1YWQtPmlzUmVwbGljYSgpKQogICAgICAg
ICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3UmVwbGljYSh0aGlzKTsKICAgICBlbHNlCiAg
ICAgICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdDb250ZW50cyh0aGlzKTsKKyAgICBs
YXllci0+cmVuZGVyU3VyZmFjZSgpLT5yZWxlYXNlQmFja2dyb3VuZFRleHR1cmUoKTsKICAgICBs
YXllci0+cmVuZGVyU3VyZmFjZSgpLT5yZWxlYXNlQ29udGVudHNUZXh0dXJlKCk7CiB9CiAKQEAg
LTExODYsNiArMTI0OCwxNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVi
dWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZQogICAgIH0KIH0KIAor
Ym9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZShNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgZGV2aWNlUmVjdCkKK3sKKyAgICBpZiAo
IXRleHR1cmUtPnJlc2VydmUoZGV2aWNlUmVjdC5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZSht
X2NvbnRleHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwor
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3Qu
eSgpLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogTWFuYWdlZFRleHR1cmUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Z2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCkKIHsKICAgICByZXR1cm4gc2V0dGluZ3MoKS5jb21w
b3NpdGVPZmZzY3JlZW4gJiYgcm9vdExheWVyKCkgPyByb290TGF5ZXIoKS0+cmVuZGVyU3VyZmFj
ZSgpLT5jb250ZW50c1RleHR1cmUoKSA6IDA7CkBAIC0xMjA5LDkgKzEyODIsMTggQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5KCkKICAg
ICB9CiB9CiAKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0N1cnJlbnRSZW5kZXJTdXJm
YWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSkKK3sKKyAgICByZXR1cm4gbV9jdXJy
ZW50UmVuZGVyU3VyZmFjZSA9PSByZW5kZXJTdXJmYWNlICYmICFtX2N1cnJlbnRNYW5hZ2VkVGV4
dHVyZTsKK30KKwogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2Uo
Q0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlKQogeworICAgIGlmIChpc0N1cnJlbnRSZW5k
ZXJTdXJmYWNlKHJlbmRlclN1cmZhY2UpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIG1f
Y3VycmVudFJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlOworICAgIG1fY3VycmVudE1hbmFn
ZWRUZXh0dXJlID0gMDsKIAogICAgIGlmICgocmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5k
ZXJTdXJmYWNlICYmICFzZXR0aW5ncygpLmNvbXBvc2l0ZU9mZnNjcmVlbikgfHwgKCFyZW5kZXJT
dXJmYWNlICYmIHNldHRpbmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVuKSkgewogICAgICAgICBHTEMo
bV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKQEAgLTEyMjIsMTIgKzEzMDQsMjggQEAgYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5k
ZXJTdXJmYWNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBHTEMobV9jb250
ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwotCiAgICAgaWYgKCFyZW5k
ZXJTdXJmYWNlLT5wcmVwYXJlQ29udGVudHNUZXh0dXJlKHRoaXMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICByZW5kZXJTdXJmYWNlLT5jb250ZW50c1RleHR1cmUoKS0+ZnJhbWVidWZm
ZXJUZXh0dXJlMkQobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2Nh
dG9yLmdldCgpKTsKKyAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKHJlbmRlclN1
cmZhY2UtPmNvbnRlbnRzVGV4dHVyZSgpLCByZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpKTsK
K30KKworYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZU1hbmFnZWRUZXh0dXJlKE1hbmFn
ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpCit7CisgICAg
aWYgKG1fY3VycmVudE1hbmFnZWRUZXh0dXJlID09IHRleHR1cmUpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9IDA7CisgICAgbV9jdXJyZW50TWFu
YWdlZFRleHR1cmUgPSB0ZXh0dXJlOworCisgICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZlclRvVGV4
dHVyZSh0ZXh0dXJlLCB2aWV3cG9ydFJlY3QpOworfQorCitib29sIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpCit7CisgICAgR0xDKG1fY29udGV4dC5nZXQoKSwg
bV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpKTsKKworICAgIHRleHR1cmUtPmZyYW1lYnVmZmVy
VGV4dHVyZTJEKG1fY29udGV4dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRv
ci5nZXQoKSk7CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJVRyApCiAgICAgaWYgKG1fY29udGV4dC0+
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9
IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewpAQCAtMTIzNiw3ICsx
MzM0LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoQ0NS
ZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlKQogICAgIH0KICNlbmRpZgogCi0gICAgc2V0RHJh
d1ZpZXdwb3J0UmVjdChyZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLCBmYWxzZSk7CisgICAg
c2V0RHJhd1ZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3QsIGZhbHNlKTsKIAogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtMTI1Niw3ICsxMzU0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QpCiAgICAgLy8gb2Yg
dGhlIEdMIHNjaXNzb3IgaXMgdGhlIGJvdHRvbSBvZiBvdXIgbGF5ZXIuCiAgICAgLy8gQnV0LCBp
ZiByZW5kZXJpbmcgdG8gb2Zmc2NyZWVuIHRleHR1cmUsIHdlIHJldmVyc2Ugb3VyIHNlbnNlIG9m
ICd1cHNpZGUgZG93bicuCiAgICAgaW50IHNjaXNzb3JZOwotICAgIGlmIChtX2N1cnJlbnRSZW5k
ZXJTdXJmYWNlID09IG1fZGVmYXVsdFJlbmRlclN1cmZhY2UgJiYgIXNldHRpbmdzKCkuY29tcG9z
aXRlT2Zmc2NyZWVuKQorICAgIGlmIChpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKG1fZGVmYXVsdFJl
bmRlclN1cmZhY2UpICYmICFzZXR0aW5ncygpLmNvbXBvc2l0ZU9mZnNjcmVlbikKICAgICAgICAg
c2Npc3NvclkgPSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLmhlaWdodCgp
IC0gKHNjaXNzb3JSZWN0Lm1heFkoKSAtIG1fY3VycmVudFJlbmRlclN1cmZhY2UtPmNvbnRlbnRS
ZWN0KCkueSgpKTsKICAgICBlbHNlCiAgICAgICAgIHNjaXNzb3JZID0gc2Npc3NvclJlY3QueSgp
IC0gY29udGVudFJlY3QueSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRl
eCBkNmFjNjgyMjkwNjkxMjdlM2IxMjBlOTM0NDljYmE5NWUxOTc1NjkxLi40NWVlYmNiMTYyOWRm
MThhZjMzMmRjODVmYmE5OTViNWJmZmM3MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uaApAQCAtMTM4LDYgKzEzOCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBDQ1ZpZGVvTGF5
ZXJJbXBsOjpTdHJlYW1UZXh0dXJlUHJvZ3JhbSogc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbSgp
OwogCiAgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IElu
dFJlY3QmKTsKKyAgICBib29sIGdldEZyYW1lYnVmZmVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSos
IGNvbnN0IEludFJlY3QmIGRldmljZVJlY3QpOwogCiAgICAgVGV4dHVyZU1hbmFnZXIqIHJlbmRl
clN1cmZhY2VUZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRl
eHR1cmVNYW5hZ2VyLmdldCgpOyB9CiAgICAgVGV4dHVyZUNvcGllciogdGV4dHVyZUNvcGllcigp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUNvcGllci5nZXQoKTsgfQpAQCAtMTczLDYgKzE3NCw3
IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdR
dWFkKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CiAgICAgdm9pZCBkcmF3
RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCopOworICAgIHZvaWQg
ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKik7CiAg
ICAgdm9pZCBkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQqKTsKICAgICB2b2lkIGRyYXdTb2xpZENvbG9yUXVhZChjb25zdCBDQ1NvbGlkQ29sb3JEcmF3
UXVhZCopOwogICAgIHZvaWQgZHJhd1RleHR1cmVRdWFkKGNvbnN0IENDVGV4dHVyZURyYXdRdWFk
Kik7CkBAIC0xOTIsNyArMTk0LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldERyYXdWaWV3
cG9ydFJlY3QoY29uc3QgSW50UmVjdCYsIGJvb2wgZmxpcFkpOwogCisgICAgLy8gVGhlIGN1cnJl
bnQgZHJhd2luZyB0YXJnZXQgaXMgZWl0aGVyIGEgUmVuZGVyU3VyZmFjZSBvciBNYW5hZ2VkVGV4
dHVyZS4gVXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBzd2l0Y2ggdG8gYSBuZXcgZHJhd2luZyB0YXJn
ZXQuCiAgICAgYm9vbCB1c2VSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSopOworICAgIGJv
b2wgdXNlTWFuYWdlZFRleHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiB2aWV3
cG9ydFJlY3QpOworICAgIGJvb2wgaXNDdXJyZW50UmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZh
Y2UqKTsKKworICAgIGJvb2wgYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KTsKKwogICAgIHZvaWQgY2xlYXJSZW5kZXJT
dXJmYWNlKENDUmVuZGVyU3VyZmFjZSosIENDUmVuZGVyU3VyZmFjZSogcm9vdFJlbmRlclN1cmZh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpOwogCiAgICAgdm9pZCByZWxl
YXNlUmVuZGVyU3VyZmFjZVRleHR1cmVzKCk7CkBAIC0yMTcsNiArMjI1LDcgQEAgcHJpdmF0ZToK
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3dpbmRvd01hdHJpeDsKIAogICAgIENDUmVuZGVy
U3VyZmFjZSogbV9jdXJyZW50UmVuZGVyU3VyZmFjZTsKKyAgICBNYW5hZ2VkVGV4dHVyZSogbV9j
dXJyZW50TWFuYWdlZFRleHR1cmU7CiAgICAgdW5zaWduZWQgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZl
cklkOwogCiAgICAgLy8gU3RvcmUgdmFsdWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIGluc3Rh
bmNlcyBvZiBlYWNoIGxheWVyIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgK
aW5kZXggODNhMjFkOWQ5NzA4NmNjMmRkMmFhNGY4NmMyNWMyZmU2NWFlM2M0OC4uOWE4NGViYjRl
Mzg1NDNmMDNmNTFmN2JiZDc0MTQyMzUzMmM3ZDk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmgKQEAgLTkzLDYgKzkzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmlsdGVy
cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7IG1fZmlsdGVycyA9IGZpbHRlcnM7
IH0KICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9maWx0ZXJzOyB9CiAKKyAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9iYWNrZ3JvdW5kRmlsdGVycyA9IGZpbHRlcnM7IH0K
KyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKwogICAgIGJvb2wgc2tpcHNEcmF3KCkgY29u
c3QgeyByZXR1cm4gbV9za2lwc0RyYXc7IH0KICAgICB2b2lkIHNldFNraXBzRHJhdyhib29sIHNr
aXBzRHJhdykgeyBtX3NraXBzRHJhdyA9IHNraXBzRHJhdzsgfQogCkBAIC0xMjIsNiArMTI1LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fdGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRp
bmc7CiAgICAgYm9vbCBtX3NjcmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKICAgICBG
aWx0ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dy
b3VuZEZpbHRlcnM7CiAgICAgSW50UmVjdCBtX2NsaXBSZWN0OwogICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBtX2xheWVyTGlzdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmlu
ZGV4IDJhZmI5ZDhmZjc0MWY5MzM1OTU2NmExNjlmZDQzNzI5NzAyYTc5NjkuLmJlZTlmMjYyMzZm
YjhiMjA5NzAzZDNlZTJhMWRiMzdiZTgyZTBhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAK
QEAgLTQxMCw2ICs0MTAsMTUgQEAgdm9pZCBDQ0xheWVySW1wbDo6c2V0RmlsdGVycyhjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZv
clN1YnRyZWUoKTsKIH0KIAordm9pZCBDQ0xheWVySW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMpCit7CisgICAgaWYgKG1f
YmFja2dyb3VuZEZpbHRlcnMgPT0gYmFja2dyb3VuZEZpbHRlcnMpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fYmFja2dyb3VuZEZpbHRlcnMgPSBiYWNrZ3JvdW5kRmlsdGVyczsKKyAgICBtX2xh
eWVyUHJvcGVydHlDaGFuZ2VkID0gdHJ1ZTsKK30KKwogdm9pZCBDQ0xheWVySW1wbDo6c2V0TWFz
a3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCiB7CiAgICAgaWYgKG1fbWFza3NUb0JvdW5k
cyA9PSBtYXNrc1RvQm91bmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggNmNiNmRmMDNjMjll
YWU2MDg3ZTBmNGE5ZWU5NDFjMzJiOTk1MDg5Mi4uMDBkODQ1NGIxMDQ3MjgwZGVhMmNjZThkNTY4
NmYwYzQ0NWM1NDEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0xMTMsNiArMTEzLDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAg
ICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmls
dGVyczsgfQogCisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJik7CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMo
KSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRGaWx0ZXJzOyB9CisKICAgICB2b2lkIHNldE1h
c2tzVG9Cb3VuZHMoYm9vbCk7CiAgICAgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3QgeyByZXR1
cm4gbV9tYXNrc1RvQm91bmRzOyB9CiAKQEAgLTMzNyw2ICszNDAsNyBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBtX2RlYnVnTmFtZTsKIAogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOwor
ICAgIEZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsKIAogICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBt
X3NjcmVlblNwYWNlVHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENv
bW1vbi5jcHAKaW5kZXggOTUxN2U3ZDI3NTBiZjBlNGJhZTk3Nzc0MTMwODU3NTgzNzU0NWM3ZC4u
MWY2ZjY2NjBjZTg5NWM0ZjVjM2Y1Mzk3NTZjZGY3MTZhY2ZlMjY1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgc3RhdGlj
IGJvb2wgc3VidHJlZVNob3VsZFJlbmRlclRvU2VwYXJhdGVTdXJmYWNlKExheWVyVHlwZSogbGF5
ZXIsIGJvb2wgYXhpc0FsaWcKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiB0aGUg
bGF5ZXIgdXNlcyBhIENTUyBmaWx0ZXIuCi0gICAgaWYgKCFsYXllci0+ZmlsdGVycygpLmlzRW1w
dHkoKSkKKyAgICBpZiAoIWxheWVyLT5maWx0ZXJzKCkuaXNFbXB0eSgpIHx8ICFsYXllci0+YmFj
a2dyb3VuZEZpbHRlcnMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gSWYgdGhlIGxheWVyIGZsYXR0ZW5zIGl0cyBzdWJ0cmVlIChpLmUuIHRoZSBsYXllciBkb2Vz
bid0IHByZXNlcnZlLTNkKSwgYnV0IGl0IGlzCkBAIC00MDQsNiArNDA0LDggQEAgc3RhdGljIGJv
b2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBl
KiBsYXllciwgTGF5ZXIKICAgICAgICAgICAgIG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVs
cyA9IHJlbmRlclN1cmZhY2U7CiAgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldE5lYXJlc3RBbmNl
c3RvclRoYXRNb3Zlc1BpeGVscyhuZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMpOwogCisg
ICAgICAgIHJlbmRlclN1cmZhY2UtPnNldEJhY2tncm91bmRGaWx0ZXJzKGxheWVyLT5iYWNrZ3Jv
dW5kRmlsdGVycygpKTsKKwogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChs
YXllcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oY29t
YmluZWRUcmFuc2Zvcm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggYzQ3
OTNhNWIyNGM2YjE5NjA0MmVmMGYxZGI2NDdhMjllZDNiODAxOC4uYzhiOTFjZmM2ZDdkNTQ0ZTlj
ZDFmZDQ1YTc0ZjVhODI2NjAyNTkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3Bw
CkBAIC03MSw3ICs3MSw3IEBAIEZsb2F0UmVjdCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdhYmxlQ29u
dGVudFJlY3QoKSBjb25zdAogICAgIEZsb2F0UmVjdCBsb2NhbENvbnRlbnRSZWN0KC0wLjUgKiBt
X2NvbnRlbnRSZWN0LndpZHRoKCksIC0wLjUgKiBtX2NvbnRlbnRSZWN0LmhlaWdodCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250
ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgRmxvYXRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QgPSBt
X2RyYXdUcmFuc2Zvcm0ubWFwUmVjdChsb2NhbENvbnRlbnRSZWN0KTsKLSAgICBpZiAobV9vd25p
bmdMYXllci0+cmVwbGljYUxheWVyKCkpCisgICAgaWYgKGhhc1JlcGxpY2EoKSkKICAgICAgICAg
ZHJhd2FibGVDb250ZW50UmVjdC51bml0ZShtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLm1hcFJlY3Qo
bG9jYWxDb250ZW50UmVjdCkpOwogCiAgICAgcmV0dXJuIGRyYXdhYmxlQ29udGVudFJlY3Q7CkBA
IC0xMDQsNiArMTA0LDExMCBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6cmVsZWFzZUNvbnRlbnRz
VGV4dHVyZSgpCiAgICAgbV9jb250ZW50c1RleHR1cmUtPnVucmVzZXJ2ZSgpOwogfQogCitib29s
IENDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUJhY2tncm91bmRUZXh0dXJlKExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3sKKyAgICBJbnRTaXplIHJlcXVpcmVkU2l6ZShtX2Nv
bnRlbnRSZWN0LnNpemUoKSk7CisgICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyID0g
bGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCk7CisKKyAgICBpZiAo
IW1fYmFja2dyb3VuZFRleHR1cmUpCisgICAgICAgIG1fYmFja2dyb3VuZFRleHR1cmUgPSBNYW5h
Z2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsKKworICAgIGlmIChtX2JhY2tncm91
bmRUZXh0dXJlLT5pc1Jlc2VydmVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYg
KCFtX2JhY2tncm91bmRUZXh0dXJlLT5yZXNlcnZlKHJlcXVpcmVkU2l6ZSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBDQ1JlbmRlclN1cmZhY2U6OnJlbGVhc2VCYWNrZ3JvdW5kVGV4dHVyZSgpCit7
CisgICAgaWYgKCFtX2JhY2tncm91bmRUZXh0dXJlKQorICAgICAgICByZXR1cm47CisgICAgbV9i
YWNrZ3JvdW5kVGV4dHVyZS0+dW5yZXNlcnZlKCk7Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4
IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZURldmljZVRyYW5zZm9ybShMYXllclJlbmRlcmVyQ2hy
b21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJh
bnNmb3JtKSBjb25zdAoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlclRyYW5zZm9y
bSA9IGRyYXdUcmFuc2Zvcm07CisgICAgLy8gQXBwbHkgYSBzY2FsaW5nIGZhY3RvciB0byBzaXpl
IHRoZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRlbmRlZCBzaXplLgorICAgIHJlbmRlclRyYW5z
Zm9ybS5zY2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5oZWlnaHQo
KSwgMSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlVHJhbnNmb3JtID0gVHJhbnNm
b3JtYXRpb25NYXRyaXgobGF5ZXJSZW5kZXJlci0+d2luZG93TWF0cml4KCkgKiBsYXllclJlbmRl
cmVyLT5wcm9qZWN0aW9uTWF0cml4KCkgKiByZW5kZXJUcmFuc2Zvcm0pLnRvMmRUcmFuc2Zvcm0o
KTsKKyAgICByZXR1cm4gZGV2aWNlVHJhbnNmb3JtOworfQorCitJbnRSZWN0IENDUmVuZGVyU3Vy
ZmFjZTo6Y29tcHV0ZURldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5
ZXJSZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNv
bnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudHNEZXZpY2VUcmFuc2Zvcm0g
PSBjb21wdXRlRGV2aWNlVHJhbnNmb3JtKGxheWVyUmVuZGVyZXIsIGRyYXdUcmFuc2Zvcm0pOwor
CisgICAgLy8gQ2FuIG9ubHkgZHJhdyBzdXJmYWNlIGlmIGRldmljZSBtYXRyaXggaXMgaW52ZXJ0
aWJsZS4KKyAgICBpZiAoIWNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQor
ICAgICAgICByZXR1cm4gSW50UmVjdCgpOworCisgICAgRmxvYXRRdWFkIGRldmljZVF1YWQgPSBj
b250ZW50c0RldmljZVRyYW5zZm9ybS5tYXBRdWFkKGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21l
dHJ5UXVhZCgpKTsKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChkZXZpY2VRdWFkLmJvdW5k
aW5nQm94KCkpOworfQorCitJbnRSZWN0IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZVJlYWRiYWNr
RGV2aWNlQm91bmRpbmdCb3goTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgY29uc3QKK3sKKyAgICBJ
bnRSZWN0IGRldmljZVJlY3QgPSBjb21wdXRlRGV2aWNlQm91bmRpbmdCb3gobGF5ZXJSZW5kZXJl
ciwgZHJhd1RyYW5zZm9ybSk7CisKKyAgICBpZiAobV9iYWNrZ3JvdW5kRmlsdGVycy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBkZXZpY2VSZWN0OworCisgICAgaW50IHRvcCwgcmlnaHQsIGJv
dHRvbSwgbGVmdDsKKyAgICBtX2JhY2tncm91bmRGaWx0ZXJzLmdldE91dHNldHModG9wLCByaWdo
dCwgYm90dG9tLCBsZWZ0KTsKKyAgICBkZXZpY2VSZWN0Lm1vdmUoLWxlZnQsIC10b3ApOworICAg
IGRldmljZVJlY3QuZXhwYW5kKGxlZnQgKyByaWdodCwgdG9wICsgYm90dG9tKTsKKworICAgIHJl
dHVybiBkZXZpY2VSZWN0OworfQorCitJbnRSZWN0IENDUmVuZGVyU3VyZmFjZTo6cmVhZGJhY2tE
ZXZpY2VDb250ZW50UmVjdChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdAoreworICAgIHJl
dHVybiBjb21wdXRlUmVhZGJhY2tEZXZpY2VCb3VuZGluZ0JveChsYXllclJlbmRlcmVyLCBkcmF3
VHJhbnNmb3JtKTsKK30KKworc3RhdGljIHZvaWQgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgaW50IHRleHR1cmVJZCwgY29uc3Qg
SW50U2l6ZSYgYm91bmRzLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCkK
K3sKKyAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2U6OlByb2dyYW0qIHByb2dyYW0gPSBsYXllclJl
bmRlcmVyLT5yZW5kZXJTdXJmYWNlUHJvZ3JhbSgpOworCisgICAgR0xDKGxheWVyUmVuZGVyZXIt
PmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0
KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250
ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5j
b250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworCisgICAgR0xDKGxheWVyUmVuZGVy
ZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dy
YW0tPnByb2dyYW0oKSkpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVy
UmVuZGVyZXItPmNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
c2FtcGxlckxvY2F0aW9uKCksIDApKTsKKyAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRR
dWFkKGRyYXdNYXRyaXgsIGJvdW5kcy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCksIDEsIGxheWVy
UmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuYWxwaGFMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LTEpOworfQorCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6Y29weURldmljZVRvQmFja2dyb3VuZFRl
eHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBpbnQgZGV2aWNlQmFj
a2dyb3VuZFRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgZGV2aWNlVGV4dHVyZVJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0pIGNvbnN0Cit7CisgICAgQVNT
RVJUKCFtX2JhY2tncm91bmRGaWx0ZXJzLmlzRW1wdHkoKSk7CisKKyAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm07CisgICAgZGV2aWNlVG9TdXJmYWNlVHJh
bnNmb3JtLnRyYW5zbGF0ZShtX2NvbnRlbnRSZWN0LndpZHRoKCkgLyAyLjAsIG1fY29udGVudFJl
Y3QuaGVpZ2h0KCkgLyAyLjApOworICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS5zY2FsZTNk
KG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSwgMSk7CisgICAg
ZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtICo9IGRldmljZVRyYW5zZm9ybS5pbnZlcnNlKCk7Cisg
ICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VUZXh0dXJlUmVjdC53
aWR0aCgpIC8gMi4wLCBkZXZpY2VUZXh0dXJlUmVjdC5oZWlnaHQoKSAvIDIuMCk7CisgICAgZGV2
aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VUZXh0dXJlUmVjdC54KCksIGRl
dmljZVRleHR1cmVSZWN0LnkoKSk7CisKKyAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIobGF5
ZXJSZW5kZXJlciwgZGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgZGV2aWNlVGV4dHVyZVJlY3Qu
c2l6ZSgpLCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0pOworfQorCitpbmxpbmUgc3RhdGljIGlu
dCBnZXRTa0JpdG1hcFRleHR1cmVJZChjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBpbnQgZmFsbGJh
Y2spCit7CisgICAgaWYgKCFiaXRtYXAuZ2V0VGV4dHVyZSgpKQorICAgICAgICByZXR1cm4gZmFs
bGJhY2s7CisgICAgR3JUZXh0dXJlKiB0ZXh0dXJlID0gcmVpbnRlcnByZXRfY2FzdDxHclRleHR1
cmUqPihiaXRtYXAuZ2V0VGV4dHVyZSgpKTsKKyAgICByZXR1cm4gdGV4dHVyZS0+Z2V0VGV4dHVy
ZUhhbmRsZSgpOworfQorCiB2b2lkIENDUmVuZGVyU3VyZmFjZTo6c2V0U2Npc3NvclJlY3QoTGF5
ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZh
Y2VEYW1hZ2VSZWN0KSBjb25zdAogewogICAgIGlmIChtX293bmluZ0xheWVyLT5wYXJlbnQoKSAm
JiBtX293bmluZ0xheWVyLT5wYXJlbnQoKS0+dXNlc0xheWVyQ2xpcHBpbmcoKSAmJiBsYXllclJl
bmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKSB7CkBAIC0xMjQsOCArMjI4
LDExIEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3Q29udGVudHMoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTog
Q2FjaGUgdGhpcyB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gZG8gaXQgZm9yIGJvdGgg
dGhlIHN1cmZhY2UgYW5kIGl0cyByZXBsaWNhLgotICAgIFNrQml0bWFwIGZpbHRlckJpdG1hcCA9
IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyKTsKLSAgICBkcmF3TGF5ZXIobGF5ZXJSZW5kZXJl
ciwgbV9tYXNrTGF5ZXIsIG1fZHJhd1RyYW5zZm9ybSwgZmlsdGVyQml0bWFwKTsKKyAgICAvLyBB
cHBseSBmaWx0ZXJzIHRvIHRoZSBjb250ZW50cyB0ZXh0dXJlLgorICAgIFNrQml0bWFwIGZpbHRl
ckJpdG1hcCA9IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyLCBtX2ZpbHRlcnMsIG1fY29udGVu
dHNUZXh0dXJlLmdldCgpKTsKKworICAgIGludCBjb250ZW50c1RleHR1cmVJZCA9IGdldFNrQml0
bWFwVGV4dHVyZUlkKGZpbHRlckJpdG1hcCwgbV9jb250ZW50c1RleHR1cmUtPnRleHR1cmVJZCgp
KTsKKyAgICBkcmF3TGF5ZXIobGF5ZXJSZW5kZXJlciwgbV9tYXNrTGF5ZXIsIG1fZHJhd1RyYW5z
Zm9ybSwgY29udGVudHNUZXh0dXJlSWQpOwogfQogCiB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJh
d1JlcGxpY2EoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQpAQCAtMTM0LDcg
KzI0MSw5IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3UmVwbGljYShMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAgaWYgKCFoYXNSZXBsaWNhKCkgfHwgbV9za2lw
c0RyYXcgfHwgIW1fY29udGVudHNUZXh0dXJlKQogICAgICAgICByZXR1cm47CiAKLSAgICBTa0Jp
dG1hcCBmaWx0ZXJCaXRtYXAgPSBhcHBseUZpbHRlcnMobGF5ZXJSZW5kZXJlcik7CisgICAgLy8g
QXBwbHkgZmlsdGVycyB0byB0aGUgY29udGVudHMgdGV4dHVyZS4KKyAgICBTa0JpdG1hcCBmaWx0
ZXJCaXRtYXAgPSBhcHBseUZpbHRlcnMobGF5ZXJSZW5kZXJlciwgbV9maWx0ZXJzLCBtX2NvbnRl
bnRzVGV4dHVyZS5nZXQoKSk7CisKICAgICAvLyBGSVhNRTogQnkgdXNpbmcgdGhlIHNhbWUgUmVu
ZGVyU3VyZmFjZSBmb3IgYm90aCB0aGUgY29udGVudCBhbmQgaXRzIHJlZmxlY3Rpb24sCiAgICAg
Ly8gaXQncyBjdXJyZW50bHkgbm90IHBvc3NpYmxlIHRvIGFwcGx5IGEgc2VwYXJhdGUgbWFzayB0
byB0aGUgcmVmbGVjdGlvbiBsYXllcgogICAgIC8vIG9yIGNvcnJlY3RseSBoYW5kbGUgb3BhY2l0
eSBpbiByZWZsZWN0aW9ucyAob3BhY2l0eSBtdXN0IGJlIGFwcGxpZWQgYWZ0ZXIgZHJhd2luZwpA
QCAtMTQ1LDIxICsyNTQsMjIgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdSZXBsaWNhKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICBpZiAoIW1fbWFza0xheWVy
ICYmIG1fb3duaW5nTGF5ZXItPnJlcGxpY2FMYXllcigpKQogICAgICAgICByZXBsaWNhTWFza0xh
eWVyID0gbV9vd25pbmdMYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpOwogCi0gICAg
ZHJhd0xheWVyKGxheWVyUmVuZGVyZXIsIHJlcGxpY2FNYXNrTGF5ZXIsIG1fcmVwbGljYURyYXdU
cmFuc2Zvcm0sIGZpbHRlckJpdG1hcCk7CisgICAgaW50IGNvbnRlbnRzVGV4dHVyZUlkID0gZ2V0
U2tCaXRtYXBUZXh0dXJlSWQoZmlsdGVyQml0bWFwLCBtX2NvbnRlbnRzVGV4dHVyZS0+dGV4dHVy
ZUlkKCkpOworICAgIGRyYXdMYXllcihsYXllclJlbmRlcmVyLCByZXBsaWNhTWFza0xheWVyLCBt
X3JlcGxpY2FEcmF3VHJhbnNmb3JtLCBjb250ZW50c1RleHR1cmVJZCk7CiB9CiAKLXZvaWQgQ0NS
ZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyLCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZHJhd1RyYW5zZm9ybSwgY29uc3QgU2tCaXRtYXAmIGZpbHRlckJpdG1hcCkKK3ZvaWQgQ0NSZW5k
ZXJTdXJmYWNlOjpkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVy
LCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJh
d1RyYW5zZm9ybSwgaW50IGNvbnRlbnRzVGV4dHVyZUlkKQogewotICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHJlbmRlck1hdHJpeCA9IGRyYXdUcmFuc2Zvcm07Ci0gICAgLy8gQXBwbHkgYSBzY2Fs
aW5nIGZhY3RvciB0byBzaXplIHRoZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRlbmRlZCBzaXpl
LgotICAgIHJlbmRlck1hdHJpeC5zY2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250
ZW50UmVjdC5oZWlnaHQoKSwgMSk7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VN
YXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChsYXllclJlbmRlcmVyLT53aW5kb3dNYXRyaXgo
KSAqIGxheWVyUmVuZGVyZXItPnByb2plY3Rpb25NYXRyaXgoKSAqIHJlbmRlck1hdHJpeCkudG8y
ZFRyYW5zZm9ybSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZU1hdHJpeCA9IGNv
bXB1dGVEZXZpY2VUcmFuc2Zvcm0obGF5ZXJSZW5kZXJlciwgZHJhd1RyYW5zZm9ybSk7CiAKICAg
ICAvLyBDYW4gb25seSBkcmF3IHN1cmZhY2UgaWYgZGV2aWNlIG1hdHJpeCBpcyBpbnZlcnRpYmxl
LgogICAgIGlmICghZGV2aWNlTWF0cml4LmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm47
CiAKKyAgICAvLyBEcmF3IHRoZSBiYWNrZ3JvdW5kIHRleHR1cmUgaWYgdGhlcmUgaXMgb25lLgor
ICAgIGlmIChtX2JhY2tncm91bmRUZXh0dXJlICYmIG1fYmFja2dyb3VuZFRleHR1cmUtPmlzUmVz
ZXJ2ZWQoKSkKKyAgICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGxheWVyUmVuZGVyZXIs
IG1fYmFja2dyb3VuZFRleHR1cmUtPnRleHR1cmVJZCgpLCBtX2NvbnRlbnRSZWN0LnNpemUoKSwg
ZHJhd1RyYW5zZm9ybSk7CisKICAgICBGbG9hdFF1YWQgcXVhZCA9IGRldmljZU1hdHJpeC5tYXBR
dWFkKGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpKTsKICAgICBDQ0xheWVyUXVh
ZCBkZXZpY2VSZWN0ID0gQ0NMYXllclF1YWQoRmxvYXRRdWFkKHF1YWQuYm91bmRpbmdCb3goKSkp
OwogICAgIENDTGF5ZXJRdWFkIGxheWVyUXVhZCA9IENDTGF5ZXJRdWFkKHF1YWQpOwpAQCAtMTc3
LDI3ICsyODcsMjkgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdMYXllcihMYXllclJlbmRl
cmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJbXAKICAgICAgICAgaWYgKCFtYXNr
TGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHVzZU1hc2sgPSB0cnVlOwog
CisgICAgLy8gRklYTUU6IHBhc3MgaW4gYmFja2dyb3VuZFRleHR1cmVJZCBhbmQgYmxlbmQgdGhl
IGJhY2tncm91bmQgaW4gd2l0aCB0aGlzIGRyYXcgaW5zdGVhZCBvZiBoYXZpbmcgYSBzZXBhcmF0
ZSBkcmF3QmFja2dyb3VuZCgpIHBhc3MuCisKICAgICBpZiAodXNlTWFzaykgewogICAgICAgICBp
ZiAodXNlQUEpIHsKICAgICAgICAgICAgIGNvbnN0IE1hc2tQcm9ncmFtQUEqIHByb2dyYW0gPSBs
YXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSgpOwotICAgICAgICAgICAg
ZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZp
Y2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgcHJvZ3JhbSwgcHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9uKCksIHByb2dyYW0tPnZlcnRleFNoYWRlcigp
LnBvaW50TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24o
KSwgZmlsdGVyQml0bWFwKTsKKyAgICAgICAgICAgIGRyYXdTdXJmYWNlKGxheWVyUmVuZGVyZXIs
IG1hc2tMYXllciwgZHJhd1RyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXll
clF1YWQsIGNvbnRlbnRzVGV4dHVyZUlkLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkucG9pbnRM
b2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnN0IE1hc2tQcm9ncmFtKiBwcm9ncmFtID0g
bGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7Ci0gICAgICAgICAgICBk
cmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmlj
ZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVu
dFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgLTEsIC0xLCBmaWx0ZXJCaXRtYXApOwor
ICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJh
bnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgY29udGVudHNUZXh0
dXJlSWQsIHByb2dyYW0sIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkubWFza1NhbXBsZXJMb2Nh
dGlvbigpLCAtMSwgLTEpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHVz
ZUFBKSB7CiAgICAgICAgICAgICBjb25zdCBQcm9ncmFtQUEqIHByb2dyYW0gPSBsYXllclJlbmRl
cmVyLT5yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKCk7Ci0gICAgICAgICAgICBkcmF3U3VyZmFjZShs
YXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2
aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCAtMSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCku
cG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigp
LCBmaWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwg
bWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVy
UXVhZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIC0xLCBwcm9ncmFtLT52ZXJ0ZXhTaGFk
ZXIoKS5wb2ludExvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0
aW9uKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29uc3QgUHJvZ3JhbSogcHJv
Z3JhbSA9IGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VQcm9ncmFtKCk7Ci0gICAgICAgICAg
ICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRl
dmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCAtMSwgLTEsIC0xLCBm
aWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFz
a0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVh
ZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIC0xLCAtMSwgLTEpOwogICAgICAgICB9CiAg
ICAgfQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3
U3VyZmFjZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJbXBs
KiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtLCBjb25zdCBDQ0xheWVy
UXVhZCYgZGV2aWNlUmVjdCwgY29uc3QgQ0NMYXllclF1YWQmIGxheWVyUXVhZCwgY29uc3QgVCog
cHJvZ3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFkZXJRdWFkTG9j
YXRpb24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24sIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRt
YXApCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXllclF1YWQmIGRldmljZVJlY3QsIGNvbnN0IEND
TGF5ZXJRdWFkJiBsYXllclF1YWQsIGludCBjb250ZW50c1RleHR1cmVJZCwgY29uc3QgVCogcHJv
Z3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFkZXJRdWFkTG9jYXRp
b24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQzRCA9IGxheWVyUmVuZGVyZXItPmNvbnRleHQoKTsKIApAQCAtMjA2LDExICszMTgsNyBA
QCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVt
KiBsYXllclJlbmRlcmVyLCBDQ0xheWVySQogCiAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNE
LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhj
b250ZXh0M0QsIGNvbnRleHQzRC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
c2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBpZiAoZmlsdGVyQml0bWFwLmdldFRleHR1cmUo
KSkgewotICAgICAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJldF9jYXN0PEdyVGV4
dHVyZSo+KGZpbHRlckJpdG1hcC5nZXRUZXh0dXJlKCkpOwotICAgICAgICBjb250ZXh0M0QtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlLT5nZXRUZXh0
dXJlSGFuZGxlKCkpOwotICAgIH0gZWxzZQotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+Ymlu
ZFRleHR1cmUoY29udGV4dDNELCBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZUFs
bG9jYXRvcigpKTsKKyAgICBjb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBjb250ZW50c1RleHR1cmVJZCk7CiAKICAgICBpZiAoc2hhZGVyTWFza1Nh
bXBsZXJMb2NhdGlvbiAhPSAtMSkgewogICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0Qt
PmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7CkBAIC0yMzMsOSAr
MzQxLDkgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdTdXJmYWNlKExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgQ0NMYXllckkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksIHBy
b2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCBzaGFkZXJRdWFkTG9jYXRp
b24pOwogfQogCi1Ta0JpdG1hcCBDQ1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVycyhMYXllclJl
bmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCitTa0JpdG1hcCBDQ1JlbmRlclN1cmZhY2U6
OmFwcGx5RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIE1hbmFnZWRUZXh0dXJlKiBzb3VyY2VUZXh0dXJl
KQogewotICAgIGlmICghbV9jb250ZW50c1RleHR1cmUgfHwgIW1fZmlsdGVycy5zaXplKCkpCisg
ICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU2tCaXRtYXAoKTsKIAog
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gZmlsdGVyQ29udGV4dCA9IENDUHJveHk6Omhh
c0ltcGxUaHJlYWQoKSA/IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGb3JJbXBsVGhyZWFk
KCkgOiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCk7CkBAIC0yNDQsNyArMzUyLDcgQEAg
U2tCaXRtYXAgQ0NSZW5kZXJTdXJmYWNlOjphcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyKQogCiAgICAgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5mbHVz
aCgpOwogCi0gICAgcmV0dXJuIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KG1fZmlsdGVy
cywgbV9jb250ZW50c1RleHR1cmUtPnRleHR1cmVJZCgpLCBtX2NvbnRlbnRSZWN0LnNpemUoKSwg
ZmlsdGVyQ29udGV4dC5nZXQoKSk7CisgICAgcmV0dXJuIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6
OmFwcGx5KGZpbHRlcnMsIHNvdXJjZVRleHR1cmUtPnRleHR1cmVJZCgpLCBzb3VyY2VUZXh0dXJl
LT5zaXplKCksIGZpbHRlckNvbnRleHQuZ2V0KCkpOwogfQogCiBTdHJpbmcgQ0NSZW5kZXJTdXJm
YWNlOjpuYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKaW5kZXggNDJjZGEz
MjZjMDM4ZmNiZDQ4ZmExOGE2ZWY4MGRmZTk0NGQ4YjExNy4uZjQxMzJlMjBjZjhmNTQzM2U0YWQy
NGRmNmJmOTA2YjVkODFlNTAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKQEAgLTU3
LDExICs1NywxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcmVwYXJlQ29udGVudHNUZXh0dXJlKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSopOwogICAgIHZvaWQgcmVsZWFzZUNvbnRlbnRzVGV4dHVyZSgp
OwogCisgICAgYm9vbCBwcmVwYXJlQmFja2dyb3VuZFRleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKik7CisgICAgdm9pZCByZWxlYXNlQmFja2dyb3VuZFRleHR1cmUoKTsKKwogICAgIHZvaWQg
c2V0U2Npc3NvclJlY3QoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgRmxvYXRSZWN0JiBz
dXJmYWNlRGFtYWdlUmVjdCkgY29uc3Q7CiAKICAgICB2b2lkIGRyYXdDb250ZW50cyhMYXllclJl
bmRlcmVyQ2hyb21pdW0qKTsKICAgICB2b2lkIGRyYXdSZXBsaWNhKExheWVyUmVuZGVyZXJDaHJv
bWl1bSopOwogCisgICAgLy8gVGFrZXMgYSB0ZXh0dXJlIHdpdGggcGl4ZWxzIGluIGRldmljZSBz
cGFjZSwgYW5kIGEgdHJhbnNmb3JtIGZyb20gY29udGVudCBzcGFjZSB0byB0aGUgZGV2aWNlLiBD
b3BpZXMgdGhlIGRldmljZS1zcGFjZSB0ZXh0dXJlIGJhY2sgaW50bworICAgIC8vIGNvbnRlbnQg
c3BhY2UgZm9yIHRoZSBzdXJmYWNlLCBzdG9yaW5nIHRoZSByZXN1bHQgaW4gdGhlIGJhY2tncm91
bmRUZXh0dXJlKCkuIFRoZSBzdXJmYWNlJ3MgYmFja2dyb3VuZFRleHR1cmUoKSBtdXN0IGJlIHRo
ZSBhY3RpdmUgZHJhd2luZyB0YXJnZXQuCisgICAgdm9pZCBjb3B5RGV2aWNlVG9CYWNrZ3JvdW5k
VGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBpbnQgZGV2aWNlQmFja2dyb3VuZFRleHR1
cmVJZCwgY29uc3QgSW50UmVjdCYgZGV2aWNlVGV4dHVyZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0pIGNvbnN0OworCiAgICAgU3RyaW5nIG5hbWUoKSBj
b25zdDsKICAgICB2b2lkIGR1bXBTdXJmYWNlKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25z
dDsKIApAQCAtNjksMTMgKzc2LDIxIEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgdGhlIHJl
Y3QgdGhhdCBlbmNsb3NlcyB0aGUgUmVuZGVyU3VyZmFjZSBpbmNsdWRpbmcgYW55IHJlZmxlY3Rp
b24uCiAgICAgRmxvYXRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdDsKKyAgICAvLyBS
ZXR1cm5zIHRoZSByZWN0IHRoYXQgZW5jbG9zZXMgdGhlIHBpeGVscyB0aGF0IG1heSBhZmZlY3Qg
dGhlIHBpeGVsIHZhbHVlcyBpbiB0aGlzIHN1cmZhY2UgdGhyb3VnaCBiYWNrZ3JvdW5kIGZpbHRl
cnMuCisgICAgSW50UmVjdCByZWFkYmFja0RldmljZUNvbnRlbnRSZWN0KExheWVyUmVuZGVyZXJD
aHJvbWl1bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25z
dDsKKworICAgIC8vIEdpdmVzIHRoZSB0cmFuc2Zvcm0gZnJvbSB0aGUgc3VyZmFjZSBjb250ZW50
IHNwYWNlLCB3aXRoIG9yaWdpbiBpbiB0aGUgdG9wIGxlZnQsIHRvIHRoZSBjdXJyZW50IHRhcmdl
dCBkZXZpY2Ugc3BhY2UsIHdpdGggb3JpZ2luIGluIHRoZSB0b3AgbGVmdC4KKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBjb21wdXRlRGV2aWNlVHJhbnNmb3JtKExheWVyUmVuZGVyZXJDaHJvbWl1
bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKIAog
ICAgIGZsb2F0IGRyYXdPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3T3BhY2l0eTsgfQog
ICAgIHZvaWQgc2V0RHJhd09wYWNpdHkoZmxvYXQgb3BhY2l0eSkgeyBtX2RyYXdPcGFjaXR5ID0g
b3BhY2l0eTsgfQogCiAgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpIHsgbV9maWx0ZXJzID0gZmlsdGVyczsgfQogICAgIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0KLSAgICBTa0JpdG1h
cCBhcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisgICAgU2tCaXRtYXAgYXBw
bHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
LCBNYW5hZ2VkVGV4dHVyZSogc291cmNlVGV4dHVyZSk7CisKKyAgICB2b2lkIHNldEJhY2tncm91
bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9iYWNrZ3JvdW5k
RmlsdGVycyA9IGZpbHRlcnM7IH0KKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3Jv
dW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KIAogICAg
IHZvaWQgc2V0TmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKENDUmVuZGVyU3VyZmFjZSog
c3VyZmFjZSkgeyBtX25lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyA9IHN1cmZhY2U7IH0K
ICAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2UqIG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVs
cygpIGNvbnN0IHsgcmV0dXJuIG1fbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzOyB9CkBA
IC0xMjcsNiArMTQyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE+IE1hc2tQcm9n
cmFtQUE7CiAKICAgICBNYW5hZ2VkVGV4dHVyZSogY29udGVudHNUZXh0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50c1RleHR1cmUuZ2V0KCk7IH0KKyAgICBNYW5hZ2VkVGV4dHVyZSogYmFj
a2dyb3VuZFRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRUZXh0dXJlLmdldCgp
OyB9CiAKICAgICBpbnQgb3duaW5nTGF5ZXJJZCgpIGNvbnN0OwogCkBAIC0xNDIsOSArMTU4LDEy
IEBAIHB1YmxpYzoKICAgICBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjcmVhdGVSZXBs
aWNhU2hhcmVkUXVhZFN0YXRlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkcmF3TGF5
ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwqLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRtYXApOworICAgIEludFJlY3Qg
Y29tcHV0ZURldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKKyAgICBJbnRSZWN0IGNv
bXB1dGVSZWFkYmFja0RldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKKworICAgIHZv
aWQgZHJhd0xheWVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIENDTGF5ZXJJbXBsKiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBpbnQgY29udGVudHNUZXh0dXJlSWQpOwogICAgIHRlbXBs
YXRlIDxjbGFzcyBUPgotICAgIHZvaWQgZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVt
KiwgQ0NMYXllckltcGwqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9y
bSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NM
YXllclF1YWQmIGRldmljZVJlY3QsIGNvbnN0IENDTGF5ZXJRdWFkJiwgY29uc3QgVCogcHJvZ3Jh
bSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFkZXJRdWFkTG9jYXRpb24s
IGludCBzaGFkZXJFZGdlTG9jYXRpb24sIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRtYXApOwor
ICAgIHZvaWQgZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwq
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXllclF1YWQmIGRldmlj
ZVJlY3QsIGNvbnN0IENDTGF5ZXJRdWFkJiwgaW50IGNvbnRlbnRzVGV4dHVyZUlkLCBjb25zdCBU
KiBwcm9ncmFtLCBpbnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRlclF1YWRM
b2NhdGlvbiwgaW50IHNoYWRlckVkZ2VMb2NhdGlvbik7CiAKICAgICBDQ0xheWVySW1wbCogbV9v
d25pbmdMYXllcjsKICAgICBDQ0xheWVySW1wbCogbV9tYXNrTGF5ZXI7CkBAIC0xNTQsNiArMTcz
LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3VyZmFjZVByb3BlcnR5Q2hhbmdlZDsKIAogICAg
IE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV9jb250ZW50c1RleHR1cmU7CisgICAgT3duUHRyPE1h
bmFnZWRUZXh0dXJlPiBtX2JhY2tncm91bmRUZXh0dXJlOworCiAgICAgZmxvYXQgbV9kcmF3T3Bh
Y2l0eTsKICAgICBib29sIG1fZHJhd09wYWNpdHlJc0FuaW1hdGluZzsKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07CkBAIC0xNjUsNiArMTg2LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fdGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7CiAgICAgYm9v
bCBtX3NjcmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKICAgICBGaWx0ZXJPcGVyYXRp
b25zIG1fZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7
CiAgICAgSW50UmVjdCBtX2NsaXBSZWN0OwogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IG1fbGF5
ZXJMaXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODcyYmNmZWY2
ZTVhNzM0ZjUyY2UzMTU4Zjg5NmZhYTk0MDc4NThkNC4uMWUyNWQyOTFhOWVjZWI2NTdkZWI5ZTFh
OTI5YzdkZmNjNTVmYWYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
NzgsNiArNzgsMTMgQEAKICNpbmNsdWRlICJXZWJLaXRQb2ludC5oIgogI2VuZGlmCiAKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1
ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5j
bHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgbWFya2VyVHlwZXNG
cm9tKGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVz
JiByZXN1bHQpCkBAIC00MjMsNiArNDMwLDQ0IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+
IEludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoRG9jdW1lbnQqIGRvY3VtZW50CiAj
ZW5kaWYKIH0KIAordm9pZCBJbnRlcm5hbHM6OnNldEJhY2tncm91bmRCbHVyT25Ob2RlKE5vZGUq
IG5vZGUsIGludCBibHVyTGVuZ3RoLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIGlmICghbm9k
ZSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gbm9kZS0+cmVuZGVyZXIo
KTsKKyAgICBpZiAoIXJlbmRlck9iamVjdCkgeworICAgICAgICBlYyA9IElOVkFMSURfTk9ERV9U
WVBFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlbmRlckxheWVyKiByZW5k
ZXJMYXllciA9IHJlbmRlck9iamVjdC0+ZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICBpZiAoIXJlbmRl
ckxheWVyIHx8ICFyZW5kZXJMYXllci0+aXNDb21wb3NpdGVkKCkpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdyYXBoaWNz
TGF5ZXIqIGdyYXBoaWNzTGF5ZXIgPSByZW5kZXJMYXllci0+YmFja2luZygpLT5ncmFwaGljc0xh
eWVyKCk7CisgICAgaWYgKCFncmFwaGljc0xheWVyKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9O
T0RFX1RZUEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllciA9IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICBp
ZiAoIXBsYXRmb3JtTGF5ZXIpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX05PREVfVFlQRV9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7
CisgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJsdXJGaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZShMZW5ndGgoYmx1ckxlbmd0aCwgRml4ZWQpLCBGaWx0ZXJPcGVyYXRpb246OkJMVVIpKTsK
KyAgICBwbGF0Zm9ybUxheWVyLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhmaWx0ZXJzKTsKKyNlbmRp
ZgorfQorCiB1bnNpZ25lZCBJbnRlcm5hbHM6Om1hcmtlckNvdW50Rm9yTm9kZShOb2RlKiBub2Rl
LCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
ICghbm9kZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNmIyMGI4YzcwNWJj
MjhjNDMxNzI5NGFmY2Y3MzhjMzVlZDcxZDBlYy4uNmM1ZTg3MjgyZTI0ZDhiZWU3Y2FlM2FhNDRh
YWVlMDZlN2U0YTVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMDAsNiAr
MTAwLDggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gaW5zcGVj
dG9ySGlnaGxpZ2h0UmVjdHMoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICB2b2lk
IHNldEJhY2tncm91bmRCbHVyT25Ob2RlKE5vZGUqLCBpbnQgYmx1ckxlbmd0aCwgRXhjZXB0aW9u
Q29kZSYpOworCiAgICAgdW5zaWduZWQgbWFya2VyQ291bnRGb3JOb2RlKE5vZGUqLCBjb25zdCBT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFu
Z2VGb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShO
b2RlKiwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDE1Y2UwYTNhYzE4
ZGZhNGZjZmJkMDk1ODI5MGFkMjYwMWU3NGQzY2EuLjA0ZDRlOTdkMDEzYTljMTVlOWE3ODNmNjY2
MDQ3NjcwM2M1ZTc5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTcy
LDYgKzcyLDggQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgQ2xpZW50UmVjdExpc3QgaW5z
cGVjdG9ySGlnaGxpZ2h0UmVjdHMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhj
ZXB0aW9uKTsKIAorICAgICAgICB2b2lkIHNldEJhY2tncm91bmRCbHVyT25Ob2RlKGluIE5vZGUg
bm9kZSwgaW4gbG9uZyBibHVyTGVuZ3RoKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKwogICAgICAg
ICB1bnNpZ25lZCBsb25nIG1hcmtlckNvdW50Rm9yTm9kZShpbiBOb2RlIG5vZGUsIGluIERPTVN0
cmluZyBtYXJrZXJUeXBlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgUmFuZ2UgbWFy
a2VyUmFuZ2VGb3JOb2RlKGluIE5vZGUgbm9kZSwgaW4gRE9NU3RyaW5nIG1hcmtlclR5cGUsIGlu
IHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBET01T
dHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JOb2RlKGluIE5vZGUgbm9kZSwgaW4gRE9NU3RyaW5n
IG1hcmtlclR5cGUsIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhET01FeGNlcHRpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3Bw
CmluZGV4IDhhOWYzNWRjOGE3Yjg5YzBjOTRiZDc1MzdjNjg0NjRmYTc4YTZiYjguLjIyOTk3NDE0
ZTA5MWUzZmUwMTI4ZWRmNGJjMWVkZWVjMTEzZTJiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTExMyw2ICsxMTMsNyBAQCBU
RVNUKENDTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5
KQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0RHJh
d3NDb250ZW50KHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFO
R0VEKHJvb3QtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSkpOwogICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3VuZENvdmVyc1Zp
ZXdwb3J0KHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VE
KHJvb3QtPnNldEJhY2tncm91bmRGaWx0ZXJzKGFyYml0cmFyeUZpbHRlcnMpKTsKIAogICAgIC8v
IFNwZWNpYWwgY2FzZTogY2hlY2sgdGhhdCBzdWJsYXllciB0cmFuc2Zvcm0gY2hhbmdlcyBhbGwg
bGF5ZXIncyBkZXNjZW5kYW50cywgYnV0IG5vdCB0aGUgbGF5ZXIgaXRzZWxmLgogICAgIHJvb3Qt
PnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWEzNDM5YjJhZmIy
ZWJiZjQxMDExNzcwYzRkOTdlNmIzOTBmYmZiNC4uM2QxZTc4MGRjZDg5YmNlZGNmMDZkNGQ5OWMy
N2E1YWUzNWIwMmZhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA0LTA5ICBEYW5hIEph
bnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQmFja2dy
b3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3Vu
ZC1maWx0ZXItYmx1ci1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5n
L2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGNvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRz
LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvZmlsdGVycy9iYWNr
Z3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBjb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVy
LWJsdXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRp
bmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnBuZzogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5k
LWZpbHRlci1ibHVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMt
ZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorCiAyMDEyLTA0LTA5ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRmlsdGVyIGZpbGVzIGZyb20gZGF0YVRyYW5zZmVyLmdldERhdGEgb24gTWFjCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmls
dGVyLWJsdXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZmlsdGVycy9i
YWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTllMmU0NTgy
YmJjOTgzNjhiZDk1ZmZmOWZkMmE3ZWVjNWI3ZjU2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAy
ODYxCnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxI
YG9rPG19P29UbjNZNQp6QlFyQSNHZlA3Z0djIVlUQmE8fFhsKkUpb0d0MU9lTHNKV2pMfn1NNEhC
QU52dUtrYGFqdipDdS1yaExLJD5ib3cKejtePT1TeH5JblhLPkZjQmspajd9Vz9MRzZXPykkR2BI
bWF8THhGVDdEfSNWPTFPdFFOQE0zSmR7O2xFdXgjdjBsCno1MWM7RmQmfGwyaG1+SzkhTkRoaWs+
TG8tQ31UN2JNcEZXdmJIU1Q0WFRHczlHXzA9SnpgJjVpI0xifGZIcCY8YwpvZ3dkMlJuaFFwQSFE
dWMoJHAhSnxDd04hNCt8enZtWjJ2Tk55ODV9U2I0cTllMDJeb2hOQntyOwoKbGl0ZXJhbCAwCkhj
bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZmlsdGVycy9i
YWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQwOGJkYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXIt
Ymx1ci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBl
Y3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmls
dGVyLWJsdXItb3V0c2V0cy1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY0MDIyMTE2MjM3OTBk
MThmZmM2ZmE1OGNjMDViNTA3MWZjOTdiMgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg4Mwp6
Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxt
fT9vVG1+fnMKejB9SW9YKUtvSnxxZn0kVkx9UURqRz5iJTI8NVhpeWdCMFR3THlOJGItPSFFQnhV
UEQtSUVHWnJkMylFOCVnSXJJCnopaU0wdi1sTFFJSCFmaGl2YEgmZXkmfT4wO0phQmZnJjcjO2V0
eVR1ITBfS0tmc3g/fGl4YDgwJit1WnJ4bmNXWQp6VmA9UGVeI2dOdm9fV1d+QFB8aVNob05EezBW
YWtIUFcrNDspQXYzM0hfTHFNUG5RNGUzO340KTNGeyFuKUtOOX4Kekx3eilTTSNCZU4pfEIxTno5
JXtNSXhxKF9gMHBnUGhgTSY+JXs+TiY1OCpLejcjTmI2eEVVMUdNajR9bEZxI3JaCmhiSFFqWDc/
UWNie00lN01xbnFBXnlNVjE/MjJXUSVtdnY0Rk8jczVTYS0wQUYKCmxpdGVyYWwgMApIY21WP2Qw
MDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dy
b3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRlZDA4YmRjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3Jv
dW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRl
ci1ibHVyLW91dHNldHMuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFj
a2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAyNTEwZmJhZWMx
ZjIxYWY5ZWNhNmM4ZTk5ODJiMzQwNTRhOTYyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLmh0
bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD48aGVhZD4KKzx0aXRs
ZT5CYWNrZ3JvdW5kIGZpbHRlciBibHVyIHRlc3QuPC90aXRsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CisgIC5jb21wb3NpdGVkIHsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRl
WigwKTsKKyAgfQorICAuZ3JlZW4tYm9yZGVyIHsKKyAgICBib3JkZXI6IDEwcHggc29saWQgZ3Jl
ZW47CisgIH0KKyAgLnllbGxvdy1wYXJlbnQgeworICAgIHdpZHRoOiA2MDBweDsKKyAgICBoZWln
aHQ6ICA2MDBweDsKKyAgICAtd2Via2l0LWZpbHRlcjogYmx1cigxMHB4KTsKKyAgfQorICAuY2Vu
dGVyZWQgeworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBsZWZ0OiAxMDBweDsKKyAgICB0b3A6IDEwMHB4OworICB9Cis8
L3N0eWxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBmdW5jdGlvbiBzZXRC
bHVyKCkgeworICAgIHZhciBibHVyTm9kZSA9IHdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYmx1cicpOworICAgICAgd2luZG93LmludGVybmFscy5zZXRCYWNrZ3JvdW5kQmx1ck9uTm9k
ZShibHVyTm9kZSwgMTApOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICB9CisKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgd2luZG93LnNldFRpbWVvdXQoc2V0Qmx1ciwgMCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICB9CisgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRy
dWUpOworICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPCEtLQorICAgVGhlIGdyZWVu
IGJvcmRlciBpcyBvdXRzaWRlIHRoZSBsYXllciB3aXRoIGJhY2tncm91bmQgYmx1ciwgYnV0IHRo
ZSBiYWNrZ3JvdW5kIGJsdXIgc2hvdWxkIHVzZSBwaXhlbHMgZnJvbSBvdXRzaWRlCisgICBpdHMg
bGF5ZXIgYm9yZGVycywgdXAgdG8gdGhlIHJhZGl1cyBvZiB0aGUgYmx1ciBlZmZlY3QuIFNvIHRo
ZSBib3JkZXIgc2hvdWxkIGJlIGJsdXJyZWQgdW5kZXJuZWF0aCB0aGUgdG9wIGxheWVyCisgICBj
YXVzaW5nIHRoZSBpbnNpZGUgb2YgdGhlIGJvcmRlciB0byBiZSBibHVycmVkLgorICAtLT4KKzxk
aXYgY2xhc3M9ImNvbXBvc2l0ZWQgZ3JlZW4tYm9yZGVyIiBzdHlsZT0icG9zaXRpb246YWJzb2x1
dGU7IGxlZnQ6NTBweDsgdG9wOjUwcHg7IHdpZHRoOjIwMHB4OyBoZWlnaHQ6MjAwcHg7Ij48L2Rp
dj4KKzxkaXYgaWQ9ImJsdXIiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo1OXB4OyB0
b3A6NTlweDsgd2lkdGg6MjAwcHg7IGhlaWdodDoyMDBweDsgYm9yZGVyOjFweCBzb2xpZCBncmVl
bjsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLmh0bWwgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zODk5ZDk2YTg3ZTYxNjkxM2I4YTIzMjI0ZjU5NjYxZDIzYTlkODEzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRl
ci1ibHVyLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD48aGVh
ZD4KKzx0aXRsZT5CYWNrZ3JvdW5kIGZpbHRlciBibHVyIHRlc3QuPC90aXRsZT4KKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CisgIC5jb21wb3NpdGVkIHsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTog
dHJhbnNsYXRlWigwKTsKKyAgfQorICAuZ3JlZW4geworICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworICB9CisgIC55ZWxsb3ctcGFyZW50IHsKKyAgICB3aWR0aDogNjAwcHg7CisgICAgaGVp
Z2h0OiAgNjAwcHg7CisgICAgLXdlYmtpdC1maWx0ZXI6IGJsdXIoMTBweCk7CisgIH0KKyAgLmNl
bnRlcmVkIHsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMTAwcHg7CisgICAgdG9wOiAxMDBweDsKKyAgfQor
PC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgZnVuY3Rpb24gc2V0
Qmx1cigpIHsKKyAgICB2YXIgYmx1ck5vZGUgPSB3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2JsdXInKTsKKyAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0QmFja2dyb3VuZEJsdXJPbk5v
ZGUoYmx1ck5vZGUsIDIpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICB9CisKKyAgaWYgKHdpbmRvdy5pbnRlcm5hbHMgJiYgd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgd2luZG93LnNldFRpbWVvdXQoc2V0Qmx1ciwgMCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICB9CisgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRy
dWUpOworICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cis8IS0tCisgICBUaGUgZ3Jl
ZW4gYm94IGlzIGVudGlyZWx5IGJlaGluZCBhIGxheWVyIHdpdGggYmFja2dyb3VuZCBibHVyLCBz
byBpdCBzaG91bGQgYXBwZWFyIGJsdXJyZWQgb24gaXRzIGVkZ2VzLgorICAtLT4KKzxkaXYgY2xh
c3M9ImNvbXBvc2l0ZWQgZ3JlZW4iIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo1MHB4
OyB0b3A6NTBweDsgd2lkdGg6MjAwcHg7IGhlaWdodDoyMDBweDsiPjwvZGl2PgorPGRpdiBpZD0i
Ymx1ciIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjMwcHg7IHRvcDozMHB4OyB3aWR0
aDoyNDBweDsgaGVpZ2h0OjI0MHB4OyBib3JkZXI6MXB4IHNvbGlkIHdoaXRlOyI+PC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItZXhwZWN0ZWQucG5n
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNr
Z3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTNiYzM2M2M5Y2U4
MjJmMDBkNzhkMDYwOGQ3MjNhNTY4OWZiNTMwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNzc2
CnpjbWVIS2VAeFA4OURiJGpyJDQmdU83eHU2WmdzVkZOQGJEIyhBRFg2d2FkPElgSz17fTkmfCM5
czBkPC13dVk0egp6eVBIVmBPNnp2ZmhTQiNiZilmPyZKN3RUJkJgMmdEQm9kbGdmTzNrMiFoUVNl
dyk/YUg/IzRnd2ArNDdZZCFLakQKektGezspejQoM2gtc21MPk84QH1UYEBZUlExaS12aTBBUWQr
Nzw2YUZYRGh4JHJ9WShDUCh7Jj88UlYlKl5FQjkkCnpNJXNxb059dj54RFJePyk3U2lVVEEyeDRJ
ckh+M3FnX0pHbXV5TUZpMFlKPjVlVk14dHZxa1QkVF92Qko8Nz1QQwp6fEQwck1KbHU2SVpveT1i
LT03dD87SzhFdjJAa0dPemJrOUkpcH09bGpeP1Q0KG5mPEZ7QXVmc3tMOExwLURNblkKemlVNzVT
SH1XX0RKaW1NYjBrRSt5NS1lTihBMSF7PCheN2BpNVJWKytkRzsyKkNVNjs8OEtneEZYPDN6WiU7
USVOCnpAfUNYIXRNXk8kbF5oUFNJdFI9UzhQPnJ+cV9rdSRHNjgzfU12P1htbXJwelFVPDBOaHFj
RXxEa3d9cDBEZUBhOAp6QlNuN256RGRkO0glNGw3WCVmd2BDUzx9PiUydExyQSMkKVJHIS1POztE
WGVaeSo/PDxLflc5M1k7VGtBRysyZSEKeiRgQENxaktzKjVBak5xY0dvSVF4aTFZYWgrO25jb29I
SG59MVN+M2xOJjImVEN5ZTVhVnpyRTJHUmFpTW1WRTJtCno1fVZyPWlALUB7c3JFQDkxbGxpbm0k
ZHJ2KyNCbElOdkEtfmVJTC1PX3pKYm4jX2YyQ285M0hzX0cqI3I1IzF6Mgp6QUB2cmFjdHAlMnpt
Tz5gUTxWPH5UTmc7cWdaOVNxI2pQWjQmNW99M1l+S1czITQzRnp5PCVLP1p+ZWdmKXhEK0wKemFV
enFeSVgjSlYqT1JjYUo1bTw/PHMzNiRjOWZsWSpCe35lVnV3SnBVNEoqNTEtbkw2bUk2OUFJT3wz
NiNZeVM8CnpmUGRvM298ejtHVldDN3soYjE5QVdWYyNhRVV5KUArZT4jfHpsaWJOSG1yZXBCJmJQ
Q2dTQDBwbCYtNGE/M2g+Xwp6b2JiZmZiJGZTNG4mMnEyV2p0YC1Dc0V8YGI8Z2ptMUw3YT9rKjNt
e01QS1BpUmtPZUh7UF5DMHBBPWRKdnc2OEUKenE3Z2lPQj09WXxAajVJMz9CYktsQSlWMXptTyEz
IVAzLTsyJjFeJTBJTXIoZlF5JTN+Jmh6WHN0YzhPQFc3WkFICnpzOWI9RWBUQlZwc1ZDIVcwMTdj
biFLJEB6eENvT0Y/dTN0NGZ6VjlVZ2ZfKUVqTlU8LXk7bUVJNz9PKClvVmFyRQp6ckRHZkZjfmgy
P1NSTlQ3bVJIUiN6Smo8M2VjT1UtQTd7cGFsI3g+eThrUj9BJTlHNShlIylfZk0kWE54TXRxZGsK
enhlbEhvTjtLJUFJT1gmYTtnbUFTQDQ/Z3g3fmorfTZPSzNjUUdGQ3ZUMFN4NDxZNFFvR0x+Kj12
OUVfXjNiVmxJCnpibT83PE08cUVYK1duWVgrYCNZaU89R3Y4YXBYM2NCRzFeNWRTUj5wJDczakts
cjZFfDUzY1RKQ1MxcktBMWtaJgp6K2xMWUtTVU5eayo8XlhOeFFCcTlHeHtsbjs2KilvRHVQTz1B
WXxtdnJBOHF0aDE7ZEp4bmwkNVd6WlEjWnF7ajIKeiRhYWBPciZyUHxDOUQ0ZGJyYyZvWlAkfSsx
P3sqVkpHSEclPXBJNE5Lcnk9OEdXSiNEd2EoJlFgM0xnUVRZVn5ECnpvVSF7KyVNcilaYEFjZ0I8
LXxKWFAxTSFrZUFJQkFSd1BKTHppcDE0SlNFOX1xRWAtLUpWcWJWRmc5RiNaVmUzQgp6WCUycj57
bEJBWEZTOHByXiNZUlckTDIyVHNTazx3SzE5dSUlYjQrMyUwekpzZDFrdDlHKG1sfiM7Mm5LUG5q
VloKendQSlJBVS1HQHpKSVBJNUQ/bilCQz5EKSpGNGVJQXF1VV4/cGZHamU5MHt1K3RiK2ZFM1pf
JHs7eyhtMlNFMz5HClBPQTdYN1dvT0Z2b0grTTQhVGNCdAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx
CgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcv
ZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXIt
Ymx1ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIw
YWFkN2JkZWQwOGJkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0
cy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGlu
Zy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3RlZC5wbmcKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDNiYTZiMjM1YjIyODNlYzZjOWNhMWZjYzdjZDRiYjU0MjhhN2UxZQpHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgNTkwNAp6Y21lSTA9fnErdF9RbnJgQjJLZ3BSOGNfTnN+cj9qQSVR
PzRSI0I+MHhDa0wzajJhMSQ1VGN9QGhEbkB6RTF8WCQKejZiVl5NNXk9RCpQNkVMJk5LM1I0eFBh
IyUyX3pzd1l5dEBnQTtAXitAQW5WZlM5ZE1mXjNgeyh2LVdxYmVhXkdACnplbS1hYV52fEd4SDdn
eGYwc3llKSRvS3hvMGw7Yi0wOWZLeVNlbDx+K18zUldeWVFoTWhqMmQ8NjV8UEVTe2VsKQp6NVoj
ZDtOWTdLbWVWKDNQQ3B9SVFrY2QtNmNMSVRrQkFrcU9fYWRZPE1PKn57YH07QHl6WTlCOEprfXE9
Nzx5VzgKendSNms4S0U+ISQhJlNCUGVuak5nQyFNfih4dU5XdmpKX1B5JnJlVzA5dWBGTz01Nj9X
SWw2RGZPLWckTjBLQT91CnpFR2AyOHpxfT8oVjh3YkkwR3pOfjEjQ01PWDh+TmMtMz9zV2xlLU1+
V00+cnNKaDhTMV9UVDxjZ0lATldVOXZRUQp6SVc+bUdqUlZpLT1qUWRYNzhtNHVuKlpCKG87JXBf
ZFhjO3wmKDBCJT8jNCg+RCFoKkdDWFZjPE0+YlkzbyNOKysKell+KHFWakhab2tWO3pHTkpkfW94
OT1WTj5aSm5kcyplaVF6bG49YHxUSSRsQSpwUTZgR09xX040PH1SVnMxVihfCnpnUGslYXZWbiZ0
aiRAVVZkWVppOWYtVlUmR3xiVnQxQz8tPio0fXhUbyVMTSFTZyslWTlqK31zPCZpKVNkJSE9Kwp6
eS1LXk1vK0xFfGdjJVdoaDdkJStjeCskLWhCYm9RUTYoVmVhWm54azskQlElezYoLXxLZEI7O09F
SHk1PHkqSXUKekAyMkAzJVAtYG93bCZlODMjTXlHM291b2o/bjh1Q3hjblZZZTU7T0MzOC13bXFY
dzY2M3pNVnNQPk4qSjhMQVpHCno2KE1CQjItJnsmRS1kZ20zUS0wM0xiVHtDVzk2YHF5aWtlY21B
Q0Z8cDR8fGZpKHU9O2t8TFQpbGNsN0NKVWpDbAp6e3JSWnpJdjJJazl6WWVZPUViV2FwYGJ6MDxL
Njd0PVFoYjdJeHZXbyhPR2Q3Kys3TD4tS35mfnlvPlZYKyNDNjsKemZyckE/MHs5a3dDeW8qaEo9
YG16TDsmTjMoZTcydVVKUlBJK1JzNzkmRWUtbElnZ0ljT3QhdkM2JCFoaWsySit3CnohNDVjaTEy
XjU3Rng2YHFpenlaUDt0KFdKLTVNZFY/YWg7MVBfVyRUTDNyJGZaV0IleSM5TGchQmt9UTZESlJI
Qgp6YyQ2NjNKQEkoOEB2JF9FJT00Uz0hcFF+RyF3cldxbEBabTQma3RLJXVSazN9TmlzcVclb0BD
dnVJZ2toZV9hYU8KenlVIUZTXnwwQG0jQUVZbXVAdGUmZTJ1Y3psSXhfcSMzITxeOygkfXBoJD5O
c3QpUFh8R1dJQE1xdlItI09yKEAyCnplXnQlaDwtQDh0NSQoKnwrajwqT3hjKi0lalRBJHN0PGxB
JlcwYlpJQnZtVVAtfWAjKXsob2J2YlV6O0dqT1VObgp6YHEkb2c2cUYwSDNUbTl6PysoMSZsUXoz
eSg2NTBiQiE9X0xpSFZSUmsmbGpmNjtqPlMqX3VwaUcmZ0xqPmxVMDsKekp4aSVtUSlTUCF4YC17
UndaaUYlZzYoaHRpLS0rQSRQMTBiYTZfcylENXRAYXp3WUkhQnUkcHZiZFBlPWBkK0tyCnp4dEVw
SnhecEtAMyRMen14NHc7ZExaLTgjckZPaGRKZXBARyFYRk1WJkZjKGNONUAld2Fgc3UxY1RDVF9h
fX52Kgp6Tm0qZCFQKDs1dj5lbCRWdGBPSjZgYWp6SyowJUctTk0mailtX3QwQlIya1YxdztBTWo2
UStsc1R2NS1UMCVvP0UKeml2aiNpZG8jaSlzOV9aRDkySi1VeWVeemwlRz1qMGNAK1ApIyUlKiFP
Y0N8TSUwI3sqbktxNCpKcURHRGdnVWtFCnpGYGIlS0JmUX5tdkYrOGJ4bk5uPmBDRz0hSkRNVFBr
TD8tPCgwfUdyeEJgPWJ8MilkZ0pBIVd2RkhLbnhAbUg2cQp6VHIhSHBlbnBgTzsxZ09+bFMwZHhl
ZlBeZGt6a2hZaylebjVPeDxAakZVX1RUQiRhLX14N3h7JCokWlZlc3NvfX4KekdPVm42eyUpTWJG
RXBxTDU4SEBzOG8lTlgpeEp0JlhIOzxJM09FMVNHSDdUYmQheHFCdFlFfERDPTQxRmM+PSg5CnpK
KiM7d0pDPztfN1p9YFkkfiVYfHhgU3dfSz5sZT0xUSRzYl4taX5YX2Y8fiMmT0g+bT5fQUgrZzky
TjM7PmBXegp6VUtMWlM2YElTeU5BI2pRRXA7dHE3V2hPR1omZVlacjxFZ09eXkB3bENmfGwhPClw
PSpQVTNhZjR8fjxgWWNAKygKemx4c302MipTfGRqV0swYE8+bFlBOCs0dEB5e0MpZ0AqNXxPVmNa
bDtMR1JILXJCfEFJMUdYc1o8Rm5BbylMaW92CnpVczBiTj1qaShLdkVjemQrQjApPVNuKkM9ZTBv
fkVPdX50UEk3Q25zYkFFaCZVQDhUKlJgN1RrYTl3Z0xqeFlQOAp6PC13Z0g+c1BtYm43aHB4M3hM
WmRUe3hfJF98X2x9M3oyOzUtVkZOd2JNamBXOCRzXmRGbEo2blE8UkdWMyVXdU4Kek5SPWwtV2dX
S3FFRFg0bksxT1MtRWZiYkJnekRDczspXzVTO31ndGhfPjJTWk9Ba3lgcVM8VGoxYjBfeHMoO2Vr
CnpDPC1PMXdObURlLSRgfF5Da2RKMD5sYmdXZzN9UHJVdnl8RCVLTmR2ezk1YzlVUWI3a0gxX2sl
bDR4a3MhWjxiNAp6SUJQdjRYV0g0cGE8VnY2RiNkTkwrbzBZUGVERFkwWTJCJGZtZ2kwfXkock40
RVl3aThQKndWX1I/fEE4ejBkckcKeiE8bHNBNFZNKz9mMHBlTyg8fVJfS1E9YW4zSUc+Zkh7JVNU
WFJLZUZ1dzw2QnIwbHtLZj5BRC11a1ZSJFZNMTF3CnokXzloK0RNdGRvemp3e1dOOWxnb29uK3ow
cE03eUArMmhlMjduWXY7NihyOWthI1hKTiZNTGRjbklwaldieXttKAp6NFNPVlphbEVwelFYdFVK
dFZ7e0tSKjlaOEckc0g4bTk+bDN0QUdLIUZGdHNLe2IwJTlXOChXP1Z5d3Q7VXk2RjYKemV0Y24o
V3g4WnE0Sjt3ZFpCe3lidUZlcT05MTlPVXJPJUcmM052cVhiN1JyeGBONCtHITF3UGlIX2N2UT1q
fiNzCnomekBlYHZzQyVuaX5YeEVzMFI7UGxKNmQkbSFKN2x4dCkxJUcrXzQ2eCNuR0tvMmJVXnhr
azh5NylIYzg2WiU2RAp6clohQ1ppfG9ta00mND1RYHBtMzhjRUlnNjF8eDM8bk0xPkdTdUpjNUxj
PGRVYX0+IXNQY0VLM3lnd3NDc21xZTYKenQ+fTh7ampeJGI9YFc/cmZUeG53SUY9JUBXSiYpTHFx
S1hEPFpfXnJhREd2JTxZRCl5SHQ4YjVSRzFDRitaZmE2Cnp1Slohczd6c2RBZl9he2ApajRldEM7
Z0dgaz4kJjRNfmFfOF9eQGdoYnV6P1UoVHl3Z2ExUEF2RDZObmtvQWp1bwp6JiklVzRxVVp9Mj9g
TWRrRlF3eEFaaWtmRXQod2ljUUlkI3w+fWJjODw5X0NQTzswSjZpPDxhPHJ8c1NZVCgzN3IKemlq
bVpTemxfQD9qej18dkpgfXlwUGBkc2JSfXhoeGNBSGgyU342I1lTZ0p0YWxoa0tUb1N1N3NXO1U9
NWl6Mj93Cno1Tjk4RTdOQ0NkY2lXe3hRJWwyeFp5X1ltX34jQlF2T2VIaGM/Zio+ciRiNXxpNT0l
K15KMyZGb3VhWFlHbFI3Mwp6Vjs7ZTJZNGhUU2NraDdsPyp5QjEjXllmJGhRcilLbHRHelhkWURY
VU09OVBeeVR5dW5NUngwND1ZKnJRI2B8bXIKemtIa1E9Wlleem5PTUgwKSNjYSVLdE5jR0NXeXFK
cXJEWkEpSVEwfih2PClWNUlTVU9LRT0tSmNBVE1rPjtvREUhCno3fGYzSWZ9bC1HPC1pIWxySFdv
dFhsb0NJbT5xOU9wfXpNcE5LQXxLe2YxT1ckcSZSdyFgKDw7M3htcn1oZmRVagp6Yn5QZzdMMTBC
NEYlQWxpVz9gP2EpbUBAbT5ieDUwbkBecmAoVE88YlNoaDkxeFp1cm1eNnZaIVhsekRVaz1yezwK
enJ0eiM0KUE/OChEYV48KiElaDVgdSo4QjM3Sjx4Z2o0aDgkQDZXP2whYFZlY2VnK3glV2JVekFs
bEE7ZSU+SztYCno4P3NIKzc2WWBYZU59TTNGMjl1TXlyOXgmT3tyIz87ZXBacHZsUGE4b2o5Ymxx
aFhZJCl7OzxuPlRUZ2VWO05QVgp6RF5GVWkkJj9DfGVran03UjNeflZ2Z1h0T0YhbCRweFheTE5P
Z2IpQmokNnBlbE1ufH1TdGJ+e0VqNU1ePlpwOFEKej01bEFIM1c1KykqSDZRdEJ4VzU5KWwkb2gt
aEZzQFcjZTJnRnBlQEMzNHN3I2lDajVhUDBhKUlEdygkTUQyO0tSCnpFYmNyXkhCLUlJcnp1Sl5h
PVU3T2JURFB6OCVIJm0leik2a3NnbE1zV0ZHKUI4TE1wSTw1PEZ0alEmVispLStPYQp6Vy1DSEQz
VDVjeiVYdW1+UzlHSGlQc1ZfWk41dX5ZaSgpIW4kSzxjZFpNNVN9eFEqYnszenZiSnQ+KjZLa2dF
Ry0KelFsbllLRjRBMFh5aHUxJkQ9e2gpT1I/MGs1VWxhc09tVm9TNCZSPVRpZTQ/dTc5RWAtJStL
dTIta2teZmQzbkhSCnooYzF3KColZDJ0MSRWQzJGZWt1c0x5VFRpRGdgQ05ldzEmNTNuZn45NTMp
WT5lJj88WGJoRWNMVHVoNXgoYFR2awp6KTF5YzdvaE4xOHxHSDwhTl5NYXQ7eExIVWFfQ1RJLXtD
ZXReMCRtZlN3QzxRUlU4VjkkNjFITm51ciZUPU5fe2cKemhsRCsoJGp8NVo8YGx5IyNXY0BNKHxT
dkBoVkU0KC1zTzBNWjFHNmJ1JXh9VEhFez9AJjR+N2VaRjxaYHlvST93CnpGR2pLV15eLXpkSU8k
OCtUU204cl5DdCsodUBwT2Q7RWNIfTlwcTByNWRFN0BxKkVGdXBaakwyRTtJRz9tUlF6dwp6OTBw
UzB3QSNPN3d2Y18kYX1EZHNjTHxqQnl6YEN1bnZRaSRiSjhRYHF5eGFUaShzKU4xMnFnZTtWMkIw
YDQ9dG8KeitfK2I+IVZmaiRVSEB4RCZweS1IcnRUbWZKTm9BN0prSWNvUWtncjBWTFlXKiZ1OUtX
LUomJC1NdjBaOG5BSGk9CnpmMyFkSGY3ek9APU5oZm88bzd+IVZyUDFjZUhhIzchKlpONXtATmtt
cztkeHxtPFchfSQ9ejxpXjslKmE8eXdvIwp6RFg+U1Bva1hUb3c/KT5zQXZAQzJ6T3tsK1R6ZTBu
TVk2cnszR3AxVS1nVTQtRDlWZUZhczZ7OWYzcTA0XiF7X3YKemhldzlCcDdQcko5OHdzRlhSWih6
Rz42N1AxWUpSXk1BOVNTWHR1LU1HRiFEdWQhe1U1e2NobUNkMVQxOWdQMWw0CnomPi1VczlXRUI3
cSZpY0lpUCRkZlpeQGReX315RHxScEdUXkZVfk1QbXNPbHlLPSFyaTFTaC0jP1FmVUVkfWwmVwp6
RU51VzVrMWY+YVNPNkQtfDB7ZiV6RTwrZzVnM3BoYF5ZKlV7eXlhK0hHUjBkdSNlaCgpYjQrfSUz
Wld1KipvPmMKVUJOJHBeVVUzNlE0aDh1TzQjWnZqNEA9MTtydkx4fAoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9z
aXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNr
Z3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMTM3
ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91
bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136353</attachid>
            <date>2012-04-09 17:46:24 -0700</date>
            <delta_ts>2012-04-10 10:03:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80046-20120409204622.patch</filename>
            <type>text/plain</type>
            <size>61412</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGNlZDg3NzIxZDlmZmFl
NTRlNDg1OTlhNjRlZjc5Nzk5YmM1M2Q1OS4uYWEwNWFmODMzZjI2MTFjYWQ1YTkwYmIwYzZhYjBk
MDY3MjliNGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA0LTA5ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQmFj
a2dyb3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhY2tncm91bmQgZmlsdGVycyB0byBM
YXllckNocm9taXVtL0NDTGF5ZXJJbXBsLiBUaGVzZSBmaWx0ZXJzIGFyZQorICAgICAgICBhcHBs
aWVkIHRvIGFueSBwaXhlbHMgaW4gdGhlIGNvbnRlbnRzIGJlaGluZCB0aGUgbGF5ZXIgYW5kIHNl
ZW4gdGhyb3VnaAorICAgICAgICBpdC4KKworICAgICAgICBUaGlzIGlzIGRvbmUgYnkgYWRkaW5n
IGEgYmFja2dyb3VuZFRleHR1cmUoKSB0byB0aGUgcmVuZGVyIHN1cmZhY2UsIHdoaWNoCisgICAg
ICAgIGhvbGRzIHRoZSByZWFkLWJhY2sgY29udGVudHMgb2YgdGhlIHRhcmdldCBmcmFtZWJ1ZmZl
ciwgYmFja2dyb3VuZCBmaWx0ZXIKKyAgICAgICAgYXBwbGllZCwgaW4gdGhlIHN1cmZhY2UncyBv
d24gY29vcmRpbmF0ZSBzcGFjZS4gVGhlbiB0aGlzIGlzIGRyYXduIGJhY2sKKyAgICAgICAgaW50
byB0aGUgZnJhbWUgYnVmZmVyIGJlZm9yZSB0aGUgY29udGVudHMgb2YgdGhlIHN1cmZhY2UgaXRz
ZWxmIGlzIGRyYXduLgorCisgICAgICAgIFRlc3RzOiBjb21wb3NpdGluZy9maWx0ZXJzL2JhY2tn
cm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy5odG1sCisgICAgICAgICAgICAgICBjb21wb3NpdGlu
Zy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXIuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6
YmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1cmZh
Y2VRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJh
bWVidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6aXNDdXJyZW50UmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjp1c2VNYW5hZ2VkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
OgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpiYWNrZ3JvdW5kRmlsdGVycyk6Cisg
ICAgICAgIChSZW5kZXJTdXJmYWNlQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAg
ICAoQ0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmJhY2tncm91
bmRGaWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VidHJlZVNob3VsZFJl
bmRlclRvU2VwYXJhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZW5kZXJTdXJmYWNlOjpkcmF3YWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUJhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpyZWxlYXNlQmFja2dy
b3VuZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpjb21wdXRl
RGV2aWNlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y29t
cHV0ZURldmljZUJvdW5kaW5nQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFj
ZTo6Y29tcHV0ZVJlYWRiYWNrRGV2aWNlQm91bmRpbmdCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZW5kZXJTdXJmYWNlOjpyZWFkYmFja0RldmljZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1Jl
bmRlclN1cmZhY2U6OmNvcHlEZXZpY2VUb0JhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OmdldFNrQml0bWFwVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVy
U3VyZmFjZTo6ZHJhd0NvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFj
ZTo6ZHJhd1JlcGxpY2EpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVycyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmg6Cisg
ICAgICAgIChDQ1JlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJm
YWNlOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1
cmZhY2U6OmJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6YmFja2dyb3VuZFRleHR1cmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QmFja2dyb3VuZEJsdXJPbk5vZGUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAg
ICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAy
MDEyLTA0LTA5ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQ3Jhc2ggZHVlIHRvIGZsb2F0cyBub3QgY2xlYXJlZCBiZWZvcmUgc3RhcnRpbmcgU1ZHIDx0
ZXh0PiBsYXlvdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUzZDgzOThhY2E3ODEx
OTIwMmQ4ZjJmNTRjZGQwYWU4OTExM2ZiMjUuLjI2NWE4ZjBkMWY2NzMwZWMxY2I0OTQ0MTkwN2I5
NTU3NjFkYzY5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTItMDQtMDkgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBCYWNrZ3JvdW5kIGZpbHRlcnMgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NM
YXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTA0LTA5
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTEzNTYxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRl
eCAyYWQwOWI5NDhhNDNiYjNjZTNhNzE5NTFmYzdiNWQ5ZTEzMDBlYTU1Li5lNDI1ODRjNmU4YzA5
NTFmOTVjNDQzZGZjNjBjZTE4MDUyYmIzOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAt
MzIyLDYgKzMyMiwxNCBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldEZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycykKICAgICAgICAgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVk
c0ZpbHRlckNvbnRleHQodHJ1ZSk7CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dy
b3VuZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMpCit7
CisgICAgaWYgKG1fYmFja2dyb3VuZEZpbHRlcnMgPT0gYmFja2dyb3VuZEZpbHRlcnMpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2JhY2tncm91bmRGaWx0ZXJzID0gYmFja2dyb3VuZEZpbHRlcnM7
CisgICAgc2V0TmVlZHNDb21taXQoKTsKK30KKwogdm9pZCBMYXllckNocm9taXVtOjpzZXRPcGFj
aXR5KGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgaWYgKG1fb3BhY2l0eSA9PSBvcGFjaXR5KQpAQCAt
NDc0LDYgKzQ4Miw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCogbGF5ZXIpCiAgICAgICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMoKSk7CiAK
ICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKCkpOworICAgIGxheWVyLT5zZXRCYWNrZ3Jv
dW5kRmlsdGVycyhiYWNrZ3JvdW5kRmlsdGVycygpKTsKICAgICBsYXllci0+c2V0SXNOb25Db21w
b3NpdGVkQ29udGVudChtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQpOwogICAgIGxheWVyLT5zZXRN
YXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CiAgICAgbGF5ZXItPnNldFNjcm9sbGFibGUo
bV9zY3JvbGxhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBiOTgwMjJiNTJkYTU4YjkxOTdj
YmY1NDQ4Y2I2ZDQwYTlhMDdjMjcwLi5hNmU4ZGIxMmUwNGY1MTY5NjQ2NDM1MjI0NDllNmM1OGM4
YTljOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xMjEsNiArMTIxLDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogICAgIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0K
IAorICAgIC8vIEJhY2tncm91bmQgZmlsdGVycyBhcmUgZmlsdGVycyBhcHBsaWVkIHRvIHdoYXQg
aXMgYmVoaW5kIHRoaXMgbGF5ZXIsIHdoZW4gdGhleSBhcmUgdmlld2VkIHRocm91Z2ggbm9uLW9w
YXF1ZQorICAgIC8vIHJlZ2lvbnMgaW4gdGhpcyBsYXllci4gVGhleSBhcmUgdXNlZCB0aHJvdWdo
IHRoZSBXZWJMYXllciBpbnRlcmZhY2UsIGFuZCBhcmUgbm90IGV4cG9zZWQgdG8gSFRNTC4KKyAg
ICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKKyAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUo
Ym9vbCk7CiAgICAgYm9vbCBvcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZTsgfQogCkBA
IC0zMTEsNiArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9kZWJ1Z05hbWU7CiAgICAg
ZmxvYXQgbV9vcGFjaXR5OwogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOworICAgIEZp
bHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsKICAgICBmbG9hdCBtX2FuY2hvclBv
aW50WjsKICAgICBib29sIG1faXNEcmF3YWJsZTsKICAgICBib29sIG1fbWFza3NUb0JvdW5kczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDBhZDczYjQ2NzJmZWMy
OTc1Y2MwMWVmODNjODUwOTY5NjRlYjM5ZGIuLjFmODI0MGUzNzI1ODI2MGU2NWNlNDMzZjY3ZTQ5
MDZhZTEzMDMwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVk
ZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR2VvbWV0cnlCaW5kaW5nLmgiCisjaW5jbHVkZSAi
R3JUZXh0dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJM
YXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKQEAgLTUx
MiwxNCArNTEzLDc1IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3Jk
ZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogcXVhCiAgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfTE9PUCwg
NCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCA2ICogc2l6ZW9mKHVuc2lnbmVk
IHNob3J0KSkpOwogfQogCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91
bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBxdWFkKQoreworICAgIC8v
IFRoaXMgbWV0aG9kIGRyYXdzIGEgYmFja2dyb3VuZCBmaWx0ZXIsIHdoaWNoIGFwcGxpZXMgYSBm
aWx0ZXIgdG8gYW55IHBpeGVscyBiZWhpbmQgdGhlIHF1YWQgYW5kIHNlZW4gdGhyb3VnaCBpdHMg
YmFja2dyb3VuZC4KKyAgICAvLyBUaGUgYWxnb3JpdGhtIHdvcmtzIGFzIGZvbGxvd3M6CisgICAg
Ly8gMS4gQ29tcHV0ZSBhIGJvdW5kaW5nIGJveCBhcm91bmQgdGhlIHBpeGVscyB0aGF0IHdpbGwg
YmUgdmlzaWJsZSB0aHJvdWdoIHRoZSBxdWFkLgorICAgIC8vIDIuIFJlYWQgdGhlIHBpeGVscyBp
biB0aGUgYm91bmRpbmcgYm94IGludG8gYSBidWZmZXIgUi4KKyAgICAvLyAzLiBBcHBseSB0aGUg
YmFja2dyb3VuZCBmaWx0ZXIgdG8gUiwgc28gdGhhdCBpdCBpcyBhcHBsaWVkIGluIHRoZSBwaXhl
bHMnIGNvb3JkaW5hdGUgc3BhY2UuCisgICAgLy8gNC4gQXBwbHkgdGhlIHF1YWQncyBpbnZlcnNl
IHRyYW5zZm9ybSB0byBtYXAgdGhlIHBpeGVscyBpbiBSIGludG8gdGhlIHF1YWQncyBjb250ZW50
IHNwYWNlLiBUaGlzIGltcGxpY2l0bHkKKyAgICAvLyBjbGlwcyBSIGJ5IHRoZSBjb250ZW50IGJv
dW5kcyBvZiB0aGUgcXVhZCBzaW5jZSB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSBoYXMgYm91bmRz
IG1hdGNoaW5nIHRoZSBxdWFkJ3MgY29udGVudC4KKyAgICAvLyA1LiBEcmF3IHRoZSBiYWNrZ3Jv
dW5kIHRleHR1cmUgZm9yIHRoZSBjb250ZW50cyB1c2luZyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMg
dXNlZCB0byBkcmF3IHRoZSBjb250ZW50cyBpdHNlbGYuIFRoaXMgaXMgZG9uZQorICAgIC8vIHdp
dGhvdXQgYmxlbmRpbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBiYWNrZ3JvdW5kIHBpeGVscyB3
aXRoIHRoZSBuZXcgZmlsdGVyZWQgYmFja2dyb3VuZC4KKyAgICAvLyA2LiBEcmF3IHRoZSBjb250
ZW50cyBvZiB0aGUgcXVhZCBvdmVyIGRyb3Agb2YgdGhlIG5ldyBiYWNrZ3JvdW5kIHdpdGggYmxl
bmRpbmcsIGFzIHBlciB1c3VhbC4gVGhlIGZpbHRlcmVkIGJhY2tncm91bmQKKyAgICAvLyBwaXhl
bHMgd2lsbCBzaG93IHRocm91Z2ggYW55IG5vbi1vcGFxdWUgcGl4ZWxzIGluIHRoaXMgZHJhd3Mu
CisgICAgLy8KKyAgICAvLyBQaXhlbCBjb3BpZXMgaW4gdGhpcyBhbGdvcml0aG0gb2NjdXIgYXQg
c3RlcHMgMiwgMywgNCwgYW5kIDUuCisKKyAgICBDQ1JlbmRlclN1cmZhY2UqIGRyYXdpbmdTdXJm
YWNlID0gcXVhZC0+bGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOworICAgIGlmIChkcmF3aW5nU3Vy
ZmFjZS0+YmFja2dyb3VuZEZpbHRlcnMoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIEZJWE1FOiBXZSBvbmx5IGFsbG93IGJhY2tncm91bmQgZmlsdGVycyBvbiB0aGUgcm9v
dCByZW5kZXIgc3VyZmFjZSBiZWNhdXNlIG90aGVyIHN1cmZhY2VzIG1heSBjb250YWluCisgICAg
Ly8gdHJhbnNsdWNlbnQgcGl4ZWxzLCBhbmQgdGhlIGNvbnRlbnRzIGJlaGluZCB0aG9zZSB0cmFu
c2x1Y2VudCBwaXhlbHMgd291bGRuJ3QgaGF2ZSB0aGUgZmlsdGVyIGFwcGxpZWQuCisgICAgaWYg
KCFpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKG1fZGVmYXVsdFJlbmRlclN1cmZhY2UpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VyZmFjZURyYXdU
cmFuc2Zvcm0gPSBxdWFkLT5pc1JlcGxpY2EoKSA/IGRyYXdpbmdTdXJmYWNlLT5yZXBsaWNhRHJh
d1RyYW5zZm9ybSgpIDogZHJhd2luZ1N1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKTsKKworICAgIC8v
IEZJWE1FOiBEbyBhIHNpbmdsZSByZWFkYmFjayBmb3IgYm90aCB0aGUgc3VyZmFjZSBhbmQgcmVw
bGljYSBhbmQgY2FjaGUgdGhlIGZpbHRlcmVkIHJlc3VsdHMgKG9uY2UgZmlsdGVyIHRleHR1cmVz
IGFyZSBub3QgcmV1c2VkKS4KKyAgICBJbnRSZWN0IGRldmljZVJlY3QgPSBkcmF3aW5nU3VyZmFj
ZS0+cmVhZGJhY2tEZXZpY2VDb250ZW50UmVjdCh0aGlzLCBzdXJmYWNlRHJhd1RyYW5zZm9ybSk7
CisgICAgZGV2aWNlUmVjdC5pbnRlcnNlY3QobV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+Y29udGVu
dFJlY3QoKSk7CisKKyAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IGRldmljZUJhY2tncm91bmRU
ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFu
YWdlci5nZXQoKSk7CisgICAgaWYgKCFnZXRGcmFtZWJ1ZmZlclRleHR1cmUoZGV2aWNlQmFja2dy
b3VuZFRleHR1cmUuZ2V0KCksIGRldmljZVJlY3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBT
a0JpdG1hcCBmaWx0ZXJlZERldmljZUJhY2tncm91bmQgPSBkcmF3aW5nU3VyZmFjZS0+YXBwbHlG
aWx0ZXJzKHRoaXMsIGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5kRmlsdGVycygpLCBkZXZpY2VC
YWNrZ3JvdW5kVGV4dHVyZS5nZXQoKSk7CisgICAgR3JUZXh0dXJlKiBmaWx0ZXJlZERldmljZUJh
Y2tncm91bmRUZXh0dXJlID0gcmVpbnRlcnByZXRfY2FzdDxHclRleHR1cmUqPihmaWx0ZXJlZERl
dmljZUJhY2tncm91bmQuZ2V0VGV4dHVyZSgpKTsKKyAgICBpZiAoIWZpbHRlcmVkRGV2aWNlQmFj
a2dyb3VuZFRleHR1cmUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZHJhd2luZ1N1cmZh
Y2UtPnByZXBhcmVCYWNrZ3JvdW5kVGV4dHVyZSh0aGlzKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gVGhpcyBtdXN0IGJlIGNvbXB1dGVkIGJlZm9yZSBzd2l0Y2hpbmcgdGhlIHRhcmdldCBy
ZW5kZXIgc3VyZmFjZSB0byB0aGUgYmFja2dyb3VuZCB0ZXh0dXJlLgorICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtID0gZHJhd2luZ1N1cmZhY2UtPmNvbXB1
dGVEZXZpY2VUcmFuc2Zvcm0odGhpcywgc3VyZmFjZURyYXdUcmFuc2Zvcm0pOworCisgICAgQ0NS
ZW5kZXJTdXJmYWNlKiB0YXJnZXRSZW5kZXJTdXJmYWNlID0gbV9jdXJyZW50UmVuZGVyU3VyZmFj
ZTsKKyAgICBpZiAoIXVzZU1hbmFnZWRUZXh0dXJlKGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5k
VGV4dHVyZSgpLCBkcmF3aW5nU3VyZmFjZS0+Y29udGVudFJlY3QoKSkpIHsKKyAgICAgICAgZHJh
d2luZ1N1cmZhY2UtPnJlbGVhc2VCYWNrZ3JvdW5kVGV4dHVyZSgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaW50IGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCA9IGZp
bHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKKyAgICBk
cmF3aW5nU3VyZmFjZS0+Y29weURldmljZVRvQmFja2dyb3VuZFRleHR1cmUodGhpcywgZmlsdGVy
ZWREZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZpY2VSZWN0LCBjb250ZW50c0RldmljZVRy
YW5zZm9ybSk7CisgICAgdXNlUmVuZGVyU3VyZmFjZSh0YXJnZXRSZW5kZXJTdXJmYWNlKTsKK30K
Kwogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25z
dCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCogcXVhZCkKIHsKICAgICBDQ0xheWVySW1wbCogbGF5
ZXIgPSBxdWFkLT5sYXllcigpOworCisgICAgZHJhd0JhY2tncm91bmRGaWx0ZXJzKHF1YWQpOwor
CiAgICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+c2V0U2Npc3NvclJlY3QodGhpcywgcXVhZC0+
c3VyZmFjZURhbWFnZVJlY3QoKSk7CiAgICAgaWYgKHF1YWQtPmlzUmVwbGljYSgpKQogICAgICAg
ICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3UmVwbGljYSh0aGlzKTsKICAgICBlbHNlCiAg
ICAgICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdDb250ZW50cyh0aGlzKTsKKyAgICBs
YXllci0+cmVuZGVyU3VyZmFjZSgpLT5yZWxlYXNlQmFja2dyb3VuZFRleHR1cmUoKTsKICAgICBs
YXllci0+cmVuZGVyU3VyZmFjZSgpLT5yZWxlYXNlQ29udGVudHNUZXh0dXJlKCk7CiB9CiAKQEAg
LTExODYsNiArMTI0OCwxNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVi
dWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZQogICAgIH0KIH0KIAor
Ym9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZShNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgZGV2aWNlUmVjdCkKK3sKKyAgICBpZiAo
IXRleHR1cmUtPnJlc2VydmUoZGV2aWNlUmVjdC5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZSht
X2NvbnRleHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwor
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3Qu
eSgpLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogTWFuYWdlZFRleHR1cmUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Z2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCkKIHsKICAgICByZXR1cm4gc2V0dGluZ3MoKS5jb21w
b3NpdGVPZmZzY3JlZW4gJiYgcm9vdExheWVyKCkgPyByb290TGF5ZXIoKS0+cmVuZGVyU3VyZmFj
ZSgpLT5jb250ZW50c1RleHR1cmUoKSA6IDA7CkBAIC0xMjA5LDkgKzEyODIsMTggQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5KCkKICAg
ICB9CiB9CiAKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0N1cnJlbnRSZW5kZXJTdXJm
YWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSkKK3sKKyAgICByZXR1cm4gbV9jdXJy
ZW50UmVuZGVyU3VyZmFjZSA9PSByZW5kZXJTdXJmYWNlICYmICFtX2N1cnJlbnRNYW5hZ2VkVGV4
dHVyZTsKK30KKwogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2Uo
Q0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlKQogeworICAgIGlmIChpc0N1cnJlbnRSZW5k
ZXJTdXJmYWNlKHJlbmRlclN1cmZhY2UpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIG1f
Y3VycmVudFJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlOworICAgIG1fY3VycmVudE1hbmFn
ZWRUZXh0dXJlID0gMDsKIAogICAgIGlmICgocmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5k
ZXJTdXJmYWNlICYmICFzZXR0aW5ncygpLmNvbXBvc2l0ZU9mZnNjcmVlbikgfHwgKCFyZW5kZXJT
dXJmYWNlICYmIHNldHRpbmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVuKSkgewogICAgICAgICBHTEMo
bV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKQEAgLTEyMjIsMTIgKzEzMDQsMjggQEAgYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5k
ZXJTdXJmYWNlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBHTEMobV9jb250
ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOwotCiAgICAgaWYgKCFyZW5k
ZXJTdXJmYWNlLT5wcmVwYXJlQ29udGVudHNUZXh0dXJlKHRoaXMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICByZW5kZXJTdXJmYWNlLT5jb250ZW50c1RleHR1cmUoKS0+ZnJhbWVidWZm
ZXJUZXh0dXJlMkQobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2Nh
dG9yLmdldCgpKTsKKyAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKHJlbmRlclN1
cmZhY2UtPmNvbnRlbnRzVGV4dHVyZSgpLCByZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpKTsK
K30KKworYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZU1hbmFnZWRUZXh0dXJlKE1hbmFn
ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpCit7CisgICAg
aWYgKG1fY3VycmVudE1hbmFnZWRUZXh0dXJlID09IHRleHR1cmUpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9IDA7CisgICAgbV9jdXJyZW50TWFu
YWdlZFRleHR1cmUgPSB0ZXh0dXJlOworCisgICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZlclRvVGV4
dHVyZSh0ZXh0dXJlLCB2aWV3cG9ydFJlY3QpOworfQorCitib29sIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpCit7CisgICAgR0xDKG1fY29udGV4dC5nZXQoKSwg
bV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQpKTsKKworICAgIHRleHR1cmUtPmZyYW1lYnVmZmVy
VGV4dHVyZTJEKG1fY29udGV4dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRv
ci5nZXQoKSk7CiAKICNpZiAhZGVmaW5lZCAoIE5ERUJVRyApCiAgICAgaWYgKG1fY29udGV4dC0+
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9
IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewpAQCAtMTIzNiw3ICsx
MzM0LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoQ0NS
ZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlKQogICAgIH0KICNlbmRpZgogCi0gICAgc2V0RHJh
d1ZpZXdwb3J0UmVjdChyZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLCBmYWxzZSk7CisgICAg
c2V0RHJhd1ZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3QsIGZhbHNlKTsKIAogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtMTI1Niw3ICsxMzU0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QpCiAgICAgLy8gb2Yg
dGhlIEdMIHNjaXNzb3IgaXMgdGhlIGJvdHRvbSBvZiBvdXIgbGF5ZXIuCiAgICAgLy8gQnV0LCBp
ZiByZW5kZXJpbmcgdG8gb2Zmc2NyZWVuIHRleHR1cmUsIHdlIHJldmVyc2Ugb3VyIHNlbnNlIG9m
ICd1cHNpZGUgZG93bicuCiAgICAgaW50IHNjaXNzb3JZOwotICAgIGlmIChtX2N1cnJlbnRSZW5k
ZXJTdXJmYWNlID09IG1fZGVmYXVsdFJlbmRlclN1cmZhY2UgJiYgIXNldHRpbmdzKCkuY29tcG9z
aXRlT2Zmc2NyZWVuKQorICAgIGlmIChpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKG1fZGVmYXVsdFJl
bmRlclN1cmZhY2UpICYmICFzZXR0aW5ncygpLmNvbXBvc2l0ZU9mZnNjcmVlbikKICAgICAgICAg
c2Npc3NvclkgPSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLmhlaWdodCgp
IC0gKHNjaXNzb3JSZWN0Lm1heFkoKSAtIG1fY3VycmVudFJlbmRlclN1cmZhY2UtPmNvbnRlbnRS
ZWN0KCkueSgpKTsKICAgICBlbHNlCiAgICAgICAgIHNjaXNzb3JZID0gc2Npc3NvclJlY3QueSgp
IC0gY29udGVudFJlY3QueSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRl
eCBkNmFjNjgyMjkwNjkxMjdlM2IxMjBlOTM0NDljYmE5NWUxOTc1NjkxLi40NWVlYmNiMTYyOWRm
MThhZjMzMmRjODVmYmE5OTViNWJmZmM3MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uaApAQCAtMTM4LDYgKzEzOCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBDQ1ZpZGVvTGF5
ZXJJbXBsOjpTdHJlYW1UZXh0dXJlUHJvZ3JhbSogc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbSgp
OwogCiAgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IElu
dFJlY3QmKTsKKyAgICBib29sIGdldEZyYW1lYnVmZmVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSos
IGNvbnN0IEludFJlY3QmIGRldmljZVJlY3QpOwogCiAgICAgVGV4dHVyZU1hbmFnZXIqIHJlbmRl
clN1cmZhY2VUZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRl
eHR1cmVNYW5hZ2VyLmdldCgpOyB9CiAgICAgVGV4dHVyZUNvcGllciogdGV4dHVyZUNvcGllcigp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUNvcGllci5nZXQoKTsgfQpAQCAtMTczLDYgKzE3NCw3
IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdR
dWFkKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CiAgICAgdm9pZCBkcmF3
RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCopOworICAgIHZvaWQg
ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKik7CiAg
ICAgdm9pZCBkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQqKTsKICAgICB2b2lkIGRyYXdTb2xpZENvbG9yUXVhZChjb25zdCBDQ1NvbGlkQ29sb3JEcmF3
UXVhZCopOwogICAgIHZvaWQgZHJhd1RleHR1cmVRdWFkKGNvbnN0IENDVGV4dHVyZURyYXdRdWFk
Kik7CkBAIC0xOTIsNyArMTk0LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldERyYXdWaWV3
cG9ydFJlY3QoY29uc3QgSW50UmVjdCYsIGJvb2wgZmxpcFkpOwogCisgICAgLy8gVGhlIGN1cnJl
bnQgZHJhd2luZyB0YXJnZXQgaXMgZWl0aGVyIGEgUmVuZGVyU3VyZmFjZSBvciBNYW5hZ2VkVGV4
dHVyZS4gVXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBzd2l0Y2ggdG8gYSBuZXcgZHJhd2luZyB0YXJn
ZXQuCiAgICAgYm9vbCB1c2VSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSopOworICAgIGJv
b2wgdXNlTWFuYWdlZFRleHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiB2aWV3
cG9ydFJlY3QpOworICAgIGJvb2wgaXNDdXJyZW50UmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZh
Y2UqKTsKKworICAgIGJvb2wgYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgdmlld3BvcnRSZWN0KTsKKwogICAgIHZvaWQgY2xlYXJSZW5kZXJT
dXJmYWNlKENDUmVuZGVyU3VyZmFjZSosIENDUmVuZGVyU3VyZmFjZSogcm9vdFJlbmRlclN1cmZh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpOwogCiAgICAgdm9pZCByZWxl
YXNlUmVuZGVyU3VyZmFjZVRleHR1cmVzKCk7CkBAIC0yMTcsNiArMjI1LDcgQEAgcHJpdmF0ZToK
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3dpbmRvd01hdHJpeDsKIAogICAgIENDUmVuZGVy
U3VyZmFjZSogbV9jdXJyZW50UmVuZGVyU3VyZmFjZTsKKyAgICBNYW5hZ2VkVGV4dHVyZSogbV9j
dXJyZW50TWFuYWdlZFRleHR1cmU7CiAgICAgdW5zaWduZWQgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZl
cklkOwogCiAgICAgLy8gU3RvcmUgdmFsdWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIGluc3Rh
bmNlcyBvZiBlYWNoIGxheWVyIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgK
aW5kZXggODNhMjFkOWQ5NzA4NmNjMmRkMmFhNGY4NmMyNWMyZmU2NWFlM2M0OC4uOWE4NGViYjRl
Mzg1NDNmMDNmNTFmN2JiZDc0MTQyMzUzMmM3ZDk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmgKQEAgLTkzLDYgKzkzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmlsdGVy
cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSB7IG1fZmlsdGVycyA9IGZpbHRlcnM7
IH0KICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9maWx0ZXJzOyB9CiAKKyAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9iYWNrZ3JvdW5kRmlsdGVycyA9IGZpbHRlcnM7IH0K
KyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKwogICAgIGJvb2wgc2tpcHNEcmF3KCkgY29u
c3QgeyByZXR1cm4gbV9za2lwc0RyYXc7IH0KICAgICB2b2lkIHNldFNraXBzRHJhdyhib29sIHNr
aXBzRHJhdykgeyBtX3NraXBzRHJhdyA9IHNraXBzRHJhdzsgfQogCkBAIC0xMjIsNiArMTI1LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fdGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRp
bmc7CiAgICAgYm9vbCBtX3NjcmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKICAgICBG
aWx0ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dy
b3VuZEZpbHRlcnM7CiAgICAgSW50UmVjdCBtX2NsaXBSZWN0OwogICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBtX2xheWVyTGlzdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmlu
ZGV4IDJhZmI5ZDhmZjc0MWY5MzM1OTU2NmExNjlmZDQzNzI5NzAyYTc5NjkuLmJlZTlmMjYyMzZm
YjhiMjA5NzAzZDNlZTJhMWRiMzdiZTgyZTBhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAK
QEAgLTQxMCw2ICs0MTAsMTUgQEAgdm9pZCBDQ0xheWVySW1wbDo6c2V0RmlsdGVycyhjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZv
clN1YnRyZWUoKTsKIH0KIAordm9pZCBDQ0xheWVySW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMpCit7CisgICAgaWYgKG1f
YmFja2dyb3VuZEZpbHRlcnMgPT0gYmFja2dyb3VuZEZpbHRlcnMpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fYmFja2dyb3VuZEZpbHRlcnMgPSBiYWNrZ3JvdW5kRmlsdGVyczsKKyAgICBtX2xh
eWVyUHJvcGVydHlDaGFuZ2VkID0gdHJ1ZTsKK30KKwogdm9pZCBDQ0xheWVySW1wbDo6c2V0TWFz
a3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCiB7CiAgICAgaWYgKG1fbWFza3NUb0JvdW5k
cyA9PSBtYXNrc1RvQm91bmRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggNmNiNmRmMDNjMjll
YWU2MDg3ZTBmNGE5ZWU5NDFjMzJiOTk1MDg5Mi4uMDBkODQ1NGIxMDQ3MjgwZGVhMmNjZThkNTY4
NmYwYzQ0NWM1NDEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0xMTMsNiArMTEzLDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAg
ICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmls
dGVyczsgfQogCisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJik7CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMo
KSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRGaWx0ZXJzOyB9CisKICAgICB2b2lkIHNldE1h
c2tzVG9Cb3VuZHMoYm9vbCk7CiAgICAgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3QgeyByZXR1
cm4gbV9tYXNrc1RvQm91bmRzOyB9CiAKQEAgLTMzNyw2ICszNDAsNyBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBtX2RlYnVnTmFtZTsKIAogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOwor
ICAgIEZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsKIAogICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBt
X3NjcmVlblNwYWNlVHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENv
bW1vbi5jcHAKaW5kZXggOTUxN2U3ZDI3NTBiZjBlNGJhZTk3Nzc0MTMwODU3NTgzNzU0NWM3ZC4u
MWY2ZjY2NjBjZTg5NWM0ZjVjM2Y1Mzk3NTZjZGY3MTZhY2ZlMjY1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgc3RhdGlj
IGJvb2wgc3VidHJlZVNob3VsZFJlbmRlclRvU2VwYXJhdGVTdXJmYWNlKExheWVyVHlwZSogbGF5
ZXIsIGJvb2wgYXhpc0FsaWcKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiB0aGUg
bGF5ZXIgdXNlcyBhIENTUyBmaWx0ZXIuCi0gICAgaWYgKCFsYXllci0+ZmlsdGVycygpLmlzRW1w
dHkoKSkKKyAgICBpZiAoIWxheWVyLT5maWx0ZXJzKCkuaXNFbXB0eSgpIHx8ICFsYXllci0+YmFj
a2dyb3VuZEZpbHRlcnMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gSWYgdGhlIGxheWVyIGZsYXR0ZW5zIGl0cyBzdWJ0cmVlIChpLmUuIHRoZSBsYXllciBkb2Vz
bid0IHByZXNlcnZlLTNkKSwgYnV0IGl0IGlzCkBAIC00MDQsNiArNDA0LDggQEAgc3RhdGljIGJv
b2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBl
KiBsYXllciwgTGF5ZXIKICAgICAgICAgICAgIG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVs
cyA9IHJlbmRlclN1cmZhY2U7CiAgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldE5lYXJlc3RBbmNl
c3RvclRoYXRNb3Zlc1BpeGVscyhuZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMpOwogCisg
ICAgICAgIHJlbmRlclN1cmZhY2UtPnNldEJhY2tncm91bmRGaWx0ZXJzKGxheWVyLT5iYWNrZ3Jv
dW5kRmlsdGVycygpKTsKKwogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChs
YXllcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oY29t
YmluZWRUcmFuc2Zvcm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggYzQ3
OTNhNWIyNGM2YjE5NjA0MmVmMGYxZGI2NDdhMjllZDNiODAxOC4uYzhiOTFjZmM2ZDdkNTQ0ZTlj
ZDFmZDQ1YTc0ZjVhODI2NjAyNTkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3Bw
CkBAIC03MSw3ICs3MSw3IEBAIEZsb2F0UmVjdCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdhYmxlQ29u
dGVudFJlY3QoKSBjb25zdAogICAgIEZsb2F0UmVjdCBsb2NhbENvbnRlbnRSZWN0KC0wLjUgKiBt
X2NvbnRlbnRSZWN0LndpZHRoKCksIC0wLjUgKiBtX2NvbnRlbnRSZWN0LmhlaWdodCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250
ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgRmxvYXRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QgPSBt
X2RyYXdUcmFuc2Zvcm0ubWFwUmVjdChsb2NhbENvbnRlbnRSZWN0KTsKLSAgICBpZiAobV9vd25p
bmdMYXllci0+cmVwbGljYUxheWVyKCkpCisgICAgaWYgKGhhc1JlcGxpY2EoKSkKICAgICAgICAg
ZHJhd2FibGVDb250ZW50UmVjdC51bml0ZShtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLm1hcFJlY3Qo
bG9jYWxDb250ZW50UmVjdCkpOwogCiAgICAgcmV0dXJuIGRyYXdhYmxlQ29udGVudFJlY3Q7CkBA
IC0xMDQsNiArMTA0LDExMCBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6cmVsZWFzZUNvbnRlbnRz
VGV4dHVyZSgpCiAgICAgbV9jb250ZW50c1RleHR1cmUtPnVucmVzZXJ2ZSgpOwogfQogCitib29s
IENDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUJhY2tncm91bmRUZXh0dXJlKExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3sKKyAgICBJbnRTaXplIHJlcXVpcmVkU2l6ZShtX2Nv
bnRlbnRSZWN0LnNpemUoKSk7CisgICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyID0g
bGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCk7CisKKyAgICBpZiAo
IW1fYmFja2dyb3VuZFRleHR1cmUpCisgICAgICAgIG1fYmFja2dyb3VuZFRleHR1cmUgPSBNYW5h
Z2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsKKworICAgIGlmIChtX2JhY2tncm91
bmRUZXh0dXJlLT5pc1Jlc2VydmVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYg
KCFtX2JhY2tncm91bmRUZXh0dXJlLT5yZXNlcnZlKHJlcXVpcmVkU2l6ZSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBDQ1JlbmRlclN1cmZhY2U6OnJlbGVhc2VCYWNrZ3JvdW5kVGV4dHVyZSgpCit7
CisgICAgaWYgKCFtX2JhY2tncm91bmRUZXh0dXJlKQorICAgICAgICByZXR1cm47CisgICAgbV9i
YWNrZ3JvdW5kVGV4dHVyZS0+dW5yZXNlcnZlKCk7Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4
IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZURldmljZVRyYW5zZm9ybShMYXllclJlbmRlcmVyQ2hy
b21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJh
bnNmb3JtKSBjb25zdAoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlclRyYW5zZm9y
bSA9IGRyYXdUcmFuc2Zvcm07CisgICAgLy8gQXBwbHkgYSBzY2FsaW5nIGZhY3RvciB0byBzaXpl
IHRoZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRlbmRlZCBzaXplLgorICAgIHJlbmRlclRyYW5z
Zm9ybS5zY2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5oZWlnaHQo
KSwgMSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlVHJhbnNmb3JtID0gVHJhbnNm
b3JtYXRpb25NYXRyaXgobGF5ZXJSZW5kZXJlci0+d2luZG93TWF0cml4KCkgKiBsYXllclJlbmRl
cmVyLT5wcm9qZWN0aW9uTWF0cml4KCkgKiByZW5kZXJUcmFuc2Zvcm0pLnRvMmRUcmFuc2Zvcm0o
KTsKKyAgICByZXR1cm4gZGV2aWNlVHJhbnNmb3JtOworfQorCitJbnRSZWN0IENDUmVuZGVyU3Vy
ZmFjZTo6Y29tcHV0ZURldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5
ZXJSZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNv
bnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudHNEZXZpY2VUcmFuc2Zvcm0g
PSBjb21wdXRlRGV2aWNlVHJhbnNmb3JtKGxheWVyUmVuZGVyZXIsIGRyYXdUcmFuc2Zvcm0pOwor
CisgICAgLy8gQ2FuIG9ubHkgZHJhdyBzdXJmYWNlIGlmIGRldmljZSBtYXRyaXggaXMgaW52ZXJ0
aWJsZS4KKyAgICBpZiAoIWNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQor
ICAgICAgICByZXR1cm4gSW50UmVjdCgpOworCisgICAgRmxvYXRRdWFkIGRldmljZVF1YWQgPSBj
b250ZW50c0RldmljZVRyYW5zZm9ybS5tYXBRdWFkKGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21l
dHJ5UXVhZCgpKTsKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChkZXZpY2VRdWFkLmJvdW5k
aW5nQm94KCkpOworfQorCitJbnRSZWN0IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZVJlYWRiYWNr
RGV2aWNlQm91bmRpbmdCb3goTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgY29uc3QKK3sKKyAgICBJ
bnRSZWN0IGRldmljZVJlY3QgPSBjb21wdXRlRGV2aWNlQm91bmRpbmdCb3gobGF5ZXJSZW5kZXJl
ciwgZHJhd1RyYW5zZm9ybSk7CisKKyAgICBpZiAobV9iYWNrZ3JvdW5kRmlsdGVycy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBkZXZpY2VSZWN0OworCisgICAgaW50IHRvcCwgcmlnaHQsIGJv
dHRvbSwgbGVmdDsKKyAgICBtX2JhY2tncm91bmRGaWx0ZXJzLmdldE91dHNldHModG9wLCByaWdo
dCwgYm90dG9tLCBsZWZ0KTsKKyAgICBkZXZpY2VSZWN0Lm1vdmUoLWxlZnQsIC10b3ApOworICAg
IGRldmljZVJlY3QuZXhwYW5kKGxlZnQgKyByaWdodCwgdG9wICsgYm90dG9tKTsKKworICAgIHJl
dHVybiBkZXZpY2VSZWN0OworfQorCitJbnRSZWN0IENDUmVuZGVyU3VyZmFjZTo6cmVhZGJhY2tE
ZXZpY2VDb250ZW50UmVjdChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdAoreworICAgIHJl
dHVybiBjb21wdXRlUmVhZGJhY2tEZXZpY2VCb3VuZGluZ0JveChsYXllclJlbmRlcmVyLCBkcmF3
VHJhbnNmb3JtKTsKK30KKworc3RhdGljIHZvaWQgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgaW50IHRleHR1cmVJZCwgY29uc3Qg
SW50U2l6ZSYgYm91bmRzLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCkK
K3sKKyAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2U6OlByb2dyYW0qIHByb2dyYW0gPSBsYXllclJl
bmRlcmVyLT5yZW5kZXJTdXJmYWNlUHJvZ3JhbSgpOworCisgICAgR0xDKGxheWVyUmVuZGVyZXIt
PmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0
KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmVJZCkpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250
ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5j
b250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUikpOworCisgICAgR0xDKGxheWVyUmVuZGVy
ZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dy
YW0tPnByb2dyYW0oKSkpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVy
UmVuZGVyZXItPmNvbnRleHQoKS0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
c2FtcGxlckxvY2F0aW9uKCksIDApKTsKKyAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRR
dWFkKGRyYXdNYXRyaXgsIGJvdW5kcy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCksIDEsIGxheWVy
UmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuYWxwaGFMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LTEpOworfQorCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6Y29weURldmljZVRvQmFja2dyb3VuZFRl
eHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBpbnQgZGV2aWNlQmFj
a2dyb3VuZFRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgZGV2aWNlVGV4dHVyZVJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0pIGNvbnN0Cit7CisgICAgQVNT
RVJUKCFtX2JhY2tncm91bmRGaWx0ZXJzLmlzRW1wdHkoKSk7CisKKyAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm07CisgICAgZGV2aWNlVG9TdXJmYWNlVHJh
bnNmb3JtLnRyYW5zbGF0ZShtX2NvbnRlbnRSZWN0LndpZHRoKCkgLyAyLjAsIG1fY29udGVudFJl
Y3QuaGVpZ2h0KCkgLyAyLjApOworICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS5zY2FsZTNk
KG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSwgMSk7CisgICAg
ZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtICo9IGRldmljZVRyYW5zZm9ybS5pbnZlcnNlKCk7Cisg
ICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VUZXh0dXJlUmVjdC53
aWR0aCgpIC8gMi4wLCBkZXZpY2VUZXh0dXJlUmVjdC5oZWlnaHQoKSAvIDIuMCk7CisgICAgZGV2
aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VUZXh0dXJlUmVjdC54KCksIGRl
dmljZVRleHR1cmVSZWN0LnkoKSk7CisKKyAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIobGF5
ZXJSZW5kZXJlciwgZGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgZGV2aWNlVGV4dHVyZVJlY3Qu
c2l6ZSgpLCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0pOworfQorCitpbmxpbmUgc3RhdGljIGlu
dCBnZXRTa0JpdG1hcFRleHR1cmVJZChjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBpbnQgZmFsbGJh
Y2spCit7CisgICAgaWYgKCFiaXRtYXAuZ2V0VGV4dHVyZSgpKQorICAgICAgICByZXR1cm4gZmFs
bGJhY2s7CisgICAgR3JUZXh0dXJlKiB0ZXh0dXJlID0gcmVpbnRlcnByZXRfY2FzdDxHclRleHR1
cmUqPihiaXRtYXAuZ2V0VGV4dHVyZSgpKTsKKyAgICByZXR1cm4gdGV4dHVyZS0+Z2V0VGV4dHVy
ZUhhbmRsZSgpOworfQorCiB2b2lkIENDUmVuZGVyU3VyZmFjZTo6c2V0U2Npc3NvclJlY3QoTGF5
ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZh
Y2VEYW1hZ2VSZWN0KSBjb25zdAogewogICAgIGlmIChtX293bmluZ0xheWVyLT5wYXJlbnQoKSAm
JiBtX293bmluZ0xheWVyLT5wYXJlbnQoKS0+dXNlc0xheWVyQ2xpcHBpbmcoKSAmJiBsYXllclJl
bmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKSB7CkBAIC0xMjQsOCArMjI4
LDExIEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3Q29udGVudHMoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTog
Q2FjaGUgdGhpcyB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gZG8gaXQgZm9yIGJvdGgg
dGhlIHN1cmZhY2UgYW5kIGl0cyByZXBsaWNhLgotICAgIFNrQml0bWFwIGZpbHRlckJpdG1hcCA9
IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyKTsKLSAgICBkcmF3TGF5ZXIobGF5ZXJSZW5kZXJl
ciwgbV9tYXNrTGF5ZXIsIG1fZHJhd1RyYW5zZm9ybSwgZmlsdGVyQml0bWFwKTsKKyAgICAvLyBB
cHBseSBmaWx0ZXJzIHRvIHRoZSBjb250ZW50cyB0ZXh0dXJlLgorICAgIFNrQml0bWFwIGZpbHRl
ckJpdG1hcCA9IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyLCBtX2ZpbHRlcnMsIG1fY29udGVu
dHNUZXh0dXJlLmdldCgpKTsKKworICAgIGludCBjb250ZW50c1RleHR1cmVJZCA9IGdldFNrQml0
bWFwVGV4dHVyZUlkKGZpbHRlckJpdG1hcCwgbV9jb250ZW50c1RleHR1cmUtPnRleHR1cmVJZCgp
KTsKKyAgICBkcmF3TGF5ZXIobGF5ZXJSZW5kZXJlciwgbV9tYXNrTGF5ZXIsIG1fZHJhd1RyYW5z
Zm9ybSwgY29udGVudHNUZXh0dXJlSWQpOwogfQogCiB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJh
d1JlcGxpY2EoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQpAQCAtMTM0LDcg
KzI0MSw5IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3UmVwbGljYShMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAgaWYgKCFoYXNSZXBsaWNhKCkgfHwgbV9za2lw
c0RyYXcgfHwgIW1fY29udGVudHNUZXh0dXJlKQogICAgICAgICByZXR1cm47CiAKLSAgICBTa0Jp
dG1hcCBmaWx0ZXJCaXRtYXAgPSBhcHBseUZpbHRlcnMobGF5ZXJSZW5kZXJlcik7CisgICAgLy8g
QXBwbHkgZmlsdGVycyB0byB0aGUgY29udGVudHMgdGV4dHVyZS4KKyAgICBTa0JpdG1hcCBmaWx0
ZXJCaXRtYXAgPSBhcHBseUZpbHRlcnMobGF5ZXJSZW5kZXJlciwgbV9maWx0ZXJzLCBtX2NvbnRl
bnRzVGV4dHVyZS5nZXQoKSk7CisKICAgICAvLyBGSVhNRTogQnkgdXNpbmcgdGhlIHNhbWUgUmVu
ZGVyU3VyZmFjZSBmb3IgYm90aCB0aGUgY29udGVudCBhbmQgaXRzIHJlZmxlY3Rpb24sCiAgICAg
Ly8gaXQncyBjdXJyZW50bHkgbm90IHBvc3NpYmxlIHRvIGFwcGx5IGEgc2VwYXJhdGUgbWFzayB0
byB0aGUgcmVmbGVjdGlvbiBsYXllcgogICAgIC8vIG9yIGNvcnJlY3RseSBoYW5kbGUgb3BhY2l0
eSBpbiByZWZsZWN0aW9ucyAob3BhY2l0eSBtdXN0IGJlIGFwcGxpZWQgYWZ0ZXIgZHJhd2luZwpA
QCAtMTQ1LDIxICsyNTQsMjIgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdSZXBsaWNhKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICBpZiAoIW1fbWFza0xheWVy
ICYmIG1fb3duaW5nTGF5ZXItPnJlcGxpY2FMYXllcigpKQogICAgICAgICByZXBsaWNhTWFza0xh
eWVyID0gbV9vd25pbmdMYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpOwogCi0gICAg
ZHJhd0xheWVyKGxheWVyUmVuZGVyZXIsIHJlcGxpY2FNYXNrTGF5ZXIsIG1fcmVwbGljYURyYXdU
cmFuc2Zvcm0sIGZpbHRlckJpdG1hcCk7CisgICAgaW50IGNvbnRlbnRzVGV4dHVyZUlkID0gZ2V0
U2tCaXRtYXBUZXh0dXJlSWQoZmlsdGVyQml0bWFwLCBtX2NvbnRlbnRzVGV4dHVyZS0+dGV4dHVy
ZUlkKCkpOworICAgIGRyYXdMYXllcihsYXllclJlbmRlcmVyLCByZXBsaWNhTWFza0xheWVyLCBt
X3JlcGxpY2FEcmF3VHJhbnNmb3JtLCBjb250ZW50c1RleHR1cmVJZCk7CiB9CiAKLXZvaWQgQ0NS
ZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyLCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZHJhd1RyYW5zZm9ybSwgY29uc3QgU2tCaXRtYXAmIGZpbHRlckJpdG1hcCkKK3ZvaWQgQ0NSZW5k
ZXJTdXJmYWNlOjpkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVy
LCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJh
d1RyYW5zZm9ybSwgaW50IGNvbnRlbnRzVGV4dHVyZUlkKQogewotICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHJlbmRlck1hdHJpeCA9IGRyYXdUcmFuc2Zvcm07Ci0gICAgLy8gQXBwbHkgYSBzY2Fs
aW5nIGZhY3RvciB0byBzaXplIHRoZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRlbmRlZCBzaXpl
LgotICAgIHJlbmRlck1hdHJpeC5zY2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250
ZW50UmVjdC5oZWlnaHQoKSwgMSk7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VN
YXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChsYXllclJlbmRlcmVyLT53aW5kb3dNYXRyaXgo
KSAqIGxheWVyUmVuZGVyZXItPnByb2plY3Rpb25NYXRyaXgoKSAqIHJlbmRlck1hdHJpeCkudG8y
ZFRyYW5zZm9ybSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZU1hdHJpeCA9IGNv
bXB1dGVEZXZpY2VUcmFuc2Zvcm0obGF5ZXJSZW5kZXJlciwgZHJhd1RyYW5zZm9ybSk7CiAKICAg
ICAvLyBDYW4gb25seSBkcmF3IHN1cmZhY2UgaWYgZGV2aWNlIG1hdHJpeCBpcyBpbnZlcnRpYmxl
LgogICAgIGlmICghZGV2aWNlTWF0cml4LmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm47
CiAKKyAgICAvLyBEcmF3IHRoZSBiYWNrZ3JvdW5kIHRleHR1cmUgaWYgdGhlcmUgaXMgb25lLgor
ICAgIGlmIChtX2JhY2tncm91bmRUZXh0dXJlICYmIG1fYmFja2dyb3VuZFRleHR1cmUtPmlzUmVz
ZXJ2ZWQoKSkKKyAgICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGxheWVyUmVuZGVyZXIs
IG1fYmFja2dyb3VuZFRleHR1cmUtPnRleHR1cmVJZCgpLCBtX2NvbnRlbnRSZWN0LnNpemUoKSwg
ZHJhd1RyYW5zZm9ybSk7CisKICAgICBGbG9hdFF1YWQgcXVhZCA9IGRldmljZU1hdHJpeC5tYXBR
dWFkKGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpKTsKICAgICBDQ0xheWVyUXVh
ZCBkZXZpY2VSZWN0ID0gQ0NMYXllclF1YWQoRmxvYXRRdWFkKHF1YWQuYm91bmRpbmdCb3goKSkp
OwogICAgIENDTGF5ZXJRdWFkIGxheWVyUXVhZCA9IENDTGF5ZXJRdWFkKHF1YWQpOwpAQCAtMTc3
LDI3ICsyODcsMjkgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdMYXllcihMYXllclJlbmRl
cmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJbXAKICAgICAgICAgaWYgKCFtYXNr
TGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHVzZU1hc2sgPSB0cnVlOwog
CisgICAgLy8gRklYTUU6IHBhc3MgaW4gYmFja2dyb3VuZFRleHR1cmVJZCBhbmQgYmxlbmQgdGhl
IGJhY2tncm91bmQgaW4gd2l0aCB0aGlzIGRyYXcgaW5zdGVhZCBvZiBoYXZpbmcgYSBzZXBhcmF0
ZSBkcmF3QmFja2dyb3VuZCgpIHBhc3MuCisKICAgICBpZiAodXNlTWFzaykgewogICAgICAgICBp
ZiAodXNlQUEpIHsKICAgICAgICAgICAgIGNvbnN0IE1hc2tQcm9ncmFtQUEqIHByb2dyYW0gPSBs
YXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW1BQSgpOwotICAgICAgICAgICAg
ZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZp
Y2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgcHJvZ3JhbSwgcHJvZ3JhbS0+ZnJhZ21l
bnRTaGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9uKCksIHByb2dyYW0tPnZlcnRleFNoYWRlcigp
LnBvaW50TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24o
KSwgZmlsdGVyQml0bWFwKTsKKyAgICAgICAgICAgIGRyYXdTdXJmYWNlKGxheWVyUmVuZGVyZXIs
IG1hc2tMYXllciwgZHJhd1RyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXll
clF1YWQsIGNvbnRlbnRzVGV4dHVyZUlkLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkucG9pbnRM
b2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnN0IE1hc2tQcm9ncmFtKiBwcm9ncmFtID0g
bGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZU1hc2tQcm9ncmFtKCk7Ci0gICAgICAgICAgICBk
cmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmlj
ZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVu
dFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgLTEsIC0xLCBmaWx0ZXJCaXRtYXApOwor
ICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJh
bnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgY29udGVudHNUZXh0
dXJlSWQsIHByb2dyYW0sIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkubWFza1NhbXBsZXJMb2Nh
dGlvbigpLCAtMSwgLTEpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHVz
ZUFBKSB7CiAgICAgICAgICAgICBjb25zdCBQcm9ncmFtQUEqIHByb2dyYW0gPSBsYXllclJlbmRl
cmVyLT5yZW5kZXJTdXJmYWNlUHJvZ3JhbUFBKCk7Ci0gICAgICAgICAgICBkcmF3U3VyZmFjZShs
YXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2
aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCAtMSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCku
cG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigp
LCBmaWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwg
bWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVy
UXVhZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIC0xLCBwcm9ncmFtLT52ZXJ0ZXhTaGFk
ZXIoKS5wb2ludExvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0
aW9uKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29uc3QgUHJvZ3JhbSogcHJv
Z3JhbSA9IGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VQcm9ncmFtKCk7Ci0gICAgICAgICAg
ICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRl
dmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCAtMSwgLTEsIC0xLCBm
aWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFz
a0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVh
ZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIC0xLCAtMSwgLTEpOwogICAgICAgICB9CiAg
ICAgfQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3
U3VyZmFjZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJbXBs
KiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtLCBjb25zdCBDQ0xheWVy
UXVhZCYgZGV2aWNlUmVjdCwgY29uc3QgQ0NMYXllclF1YWQmIGxheWVyUXVhZCwgY29uc3QgVCog
cHJvZ3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFkZXJRdWFkTG9j
YXRpb24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24sIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRt
YXApCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXllclF1YWQmIGRldmljZVJlY3QsIGNvbnN0IEND
TGF5ZXJRdWFkJiBsYXllclF1YWQsIGludCBjb250ZW50c1RleHR1cmVJZCwgY29uc3QgVCogcHJv
Z3JhbSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFkZXJRdWFkTG9jYXRp
b24sIGludCBzaGFkZXJFZGdlTG9jYXRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQzRCA9IGxheWVyUmVuZGVyZXItPmNvbnRleHQoKTsKIApAQCAtMjA2LDExICszMTgsNyBA
QCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVt
KiBsYXllclJlbmRlcmVyLCBDQ0xheWVySQogCiAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNE
LT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhj
b250ZXh0M0QsIGNvbnRleHQzRC0+dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCku
c2FtcGxlckxvY2F0aW9uKCksIDApKTsKLSAgICBpZiAoZmlsdGVyQml0bWFwLmdldFRleHR1cmUo
KSkgewotICAgICAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJldF9jYXN0PEdyVGV4
dHVyZSo+KGZpbHRlckJpdG1hcC5nZXRUZXh0dXJlKCkpOwotICAgICAgICBjb250ZXh0M0QtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlLT5nZXRUZXh0
dXJlSGFuZGxlKCkpOwotICAgIH0gZWxzZQotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+Ymlu
ZFRleHR1cmUoY29udGV4dDNELCBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZUFs
bG9jYXRvcigpKTsKKyAgICBjb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBjb250ZW50c1RleHR1cmVJZCk7CiAKICAgICBpZiAoc2hhZGVyTWFza1Nh
bXBsZXJMb2NhdGlvbiAhPSAtMSkgewogICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0Qt
PmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7CkBAIC0yMzMsOSAr
MzQxLDkgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdTdXJmYWNlKExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgQ0NMYXllckkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksIHBy
b2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLCBzaGFkZXJRdWFkTG9jYXRp
b24pOwogfQogCi1Ta0JpdG1hcCBDQ1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVycyhMYXllclJl
bmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCitTa0JpdG1hcCBDQ1JlbmRlclN1cmZhY2U6
OmFwcGx5RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIE1hbmFnZWRUZXh0dXJlKiBzb3VyY2VUZXh0dXJl
KQogewotICAgIGlmICghbV9jb250ZW50c1RleHR1cmUgfHwgIW1fZmlsdGVycy5zaXplKCkpCisg
ICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU2tCaXRtYXAoKTsKIAog
ICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gZmlsdGVyQ29udGV4dCA9IENDUHJveHk6Omhh
c0ltcGxUaHJlYWQoKSA/IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGb3JJbXBsVGhyZWFk
KCkgOiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0KCk7CkBAIC0yNDQsNyArMzUyLDcgQEAg
U2tCaXRtYXAgQ0NSZW5kZXJTdXJmYWNlOjphcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyKQogCiAgICAgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5mbHVz
aCgpOwogCi0gICAgcmV0dXJuIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KG1fZmlsdGVy
cywgbV9jb250ZW50c1RleHR1cmUtPnRleHR1cmVJZCgpLCBtX2NvbnRlbnRSZWN0LnNpemUoKSwg
ZmlsdGVyQ29udGV4dC5nZXQoKSk7CisgICAgcmV0dXJuIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6
OmFwcGx5KGZpbHRlcnMsIHNvdXJjZVRleHR1cmUtPnRleHR1cmVJZCgpLCBzb3VyY2VUZXh0dXJl
LT5zaXplKCksIGZpbHRlckNvbnRleHQuZ2V0KCkpOwogfQogCiBTdHJpbmcgQ0NSZW5kZXJTdXJm
YWNlOjpuYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKaW5kZXggNDJjZGEz
MjZjMDM4ZmNiZDQ4ZmExOGE2ZWY4MGRmZTk0NGQ4YjExNy4uZjQxMzJlMjBjZjhmNTQzM2U0YWQy
NGRmNmJmOTA2YjVkODFlNTAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKQEAgLTU3
LDExICs1NywxOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcmVwYXJlQ29udGVudHNUZXh0dXJlKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSopOwogICAgIHZvaWQgcmVsZWFzZUNvbnRlbnRzVGV4dHVyZSgp
OwogCisgICAgYm9vbCBwcmVwYXJlQmFja2dyb3VuZFRleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKik7CisgICAgdm9pZCByZWxlYXNlQmFja2dyb3VuZFRleHR1cmUoKTsKKwogICAgIHZvaWQg
c2V0U2Npc3NvclJlY3QoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgRmxvYXRSZWN0JiBz
dXJmYWNlRGFtYWdlUmVjdCkgY29uc3Q7CiAKICAgICB2b2lkIGRyYXdDb250ZW50cyhMYXllclJl
bmRlcmVyQ2hyb21pdW0qKTsKICAgICB2b2lkIGRyYXdSZXBsaWNhKExheWVyUmVuZGVyZXJDaHJv
bWl1bSopOwogCisgICAgLy8gVGFrZXMgYSB0ZXh0dXJlIHdpdGggcGl4ZWxzIGluIGRldmljZSBz
cGFjZSwgYW5kIGEgdHJhbnNmb3JtIGZyb20gY29udGVudCBzcGFjZSB0byB0aGUgZGV2aWNlLiBD
b3BpZXMgdGhlIGRldmljZS1zcGFjZSB0ZXh0dXJlIGJhY2sgaW50bworICAgIC8vIGNvbnRlbnQg
c3BhY2UgZm9yIHRoZSBzdXJmYWNlLCBzdG9yaW5nIHRoZSByZXN1bHQgaW4gdGhlIGJhY2tncm91
bmRUZXh0dXJlKCkuIFRoZSBzdXJmYWNlJ3MgYmFja2dyb3VuZFRleHR1cmUoKSBtdXN0IGJlIHRo
ZSBhY3RpdmUgZHJhd2luZyB0YXJnZXQuCisgICAgdm9pZCBjb3B5RGV2aWNlVG9CYWNrZ3JvdW5k
VGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBpbnQgZGV2aWNlQmFja2dyb3VuZFRleHR1
cmVJZCwgY29uc3QgSW50UmVjdCYgZGV2aWNlVGV4dHVyZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0pIGNvbnN0OworCiAgICAgU3RyaW5nIG5hbWUoKSBj
b25zdDsKICAgICB2b2lkIGR1bXBTdXJmYWNlKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25z
dDsKIApAQCAtNjksMTMgKzc2LDIxIEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgdGhlIHJl
Y3QgdGhhdCBlbmNsb3NlcyB0aGUgUmVuZGVyU3VyZmFjZSBpbmNsdWRpbmcgYW55IHJlZmxlY3Rp
b24uCiAgICAgRmxvYXRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdDsKKyAgICAvLyBS
ZXR1cm5zIHRoZSByZWN0IHRoYXQgZW5jbG9zZXMgdGhlIHBpeGVscyB0aGF0IG1heSBhZmZlY3Qg
dGhlIHBpeGVsIHZhbHVlcyBpbiB0aGlzIHN1cmZhY2UgdGhyb3VnaCBiYWNrZ3JvdW5kIGZpbHRl
cnMuCisgICAgSW50UmVjdCByZWFkYmFja0RldmljZUNvbnRlbnRSZWN0KExheWVyUmVuZGVyZXJD
aHJvbWl1bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25z
dDsKKworICAgIC8vIEdpdmVzIHRoZSB0cmFuc2Zvcm0gZnJvbSB0aGUgc3VyZmFjZSBjb250ZW50
IHNwYWNlLCB3aXRoIG9yaWdpbiBpbiB0aGUgdG9wIGxlZnQsIHRvIHRoZSBjdXJyZW50IHRhcmdl
dCBkZXZpY2Ugc3BhY2UsIHdpdGggb3JpZ2luIGluIHRoZSB0b3AgbGVmdC4KKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBjb21wdXRlRGV2aWNlVHJhbnNmb3JtKExheWVyUmVuZGVyZXJDaHJvbWl1
bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKIAog
ICAgIGZsb2F0IGRyYXdPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3T3BhY2l0eTsgfQog
ICAgIHZvaWQgc2V0RHJhd09wYWNpdHkoZmxvYXQgb3BhY2l0eSkgeyBtX2RyYXdPcGFjaXR5ID0g
b3BhY2l0eTsgfQogCiAgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpIHsgbV9maWx0ZXJzID0gZmlsdGVyczsgfQogICAgIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0KLSAgICBTa0JpdG1h
cCBhcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisgICAgU2tCaXRtYXAgYXBw
bHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
LCBNYW5hZ2VkVGV4dHVyZSogc291cmNlVGV4dHVyZSk7CisKKyAgICB2b2lkIHNldEJhY2tncm91
bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9iYWNrZ3JvdW5k
RmlsdGVycyA9IGZpbHRlcnM7IH0KKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3Jv
dW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KIAogICAg
IHZvaWQgc2V0TmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKENDUmVuZGVyU3VyZmFjZSog
c3VyZmFjZSkgeyBtX25lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyA9IHN1cmZhY2U7IH0K
ICAgICBjb25zdCBDQ1JlbmRlclN1cmZhY2UqIG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVs
cygpIGNvbnN0IHsgcmV0dXJuIG1fbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzOyB9CkBA
IC0xMjcsNiArMTQyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVy
dGV4U2hhZGVyUXVhZCwgRnJhZ21lbnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE+IE1hc2tQcm9n
cmFtQUE7CiAKICAgICBNYW5hZ2VkVGV4dHVyZSogY29udGVudHNUZXh0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50c1RleHR1cmUuZ2V0KCk7IH0KKyAgICBNYW5hZ2VkVGV4dHVyZSogYmFj
a2dyb3VuZFRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRUZXh0dXJlLmdldCgp
OyB9CiAKICAgICBpbnQgb3duaW5nTGF5ZXJJZCgpIGNvbnN0OwogCkBAIC0xNDIsOSArMTU4LDEy
IEBAIHB1YmxpYzoKICAgICBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjcmVhdGVSZXBs
aWNhU2hhcmVkUXVhZFN0YXRlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkcmF3TGF5
ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwqLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRtYXApOworICAgIEludFJlY3Qg
Y29tcHV0ZURldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKKyAgICBJbnRSZWN0IGNv
bXB1dGVSZWFkYmFja0RldmljZUJvdW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKKworICAgIHZv
aWQgZHJhd0xheWVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIENDTGF5ZXJJbXBsKiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBpbnQgY29udGVudHNUZXh0dXJlSWQpOwogICAgIHRlbXBs
YXRlIDxjbGFzcyBUPgotICAgIHZvaWQgZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVt
KiwgQ0NMYXllckltcGwqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9y
bSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NM
YXllclF1YWQmIGRldmljZVJlY3QsIGNvbnN0IENDTGF5ZXJRdWFkJiwgY29uc3QgVCogcHJvZ3Jh
bSwgaW50IHNoYWRlck1hc2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFkZXJRdWFkTG9jYXRpb24s
IGludCBzaGFkZXJFZGdlTG9jYXRpb24sIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRtYXApOwor
ICAgIHZvaWQgZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwq
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXllclF1YWQmIGRldmlj
ZVJlY3QsIGNvbnN0IENDTGF5ZXJRdWFkJiwgaW50IGNvbnRlbnRzVGV4dHVyZUlkLCBjb25zdCBU
KiBwcm9ncmFtLCBpbnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRlclF1YWRM
b2NhdGlvbiwgaW50IHNoYWRlckVkZ2VMb2NhdGlvbik7CiAKICAgICBDQ0xheWVySW1wbCogbV9v
d25pbmdMYXllcjsKICAgICBDQ0xheWVySW1wbCogbV9tYXNrTGF5ZXI7CkBAIC0xNTQsNiArMTcz
LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3VyZmFjZVByb3BlcnR5Q2hhbmdlZDsKIAogICAg
IE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV9jb250ZW50c1RleHR1cmU7CisgICAgT3duUHRyPE1h
bmFnZWRUZXh0dXJlPiBtX2JhY2tncm91bmRUZXh0dXJlOworCiAgICAgZmxvYXQgbV9kcmF3T3Bh
Y2l0eTsKICAgICBib29sIG1fZHJhd09wYWNpdHlJc0FuaW1hdGluZzsKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07CkBAIC0xNjUsNiArMTg2LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fdGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7CiAgICAgYm9v
bCBtX3NjcmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKICAgICBGaWx0ZXJPcGVyYXRp
b25zIG1fZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7
CiAgICAgSW50UmVjdCBtX2NsaXBSZWN0OwogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IG1fbGF5
ZXJMaXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODcyYmNmZWY2
ZTVhNzM0ZjUyY2UzMTU4Zjg5NmZhYTk0MDc4NThkNC4uNDkwOGM3OGJhMmQ5OWIxODJiYWQ5YzM1
ZTQzYTBhZWE3YTg1NDJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
NzgsNiArNzgsMTMgQEAKICNpbmNsdWRlICJXZWJLaXRQb2ludC5oIgogI2VuZGlmCiAKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1
ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5j
bHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgbWFya2VyVHlwZXNG
cm9tKGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVz
JiByZXN1bHQpCkBAIC00MjMsNiArNDMwLDQ4IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+
IEludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoRG9jdW1lbnQqIGRvY3VtZW50CiAj
ZW5kaWYKIH0KIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgUExBVEZPUk0o
Q0hST01JVU0pCit2b2lkIEludGVybmFsczo6c2V0QmFja2dyb3VuZEJsdXJPbk5vZGUoTm9kZSog
bm9kZSwgaW50IGJsdXJMZW5ndGgsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9k
ZSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gbm9kZS0+cmVuZGVyZXIo
KTsKKyAgICBpZiAoIXJlbmRlck9iamVjdCkgeworICAgICAgICBlYyA9IElOVkFMSURfTk9ERV9U
WVBFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlbmRlckxheWVyKiByZW5k
ZXJMYXllciA9IHJlbmRlck9iamVjdC0+ZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICBpZiAoIXJlbmRl
ckxheWVyIHx8ICFyZW5kZXJMYXllci0+aXNDb21wb3NpdGVkKCkpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdyYXBoaWNz
TGF5ZXIqIGdyYXBoaWNzTGF5ZXIgPSByZW5kZXJMYXllci0+YmFja2luZygpLT5ncmFwaGljc0xh
eWVyKCk7CisgICAgaWYgKCFncmFwaGljc0xheWVyKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9O
T0RFX1RZUEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUGxhdGZvcm1MYXll
ciogcGxhdGZvcm1MYXllciA9IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICBp
ZiAoIXBsYXRmb3JtTGF5ZXIpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX05PREVfVFlQRV9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7
CisgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJsdXJGaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZShMZW5ndGgoYmx1ckxlbmd0aCwgRml4ZWQpLCBGaWx0ZXJPcGVyYXRpb246OkJMVVIpKTsK
KyAgICBwbGF0Zm9ybUxheWVyLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhmaWx0ZXJzKTsKK30KKyNl
bHNlCit2b2lkIEludGVybmFsczo6c2V0QmFja2dyb3VuZEJsdXJPbk5vZGUoTm9kZSosIGludCwg
RXhjZXB0aW9uQ29kZSYpCit7Cit9CisjZW5kaWYKKwogdW5zaWduZWQgSW50ZXJuYWxzOjptYXJr
ZXJDb3VudEZvck5vZGUoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIW5vZGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCmluZGV4IDZiMjBiOGM3MDViYzI4YzQzMTcyOTRhZmNmNzM4YzM1ZWQ3MWQwZWMuLjZj
NWU4NzI4MmUyNGQ4YmVlN2NhZTNhYTQ0YWFlZTA2ZTdlNGE1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaApAQCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQ
dHI8Q2xpZW50UmVjdExpc3Q+IGluc3BlY3RvckhpZ2hsaWdodFJlY3RzKERvY3VtZW50KiwgRXhj
ZXB0aW9uQ29kZSYpOwogCisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQmx1ck9uTm9kZShOb2RlKiwg
aW50IGJsdXJMZW5ndGgsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIHVuc2lnbmVkIG1hcmtlckNv
dW50Rm9yTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBh
c3NSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlRm9yTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBt
YXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyBt
YXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwg
dW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAppbmRleCAxNWNlMGEzYWMxOGRmYTRmY2ZiZDA5NTgyOTBhZDI2MDFlNzRkM2NhLi4w
NGQ0ZTk3ZDAxM2E5YzE1ZTlhNzgzZjY2NjA0NzY3MDNjNWU3OWYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCkBAIC03Miw2ICs3Miw4IEBAIG1vZHVsZSB3aW5kb3cgewogCiAg
ICAgICAgIENsaWVudFJlY3RMaXN0IGluc3BlY3RvckhpZ2hsaWdodFJlY3RzKGluIERvY3VtZW50
IGRvY3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKKyAgICAgICAgdm9pZCBzZXRCYWNr
Z3JvdW5kQmx1ck9uTm9kZShpbiBOb2RlIG5vZGUsIGluIGxvbmcgYmx1ckxlbmd0aCkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CisKICAgICAgICAgdW5zaWduZWQgbG9uZyBtYXJrZXJDb3VudEZvck5v
ZGUoaW4gTm9kZSBub2RlLCBpbiBET01TdHJpbmcgbWFya2VyVHlwZSkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAgICAgICAgIFJhbmdlIG1hcmtlclJhbmdlRm9yTm9kZShpbiBOb2RlIG5vZGUsIGlu
IERPTVN0cmluZyBtYXJrZXJUeXBlLCBpbiB1bnNpZ25lZCBsb25nIGluZGV4KSByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKICAgICAgICAgRE9NU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShp
biBOb2RlIG5vZGUsIGluIERPTVN0cmluZyBtYXJrZXJUeXBlLCBpbiB1bnNpZ25lZCBsb25nIGlu
ZGV4KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAppbmRleCA4YTlmMzVkYzhhN2I4OWMwYzk0YmQ3NTM3
YzY4NDY0ZmE3OGE2YmI4Li4yMjk5NzQxNGUwOTFlM2ZlMDEyOGVkZjRiYzFlZGVlYzExM2UyYjlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3Qu
Y3BwCkBAIC0xMTMsNiArMTEzLDcgQEAgVEVTVChDQ0xheWVySW1wbFRlc3QsIHZlcmlmeUxheWVy
Q2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9M
QVlFUl9DSEFOR0VEKHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKSk7CiAgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29s
b3I6OmdyYXkpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJv
b3QtPnNldEJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCh0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhhcmJp
dHJhcnlGaWx0ZXJzKSk7CiAKICAgICAvLyBTcGVjaWFsIGNhc2U6IGNoZWNrIHRoYXQgc3VibGF5
ZXIgdHJhbnNmb3JtIGNoYW5nZXMgYWxsIGxheWVyJ3MgZGVzY2VuZGFudHMsIGJ1dCBub3QgdGhl
IGxheWVyIGl0c2VsZi4KICAgICByb290LT5yZXNldEFsbENoYW5nZVRyYWNraW5nRm9yU3VidHJl
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGVhMzQzOWIyYWZiMmViYmY0MTAxMTc3MGM0ZDk3ZTZiMzkwZmJmYjQuLjNk
MWU3ODBkY2Q4OWJjZWRjZjA2ZDRkOTljMjdhNWFlMzViMDJmYWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAxMi0wNC0wOSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIEJhY2tncm91bmQgZmlsdGVycyBmb3IgY29tcG9zaXRlZCBsYXll
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDQ2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb21w
b3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItZXhwZWN0ZWQucG5nOiBBZGRl
ZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9maWx0ZXJzL2JhY2tn
cm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAq
IGNvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5k
LWZpbHRlci1ibHVyLW91dHNldHMuaHRtbDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcv
ZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1
ci1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBv
c2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dy
b3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1i
bHVyLW91dHNldHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMi0wNC0wOSAgSmVmZnJleSBQ
ZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAgICAgIEZpbHRlciBmaWxlcyBmcm9tIGRhdGFU
cmFuc2Zlci5nZXREYXRhIG9uIE1hYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTk5ZTJlNDU4MmJiYzk4MzY4YmQ5NWZmZjlmZDJhN2VlYzViN2Y1NgpH
SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2MQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7
K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG4zWTUKekJRckEjR2ZQN2dHYyFZVEJh
PHxYbCpFKW9HdDFPZUxzSldqTH59TTRIQkFOdnVLa2BhanYqQ3UtcmhMSyQ+Ym93Cno7Xj09U3h+
SW5YSz5GY0JrKWo3fVc/TEc2Vz8pJEdgSG1hfEx4RlQ3RH0jVj0xT3RRTkBNM0pkeztsRXV4I3Yw
bAp6NTFjO0ZkJnxsMmhtfks5IU5EaGlrPkxvLUN9VDdiTXBGV3ZiSFNUNFhUR3M5R18wPUp6YCY1
aSNMYnxmSHAmPGMKb2d3ZDJSbmhRcEEhRHVjKCRwIUp8Q3dOITQrfHp2bVoydk5OeTg1fVNiNHE5
ZTAyXm9oTkJ7cjsKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJs
dXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFh
ZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9m
aWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5k
LWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhmNDAyMjExNjIzNzkwZDE4ZmZjNmZhNThjYzA1YjUwNzFmYzk3YjIKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDI4ODMKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYy
YT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1Rtfn5zCnowfUlvWClLb0p8cWZ9JFZMfVFEakc+
YiUyPDVYaXlnQjBUd0x5TiRiLT0hRUJ4VVBELUlFR1pyZDMpRTglZ0lySQp6KWlNMHYtbExRSUgh
ZmhpdmBIJmV5Jn0+MDtKYUJmZyY3IztldHlUdSEwX0tLZnN4P3xpeGA4MCYrdVpyeG5jV1kKelZg
PVBlXiNnTnZvX1dXfkBQfGlTaG9ORHswVmFrSFBXKzQ7KUF2MzNIX0xxTVBuUTRlMzt+NCkzRnsh
bilLTjl+CnpMd3opU00jQmVOKXxCMU56OSV7TUl4cShfYDBwZ1BoYE0mPiV7Pk4mNTgqS3o3I05i
NnhFVTFHTWo0fWxGcSNyWgpoYkhRalg3P1FjYntNJTdNcW5xQV55TVYxPzIyV1ElbXZ2NEZPI3M1
U2EtMEFGCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVy
LWJsdXItb3V0c2V0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIxMzc4OTE3OTFmZTk2OTI3
YWQ3OGU2NGIwYWFkN2JkZWQwOGJkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLmh0bWwgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk1NjIwYzQzMmFkY2EzMzIxMzMzODQ3MWQxN2MyNzVmYjE5MTYyZjUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91
bmQtZmlsdGVyLWJsdXItb3V0c2V0cy5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+PGhlYWQ+Cis8dGl0bGU+QmFja2dyb3VuZCBmaWx0ZXIgYmx1ciB0ZXN0Ljwv
dGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAuY29tcG9zaXRlZCB7CisgICAgLXdl
YmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgIH0KKyAgLmdyZWVuLWJvcmRlciB7Cisg
ICAgYm9yZGVyOiAxMHB4IHNvbGlkIGdyZWVuOworICB9CisgIC55ZWxsb3ctcGFyZW50IHsKKyAg
ICB3aWR0aDogNjAwcHg7CisgICAgaGVpZ2h0OiAgNjAwcHg7CisgICAgLXdlYmtpdC1maWx0ZXI6
IGJsdXIoMTBweCk7CisgIH0KKyAgLmNlbnRlcmVkIHsKKyAgICB3aWR0aDogMjAwcHg7CisgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMTAwcHg7
CisgICAgdG9wOiAxMDBweDsKKyAgfQorPC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKyAgZnVuY3Rpb24gc2V0Qmx1cigpIHsKKyAgICB2YXIgYmx1ck5vZGUgPSB3aW5k
b3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JsdXInKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldEJhY2tncm91bmRCbHVyT25Ob2RlKGJsdXJOb2RlLCAxMCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICB9CisKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICB3aW5kb3cuc2V0
VGltZW91dChzZXRCbHVyLCAwKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICB9CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVl
KTsKKyAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwhLS0KKyAgIFRoZSBncmVlbiBi
b3JkZXIgaXMgb3V0c2lkZSB0aGUgbGF5ZXIgd2l0aCBiYWNrZ3JvdW5kIGJsdXIsIGJ1dCB0aGUg
YmFja2dyb3VuZCBibHVyIHNob3VsZCB1c2UgcGl4ZWxzIGZyb20gb3V0c2lkZQorICAgaXRzIGxh
eWVyIGJvcmRlcnMsIHVwIHRvIHRoZSByYWRpdXMgb2YgdGhlIGJsdXIgZWZmZWN0LiBTbyB0aGUg
Ym9yZGVyIHNob3VsZCBiZSBibHVycmVkIHVuZGVybmVhdGggdGhlIHRvcCBsYXllcgorICAgY2F1
c2luZyB0aGUgaW5zaWRlIG9mIHRoZSBib3JkZXIgdG8gYmUgYmx1cnJlZC4KKyAgLS0+Cis8ZGl2
IGNsYXNzPSJjb21wb3NpdGVkIGdyZWVuLWJvcmRlciIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRl
OyBsZWZ0OjUwcHg7IHRvcDo1MHB4OyB3aWR0aDoyMDBweDsgaGVpZ2h0OjIwMHB4OyI+PC9kaXY+
Cis8ZGl2IGlkPSJibHVyIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6NTlweDsgdG9w
OjU5cHg7IHdpZHRoOjIwMHB4OyBoZWlnaHQ6MjAwcHg7IGJvcmRlcjoxcHggc29saWQgZ3JlZW47
Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci5odG1sIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjA5OGFmNGQ3MDkzZGFjZmY4NGUxZDhiMDE0OGQ4NWE5MjljYTVhZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXIt
Ymx1ci5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+PGhlYWQ+
Cis8dGl0bGU+QmFja2dyb3VuZCBmaWx0ZXIgYmx1ciB0ZXN0LjwvdGl0bGU+Cis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiPgorICAuY29tcG9zaXRlZCB7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRy
YW5zbGF0ZVooMCk7CisgIH0KKyAgLmdyZWVuIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsKKyAgfQorICAueWVsbG93LXBhcmVudCB7CisgICAgd2lkdGg6IDYwMHB4OworICAgIGhlaWdo
dDogIDYwMHB4OworICAgIC13ZWJraXQtZmlsdGVyOiBibHVyKDEwcHgpOworICB9CisgIC5jZW50
ZXJlZCB7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogMjAwcHg7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIGxlZnQ6IDEwMHB4OworICAgIHRvcDogMTAwcHg7CisgIH0KKzwv
c3R5bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgIGZ1bmN0aW9uIHNldEJs
dXIoKSB7CisgICAgdmFyIGJsdXJOb2RlID0gd2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdibHVyJyk7CisgICAgd2luZG93LmludGVybmFscy5zZXRCYWNrZ3JvdW5kQmx1ck9uTm9kZShi
bHVyTm9kZSwgMik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICB9
CisKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKSB7CisgICAgICB3aW5kb3cuc2V0VGltZW91dChzZXRCbHVyLCAwKTsKKyAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
CisKKzxib2R5PgorPCEtLQorICAgVGhlIGdyZWVuIGJveCBpcyBlbnRpcmVseSBiZWhpbmQgYSBs
YXllciB3aXRoIGJhY2tncm91bmQgYmx1ciwgc28gaXQgc2hvdWxkIGFwcGVhciBibHVycmVkIG9u
IGl0cyBlZGdlcy4KKyAgLS0+Cis8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIGdyZWVuIiBzdHlsZT0i
cG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6NTBweDsgdG9wOjUwcHg7IHdpZHRoOjIwMHB4OyBoZWln
aHQ6MjAwcHg7Ij48L2Rpdj4KKzxkaXYgaWQ9ImJsdXIiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0
ZTsgbGVmdDozMHB4OyB0b3A6MzBweDsgd2lkdGg6MjQwcHg7IGhlaWdodDoyNDBweDsgYm9yZGVy
OjFweCBzb2xpZCB3aGl0ZTsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3Jv
dW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZWUzYmMzNjNjOWNlODIyZjAwZDc4ZDA2MDhkNzIzYTU2ODlmYjUzMApH
SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzc3Ngp6Y21lSEtlQHhQODlEYiRqciQ0JnVPN3h1Nlpn
c1ZGTkBiRCMoQURYNndhZDxJYEs9e305JnwjOXMwZDwtd3VZNHoKenlQSFZgTzZ6dmZoU0IjYmYp
Zj8mSjd0VCZCYDJnREJvZGxnZk8zazIhaFFTZXcpP2FIPyM0Z3dgKzQ3WWQhS2pECnpLRns7KXo0
KDNoLXNtTD5POEB9VGBAWVJRMWktdmkwQVFkKzc8NmFGWERoeCRyfVkoQ1AoeyY/PFJWJSpeRUI5
JAp6TSVzcW9OfXY+eERSXj8pN1NpVVRBMng0SXJIfjNxZ19KR211eU1GaTBZSj41ZVZNeHR2cWtU
JFRfdkJKPDc9UEMKenxEMHJNSmx1Nklab3k9Yi09N3Q/O0s4RXYyQGtHT3piazlJKXB9PWxqXj9U
NChuZjxGe0F1ZnN7TDhMcC1ETW5ZCnppVTc1U0h9V19ESmltTWIwa0UreTUtZU4oQTEhezwoXjdg
aTVSVisrZEc7MipDVTY7PDhLZ3hGWDwzelolO1ElTgp6QH1DWCF0TV5PJGxeaFBTSXRSPVM4UD5y
fnFfa3UkRzY4M31Ndj9YbW1ycHpRVTwwTmhxY0V8RGt3fXAwRGVAYTgKekJTbjduekRkZDtIJTRs
N1glZndgQ1M8fT4lMnRMckEjJClSRyEtTzs7RFhlWnkqPzw8S35XOTNZO1RrQUcrMmUhCnokYEBD
cWpLcyo1QWpOcWNHb0lReGkxWWFoKztuY29vSEhufTFTfjNsTiYyJlRDeWU1YVZ6ckUyR1JhaU1t
VkUybQp6NX1Wcj1pQC1Ae3NyRUA5MWxsaW5tJGRydisjQmxJTnZBLX5lSUwtT196SmJuI19mMkNv
OTNIc19HKiNyNSMxejIKekFAdnJhY3RwJTJ6bU8+YFE8Vjx+VE5nO3FnWjlTcSNqUFo0JjVvfTNZ
fktXMyE0M0Z6eTwlSz9afmVnZil4RCtMCnphVXpxXklYI0pWKk9SY2FKNW08PzxzMzYkYzlmbFkq
Qnt+ZVZ1d0pwVTRKKjUxLW5MNm1JNjlBSU98MzYjWXlTPAp6ZlBkbzNvfHo7R1ZXQzd7KGIxOUFX
VmMjYUVVeSlAK2U+I3x6bGliTkhtcmVwQiZiUENnU0AwcGwmLTRhPzNoPl8Kem9iYmZmYiRmUzRu
JjJxMldqdGAtQ3NFfGBiPGdqbTFMN2E/ayozbXtNUEtQaVJrT2VIe1BeQzBwQT1kSnZ3NjhFCnpx
N2dpT0I9PVl8QGo1STM/QmJLbEEpVjF6bU8hMyFQMy07MiYxXiUwSU1yKGZReSUzfiZoelhzdGM4
T0BXN1pBSAp6czliPUVgVEJWcHNWQyFXMDE3Y24hSyRAenhDb09GP3UzdDRmelY5VWdmXylFak5V
PC15O21FSTc/Tygpb1ZhckUKenJER2ZGY35oMj9TUk5UN21SSFIjekpqPDNlY09VLUE3e3BhbCN4
Pnk4a1I/QSU5RzUoZSMpX2ZNJFhOeE10cWRrCnp4ZWxIb047SyVBSU9YJmE7Z21BU0A0P2d4N35q
K302T0szY1FHRkN2VDBTeDQ8WTRRb0dMfio9djlFX14zYlZsSQp6Ym0/NzxNPHFFWCtXbllYK2Aj
WWlPPUd2OGFwWDNjQkcxXjVkU1I+cCQ3M2pLbHI2RXw1M2NUSkNTMXJLQTFrWiYKeitsTFlLU1VO
XmsqPF5YTnhRQnE5R3h7bG47Niopb0R1UE89QVl8bXZyQThxdGgxO2RKeG5sJDVXelpRI1pxe2oy
CnokYWFgT3ImclB8QzlENGRicmMmb1pQJH0rMT97KlZKR0hHJT1wSTROS3J5PThHV0ojRHdhKCZR
YDNMZ1FUWVZ+RAp6b1UheyslTXIpWmBBY2dCPC18SlhQMU0ha2VBSUJBUndQSkx6aXAxNEpTRTl9
cUVgLS1KVnFiVkZnOUYjWlZlM0IKelglMnI+e2xCQVhGUzhwcl4jWVJXJEwyMlRzU2s8d0sxOXUl
JWI0KzMlMHpKc2Qxa3Q5RyhtbH4jOzJuS1BualZaCnp3UEpSQVUtR0B6SklQSTVEP24pQkM+RCkq
RjRlSUFxdVVeP3BmR2plOTB7dSt0YitmRTNaXyR7O3sobTJTRTM+RwpQT0E3WDdXb09Gdm9IK000
IVRjQnQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGlu
Zy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2Jh
Y2tncm91bmQtZmlsdGVyLWJsdXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9i
YWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1i
bHVyLW91dHNldHMtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzYmE2YjIzNWIyMjgzZWM2Yzlj
YTFmY2M3Y2Q0YmI1NDI4YTdlMWUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDU5MDQKemNtZUkw
PX5xK3RfUW5yYEIyS2dwUjhjX05zfnI/akElUT80UiNCPjB4Q2tMM2oyYTEkNVRjfUBoRG5AekUx
fFgkCno2YlZeTTV5PUQqUDZFTCZOSzNSNHhQYSMlMl96c3dZeXRAZ0E7QF4rQEFuVmZTOWRNZl4z
YHsodi1XcWJlYV5HQAp6ZW0tYWFednxHeEg3Z3hmMHN5ZSkkb0t4bzBsO2ItMDlmS3lTZWw8fitf
M1JXXllRaE1oajJkPDY1fFBFU3tlbCkKejVaI2Q7Tlk3S21lVigzUENwfUlRa2NkLTZjTElUa0JB
a3FPX2FkWTxNTyp+e2B9O0B5elk5QjhKa31xPTc8eVc4Cnp3UjZrOEtFPiEkISZTQlBlbmpOZ0Mh
TX4oeHVOV3ZqSl9QeSZyZVcwOXVgRk89NTY/V0lsNkRmTy1nJE4wS0E/dQp6RUdgMjh6cX0/KFY4
d2JJMEd6Tn4xI0NNT1g4fk5jLTM/c1dsZS1NfldNPnJzSmg4UzFfVFQ8Y2dJQE5XVTl2UVEKeklX
Pm1HalJWaS09alFkWDc4bTR1bipaQihvOyVwX2RYYzt8JigwQiU/IzQoPkQhaCpHQ1hWYzxNPmJZ
M28jTisrCnpZfihxVmpIWm9rVjt6R05KZH1veDk9Vk4+WkpuZHMqZWlRemxuPWB8VEkkbEEqcFE2
YEdPcV9ONDx9UlZzMVYoXwp6Z1BrJWF2Vm4mdGokQFVWZFlaaTlmLVZVJkd8YlZ0MUM/LT4qNH14
VG8lTE0hU2crJVk5ait9czwmaSlTZCUhPSsKenktS15NbytMRXxnYyVXaGg3ZCUrY3grJC1oQmJv
UVE2KFZlYVpueGs7JEJRJXs2KC18S2RCOztPRUh5NTx5Kkl1CnpAMjJAMyVQLWBvd2wmZTgzI015
RzNvdW9qP244dUN4Y25WWWU1O09DMzgtd21xWHc2NjN6TVZzUD5OKko4TEFaRwp6NihNQkIyLSZ7
JkUtZGdtM1EtMDNMYlR7Q1c5NmBxeWlrZWNtQUNGfHA0fHxmaSh1PTtrfExUKWxjbDdDSlVqQ2wK
entyUlp6SXYySWs5elllWT1FYldhcGBiejA8SzY3dD1RaGI3SXh2V28oT0dkNysrN0w+LUt+Zn55
bz5WWCsjQzY7CnpmcnJBPzB7OWt3Q3lvKmhKPWBtekw7Jk4zKGU3MnVVSlJQSStSczc5JkVlLWxJ
Z2dJY090IXZDNiQhaGlrMkordwp6ITQ1Y2kxMl41N0Z4NmBxaXp5WlA7dChXSi01TWRWP2FoOzFQ
X1ckVEwzciRmWldCJXkjOUxnIUJrfVE2REpSSEIKemMkNjYzSkBJKDhAdiRfRSU9NFM9IXBRfkch
d3JXcWxAWm00Jmt0SyV1UmszfU5pc3FXJW9AQ3Z1SWdraGVfYWFPCnp5VSFGU158MEBtI0FFWW11
QHRlJmUydWN6bEl4X3EjMyE8XjsoJH1waCQ+TnN0KVBYfEdXSUBNcXZSLSNPcihAMgp6ZV50JWg8
LUA4dDUkKCp8K2o8Kk94YyotJWpUQSRzdDxsQSZXMGJaSUJ2bVVQLX1gIyl7KG9idmJVejtHak9V
Tm4KemBxJG9nNnFGMEgzVG05ej8rKDEmbFF6M3koNjUwYkIhPV9MaUhWUlJrJmxqZjY7aj5TKl91
cGlHJmdMaj5sVTA7CnpKeGklbVEpU1AheGAte1J3WmlGJWc2KGh0aS0tK0EkUDEwYmE2X3MpRDV0
QGF6d1lJIUJ1JHB2YmRQZT1gZCtLcgp6eHRFcEp4XnBLQDMkTHp9eDR3O2RMWi04I3JGT2hkSmVw
QEchWEZNViZGYyhjTjVAJXdhYHN1MWNUQ1RfYX1+dioKek5tKmQhUCg7NXY+ZWwkVnRgT0o2YGFq
eksqMCVHLU5NJmopbV90MEJSMmtWMXc7QU1qNlErbHNUdjUtVDAlbz9FCnppdmojaWRvI2kpczlf
WkQ5MkotVXllXnpsJUc9ajBjQCtQKSMlJSohT2NDfE0lMCN7Km5LcTQqSnFER0RnZ1VrRQp6RmBi
JUtCZlF+bXZGKzhieG5Obj5gQ0c9IUpETVRQa0w/LTwoMH1HcnhCYD1ifDIpZGdKQSFXdkZIS254
QG1INnEKelRyIUhwZW5wYE87MWdPfmxTMGR4ZWZQXmRremtoWWspXm41T3g8QGpGVV9UVEIkYS19
eDd4eyQqJFpWZXNzb31+CnpHT1ZuNnslKU1iRkVwcUw1OEhAczhvJU5YKXhKdCZYSDs8STNPRTFT
R0g3VGJkIXhxQnRZRXxEQz00MUZjPj0oOQp6SiojO3dKQz87XzdafWBZJH4lWHx4YFN3X0s+bGU9
MVEkc2JeLWl+WF9mPH4jJk9IPm0+X0FIK2c5Mk4zOz5gV3oKelVLTFpTNmBJU3lOQSNqUUVwO3Rx
N1doT0daJmVZWnI8RWdPXl5Ad2xDZnxsITwpcD0qUFUzYWY0fH48YFljQCsoCnpseHN9NjIqU3xk
aldLMGBPPmxZQTgrNHRAeXtDKWdAKjV8T1ZjWmw7TEdSSC1yQnxBSTFHWHNaPEZuQW8pTGlvdgp6
VXMwYk49amkoS3ZFY3pkK0IwKT1TbipDPWUwb35FT3V+dFBJN0Nuc2JBRWgmVUA4VCpSYDdUa2E5
d2dManhZUDgKejwtd2dIPnNQbWJuN2hweDN4TFpkVHt4XyRffF9sfTN6Mjs1LVZGTndiTWpgVzgk
c15kRmxKNm5RPFJHVjMlV3VOCnpOUj1sLVdnV0txRURYNG5LMU9TLUVmYmJCZ3pEQ3M7KV81Uzt9
Z3RoXz4yU1pPQWt5YHFTPFRqMWIwX3hzKDtlawp6QzwtTzF3Tm1EZS0kYHxeQ2tkSjA+bGJnV2cz
fVByVXZ5fEQlS05kdns5NWM5VVFiN2tIMV9rJWw0eGtzIVo8YjQKeklCUHY0WFdINHBhPFZ2NkYj
ZE5MK28wWVBlRERZMFkyQiRmbWdpMH15KHJONEVZd2k4UCp3Vl9SP3xBOHowZHJHCnohPGxzQTRW
TSs/ZjBwZU8oPH1SX0tRPWFuM0lHPmZIeyVTVFhSS2VGdXc8NkJyMGx7S2Y+QUQtdWtWUiRWTTEx
dwp6JF85aCtETXRkb3pqd3tXTjlsZ29vbit6MHBNN3lAKzJoZTI3bll2OzYocjlrYSNYSk4mTUxk
Y25JcGpXYnl7bSgKejRTT1ZaYWxFcHpRWHRVSnRWe3tLUio5WjhHJHNIOG05PmwzdEFHSyFGRnRz
S3tiMCU5VzgoVz9WeXd0O1V5NkY2CnpldGNuKFd4OFpxNEo7d2RaQnt5YnVGZXE9OTE5T1VyTyVH
JjNOdnFYYjdScnhgTjQrRyExd1BpSF9jdlE9an4jcwp6JnpAZWB2c0Mlbml+WHhFczBSO1BsSjZk
JG0hSjdseHQpMSVHK180NngjbkdLbzJiVV54a2s4eTcpSGM4NlolNkQKenJaIUNaaXxvbWtNJjQ9
UWBwbTM4Y0VJZzYxfHgzPG5NMT5HU3VKYzVMYzxkVWF9PiFzUGNFSzN5Z3dzQ3NtcWU2Cnp0Pn04
e2pqXiRiPWBXP3JmVHhud0lGPSVAV0omKUxxcUtYRDxaX15yYURHdiU8WUQpeUh0OGI1UkcxQ0Yr
WmZhNgp6dUpaIXM3enNkQWZfYXtgKWo0ZXRDO2dHYGs+JCY0TX5hXzhfXkBnaGJ1ej9VKFR5d2dh
MVBBdkQ2Tm5rb0FqdW8KeiYpJVc0cVVafTI/YE1ka0ZRd3hBWmlrZkV0KHdpY1FJZCN8Pn1iYzg8
OV9DUE87MEo2aTw8YTxyfHNTWVQoMzdyCnppam1aU3psX0A/ano9fHZKYH15cFBgZHNiUn14aHhj
QUhoMlN+NiNZU2dKdGFsaGtLVG9TdTdzVztVPTVpejI/dwp6NU45OEU3TkNDZGNpV3t4USVsMnha
eV9ZbV9+I0JRdk9lSGhjP2YqPnIkYjV8aTU9JSteSjMmRm91YVhZR2xSNzMKelY7O2UyWTRoVFNj
a2g3bD8qeUIxI15ZZiRoUXIpS2x0R3pYZFlEWFVNPTlQXnlUeXVuTVJ4MDQ9WSpyUSNgfG1yCnpr
SGtRPVpZXnpuT01IMCkjY2ElS3ROY0dDV3lxSnFyRFpBKUlRMH4odjwpVjVJU1VPS0U9LUpjQVRN
az47b0RFIQp6N3xmM0lmfWwtRzwtaSFsckhXb3RYbG9DSW0+cTlPcH16TXBOS0F8S3tmMU9XJHEm
UnchYCg8OzN4bXJ9aGZkVWoKemJ+UGc3TDEwQjRGJUFsaVc/YD9hKW1AQG0+Yng1MG5AXnJgKFRP
PGJTaGg5MXhadXJtXjZ2WiFYbHpEVWs9cns8CnpydHojNClBPzgoRGFePCohJWg1YHUqOEIzN0o8
eGdqNGg4JEA2Vz9sIWBWZWNlZyt4JVdiVXpBbGxBO2UlPks7WAp6OD9zSCs3NllgWGVOfU0zRjI5
dU15cjl4Jk97ciM/O2VwWnB2bFBhOG9qOWJscWhYWSQpezs8bj5UVGdlVjtOUFYKekReRlVpJCY/
Q3xla2p9N1IzXn5WdmdYdE9GIWwkcHhYXkxOT2diKUJqJDZwZWxNbnx9U3RifntFajVNXj5acDhR
Cno9NWxBSDNXNSspKkg2UXRCeFc1OSlsJG9oLWhGc0BXI2UyZ0ZwZUBDMzRzdyNpQ2o1YVAwYSlJ
RHcoJE1EMjtLUgp6RWJjcl5IQi1JSXJ6dUpeYT1VN09iVERQejglSCZtJXopNmtzZ2xNc1dGRylC
OExNcEk8NTxGdGpRJlYrKS0rT2EKelctQ0hEM1Q1Y3olWHVtflM5R0hpUHNWX1pONXV+WWkoKSFu
JEs8Y2RaTTVTfXhRKmJ7M3p2Ykp0Pio2S2tnRUctCnpRbG5ZS0Y0QTBYeWh1MSZEPXtoKU9SPzBr
NVVsYXNPbVZvUzQmUj1UaWU0P3U3OUVgLSUrS3UyLWtrXmZkM25IUgp6KGMxdygqJWQydDEkVkMy
RmVrdXNMeVRUaURnYENOZXcxJjUzbmZ+OTUzKVk+ZSY/PFhiaEVjTFR1aDV4KGBUdmsKeikxeWM3
b2hOMTh8R0g8IU5eTWF0O3hMSFVhX0NUSS17Q2V0XjAkbWZTd0M8UVJVOFY5JDYxSE5udXImVD1O
X3tnCnpobEQrKCRqfDVaPGBseSMjV2NATSh8U3ZAaFZFNCgtc08wTVoxRzZidSV4fVRIRXs/QCY0
fjdlWkY8WmB5b0k/dwp6RkdqS1deXi16ZElPJDgrVFNtOHJeQ3QrKHVAcE9kO0VjSH05cHEwcjVk
RTdAcSpFRnVwWmpMMkU7SUc/bVJRencKejkwcFMwd0EjTzd3dmNfJGF9RGRzY0x8akJ5emBDdW52
UWkkYko4UWBxeXhhVGkocylOMTJxZ2U7VjJCMGA0PXRvCnorXytiPiFWZmokVUhAeEQmcHktSHJ0
VG1mSk5vQTdKa0ljb1FrZ3IwVkxZVyomdTlLVy1KJiQtTXYwWjhuQUhpPQp6ZjMhZEhmN3pPQD1O
aGZvPG83fiFWclAxY2VIYSM3ISpaTjV7QE5rbXM7ZHh8bTxXIX0kPXo8aV47JSphPHl3byMKekRY
PlNQb2tYVG93Pyk+c0F2QEMyek97bCtUemUwbk1ZNnJ7M0dwMVUtZ1U0LUQ5VmVGYXM2ezlmM3Ew
NF4he192CnpoZXc5QnA3UHJKOTh3c0ZYUlooekc+NjdQMVlKUl5NQTlTU1h0dS1NR0YhRHVkIXtV
NXtjaG1DZDFUMTlnUDFsNAp6Jj4tVXM5V0VCN3EmaWNJaVAkZGZaXkBkXl99eUR8UnBHVF5GVX5N
UG1zT2x5Sz0hcmkxU2gtIz9RZlVFZH1sJlcKekVOdVc1azFmPmFTTzZELXwwe2YlekU8K2c1ZzNw
aGBeWSpVe3l5YStIR1IwZHUjZWgoKWI0K30lM1pXdSoqbz5jClVCTiRwXlVVMzZRNGg4dU80I1p2
ajRAPTE7cnZMeHwKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0
ZXItYmx1ci1vdXRzZXRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRl
ZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
Y29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136476</attachid>
            <date>2012-04-10 10:03:59 -0700</date>
            <delta_ts>2012-04-12 13:56:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80046-20120410130357.patch</filename>
            <type>text/plain</type>
            <size>58753</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGNlZDg3NzIxZDlmZmFl
NTRlNDg1OTlhNjRlZjc5Nzk5YmM1M2Q1OS4uNGM3MGQ1ODEzOWZhMzljMDdlOTBlZDY1ZTNjMDYz
ZjUyNjgwMTE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTA0LTA5ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQmFj
a2dyb3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhY2tncm91bmQgZmlsdGVycyB0byBM
YXllckNocm9taXVtL0NDTGF5ZXJJbXBsLiBUaGVzZSBmaWx0ZXJzIGFyZQorICAgICAgICBhcHBs
aWVkIHRvIGFueSBwaXhlbHMgaW4gdGhlIGNvbnRlbnRzIGJlaGluZCB0aGUgbGF5ZXIgYW5kIHNl
ZW4gdGhyb3VnaAorICAgICAgICBpdC4KKworICAgICAgICBUaGlzIGlzIGRvbmUgYnkgYWRkaW5n
IGEgYmFja2dyb3VuZFRleHR1cmUoKSB0byB0aGUgcmVuZGVyIHN1cmZhY2UsIHdoaWNoCisgICAg
ICAgIGhvbGRzIHRoZSByZWFkLWJhY2sgY29udGVudHMgb2YgdGhlIHRhcmdldCBmcmFtZWJ1ZmZl
ciwgYmFja2dyb3VuZCBmaWx0ZXIKKyAgICAgICAgYXBwbGllZCwgaW4gdGhlIHN1cmZhY2UncyBv
d24gY29vcmRpbmF0ZSBzcGFjZS4gVGhlbiB0aGlzIGlzIGRyYXduIGJhY2sKKyAgICAgICAgaW50
byB0aGUgZnJhbWUgYnVmZmVyIGJlZm9yZSB0aGUgY29udGVudHMgb2YgdGhlIHN1cmZhY2UgaXRz
ZWxmIGlzIGRyYXduLgorCisgICAgICAgIFRlc3RzOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy5odG1sCisgICAgICAg
ICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQt
ZmlsdGVyLWJsdXIuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpzZXRC
YWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyQ2hyb21pdW0p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6YmFja2dyb3VuZEZpbHRlcnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNr
Z3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1cmZhY2VRdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXNDdXJyZW50UmVuZGVyU3Vy
ZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRl
clN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VN
YW5hZ2VkVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06
OmJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5k
ZXJTdXJmYWNlQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJv
bWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3Vy
ZmFjZUNocm9taXVtOjpiYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChSZW5kZXJTdXJmYWNl
Q2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5k
RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c3VidHJlZVNob3VsZFJlbmRlclRvU2VwYXJhdGVTdXJmYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0
eUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3
YWJsZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cHJl
cGFyZUJhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpyZWxlYXNlQmFja2dyb3VuZFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpjb21wdXRlRGV2aWNlVHJhbnNmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZURldmljZUJvdW5kaW5nQm94
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZVJlYWRiYWNrRGV2
aWNlQm91bmRpbmdCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpyZWFk
YmFja0RldmljZUNvbnRlbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlUZXh0dXJlVG9G
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmNvcHlEZXZp
Y2VUb0JhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFNrQml0bWFwVGV4
dHVyZUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6ZHJhd0NvbnRlbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6ZHJhd1JlcGxpY2EpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmg6CisgICAgICAgIChDQ1JlbmRlclN1cmZh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpzZXRCYWNrZ3JvdW5kRmls
dGVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmJhY2tncm91bmRGaWx0
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6YmFja2dyb3VuZFRleHR1
cmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6c2V0QmFja2dyb3VuZEJsdXJPbk5vZGUpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTA0LTA5ICBBYmhpc2hlayBB
cnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggZHVlIHRvIGZsb2F0
cyBub3QgY2xlYXJlZCBiZWZvcmUgc3RhcnRpbmcgU1ZHIDx0ZXh0PiBsYXlvdXQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGUzZDgzOThhY2E3ODExOTIwMmQ4ZjJmNTRjZGQwYWU4OTEx
M2ZiMjUuLjI2NWE4ZjBkMWY2NzMwZWMxY2I0OTQ0MTkwN2I5NTU3NjFkYzY5OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDQtMDkgIERhbmEgSmFu
c2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBCYWNrZ3Jv
dW5kIGZpbHRlcnMgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTA0LTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTEzNTYxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCAyYWQwOWI5NDhhNDNiYjNjZTNh
NzE5NTFmYzdiNWQ5ZTEzMDBlYTU1Li5lNDI1ODRjNmU4YzA5NTFmOTVjNDQzZGZjNjBjZTE4MDUy
YmIzOTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMzIyLDYgKzMyMiwxNCBAQCB2b2lk
IExheWVyQ2hyb21pdW06OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cykKICAgICAgICAgQ0NMYXllclRyZWVIb3N0OjpzZXROZWVkc0ZpbHRlckNvbnRleHQodHJ1ZSk7
CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMpCit7CisgICAgaWYgKG1fYmFja2dyb3Vu
ZEZpbHRlcnMgPT0gYmFja2dyb3VuZEZpbHRlcnMpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Jh
Y2tncm91bmRGaWx0ZXJzID0gYmFja2dyb3VuZEZpbHRlcnM7CisgICAgc2V0TmVlZHNDb21taXQo
KTsKK30KKwogdm9pZCBMYXllckNocm9taXVtOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCiB7
CiAgICAgaWYgKG1fb3BhY2l0eSA9PSBvcGFjaXR5KQpAQCAtNDc0LDYgKzQ4Miw3IEBAIHZvaWQg
TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAg
ICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMoKSk7CiAKICAgICBsYXllci0+c2V0RmlsdGVy
cyhmaWx0ZXJzKCkpOworICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhiYWNrZ3JvdW5k
RmlsdGVycygpKTsKICAgICBsYXllci0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVudChtX2lzTm9u
Q29tcG9zaXRlZENvbnRlbnQpOwogICAgIGxheWVyLT5zZXRNYXNrc1RvQm91bmRzKG1fbWFza3NU
b0JvdW5kcyk7CiAgICAgbGF5ZXItPnNldFNjcm9sbGFibGUobV9zY3JvbGxhYmxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaAppbmRleCBiOTgwMjJiNTJkYTU4YjkxOTdjYmY1NDQ4Y2I2ZDQwYTlhMDdjMjcw
Li5hNmU4ZGIxMmUwNGY1MTY5NjQ2NDM1MjI0NDllNmM1OGM4YTljOTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCkBAIC0xMjEsNiArMTIxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpbHRlcnMo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0KIAorICAgIC8vIEJhY2tncm91bmQg
ZmlsdGVycyBhcmUgZmlsdGVycyBhcHBsaWVkIHRvIHdoYXQgaXMgYmVoaW5kIHRoaXMgbGF5ZXIs
IHdoZW4gdGhleSBhcmUgdmlld2VkIHRocm91Z2ggbm9uLW9wYXF1ZQorICAgIC8vIHJlZ2lvbnMg
aW4gdGhpcyBsYXllci4gVGhleSBhcmUgdXNlZCB0aHJvdWdoIHRoZSBXZWJMYXllciBpbnRlcmZh
Y2UsIGFuZCBhcmUgbm90IGV4cG9zZWQgdG8gSFRNTC4KKyAgICB2b2lkIHNldEJhY2tncm91bmRG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRl
cnM7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CiAgICAgYm9vbCBvcGFx
dWUoKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZTsgfQogCkBAIC0zMTEsNiArMzE2LDcgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9kZWJ1Z05hbWU7CiAgICAgZmxvYXQgbV9vcGFjaXR5OwogICAg
IEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOworICAgIEZpbHRlck9wZXJhdGlvbnMgbV9iYWNr
Z3JvdW5kRmlsdGVyczsKICAgICBmbG9hdCBtX2FuY2hvclBvaW50WjsKICAgICBib29sIG1faXNE
cmF3YWJsZTsKICAgICBib29sIG1fbWFza3NUb0JvdW5kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCmluZGV4IDBhZDczYjQ2NzJmZWMyOTc1Y2MwMWVmODNjODUwOTY5NjRl
YjM5ZGIuLjFmODI0MGUzNzI1ODI2MGU2NWNlNDMzZjY3ZTQ5MDZhZTEzMDMwMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5j
bHVkZSAiR2VvbWV0cnlCaW5kaW5nLmgiCisjaW5jbHVkZSAiR3JUZXh0dXJlLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKQEAgLTUxMiwxNCArNTEzLDc1IEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVidWdC
b3JkZXJEcmF3UXVhZCogcXVhCiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5kcmF3RWxl
bWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfTE9PUCwgNCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX1NIT1JULCA2ICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSkpOwogfQogCit2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVu
ZGVyU3VyZmFjZURyYXdRdWFkKiBxdWFkKQoreworICAgIC8vIFRoaXMgbWV0aG9kIGRyYXdzIGEg
YmFja2dyb3VuZCBmaWx0ZXIsIHdoaWNoIGFwcGxpZXMgYSBmaWx0ZXIgdG8gYW55IHBpeGVscyBi
ZWhpbmQgdGhlIHF1YWQgYW5kIHNlZW4gdGhyb3VnaCBpdHMgYmFja2dyb3VuZC4KKyAgICAvLyBU
aGUgYWxnb3JpdGhtIHdvcmtzIGFzIGZvbGxvd3M6CisgICAgLy8gMS4gQ29tcHV0ZSBhIGJvdW5k
aW5nIGJveCBhcm91bmQgdGhlIHBpeGVscyB0aGF0IHdpbGwgYmUgdmlzaWJsZSB0aHJvdWdoIHRo
ZSBxdWFkLgorICAgIC8vIDIuIFJlYWQgdGhlIHBpeGVscyBpbiB0aGUgYm91bmRpbmcgYm94IGlu
dG8gYSBidWZmZXIgUi4KKyAgICAvLyAzLiBBcHBseSB0aGUgYmFja2dyb3VuZCBmaWx0ZXIgdG8g
Uiwgc28gdGhhdCBpdCBpcyBhcHBsaWVkIGluIHRoZSBwaXhlbHMnIGNvb3JkaW5hdGUgc3BhY2Uu
CisgICAgLy8gNC4gQXBwbHkgdGhlIHF1YWQncyBpbnZlcnNlIHRyYW5zZm9ybSB0byBtYXAgdGhl
IHBpeGVscyBpbiBSIGludG8gdGhlIHF1YWQncyBjb250ZW50IHNwYWNlLiBUaGlzIGltcGxpY2l0
bHkKKyAgICAvLyBjbGlwcyBSIGJ5IHRoZSBjb250ZW50IGJvdW5kcyBvZiB0aGUgcXVhZCBzaW5j
ZSB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSBoYXMgYm91bmRzIG1hdGNoaW5nIHRoZSBxdWFkJ3Mg
Y29udGVudC4KKyAgICAvLyA1LiBEcmF3IHRoZSBiYWNrZ3JvdW5kIHRleHR1cmUgZm9yIHRoZSBj
b250ZW50cyB1c2luZyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMgdXNlZCB0byBkcmF3IHRoZSBjb250
ZW50cyBpdHNlbGYuIFRoaXMgaXMgZG9uZQorICAgIC8vIHdpdGhvdXQgYmxlbmRpbmcgdG8gcmVw
bGFjZSB0aGUgY3VycmVudCBiYWNrZ3JvdW5kIHBpeGVscyB3aXRoIHRoZSBuZXcgZmlsdGVyZWQg
YmFja2dyb3VuZC4KKyAgICAvLyA2LiBEcmF3IHRoZSBjb250ZW50cyBvZiB0aGUgcXVhZCBvdmVy
IGRyb3Agb2YgdGhlIG5ldyBiYWNrZ3JvdW5kIHdpdGggYmxlbmRpbmcsIGFzIHBlciB1c3VhbC4g
VGhlIGZpbHRlcmVkIGJhY2tncm91bmQKKyAgICAvLyBwaXhlbHMgd2lsbCBzaG93IHRocm91Z2gg
YW55IG5vbi1vcGFxdWUgcGl4ZWxzIGluIHRoaXMgZHJhd3MuCisgICAgLy8KKyAgICAvLyBQaXhl
bCBjb3BpZXMgaW4gdGhpcyBhbGdvcml0aG0gb2NjdXIgYXQgc3RlcHMgMiwgMywgNCwgYW5kIDUu
CisKKyAgICBDQ1JlbmRlclN1cmZhY2UqIGRyYXdpbmdTdXJmYWNlID0gcXVhZC0+bGF5ZXIoKS0+
cmVuZGVyU3VyZmFjZSgpOworICAgIGlmIChkcmF3aW5nU3VyZmFjZS0+YmFja2dyb3VuZEZpbHRl
cnMoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBXZSBvbmx5
IGFsbG93IGJhY2tncm91bmQgZmlsdGVycyBvbiB0aGUgcm9vdCByZW5kZXIgc3VyZmFjZSBiZWNh
dXNlIG90aGVyIHN1cmZhY2VzIG1heSBjb250YWluCisgICAgLy8gdHJhbnNsdWNlbnQgcGl4ZWxz
LCBhbmQgdGhlIGNvbnRlbnRzIGJlaGluZCB0aG9zZSB0cmFuc2x1Y2VudCBwaXhlbHMgd291bGRu
J3QgaGF2ZSB0aGUgZmlsdGVyIGFwcGxpZWQuCisgICAgaWYgKCFpc0N1cnJlbnRSZW5kZXJTdXJm
YWNlKG1fZGVmYXVsdFJlbmRlclN1cmZhY2UpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VyZmFjZURyYXdUcmFuc2Zvcm0gPSBxdWFkLT5pc1Jl
cGxpY2EoKSA/IGRyYXdpbmdTdXJmYWNlLT5yZXBsaWNhRHJhd1RyYW5zZm9ybSgpIDogZHJhd2lu
Z1N1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKTsKKworICAgIC8vIEZJWE1FOiBEbyBhIHNpbmdsZSBy
ZWFkYmFjayBmb3IgYm90aCB0aGUgc3VyZmFjZSBhbmQgcmVwbGljYSBhbmQgY2FjaGUgdGhlIGZp
bHRlcmVkIHJlc3VsdHMgKG9uY2UgZmlsdGVyIHRleHR1cmVzIGFyZSBub3QgcmV1c2VkKS4KKyAg
ICBJbnRSZWN0IGRldmljZVJlY3QgPSBkcmF3aW5nU3VyZmFjZS0+cmVhZGJhY2tEZXZpY2VDb250
ZW50UmVjdCh0aGlzLCBzdXJmYWNlRHJhd1RyYW5zZm9ybSk7CisgICAgZGV2aWNlUmVjdC5pbnRl
cnNlY3QobV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKSk7CisKKyAgICBPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IGRldmljZUJhY2tncm91bmRUZXh0dXJlID0gTWFuYWdlZFRleHR1
cmU6OmNyZWF0ZShtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci5nZXQoKSk7CisgICAgaWYg
KCFnZXRGcmFtZWJ1ZmZlclRleHR1cmUoZGV2aWNlQmFja2dyb3VuZFRleHR1cmUuZ2V0KCksIGRl
dmljZVJlY3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBTa0JpdG1hcCBmaWx0ZXJlZERldmlj
ZUJhY2tncm91bmQgPSBkcmF3aW5nU3VyZmFjZS0+YXBwbHlGaWx0ZXJzKHRoaXMsIGRyYXdpbmdT
dXJmYWNlLT5iYWNrZ3JvdW5kRmlsdGVycygpLCBkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZS5nZXQo
KSk7CisgICAgR3JUZXh0dXJlKiBmaWx0ZXJlZERldmljZUJhY2tncm91bmRUZXh0dXJlID0gcmVp
bnRlcnByZXRfY2FzdDxHclRleHR1cmUqPihmaWx0ZXJlZERldmljZUJhY2tncm91bmQuZ2V0VGV4
dHVyZSgpKTsKKyAgICBpZiAoIWZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1cmUpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghZHJhd2luZ1N1cmZhY2UtPnByZXBhcmVCYWNrZ3JvdW5k
VGV4dHVyZSh0aGlzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBtdXN0IGJlIGNv
bXB1dGVkIGJlZm9yZSBzd2l0Y2hpbmcgdGhlIHRhcmdldCByZW5kZXIgc3VyZmFjZSB0byB0aGUg
YmFja2dyb3VuZCB0ZXh0dXJlLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRzRGV2
aWNlVHJhbnNmb3JtID0gZHJhd2luZ1N1cmZhY2UtPmNvbXB1dGVEZXZpY2VUcmFuc2Zvcm0odGhp
cywgc3VyZmFjZURyYXdUcmFuc2Zvcm0pOworCisgICAgQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRS
ZW5kZXJTdXJmYWNlID0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZTsKKyAgICBpZiAoIXVzZU1hbmFn
ZWRUZXh0dXJlKGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5kVGV4dHVyZSgpLCBkcmF3aW5nU3Vy
ZmFjZS0+Y29udGVudFJlY3QoKSkpIHsKKyAgICAgICAgZHJhd2luZ1N1cmZhY2UtPnJlbGVhc2VC
YWNrZ3JvdW5kVGV4dHVyZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IGZp
bHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCA9IGZpbHRlcmVkRGV2aWNlQmFja2dyb3Vu
ZFRleHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKKyAgICBkcmF3aW5nU3VyZmFjZS0+Y29weURl
dmljZVRvQmFja2dyb3VuZFRleHR1cmUodGhpcywgZmlsdGVyZWREZXZpY2VCYWNrZ3JvdW5kVGV4
dHVyZUlkLCBkZXZpY2VSZWN0LCBjb250ZW50c0RldmljZVRyYW5zZm9ybSk7CisgICAgdXNlUmVu
ZGVyU3VyZmFjZSh0YXJnZXRSZW5kZXJTdXJmYWNlKTsKK30KKwogdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3
UXVhZCogcXVhZCkKIHsKICAgICBDQ0xheWVySW1wbCogbGF5ZXIgPSBxdWFkLT5sYXllcigpOwor
CisgICAgZHJhd0JhY2tncm91bmRGaWx0ZXJzKHF1YWQpOworCiAgICAgbGF5ZXItPnJlbmRlclN1
cmZhY2UoKS0+c2V0U2Npc3NvclJlY3QodGhpcywgcXVhZC0+c3VyZmFjZURhbWFnZVJlY3QoKSk7
CiAgICAgaWYgKHF1YWQtPmlzUmVwbGljYSgpKQogICAgICAgICBsYXllci0+cmVuZGVyU3VyZmFj
ZSgpLT5kcmF3UmVwbGljYSh0aGlzKTsKICAgICBlbHNlCiAgICAgICAgIGxheWVyLT5yZW5kZXJT
dXJmYWNlKCktPmRyYXdDb250ZW50cyh0aGlzKTsKKyAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgp
LT5yZWxlYXNlQmFja2dyb3VuZFRleHR1cmUoKTsKICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgp
LT5yZWxlYXNlQ29udGVudHNUZXh0dXJlKCk7CiB9CiAKQEAgLTExODYsNiArMTI0OCwxNyBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4
ZWxzLCBjb25zdCBJbnRSZWN0JiByZQogICAgIH0KIH0KIAorYm9vbCBMYXllclJlbmRlcmVyQ2hy
b21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29u
c3QgSW50UmVjdCYgZGV2aWNlUmVjdCkKK3sKKyAgICBpZiAoIXRleHR1cmUtPnJlc2VydmUoZGV2
aWNlUmVjdC5zaXplKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShtX2NvbnRleHQuZ2V0KCksIG1fcmVu
ZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAs
IHRleHR1cmUtPmZvcm1hdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRldmljZVJlY3QueSgpLCBkZXZpY2VSZWN0LndpZHRo
KCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDApKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogTWFu
YWdlZFRleHR1cmUqIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0T2Zmc2NyZWVuTGF5ZXJUZXh0
dXJlKCkKIHsKICAgICByZXR1cm4gc2V0dGluZ3MoKS5jb21wb3NpdGVPZmZzY3JlZW4gJiYgcm9v
dExheWVyKCkgPyByb290TGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpLT5jb250ZW50c1RleHR1cmUo
KSA6IDA7CkBAIC0xMjA5LDkgKzEyODIsMTggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5KCkKICAgICB9CiB9CiAKK2Jvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjppc0N1cnJlbnRSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSog
cmVuZGVyU3VyZmFjZSkKK3sKKyAgICByZXR1cm4gbV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9PSBy
ZW5kZXJTdXJmYWNlICYmICFtX2N1cnJlbnRNYW5hZ2VkVGV4dHVyZTsKK30KKwogYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5k
ZXJTdXJmYWNlKQogeworICAgIGlmIChpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZh
Y2UpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIG1fY3VycmVudFJlbmRlclN1cmZhY2Ug
PSByZW5kZXJTdXJmYWNlOworICAgIG1fY3VycmVudE1hbmFnZWRUZXh0dXJlID0gMDsKIAogICAg
IGlmICgocmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlICYmICFzZXR0aW5n
cygpLmNvbXBvc2l0ZU9mZnNjcmVlbikgfHwgKCFyZW5kZXJTdXJmYWNlICYmIHNldHRpbmdzKCku
Y29tcG9zaXRlT2Zmc2NyZWVuKSkgewogICAgICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2Nv
bnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDAp
KTsKQEAgLTEyMjIsMTIgKzEzMDQsMjggQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVz
ZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQt
PmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fb2Zmc2Ny
ZWVuRnJhbWVidWZmZXJJZCkpOwotCiAgICAgaWYgKCFyZW5kZXJTdXJmYWNlLT5wcmVwYXJlQ29u
dGVudHNUZXh0dXJlKHRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZW5kZXJT
dXJmYWNlLT5jb250ZW50c1RleHR1cmUoKS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQobV9jb250ZXh0
LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9yLmdldCgpKTsKKyAgICByZXR1
cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKHJlbmRlclN1cmZhY2UtPmNvbnRlbnRzVGV4dHVy
ZSgpLCByZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpKTsKK30KKworYm9vbCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnVzZU1hbmFnZWRUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpCit7CisgICAgaWYgKG1fY3VycmVudE1hbmFnZWRU
ZXh0dXJlID09IHRleHR1cmUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgbV9jdXJyZW50
UmVuZGVyU3VyZmFjZSA9IDA7CisgICAgbV9jdXJyZW50TWFuYWdlZFRleHR1cmUgPSB0ZXh0dXJl
OworCisgICAgcmV0dXJuIGJpbmRGcmFtZWJ1ZmZlclRvVGV4dHVyZSh0ZXh0dXJlLCB2aWV3cG9y
dFJlY3QpOworfQorCitib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVy
VG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9y
dFJlY3QpCit7CisgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5iaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX29mZnNjcmVlbkZyYW1lYnVm
ZmVySWQpKTsKKworICAgIHRleHR1cmUtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKG1fY29udGV4dC5n
ZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvci5nZXQoKSk7CiAKICNpZiAhZGVm
aW5lZCAoIE5ERUJVRyApCiAgICAgaWYgKG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9DT01QTEVURSkgewpAQCAtMTIzNiw3ICsxMzM0LDcgQEAgYm9vbCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJT
dXJmYWNlKQogICAgIH0KICNlbmRpZgogCi0gICAgc2V0RHJhd1ZpZXdwb3J0UmVjdChyZW5kZXJT
dXJmYWNlLT5jb250ZW50UmVjdCgpLCBmYWxzZSk7CisgICAgc2V0RHJhd1ZpZXdwb3J0UmVjdCh2
aWV3cG9ydFJlY3QsIGZhbHNlKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTI1Niw3ICsx
MzU0LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QoY29u
c3QgSW50UmVjdCYgc2Npc3NvclJlY3QpCiAgICAgLy8gb2YgdGhlIEdMIHNjaXNzb3IgaXMgdGhl
IGJvdHRvbSBvZiBvdXIgbGF5ZXIuCiAgICAgLy8gQnV0LCBpZiByZW5kZXJpbmcgdG8gb2Zmc2Ny
ZWVuIHRleHR1cmUsIHdlIHJldmVyc2Ugb3VyIHNlbnNlIG9mICd1cHNpZGUgZG93bicuCiAgICAg
aW50IHNjaXNzb3JZOwotICAgIGlmIChtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID09IG1fZGVmYXVs
dFJlbmRlclN1cmZhY2UgJiYgIXNldHRpbmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVuKQorICAgIGlm
IChpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKG1fZGVmYXVsdFJlbmRlclN1cmZhY2UpICYmICFzZXR0
aW5ncygpLmNvbXBvc2l0ZU9mZnNjcmVlbikKICAgICAgICAgc2Npc3NvclkgPSBtX2N1cnJlbnRS
ZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLmhlaWdodCgpIC0gKHNjaXNzb3JSZWN0Lm1heFko
KSAtIG1fY3VycmVudFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkueSgpKTsKICAgICBlbHNl
CiAgICAgICAgIHNjaXNzb3JZID0gc2Npc3NvclJlY3QueSgpIC0gY29udGVudFJlY3QueSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAppbmRleCBkNmFjNjgyMjkwNjkxMjdlM2Ix
MjBlOTM0NDljYmE5NWUxOTc1NjkxLi40NWVlYmNiMTYyOWRmMThhZjMzMmRjODVmYmE5OTViNWJm
ZmM3MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApAQCAtMTM4LDYgKzEz
OCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBDQ1ZpZGVvTGF5ZXJJbXBsOjpTdHJlYW1UZXh0dXJl
UHJvZ3JhbSogc3RyZWFtVGV4dHVyZUxheWVyUHJvZ3JhbSgpOwogCiAgICAgdm9pZCBnZXRGcmFt
ZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIGdl
dEZyYW1lYnVmZmVyVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIGRldmlj
ZVJlY3QpOwogCiAgICAgVGV4dHVyZU1hbmFnZXIqIHJlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLmdldCgpOyB9
CiAgICAgVGV4dHVyZUNvcGllciogdGV4dHVyZUNvcGllcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4
dHVyZUNvcGllci5nZXQoKTsgfQpAQCAtMTczLDYgKzE3NCw3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgdm9pZCBkcmF3UXVhZChjb25zdCBDQ0RyYXdRdWFkKiwgY29uc3QgRmxvYXRSZWN0
JiBzdXJmYWNlRGFtYWdlUmVjdCk7CiAgICAgdm9pZCBkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0
IENDRGVidWdCb3JkZXJEcmF3UXVhZCopOworICAgIHZvaWQgZHJhd0JhY2tncm91bmRGaWx0ZXJz
KGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3UmVuZGVyU3Vy
ZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdT
b2xpZENvbG9yUXVhZChjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCopOwogICAgIHZvaWQgZHJh
d1RleHR1cmVRdWFkKGNvbnN0IENDVGV4dHVyZURyYXdRdWFkKik7CkBAIC0xOTIsNyArMTk0LDEz
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldERyYXdWaWV3cG9ydFJlY3QoY29uc3QgSW50UmVj
dCYsIGJvb2wgZmxpcFkpOwogCisgICAgLy8gVGhlIGN1cnJlbnQgZHJhd2luZyB0YXJnZXQgaXMg
ZWl0aGVyIGEgUmVuZGVyU3VyZmFjZSBvciBNYW5hZ2VkVGV4dHVyZS4gVXNlIHRoZXNlIGZ1bmN0
aW9ucyB0byBzd2l0Y2ggdG8gYSBuZXcgZHJhd2luZyB0YXJnZXQuCiAgICAgYm9vbCB1c2VSZW5k
ZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSopOworICAgIGJvb2wgdXNlTWFuYWdlZFRleHR1cmUo
TWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpOworICAgIGJvb2wg
aXNDdXJyZW50UmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqKTsKKworICAgIGJvb2wgYmlu
ZEZyYW1lYnVmZmVyVG9UZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgdmll
d3BvcnRSZWN0KTsKKwogICAgIHZvaWQgY2xlYXJSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFj
ZSosIENDUmVuZGVyU3VyZmFjZSogcm9vdFJlbmRlclN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYg
c3VyZmFjZURhbWFnZVJlY3QpOwogCiAgICAgdm9pZCByZWxlYXNlUmVuZGVyU3VyZmFjZVRleHR1
cmVzKCk7CkBAIC0yMTcsNiArMjI1LDcgQEAgcHJpdmF0ZToKICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBtX3dpbmRvd01hdHJpeDsKIAogICAgIENDUmVuZGVyU3VyZmFjZSogbV9jdXJyZW50UmVu
ZGVyU3VyZmFjZTsKKyAgICBNYW5hZ2VkVGV4dHVyZSogbV9jdXJyZW50TWFuYWdlZFRleHR1cmU7
CiAgICAgdW5zaWduZWQgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkOwogCiAgICAgLy8gU3RvcmUg
dmFsdWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiBlYWNoIGxheWVyIHR5
cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKaW5kZXggODNhMjFkOWQ5NzA4NmNj
MmRkMmFhNGY4NmMyNWMyZmU2NWFlM2M0OC4uOWE4NGViYjRlMzg1NDNmMDNmNTFmN2JiZDc0MTQy
MzUzMmM3ZDk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTkzLDYg
KzkzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBmaWx0ZXJzKSB7IG1fZmlsdGVycyA9IGZpbHRlcnM7IH0KICAgICBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJiBmaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJzOyB9CiAKKyAgICB2
b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMp
IHsgbV9iYWNrZ3JvdW5kRmlsdGVycyA9IGZpbHRlcnM7IH0KKyAgICBjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZp
bHRlcnM7IH0KKwogICAgIGJvb2wgc2tpcHNEcmF3KCkgY29uc3QgeyByZXR1cm4gbV9za2lwc0Ry
YXc7IH0KICAgICB2b2lkIHNldFNraXBzRHJhdyhib29sIHNraXBzRHJhdykgeyBtX3NraXBzRHJh
dyA9IHNraXBzRHJhdzsgfQogCkBAIC0xMjIsNiArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fdGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7CiAgICAgYm9vbCBtX3NjcmVl
blNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKICAgICBGaWx0ZXJPcGVyYXRpb25zIG1fZmls
dGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7CiAgICAgSW50
UmVjdCBtX2NsaXBSZWN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBtX2xh
eWVyTGlzdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IDJhZmI5ZDhmZjc0MWY5MzM1
OTU2NmExNjlmZDQzNzI5NzAyYTc5NjkuLmJlZTlmMjYyMzZmYjhiMjA5NzAzZDNlZTJhMWRiMzdi
ZTgyZTBhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTQxMCw2ICs0MTAsMTUgQEAg
dm9pZCBDQ0xheWVySW1wbDo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKQogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKIH0KIAordm9p
ZCBDQ0xheWVySW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgYmFja2dyb3VuZEZpbHRlcnMpCit7CisgICAgaWYgKG1fYmFja2dyb3VuZEZpbHRlcnMgPT0g
YmFja2dyb3VuZEZpbHRlcnMpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2dyb3VuZEZp
bHRlcnMgPSBiYWNrZ3JvdW5kRmlsdGVyczsKKyAgICBtX2xheWVyUHJvcGVydHlDaGFuZ2VkID0g
dHJ1ZTsKK30KKwogdm9pZCBDQ0xheWVySW1wbDo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tz
VG9Cb3VuZHMpCiB7CiAgICAgaWYgKG1fbWFza3NUb0JvdW5kcyA9PSBtYXNrc1RvQm91bmRzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggNmNiNmRmMDNjMjllYWU2MDg3ZTBmNGE5ZWU5NDFjMzJi
OTk1MDg5Mi4uMDBkODQ1NGIxMDQ3MjgwZGVhMmNjZThkNTY4NmYwYzQ0NWM1NDEyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oCkBAIC0xMTMsNiArMTEzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAgICAgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyczsgfQogCisgICAgdm9pZCBz
ZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgYmFja2dyb3VuZEZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tncm91bmRGaWx0ZXJzOyB9CisKICAgICB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCk7CiAg
ICAgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrc1RvQm91bmRzOyB9
CiAKQEAgLTMzNyw2ICszNDAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RlYnVnTmFtZTsK
IAogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOworICAgIEZpbHRlck9wZXJhdGlvbnMg
bV9iYWNrZ3JvdW5kRmlsdGVyczsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fZHJhd1Ry
YW5zZm9ybTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3NjcmVlblNwYWNlVHJhbnNmb3Jt
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggOTUxN2U3
ZDI3NTBiZjBlNGJhZTk3Nzc0MTMwODU3NTgzNzU0NWM3ZC4uMWY2ZjY2NjBjZTg5NWM0ZjVjM2Y1
Mzk3NTZjZGY3MTZhY2ZlMjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RD
b21tb24uY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgc3RhdGljIGJvb2wgc3VidHJlZVNob3VsZFJl
bmRlclRvU2VwYXJhdGVTdXJmYWNlKExheWVyVHlwZSogbGF5ZXIsIGJvb2wgYXhpc0FsaWcKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiB0aGUgbGF5ZXIgdXNlcyBhIENTUyBmaWx0
ZXIuCi0gICAgaWYgKCFsYXllci0+ZmlsdGVycygpLmlzRW1wdHkoKSkKKyAgICBpZiAoIWxheWVy
LT5maWx0ZXJzKCkuaXNFbXB0eSgpIHx8ICFsYXllci0+YmFja2dyb3VuZEZpbHRlcnMoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgdGhlIGxheWVyIGZsYXR0
ZW5zIGl0cyBzdWJ0cmVlIChpLmUuIHRoZSBsYXllciBkb2Vzbid0IHByZXNlcnZlLTNkKSwgYnV0
IGl0IGlzCkBAIC00MDQsNiArNDA0LDggQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKICAgICAg
ICAgICAgIG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyA9IHJlbmRlclN1cmZhY2U7CiAg
ICAgICAgIHJlbmRlclN1cmZhY2UtPnNldE5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyhu
ZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMpOwogCisgICAgICAgIHJlbmRlclN1cmZhY2Ut
PnNldEJhY2tncm91bmRGaWx0ZXJzKGxheWVyLT5iYWNrZ3JvdW5kRmlsdGVycygpKTsKKwogICAg
ICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChsYXllcik7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oY29tYmluZWRUcmFuc2Zvcm0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggYzQ3OTNhNWIyNGM2YjE5NjA0MmVmMGYx
ZGI2NDdhMjllZDNiODAxOC4uYzhiOTFjZmM2ZDdkNTQ0ZTljZDFmZDQ1YTc0ZjVhODI2NjAyNTkz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCkBAIC03MSw3ICs3MSw3IEBAIEZs
b2F0UmVjdCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdAogICAg
IEZsb2F0UmVjdCBsb2NhbENvbnRlbnRSZWN0KC0wLjUgKiBtX2NvbnRlbnRSZWN0LndpZHRoKCks
IC0wLjUgKiBtX2NvbnRlbnRSZWN0LmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSk7CiAg
ICAgRmxvYXRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QgPSBtX2RyYXdUcmFuc2Zvcm0ubWFwUmVj
dChsb2NhbENvbnRlbnRSZWN0KTsKLSAgICBpZiAobV9vd25pbmdMYXllci0+cmVwbGljYUxheWVy
KCkpCisgICAgaWYgKGhhc1JlcGxpY2EoKSkKICAgICAgICAgZHJhd2FibGVDb250ZW50UmVjdC51
bml0ZShtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLm1hcFJlY3QobG9jYWxDb250ZW50UmVjdCkpOwog
CiAgICAgcmV0dXJuIGRyYXdhYmxlQ29udGVudFJlY3Q7CkBAIC0xMDQsNiArMTA0LDExMCBAQCB2
b2lkIENDUmVuZGVyU3VyZmFjZTo6cmVsZWFzZUNvbnRlbnRzVGV4dHVyZSgpCiAgICAgbV9jb250
ZW50c1RleHR1cmUtPnVucmVzZXJ2ZSgpOwogfQogCitib29sIENDUmVuZGVyU3VyZmFjZTo6cHJl
cGFyZUJhY2tncm91bmRUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJl
cikKK3sKKyAgICBJbnRTaXplIHJlcXVpcmVkU2l6ZShtX2NvbnRlbnRSZWN0LnNpemUoKSk7Cisg
ICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVy
U3VyZmFjZVRleHR1cmVNYW5hZ2VyKCk7CisKKyAgICBpZiAoIW1fYmFja2dyb3VuZFRleHR1cmUp
CisgICAgICAgIG1fYmFja2dyb3VuZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRl
eHR1cmVNYW5hZ2VyKTsKKworICAgIGlmIChtX2JhY2tncm91bmRUZXh0dXJlLT5pc1Jlc2VydmVk
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFtX2JhY2tncm91bmRUZXh0dXJl
LT5yZXNlcnZlKHJlcXVpcmVkU2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDQ1JlbmRlclN1
cmZhY2U6OnJlbGVhc2VCYWNrZ3JvdW5kVGV4dHVyZSgpCit7CisgICAgaWYgKCFtX2JhY2tncm91
bmRUZXh0dXJlKQorICAgICAgICByZXR1cm47CisgICAgbV9iYWNrZ3JvdW5kVGV4dHVyZS0+dW5y
ZXNlcnZlKCk7Cit9CisKK1RyYW5zZm9ybWF0aW9uTWF0cml4IENDUmVuZGVyU3VyZmFjZTo6Y29t
cHV0ZURldmljZVRyYW5zZm9ybShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdAoreworICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlclRyYW5zZm9ybSA9IGRyYXdUcmFuc2Zvcm07Cisg
ICAgLy8gQXBwbHkgYSBzY2FsaW5nIGZhY3RvciB0byBzaXplIHRoZSBxdWFkIGZyb20gMXgxIHRv
IGl0cyBpbnRlbmRlZCBzaXplLgorICAgIHJlbmRlclRyYW5zZm9ybS5zY2FsZTNkKG1fY29udGVu
dFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSwgMSk7CisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggZGV2aWNlVHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgobGF5ZXJS
ZW5kZXJlci0+d2luZG93TWF0cml4KCkgKiBsYXllclJlbmRlcmVyLT5wcm9qZWN0aW9uTWF0cml4
KCkgKiByZW5kZXJUcmFuc2Zvcm0pLnRvMmRUcmFuc2Zvcm0oKTsKKyAgICByZXR1cm4gZGV2aWNl
VHJhbnNmb3JtOworfQorCitJbnRSZWN0IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZURldmljZUJv
dW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNvbnN0Cit7CisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggY29udGVudHNEZXZpY2VUcmFuc2Zvcm0gPSBjb21wdXRlRGV2aWNlVHJhbnNm
b3JtKGxheWVyUmVuZGVyZXIsIGRyYXdUcmFuc2Zvcm0pOworCisgICAgLy8gQ2FuIG9ubHkgZHJh
dyBzdXJmYWNlIGlmIGRldmljZSBtYXRyaXggaXMgaW52ZXJ0aWJsZS4KKyAgICBpZiAoIWNvbnRl
bnRzRGV2aWNlVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQorICAgICAgICByZXR1cm4gSW50UmVj
dCgpOworCisgICAgRmxvYXRRdWFkIGRldmljZVF1YWQgPSBjb250ZW50c0RldmljZVRyYW5zZm9y
bS5tYXBRdWFkKGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21ldHJ5UXVhZCgpKTsKKyAgICByZXR1
cm4gZW5jbG9zaW5nSW50UmVjdChkZXZpY2VRdWFkLmJvdW5kaW5nQm94KCkpOworfQorCitJbnRS
ZWN0IENDUmVuZGVyU3VyZmFjZTo6Y29tcHV0ZVJlYWRiYWNrRGV2aWNlQm91bmRpbmdCb3goTGF5
ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZHJhd1RyYW5zZm9ybSkgY29uc3QKK3sKKyAgICBJbnRSZWN0IGRldmljZVJlY3QgPSBj
b21wdXRlRGV2aWNlQm91bmRpbmdCb3gobGF5ZXJSZW5kZXJlciwgZHJhd1RyYW5zZm9ybSk7CisK
KyAgICBpZiAobV9iYWNrZ3JvdW5kRmlsdGVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBk
ZXZpY2VSZWN0OworCisgICAgaW50IHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdDsKKyAgICBtX2Jh
Y2tncm91bmRGaWx0ZXJzLmdldE91dHNldHModG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKKyAg
ICBkZXZpY2VSZWN0Lm1vdmUoLWxlZnQsIC10b3ApOworICAgIGRldmljZVJlY3QuZXhwYW5kKGxl
ZnQgKyByaWdodCwgdG9wICsgYm90dG9tKTsKKworICAgIHJldHVybiBkZXZpY2VSZWN0OworfQor
CitJbnRSZWN0IENDUmVuZGVyU3VyZmFjZTo6cmVhZGJhY2tEZXZpY2VDb250ZW50UmVjdChMYXll
clJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdAoreworICAgIHJldHVybiBjb21wdXRlUmVhZGJhY2tE
ZXZpY2VCb3VuZGluZ0JveChsYXllclJlbmRlcmVyLCBkcmF3VHJhbnNmb3JtKTsKK30KKworc3Rh
dGljIHZvaWQgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSog
bGF5ZXJSZW5kZXJlciwgaW50IHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCkKK3sKKyAgICBjb25zdCBDQ1JlbmRl
clN1cmZhY2U6OlByb2dyYW0qIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNl
UHJvZ3JhbSgpOworCisgICAgR0xDKGxheWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5k
ZXJlci0+Y29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
MCkpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNv
bnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1
cmVJZCkpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXIt
PmNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkxJTkVBUikpOworICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVy
ZXItPmNvbnRleHQoKS0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkxJTkVBUikpOworCisgICAgR0xDKGxheWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJS
ZW5kZXJlci0+Y29udGV4dCgpLT51c2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW0oKSkpOworICAg
IEdMQyhsYXllclJlbmRlcmVyLT5jb250ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+
dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDAp
KTsKKyAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGRyYXdNYXRyaXgsIGJvdW5k
cy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCksIDEsIGxheWVyUmVuZGVyZXItPnNoYXJlZEdlb21l
dHJ5UXVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+
dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuYWxwaGFMb2NhdGlvbigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpOworfQorCit2b2lkIENDUmVu
ZGVyU3VyZmFjZTo6Y29weURldmljZVRvQmFja2dyb3VuZFRleHR1cmUoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBsYXllclJlbmRlcmVyLCBpbnQgZGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgY29u
c3QgSW50UmVjdCYgZGV2aWNlVGV4dHVyZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkZXZpY2VUcmFuc2Zvcm0pIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2JhY2tncm91bmRGaWx0
ZXJzLmlzRW1wdHkoKSk7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VUb1N1cmZh
Y2VUcmFuc2Zvcm07CisgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShtX2Nv
bnRlbnRSZWN0LndpZHRoKCkgLyAyLjAsIG1fY29udGVudFJlY3QuaGVpZ2h0KCkgLyAyLjApOwor
ICAgIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybS5zY2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgo
KSwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSwgMSk7CisgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNm
b3JtICo9IGRldmljZVRyYW5zZm9ybS5pbnZlcnNlKCk7CisgICAgZGV2aWNlVG9TdXJmYWNlVHJh
bnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VUZXh0dXJlUmVjdC53aWR0aCgpIC8gMi4wLCBkZXZpY2VU
ZXh0dXJlUmVjdC5oZWlnaHQoKSAvIDIuMCk7CisgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3Jt
LnRyYW5zbGF0ZShkZXZpY2VUZXh0dXJlUmVjdC54KCksIGRldmljZVRleHR1cmVSZWN0LnkoKSk7
CisKKyAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIobGF5ZXJSZW5kZXJlciwgZGV2aWNlQmFj
a2dyb3VuZFRleHR1cmVJZCwgZGV2aWNlVGV4dHVyZVJlY3Quc2l6ZSgpLCBkZXZpY2VUb1N1cmZh
Y2VUcmFuc2Zvcm0pOworfQorCitpbmxpbmUgc3RhdGljIGludCBnZXRTa0JpdG1hcFRleHR1cmVJ
ZChjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBpbnQgZmFsbGJhY2spCit7CisgICAgaWYgKCFiaXRt
YXAuZ2V0VGV4dHVyZSgpKQorICAgICAgICByZXR1cm4gZmFsbGJhY2s7CisgICAgR3JUZXh0dXJl
KiB0ZXh0dXJlID0gcmVpbnRlcnByZXRfY2FzdDxHclRleHR1cmUqPihiaXRtYXAuZ2V0VGV4dHVy
ZSgpKTsKKyAgICByZXR1cm4gdGV4dHVyZS0+Z2V0VGV4dHVyZUhhbmRsZSgpOworfQorCiB2b2lk
IENDUmVuZGVyU3VyZmFjZTo6c2V0U2Npc3NvclJlY3QoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBs
YXllclJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KSBjb25zdAog
ewogICAgIGlmIChtX293bmluZ0xheWVyLT5wYXJlbnQoKSAmJiBtX293bmluZ0xheWVyLT5wYXJl
bnQoKS0+dXNlc0xheWVyQ2xpcHBpbmcoKSAmJiBsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRpZXMo
KS51c2luZ1BhcnRpYWxTd2FwKSB7CkBAIC0xMjQsOCArMjI4LDExIEBAIHZvaWQgQ0NSZW5kZXJT
dXJmYWNlOjpkcmF3Q29udGVudHMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVy
KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogQ2FjaGUgdGhpcyB2YWx1ZSBzbyB0
aGF0IHdlIGRvbid0IGhhdmUgdG8gZG8gaXQgZm9yIGJvdGggdGhlIHN1cmZhY2UgYW5kIGl0cyBy
ZXBsaWNhLgotICAgIFNrQml0bWFwIGZpbHRlckJpdG1hcCA9IGFwcGx5RmlsdGVycyhsYXllclJl
bmRlcmVyKTsKLSAgICBkcmF3TGF5ZXIobGF5ZXJSZW5kZXJlciwgbV9tYXNrTGF5ZXIsIG1fZHJh
d1RyYW5zZm9ybSwgZmlsdGVyQml0bWFwKTsKKyAgICAvLyBBcHBseSBmaWx0ZXJzIHRvIHRoZSBj
b250ZW50cyB0ZXh0dXJlLgorICAgIFNrQml0bWFwIGZpbHRlckJpdG1hcCA9IGFwcGx5RmlsdGVy
cyhsYXllclJlbmRlcmVyLCBtX2ZpbHRlcnMsIG1fY29udGVudHNUZXh0dXJlLmdldCgpKTsKKwor
ICAgIGludCBjb250ZW50c1RleHR1cmVJZCA9IGdldFNrQml0bWFwVGV4dHVyZUlkKGZpbHRlckJp
dG1hcCwgbV9jb250ZW50c1RleHR1cmUtPnRleHR1cmVJZCgpKTsKKyAgICBkcmF3TGF5ZXIobGF5
ZXJSZW5kZXJlciwgbV9tYXNrTGF5ZXIsIG1fZHJhd1RyYW5zZm9ybSwgY29udGVudHNUZXh0dXJl
SWQpOwogfQogCiB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1JlcGxpY2EoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiBsYXllclJlbmRlcmVyKQpAQCAtMTM0LDcgKzI0MSw5IEBAIHZvaWQgQ0NSZW5k
ZXJTdXJmYWNlOjpkcmF3UmVwbGljYShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIpCiAgICAgaWYgKCFoYXNSZXBsaWNhKCkgfHwgbV9za2lwc0RyYXcgfHwgIW1fY29udGVudHNU
ZXh0dXJlKQogICAgICAgICByZXR1cm47CiAKLSAgICBTa0JpdG1hcCBmaWx0ZXJCaXRtYXAgPSBh
cHBseUZpbHRlcnMobGF5ZXJSZW5kZXJlcik7CisgICAgLy8gQXBwbHkgZmlsdGVycyB0byB0aGUg
Y29udGVudHMgdGV4dHVyZS4KKyAgICBTa0JpdG1hcCBmaWx0ZXJCaXRtYXAgPSBhcHBseUZpbHRl
cnMobGF5ZXJSZW5kZXJlciwgbV9maWx0ZXJzLCBtX2NvbnRlbnRzVGV4dHVyZS5nZXQoKSk7CisK
ICAgICAvLyBGSVhNRTogQnkgdXNpbmcgdGhlIHNhbWUgUmVuZGVyU3VyZmFjZSBmb3IgYm90aCB0
aGUgY29udGVudCBhbmQgaXRzIHJlZmxlY3Rpb24sCiAgICAgLy8gaXQncyBjdXJyZW50bHkgbm90
IHBvc3NpYmxlIHRvIGFwcGx5IGEgc2VwYXJhdGUgbWFzayB0byB0aGUgcmVmbGVjdGlvbiBsYXll
cgogICAgIC8vIG9yIGNvcnJlY3RseSBoYW5kbGUgb3BhY2l0eSBpbiByZWZsZWN0aW9ucyAob3Bh
Y2l0eSBtdXN0IGJlIGFwcGxpZWQgYWZ0ZXIgZHJhd2luZwpAQCAtMTQ1LDIxICsyNTQsMjIgQEAg
dm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdSZXBsaWNhKExheWVyUmVuZGVyZXJDaHJvbWl1bSog
bGF5ZXJSZW5kZXJlcikKICAgICBpZiAoIW1fbWFza0xheWVyICYmIG1fb3duaW5nTGF5ZXItPnJl
cGxpY2FMYXllcigpKQogICAgICAgICByZXBsaWNhTWFza0xheWVyID0gbV9vd25pbmdMYXllci0+
cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpOwogCi0gICAgZHJhd0xheWVyKGxheWVyUmVuZGVy
ZXIsIHJlcGxpY2FNYXNrTGF5ZXIsIG1fcmVwbGljYURyYXdUcmFuc2Zvcm0sIGZpbHRlckJpdG1h
cCk7CisgICAgaW50IGNvbnRlbnRzVGV4dHVyZUlkID0gZ2V0U2tCaXRtYXBUZXh0dXJlSWQoZmls
dGVyQml0bWFwLCBtX2NvbnRlbnRzVGV4dHVyZS0+dGV4dHVyZUlkKCkpOworICAgIGRyYXdMYXll
cihsYXllclJlbmRlcmVyLCByZXBsaWNhTWFza0xheWVyLCBtX3JlcGxpY2FEcmF3VHJhbnNmb3Jt
LCBjb250ZW50c1RleHR1cmVJZCk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3TGF5
ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySW1wbCogbWFz
a0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3Qg
U2tCaXRtYXAmIGZpbHRlckJpdG1hcCkKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXIo
TGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySW1wbCogbWFza0xh
eWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgaW50IGNvbnRl
bnRzVGV4dHVyZUlkKQogewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlck1hdHJpeCA9
IGRyYXdUcmFuc2Zvcm07Ci0gICAgLy8gQXBwbHkgYSBzY2FsaW5nIGZhY3RvciB0byBzaXplIHRo
ZSBxdWFkIGZyb20gMXgxIHRvIGl0cyBpbnRlbmRlZCBzaXplLgotICAgIHJlbmRlck1hdHJpeC5z
Y2FsZTNkKG1fY29udGVudFJlY3Qud2lkdGgoKSwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSwgMSk7
Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VNYXRyaXggPSBUcmFuc2Zvcm1hdGlv
bk1hdHJpeChsYXllclJlbmRlcmVyLT53aW5kb3dNYXRyaXgoKSAqIGxheWVyUmVuZGVyZXItPnBy
b2plY3Rpb25NYXRyaXgoKSAqIHJlbmRlck1hdHJpeCkudG8yZFRyYW5zZm9ybSgpOworICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGRldmljZU1hdHJpeCA9IGNvbXB1dGVEZXZpY2VUcmFuc2Zvcm0o
bGF5ZXJSZW5kZXJlciwgZHJhd1RyYW5zZm9ybSk7CiAKICAgICAvLyBDYW4gb25seSBkcmF3IHN1
cmZhY2UgaWYgZGV2aWNlIG1hdHJpeCBpcyBpbnZlcnRpYmxlLgogICAgIGlmICghZGV2aWNlTWF0
cml4LmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBEcmF3IHRoZSBi
YWNrZ3JvdW5kIHRleHR1cmUgaWYgdGhlcmUgaXMgb25lLgorICAgIGlmIChtX2JhY2tncm91bmRU
ZXh0dXJlICYmIG1fYmFja2dyb3VuZFRleHR1cmUtPmlzUmVzZXJ2ZWQoKSkKKyAgICAgICAgY29w
eVRleHR1cmVUb0ZyYW1lYnVmZmVyKGxheWVyUmVuZGVyZXIsIG1fYmFja2dyb3VuZFRleHR1cmUt
PnRleHR1cmVJZCgpLCBtX2NvbnRlbnRSZWN0LnNpemUoKSwgZHJhd1RyYW5zZm9ybSk7CisKICAg
ICBGbG9hdFF1YWQgcXVhZCA9IGRldmljZU1hdHJpeC5tYXBRdWFkKGxheWVyUmVuZGVyZXItPnNo
YXJlZEdlb21ldHJ5UXVhZCgpKTsKICAgICBDQ0xheWVyUXVhZCBkZXZpY2VSZWN0ID0gQ0NMYXll
clF1YWQoRmxvYXRRdWFkKHF1YWQuYm91bmRpbmdCb3goKSkpOwogICAgIENDTGF5ZXJRdWFkIGxh
eWVyUXVhZCA9IENDTGF5ZXJRdWFkKHF1YWQpOwpAQCAtMTc3LDI3ICsyODcsMjkgQEAgdm9pZCBD
Q1JlbmRlclN1cmZhY2U6OmRyYXdMYXllcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVu
ZGVyZXIsIENDTGF5ZXJJbXAKICAgICAgICAgaWYgKCFtYXNrTGF5ZXItPmJvdW5kcygpLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHVzZU1hc2sgPSB0cnVlOwogCisgICAgLy8gRklYTUU6IHBhc3Mg
aW4gYmFja2dyb3VuZFRleHR1cmVJZCBhbmQgYmxlbmQgdGhlIGJhY2tncm91bmQgaW4gd2l0aCB0
aGlzIGRyYXcgaW5zdGVhZCBvZiBoYXZpbmcgYSBzZXBhcmF0ZSBkcmF3QmFja2dyb3VuZCgpIHBh
c3MuCisKICAgICBpZiAodXNlTWFzaykgewogICAgICAgICBpZiAodXNlQUEpIHsKICAgICAgICAg
ICAgIGNvbnN0IE1hc2tQcm9ncmFtQUEqIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT5yZW5kZXJT
dXJmYWNlTWFza1Byb2dyYW1BQSgpOwotICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5k
ZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3Qs
IGxheWVyUXVhZCwgcHJvZ3JhbSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5tYXNrU2FtcGxl
ckxvY2F0aW9uKCksIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnBvaW50TG9jYXRpb24oKSwgcHJv
Z3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24oKSwgZmlsdGVyQml0bWFwKTsKKyAg
ICAgICAgICAgIGRyYXdTdXJmYWNlKGxheWVyUmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5z
Zm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIGNvbnRlbnRzVGV4dHVy
ZUlkLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRp
b24oKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5m
cmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGNvbnN0IE1hc2tQcm9ncmFtKiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVy
U3VyZmFjZU1hc2tQcm9ncmFtKCk7Ci0gICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRl
cmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwg
bGF5ZXJRdWFkLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVy
TG9jYXRpb24oKSwgLTEsIC0xLCBmaWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZh
Y2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgs
IGRldmljZVJlY3QsIGxheWVyUXVhZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIHByb2dy
YW0tPmZyYWdtZW50U2hhZGVyKCkubWFza1NhbXBsZXJMb2NhdGlvbigpLCAtMSwgLTEpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHVzZUFBKSB7CiAgICAgICAgICAgICBj
b25zdCBQcm9ncmFtQUEqIHByb2dyYW0gPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlUHJv
Z3JhbUFBKCk7Ci0gICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5
ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBw
cm9ncmFtLCAtMSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwcm9n
cmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigpLCBmaWx0ZXJCaXRtYXApOworICAg
ICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNm
b3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgY29udGVudHNUZXh0dXJl
SWQsIHByb2dyYW0sIC0xLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5wb2ludExvY2F0aW9uKCks
IHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCkpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgY29uc3QgUHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIt
PnJlbmRlclN1cmZhY2VQcm9ncmFtKCk7Ci0gICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJl
bmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVj
dCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCAtMSwgLTEsIC0xLCBmaWx0ZXJCaXRtYXApOworICAgICAg
ICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3Jt
LCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwgY29udGVudHNUZXh0dXJlSWQs
IHByb2dyYW0sIC0xLCAtMSwgLTEpOwogICAgICAgICB9CiAgICAgfQogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgVD4KLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZShMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZGV2aWNlVHJhbnNmb3JtLCBjb25zdCBDQ0xheWVyUXVhZCYgZGV2aWNlUmVjdCwgY29u
c3QgQ0NMYXllclF1YWQmIGxheWVyUXVhZCwgY29uc3QgVCogcHJvZ3JhbSwgaW50IHNoYWRlck1h
c2tTYW1wbGVyTG9jYXRpb24sIGludCBzaGFkZXJRdWFkTG9jYXRpb24sIGludCBzaGFkZXJFZGdl
TG9jYXRpb24sIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRtYXApCit2b2lkIENDUmVuZGVyU3Vy
ZmFjZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBD
Q0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1Ry
YW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29u
c3QgQ0NMYXllclF1YWQmIGRldmljZVJlY3QsIGNvbnN0IENDTGF5ZXJRdWFkJiBsYXllclF1YWQs
IGludCBjb250ZW50c1RleHR1cmVJZCwgY29uc3QgVCogcHJvZ3JhbSwgaW50IHNoYWRlck1hc2tT
YW1wbGVyTG9jYXRpb24sIGludCBzaGFkZXJRdWFkTG9jYXRpb24sIGludCBzaGFkZXJFZGdlTG9j
YXRpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCA9IGxheWVyUmVuZGVy
ZXItPmNvbnRleHQoKTsKIApAQCAtMjA2LDExICszMTgsNyBAQCB2b2lkIENDUmVuZGVyU3VyZmFj
ZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xh
eWVySQogCiAgICAgR0xDKGNvbnRleHQzRCwgY29udGV4dDNELT5hY3RpdmVUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFMCkpOwogICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+
dW5pZm9ybTFpKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuc2FtcGxlckxvY2F0aW9uKCksIDAp
KTsKLSAgICBpZiAoZmlsdGVyQml0bWFwLmdldFRleHR1cmUoKSkgewotICAgICAgICBHclRleHR1
cmUqIHRleHR1cmUgPSByZWludGVycHJldF9jYXN0PEdyVGV4dHVyZSo+KGZpbHRlckJpdG1hcC5n
ZXRUZXh0dXJlKCkpOwotICAgICAgICBjb250ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlLT5nZXRUZXh0dXJlSGFuZGxlKCkpOwotICAgIH0g
ZWxzZQotICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dDNELCBs
YXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBjb250
ZXh0M0QtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBjb250ZW50
c1RleHR1cmVJZCk7CiAKICAgICBpZiAoc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiAhPSAtMSkg
ewogICAgICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkUxKSk7CkBAIC0yMzMsOSArMzQxLDkgQEAgdm9pZCBDQ1JlbmRl
clN1cmZhY2U6OmRyYXdTdXJmYWNlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJl
ciwgQ0NMYXllckkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0t
PnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkuYWxwaGFMb2NhdGlvbigpLCBzaGFkZXJRdWFkTG9jYXRpb24pOwogfQogCi1Ta0JpdG1hcCBD
Q1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVy
UmVuZGVyZXIpCitTa0JpdG1hcCBDQ1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVycyhMYXllclJl
bmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMsIE1hbmFnZWRUZXh0dXJlKiBzb3VyY2VUZXh0dXJlKQogewotICAgIGlmICghbV9jb250
ZW50c1RleHR1cmUgfHwgIW1fZmlsdGVycy5zaXplKCkpCisgICAgaWYgKGZpbHRlcnMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gU2tCaXRtYXAoKTsKIAogICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gZmlsdGVyQ29udGV4dCA9IENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSA/IFNoYXJl
ZEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGb3JJbXBsVGhyZWFkKCkgOiBTaGFyZWRHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0KCk7CkBAIC0yNDQsNyArMzUyLDcgQEAgU2tCaXRtYXAgQ0NSZW5kZXJTdXJm
YWNlOjphcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQog
CiAgICAgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5mbHVzaCgpOwogCi0gICAgcmV0dXJuIEND
UmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KG1fZmlsdGVycywgbV9jb250ZW50c1RleHR1cmUt
PnRleHR1cmVJZCgpLCBtX2NvbnRlbnRSZWN0LnNpemUoKSwgZmlsdGVyQ29udGV4dC5nZXQoKSk7
CisgICAgcmV0dXJuIENDUmVuZGVyU3VyZmFjZUZpbHRlcnM6OmFwcGx5KGZpbHRlcnMsIHNvdXJj
ZVRleHR1cmUtPnRleHR1cmVJZCgpLCBzb3VyY2VUZXh0dXJlLT5zaXplKCksIGZpbHRlckNvbnRl
eHQuZ2V0KCkpOwogfQogCiBTdHJpbmcgQ0NSZW5kZXJTdXJmYWNlOjpuYW1lKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKaW5kZXggNDJjZGEzMjZjMDM4ZmNiZDQ4ZmExOGE2ZWY4
MGRmZTk0NGQ4YjExNy4uZjQxMzJlMjBjZjhmNTQzM2U0YWQyNGRmNmJmOTA2YjVkODFlNTAxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKQEAgLTU3LDExICs1NywxOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBwcmVwYXJlQ29udGVudHNUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSop
OwogICAgIHZvaWQgcmVsZWFzZUNvbnRlbnRzVGV4dHVyZSgpOwogCisgICAgYm9vbCBwcmVwYXJl
QmFja2dyb3VuZFRleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisgICAgdm9pZCByZWxl
YXNlQmFja2dyb3VuZFRleHR1cmUoKTsKKwogICAgIHZvaWQgc2V0U2Npc3NvclJlY3QoTGF5ZXJS
ZW5kZXJlckNocm9taXVtKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCkgY29u
c3Q7CiAKICAgICB2b2lkIGRyYXdDb250ZW50cyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKICAg
ICB2b2lkIGRyYXdSZXBsaWNhKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwogCisgICAgLy8gVGFr
ZXMgYSB0ZXh0dXJlIHdpdGggcGl4ZWxzIGluIGRldmljZSBzcGFjZSwgYW5kIGEgdHJhbnNmb3Jt
IGZyb20gY29udGVudCBzcGFjZSB0byB0aGUgZGV2aWNlLiBDb3BpZXMgdGhlIGRldmljZS1zcGFj
ZSB0ZXh0dXJlIGJhY2sgaW50bworICAgIC8vIGNvbnRlbnQgc3BhY2UgZm9yIHRoZSBzdXJmYWNl
LCBzdG9yaW5nIHRoZSByZXN1bHQgaW4gdGhlIGJhY2tncm91bmRUZXh0dXJlKCkuIFRoZSBzdXJm
YWNlJ3MgYmFja2dyb3VuZFRleHR1cmUoKSBtdXN0IGJlIHRoZSBhY3RpdmUgZHJhd2luZyB0YXJn
ZXQuCisgICAgdm9pZCBjb3B5RGV2aWNlVG9CYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVy
Q2hyb21pdW0qLCBpbnQgZGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYg
ZGV2aWNlVGV4dHVyZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFu
c2Zvcm0pIGNvbnN0OworCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB2b2lkIGR1bXBT
dXJmYWNlKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdDsKIApAQCAtNjksMTMgKzc2LDIx
IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgdGhlIHJlY3QgdGhhdCBlbmNsb3NlcyB0aGUg
UmVuZGVyU3VyZmFjZSBpbmNsdWRpbmcgYW55IHJlZmxlY3Rpb24uCiAgICAgRmxvYXRSZWN0IGRy
YXdhYmxlQ29udGVudFJlY3QoKSBjb25zdDsKKyAgICAvLyBSZXR1cm5zIHRoZSByZWN0IHRoYXQg
ZW5jbG9zZXMgdGhlIHBpeGVscyB0aGF0IG1heSBhZmZlY3QgdGhlIHBpeGVsIHZhbHVlcyBpbiB0
aGlzIHN1cmZhY2UgdGhyb3VnaCBiYWNrZ3JvdW5kIGZpbHRlcnMuCisgICAgSW50UmVjdCByZWFk
YmFja0RldmljZUNvbnRlbnRSZWN0KExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKKworICAgIC8vIEdpdmVzIHRo
ZSB0cmFuc2Zvcm0gZnJvbSB0aGUgc3VyZmFjZSBjb250ZW50IHNwYWNlLCB3aXRoIG9yaWdpbiBp
biB0aGUgdG9wIGxlZnQsIHRvIHRoZSBjdXJyZW50IHRhcmdldCBkZXZpY2Ugc3BhY2UsIHdpdGgg
b3JpZ2luIGluIHRoZSB0b3AgbGVmdC4KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb21wdXRl
RGV2aWNlVHJhbnNmb3JtKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKIAogICAgIGZsb2F0IGRyYXdPcGFjaXR5
KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3T3BhY2l0eTsgfQogICAgIHZvaWQgc2V0RHJhd09wYWNp
dHkoZmxvYXQgb3BhY2l0eSkgeyBtX2RyYXdPcGFjaXR5ID0gb3BhY2l0eTsgfQogCiAgICAgdm9p
ZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9maWx0ZXJz
ID0gZmlsdGVyczsgfQogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25z
dCB7IHJldHVybiBtX2ZpbHRlcnM7IH0KLSAgICBTa0JpdG1hcCBhcHBseUZpbHRlcnMoTGF5ZXJS
ZW5kZXJlckNocm9taXVtKik7CisgICAgU2tCaXRtYXAgYXBwbHlGaWx0ZXJzKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBNYW5hZ2VkVGV4dHVyZSogc291
cmNlVGV4dHVyZSk7CisKKyAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9iYWNrZ3JvdW5kRmlsdGVycyA9IGZpbHRlcnM7IH0K
KyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KIAogICAgIHZvaWQgc2V0TmVhcmVzdEFuY2Vz
dG9yVGhhdE1vdmVzUGl4ZWxzKENDUmVuZGVyU3VyZmFjZSogc3VyZmFjZSkgeyBtX25lYXJlc3RB
bmNlc3RvclRoYXRNb3Zlc1BpeGVscyA9IHN1cmZhY2U7IH0KICAgICBjb25zdCBDQ1JlbmRlclN1
cmZhY2UqIG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIG1f
bmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzOyB9CkBAIC0xMjcsNiArMTQyLDcgQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgUHJvZ3JhbUJpbmRpbmc8VmVydGV4U2hhZGVyUXVhZCwgRnJhZ21l
bnRTaGFkZXJSR0JBVGV4QWxwaGFNYXNrQUE+IE1hc2tQcm9ncmFtQUE7CiAKICAgICBNYW5hZ2Vk
VGV4dHVyZSogY29udGVudHNUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c1RleHR1
cmUuZ2V0KCk7IH0KKyAgICBNYW5hZ2VkVGV4dHVyZSogYmFja2dyb3VuZFRleHR1cmUoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tncm91bmRUZXh0dXJlLmdldCgpOyB9CiAKICAgICBpbnQgb3duaW5n
TGF5ZXJJZCgpIGNvbnN0OwogCkBAIC0xNDIsOSArMTU4LDEyIEBAIHB1YmxpYzoKICAgICBQYXNz
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjcmVhdGVSZXBsaWNhU2hhcmVkUXVhZFN0YXRlKCkg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiwgQ0NMYXllckltcGwqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFNr
Qml0bWFwJiBmaWx0ZXJCaXRtYXApOworICAgIEludFJlY3QgY29tcHV0ZURldmljZUJvdW5kaW5n
Qm94KExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBk
cmF3VHJhbnNmb3JtKSBjb25zdDsKKyAgICBJbnRSZWN0IGNvbXB1dGVSZWFkYmFja0RldmljZUJv
dW5kaW5nQm94KExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdDsKKworICAgIHZvaWQgZHJhd0xheWVyKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSosIENDTGF5ZXJJbXBsKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBpbnQgY29udGVudHNUZXh0dXJlSWQpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHZv
aWQgZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwqLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXllclF1YWQmIGRldmljZVJlY3Qs
IGNvbnN0IENDTGF5ZXJRdWFkJiwgY29uc3QgVCogcHJvZ3JhbSwgaW50IHNoYWRlck1hc2tTYW1w
bGVyTG9jYXRpb24sIGludCBzaGFkZXJRdWFkTG9jYXRpb24sIGludCBzaGFkZXJFZGdlTG9jYXRp
b24sIGNvbnN0IFNrQml0bWFwJiBmaWx0ZXJCaXRtYXApOworICAgIHZvaWQgZHJhd1N1cmZhY2Uo
TGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwqLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmlj
ZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXllclF1YWQmIGRldmljZVJlY3QsIGNvbnN0IENDTGF5ZXJR
dWFkJiwgaW50IGNvbnRlbnRzVGV4dHVyZUlkLCBjb25zdCBUKiBwcm9ncmFtLCBpbnQgc2hhZGVy
TWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRlclF1YWRMb2NhdGlvbiwgaW50IHNoYWRlckVk
Z2VMb2NhdGlvbik7CiAKICAgICBDQ0xheWVySW1wbCogbV9vd25pbmdMYXllcjsKICAgICBDQ0xh
eWVySW1wbCogbV9tYXNrTGF5ZXI7CkBAIC0xNTQsNiArMTczLDggQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc3VyZmFjZVByb3BlcnR5Q2hhbmdlZDsKIAogICAgIE93blB0cjxNYW5hZ2VkVGV4dHVy
ZT4gbV9jb250ZW50c1RleHR1cmU7CisgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX2JhY2tn
cm91bmRUZXh0dXJlOworCiAgICAgZmxvYXQgbV9kcmF3T3BhY2l0eTsKICAgICBib29sIG1fZHJh
d09wYWNpdHlJc0FuaW1hdGluZzsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFu
c2Zvcm07CkBAIC0xNjUsNiArMTg2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdGFyZ2V0U3Vy
ZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7CiAgICAgYm9vbCBtX3NjcmVlblNwYWNlVHJhbnNm
b3Jtc0FyZUFuaW1hdGluZzsKICAgICBGaWx0ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKKyAgICBG
aWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7CiAgICAgSW50UmVjdCBtX2NsaXBS
ZWN0OwogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IG1fbGF5ZXJMaXN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODcyYmNmZWY2ZTVhNzM0ZjUyY2UzMTU4Zjg5NmZh
YTk0MDc4NThkNC4uNDkwOGM3OGJhMmQ5OWIxODJiYWQ5YzM1ZTQzYTBhZWE3YTg1NDJmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNzgsNiArNzgsMTMgQEAKICNpbmNs
dWRlICJXZWJLaXRQb2ludC5oIgogI2VuZGlmCiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpICYmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMu
aCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5o
IgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgbWFya2VyVHlwZXNGcm9tKGNvbnN0IFN0cmluZyYgbWFy
a2VyVHlwZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzJiByZXN1bHQpCkBAIC00MjMsNiAr
NDMwLDQ4IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IEludGVybmFsczo6aW5zcGVjdG9y
SGlnaGxpZ2h0UmVjdHMoRG9jdW1lbnQqIGRvY3VtZW50CiAjZW5kaWYKIH0KIAorI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgUExBVEZPUk0oQ0hST01JVU0pCit2b2lkIEludGVy
bmFsczo6c2V0QmFja2dyb3VuZEJsdXJPbk5vZGUoTm9kZSogbm9kZSwgaW50IGJsdXJMZW5ndGgs
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbm9kZSkgeworICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlbmRlck9i
amVjdCogcmVuZGVyT2JqZWN0ID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlck9i
amVjdCkgeworICAgICAgICBlYyA9IElOVkFMSURfTk9ERV9UWVBFX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFJlbmRlckxheWVyKiByZW5kZXJMYXllciA9IHJlbmRlck9iamVj
dC0+ZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICBpZiAoIXJlbmRlckxheWVyIHx8ICFyZW5kZXJMYXll
ci0+aXNDb21wb3NpdGVkKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIg
PSByZW5kZXJMYXllci0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCk7CisgICAgaWYgKCFncmFw
aGljc0xheWVyKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9OT0RFX1RZUEVfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciA9IGdy
YXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICBpZiAoIXBsYXRmb3JtTGF5ZXIpIHsK
KyAgICAgICAgZWMgPSBJTlZBTElEX05PREVfVFlQRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CisgICAgZmlsdGVycy5vcGVyYXRp
b25zKCkuYXBwZW5kKEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoYmx1ckxlbmd0
aCwgRml4ZWQpLCBGaWx0ZXJPcGVyYXRpb246OkJMVVIpKTsKKyAgICBwbGF0Zm9ybUxheWVyLT5z
ZXRCYWNrZ3JvdW5kRmlsdGVycyhmaWx0ZXJzKTsKK30KKyNlbHNlCit2b2lkIEludGVybmFsczo6
c2V0QmFja2dyb3VuZEJsdXJPbk5vZGUoTm9kZSosIGludCwgRXhjZXB0aW9uQ29kZSYpCit7Cit9
CisjZW5kaWYKKwogdW5zaWduZWQgSW50ZXJuYWxzOjptYXJrZXJDb3VudEZvck5vZGUoTm9kZSog
bm9kZSwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBpZiAoIW5vZGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDZiMjBiOGM3
MDViYzI4YzQzMTcyOTRhZmNmNzM4YzM1ZWQ3MWQwZWMuLjZjNWU4NzI4MmUyNGQ4YmVlN2NhZTNh
YTQ0YWFlZTA2ZTdlNGE1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTAw
LDYgKzEwMCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IGlu
c3BlY3RvckhpZ2hsaWdodFJlY3RzKERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAg
dm9pZCBzZXRCYWNrZ3JvdW5kQmx1ck9uTm9kZShOb2RlKiwgaW50IGJsdXJMZW5ndGgsIEV4Y2Vw
dGlvbkNvZGUmKTsKKwogICAgIHVuc2lnbmVkIG1hcmtlckNvdW50Rm9yTm9kZShOb2RlKiwgY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IG1hcmtl
clJhbmdlRm9yTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCB1bnNpZ25lZCBp
bmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5v
ZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2Vw
dGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAxNWNlMGEz
YWMxOGRmYTRmY2ZiZDA5NTgyOTBhZDI2MDFlNzRkM2NhLi4wNGQ0ZTk3ZDAxM2E5YzE1ZTlhNzgz
ZjY2NjA0NzY3MDNjNWU3OWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBA
IC03Miw2ICs3Miw4IEBAIG1vZHVsZSB3aW5kb3cgewogCiAgICAgICAgIENsaWVudFJlY3RMaXN0
IGluc3BlY3RvckhpZ2hsaWdodFJlY3RzKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMgKERP
TUV4Y2VwdGlvbik7CiAKKyAgICAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQmx1ck9uTm9kZShpbiBO
b2RlIG5vZGUsIGluIGxvbmcgYmx1ckxlbmd0aCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKICAg
ICAgICAgdW5zaWduZWQgbG9uZyBtYXJrZXJDb3VudEZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBE
T01TdHJpbmcgbWFya2VyVHlwZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFJhbmdl
IG1hcmtlclJhbmdlRm9yTm9kZShpbiBOb2RlIG5vZGUsIGluIERPTVN0cmluZyBtYXJrZXJUeXBl
LCBpbiB1bnNpZ25lZCBsb25nIGluZGV4KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAg
RE9NU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShpbiBOb2RlIG5vZGUsIGluIERPTVN0
cmluZyBtYXJrZXJUeXBlLCBpbiB1bnNpZ25lZCBsb25nIGluZGV4KSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllcklt
cGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0
LmNwcAppbmRleCA4YTlmMzVkYzhhN2I4OWMwYzk0YmQ3NTM3YzY4NDY0ZmE3OGE2YmI4Li4yMjk5
NzQxNGUwOTFlM2ZlMDEyOGVkZjRiYzFlZGVlYzExM2UyYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCkBAIC0xMTMsNiArMTEzLDcg
QEAgVEVTVChDQ0xheWVySW1wbFRlc3QsIHZlcmlmeUxheWVyQ2hhbmdlc0FyZVRyYWNrZWRQcm9w
ZXJseSkKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNl
dERyYXdzQ29udGVudCh0cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJf
Q0hBTkdFRChyb290LT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkpKTsKICAgICBFWEVD
VVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldEJhY2tncm91bmRDb3Zl
cnNWaWV3cG9ydCh0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hB
TkdFRChyb290LT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhhcmJpdHJhcnlGaWx0ZXJzKSk7CiAKICAg
ICAvLyBTcGVjaWFsIGNhc2U6IGNoZWNrIHRoYXQgc3VibGF5ZXIgdHJhbnNmb3JtIGNoYW5nZXMg
YWxsIGxheWVyJ3MgZGVzY2VuZGFudHMsIGJ1dCBub3QgdGhlIGxheWVyIGl0c2VsZi4KICAgICBy
b290LT5yZXNldEFsbENoYW5nZVRyYWNraW5nRm9yU3VidHJlZSgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVhMzQzOWIy
YWZiMmViYmY0MTAxMTc3MGM0ZDk3ZTZiMzkwZmJmYjQuLmE4YWNlNzUyMTkxY2Q0NjEwNjA3MzYy
YmFmOTJjZDVjNDFjZDkwYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0wOSAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEJh
Y2tncm91bmQgZmlsdGVycyBmb3IgY29tcG9zaXRlZCBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItZXhwZWN0ZWQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91
bmQtZmlsdGVyLWJsdXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0
cy1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBv
c2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVy
cy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1i
bHVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA0LTA5ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRmlsdGVyIGZpbGVzIGZyb20gZGF0YVRyYW5zZmVyLmdldERhdGEg
b24gTWFjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZp
bHRlci1ibHVyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTNiYzM2M2M5Y2U4MjJmMDBkNzhk
MDYwOGQ3MjNhNTY4OWZiNTMwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzNzc2CnpjbWVIS2VA
eFA4OURiJGpyJDQmdU83eHU2WmdzVkZOQGJEIyhBRFg2d2FkPElgSz17fTkmfCM5czBkPC13dVk0
egp6eVBIVmBPNnp2ZmhTQiNiZilmPyZKN3RUJkJgMmdEQm9kbGdmTzNrMiFoUVNldyk/YUg/IzRn
d2ArNDdZZCFLakQKektGezspejQoM2gtc21MPk84QH1UYEBZUlExaS12aTBBUWQrNzw2YUZYRGh4
JHJ9WShDUCh7Jj88UlYlKl5FQjkkCnpNJXNxb059dj54RFJePyk3U2lVVEEyeDRJckh+M3FnX0pH
bXV5TUZpMFlKPjVlVk14dHZxa1QkVF92Qko8Nz1QQwp6fEQwck1KbHU2SVpveT1iLT03dD87SzhF
djJAa0dPemJrOUkpcH09bGpeP1Q0KG5mPEZ7QXVmc3tMOExwLURNblkKemlVNzVTSH1XX0RKaW1N
YjBrRSt5NS1lTihBMSF7PCheN2BpNVJWKytkRzsyKkNVNjs8OEtneEZYPDN6WiU7USVOCnpAfUNY
IXRNXk8kbF5oUFNJdFI9UzhQPnJ+cV9rdSRHNjgzfU12P1htbXJwelFVPDBOaHFjRXxEa3d9cDBE
ZUBhOAp6QlNuN256RGRkO0glNGw3WCVmd2BDUzx9PiUydExyQSMkKVJHIS1POztEWGVaeSo/PDxL
flc5M1k7VGtBRysyZSEKeiRgQENxaktzKjVBak5xY0dvSVF4aTFZYWgrO25jb29ISG59MVN+M2xO
JjImVEN5ZTVhVnpyRTJHUmFpTW1WRTJtCno1fVZyPWlALUB7c3JFQDkxbGxpbm0kZHJ2KyNCbElO
dkEtfmVJTC1PX3pKYm4jX2YyQ285M0hzX0cqI3I1IzF6Mgp6QUB2cmFjdHAlMnptTz5gUTxWPH5U
Tmc7cWdaOVNxI2pQWjQmNW99M1l+S1czITQzRnp5PCVLP1p+ZWdmKXhEK0wKemFVenFeSVgjSlYq
T1JjYUo1bTw/PHMzNiRjOWZsWSpCe35lVnV3SnBVNEoqNTEtbkw2bUk2OUFJT3wzNiNZeVM8Cnpm
UGRvM298ejtHVldDN3soYjE5QVdWYyNhRVV5KUArZT4jfHpsaWJOSG1yZXBCJmJQQ2dTQDBwbCYt
NGE/M2g+Xwp6b2JiZmZiJGZTNG4mMnEyV2p0YC1Dc0V8YGI8Z2ptMUw3YT9rKjNte01QS1BpUmtP
ZUh7UF5DMHBBPWRKdnc2OEUKenE3Z2lPQj09WXxAajVJMz9CYktsQSlWMXptTyEzIVAzLTsyJjFe
JTBJTXIoZlF5JTN+Jmh6WHN0YzhPQFc3WkFICnpzOWI9RWBUQlZwc1ZDIVcwMTdjbiFLJEB6eENv
T0Y/dTN0NGZ6VjlVZ2ZfKUVqTlU8LXk7bUVJNz9PKClvVmFyRQp6ckRHZkZjfmgyP1NSTlQ3bVJI
UiN6Smo8M2VjT1UtQTd7cGFsI3g+eThrUj9BJTlHNShlIylfZk0kWE54TXRxZGsKenhlbEhvTjtL
JUFJT1gmYTtnbUFTQDQ/Z3g3fmorfTZPSzNjUUdGQ3ZUMFN4NDxZNFFvR0x+Kj12OUVfXjNiVmxJ
CnpibT83PE08cUVYK1duWVgrYCNZaU89R3Y4YXBYM2NCRzFeNWRTUj5wJDczaktscjZFfDUzY1RK
Q1MxcktBMWtaJgp6K2xMWUtTVU5eayo8XlhOeFFCcTlHeHtsbjs2KilvRHVQTz1BWXxtdnJBOHF0
aDE7ZEp4bmwkNVd6WlEjWnF7ajIKeiRhYWBPciZyUHxDOUQ0ZGJyYyZvWlAkfSsxP3sqVkpHSEcl
PXBJNE5Lcnk9OEdXSiNEd2EoJlFgM0xnUVRZVn5ECnpvVSF7KyVNcilaYEFjZ0I8LXxKWFAxTSFr
ZUFJQkFSd1BKTHppcDE0SlNFOX1xRWAtLUpWcWJWRmc5RiNaVmUzQgp6WCUycj57bEJBWEZTOHBy
XiNZUlckTDIyVHNTazx3SzE5dSUlYjQrMyUwekpzZDFrdDlHKG1sfiM7Mm5LUG5qVloKendQSlJB
VS1HQHpKSVBJNUQ/bilCQz5EKSpGNGVJQXF1VV4/cGZHamU5MHt1K3RiK2ZFM1pfJHs7eyhtMlNF
Mz5HClBPQTdYN1dvT0Z2b0grTTQhVGNCdAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9i
YWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQw
OGJkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Nv
bXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9j
b21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3Rl
ZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJz
L2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YThmZmQwYzI4ZjZiZTUzYmIzMmY5OWYzYTU1ZWM3MjdhZmM1YTk1OQpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgNTkxNgp6Y21lSExgJlV6RSk7PEU+UHtjfj5qak55SXI0PnxeMVZJUSt0MXZBfVIx
NiNnQXolT3swVjg1aTBzKm5NPSFgKFcKelJ6UitQRXJZMmk3bE4xczB3S1cqc1NTfjlsRU0qP01v
OHJ0RWA9bXFPcWs+SjUxOCopWFhkQX4pP1IxNT53V2swCno/RU80QC0jaWBgOyRYa285c21HYCY7
TjR4Qm1tZlkwRHVqKyFVbTBlXng7UTQoOWclMGopMGRhPU1wSGlHKTQtNQp6amk+bHh6NHV8YHl1
QTxqYEpCT0dfczA5N2slWWF6YH1mOGpwa048JVBFR15CZGo5OCF8OXQ5N2c8O0BDZiRwY0cKenVl
K1NUazFvPXhDditLUlFEUzd4alNQPD9DdlFKXlEpLTJpP0RlLWpJSCZyOD9icGQyZUxzeWFQZ0BU
RmVpbkFsCno2NXVMK3N7akJWKnt1Zi0tSTNiPkUxVzw4aF9oSipjcFF5ZzAkZzl8MzAmUXF5QSlX
dntlQXQoV2JCZDJHWXY4cgp6emkyLWhaYEhuaU88cjxVeHdyTklAemheKGUhQ2YqcW5gK310ZVJ9
S1Q2PCZ3OzY4alVtdFpWaG9EMVFJVWFLPUYKemMqNFE/aSVue3QqalFAV0w5XjVjZzRROT9eNjBK
P1J1e0w5dk5YUCNRZ0F4MHk+NiYmVzc7al5xVTA/fHV1T0BBCnp2Z2cmbjxkKXI9SyVRYDxnQEM5
X3ZMciYtNEo9ZklsMlJPRlkhTlc+M3hwVlVme18pVnVTanxCN3ZqdF5jYEpUegp6c1RCYFdVOTkq
LTA7aUA5QGM2WVhteXAqLUslX3hHSygkR1hUUmRLIU1uZCVHalFKPSYkekA8QHImSmwpJV89X0MK
eih9YDxIemlZLXVJckVzcHpUKDlUc34pKHNGaEpJQStBPDkjVUMxVU47X04wTj58SmthVnxzb3Rv
fHx4dSFDTDRZCnpKRF59NTZ+ckxhX084VUghYzJzaHNPSXtPYXtZPV5pKDcwd15pWnp3SWxsQFM8
SyVkQ2M7KmE8O3NQPG5EPmR2Wgp6X1QwSGtHUFN5NThhRHhKSTA+dnQreXReTnR+TWxFYnpjRGQp
RUZQQHdaSmM2N31ZSkJtNzN3flFvOEV+ZCRGR2UKenU/cj1VeC09bFdvIUN3N1lhMHc5dVV7VUxw
S3c4VnVYa1Q3d0heeDJ1Uy0kZFRuI2RtPHFGJlJeS2w4MlRfRCopCnpiS3FLNHBBNEp4cE49RmAq
b058fSU0Si1QcHFMZUR6X3RCV0tMa3NJUSEpa0Etc0NqckdmTkoyZXF+RHxJUnFUIwp6d2FqYjEx
KTU2R0AmVHdPM0l+fmwlSmVmdT9VSC1Dajc/KTFuRnxfX0hCKGJwT2ZvMjBgQXwlS1YqYztYWlAj
OE4Kem1pS3AkYWFka1MhZXlHY3J4JjhPeT1ZLUhPdGRuU0pvJFBkLSVhMXJlX20+PXNwfiZyN1pJ
cGc5O0whTClCISg5CnpzSWUoU1BTSlVVSlVEV1pYcDFuNDFlKjUjdSlnRG9rJileQztnMk9ha2FF
a0x3dEw1aSh2RDF5V159VmdgMzRkPgp6YFNkcERNK3FOMWJHYGIxb01vRVYqTUNxRmhme0F9KnB5
SWRMcCEpRERSNFZqeXJMR0ZAcHtDe0IyWkxaQjN7KUEKejNBPjBuJX09V24lZDdNSU16aGZwZWll
LXNGbDkjZ3FITCgzUklSUFlIb0tsTj15clheLUV+bUt1bGdFZiVifCRzCnojSmxpSVlHQmM0JlFl
RDEobkZkQVRjcUtjdkAmdn5jJV4zUSRAcyQ0UnJ2Z29ydDhgbnwwYnE4U1NgIzMtSUltNAp6eFdV
ZlZnfTVmVWptUC02eHJ9RTFed2RjfGNLMUEkdGYtZ0I4Z352KXtrPU42R3lQX0hrR2U5N28rMjcp
cClOanUKeiomUVI2QFhDaXU5NlIxOXpnbT91YHhLYmBHZklFajQpeGFoRjtiSDJvQDJrekBmKV5y
YC00eFReaDsyX04rUiMlCnpgb1lRZEphSEZNKmY7dG50c3NMWT9yT1V6KGBGYjQ9ZygwI293WWdp
V1NjRTV2fVNySUdQa2NvIVRHSkMxNEYkegp6eHNAQnZGK0R1bzVPZTdQNSNhPzclJT88YzNTYmRV
SzZJODNuK2taMHE3K2dTak1IMURRJUZZUnglcjA8JFZtTTcKeldgdmxpOGt3PXJPYm00TXRtang8
Jks2NGkzdV9DYCZpU19mIUZJMFdkQl5OPHE5WE12Zi18M3RFREA0I1RuT2JUCnpiZTJ6XnZycShD
YHh+SGFaaStocVQ7cCM3XkZyLWdgMTd1ampeaDEpSkZtXmxoSVctflpHSTR1cURpaGQ8VER6YAp6
eD1obXZPNEp3R15BOVZFWnlrR0E3PlRqY1VeTkEkTDM7OWlIdUF+XmRJeFlmeFdSfFUmbktpRFkq
SnNXKFR7TGUKejZPZi1AYzd0clpHQnJLbjhWVlc0NzgkVWtAaT5uKyFReCR4UmJmNHl2Y3wjditI
VDB9SkJVJFcrKD1GZCtOK09GCnp1UW02RElLJTcmT0YqKUZGNTFhZ0ckcUhuPyo2NUQ7dlNSYW8z
LWd3I2RhX3Vvc3BvQksmUkRFcUVIbCpHNVBsOAp6T3BAT2tld0gwQExsUGckUSNeVG11VCpGRT56
IWlAY09YTkVoQXJzXkJTalVyaHJ2aVNITCZydztyKypffDJLUk8Kek1IJCMpYyRZRD5Id2xabiEj
fGI2YXA4KUltRSRhZSgxbUc4bFFxPVRSYU08KjxTcHp8NWZQfTg5aWVjJjAoYF5oCnpsTV4ycmFf
Kzd2I3JORlQqV1ZtcC1kYGZRKmRRKDVfSUdPSXQ3JUc+QEt4e2N3czsxe2VRU3EpaWFpaHN5IzB2
Mwp6OExTO3pXWGNaRDF+ZnI+K3AqVkVHVUwpb3dpbnJyVFZnJng3YzwtdzYqUUMrVGxJQXJASi1x
P3hqKzVyZDgxRFcKemF+eHVZRjJzZFFyKmBCfHNnSFBWQXJTT3xwZmJ3T28mR2tVeHhVYjtOIUJ1
ZTB7fWJIS0VXVzNaa19qMEZ2bUMrCnphd3Z0UXhoU2spVSs+PXo3OCtaYj94elRiaWhrZ20/d3Q3
enZweE5EOSEhQGdIUWZ9ZW9APlFSWkxCJF9gfClyewp6eEd9d01ifjBtRGd8fDhNR2hxa0Z3KWlh
MDxtRF9qT0MlRUEhM0huYTdIaGxBVERzKEZrWiNAeTcyM3RVfDM8cHwKei1XckRnKz40VmlmPCU/
VSlGV0ZKRyhueVZtfjk2cD4xa0BZS2UzPCRKfjJJYFd4QVprPDZFcG5ne2UkNFFmezd+CnpMOCpI
aXprKWs3ZHA8ZmZZcH5WJGAwZEBuPEY7T2EpIXV5XzI7Y3RvWm8jZz5IRllqJGcxWUhBJEg3Izxk
Sj5KKAp6Uy0jYyNuJnZrbVJadF9IP19YbW9jZWtjfFdxYXN9N1Fia2ReTjAlKCpZSmZkZHJIbygk
JGBgcl81SFp9KU9zRjEKekxhNnlVKllyU1NVYnJNJUtKeX1JQmRwTEZAYmZGczx9bzdvN2pefEsh
Z1U7eGA8O3tzMHc8NzEjTjt6aHU9fl9LCnpjQz5OMmcqJHopOE1oeGYwNCZeJDFtdEpZZXhfPTRg
JXMrcEI7QUo8JGJGNiNLVHtKPSlxQ01aKVg/aW0rfGFWWgp6OG85byFtdlMkb0VJUUN+UjJzSGh4
YCt6dUswIWcxczVmQX1nSU1PRy0tTnVPaVlVcGhqdk9XVUhfaWRtMz1DV0sKejM3cmhqeX0qczhf
KmhwbG1MQnI2KEw+XztnP19qY1l5TDl6O05fMXQyKnBPJipKOUFlO1IzX2k5cVdNVz0kVGBUCnpi
S1o5K15pNFNfTk5XU3M0Jm1oUlV6cFBgTjJVZH1BTEU0JWFgTGE9PTM+bSV1WD1WT3N3WTFmNygl
P0QqcGB8Vwp6RkJNSk8oUXJHQXpEfXhlbEl0U0pKdiRKe2BpOGJGTGkoWSlxUGlfUk5WfFpBZjl4
V2JyeGpyNS16ZHAmR1E0NEIKemkzS3pAbERvdVBJYzFhclpeZSZ3U3NTc0dmKU8lIzhleCtpZlY7
V314eUV6JWVlO0Ricn1nTFJnPyRpSk1wcnxxCnpYPjIzUGY8ZTRGYGV+MnYjeE1xXiZFJFAwR2lu
dnImRzFmemRRbFo+RmtSaldeJXp7aCFvTCNGIUA2JUhOe3B6bwp6M1VwJkktKyM1KGwmY1lDdUs+
MWFTOTYmVlhCejVeVkApMjVieVk7fWBPSzRfRmM4NyR8SnJ5ZyozaEFpR2pgcSMKelVOWEJYZGNS
PVEjZ0o2MWV2TFg7QXdRVDx5QlB5VnI9UV9EM3k3VDR2P01+MlR5anI0YTBOcCV1PkhvVHYhaSE0
CnpjUHl8NTYpeVV2UFpYYUg8N0p4eG9DMzg2MTUpYiZzO08oakZjPm55cWJDVl8peDRxNkpLfTYt
NDRNPDFuYTN+dwp6dUNZOXApWjRQMDdQVHxyczZiTyhybylZIVFee2p2SUlWJm41Kj1pQDJGJHZZ
dG1nTFk+I1ZDMmN9NEp1TSZjTj8KenBmQWNEUUBvKCpyekIwKjhBdjJqNTkpRldtNUhTXlF2Tn4m
dkd5QDlmajlYX04+VFZtJiM2VDxhdmJVezthT15GCnp0T30+VUJUamN0bmI5YSo7Qn5feTJjO2VJ
TGxgQENYb0xNLVRfJkNUSU9XIXF6aGVJTjIwT1hGO1g8cXpuKHFkIQp6UkghKml1WGFfT3M4X3tF
I1Z5SjVGYGsmSm9QfnJEMVoxWiZYKjIofEAjd2cqVmVSYUtlRGgqX2Z3NT1MaW1NJXwKellCPmE5
VmIrVXhQSFk9YjxQSWh9RCtAU0x2VjFKbHNCdlF1M2lDUld3aDh6blM9LUh6KkNJYFhNYFdHMGM4
WnE3CnpITVZ8Vm1wIzk5JCl3K0k3Y2k3R3BrTkpNUnVsNmYjckl+LWRGNnZ4SShtbSowJG5RVkR7
eyhAPjA0Ti0qJi1PTgp6ZlQ9SW5nWFl2bE9wY3tZUnUhPiY+M1pNPGluJXdXSntoVXpqT3dzZChg
akFtWjNCKFMlTyN8Z1F7S1RTQHBhOyYKekh0TVp3cCk+LWBNKHJIKEZydU5kWF8hcjNpeFJSZDdv
K3U0R2xOV1lvODRONTh6JElVb0I8PGFiLTBFd2ZnM0VTCnpJNSpSNnFKUGtHUjFrS3NQVUVOOUQj
Kj8hIXs7dyYzZVlsNGo4JWlkNWo7KSFQMGBlazlBQCtwY0U/RWhtKzxWXgp6IXtyPUUoez9nNCgk
byphYkE5R1k1TyQlSiRFcEBzMFhaY0NiUTFQUEZZTzJNb1ZYKnMxSW13VU8+JH5sZG4hI2wKenFX
bl5eUWUjckpZV3ZXTXB8fi19cllpam0+KytGRDdecGJCKDU+VHV6dmpFZiNZdHF6JVAtTiY5PDkq
VGx9cjFYCnotV0E0ZzQ9QzVnSW0zOyQ4WWlFQyM3THl7MiVLXkhJNkNzQXIqfj5ZYWVMQ1o+XkEw
TEF0T3QwTyFtKmdQVXlNQAp6V19wcWtyfl9fTFZkKH1lOUgzUUN0cEBYNCQ3fWV6WD5KTklaKHpM
S0FpMihOPiZHVSMpfj5UVy1tfm5nPDMqTGMKejNASXV2O1M3MXx7dDdgUylZUX1lXkNEc3lLOV45
KWlgPE5pI1VNfnM5KjhJSiRqYW0+aW1GaU9jfCgjST55XzZWCnpmdVolYnhOezFlUX5NPilTUHhV
bk5TfH0/ND1Ud0khX3Y1cWlOaHlQREV1QGMmbVp9fj5ATV9XKT4rcyskZyZGbgp6dlhFPUpNKU9f
a1FVSioyRVk5byFmWFNxUHdNZnVKfEglJlVQfT0/YlkjOUQ/NGE1N3Q5cmBiSkA5JD5zenUzSmAK
ZSp1QllGQXx5PDl7MyZSPDE2XzltcEMxVzMlPk9qQCtDS3BKVklUd20KCmxpdGVyYWwgMApIY21W
P2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBv
c2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFj
a2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEz
Nzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRlZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3Jv
dW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVy
cy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1v
dXRzZXRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjg3OTNmMjU2OTBjODQxNmIyYWU2NTY3ZTU0MDgxNDJl
MDA3ZDhjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLmh0bWwK
QEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD48aGVhZD4KKzx0aXRsZT5C
YWNrZ3JvdW5kIGZpbHRlciBibHVyIG91dHNldHMgdGVzdC48L3RpdGxlPgorPHN0eWxlIHR5cGU9
InRleHQvY3NzIj4KKyAgLmNvbXBvc2l0ZWQgeworICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFu
c2xhdGVaKDApOworICB9CisgIC5ncmVlbi1ib3JkZXIgeworICAgIGJvcmRlcjogMTBweCBzb2xp
ZCBncmVlbjsKKyAgfQorPC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KyAgZnVuY3Rpb24gc2V0Qmx1cigpIHsKKyAgICB2YXIgYmx1ck5vZGUgPSB3aW5kb3cuZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2JsdXInKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEJhY2tn
cm91bmRCbHVyT25Ob2RlKGJsdXJOb2RlLCAxMCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICB9CisKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICB3aW5kb3cuc2V0VGltZW91dChz
ZXRCbHVyLCAwKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICB9CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwhLS0KKyAgIFRoZSBncmVlbiBib3JkZXIgaXMg
b3V0c2lkZSB0aGUgbGF5ZXIgd2l0aCBiYWNrZ3JvdW5kIGJsdXIsIGJ1dCB0aGUgYmFja2dyb3Vu
ZCBibHVyIHNob3VsZCB1c2UgcGl4ZWxzIGZyb20gb3V0c2lkZQorICAgaXRzIGxheWVyIGJvcmRl
cnMsIHVwIHRvIHRoZSByYWRpdXMgb2YgdGhlIGJsdXIgZWZmZWN0LiBTbyB0aGUgYm9yZGVyIHNo
b3VsZCBiZSBibHVycmVkIHVuZGVybmVhdGggdGhlIHRvcCBsYXllcgorICAgY2F1c2luZyB0aGUg
aW5zaWRlIG9mIHRoZSBib3JkZXIgdG8gYmUgYmx1cnJlZC4KKyAgLS0+Cis8ZGl2IGNsYXNzPSJj
b21wb3NpdGVkIGdyZWVuLWJvcmRlciIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjUw
cHg7IHRvcDo1MHB4OyB3aWR0aDoyMDBweDsgaGVpZ2h0OjIwMHB4OyI+PC9kaXY+Cis8ZGl2IGlk
PSJibHVyIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6NTlweDsgdG9wOjU5cHg7IHdp
ZHRoOjIwMHB4OyBoZWlnaHQ6MjAwcHg7IGJvcmRlcjoxcHggc29saWQgYmxhY2s7Ij48L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci5odG1sIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5k
LWZpbHRlci1ibHVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE5ZWMzZmFmNmIyZTEzMjZjMmQ4OTMzOTNj
ZDA3MDZlZmNjMzFiZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci5odG1sCkBA
IC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+PGhlYWQ+Cis8dGl0bGU+QmFj
a2dyb3VuZCBmaWx0ZXIgYmx1ciB0ZXN0LjwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorICAuY29tcG9zaXRlZCB7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7
CisgIH0KKyAgLmdyZWVuIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgfQorPC9z
dHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgZnVuY3Rpb24gc2V0Qmx1
cigpIHsKKyAgICB2YXIgYmx1ck5vZGUgPSB3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2JsdXInKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEJhY2tncm91bmRCbHVyT25Ob2RlKGJs
dXJOb2RlLCAyKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgIH0K
KworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHNldEJsdXIsIDApOworICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
KworPGJvZHk+Cis8IS0tCisgICBUaGUgZ3JlZW4gYm94IGlzIGVudGlyZWx5IGJlaGluZCBhIGxh
eWVyIHdpdGggYmFja2dyb3VuZCBibHVyLCBzbyBpdCBzaG91bGQgYXBwZWFyIGJsdXJyZWQgb24g
aXRzIGVkZ2VzLgorICAtLT4KKzxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQgZ3JlZW4iIHN0eWxlPSJw
b3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo1MHB4OyB0b3A6NTBweDsgd2lkdGg6MjAwcHg7IGhlaWdo
dDoyMDBweDsiPjwvZGl2PgorPGRpdiBpZD0iYmx1ciIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRl
OyBsZWZ0OjMwcHg7IHRvcDozMHB4OyB3aWR0aDoyNDBweDsgaGVpZ2h0OjI0MHB4OyBib3JkZXI6
MXB4IHNvbGlkIHdoaXRlOyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136966</attachid>
            <date>2012-04-12 13:56:30 -0700</date>
            <delta_ts>2012-04-12 17:58:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80046-20120412135629.patch</filename>
            <type>text/plain</type>
            <size>81047</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIyNjJlNzE1N2VlNGRj
ZmE0YWQ5NGMxNGY2MmY3OGZkM2RhZmFjNi4uZmU0MWU0NmEzNDI5OGFmMWM2YmJjNTI0ZTJhYTZm
OWQ3YWM1NjIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDEyLTA0LTEyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQmFj
a2dyb3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGJhY2tncm91bmQgZmlsdGVycyB0byBM
YXllckNocm9taXVtL0NDTGF5ZXJJbXBsLiBUaGVzZSBmaWx0ZXJzIGFyZQorICAgICAgICBhcHBs
aWVkIHRvIGFueSBwaXhlbHMgaW4gdGhlIGNvbnRlbnRzIGJlaGluZCB0aGUgbGF5ZXIgYW5kIHNl
ZW4gdGhyb3VnaAorICAgICAgICBpdC4KKworICAgICAgICBUaGlzIGlzIGRvbmUgYnkgYWRkaW5n
IGEgYmFja2dyb3VuZFRleHR1cmUoKSB0byB0aGUgcmVuZGVyIHN1cmZhY2UsIHdoaWNoCisgICAg
ICAgIGhvbGRzIHRoZSByZWFkLWJhY2sgY29udGVudHMgb2YgdGhlIHRhcmdldCBmcmFtZWJ1ZmZl
ciwgYmFja2dyb3VuZCBmaWx0ZXIKKyAgICAgICAgYXBwbGllZCwgaW4gdGhlIHN1cmZhY2UncyBv
d24gY29vcmRpbmF0ZSBzcGFjZS4gVGhlbiB0aGlzIGlzIGRyYXduIGJhY2sKKyAgICAgICAgaW50
byB0aGUgZnJhbWUgYnVmZmVyIGJlZm9yZSB0aGUgY29udGVudHMgb2YgdGhlIHN1cmZhY2UgaXRz
ZWxmIGlzIGRyYXduLgorCisgICAgICAgIFRlc3RzOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3Np
dGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb2ZmLWF4aXMuaHRtbAorICAgICAg
ICAgICAgICAgcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5k
LWZpbHRlci1ibHVyLW91dHNldHMuaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0vY2hyb21p
dW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLmh0bWwKKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OmJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdSZW5kZXJTdXJmYWNlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hy
b21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OmlzQ3VycmVudFJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlTWFuYWdlZFRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTY2lzc29y
VG9SZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyUmVuZGVyZXJDaHJvbWl1bSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnNldEJhY2tncm91bmRGaWx0
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6YmFja2dyb3Vu
ZEZpbHRlcnMpOgorICAgICAgICAoUmVuZGVyU3VyZmFjZUNocm9taXVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaDoKKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpiYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1
YnRyZWVTaG91bGRSZW5kZXJUb1NlcGFyYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6ZHJhd2FibGVDb250ZW50UmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OnByZXBhcmVCYWNrZ3JvdW5kVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6
cmVsZWFzZUJhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6Y29tcHV0ZURldmljZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clN1cmZhY2U6OmNvbXB1dGVEZXZpY2VCb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlclN1cmZhY2U6OmNvbXB1dGVSZWFkYmFja0RldmljZUJvdW5kaW5nQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cmVhZGJhY2tEZXZpY2VDb250ZW50UmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpjb3B5RGV2aWNlVG9CYWNrZ3JvdW5kVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpnZXRTa0JpdG1hcFRleHR1cmVJZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRyYXdDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1JlbmRlclN1cmZhY2U6OmRyYXdSZXBsaWNhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVy
U3VyZmFjZTo6ZHJhd0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6
ZHJhd1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBseUZp
bHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5oOgorICAgICAgICAoQ0NSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUmVuZGVyU3VyZmFjZTo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJTdXJmYWNlOjpiYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OmJhY2tncm91bmRUZXh0dXJlKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6c2V0QmFja2dyb3VuZEJsdXJPbk5vZGUpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmlkbDoKKwogMjAxMi0wNC0xMSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHpvb20gdGltZWxpbmUgZnJhbWUgb24gZGJs
Y2xpY2sgb24gdGhlIGZyYW1lIGJhcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlMWIz
YTU1M2ViMWIyOTk5NzU4MGQxMzM4ODg5ZmNhNjM3YWNmODYxLi4zZDhkOWNjZTRlODhhYmUyZDY3
ZDBhODAzMjU2OGUxZWZlN2NiNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEyLTA0LTEyICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gQmFja2dyb3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVk
IGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHRlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwog
MjAxMi0wNC0xMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSBFbmFibGUgSU5QVVRfVFlQRV9EQVRFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDEwZDg0YzU1MzMwZjg2ZGE0MTlhODA5YmI0ZDA0Y2ZkNzIxODZjMDkuLjExMmIwM2FiZjBj
Mjk5NjEwZDE5MjdhMjIzNjU4OTRjNzc4ZDc2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBA
IC0zMTUsNiArMzE1LDE0IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0RmlsdGVycyhjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogICAgICAgICBDQ0xheWVyVHJlZUhvc3Q6OnNldE5l
ZWRzRmlsdGVyQ29udGV4dCh0cnVlKTsKIH0KIAordm9pZCBMYXllckNocm9taXVtOjpzZXRCYWNr
Z3JvdW5kRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycykK
K3sKKyAgICBpZiAobV9iYWNrZ3JvdW5kRmlsdGVycyA9PSBiYWNrZ3JvdW5kRmlsdGVycykKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fYmFja2dyb3VuZEZpbHRlcnMgPSBiYWNrZ3JvdW5kRmlsdGVy
czsKKyAgICBzZXROZWVkc0NvbW1pdCgpOworfQorCiB2b2lkIExheWVyQ2hyb21pdW06OnNldE9w
YWNpdHkoZmxvYXQgb3BhY2l0eSkKIHsKICAgICBpZiAobV9vcGFjaXR5ID09IG9wYWNpdHkpCkBA
IC00NzUsNiArNDgzLDcgQEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKEND
TGF5ZXJJbXBsKiBsYXllcikKICAgICAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycygpKTsK
IAogICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMoKSk7CisgICAgbGF5ZXItPnNldEJhY2tn
cm91bmRGaWx0ZXJzKGJhY2tncm91bmRGaWx0ZXJzKCkpOwogICAgIGxheWVyLT5zZXRJc05vbkNv
bXBvc2l0ZWRDb250ZW50KG1faXNOb25Db21wb3NpdGVkQ29udGVudCk7CiAgICAgbGF5ZXItPnNl
dE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsKICAgICBsYXllci0+c2V0U2Nyb2xsYWJs
ZShtX3Njcm9sbGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDI2ZjZkMDNjNDNmNTUxOGQy
NTY0ZjZjMjU4MDU1YjFlZjgyYzZkZjUuLjU4YThkMDcyZTNjMGY0NGRlMDEwMjEyZjdmZDliMjE5
NWVhNWZhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTExOCw2ICsxMTgsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAgICAgY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyczsg
fQogCisgICAgLy8gQmFja2dyb3VuZCBmaWx0ZXJzIGFyZSBmaWx0ZXJzIGFwcGxpZWQgdG8gd2hh
dCBpcyBiZWhpbmQgdGhpcyBsYXllciwgd2hlbiB0aGV5IGFyZSB2aWV3ZWQgdGhyb3VnaCBub24t
b3BhcXVlCisgICAgLy8gcmVnaW9ucyBpbiB0aGlzIGxheWVyLiBUaGV5IGFyZSB1c2VkIHRocm91
Z2ggdGhlIFdlYkxheWVyIGludGVyZmFjZSwgYW5kIGFyZSBub3QgZXhwb3NlZCB0byBIVE1MLgor
ICAgIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwor
ICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQorCiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1
ZShib29sKTsKICAgICBib29sIG9wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhcXVlOyB9CiAK
QEAgLTMxMiw2ICszMTcsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RlYnVnTmFtZTsKICAg
ICBmbG9hdCBtX29wYWNpdHk7CiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CisgICAg
RmlsdGVyT3BlcmF0aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOwogICAgIGZsb2F0IG1fYW5jaG9y
UG9pbnRaOwogICAgIGJvb2wgbV9pc0RyYXdhYmxlOwogICAgIGJvb2wgbV9tYXNrc1RvQm91bmRz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggZjRhNTAwYTg3Mzlh
MTBjYTc3NTBlMmY4Yzg4OGQ4MGVmNGM2YTMzNy4uZTJhNzQ3YWU3YzhiNjA4ZjQ5YmYxMjAxNDQ2
ZDRjZTg4MTJhNzg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKICNpbmNs
dWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHZW9tZXRyeUJpbmRpbmcuaCIKKyNpbmNsdWRl
ICJHclRleHR1cmUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUg
IkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgpAQCAt
NTQ0LDE0ICs1NDUsNzMgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdEZWJ1Z0Jv
cmRlclF1YWQoY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKiBxdWEKICAgICBHTEMoY29udGV4
dCgpLCBjb250ZXh0KCktPmRyYXdFbGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6TElORV9MT09Q
LCA0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQsIDYgKiBzaXplb2YodW5zaWdu
ZWQgc2hvcnQpKSk7CiB9CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dy
b3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqIHF1YWQpCit7CisgICAg
Ly8gVGhpcyBtZXRob2QgZHJhd3MgYSBiYWNrZ3JvdW5kIGZpbHRlciwgd2hpY2ggYXBwbGllcyBh
IGZpbHRlciB0byBhbnkgcGl4ZWxzIGJlaGluZCB0aGUgcXVhZCBhbmQgc2VlbiB0aHJvdWdoIGl0
cyBiYWNrZ3JvdW5kLgorICAgIC8vIFRoZSBhbGdvcml0aG0gd29ya3MgYXMgZm9sbG93czoKKyAg
ICAvLyAxLiBDb21wdXRlIGEgYm91bmRpbmcgYm94IGFyb3VuZCB0aGUgcGl4ZWxzIHRoYXQgd2ls
bCBiZSB2aXNpYmxlIHRocm91Z2ggdGhlIHF1YWQuCisgICAgLy8gMi4gUmVhZCB0aGUgcGl4ZWxz
IGluIHRoZSBib3VuZGluZyBib3ggaW50byBhIGJ1ZmZlciBSLgorICAgIC8vIDMuIEFwcGx5IHRo
ZSBiYWNrZ3JvdW5kIGZpbHRlciB0byBSLCBzbyB0aGF0IGl0IGlzIGFwcGxpZWQgaW4gdGhlIHBp
eGVscycgY29vcmRpbmF0ZSBzcGFjZS4KKyAgICAvLyA0LiBBcHBseSB0aGUgcXVhZCdzIGludmVy
c2UgdHJhbnNmb3JtIHRvIG1hcCB0aGUgcGl4ZWxzIGluIFIgaW50byB0aGUgcXVhZCdzIGNvbnRl
bnQgc3BhY2UuIFRoaXMgaW1wbGljaXRseQorICAgIC8vIGNsaXBzIFIgYnkgdGhlIGNvbnRlbnQg
Ym91bmRzIG9mIHRoZSBxdWFkIHNpbmNlIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIGhhcyBib3Vu
ZHMgbWF0Y2hpbmcgdGhlIHF1YWQncyBjb250ZW50LgorICAgIC8vIDUuIERyYXcgdGhlIGJhY2tn
cm91bmQgdGV4dHVyZSBmb3IgdGhlIGNvbnRlbnRzIHVzaW5nIHRoZSBzYW1lIHRyYW5zZm9ybSBh
cyB1c2VkIHRvIGRyYXcgdGhlIGNvbnRlbnRzIGl0c2VsZi4gVGhpcyBpcyBkb25lCisgICAgLy8g
d2l0aG91dCBibGVuZGluZyB0byByZXBsYWNlIHRoZSBjdXJyZW50IGJhY2tncm91bmQgcGl4ZWxz
IHdpdGggdGhlIG5ldyBmaWx0ZXJlZCBiYWNrZ3JvdW5kLgorICAgIC8vIDYuIERyYXcgdGhlIGNv
bnRlbnRzIG9mIHRoZSBxdWFkIG92ZXIgZHJvcCBvZiB0aGUgbmV3IGJhY2tncm91bmQgd2l0aCBi
bGVuZGluZywgYXMgcGVyIHVzdWFsLiBUaGUgZmlsdGVyZWQgYmFja2dyb3VuZAorICAgIC8vIHBp
eGVscyB3aWxsIHNob3cgdGhyb3VnaCBhbnkgbm9uLW9wYXF1ZSBwaXhlbHMgaW4gdGhpcyBkcmF3
cy4KKyAgICAvLworICAgIC8vIFBpeGVsIGNvcGllcyBpbiB0aGlzIGFsZ29yaXRobSBvY2N1ciBh
dCBzdGVwcyAyLCAzLCA0LCBhbmQgNS4KKworICAgIENDUmVuZGVyU3VyZmFjZSogZHJhd2luZ1N1
cmZhY2UgPSBxdWFkLT5sYXllcigpLT5yZW5kZXJTdXJmYWNlKCk7CisgICAgaWYgKGRyYXdpbmdT
dXJmYWNlLT5iYWNrZ3JvdW5kRmlsdGVycygpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gRklYTUU6IFdlIG9ubHkgYWxsb3cgYmFja2dyb3VuZCBmaWx0ZXJzIG9uIHRoZSBy
b290IHJlbmRlciBzdXJmYWNlIGJlY2F1c2Ugb3RoZXIgc3VyZmFjZXMgbWF5IGNvbnRhaW4KKyAg
ICAvLyB0cmFuc2x1Y2VudCBwaXhlbHMsIGFuZCB0aGUgY29udGVudHMgYmVoaW5kIHRob3NlIHRy
YW5zbHVjZW50IHBpeGVscyB3b3VsZG4ndCBoYXZlIHRoZSBmaWx0ZXIgYXBwbGllZC4KKyAgICBp
ZiAoIWlzQ3VycmVudFJlbmRlclN1cmZhY2UobV9kZWZhdWx0UmVuZGVyU3VyZmFjZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdXJmYWNlRHJh
d1RyYW5zZm9ybSA9IHF1YWQtPmlzUmVwbGljYSgpID8gZHJhd2luZ1N1cmZhY2UtPnJlcGxpY2FE
cmF3VHJhbnNmb3JtKCkgOiBkcmF3aW5nU3VyZmFjZS0+ZHJhd1RyYW5zZm9ybSgpOworCisgICAg
Ly8gRklYTUU6IERvIGEgc2luZ2xlIHJlYWRiYWNrIGZvciBib3RoIHRoZSBzdXJmYWNlIGFuZCBy
ZXBsaWNhIGFuZCBjYWNoZSB0aGUgZmlsdGVyZWQgcmVzdWx0cyAob25jZSBmaWx0ZXIgdGV4dHVy
ZXMgYXJlIG5vdCByZXVzZWQpLgorICAgIEludFJlY3QgZGV2aWNlUmVjdCA9IGRyYXdpbmdTdXJm
YWNlLT5yZWFkYmFja0RldmljZUNvbnRlbnRSZWN0KHRoaXMsIHN1cmZhY2VEcmF3VHJhbnNmb3Jt
KTsKKyAgICBkZXZpY2VSZWN0LmludGVyc2VjdChtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5jb250
ZW50UmVjdCgpKTsKKworICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gZGV2aWNlQmFja2dyb3Vu
ZFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1fcmVuZGVyU3VyZmFjZVRleHR1cmVN
YW5hZ2VyLmdldCgpKTsKKyAgICBpZiAoIWdldEZyYW1lYnVmZmVyVGV4dHVyZShkZXZpY2VCYWNr
Z3JvdW5kVGV4dHVyZS5nZXQoKSwgZGV2aWNlUmVjdCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFNrQml0bWFwIGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZCA9IGRyYXdpbmdTdXJmYWNlLT5hcHBs
eUZpbHRlcnModGhpcywgZHJhd2luZ1N1cmZhY2UtPmJhY2tncm91bmRGaWx0ZXJzKCksIGRldmlj
ZUJhY2tncm91bmRUZXh0dXJlLmdldCgpKTsKKyAgICBpZiAoIWZpbHRlcmVkRGV2aWNlQmFja2dy
b3VuZC5nZXRUZXh0dXJlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEdyVGV4dHVyZSogdGV4
dHVyZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JUZXh0dXJlKj4oZmlsdGVyZWREZXZpY2VCYWNrZ3Jv
dW5kLmdldFRleHR1cmUoKSk7CisgICAgaW50IGZpbHRlcmVkRGV2aWNlQmFja2dyb3VuZFRleHR1
cmVJZCA9IHRleHR1cmUtPmdldFRleHR1cmVIYW5kbGUoKTsKKworICAgIGlmICghZHJhd2luZ1N1
cmZhY2UtPnByZXBhcmVCYWNrZ3JvdW5kVGV4dHVyZSh0aGlzKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gVGhpcyBtdXN0IGJlIGNvbXB1dGVkIGJlZm9yZSBzd2l0Y2hpbmcgdGhlIHRhcmdl
dCByZW5kZXIgc3VyZmFjZSB0byB0aGUgYmFja2dyb3VuZCB0ZXh0dXJlLgorICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtID0gZHJhd2luZ1N1cmZhY2UtPmNv
bXB1dGVEZXZpY2VUcmFuc2Zvcm0odGhpcywgc3VyZmFjZURyYXdUcmFuc2Zvcm0pOworCisgICAg
Q0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRSZW5kZXJTdXJmYWNlID0gbV9jdXJyZW50UmVuZGVyU3Vy
ZmFjZTsKKyAgICBpZiAodXNlTWFuYWdlZFRleHR1cmUoZHJhd2luZ1N1cmZhY2UtPmJhY2tncm91
bmRUZXh0dXJlKCksIGRyYXdpbmdTdXJmYWNlLT5jb250ZW50UmVjdCgpKSkgeworICAgICAgICBk
cmF3aW5nU3VyZmFjZS0+Y29weURldmljZVRvQmFja2dyb3VuZFRleHR1cmUodGhpcywgZmlsdGVy
ZWREZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZpY2VSZWN0LCBjb250ZW50c0RldmljZVRy
YW5zZm9ybSk7CisgICAgICAgIHVzZVJlbmRlclN1cmZhY2UodGFyZ2V0UmVuZGVyU3VyZmFjZSk7
CisgICAgfQorfQorCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1cmZh
Y2VRdWFkKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBxdWFkKQogewogICAgIENDTGF5
ZXJJbXBsKiBsYXllciA9IHF1YWQtPmxheWVyKCk7CisKKyAgICBkcmF3QmFja2dyb3VuZEZpbHRl
cnMocXVhZCk7CisKICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5zZXRTY2lzc29yUmVjdCh0
aGlzLCBxdWFkLT5zdXJmYWNlRGFtYWdlUmVjdCgpKTsKICAgICBpZiAocXVhZC0+aXNSZXBsaWNh
KCkpCiAgICAgICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdSZXBsaWNhKHRoaXMpOwog
ICAgIGVsc2UKICAgICAgICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+ZHJhd0NvbnRlbnRzKHRo
aXMpOworICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPnJlbGVhc2VCYWNrZ3JvdW5kVGV4dHVy
ZSgpOwogICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPnJlbGVhc2VDb250ZW50c1RleHR1cmUo
KTsKIH0KIApAQCAtMTIxOCw2ICsxMjc4LDE3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpnZXRGcmFtZWJ1ZmZlclBpeGVscyh2b2lkICpwaXhlbHMsIGNvbnN0IEludFJlY3QmIHJlCiAg
ICAgfQogfQogCitib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Z2V0RnJhbWVidWZmZXJUZXh0
dXJlKE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBkZXZpY2VSZWN0KQor
eworICAgIGlmICghdGV4dHVyZS0+cmVzZXJ2ZShkZXZpY2VSZWN0LnNpemUoKSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHRleHR1cmUtPmJp
bmRUZXh0dXJlKG1fY29udGV4dC5nZXQoKSwgbV9yZW5kZXJTdXJmYWNlVGV4dHVyZUFsbG9jYXRv
ci5nZXQoKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jb3B5VGV4SW1hZ2UyRChH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgdGV4dHVyZS0+Zm9ybWF0KCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VSZWN0LngoKSwg
ZGV2aWNlUmVjdC55KCksIGRldmljZVJlY3Qud2lkdGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwg
MCkpOworICAgIHJldHVybiB0cnVlOworfQorCiBNYW5hZ2VkVGV4dHVyZSogTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpnZXRPZmZzY3JlZW5MYXllclRleHR1cmUoKQogewogICAgIHJldHVybiBzZXR0
aW5ncygpLmNvbXBvc2l0ZU9mZnNjcmVlbiAmJiByb290TGF5ZXIoKSA/IHJvb3RMYXllcigpLT5y
ZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRzVGV4dHVyZSgpIDogMDsKQEAgLTEyNDEsOSArMTMxMiwx
OCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkoKQogICAgIH0KIH0KIAorYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmlzQ3VycmVu
dFJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlKQoreworICAgIHJl
dHVybiBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID09IHJlbmRlclN1cmZhY2UgJiYgIW1fY3VycmVu
dE1hbmFnZWRUZXh0dXJlOworfQorCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVu
ZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UpCiB7CisgICAgaWYgKGlz
Q3VycmVudFJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZSkpCisgICAgICAgIHJldHVybiB0cnVl
OworCiAgICAgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7CisgICAgbV9j
dXJyZW50TWFuYWdlZFRleHR1cmUgPSAwOwogCiAgICAgaWYgKChyZW5kZXJTdXJmYWNlID09IG1f
ZGVmYXVsdFJlbmRlclN1cmZhY2UgJiYgIXNldHRpbmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVuKSB8
fCAoIXJlbmRlclN1cmZhY2UgJiYgc2V0dGluZ3MoKS5jb21wb3NpdGVPZmZzY3JlZW4pKSB7CiAg
ICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOwpAQCAtMTI1NCwxMiArMTMzNCwyOCBA
QCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1
cmZhY2UqIHJlbmRlclN1cmZhY2UpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7Ci0KICAg
ICBpZiAoIXJlbmRlclN1cmZhY2UtPnByZXBhcmVDb250ZW50c1RleHR1cmUodGhpcykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJlbmRlclN1cmZhY2UtPmNvbnRlbnRzVGV4dHVyZSgp
LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChtX2NvbnRleHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRl
eHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1
cmUocmVuZGVyU3VyZmFjZS0+Y29udGVudHNUZXh0dXJlKCksIHJlbmRlclN1cmZhY2UtPmNvbnRl
bnRSZWN0KCkpOworfQorCitib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlTWFuYWdlZFRl
eHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVj
dCkKK3sKKyAgICBpZiAobV9jdXJyZW50TWFuYWdlZFRleHR1cmUgPT0gdGV4dHVyZSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID0gMDsKKyAgICBt
X2N1cnJlbnRNYW5hZ2VkVGV4dHVyZSA9IHRleHR1cmU7CisKKyAgICByZXR1cm4gYmluZEZyYW1l
YnVmZmVyVG9UZXh0dXJlKHRleHR1cmUsIHZpZXdwb3J0UmVjdCk7Cit9CisKK2Jvb2wgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1cmUq
IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCkKK3sKKyAgICBHTEMobV9jb250
ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOworCisgICAgdGV4dHVyZS0+
ZnJhbWVidWZmZXJUZXh0dXJlMkQobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0
dXJlQWxsb2NhdG9yLmdldCgpKTsKIAogI2lmICFkZWZpbmVkICggTkRFQlVHICkKICAgICBpZiAo
bV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CkBA
IC0xMjY4LDcgKzEzNjQsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVy
U3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UpCiAgICAgfQogI2VuZGlmCiAK
LSAgICBzZXREcmF3Vmlld3BvcnRSZWN0KHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCksIGZh
bHNlKTsKKyAgICBzZXREcmF3Vmlld3BvcnRSZWN0KHZpZXdwb3J0UmVjdCwgZmFsc2UpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMjg4LDcgKzEzODQsNyBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6c2V0U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCkK
ICAgICAvLyBvZiB0aGUgR0wgc2Npc3NvciBpcyB0aGUgYm90dG9tIG9mIG91ciBsYXllci4KICAg
ICAvLyBCdXQsIGlmIHJlbmRlcmluZyB0byBvZmZzY3JlZW4gdGV4dHVyZSwgd2UgcmV2ZXJzZSBv
dXIgc2Vuc2Ugb2YgJ3Vwc2lkZSBkb3duJy4KICAgICBpbnQgc2Npc3Nvclk7Ci0gICAgaWYgKG1f
Y3VycmVudFJlbmRlclN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSAmJiAhc2V0dGlu
Z3MoKS5jb21wb3NpdGVPZmZzY3JlZW4pCisgICAgaWYgKGlzQ3VycmVudFJlbmRlclN1cmZhY2Uo
bV9kZWZhdWx0UmVuZGVyU3VyZmFjZSkgJiYgIXNldHRpbmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVu
KQogICAgICAgICBzY2lzc29yWSA9IG1fY3VycmVudFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0
KCkuaGVpZ2h0KCkgLSAoc2Npc3NvclJlY3QubWF4WSgpIC0gbV9jdXJyZW50UmVuZGVyU3VyZmFj
ZS0+Y29udGVudFJlY3QoKS55KCkpOwogICAgIGVsc2UKICAgICAgICAgc2Npc3NvclkgPSBzY2lz
c29yUmVjdC55KCkgLSBjb250ZW50UmVjdC55KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCmluZGV4IDdjYjllYjU2YTIzNTNiYTgwZDcyMDAxMThiMjk2YTkyZGI4MGRkOGEuLmQ1
MDE1MzE2MGJhZGZmYWVhYjYwOWM0M2Y4NDRlYThkNmIxZDllYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xNDIsNiArMTQyLDcgQEAgcHVibGljOgogICAgIGNvbnN0
IENDVmlkZW9MYXllckltcGw6OlN0cmVhbVRleHR1cmVQcm9ncmFtKiBzdHJlYW1UZXh0dXJlTGF5
ZXJQcm9ncmFtKCk7CiAKICAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVs
cywgY29uc3QgSW50UmVjdCYpOworICAgIGJvb2wgZ2V0RnJhbWVidWZmZXJUZXh0dXJlKE1hbmFn
ZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgZGV2aWNlUmVjdCk7CiAKICAgICBUZXh0dXJlTWFu
YWdlciogcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5k
ZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIuZ2V0KCk7IH0KICAgICBUZXh0dXJlQ29waWVyKiB0ZXh0
dXJlQ29waWVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlQ29waWVyLmdldCgpOyB9CkBAIC0x
NzgsNiArMTc5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IENDRHJhd1F1
YWQqLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KTsKICAgICB2b2lkIGRyYXdD
aGVja2VyYm9hcmRRdWFkKGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqKTsKICAgICB2b2lk
IGRyYXdEZWJ1Z0JvcmRlclF1YWQoY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKik7CisgICAg
dm9pZCBkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQq
KTsKICAgICB2b2lkIGRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VE
cmF3UXVhZCopOwogICAgIHZvaWQgZHJhd1NvbGlkQ29sb3JRdWFkKGNvbnN0IENDU29saWRDb2xv
ckRyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3VGV4dHVyZVF1YWQoY29uc3QgQ0NUZXh0dXJlRHJh
d1F1YWQqKTsKQEAgLTE5Nyw3ICsxOTksMTMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0RHJh
d1ZpZXdwb3J0UmVjdChjb25zdCBJbnRSZWN0JiwgYm9vbCBmbGlwWSk7CiAKKyAgICAvLyBUaGUg
Y3VycmVudCBkcmF3aW5nIHRhcmdldCBpcyBlaXRoZXIgYSBSZW5kZXJTdXJmYWNlIG9yIE1hbmFn
ZWRUZXh0dXJlLiBVc2UgdGhlc2UgZnVuY3Rpb25zIHRvIHN3aXRjaCB0byBhIG5ldyBkcmF3aW5n
IHRhcmdldC4KICAgICBib29sIHVzZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKik7Cisg
ICAgYm9vbCB1c2VNYW5hZ2VkVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHZpZXdwb3J0UmVjdCk7CisgICAgYm9vbCBpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKENDUmVuZGVy
U3VyZmFjZSopOworCisgICAgYm9vbCBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRl
eHR1cmUqLCBjb25zdCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpOworCiAgICAgdm9pZCBjbGVhclJl
bmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiwgQ0NSZW5kZXJTdXJmYWNlKiByb290UmVuZGVy
U3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CiAKICAgICB2b2lk
IHJlbGVhc2VSZW5kZXJTdXJmYWNlVGV4dHVyZXMoKTsKQEAgLTIyMiw2ICsyMzAsNyBAQCBwcml2
YXRlOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fd2luZG93TWF0cml4OwogCiAgICAgQ0NS
ZW5kZXJTdXJmYWNlKiBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlOworICAgIE1hbmFnZWRUZXh0dXJl
KiBtX2N1cnJlbnRNYW5hZ2VkVGV4dHVyZTsKICAgICB1bnNpZ25lZCBtX29mZnNjcmVlbkZyYW1l
YnVmZmVySWQ7CiAKICAgICAvLyBTdG9yZSB2YWx1ZXMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4g
aW5zdGFuY2VzIG9mIGVhY2ggbGF5ZXIgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21p
dW0uaAppbmRleCA4M2EyMWQ5ZDk3MDg2Y2MyZGQyYWE0Zjg2YzI1YzJmZTY1YWUzYzQ4Li45YTg0
ZWJiNGUzODU0M2YwM2Y1MWY3YmJkNzQxNDIzNTMyYzdkOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJT
dXJmYWNlQ2hyb21pdW0uaApAQCAtOTMsNiArOTMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9maWx0ZXJzID0gZmls
dGVyczsgfQogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbHRlcnM7IH0KIAorICAgIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgeyBtX2JhY2tncm91bmRGaWx0ZXJzID0gZmlsdGVy
czsgfQorICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQorCiAgICAgYm9vbCBza2lwc0RyYXco
KSBjb25zdCB7IHJldHVybiBtX3NraXBzRHJhdzsgfQogICAgIHZvaWQgc2V0U2tpcHNEcmF3KGJv
b2wgc2tpcHNEcmF3KSB7IG1fc2tpcHNEcmF3ID0gc2tpcHNEcmF3OyB9CiAKQEAgLTEyMiw2ICsx
MjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV90YXJnZXRTdXJmYWNlVHJhbnNmb3Jtc0FyZUFu
aW1hdGluZzsKICAgICBib29sIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nOwog
ICAgIEZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOworICAgIEZpbHRlck9wZXJhdGlvbnMgbV9i
YWNrZ3JvdW5kRmlsdGVyczsKICAgICBJbnRSZWN0IG1fY2xpcFJlY3Q7CiAgICAgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IG1fbGF5ZXJMaXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5j
cHAKaW5kZXggODUwODA1ZWU3ZjdhZDRlMzk1MzdmODhhMGE2MDkxNDJhODM2NDE1YS4uNzgyOTRi
YWEyMTBjMTc1MWJlYTg5NmUwYTUwM2M0ZDJkOTU2NzRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmNwcApAQCAtMzY0LDYgKzM2NCwxNSBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRGaWx0ZXJzKGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFu
Z2VkRm9yU3VidHJlZSgpOwogfQogCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kRmls
dGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycykKK3sKKyAgICBp
ZiAobV9iYWNrZ3JvdW5kRmlsdGVycyA9PSBiYWNrZ3JvdW5kRmlsdGVycykKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9iYWNrZ3JvdW5kRmlsdGVycyA9IGJhY2tncm91bmRGaWx0ZXJzOworICAg
IG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQgPSB0cnVlOworfQorCiB2b2lkIENDTGF5ZXJJbXBsOjpz
ZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKIHsKICAgICBpZiAobV9tYXNrc1Rv
Qm91bmRzID09IG1hc2tzVG9Cb3VuZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCAwNTU5NDRm
OWZjMDA4NzE0NTQyYmZhZWNlOGNlZTRkOGFkODBlZTg2Li4zZjA4ZDY4Y2E2OTc5NTFjMGEzZDc1
MWQxNmNkNjVkMmE3YzU1ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTExMCw2ICsxMTAs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
KTsKICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9maWx0ZXJzOyB9CiAKKyAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmKTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmls
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKwogICAgIHZvaWQg
c2V0TWFza3NUb0JvdW5kcyhib29sKTsKICAgICBib29sIG1hc2tzVG9Cb3VuZHMoKSBjb25zdCB7
IHJldHVybiBtX21hc2tzVG9Cb3VuZHM7IH0KIApAQCAtMzM1LDYgKzMzOCw3IEBAIHByaXZhdGU6
CiAgICAgU3RyaW5nIG1fZGVidWdOYW1lOwogCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRl
cnM7CisgICAgRmlsdGVyT3BlcmF0aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOwogCiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggbV9kcmF3VHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Q29tbW9uLmNwcAppbmRleCBhOTlmMTVhNTgxMjk3YjgyMWM4ZWE3OTVhZjhlMzhjZWQ2YTkz
MzljLi42MDAyMGI1ZjU1NGVlNTJiYTI1ZjJkMmQ1MDNiZWFkNjk0YjNhYTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBz
dGF0aWMgYm9vbCBzdWJ0cmVlU2hvdWxkUmVuZGVyVG9TZXBhcmF0ZVN1cmZhY2UoTGF5ZXJUeXBl
KiBsYXllciwgYm9vbCBheGlzQWxpZwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElm
IHRoZSBsYXllciB1c2VzIGEgQ1NTIGZpbHRlci4KLSAgICBpZiAoIWxheWVyLT5maWx0ZXJzKCku
aXNFbXB0eSgpKQorICAgIGlmICghbGF5ZXItPmZpbHRlcnMoKS5pc0VtcHR5KCkgfHwgIWxheWVy
LT5iYWNrZ3JvdW5kRmlsdGVycygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAvLyBJZiB0aGUgbGF5ZXIgZmxhdHRlbnMgaXRzIHN1YnRyZWUgKGkuZS4gdGhlIGxheWVy
IGRvZXNuJ3QgcHJlc2VydmUtM2QpLCBidXQgaXQgaXMKQEAgLTQ1MSw2ICs0NTEsOCBAQCBzdGF0
aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXll
clR5cGUqIGxheWVyLCBMYXllcgogICAgICAgICAgICAgbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVz
UGl4ZWxzID0gcmVuZGVyU3VyZmFjZTsKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0TmVhcmVz
dEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyk7
CiAKKyAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0QmFja2dyb3VuZEZpbHRlcnMobGF5ZXItPmJh
Y2tncm91bmRGaWx0ZXJzKCkpOworCiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBw
ZW5kKGxheWVyKTsKICAgICB9IGVsc2UgewogICAgICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9y
bShjb21iaW5lZFRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRl
eCBjNDc5M2E1YjI0YzZiMTk2MDQyZWYwZjFkYjY0N2EyOWVkM2I4MDE4Li5jOGI5MWNmYzZkN2Q1
NDRlOWNkMWZkNDVhNzRmNWE4MjY2MDI1OTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFj
ZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgRmxvYXRSZWN0IENDUmVuZGVyU3VyZmFjZTo6ZHJhd2Fi
bGVDb250ZW50UmVjdCgpIGNvbnN0CiAgICAgRmxvYXRSZWN0IGxvY2FsQ29udGVudFJlY3QoLTAu
NSAqIG1fY29udGVudFJlY3Qud2lkdGgoKSwgLTAuNSAqIG1fY29udGVudFJlY3QuaGVpZ2h0KCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50UmVjdC53aWR0aCgpLCBt
X2NvbnRlbnRSZWN0LmhlaWdodCgpKTsKICAgICBGbG9hdFJlY3QgZHJhd2FibGVDb250ZW50UmVj
dCA9IG1fZHJhd1RyYW5zZm9ybS5tYXBSZWN0KGxvY2FsQ29udGVudFJlY3QpOwotICAgIGlmICht
X293bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICBpZiAoaGFzUmVwbGljYSgpKQogICAg
ICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRlKG1fcmVwbGljYURyYXdUcmFuc2Zvcm0ubWFw
UmVjdChsb2NhbENvbnRlbnRSZWN0KSk7CiAKICAgICByZXR1cm4gZHJhd2FibGVDb250ZW50UmVj
dDsKQEAgLTEwNCw2ICsxMDQsMTEwIEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpyZWxlYXNlQ29u
dGVudHNUZXh0dXJlKCkKICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+dW5yZXNlcnZlKCk7CiB9CiAK
K2Jvb2wgQ0NSZW5kZXJTdXJmYWNlOjpwcmVwYXJlQmFja2dyb3VuZFRleHR1cmUoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQoreworICAgIEludFNpemUgcmVxdWlyZWRTaXpl
KG1fY29udGVudFJlY3Quc2l6ZSgpKTsKKyAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFn
ZXIgPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKTsKKworICAg
IGlmICghbV9iYWNrZ3JvdW5kVGV4dHVyZSkKKyAgICAgICAgbV9iYWNrZ3JvdW5kVGV4dHVyZSA9
IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIpOworCisgICAgaWYgKG1fYmFj
a2dyb3VuZFRleHR1cmUtPmlzUmVzZXJ2ZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBpZiAoIW1fYmFja2dyb3VuZFRleHR1cmUtPnJlc2VydmUocmVxdWlyZWRTaXplLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6cmVsZWFzZUJhY2tncm91bmRUZXh0dXJl
KCkKK3sKKyAgICBpZiAoIW1fYmFja2dyb3VuZFRleHR1cmUpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2JhY2tncm91bmRUZXh0dXJlLT51bnJlc2VydmUoKTsKK30KKworVHJhbnNmb3JtYXRpb25N
YXRyaXggQ0NSZW5kZXJTdXJmYWNlOjpjb21wdXRlRGV2aWNlVHJhbnNmb3JtKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRy
YXdUcmFuc2Zvcm0pIGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyVHJh
bnNmb3JtID0gZHJhd1RyYW5zZm9ybTsKKyAgICAvLyBBcHBseSBhIHNjYWxpbmcgZmFjdG9yIHRv
IHNpemUgdGhlIHF1YWQgZnJvbSAxeDEgdG8gaXRzIGludGVuZGVkIHNpemUuCisgICAgcmVuZGVy
VHJhbnNmb3JtLnNjYWxlM2QobV9jb250ZW50UmVjdC53aWR0aCgpLCBtX2NvbnRlbnRSZWN0Lmhl
aWdodCgpLCAxKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VUcmFuc2Zvcm0gPSBU
cmFuc2Zvcm1hdGlvbk1hdHJpeChsYXllclJlbmRlcmVyLT53aW5kb3dNYXRyaXgoKSAqIGxheWVy
UmVuZGVyZXItPnByb2plY3Rpb25NYXRyaXgoKSAqIHJlbmRlclRyYW5zZm9ybSkudG8yZFRyYW5z
Zm9ybSgpOworICAgIHJldHVybiBkZXZpY2VUcmFuc2Zvcm07Cit9CisKK0ludFJlY3QgQ0NSZW5k
ZXJTdXJmYWNlOjpjb21wdXRlRGV2aWNlQm91bmRpbmdCb3goTGF5ZXJSZW5kZXJlckNocm9taXVt
KiBsYXllclJlbmRlcmVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9y
bSkgY29uc3QKK3sKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50c0RldmljZVRyYW5z
Zm9ybSA9IGNvbXB1dGVEZXZpY2VUcmFuc2Zvcm0obGF5ZXJSZW5kZXJlciwgZHJhd1RyYW5zZm9y
bSk7CisKKyAgICAvLyBDYW4gb25seSBkcmF3IHN1cmZhY2UgaWYgZGV2aWNlIG1hdHJpeCBpcyBp
bnZlcnRpYmxlLgorICAgIGlmICghY29udGVudHNEZXZpY2VUcmFuc2Zvcm0uaXNJbnZlcnRpYmxl
KCkpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisKKyAgICBGbG9hdFF1YWQgZGV2aWNlUXVh
ZCA9IGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtLm1hcFF1YWQobGF5ZXJSZW5kZXJlci0+c2hhcmVk
R2VvbWV0cnlRdWFkKCkpOworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGRldmljZVF1YWQu
Ym91bmRpbmdCb3goKSk7Cit9CisKK0ludFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpjb21wdXRlUmVh
ZGJhY2tEZXZpY2VCb3VuZGluZ0JveChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVy
ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdAorewor
ICAgIEludFJlY3QgZGV2aWNlUmVjdCA9IGNvbXB1dGVEZXZpY2VCb3VuZGluZ0JveChsYXllclJl
bmRlcmVyLCBkcmF3VHJhbnNmb3JtKTsKKworICAgIGlmIChtX2JhY2tncm91bmRGaWx0ZXJzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGRldmljZVJlY3Q7CisKKyAgICBpbnQgdG9wLCByaWdo
dCwgYm90dG9tLCBsZWZ0OworICAgIG1fYmFja2dyb3VuZEZpbHRlcnMuZ2V0T3V0c2V0cyh0b3As
IHJpZ2h0LCBib3R0b20sIGxlZnQpOworICAgIGRldmljZVJlY3QubW92ZSgtbGVmdCwgLXRvcCk7
CisgICAgZGV2aWNlUmVjdC5leHBhbmQobGVmdCArIHJpZ2h0LCB0b3AgKyBib3R0b20pOworCisg
ICAgcmV0dXJuIGRldmljZVJlY3Q7Cit9CisKK0ludFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpyZWFk
YmFja0RldmljZUNvbnRlbnRSZWN0KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJl
ciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNvbXB1dGVSZWFkYmFja0RldmljZUJvdW5kaW5nQm94KGxheWVyUmVuZGVyZXIs
IGRyYXdUcmFuc2Zvcm0pOworfQorCitzdGF0aWMgdm9pZCBjb3B5VGV4dHVyZVRvRnJhbWVidWZm
ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBpbnQgdGV4dHVyZUlkLCBj
b25zdCBJbnRTaXplJiBib3VuZHMsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0
cml4KQoreworICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxh
eWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CisKKyAgICBHTEMobGF5ZXJSZW5k
ZXJlci0+Y29udGV4dCgpLCBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPmFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CisgICAgR0xDKGxheWVyUmVuZGVyZXItPmNv
bnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZUlkKSk7CisgICAgR0xDKGxheWVyUmVuZGVyZXIt
PmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5f
RklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgR0xDKGxheWVyUmVuZGVy
ZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9N
QUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisKKyAgICBHTEMobGF5ZXJS
ZW5kZXJlci0+Y29udGV4dCgpLCBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPnVzZVByb2dyYW0o
cHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CisgICAgR0xDKGxheWVyUmVuZGVyZXItPmNvbnRleHQoKSwg
bGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFk
ZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOworICAgIGxheWVyUmVuZGVyZXItPmRyYXdUZXh0
dXJlZFF1YWQoZHJhd01hdHJpeCwgYm91bmRzLndpZHRoKCksIGJvdW5kcy5oZWlnaHQoKSwgMSwg
bGF5ZXJSZW5kZXJlci0+c2hhcmVkR2VvbWV0cnlRdWFkKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRT
aGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAtMSk7Cit9CisKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpjb3B5RGV2aWNlVG9CYWNrZ3Jv
dW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGludCBkZXZp
Y2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBkZXZpY2VUZXh0dXJlUmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoIW1fYmFja2dyb3VuZEZpbHRlcnMuaXNFbXB0eSgpKTsKKworICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybTsKKyAgICBkZXZpY2VUb1N1cmZh
Y2VUcmFuc2Zvcm0udHJhbnNsYXRlKG1fY29udGVudFJlY3Qud2lkdGgoKSAvIDIuMCwgbV9jb250
ZW50UmVjdC5oZWlnaHQoKSAvIDIuMCk7CisgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnNj
YWxlM2QobV9jb250ZW50UmVjdC53aWR0aCgpLCBtX2NvbnRlbnRSZWN0LmhlaWdodCgpLCAxKTsK
KyAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0gKj0gZGV2aWNlVHJhbnNmb3JtLmludmVyc2Uo
KTsKKyAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVRleHR1cmVS
ZWN0LndpZHRoKCkgLyAyLjAsIGRldmljZVRleHR1cmVSZWN0LmhlaWdodCgpIC8gMi4wKTsKKyAg
ICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVRleHR1cmVSZWN0Lngo
KSwgZGV2aWNlVGV4dHVyZVJlY3QueSgpKTsKKworICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZl
cihsYXllclJlbmRlcmVyLCBkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZpY2VUZXh0dXJl
UmVjdC5zaXplKCksIGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybSk7Cit9CisKK2lubGluZSBzdGF0
aWMgaW50IGdldFNrQml0bWFwVGV4dHVyZUlkKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGludCBm
YWxsYmFjaykKK3sKKyAgICBpZiAoIWJpdG1hcC5nZXRUZXh0dXJlKCkpCisgICAgICAgIHJldHVy
biBmYWxsYmFjazsKKyAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJldF9jYXN0PEdy
VGV4dHVyZSo+KGJpdG1hcC5nZXRUZXh0dXJlKCkpOworICAgIHJldHVybiB0ZXh0dXJlLT5nZXRU
ZXh0dXJlSGFuZGxlKCk7Cit9CisKIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpzZXRTY2lzc29yUmVj
dChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYg
c3VyZmFjZURhbWFnZVJlY3QpIGNvbnN0CiB7CiAgICAgaWYgKG1fb3duaW5nTGF5ZXItPnBhcmVu
dCgpICYmIG1fb3duaW5nTGF5ZXItPnBhcmVudCgpLT51c2VzTGF5ZXJDbGlwcGluZygpICYmIGxh
eWVyUmVuZGVyZXItPmNhcGFiaWxpdGllcygpLnVzaW5nUGFydGlhbFN3YXApIHsKQEAgLTEyNCw4
ICsyMjgsMTEgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdDb250ZW50cyhMYXllclJlbmRl
cmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJ
WE1FOiBDYWNoZSB0aGlzIHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBkbyBpdCBmb3Ig
Ym90aCB0aGUgc3VyZmFjZSBhbmQgaXRzIHJlcGxpY2EuCi0gICAgU2tCaXRtYXAgZmlsdGVyQml0
bWFwID0gYXBwbHlGaWx0ZXJzKGxheWVyUmVuZGVyZXIpOwotICAgIGRyYXdMYXllcihsYXllclJl
bmRlcmVyLCBtX21hc2tMYXllciwgbV9kcmF3VHJhbnNmb3JtLCBmaWx0ZXJCaXRtYXApOworICAg
IC8vIEFwcGx5IGZpbHRlcnMgdG8gdGhlIGNvbnRlbnRzIHRleHR1cmUuCisgICAgU2tCaXRtYXAg
ZmlsdGVyQml0bWFwID0gYXBwbHlGaWx0ZXJzKGxheWVyUmVuZGVyZXIsIG1fZmlsdGVycywgbV9j
b250ZW50c1RleHR1cmUuZ2V0KCkpOworCisgICAgaW50IGNvbnRlbnRzVGV4dHVyZUlkID0gZ2V0
U2tCaXRtYXBUZXh0dXJlSWQoZmlsdGVyQml0bWFwLCBtX2NvbnRlbnRzVGV4dHVyZS0+dGV4dHVy
ZUlkKCkpOworICAgIGRyYXdMYXllcihsYXllclJlbmRlcmVyLCBtX21hc2tMYXllciwgbV9kcmF3
VHJhbnNmb3JtLCBjb250ZW50c1RleHR1cmVJZCk7CiB9CiAKIHZvaWQgQ0NSZW5kZXJTdXJmYWNl
OjpkcmF3UmVwbGljYShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCkBAIC0x
MzQsNyArMjQxLDkgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdSZXBsaWNhKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKICAgICBpZiAoIWhhc1JlcGxpY2EoKSB8fCBt
X3NraXBzRHJhdyB8fCAhbV9jb250ZW50c1RleHR1cmUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFNrQml0bWFwIGZpbHRlckJpdG1hcCA9IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyKTsKKyAg
ICAvLyBBcHBseSBmaWx0ZXJzIHRvIHRoZSBjb250ZW50cyB0ZXh0dXJlLgorICAgIFNrQml0bWFw
IGZpbHRlckJpdG1hcCA9IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyLCBtX2ZpbHRlcnMsIG1f
Y29udGVudHNUZXh0dXJlLmdldCgpKTsKKwogICAgIC8vIEZJWE1FOiBCeSB1c2luZyB0aGUgc2Ft
ZSBSZW5kZXJTdXJmYWNlIGZvciBib3RoIHRoZSBjb250ZW50IGFuZCBpdHMgcmVmbGVjdGlvbiwK
ICAgICAvLyBpdCdzIGN1cnJlbnRseSBub3QgcG9zc2libGUgdG8gYXBwbHkgYSBzZXBhcmF0ZSBt
YXNrIHRvIHRoZSByZWZsZWN0aW9uIGxheWVyCiAgICAgLy8gb3IgY29ycmVjdGx5IGhhbmRsZSBv
cGFjaXR5IGluIHJlZmxlY3Rpb25zIChvcGFjaXR5IG11c3QgYmUgYXBwbGllZCBhZnRlciBkcmF3
aW5nCkBAIC0xNDUsMjEgKzI1NCwyMiBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1JlcGxp
Y2EoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgIGlmICghbV9tYXNr
TGF5ZXIgJiYgbV9vd25pbmdMYXllci0+cmVwbGljYUxheWVyKCkpCiAgICAgICAgIHJlcGxpY2FN
YXNrTGF5ZXIgPSBtX293bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCk7CiAK
LSAgICBkcmF3TGF5ZXIobGF5ZXJSZW5kZXJlciwgcmVwbGljYU1hc2tMYXllciwgbV9yZXBsaWNh
RHJhd1RyYW5zZm9ybSwgZmlsdGVyQml0bWFwKTsKKyAgICBpbnQgY29udGVudHNUZXh0dXJlSWQg
PSBnZXRTa0JpdG1hcFRleHR1cmVJZChmaWx0ZXJCaXRtYXAsIG1fY29udGVudHNUZXh0dXJlLT50
ZXh0dXJlSWQoKSk7CisgICAgZHJhd0xheWVyKGxheWVyUmVuZGVyZXIsIHJlcGxpY2FNYXNrTGF5
ZXIsIG1fcmVwbGljYURyYXdUcmFuc2Zvcm0sIGNvbnRlbnRzVGV4dHVyZUlkKTsKIH0KIAotdm9p
ZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdMYXllcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVy
UmVuZGVyZXIsIENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBTa0JpdG1hcCYgZmlsdGVyQml0bWFwKQordm9pZCBD
Q1JlbmRlclN1cmZhY2U6OmRyYXdMYXllcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVu
ZGVyZXIsIENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkcmF3VHJhbnNmb3JtLCBpbnQgY29udGVudHNUZXh0dXJlSWQpCiB7Ci0gICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggcmVuZGVyTWF0cml4ID0gZHJhd1RyYW5zZm9ybTsKLSAgICAvLyBBcHBseSBh
IHNjYWxpbmcgZmFjdG9yIHRvIHNpemUgdGhlIHF1YWQgZnJvbSAxeDEgdG8gaXRzIGludGVuZGVk
IHNpemUuCi0gICAgcmVuZGVyTWF0cml4LnNjYWxlM2QobV9jb250ZW50UmVjdC53aWR0aCgpLCBt
X2NvbnRlbnRSZWN0LmhlaWdodCgpLCAxKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRl
dmljZU1hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KGxheWVyUmVuZGVyZXItPndpbmRvd01h
dHJpeCgpICogbGF5ZXJSZW5kZXJlci0+cHJvamVjdGlvbk1hdHJpeCgpICogcmVuZGVyTWF0cml4
KS50bzJkVHJhbnNmb3JtKCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlTWF0cml4
ID0gY29tcHV0ZURldmljZVRyYW5zZm9ybShsYXllclJlbmRlcmVyLCBkcmF3VHJhbnNmb3JtKTsK
IAogICAgIC8vIENhbiBvbmx5IGRyYXcgc3VyZmFjZSBpZiBkZXZpY2UgbWF0cml4IGlzIGludmVy
dGlibGUuCiAgICAgaWYgKCFkZXZpY2VNYXRyaXguaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIC8vIERyYXcgdGhlIGJhY2tncm91bmQgdGV4dHVyZSBpZiB0aGVyZSBpcyBv
bmUuCisgICAgaWYgKG1fYmFja2dyb3VuZFRleHR1cmUgJiYgbV9iYWNrZ3JvdW5kVGV4dHVyZS0+
aXNSZXNlcnZlZCgpKQorICAgICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIobGF5ZXJSZW5k
ZXJlciwgbV9iYWNrZ3JvdW5kVGV4dHVyZS0+dGV4dHVyZUlkKCksIG1fY29udGVudFJlY3Quc2l6
ZSgpLCBkcmF3VHJhbnNmb3JtKTsKKwogICAgIEZsb2F0UXVhZCBxdWFkID0gZGV2aWNlTWF0cml4
Lm1hcFF1YWQobGF5ZXJSZW5kZXJlci0+c2hhcmVkR2VvbWV0cnlRdWFkKCkpOwogICAgIENDTGF5
ZXJRdWFkIGRldmljZVJlY3QgPSBDQ0xheWVyUXVhZChGbG9hdFF1YWQocXVhZC5ib3VuZGluZ0Jv
eCgpKSk7CiAgICAgQ0NMYXllclF1YWQgbGF5ZXJRdWFkID0gQ0NMYXllclF1YWQocXVhZCk7CkBA
IC0xNzcsMjcgKzI4NywyOSBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd0xheWVyKExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgQ0NMYXllckltcAogICAgICAgICBpZiAo
IW1hc2tMYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgdXNlTWFzayA9IHRy
dWU7CiAKKyAgICAvLyBGSVhNRTogcGFzcyBpbiBiYWNrZ3JvdW5kVGV4dHVyZUlkIGFuZCBibGVu
ZCB0aGUgYmFja2dyb3VuZCBpbiB3aXRoIHRoaXMgZHJhdyBpbnN0ZWFkIG9mIGhhdmluZyBhIHNl
cGFyYXRlIGRyYXdCYWNrZ3JvdW5kKCkgcGFzcy4KKwogICAgIGlmICh1c2VNYXNrKSB7CiAgICAg
ICAgIGlmICh1c2VBQSkgewogICAgICAgICAgICAgY29uc3QgTWFza1Byb2dyYW1BQSogcHJvZ3Jh
bSA9IGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKCk7Ci0gICAgICAg
ICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0s
IGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCBwcm9ncmFtLT5m
cmFnbWVudFNoYWRlcigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgcHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkucG9pbnRMb2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2Nh
dGlvbigpLCBmaWx0ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5k
ZXJlciwgbWFza0xheWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3Qs
IGxheWVyUXVhZCwgY29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIHByb2dyYW0tPmZyYWdtZW50
U2hhZGVyKCkubWFza1NhbXBsZXJMb2NhdGlvbigpLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5w
b2ludExvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCkp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29uc3QgTWFza1Byb2dyYW0qIHByb2dy
YW0gPSBsYXllclJlbmRlcmVyLT5yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0oKTsKLSAgICAgICAg
ICAgIGRyYXdTdXJmYWNlKGxheWVyUmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5zZm9ybSwg
ZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIHByb2dyYW0sIHByb2dyYW0tPmZy
YWdtZW50U2hhZGVyKCkubWFza1NhbXBsZXJMb2NhdGlvbigpLCAtMSwgLTEsIGZpbHRlckJpdG1h
cCk7CisgICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRy
YXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBjb250ZW50
c1RleHR1cmVJZCwgcHJvZ3JhbSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5tYXNrU2FtcGxl
ckxvY2F0aW9uKCksIC0xLCAtMSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAodXNlQUEpIHsKICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1BQSogcHJvZ3JhbSA9IGxheWVy
UmVuZGVyZXItPnJlbmRlclN1cmZhY2VQcm9ncmFtQUEoKTsKLSAgICAgICAgICAgIGRyYXdTdXJm
YWNlKGxheWVyUmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5zZm9ybSwgZGV2aWNlTWF0cml4
LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIHByb2dyYW0sIC0xLCBwcm9ncmFtLT52ZXJ0ZXhTaGFk
ZXIoKS5wb2ludExvY2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0
aW9uKCksIGZpbHRlckJpdG1hcCk7CisgICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRl
cmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwg
bGF5ZXJRdWFkLCBjb250ZW50c1RleHR1cmVJZCwgcHJvZ3JhbSwgLTEsIHByb2dyYW0tPnZlcnRl
eFNoYWRlcigpLnBvaW50TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdl
TG9jYXRpb24oKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBQcm9ncmFt
KiBwcm9ncmFtID0gbGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVByb2dyYW0oKTsKLSAgICAg
ICAgICAgIGRyYXdTdXJmYWNlKGxheWVyUmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5zZm9y
bSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIHByb2dyYW0sIC0xLCAtMSwg
LTEsIGZpbHRlckJpdG1hcCk7CisgICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVy
LCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5
ZXJRdWFkLCBjb250ZW50c1RleHR1cmVJZCwgcHJvZ3JhbSwgLTEsIC0xLCAtMSk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBUPgotdm9pZCBDQ1JlbmRlclN1cmZhY2U6
OmRyYXdTdXJmYWNlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgQ0NMYXll
ckltcGwqIG1hc2tMYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zv
cm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0sIGNvbnN0IEND
TGF5ZXJRdWFkJiBkZXZpY2VSZWN0LCBjb25zdCBDQ0xheWVyUXVhZCYgbGF5ZXJRdWFkLCBjb25z
dCBUKiBwcm9ncmFtLCBpbnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRlclF1
YWRMb2NhdGlvbiwgaW50IHNoYWRlckVkZ2VMb2NhdGlvbiwgY29uc3QgU2tCaXRtYXAmIGZpbHRl
ckJpdG1hcCkKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZShMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZGV2aWNlVHJhbnNmb3JtLCBjb25zdCBDQ0xheWVyUXVhZCYgZGV2aWNlUmVjdCwgY29u
c3QgQ0NMYXllclF1YWQmIGxheWVyUXVhZCwgaW50IGNvbnRlbnRzVGV4dHVyZUlkLCBjb25zdCBU
KiBwcm9ncmFtLCBpbnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRlclF1YWRM
b2NhdGlvbiwgaW50IHNoYWRlckVkZ2VMb2NhdGlvbikKIHsKICAgICBHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dDNEID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogCkBAIC0yMDYsMTEgKzMx
OCw3IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZShMYXllclJlbmRlcmVyQ2hy
b21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJCiAKICAgICBHTEMoY29udGV4dDNELCBjb250
ZXh0M0QtPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAgICAg
R0xDKGNvbnRleHQzRCwgY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFk
ZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwotICAgIGlmIChmaWx0ZXJCaXRtYXAuZ2V0VGV4
dHVyZSgpKSB7Ci0gICAgICAgIEdyVGV4dHVyZSogdGV4dHVyZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
R3JUZXh0dXJlKj4oZmlsdGVyQml0bWFwLmdldFRleHR1cmUoKSk7Ci0gICAgICAgIGNvbnRleHQz
RC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUtPmdl
dFRleHR1cmVIYW5kbGUoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY29udGVudHNUZXh0dXJl
LT5iaW5kVGV4dHVyZShjb250ZXh0M0QsIGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0
dXJlQWxsb2NhdG9yKCkpOworICAgIGNvbnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIGNvbnRlbnRzVGV4dHVyZUlkKTsKIAogICAgIGlmIChzaGFkZXJN
YXNrU2FtcGxlckxvY2F0aW9uICE9IC0xKSB7CiAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRl
eHQzRC0+YWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsKQEAgLTIz
Myw5ICszNDEsOSBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBDQ0xheWVySQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24o
KSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksIHNoYWRlclF1YWRM
b2NhdGlvbik7CiB9CiAKLVNrQml0bWFwIENDUmVuZGVyU3VyZmFjZTo6YXBwbHlGaWx0ZXJzKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK1NrQml0bWFwIENDUmVuZGVyU3Vy
ZmFjZTo6YXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgTWFuYWdlZFRleHR1cmUqIHNvdXJjZVRl
eHR1cmUpCiB7Ci0gICAgaWYgKCFtX2NvbnRlbnRzVGV4dHVyZSB8fCAhbV9maWx0ZXJzLnNpemUo
KSkKKyAgICBpZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTa0JpdG1hcCgp
OwogCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBmaWx0ZXJDb250ZXh0ID0gQ0NQcm94
eTo6aGFzSW1wbFRocmVhZCgpID8gU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZvckltcGxU
aHJlYWQoKSA6IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQoKTsKQEAgLTI0NCw3ICszNTIs
NyBAQCBTa0JpdG1hcCBDQ1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVycyhMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiAKICAgICBsYXllclJlbmRlcmVyLT5jb250ZXh0KCkt
PmZsdXNoKCk7CiAKLSAgICByZXR1cm4gQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHkobV9m
aWx0ZXJzLCBtX2NvbnRlbnRzVGV4dHVyZS0+dGV4dHVyZUlkKCksIG1fY29udGVudFJlY3Quc2l6
ZSgpLCBmaWx0ZXJDb250ZXh0LmdldCgpKTsKKyAgICByZXR1cm4gQ0NSZW5kZXJTdXJmYWNlRmls
dGVyczo6YXBwbHkoZmlsdGVycywgc291cmNlVGV4dHVyZS0+dGV4dHVyZUlkKCksIHNvdXJjZVRl
eHR1cmUtPnNpemUoKSwgZmlsdGVyQ29udGV4dC5nZXQoKSk7CiB9CiAKIFN0cmluZyBDQ1JlbmRl
clN1cmZhY2U6Om5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCA0
MmNkYTMyNmMwMzhmY2JkNDhmYTE4YTZlZjgwZGZlOTQ0ZDhiMTE3Li5mNDEzMmUyMGNmOGY1NDMz
ZTRhZDI0ZGY2YmY5MDZiNWQ4MWU1MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApA
QCAtNTcsMTEgKzU3LDE4IEBAIHB1YmxpYzoKICAgICBib29sIHByZXBhcmVDb250ZW50c1RleHR1
cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CiAgICAgdm9pZCByZWxlYXNlQ29udGVudHNUZXh0
dXJlKCk7CiAKKyAgICBib29sIHByZXBhcmVCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVy
Q2hyb21pdW0qKTsKKyAgICB2b2lkIHJlbGVhc2VCYWNrZ3JvdW5kVGV4dHVyZSgpOworCiAgICAg
dm9pZCBzZXRTY2lzc29yUmVjdChMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBjb25zdCBGbG9hdFJl
Y3QmIHN1cmZhY2VEYW1hZ2VSZWN0KSBjb25zdDsKIAogICAgIHZvaWQgZHJhd0NvbnRlbnRzKExh
eWVyUmVuZGVyZXJDaHJvbWl1bSopOwogICAgIHZvaWQgZHJhd1JlcGxpY2EoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKik7CiAKKyAgICAvLyBUYWtlcyBhIHRleHR1cmUgd2l0aCBwaXhlbHMgaW4gZGV2
aWNlIHNwYWNlLCBhbmQgYSB0cmFuc2Zvcm0gZnJvbSBjb250ZW50IHNwYWNlIHRvIHRoZSBkZXZp
Y2UuIENvcGllcyB0aGUgZGV2aWNlLXNwYWNlIHRleHR1cmUgYmFjayBpbnRvCisgICAgLy8gY29u
dGVudCBzcGFjZSBmb3IgdGhlIHN1cmZhY2UsIHN0b3JpbmcgdGhlIHJlc3VsdCBpbiB0aGUgYmFj
a2dyb3VuZFRleHR1cmUoKS4gVGhlIHN1cmZhY2UncyBiYWNrZ3JvdW5kVGV4dHVyZSgpIG11c3Qg
YmUgdGhlIGFjdGl2ZSBkcmF3aW5nIHRhcmdldC4KKyAgICB2b2lkIGNvcHlEZXZpY2VUb0JhY2tn
cm91bmRUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGludCBkZXZpY2VCYWNrZ3JvdW5k
VGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBkZXZpY2VUZXh0dXJlUmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSkgY29uc3Q7CisKICAgICBTdHJpbmcgbmFt
ZSgpIGNvbnN0OwogICAgIHZvaWQgZHVtcFN1cmZhY2UoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQp
IGNvbnN0OwogCkBAIC02OSwxMyArNzYsMjEgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB0
aGUgcmVjdCB0aGF0IGVuY2xvc2VzIHRoZSBSZW5kZXJTdXJmYWNlIGluY2x1ZGluZyBhbnkgcmVm
bGVjdGlvbi4KICAgICBGbG9hdFJlY3QgZHJhd2FibGVDb250ZW50UmVjdCgpIGNvbnN0OworICAg
IC8vIFJldHVybnMgdGhlIHJlY3QgdGhhdCBlbmNsb3NlcyB0aGUgcGl4ZWxzIHRoYXQgbWF5IGFm
ZmVjdCB0aGUgcGl4ZWwgdmFsdWVzIGluIHRoaXMgc3VyZmFjZSB0aHJvdWdoIGJhY2tncm91bmQg
ZmlsdGVycy4KKyAgICBJbnRSZWN0IHJlYWRiYWNrRGV2aWNlQ29udGVudFJlY3QoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0p
IGNvbnN0OworCisgICAgLy8gR2l2ZXMgdGhlIHRyYW5zZm9ybSBmcm9tIHRoZSBzdXJmYWNlIGNv
bnRlbnQgc3BhY2UsIHdpdGggb3JpZ2luIGluIHRoZSB0b3AgbGVmdCwgdG8gdGhlIGN1cnJlbnQg
dGFyZ2V0IGRldmljZSBzcGFjZSwgd2l0aCBvcmlnaW4gaW4gdGhlIHRvcCBsZWZ0LgorICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGNvbXB1dGVEZXZpY2VUcmFuc2Zvcm0oTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNvbnN0
OwogCiAgICAgZmxvYXQgZHJhd09wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2RyYXdPcGFjaXR5
OyB9CiAgICAgdm9pZCBzZXREcmF3T3BhY2l0eShmbG9hdCBvcGFjaXR5KSB7IG1fZHJhd09wYWNp
dHkgPSBvcGFjaXR5OyB9CiAKICAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycykgeyBtX2ZpbHRlcnMgPSBmaWx0ZXJzOyB9CiAgICAgY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyczsgfQotICAgIFNr
Qml0bWFwIGFwcGx5RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKKyAgICBTa0JpdG1h
cCBhcHBseUZpbHRlcnMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYsIE1hbmFnZWRUZXh0dXJlKiBzb3VyY2VUZXh0dXJlKTsKKworICAgIHZvaWQgc2V0QmFj
a2dyb3VuZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgeyBtX2JhY2tn
cm91bmRGaWx0ZXJzID0gZmlsdGVyczsgfQorICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJh
Y2tncm91bmRGaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQog
CiAgICAgdm9pZCBzZXROZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMoQ0NSZW5kZXJTdXJm
YWNlKiBzdXJmYWNlKSB7IG1fbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzID0gc3VyZmFj
ZTsgfQogICAgIGNvbnN0IENDUmVuZGVyU3VyZmFjZSogbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVz
UGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gbV9uZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHM7
IH0KQEAgLTEyNyw2ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGlu
ZzxWZXJ0ZXhTaGFkZXJRdWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQT4gTWFz
a1Byb2dyYW1BQTsKIAogICAgIE1hbmFnZWRUZXh0dXJlKiBjb250ZW50c1RleHR1cmUoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRzVGV4dHVyZS5nZXQoKTsgfQorICAgIE1hbmFnZWRUZXh0dXJl
KiBiYWNrZ3JvdW5kVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZFRleHR1cmUu
Z2V0KCk7IH0KIAogICAgIGludCBvd25pbmdMYXllcklkKCkgY29uc3Q7CiAKQEAgLTE0Miw5ICsx
NTgsMTIgQEAgcHVibGljOgogICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0
ZVJlcGxpY2FTaGFyZWRRdWFkU3RhdGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGRy
YXdMYXllcihMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBDQ0xheWVySW1wbCosIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgY29uc3QgU2tCaXRtYXAmIGZpbHRlckJpdG1hcCk7CisgICAgSW50
UmVjdCBjb21wdXRlRGV2aWNlQm91bmRpbmdCb3goTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNvbnN0OworICAgIEludFJl
Y3QgY29tcHV0ZVJlYWRiYWNrRGV2aWNlQm91bmRpbmdCb3goTGF5ZXJSZW5kZXJlckNocm9taXVt
KiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNvbnN0OworCisg
ICAgdm9pZCBkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwqLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGludCBjb250ZW50c1RleHR1cmVJZCk7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgdm9pZCBkcmF3U3VyZmFjZShMYXllclJlbmRlcmVyQ2hy
b21pdW0qLCBDQ0xheWVySW1wbCosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJh
bnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtLCBjb25z
dCBDQ0xheWVyUXVhZCYgZGV2aWNlUmVjdCwgY29uc3QgQ0NMYXllclF1YWQmLCBjb25zdCBUKiBw
cm9ncmFtLCBpbnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRlclF1YWRMb2Nh
dGlvbiwgaW50IHNoYWRlckVkZ2VMb2NhdGlvbiwgY29uc3QgU2tCaXRtYXAmIGZpbHRlckJpdG1h
cCk7CisgICAgdm9pZCBkcmF3U3VyZmFjZShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBDQ0xheWVy
SW1wbCosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtLCBjb25zdCBDQ0xheWVyUXVhZCYg
ZGV2aWNlUmVjdCwgY29uc3QgQ0NMYXllclF1YWQmLCBpbnQgY29udGVudHNUZXh0dXJlSWQsIGNv
bnN0IFQqIHByb2dyYW0sIGludCBzaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uLCBpbnQgc2hhZGVy
UXVhZExvY2F0aW9uLCBpbnQgc2hhZGVyRWRnZUxvY2F0aW9uKTsKIAogICAgIENDTGF5ZXJJbXBs
KiBtX293bmluZ0xheWVyOwogICAgIENDTGF5ZXJJbXBsKiBtX21hc2tMYXllcjsKQEAgLTE1NCw2
ICsxNzMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdXJmYWNlUHJvcGVydHlDaGFuZ2VkOwog
CiAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX2NvbnRlbnRzVGV4dHVyZTsKKyAgICBPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IG1fYmFja2dyb3VuZFRleHR1cmU7CisKICAgICBmbG9hdCBtX2Ry
YXdPcGFjaXR5OwogICAgIGJvb2wgbV9kcmF3T3BhY2l0eUlzQW5pbWF0aW5nOwogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsKQEAgLTE2NSw2ICsxODYsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV90YXJnZXRTdXJmYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKICAg
ICBib29sIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nOwogICAgIEZpbHRlck9w
ZXJhdGlvbnMgbV9maWx0ZXJzOworICAgIEZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmls
dGVyczsKICAgICBJbnRSZWN0IG1fY2xpcFJlY3Q7CiAgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4g
bV9sYXllckxpc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhYjc1
ZjQzODk3MDJjYTZmZWQwOTQyYWYzM2U1OTE1ZjZmY2Q5NzZlLi43MGIxZjMwZWJkYTk3NTUxZDYy
MWViMzNjNzcyNWZjNWVjOWQ4NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC03OCw2ICs3OCwxMyBAQAogI2luY2x1ZGUgIldlYktpdFBvaW50LmgiCiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2lu
Y2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIGJvb2wgbWFya2VyVHlwZXNGcm9tKGNvbnN0IFN0cmluZyYgbWFya2VyVHlw
ZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzJiByZXN1bHQpCkBAIC00MjMsNiArNDMwLDQ4
IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IEludGVybmFsczo6aW5zcGVjdG9ySGlnaGxp
Z2h0UmVjdHMoRG9jdW1lbnQqIGRvY3VtZW50CiAjZW5kaWYKIH0KIAorI2lmIFBMQVRGT1JNKENI
Uk9NSVVNKQordm9pZCBJbnRlcm5hbHM6OnNldEJhY2tncm91bmRCbHVyT25Ob2RlKE5vZGUqIG5v
ZGUsIGludCBibHVyTGVuZ3RoLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9IG5vZGUtPnJlbmRlcmVyKCk7
CisgICAgaWYgKCFyZW5kZXJPYmplY3QpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX05PREVfVFlQ
RV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZW5kZXJMYXllciogcmVuZGVy
TGF5ZXIgPSByZW5kZXJPYmplY3QtPmVuY2xvc2luZ0xheWVyKCk7CisgICAgaWYgKCFyZW5kZXJM
YXllciB8fCAhcmVuZGVyTGF5ZXItPmlzQ29tcG9zaXRlZCgpKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHcmFwaGljc0xh
eWVyKiBncmFwaGljc0xheWVyID0gcmVuZGVyTGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXll
cigpOworICAgIGlmICghZ3JhcGhpY3NMYXllcikgeworICAgICAgICBlYyA9IElOVkFMSURfTk9E
RV9UWVBFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIgPSBncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgaWYg
KCFwbGF0Zm9ybUxheWVyKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9OT0RFX1RZUEVfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwor
ICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVh
dGUoTGVuZ3RoKGJsdXJMZW5ndGgsIEZpeGVkKSwgRmlsdGVyT3BlcmF0aW9uOjpCTFVSKSk7Cisg
ICAgcGxhdGZvcm1MYXllci0+c2V0QmFja2dyb3VuZEZpbHRlcnMoZmlsdGVycyk7Cit9CisjZWxz
ZQordm9pZCBJbnRlcm5hbHM6OnNldEJhY2tncm91bmRCbHVyT25Ob2RlKE5vZGUqLCBpbnQsIEV4
Y2VwdGlvbkNvZGUmKQoreworfQorI2VuZGlmCisKIHVuc2lnbmVkIEludGVybmFsczo6bWFya2Vy
Q291bnRGb3JOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFub2RlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAppbmRleCBlYTc3NTUyODEwNzhhZWQ4Y2NiN2NiZWFkNGE0YTkwNTZiNGRmNjZmLi5iZmU3
ODY5ZjdmMDVhNjcxZDg0ODgxZGJjZjI2NDRjY2I0OTZkYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKQEAgLTEwMCw2ICsxMDAsOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRy
PENsaWVudFJlY3RMaXN0PiBpbnNwZWN0b3JIaWdobGlnaHRSZWN0cyhEb2N1bWVudCosIEV4Y2Vw
dGlvbkNvZGUmKTsKIAorICAgIHZvaWQgc2V0QmFja2dyb3VuZEJsdXJPbk5vZGUoTm9kZSosIGlu
dCBibHVyTGVuZ3RoLCBFeGNlcHRpb25Db2RlJik7CisKICAgICB1bnNpZ25lZCBtYXJrZXJDb3Vu
dEZvck5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNz
UmVmUHRyPFJhbmdlPiBtYXJrZXJSYW5nZUZvck5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgbWFy
a2VyVHlwZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcgbWFy
a2VyRGVzY3JpcHRpb25Gb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVu
c2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKaW5kZXggYTJhNTIzNWExZDkwNjM0NWIzNWY0NDgxYjdhMmVmYWUzNmQyYTlkNy4uMmFj
NDI1N2M3ZWEyMzAzMjY4MzQ1MzhkYmEwZWI3NzVmYmY5Nzg2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbApAQCAtNzIsNiArNzIsOCBAQCBtb2R1bGUgd2luZG93IHsKIAogICAg
ICAgICBDbGllbnRSZWN0TGlzdCBpbnNwZWN0b3JIaWdobGlnaHRSZWN0cyhpbiBEb2N1bWVudCBk
b2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCisgICAgICAgIHZvaWQgc2V0QmFja2dy
b3VuZEJsdXJPbk5vZGUoaW4gTm9kZSBub2RlLCBpbiBsb25nIGJsdXJMZW5ndGgpIHJhaXNlcyhE
T01FeGNlcHRpb24pOworCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JOb2Rl
KGluIE5vZGUgbm9kZSwgaW4gRE9NU3RyaW5nIG1hcmtlclR5cGUpIHJhaXNlcyhET01FeGNlcHRp
b24pOwogICAgICAgICBSYW5nZSBtYXJrZXJSYW5nZUZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBE
T01TdHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAgICAgICAgIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoaW4g
Tm9kZSBub2RlLCBpbiBET01TdHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRl
eCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggMzlmNTU0YjQ5MWExNWUyMDIwOGVlZDEwNTFj
YTIxZDkwZDk3Y2IwOS4uMzZjMTA4MmI3NTgzN2Q3Zjk4ZTIwN2NiZDk3MzhlZGU3ZmM4NjE2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNw
cApAQCAtMTEyLDYgKzExMiw3IEBAIFRFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJpZnlMYXllckNo
YW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZ
RVJfQ0hBTkdFRChyb290LT5zZXREZWJ1Z0JvcmRlcldpZHRoKGFyYml0cmFyeU51bWJlcikpOwog
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0RHJhd3ND
b250ZW50KHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VE
KHJvb3QtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSkpOworICAgIEVYRUNVVEVfQU5E
X1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3VuZEZpbHRlcnMoYXJi
aXRyYXJ5RmlsdGVycykpOwogCiAgICAgLy8gU3BlY2lhbCBjYXNlOiBjaGVjayB0aGF0IHN1Ymxh
eWVyIHRyYW5zZm9ybSBjaGFuZ2VzIGFsbCBsYXllcidzIGRlc2NlbmRhbnRzLCBidXQgbm90IHRo
ZSBsYXllciBpdHNlbGYuCiAgICAgcm9vdC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRy
ZWUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA5ZDMxYTUyYjBlYjZkMGYwZjE4ZjNkYjRmMWQxMjk3ODcwZWQ3M2ExLi5i
YmU2ZDk3YWVkYTRlZjNiNjJlM2M5OGQ1ZDE3NzhmZDMwMzM3M2ZhIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTItMDQtMTIgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW2Nocm9taXVtXSBCYWNrZ3JvdW5kIGZpbHRlcnMgZm9yIGNvbXBvc2l0ZWQgbGF5
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA0
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxh
dGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVy
LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9z
aXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3Jv
dW5kLWZpbHRlci1ibHVyLW9mZi1heGlzLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1i
bHVyLW9mZi1heGlzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW9mZi1heGlz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2Zp
bHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4cGVjdGVkLnBuZzogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3Jv
dW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJs
dXItb3V0c2V0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21w
b3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXIuaHRtbDogQWRkZWQuCisKIDIw
MTItMDQtMTIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIEdUSyB0ZXN0X2V4cGVjdGF0aW9ucyBwb3N0LVNraXBwZWQtbWlncmF0
aW9uIHVwZGF0ZSAjMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC5wbmcg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tn
cm91bmQtZmlsdGVyLWJsdXItZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlM2JjMzYzYzljZTgy
MmYwMGQ3OGQwNjA4ZDcyM2E1Njg5ZmI1MzAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM3NzYK
emNtZUhLZUB4UDg5RGIkanIkNCZ1Tzd4dTZaZ3NWRk5AYkQjKEFEWDZ3YWQ8SWBLPXt9OSZ8Izlz
MGQ8LXd1WTR6Cnp5UEhWYE82enZmaFNCI2JmKWY/Jko3dFQmQmAyZ0RCb2RsZ2ZPM2syIWhRU2V3
KT9hSD8jNGd3YCs0N1lkIUtqRAp6S0Z7Oyl6NCgzaC1zbUw+TzhAfVRgQFlSUTFpLXZpMEFRZCs3
PDZhRlhEaHgkcn1ZKENQKHsmPzxSViUqXkVCOSQKek0lc3FvTn12PnhEUl4/KTdTaVVUQTJ4NEly
SH4zcWdfSkdtdXlNRmkwWUo+NWVWTXh0dnFrVCRUX3ZCSjw3PVBDCnp8RDByTUpsdTZJWm95PWIt
PTd0PztLOEV2MkBrR096Yms5SSlwfT1sal4/VDQobmY8RntBdWZze0w4THAtRE1uWQp6aVU3NVNI
fVdfREppbU1iMGtFK3k1LWVOKEExIXs8KF43YGk1UlYrK2RHOzIqQ1U2Ozw4S2d4Rlg8M3paJTtR
JU4KekB9Q1ghdE1eTyRsXmhQU0l0Uj1TOFA+cn5xX2t1JEc2ODN9TXY/WG1tcnB6UVU8ME5ocWNF
fERrd31wMERlQGE4CnpCU243bnpEZGQ7SCU0bDdYJWZ3YENTPH0+JTJ0THJBIyQpUkchLU87O0RY
ZVp5Kj88PEt+VzkzWTtUa0FHKzJlIQp6JGBAQ3FqS3MqNUFqTnFjR29JUXhpMVlhaCs7bmNvb0hI
bn0xU34zbE4mMiZUQ3llNWFWenJFMkdSYWlNbVZFMm0KejV9VnI9aUAtQHtzckVAOTFsbGlubSRk
cnYrI0JsSU52QS1+ZUlMLU9fekpibiNfZjJDbzkzSHNfRyojcjUjMXoyCnpBQHZyYWN0cCUyem1P
PmBRPFY8flROZztxZ1o5U3EjalBaNCY1b30zWX5LVzMhNDNGenk8JUs/Wn5lZ2YpeEQrTAp6YVV6
cV5JWCNKVipPUmNhSjVtPD88czM2JGM5ZmxZKkJ7fmVWdXdKcFU0Sio1MS1uTDZtSTY5QUlPfDM2
I1l5UzwKemZQZG8zb3x6O0dWV0M3eyhiMTlBV1ZjI2FFVXkpQCtlPiN8emxpYk5IbXJlcEImYlBD
Z1NAMHBsJi00YT8zaD5fCnpvYmJmZmIkZlM0biYycTJXanRgLUNzRXxgYjxnam0xTDdhP2sqM217
TVBLUGlSa09lSHtQXkMwcEE9ZEp2dzY4RQp6cTdnaU9CPT1ZfEBqNUkzP0JiS2xBKVYxem1PITMh
UDMtOzImMV4lMElNcihmUXklM34maHpYc3RjOE9AVzdaQUgKenM5Yj1FYFRCVnBzVkMhVzAxN2Nu
IUskQHp4Q29PRj91M3Q0ZnpWOVVnZl8pRWpOVTwteTttRUk3P08oKW9WYXJFCnpyREdmRmN+aDI/
U1JOVDdtUkhSI3pKajwzZWNPVS1BN3twYWwjeD55OGtSP0ElOUc1KGUjKV9mTSRYTnhNdHFkawp6
eGVsSG9OO0slQUlPWCZhO2dtQVNAND9neDd+ait9Nk9LM2NRR0ZDdlQwU3g0PFk0UW9HTH4qPXY5
RV9eM2JWbEkKemJtPzc8TTxxRVgrV25ZWCtgI1lpTz1HdjhhcFgzY0JHMV41ZFNSPnAkNzNqS2xy
NkV8NTNjVEpDUzFyS0Exa1omCnorbExZS1NVTl5rKjxeWE54UUJxOUd4e2xuOzYqKW9EdVBPPUFZ
fG12ckE4cXRoMTtkSnhubCQ1V3paUSNacXtqMgp6JGFhYE9yJnJQfEM5RDRkYnJjJm9aUCR9KzE/
eypWSkdIRyU9cEk0TktyeT04R1dKI0R3YSgmUWAzTGdRVFlWfkQKem9VIXsrJU1yKVpgQWNnQjwt
fEpYUDFNIWtlQUlCQVJ3UEpMemlwMTRKU0U5fXFFYC0tSlZxYlZGZzlGI1pWZTNCCnpYJTJyPnts
QkFYRlM4cHJeI1lSVyRMMjJUc1NrPHdLMTl1JSViNCszJTB6SnNkMWt0OUcobWx+IzsybktQbmpW
Wgp6d1BKUkFVLUdAekpJUEk1RD9uKUJDPkQpKkY0ZUlBcXVVXj9wZkdqZTkwe3UrdGIrZkUzWl8k
ezt7KG0yU0UzPkcKUE9BN1g3V29PRnZvSCtNNCFUY0J0CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9m
aWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1i
bHVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBh
YWQ3YmRlZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vZmYtYXhp
cy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGlu
Zy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb2ZmLWF4aXMtZXhwZWN0ZWQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFjMjg3Mjc1NjM4NTkzZGYwY2E1Njg1MmY5NDVhYzg0ZTY0NmYzYmUKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDE3NzQwCnpjbWVJYVdtdUo2KkVZSTk1ZDtBTj1AYmNOQXRmUGco
aWpNZmE+MWVtcSpTXlFMX3xzJk50SUF+KGI2UiNBPkZOagp6TkRDNnUtPyk2PFp+eHhNdjQ2ZUNl
KXlzSHQ9Rn5Jb01WblMkMnJidjtKckpGPGZLZmJDPWBsWlM/UUpyM1V6YDUKemcoQjE7QSVzN25K
eDl3NnpnPT47dD5hKX5WUDt9dz9gVlUlRGtnY3dOYUIlK2lJTTNRVk5uVEZRIV9La01ARlc/Cnoj
ekpDZExSVW99aDRrTW1MWkxXTiVEMWoteCtFQDdJNDVjajkzSFJsbHdZWS1SWkxUJldqMVdgUlhS
RCsjSVZkbgp6VFlJc1lHeyVSVWhvey1AXig3SWo7M0dBdm8xJlE0N2huMEZifjwta15XNDZHUkAk
ckFwWVg0Z3RfX1JxOTJ8WVYKelFkSHphKG1xb0N6fkhYeXZ7MSs3dTY1I0N0aS0mPj5PNnkwRS1a
Q0FsLWBLfGVsTElOTGo/Y0ZLdFA1PClkPl5RCnpwLT9fMUM7OHpvVDFhJUAqSDlgdntLfDN4MmhV
enJzRHImZTNJNlgzfDFZZT4mKlZmPComRyMqU0dgNzJjKUAwdgp6OC07cENpdklzKigoYHNYV1Ip
bj93TWg9I2A1fkpLZ1VJQmw/V2pqZWU7Vl9NUUUhTH5tK3xIfWRKbkU+UmJySkIKejVuWUtGbUVE
dz5FO15FREB9YUo9ITVqME1zJmw9aDN5UXNSVzRvVUE7ZW0wbGxDezM9U29LI0dXUz5DSW8rdT49
Cnp6Yk99KTk2bE1kcnlAVnZMelpqWl5YQH5iKSE1QFpDSWhFWFV3S2RSJiVQK3tfMHYjWTIrKE1+
USNHbENRS3ooJAp6bnBRbUZSP31sWVQ1TCZmYTJ+fnhhdSl5UStufGJ8UWtRYW8+ZG97Uj18Z2Be
THszUldYISV+OCp1PnpPZ1lSeyYKemV9ME4tQ1pUKn1acjBzIWF4O3dRdldkOSE9RmEzP3pJZVRT
dihDdSRgblIzJkBqe2IhIV4xXndAX1QzJCQ2RUpuCnpYaW5qRXpTeD9tUT53RGdgO1JkUyYyNFFl
M2pYUzNDSzReSDwhZnhVJjkjZUoqKHtvNXNJU141YEFxfW9Hfk8yMQp6SXQyUiNyUWU4LUl2Qztj
SSZrP0NtaXBTQE5qKHcwcH5yZUZAN21yRTF7QkpnaW5HcnF7SEljNlQ2T3lRVWFDKzUKenQ2dWlf
UUZGQil2NWBGTFFvRk59ZikmMyRxXnJoQ3h2N0UkJipSUU4kYzsqVl5IWnMqbXFfRHp5QWB2UTI0
ZyNxCnopVEd3RmVlWD81Kj5mUVpjQXZrV2lkYGN8ZUxWcklOT24kTipMV3xnQnZwRVN2ZmVnMmpm
K3V0V0hVT3F1NGFHTAp6ZUlgVT0ocnFic3JYfGVvNEo0QkNTOFYqSSEyPXBeSDdfSXljOyp7VHdK
fTcjKG9xT30jRSYqOTRiKWJ5LVRofEEKem1FYCpLP0dWO15MYiZEZ0ZHNHNsUTRJYkshQjE2Nm04
Sjl0WD9ASWR0VHVYZm1FaT4/SiR3d0lDRDxfZXFyYnV9CnpFTFYpYnl0KnJZU29+ZX1CKzMrYHlX
dmw/PW1SJVJESyNjTyk/dF5tIzhKLVRSJlJ9VlpFMmtyKHNBYzBQcWNQawp6KW0pNHxRfFQ/I0hG
MS1tdnFwY2ZAeF5ZM2htdktZQktPS3BkIUAwaGIhZ043YCFWIUIrXlRscGs9cSUhWFU8YlkKelU1
aGEkQWA3dkk2eERhVHd8RnJMJX1UM3h6QnlocXA7QnpITzs2V3EjVkxOT2NIKGxgX19OaldgREN4
WDEtc2ZxCnpDcUs+OHNJUGhfYDkpdlRfSWpyY3JLUDY3KkkyP1lnJEUxc3hTRURXNE12dilDQSUk
VilfQ3E0Km5ibVM4cUJyVgp6Mk9vMiUhZ3MmUE4tSWtmal5ISmF4a0ZsKzlDYSYwPCVuaUBAP3VW
c3NOM2VSa3N8WGN1bCpJPHdpNzUqTmpINEEKejVKcWBVQlUpNXZrPXt2b3RndnY8Y0goS1kqUiMk
JVc+SmViWTEjUVRkJFc7dURjRFkrSHQ1aGdQalZrSjMzXl5pCno7dnVKfmpJKlE0KEliLVFic0d6
YnBxV0BJY0BnYX1wWDV4ekI+RjRTekVrKH1sbE1VPzFTczc9QTBrRCpHeyM9OAp6MSYjJmtPenEq
Vjx1e3Fgd1liTUFQazdmajVBSG4zUCtSQ3BSVE40LWhrNnEqJT15SnU5fEZgfW1HPnBLSEJWQDsK
enw4NHU1PHU7TUFXdFBGYU1uPk9yJU88NnFtV0xNPzd0d2oyOHxyQlpQJFBhbXsoRjBSZTZiaiVr
MUYmcHVwSSlWCnpKUilnY058dyR2QGVgdyo8ODVaS1NSVHReeWl3eXphX1IzY1hqbHZ3UUV5dHxk
LUMqbylUMGR8eSpSTChFM3s2cwp6VGV4MCE5PWQkJDhITDtnWT1aKzBrSj9wdWBYeEVAX1YpbUdz
b0pZM2p1VFhQZTRuX2dlY0M+a0FydDRKKDZYRDsKeiV7TCNeXnQhWiFFSHR4QHVgaX05OCh5M2FT
S15gejY2PEcxcCtydlV6WmdFOXFCUGVfWFpjRSMjWXRFfE5CNkNpCnpKLSt1O1h2SHxeeFhSQXpn
aHwyaClYe2NYXzRjVU11a1FFY0l8P1lEQ3NnPn5EP2M+S0hGO1JpJmthQjFlSVJ7TAp6bG1zSkFS
cEdSS3dQOWwyYCpfRFlxRWx7diszO3YxX1FhXyg3UWYwKXBoVj9MTmVXflFtSE5eSGQlYiN9RVZ2
c0QKeiZGQyMrPlRgYytgVXgxPyVvVmgtRiQ+fTlYdGZgJUA2TS00ajN5QUduMX42OzlLWGYjQzxR
QHE3LT1Obm1uPDFGCnpJa2NuKyY+VmZRczhrfm1DeVlqR0FJJUFSVGxQQj5wK3RwQk56TjxsQGtU
NDcoPDBOMWpPaEQqUSVqdTV4Tk1reQp6TjwjRjI7YGB2PCozd1lFVlhnZVpjUz4tMkhXNT1MbFVp
QlNKQSQrTGpZKHBTeEJVO0xFLWI0c01Qe3k0a1NZVyoKekojZCNkbmxhfkJtWThzZU91TyFQcz4h
JU8mVTVkQEpweG82WWJuV30wZmh5djE9fnlvRFojR1pYZkVia1N6cDNOCno4T2NkYHZGUzRGVXVa
bntIcHtfY0BPQTh1U1chTGBqaWlfKC1TZzRQKFkraUNgJHFJTTVnaGsqYipKX21fWDxRQgp6S2l5
QTdmezlaODtKM05felYyYGQzYnA5eDZEXlVJQ1gpRzM+WSleUip8O0dfdVYhUEduK055eSlaNmF7
Ynt+X1IKejs/dTExJTc2WmsoLSlFdXBlYmBBK1J7aURHIzVWTWdJWmE1YzhrPUhOTTd7Jm0wKGo5
ISh0cEpVRlNuc0JuIT5FCnpsOHNfZHBvVm9mYWRYOFltV2k3KzRpeWZXe2xkI2BCS1B6WFJWYmBV
M2dUQjFXTCUkeHZCYFN2UjhJTTBObC1aUgp6MF5qSCR6S0FSSXB8Snd3bTJ0dFF4JDU3e2w8cXZh
SkZYTmJuV1ZHdXEzNzIoaUsmQ1M2T0B8VCtMWXthR1J4MFUKenNIeHtaKGZWe01hfmsjd3E2PXhU
Qi03U2coTSRxTnYkXj44SnFwTysxITx+KyllaGlORXYoS0RodiFoSjhlMDdxCnpsMTl+e3N1ZDVp
VmcjYSZ3RTBMWCg+ZmttODtqbnckeCN0NkhgbVBHY000JmFTcDdUYFREalMpRCE9ekQ2Pm1qPQp6
dlN1ZWh3X2xGVlBgYXlIb3RCK0dYKjNpbXN9VnJPNlEzNm1AS1l5cFZNKnV0KTB5Vm1vWjwzXjN3
TXBeMn5vb28KenI2Zmd0NjV6aUFUTT9iN0U4fmA8YmpucEc8U2swJnshMEZGVHBDO25eRkVrP1E7
fkFgXzJqIWh7WXh3Yj5Lej5jCnpkZCExQVRHYzhvR0NjeWVXNUJidUhZP3ZjYn5AeCs7WEI4Ymt8
N2wtTlRTfkJMNUFuKD0+eT02WXNOdUJSe2N0QQp6Tjt8NFM+RFBObkVaNlg9WkYrJU1xZjBIS2hn
cGdscjgxMW5XajRORVhsaVBiLSkrNSUkdjBxaXgocndwXks8ezkKejg+VH0wRiVObXtvekI2Tlp6
TUdtezJXNiRHYERUMlk/bG09X2xEWXsoWn0wbXdhRDRiTnwleWM4SjVYPmAxcEwlCnojVXYmdDtx
czw3bzsmVHJqYHxiUHh7PjJjLUBqZjZMJXV7WWwqUlMkX2the2YlcTA4a2xjQDdYTUNkO3JtI1F5
QAp6I1BGcFhfM0NRMCFgZFlFeVV3WjBeWUpHMVh7bElSRjZmI2tpTWpscS1xX2R4Qmx+I1ZzJXpz
NE5eazhnPk9KMnAKenJaSShJWUJkdGlVRX0qekJfY19jdiQpc2dlYmlVIXl0YjVBWCR3aXJYb3dL
Qz53bWY3JXh9Wlloa1RLNCVKY3FNCnp3V0RFITYhI3l5PDg2QjAkTk4oJHA0JWdjJDFpNSpRJmlI
U3pTNXR9eCN4S2k/MytINXdpYlhAT0lCdXlGcmZ+Ngp6VjVLTHkoRXMzV3Y7JndwKmBaZ3QtVU1+
Y2p9enpyVVptVyNxLV50TXJ0PExDRVc0SFUlRGJMXnBPQEVjQT07VjYKejkhSTUtMzRGJVFlaG52
UGJIUmFnVEB5JHAmVks2MkN3cGxFRWYkQH1oNHBWOXt0fV51eDdHU2NmSHNkVXB5cEFKCno/fXRE
XlFVbF41PC14USQlXkV6PiVESEpLPX5vJkFQSEMrQ2U1WShwITZRIW8kN2tMWlFiSGV+MXgrbjIj
fVR0dwp6ZT5tK340bm9XY3tSYDJgTDF7PFMtZnpzUFA1T1JCc1VLTEl7a2RTUSs8VGlJJVZxaUg2
JjFhSyVsRXFIQ21JRWEKejBZfmI7QWI8M0peTmxFV0BlJnNPUk48azVAWXRwdjxBOV9QdU5fandQ
WV9jYXRjUTc1SikzSm80cSpJeC03fWwmCnolP01HSXkmRj03T3dJM35Haj8kTyNISFdpKWVOUWh2
VWtVJUllMS1XNFVXTm4qZEtLKjZjXk47bCY8bDFHa1d2SAp6IVoxRmxLMiNTO0gtWENKM2U1fiV2
cytVVjYlR3A8YCV9a1dvNDxOaSM+KFc2NUI/eWxEcjY/R0QpV1NHJXhPMzsKem9YZ1oyLW9pbnZB
PioyNXptSXpzQipaPzFyLXJQPHEpaCt0TnhoKWdkWFUlUTk8cURXPzVaUjV7XzM3aWRgeDJiCnps
TSlCMTEtfFVHan5DSGFIcjx9bERmJXo7LS09cGwpT3NDeT9lKFNQVkpwUiNeLXZzV0QhZGFtV1Y2
JkVXaSFKZQp6WUxoSlU/bDhCSl9TQG89Ylc/V0Ixa0psWWxkUjY7MStlPXUrc2V6IUgmN2g9X31p
YithKj1LNkpMIyF1UjdVaUUKejZYcmBZY2hubCY9RSltdVNlfH5OUWlOWHNsZXIqezRtYi0qYmg+
XiVDSDZtNjx7fCk9dSlsbXJtV1VyNWw9S29SCnpAcnxDNilmc2JhQiRyVUNJTWBAa3RLT01Kakok
bFVadUVXMHwwSVUrY3otTTwlVmBiR01nMDc8eHooQHcoZU92Iwp6ez5xfnVkIUVkKFRkJmErQFZy
ZF49MTZlYXhMZTNxblZkOX49Z2NFOXl2eD8qTiV5dHReRVkzPHohSVRNJHE2eDcKejxfSn5ITF5A
NW5saEtnaCVXeF5EWnE+PG9EajZrZnJpakFRYnZUMmc1JVUhQ04+YkVVcmp0Mm9hfmtFdjhocWgt
CnpyejtzbXROSURMRz5wXlNLYiNNOEQzUDdvcFdKQj5BVjN1PVBaSC1gWnNwRHYqQz1wczhzMipN
b3liWlhqeH59Jgp6Zlh+WHpGWFY9YDYoSVIjTzJSc1UpKX03PzV1Mlk0VypTRURUdFdZJmpEXi1k
WmZxdGMrK29iN3RhX3NqWktNdEcKemdpRyttcHUweC10YTRLP0JpUXhxK3YzMWZPZykjZzhAfCtX
RzR0YX5FRnNHRHRwfS0yY0tXa1N3WitSeG1yRSFyCnoqPE1fSGJ1WHNpIV8tUXNeZVdFI0VYcW1D
aXpUfH5udyEjSVNhSXk4ez0mSWxUSSFzZkBiMzxadFMqfjlpdGR9Zwp6c0dNan5aX0oqIzVpTW9V
TWh3KlN1NHtiNkZJfj9ONzc8flFgKXRCKk5OYFBkKX1sXzJHZz4pP20ocnYmJXUjQU4KelpJbH5i
blV0RTtzPXQ3Z3FyPVVRXjhZTClTNUF1Oz1aPyk4UlomI2xoaHF9YWNyNUJ5PlJmeVV0R20kRikr
WGg9CnolN1QyRT1RRDFjQ3Modkd5VjdCcllXaCNHfEN2fj92cW87OE1rbkpqbGNSLVpXY3otb2Qt
QSQkX15lMSg0M1VQcwp6PCYpdHBqIUxkbiVfa2oyVXdtRmw8eUNGOEtgbWZNJSVwcUM+Y3BWPU13
QEpII31ITDdGNEdlcFcjJGZUNiZeR0UKeio1PU1FVlFXMVImdW1OWlBPZVowX2Y0ems7NnI/ZlNa
VGhQeDZ0eSFKMV49Sk91ajhLVmNtbDxtLVU7RUk4Z29pCnpnQ30jRWc2SnUwcFN0diEkQ3Rge1BX
U3JzRWxGSF5QOz5DRlNqXz1tXihJfVI8MCgtRjZPRWdTdHhMfSN2OTFDewp6QjE3QitxYnBRNTRR
e2paXmRybFQtOzgmNnNybmZFI0doMEAwcl5pJk4wKCkwYl9lZW96Q2JQSmlmZEJrTVN3NVIKemdn
cDlZU2NsXjFHaElEQ2FrJHhjdyp8X20pQTtiUTxTKn5lPmM4VmBod2w2YWxgY298eU9WVkomR2Bq
YHJ4PTUxCnpgVEc/TV9mXztLdTNESSQzQzlaNzkqQlVnQFh7aHJpSXhETUFxaigwZEtzXnRBVEJG
RXYjV1M/YDFSN3FXWD87cgp6R2gkdkxjODh6biNZQSMmXj99bkRPd1V9SHUhQGR9S0BpU0FFQXNu
Y0BQcWs9XjB3b2pwKThqPzkkMCpoJk8+NTAKeipMcG5jeE5OYURkUjt9Q2lZQ3pRZWlzKTgmJmZr
PW51OH0oRUc7WnRte0lUPkpIMn5MY0BjVThYdk1FTndaRWR4Cno4OFVGVWZ5QGR5PzBETGJ2Tj89
aC1oRiVke21sVEMhb3IlWjVWaVloTipkJE1HaFg5bVVlQzMwIUdVOH16M0QhJQp6XnxyamBiQ29g
eWt7O0M+JHkrMihmfnZnS0w3TmpGQUNHSCZKa3VPPEtfUGhmXkhZPWlfd1ZuSzFxWWtVcGNDfSEK
elUlT0NzeGVSIWYyKzl4NHZ1VyZwQzBmWUZFS3tGUzJ3fmQjblBCJTRpU0BFNGdvRVNkX0FSZ20q
eFo5Vmw1PTt4CnpfeGpkYipsUTxaaU9AUjlSU2luLTd4UXFnOHkte2hjVz9JSiUqdko+PH01Qyhr
SEd3diFGdE83dCo4N0stVWNTYgp6SVJXZm1FP14mYWtLZ3NiemMpXktBME9VSGwzSk49UWZVNG9X
OVgkLXJOVUYtWWk2MnRfIXp6OW4hTDZqe09YbmAKemdOPUtAaXhUbSojJU5lbTZTJnhOalJMN29k
I29VM09iIUt7NmZgNDBtVyNTMy17ekNYa0lULWAtWGhIQHNtSCMrCnpsLThrMVJ5b0hYS2pneGJT
JnchKENVLTd7XzVFRiskcF4lYiZxbiM9M3s5KUEtaiY7KDF3aTA5OD9OWn09Yko8cQp6OURoLWxU
eEh+Zk4oOFQ8TVJDQDR3KFFMOURrWShKQEEoWDkkOFImXyshVkRxe0htK0teSmJod1JIU2ZNJlQy
RUsKenNGU3F2QjxkPj5kNUxkeyt0d2wrZWg5bUtqbT1uVEVZQGtuQnVvfCl3aXtDOEZ8fkp9Q000
ZFgrbE97JTIyKi1iCnpANyh6OWl2XyshU058a1Q5WHheLTNHdCF3eDxrQElLIyF1PCF9IWk1WCtp
eGA+KmU3QldXZms8K2YjMyR6fkNRUwp6dEIqSlAjbkc7RjR2eDBQdDAqVjBOOXswNmVHMCYod3x6
fk1ffDB2NXpHRj4hSDZQO3BkO2trSWt9U3YpYjgkQUsKeiNnfXZudnZQOChXK1BOPllZKD8mMG58
ejRGU001cER5V014ZTdrMzI8cnxZVG96WEJZYTA3JEtYS1IjXjQ/ZW50Cno9MmpHY2Z4ISZke1FX
XlRJen5gT09OYGNtKV9EN18qRzhuJSR8I2EmcClBY0Q/RWNCR1QmPFk2c35zV1o4VWNyQQp6V24r
e2teeTQ8QyFJeE9XNzQ3en5lYE1WN2M+VTc3PCt2NXV3LVJ9Xk17WXBuZUo8MlQ+ajI1WEY3SXts
bmllZXAKelUqYjxqemdqbHNtRGZna2wzMEBkN0Fjb2pRP35EVTlWKGhqenV7MTg9SGtxa1Z7cU5e
VCNRNnh7K1cmVDh7TDJ5CnowaTNaUnlTJVZTZ1AjT3shViRXcyRheENYOSY3K29zJm16U3spSDQl
SEcwTTF6NGtCMHUxTlp3blI8MnE8Zj9hRgp6dGUqbGxBQ1VNTm8/PUFIeVc9Nlo+ZUxYVDAtUzd1
by1Gb2ZMTFp7MXRnTEtpSGZQXzNTZ0szeFZNV0FqeUZ+TT8Kej5ROG91ZTY/K1FSdntzN0opWihr
bUMrMU5ub3VyKHpeVTleb1FhJWdQZVlJdlA/UyRCSzRTMmd5b1plWnh7a31rCnpQdkw7VzxufUU3
e1FTbVRBIyYreWlaLTAjWCZvUyt3N2okKXVEX3hlWnF8fGFtVDx1OU0/NnFhdWk/I3BWSWV2Uwp6
ZkNCTjtAcFY/VFBUJEE3XjAxRGIzRmokVkckeHF3JUE/TGlOb31tNyk9VX4mODZ6SW9iZE5QWmJi
bFNrWDl8fTgKem9HR01KfDJSP1FqY1ZAJnQ7TDU4KHt2NEFhKFpPMGM8d3BHPGZIMHhTTXFWV2Bl
ZyFGTjFGQkFkdjRRRElFfnEwCnpEO3o5bStYJGFCT05qWFFHYHlsOyZ0MjI2JkJ7PkdjJi1oZntG
Q0VHfElOcDBIfV4paC1WfC12VSpCd0l3KTBxVAp6cUhvTTJMX0tSOEIoUGZsKGQyISZXYXhLI3hy
TjJQcWx3PHxwQHYzcHNtPDhFKkg9V1NYYks5VyNpSHYrdTJSdlEKej8mUXdkJlphI1J6LTN9MiFO
b0x8bzV7S3g/dyRRJWY0UyZ4VXh4YnN7ayl9amVpVHdtSVltRmVDRzIhY3VYUUJMCnpPMCRMNDl2
fCZQUFhSd1k3OGpEdkJwSTh7aF9lWllIeipuWHpQajNDYnI2ciF4VCZSMXlGant5YXFvSDt1QVlM
aQp6YGh6eCt7YXRxZ0FjSyRuU2dSVkc+WnMrJUJ5bkoyZFY2fjxgIVgpOEBDZ1g0NHJGVmEoOU80
QTVxWmotemkjRSoKem4wJiMyJWM0JUQjNUJDJXA4V0xfaEtwKFEjWngzN2xrdmUhVnAmeUhHUnU0
QGp2KWBMJGJHUyloZWFOezghNSpKCnpeUXRsWXVHN3pubn57XzBoPWIob3owdH1XZl9XJXBBLVpA
d0x8RHZBe21GMXFJSmh6N2VVfDdHJVhFPTR5dTh0Ngp6OF9QRWIlSXYxX3N3ZnxwOyM2I3s/RHBg
P19Mdj5KeFV+KkhvalpLUSlMbH1pR3h9dz02V3ZYJjgjJmdGUmlqX2UKekRVZT5ecDxkXzJsIV9R
d24jcCF1Rm5RMUJ0Q2Y4I3JaRGlNdWxZdTk+dFZrNEFzVDkwX3R+MXQrXm9BUGEoQUl8CnprR2t8
Z01PRD9qQlFDdGdNQ2FrZEBwbnpUOC03WEdyfW5oZ3ZwJWJ7TF5tM0I0UChXaF40KW5IRyYxVXVt
PztrMQp6ZkhFRWNgRzU5WlFxcnRmcntwfXA0dTFPaHU9V18xUTwzQExXMm14VHZCaURBTEhhflZo
T0d9bzJHe1l3QDJ6TUwKentTfUxsPjNVRXpzVTA+ITY+Tz1MY29QM2o3ZDFIQiZpZmJ8c0VeNVJr
QjdCVCpLOXtpUWxFSzI/JkNNQzBofXNtCnoyJXA0ZjBeMnUle3o+PWRJZGZDcj4jNDlicnJLdFA4
T0hvTl5lZVg+XzswPFJQZzBONm8qND1hXy1SUjdpT1A+Vgp6XnJeJD9VT08+VDs9Pkl+eGBWX2pr
WTtXVHIrR1d4VU5NTDRkQS05OFQzdkNRKGI+fGdSeU5+ZD9pO1Q7WnpyI04KekVWVWZFMiteUV9k
MzFIenV6dUZxfEV8MCRNdHRMUCk7aHYrMEolZWdBUUpVMDc4XiRaZDBsYkJDY3JQSHI+QSR4Cno/
T1ZIPCM1NSpFJGptVUJ7Q0tWMWwrQVRwOVMpZ3tsTCVBVkpnOCZFKnlsNDVwNHtjUkxgPUQxTkBU
VXJufm9zQgp6IypzUE45MCN5fmV2UVpPKllGRiNmWDt4TTVVYzdeJUtXYkRPOz00aU07fmw/UUhU
Zi0hdX5wd3spM3NKelotdG4KelEjQ2c1MkpafFdKSUFSZm5nNks9SXpwfEUoQzF+NUpefWh7UCFu
Si1hYk95TnY8X2pGNzlTUyVJOVA4UCVGISh2CnpZalZZdWpeQFlRSHhkPWpzRTtoO3U0eVhzR0Nu
MXR7e29XVWgmRTQ4QEVvSXt4Nz5ZNU1AdGl4JmQ3bXV6VyFvZAp6Rmozbzw/N2tgcS03JiQ1UX5Y
ZVV3d0Zoc1JBMGFTPz87QWh0dn5aWWI9VUF8NEV+M2doc2kqKlZDYDw8a0EmOSkKejJeakJeLVJ1
eDhXKGpTKHl3fT11dHR0TGIrOVM8XzB+SjF+bGZ7PGBKZjMpZUpEfkhqUkdIbW1qYnI0WGBVaUU9
CnpEJk9oQipEU3khPCVgKSg5dn1ASCgleUFHK2ErIWQ8VzBUYFNmX0hXcnQ7bXA9fm10cHdUVllN
NyEwTmh0KyFqbAp6OSZHdGE7WH1SQ29vR1lhIzchMXFEJlkpKnR3LXNiO2B8OSRsWjRwaT93M3V2
e2Q0fHo8SHpjVWZXVU4wdHckZ3IKem1nZEBIPHV8KTspYHh5aVE7eCpzPW9EbmZpWnRKPGRLSH1Z
TCtoI2hEcXxOP0I2T3h7YC1rSi1xMklGY0ZLMnlXCno7V3RVUURKOE9iKSp8I1YqUlp4bUZedWhC
bUcxYVBfWj5xQE5fcSFlMV5PWFBQMGd5bUtaM35VXyhgMTNOWjN0fAp6TCptWCpQZ3RGRyUmYHRK
b1lBaXBHMXdpNSRzaEQ2YFdYfnI9eTVkRkM0c1IhIXhfN18teDtMWE4la3xGKWBiVyQKemxWeHds
JXw4QExkUVBMK08kUDRnUihpTmJ4dElkbyRiWnZeYnFHVE43cjw3cUlRSE5GKlQmfjBQdSFRRD5B
cCNzCnpCeDJTXmI2NGlSb31RSGImeUxPZTZ4YGgwXihAPTBXSmloRit1NHZJKkUjUENHSHJjO3RV
bGQ4a0wkaUAhZ1NBVwp6IU09WkUtZndmTF9RPGc8PkpxWGkkLU1nRzNefE1MY2hJMGFfa1gmZEFZ
cGR8SnZXVm0qI3kqNyp4S0xEZURZNHQKekdkdj1pRSFvKksxTkVxI1NNLTR7UkU5T3RXPGg3U1Z3
QUtxUnQ0PjRFZGNnciswUz9XPU9lRnxsOVViOWRMTDY9CnpQX1VrPytJPyVEZGBWRHs1XlE4Vys/
fVBCSigjUVNKKktUWWZeJUAhcyhLOVdSNUYjNWAjMGwqQHE/eU95RnBBZAp6K0grfXR1cXo8T15z
fHwlakJBZmx2RmBPRSs0JDktX3BTa1ZFPXhJRE9kNXF7eFFreDBmTHRpKUxJM0A1WFVoQlEKemBH
QyFaSzM9NCZaVntWP1F5TUxgayVueyt4SCU+IU1oO3A4e1NeanFoLVlKaCFYaXxIIz0pbXlQbGNM
YWczakZ6Cno2NCRnTD5EN0FEcHElUFN8Q0s2SjN2Q3Ikck51Y2MpVWhKZ1ErdjIjWElIY1AyI0oo
Y3QxMkpiVXQ/dSE1QU1vdAp6MFN5SWxHb1J1dU1fWigjcUVmbjIwYWdsKlFAVVVMbUJHWiFiSUM0
bWwwfVZpRTcrV1dmd1lwSjthKTtzPWZ7aUEKemYzJm87Mjg7cSZPWn4pNVAoSkFJKjhZal5GZS11
eTJMV0Y3PXYofXkyTkA/KlMoLXpiJVVzcmZOSHg4XjczbSZnCnpYY0J4bmVtdm92PTs9fWxLakV+
Syg4cXx9Vzs4TFNGJjd7KktRVzYzSXc1M1Q4YFhXNCQoO3kydXtDN0t6Ulo5Qwp6cTZPKWZQJjFS
SDk1d1ZKRTVrRGJoY3gjRzBQb3YqY0RXRlJgP2s0b0wmZTFQOEo4Q1hfQzUzRXdjal5yZlhIKi0K
ei1JemxUKGUtPT5Cdnp9VEpPcGBrenJQOGpJcEVWYEVmZFdCTlkxR309IXdoJHtUcUZgPC00I0Z6
MjVlamVQXzFFCnokS01Vd1J5RHUtaXs9Ky1meyh3LVdAQj1odTBGd1dRSj0wbml+MzUmX19WQWFu
ZmAja3shZ08+b15qZ2dPaU04MQp6QUR8ZCtzfkpiWVpmVnA7TGZ2e1lkTkx5N1c8d3s7cXNIbWdS
O1lofDhuZGZTST1xZ3U1TWB2bzZVSUojKjE5cCoKemUqQ3ZaSzJOOU0yTWh9K0w8YXBSPF5Idz9x
KEdWRS1yZXc9ST9tV2o9cjU0YEt1b3FwK2hKYztJNV43ak5PeSRnCno9JkV8Vz1tTkJpbHRgWVo0
LXFBezsmbn1TVU1ePz5EJEMhe1lqK014SXA3Y05gfVllZmpKSmxFWVh6KXp8QXk0KQp6P3RkSEko
alV5OUQpZjNWa252YlFYXmkhWDF4SUc7di1uI0gjZ09PPCV2d1MoT09eZ2xxOWNvXnlHOG5KP05l
ZzgKentrLWpIQGpgTG05V3VsUV55aGJRSHJse05eVn5faTNTZDlIQVV3WmpWe3QhZFFyQEhmYHZt
MzY8Zz8/TFhqWEo/CnokJTZXLVdZdyhDc2RGQlcpcWRPPSEwa3ZyUld1VVZZbXErXmhSbCFQTHoj
JGo/KzVaUTVTKXRwKF9ETUJDQ0ZIUAp6Xnt7RTQtVGYkcGNTPVhacX01eWROYUVeM2Q4enhVVmNO
X3ZeJWFrdjteZHZnaGpkOXxSKWZmTjB6dUQ7QWAmPkYKenlvJHZ2VEsyclpKK0loM0R9TUF6cWAy
Q3oyUkNJS1YmbGBke3ZSeT5SPD15KU5ESkR8JmFNZkNvNUd9Pmc9K0g0CnpsQ1BHX2NMTG8yNT9i
MDNgelhYTDVVNlNkKE9xVU0td0I3RXVqKklYSFRBeWtHQntkWmt+RDBZM2Jle0JfVUNjIwp6ZkFF
K1Bsa2A1N2hna2tUS3EmZHNJO2lmaUFfY0AmbUMhfFBlUDNkYXxEKFArQGFyZGMhWi1UbjlDND0q
Rj5KXzYKemUxY3o0X2NkUDxFJFEmezxyR1hnbWl7X0FDdzZ9flF0b2RwKElZIUNFYWJzKXYhckdE
V3ItPn0jZ3ZmYzRrfXJ0CnprIUVLMXBJO3QqcXZlfT1JaHR1RVo9QSh7PnNNLTZwJDhFdkx+eDd7
Xkc7YHhgJi0waDN9MXdOZ35+KTQjJVNvfQp6YXlVYyFxdWpKdF54QHxjUnBWNjJKfitkdTBWYlRa
JGRAPTVVY282cDdEKGJANzVFa3JxaWh1Xm9TbzNHJlVkQyMKeiMjSFd0YT9QNCpnd31ZTkRvcGNj
YHZyXzMqNldHY3xNNTE/aDJsNygzS2U/Z0treD9VK3V7bWtZKHBPVCtZVE5ECnpCaUNsdHQjYkZ8
U1FCVGVOeWl+OWZAJkBuJUhXNzdBfUp5YiFYR0o8RSFyfWJsMndZRVg1RVNyWChiP1V7IyhPLQp6
QVkjcnIyeTVEY2FTNzY/JiEjNGw9c1kpeGtiWUA0Q2k8dl4xZkZJfSNnVzk2aCs5MG5vNVklWTEr
ND5mJHxaPG4Kem4xM30yb0o0S2hyeSR+MiZQfjQoRFpHP0E+LTJycHc0Kkl8amRtLUJWT2spZSFk
JlFUKCFGdj1yPmcpYSZ3aEEjCnpoSUw7bFIldU9IUCp0QFRRJmdkeDFXUllFWWRifjU9ekJII0A1
ckVCQ3BsNipmUklKZldPNz4qcXsreUtaRWprNwp6Uyp4LXlaUSR3bXMlJng+VFhqcyN7MkclKCNM
QSEyZStTXlI0O2VkO1JzOXZ9WjBJPC1QNlRKfmRUVShDSjlxPHwKens+VWdjOzJ6UHdVcCt4cj03
U1chcmQqYV40SGZncj8hKVhTZWFfQX4pUjdpUHpUYDMpZH5MSGdSV3ZRNkFqKkt8Cno8fUR2JCtm
Sm0zOUImQ190JVBFUE05NHVqRiMpPiE9SG1Ia0lBcHBabn5xV1JeNXxLKk5HSHpzJF9IUGMzek9T
Ygp6dHY2ciNuQWxydipAcWAxZmFmTFBkQk81MUZ+eis/VE5CSUAtczxLSXNuZTw0bEl5JU5JVH1H
YU16TilwdENlZVYKeityJEpNNF8pYy1UKHJ1KEZyJGYkUk1sTXcoTiU4e3BiV1YlXjNedDIqKn5r
Xyh8PUBEeyZARXZmYG9ReUwrXit2Cno9TmoqVmpBaSZ7Vlg7Ui1HeW0qIW47QV9aSF87cm9oZH1P
e0xtVFNUSiFlJSUlRUhnZVUoSGpeZT5yT2BaYXs4JQp6dnxDNmNYfU58dmI8OGh3SDg3biZWTjNj
MlJKYE04WjM5TmNDRCU1amFZVSFNbjJSUXJQdiFMZy1pYXw5SXlGUnsKenRGMlAzUG8jPjs5OWdZ
amQ3K3pCRmJUNn5XSzRsMV91V3QqWmU8di1CblJ1WkZBMTFBTXcyIVFQfk9wdlJNTExSCnplMyQl
NSpgUWw8YH1TNkxBUHNMSlApVG9uZ3pzNWFEQm55a05fKjYraypWZihtb0ppbUhfRjc/eFM7S2Qw
ZCQ4Pwp6NnBmN0FneyhwdHVPTzxPdz80RXZIayZHd0NSYkpVNDBwYyNEdXdrWlFZWXolKVR8TUF7
b1F6UVZXT3hYUCFkZDIKeml2Vm9DZlNIZXYmejZuWG5fJTYhdjJsfU9uZFE7eFNKN0tDY1V3KkRx
dmlyKyEmcyRiPUZxNkdYTXYmflFyTWReCno/YiFQYU08YTJHK1IxZlR5YEk1MjtmeikkdjJOdXtG
YCVkbE9qP2p8eFc8WHxFSVVqKU9tan14P0ltX0ohTC0wWgp6ZFhDSnRjNGxUfDxKNH5jVyomKHZm
RjlqNGNtWUFke3dOZHw7Yjc7VSEzSkM3Tk4rXyY8Sjh5LUVjMFNMcElGWCQKem96RSZQYVRtLU1q
SmtsYUZiN3N4Z3FYblU8THp7czJ3fCk1O3Z1PzsqJEclUjxDfU9We3V0cnBeKXpkMkpybUZ4Cno7
TXF0XmB2JXplK2Jpa3pATjUlMnROV01Pbz1xaTVoR0Y/TXBSMEFLLVFnUV9jME9RdU1gI3JnaHpW
bUZCQFd5YAp6YD8xcFRoM1pSP21oIzw9OVJsIUhqVEdyQU9EdHZVOTVscV9zfHpMdGgzekxPVyRK
KHNHZClLKlhuVTI8SFM5WmMKenQ1NVhmaj5vSntIaDx8QkpoaURKS2h1alVWUWFRKmo2Mi1wWGFe
aE4xdEdpMURoTFd4S1BQU19JaXZUSWhNOzlrCnp2MXZrYyZJZiNaPDkxcG5geCl3aSFQK0Y3Z35o
cDghJlI4YCZVWXB1c3A0TGMmKWcwMzF3dT1zamY7KCYtYEI4Pgp6ZEVgQF5hVSRfbyYrfjRYKG04
Izs4ej1NfUQpVSMtI017MyomLVZgV3A2PXk9aGdsaiRFTnpEVWpvaGdwREE9ckUKelV5eUUtN1RM
dD9MelB5N1BEWlZmR3sjRGljVEwjQ0lsPXZtS0c/ZmdTOXYzdHpKdXZvQDZCaTZBNUlWd3JIPT5y
CnowTWVseCYqR1Zgc1YpUz0rMmRfSDdXcnNqVkE7NWM4cHE4Wl54Pm1lZ3lYVHdPWVp+TnF+O1V0
OF5HIyNGK3o7cgp6aCZ+Z354OUNVOHMoclJzbWljLUBTeFZvbkByZ3k5fDc8NXomNEA8I194R3kt
VExnXkh6eGdRPkxIMlhqPGZAazYKelcoKE9CKn1DcDh2SEVQUHsxfFE7dChlWXd3X29vQWVuRF97
K15UISpxOTckK1pnU05RJW16NnN3eHc0YUFGUWxxCnpeWXVmcCp3WV9oNUpDV251VkQmOGpMRkNZ
REt1a3xUJGMxZmJAc1dfbH5wbntpSUZyckd1SW9ucDRfPShvR1BVMQp6aFVlcXMxRWtAK3g5fjls
OEIwcig9ITk1I1RZNHxCIXBWR0kjcjF8NzRhRz1rNnkqYlZraHNTKGRse1dAK2VVfG0Kel9sX3l6
aGpqTSVoOV95OF9MZUBJPjdvKm4hZDVsS2E/MUBIRk9edn50c21JcXFwVGdmQjhkMF8/MF4mbTFA
dzIkCnpueyFJTUprRHE2MlZ+cHUzSEBCbDhfJSVhMUdkNUkhNXttdkZJdi1jQFkoeWVzPDhyeCgz
T1dsTGs8Yj8teX5YLQp6SEh9PzRDX09ma3JsXjs+c0JvSGNGREdnZERxSUV8dnFfLV4xem8hfj5k
a2kmOW1aKm4xckV6bCRaZWs+SmklKyoKelopYntTWkVvPmQ2PWYxRTBZZFpvVH5DWXojcVY1cklR
NDN8JHpSTXdAUFBVY21VQmE7cXJ9Qzd3azZvT1J6IWMpCnooOWkoZG53TWFhWD8tZlppMUwrJWZZ
IUtacmxUNWgjdih7bWc0JF8hekE2SzZYNjNuKlV+TiQhRlhNXzNgTiRnSAp6ZWhoTVdVd2tjfGAq
T0IpVChSbkskPXNWOzlWKmZiQlhQNTdGRlFKUUI2O3Q2MFZuWCFOaUxrc1FGSHZ7QE0kd2sKelI4
e1l1I0c/fU8lMkV+XzRZXkxIKyluQDVvSEhyMmF4ajVob3YxYDg+d2l1e01UbUt7VSg+SlpydDQ8
K0FEYDk3CnpUbWUjXnheSyljXjt6MWomYkM/Rjk3UShRN2YzTDhvWGlPeChxb0RXKTx1XnRjK2Ju
QEpRKz03VHgtXntTMW4kaQp6djFAUHgta0ZZSD1QVj59cFM4TV9FP3J9R09Maj1EeF9UUFVFJSpu
K0MxJnNZZjQtWXsxenhxfTUwaSlzI1VTdUYKenA7QypWVV9wcWxPaVExfDdxKEhneH1QeCZ1UiZa
KTliTzVXaiQtTEBOdFQlISUpXj1lOWdSKj9XY1EzaDdESVk2CnokOWhKJmgxK0VDej1vK1BlanNe
SXFxaEJ7WlJYaFMpTSROZHw0ajl3WEd4TkctP1pUWlQxUXY3KEclRFRwajRgMQp6TUFIQlg7UChX
SCZQWm1pZ09rVzNac3NDMmVfP0QkaDBRI1BvciY2eXp0eT9QbG88TzZudlN5QzdtK1VhZXwpT2gK
em9hYmg9JUV7cik/YCVeNHZDSFp+ZUVyU25CNVQ8bigrekJ+N0R7QzVEY18kXi19dnpHXzI3OSUh
TX5HIWp5Yk9hCnp4b1NwJkh2eUpgaTBLb3koaDBIbFV0M3RTbGFHVlhXK3xMY1Z6OTFOJGpJMCpn
P09CNS1ZakdEYiEoQ3M4P3xUMgp6S1FYb0c2O19mOUt9S1ZxbFlIdn1uTUlMaFVZPShzKU5Cfipo
ajxqK198fEsjJVF9K2NfM3dUZlUyTkBsNClAQmAKenY+QjZveVZ2WXpzOElGRlQqZ0dMe316eUg5
YHNMe3lRViRUcTVYUjMmfnk3PTN8fjUjdnBsNHwkaH02fTxeOFM5CnphUDtmd3REU1dFMS1BN0gq
R0g3bGxGPiF9NU1OfiFqOGk8ektrVSo+PHtLX0o2JlZ9PGg+ZVI5eXxpQ3JVZDhiUQp6ZkVvKT1C
b2orQ247QTlRKWJqTURKZU1xY25YTiVnPihhKj81ITlgaHFJYXEzKW9RTDliNEt7T2xJbWxQdmJB
bVoKek8mMUhGR1ZqYyQ0PSFAQHtCU2llTzJhRnNESHwwRkVwbSVzZXQ1cUwtVU1FeEJWRylkaTJu
MFJTWjNscXVIIyNWCnowaCFZU3pLaXw/VWpBI0kzJCFgdGl7bEBLTXJEflNzWldkN2RNeFElKGRA
UjRLQ1lFb3lpTWMhd2I+Nl8jS0Y2fQp6MGZnc1FeITJ2VyM9N0hTIzlqSSRuPU45Y0pkWno9YlJ7
VUE/ZVFIX1FifHVBd1F7MihkYUE7c0J3aXhmRzVSXj0Kejw3OXVeRGRCNyQxRGZAU3lMIXdJLSM2
emdTOEtIUD4meShAUXR4TW8rXmZrYzBvR0hMbnc8MWl5aFdkSE1zOXJaCnpWfXRJaCtlU2VqRWJq
anZvR2N5N2VycDdZX3ZYdHBtYXF3PWBafCNrcGFVRTx3PEhJb0gyc1VuJH5eRSpoQkp6Xwp6IVEj
NlclSSR+eHJOakJSdip0Y0U0PkcqeygpTVB7UGhwTTI+QzIlQHpwNGs5Wn5EN3dScUJ6WktjOztq
Oz9DVmwKenwzbntzVStDV0JyVEtKTnNsNEROVzZyPjwrPTRvTER6fnlMUjRyPU9eaGFMTmtNUC1Y
PVQme3Z6T0Q5IWk4LWVACnpKdnJFfHIjfXs1cDM3KWp1ZiRiby1YfCt2QH5jMVZsVTklfi04YSZC
bTt5RGdRb14pcU9TXlZZM2xKe0szOFhYZwp6bzA/YF9EJUFxVndCOVN5Uik9QzxKcnk1KEx4QC1A
bWhwO1p2WDZLRT1KPkFFOztRKXVTZmR5MU1NUD8tKEZRNkMKemteT1I1ejxoZnFgdEI4bUExPXZC
dlEyMHdCfl5ZQSVPIVc+amIwdW5qcF9FLVJheDNwNXlQYz44QGF0IWs8fWYwCnpBQn1PY1heQVZ6
UklocyMyKSU2cm92NilGNHQ1Qkc5VFQ7QWFQQVZ7dDgqdTx0amB+NGtHPGRoR2NSYVIxdGl7bwp6
QHxDVkc5ZSgtaThKcUNkWWdVNmZsOXFwIT9OYnU+MmlvJWFZQ2k/JWdjUXI9SVBNcnM+eyEkKXtA
OWVZbEk8ZSUKejRUQC1LSXZKI3YqJUVscT9DfSo5e0x3azw2YFA1YjxkX2lPJkIlKVNDdTV5RSky
QGEhMXc2eGQmJExiNkBsbk81Cnp0d3hwez5TdlorNSZ4YHImJW4qVEleczB7PWN3Pk53O3JBenA0
YGBaQzY9UVpIYnRlRWdZQFdKaCV6enc7RWlGRQp6RnlTTG9SSDE0TjUmdj0oMSo9cSl7UVY7c0Q/
SHJJTSRkTzlTTj0+RFc3ZjlHKFMyWlZrI2R1QSZFM1QpdmYqPEcKekAkKlhxMUUjXzd4bEZZQDtt
Pj13d3xyZ2kqT3l9UFYrPUNsQkZYYmpoYzNTJWo7YH1aLXYxS3hXb0NXNGtWLUpaCnpCfUFBaSh1
SmoxbVY1aWA5MSslN3p1Sy1wc1FHWC1zUTw1K2lZPG82MFFhRkBmO3pgQ0otJmpQK2BQNVdFRnhC
QQp6YUBXRj93N1RKdXxGP0tCXiE/IXYlRWloc1NzQWBlSn0qQzk8XzxLJChhfXlWIWo5d1U8TkQ4
ViZFbDBLY0A5XkAKellXTSMoaEUrTiZeP3ROVnh2PENqYm9SZERfRyh8SElEPjJXeVhzM05qdHJa
Y2ozeipTTEllJmdzMUBKY1VCfWczCnp8SUhvOTxNM2NDbmY2TnRabSN1OzBSKjl7Vnk0MUEkM1dC
Sj1RSkdjV3M2PFg0YyowUi1gUUQ0TDFSdUpVQnR3Vgp6SVd5XnAweD0+clRWXyFlSEBjXjNKP048
ZnNtcz1KWipLaUlKPEg4flRQXkxQcDYwcEJ1aWJpWlBCJH5RJURhK2YKel9ZZU1iOEowZ1lgeGsy
ajFuOTdYP1V6JFdEP2UrU1g0WUBJdnlRSFAwQD0mWChpSEdlI0xGcWViWlg1fVVuKF5CCnpab1Fu
dmB7QXkxTSQrPzMrbXVBYz19NCR9eDwyREEqbWdDTTg4QzNsOXdJaDdkN3I8PkdiT1I9LUUyLWpo
a0xwSwp6JWQjWlRIZD1pSnBXVi1SYndUamNWYipOdHFxN3NpPF5XO1ZJcDVPZDY0b0JmM0ZlbGhE
dWo+JUE1dGc0ZnQhbSgKelJLWUw5Q0RkR1NIP0NqNWUqRUw7YURRamJhSjwoMD5HM3d9Q3xhMENi
Ul5KPnJkQ1BhaG11PEROenh8Tz99YTJDCnpnPVV4TEojcGJrKitiUlJvZFptV3A8e0V+JDctSSM+
Yz0wUyohLUVyK3xEPkBtdnAyUk5PM3YpLUwkNT4/eHw3cAp6Nmk8WTghUFdVNyZ9TnlDNUZfV2Rr
UkVHWEZwU1F4PklMcmgkQiFSSk9eM3UkWEQkaXwyd2RiUkZ9UD5gYS1WfHoKenFaZ3loZ1pZPFZE
a1J1ZWQoRnorc3Zfd1JJPHN3ZDNnMGQtZGB6aVh0eXJRSEcrPVEka01oQ1p0Wk9wXylEWU5ZCnpv
QzR8cTAlRGVYaVR5Q0EjNHB7KntvV1loeWdhO35rem82ODw5WCtDYjB0fD5TdWxARXUmZEdTLUtw
OEIqNmJMQwp6S0R0cVc5Q1JFMiNJT2IpPiRmIW9RS21ec3tCJmZNcihXPC0yZU5ue3RiXktqYTxz
JD5NbW9hWU0rZEx9e2RgTjEKemZOQGY/cEtnUGdTekZaWUFVZT1TaVhoT3I2N0VIbVNQantKZVJL
WUJaJWU8fXFRQCR+OGk+JEJjbiR0cyYjS2FDCnpCfGZlPlJLZEFWVD58dDtQWjFkZzB7aWpwITxA
SH1LVHpiUytYcU5VRGZSMUpmOVE5PiotVERZU00jbUswVDJjNAp6XyE1eDslU3JgMEtPYnh9RGMk
MClxNUxVT3ljVT9YJEgycX5oR3JoJDs+Qm9iWF8+e1hFaFpgKWZlPnVTNjlgakYKenl0KXA8bmhH
IS0weDw1ZXBYOWdCZypmX3tfXmJebSFDakRKYlJ8bUtfazZnMC0yPy1hWCNmUSlFVm5eR05PMWZ+
CnpCZXs5OT4oQmQmdGg5KjVfaSNhSHJJRE5oVDI+LTVJKXxtZiVPeGdYUX0pUGhTfGhrWURtTSo+
Sl96JDZMe2B9awp6TCtzJmpnZUJ5YS0mSFBwXmVxX19kIVBvPyVFa35LdTdVMnVXKylGa0pUUjk3
VThGKjQ0Pi1qPzN2UykyWWo4JUMKenl2UWdYV0cxSkMoWmorWldpV3ZrVT1Cdio8UzY7ODQwdkxI
KDg3VWEzdSRRSUM0PHlpen55amoyeHdFRjZTcllGCnpeK1F5eDxKbTdieCY+ZzZoWVk+SEs/LT9P
dHlBQTFATXwhNDN9SSVWcjxhKVcwNVFWVSF2Zj5tXzt9akRUbU5Kfgp6aio+cnNiNkQrdS13MDNy
PiZVIU1ALUcpUWc0aShMRG8/bXM0SGp+QXUkJHQyPGEreWRRLSRMYXRmfk9XbDl5UVEKelU/bm5X
YFRUP1FRNWVCQjNAR1FmJThaKns+K3Aqa0hONSFuO1I2STNofntJWHFDbng8Y1dodkgja2BZNilT
P15jCno9WUpsY3VUeXtIdSo5PE81bVhkX2xBRk5VNzx6NkVhSTQwZ2x6diZXPURhI0NOZ2VuQ2lg
ITxEYj13NGJWVzsrWgp6enhFI314ZVFYNzViJSQoO15Jd15SVjt6akpadHc1JFU0ZihKWnRLKDdH
KDRWZ2Y2MW9wIy1nRG8kWXlDe29Caj4KenI5aTNjK2Z7NHpoQVhsJG4mdzFBTUVyeGhkUU5kTCNz
amAlN1k1OVRlUjBsSWAwMyNXZT09Mjcpc0pkI2QjaGFrCnp6eUppMnYqS3tOU3BgSXpna3xxNnNK
S1h3NnRse1NkdypSOVhpXnlCdDx+KD9MUjxUUUYqX31kWXE+JlhOWlpoSgp6cHZiJW4yNkJgdlNB
e151aHBHKFhhVGF8QXtxaz5jZGJfQGlaKUFkMXprIXwzZU9OQj8laUZGdU8/aUtOcjc9JXsKek1q
YTNWTGJpKU4pPHA2dTNrVTghIVBlVDhIKXdaWWZhVkhLVTMqKkdVPjtXZ3t7M3xic3hwd18yNDkr
TGdVYmRRCno4WENgajFjS0l7MVhWeytPNDdwczFZOzU7MHdpTUtEUFdSViVvelV1b2U4NnEtUnk+
OD1KdnslMWhPOz15c3YrQQp6SH1JKzthRl87ZGtRVzV0JnlLZiRwdCg5RntXNXRUY20oZHsjUmt9
WDhWdFJyVV9ePT4jdUwhJEhgfkwyPFJQM0wKencxZGRYenk9Nk1IWFdQPEdsdnFKRj4hZTlUdXs+
O3NmOUg1Z0s2VWJ5bXRBPDMqMTFLN01LbFkwRVZKVz5RbG53CnprVVNhJEV9IzR9LT9jVzdKcD9C
SihLTCsmKlhNZHR4Kk4hRj1TdF8qOENkITt6PEsxZVZUXiVtIURuUC16O0xMPwp6TFVmc3NjPnR0
MTYxTCs9YlJlQmY5VX4jI2pYcUdYIShEK0Q3KGw+cXo7ITlOT2IpY3I5Rkoodm9wVl8xenFHdV8K
eilVXmlXUmxPaGE2fE9VPVhRJWFGa2ZmfmIhXiVLfmw5fm8wX0I1dzZKSyNgd1JqVmlZd01UbkMx
U2pBRkU+TjUhCnpebSo3b080bmM+RUN+fjQ8bCtxNnQ1Xmg7ZVMqQlY3ZTE7NCRRS1lSaCs3VHYh
QHt+akdwVD4/LWppPSlMeF97cgp6YVRDJnNHe0lRWmJ4X3dsSXd9ZzxLd3srVzJ5UnYxeFZlMlZO
RVUjWkQoZzxJQk8yeHBLPnxgQk9HZV5tbnAqJEcKeipJTmk5JTFAX1g/WTh4dG1+OXdfVmNeWUJV
PllmO2BJanFMVkNwanVhO2hqdVlvTXBgJENBTzwhT2ZZI1B8IUFLCno9VCY0P1JQNGJ0Ryl+JWk2
YCglUTFUe3h7T1BFfX02NTkhPjw7QkdFbk5WckNrPlQ9QnN0WVRIRD5OZFNhOFV6Wgp6YW9IWCom
b2AqdmdLVlZwYEgyelVMYFBTNTFnMm1SP1JjX3JFUXRDSncoYDlfPWMyV0A3WUVSWVNBYGJiZSNR
U0EKemo7ekpGMEowJHI4JjY2dyM2KDRIdTEoMT1TMihyOT1vY2NPMGZhSjArNURfbmNWbXpOZTRk
fGY0NmIqOClGXl4hCnp0e1h4S3ptKVk2QWBlST0qQkBVM3w5TWNEa0gyKnhZKV47WjMyR0xUTnBJ
S2kwPzVnUihedWpfWiZoVmo+amVVMwp6SFdgO0UkT1ZEJTMlSys5UmE9QWwxdjwraEFEc2FHbCpZ
ZD40ZFF0T3ZafHc0MDFsQWJrYjJTMEw4OXsmMUk+SkIKemxRR2hyMUM8IzBUNmFYYC1YaD19eU9G
ezxJN251c0ktSSU9bSR+LTtxI1FyZyk2PklaSndjUUEoSEh+TW14ZXFtCnojVGI2d1VOe3lBe1M7
N1BCTFopV3YlIXx2b1RQdW9uRnk1Nk10fm89P1FKZkEtO3lneFQ4fGNJZzBLdDlFTTtaSQp6TmBr
MG1GTDt8TD48UzZ1Y2tkeEVTPUokNmZDK1ZyOStsV2wpcCNFdFVEdzd1ZWZyZU0kWT9tLVcrZlFu
ViVwfmYKekRCMXFpdChRMElacm92JWNDclJ0SSZYQHt2cE5EfGFBRWhJUmFQZiMkKXhBYjFiN1FY
Sl9VbWkyWGFRX3srRG1lCnpNcUxRS2BVQ0QkeWp8Tno1RUNSbFApLUdiMmYtemZHSy0hTVB7RTl9
ZDZramUrUVJPQTAwIWVtNUNIaXJUSz9HIwp6TlpPRUdmcmFARDN4dnR3YDw1SlZxUCg9VVNwPD1r
byV5RmhLT2RgfUF9MzIxUks1RSUwcF5BKD59cmR5MXtiJWcKeksmUyFZWkdKU217U3lgeEVCMF9q
RXRkNjM5WUpGTkMyYUsmMjd7WVdxNEZSQGUqVDk0XnkkO2gwRSFVOUY0KUJtCno2Zj5rYGhhMzsw
ZTQyMDctQl5ZRERwUWNqVk85VmNgRUU+WFlgJCgkIylsOGFLc2tVayRya2NXWUJYRlYqQFpkUgp6
SSo5dl9He0MlflBKbnQzaDJHVjRiLWNWbDJoUEcwTFAyRnA3K3tScWd7cG0rJDJ2QU1uKTcyVEho
b1N8U2lGR0MKeklXTGUraGxqRkNDJlRteFZsVztlWChfKUpCcDRnR21UcmJWZkljdDFiYGE/akM+
LUdhOHVuJV82Xmc/RlpXQVVZCnolZW9zbDRycEUwRH5eLSViYzUpRHF5YFpQblMyWnM3VTBmZS0z
YyV5akZvX21LP0VTQSVxY2ZBKVV9X20hZCl3WAp6SksoXmVaR0MtPGIwTClscVYoNTZIUDc4LWtF
N2pyWi1gQVc+b2MjWHNCME47YWN9Q3wrYmJXVExQOTxvMUchbHIKemI1WHB3JkVqdllMTkclQ1dN
e3hSJkVMZmNmVitka3VMUzgwN05gbFJ2QFZieUwzfGVpZGEjb3J5NVVNYDtHJWFYCnpmMjQtVkYt
Ym1+KWRGIUN6PnVydTk0TC1QJj44bEZMajZjblBtZHxBMSN6eiY2RyZ5dDBRNChlTX0kcTkmIz1v
Swp6ZkwmfW1HUzh4WCZRanJocSE1Y2tFbjEmeHB7SiF5VXQ/SWtiRyMzRCU8I2QzRGBzdXkwdnJp
WkI4JnVOIT1kMXYKekZqPW53Ql9PTW1nT1Y5aXRTdis8dlNhbnx4T3p+QyReJEhmSihablQwVWFy
YTh7VEpTNyYwT18zSWVue3AoUi08CnpuKnQ/Rm18dEBhQE97VyN0WFAzOTAwQFpLNEghPUFjTih5
OUk3Rk54OX51cDEtbVpMKFBUNnlSVFJyIVk8SnpQcgp6WkB2Jns3OWUrckdFM3kwWi07QXliY0El
akN5PW8+RUZNVT5HKVYxR05SZnN1d0R2Y009I2goTVlfN0I2ZVJyZ0QKenBDWEdRRUcyb3FIVjh+
M0NePEcpIysoNmRMSy10RHdic1IoVCs5U3RsPlhhcm51YUdUSShoPC1Pby1NYzZ2cVg7CnpGVlMr
bV90QnBlQElydkl2aExlejxsZ2Rzcn5TJTIpN1NRU2xOQEBsNlNGJE57VTE+O3hKISFJNkklK2M2
KVh3VAp6MXkqQSgpQ2dkR3VpPHRCblA0SSQ5UnpRfGVFaDBFQT9pajAtRmJYX3lyfGB+d280eit6
LTdLNSE1U0FCdEl9V0EKekpHYWFMQVE7NGkxJGV4VyVMdkZGWVFhMTFyei1nQ1VxLSFLaGNqTXww
Zl5nZFQhNj9aQUBebEkpZGZwVWZPNyZACno8azJEQUc3aFkmKEdVc0IhdWxrQy1FKlZeZ1l8PDMy
bSp1RGNvNHw7Smc5NCtwVUgtM0hxc3trJnZQTTJqdDF8OQp6M0sqITYzUTdYTnJzXj0jZ3VLJmBN
fXw1fUQ3Wn1NIV9vdWFqS35IK0ZhIztXVnsxVVd5fWRvKTM/c0dFZVlqUzQKejdMU1RPYiVzRipk
TGw1VCFgZnNMYU03O2QmJlcrfm9xRUZtLXJONCliR3UhS19LR25JYitRQHhjTER4O2BUb0QyCnpg
QGhGP3xMZCopfE1iQEI8MSttZ3M0KnklLSQ1PktMRDVDdXg5fF4hYmV0cVo7cG1qSDZwY2VVREw7
fEZSbGFAYQpLUl5BUHFAQmFaSGE8LT1jCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2Jh
Y2tncm91bmQtZmlsdGVyLWJsdXItb2ZmLWF4aXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1i
bHVyLW9mZi1heGlzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5Mjdh
ZDc4ZTY0YjBhYWQ3YmRlZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVy
LW9mZi1heGlzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1m
aWx0ZXItYmx1ci1vZmYtYXhpcy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
Y29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW9mZi1heGlzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWE0ZGY0NDNiZjE5OTRkZjBjZDRiNGJlODgwYzBmZTIwZWRmZDRkOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5n
L2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vZmYtYXhpcy5odG1sCkBAIC0wLDAgKzEs
NDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+PGhlYWQ+Cis8dGl0bGU+QmFja2dyb3VuZCBm
aWx0ZXIgYmx1ciB0ZXN0LjwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAuY29t
cG9zaXRlZCB7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgIH0KKyAg
LmdyZWVuIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgfQorICBib2R5IHsKKyAg
ICAtd2Via2l0LXBlcnNwZWN0aXZlOiAyMDBweDsKKyAgfQorICAjYmx1ciB7CisgICAgLXdlYmtp
dC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkOworICAgIC13ZWJraXQtdHJhbnNmb3JtOiBy
b3RhdGVaKC0xNWRlZykgcm90YXRlWSg5MGRlZykgcm90YXRlWCg0NWRlZykgdHJhbnNsYXRlKDcw
cHgsIDYwcHgpOworICB9Cis8L3N0eWxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorICBmdW5jdGlvbiBzZXRCbHVyKCkgeworICAgIHZhciBibHVyTm9kZSA9IHdpbmRvdy5kb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYmx1cicpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0QmFj
a2dyb3VuZEJsdXJPbk5vZGUoYmx1ck5vZGUsIDIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgfQorCisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgd2luZG93LnNldFRpbWVvdXQoc2V0Qmx1ciwgMCk7
CisgICAgfQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIH0K
Kzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzwhLS0KKyAgIFRoaXMgdmVyaWZpZXMgdGhh
dCB0aGUgcGVyc3BlY3RpdmUgb2YgdGhlIGNsZWFyIGxheWVyICh3aXRoIGJsYWNrIGJvcmRlcikg
ZG9lcyBub3QgaW5mbHVlbmNlIHRoZSBibGVuZGluZyBvZiB0aGUKKyAgIGdyZWVuIGJveCBiZWhp
bmQgaXQuIEFsc28gdmVyaWZpZXMgdGhhdCB0aGUgYmx1ciBpcyBjb3JyZWN0bHkgY2xpcHBlZCBp
bnNpZGUgdGhlIHRyYW5zZm9ybWVkIGNsZWFyIGxheWVyLgorLS0+Cis8ZGl2IGlkPSJvYmplY3Qi
IGNsYXNzPSJjb21wb3NpdGVkIGdyZWVuIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6
NTBweDsgdG9wOjUwcHg7IHdpZHRoOjIwMHB4OyBoZWlnaHQ6MjAwcHg7Ij48L2Rpdj4KKzxkaXYg
aWQ9ImJsdXIiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDozMHB4OyB0b3A6MzBweDsg
d2lkdGg6MjQwcHg7IGhlaWdodDoyNDBweDsgYm9yZGVyOjFweCBzb2xpZCBibGFjazsiPjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMt
ZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcv
ZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQucG5nCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE4ZmZkMGMyOGY2YmU1M2JiMzJmOTlmM2E1NWVjNzI3YWZjNWE5NTkKR0lUIGJpbmFy
eSBwYXRjaApsaXRlcmFsIDU5MTYKemNtZUhMYCZVekUpOzxFPlB7Y34+ampOeUlyND58XjFWSVEr
dDF2QX1SMTYjZ0F6JU97MFY4NWkwcypuTT0hYChXCnpSelIrUEVyWTJpN2xOMXMwd0tXKnNTU345
bEVNKj9NbzhydEVgPW1xT3FrPko1MTgqKVhYZEF+KT9SMTU+d1drMAp6P0VPNEAtI2lgYDskWGtv
OXNtR2AmO040eEJtbWZZMER1aishVW0wZV54O1E0KDlnJTBqKTBkYT1NcEhpRyk0LTUKemppPmx4
ejR1fGB5dUE8amBKQk9HX3MwOTdrJVlhemB9ZjhqcGtOPCVQRUdeQmRqOTghfDl0OTdnPDtAQ2Yk
cGNHCnp1ZStTVGsxbz14Q3YrS1JRRFM3eGpTUDw/Q3ZRSl5RKS0yaT9EZS1qSUgmcjg/YnBkMmVM
c3lhUGdAVEZlaW5BbAp6NjV1TCtze2pCVip7dWYtLUkzYj5FMVc8OGhfaEoqY3BReWcwJGc5fDMw
JlFxeUEpV3Z7ZUF0KFdiQmQyR1l2OHIKenppMi1oWmBIbmlPPHI8VXh3ck5JQHpoXihlIUNmKnFu
YCt9dGVSfUtUNjwmdzs2OGpVbXRaVmhvRDFRSVVhSz1GCnpjKjRRP2klbnt0KmpRQFdMOV41Y2c0
UTk/XjYwSj9SdXtMOXZOWFAjUWdBeDB5PjYmJlc3O2pecVUwP3x1dU9AQQp6dmdnJm48ZClyPUsl
UWA8Z0BDOV92THImLTRKPWZJbDJST0ZZIU5XPjN4cFZVZntfKVZ1U2p8Qjd2anReY2BKVHoKenNU
QmBXVTk5Ki0wO2lAOUBjNllYbXlwKi1LJV94R0soJEdYVFJkSyFNbmQlR2pRSj0mJHpAPEByJkps
KSVfPV9DCnoofWA8SHppWS11SXJFc3B6VCg5VHN+KShzRmhKSUErQTw5I1VDMVVOO19OME4+fEpr
YVZ8c290b3x8eHUhQ0w0WQp6SkRefTU2fnJMYV9POFVIIWMyc2hzT0l7T2F7WT1eaSg3MHdeaVp6
d0lsbEBTPEslZENjOyphPDtzUDxuRD5kdloKel9UMEhrR1BTeTU4YUR4SkkwPnZ0K3l0Xk50fk1s
RWJ6Y0RkKUVGUEB3WkpjNjd9WUpCbTczd35RbzhFfmQkRkdlCnp1P3I9VXgtPWxXbyFDdzdZYTB3
OXVVe1VMcEt3OFZ1WGtUN3dIXngydVMtJGRUbiNkbTxxRiZSXktsODJUX0QqKQp6YktxSzRwQTRK
eHBOPUZgKm9OfH0lNEotUHBxTGVEel90QldLTGtzSVEhKWtBLXNDanJHZk5KMmVxfkR8SVJxVCMK
endhamIxMSk1NkdAJlR3TzNJfn5sJUplZnU/VUgtQ2o3PykxbkZ8X19IQihicE9mbzIwYEF8JUtW
KmM7WFpQIzhOCnptaUtwJGFhZGtTIWV5R2NyeCY4T3k9WS1IT3RkblNKbyRQZC0lYTFyZV9tPj1z
cH4mcjdaSXBnOTtMIUwpQiEoOQp6c0llKFNQU0pVVUpVRFdaWHAxbjQxZSo1I3UpZ0RvayYpXkM7
ZzJPYWthRWtMd3RMNWkodkQxeVdefVZnYDM0ZD4KemBTZHBETStxTjFiR2BiMW9Nb0VWKk1DcUZo
ZntBfSpweUlkTHAhKUREUjRWanlyTEdGQHB7Q3tCMlpMWkIzeylBCnozQT4wbiV9PVduJWQ3TUlN
emhmcGVpZS1zRmw5I2dxSEwoM1JJUlBZSG9LbE49eXJYXi1Ffm1LdWxnRWYlYnwkcwp6I0psaUlZ
R0JjNCZRZUQxKG5GZEFUY3FLY3ZAJnZ+YyVeM1EkQHMkNFJydmdvcnQ4YG58MGJxOFNTYCMzLUlJ
bTQKenhXVWZWZ301ZlVqbVAtNnhyfUUxXndkY3xjSzFBJHRmLWdCOGd+dil7az1ONkd5UF9Ia0dl
OTdvKzI3KXApTmp1CnoqJlFSNkBYQ2l1OTZSMTl6Z20/dWB4S2JgR2ZJRWo0KXhhaEY7Ykgyb0Ay
a3pAZilecmAtNHhUXmg7Ml9OK1IjJQp6YG9ZUWRKYUhGTSpmO3RudHNzTFk/ck9VeihgRmI0PWco
MCNvd1lnaVdTY0U1dn1TcklHUGtjbyFUR0pDMTRGJHoKenhzQEJ2RitEdW81T2U3UDUjYT83JSU/
PGMzU2JkVUs2STgzbitrWjBxNytnU2pNSDFEUSVGWVJ4JXIwPCRWbU03CnpXYHZsaThrdz1yT2Jt
NE10bWp4PCZLNjRpM3VfQ2AmaVNfZiFGSTBXZEJeTjxxOVhNdmYtfDN0RURANCNUbk9iVAp6YmUy
el52cnEoQ2B4fkhhWmkraHFUO3AjN15Gci1nYDE3dWpqXmgxKUpGbV5saElXLX5aR0k0dXFEaWhk
PFREemAKeng9aG12TzRKd0deQTlWRVp5a0dBNz5UamNVXk5BJEwzOzlpSHVBfl5kSXhZZnhXUnxV
Jm5LaURZKkpzVyhUe0xlCno2T2YtQGM3dHJaR0JyS244VlZXNDc4JFVrQGk+bishUXgkeFJiZjR5
dmN8I3YrSFQwfUpCVSRXKyg9RmQrTitPRgp6dVFtNkRJSyU3Jk9GKilGRjUxYWdHJHFIbj8qNjVE
O3ZTUmFvMy1ndyNkYV91b3Nwb0JLJlJERXFFSGwqRzVQbDgKek9wQE9rZXdIMEBMbFBnJFEjXlRt
dVQqRkU+eiFpQGNPWE5FaEFyc15CU2pVcmhydmlTSEwmcnc7cisqX3wyS1JPCnpNSCQjKWMkWUQ+
SHdsWm4hI3xiNmFwOClJbUUkYWUoMW1HOGxRcT1UUmFNPCo8U3B6fDVmUH04OWllYyYwKGBeaAp6
bE1eMnJhXys3diNyTkZUKldWbXAtZGBmUSpkUSg1X0lHT0l0NyVHPkBLeHtjd3M7MXtlUVNxKWlh
aWhzeSMwdjMKejhMUzt6V1hjWkQxfmZyPitwKlZFR1VMKW93aW5yclRWZyZ4N2M8LXc2KlFDK1Rs
SUFyQEotcT94ais1cmQ4MURXCnphfnh1WUYyc2RRcipgQnxzZ0hQVkFyU098cGZid09vJkdrVXh4
VWI7TiFCdWUwe31iSEtFV1czWmtfajBGdm1DKwp6YXd2dFF4aFNrKVUrPj16NzgrWmI/eHpUYmlo
a2dtP3d0N3p2cHhORDkhIUBnSFFmfWVvQD5RUlpMQiRfYHwpcnsKenhHfXdNYn4wbURnfHw4TUdo
cWtGdylpYTA8bURfak9DJUVBITNIbmE3SGhsQVREcyhGa1ojQHk3MjN0VXwzPHB8CnotV3JEZys+
NFZpZjwlP1UpRldGSkcobnlWbX45NnA+MWtAWUtlMzwkSn4ySWBXeEFaazw2RXBuZ3tlJDRRZns3
fgp6TDgqSGl6aylrN2RwPGZmWXB+ViRgMGRAbjxGO09hKSF1eV8yO2N0b1pvI2c+SEZZaiRnMVlI
QSRINyM8ZEo+SigKelMtI2MjbiZ2a21SWnRfSD9fWG1vY2VrY3xXcWFzfTdRYmtkXk4wJSgqWUpm
ZGRySG8oJCRgYHJfNUhafSlPc0YxCnpMYTZ5VSpZclNTVWJyTSVLSnl9SUJkcExGQGJmRnM8fW83
bzdqXnxLIWdVO3hgPDt7czB3PDcxI047emh1PX5fSwp6Y0M+TjJnKiR6KThNaHhmMDQmXiQxbXRK
WWV4Xz00YCVzK3BCO0FKPCRiRjYjS1R7Sj0pcUNNWilYP2ltK3xhVloKejhvOW8hbXZTJG9FSVFD
flIyc0hoeGArenVLMCFnMXM1ZkF9Z0lNT0ctLU51T2lZVXBoanZPV1VIX2lkbTM9Q1dLCnozN3Jo
anl9KnM4XypocGxtTEJyNihMPl87Zz9famNZeUw5ejtOXzF0MipwTyYqSjlBZTtSM19pOXFXTVc9
JFRgVAp6YktaOSteaTRTX05OV1NzNCZtaFJVenBQYE4yVWR9QUxFNCVhYExhPT0zPm0ldVg9Vk9z
d1kxZjcoJT9EKnBgfFcKekZCTUpPKFFyR0F6RH14ZWxJdFNKSnYkSntgaThiRkxpKFkpcVBpX1JO
VnxaQWY5eFdicnhqcjUtemRwJkdRNDRCCnppM0t6QGxEb3VQSWMxYXJaXmUmd1NzU3NHZilPJSM4
ZXgraWZWO1d9eHlFeiVlZTtEYnJ9Z0xSZz8kaUpNcHJ8cQp6WD4yM1BmPGU0RmBlfjJ2I3hNcV4m
RSRQMEdpbnZyJkcxZnpkUWxaPkZrUmpXXiV6e2ghb0wjRiFANiVITntwem8KejNVcCZJLSsjNShs
JmNZQ3VLPjFhUzk2JlZYQno1XlZAKTI1YnlZO31gT0s0X0ZjODckfEpyeWcqM2hBaUdqYHEjCnpV
TlhCWGRjUj1RI2dKNjFldkxYO0F3UVQ8eUJQeVZyPVFfRDN5N1Q0dj9NfjJUeWpyNGEwTnAldT5I
b1R2IWkhNAp6Y1B5fDU2KXlVdlBaWGFIPDdKeHhvQzM4NjE1KWImcztPKGpGYz5ueXFiQ1ZfKXg0
cTZKS302LTQ0TTwxbmEzfncKenVDWTlwKVo0UDA3UFR8cnM2Yk8ocm8pWSFRXntqdklJViZuNSo9
aUAyRiR2WXRtZ0xZPiNWQzJjfTRKdU0mY04/CnpwZkFjRFFAbygqcnpCMCo4QXYyajU5KUZXbTVI
U15Rdk5+JnZHeUA5Zmo5WF9OPlRWbSYjNlQ8YXZiVXs7YU9eRgp6dE99PlVCVGpjdG5iOWEqO0J+
X3kyYztlSUxsYEBDWG9MTS1UXyZDVElPVyFxemhlSU4yME9YRjtYPHF6bihxZCEKelJIISppdVhh
X09zOF97RSNWeUo1RmBrJkpvUH5yRDFaMVomWCoyKHxAI3dnKlZlUmFLZURoKl9mdzU9TGltTSV8
CnpZQj5hOVZiK1V4UEhZPWI8UElofUQrQFNMdlYxSmxzQnZRdTNpQ1JXd2g4em5TPS1IeipDSWBY
TWBXRzBjOFpxNwp6SE1WfFZtcCM5OSQpdytJN2NpN0dwa05KTVJ1bDZmI3JJfi1kRjZ2eEkobW0q
MCRuUVZEe3soQD4wNE4tKiYtT04KemZUPUluZ1hZdmxPcGN7WVJ1IT4mPjNaTTxpbiV3V0p7aFV6
ak93c2QoYGpBbVozQihTJU8jfGdRe0tUU0BwYTsmCnpIdE1ad3ApPi1gTShySChGcnVOZFhfIXIz
aXhSUmQ3byt1NEdsTldZbzg0TjU4eiRJVW9CPDxhYi0wRXdmZzNFUwp6STUqUjZxSlBrR1Ixa0tz
UFVFTjlEIyo/ISF7O3cmM2VZbDRqOCVpZDVqOykhUDBgZWs5QUArcGNFP0VobSs8Vl4KeiF7cj1F
KHs/ZzQoJG8qYWJBOUdZNU8kJUokRXBAczBYWmNDYlExUFBGWU8yTW9WWCpzMUltd1VPPiR+bGRu
ISNsCnpxV25eXlFlI3JKWVd2V01wfH4tfXJZaWptPisrRkQ3XnBiQig1PlR1enZqRWYjWXRxeiVQ
LU4mOTw5KlRsfXIxWAp6LVdBNGc0PUM1Z0ltMzskOFlpRUMjN0x5ezIlS15ISTZDc0FyKn4+WWFl
TENaPl5BMExBdE90ME8hbSpnUFV5TUAKeldfcHFrcn5fX0xWZCh9ZTlIM1FDdHBAWDQkN31lelg+
Sk5JWih6TEtBaTIoTj4mR1UjKX4+VFctbX5uZzwzKkxjCnozQEl1djtTNzF8e3Q3YFMpWVF9ZV5D
RHN5SzleOSlpYDxOaSNVTX5zOSo4SUokamFtPmltRmlPY3woI0k+eV82Vgp6ZnVaJWJ4TnsxZVF+
TT4pU1B4VW5OU3x9PzQ9VHdJIV92NXFpTmh5UERFdUBjJm1afX4+QE1fVyk+K3MrJGcmRm4KenZY
RT1KTSlPX2tRVUoqMkVZOW8hZlhTcVB3TWZ1SnxIJSZVUH09P2JZIzlEPzRhNTd0OXJgYkpAOSQ+
c3p1M0pgCmUqdUJZRkF8eTw5ezMmUjwxNl85bXBDMVczJT5PakArQ0twSlZJVHdtCgpsaXRlcmFs
IDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0
ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQwOGJkYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMv
YmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBA
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5n
L2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVy
LWJsdXItb3V0c2V0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4NzkzZjI1NjkwYzg0MTZiMmFlNjU2N2U1
NDA4MTQyZTAwN2Q4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0
cy5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+PGhlYWQ+Cis8
dGl0bGU+QmFja2dyb3VuZCBmaWx0ZXIgYmx1ciBvdXRzZXRzIHRlc3QuPC90aXRsZT4KKzxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyI+CisgIC5jb21wb3NpdGVkIHsKKyAgICAtd2Via2l0LXRyYW5zZm9y
bTogdHJhbnNsYXRlWigwKTsKKyAgfQorICAuZ3JlZW4tYm9yZGVyIHsKKyAgICBib3JkZXI6IDEw
cHggc29saWQgZ3JlZW47CisgIH0KKzwvc3R5bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CisgIGZ1bmN0aW9uIHNldEJsdXIoKSB7CisgICAgdmFyIGJsdXJOb2RlID0gd2luZG93
LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdibHVyJyk7CisgICAgd2luZG93LmludGVybmFscy5z
ZXRCYWNrZ3JvdW5kQmx1ck9uTm9kZShibHVyTm9kZSwgMTApOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgfQorCisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgd2luZG93LnNldFRp
bWVvdXQoc2V0Qmx1ciwgMCk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgfQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7
CisgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8IS0tCisgICBUaGUgZ3JlZW4gYm9y
ZGVyIGlzIG91dHNpZGUgdGhlIGxheWVyIHdpdGggYmFja2dyb3VuZCBibHVyLCBidXQgdGhlIGJh
Y2tncm91bmQgYmx1ciBzaG91bGQgdXNlIHBpeGVscyBmcm9tIG91dHNpZGUKKyAgIGl0cyBsYXll
ciBib3JkZXJzLCB1cCB0byB0aGUgcmFkaXVzIG9mIHRoZSBibHVyIGVmZmVjdC4gU28gdGhlIGJv
cmRlciBzaG91bGQgYmUgYmx1cnJlZCB1bmRlcm5lYXRoIHRoZSB0b3AgbGF5ZXIKKyAgIGNhdXNp
bmcgdGhlIGluc2lkZSBvZiB0aGUgYm9yZGVyIHRvIGJlIGJsdXJyZWQuCisgIC0tPgorPGRpdiBj
bGFzcz0iY29tcG9zaXRlZCBncmVlbi1ib3JkZXIiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsg
bGVmdDo1MHB4OyB0b3A6NTBweDsgd2lkdGg6MjAwcHg7IGhlaWdodDoyMDBweDsiPjwvZGl2Pgor
PGRpdiBpZD0iYmx1ciIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjU5cHg7IHRvcDo1
OXB4OyB3aWR0aDoyMDBweDsgaGVpZ2h0OjIwMHB4OyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrOyI+
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXIuaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFj
a2dyb3VuZC1maWx0ZXItYmx1ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhOWVjM2ZhZjZiMmUxMzI2YzJk
ODkzMzkzY2QwNzA2ZWZjYzMxYmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXIu
aHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPjxoZWFkPgorPHRp
dGxlPkJhY2tncm91bmQgZmlsdGVyIGJsdXIgdGVzdC48L3RpdGxlPgorPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KKyAgLmNvbXBvc2l0ZWQgeworICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xh
dGVaKDApOworICB9CisgIC5ncmVlbiB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cisg
IH0KKzwvc3R5bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgIGZ1bmN0aW9u
IHNldEJsdXIoKSB7CisgICAgdmFyIGJsdXJOb2RlID0gd2luZG93LmRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdibHVyJyk7CisgICAgd2luZG93LmludGVybmFscy5zZXRCYWNrZ3JvdW5kQmx1ck9u
Tm9kZShibHVyTm9kZSwgMik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICB9CisKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICB3aW5kb3cuc2V0VGltZW91dChzZXRCbHVyLCAwKTsK
KyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+CisKKzxib2R5PgorPCEtLQorICAgVGhlIGdyZWVuIGJveCBpcyBlbnRpcmVseSBiZWhp
bmQgYSBsYXllciB3aXRoIGJhY2tncm91bmQgYmx1ciwgc28gaXQgc2hvdWxkIGFwcGVhciBibHVy
cmVkIG9uIGl0cyBlZGdlcy4KKyAgLS0+Cis8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIGdyZWVuIiBz
dHlsZT0icG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6NTBweDsgdG9wOjUwcHg7IHdpZHRoOjIwMHB4
OyBoZWlnaHQ6MjAwcHg7Ij48L2Rpdj4KKzxkaXYgaWQ9ImJsdXIiIHN0eWxlPSJwb3NpdGlvbjph
YnNvbHV0ZTsgbGVmdDozMHB4OyB0b3A6MzBweDsgd2lkdGg6MjQwcHg7IGhlaWdodDoyNDBweDsg
Ym9yZGVyOjFweCBzb2xpZCB3aGl0ZTsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137004</attachid>
            <date>2012-04-12 17:58:41 -0700</date>
            <delta_ts>2013-03-13 09:49:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-80046-20120412175840.patch</filename>
            <type>text/plain</type>
            <size>81453</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBhMjAyNDFmNWJkZWIy
ZDUyN2FiNWI2OThkYjVmMzk3ZTUzMTJlOS4uMDJkN2JiMWZlYzdhOTU2NGQwY2JjMmQ3NjVmMjBk
MDQ0NTU3NmY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDEyLTA0LTEyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQmFj
a2dyb3VuZCBmaWx0ZXJzIGZvciBjb21wb3NpdGVkIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAwNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZHJpZW5uZSBXYWxrZXIuCisKKyAgICAgICAgQWRkcyBiYWNrZ3JvdW5kIGZpbHRlcnMgdG8g
TGF5ZXJDaHJvbWl1bS9DQ0xheWVySW1wbC4gVGhlc2UgZmlsdGVycyBhcmUKKyAgICAgICAgYXBw
bGllZCB0byBhbnkgcGl4ZWxzIGluIHRoZSBjb250ZW50cyBiZWhpbmQgdGhlIGxheWVyIGFuZCBz
ZWVuIHRocm91Z2gKKyAgICAgICAgaXQuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGFkZGlu
ZyBhIGJhY2tncm91bmRUZXh0dXJlKCkgdG8gdGhlIHJlbmRlciBzdXJmYWNlLCB3aGljaAorICAg
ICAgICBob2xkcyB0aGUgcmVhZC1iYWNrIGNvbnRlbnRzIG9mIHRoZSB0YXJnZXQgZnJhbWVidWZm
ZXIsIGJhY2tncm91bmQgZmlsdGVyCisgICAgICAgIGFwcGxpZWQsIGluIHRoZSBzdXJmYWNlJ3Mg
b3duIGNvb3JkaW5hdGUgc3BhY2UuIFRoZW4gdGhpcyBpcyBkcmF3biBiYWNrCisgICAgICAgIGlu
dG8gdGhlIGZyYW1lIGJ1ZmZlciBiZWZvcmUgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdXJmYWNlIGl0
c2VsZiBpcyBkcmF3bi4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9z
aXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW9mZi1heGlzLmh0bWwKKyAgICAg
ICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3Vu
ZC1maWx0ZXItYmx1ci1vdXRzZXRzLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9t
aXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci5odG1sCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRGaWx0ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHVzaFBy
b3BlcnRpZXNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpiYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91bmRGaWx0ZXJzKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3UmVuZGVyU3VyZmFjZVF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpnZXRGcmFtZWJ1ZmZlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjppc0N1cnJlbnRSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZU1hbmFnZWRUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6YmluZEZyYW1lYnVmZmVyVG9UZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0U2Npc3Nv
clRvUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmg6CisgICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpzZXRCYWNrZ3JvdW5kRmls
dGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OmJhY2tncm91
bmRGaWx0ZXJzKToKKyAgICAgICAgKFJlbmRlclN1cmZhY2VDaHJvbWl1bSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckltcGw6OnNldEJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SW1wbDo6YmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dWJ0cmVlU2hvdWxkUmVuZGVyVG9TZXBhcmF0ZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRyYXdhYmxlQ29udGVudFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpwcmVwYXJlQmFja2dyb3VuZFRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6
OnJlbGVhc2VCYWNrZ3JvdW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1
cmZhY2U6OmNvbXB1dGVEZXZpY2VUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5k
ZXJTdXJmYWNlOjpjb21wdXRlRGV2aWNlQm91bmRpbmdCb3gpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZW5kZXJTdXJmYWNlOjpjb21wdXRlUmVhZGJhY2tEZXZpY2VCb3VuZGluZ0JveCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OnJlYWRiYWNrRGV2aWNlQ29udGVudFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Y29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y29weURldmljZVRvQmFja2dyb3VuZFRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0U2tCaXRtYXBUZXh0dXJlSWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NSZW5kZXJTdXJmYWNlOjpkcmF3UmVwbGljYSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clN1cmZhY2U6OmRyYXdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6
OmRyYXdTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6YXBwbHlG
aWx0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clN1cmZhY2UuaDoKKyAgICAgICAgKENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclN1cmZhY2U6OnNldEJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVuZGVyU3VyZmFjZTo6YmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJTdXJmYWNlOjpiYWNrZ3JvdW5kVGV4dHVyZSk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnNldEJhY2tncm91bmRCbHVyT25Ob2RlKToKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5oOgorICAgICAgICAoSW50ZXJuYWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5pZGw6CisKIDIwMTItMDQtMTIgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRv
YmUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04oMTEyNzQ1KSBbQ1NTIEZpbHRlcnNdIE1lbW9y
eSB1c2UgZXhwbG9zaW9uIGZvciBvZmZzY3JlZW4gZmlsdGVyZWQgZWxlbWVudHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggZTFiM2E1NTNlYjFiMjk5OTc1ODBkMTMzODg4OWZjYTYzN2Fj
Zjg2MS4uODA2ZWMzMDdhZDBiNWMzM2JmMDc4MTQ3ZTNiYmNmMDVlNTZlNWVjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNC0xMiAgRGFuYSBKYW5z
ZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEJhY2tncm91
bmQgZmlsdGVycyBmb3IgY29tcG9zaXRlZCBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRy
aWVubmUgV2Fsa2VyLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTA0LTEyICBLZW50IFRhbXVyYSAgPHRrZW50
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEVuYWJsZSBJTlBVVF9UWVBFX0RB
VEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMTBkODRjNTUzMzBmODZkYTQxOWE4MDliYjRk
MDRjZmQ3MjE4NmMwOS4uMTEyYjAzYWJmMGMyOTk2MTBkMTkyN2EyMjM2NTg5NGM3NzhkNzZhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTMxNSw2ICszMTUsMTQgQEAgdm9pZCBMYXllckNo
cm9taXVtOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiAgICAg
ICAgIENDTGF5ZXJUcmVlSG9zdDo6c2V0TmVlZHNGaWx0ZXJDb250ZXh0KHRydWUpOwogfQogCit2
b2lkIExheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKQoreworICAgIGlmIChtX2JhY2tncm91bmRGaWx0ZXJz
ID09IGJhY2tncm91bmRGaWx0ZXJzKQorICAgICAgICByZXR1cm47CisgICAgbV9iYWNrZ3JvdW5k
RmlsdGVycyA9IGJhY2tncm91bmRGaWx0ZXJzOworICAgIHNldE5lZWRzQ29tbWl0KCk7Cit9CisK
IHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQogewogICAgIGlm
IChtX29wYWNpdHkgPT0gb3BhY2l0eSkKQEAgLTQ3NSw2ICs0ODMsNyBAQCB2b2lkIExheWVyQ2hy
b21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgICAgICBsYXll
ci0+c2V0RmlsdGVycyhmaWx0ZXJzKCkpOwogCiAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVy
cygpKTsKKyAgICBsYXllci0+c2V0QmFja2dyb3VuZEZpbHRlcnMoYmFja2dyb3VuZEZpbHRlcnMo
KSk7CiAgICAgbGF5ZXItPnNldElzTm9uQ29tcG9zaXRlZENvbnRlbnQobV9pc05vbkNvbXBvc2l0
ZWRDb250ZW50KTsKICAgICBsYXllci0+c2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3VuZHMp
OwogICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlKG1fc2Nyb2xsYWJsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmgKaW5kZXggMjZmNmQwM2M0M2Y1NTE4ZDI1NjRmNmMyNTgwNTViMWVmODJjNmRmNS4uNThhOGQw
NzJlM2MwZjQ0ZGUwMTAyMTJmN2ZkOWIyMTk1ZWE1ZmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApA
QCAtMTE4LDYgKzExOCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmKTsKICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9maWx0ZXJzOyB9CiAKKyAgICAvLyBCYWNrZ3JvdW5kIGZpbHRlcnMg
YXJlIGZpbHRlcnMgYXBwbGllZCB0byB3aGF0IGlzIGJlaGluZCB0aGlzIGxheWVyLCB3aGVuIHRo
ZXkgYXJlIHZpZXdlZCB0aHJvdWdoIG5vbi1vcGFxdWUKKyAgICAvLyByZWdpb25zIGluIHRoaXMg
bGF5ZXIuIFRoZXkgYXJlIHVzZWQgdGhyb3VnaCB0aGUgV2ViTGF5ZXIgaW50ZXJmYWNlLCBhbmQg
YXJlIG5vdCBleHBvc2VkIHRvIEhUTUwuCisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgYmFj
a2dyb3VuZEZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRGaWx0ZXJzOyB9CisK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogICAgIGJvb2wgb3BhcXVlKCkgY29u
c3QgeyByZXR1cm4gbV9vcGFxdWU7IH0KIApAQCAtMzEyLDYgKzMxNyw3IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fZGVidWdOYW1lOwogICAgIGZsb2F0IG1fb3BhY2l0eTsKICAgICBGaWx0ZXJP
cGVyYXRpb25zIG1fZmlsdGVyczsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZp
bHRlcnM7CiAgICAgZmxvYXQgbV9hbmNob3JQb2ludFo7CiAgICAgYm9vbCBtX2lzRHJhd2FibGU7
CiAgICAgYm9vbCBtX21hc2tzVG9Cb3VuZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcAppbmRleCBmNGE1MDBhODczOWExMGNhNzc1MGUyZjhjODg4ZDgwZWY0YzZhMzM3Li44
ZDdjYTI2YTgxZWMzOTY0NjU2ZTY4OTZiMWMwZjIzM2M5YmMzZTgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFeHRl
bnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdl
b21ldHJ5QmluZGluZy5oIgorI2luY2x1ZGUgIkdyVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkxh
eWVyUGFpbnRlckNocm9taXVtLmgiCkBAIC0yMDcsNiArMjA4LDcgQEAgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtQ2xpZW50
KiBjbGllbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
c3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQpCiAgICAgOiBtX2NsaWVudChjbGll
bnQpCiAgICAgLCBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlKDApCisgICAgLCBtX2N1cnJlbnRNYW5h
Z2VkVGV4dHVyZSgwKQogICAgICwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKDApCiAgICAgLCBt
X2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UoMCkKQEAgLTU0
NCwxNCArNTQ2LDczIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3Jk
ZXJRdWFkKGNvbnN0IENDRGVidWdCb3JkZXJEcmF3UXVhZCogcXVhCiAgICAgR0xDKGNvbnRleHQo
KSwgY29udGV4dCgpLT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfTE9PUCwg
NCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCA2ICogc2l6ZW9mKHVuc2lnbmVk
IHNob3J0KSkpOwogfQogCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0JhY2tncm91
bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBxdWFkKQoreworICAgIC8v
IFRoaXMgbWV0aG9kIGRyYXdzIGEgYmFja2dyb3VuZCBmaWx0ZXIsIHdoaWNoIGFwcGxpZXMgYSBm
aWx0ZXIgdG8gYW55IHBpeGVscyBiZWhpbmQgdGhlIHF1YWQgYW5kIHNlZW4gdGhyb3VnaCBpdHMg
YmFja2dyb3VuZC4KKyAgICAvLyBUaGUgYWxnb3JpdGhtIHdvcmtzIGFzIGZvbGxvd3M6CisgICAg
Ly8gMS4gQ29tcHV0ZSBhIGJvdW5kaW5nIGJveCBhcm91bmQgdGhlIHBpeGVscyB0aGF0IHdpbGwg
YmUgdmlzaWJsZSB0aHJvdWdoIHRoZSBxdWFkLgorICAgIC8vIDIuIFJlYWQgdGhlIHBpeGVscyBp
biB0aGUgYm91bmRpbmcgYm94IGludG8gYSBidWZmZXIgUi4KKyAgICAvLyAzLiBBcHBseSB0aGUg
YmFja2dyb3VuZCBmaWx0ZXIgdG8gUiwgc28gdGhhdCBpdCBpcyBhcHBsaWVkIGluIHRoZSBwaXhl
bHMnIGNvb3JkaW5hdGUgc3BhY2UuCisgICAgLy8gNC4gQXBwbHkgdGhlIHF1YWQncyBpbnZlcnNl
IHRyYW5zZm9ybSB0byBtYXAgdGhlIHBpeGVscyBpbiBSIGludG8gdGhlIHF1YWQncyBjb250ZW50
IHNwYWNlLiBUaGlzIGltcGxpY2l0bHkKKyAgICAvLyBjbGlwcyBSIGJ5IHRoZSBjb250ZW50IGJv
dW5kcyBvZiB0aGUgcXVhZCBzaW5jZSB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSBoYXMgYm91bmRz
IG1hdGNoaW5nIHRoZSBxdWFkJ3MgY29udGVudC4KKyAgICAvLyA1LiBEcmF3IHRoZSBiYWNrZ3Jv
dW5kIHRleHR1cmUgZm9yIHRoZSBjb250ZW50cyB1c2luZyB0aGUgc2FtZSB0cmFuc2Zvcm0gYXMg
dXNlZCB0byBkcmF3IHRoZSBjb250ZW50cyBpdHNlbGYuIFRoaXMgaXMgZG9uZQorICAgIC8vIHdp
dGhvdXQgYmxlbmRpbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBiYWNrZ3JvdW5kIHBpeGVscyB3
aXRoIHRoZSBuZXcgZmlsdGVyZWQgYmFja2dyb3VuZC4KKyAgICAvLyA2LiBEcmF3IHRoZSBjb250
ZW50cyBvZiB0aGUgcXVhZCBvdmVyIGRyb3Agb2YgdGhlIG5ldyBiYWNrZ3JvdW5kIHdpdGggYmxl
bmRpbmcsIGFzIHBlciB1c3VhbC4gVGhlIGZpbHRlcmVkIGJhY2tncm91bmQKKyAgICAvLyBwaXhl
bHMgd2lsbCBzaG93IHRocm91Z2ggYW55IG5vbi1vcGFxdWUgcGl4ZWxzIGluIHRoaXMgZHJhd3Mu
CisgICAgLy8KKyAgICAvLyBQaXhlbCBjb3BpZXMgaW4gdGhpcyBhbGdvcml0aG0gb2NjdXIgYXQg
c3RlcHMgMiwgMywgNCwgYW5kIDUuCisKKyAgICBDQ1JlbmRlclN1cmZhY2UqIGRyYXdpbmdTdXJm
YWNlID0gcXVhZC0+bGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOworICAgIGlmIChkcmF3aW5nU3Vy
ZmFjZS0+YmFja2dyb3VuZEZpbHRlcnMoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIEZJWE1FOiBXZSBvbmx5IGFsbG93IGJhY2tncm91bmQgZmlsdGVycyBvbiB0aGUgcm9v
dCByZW5kZXIgc3VyZmFjZSBiZWNhdXNlIG90aGVyIHN1cmZhY2VzIG1heSBjb250YWluCisgICAg
Ly8gdHJhbnNsdWNlbnQgcGl4ZWxzLCBhbmQgdGhlIGNvbnRlbnRzIGJlaGluZCB0aG9zZSB0cmFu
c2x1Y2VudCBwaXhlbHMgd291bGRuJ3QgaGF2ZSB0aGUgZmlsdGVyIGFwcGxpZWQuCisgICAgaWYg
KCFpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKG1fZGVmYXVsdFJlbmRlclN1cmZhY2UpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VyZmFjZURyYXdU
cmFuc2Zvcm0gPSBxdWFkLT5pc1JlcGxpY2EoKSA/IGRyYXdpbmdTdXJmYWNlLT5yZXBsaWNhRHJh
d1RyYW5zZm9ybSgpIDogZHJhd2luZ1N1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKTsKKworICAgIC8v
IEZJWE1FOiBEbyBhIHNpbmdsZSByZWFkYmFjayBmb3IgYm90aCB0aGUgc3VyZmFjZSBhbmQgcmVw
bGljYSBhbmQgY2FjaGUgdGhlIGZpbHRlcmVkIHJlc3VsdHMgKG9uY2UgZmlsdGVyIHRleHR1cmVz
IGFyZSBub3QgcmV1c2VkKS4KKyAgICBJbnRSZWN0IGRldmljZVJlY3QgPSBkcmF3aW5nU3VyZmFj
ZS0+cmVhZGJhY2tEZXZpY2VDb250ZW50UmVjdCh0aGlzLCBzdXJmYWNlRHJhd1RyYW5zZm9ybSk7
CisgICAgZGV2aWNlUmVjdC5pbnRlcnNlY3QobV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+Y29udGVu
dFJlY3QoKSk7CisKKyAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IGRldmljZUJhY2tncm91bmRU
ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFu
YWdlci5nZXQoKSk7CisgICAgaWYgKCFnZXRGcmFtZWJ1ZmZlclRleHR1cmUoZGV2aWNlQmFja2dy
b3VuZFRleHR1cmUuZ2V0KCksIGRldmljZVJlY3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBT
a0JpdG1hcCBmaWx0ZXJlZERldmljZUJhY2tncm91bmQgPSBkcmF3aW5nU3VyZmFjZS0+YXBwbHlG
aWx0ZXJzKHRoaXMsIGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5kRmlsdGVycygpLCBkZXZpY2VC
YWNrZ3JvdW5kVGV4dHVyZS5nZXQoKSk7CisgICAgaWYgKCFmaWx0ZXJlZERldmljZUJhY2tncm91
bmQuZ2V0VGV4dHVyZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBHclRleHR1cmUqIHRleHR1
cmUgPSByZWludGVycHJldF9jYXN0PEdyVGV4dHVyZSo+KGZpbHRlcmVkRGV2aWNlQmFja2dyb3Vu
ZC5nZXRUZXh0dXJlKCkpOworICAgIGludCBmaWx0ZXJlZERldmljZUJhY2tncm91bmRUZXh0dXJl
SWQgPSB0ZXh0dXJlLT5nZXRUZXh0dXJlSGFuZGxlKCk7CisKKyAgICBpZiAoIWRyYXdpbmdTdXJm
YWNlLT5wcmVwYXJlQmFja2dyb3VuZFRleHR1cmUodGhpcykpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIFRoaXMgbXVzdCBiZSBjb21wdXRlZCBiZWZvcmUgc3dpdGNoaW5nIHRoZSB0YXJnZXQg
cmVuZGVyIHN1cmZhY2UgdG8gdGhlIGJhY2tncm91bmQgdGV4dHVyZS4KKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBjb250ZW50c0RldmljZVRyYW5zZm9ybSA9IGRyYXdpbmdTdXJmYWNlLT5jb21w
dXRlRGV2aWNlVHJhbnNmb3JtKHRoaXMsIHN1cmZhY2VEcmF3VHJhbnNmb3JtKTsKKworICAgIEND
UmVuZGVyU3VyZmFjZSogdGFyZ2V0UmVuZGVyU3VyZmFjZSA9IG1fY3VycmVudFJlbmRlclN1cmZh
Y2U7CisgICAgaWYgKHVzZU1hbmFnZWRUZXh0dXJlKGRyYXdpbmdTdXJmYWNlLT5iYWNrZ3JvdW5k
VGV4dHVyZSgpLCBkcmF3aW5nU3VyZmFjZS0+Y29udGVudFJlY3QoKSkpIHsKKyAgICAgICAgZHJh
d2luZ1N1cmZhY2UtPmNvcHlEZXZpY2VUb0JhY2tncm91bmRUZXh0dXJlKHRoaXMsIGZpbHRlcmVk
RGV2aWNlQmFja2dyb3VuZFRleHR1cmVJZCwgZGV2aWNlUmVjdCwgY29udGVudHNEZXZpY2VUcmFu
c2Zvcm0pOworICAgICAgICB1c2VSZW5kZXJTdXJmYWNlKHRhcmdldFJlbmRlclN1cmZhY2UpOwor
ICAgIH0KK30KKwogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJTdXJmYWNl
UXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCogcXVhZCkKIHsKICAgICBDQ0xheWVy
SW1wbCogbGF5ZXIgPSBxdWFkLT5sYXllcigpOworCisgICAgZHJhd0JhY2tncm91bmRGaWx0ZXJz
KHF1YWQpOworCiAgICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+c2V0U2Npc3NvclJlY3QodGhp
cywgcXVhZC0+c3VyZmFjZURhbWFnZVJlY3QoKSk7CiAgICAgaWYgKHF1YWQtPmlzUmVwbGljYSgp
KQogICAgICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3UmVwbGljYSh0aGlzKTsKICAg
ICBlbHNlCiAgICAgICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdDb250ZW50cyh0aGlz
KTsKKyAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5yZWxlYXNlQmFja2dyb3VuZFRleHR1cmUo
KTsKICAgICBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5yZWxlYXNlQ29udGVudHNUZXh0dXJlKCk7
CiB9CiAKQEAgLTEyMTgsNiArMTI3OSwxNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Z2V0RnJhbWVidWZmZXJQaXhlbHModm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZQogICAg
IH0KIH0KIAorYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmdldEZyYW1lYnVmZmVyVGV4dHVy
ZShNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgZGV2aWNlUmVjdCkKK3sK
KyAgICBpZiAoIXRleHR1cmUtPnJlc2VydmUoZGV2aWNlUmVjdC5zaXplKCksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB0ZXh0dXJlLT5iaW5k
VGV4dHVyZShtX2NvbnRleHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3Iu
Z2V0KCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUtPmZvcm1hdCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlUmVjdC54KCksIGRl
dmljZVJlY3QueSgpLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCksIDAp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogTWFuYWdlZFRleHR1cmUqIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6Z2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCkKIHsKICAgICByZXR1cm4gc2V0dGlu
Z3MoKS5jb21wb3NpdGVPZmZzY3JlZW4gJiYgcm9vdExheWVyKCkgPyByb290TGF5ZXIoKS0+cmVu
ZGVyU3VyZmFjZSgpLT5jb250ZW50c1RleHR1cmUoKSA6IDA7CkBAIC0xMjQxLDkgKzEzMTMsMTcg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNw
bGF5KCkKICAgICB9CiB9CiAKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0N1cnJlbnRS
ZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSkKK3sKKyAgICAvLyBJ
ZiByZW5kZXJTdXJmYWNlIGlzIDAsIHdlIGNhbid0IHRlbGwgaWYgd2UgYXJlIGFscmVhZHkgdXNp
bmcgaXQsIHNpbmNlIG1fY3VycmVudFJlbmRlclN1cmZhY2UgaXMKKyAgICAvLyBpbml0aWFsaXpl
ZCB0byAwLgorICAgIHJldHVybiBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID09IHJlbmRlclN1cmZh
Y2UgJiYgIW1fY3VycmVudE1hbmFnZWRUZXh0dXJlOworfQorCiBib29sIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2Up
CiB7CiAgICAgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7CisgICAgbV9j
dXJyZW50TWFuYWdlZFRleHR1cmUgPSAwOwogCiAgICAgaWYgKChyZW5kZXJTdXJmYWNlID09IG1f
ZGVmYXVsdFJlbmRlclN1cmZhY2UgJiYgIXNldHRpbmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVuKSB8
fCAoIXJlbmRlclN1cmZhY2UgJiYgc2V0dGluZ3MoKS5jb21wb3NpdGVPZmZzY3JlZW4pKSB7CiAg
ICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOwpAQCAtMTI1NCwxMiArMTMzNCwyNSBA
QCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1
cmZhY2UqIHJlbmRlclN1cmZhY2UpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9vZmZzY3JlZW5GcmFtZWJ1ZmZlcklkKSk7Ci0KICAg
ICBpZiAoIXJlbmRlclN1cmZhY2UtPnByZXBhcmVDb250ZW50c1RleHR1cmUodGhpcykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJlbmRlclN1cmZhY2UtPmNvbnRlbnRzVGV4dHVyZSgp
LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChtX2NvbnRleHQuZ2V0KCksIG1fcmVuZGVyU3VyZmFjZVRl
eHR1cmVBbGxvY2F0b3IuZ2V0KCkpOworICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1
cmUocmVuZGVyU3VyZmFjZS0+Y29udGVudHNUZXh0dXJlKCksIHJlbmRlclN1cmZhY2UtPmNvbnRl
bnRSZWN0KCkpOworfQorCitib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlTWFuYWdlZFRl
eHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVj
dCkKK3sKKyAgICBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID0gMDsKKyAgICBtX2N1cnJlbnRNYW5h
Z2VkVGV4dHVyZSA9IHRleHR1cmU7CisKKyAgICByZXR1cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0
dXJlKHRleHR1cmUsIHZpZXdwb3J0UmVjdCk7Cit9CisKK2Jvb2wgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCkKK3sKKyAgICBHTEMobV9jb250ZXh0LmdldCgpLCBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCkpOworCisgICAgdGV4dHVyZS0+ZnJhbWVidWZmZXJU
ZXh0dXJlMkQobV9jb250ZXh0LmdldCgpLCBtX3JlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9y
LmdldCgpKTsKIAogI2lmICFkZWZpbmVkICggTkRFQlVHICkKICAgICBpZiAobV9jb250ZXh0LT5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0g
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CkBAIC0xMjY4LDcgKzEz
NjEsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShDQ1Jl
bmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UpCiAgICAgfQogI2VuZGlmCiAKLSAgICBzZXREcmF3
Vmlld3BvcnRSZWN0KHJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCksIGZhbHNlKTsKKyAgICBz
ZXREcmF3Vmlld3BvcnRSZWN0KHZpZXdwb3J0UmVjdCwgZmFsc2UpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC0xMjg4LDcgKzEzODEsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
c2V0U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCkKICAgICAvLyBvZiB0
aGUgR0wgc2Npc3NvciBpcyB0aGUgYm90dG9tIG9mIG91ciBsYXllci4KICAgICAvLyBCdXQsIGlm
IHJlbmRlcmluZyB0byBvZmZzY3JlZW4gdGV4dHVyZSwgd2UgcmV2ZXJzZSBvdXIgc2Vuc2Ugb2Yg
J3Vwc2lkZSBkb3duJy4KICAgICBpbnQgc2Npc3Nvclk7Ci0gICAgaWYgKG1fY3VycmVudFJlbmRl
clN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSAmJiAhc2V0dGluZ3MoKS5jb21wb3Np
dGVPZmZzY3JlZW4pCisgICAgaWYgKGlzQ3VycmVudFJlbmRlclN1cmZhY2UobV9kZWZhdWx0UmVu
ZGVyU3VyZmFjZSkgJiYgIXNldHRpbmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVuKQogICAgICAgICBz
Y2lzc29yWSA9IG1fY3VycmVudFJlbmRlclN1cmZhY2UtPmNvbnRlbnRSZWN0KCkuaGVpZ2h0KCkg
LSAoc2Npc3NvclJlY3QubWF4WSgpIC0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+Y29udGVudFJl
Y3QoKS55KCkpOwogICAgIGVsc2UKICAgICAgICAgc2Npc3NvclkgPSBzY2lzc29yUmVjdC55KCkg
LSBjb250ZW50UmVjdC55KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4
IDdjYjllYjU2YTIzNTNiYTgwZDcyMDAxMThiMjk2YTkyZGI4MGRkOGEuLmQ1MDE1MzE2MGJhZGZm
YWVhYjYwOWM0M2Y4NDRlYThkNmIxZDllYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oCkBAIC0xNDIsNiArMTQyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IENDVmlkZW9MYXll
ckltcGw6OlN0cmVhbVRleHR1cmVQcm9ncmFtKiBzdHJlYW1UZXh0dXJlTGF5ZXJQcm9ncmFtKCk7
CiAKICAgICB2b2lkIGdldEZyYW1lYnVmZmVyUGl4ZWxzKHZvaWQgKnBpeGVscywgY29uc3QgSW50
UmVjdCYpOworICAgIGJvb2wgZ2V0RnJhbWVidWZmZXJUZXh0dXJlKE1hbmFnZWRUZXh0dXJlKiwg
Y29uc3QgSW50UmVjdCYgZGV2aWNlUmVjdCk7CiAKICAgICBUZXh0dXJlTWFuYWdlciogcmVuZGVy
U3VyZmFjZVRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJTdXJmYWNlVGV4
dHVyZU1hbmFnZXIuZ2V0KCk7IH0KICAgICBUZXh0dXJlQ29waWVyKiB0ZXh0dXJlQ29waWVyKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0dXJlQ29waWVyLmdldCgpOyB9CkBAIC0xNzgsNiArMTc5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdRdWFkKGNvbnN0IENDRHJhd1F1YWQqLCBjb25zdCBG
bG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KTsKICAgICB2b2lkIGRyYXdDaGVja2VyYm9hcmRR
dWFkKGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqKTsKICAgICB2b2lkIGRyYXdEZWJ1Z0Jv
cmRlclF1YWQoY29uc3QgQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkKik7CisgICAgdm9pZCBkcmF3QmFj
a2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqKTsKICAgICB2b2lk
IGRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCopOwog
ICAgIHZvaWQgZHJhd1NvbGlkQ29sb3JRdWFkKGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKik7
CiAgICAgdm9pZCBkcmF3VGV4dHVyZVF1YWQoY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQqKTsKQEAg
LTE5Nyw3ICsxOTksMTMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0RHJhd1ZpZXdwb3J0UmVj
dChjb25zdCBJbnRSZWN0JiwgYm9vbCBmbGlwWSk7CiAKKyAgICAvLyBUaGUgY3VycmVudCBkcmF3
aW5nIHRhcmdldCBpcyBlaXRoZXIgYSBSZW5kZXJTdXJmYWNlIG9yIE1hbmFnZWRUZXh0dXJlLiBV
c2UgdGhlc2UgZnVuY3Rpb25zIHRvIHN3aXRjaCB0byBhIG5ldyBkcmF3aW5nIHRhcmdldC4KICAg
ICBib29sIHVzZVJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKik7CisgICAgYm9vbCB1c2VN
YW5hZ2VkVGV4dHVyZShNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVj
dCk7CisgICAgYm9vbCBpc0N1cnJlbnRSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSopOwor
CisgICAgYm9vbCBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoTWFuYWdlZFRleHR1cmUqLCBjb25z
dCBJbnRSZWN0JiB2aWV3cG9ydFJlY3QpOworCiAgICAgdm9pZCBjbGVhclJlbmRlclN1cmZhY2Uo
Q0NSZW5kZXJTdXJmYWNlKiwgQ0NSZW5kZXJTdXJmYWNlKiByb290UmVuZGVyU3VyZmFjZSwgY29u
c3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CiAKICAgICB2b2lkIHJlbGVhc2VSZW5k
ZXJTdXJmYWNlVGV4dHVyZXMoKTsKQEAgLTIyMiw2ICsyMzAsNyBAQCBwcml2YXRlOgogICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1fd2luZG93TWF0cml4OwogCiAgICAgQ0NSZW5kZXJTdXJmYWNl
KiBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlOworICAgIE1hbmFnZWRUZXh0dXJlKiBtX2N1cnJlbnRN
YW5hZ2VkVGV4dHVyZTsKICAgICB1bnNpZ25lZCBtX29mZnNjcmVlbkZyYW1lYnVmZmVySWQ7CiAK
ICAgICAvLyBTdG9yZSB2YWx1ZXMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4gaW5zdGFuY2VzIG9m
IGVhY2ggbGF5ZXIgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAppbmRleCA4
M2EyMWQ5ZDk3MDg2Y2MyZGQyYWE0Zjg2YzI1YzJmZTY1YWUzYzQ4Li45YTg0ZWJiNGUzODU0M2Yw
M2Y1MWY3YmJkNzQxNDIzNTMyYzdkOTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21p
dW0uaApAQCAtOTMsNiArOTMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIHsgbV9maWx0ZXJzID0gZmlsdGVyczsgfQogICAg
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRl
cnM7IH0KIAorICAgIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycykgeyBtX2JhY2tncm91bmRGaWx0ZXJzID0gZmlsdGVyczsgfQorICAgIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrZ3JvdW5kRmlsdGVyczsgfQorCiAgICAgYm9vbCBza2lwc0RyYXcoKSBjb25zdCB7IHJl
dHVybiBtX3NraXBzRHJhdzsgfQogICAgIHZvaWQgc2V0U2tpcHNEcmF3KGJvb2wgc2tpcHNEcmF3
KSB7IG1fc2tpcHNEcmF3ID0gc2tpcHNEcmF3OyB9CiAKQEAgLTEyMiw2ICsxMjUsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV90YXJnZXRTdXJmYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKICAg
ICBib29sIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nOwogICAgIEZpbHRlck9w
ZXJhdGlvbnMgbV9maWx0ZXJzOworICAgIEZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmls
dGVyczsKICAgICBJbnRSZWN0IG1fY2xpcFJlY3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IG1fbGF5ZXJMaXN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggODUw
ODA1ZWU3ZjdhZDRlMzk1MzdmODhhMGE2MDkxNDJhODM2NDE1YS4uNzgyOTRiYWEyMTBjMTc1MWJl
YTg5NmUwYTUwM2M0ZDJkOTU2NzRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMzY0
LDYgKzM2NCwxNSBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMpCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJl
ZSgpOwogfQogCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycykKK3sKKyAgICBpZiAobV9iYWNrZ3Jv
dW5kRmlsdGVycyA9PSBiYWNrZ3JvdW5kRmlsdGVycykKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9iYWNrZ3JvdW5kRmlsdGVycyA9IGJhY2tncm91bmRGaWx0ZXJzOworICAgIG1fbGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQgPSB0cnVlOworfQorCiB2b2lkIENDTGF5ZXJJbXBsOjpzZXRNYXNrc1RvQm91
bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKIHsKICAgICBpZiAobV9tYXNrc1RvQm91bmRzID09IG1h
c2tzVG9Cb3VuZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCAwNTU5NDRmOWZjMDA4NzE0NTQy
YmZhZWNlOGNlZTRkOGFkODBlZTg2Li4zZjA4ZDY4Y2E2OTc5NTFjMGEzZDc1MWQxNmNkNjVkMmE3
YzU1ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTExMCw2ICsxMTAsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKICAgICBjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJzOyB9
CiAKKyAgICB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
KTsKKyAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBiYWNrZ3JvdW5kRmlsdGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2dyb3VuZEZpbHRlcnM7IH0KKwogICAgIHZvaWQgc2V0TWFza3NUb0Jv
dW5kcyhib29sKTsKICAgICBib29sIG1hc2tzVG9Cb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX21h
c2tzVG9Cb3VuZHM7IH0KIApAQCAtMzM1LDYgKzMzOCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fZGVidWdOYW1lOwogCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CisgICAgRmls
dGVyT3BlcmF0aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOwogCiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbV9kcmF3VHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fc2NyZWVu
U3BhY2VUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNw
cAppbmRleCBhOTlmMTVhNTgxMjk3YjgyMWM4ZWE3OTVhZjhlMzhjZWQ2YTkzMzljLi42MDAyMGI1
ZjU1NGVlNTJiYTI1ZjJkMmQ1MDNiZWFkNjk0YjNhYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgYm9vbCBz
dWJ0cmVlU2hvdWxkUmVuZGVyVG9TZXBhcmF0ZVN1cmZhY2UoTGF5ZXJUeXBlKiBsYXllciwgYm9v
bCBheGlzQWxpZwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElmIHRoZSBsYXllciB1
c2VzIGEgQ1NTIGZpbHRlci4KLSAgICBpZiAoIWxheWVyLT5maWx0ZXJzKCkuaXNFbXB0eSgpKQor
ICAgIGlmICghbGF5ZXItPmZpbHRlcnMoKS5pc0VtcHR5KCkgfHwgIWxheWVyLT5iYWNrZ3JvdW5k
RmlsdGVycygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiB0
aGUgbGF5ZXIgZmxhdHRlbnMgaXRzIHN1YnRyZWUgKGkuZS4gdGhlIGxheWVyIGRvZXNuJ3QgcHJl
c2VydmUtM2QpLCBidXQgaXQgaXMKQEAgLTQ1MSw2ICs0NTEsOCBAQCBzdGF0aWMgYm9vbCBjYWxj
dWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVy
LCBMYXllcgogICAgICAgICAgICAgbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzID0gcmVu
ZGVyU3VyZmFjZTsKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0TmVhcmVzdEFuY2VzdG9yVGhh
dE1vdmVzUGl4ZWxzKG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscyk7CiAKKyAgICAgICAg
cmVuZGVyU3VyZmFjZS0+c2V0QmFja2dyb3VuZEZpbHRlcnMobGF5ZXItPmJhY2tncm91bmRGaWx0
ZXJzKCkpOworCiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKGxheWVyKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShjb21iaW5lZFRy
YW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCBjNDc5M2E1YjI0
YzZiMTk2MDQyZWYwZjFkYjY0N2EyOWVkM2I4MDE4Li5jOGI5MWNmYzZkN2Q1NDRlOWNkMWZkNDVh
NzRmNWE4MjY2MDI1OTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTcx
LDcgKzcxLDcgQEAgRmxvYXRSZWN0IENDUmVuZGVyU3VyZmFjZTo6ZHJhd2FibGVDb250ZW50UmVj
dCgpIGNvbnN0CiAgICAgRmxvYXRSZWN0IGxvY2FsQ29udGVudFJlY3QoLTAuNSAqIG1fY29udGVu
dFJlY3Qud2lkdGgoKSwgLTAuNSAqIG1fY29udGVudFJlY3QuaGVpZ2h0KCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50UmVjdC53aWR0aCgpLCBtX2NvbnRlbnRSZWN0
LmhlaWdodCgpKTsKICAgICBGbG9hdFJlY3QgZHJhd2FibGVDb250ZW50UmVjdCA9IG1fZHJhd1Ry
YW5zZm9ybS5tYXBSZWN0KGxvY2FsQ29udGVudFJlY3QpOwotICAgIGlmIChtX293bmluZ0xheWVy
LT5yZXBsaWNhTGF5ZXIoKSkKKyAgICBpZiAoaGFzUmVwbGljYSgpKQogICAgICAgICBkcmF3YWJs
ZUNvbnRlbnRSZWN0LnVuaXRlKG1fcmVwbGljYURyYXdUcmFuc2Zvcm0ubWFwUmVjdChsb2NhbENv
bnRlbnRSZWN0KSk7CiAKICAgICByZXR1cm4gZHJhd2FibGVDb250ZW50UmVjdDsKQEAgLTEwNCw2
ICsxMDQsMTEwIEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpyZWxlYXNlQ29udGVudHNUZXh0dXJl
KCkKICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+dW5yZXNlcnZlKCk7CiB9CiAKK2Jvb2wgQ0NSZW5k
ZXJTdXJmYWNlOjpwcmVwYXJlQmFja2dyb3VuZFRleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVt
KiBsYXllclJlbmRlcmVyKQoreworICAgIEludFNpemUgcmVxdWlyZWRTaXplKG1fY29udGVudFJl
Y3Quc2l6ZSgpKTsKKyAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIgPSBsYXllclJl
bmRlcmVyLT5yZW5kZXJTdXJmYWNlVGV4dHVyZU1hbmFnZXIoKTsKKworICAgIGlmICghbV9iYWNr
Z3JvdW5kVGV4dHVyZSkKKyAgICAgICAgbV9iYWNrZ3JvdW5kVGV4dHVyZSA9IE1hbmFnZWRUZXh0
dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIpOworCisgICAgaWYgKG1fYmFja2dyb3VuZFRleHR1
cmUtPmlzUmVzZXJ2ZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIW1fYmFj
a2dyb3VuZFRleHR1cmUtPnJlc2VydmUocmVxdWlyZWRTaXplLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIENDUmVuZGVyU3VyZmFjZTo6cmVsZWFzZUJhY2tncm91bmRUZXh0dXJlKCkKK3sKKyAgICBp
ZiAoIW1fYmFja2dyb3VuZFRleHR1cmUpCisgICAgICAgIHJldHVybjsKKyAgICBtX2JhY2tncm91
bmRUZXh0dXJlLT51bnJlc2VydmUoKTsKK30KKworVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NSZW5k
ZXJTdXJmYWNlOjpjb21wdXRlRGV2aWNlVHJhbnNmb3JtKExheWVyUmVuZGVyZXJDaHJvbWl1bSog
bGF5ZXJSZW5kZXJlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0p
IGNvbnN0Cit7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyVHJhbnNmb3JtID0gZHJh
d1RyYW5zZm9ybTsKKyAgICAvLyBBcHBseSBhIHNjYWxpbmcgZmFjdG9yIHRvIHNpemUgdGhlIHF1
YWQgZnJvbSAxeDEgdG8gaXRzIGludGVuZGVkIHNpemUuCisgICAgcmVuZGVyVHJhbnNmb3JtLnNj
YWxlM2QobV9jb250ZW50UmVjdC53aWR0aCgpLCBtX2NvbnRlbnRSZWN0LmhlaWdodCgpLCAxKTsK
KyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VUcmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlv
bk1hdHJpeChsYXllclJlbmRlcmVyLT53aW5kb3dNYXRyaXgoKSAqIGxheWVyUmVuZGVyZXItPnBy
b2plY3Rpb25NYXRyaXgoKSAqIHJlbmRlclRyYW5zZm9ybSkudG8yZFRyYW5zZm9ybSgpOworICAg
IHJldHVybiBkZXZpY2VUcmFuc2Zvcm07Cit9CisKK0ludFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpj
b21wdXRlRGV2aWNlQm91bmRpbmdCb3goTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRl
cmVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgY29uc3QKK3sK
KyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50c0RldmljZVRyYW5zZm9ybSA9IGNvbXB1
dGVEZXZpY2VUcmFuc2Zvcm0obGF5ZXJSZW5kZXJlciwgZHJhd1RyYW5zZm9ybSk7CisKKyAgICAv
LyBDYW4gb25seSBkcmF3IHN1cmZhY2UgaWYgZGV2aWNlIG1hdHJpeCBpcyBpbnZlcnRpYmxlLgor
ICAgIGlmICghY29udGVudHNEZXZpY2VUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAgICAg
IHJldHVybiBJbnRSZWN0KCk7CisKKyAgICBGbG9hdFF1YWQgZGV2aWNlUXVhZCA9IGNvbnRlbnRz
RGV2aWNlVHJhbnNmb3JtLm1hcFF1YWQobGF5ZXJSZW5kZXJlci0+c2hhcmVkR2VvbWV0cnlRdWFk
KCkpOworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGRldmljZVF1YWQuYm91bmRpbmdCb3go
KSk7Cit9CisKK0ludFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpjb21wdXRlUmVhZGJhY2tEZXZpY2VC
b3VuZGluZ0JveChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSBjb25zdAoreworICAgIEludFJlY3Qg
ZGV2aWNlUmVjdCA9IGNvbXB1dGVEZXZpY2VCb3VuZGluZ0JveChsYXllclJlbmRlcmVyLCBkcmF3
VHJhbnNmb3JtKTsKKworICAgIGlmIChtX2JhY2tncm91bmRGaWx0ZXJzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGRldmljZVJlY3Q7CisKKyAgICBpbnQgdG9wLCByaWdodCwgYm90dG9tLCBs
ZWZ0OworICAgIG1fYmFja2dyb3VuZEZpbHRlcnMuZ2V0T3V0c2V0cyh0b3AsIHJpZ2h0LCBib3R0
b20sIGxlZnQpOworICAgIGRldmljZVJlY3QubW92ZSgtbGVmdCwgLXRvcCk7CisgICAgZGV2aWNl
UmVjdC5leHBhbmQobGVmdCArIHJpZ2h0LCB0b3AgKyBib3R0b20pOworCisgICAgcmV0dXJuIGRl
dmljZVJlY3Q7Cit9CisKK0ludFJlY3QgQ0NSZW5kZXJTdXJmYWNlOjpyZWFkYmFja0RldmljZUNv
bnRlbnRSZWN0KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNvbnN0Cit7CisgICAgcmV0dXJuIGNv
bXB1dGVSZWFkYmFja0RldmljZUJvdW5kaW5nQm94KGxheWVyUmVuZGVyZXIsIGRyYXdUcmFuc2Zv
cm0pOworfQorCitzdGF0aWMgdm9pZCBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXpl
JiBib3VuZHMsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4KQoreworICAg
IGNvbnN0IENDUmVuZGVyU3VyZmFjZTo6UHJvZ3JhbSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXIt
PnJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CisKKyAgICBHTEMobGF5ZXJSZW5kZXJlci0+Y29udGV4
dCgpLCBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPmFjdGl2ZVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkUwKSk7CisgICAgR0xDKGxheWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5
ZXJSZW5kZXJlci0+Y29udGV4dCgpLT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgdGV4dHVyZUlkKSk7CisgICAgR0xDKGxheWVyUmVuZGVyZXItPmNvbnRleHQoKSwg
bGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFw
aGljc0NvbnRleHQzRDo6TElORUFSKSk7CisgICAgR0xDKGxheWVyUmVuZGVyZXItPmNvbnRleHQo
KSwgbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBH
cmFwaGljc0NvbnRleHQzRDo6TElORUFSKSk7CisKKyAgICBHTEMobGF5ZXJSZW5kZXJlci0+Y29u
dGV4dCgpLCBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJv
Z3JhbSgpKSk7CisgICAgR0xDKGxheWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJl
ci0+Y29udGV4dCgpLT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVy
TG9jYXRpb24oKSwgMCkpOworICAgIGxheWVyUmVuZGVyZXItPmRyYXdUZXh0dXJlZFF1YWQoZHJh
d01hdHJpeCwgYm91bmRzLndpZHRoKCksIGJvdW5kcy5oZWlnaHQoKSwgMSwgbGF5ZXJSZW5kZXJl
ci0+c2hhcmVkR2VvbWV0cnlRdWFkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5hbHBo
YUxvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSk7Cit9
CisKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpjb3B5RGV2aWNlVG9CYWNrZ3JvdW5kVGV4dHVyZShM
YXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGludCBkZXZpY2VCYWNrZ3JvdW5k
VGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBkZXZpY2VUZXh0dXJlUmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1f
YmFja2dyb3VuZEZpbHRlcnMuaXNFbXB0eSgpKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybTsKKyAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0u
dHJhbnNsYXRlKG1fY29udGVudFJlY3Qud2lkdGgoKSAvIDIuMCwgbV9jb250ZW50UmVjdC5oZWln
aHQoKSAvIDIuMCk7CisgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnNjYWxlM2QobV9jb250
ZW50UmVjdC53aWR0aCgpLCBtX2NvbnRlbnRSZWN0LmhlaWdodCgpLCAxKTsKKyAgICBkZXZpY2VU
b1N1cmZhY2VUcmFuc2Zvcm0gKj0gZGV2aWNlVHJhbnNmb3JtLmludmVyc2UoKTsKKyAgICBkZXZp
Y2VUb1N1cmZhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVRleHR1cmVSZWN0LndpZHRoKCkg
LyAyLjAsIGRldmljZVRleHR1cmVSZWN0LmhlaWdodCgpIC8gMi4wKTsKKyAgICBkZXZpY2VUb1N1
cmZhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVRleHR1cmVSZWN0LngoKSwgZGV2aWNlVGV4
dHVyZVJlY3QueSgpKTsKKworICAgIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihsYXllclJlbmRl
cmVyLCBkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBkZXZpY2VUZXh0dXJlUmVjdC5zaXplKCks
IGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybSk7Cit9CisKK2lubGluZSBzdGF0aWMgaW50IGdldFNr
Qml0bWFwVGV4dHVyZUlkKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGludCBmYWxsYmFjaykKK3sK
KyAgICBpZiAoIWJpdG1hcC5nZXRUZXh0dXJlKCkpCisgICAgICAgIHJldHVybiBmYWxsYmFjazsK
KyAgICBHclRleHR1cmUqIHRleHR1cmUgPSByZWludGVycHJldF9jYXN0PEdyVGV4dHVyZSo+KGJp
dG1hcC5nZXRUZXh0dXJlKCkpOworICAgIHJldHVybiB0ZXh0dXJlLT5nZXRUZXh0dXJlSGFuZGxl
KCk7Cit9CisKIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpzZXRTY2lzc29yUmVjdChMYXllclJlbmRl
cmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFn
ZVJlY3QpIGNvbnN0CiB7CiAgICAgaWYgKG1fb3duaW5nTGF5ZXItPnBhcmVudCgpICYmIG1fb3du
aW5nTGF5ZXItPnBhcmVudCgpLT51c2VzTGF5ZXJDbGlwcGluZygpICYmIGxheWVyUmVuZGVyZXIt
PmNhcGFiaWxpdGllcygpLnVzaW5nUGFydGlhbFN3YXApIHsKQEAgLTEyNCw4ICsyMjgsMTEgQEAg
dm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdDb250ZW50cyhMYXllclJlbmRlcmVyQ2hyb21pdW0q
IGxheWVyUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBDYWNoZSB0
aGlzIHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBkbyBpdCBmb3IgYm90aCB0aGUgc3Vy
ZmFjZSBhbmQgaXRzIHJlcGxpY2EuCi0gICAgU2tCaXRtYXAgZmlsdGVyQml0bWFwID0gYXBwbHlG
aWx0ZXJzKGxheWVyUmVuZGVyZXIpOwotICAgIGRyYXdMYXllcihsYXllclJlbmRlcmVyLCBtX21h
c2tMYXllciwgbV9kcmF3VHJhbnNmb3JtLCBmaWx0ZXJCaXRtYXApOworICAgIC8vIEFwcGx5IGZp
bHRlcnMgdG8gdGhlIGNvbnRlbnRzIHRleHR1cmUuCisgICAgU2tCaXRtYXAgZmlsdGVyQml0bWFw
ID0gYXBwbHlGaWx0ZXJzKGxheWVyUmVuZGVyZXIsIG1fZmlsdGVycywgbV9jb250ZW50c1RleHR1
cmUuZ2V0KCkpOworCisgICAgaW50IGNvbnRlbnRzVGV4dHVyZUlkID0gZ2V0U2tCaXRtYXBUZXh0
dXJlSWQoZmlsdGVyQml0bWFwLCBtX2NvbnRlbnRzVGV4dHVyZS0+dGV4dHVyZUlkKCkpOworICAg
IGRyYXdMYXllcihsYXllclJlbmRlcmVyLCBtX21hc2tMYXllciwgbV9kcmF3VHJhbnNmb3JtLCBj
b250ZW50c1RleHR1cmVJZCk7CiB9CiAKIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3UmVwbGlj
YShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCkBAIC0xMzQsNyArMjQxLDkg
QEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdSZXBsaWNhKExheWVyUmVuZGVyZXJDaHJvbWl1
bSogbGF5ZXJSZW5kZXJlcikKICAgICBpZiAoIWhhc1JlcGxpY2EoKSB8fCBtX3NraXBzRHJhdyB8
fCAhbV9jb250ZW50c1RleHR1cmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNrQml0bWFwIGZp
bHRlckJpdG1hcCA9IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyKTsKKyAgICAvLyBBcHBseSBm
aWx0ZXJzIHRvIHRoZSBjb250ZW50cyB0ZXh0dXJlLgorICAgIFNrQml0bWFwIGZpbHRlckJpdG1h
cCA9IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyLCBtX2ZpbHRlcnMsIG1fY29udGVudHNUZXh0
dXJlLmdldCgpKTsKKwogICAgIC8vIEZJWE1FOiBCeSB1c2luZyB0aGUgc2FtZSBSZW5kZXJTdXJm
YWNlIGZvciBib3RoIHRoZSBjb250ZW50IGFuZCBpdHMgcmVmbGVjdGlvbiwKICAgICAvLyBpdCdz
IGN1cnJlbnRseSBub3QgcG9zc2libGUgdG8gYXBwbHkgYSBzZXBhcmF0ZSBtYXNrIHRvIHRoZSBy
ZWZsZWN0aW9uIGxheWVyCiAgICAgLy8gb3IgY29ycmVjdGx5IGhhbmRsZSBvcGFjaXR5IGluIHJl
ZmxlY3Rpb25zIChvcGFjaXR5IG11c3QgYmUgYXBwbGllZCBhZnRlciBkcmF3aW5nCkBAIC0xNDUs
MjEgKzI1NCwyMiBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1JlcGxpY2EoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogICAgIGlmICghbV9tYXNrTGF5ZXIgJiYgbV9v
d25pbmdMYXllci0+cmVwbGljYUxheWVyKCkpCiAgICAgICAgIHJlcGxpY2FNYXNrTGF5ZXIgPSBt
X293bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCk7CiAKLSAgICBkcmF3TGF5
ZXIobGF5ZXJSZW5kZXJlciwgcmVwbGljYU1hc2tMYXllciwgbV9yZXBsaWNhRHJhd1RyYW5zZm9y
bSwgZmlsdGVyQml0bWFwKTsKKyAgICBpbnQgY29udGVudHNUZXh0dXJlSWQgPSBnZXRTa0JpdG1h
cFRleHR1cmVJZChmaWx0ZXJCaXRtYXAsIG1fY29udGVudHNUZXh0dXJlLT50ZXh0dXJlSWQoKSk7
CisgICAgZHJhd0xheWVyKGxheWVyUmVuZGVyZXIsIHJlcGxpY2FNYXNrTGF5ZXIsIG1fcmVwbGlj
YURyYXdUcmFuc2Zvcm0sIGNvbnRlbnRzVGV4dHVyZUlkKTsKIH0KIAotdm9pZCBDQ1JlbmRlclN1
cmZhY2U6OmRyYXdMYXllcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIEND
TGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJh
bnNmb3JtLCBjb25zdCBTa0JpdG1hcCYgZmlsdGVyQml0bWFwKQordm9pZCBDQ1JlbmRlclN1cmZh
Y2U6OmRyYXdMYXllcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5
ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNm
b3JtLCBpbnQgY29udGVudHNUZXh0dXJlSWQpCiB7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
cmVuZGVyTWF0cml4ID0gZHJhd1RyYW5zZm9ybTsKLSAgICAvLyBBcHBseSBhIHNjYWxpbmcgZmFj
dG9yIHRvIHNpemUgdGhlIHF1YWQgZnJvbSAxeDEgdG8gaXRzIGludGVuZGVkIHNpemUuCi0gICAg
cmVuZGVyTWF0cml4LnNjYWxlM2QobV9jb250ZW50UmVjdC53aWR0aCgpLCBtX2NvbnRlbnRSZWN0
LmhlaWdodCgpLCAxKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZU1hdHJpeCA9
IFRyYW5zZm9ybWF0aW9uTWF0cml4KGxheWVyUmVuZGVyZXItPndpbmRvd01hdHJpeCgpICogbGF5
ZXJSZW5kZXJlci0+cHJvamVjdGlvbk1hdHJpeCgpICogcmVuZGVyTWF0cml4KS50bzJkVHJhbnNm
b3JtKCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlTWF0cml4ID0gY29tcHV0ZURl
dmljZVRyYW5zZm9ybShsYXllclJlbmRlcmVyLCBkcmF3VHJhbnNmb3JtKTsKIAogICAgIC8vIENh
biBvbmx5IGRyYXcgc3VyZmFjZSBpZiBkZXZpY2UgbWF0cml4IGlzIGludmVydGlibGUuCiAgICAg
aWYgKCFkZXZpY2VNYXRyaXguaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IC8vIERyYXcgdGhlIGJhY2tncm91bmQgdGV4dHVyZSBpZiB0aGVyZSBpcyBvbmUuCisgICAgaWYg
KG1fYmFja2dyb3VuZFRleHR1cmUgJiYgbV9iYWNrZ3JvdW5kVGV4dHVyZS0+aXNSZXNlcnZlZCgp
KQorICAgICAgICBjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIobGF5ZXJSZW5kZXJlciwgbV9iYWNr
Z3JvdW5kVGV4dHVyZS0+dGV4dHVyZUlkKCksIG1fY29udGVudFJlY3Quc2l6ZSgpLCBkcmF3VHJh
bnNmb3JtKTsKKwogICAgIEZsb2F0UXVhZCBxdWFkID0gZGV2aWNlTWF0cml4Lm1hcFF1YWQobGF5
ZXJSZW5kZXJlci0+c2hhcmVkR2VvbWV0cnlRdWFkKCkpOwogICAgIENDTGF5ZXJRdWFkIGRldmlj
ZVJlY3QgPSBDQ0xheWVyUXVhZChGbG9hdFF1YWQocXVhZC5ib3VuZGluZ0JveCgpKSk7CiAgICAg
Q0NMYXllclF1YWQgbGF5ZXJRdWFkID0gQ0NMYXllclF1YWQocXVhZCk7CkBAIC0xNzcsMjcgKzI4
NywyOSBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd0xheWVyKExheWVyUmVuZGVyZXJDaHJv
bWl1bSogbGF5ZXJSZW5kZXJlciwgQ0NMYXllckltcAogICAgICAgICBpZiAoIW1hc2tMYXllci0+
Ym91bmRzKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgdXNlTWFzayA9IHRydWU7CiAKKyAgICAv
LyBGSVhNRTogcGFzcyBpbiBiYWNrZ3JvdW5kVGV4dHVyZUlkIGFuZCBibGVuZCB0aGUgYmFja2dy
b3VuZCBpbiB3aXRoIHRoaXMgZHJhdyBpbnN0ZWFkIG9mIGhhdmluZyBhIHNlcGFyYXRlIGRyYXdC
YWNrZ3JvdW5kKCkgcGFzcy4KKwogICAgIGlmICh1c2VNYXNrKSB7CiAgICAgICAgIGlmICh1c2VB
QSkgewogICAgICAgICAgICAgY29uc3QgTWFza1Byb2dyYW1BQSogcHJvZ3JhbSA9IGxheWVyUmVu
ZGVyZXItPnJlbmRlclN1cmZhY2VNYXNrUHJvZ3JhbUFBKCk7Ci0gICAgICAgICAgICBkcmF3U3Vy
ZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJp
eCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBwcm9ncmFtLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRl
cigpLm1hc2tTYW1wbGVyTG9jYXRpb24oKSwgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkucG9pbnRM
b2NhdGlvbigpLCBwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLmVkZ2VMb2NhdGlvbigpLCBmaWx0
ZXJCaXRtYXApOworICAgICAgICAgICAgZHJhd1N1cmZhY2UobGF5ZXJSZW5kZXJlciwgbWFza0xh
eWVyLCBkcmF3VHJhbnNmb3JtLCBkZXZpY2VNYXRyaXgsIGRldmljZVJlY3QsIGxheWVyUXVhZCwg
Y29udGVudHNUZXh0dXJlSWQsIHByb2dyYW0sIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkubWFz
a1NhbXBsZXJMb2NhdGlvbigpLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5wb2ludExvY2F0aW9u
KCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCkpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgY29uc3QgTWFza1Byb2dyYW0qIHByb2dyYW0gPSBsYXllclJl
bmRlcmVyLT5yZW5kZXJTdXJmYWNlTWFza1Byb2dyYW0oKTsKLSAgICAgICAgICAgIGRyYXdTdXJm
YWNlKGxheWVyUmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5zZm9ybSwgZGV2aWNlTWF0cml4
LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIHByb2dyYW0sIHByb2dyYW0tPmZyYWdtZW50U2hhZGVy
KCkubWFza1NhbXBsZXJMb2NhdGlvbigpLCAtMSwgLTEsIGZpbHRlckJpdG1hcCk7CisgICAgICAg
ICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIsIGRyYXdUcmFuc2Zvcm0s
IGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBjb250ZW50c1RleHR1cmVJZCwg
cHJvZ3JhbSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5tYXNrU2FtcGxlckxvY2F0aW9uKCks
IC0xLCAtMSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAodXNlQUEpIHsK
ICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1BQSogcHJvZ3JhbSA9IGxheWVyUmVuZGVyZXItPnJl
bmRlclN1cmZhY2VQcm9ncmFtQUEoKTsKLSAgICAgICAgICAgIGRyYXdTdXJmYWNlKGxheWVyUmVu
ZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5zZm9ybSwgZGV2aWNlTWF0cml4LCBkZXZpY2VSZWN0
LCBsYXllclF1YWQsIHByb2dyYW0sIC0xLCBwcm9ncmFtLT52ZXJ0ZXhTaGFkZXIoKS5wb2ludExv
Y2F0aW9uKCksIHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCkuZWRnZUxvY2F0aW9uKCksIGZpbHRl
ckJpdG1hcCk7CisgICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5
ZXIsIGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBj
b250ZW50c1RleHR1cmVJZCwgcHJvZ3JhbSwgLTEsIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLnBv
aW50TG9jYXRpb24oKSwgcHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5lZGdlTG9jYXRpb24oKSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBQcm9ncmFtKiBwcm9ncmFtID0g
bGF5ZXJSZW5kZXJlci0+cmVuZGVyU3VyZmFjZVByb2dyYW0oKTsKLSAgICAgICAgICAgIGRyYXdT
dXJmYWNlKGxheWVyUmVuZGVyZXIsIG1hc2tMYXllciwgZHJhd1RyYW5zZm9ybSwgZGV2aWNlTWF0
cml4LCBkZXZpY2VSZWN0LCBsYXllclF1YWQsIHByb2dyYW0sIC0xLCAtMSwgLTEsIGZpbHRlckJp
dG1hcCk7CisgICAgICAgICAgICBkcmF3U3VyZmFjZShsYXllclJlbmRlcmVyLCBtYXNrTGF5ZXIs
IGRyYXdUcmFuc2Zvcm0sIGRldmljZU1hdHJpeCwgZGV2aWNlUmVjdCwgbGF5ZXJRdWFkLCBjb250
ZW50c1RleHR1cmVJZCwgcHJvZ3JhbSwgLTEsIC0xLCAtMSk7CiAgICAgICAgIH0KICAgICB9CiB9
CiAKIHRlbXBsYXRlIDxjbGFzcyBUPgotdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdTdXJmYWNl
KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgQ0NMYXllckltcGwqIG1hc2tM
YXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0sIGNvbnN0IENDTGF5ZXJRdWFkJiBk
ZXZpY2VSZWN0LCBjb25zdCBDQ0xheWVyUXVhZCYgbGF5ZXJRdWFkLCBjb25zdCBUKiBwcm9ncmFt
LCBpbnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRlclF1YWRMb2NhdGlvbiwg
aW50IHNoYWRlckVkZ2VMb2NhdGlvbiwgY29uc3QgU2tCaXRtYXAmIGZpbHRlckJpdG1hcCkKK3Zv
aWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxh
eWVyUmVuZGVyZXIsIENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNl
VHJhbnNmb3JtLCBjb25zdCBDQ0xheWVyUXVhZCYgZGV2aWNlUmVjdCwgY29uc3QgQ0NMYXllclF1
YWQmIGxheWVyUXVhZCwgaW50IGNvbnRlbnRzVGV4dHVyZUlkLCBjb25zdCBUKiBwcm9ncmFtLCBp
bnQgc2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRlclF1YWRMb2NhdGlvbiwgaW50
IHNoYWRlckVkZ2VMb2NhdGlvbikKIHsKICAgICBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNE
ID0gbGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpOwogCkBAIC0yMDYsMTEgKzMxOCw3IEBAIHZvaWQg
Q0NSZW5kZXJTdXJmYWNlOjpkcmF3U3VyZmFjZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVy
UmVuZGVyZXIsIENDTGF5ZXJJCiAKICAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPmFjdGl2
ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKSk7CiAgICAgR0xDKGNvbnRleHQz
RCwgY29udGV4dDNELT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVy
TG9jYXRpb24oKSwgMCkpOwotICAgIGlmIChmaWx0ZXJCaXRtYXAuZ2V0VGV4dHVyZSgpKSB7Ci0g
ICAgICAgIEdyVGV4dHVyZSogdGV4dHVyZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JUZXh0dXJlKj4o
ZmlsdGVyQml0bWFwLmdldFRleHR1cmUoKSk7Ci0gICAgICAgIGNvbnRleHQzRC0+YmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUtPmdldFRleHR1cmVIYW5k
bGUoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY29udGVudHNUZXh0dXJlLT5iaW5kVGV4dHVy
ZShjb250ZXh0M0QsIGxheWVyUmVuZGVyZXItPnJlbmRlclN1cmZhY2VUZXh0dXJlQWxsb2NhdG9y
KCkpOworICAgIGNvbnRleHQzRC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIGNvbnRlbnRzVGV4dHVyZUlkKTsKIAogICAgIGlmIChzaGFkZXJNYXNrU2FtcGxlckxv
Y2F0aW9uICE9IC0xKSB7CiAgICAgICAgIEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+YWN0aXZl
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTEpKTsKQEAgLTIzMyw5ICszNDEsOSBA
QCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1N1cmZhY2UoTGF5ZXJSZW5kZXJlckNocm9taXVt
KiBsYXllclJlbmRlcmVyLCBDQ0xheWVySQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwgcHJvZ3JhbS0+
ZnJhZ21lbnRTaGFkZXIoKS5hbHBoYUxvY2F0aW9uKCksIHNoYWRlclF1YWRMb2NhdGlvbik7CiB9
CiAKLVNrQml0bWFwIENDUmVuZGVyU3VyZmFjZTo6YXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK1NrQml0bWFwIENDUmVuZGVyU3VyZmFjZTo6YXBwbHlG
aWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycywgTWFuYWdlZFRleHR1cmUqIHNvdXJjZVRleHR1cmUpCiB7Ci0g
ICAgaWYgKCFtX2NvbnRlbnRzVGV4dHVyZSB8fCAhbV9maWx0ZXJzLnNpemUoKSkKKyAgICBpZiAo
ZmlsdGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTa0JpdG1hcCgpOwogCiAgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBmaWx0ZXJDb250ZXh0ID0gQ0NQcm94eTo6aGFzSW1wbFRo
cmVhZCgpID8gU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZvckltcGxUaHJlYWQoKSA6IFNo
YXJlZEdyYXBoaWNzQ29udGV4dDNEOjpnZXQoKTsKQEAgLTI0NCw3ICszNTIsNyBAQCBTa0JpdG1h
cCBDQ1JlbmRlclN1cmZhY2U6OmFwcGx5RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxh
eWVyUmVuZGVyZXIpCiAKICAgICBsYXllclJlbmRlcmVyLT5jb250ZXh0KCktPmZsdXNoKCk7CiAK
LSAgICByZXR1cm4gQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHkobV9maWx0ZXJzLCBtX2Nv
bnRlbnRzVGV4dHVyZS0+dGV4dHVyZUlkKCksIG1fY29udGVudFJlY3Quc2l6ZSgpLCBmaWx0ZXJD
b250ZXh0LmdldCgpKTsKKyAgICByZXR1cm4gQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHko
ZmlsdGVycywgc291cmNlVGV4dHVyZS0+dGV4dHVyZUlkKCksIHNvdXJjZVRleHR1cmUtPnNpemUo
KSwgZmlsdGVyQ29udGV4dC5nZXQoKSk7CiB9CiAKIFN0cmluZyBDQ1JlbmRlclN1cmZhY2U6Om5h
bWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCA0MmNkYTMyNmMwMzhm
Y2JkNDhmYTE4YTZlZjgwZGZlOTQ0ZDhiMTE3Li5mNDEzMmUyMGNmOGY1NDMzZTRhZDI0ZGY2YmY5
MDZiNWQ4MWU1MDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtNTcsMTEgKzU3
LDE4IEBAIHB1YmxpYzoKICAgICBib29sIHByZXBhcmVDb250ZW50c1RleHR1cmUoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKik7CiAgICAgdm9pZCByZWxlYXNlQ29udGVudHNUZXh0dXJlKCk7CiAKKyAg
ICBib29sIHByZXBhcmVCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsK
KyAgICB2b2lkIHJlbGVhc2VCYWNrZ3JvdW5kVGV4dHVyZSgpOworCiAgICAgdm9pZCBzZXRTY2lz
c29yUmVjdChMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VE
YW1hZ2VSZWN0KSBjb25zdDsKIAogICAgIHZvaWQgZHJhd0NvbnRlbnRzKExheWVyUmVuZGVyZXJD
aHJvbWl1bSopOwogICAgIHZvaWQgZHJhd1JlcGxpY2EoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7
CiAKKyAgICAvLyBUYWtlcyBhIHRleHR1cmUgd2l0aCBwaXhlbHMgaW4gZGV2aWNlIHNwYWNlLCBh
bmQgYSB0cmFuc2Zvcm0gZnJvbSBjb250ZW50IHNwYWNlIHRvIHRoZSBkZXZpY2UuIENvcGllcyB0
aGUgZGV2aWNlLXNwYWNlIHRleHR1cmUgYmFjayBpbnRvCisgICAgLy8gY29udGVudCBzcGFjZSBm
b3IgdGhlIHN1cmZhY2UsIHN0b3JpbmcgdGhlIHJlc3VsdCBpbiB0aGUgYmFja2dyb3VuZFRleHR1
cmUoKS4gVGhlIHN1cmZhY2UncyBiYWNrZ3JvdW5kVGV4dHVyZSgpIG11c3QgYmUgdGhlIGFjdGl2
ZSBkcmF3aW5nIHRhcmdldC4KKyAgICB2b2lkIGNvcHlEZXZpY2VUb0JhY2tncm91bmRUZXh0dXJl
KExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGludCBkZXZpY2VCYWNrZ3JvdW5kVGV4dHVyZUlkLCBj
b25zdCBJbnRSZWN0JiBkZXZpY2VUZXh0dXJlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGRldmljZVRyYW5zZm9ybSkgY29uc3Q7CisKICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0Owog
ICAgIHZvaWQgZHVtcFN1cmZhY2UoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0OwogCkBA
IC02OSwxMyArNzYsMjEgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB0aGUgcmVjdCB0aGF0
IGVuY2xvc2VzIHRoZSBSZW5kZXJTdXJmYWNlIGluY2x1ZGluZyBhbnkgcmVmbGVjdGlvbi4KICAg
ICBGbG9hdFJlY3QgZHJhd2FibGVDb250ZW50UmVjdCgpIGNvbnN0OworICAgIC8vIFJldHVybnMg
dGhlIHJlY3QgdGhhdCBlbmNsb3NlcyB0aGUgcGl4ZWxzIHRoYXQgbWF5IGFmZmVjdCB0aGUgcGl4
ZWwgdmFsdWVzIGluIHRoaXMgc3VyZmFjZSB0aHJvdWdoIGJhY2tncm91bmQgZmlsdGVycy4KKyAg
ICBJbnRSZWN0IHJlYWRiYWNrRGV2aWNlQ29udGVudFJlY3QoTGF5ZXJSZW5kZXJlckNocm9taXVt
KiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNvbnN0OworCisg
ICAgLy8gR2l2ZXMgdGhlIHRyYW5zZm9ybSBmcm9tIHRoZSBzdXJmYWNlIGNvbnRlbnQgc3BhY2Us
IHdpdGggb3JpZ2luIGluIHRoZSB0b3AgbGVmdCwgdG8gdGhlIGN1cnJlbnQgdGFyZ2V0IGRldmlj
ZSBzcGFjZSwgd2l0aCBvcmlnaW4gaW4gdGhlIHRvcCBsZWZ0LgorICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGNvbXB1dGVEZXZpY2VUcmFuc2Zvcm0oTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNvbnN0OwogCiAgICAgZmxv
YXQgZHJhd09wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2RyYXdPcGFjaXR5OyB9CiAgICAgdm9p
ZCBzZXREcmF3T3BhY2l0eShmbG9hdCBvcGFjaXR5KSB7IG1fZHJhd09wYWNpdHkgPSBvcGFjaXR5
OyB9CiAKICAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cykgeyBtX2ZpbHRlcnMgPSBmaWx0ZXJzOyB9CiAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyczsgfQotICAgIFNrQml0bWFwIGFwcGx5
RmlsdGVycyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKKyAgICBTa0JpdG1hcCBhcHBseUZpbHRl
cnMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYsIE1hbmFn
ZWRUZXh0dXJlKiBzb3VyY2VUZXh0dXJlKTsKKworICAgIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRl
cnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgeyBtX2JhY2tncm91bmRGaWx0ZXJz
ID0gZmlsdGVyczsgfQorICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGJhY2tncm91bmRGaWx0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kRmlsdGVyczsgfQogCiAgICAgdm9pZCBz
ZXROZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMoQ0NSZW5kZXJTdXJmYWNlKiBzdXJmYWNl
KSB7IG1fbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzID0gc3VyZmFjZTsgfQogICAgIGNv
bnN0IENDUmVuZGVyU3VyZmFjZSogbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKCkgY29u
c3QgeyByZXR1cm4gbV9uZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHM7IH0KQEAgLTEyNyw2
ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxWZXJ0ZXhTaGFk
ZXJRdWFkLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYU1hc2tBQT4gTWFza1Byb2dyYW1BQTsK
IAogICAgIE1hbmFnZWRUZXh0dXJlKiBjb250ZW50c1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRzVGV4dHVyZS5nZXQoKTsgfQorICAgIE1hbmFnZWRUZXh0dXJlKiBiYWNrZ3JvdW5k
VGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZFRleHR1cmUuZ2V0KCk7IH0KIAog
ICAgIGludCBvd25pbmdMYXllcklkKCkgY29uc3Q7CiAKQEAgLTE0Miw5ICsxNTgsMTIgQEAgcHVi
bGljOgogICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVJlcGxpY2FTaGFy
ZWRRdWFkU3RhdGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGRyYXdMYXllcihMYXll
clJlbmRlcmVyQ2hyb21pdW0qLCBDQ0xheWVySW1wbCosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgY29uc3QgU2tCaXRtYXAmIGZpbHRlckJpdG1hcCk7CisgICAgSW50UmVjdCBjb21wdXRl
RGV2aWNlQm91bmRpbmdCb3goTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNvbnN0OworICAgIEludFJlY3QgY29tcHV0ZVJl
YWRiYWNrRGV2aWNlQm91bmRpbmdCb3goTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIGNvbnN0OworCisgICAgdm9pZCBkcmF3
TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwqLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGludCBjb250ZW50c1RleHR1cmVJZCk7CiAgICAgdGVtcGxhdGUgPGNs
YXNzIFQ+Ci0gICAgdm9pZCBkcmF3U3VyZmFjZShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBDQ0xh
eWVySW1wbCosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtLCBjb25zdCBDQ0xheWVyUXVh
ZCYgZGV2aWNlUmVjdCwgY29uc3QgQ0NMYXllclF1YWQmLCBjb25zdCBUKiBwcm9ncmFtLCBpbnQg
c2hhZGVyTWFza1NhbXBsZXJMb2NhdGlvbiwgaW50IHNoYWRlclF1YWRMb2NhdGlvbiwgaW50IHNo
YWRlckVkZ2VMb2NhdGlvbiwgY29uc3QgU2tCaXRtYXAmIGZpbHRlckJpdG1hcCk7CisgICAgdm9p
ZCBkcmF3U3VyZmFjZShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBDQ0xheWVySW1wbCosIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtLCBjb25zdCBDQ0xheWVyUXVhZCYgZGV2aWNlUmVjdCwg
Y29uc3QgQ0NMYXllclF1YWQmLCBpbnQgY29udGVudHNUZXh0dXJlSWQsIGNvbnN0IFQqIHByb2dy
YW0sIGludCBzaGFkZXJNYXNrU2FtcGxlckxvY2F0aW9uLCBpbnQgc2hhZGVyUXVhZExvY2F0aW9u
LCBpbnQgc2hhZGVyRWRnZUxvY2F0aW9uKTsKIAogICAgIENDTGF5ZXJJbXBsKiBtX293bmluZ0xh
eWVyOwogICAgIENDTGF5ZXJJbXBsKiBtX21hc2tMYXllcjsKQEAgLTE1NCw2ICsxNzMsOCBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9zdXJmYWNlUHJvcGVydHlDaGFuZ2VkOwogCiAgICAgT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiBtX2NvbnRlbnRzVGV4dHVyZTsKKyAgICBPd25QdHI8TWFuYWdlZFRl
eHR1cmU+IG1fYmFja2dyb3VuZFRleHR1cmU7CisKICAgICBmbG9hdCBtX2RyYXdPcGFjaXR5Owog
ICAgIGJvb2wgbV9kcmF3T3BhY2l0eUlzQW5pbWF0aW5nOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fZHJhd1RyYW5zZm9ybTsKQEAgLTE2NSw2ICsxODYsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV90YXJnZXRTdXJmYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKICAgICBib29sIG1fc2Ny
ZWVuU3BhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nOwogICAgIEZpbHRlck9wZXJhdGlvbnMgbV9m
aWx0ZXJzOworICAgIEZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsKICAgICBJ
bnRSZWN0IG1fY2xpcFJlY3Q7CiAgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gbV9sYXllckxpc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAwMTA1NmQ3N2U1MGQ5NjMx
YWZhZDEwMzJmMGMzYTQyMWY0YTQxOGU2Li43MTMyMmRlNDBjNTlmOTgyZjYxMGZmMzc3MTQ0OGYy
OGQyNTA3ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC03OCw2ICs3
OCwxMyBAQAogI2luY2x1ZGUgIldlYktpdFBvaW50LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQorI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0xheWVyLmgiCisjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlJlbmRl
ckxheWVyQmFja2luZy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGJvb2wgbWFya2VyVHlwZXNGcm9tKGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGVzJiByZXN1bHQpCkBAIC00MjMsNiArNDMwLDQ4IEBAIFBhc3NSZWZQ
dHI8Q2xpZW50UmVjdExpc3Q+IEludGVybmFsczo6aW5zcGVjdG9ySGlnaGxpZ2h0UmVjdHMoRG9j
dW1lbnQqIGRvY3VtZW50CiAjZW5kaWYKIH0KIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQordm9p
ZCBJbnRlcm5hbHM6OnNldEJhY2tncm91bmRCbHVyT25Ob2RlKE5vZGUqIG5vZGUsIGludCBibHVy
TGVuZ3RoLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW5vZGUpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFy
ZW5kZXJPYmplY3QpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX05PREVfVFlQRV9FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSByZW5k
ZXJPYmplY3QtPmVuY2xvc2luZ0xheWVyKCk7CisgICAgaWYgKCFyZW5kZXJMYXllciB8fCAhcmVu
ZGVyTGF5ZXItPmlzQ29tcG9zaXRlZCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHcmFwaGljc0xheWVyKiBncmFwaGlj
c0xheWVyID0gcmVuZGVyTGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpOworICAgIGlm
ICghZ3JhcGhpY3NMYXllcikgeworICAgICAgICBlYyA9IElOVkFMSURfTk9ERV9UWVBFX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIgPSBncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCk7CisgICAgaWYgKCFwbGF0Zm9ybUxh
eWVyKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9OT0RFX1RZUEVfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOworICAgIGZpbHRlcnMu
b3BlcmF0aW9ucygpLmFwcGVuZChCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKGJs
dXJMZW5ndGgsIEZpeGVkKSwgRmlsdGVyT3BlcmF0aW9uOjpCTFVSKSk7CisgICAgcGxhdGZvcm1M
YXllci0+c2V0QmFja2dyb3VuZEZpbHRlcnMoZmlsdGVycyk7Cit9CisjZWxzZQordm9pZCBJbnRl
cm5hbHM6OnNldEJhY2tncm91bmRCbHVyT25Ob2RlKE5vZGUqLCBpbnQsIEV4Y2VwdGlvbkNvZGUm
KQoreworfQorI2VuZGlmCisKIHVuc2lnbmVkIEludGVybmFsczo6bWFya2VyQ291bnRGb3JOb2Rl
KE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgaWYgKCFub2RlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA1
MWE1YTg1Y2MyY2QwMjFiMzNmNDA1YTY5OTMwOTc5YTFiNDcxMTNmLi43MzY0MjgxMjJiOThlOGI0
MGNkYWMxZmQ4YTI5YWQ0ODZhY2IyOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
QEAgLTEwMCw2ICsxMDAsOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPENsaWVudFJlY3RM
aXN0PiBpbnNwZWN0b3JIaWdobGlnaHRSZWN0cyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsK
IAorICAgIHZvaWQgc2V0QmFja2dyb3VuZEJsdXJPbk5vZGUoTm9kZSosIGludCBibHVyTGVuZ3Ro
LCBFeGNlcHRpb25Db2RlJik7CisKICAgICB1bnNpZ25lZCBtYXJrZXJDb3VudEZvck5vZGUoTm9k
ZSosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPFJhbmdl
PiBtYXJrZXJSYW5nZUZvck5vZGUoTm9kZSosIGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgdW5z
aWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcgbWFya2VyRGVzY3JpcHRp
b25Gb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4
LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXgg
NTA2MzJhNjNiOTBjNGFhOTYwYjg5MDViNWU5YWZkOGZmMTVmYzBkYy4uNWUzN2RkN2M0YmNmOWJi
M2FiMzdlMzU2ZTNlZjQyMTc4ODk3ZDVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbApAQCAtNzIsNiArNzIsOCBAQCBtb2R1bGUgd2luZG93IHsKIAogICAgICAgICBDbGllbnRS
ZWN0TGlzdCBpbnNwZWN0b3JIaWdobGlnaHRSZWN0cyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFp
c2VzIChET01FeGNlcHRpb24pOwogCisgICAgICAgIHZvaWQgc2V0QmFja2dyb3VuZEJsdXJPbk5v
ZGUoaW4gTm9kZSBub2RlLCBpbiBsb25nIGJsdXJMZW5ndGgpIHJhaXNlcyhET01FeGNlcHRpb24p
OworCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JOb2RlKGluIE5vZGUgbm9k
ZSwgaW4gRE9NU3RyaW5nIG1hcmtlclR5cGUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAg
ICBSYW5nZSBtYXJrZXJSYW5nZUZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01TdHJpbmcgbWFy
a2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAg
ICAgICAgIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoaW4gTm9kZSBub2RlLCBp
biBET01TdHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJ
bXBsVGVzdC5jcHAKaW5kZXggMzlmNTU0YjQ5MWExNWUyMDIwOGVlZDEwNTFjYTIxZDkwZDk3Y2Iw
OS4uMzZjMTA4MmI3NTgzN2Q3Zjk4ZTIwN2NiZDk3MzhlZGU3ZmM4NjE2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcApAQCAtMTEyLDYg
KzExMiw3IEBAIFRFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVUcmFj
a2VkUHJvcGVybHkpCiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChy
b290LT5zZXREZWJ1Z0JvcmRlcldpZHRoKGFyYml0cmFyeU51bWJlcikpOwogICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUp
KTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldEJh
Y2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZ
X0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3VuZEZpbHRlcnMoYXJiaXRyYXJ5RmlsdGVy
cykpOwogCiAgICAgLy8gU3BlY2lhbCBjYXNlOiBjaGVjayB0aGF0IHN1YmxheWVyIHRyYW5zZm9y
bSBjaGFuZ2VzIGFsbCBsYXllcidzIGRlc2NlbmRhbnRzLCBidXQgbm90IHRoZSBsYXllciBpdHNl
bGYuCiAgICAgcm9vdC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAwYmJhMDM5MTU5M2JiMDY0NTM4MTU5Njg1NTk3N2JhN2U0ODM0MTFiLi4xZTk5ZWNlMzkzYTA4
NDc3NjZhNGZhZjkwOTc5NWQwNWFmYzE1MTJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTIt
MDQtMTIgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBCYWNrZ3JvdW5kIGZpbHRlcnMgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDA0NgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC5w
bmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRl
cnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXIt
Ymx1ci1vZmYtYXhpcy1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vZmYtYXhp
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2NvbXBv
c2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vZmYtYXhpcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tn
cm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXIt
Ymx1ci1vdXRzZXRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmls
dGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA0LTEyICBB
bGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OKDExMjc0NSkgW0NTUyBGaWx0ZXJzXSBNZW1vcnkgdXNlIGV4cGxvc2lvbiBmb3Igb2Zmc2Ny
ZWVuIGZpbHRlcmVkIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItZXhwZWN0
ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVy
cy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTNiYzM2
M2M5Y2U4MjJmMDBkNzhkMDYwOGQ3MjNhNTY4OWZiNTMwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAzNzc2CnpjbWVIS2VAeFA4OURiJGpyJDQmdU83eHU2WmdzVkZOQGJEIyhBRFg2d2FkPElgSz17
fTkmfCM5czBkPC13dVk0egp6eVBIVmBPNnp2ZmhTQiNiZilmPyZKN3RUJkJgMmdEQm9kbGdmTzNr
MiFoUVNldyk/YUg/IzRnd2ArNDdZZCFLakQKektGezspejQoM2gtc21MPk84QH1UYEBZUlExaS12
aTBBUWQrNzw2YUZYRGh4JHJ9WShDUCh7Jj88UlYlKl5FQjkkCnpNJXNxb059dj54RFJePyk3U2lV
VEEyeDRJckh+M3FnX0pHbXV5TUZpMFlKPjVlVk14dHZxa1QkVF92Qko8Nz1QQwp6fEQwck1KbHU2
SVpveT1iLT03dD87SzhFdjJAa0dPemJrOUkpcH09bGpeP1Q0KG5mPEZ7QXVmc3tMOExwLURNblkK
emlVNzVTSH1XX0RKaW1NYjBrRSt5NS1lTihBMSF7PCheN2BpNVJWKytkRzsyKkNVNjs8OEtneEZY
PDN6WiU7USVOCnpAfUNYIXRNXk8kbF5oUFNJdFI9UzhQPnJ+cV9rdSRHNjgzfU12P1htbXJwelFV
PDBOaHFjRXxEa3d9cDBEZUBhOAp6QlNuN256RGRkO0glNGw3WCVmd2BDUzx9PiUydExyQSMkKVJH
IS1POztEWGVaeSo/PDxLflc5M1k7VGtBRysyZSEKeiRgQENxaktzKjVBak5xY0dvSVF4aTFZYWgr
O25jb29ISG59MVN+M2xOJjImVEN5ZTVhVnpyRTJHUmFpTW1WRTJtCno1fVZyPWlALUB7c3JFQDkx
bGxpbm0kZHJ2KyNCbElOdkEtfmVJTC1PX3pKYm4jX2YyQ285M0hzX0cqI3I1IzF6Mgp6QUB2cmFj
dHAlMnptTz5gUTxWPH5UTmc7cWdaOVNxI2pQWjQmNW99M1l+S1czITQzRnp5PCVLP1p+ZWdmKXhE
K0wKemFVenFeSVgjSlYqT1JjYUo1bTw/PHMzNiRjOWZsWSpCe35lVnV3SnBVNEoqNTEtbkw2bUk2
OUFJT3wzNiNZeVM8CnpmUGRvM298ejtHVldDN3soYjE5QVdWYyNhRVV5KUArZT4jfHpsaWJOSG1y
ZXBCJmJQQ2dTQDBwbCYtNGE/M2g+Xwp6b2JiZmZiJGZTNG4mMnEyV2p0YC1Dc0V8YGI8Z2ptMUw3
YT9rKjNte01QS1BpUmtPZUh7UF5DMHBBPWRKdnc2OEUKenE3Z2lPQj09WXxAajVJMz9CYktsQSlW
MXptTyEzIVAzLTsyJjFeJTBJTXIoZlF5JTN+Jmh6WHN0YzhPQFc3WkFICnpzOWI9RWBUQlZwc1ZD
IVcwMTdjbiFLJEB6eENvT0Y/dTN0NGZ6VjlVZ2ZfKUVqTlU8LXk7bUVJNz9PKClvVmFyRQp6ckRH
ZkZjfmgyP1NSTlQ3bVJIUiN6Smo8M2VjT1UtQTd7cGFsI3g+eThrUj9BJTlHNShlIylfZk0kWE54
TXRxZGsKenhlbEhvTjtLJUFJT1gmYTtnbUFTQDQ/Z3g3fmorfTZPSzNjUUdGQ3ZUMFN4NDxZNFFv
R0x+Kj12OUVfXjNiVmxJCnpibT83PE08cUVYK1duWVgrYCNZaU89R3Y4YXBYM2NCRzFeNWRTUj5w
JDczaktscjZFfDUzY1RKQ1MxcktBMWtaJgp6K2xMWUtTVU5eayo8XlhOeFFCcTlHeHtsbjs2Kilv
RHVQTz1BWXxtdnJBOHF0aDE7ZEp4bmwkNVd6WlEjWnF7ajIKeiRhYWBPciZyUHxDOUQ0ZGJyYyZv
WlAkfSsxP3sqVkpHSEclPXBJNE5Lcnk9OEdXSiNEd2EoJlFgM0xnUVRZVn5ECnpvVSF7KyVNcila
YEFjZ0I8LXxKWFAxTSFrZUFJQkFSd1BKTHppcDE0SlNFOX1xRWAtLUpWcWJWRmc5RiNaVmUzQgp6
WCUycj57bEJBWEZTOHByXiNZUlckTDIyVHNTazx3SzE5dSUlYjQrMyUwekpzZDFrdDlHKG1sfiM7
Mm5LUG5qVloKendQSlJBVS1HQHpKSVBJNUQ/bilCQz5EKSpGNGVJQXF1VV4/cGZHamU5MHt1K3Ri
K2ZFM1pfJHs7eyhtMlNFMz5HClBPQTdYN1dvT0Z2b0grTTQhVGNCdAoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9z
aXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1m
aWx0ZXItYmx1ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIxMzc4OTE3OTFmZTk2OTI3YWQ3
OGU2NGIwYWFkN2JkZWQwOGJkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXIt
b2ZmLWF4aXMtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29t
cG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW9mZi1heGlzLWV4cGVjdGVk
LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xYzI4NzI3NTYzODU5M2RmMGNhNTY4NTJmOTQ1YWM4NGU2NDZmM2Jl
CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxNzc0MAp6Y21lSWFXbXVKNipFWUk5NWQ7QU49QGJj
TkF0ZlBnKGlqTWZhPjFlbXEqU15RTF98cyZOdElBfihiNlIjQT5GTmoKek5EQzZ1LT8pNjxafnh4
TXY0NmVDZSl5c0h0PUZ+SW9NVm5TJDJyYnY7SnJKRjxmS2ZiQz1gbFpTP1FKcjNVemA1CnpnKEIx
O0ElczduSng5dzZ6Zz0+O3Q+YSl+VlA7fXc/YFZVJURrZ2N3TmFCJStpSU0zUVZOblRGUSFfS2tN
QEZXPwp6I3pKQ2RMUlVvfWg0a01tTFpMV04lRDFqLXgrRUA3STQ1Y2o5M0hSbGx3WVktUlpMVCZX
ajFXYFJYUkQrI0lWZG4KelRZSXNZR3slUlVob3stQF4oN0lqOzNHQXZvMSZRNDdobjBGYn48LWte
VzQ2R1JAJHJBcFlYNGd0X19ScTkyfFlWCnpRZEh6YShtcW9Den5IWHl2ezErN3U2NSNDdGktJj4+
TzZ5MEUtWkNBbC1gS3xlbExJTkxqP2NGS3RQNTwpZD5eUQp6cC0/XzFDOzh6b1QxYSVAKkg5YHZ7
S3wzeDJoVXpyc0RyJmUzSTZYM3wxWWU+JipWZjwqJkcjKlNHYDcyYylAMHYKejgtO3BDaXZJcyoo
KGBzWFdSKW4/d01oPSNgNX5KS2dVSUJsP1dqamVlO1ZfTVFFIUx+bSt8SH1kSm5FPlJickpCCno1
bllLRm1FRHc+RTteRURAfWFKPSE1ajBNcyZsPWgzeVFzUlc0b1VBO2VtMGxsQ3szPVNvSyNHV1M+
Q0lvK3U+PQp6emJPfSk5NmxNZHJ5QFZ2THpaalpeWEB+YikhNUBaQ0loRVhVd0tkUiYlUCt7XzB2
I1kyKyhNflEjR2xDUUt6KCQKem5wUW1GUj99bFlUNUwmZmEyfn54YXUpeVErbnxifFFrUWFvPmRv
e1I9fGdgXkx7M1JXWCElfjgqdT56T2dZUnsmCnplfTBOLUNaVCp9WnIwcyFheDt3UXZXZDkhPUZh
Mz96SWVUU3YoQ3UkYG5SMyZAantiISFeMV53QF9UMyQkNkVKbgp6WGluakV6U3g/bVE+d0RnYDtS
ZFMmMjRRZTNqWFMzQ0s0Xkg8IWZ4VSY5I2VKKih7bzVzSVNeNWBBcX1vR35PMjEKekl0MlIjclFl
OC1JdkM7Y0kmaz9DbWlwU0BOaih3MHB+cmVGQDdtckUxe0JKZ2luR3Jxe0hJYzZUNk95UVVhQys1
Cnp0NnVpX1FGRkIpdjVgRkxRb0ZOfWYpJjMkcV5yaEN4djdFJCYqUlFOJGM7KlZeSFpzKm1xX0R6
eUFgdlEyNGcjcQp6KVRHd0ZlZVg/NSo+ZlFaY0F2a1dpZGBjfGVMVnJJTk9uJE4qTFd8Z0J2cEVT
dmZlZzJqZit1dFdIVU9xdTRhR0wKemVJYFU9KHJxYnNyWHxlbzRKNEJDUzhWKkkhMj1wXkg3X0l5
Yzsqe1R3Sn03IyhvcU99I0UmKjk0YilieS1UaHxBCnptRWAqSz9HVjteTGImRGdGRzRzbFE0SWJL
IUIxNjZtOEo5dFg/QElkdFR1WGZtRWk+P0okd3dJQ0Q8X2VxcmJ1fQp6RUxWKWJ5dCpyWVNvfmV9
QiszK2B5V3ZsPz1tUiVSREsjY08pP3RebSM4Si1UUiZSfVZaRTJrcihzQWMwUHFjUGsKeiltKTR8
UXxUPyNIRjEtbXZxcGNmQHheWTNobXZLWUJLT0twZCFAMGhiIWdON2AhViFCK15UbHBrPXElIVhV
PGJZCnpVNWhhJEFgN3ZJNnhEYVR3fEZyTCV9VDN4ekJ5aHFwO0J6SE87NldxI1ZMTk9jSChsYF9f
TmpXYERDeFgxLXNmcQp6Q3FLPjhzSVBoX2A5KXZUX0lqcmNyS1A2NypJMj9ZZyRFMXN4U0VEVzRN
dnYpQ0ElJFYpX0NxNCpuYm1TOHFCclYKejJPbzIlIWdzJlBOLUlrZmpeSEpheGtGbCs5Q2EmMDwl
bmlAQD91VnNzTjNlUmtzfFhjdWwqSTx3aTc1Kk5qSDRBCno1SnFgVUJVKTV2az17dm90Z3Z2PGNI
KEtZKlIjJCVXPkplYlkxI1FUZCRXO3VEY0RZK0h0NWhnUGpWa0ozM15eaQp6O3Z1Sn5qSSpRNChJ
Yi1RYnNHemJwcVdASWNAZ2F9cFg1eHpCPkY0U3pFayh9bGxNVT8xU3M3PUEwa0QqR3sjPTgKejEm
IyZrT3pxKlY8dXtxYHdZYk1BUGs3Zmo1QUhuM1ArUkNwUlRONC1oazZxKiU9eUp1OXxGYH1tRz5w
S0hCVkA7Cnp8ODR1NTx1O01BV3RQRmFNbj5PciVPPDZxbVdMTT83dHdqMjh8ckJaUCRQYW17KEYw
UmU2YmolazFGJnB1cEkpVgp6SlIpZ2NOfHckdkBlYHcqPDg1WktTUlR0Xnlpd3l6YV9SM2NYamx2
d1FFeXR8ZC1DKm8pVDBkfHkqUkwoRTN7NnMKelRleDAhOT1kJCQ4SEw7Z1k9Wiswa0o/cHVgWHhF
QF9WKW1Hc29KWTNqdVRYUGU0bl9nZWNDPmtBcnQ0Sig2WEQ7Cnole0wjXl50IVohRUh0eEB1YGl9
OTgoeTNhU0teYHo2NjxHMXArcnZVelpnRTlxQlBlX1haY0UjI1l0RXxOQjZDaQp6Si0rdTtYdkh8
XnhYUkF6Z2h8MmgpWHtjWF80Y1VNdWtRRWNJfD9ZRENzZz5+RD9jPktIRjtSaSZrYUIxZUlSe0wK
emxtc0pBUnBHUkt3UDlsMmAqX0RZcUVse3YrMzt2MV9RYV8oN1FmMClwaFY/TE5lV35RbUhOXkhk
JWIjfUVWdnNECnomRkMjKz5UYGMrYFV4MT8lb1ZoLUYkPn05WHRmYCVANk0tNGozeUFHbjF+Njs5
S1hmI0M8UUBxNy09Tm5tbjwxRgp6SWtjbismPlZmUXM4a35tQ3lZakdBSSVBUlRsUEI+cCt0cEJO
ek48bEBrVDQ3KDwwTjFqT2hEKlElanU1eE5Na3kKek48I0YyO2BgdjwqM3dZRVZYZ2VaY1M+LTJI
VzU9TGxVaUJTSkEkK0xqWShwU3hCVTtMRS1iNHNNUHt5NGtTWVcqCnpKI2QjZG5sYX5CbVk4c2VP
dU8hUHM+ISVPJlU1ZEBKcHhvNllibld9MGZoeXYxPX55b0RaI0daWGZFYmtTenAzTgp6OE9jZGB2
RlM0RlV1Wm57SHB7X2NAT0E4dVNXIUxgamlpXygtU2c0UChZK2lDYCRxSU01Z2hrKmIqSl9tX1g8
UUIKektpeUE3Zns5Wjg7SjNOX3pWMmBkM2JwOXg2RF5VSUNYKUczPlkpXlIqfDtHX3VWIVBHbitO
eXkpWjZhe2J7fl9SCno7P3UxMSU3NlprKC0pRXVwZWJgQStSe2lERyM1Vk1nSVphNWM4az1ITk03
eyZtMChqOSEodHBKVUZTbnNCbiE+RQp6bDhzX2Rwb1ZvZmFkWDhZbVdpNys0aXlmV3tsZCNgQktQ
elhSVmJgVTNnVEIxV0wlJHh2QmBTdlI4SU0wTmwtWlIKejBeakgkektBUklwfEp3d20ydHRReCQ1
N3tsPHF2YUpGWE5ibldWR3VxMzcyKGlLJkNTNk9AfFQrTFl7YUdSeDBVCnpzSHh7WihmVntNYX5r
I3dxNj14VEItN1NnKE0kcU52JF4+OEpxcE8rMSE8fispZWhpTkV2KEtEaHYhaEo4ZTA3cQp6bDE5
fntzdWQ1aVZnI2Emd0UwTFgoPmZrbTg7am53JHgjdDZIYG1QR2NNNCZhU3A3VGBURGpTKUQhPXpE
Nj5taj0KenZTdWVod19sRlZQYGF5SG90QitHWCozaW1zfVZyTzZRMzZtQEtZeXBWTSp1dCkweVZt
b1o8M14zd01wXjJ+b29vCnpyNmZndDY1emlBVE0/YjdFOH5gPGJqbnBHPFNrMCZ7ITBGRlRwQztu
XkZFaz9RO35BYF8yaiFoe1l4d2I+S3o+Ywp6ZGQhMUFUR2M4b0dDY3llVzVCYnVIWT92Y2J+QHgr
O1hCOGJrfDdsLU5UU35CTDVBbig9Pnk9NllzTnVCUntjdEEKek47fDRTPkRQTm5FWjZYPVpGKyVN
cWYwSEtoZ3BnbHI4MTFuV2o0TkVYbGlQYi0pKzUlJHYwcWl4KHJ3cF5LPHs5Cno4PlR9MEYlTm17
b3pCNk5aek1HbXsyVzYkR2BEVDJZP2xtPV9sRFl7KFp9MG13YUQ0Yk58JXljOEo1WD5gMXBMJQp6
I1V2JnQ7cXM8N287JlRyamB8YlB4ez4yYy1AamY2TCV1e1lsKlJTJF9rYXtmJXEwOGtsY0A3WE1D
ZDtybSNReUAKeiNQRnBYXzNDUTAhYGRZRXlVd1owXllKRzFYe2xJUkY2ZiNraU1qbHEtcV9keEJs
fiNWcyV6czROXms4Zz5PSjJwCnpyWkkoSVlCZHRpVUV9KnpCX2NfY3YkKXNnZWJpVSF5dGI1QVgk
d2lyWG93S0M+d21mNyV4fVpZaGtUSzQlSmNxTQp6d1dERSE2ISN5eTw4NkIwJE5OKCRwNCVnYyQx
aTUqUSZpSFN6UzV0fXgjeEtpPzMrSDV3aWJYQE9JQnV5RnJmfjYKelY1S0x5KEVzM1d2OyZ3cCpg
Wmd0LVVNfmNqfXp6clVabVcjcS1edE1ydDxMQ0VXNEhVJURiTF5wT0BFY0E9O1Y2Cno5IUk1LTM0
RiVRZWhudlBiSFJhZ1RAeSRwJlZLNjJDd3BsRUVmJEB9aDRwVjl7dH1edXg3R1NjZkhzZFVweXBB
Sgp6P310RF5RVWxeNTwteFEkJV5Fej4lREhKSz1+byZBUEhDK0NlNVkocCE2USFvJDdrTFpRYkhl
fjF4K24yI31UdHcKemU+bSt+NG5vV2N7UmAyYEwxezxTLWZ6c1BQNU9SQnNVS0xJe2tkU1ErPFRp
SSVWcWlINiYxYUslbEVxSENtSUVhCnowWX5iO0FiPDNKXk5sRVdAZSZzT1JOPGs1QFl0cHY8QTlf
UHVOX2p3UFlfY2F0Y1E3NUopM0pvNHEqSXgtN31sJgp6JT9NR0l5JkY9N093STN+R2o/JE8jSEhX
aSllTlFodlVrVSVJZTEtVzRVV05uKmRLSyo2Y15OO2wmPGwxR2tXdkgKeiFaMUZsSzIjUztILVhD
SjNlNX4ldnMrVVY2JUdwPGAlfWtXbzQ8TmkjPihXNjVCP3lsRHI2P0dEKVdTRyV4TzM7CnpvWGda
Mi1vaW52QT4qMjV6bUl6c0IqWj8xci1yUDxxKWgrdE54aClnZFhVJVE5PHFEVz81WlI1e18zN2lk
YHgyYgp6bE0pQjExLXxVR2p+Q0hhSHI8fWxEZiV6Oy0tPXBsKU9zQ3k/ZShTUFZKcFIjXi12c1dE
IWRhbVdWNiZFV2khSmUKellMaEpVP2w4QkpfU0BvPWJXP1dCMWtKbFlsZFI2OzErZT11K3NleiFI
JjdoPV99aWIrYSo9SzZKTCMhdVI3VWlFCno2WHJgWWNobmwmPUUpbXVTZXx+TlFpTlhzbGVyKns0
bWItKmJoPl4lQ0g2bTY8e3wpPXUpbG1ybVdVcjVsPUtvUgp6QHJ8QzYpZnNiYUIkclVDSU1gQGt0
S09NSmpKJGxVWnVFVzB8MElVK2N6LU08JVZgYkdNZzA3PHh6KEB3KGVPdiMKens+cX51ZCFFZChU
ZCZhK0BWcmRePTE2ZWF4TGUzcW5WZDl+PWdjRTl5dng/Kk4leXR0XkVZMzx6IUlUTSRxNng3Cno8
X0p+SExeQDVubGhLZ2glV3heRFpxPjxvRGo2a2ZyaWpBUWJ2VDJnNSVVIUNOPmJFVXJqdDJvYX5r
RXY4aHFoLQp6cno7c210TklETEc+cF5TS2IjTThEM1A3b3BXSkI+QVYzdT1QWkgtYFpzcER2KkM9
cHM4czIqTW95YlpYanh+fSYKemZYflh6RlhWPWA2KElSI08yUnNVKSl9Nz81dTJZNFcqU0VEVHRX
WSZqRF4tZFpmcXRjKytvYjd0YV9zalpLTXRHCnpnaUcrbXB1MHgtdGE0Sz9CaVF4cSt2MzFmT2cp
I2c4QHwrV0c0dGF+RUZzR0R0cH0tMmNLV2tTd1orUnhtckUhcgp6KjxNX0hidVhzaSFfLVFzXmVX
RSNFWHFtQ2l6VHx+bnchI0lTYUl5OHs9JklsVEkhc2ZAYjM8WnRTKn45aXRkfWcKenNHTWp+Wl9K
KiM1aU1vVU1odypTdTR7YjZGSX4/Tjc3PH5RYCl0QipOTmBQZCl9bF8yR2c+KT9tKHJ2JiV1I0FO
CnpaSWx+Ym5VdEU7cz10N2dxcj1VUV44WUwpUzVBdTs9Wj8pOFJaJiNsaGhxfWFjcjVCeT5SZnlV
dEdtJEYpK1hoPQp6JTdUMkU9UUQxY0NzKHZHeVY3QnJZV2gjR3xDdn4/dnFvOzhNa25KamxjUi1a
V2N6LW9kLUEkJF9eZTEoNDNVUHMKejwmKXRwaiFMZG4lX2tqMlV3bUZsPHlDRjhLYG1mTSUlcHFD
PmNwVj1Nd0BKSCN9SEw3RjRHZXBXIyRmVDYmXkdFCnoqNT1NRVZRVzFSJnVtTlpQT2VaMF9mNHpr
OzZyP2ZTWlRoUHg2dHkhSjFePUpPdWo4S1ZjbWw8bS1VO0VJOGdvaQp6Z0N9I0VnNkp1MHBTdHYh
JEN0YHtQV1Nyc0VsRkheUDs+Q0ZTal89bV4oSX1SPDAoLUY2T0VnU3R4TH0jdjkxQ3sKekIxN0Ir
cWJwUTU0UXtqWl5kcmxULTs4JjZzcm5mRSNHaDBAMHJeaSZOMCgpMGJfZWVvekNiUEppZmRCa01T
dzVSCnpnZ3A5WVNjbF4xR2hJRENhayR4Y3cqfF9tKUE7YlE8Uyp+ZT5jOFZgaHdsNmFsYGNvfHlP
VlZKJkdgamByeD01MQp6YFRHP01fZl87S3UzREkkM0M5Wjc5KkJVZ0BYe2hyaUl4RE1BcWooMGRL
c150QVRCRkV2I1dTP2AxUjdxV1g/O3IKekdoJHZMYzg4em4jWUEjJl4/fW5ET3dVfUh1IUBkfUtA
aVNBRUFzbmNAUHFrPV4wd29qcCk4aj85JDAqaCZPPjUwCnoqTHBuY3hOTmFEZFI7fUNpWUN6UWVp
cyk4JiZmaz1udTh9KEVHO1p0bXtJVD5KSDJ+TGNAY1U4WHZNRU53WkVkeAp6ODhVRlVmeUBkeT8w
RExidk4/PWgtaEYlZHttbFRDIW9yJVo1VmlZaE4qZCRNR2hYOW1VZUMzMCFHVTh9ejNEISUKel58
cmpgYkNvYHlreztDPiR5KzIoZn52Z0tMN05qRkFDR0gmSmt1TzxLX1BoZl5IWT1pX3dWbksxcVlr
VXBjQ30hCnpVJU9Dc3hlUiFmMis5eDR2dVcmcEMwZllGRUt7RlMyd35kI25QQiU0aVNARTRnb0VT
ZF9BUmdtKnhaOVZsNT07eAp6X3hqZGIqbFE8WmlPQFI5UlNpbi03eFFxZzh5LXtoY1c/SUolKnZK
Pjx9NUMoa0hHd3YhRnRPN3QqODdLLVVjU2IKeklSV2ZtRT9eJmFrS2dzYnpjKV5LQTBPVUhsM0pO
PVFmVTRvVzlYJC1yTlVGLVlpNjJ0XyF6ejluIUw2antPWG5gCnpnTj1LQGl4VG0qIyVOZW02UyZ4
TmpSTDdvZCNvVTNPYiFLezZmYDQwbVcjUzMte3pDWGtJVC1gLVhoSEBzbUgjKwp6bC04azFSeW9I
WEtqZ3hiUyZ3IShDVS03e181RUYrJHBeJWImcW4jPTN7OSlBLWomOygxd2kwOTg/Tlp9PWJKPHEK
ejlEaC1sVHhIfmZOKDhUPE1SQ0A0dyhRTDlEa1koSkBBKFg5JDhSJl8rIVZEcXtIbStLXkpiaHdS
SFNmTSZUMkVLCnpzRlNxdkI8ZD4+ZDVMZHsrdHdsK2VoOW1Lam09blRFWUBrbkJ1b3wpd2l7QzhG
fH5KfUNNNGRYK2xPeyUyMiotYgp6QDcoejlpdl8rIVNOfGtUOVh4Xi0zR3Qhd3g8a0BJSyMhdTwh
fSFpNVgraXhgPiplN0JXV2ZrPCtmIzMken5DUVMKenRCKkpQI25HO0Y0dngwUHQwKlYwTjl7MDZl
RzAmKHd8en5NX3wwdjV6R0Y+IUg2UDtwZDtra0lrfVN2KWI4JEFLCnojZ312bnZ2UDgoVytQTj5Z
WSg/JjBufHo0RlNNNXBEeVdNeGU3azMyPHJ8WVRvelhCWWEwNyRLWEtSI140P2VudAp6PTJqR2Nm
eCEmZHtRV15USXp+YE9PTmBjbSlfRDdfKkc4biUkfCNhJnApQWNEP0VjQkdUJjxZNnN+c1daOFVj
ckEKelduK3trXnk0PEMhSXhPVzc0N3p+ZWBNVjdjPlU3NzwrdjV1dy1SfV5Ne1lwbmVKPDJUPmoy
NVhGN0l7bG5pZWVwCnpVKmI8anpnamxzbURmZ2tsMzBAZDdBY29qUT9+RFU5Vihoanp1ezE4PUhr
cWtWe3FOXlQjUTZ4eytXJlQ4e0wyeQp6MGkzWlJ5UyVWU2dQI097IVYkV3MkYXhDWDkmNytvcyZt
elN7KUg0JUhHME0xejRrQjB1MU5ad25SPDJxPGY/YUYKenRlKmxsQUNVTU5vPz1BSHlXPTZaPmVM
WFQwLVM3dW8tRm9mTExaezF0Z0xLaUhmUF8zU2dLM3hWTVdBanlGfk0/Cno+UThvdWU2PytRUnZ7
czdKKVooa21DKzFObm91cih6XlU5Xm9RYSVnUGVZSXZQP1MkQks0UzJneW9aZVp4e2t9awp6UHZM
O1c8bn1FN3tRU21UQSMmK3lpWi0wI1gmb1MrdzdqJCl1RF94ZVpxfHxhbVQ8dTlNPzZxYXVpPyNw
VklldlMKemZDQk47QHBWP1RQVCRBN14wMURiM0ZqJFZHJHhxdyVBP0xpTm99bTcpPVV+Jjg2eklv
YmROUFpiYmxTa1g5fH04CnpvR0dNSnwyUj9RamNWQCZ0O0w1OCh7djRBYShaTzBjPHdwRzxmSDB4
U01xVldgZWchRk4xRkJBZHY0UURJRX5xMAp6RDt6OW0rWCRhQk9OalhRR2B5bDsmdDIyNiZCez5H
YyYtaGZ7RkNFR3xJTnAwSH1eKWgtVnwtdlUqQndJdykwcVQKenFIb00yTF9LUjhCKFBmbChkMiEm
V2F4SyN4ck4yUHFsdzx8cEB2M3BzbTw4RSpIPVdTWGJLOVcjaUh2K3UyUnZRCno/JlF3ZCZaYSNS
ei0zfTIhTm9MfG81e0t4P3ckUSVmNFMmeFV4eGJze2spfWplaVR3bUlZbUZlQ0cyIWN1WFFCTAp6
TzAkTDQ5dnwmUFBYUndZNzhqRHZCcEk4e2hfZVpZSHoqblh6UGozQ2JyNnIheFQmUjF5Rmp7eWFx
b0g7dUFZTGkKemBoengre2F0cWdBY0skblNnUlZHPlpzKyVCeW5KMmRWNn48YCFYKThAQ2dYNDRy
RlZhKDlPNEE1cVpqLXppI0UqCnpuMCYjMiVjNCVEIzVCQyVwOFdMX2hLcChRI1p4Mzdsa3ZlIVZw
JnlIR1J1NEBqdilgTCRiR1MpaGVhTns4ITUqSgp6XlF0bFl1Rzd6bm5+e18waD1iKG96MHR9V2Zf
VyVwQS1aQHdMfER2QXttRjFxSUpoejdlVXw3RyVYRT00eXU4dDYKejhfUEViJUl2MV9zd2Z8cDsj
NiN7P0RwYD9fTHY+SnhVfipIb2paS1EpTGx9aUd4fXc9Nld2WCY4IyZnRlJpal9lCnpEVWU+XnA8
ZF8ybCFfUXduI3AhdUZuUTFCdENmOCNyWkRpTXVsWXU5PnRWazRBc1Q5MF90fjF0K15vQVBhKEFJ
fAp6a0drfGdNT0Q/akJRQ3RnTUNha2RAcG56VDgtN1hHcn1uaGd2cCVie0xebTNCNFAoV2heNClu
SEcmMVV1bT87azEKemZIRUVjYEc1OVpRcXJ0ZnJ7cH1wNHUxT2h1PVdfMVE8M0BMVzJteFR2QmlE
QUxIYX5WaE9HfW8yR3tZd0Ayek1MCnp7U31MbD4zVUV6c1UwPiE2Pk89TGNvUDNqN2QxSEImaWZi
fHNFXjVSa0I3QlQqSzl7aVFsRUsyPyZDTUMwaH1zbQp6MiVwNGYwXjJ1JXt6Pj1kSWRmQ3I+IzQ5
YnJyS3RQOE9Ib05eZWVYPl87MDxSUGcwTjZvKjQ9YV8tUlI3aU9QPlYKel5yXiQ/VU9PPlQ7PT5J
fnhgVl9qa1k7V1RyK0dXeFVOTUw0ZEEtOThUM3ZDUShiPnxnUnlOfmQ/aTtUO1p6ciNOCnpFVlVm
RTIrXlFfZDMxSHp1enVGcXxFfDAkTXR0TFApO2h2KzBKJWVnQVFKVTA3OF4kWmQwbGJCQ2NyUEhy
PkEkeAp6P09WSDwjNTUqRSRqbVVCe0NLVjFsK0FUcDlTKWd7bEwlQVZKZzgmRSp5bDQ1cDR7Y1JM
YD1EMU5AVFVybn5vc0IKeiMqc1BOOTAjeX5ldlFaTypZRkYjZlg7eE01VWM3XiVLV2JETzs9NGlN
O35sP1FIVGYtIXV+cHd7KTNzSnpaLXRuCnpRI0NnNTJKWnxXSklBUmZuZzZLPUl6cHxFKEMxfjVK
Xn1oe1AhbkotYWJPeU52PF9qRjc5U1MlSTlQOFAlRiEodgp6WWpWWXVqXkBZUUh4ZD1qc0U7aDt1
NHlYc0dDbjF0e3tvV1VoJkU0OEBFb0l7eDc+WTVNQHRpeCZkN211elchb2QKekZqM288PzdrYHEt
NyYkNVF+WGVVd3dGaHNSQTBhUz8/O0FodHZ+WlliPVVBfDRFfjNnaHNpKipWQ2A8PGtBJjkpCnoy
XmpCXi1SdXg4VyhqUyh5d309dXR0dExiKzlTPF8wfkoxfmxmezxgSmYzKWVKRH5IalJHSG1tamJy
NFhgVWlFPQp6RCZPaEIqRFN5ITwlYCkoOXZ9QEgoJXlBRythKyFkPFcwVGBTZl9IV3J0O21wPX5t
dHB3VFZZTTchME5odCshamwKejkmR3RhO1h9UkNvb0dZYSM3ITFxRCZZKSp0dy1zYjtgfDkkbFo0
cGk/dzN1dntkNHx6PEh6Y1VmV1VOMHR3JGdyCnptZ2RASDx1fCk7KWB4eWlRO3gqcz1vRG5maVp0
SjxkS0h9WUwraCNoRHF8Tj9CNk94e2Ata0otcTJJRmNGSzJ5Vwp6O1d0VVFESjhPYikqfCNWKlJa
eG1GXnVoQm1HMWFQX1o+cUBOX3EhZTFeT1hQUDBneW1LWjN+VV8oYDEzTlozdHwKekwqbVgqUGd0
RkclJmB0Sm9ZQWlwRzF3aTUkc2hENmBXWH5yPXk1ZEZDNHNSISF4XzdfLXg7TFhOJWt8RilgYlck
CnpsVnh3bCV8OEBMZFFQTCtPJFA0Z1IoaU5ieHRJZG8kYlp2XmJxR1RON3I8N3FJUUhORipUJn4w
UHUhUUQ+QXAjcwp6QngyU15iNjRpUm99UUhiJnlMT2U2eGBoMF4oQD0wV0ppaEYrdTR2SSpFI1BD
R0hyYzt0VWxkOGtMJGlAIWdTQVcKeiFNPVpFLWZ3ZkxfUTxnPD5KcVhpJC1NZ0czXnxNTGNoSTBh
X2tYJmRBWXBkfEp2V1ZtKiN5KjcqeEtMRGVEWTR0CnpHZHY9aUUhbypLMU5FcSNTTS00e1JFOU90
VzxoN1NWd0FLcVJ0ND40RWRjZ3IrMFM/Vz1PZUZ8bDlVYjlkTEw2PQp6UF9Vaz8rST8lRGRgVkR7
NV5ROFcrP31QQkooI1FTSipLVFlmXiVAIXMoSzlXUjVGIzVgIzBsKkBxP3lPeUZwQWQKeitIK310
dXF6PE9ec3x8JWpCQWZsdkZgT0UrNCQ5LV9wU2tWRT14SURPZDVxe3hRa3gwZkx0aSlMSTNANVhV
aEJRCnpgR0MhWkszPTQmWlZ7Vj9ReU1MYGslbnsreEglPiFNaDtwOHtTXmpxaC1ZSmghWGl8SCM9
KW15UGxjTGFnM2pGegp6NjQkZ0w+RDdBRHBxJVBTfENLNkozdkNyJHJOdWNjKVVoSmdRK3YyI1hJ
SGNQMiNKKGN0MTJKYlV0P3UhNUFNb3QKejBTeUlsR29SdXVNX1ooI3FFZm4yMGFnbCpRQFVVTG1C
R1ohYklDNG1sMH1WaUU3K1dXZndZcEo7YSk7cz1me2lBCnpmMyZvOzI4O3EmT1p+KTVQKEpBSSo4
WWpeRmUtdXkyTFdGNz12KH15Mk5APypTKC16YiVVc3JmTkh4OF43M20mZwp6WGNCeG5lbXZvdj07
PX1sS2pFfksoOHF8fVc7OExTRiY3eypLUVc2M0l3NTNUOGBYVzQkKDt5MnV7QzdLelJaOUMKenE2
TylmUCYxUkg5NXdWSkU1a0RiaGN4I0cwUG92KmNEV0ZSYD9rNG9MJmUxUDhKOENYX0M1M0V3Y2pe
cmZYSCotCnotSXpsVChlLT0+QnZ6fVRKT3Bga3pyUDhqSXBFVmBFZmRXQk5ZMUd9PSF3aCR7VHFG
YDwtNCNGejI1ZWplUF8xRQp6JEtNVXdSeUR1LWl7PSstZnsody1XQEI9aHUwRndXUUo9MG5pfjM1
Jl9fVkFhbmZgI2t7IWdPPm9eamdnT2lNODEKekFEfGQrc35KYllaZlZwO0xmdntZZE5MeTdXPHd7
O3FzSG1nUjtZaHw4bmRmU0k9cWd1NU1gdm82VUlKIyoxOXAqCnplKkN2WksyTjlNMk1ofStMPGFw
UjxeSHc/cShHVkUtcmV3PUk/bVdqPXI1NGBLdW9xcCtoSmM7STVeN2pOT3kkZwp6PSZFfFc9bU5C
aWx0YFlaNC1xQXs7Jm59U1VNXj8+RCRDIXtZaitNeElwN2NOYH1ZZWZqSkpsRVlYeil6fEF5NCkK
ej90ZEhJKGpVeTlEKWYzVmtudmJRWF5pIVgxeElHO3YtbiNII2dPTzwldndTKE9PXmdscTljb155
RzhuSj9OZWc4Cnp7ay1qSEBqYExtOVd1bFFeeWhiUUhybHtOXlZ+X2kzU2Q5SEFVd1pqVnt0IWRR
ckBIZmB2bTM2PGc/P0xYalhKPwp6JCU2Vy1XWXcoQ3NkRkJXKXFkTz0hMGt2clJXdVVWWW1xK15o
UmwhUEx6IyRqPys1WlE1Uyl0cChfRE1CQ0NGSFAKel57e0U0LVRmJHBjUz1YWnF9NXlkTmFFXjNk
OHp4VVZjTl92XiVha3Y7XmR2Z2hqZDl8UilmZk4wenVEO0FgJj5GCnp5byR2dlRLMnJaSitJaDNE
fU1BenFgMkN6MlJDSUtWJmxgZHt2Unk+Ujw9eSlOREpEfCZhTWZDbzVHfT5nPStINAp6bENQR19j
TExvMjU/YjAzYHpYWEw1VTZTZChPcVVNLXdCN0V1aipJWEhUQXlrR0J7ZFprfkQwWTNiZXtCX1VD
YyMKemZBRStQbGtgNTdoZ2trVEtxJmRzSTtpZmlBX2NAJm1DIXxQZVAzZGF8RChQK0BhcmRjIVot
VG45QzQ9KkY+Sl82CnplMWN6NF9jZFA8RSRRJns8ckdYZ21pe19BQ3c2fX5RdG9kcChJWSFDRWFi
cyl2IXJHRFdyLT59I2d2ZmM0a31ydAp6ayFFSzFwSTt0KnF2ZX09SWh0dUVaPUEoez5zTS02cCQ4
RXZMfng3e15HO2B4YCYtMGgzfTF3Tmd+fik0IyVTb30KemF5VWMhcXVqSnReeEB8Y1JwVjYySn4r
ZHUwVmJUWiRkQD01VWNvNnA3RChiQDc1RWtycWlodV5vU28zRyZVZEMjCnojI0hXdGE/UDQqZ3d9
WU5Eb3BjY2B2cl8zKjZXR2N8TTUxP2gybDcoM0tlP2dLa3g/VSt1e21rWShwT1QrWVRORAp6QmlD
bHR0I2JGfFNRQlRlTnlpfjlmQCZAbiVIVzc3QX1KeWIhWEdKPEUhcn1ibDJ3WUVYNUVTclgoYj9V
eyMoTy0KekFZI3JyMnk1RGNhUzc2PyYhIzRsPXNZKXhrYllANENpPHZeMWZGSX0jZ1c5NmgrOTBu
bzVZJVkxKzQ+ZiR8WjxuCnpuMTN9Mm9KNEtocnkkfjImUH40KERaRz9BPi0ycnB3NCpJfGpkbS1C
Vk9rKWUhZCZRVCghRnY9cj5nKWEmd2hBIwp6aElMO2xSJXVPSFAqdEBUUSZnZHgxV1JZRVlkYn41
PXpCSCNANXJFQkNwbDYqZlJJSmZXTzc+KnF7K3lLWkVqazcKelMqeC15WlEkd21zJSZ4PlRYanMj
ezJHJSgjTEEhMmUrU15SNDtlZDtSczl2fVowSTwtUDZUSn5kVFUoQ0o5cTx8Cnp7PlVnYzsyelB3
VXAreHI9N1NXIXJkKmFeNEhmZ3I/ISlYU2VhX0F+KVI3aVB6VGAzKWR+TEhnUld2UTZBaipLfAp6
PH1EdiQrZkptMzlCJkNfdCVQRVBNOTR1akYjKT4hPUhtSGtJQXBwWm5+cVdSXjV8SypOR0h6cyRf
SFBjM3pPU2IKenR2NnIjbkFscnYqQHFgMWZhZkxQZEJPNTFGfnorP1ROQklALXM8S0lzbmU8NGxJ
eSVOSVR9R2FNek4pcHRDZWVWCnorciRKTTRfKWMtVChydShGciRmJFJNbE13KE4lOHtwYldWJV4z
XnQyKip+a18ofD1ARHsmQEV2ZmBvUXlMK14rdgp6PU5qKlZqQWkme1ZYO1ItR3ltKiFuO0FfWkhf
O3JvaGR9T3tMbVRTVEohZSUlJUVIZ2VVKEhqXmU+ck9gWmF7OCUKenZ8QzZjWH1OfHZiPDhod0g4
N24mVk4zYzJSSmBNOFozOU5jQ0QlNWphWVUhTW4yUlFyUHYhTGctaWF8OUl5RlJ7Cnp0RjJQM1Bv
Iz47OTlnWWpkNyt6QkZiVDZ+V0s0bDFfdVd0KlplPHYtQm5SdVpGQTExQU13MiFRUH5PcHZSTUxM
Ugp6ZTMkJTUqYFFsPGB9UzZMQVBzTEpQKVRvbmd6czVhREJueWtOXyo2K2sqVmYobW9KaW1IX0Y3
P3hTO0tkMGQkOD8KejZwZjdBZ3socHR1T088T3c/NEV2SGsmR3dDUmJKVTQwcGMjRHV3a1pRWVl6
JSlUfE1Be29RelFWV094WFAhZGQyCnppdlZvQ2ZTSGV2Jno2blhuXyU2IXYybH1PbmRRO3hTSjdL
Q2NVdypEcXZpcishJnMkYj1GcTZHWE12Jn5Rck1kXgp6P2IhUGFNPGEyRytSMWZUeWBJNTI7Znop
JHYyTnV7RmAlZGxPaj9qfHhXPFh8RUlVailPbWp9eD9JbV9KIUwtMFoKemRYQ0p0YzRsVHw8SjR+
Y1cqJih2ZkY5ajRjbVlBZHt3TmR8O2I3O1UhM0pDN05OK18mPEo4eS1FYzBTTHBJRlgkCnpvekUm
UGFUbS1NakprbGFGYjdzeGdxWG5VPEx6e3Myd3wpNTt2dT87KiRHJVI8Q31PVnt1dHJwXil6ZDJK
cm1GeAp6O01xdF5gdiV6ZStiaWt6QE41JTJ0TldNT289cWk1aEdGP01wUjBBSy1RZ1FfYzBPUXVN
YCNyZ2h6Vm1GQkBXeWAKemA/MXBUaDNaUj9taCM8PTlSbCFIalRHckFPRHR2VTk1bHFfc3x6THRo
M3pMT1ckSihzR2QpSypYblUyPEhTOVpjCnp0NTVYZmo+b0p7SGg8fEJKaGlESktodWpVVlFhUSpq
NjItcFhhXmhOMXRHaTFEaExXeEtQUFNfSWl2VEloTTs5awp6djF2a2MmSWYjWjw5MXBuYHgpd2kh
UCtGN2d+aHA4ISZSOGAmVVlwdXNwNExjJilnMDMxd3U9c2pmOygmLWBCOD4KemRFYEBeYVUkX28m
K340WChtOCM7OHo9TX1EKVUjLSNNezMqJi1WYFdwNj15PWhnbGokRU56RFVqb2hncERBPXJFCnpV
eXlFLTdUTHQ/THpQeTdQRFpWZkd7I0RpY1RMI0NJbD12bUtHP2ZnUzl2M3R6SnV2b0A2Qmk2QTVJ
VndySD0+cgp6ME1lbHgmKkdWYHNWKVM9KzJkX0g3V3JzalZBOzVjOHBxOFpeeD5tZWd5WFR3T1la
fk5xfjtVdDheRyMjRit6O3IKemgmfmd+eDlDVThzKHJSc21pYy1AU3hWb25Acmd5OXw3PDV6JjRA
PCNfeEd5LVRMZ15IenhnUT5MSDJYajxmQGs2CnpXKChPQip9Q3A4dkhFUFB7MXxRO3QoZVl3d19v
b0FlbkRfeyteVCEqcTk3JCtaZ1NOUSVtejZzd3h3NGFBRlFscQp6Xll1ZnAqd1lfaDVKQ1dudVZE
JjhqTEZDWURLdWt8VCRjMWZiQHNXX2x+cG57aUlGcnJHdUlvbnA0Xz0ob0dQVTEKemhVZXFzMUVr
QCt4OX45bDhCMHIoPSE5NSNUWTR8QiFwVkdJI3IxfDc0YUc9azZ5KmJWa2hzUyhkbHtXQCtlVXxt
CnpfbF95emhqak0laDlfeThfTGVAST43bypuIWQ1bEthPzFASEZPXnZ+dHNtSXFxcFRnZkI4ZDBf
PzBeJm0xQHcyJAp6bnshSU1Ka0RxNjJWfnB1M0hAQmw4XyUlYTFHZDVJITV7bXZGSXYtY0BZKHll
czw4cngoM09XbExrPGI/LXl+WC0KekhIfT80Q19PZmtybF47PnNCb0hjRkRHZ2REcUlFfHZxXy1e
MXpvIX4+ZGtpJjltWipuMXJFemwkWmVrPkppJSsqCnpaKWJ7U1pFbz5kNj1mMUUwWWRab1R+Q1l6
I3FWNXJJUTQzfCR6Uk13QFBQVWNtVUJhO3FyfUM3d2s2b09SeiFjKQp6KDlpKGRud01hYVg/LWZa
aTFMKyVmWSFLWnJsVDVoI3Yoe21nNCRfIXpBNks2WDYzbipVfk4kIUZYTV8zYE4kZ0gKemVoaE1X
VXdrY3xgKk9CKVQoUm5LJD1zVjs5VipmYkJYUDU3RkZRSlFCNjt0NjBWblghTmlMa3NRRkh2e0BN
JHdrCnpSOHtZdSNHP31PJTJFfl80WV5MSCspbkA1b0hIcjJheGo1aG92MWA4PndpdXtNVG1Le1Uo
PkpacnQ0PCtBRGA5Nwp6VG1lI154XkspY147ejFqJmJDP0Y5N1EoUTdmM0w4b1hpT3gocW9EVyk8
dV50YytibkBKUSs9N1R4LV57UzFuJGkKenYxQFB4LWtGWUg9UFY+fXBTOE1fRT9yfUdPTGo9RHhf
VFBVRSUqbitDMSZzWWY0LVl7MXp4cX01MGkpcyNVU3VGCnpwO0MqVlVfcHFsT2lRMXw3cShIZ3h9
UHgmdVImWik5Yk81V2okLUxATnRUJSElKV49ZTlnUio/V2NRM2g3RElZNgp6JDloSiZoMStFQ3o9
bytQZWpzXklxcWhCe1pSWGhTKU0kTmR8NGo5d1hHeE5HLT9aVFpUMVF2NyhHJURUcGo0YDEKek1B
SEJYO1AoV0gmUFptaWdPa1czWnNzQzJlXz9EJGgwUSNQb3ImNnl6dHk/UGxvPE82bnZTeUM3bStV
YWV8KU9oCnpvYWJoPSVFe3IpP2AlXjR2Q0hafmVFclNuQjVUPG4oK3pCfjdEe0M1RGNfJF4tfXZ6
R18yNzklIU1+RyFqeWJPYQp6eG9TcCZIdnlKYGkwS295KGgwSGxVdDN0U2xhR1ZYVyt8TGNWejkx
TiRqSTAqZz9PQjUtWWpHRGIhKENzOD98VDIKektRWG9HNjtfZjlLfUtWcWxZSHZ9bk1JTGhVWT0o
cylOQn4qaGo8aitffHxLIyVRfStjXzN3VGZVMk5AbDQpQEJgCnp2PkI2b3lWdll6czhJRkZUKmdH
THt9enlIOWBzTHt5UVYkVHE1WFIzJn55Nz0zfH41I3ZwbDR8JGh9Nn08XjhTOQp6YVA7Znd0RFNX
RTEtQTdIKkdIN2xsRj4hfTVNTn4hajhpPHpLa1UqPjx7S19KNiZWfTxoPmVSOXl8aUNyVWQ4YlEK
emZFbyk9Qm9qK0NuO0E5USliak1ESmVNcWNuWE4lZz4oYSo/NSE5YGhxSWFxMylvUUw5YjRLe09s
SW1sUHZiQW1aCnpPJjFIRkdWamMkND0hQEB7QlNpZU8yYUZzREh8MEZFcG0lc2V0NXFMLVVNRXhC
VkcpZGkybjBSU1ozbHF1SCMjVgp6MGghWVN6S2l8P1VqQSNJMyQhYHRpe2xAS01yRH5Tc1pXZDdk
TXhRJShkQFI0S0NZRW95aU1jIXdiPjZfI0tGNn0KejBmZ3NRXiEydlcjPTdIUyM5akkkbj1OOWNK
ZFp6PWJSe1VBP2VRSF9RYnx1QXdRezIoZGFBO3NCd2l4Zkc1Ul49Cno8Nzl1XkRkQjckMURmQFN5
TCF3SS0jNnpnUzhLSFA+JnkoQFF0eE1vK15ma2Mwb0dITG53PDFpeWhXZEhNczlyWgp6Vn10SWgr
ZVNlakViamp2b0djeTdlcnA3WV92WHRwbWFxdz1gWnwja3BhVUU8dzxISW9IMnNVbiR+XkUqaEJK
el8KeiFRIzZXJUkkfnhyTmpCUnYqdGNFND5HKnsoKU1Qe1BocE0yPkMyJUB6cDRrOVp+RDd3UnFC
elpLYzs7ajs/Q1ZsCnp8M257c1UrQ1dCclRLSk5zbDRETlc2cj48Kz00b0xEen55TFI0cj1PXmhh
TE5rTVAtWD1UJnt2ek9EOSFpOC1lQAp6SnZyRXxyI317NXAzNylqdWYkYm8tWHwrdkB+YzFWbFU5
JX4tOGEmQm07eURnUW9eKXFPU15WWTNsSntLMzhYWGcKem8wP2BfRCVBcVZ3QjlTeVIpPUM8SnJ5
NShMeEAtQG1ocDtadlg2S0U9Sj5BRTs7USl1U2ZkeTFNTVA/LShGUTZDCnprXk9SNXo8aGZxYHRC
OG1BMT12QnZRMjB3Qn5eWUElTyFXPmpiMHVuanBfRS1SYXgzcDV5UGM+OEBhdCFrPH1mMAp6QUJ9
T2NYXkFWelJJaHMjMiklNnJvdjYpRjR0NUJHOVRUO0FhUEFWe3Q4KnU8dGpgfjRrRzxkaEdjUmFS
MXRpe28KekB8Q1ZHOWUoLWk4SnFDZFlnVTZmbDlxcCE/TmJ1PjJpbyVhWUNpPyVnY1FyPUlQTXJz
PnshJCl7QDllWWxJPGUlCno0VEAtS0l2SiN2KiVFbHE/Q30qOXtMd2s8NmBQNWI8ZF9pTyZCJSlT
Q3U1eUUpMkBhITF3NnhkJiRMYjZAbG5PNQp6dHd4cHs+U3ZaKzUmeGByJiVuKlRJXnMwez1jdz5O
dztyQXpwNGBgWkM2PVFaSGJ0ZUVnWUBXSmglenp3O0VpRkUKekZ5U0xvUkgxNE41JnY9KDEqPXEp
e1FWO3NEP0hySU0kZE85U049PkRXN2Y5RyhTMlpWayNkdUEmRTNUKXZmKjxHCnpAJCpYcTFFI183
eGxGWUA7bT49d3d8cmdpKk95fVBWKz1DbEJGWGJqaGMzUyVqO2B9Wi12MUt4V29DVzRrVi1KWgp6
Qn1BQWkodUpqMW1WNWlgOTErJTd6dUstcHNRR1gtc1E8NStpWTxvNjBRYUZAZjt6YENKLSZqUCtg
UDVXRUZ4QkEKemFAV0Y/dzdUSnV8Rj9LQl4hPyF2JUVpaHNTc0FgZUp9KkM5PF88SyQoYX15ViFq
OXdVPE5EOFYmRWwwS2NAOV5ACnpZV00jKGhFK04mXj90TlZ4djxDamJvUmREX0cofEhJRD4yV3lY
czNOanRyWmNqM3oqU0xJZSZnczFASmNVQn1nMwp6fElIbzk8TTNjQ25mNk50Wm0jdTswUio5e1Z5
NDFBJDNXQko9UUpHY1dzNjxYNGMqMFItYFFENEwxUnVKVUJ0d1YKeklXeV5wMHg9PnJUVl8hZUhA
Y14zSj9OPGZzbXM9SloqS2lJSjxIOH5UUF5MUHA2MHBCdWliaVpQQiR+USVEYStmCnpfWWVNYjhK
MGdZYHhrMmoxbjk3WD9VeiRXRD9lK1NYNFlASXZ5UUhQMEA9JlgoaUhHZSNMRnFlYlpYNX1Vbihe
Qgp6Wm9RbnZge0F5MU0kKz8zK211QWM9fTQkfXg8MkRBKm1nQ004OEMzbDl3SWg3ZDdyPD5HYk9S
PS1FMi1qaGtMcEsKeiVkI1pUSGQ9aUpwV1YtUmJ3VGpjVmIqTnRxcTdzaTxeVztWSXA1T2Q2NG9C
ZjNGZWxoRHVqPiVBNXRnNGZ0IW0oCnpSS1lMOUNEZEdTSD9DajVlKkVMO2FEUWpiYUo8KDA+RzN3
fUN8YTBDYlJeSj5yZENQYWhtdTxETnp4fE8/fWEyQwp6Zz1VeExKI3BiayorYlJSb2RabVdwPHtF
fiQ3LUkjPmM9MFMqIS1Fcit8RD5AbXZwMlJOTzN2KS1MJDU+P3h8N3AKejZpPFk4IVBXVTcmfU55
QzVGX1dka1JFR1hGcFNReD5JTHJoJEIhUkpPXjN1JFhEJGl8MndkYlJGfVA+YGEtVnx6CnpxWmd5
aGdaWTxWRGtSdWVkKEZ6K3N2X3dSSTxzd2QzZzBkLWRgemlYdHlyUUhHKz1RJGtNaENadFpPcF8p
RFlOWQp6b0M0fHEwJURlWGlUeUNBIzRweyp7b1dZaHlnYTt+a3pvNjg8OVgrQ2IwdHw+U3VsQEV1
JmRHUy1LcDhCKjZiTEMKektEdHFXOUNSRTIjSU9iKT4kZiFvUUttXnN7QiZmTXIoVzwtMmVObnt0
Yl5LamE8cyQ+TW1vYVlNK2RMfXtkYE4xCnpmTkBmP3BLZ1BnU3pGWllBVWU9U2lYaE9yNjdFSG1T
UGp7SmVSS1lCWiVlPH1xUUAkfjhpPiRCY24kdHMmI0thQwp6QnxmZT5SS2RBVlQ+fHQ7UFoxZGcw
e2lqcCE8QEh9S1R6YlMrWHFOVURmUjFKZjlROT4qLVREWVNNI21LMFQyYzQKel8hNXg7JVNyYDBL
T2J4fURjJDApcTVMVU95Y1U/WCRIMnF+aEdyaCQ7PkJvYlhfPntYRWhaYClmZT51UzY5YGpGCnp5
dClwPG5oRyEtMHg8NWVwWDlnQmcqZl97X15iXm0hQ2pESmJSfG1LX2s2ZzAtMj8tYVgjZlEpRVZu
XkdOTzFmfgp6QmV7OTk+KEJkJnRoOSo1X2kjYUhySUROaFQyPi01SSl8bWYlT3hnWFF9KVBoU3xo
a1lEbU0qPkpfeiQ2THtgfWsKekwrcyZqZ2VCeWEtJkhQcF5lcV9fZCFQbz8lRWt+S3U3VTJ1Vysp
RmtKVFI5N1U4Rio0ND4taj8zdlMpMllqOCVDCnp5dlFnWFdHMUpDKFpqK1pXaVd2a1U9QnYqPFM2
Ozg0MHZMSCg4N1VhM3UkUUlDNDx5aXp+eWpqMnh3RUY2U3JZRgp6XitReXg8Sm03YngmPmc2aFlZ
PkhLPy0/T3R5QUExQE18ITQzfUklVnI8YSlXMDVRVlUhdmY+bV87fWpEVG1OSn4KemoqPnJzYjZE
K3UtdzAzcj4mVSFNQC1HKVFnNGkoTERvP21zNEhqfkF1JCR0MjxhK3lkUS0kTGF0Zn5PV2w5eVFR
CnpVP25uV2BUVD9RUTVlQkIzQEdRZiU4Wip7PitwKmtITjUhbjtSNkkzaH57SVhxQ254PGNXaHZI
I2tgWTYpUz9eYwp6PVlKbGN1VHl7SHUqOTxPNW1YZF9sQUZOVTc8ejZFYUk0MGdsenYmVz1EYSND
TmdlbkNpYCE8RGI9dzRiVlc7K1oKenp4RSN9eGVRWDc1YiUkKDteSXdeUlY7empKWnR3NSRVNGYo
Slp0Syg3Ryg0VmdmNjFvcCMtZ0RvJFl5Q3tvQmo+CnpyOWkzYytmezR6aEFYbCRuJncxQU1Fcnho
ZFFOZEwjc2pgJTdZNTlUZVIwbElgMDMjV2U9PTI3KXNKZCNkI2hhawp6enlKaTJ2Kkt7TlNwYEl6
Z2t8cTZzSktYdzZ0bHtTZHcqUjlYaV55QnQ8fig/TFI8VFFGKl99ZFlxPiZYTlpaaEoKenB2YiVu
MjZCYHZTQXtedWhwRyhYYVRhfEF7cWs+Y2RiX0BpWilBZDF6ayF8M2VPTkI/JWlGRnVPP2lLTnI3
PSV7CnpNamEzVkxiaSlOKTxwNnUza1U4ISFQZVQ4SCl3WllmYVZIS1UzKipHVT47V2d7ezN8YnN4
cHdfMjQ5K0xnVWJkUQp6OFhDYGoxY0tJezFYVnsrTzQ3cHMxWTs1OzB3aU1LRFBXUlYlb3pVdW9l
ODZxLVJ5Pjg9SnZ7JTFoTzs9eXN2K0EKekh9SSs7YUZfO2RrUVc1dCZ5S2YkcHQoOUZ7VzV0VGNt
KGR7I1JrfVg4VnRSclVfXj0+I3VMISRIYH5MMjxSUDNMCnp3MWRkWHp5PTZNSFhXUDxHbHZxSkY+
IWU5VHV7PjtzZjlINWdLNlVieW10QTwzKjExSzdNS2xZMEVWSlc+UWxudwp6a1VTYSRFfSM0fS0/
Y1c3SnA/QkooS0wrJipYTWR0eCpOIUY9U3RfKjhDZCE7ejxLMWVWVF4lbSFEblAtejtMTD8KekxV
ZnNzYz50dDE2MUwrPWJSZUJmOVV+IyNqWHFHWCEoRCtENyhsPnF6OyE5Tk9iKWNyOUZKKHZvcFZf
MXpxR3VfCnopVV5pV1JsT2hhNnxPVT1YUSVhRmtmZn5iIV4lS35sOX5vMF9CNXc2SksjYHdSalZp
WXdNVG5DMVNqQUZFPk41IQp6Xm0qN29PNG5jPkVDfn40PGwrcTZ0NV5oO2VTKkJWN2UxOzQkUUtZ
UmgrN1R2IUB7fmpHcFQ+Py1qaT0pTHhfe3IKemFUQyZzR3tJUVpieF93bEl3fWc8S3d7K1cyeVJ2
MXhWZTJWTkVVI1pEKGc8SUJPMnhwSz58YEJPR2VebW5wKiRHCnoqSU5pOSUxQF9YP1k4eHRtfjl3
X1ZjXllCVT5ZZjtgSWpxTFZDcGp1YTtoanVZb01wYCRDQU88IU9mWSNQfCFBSwp6PVQmND9SUDRi
dEcpfiVpNmAoJVExVHt4e09QRX19NjU5IT48O0JHRW5OVnJDaz5UPUJzdFlUSEQ+TmRTYThVeloK
emFvSFgqJm9gKnZnS1ZWcGBIMnpVTGBQUzUxZzJtUj9SY19yRVF0Q0p3KGA5Xz1jMldAN1lFUllT
QWBiYmUjUVNBCnpqO3pKRjBKMCRyOCY2NncjNig0SHUxKDE9UzIocjk9b2NjTzBmYUowKzVEX25j
Vm16TmU0ZHxmNDZiKjgpRl5eIQp6dHtYeEt6bSlZNkFgZUk9KkJAVTN8OU1jRGtIMip4WSleO1oz
MkdMVE5wSUtpMD81Z1IoXnVqX1omaFZqPmplVTMKekhXYDtFJE9WRCUzJUsrOVJhPUFsMXY8K2hB
RHNhR2wqWWQ+NGRRdE92Wnx3NDAxbEFia2IyUzBMODl7JjFJPkpCCnpsUUdocjFDPCMwVDZhWGAt
WGg9fXlPRns8STdudXNJLUklPW0kfi07cSNRcmcpNj5JWkp3Y1FBKEhIfk1teGVxbQp6I1RiNndV
Tnt5QXtTOzdQQkxaKVd2JSF8dm9UUHVvbkZ5NTZNdH5vPT9RSmZBLTt5Z3hUOHxjSWcwS3Q5RU07
WkkKek5gazBtRkw7fEw+PFM2dWNrZHhFUz1KJDZmQytWcjkrbFdsKXAjRXRVRHc3dWVmcmVNJFk/
bS1XK2ZRblYlcH5mCnpEQjFxaXQoUTBJWnJvdiVjQ3JSdEkmWEB7dnBORHxhQUVoSVJhUGYjJCl4
QWIxYjdRWEpfVW1pMlhhUV97K0RtZQp6TXFMUUtgVUNEJHlqfE56NUVDUmxQKS1HYjJmLXpmR0st
IU1Qe0U5fWQ2a2plK1FST0EwMCFlbTVDSGlyVEs/RyMKek5aT0VHZnJhQEQzeHZ0d2A8NUpWcVAo
PVVTcDw9a28leUZoS09kYH1BfTMyMVJLNUUlMHBeQSg+fXJkeTF7YiVnCnpLJlMhWVpHSlNte1N5
YHhFQjBfakV0ZDYzOVlKRk5DMmFLJjI3e1lXcTRGUkBlKlQ5NF55JDtoMEUhVTlGNClCbQp6NmY+
a2BoYTM7MGU0MjA3LUJeWUREcFFjalZPOVZjYEVFPlhZYCQoJCMpbDhhS3NrVWskcmtjV1lCWEZW
KkBaZFIKekkqOXZfR3tDJX5QSm50M2gyR1Y0Yi1jVmwyaFBHMExQMkZwNyt7UnFne3BtKyQydkFN
bik3MlRIaG9TfFNpRkdDCnpJV0xlK2hsakZDQyZUbXhWbFc7ZVgoXylKQnA0Z0dtVHJiVmZJY3Qx
YmBhP2pDPi1HYTh1biVfNl5nP0ZaV0FVWQp6JWVvc2w0cnBFMER+Xi0lYmM1KURxeWBaUG5TMlpz
N1UwZmUtM2MleWpGb19tSz9FU0ElcWNmQSlVfV9tIWQpd1gKekpLKF5lWkdDLTxiMEwpbHFWKDU2
SFA3OC1rRTdqclotYEFXPm9jI1hzQjBOO2FjfUN8K2JiV1RMUDk8bzFHIWxyCnpiNVhwdyZFanZZ
TE5HJUNXTXt4UiZFTGZjZlYrZGt1TFM4MDdOYGxSdkBWYnlMM3xlaWRhI29yeTVVTWA7RyVhWAp6
ZjI0LVZGLWJtfilkRiFDej51cnU5NEwtUCY+OGxGTGo2Y25QbWR8QTEjenomNkcmeXQwUTQoZU19
JHE5JiM9b0sKemZMJn1tR1M4eFgmUWpyaHEhNWNrRW4xJnhwe0oheVV0P0lrYkcjM0QlPCNkM0Rg
c3V5MHZyaVpCOCZ1TiE9ZDF2CnpGaj1ud0JfT01tZ09WOWl0U3YrPHZTYW58eE96fkMkXiRIZkoo
Wm5UMFVhcmE4e1RKUzcmME9fM0llbntwKFItPAp6bip0P0ZtfHRAYUBPe1cjdFhQMzkwMEBaSzRI
IT1BY04oeTlJN0ZOeDl+dXAxLW1aTChQVDZ5UlRSciFZPEp6UHIKelpAdiZ7NzllK3JHRTN5MFot
O0F5YmNBJWpDeT1vPkVGTVU+RylWMUdOUmZzdXdEdmNNPSNoKE1ZXzdCNmVScmdECnpwQ1hHUUVH
Mm9xSFY4fjNDXjxHKSMrKDZkTEstdER3YnNSKFQrOVN0bD5YYXJudWFHVEkoaDwtT28tTWM2dnFY
Owp6RlZTK21fdEJwZUBJcnZJdmhMZXo8bGdkc3J+UyUyKTdTUVNsTkBAbDZTRiROe1UxPjt4SiEh
STZJJStjNilYd1QKejF5KkEoKUNnZEd1aTx0Qm5QNEkkOVJ6UXxlRWgwRUE/aWowLUZiWF95cnxg
fndvNHorei03SzUhNVNBQnRJfVdBCnpKR2FhTEFROzRpMSRleFclTHZGRllRYTExcnotZ0NVcS0h
S2hjak18MGZeZ2RUITY/WkFAXmxJKWRmcFVmTzcmQAp6PGsyREFHN2hZJihHVXNCIXVsa0MtRSpW
XmdZfDwzMm0qdURjbzR8O0pnOTQrcFVILTNIcXN7ayZ2UE0yanQxfDkKejNLKiE2M1E3WE5yc149
I2d1SyZgTX18NX1EN1p9TSFfb3Vhakt+SCtGYSM7V1Z7MVVXeX1kbykzP3NHRWVZalM0Cno3TFNU
T2Ilc0YqZExsNVQhYGZzTGFNNztkJiZXK35vcUVGbS1yTjQpYkd1IUtfS0duSWIrUUB4Y0xEeDtg
VG9EMgp6YEBoRj98TGQqKXxNYkBCPDErbWdzNCp5JS0kNT5LTEQ1Q3V4OXxeIWJldHFaO3Btakg2
cGNlVURMO3xGUmxhQGEKS1JeQVBxQEJhWkhhPC09YwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmls
dGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW9mZi1heGlzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1m
aWx0ZXItYmx1ci1vZmYtYXhpcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIxMzc4OTE3OTFm
ZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQwOGJkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0
ZXItYmx1ci1vZmYtYXhpcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0ZXJzL2JhY2tn
cm91bmQtZmlsdGVyLWJsdXItb2ZmLWF4aXMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vZmYtYXhp
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVhNGRmNDQzYmYxOTk0ZGYwY2Q0YjRiZTg4MGMwZmUyMGVkZmQ0
ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21w
b3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb2ZmLWF4aXMuaHRtbApAQCAt
MCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPjxoZWFkPgorPHRpdGxlPkJhY2tn
cm91bmQgZmlsdGVyIGJsdXIgdGVzdC48L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
KyAgLmNvbXBvc2l0ZWQgeworICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwor
ICB9CisgIC5ncmVlbiB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgIH0KKyAgYm9k
eSB7CisgICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogMjAwcHg7CisgIH0KKyAgI2JsdXIgeworICAg
IC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDsKKyAgICAtd2Via2l0LXRyYW5z
Zm9ybTogcm90YXRlWigtMTVkZWcpIHJvdGF0ZVkoOTBkZWcpIHJvdGF0ZVgoNDVkZWcpIHRyYW5z
bGF0ZSg3MHB4LCA2MHB4KTsKKyAgfQorPC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKyAgZnVuY3Rpb24gc2V0Qmx1cigpIHsKKyAgICB2YXIgYmx1ck5vZGUgPSB3aW5k
b3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JsdXInKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldEJhY2tncm91bmRCbHVyT25Ob2RlKGJsdXJOb2RlLCAyKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgIH0KKworICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHNldEJs
dXIsIDApOworICAgIH0KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUp
OworICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cis8IS0tCisgICBUaGlzIHZlcmlm
aWVzIHRoYXQgdGhlIHBlcnNwZWN0aXZlIG9mIHRoZSBjbGVhciBsYXllciAod2l0aCBibGFjayBi
b3JkZXIpIGRvZXMgbm90IGluZmx1ZW5jZSB0aGUgYmxlbmRpbmcgb2YgdGhlCisgICBncmVlbiBi
b3ggYmVoaW5kIGl0LiBBbHNvIHZlcmlmaWVzIHRoYXQgdGhlIGJsdXIgaXMgY29ycmVjdGx5IGNs
aXBwZWQgaW5zaWRlIHRoZSB0cmFuc2Zvcm1lZCBjbGVhciBsYXllci4KKy0tPgorPGRpdiBpZD0i
b2JqZWN0IiBjbGFzcz0iY29tcG9zaXRlZCBncmVlbiIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRl
OyBsZWZ0OjUwcHg7IHRvcDo1MHB4OyB3aWR0aDoyMDBweDsgaGVpZ2h0OjIwMHB4OyI+PC9kaXY+
Cis8ZGl2IGlkPSJibHVyIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MzBweDsgdG9w
OjMwcHg7IHdpZHRoOjI0MHB4OyBoZWlnaHQ6MjQwcHg7IGJvcmRlcjoxcHggc29saWQgYmxhY2s7
Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2NvbXBvc2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1v
dXRzZXRzLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2NvbXBv
c2l0aW5nL2ZpbHRlcnMvYmFja2dyb3VuZC1maWx0ZXItYmx1ci1vdXRzZXRzLWV4cGVjdGVkLnBu
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hOGZmZDBjMjhmNmJlNTNiYjMyZjk5ZjNhNTVlYzcyN2FmYzVhOTU5CkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1OTE2CnpjbWVITGAmVXpFKTs8RT5Qe2N+PmpqTnlJcjQ+
fF4xVklRK3QxdkF9UjE2I2dBeiVPezBWODVpMHMqbk09IWAoVwp6UnpSK1BFclkyaTdsTjFzMHdL
VypzU1N+OWxFTSo/TW84cnRFYD1tcU9xaz5KNTE4KilYWGRBfik/UjE1PndXazAKej9FTzRALSNp
YGA7JFhrbzlzbUdgJjtONHhCbW1mWTBEdWorIVVtMGVeeDtRNCg5ZyUwaikwZGE9TXBIaUcpNC01
CnpqaT5seHo0dXxgeXVBPGpgSkJPR19zMDk3ayVZYXpgfWY4anBrTjwlUEVHXkJkajk4IXw5dDk3
Zzw7QENmJHBjRwp6dWUrU1RrMW89eEN2K0tSUURTN3hqU1A8P0N2UUpeUSktMmk/RGUtaklIJnI4
P2JwZDJlTHN5YVBnQFRGZWluQWwKejY1dUwrc3tqQlYqe3VmLS1JM2I+RTFXPDhoX2hKKmNwUXln
MCRnOXwzMCZRcXlBKVd2e2VBdChXYkJkMkdZdjhyCnp6aTItaFpgSG5pTzxyPFV4d3JOSUB6aF4o
ZSFDZipxbmArfXRlUn1LVDY8Jnc7NjhqVW10WlZob0QxUUlVYUs9Rgp6Yyo0UT9pJW57dCpqUUBX
TDleNWNnNFE5P142MEo/UnV7TDl2TlhQI1FnQXgweT42JiZXNztqXnFVMD98dXVPQEEKenZnZyZu
PGQpcj1LJVFgPGdAQzlfdkxyJi00Sj1mSWwyUk9GWSFOVz4zeHBWVWZ7XylWdVNqfEI3dmp0XmNg
SlR6CnpzVEJgV1U5OSotMDtpQDlAYzZZWG15cCotSyVfeEdLKCRHWFRSZEshTW5kJUdqUUo9JiR6
QDxAciZKbCklXz1fQwp6KH1gPEh6aVktdUlyRXNwelQoOVRzfikoc0ZoSklBK0E8OSNVQzFVTjtf
TjBOPnxKa2FWfHNvdG98fHh1IUNMNFkKekpEXn01Nn5yTGFfTzhVSCFjMnNoc09Je09he1k9Xmko
NzB3XmlaendJbGxAUzxLJWRDYzsqYTw7c1A8bkQ+ZHZaCnpfVDBIa0dQU3k1OGFEeEpJMD52dCt5
dF5OdH5NbEViemNEZClFRlBAd1pKYzY3fVlKQm03M3d+UW84RX5kJEZHZQp6dT9yPVV4LT1sV28h
Q3c3WWEwdzl1VXtVTHBLdzhWdVhrVDd3SF54MnVTLSRkVG4jZG08cUYmUl5LbDgyVF9EKikKemJL
cUs0cEE0SnhwTj1GYCpvTnx9JTRKLVBwcUxlRHpfdEJXS0xrc0lRISlrQS1zQ2pyR2ZOSjJlcX5E
fElScVQjCnp3YWpiMTEpNTZHQCZUd08zSX5+bCVKZWZ1P1VILUNqNz8pMW5GfF9fSEIoYnBPZm8y
MGBBfCVLVipjO1haUCM4Tgp6bWlLcCRhYWRrUyFleUdjcngmOE95PVktSE90ZG5TSm8kUGQtJWEx
cmVfbT49c3B+JnI3WklwZzk7TCFMKUIhKDkKenNJZShTUFNKVVVKVURXWlhwMW40MWUqNSN1KWdE
b2smKV5DO2cyT2FrYUVrTHd0TDVpKHZEMXlXXn1WZ2AzNGQ+CnpgU2RwRE0rcU4xYkdgYjFvTW9F
VipNQ3FGaGZ7QX0qcHlJZExwISlERFI0Vmp5ckxHRkBwe0N7QjJaTFpCM3spQQp6M0E+MG4lfT1X
biVkN01JTXpoZnBlaWUtc0ZsOSNncUhMKDNSSVJQWUhvS2xOPXlyWF4tRX5tS3VsZ0VmJWJ8JHMK
eiNKbGlJWUdCYzQmUWVEMShuRmRBVGNxS2N2QCZ2fmMlXjNRJEBzJDRScnZnb3J0OGBufDBicThT
U2AjMy1JSW00Cnp4V1VmVmd9NWZVam1QLTZ4cn1FMV53ZGN8Y0sxQSR0Zi1nQjhnfnYpe2s9TjZH
eVBfSGtHZTk3bysyNylwKU5qdQp6KiZRUjZAWENpdTk2UjE5emdtP3VgeEtiYEdmSUVqNCl4YWhG
O2JIMm9AMmt6QGYpXnJgLTR4VF5oOzJfTitSIyUKemBvWVFkSmFIRk0qZjt0bnRzc0xZP3JPVXoo
YEZiND1nKDAjb3dZZ2lXU2NFNXZ9U3JJR1BrY28hVEdKQzE0RiR6Cnp4c0BCdkYrRHVvNU9lN1A1
I2E/NyUlPzxjM1NiZFVLNkk4M24ra1owcTcrZ1NqTUgxRFElRllSeCVyMDwkVm1NNwp6V2B2bGk4
a3c9ck9ibTRNdG1qeDwmSzY0aTN1X0NgJmlTX2YhRkkwV2RCXk48cTlYTXZmLXwzdEVEQDQjVG5P
YlQKemJlMnpednJxKENgeH5IYVppK2hxVDtwIzdeRnItZ2AxN3Vqal5oMSlKRm1ebGhJVy1+WkdJ
NHVxRGloZDxURHpgCnp4PWhtdk80SndHXkE5VkVaeWtHQTc+VGpjVV5OQSRMMzs5aUh1QX5eZEl4
WWZ4V1J8VSZuS2lEWSpKc1coVHtMZQp6Nk9mLUBjN3RyWkdCcktuOFZWVzQ3OCRVa0BpPm4rIVF4
JHhSYmY0eXZjfCN2K0hUMH1KQlUkVysoPUZkK04rT0YKenVRbTZESUslNyZPRiopRkY1MWFnRyRx
SG4/KjY1RDt2U1JhbzMtZ3cjZGFfdW9zcG9CSyZSREVxRUhsKkc1UGw4CnpPcEBPa2V3SDBATGxQ
ZyRRI15UbXVUKkZFPnohaUBjT1hORWhBcnNeQlNqVXJocnZpU0hMJnJ3O3IrKl98MktSTwp6TUgk
IyljJFlEPkh3bFpuISN8YjZhcDgpSW1FJGFlKDFtRzhsUXE9VFJhTTwqPFNwenw1ZlB9ODlpZWMm
MChgXmgKemxNXjJyYV8rN3Yjck5GVCpXVm1wLWRgZlEqZFEoNV9JR09JdDclRz5AS3h7Y3dzOzF7
ZVFTcSlpYWloc3kjMHYzCno4TFM7eldYY1pEMX5mcj4rcCpWRUdVTClvd2lucnJUVmcmeDdjPC13
NipRQytUbElBckBKLXE/eGorNXJkODFEVwp6YX54dVlGMnNkUXIqYEJ8c2dIUFZBclNPfHBmYndP
byZHa1V4eFViO04hQnVlMHt9YkhLRVdXM1prX2owRnZtQysKemF3dnRReGhTaylVKz49ejc4K1pi
P3h6VGJpaGtnbT93dDd6dnB4TkQ5ISFAZ0hRZn1lb0A+UVJaTEIkX2B8KXJ7Cnp4R313TWJ+MG1E
Z3x8OE1HaHFrRncpaWEwPG1EX2pPQyVFQSEzSG5hN0hobEFURHMoRmtaI0B5NzIzdFV8MzxwfAp6
LVdyRGcrPjRWaWY8JT9VKUZXRkpHKG55Vm1+OTZwPjFrQFlLZTM8JEp+MklgV3hBWms8NkVwbmd7
ZSQ0UWZ7N34Kekw4KkhpemspazdkcDxmZllwflYkYDBkQG48RjtPYSkhdXlfMjtjdG9abyNnPkhG
WWokZzFZSEEkSDcjPGRKPkooCnpTLSNjI24mdmttUlp0X0g/X1htb2Nla2N8V3Fhc303UWJrZF5O
MCUoKllKZmRkckhvKCQkYGByXzVIWn0pT3NGMQp6TGE2eVUqWXJTU1Vick0lS0p5fUlCZHBMRkBi
ZkZzPH1vN283al58SyFnVTt4YDw7e3Mwdzw3MSNOO3podT1+X0sKemNDPk4yZyokeik4TWh4ZjA0
Jl4kMW10SllleF89NGAlcytwQjtBSjwkYkY2I0tUe0o9KXFDTVopWD9pbSt8YVZaCno4bzlvIW12
UyRvRUlRQ35SMnNIaHhgK3p1SzAhZzFzNWZBfWdJTU9HLS1OdU9pWVVwaGp2T1dVSF9pZG0zPUNX
Swp6MzdyaGp5fSpzOF8qaHBsbUxCcjYoTD5fO2c/X2pjWXlMOXo7Tl8xdDIqcE8mKko5QWU7UjNf
aTlxV01XPSRUYFQKemJLWjkrXmk0U19OTldTczQmbWhSVXpwUGBOMlVkfUFMRTQlYWBMYT09Mz5t
JXVYPVZPc3dZMWY3KCU/RCpwYHxXCnpGQk1KTyhRckdBekR9eGVsSXRTSkp2JEp7YGk4YkZMaShZ
KXFQaV9STlZ8WkFmOXhXYnJ4anI1LXpkcCZHUTQ0Qgp6aTNLekBsRG91UEljMWFyWl5lJndTc1Nz
R2YpTyUjOGV4K2lmVjtXfXh5RXolZWU7RGJyfWdMUmc/JGlKTXByfHEKelg+MjNQZjxlNEZgZX4y
diN4TXFeJkUkUDBHaW52ciZHMWZ6ZFFsWj5Ga1JqV14lentoIW9MI0YhQDYlSE57cHpvCnozVXAm
SS0rIzUobCZjWUN1Sz4xYVM5NiZWWEJ6NV5WQCkyNWJ5WTt9YE9LNF9GYzg3JHxKcnlnKjNoQWlH
amBxIwp6VU5YQlhkY1I9USNnSjYxZXZMWDtBd1FUPHlCUHlWcj1RX0QzeTdUNHY/TX4yVHlqcjRh
ME5wJXU+SG9UdiFpITQKemNQeXw1Nil5VXZQWlhhSDw3Snh4b0MzODYxNSliJnM7TyhqRmM+bnlx
YkNWXyl4NHE2Skt9Ni00NE08MW5hM353Cnp1Q1k5cClaNFAwN1BUfHJzNmJPKHJvKVkhUV57anZJ
SVYmbjUqPWlAMkYkdll0bWdMWT4jVkMyY300SnVNJmNOPwp6cGZBY0RRQG8oKnJ6QjAqOEF2Mmo1
OSlGV201SFNeUXZOfiZ2R3lAOWZqOVhfTj5UVm0mIzZUPGF2YlV7O2FPXkYKenRPfT5VQlRqY3Ru
YjlhKjtCfl95MmM7ZUlMbGBAQ1hvTE0tVF8mQ1RJT1chcXpoZUlOMjBPWEY7WDxxem4ocWQhCnpS
SCEqaXVYYV9Pczhfe0UjVnlKNUZgayZKb1B+ckQxWjFaJlgqMih8QCN3ZypWZVJhS2VEaCpfZnc1
PUxpbU0lfAp6WUI+YTlWYitVeFBIWT1iPFBJaH1EK0BTTHZWMUpsc0J2UXUzaUNSV3doOHpuUz0t
SHoqQ0lgWE1gV0cwYzhacTcKekhNVnxWbXAjOTkkKXcrSTdjaTdHcGtOSk1SdWw2ZiNySX4tZEY2
dnhJKG1tKjAkblFWRHt7KEA+MDROLSomLU9OCnpmVD1JbmdYWXZsT3Bje1lSdSE+Jj4zWk08aW4l
d1dKe2hVempPd3NkKGBqQW1aM0IoUyVPI3xnUXtLVFNAcGE7Jgp6SHRNWndwKT4tYE0ockgoRnJ1
TmRYXyFyM2l4UlJkN28rdTRHbE5XWW84NE41OHokSVVvQjw8YWItMEV3ZmczRVMKekk1KlI2cUpQ
a0dSMWtLc1BVRU45RCMqPyEhezt3JjNlWWw0ajglaWQ1ajspIVAwYGVrOUFAK3BjRT9FaG0rPFZe
Cnohe3I9RSh7P2c0KCRvKmFiQTlHWTVPJCVKJEVwQHMwWFpjQ2JRMVBQRllPMk1vVlgqczFJbXdV
Tz4kfmxkbiEjbAp6cVduXl5RZSNySllXdldNcHx+LX1yWWlqbT4rK0ZEN15wYkIoNT5UdXp2akVm
I1l0cXolUC1OJjk8OSpUbH1yMVgKei1XQTRnND1DNWdJbTM7JDhZaUVDIzdMeXsyJUteSEk2Q3NB
cip+PllhZUxDWj5eQTBMQXRPdDBPIW0qZ1BVeU1ACnpXX3Bxa3J+X19MVmQofWU5SDNRQ3RwQFg0
JDd9ZXpYPkpOSVooekxLQWkyKE4+JkdVIyl+PlRXLW1+bmc8MypMYwp6M0BJdXY7UzcxfHt0N2BT
KVlRfWVeQ0RzeUs5XjkpaWA8TmkjVU1+czkqOElKJGphbT5pbUZpT2N8KCNJPnlfNlYKemZ1WiVi
eE57MWVRfk0+KVNQeFVuTlN8fT80PVR3SSFfdjVxaU5oeVBERXVAYyZtWn1+PkBNX1cpPitzKyRn
JkZuCnp2WEU9Sk0pT19rUVVKKjJFWTlvIWZYU3FQd01mdUp8SCUmVVB9PT9iWSM5RD80YTU3dDly
YGJKQDkkPnN6dTNKYAplKnVCWUZBfHk8OXszJlI8MTZfOW1wQzFXMyU+T2pAK0NLcEpWSVR3bQoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNl
dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRp
bmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVyLW91dHNldHMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9m
aWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21w
b3NpdGluZy9maWx0ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXItb3V0c2V0cy5odG1sIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5k
LWZpbHRlci1ibHVyLW91dHNldHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODc5M2YyNTY5MGM4NDE2YjJh
ZTY1NjdlNTQwODE0MmUwMDdkOGM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1ibHVy
LW91dHNldHMuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPjxo
ZWFkPgorPHRpdGxlPkJhY2tncm91bmQgZmlsdGVyIGJsdXIgb3V0c2V0cyB0ZXN0LjwvdGl0bGU+
Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAuY29tcG9zaXRlZCB7CisgICAgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgIH0KKyAgLmdyZWVuLWJvcmRlciB7CisgICAgYm9y
ZGVyOiAxMHB4IHNvbGlkIGdyZWVuOworICB9Cis8L3N0eWxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorICBmdW5jdGlvbiBzZXRCbHVyKCkgeworICAgIHZhciBibHVyTm9kZSA9
IHdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmx1cicpOworICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0QmFja2dyb3VuZEJsdXJPbk5vZGUoYmx1ck5vZGUsIDEwKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgIH0KKworICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgIHdpbmRv
dy5zZXRUaW1lb3V0KHNldEJsdXIsIDApOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIH0KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KHRydWUpOworICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPCEtLQorICAgVGhlIGdy
ZWVuIGJvcmRlciBpcyBvdXRzaWRlIHRoZSBsYXllciB3aXRoIGJhY2tncm91bmQgYmx1ciwgYnV0
IHRoZSBiYWNrZ3JvdW5kIGJsdXIgc2hvdWxkIHVzZSBwaXhlbHMgZnJvbSBvdXRzaWRlCisgICBp
dHMgbGF5ZXIgYm9yZGVycywgdXAgdG8gdGhlIHJhZGl1cyBvZiB0aGUgYmx1ciBlZmZlY3QuIFNv
IHRoZSBib3JkZXIgc2hvdWxkIGJlIGJsdXJyZWQgdW5kZXJuZWF0aCB0aGUgdG9wIGxheWVyCisg
ICBjYXVzaW5nIHRoZSBpbnNpZGUgb2YgdGhlIGJvcmRlciB0byBiZSBibHVycmVkLgorICAtLT4K
KzxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQgZ3JlZW4tYm9yZGVyIiBzdHlsZT0icG9zaXRpb246YWJz
b2x1dGU7IGxlZnQ6NTBweDsgdG9wOjUwcHg7IHdpZHRoOjIwMHB4OyBoZWlnaHQ6MjAwcHg7Ij48
L2Rpdj4KKzxkaXYgaWQ9ImJsdXIiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDo1OXB4
OyB0b3A6NTlweDsgd2lkdGg6MjAwcHg7IGhlaWdodDoyMDBweDsgYm9yZGVyOjFweCBzb2xpZCBi
bGFjazsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRlci1i
bHVyLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy9maWx0
ZXJzL2JhY2tncm91bmQtZmlsdGVyLWJsdXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTllYzNmYWY2YjJl
MTMyNmMyZDg5MzM5M2NkMDcwNmVmY2MzMWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvZmlsdGVycy9iYWNrZ3JvdW5kLWZpbHRl
ci1ibHVyLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD48aGVh
ZD4KKzx0aXRsZT5CYWNrZ3JvdW5kIGZpbHRlciBibHVyIHRlc3QuPC90aXRsZT4KKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CisgIC5jb21wb3NpdGVkIHsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTog
dHJhbnNsYXRlWigwKTsKKyAgfQorICAuZ3JlZW4geworICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworICB9Cis8L3N0eWxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBm
dW5jdGlvbiBzZXRCbHVyKCkgeworICAgIHZhciBibHVyTm9kZSA9IHdpbmRvdy5kb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYmx1cicpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0QmFja2dyb3Vu
ZEJsdXJPbk5vZGUoYmx1ck5vZGUsIDIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgfQorCisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgd2luZG93LnNldFRpbWVvdXQoc2V0Qmx1
ciwgMCk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
fQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIH0KKzwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzwhLS0KKyAgIFRoZSBncmVlbiBib3ggaXMgZW50aXJl
bHkgYmVoaW5kIGEgbGF5ZXIgd2l0aCBiYWNrZ3JvdW5kIGJsdXIsIHNvIGl0IHNob3VsZCBhcHBl
YXIgYmx1cnJlZCBvbiBpdHMgZWRnZXMuCisgIC0tPgorPGRpdiBjbGFzcz0iY29tcG9zaXRlZCBn
cmVlbiIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjUwcHg7IHRvcDo1MHB4OyB3aWR0
aDoyMDBweDsgaGVpZ2h0OjIwMHB4OyI+PC9kaXY+Cis8ZGl2IGlkPSJibHVyIiBzdHlsZT0icG9z
aXRpb246YWJzb2x1dGU7IGxlZnQ6MzBweDsgdG9wOjMwcHg7IHdpZHRoOjI0MHB4OyBoZWlnaHQ6
MjQwcHg7IGJvcmRlcjoxcHggc29saWQgd2hpdGU7Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>