<?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>79145</bug_id>
          
          <creation_ts>2012-02-21 13:31:44 -0800</creation_ts>
          <short_desc>[chromium] Make opaque paint tracker aware of SkCanvas layers</short_desc>
          <delta_ts>2012-03-01 22:47:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>reed</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>561180</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-21 13:31:44 -0800</bug_when>
    <thetext>The current tracker ignored layers entirely. But layers can be used to apply things like alpha. So we make it know about layers, and reapply the opaque rect in a given layer into the next layer down when restore() is called, using the paint/clip/transform applied to that layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561194</commentid>
    <comment_count>1</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-21 13:54:49 -0800</bug_when>
    <thetext>The following layout tests were rebaselined in a previous change where we tracked an opaque white paint. Turns out that was in a SkCanvas layer, and the original baselines match again after this CL. So I&apos;m including the original baselines again.

compositing/overflow/clip-content-under-overflow-controls-expected.png
compositing/scrollbar-painting-expected.png</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561217</commentid>
    <comment_count>2</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-21 14:15:27 -0800</bug_when>
    <thetext>Image clipping is done via a layer, so we can remove the special case code around image clipping in OpaqueRegionSkia.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561295</commentid>
    <comment_count>3</comment_count>
      <attachid>128062</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-21 15:37:26 -0800</bug_when>
    <thetext>Created attachment 128062
Patch

Ooh ok, comment #2 was a lie. The layout tests are right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561331</commentid>
    <comment_count>4</comment_count>
      <attachid>128062</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-21 16:10:27 -0800</bug_when>
    <thetext>Comment on attachment 128062
Patch

This looks like Stephen&apos;s territory to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561973</commentid>
    <comment_count>5</comment_count>
      <attachid>128062</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-22 07:30:43 -0800</bug_when>
    <thetext>Comment on attachment 128062
Patch

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

&gt; Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp:261
&gt; +    AffineTransform restoreTransform = restoringToRootLayer ? transform : AffineTransform();

This is a little confusing to me.  Shouldn&apos;t this be the other way around (root layer = empty transform, other = m_opaqueRegionTransform)?  or does m_opaqueRegionTransform always represent the root layer transform?

&gt; Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp:271
&gt; +    if (!deviceClip.isRect())
&gt; +        return;

Are you going to need to handle non-rect regions at some point?  Or does WebKit never create them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561978</commentid>
    <comment_count>6</comment_count>
      <attachid>128062</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-22 07:38:08 -0800</bug_when>
    <thetext>Comment on attachment 128062
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp:261
&gt;&gt; +    AffineTransform restoreTransform = restoringToRootLayer ? transform : AffineTransform();
&gt; 
&gt; This is a little confusing to me.  Shouldn&apos;t this be the other way around (root layer = empty transform, other = m_opaqueRegionTransform)?  or does m_opaqueRegionTransform always represent the root layer transform?

You&apos;re right I should change this. We store the root layer in &quot;chromium layer&quot; coordinate space. I thought I&apos;d need to transform other canvas layers but I don&apos;t so I should store them all in the same space. Thanks.

&gt;&gt; Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp:271
&gt;&gt; +        return;
&gt; 
&gt; Are you going to need to handle non-rect regions at some point?  Or does WebKit never create them?

I don&apos;t expect we&apos;ll bother to go there, at least any time soon. WebKit can (probably?) create them but the complexity of dealing with them gets much larger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563410</commentid>
    <comment_count>7</comment_count>
      <attachid>128542</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-23 13:25:23 -0800</bug_when>
    <thetext>Created attachment 128542
Patch

The work to pop a layer is a bit more (extra mapRect() call), but all opaque rects are stored in the target coordinate space for consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563417</commentid>
    <comment_count>8</comment_count>
      <attachid>128542</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-23 13:33:57 -0800</bug_when>
    <thetext>Comment on attachment 128542
Patch

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

OK with me, assuming enne is ok with it.

&gt; Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp:268
&gt; +    // We have a rect in target space, move it to device space.
&gt; +    if (!transform.isInvertible())
&gt; +        return;
&gt; +    SkMatrix targetToDeviceTransform = transform.inverse();
&gt; +    if (!targetToDeviceTransform.mapRect(&amp;opaqueLayerRect))
&gt; +        return;

Nit:  Could the cons of the LayerIter above be moved below these early-outs?  Not a big deal, but kind of nice to early-out as early as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563428</commentid>
    <comment_count>9</comment_count>
      <attachid>128549</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-23 13:46:20 -0800</bug_when>
    <thetext>Created attachment 128549
Patch

nit done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563453</commentid>
    <comment_count>10</comment_count>
      <attachid>128549</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-23 14:01:37 -0800</bug_when>
    <thetext>Comment on attachment 128549
Patch

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

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

I don&apos;t understand this change and the SkPictureCanvas updater change? Why is this needed with this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563460</commentid>
    <comment_count>11</comment_count>
      <attachid>128549</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-23 14:05:40 -0800</bug_when>
    <thetext>Comment on attachment 128549
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/BitmapCanvasLayerTextureUpdater.cpp:99
&gt;&gt; +    canvasPainter.skiaContext()-&gt;setTrackOpaqueRegion(false);
&gt; 
&gt; I don&apos;t understand this change and the SkPictureCanvas updater change? Why is this needed with this patch?

Ah! Because the canvasPainter has a save() and restore().
The save() is done in the constructor, so setTrackOpaqueRegion() is not true, and the tracker doesn&apos;t know about it.
The restore() is done in the destructor, and if the tracker tries to execute it, then it sees unbalanced save/restore. It can work but i put an assert to catch this. Turning off tracking here makes any clean up not cause unbalance with the opaque tracking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563552</commentid>
    <comment_count>12</comment_count>
      <attachid>128549</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-23 15:29:41 -0800</bug_when>
    <thetext>Comment on attachment 128549
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/BitmapCanvasLayerTextureUpdater.cpp:99
&gt;&gt;&gt; +    canvasPainter.skiaContext()-&gt;setTrackOpaqueRegion(false);
&gt;&gt; 
&gt;&gt; I don&apos;t understand this change and the SkPictureCanvas updater change? Why is this needed with this patch?
&gt; 
&gt; Ah! Because the canvasPainter has a save() and restore().
&gt; The save() is done in the constructor, so setTrackOpaqueRegion() is not true, and the tracker doesn&apos;t know about it.
&gt; The restore() is done in the destructor, and if the tracker tries to execute it, then it sees unbalanced save/restore. It can work but i put an assert to catch this. Turning off tracking here makes any clean up not cause unbalance with the opaque tracking.

This is just a drive-by opinion, but that seems really fragile to have to case about whether flags were true at various points in time during save/restores.

Is it reasonable to instead maybe not assert and early-out, or maybe perform some logic in all cases to be consistent, or maybe to set the right value up front prior to calling save() in the first place and disallow changing it at the wrong time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563561</commentid>
    <comment_count>13</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-23 15:33:05 -0800</bug_when>
    <thetext>Well, I was just thinking about a shorter answer to this:

We want to track what is done in paintContents() only. Leaving tracking on after makes us track things we&apos;re not interested in.

The code does not break if you restore() more than you save(). But I put an assert since it&apos;s not valid. GraphicsContext::restore() has LOG_ERROR when this happens there. So maybe just take the assert out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563654</commentid>
    <comment_count>14</comment_count>
      <attachid>128594</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-23 16:26:46 -0800</bug_when>
    <thetext>Created attachment 128594
Patch

ok no longer need the setTracking(false).

PlatformContextSkia will always keep track of layers so that no matter when you enable tracking, you are in a valid state. The tracking is pretty much a no-op when tracking is not on, other than append/remove from vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565927</commentid>
    <comment_count>15</comment_count>
      <attachid>128594</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-27 13:26:32 -0800</bug_when>
    <thetext>Comment on attachment 128594
Patch

Thanks! LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567897</commentid>
    <comment_count>16</comment_count>
      <attachid>128594</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-29 13:57:49 -0800</bug_when>
    <thetext>Comment on attachment 128594
Patch

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

&gt; Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp:236
&gt; +    m_opaqueRectStack.append(SkRect::MakeEmpty());

It seems like m_opaqueRect should be made empty here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567994</commentid>
    <comment_count>17</comment_count>
      <attachid>129530</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-29 15:19:47 -0800</bug_when>
    <thetext>Created attachment 129530
Patch

Avoid the whole didSave/willRestore business, and the whole stack thing. Use whatever layers are on the SkCanvas directly when tracking a draw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567999</commentid>
    <comment_count>18</comment_count>
      <attachid>129530</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-29 15:23:38 -0800</bug_when>
    <thetext>Comment on attachment 129530
Patch

Me likey!  Much simpler.  Will leave for enne to take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568040</commentid>
    <comment_count>19</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-29 15:58:59 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 129530 [details])
&gt; Me likey!  Much simpler.  Will leave for enne to take a look.

I don&apos;t understand enough about SkCanvas layers to review the changes in this latest patch.  This is all you, Stephen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568054</commentid>
    <comment_count>20</comment_count>
      <attachid>129530</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-29 16:08:43 -0800</bug_when>
    <thetext>Comment on attachment 129530
Patch

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

&gt; Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp:265
&gt; +            if (!targetRect.intersect(SkIntToScalar(clipBounds.fLeft), SkIntToScalar(clipBounds.fTop), SkIntToScalar(clipBounds.fRight), SkIntToScalar(clipBounds.fBottom)))
&gt; +                return;

Hmmm.. are you sure you want to early-return here?  It seems like we won&apos;t be marking the rect either way if any one of the layers has non-intersecting bounds.  Is that intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568058</commentid>
    <comment_count>21</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-29 16:12:07 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 129530 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129530&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp:265
&gt; &gt; +            if (!targetRect.intersect(SkIntToScalar(clipBounds.fLeft), SkIntToScalar(clipBounds.fTop), SkIntToScalar(clipBounds.fRight), SkIntToScalar(clipBounds.fBottom)))
&gt; &gt; +                return;
&gt; 
&gt; Hmmm.. are you sure you want to early-return here?  It seems like we won&apos;t be marking the rect either way if any one of the layers has non-intersecting bounds.  Is that intentional?

Yeh, it means the draw is being clipped out of existence so there&apos;s nothing to track. It&apos;s similar to the clip check above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568065</commentid>
    <comment_count>22</comment_count>
      <attachid>129530</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-29 16:15:56 -0800</bug_when>
    <thetext>Comment on attachment 129530
Patch

OK then.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568344</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-29 22:12:41 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 129530:

fast/workers/storage/use-same-database-in-page-and-workers.html bug 50995 (author: dumi@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568346</commentid>
    <comment_count>24</comment_count>
      <attachid>129530</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-29 22:13:44 -0800</bug_when>
    <thetext>Comment on attachment 129530
Patch

Rejecting attachment 129530 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ed at Tools/Scripts/update-webkit line 164.

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 9
ate pixel count for frame rate control

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.

Full output: http://queues.webkit.org/results/11776188</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568643</commentid>
    <comment_count>25</comment_count>
      <attachid>129702</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-03-01 07:13:25 -0800</bug_when>
    <thetext>Created attachment 129702
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568645</commentid>
    <comment_count>26</comment_count>
      <attachid>129702</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 07:17:19 -0800</bug_when>
    <thetext>Comment on attachment 129702
Patch for landing

Rejecting attachment 129702 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/11757475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568678</commentid>
    <comment_count>27</comment_count>
      <attachid>129702</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 08:27:05 -0800</bug_when>
    <thetext>Comment on attachment 129702
Patch for landing

Rejecting attachment 129702 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/11776478</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568798</commentid>
    <comment_count>28</comment_count>
      <attachid>129702</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 11:50:19 -0800</bug_when>
    <thetext>Comment on attachment 129702
Patch for landing

Rejecting attachment 129702 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/11766573</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568841</commentid>
    <comment_count>29</comment_count>
      <attachid>129735</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-01 13:10:17 -0800</bug_when>
    <thetext>Created attachment 129735
Patch

Try to bypass this cq bot..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569298</commentid>
    <comment_count>30</comment_count>
      <attachid>129735</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 22:47:27 -0800</bug_when>
    <thetext>Comment on attachment 129735
Patch

Clearing flags on attachment: 129735

Committed r109514: &lt;http://trac.webkit.org/changeset/109514&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569299</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 22:47:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128062</attachid>
            <date>2012-02-21 15:37:26 -0800</date>
            <delta_ts>2012-02-23 13:25:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79145-20120221183725.patch</filename>
            <type>text/plain</type>
            <size>28603</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWMzYTM3OGRkOTY0MjBj
ZmFiMTUwZGJlMzg0MTk1MzAyYmJkOTJhZS4uMzZmNGI0ZTk0NjdhMTgwMjljZGUyYTU2ODU5ZGRi
MDIwYzNkYWU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTAyLTIxICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBvcGFxdWUgcGFpbnQgdHJhY2tlciBhd2FyZSBvZiBTa0NhbnZhcyBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgb3BhcXVl
IHBhaW50IHRyYWNrZXIgaWdub3JlZCBTa0NhbnZhcyBsYXllcnMgZW50aXJlbHkuIEJ1dAorICAg
ICAgICBTa0NhbnZhcyBsYXllcnMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgdGhpbmdzIGxpa2UgYWxw
aGEuIFNvIHdlIG1ha2UgaXQKKyAgICAgICAga25vdyBhYm91dCBsYXllcnMsIGFuZCByZWFwcGx5
IHRoZSBvcGFxdWUgcmVjdCBpbiBhIGdpdmVuIGxheWVyIGludG8KKyAgICAgICAgdGhlIG5leHQg
bGF5ZXIgZG93biB3aGVuIHJlc3RvcmUoKSBpcyBjYWxsZWQsIHVzaW5nIHRoZSBwcm9wZXJ0aWVz
IG9mCisgICAgICAgIHRoYXQgbGF5ZXIuCisKKyAgICAgICAgSW1hZ2UgY2xpcHBpbmcgaXMgZG9u
ZSB2aWEgYSBsYXllciwgc28gd2UgY2FuIG5vdyBhbHNvIHJlbW92ZSB0aGUKKyAgICAgICAgc3Bl
Y2lhbC1jYXNlIGNvZGUgYXJvdW5kIGltYWdlIGNsaXBwaW5nIGluIFBsYXRmb3JtQ29udGV4dFNr
aWEgYW5kCisgICAgICAgIE9wYXF1ZVJlZ2lvblNraWEuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBQ
bGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9j
dWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1Vw
ZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJl
bmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9y
bVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09w
YXF1ZVJlZ2lvblNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6
YXNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQpOgorICAgICAgICAo
V2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkU2F2ZUxheWVyKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6d2lsbFJlc3RvcmVMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaDoKKyAgICAgICAg
KE9wYXF1ZVJlZ2lvblNraWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxh
dGZvcm1Db250ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRT
a2lhOjpzYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmJlZ2lu
TGF5ZXJDbGlwcGVkVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRT
a2lhOjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmFw
cGx5Q2xpcEZyb21JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lh
OjpkaWRTYXZlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNvbnRleHRTa2lhOjp3aWxsUmVzdG9yZUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoKKyAgICAgICAgKFBsYXRmb3Jt
Q29udGV4dFNraWEpOgorCiAyMDEyLTAyLTIxICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRpbWVsaW5lIGhhbmdzIG9uIGEg
cGFnZSB3aXRoIGRlZXAgY2hhaW4gb2YgbmVzdGVkIGV2ZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggOGUyOTg2YWNlMGE3NWIzMGU1NzU3ZmE3MzQ0NjBjNmRmZGQ5ZTE5Mi4uNGUx
NGY0NWY1MDVmMmY0NDFlNmM3YThlOGIwYWRiOWRhMjUxZWIzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMi0yMSAgRGFuYSBKYW5zZW5zICA8ZGFu
YWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIE1ha2Ugb3BhcXVlIHBhaW50
IHRyYWNrZXIgYXdhcmUgb2YgU2tDYW52YXMgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAx
Mi0wMi0yMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbVjhdIFdlYiBJbnNwZWN0b3I6IHNldCBicmVha3BvaW50L3BhdXNlIGRvZXNuJ3Qgd29yayB3
aGVuIHdvcmtlciBpcyBpbiBhIHRpZ2h0IGxvb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMDBhM2U0NjNiODU5MzFiMDRlYmMw
NWEwMTllY2Q5NDRhNmI1ZjQ0MS4uZjQyYzA4NDAyYWEwYTVjYTU0ZWNmMTgyY2ZmMTRlNzAzNGRj
Y2NhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKQEAgLTk2LDYgKzk2LDcgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKIAogICAg
IGlmICghbGF5ZXJJc09wYXF1ZSkKICAgICAgICAgKnJlc3VsdGluZ09wYXF1ZVJlY3QgPSBjYW52
YXNQYWludGVyLnNraWFDb250ZXh0KCktPm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpOworICAgIGNh
bnZhc1BhaW50ZXIuc2tpYUNvbnRleHQoKS0+c2V0VHJhY2tPcGFxdWVSZWdpb24oZmFsc2UpOwog
fQogCiB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMzVjZDM1YWQzYzA0NjE2ZTUzZDRh
MWJjMWU1Y2Y4ZWJlZTI4ZWE4Ni4uODc3NTk0NTgwMjFhYTQ0Y2NmN2UzMmE3MzlmY2QyYTU1OGJk
ZDAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKQEAgLTYxLDYgKzYxLDcgQEAgdm9pZCBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFIK
IAogICAgIGlmICghbV9sYXllcklzT3BhcXVlKQogICAgICAgICAqcmVzdWx0aW5nT3BhcXVlUmVj
dCA9IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKKyAgICBwbGF0Zm9y
bUNvbnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24oZmFsc2UpOwogfQogCiB2b2lkIFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmRyYXdQaWN0dXJlKFNrQ2FudmFzKiBjYW52YXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBo
aWNzQ29udGV4dFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAppbmRleCA0Zjc5Y2ZiMGI1ZTY5YzVjNTRlNzNiZDBl
MmNiYTlhMzk1YWY2NWViLi4wOWZjNWE2YzkxZmExOGFlY2Q3OTQ3NWI1MjQyYWU5MzBlMzgzMzNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBo
aWNzQ29udGV4dFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKQEAgLTI4MSwxMiArMjgxLDE0IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3Bh
Y2l0eSkKICAgICAgICAgJmxheWVyUGFpbnQsCiAgICAgICAgIHN0YXRpY19jYXN0PFNrQ2FudmFz
OjpTYXZlRmxhZ3M+KFNrQ2FudmFzOjprSGFzQWxwaGFMYXllcl9TYXZlRmxhZyB8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNrQ2FudmFzOjprRnVsbENvbG9yTGF5
ZXJfU2F2ZUZsYWcpKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+ZGlkU2F2ZUxheWVyKCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCkK
IHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CisgICAgcGxh
dGZvcm1Db250ZXh0KCktPndpbGxSZXN0b3JlTGF5ZXIoKTsKICAgICBwbGF0Zm9ybUNvbnRleHQo
KS0+Y2FudmFzKCktPnJlc3RvcmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKaW5kZXggMjFm
YWNhYWRiOGIxODkzNmY0MjgyNDk0ZDUyZDI0NzBkYWM3N2RjMC4uZDVkOTQxMGJmMzI2ODE3NjM1
OTliZDFiYjU0OGMxZTY0OGZiYTJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwCkBAIC01MSw2ICs1
MSwxMCBAQCBPcGFxdWVSZWdpb25Ta2lhOjp+T3BhcXVlUmVnaW9uU2tpYSgpCiAKIEludFJlY3Qg
T3BhcXVlUmVnaW9uU2tpYTo6YXNSZWN0KCkgY29uc3QKIHsKKyAgICBBU1NFUlQobV9vcGFxdWVS
ZWN0U3RhY2suaXNFbXB0eSgpKTsKKyAgICBpZiAoIW1fb3BhcXVlUmVjdFN0YWNrLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKKwogICAgIC8vIFJldHVybnMgdGhlIGxhcmdl
c3QgZW5jbG9zZWQgcmVjdC4KICAgICBpbnQgbGVmdCA9IFNrU2NhbGFyQ2VpbChtX29wYXF1ZVJl
Y3QuZkxlZnQpOwogICAgIGludCB0b3AgPSBTa1NjYWxhckNlaWwobV9vcGFxdWVSZWN0LmZUb3Ap
OwpAQCAtMTQ3LDcgKzE1MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwYWludElzT3BhcXVlKGNv
bnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwID0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChjb25zdCBQbGF0
Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSwgY29uc3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQYWludCYgcGFpbnQsIGNvbnN0IFNr
Qml0bWFwKiBiaXRtYXApCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KFBsYXRm
b3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBjb25zdCBTa1JlY3QmIGZpbGxSZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCwgY29uc3QgU2tC
aXRtYXAqIGJpdG1hcCkKIHsKICAgICAvLyBBbnkgc3Ryb2tpbmcgbWF5IHB1dCBhbHBoYSBpbiBw
aXhlbHMgZXZlbiBpZiB0aGUgZmlsbGluZyBwYXJ0IGRvZXMgbm90LgogICAgIGlmIChwYWludC5n
ZXRTdHlsZSgpICE9IFNrUGFpbnQ6OmtGaWxsX1N0eWxlKSB7CkBAIC0xNjksNyArMTczLDcgQEAg
dm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHRT
a2lhKiBjb250ZXh0LCBjb25zdCBBZmYKICAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwg
ZmlsbFJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKIH0KIAotdm9pZCBPcGFxdWVS
ZWdpb25Ta2lhOjpkaWREcmF3UGF0aChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tQYXRoJiBwYXRoLCBj
b25zdCBTa1BhaW50JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgo
UGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFu
c2Zvcm0sIGNvbnN0IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAg
U2tSZWN0IHJlY3Q7CiAgICAgaWYgKHBhdGguaXNSZWN0KCZyZWN0KSkgewpAQCAtMTg4LDcgKzE5
Miw3IEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3QgUGxhdGZvcm1D
b250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmCiAgICAgfQogfQogCi12b2lkIE9wYXF1ZVJl
Z2lvblNraWE6OmRpZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIFNrQ2FudmFzOjpQb2ludE1vZGUg
bW9kZSwgaW50IG51bVBvaW50cywgY29uc3QgU2tQb2ludCBwb2ludHNbXSwgY29uc3QgU2tQYWlu
dCYgcGFpbnQpCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQb2ludHMoUGxhdGZvcm1D
b250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIFNr
Q2FudmFzOjpQb2ludE1vZGUgbW9kZSwgaW50IG51bVBvaW50cywgY29uc3QgU2tQb2ludCBwb2lu
dHNbXSwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAgaWYgKCFudW1Qb2ludHMpCiAgICAg
ICAgIHJldHVybjsKQEAgLTIxNyw3ICsyMjEsNyBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRp
ZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQQog
ICAgIH0KIH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBQ
bGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSwgY29uc3QgU2tSZWN0JiBib3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBP
cGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250
ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBib3Vu
ZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGJvb2wgb3BhcXVlID0gcGFpbnRJc09w
YXF1ZShwYWludCk7CiAgICAgYm9vbCBmaWxsc0JvdW5kcyA9IGZhbHNlOwpAQCAtMjMxLDcgKzIz
NSw1NSBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdCb3VuZGVkKGNvbnN0IFBsYXRm
b3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0CiAgICAgfQogfQogCi12b2lkIE9wYXF1ZVJl
Z2lvblNraWE6OmRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgcmVjdCwgY29uc3Qg
U2tQYWludCYgcGFpbnQsIGJvb2wgZHJhd3NPcGFxdWUsIGJvb2wgZmlsbHNCb3VuZHMpCit2b2lk
IE9wYXF1ZVJlZ2lvblNraWE6OmRpZFNhdmVMYXllcigpCit7CisgICAgbV9vcGFxdWVSZWN0U3Rh
Y2suYXBwZW5kKFNrUmVjdDo6TWFrZUVtcHR5KCkpOworfQorCit2b2lkIE9wYXF1ZVJlZ2lvblNr
aWE6OndpbGxSZXN0b3JlTGF5ZXIoUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAgQVNTRVJUKCFtX29wYXF1ZVJlY3RT
dGFjay5pc0VtcHR5KCkpOworICAgIGlmIChtX29wYXF1ZVJlY3RTdGFjay5pc0VtcHR5KCkpIHsK
KyAgICAgICAgbV9vcGFxdWVSZWN0ID0gU2tSZWN0OjpNYWtlRW1wdHkoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIFJlc3RvcmUgdGhlIHRvcCBvZiB0aGUgc3RhY2sgYmFjayBh
cyB0aGUgY3VycmVudCBvcGFxdWUgcmVjdCwgYW5kIHNhdmUgdGhlIHJlY3QgZm9yIHRoZSBsYXll
ciBiZWluZyByZXN0b3JlZAorICAgIC8vIHNvIHdlIGNhbiBmaWd1cmUgb3V0IGhvdyBpdCBjb250
cmlidXRlcyB0byB0aGUgbmV3bHkgY3VycmVudCBsYXllci4KKyAgICBTa1JlY3Qgb3BhcXVlTGF5
ZXJSZWN0ID0gbV9vcGFxdWVSZWN0OworICAgIG1fb3BhcXVlUmVjdCA9IG1fb3BhcXVlUmVjdFN0
YWNrLmxhc3QoKTsKKyAgICBtX29wYXF1ZVJlY3RTdGFjay5yZW1vdmVMYXN0KCk7CisKKyAgICBp
ZiAob3BhcXVlTGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9v
bCByZXN0b3JpbmdUb1Jvb3RMYXllciA9IG1fb3BhcXVlUmVjdFN0YWNrLmlzRW1wdHkoKTsKKyAg
ICBBZmZpbmVUcmFuc2Zvcm0gcmVzdG9yZVRyYW5zZm9ybSA9IHJlc3RvcmluZ1RvUm9vdExheWVy
ID8gdHJhbnNmb3JtIDogQWZmaW5lVHJhbnNmb3JtKCk7CisKKyAgICAvLyBHZXQgdGhlIGxheWVy
IHRoYXQgd2lsbCBiZSBwb3BwZWQgb2ZmIHRoZSBzdGFjay4KKyAgICBTa0NhbnZhczo6TGF5ZXJJ
dGVyIGl0KGNvbnRleHQtPmNhbnZhcygpLCBmYWxzZSk7CisKKyAgICAvLyBBcHBseSB0aGUgbGF5
ZXIncyBjbGlwICh3aGljaCBpcyBpbiBkZXZpY2Ugc3BhY2UpCisgICAgY29uc3QgU2tSZWdpb24m
IGRldmljZUNsaXAgPSBpdC5jbGlwKCk7CisgICAgaWYgKGRldmljZUNsaXAuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFkZXZpY2VDbGlwLmlzUmVjdCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgU2tJUmVjdCBjbGlwQm91bmRzID0gaXQuY2xpcCgpLmdldEJvdW5kcygpOwor
ICAgIGlmICghb3BhcXVlTGF5ZXJSZWN0LmludGVyc2VjdChTa0ludFRvU2NhbGFyKGNsaXBCb3Vu
ZHMuZkxlZnQpLCBTa0ludFRvU2NhbGFyKGNsaXBCb3VuZHMuZlRvcCksIFNrSW50VG9TY2FsYXIo
Y2xpcEJvdW5kcy5mUmlnaHQpLCBTa0ludFRvU2NhbGFyKGNsaXBCb3VuZHMuZkJvdHRvbSkpKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSBoYXZlIGEgcmVjdCBpbiBkZXZpY2Ugc3BhY2Us
IGJ1dCBkaWREcmF3UmVjdCgpIGV4cGVjdHMgYSByZWN0IGluIHNvdXJjZSBjb29yZGlhbnRlcy4K
KyAgICBTa01hdHJpeCBmcm9tRGV2aWNlU3BhY2U7CisgICAgaWYgKCFjb250ZXh0LT5jYW52YXMo
KS0+Z2V0VG90YWxNYXRyaXgoKS5pbnZlcnQoJmZyb21EZXZpY2VTcGFjZSkpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIWZyb21EZXZpY2VTcGFjZS5tYXBSZWN0KCZvcGFxdWVMYXllclJlY3Qp
KQorICAgICAgICByZXR1cm47CisKKyAgICBkaWREcmF3UmVjdChjb250ZXh0LCByZXN0b3JlVHJh
bnNmb3JtLCBvcGFxdWVMYXllclJlY3QsIGl0LnBhaW50KCksIDApOworfQorCit2b2lkIE9wYXF1
ZVJlZ2lvblNraWE6OmRpZERyYXcoUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgcmVjdCwgY29uc3QgU2tQ
YWludCYgcGFpbnQsIGJvb2wgZHJhd3NPcGFxdWUsIGJvb2wgZmlsbHNCb3VuZHMpCiB7CiAgICAg
U2tSZWN0IHRhcmdldFJlY3QgPSByZWN0OwogCkBAIC0yNDksOCArMzAxLDYgQEAgdm9pZCBPcGFx
dWVSZWdpb25Ta2lhOjpkaWREcmF3KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQs
IGNvbnN0IEFmZmluZVQKICAgICAgICAgaWYgKCF0YXJnZXRSZWN0LmludGVyc2VjdChTa0ludFRv
U2NhbGFyKGRldmljZUNsaXAuZkxlZnQpLCBTa0ludFRvU2NhbGFyKGRldmljZUNsaXAuZlRvcCks
IFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mUmlnaHQpLCBTa0ludFRvU2NhbGFyKGRldmljZUNs
aXAuZkJvdHRvbSkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIWNvbnRl
eHQtPmNsaXBwZWRUb0ltYWdlKCkuaXNPcGFxdWUoKSkKLSAgICAgICAgZmlsbHNCb3VuZHMgPSBm
YWxzZTsKIAogICAgIC8vIEFwcGx5IHRoZSB0cmFuc2Zvcm0gdG8gdGhlIHRyYWNraW5nIHNwYWNl
LgogICAgIFNrTWF0cml4IGNhbnZhc1RvVGFyZ2V0VHJhbnNmb3JtID0gdHJhbnNmb3JtOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdp
b25Ta2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJl
Z2lvblNraWEuaAppbmRleCA0NWIwNjkwMDQyYTY5OGE0Y2EwMDNkM2U4NTBlZThkNGMzNjc5OTZk
Li44NTg5YjczNGJlNDI0NTUwMmRhMDE0YzYzZTU5MTg1YzQ0ZDY5YzAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNr
aWEuaApAQCAtNTMsMTcgKzUzLDI0IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcmVzdWx0aW5nIG9w
YXF1ZSByZWdpb24gYXMgYSBzaW5nbGUgcmVjdC4KICAgICBJbnRSZWN0IGFzUmVjdCgpIGNvbnN0
OwogCi0gICAgdm9pZCBkaWREcmF3UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYsIGNvbnN0
IFNrQml0bWFwKik7Ci0gICAgdm9pZCBkaWREcmF3UGF0aChjb25zdCBQbGF0Zm9ybUNvbnRleHRT
a2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tQYXRoJiwgY29uc3QgU2tQYWlu
dCYpOwotICAgIHZvaWQgZGlkRHJhd1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgU2tDYW52YXM6OlBvaW50TW9kZSwgaW50IG51bVBvaW50
cywgY29uc3QgU2tQb2ludFtdLCBjb25zdCBTa1BhaW50Jik7Ci0gICAgdm9pZCBkaWREcmF3Qm91
bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYpOworICAgIC8vIEZJWE1FOiBtYWtlIGFsbCB0
aGUgUGxhdGZvcm1Db250ZXh0U2tpYSogaW50byBhIGNvbnN0IHBvaW50ZXIgd2hlbiBTa2lhIGZp
eGVzIExheWVySXRlcidzIFNrQ2FudmFzKi4KKworICAgIHZvaWQgZGlkRHJhd1JlY3QoUGxhdGZv
cm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNv
bnN0IFNrUGFpbnQmLCBjb25zdCBTa0JpdG1hcCopOworICAgIHZvaWQgZGlkRHJhd1BhdGgoUGxh
dGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUGF0aCYs
IGNvbnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRpZERyYXdQb2ludHMoUGxhdGZvcm1Db250ZXh0
U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIFNrQ2FudmFzOjpQb2ludE1vZGUsIGludCBu
dW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWludCYpOworICAgIHZvaWQgZGlk
RHJhd0JvdW5kZWQoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYs
IGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmKTsKKworICAgIHZvaWQgZGlkU2F2ZUxheWVy
KCk7CisgICAgdm9pZCB3aWxsUmVzdG9yZUxheWVyKFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGRpZERyYXcoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVj
dCYsIGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZpbGxzQm91bmRzKTsK
KyAgICB2b2lkIGRpZERyYXcoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdzT3BhcXVlLCBi
b29sIGZpbGxzQm91bmRzKTsKICAgICB2b2lkIGRpZERyYXdVbmJvdW5kZWQoY29uc3QgU2tQYWlu
dCYsIGJvb2wgZHJhd3NPcGFxdWUpOwogICAgIHZvaWQgbWFya1JlY3RBc09wYXF1ZShjb25zdCBT
a1JlY3QmKTsKICAgICB2b2lkIG1hcmtSZWN0QXNOb25PcGFxdWUoY29uc3QgU2tSZWN0Jik7CiAK
KyAgICAvLyBBIHN0YWNrIG9mIG9wYXF1ZSByZWN0cyBmb3Igd2hlbiB0aGUgdW5kZXJseWluZyBj
YW52YXMgaGFzIG11bHRpcGxlIGxheWVycy4gVGhlIGN1cnJlbnQgbGF5ZXIgaXMgYWx3YXlzIHJl
cHJlc2VudGVkIGluIG1fb3BhcXVlUmVjdC4KKyAgICBWZWN0b3I8U2tSZWN0PiBtX29wYXF1ZVJl
Y3RTdGFjazsKICAgICBTa1JlY3QgbV9vcGFxdWVSZWN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0
U2tpYS5jcHAKaW5kZXggYzMyM2EwZDdlZmZiM2RjNmQ5MTM4ZDgxZTk3MTE5Y2NkYmUxM2Y2Yi4u
ODQxN2VhYTk3YTgxYzdhZWE0M2EwZWI5NjlmNTNjZWIwNzk5NTVjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29u
dGV4dFNraWEuY3BwCkBAIC0yMjAsNiArMjIwLDcgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lh
OjpzYXZlKCkKIAogICAgIC8vIFNhdmUgb3VyIG5hdGl2ZSBjYW52YXMuCiAgICAgY2FudmFzKCkt
PnNhdmUoKTsKKyAgICBkaWRTYXZlTGF5ZXIoKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNvbnRleHRT
a2lhOjpiZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LApAQCAt
MjQyLDYgKzI0Myw3IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6YmVnaW5MYXllckNsaXBw
ZWRUb0ltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwKIAogICAgIGNhbnZhcygpLT5zYXZlTGF5
ZXJBbHBoYSgmYm91bmRzLCAyNTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PFNrQ2FudmFzOjpTYXZlRmxhZ3M+KFNrQ2FudmFzOjprSGFzQWxwaGFMYXllcl9TYXZl
RmxhZyB8IFNrQ2FudmFzOjprRnVsbENvbG9yTGF5ZXJfU2F2ZUZsYWcpKTsKKyAgICBkaWRTYXZl
TGF5ZXIoKTsKICAgICAvLyBDb3B5IG9mZiB0aGUgaW1hZ2UgYXMgfGltYWdlQnVmZmVyfCBtYXkg
YmUgZGVsZXRlZCBiZWZvcmUgcmVzdG9yZSBpcyBpbnZva2VkLgogICAgIGNvbnN0IFNrQml0bWFw
KiBiaXRtYXAgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Yml0
bWFwKCk7CiAgICAgaWYgKCFiaXRtYXAtPnBpeGVsUmVmKCkpIHsKQEAgLTI2MywxNSArMjY1LDEx
IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6Y2xpcFBhdGhBbnRpQWxpYXNlZChjb25zdCBT
a1BhdGgmIGNsaXBQYXRoKQogICAgIGNhbnZhcygpLT5jbGlwUGF0aChjbGlwUGF0aCwgU2tSZWdp
b246OmtJbnRlcnNlY3RfT3AsIHRydWUpOwogfQogCi1jb25zdCBTa0JpdG1hcCYgUGxhdGZvcm1D
b250ZXh0U2tpYTo6Y2xpcHBlZFRvSW1hZ2UoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0YXRl
LT5tX2ltYWdlQnVmZmVyQ2xpcDsKLX0KLQogdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpyZXN0
b3JlKCkKIHsKICAgICBpZiAoIW1fc3RhdGUtPm1faW1hZ2VCdWZmZXJDbGlwLmVtcHR5KCkpIHsK
ICAgICAgICAgYXBwbHlDbGlwRnJvbUltYWdlKG1fc3RhdGUtPm1fY2xpcCwgbV9zdGF0ZS0+bV9p
bWFnZUJ1ZmZlckNsaXApOworICAgICAgICB3aWxsUmVzdG9yZUxheWVyKCk7CiAgICAgICAgIGNh
bnZhcygpLT5yZXN0b3JlKCk7CiAgICAgfQogCkBAIC0yNzksNiArMjc3LDcgQEAgdm9pZCBQbGF0
Zm9ybUNvbnRleHRTa2lhOjpyZXN0b3JlKCkKICAgICBtX3N0YXRlID0gJm1fc3RhdGVTdGFjay5s
YXN0KCk7CiAKICAgICAvLyBSZXN0b3JlIG91ciBuYXRpdmUgY2FudmFzLgorICAgIHdpbGxSZXN0
b3JlTGF5ZXIoKTsKICAgICBjYW52YXMoKS0+cmVzdG9yZSgpOwogfQogCkBAIC01OTUsOCArNTk0
LDEwIEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6YXBwbHlDbGlwRnJvbUltYWdlKGNvbnN0
IFNrUmVjdCYgcmVjdCwgY29uc3QgU2tCaXRtYXAmCiAgICAgU2tQYWludCBwYWludDsKICAgICBw
YWludC5zZXRYZmVybW9kZU1vZGUoU2tYZmVybW9kZTo6a0RzdEluX01vZGUpOwogICAgIG1fY2Fu
dmFzLT5zYXZlKFNrQ2FudmFzOjprTWF0cml4X1NhdmVGbGFnKTsKKyAgICBkaWRTYXZlTGF5ZXIo
KTsKICAgICBtX2NhbnZhcy0+cmVzZXRNYXRyaXgoKTsKICAgICBtX2NhbnZhcy0+ZHJhd0JpdG1h
cFJlY3QoaW1hZ2VCdWZmZXIsIDAsIHJlY3QsICZwYWludCk7CisgICAgd2lsbFJlc3RvcmVMYXll
cigpOwogICAgIG1fY2FudmFzLT5yZXN0b3JlKCk7CiB9CiAKQEAgLTYyOSw0ICs2MzAsMTYgQEAg
dm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBTa1JlY3QmIHJl
Y3QsIGNvbnN0IFNrUGFpbnQmIHBhaW4KICAgICAgICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd0Jv
dW5kZWQodGhpcywgbV9vcGFxdWVSZWdpb25UcmFuc2Zvcm0sIHJlY3QsIHBhaW50KTsKIH0KIAor
dm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWRTYXZlTGF5ZXIoKQoreworICAgIGlmIChtX3Ry
YWNrT3BhcXVlUmVnaW9uKQorICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWRTYXZlTGF5ZXIoKTsK
K30KKwordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjp3aWxsUmVzdG9yZUxheWVyKCkKK3sKKyAg
ICBpZiAobV90cmFja09wYXF1ZVJlZ2lvbikKKyAgICAgICAgbV9vcGFxdWVSZWdpb24ud2lsbFJl
c3RvcmVMYXllcih0aGlzLCBtX29wYXF1ZVJlZ2lvblRyYW5zZm9ybSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgKaW5kZXggYjMwNjQ1MGNiMWQ4ZGM5
ZmFjZTQ3M2YzYzkyNDNlODc4M2NjNDY1NS4uYjQyNGU4OWUyZDM0NGFkOTNhMzI2OTg2MWU1NTdi
MGE4YzIzZTk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgKQEAgLTEwMCw4ICsxMDAsNiBAQCBw
dWJsaWM6CiAgICAgLy8gTk9URTogfGltYWdlQnVmZmVyfCBtYXkgYmUgZGVsZXRlZCBiZWZvcmUg
dGhlIHxyZXN0b3JlfCBpcyBpbnZva2VkLgogICAgIHZvaWQgYmVnaW5MYXllckNsaXBwZWRUb0lt
YWdlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlQnVmZmVyKik7CiAgICAgdm9pZCBjbGlw
UGF0aEFudGlBbGlhc2VkKGNvbnN0IFNrUGF0aCYpOwotICAgIC8vIElmIG5vbi1lbXB0eSwgdGhl
IGxheWVyIGlzIGNsaXBwZWQgdG8gdGhlIGJpdG1hcC4KLSAgICBjb25zdCBTa0JpdG1hcCYgY2xp
cHBlZFRvSW1hZ2UoKSBjb25zdDsKIAogICAgIC8vIFNldHMgdXAgdGhlIGNvbW1vbiBmbGFncyBv
biBhIHBhaW50IGZvciBhbnRpYWxpYXNpbmcsIGVmZmVjdHMsIGV0Yy4KICAgICAvLyBUaGlzIGlz
IGltcGxpY2l0bHkgY2FsbGVkIGJ5IHNldHVwUGFpbnRGaWxsIGFuZCBzZXR1cFBhaW50U3Ryb2tl
LCBidXQKQEAgLTIwNSw2ICsyMDMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWREcmF3UG9pbnRz
KFNrQ2FudmFzOjpQb2ludE1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29u
c3QgU2tQYWludCYpOwogICAgIC8vIEZvciBkcmF3aW5nIG9wZXJhdGlvbnMgdGhhdCBkbyBub3Qg
ZmlsbCB0aGUgZW50aXJlIHJlY3QuCiAgICAgdm9pZCBkaWREcmF3Qm91bmRlZChjb25zdCBTa1Jl
Y3QmLCBjb25zdCBTa1BhaW50Jik7CisgICAgLy8gRm9yIHB1c2hpbmcvcG9wcGluZyBhIG5ldyBs
YXllciBpbiB0aGUgU2tDYW52YXMuCisgICAgdm9pZCBkaWRTYXZlTGF5ZXIoKTsKKyAgICB2b2lk
IHdpbGxSZXN0b3JlTGF5ZXIoKTsKIAogcHJpdmF0ZToKICAgICAvLyBVc2VkIHdoZW4gcmVzdG9y
aW5nIGFuZCB0aGUgc3RhdGUgaGFzIGFuIGltYWdlIGNsaXAuIE9ubHkgc2hvd3MgdGhlIHBpeGVs
cyBpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNv
bnRleHRTa2lhVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3Jt
Q29udGV4dFNraWFUZXN0LmNwcAppbmRleCBkMDk3YzQ5OWEyZmRmZDQ1NTlhMGMyMzNmYjJlN2E3
ZTQ4MzEyOTgyLi43ZDVkZjg4YjY3NDg2NjQwNWUyY2UyN2M2ZWI4OWRmYTI4ZGI1YThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4
dFNraWFUZXN0LmNwcApAQCAtMTM3LDkgKzEzNyw5IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tp
YVRlc3QsIHRyYWNrT3BhcXVlQ2xpcFRlc3QpCiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgY29u
dGV4dC5jbGlwKEZsb2F0UmVjdCgwLCAwLCAxMCwgMTApKTsKICAgICBjb250ZXh0LmZpbGxSZWN0
KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
Q29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCkpOwogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3Bh
cXVlUmVnaW9uKCkuYXNSZWN0KCkpOwotICAgIGNvbnRleHQucmVzdG9yZSgpOwogCiAgICAgY29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSk7CiAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkp
OwpAQCAtMTQ3LDMyICsxNDcsMzkgQEAgVEVTVChQbGF0Zm9ybUNvbnRleHRTa2lhVGVzdCwgdHJh
Y2tPcGFxdWVDbGlwVGVzdCkKICAgICBjb250ZXh0LnNhdmUoKTsKICAgICBjb250ZXh0LmNsaXAo
RmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSk7CiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJl
Y3QoMTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0
ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMjAsIDIwLCAxMCwgMTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCku
YXNSZWN0KCkpOwogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRl
eHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogCisgICAgY29udGV4dC5zYXZlKCk7CisgICAg
Y29udGV4dC5jbGlwKEZsb2F0UmVjdCgyMCwgMjAsIDEwLCAxMCkpOwogICAgIGNvbnRleHQuY2xl
YXJSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCkpOworICAgIGNvbnRleHQucmVzdG9yZSgp
OwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJl
Z2lvbigpLmFzUmVjdCgpKTsKIAogICAgIC8vIFRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHR3byBj
bGlwcyBiZWNvbWVzIGVtcHR5LgorICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRleHQuY2xp
cChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTApKTsKICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0
KDMwLCAyMCwgMTAsIDEwKSk7CiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEw
LCA5MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92
ZXIpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1
ZVJlZ2lvbigpLmFzUmVjdCgpKTsKLSAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxh
dGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKICAgICBjb250ZXh0LnJlc3Rv
cmUoKTsKLQotICAgIGNvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCkp
OwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJl
Z2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZv
cm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKIAogICAgIC8vIFRoZSB0cmFuc2Zv
cm0gYW5kIHRoZSBjbGlwIG5lZWQgdG8gaW50ZXJhY3QgY29ycmVjdGx5ICh0cmFuc2Zvcm0gZmly
c3QpCiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMTAsIDEwKTsK
ICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSk7CiAgICAgY29udGV4
dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwog
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCAxMCwgMTApLCBwbGF0Zm9ybUNvbnRl
eHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0
bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwotICAgIGNvbnRl
eHQucmVzdG9yZSgpOwogCisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC50cmFuc2xh
dGUoMTAsIDEwKTsKKyAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSk7
CiAgICAgY29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSk7CisgICAg
Y29udGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9y
bUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogCiAgICAgLy8gVGhlIHRyYW5zZm9y
bSBhbmQgdGhlIGNsaXAgbmVlZCB0byBpbnRlcmFjdCBjb3JyZWN0bHkgKGNsaXAgZmlyc3QpCkBA
IC0xODAsMTEgKzE4NywxNSBAQCBURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCB0cmFja09w
YXF1ZUNsaXBUZXN0KQogICAgIGNvbnRleHQuY2xpcChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTAp
KTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgxMCwgMTApOwogICAgIGNvbnRleHQuZmlsbFJlY3Qo
RmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBD
b21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgMTAsIDEwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJl
Z2lvbigpLmFzUmVjdCgpKTsKICAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZv
cm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKLSAgICBjb250ZXh0LnJlc3RvcmUo
KTsKIAorICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRleHQuY2xpcChGbG9hdFJlY3QoMjAs
IDIwLCAxMCwgMTApKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZSgxMCwgMTApOwogICAgIGNvbnRl
eHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCkpOworICAgIGNvbnRleHQucmVz
dG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9w
YXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKIAogICAgIFBhdGggcGF0aDsKQEAgLTE5NSwxOCArMjA2
LDE4IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVlQ2xpcFRlc3Qp
CiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgY29udGV4dC5jbGlwUGF0aChwYXRoLCBSVUxFX0VW
RU5PREQpOwogICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSwg
b3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBj
b250ZXh0LnJlc3RvcmUoKTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3Jt
Q29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CiAgICAgRVhQRUNUX1BJWEVMU19NQVRD
SChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7Ci0gICAg
Y29udGV4dC5yZXN0b3JlKCk7CiAKICAgICAvLyBBbm90aGVyIG5vbi1yZWN0YW5ndWxhciBjbGlw
LgogICAgIGNvbnRleHQuc2F2ZSgpOwogICAgIGNvbnRleHQuY2xpcChJbnRSZWN0KDMwLCAzMCwg
MjAsIDIwKSk7CiAgICAgY29udGV4dC5jbGlwT3V0KEludFJlY3QoMzAsIDMwLCAxMCwgMTApKTsK
ICAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5y
ZXN0b3JlKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQu
b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFw
LCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwotICAgIGNvbnRleHQu
cmVzdG9yZSgpOwogCiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBhbHBoYUltYWdlID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgYWxwaGFJbWFnZS0+Y29udGV4
dCgpLT5maWxsUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgYWxwaGEsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwpAQCAtMjE1LDkgKzIyNiw5IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRl
c3QsIHRyYWNrT3BhcXVlQ2xpcFRlc3QpCiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgY29udGV4
dC5jbGlwVG9JbWFnZUJ1ZmZlcihhbHBoYUltYWdlLmdldCgpLCBGbG9hdFJlY3QoMzAsIDMwLCAx
MCwgMTApKTsKICAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCks
IG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAg
Y29udGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9y
bUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogICAgIEVYUEVDVF9QSVhFTFNfTUFU
Q0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwotICAg
IGNvbnRleHQucmVzdG9yZSgpOwogfQogCiBURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCB0
cmFja09wYXF1ZUpvaW5UZXN0KQpAQCAtNjQxLDQgKzY1MiwzNCBAQCBURVNUKFBsYXRmb3JtQ29u
dGV4dFNraWFUZXN0LCBsYXllclRyYW5zZm9ybVNjYWxlT3BhcXVlVGVzdCkKICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3Qo
KSk7CiB9CiAKK1RFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIGNvbnRleHRUcmFuc3BhcmVu
Y3lMYXllclRlc3QpCit7CisgICAgU2tCaXRtYXAgYml0bWFwOworICAgIGJpdG1hcC5zZXRDb25m
aWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCA0MDAsIDQwMCk7CisgICAgYml0bWFwLmFs
bG9jUGl4ZWxzKCk7CisgICAgYml0bWFwLmVyYXNlQ29sb3IoMCk7CisgICAgU2tDYW52YXMgY2Fu
dmFzKGJpdG1hcCk7CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zv
cm0uc2NhbGUoMik7CisKKyAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dCgm
Y2FudmFzKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7
CisgICAgcGxhdGZvcm1Db250ZXh0LnNldE9wYXF1ZVJlZ2lvblRyYW5zZm9ybSh0cmFuc2Zvcm0p
OworICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOworCisgICAg
Q29sb3Igb3BhcXVlKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworCisgICAgY29udGV4dC5maWxs
UmVjdChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDAs
IDQwLCAyMCwgMjApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwor
ICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJl
Y3QocGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKSk7CisKKyAgICBjb250
ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTApKTsKKyAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7
CisKKyAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMC41KTsKKyAgICBjb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdCgyMCwgMjAsIDEwLCAxMCksIG9wYXF1ZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5lbmRUcmFuc3BhcmVu
Y3lMYXllcigpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0
Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBi
NGQzMmI5OTAwZTc2YjIxZjIwNmMwMDdhYmNkYzYxNTE1ZjJjZDEyLi41MjA4NGExZjY4NTE2MDU3
MWIyNTkyZTAyOTUwNzg3OWU1NzUyYmUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDIt
MjEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBNYWtlIG9wYXF1ZSBwYWludCB0cmFja2VyIGF3YXJlIG9mIFNrQ2FudmFzIGxheWVycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxNDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbXBvc2l0
aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAg
ICAgICogY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9jdWxsaW5nL3Jlc291cmNlcy9j
bGVhci1maXhlZC1pZnJhbWUtY29udGVudC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMi0yMSAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZp
ZXdlZCBnYXJkZW5pbmcsIHNraXAgbmV3IGZhaWxpbmcgYW5kIGNyYXNoaW5nIHRlc3QgdG8gcGFp
bnQgdGhlIGJvdCBncmVlbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1
bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lOGFhY2Q5Y2E2MzMzM2EzMDJjOTM0NWNhODVmNjVjMWY2Y2IyN2M1CkdJVCBiaW5hcnkgcGF0
Y2gKbGl0ZXJhbCAyODU5CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9
aF5obEElQFdzJGxIYG9rPG19P29UIXYobQp6PGtTP2l2fTl1b2JJWmkhR3tZMWxRIXtmNVc3Q3ZH
UXhnal9nQXxeVkFORGRaYVA5U1VhU1ctTF5ZKEAjWi1XNT8Kemk9JV4lKXJDT203WUJzZEQpS0h9
SUhSJVNgTGwxST9hVWIoPlpRKWx1emgmZ3UkcUQ0S28qTV9nTSZ7M0JnMnRWCnojJUxnbnJpOVU0
RnEjV1NiSFFqWDd8akt2eG5QandmXlRuVSopbFJEPSpzQ1pHfFZgXyNMJlN4ezFgWDVxbko2PwpW
WXV2b2YwJk0qPGMpSSR6dGFEMGUwc3NxJFZEMTBfCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlm
cmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFy
LWZpeGVkLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIxMzc4OTE3OTFmZTk2OTI3
YWQ3OGU2NGIwYWFkN2JkZWQwOGJkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvY2xl
YXItZml4ZWQtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2Ns
ZWFyLWZpeGVkLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhY2U1ZTE4MmE5NWY5YmJkNGU1ZWNl
ZjM3NjQwMmVkMDE5ZjdjMDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+PGhlYWQ+PHRpdGxlPkNvbXBvc2l0b3IgSWZyYW1lIFNhZGZh
Y2U8L3RpdGxlPgorPHN0eWxlPgorYm9keSB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQorLmNv
bXBvc2l0ZWQgeworICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47CisgIHBvc2l0aW9uOmZpeGVkOworICBsZWZ0OjA7IHRvcDowOyBy
aWdodDowOyBib3R0b206MDsKK30KK2lmcmFtZSB7CisgIHBvc2l0aW9uOmZpeGVkOworICBsZWZ0
OiAwOyB0b3A6IDA7CisgIHdpZHRoOjEwMCU7CisgIGhlaWdodDogMTAwJTsKKyAgYm9yZGVyOjA7
Cit9Cis8L3N0eWxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCh0cnVlKTsKKyAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRpdiBj
bGFzcz0iY29tcG9zaXRlZCI+PC9kaXY+CisKKzwhLS0gWW91IHNob3VsZCBzZWUgYSBsaWdodCBn
cmVlbiBib3ggZmlsbGluZyB0aGUgdG9wL2xlZnQgb2YgdGhlIHdpbmRvdywgaW5zaWRlIGEgZGFy
a2VyIGdyZWVuIGJhY2tncm91bmQuCisgICAgIElmIHRoZSAiZ2xhc3MiIGluIHRoZSBpZnJhbWUg
aXMgY29uc2lkZXJlZCBvcGFxdWUsIHRoZW4gZHJhd2luZyBlcnJvcnMgd2lsbCBvY2N1ciBhbmQg
dGlsZXMgYmVjb21lIGJsYWNrCisgICAgIChsaWdodCBncmF5IHdpdGggdGhlIGdsYXNzKS4KKyAg
LS0+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2NsZWFyLWZpeGVkLWlmcmFtZS1jb250ZW50Lmh0
bWwiIGZyYW1lYm9yZGVyPSIwIj48L2lmcmFtZT4KKzwvYm9keT4KKworPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9yZXNvdXJjZXMvY2xlYXItZml4
ZWQtaWZyYW1lLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcv
cmVzb3VyY2VzL2NsZWFyLWZpeGVkLWlmcmFtZS1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmZh
MDRkMzljNDU4NmE2NTJmN2U5NTg2NWZjYjc3M2EzOGQ2NDRhZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvcmVzb3VyY2VzL2NsZWFyLWZpeGVkLWlm
cmFtZS1jb250ZW50Lmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD48aGVhZD48dGl0bGU+PC90aXRsZT4KKzxzdHlsZT4KK2JvZHkgeyBtYXJnaW46MDsgcGFkZGlu
ZzowOyB9CisKKyNnbGFzcyB7CisgIG9wYWNpdHk6MC40OworICBiYWNrZ3JvdW5kLWNvbG9yOndo
aXRlOworICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgdG9wOjBweDsgbGVmdDowcHg7IHJpZ2h0OjUw
cHg7IGJvdHRvbTogNTBweDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRpdiBp
ZD0iZ2xhc3MiPjwvZGl2PgorPC9ib2R5PgorPC9zY3JpcHQ+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128542</attachid>
            <date>2012-02-23 13:25:23 -0800</date>
            <delta_ts>2012-02-23 13:46:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79145-20120223162521.patch</filename>
            <type>text/plain</type>
            <size>28628</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUzNjIyMzVmMDg3MmJh
NTYwMzk0Y2M2MmU2NWI3ZGU1NDZhNjJiZC4uM2NiNjFhYmJkZTQzMTJkMmJiNTg1MmQxYWZlNGYz
Y2IzNzJhNTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTAyLTIxICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBvcGFxdWUgcGFpbnQgdHJhY2tlciBhd2FyZSBvZiBTa0NhbnZhcyBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgb3BhcXVl
IHBhaW50IHRyYWNrZXIgaWdub3JlZCBTa0NhbnZhcyBsYXllcnMgZW50aXJlbHkuIEJ1dAorICAg
ICAgICBTa0NhbnZhcyBsYXllcnMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgdGhpbmdzIGxpa2UgYWxw
aGEuIFNvIHdlIG1ha2UgaXQKKyAgICAgICAga25vdyBhYm91dCBsYXllcnMsIGFuZCByZWFwcGx5
IHRoZSBvcGFxdWUgcmVjdCBpbiBhIGdpdmVuIGxheWVyIGludG8KKyAgICAgICAgdGhlIG5leHQg
bGF5ZXIgZG93biB3aGVuIHJlc3RvcmUoKSBpcyBjYWxsZWQsIHVzaW5nIHRoZSBwcm9wZXJ0aWVz
IG9mCisgICAgICAgIHRoYXQgbGF5ZXIuCisKKyAgICAgICAgSW1hZ2UgY2xpcHBpbmcgaXMgZG9u
ZSB2aWEgYSBsYXllciwgc28gd2UgY2FuIG5vdyBhbHNvIHJlbW92ZSB0aGUKKyAgICAgICAgc3Bl
Y2lhbC1jYXNlIGNvZGUgYXJvdW5kIGltYWdlIGNsaXBwaW5nIGluIFBsYXRmb3JtQ29udGV4dFNr
aWEgYW5kCisgICAgICAgIE9wYXF1ZVJlZ2lvblNraWEuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBQ
bGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9j
dWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1Vw
ZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJl
bmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9y
bVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09w
YXF1ZVJlZ2lvblNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6
YXNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQpOgorICAgICAgICAo
V2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkU2F2ZUxheWVyKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6d2lsbFJlc3RvcmVMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaDoKKyAgICAgICAg
KE9wYXF1ZVJlZ2lvblNraWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxh
dGZvcm1Db250ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRT
a2lhOjpzYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmJlZ2lu
TGF5ZXJDbGlwcGVkVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRT
a2lhOjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmFw
cGx5Q2xpcEZyb21JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lh
OjpkaWRTYXZlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNvbnRleHRTa2lhOjp3aWxsUmVzdG9yZUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoKKyAgICAgICAgKFBsYXRmb3Jt
Q29udGV4dFNraWEpOgorCiAyMDEyLTAyLTIzICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVv
bGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gQnVpbGQgZml4LCB1c2UgdGhlIHN0cmluZ3Mg
aW4gTG9jYWxpemVkU3RyaW5ncy5jcHAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFj
ZGU2ZTQ2NDdmNzY1NjE1YWJlM2I0OTQwMjY3ODU5MGVlN2RkZjQuLjZlMjdmMzE4YjViNzJmNTQy
ODg4YzViYTc5MWI2Y2U2YWE0YTk3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTItMDItMjEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIG9wYXF1ZSBwYWludCB0cmFja2VyIGF3YXJl
IG9mIFNrQ2FudmFzIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzkxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDItMjIgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENs
ZWFuIHVwIEdyYXBoaWNzQ29udGV4dDNEIGluaXRpYWxpemF0aW9uIHBhdGhzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDAwYTNl
NDYzYjg1OTMxYjA0ZWJjMDVhMDE5ZWNkOTQ0YTZiNWY0NDEuLmY0MmMwODQwMmFhMGE1Y2E1NGVj
ZjE4MmNmZjE0ZTcwMzRkY2NjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC05Niw2ICs5Niw3IEBAIHZvaWQgQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0CiAKICAgICBpZiAoIWxheWVySXNPcGFxdWUpCiAgICAgICAgICpyZXN1bHRpbmdP
cGFxdWVSZWN0ID0gY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5vcGFxdWVSZWdpb24oKS5h
c1JlY3QoKTsKKyAgICBjYW52YXNQYWludGVyLnNraWFDb250ZXh0KCktPnNldFRyYWNrT3BhcXVl
UmVnaW9uKGZhbHNlKTsKIH0KIAogdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Ojp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDM1Y2Qz
NWFkM2MwNDYxNmU1M2Q0YTFiYzFlNWNmOGViZWUyOGVhODYuLjg3NzU5NDU4MDIxYWE0NGNjZjdl
MzJhNzM5ZmNkMmE1NThiZGQwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC02MSw2ICs2MSw3IEBAIHZvaWQgU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSCiAKICAgICBpZiAoIW1fbGF5ZXJJc09wYXF1ZSkKICAgICAgICAgKnJl
c3VsdGluZ09wYXF1ZVJlY3QgPSBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3BhcXVlUmVnaW9uKGZhbHNlKTsKIH0K
IAogdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpkcmF3UGljdHVyZShT
a0NhbnZhcyogY2FudmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKaW5kZXggNGY3OWNmYjBi
NWU2OWM1YzU0ZTczYmQwZTJjYmE5YTM5NWFmNjVlYi4uMDlmYzVhNmM5MWZhMThhZWNkNzk0NzVi
NTI0MmFlOTMwZTM4MzMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCkBAIC0yODEsMTIg
KzI4MSwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5j
eUxheWVyKGZsb2F0IG9wYWNpdHkpCiAgICAgICAgICZsYXllclBhaW50LAogICAgICAgICBzdGF0
aWNfY2FzdDxTa0NhbnZhczo6U2F2ZUZsYWdzPihTa0NhbnZhczo6a0hhc0FscGhhTGF5ZXJfU2F2
ZUZsYWcgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0NhbnZh
czo6a0Z1bGxDb2xvckxheWVyX1NhdmVGbGFnKSk7CisgICAgcGxhdGZvcm1Db250ZXh0KCktPmRp
ZFNhdmVMYXllcigpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFu
c3BhcmVuY3lMYXllcigpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOworICAgIHBsYXRmb3JtQ29udGV4dCgpLT53aWxsUmVzdG9yZUxheWVyKCk7CiAgICAg
cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5yZXN0b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNr
aWEuY3BwCmluZGV4IDIxZmFjYWFkYjhiMTg5MzZmNDI4MjQ5NGQ1MmQyNDcwZGFjNzdkYzAuLjhl
M2Y3MDgzYWY4YzUyZGJhMWIzMDI0ZjM5ZDllNTlhNjI4ZDk2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lh
LmNwcApAQCAtNTEsNiArNTEsMTAgQEAgT3BhcXVlUmVnaW9uU2tpYTo6fk9wYXF1ZVJlZ2lvblNr
aWEoKQogCiBJbnRSZWN0IE9wYXF1ZVJlZ2lvblNraWE6OmFzUmVjdCgpIGNvbnN0CiB7CisgICAg
QVNTRVJUKG1fb3BhcXVlUmVjdFN0YWNrLmlzRW1wdHkoKSk7CisgICAgaWYgKCFtX29wYXF1ZVJl
Y3RTdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisKICAgICAvLyBS
ZXR1cm5zIHRoZSBsYXJnZXN0IGVuY2xvc2VkIHJlY3QuCiAgICAgaW50IGxlZnQgPSBTa1NjYWxh
ckNlaWwobV9vcGFxdWVSZWN0LmZMZWZ0KTsKICAgICBpbnQgdG9wID0gU2tTY2FsYXJDZWlsKG1f
b3BhcXVlUmVjdC5mVG9wKTsKQEAgLTE0Nyw3ICsxNTEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
cGFpbnRJc09wYXF1ZShjb25zdCBTa1BhaW50JiBwYWludCwgY29uc3QgU2tCaXRtYXAqIGJpdG1h
cCA9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJh
d1JlY3QoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgZmlsbFJlY3QsIGNvbnN0IFNrUGFpbnQm
IHBhaW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpk
aWREcmF3UmVjdChQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQYWludCYg
cGFpbnQsIGNvbnN0IFNrQml0bWFwKiBiaXRtYXApCiB7CiAgICAgLy8gQW55IHN0cm9raW5nIG1h
eSBwdXQgYWxwaGEgaW4gcGl4ZWxzIGV2ZW4gaWYgdGhlIGZpbGxpbmcgcGFydCBkb2VzIG5vdC4K
ICAgICBpZiAocGFpbnQuZ2V0U3R5bGUoKSAhPSBTa1BhaW50OjprRmlsbF9TdHlsZSkgewpAQCAt
MTY5LDcgKzE3Myw3IEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmCiAgICAgZGlkRHJhdyhjb250
ZXh0LCB0cmFuc2Zvcm0sIGZpbGxSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcyk7CiB9
CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3QgUGxhdGZvcm1Db250
ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCit2b2lkIE9wYXF1ZVJlZ2lvblNr
aWE6OmRpZERyYXdQYXRoKFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1BhdGgmIHBhdGgsIGNvbnN0IFNrUGFpbnQm
IHBhaW50KQogewogICAgIFNrUmVjdCByZWN0OwogICAgIGlmIChwYXRoLmlzUmVjdCgmcmVjdCkp
IHsKQEAgLTE4OCw3ICsxOTIsNyBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQYXRo
KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZgogICAgIH0KIH0K
IAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRmb3JtQ29u
dGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBTa0Nh
bnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnQgcG9pbnRz
W10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3
UG9pbnRzKFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBTa0NhbnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNv
bnN0IFNrUG9pbnQgcG9pbnRzW10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGlmICgh
bnVtUG9pbnRzKQogICAgICAgICByZXR1cm47CkBAIC0yMTcsNyArMjIxLDcgQEAgdm9pZCBPcGFx
dWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNv
bnRleHQsIGNvbnN0IEEKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJh
d0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgYm91bmRzLCBjb25zdCBTa1BhaW50
JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQoUGxhdGZvcm1D
b250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNv
bnN0IFNrUmVjdCYgYm91bmRzLCBjb25zdCBTa1BhaW50JiBwYWludCkKIHsKICAgICBib29sIG9w
YXF1ZSA9IHBhaW50SXNPcGFxdWUocGFpbnQpOwogICAgIGJvb2wgZmlsbHNCb3VuZHMgPSBmYWxz
ZTsKQEAgLTIzMSw3ICsyMzUsNTkgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91
bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdAogICAgIH0KIH0K
IAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNr
aWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1Jl
Y3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZp
bGxzQm91bmRzKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWRTYXZlTGF5ZXIoKQoreworICAg
IG1fb3BhcXVlUmVjdFN0YWNrLmFwcGVuZChTa1JlY3Q6Ok1ha2VFbXB0eSgpKTsKK30KKwordm9p
ZCBPcGFxdWVSZWdpb25Ta2lhOjp3aWxsUmVzdG9yZUxheWVyKFBsYXRmb3JtQ29udGV4dFNraWEq
IGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAgIEFTU0VS
VCghbV9vcGFxdWVSZWN0U3RhY2suaXNFbXB0eSgpKTsKKyAgICBpZiAobV9vcGFxdWVSZWN0U3Rh
Y2suaXNFbXB0eSgpKSB7CisgICAgICAgIG1fb3BhcXVlUmVjdCA9IFNrUmVjdDo6TWFrZUVtcHR5
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBSZXN0b3JlIHRoZSB0b3Agb2Yg
dGhlIHN0YWNrIGJhY2sgYXMgdGhlIGN1cnJlbnQgb3BhcXVlIHJlY3QsIGFuZCBzYXZlIHRoZSBy
ZWN0IGZvciB0aGUgbGF5ZXIgYmVpbmcgcmVzdG9yZWQKKyAgICAvLyBzbyB3ZSBjYW4gZmlndXJl
IG91dCBob3cgaXQgY29udHJpYnV0ZXMgdG8gdGhlIG5ld2x5IGN1cnJlbnQgbGF5ZXIuCisgICAg
U2tSZWN0IG9wYXF1ZUxheWVyUmVjdCA9IG1fb3BhcXVlUmVjdDsKKyAgICBtX29wYXF1ZVJlY3Qg
PSBtX29wYXF1ZVJlY3RTdGFjay5sYXN0KCk7CisgICAgbV9vcGFxdWVSZWN0U3RhY2sucmVtb3Zl
TGFzdCgpOworCisgICAgaWYgKG9wYXF1ZUxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEdldCB0aGUgbGF5ZXIgdGhhdCB3aWxsIGJlIHBvcHBlZCBvZmYgdGhl
IHN0YWNrLgorICAgIFNrQ2FudmFzOjpMYXllckl0ZXIgaXQoY29udGV4dC0+Y2FudmFzKCksIGZh
bHNlKTsKKworICAgIC8vIFdlIGhhdmUgYSByZWN0IGluIHRhcmdldCBzcGFjZSwgbW92ZSBpdCB0
byBkZXZpY2Ugc3BhY2UuCisgICAgaWYgKCF0cmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBTa01hdHJpeCB0YXJnZXRUb0RldmljZVRyYW5zZm9ybSA9IHRyYW5z
Zm9ybS5pbnZlcnNlKCk7CisgICAgaWYgKCF0YXJnZXRUb0RldmljZVRyYW5zZm9ybS5tYXBSZWN0
KCZvcGFxdWVMYXllclJlY3QpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBcHBseSB0aGUg
bGF5ZXIncyBjbGlwICh3aGljaCBpcyBpbiBkZXZpY2Ugc3BhY2UpCisgICAgY29uc3QgU2tSZWdp
b24mIGRldmljZUNsaXAgPSBpdC5jbGlwKCk7CisgICAgaWYgKGRldmljZUNsaXAuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFkZXZpY2VDbGlwLmlzUmVjdCgpKQorICAgICAg
ICByZXR1cm47CisgICAgU2tJUmVjdCBjbGlwQm91bmRzID0gaXQuY2xpcCgpLmdldEJvdW5kcygp
OworICAgIGlmICghb3BhcXVlTGF5ZXJSZWN0LmludGVyc2VjdChTa0ludFRvU2NhbGFyKGNsaXBC
b3VuZHMuZkxlZnQpLCBTa0ludFRvU2NhbGFyKGNsaXBCb3VuZHMuZlRvcCksIFNrSW50VG9TY2Fs
YXIoY2xpcEJvdW5kcy5mUmlnaHQpLCBTa0ludFRvU2NhbGFyKGNsaXBCb3VuZHMuZkJvdHRvbSkp
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBOb3cgd2UgaGF2ZSBhIHJlY3QgaW4gdGhlIGNh
bnZhcyBkZXZpY2Ugc3BhY2UsIGJ1dCBkaWREcmF3KCkgd2FudHMgYSByZWN0IGluIHRoZSBzb3Vy
Y2Ugc3BhY2UuCisgICAgU2tNYXRyaXggZGV2aWNlVG9Tb3VyY2VUcmFuc2Zvcm07CisgICAgaWYg
KCFjb250ZXh0LT5jYW52YXMoKS0+Z2V0VG90YWxNYXRyaXgoKS5pbnZlcnQoJmRldmljZVRvU291
cmNlVHJhbnNmb3JtKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghZGV2aWNlVG9Tb3VyY2VU
cmFuc2Zvcm0ubWFwUmVjdCgmb3BhcXVlTGF5ZXJSZWN0KSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZGlkRHJhd1JlY3QoY29udGV4dCwgdHJhbnNmb3JtLCBvcGFxdWVMYXllclJlY3QsIGl0LnBh
aW50KCksIDApOworfQorCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXcoUGxhdGZvcm1D
b250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNv
bnN0IFNrUmVjdCYgcmVjdCwgY29uc3QgU2tQYWludCYgcGFpbnQsIGJvb2wgZHJhd3NPcGFxdWUs
IGJvb2wgZmlsbHNCb3VuZHMpCiB7CiAgICAgU2tSZWN0IHRhcmdldFJlY3QgPSByZWN0OwogCkBA
IC0yNDksOCArMzA1LDYgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KGNvbnN0IFBs
YXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVQKICAgICAgICAgaWYgKCF0
YXJnZXRSZWN0LmludGVyc2VjdChTa0ludFRvU2NhbGFyKGRldmljZUNsaXAuZkxlZnQpLCBTa0lu
dFRvU2NhbGFyKGRldmljZUNsaXAuZlRvcCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mUmln
aHQpLCBTa0ludFRvU2NhbGFyKGRldmljZUNsaXAuZkJvdHRvbSkpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAoIWNvbnRleHQtPmNsaXBwZWRUb0ltYWdlKCkuaXNPcGFxdWUo
KSkKLSAgICAgICAgZmlsbHNCb3VuZHMgPSBmYWxzZTsKIAogICAgIC8vIEFwcGx5IHRoZSB0cmFu
c2Zvcm0gdG8gdGhlIHRyYWNraW5nIHNwYWNlLgogICAgIFNrTWF0cml4IGNhbnZhc1RvVGFyZ2V0
VHJhbnNmb3JtID0gdHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAppbmRleCA0NWIwNjkwMDQyYTY5
OGE0Y2EwMDNkM2U4NTBlZThkNGMzNjc5OTZkLi44NTg5YjczNGJlNDI0NTUwMmRhMDE0YzYzZTU5
MTg1YzQ0ZDY5YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaApAQCAtNTMsMTcgKzUzLDI0IEBAIHB1Ymxp
YzoKICAgICAvLyBUaGUgcmVzdWx0aW5nIG9wYXF1ZSByZWdpb24gYXMgYSBzaW5nbGUgcmVjdC4K
ICAgICBJbnRSZWN0IGFzUmVjdCgpIGNvbnN0OwogCi0gICAgdm9pZCBkaWREcmF3UmVjdChjb25z
dCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tS
ZWN0JiwgY29uc3QgU2tQYWludCYsIGNvbnN0IFNrQml0bWFwKik7Ci0gICAgdm9pZCBkaWREcmF3
UGF0aChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgU2tQYXRoJiwgY29uc3QgU2tQYWludCYpOwotICAgIHZvaWQgZGlkRHJhd1BvaW50cyhj
b25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgU2tDYW52
YXM6OlBvaW50TW9kZSwgaW50IG51bVBvaW50cywgY29uc3QgU2tQb2ludFtdLCBjb25zdCBTa1Bh
aW50Jik7Ci0gICAgdm9pZCBkaWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lh
KiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYp
OworICAgIC8vIEZJWE1FOiBtYWtlIGFsbCB0aGUgUGxhdGZvcm1Db250ZXh0U2tpYSogaW50byBh
IGNvbnN0IHBvaW50ZXIgd2hlbiBTa2lhIGZpeGVzIExheWVySXRlcidzIFNrQ2FudmFzKi4KKwor
ICAgIHZvaWQgZGlkRHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBjb25zdCBTa0JpdG1hcCop
OworICAgIHZvaWQgZGlkRHJhd1BhdGgoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IFNrUGF0aCYsIGNvbnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRp
ZERyYXdQb2ludHMoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYs
IFNrQ2FudmFzOjpQb2ludE1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29u
c3QgU2tQYWludCYpOworICAgIHZvaWQgZGlkRHJhd0JvdW5kZWQoUGxhdGZvcm1Db250ZXh0U2tp
YSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQm
KTsKKworICAgIHZvaWQgZGlkU2F2ZUxheWVyKCk7CisgICAgdm9pZCB3aWxsUmVzdG9yZUxheWVy
KFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAogcHJpdmF0
ZToKLSAgICB2b2lkIGRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdz
T3BhcXVlLCBib29sIGZpbGxzQm91bmRzKTsKKyAgICB2b2lkIGRpZERyYXcoUGxhdGZvcm1Db250
ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNr
UGFpbnQmLCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZpbGxzQm91bmRzKTsKICAgICB2b2lkIGRp
ZERyYXdVbmJvdW5kZWQoY29uc3QgU2tQYWludCYsIGJvb2wgZHJhd3NPcGFxdWUpOwogICAgIHZv
aWQgbWFya1JlY3RBc09wYXF1ZShjb25zdCBTa1JlY3QmKTsKICAgICB2b2lkIG1hcmtSZWN0QXNO
b25PcGFxdWUoY29uc3QgU2tSZWN0Jik7CiAKKyAgICAvLyBBIHN0YWNrIG9mIG9wYXF1ZSByZWN0
cyBmb3Igd2hlbiB0aGUgdW5kZXJseWluZyBjYW52YXMgaGFzIG11bHRpcGxlIGxheWVycy4gVGhl
IGN1cnJlbnQgbGF5ZXIgaXMgYWx3YXlzIHJlcHJlc2VudGVkIGluIG1fb3BhcXVlUmVjdC4KKyAg
ICBWZWN0b3I8U2tSZWN0PiBtX29wYXF1ZVJlY3RTdGFjazsKICAgICBTa1JlY3QgbV9vcGFxdWVS
ZWN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKaW5kZXggYzMyM2EwZDdlZmZiM2Rj
NmQ5MTM4ZDgxZTk3MTE5Y2NkYmUxM2Y2Yi4uODQxN2VhYTk3YTgxYzdhZWE0M2EwZWI5NjlmNTNj
ZWIwNzk5NTVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCkBAIC0yMjAsNiArMjIwLDcg
QEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzYXZlKCkKIAogICAgIC8vIFNhdmUgb3VyIG5h
dGl2ZSBjYW52YXMuCiAgICAgY2FudmFzKCktPnNhdmUoKTsKKyAgICBkaWRTYXZlTGF5ZXIoKTsK
IH0KIAogdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpiZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2Uo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LApAQCAtMjQyLDYgKzI0Myw3IEBAIHZvaWQgUGxhdGZvcm1D
b250ZXh0U2tpYTo6YmVnaW5MYXllckNsaXBwZWRUb0ltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwKIAogICAgIGNhbnZhcygpLT5zYXZlTGF5ZXJBbHBoYSgmYm91bmRzLCAyNTUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFNrQ2FudmFzOjpTYXZlRmxhZ3M+KFNr
Q2FudmFzOjprSGFzQWxwaGFMYXllcl9TYXZlRmxhZyB8IFNrQ2FudmFzOjprRnVsbENvbG9yTGF5
ZXJfU2F2ZUZsYWcpKTsKKyAgICBkaWRTYXZlTGF5ZXIoKTsKICAgICAvLyBDb3B5IG9mZiB0aGUg
aW1hZ2UgYXMgfGltYWdlQnVmZmVyfCBtYXkgYmUgZGVsZXRlZCBiZWZvcmUgcmVzdG9yZSBpcyBp
bnZva2VkLgogICAgIGNvbnN0IFNrQml0bWFwKiBiaXRtYXAgPSBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Yml0bWFwKCk7CiAgICAgaWYgKCFiaXRtYXAtPnBpeGVs
UmVmKCkpIHsKQEAgLTI2MywxNSArMjY1LDExIEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6
Y2xpcFBhdGhBbnRpQWxpYXNlZChjb25zdCBTa1BhdGgmIGNsaXBQYXRoKQogICAgIGNhbnZhcygp
LT5jbGlwUGF0aChjbGlwUGF0aCwgU2tSZWdpb246OmtJbnRlcnNlY3RfT3AsIHRydWUpOwogfQog
Ci1jb25zdCBTa0JpdG1hcCYgUGxhdGZvcm1Db250ZXh0U2tpYTo6Y2xpcHBlZFRvSW1hZ2UoKSBj
b25zdAotewotICAgIHJldHVybiBtX3N0YXRlLT5tX2ltYWdlQnVmZmVyQ2xpcDsKLX0KLQogdm9p
ZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpyZXN0b3JlKCkKIHsKICAgICBpZiAoIW1fc3RhdGUtPm1f
aW1hZ2VCdWZmZXJDbGlwLmVtcHR5KCkpIHsKICAgICAgICAgYXBwbHlDbGlwRnJvbUltYWdlKG1f
c3RhdGUtPm1fY2xpcCwgbV9zdGF0ZS0+bV9pbWFnZUJ1ZmZlckNsaXApOworICAgICAgICB3aWxs
UmVzdG9yZUxheWVyKCk7CiAgICAgICAgIGNhbnZhcygpLT5yZXN0b3JlKCk7CiAgICAgfQogCkBA
IC0yNzksNiArMjc3LDcgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpyZXN0b3JlKCkKICAg
ICBtX3N0YXRlID0gJm1fc3RhdGVTdGFjay5sYXN0KCk7CiAKICAgICAvLyBSZXN0b3JlIG91ciBu
YXRpdmUgY2FudmFzLgorICAgIHdpbGxSZXN0b3JlTGF5ZXIoKTsKICAgICBjYW52YXMoKS0+cmVz
dG9yZSgpOwogfQogCkBAIC01OTUsOCArNTk0LDEwIEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tp
YTo6YXBwbHlDbGlwRnJvbUltYWdlKGNvbnN0IFNrUmVjdCYgcmVjdCwgY29uc3QgU2tCaXRtYXAm
CiAgICAgU2tQYWludCBwYWludDsKICAgICBwYWludC5zZXRYZmVybW9kZU1vZGUoU2tYZmVybW9k
ZTo6a0RzdEluX01vZGUpOwogICAgIG1fY2FudmFzLT5zYXZlKFNrQ2FudmFzOjprTWF0cml4X1Nh
dmVGbGFnKTsKKyAgICBkaWRTYXZlTGF5ZXIoKTsKICAgICBtX2NhbnZhcy0+cmVzZXRNYXRyaXgo
KTsKICAgICBtX2NhbnZhcy0+ZHJhd0JpdG1hcFJlY3QoaW1hZ2VCdWZmZXIsIDAsIHJlY3QsICZw
YWludCk7CisgICAgd2lsbFJlc3RvcmVMYXllcigpOwogICAgIG1fY2FudmFzLT5yZXN0b3JlKCk7
CiB9CiAKQEAgLTYyOSw0ICs2MzAsMTYgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWRE
cmF3Qm91bmRlZChjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW4KICAgICAg
ICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd0JvdW5kZWQodGhpcywgbV9vcGFxdWVSZWdpb25UcmFu
c2Zvcm0sIHJlY3QsIHBhaW50KTsKIH0KIAordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWRT
YXZlTGF5ZXIoKQoreworICAgIGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKQorICAgICAgICBtX29w
YXF1ZVJlZ2lvbi5kaWRTYXZlTGF5ZXIoKTsKK30KKwordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lh
Ojp3aWxsUmVzdG9yZUxheWVyKCkKK3sKKyAgICBpZiAobV90cmFja09wYXF1ZVJlZ2lvbikKKyAg
ICAgICAgbV9vcGFxdWVSZWdpb24ud2lsbFJlc3RvcmVMYXllcih0aGlzLCBtX29wYXF1ZVJlZ2lv
blRyYW5zZm9ybSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmgKaW5kZXggYjMwNjQ1MGNiMWQ4ZGM5ZmFjZTQ3M2YzYzkyNDNlODc4M2NjNDY1NS4uYjQy
NGU4OWUyZDM0NGFkOTNhMzI2OTg2MWU1NTdiMGE4YzIzZTk4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmgKQEAgLTEwMCw4ICsxMDAsNiBAQCBwdWJsaWM6CiAgICAgLy8gTk9URTogfGltYWdlQnVm
ZmVyfCBtYXkgYmUgZGVsZXRlZCBiZWZvcmUgdGhlIHxyZXN0b3JlfCBpcyBpbnZva2VkLgogICAg
IHZvaWQgYmVnaW5MYXllckNsaXBwZWRUb0ltYWdlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlQnVmZmVyKik7CiAgICAgdm9pZCBjbGlwUGF0aEFudGlBbGlhc2VkKGNvbnN0IFNrUGF0aCYp
OwotICAgIC8vIElmIG5vbi1lbXB0eSwgdGhlIGxheWVyIGlzIGNsaXBwZWQgdG8gdGhlIGJpdG1h
cC4KLSAgICBjb25zdCBTa0JpdG1hcCYgY2xpcHBlZFRvSW1hZ2UoKSBjb25zdDsKIAogICAgIC8v
IFNldHMgdXAgdGhlIGNvbW1vbiBmbGFncyBvbiBhIHBhaW50IGZvciBhbnRpYWxpYXNpbmcsIGVm
ZmVjdHMsIGV0Yy4KICAgICAvLyBUaGlzIGlzIGltcGxpY2l0bHkgY2FsbGVkIGJ5IHNldHVwUGFp
bnRGaWxsIGFuZCBzZXR1cFBhaW50U3Ryb2tlLCBidXQKQEAgLTIwNSw2ICsyMDMsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWREcmF3UG9pbnRzKFNrQ2FudmFzOjpQb2ludE1vZGUsIGludCBudW1Q
b2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWludCYpOwogICAgIC8vIEZvciBkcmF3
aW5nIG9wZXJhdGlvbnMgdGhhdCBkbyBub3QgZmlsbCB0aGUgZW50aXJlIHJlY3QuCiAgICAgdm9p
ZCBkaWREcmF3Qm91bmRlZChjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jik7CisgICAgLy8g
Rm9yIHB1c2hpbmcvcG9wcGluZyBhIG5ldyBsYXllciBpbiB0aGUgU2tDYW52YXMuCisgICAgdm9p
ZCBkaWRTYXZlTGF5ZXIoKTsKKyAgICB2b2lkIHdpbGxSZXN0b3JlTGF5ZXIoKTsKIAogcHJpdmF0
ZToKICAgICAvLyBVc2VkIHdoZW4gcmVzdG9yaW5nIGFuZCB0aGUgc3RhdGUgaGFzIGFuIGltYWdl
IGNsaXAuIE9ubHkgc2hvd3MgdGhlIHBpeGVscyBpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAppbmRleCBkMDk3
YzQ5OWEyZmRmZDQ1NTlhMGMyMzNmYjJlN2E3ZTQ4MzEyOTgyLi43ZDVkZjg4YjY3NDg2NjQwNWUy
Y2UyN2M2ZWI4OWRmYTI4ZGI1YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcApAQCAtMTM3LDkgKzEzNyw5
IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVlQ2xpcFRlc3QpCiAg
ICAgY29udGV4dC5zYXZlKCk7CiAgICAgY29udGV4dC5jbGlwKEZsb2F0UmVjdCgwLCAwLCAxMCwg
MTApKTsKICAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9w
YXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29u
dGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNv
bnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0go
Yml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwotICAgIGNv
bnRleHQucmVzdG9yZSgpOwogCiAgICAgY29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDEwLCAx
MCwgOTAsIDkwKSk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRl
eHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwpAQCAtMTQ3LDMyICsxNDcsMzkgQEAgVEVTVChQ
bGF0Zm9ybUNvbnRleHRTa2lhVGVzdCwgdHJhY2tPcGFxdWVDbGlwVGVzdCkKICAgICBjb250ZXh0
LnNhdmUoKTsKICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSk7CiAg
ICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQucmVz
dG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIwLCAxMCwgMTApLCBwbGF0
Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogICAgIEVYUEVDVF9QSVhFTFNf
TUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwog
CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5jbGlwKEZsb2F0UmVjdCgyMCwgMjAs
IDEwLCAxMCkpOwogICAgIGNvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5
MCkpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
KSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKIAogICAgIC8vIFRo
ZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHR3byBjbGlwcyBiZWNvbWVzIGVtcHR5LgorICAgIGNvbnRl
eHQuc2F2ZSgpOworICAgIGNvbnRleHQuY2xpcChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTApKTsK
ICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KDMwLCAyMCwgMTAsIDEwKSk7CiAgICAgY29udGV4
dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKLSAgICBFWFBF
Q1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFz
UmVjdCgpKTsKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKLQotICAgIGNvbnRleHQuY2xlYXJSZWN0
KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCkpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
KSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1Rf
UElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVj
dCgpKTsKIAogICAgIC8vIFRoZSB0cmFuc2Zvcm0gYW5kIHRoZSBjbGlwIG5lZWQgdG8gaW50ZXJh
Y3QgY29ycmVjdGx5ICh0cmFuc2Zvcm0gZmlyc3QpCiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAg
Y29udGV4dC50cmFuc2xhdGUoMTAsIDEwKTsKICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KDIw
LCAyMCwgMTAsIDEwKSk7CiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5
MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIp
OworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAs
IDMwLCAxMCwgMTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwog
ICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVn
aW9uKCkuYXNSZWN0KCkpOwotICAgIGNvbnRleHQucmVzdG9yZSgpOwogCisgICAgY29udGV4dC5z
YXZlKCk7CisgICAgY29udGV4dC50cmFuc2xhdGUoMTAsIDEwKTsKKyAgICBjb250ZXh0LmNsaXAo
RmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSk7CiAgICAgY29udGV4dC5jbGVhclJlY3QoRmxvYXRS
ZWN0KDEwLCAxMCwgOTAsIDkwKSk7CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCkpOwogCiAgICAgLy8gVGhlIHRyYW5zZm9ybSBhbmQgdGhlIGNsaXAgbmVlZCB0byBpbnRlcmFj
dCBjb3JyZWN0bHkgKGNsaXAgZmlyc3QpCkBAIC0xODAsMTEgKzE4NywxNSBAQCBURVNUKFBsYXRm
b3JtQ29udGV4dFNraWFUZXN0LCB0cmFja09wYXF1ZUNsaXBUZXN0KQogICAgIGNvbnRleHQuY2xp
cChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTApKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgxMCwg
MTApOwogICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgb3Bh
cXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBjb250
ZXh0LnJlc3RvcmUoKTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgMTAsIDEw
KSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKICAgICBFWFBFQ1Rf
UElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVj
dCgpKTsKLSAgICBjb250ZXh0LnJlc3RvcmUoKTsKIAorICAgIGNvbnRleHQuc2F2ZSgpOworICAg
IGNvbnRleHQuY2xpcChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTApKTsKKyAgICBjb250ZXh0LnRy
YW5zbGF0ZSgxMCwgMTApOwogICAgIGNvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgxMCwgMTAs
IDkwLCA5MCkpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKIAogICAg
IFBhdGggcGF0aDsKQEAgLTE5NSwxOCArMjA2LDE4IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tp
YVRlc3QsIHRyYWNrT3BhcXVlQ2xpcFRlc3QpCiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgY29u
dGV4dC5jbGlwUGF0aChwYXRoLCBSVUxFX0VWRU5PREQpOwogICAgIGNvbnRleHQuZmlsbFJlY3Qo
RmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBD
b21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3Qo
KSk7CiAgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFx
dWVSZWdpb24oKS5hc1JlY3QoKSk7Ci0gICAgY29udGV4dC5yZXN0b3JlKCk7CiAKICAgICAvLyBB
bm90aGVyIG5vbi1yZWN0YW5ndWxhciBjbGlwLgogICAgIGNvbnRleHQuc2F2ZSgpOwogICAgIGNv
bnRleHQuY2xpcChJbnRSZWN0KDMwLCAzMCwgMjAsIDIwKSk7CiAgICAgY29udGV4dC5jbGlwT3V0
KEludFJlY3QoMzAsIDMwLCAxMCwgMTApKTsKICAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVj
dCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRl
U291cmNlT3Zlcik7CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogICAg
IEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9u
KCkuYXNSZWN0KCkpOwotICAgIGNvbnRleHQucmVzdG9yZSgpOwogCiAgICAgT3duUHRyPEltYWdl
QnVmZmVyPiBhbHBoYUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShJbnRTaXplKDEwMCwgMTAw
KSk7CiAgICAgYWxwaGFJbWFnZS0+Y29udGV4dCgpLT5maWxsUmVjdChJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSwgYWxwaGEsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwpAQCAtMjE1LDkgKzIyNiw5IEBA
IFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVlQ2xpcFRlc3QpCiAgICAg
Y29udGV4dC5zYXZlKCk7CiAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihhbHBoYUltYWdl
LmdldCgpLCBGbG9hdFJlY3QoMzAsIDMwLCAxMCwgMTApKTsKICAgICBjb250ZXh0LmZpbGxSZWN0
KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
Q29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCkpOwogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3Bh
cXVlUmVnaW9uKCkuYXNSZWN0KCkpOwotICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCiBURVNU
KFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCB0cmFja09wYXF1ZUpvaW5UZXN0KQpAQCAtNjQxLDQg
KzY1MiwzNCBAQCBURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCBsYXllclRyYW5zZm9ybVNj
YWxlT3BhcXVlVGVzdCkKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29u
dGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CiB9CiAKK1RFU1QoUGxhdGZvcm1Db250ZXh0
U2tpYVRlc3QsIGNvbnRleHRUcmFuc3BhcmVuY3lMYXllclRlc3QpCit7CisgICAgU2tCaXRtYXAg
Yml0bWFwOworICAgIGJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmln
LCA0MDAsIDQwMCk7CisgICAgYml0bWFwLmFsbG9jUGl4ZWxzKCk7CisgICAgYml0bWFwLmVyYXNl
Q29sb3IoMCk7CisgICAgU2tDYW52YXMgY2FudmFzKGJpdG1hcCk7CisgICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoMik7CisKKyAgICBQbGF0Zm9ybUNv
bnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dCgmY2FudmFzKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQu
c2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNldE9wYXF1
ZVJlZ2lvblRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0
KCZwbGF0Zm9ybUNvbnRleHQpOworCisgICAgQ29sb3Igb3BhcXVlKDEuMGYsIDAuMGYsIDAuMGYs
IDEuMGYpOworCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTAp
LCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDAsIDQwLCAyMCwgMjApLCBwbGF0Zm9ybUNvbnRleHQu
b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFw
LCB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QocGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lv
bigpLmFzUmVjdCgpKSk7CisKKyAgICBjb250ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3QoMjAsIDIw
LCAxMCwgMTApKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29udGV4
dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXIoMC41KTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgyMCwgMjAsIDEw
LCAxMCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7
CisgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZDc5ZWFjN2E0OTY5NGNjM2FkMDEzZDNlYjY1MTBl
NzI5YWM5OWMzLi5iZDQ2OTJjMjcxNWZjYjBiZmZjZmI3MzQ2YmMxZjQ1ODM2ODg3Y2EzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMjEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIG9wYXF1ZSBwYWludCB0cmFja2Vy
IGF3YXJlIG9mIFNrQ2FudmFzIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzkxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1l
LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvY3VsbGluZy9jbGVh
ci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGlu
Zy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21w
b3NpdGluZy9jdWxsaW5nL3Jlc291cmNlcy9jbGVhci1maXhlZC1pZnJhbWUtY29udGVudC5odG1s
OiBBZGRlZC4KKwogMjAxMi0wMi0yMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS1leHBlY3Rl
ZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFt
ZS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThhYWNkOWNhNjMzMzNhMzAyYzkzNDVjYTg1ZjY1
YzFmNmNiMjdjNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg1OQp6Y21lQVNATj8ob2xIeWB1
VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVCF2KG0KejxrUz9p
dn05dW9iSVppIUd7WTFsUSF7ZjVXN0N2R1F4Z2pfZ0F8XlZBTkRkWmFQOVNVYVNXLUxeWShAI1ot
VzU/CnppPSVeJSlyQ09tN1lCc2REKUtIfUlIUiVTYExsMUk/YVViKD5aUSlsdXpoJmd1JHFENEtv
Kk1fZ00mezNCZzJ0Vgp6IyVMZ25yaTlVNEZxI1dTYkhRalg3fGpLdnhuUGp3Zl5UblUqKWxSRD0q
c0NaR3xWYF8jTCZTeHsxYFg1cW5KNj8KVll1dm9mMCZNKjxjKUkkenRhRDBlMHNzcSRWRDEwXwoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlm
cmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hYWNlNWUxODJhOTVmOWJiZDRlNWVjZWYzNzY0MDJlZDAxOWY3YzA1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUu
aHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPjxoZWFkPjx0aXRs
ZT5Db21wb3NpdG9yIElmcmFtZSBTYWRmYWNlPC90aXRsZT4KKzxzdHlsZT4KK2JvZHkgeyBtYXJn
aW46IDA7IHBhZGRpbmc6IDA7IH0KKy5jb21wb3NpdGVkIHsKKyAgLXdlYmtpdC10cmFuc2Zvcm06
IHRyYW5zbGF0ZVooMCk7CisgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICBwb3NpdGlvbjpm
aXhlZDsKKyAgbGVmdDowOyB0b3A6MDsgcmlnaHQ6MDsgYm90dG9tOjA7Cit9CitpZnJhbWUgewor
ICBwb3NpdGlvbjpmaXhlZDsKKyAgbGVmdDogMDsgdG9wOiAwOworICB3aWR0aDoxMDAlOworICBo
ZWlnaHQ6IDEwMCU7CisgIGJvcmRlcjowOworfQorPC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIH0KKzwvc2NyaXB0Pgor
PC9oZWFkPgorCis8Ym9keT4KKzxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQiPjwvZGl2PgorCis8IS0t
IFlvdSBzaG91bGQgc2VlIGEgbGlnaHQgZ3JlZW4gYm94IGZpbGxpbmcgdGhlIHRvcC9sZWZ0IG9m
IHRoZSB3aW5kb3csIGluc2lkZSBhIGRhcmtlciBncmVlbiBiYWNrZ3JvdW5kLgorICAgICBJZiB0
aGUgImdsYXNzIiBpbiB0aGUgaWZyYW1lIGlzIGNvbnNpZGVyZWQgb3BhcXVlLCB0aGVuIGRyYXdp
bmcgZXJyb3JzIHdpbGwgb2NjdXIgYW5kIHRpbGVzIGJlY29tZSBibGFjaworICAgICAobGlnaHQg
Z3JheSB3aXRoIHRoZSBnbGFzcykuCisgIC0tPgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9jbGVh
ci1maXhlZC1pZnJhbWUtY29udGVudC5odG1sIiBmcmFtZWJvcmRlcj0iMCI+PC9pZnJhbWU+Cis8
L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1
bGxpbmcvcmVzb3VyY2VzL2NsZWFyLWZpeGVkLWlmcmFtZS1jb250ZW50Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Jlc291cmNlcy9jbGVhci1maXhlZC1pZnJhbWUtY29u
dGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmYTA0ZDM5YzQ1ODZhNjUyZjdlOTU4NjVmY2I3NzNhMzhk
NjQ0YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5n
L3Jlc291cmNlcy9jbGVhci1maXhlZC1pZnJhbWUtY29udGVudC5odG1sCkBAIC0wLDAgKzEsMTkg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+Cis8c3R5bGU+
Citib2R5IHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfQorCisjZ2xhc3MgeworICBvcGFjaXR5OjAu
NDsKKyAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsKKyAgcG9zaXRpb246YWJzb2x1dGU7CisgIHRv
cDowcHg7IGxlZnQ6MHB4OyByaWdodDo1MHB4OyBib3R0b206IDUwcHg7Cit9Cis8L3N0eWxlPgor
PC9oZWFkPgorCis8Ym9keT4KKzxkaXYgaWQ9ImdsYXNzIj48L2Rpdj4KKzwvYm9keT4KKzwvc2Ny
aXB0PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128549</attachid>
            <date>2012-02-23 13:46:20 -0800</date>
            <delta_ts>2012-02-23 16:26:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79145-20120223164619.patch</filename>
            <type>text/plain</type>
            <size>28628</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUzNjIyMzVmMDg3MmJh
NTYwMzk0Y2M2MmU2NWI3ZGU1NDZhNjJiZC4uM2NiNjFhYmJkZTQzMTJkMmJiNTg1MmQxYWZlNGYz
Y2IzNzJhNTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTAyLTIxICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBvcGFxdWUgcGFpbnQgdHJhY2tlciBhd2FyZSBvZiBTa0NhbnZhcyBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgb3BhcXVl
IHBhaW50IHRyYWNrZXIgaWdub3JlZCBTa0NhbnZhcyBsYXllcnMgZW50aXJlbHkuIEJ1dAorICAg
ICAgICBTa0NhbnZhcyBsYXllcnMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgdGhpbmdzIGxpa2UgYWxw
aGEuIFNvIHdlIG1ha2UgaXQKKyAgICAgICAga25vdyBhYm91dCBsYXllcnMsIGFuZCByZWFwcGx5
IHRoZSBvcGFxdWUgcmVjdCBpbiBhIGdpdmVuIGxheWVyIGludG8KKyAgICAgICAgdGhlIG5leHQg
bGF5ZXIgZG93biB3aGVuIHJlc3RvcmUoKSBpcyBjYWxsZWQsIHVzaW5nIHRoZSBwcm9wZXJ0aWVz
IG9mCisgICAgICAgIHRoYXQgbGF5ZXIuCisKKyAgICAgICAgSW1hZ2UgY2xpcHBpbmcgaXMgZG9u
ZSB2aWEgYSBsYXllciwgc28gd2UgY2FuIG5vdyBhbHNvIHJlbW92ZSB0aGUKKyAgICAgICAgc3Bl
Y2lhbC1jYXNlIGNvZGUgYXJvdW5kIGltYWdlIGNsaXBwaW5nIGluIFBsYXRmb3JtQ29udGV4dFNr
aWEgYW5kCisgICAgICAgIE9wYXF1ZVJlZ2lvblNraWEuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBQ
bGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9j
dWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1Vw
ZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJl
bmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9y
bVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09w
YXF1ZVJlZ2lvblNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6
YXNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQpOgorICAgICAgICAo
V2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkU2F2ZUxheWVyKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6d2lsbFJlc3RvcmVMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaDoKKyAgICAgICAg
KE9wYXF1ZVJlZ2lvblNraWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxh
dGZvcm1Db250ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRT
a2lhOjpzYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmJlZ2lu
TGF5ZXJDbGlwcGVkVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRT
a2lhOjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmFw
cGx5Q2xpcEZyb21JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lh
OjpkaWRTYXZlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybUNvbnRleHRTa2lhOjp3aWxsUmVzdG9yZUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoKKyAgICAgICAgKFBsYXRmb3Jt
Q29udGV4dFNraWEpOgorCiAyMDEyLTAyLTIzICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVv
bGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gQnVpbGQgZml4LCB1c2UgdGhlIHN0cmluZ3Mg
aW4gTG9jYWxpemVkU3RyaW5ncy5jcHAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFj
ZGU2ZTQ2NDdmNzY1NjE1YWJlM2I0OTQwMjY3ODU5MGVlN2RkZjQuLjZlMjdmMzE4YjViNzJmNTQy
ODg4YzViYTc5MWI2Y2U2YWE0YTk3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTItMDItMjEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIG9wYXF1ZSBwYWludCB0cmFja2VyIGF3YXJl
IG9mIFNrQ2FudmFzIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzkxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDItMjIgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENs
ZWFuIHVwIEdyYXBoaWNzQ29udGV4dDNEIGluaXRpYWxpemF0aW9uIHBhdGhzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDAwYTNl
NDYzYjg1OTMxYjA0ZWJjMDVhMDE5ZWNkOTQ0YTZiNWY0NDEuLmY0MmMwODQwMmFhMGE1Y2E1NGVj
ZjE4MmNmZjE0ZTcwMzRkY2NjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC05Niw2ICs5Niw3IEBAIHZvaWQgQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0CiAKICAgICBpZiAoIWxheWVySXNPcGFxdWUpCiAgICAgICAgICpyZXN1bHRpbmdP
cGFxdWVSZWN0ID0gY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5vcGFxdWVSZWdpb24oKS5h
c1JlY3QoKTsKKyAgICBjYW52YXNQYWludGVyLnNraWFDb250ZXh0KCktPnNldFRyYWNrT3BhcXVl
UmVnaW9uKGZhbHNlKTsKIH0KIAogdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Ojp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDM1Y2Qz
NWFkM2MwNDYxNmU1M2Q0YTFiYzFlNWNmOGViZWUyOGVhODYuLjg3NzU5NDU4MDIxYWE0NGNjZjdl
MzJhNzM5ZmNkMmE1NThiZGQwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC02MSw2ICs2MSw3IEBAIHZvaWQgU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSCiAKICAgICBpZiAoIW1fbGF5ZXJJc09wYXF1ZSkKICAgICAgICAgKnJl
c3VsdGluZ09wYXF1ZVJlY3QgPSBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3BhcXVlUmVnaW9uKGZhbHNlKTsKIH0K
IAogdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpkcmF3UGljdHVyZShT
a0NhbnZhcyogY2FudmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKaW5kZXggNGY3OWNmYjBi
NWU2OWM1YzU0ZTczYmQwZTJjYmE5YTM5NWFmNjVlYi4uMDlmYzVhNmM5MWZhMThhZWNkNzk0NzVi
NTI0MmFlOTMwZTM4MzMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCkBAIC0yODEsMTIg
KzI4MSwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5j
eUxheWVyKGZsb2F0IG9wYWNpdHkpCiAgICAgICAgICZsYXllclBhaW50LAogICAgICAgICBzdGF0
aWNfY2FzdDxTa0NhbnZhczo6U2F2ZUZsYWdzPihTa0NhbnZhczo6a0hhc0FscGhhTGF5ZXJfU2F2
ZUZsYWcgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0NhbnZh
czo6a0Z1bGxDb2xvckxheWVyX1NhdmVGbGFnKSk7CisgICAgcGxhdGZvcm1Db250ZXh0KCktPmRp
ZFNhdmVMYXllcigpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFu
c3BhcmVuY3lMYXllcigpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOworICAgIHBsYXRmb3JtQ29udGV4dCgpLT53aWxsUmVzdG9yZUxheWVyKCk7CiAgICAg
cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5yZXN0b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNr
aWEuY3BwCmluZGV4IDIxZmFjYWFkYjhiMTg5MzZmNDI4MjQ5NGQ1MmQyNDcwZGFjNzdkYzAuLmIy
MzQ3N2M4NzMwODMxNWIwOTY3YmU0Mjg1ZjM5MzdiOWY5NmI3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lh
LmNwcApAQCAtNTEsNiArNTEsMTAgQEAgT3BhcXVlUmVnaW9uU2tpYTo6fk9wYXF1ZVJlZ2lvblNr
aWEoKQogCiBJbnRSZWN0IE9wYXF1ZVJlZ2lvblNraWE6OmFzUmVjdCgpIGNvbnN0CiB7CisgICAg
QVNTRVJUKG1fb3BhcXVlUmVjdFN0YWNrLmlzRW1wdHkoKSk7CisgICAgaWYgKCFtX29wYXF1ZVJl
Y3RTdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisKICAgICAvLyBS
ZXR1cm5zIHRoZSBsYXJnZXN0IGVuY2xvc2VkIHJlY3QuCiAgICAgaW50IGxlZnQgPSBTa1NjYWxh
ckNlaWwobV9vcGFxdWVSZWN0LmZMZWZ0KTsKICAgICBpbnQgdG9wID0gU2tTY2FsYXJDZWlsKG1f
b3BhcXVlUmVjdC5mVG9wKTsKQEAgLTE0Nyw3ICsxNTEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
cGFpbnRJc09wYXF1ZShjb25zdCBTa1BhaW50JiBwYWludCwgY29uc3QgU2tCaXRtYXAqIGJpdG1h
cCA9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJh
d1JlY3QoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgZmlsbFJlY3QsIGNvbnN0IFNrUGFpbnQm
IHBhaW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpk
aWREcmF3UmVjdChQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQYWludCYg
cGFpbnQsIGNvbnN0IFNrQml0bWFwKiBiaXRtYXApCiB7CiAgICAgLy8gQW55IHN0cm9raW5nIG1h
eSBwdXQgYWxwaGEgaW4gcGl4ZWxzIGV2ZW4gaWYgdGhlIGZpbGxpbmcgcGFydCBkb2VzIG5vdC4K
ICAgICBpZiAocGFpbnQuZ2V0U3R5bGUoKSAhPSBTa1BhaW50OjprRmlsbF9TdHlsZSkgewpAQCAt
MTY5LDcgKzE3Myw3IEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmCiAgICAgZGlkRHJhdyhjb250
ZXh0LCB0cmFuc2Zvcm0sIGZpbGxSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcyk7CiB9
CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3QgUGxhdGZvcm1Db250
ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCit2b2lkIE9wYXF1ZVJlZ2lvblNr
aWE6OmRpZERyYXdQYXRoKFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1BhdGgmIHBhdGgsIGNvbnN0IFNrUGFpbnQm
IHBhaW50KQogewogICAgIFNrUmVjdCByZWN0OwogICAgIGlmIChwYXRoLmlzUmVjdCgmcmVjdCkp
IHsKQEAgLTE4OCw3ICsxOTIsNyBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQYXRo
KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZgogICAgIH0KIH0K
IAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRmb3JtQ29u
dGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBTa0Nh
bnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnQgcG9pbnRz
W10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3
UG9pbnRzKFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBTa0NhbnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNv
bnN0IFNrUG9pbnQgcG9pbnRzW10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGlmICgh
bnVtUG9pbnRzKQogICAgICAgICByZXR1cm47CkBAIC0yMTcsNyArMjIxLDcgQEAgdm9pZCBPcGFx
dWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNv
bnRleHQsIGNvbnN0IEEKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJh
d0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgYm91bmRzLCBjb25zdCBTa1BhaW50
JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQoUGxhdGZvcm1D
b250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNv
bnN0IFNrUmVjdCYgYm91bmRzLCBjb25zdCBTa1BhaW50JiBwYWludCkKIHsKICAgICBib29sIG9w
YXF1ZSA9IHBhaW50SXNPcGFxdWUocGFpbnQpOwogICAgIGJvb2wgZmlsbHNCb3VuZHMgPSBmYWxz
ZTsKQEAgLTIzMSw3ICsyMzUsNTkgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91
bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdAogICAgIH0KIH0K
IAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNr
aWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1Jl
Y3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZp
bGxzQm91bmRzKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWRTYXZlTGF5ZXIoKQoreworICAg
IG1fb3BhcXVlUmVjdFN0YWNrLmFwcGVuZChTa1JlY3Q6Ok1ha2VFbXB0eSgpKTsKK30KKwordm9p
ZCBPcGFxdWVSZWdpb25Ta2lhOjp3aWxsUmVzdG9yZUxheWVyKFBsYXRmb3JtQ29udGV4dFNraWEq
IGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAgIEFTU0VS
VCghbV9vcGFxdWVSZWN0U3RhY2suaXNFbXB0eSgpKTsKKyAgICBpZiAobV9vcGFxdWVSZWN0U3Rh
Y2suaXNFbXB0eSgpKSB7CisgICAgICAgIG1fb3BhcXVlUmVjdCA9IFNrUmVjdDo6TWFrZUVtcHR5
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBSZXN0b3JlIHRoZSB0b3Agb2Yg
dGhlIHN0YWNrIGJhY2sgYXMgdGhlIGN1cnJlbnQgb3BhcXVlIHJlY3QsIGFuZCBzYXZlIHRoZSBy
ZWN0IGZvciB0aGUgbGF5ZXIgYmVpbmcgcmVzdG9yZWQKKyAgICAvLyBzbyB3ZSBjYW4gZmlndXJl
IG91dCBob3cgaXQgY29udHJpYnV0ZXMgdG8gdGhlIG5ld2x5IGN1cnJlbnQgbGF5ZXIuCisgICAg
U2tSZWN0IG9wYXF1ZUxheWVyUmVjdCA9IG1fb3BhcXVlUmVjdDsKKyAgICBtX29wYXF1ZVJlY3Qg
PSBtX29wYXF1ZVJlY3RTdGFjay5sYXN0KCk7CisgICAgbV9vcGFxdWVSZWN0U3RhY2sucmVtb3Zl
TGFzdCgpOworCisgICAgaWYgKG9wYXF1ZUxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIFdlIGhhdmUgYSByZWN0IGluIHRhcmdldCBzcGFjZSwgbW92ZSBpdCB0
byBkZXZpY2Ugc3BhY2UuCisgICAgaWYgKCF0cmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBTa01hdHJpeCB0YXJnZXRUb0RldmljZVRyYW5zZm9ybSA9IHRyYW5z
Zm9ybS5pbnZlcnNlKCk7CisgICAgaWYgKCF0YXJnZXRUb0RldmljZVRyYW5zZm9ybS5tYXBSZWN0
KCZvcGFxdWVMYXllclJlY3QpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBHZXQgdGhlIGxh
eWVyIHRoYXQgd2lsbCBiZSBwb3BwZWQgb2ZmIHRoZSBzdGFjay4KKyAgICBTa0NhbnZhczo6TGF5
ZXJJdGVyIGl0KGNvbnRleHQtPmNhbnZhcygpLCBmYWxzZSk7CisKKyAgICAvLyBBcHBseSB0aGUg
bGF5ZXIncyBjbGlwICh3aGljaCBpcyBpbiBkZXZpY2Ugc3BhY2UpCisgICAgY29uc3QgU2tSZWdp
b24mIGRldmljZUNsaXAgPSBpdC5jbGlwKCk7CisgICAgaWYgKGRldmljZUNsaXAuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFkZXZpY2VDbGlwLmlzUmVjdCgpKQorICAgICAg
ICByZXR1cm47CisgICAgU2tJUmVjdCBjbGlwQm91bmRzID0gaXQuY2xpcCgpLmdldEJvdW5kcygp
OworICAgIGlmICghb3BhcXVlTGF5ZXJSZWN0LmludGVyc2VjdChTa0ludFRvU2NhbGFyKGNsaXBC
b3VuZHMuZkxlZnQpLCBTa0ludFRvU2NhbGFyKGNsaXBCb3VuZHMuZlRvcCksIFNrSW50VG9TY2Fs
YXIoY2xpcEJvdW5kcy5mUmlnaHQpLCBTa0ludFRvU2NhbGFyKGNsaXBCb3VuZHMuZkJvdHRvbSkp
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBOb3cgd2UgaGF2ZSBhIHJlY3QgaW4gdGhlIGNh
bnZhcyBkZXZpY2Ugc3BhY2UsIGJ1dCBkaWREcmF3KCkgd2FudHMgYSByZWN0IGluIHRoZSBzb3Vy
Y2Ugc3BhY2UuCisgICAgU2tNYXRyaXggZGV2aWNlVG9Tb3VyY2VUcmFuc2Zvcm07CisgICAgaWYg
KCFjb250ZXh0LT5jYW52YXMoKS0+Z2V0VG90YWxNYXRyaXgoKS5pbnZlcnQoJmRldmljZVRvU291
cmNlVHJhbnNmb3JtKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghZGV2aWNlVG9Tb3VyY2VU
cmFuc2Zvcm0ubWFwUmVjdCgmb3BhcXVlTGF5ZXJSZWN0KSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZGlkRHJhd1JlY3QoY29udGV4dCwgdHJhbnNmb3JtLCBvcGFxdWVMYXllclJlY3QsIGl0LnBh
aW50KCksIDApOworfQorCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXcoUGxhdGZvcm1D
b250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNv
bnN0IFNrUmVjdCYgcmVjdCwgY29uc3QgU2tQYWludCYgcGFpbnQsIGJvb2wgZHJhd3NPcGFxdWUs
IGJvb2wgZmlsbHNCb3VuZHMpCiB7CiAgICAgU2tSZWN0IHRhcmdldFJlY3QgPSByZWN0OwogCkBA
IC0yNDksOCArMzA1LDYgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KGNvbnN0IFBs
YXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVQKICAgICAgICAgaWYgKCF0
YXJnZXRSZWN0LmludGVyc2VjdChTa0ludFRvU2NhbGFyKGRldmljZUNsaXAuZkxlZnQpLCBTa0lu
dFRvU2NhbGFyKGRldmljZUNsaXAuZlRvcCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mUmln
aHQpLCBTa0ludFRvU2NhbGFyKGRldmljZUNsaXAuZkJvdHRvbSkpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAoIWNvbnRleHQtPmNsaXBwZWRUb0ltYWdlKCkuaXNPcGFxdWUo
KSkKLSAgICAgICAgZmlsbHNCb3VuZHMgPSBmYWxzZTsKIAogICAgIC8vIEFwcGx5IHRoZSB0cmFu
c2Zvcm0gdG8gdGhlIHRyYWNraW5nIHNwYWNlLgogICAgIFNrTWF0cml4IGNhbnZhc1RvVGFyZ2V0
VHJhbnNmb3JtID0gdHJhbnNmb3JtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAppbmRleCA0NWIwNjkwMDQyYTY5
OGE0Y2EwMDNkM2U4NTBlZThkNGMzNjc5OTZkLi44NTg5YjczNGJlNDI0NTUwMmRhMDE0YzYzZTU5
MTg1YzQ0ZDY5YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaApAQCAtNTMsMTcgKzUzLDI0IEBAIHB1Ymxp
YzoKICAgICAvLyBUaGUgcmVzdWx0aW5nIG9wYXF1ZSByZWdpb24gYXMgYSBzaW5nbGUgcmVjdC4K
ICAgICBJbnRSZWN0IGFzUmVjdCgpIGNvbnN0OwogCi0gICAgdm9pZCBkaWREcmF3UmVjdChjb25z
dCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tS
ZWN0JiwgY29uc3QgU2tQYWludCYsIGNvbnN0IFNrQml0bWFwKik7Ci0gICAgdm9pZCBkaWREcmF3
UGF0aChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgU2tQYXRoJiwgY29uc3QgU2tQYWludCYpOwotICAgIHZvaWQgZGlkRHJhd1BvaW50cyhj
b25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgU2tDYW52
YXM6OlBvaW50TW9kZSwgaW50IG51bVBvaW50cywgY29uc3QgU2tQb2ludFtdLCBjb25zdCBTa1Bh
aW50Jik7Ci0gICAgdm9pZCBkaWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lh
KiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYp
OworICAgIC8vIEZJWE1FOiBtYWtlIGFsbCB0aGUgUGxhdGZvcm1Db250ZXh0U2tpYSogaW50byBh
IGNvbnN0IHBvaW50ZXIgd2hlbiBTa2lhIGZpeGVzIExheWVySXRlcidzIFNrQ2FudmFzKi4KKwor
ICAgIHZvaWQgZGlkRHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBjb25zdCBTa0JpdG1hcCop
OworICAgIHZvaWQgZGlkRHJhd1BhdGgoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IFNrUGF0aCYsIGNvbnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRp
ZERyYXdQb2ludHMoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYs
IFNrQ2FudmFzOjpQb2ludE1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29u
c3QgU2tQYWludCYpOworICAgIHZvaWQgZGlkRHJhd0JvdW5kZWQoUGxhdGZvcm1Db250ZXh0U2tp
YSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQm
KTsKKworICAgIHZvaWQgZGlkU2F2ZUxheWVyKCk7CisgICAgdm9pZCB3aWxsUmVzdG9yZUxheWVy
KFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAogcHJpdmF0
ZToKLSAgICB2b2lkIGRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdz
T3BhcXVlLCBib29sIGZpbGxzQm91bmRzKTsKKyAgICB2b2lkIGRpZERyYXcoUGxhdGZvcm1Db250
ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNr
UGFpbnQmLCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZpbGxzQm91bmRzKTsKICAgICB2b2lkIGRp
ZERyYXdVbmJvdW5kZWQoY29uc3QgU2tQYWludCYsIGJvb2wgZHJhd3NPcGFxdWUpOwogICAgIHZv
aWQgbWFya1JlY3RBc09wYXF1ZShjb25zdCBTa1JlY3QmKTsKICAgICB2b2lkIG1hcmtSZWN0QXNO
b25PcGFxdWUoY29uc3QgU2tSZWN0Jik7CiAKKyAgICAvLyBBIHN0YWNrIG9mIG9wYXF1ZSByZWN0
cyBmb3Igd2hlbiB0aGUgdW5kZXJseWluZyBjYW52YXMgaGFzIG11bHRpcGxlIGxheWVycy4gVGhl
IGN1cnJlbnQgbGF5ZXIgaXMgYWx3YXlzIHJlcHJlc2VudGVkIGluIG1fb3BhcXVlUmVjdC4KKyAg
ICBWZWN0b3I8U2tSZWN0PiBtX29wYXF1ZVJlY3RTdGFjazsKICAgICBTa1JlY3QgbV9vcGFxdWVS
ZWN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKaW5kZXggYzMyM2EwZDdlZmZiM2Rj
NmQ5MTM4ZDgxZTk3MTE5Y2NkYmUxM2Y2Yi4uODQxN2VhYTk3YTgxYzdhZWE0M2EwZWI5NjlmNTNj
ZWIwNzk5NTVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCkBAIC0yMjAsNiArMjIwLDcg
QEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzYXZlKCkKIAogICAgIC8vIFNhdmUgb3VyIG5h
dGl2ZSBjYW52YXMuCiAgICAgY2FudmFzKCktPnNhdmUoKTsKKyAgICBkaWRTYXZlTGF5ZXIoKTsK
IH0KIAogdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpiZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2Uo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LApAQCAtMjQyLDYgKzI0Myw3IEBAIHZvaWQgUGxhdGZvcm1D
b250ZXh0U2tpYTo6YmVnaW5MYXllckNsaXBwZWRUb0ltYWdlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwKIAogICAgIGNhbnZhcygpLT5zYXZlTGF5ZXJBbHBoYSgmYm91bmRzLCAyNTUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFNrQ2FudmFzOjpTYXZlRmxhZ3M+KFNr
Q2FudmFzOjprSGFzQWxwaGFMYXllcl9TYXZlRmxhZyB8IFNrQ2FudmFzOjprRnVsbENvbG9yTGF5
ZXJfU2F2ZUZsYWcpKTsKKyAgICBkaWRTYXZlTGF5ZXIoKTsKICAgICAvLyBDb3B5IG9mZiB0aGUg
aW1hZ2UgYXMgfGltYWdlQnVmZmVyfCBtYXkgYmUgZGVsZXRlZCBiZWZvcmUgcmVzdG9yZSBpcyBp
bnZva2VkLgogICAgIGNvbnN0IFNrQml0bWFwKiBiaXRtYXAgPSBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Yml0bWFwKCk7CiAgICAgaWYgKCFiaXRtYXAtPnBpeGVs
UmVmKCkpIHsKQEAgLTI2MywxNSArMjY1LDExIEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6
Y2xpcFBhdGhBbnRpQWxpYXNlZChjb25zdCBTa1BhdGgmIGNsaXBQYXRoKQogICAgIGNhbnZhcygp
LT5jbGlwUGF0aChjbGlwUGF0aCwgU2tSZWdpb246OmtJbnRlcnNlY3RfT3AsIHRydWUpOwogfQog
Ci1jb25zdCBTa0JpdG1hcCYgUGxhdGZvcm1Db250ZXh0U2tpYTo6Y2xpcHBlZFRvSW1hZ2UoKSBj
b25zdAotewotICAgIHJldHVybiBtX3N0YXRlLT5tX2ltYWdlQnVmZmVyQ2xpcDsKLX0KLQogdm9p
ZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpyZXN0b3JlKCkKIHsKICAgICBpZiAoIW1fc3RhdGUtPm1f
aW1hZ2VCdWZmZXJDbGlwLmVtcHR5KCkpIHsKICAgICAgICAgYXBwbHlDbGlwRnJvbUltYWdlKG1f
c3RhdGUtPm1fY2xpcCwgbV9zdGF0ZS0+bV9pbWFnZUJ1ZmZlckNsaXApOworICAgICAgICB3aWxs
UmVzdG9yZUxheWVyKCk7CiAgICAgICAgIGNhbnZhcygpLT5yZXN0b3JlKCk7CiAgICAgfQogCkBA
IC0yNzksNiArMjc3LDcgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpyZXN0b3JlKCkKICAg
ICBtX3N0YXRlID0gJm1fc3RhdGVTdGFjay5sYXN0KCk7CiAKICAgICAvLyBSZXN0b3JlIG91ciBu
YXRpdmUgY2FudmFzLgorICAgIHdpbGxSZXN0b3JlTGF5ZXIoKTsKICAgICBjYW52YXMoKS0+cmVz
dG9yZSgpOwogfQogCkBAIC01OTUsOCArNTk0LDEwIEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tp
YTo6YXBwbHlDbGlwRnJvbUltYWdlKGNvbnN0IFNrUmVjdCYgcmVjdCwgY29uc3QgU2tCaXRtYXAm
CiAgICAgU2tQYWludCBwYWludDsKICAgICBwYWludC5zZXRYZmVybW9kZU1vZGUoU2tYZmVybW9k
ZTo6a0RzdEluX01vZGUpOwogICAgIG1fY2FudmFzLT5zYXZlKFNrQ2FudmFzOjprTWF0cml4X1Nh
dmVGbGFnKTsKKyAgICBkaWRTYXZlTGF5ZXIoKTsKICAgICBtX2NhbnZhcy0+cmVzZXRNYXRyaXgo
KTsKICAgICBtX2NhbnZhcy0+ZHJhd0JpdG1hcFJlY3QoaW1hZ2VCdWZmZXIsIDAsIHJlY3QsICZw
YWludCk7CisgICAgd2lsbFJlc3RvcmVMYXllcigpOwogICAgIG1fY2FudmFzLT5yZXN0b3JlKCk7
CiB9CiAKQEAgLTYyOSw0ICs2MzAsMTYgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWRE
cmF3Qm91bmRlZChjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW4KICAgICAg
ICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd0JvdW5kZWQodGhpcywgbV9vcGFxdWVSZWdpb25UcmFu
c2Zvcm0sIHJlY3QsIHBhaW50KTsKIH0KIAordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWRT
YXZlTGF5ZXIoKQoreworICAgIGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKQorICAgICAgICBtX29w
YXF1ZVJlZ2lvbi5kaWRTYXZlTGF5ZXIoKTsKK30KKwordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lh
Ojp3aWxsUmVzdG9yZUxheWVyKCkKK3sKKyAgICBpZiAobV90cmFja09wYXF1ZVJlZ2lvbikKKyAg
ICAgICAgbV9vcGFxdWVSZWdpb24ud2lsbFJlc3RvcmVMYXllcih0aGlzLCBtX29wYXF1ZVJlZ2lv
blRyYW5zZm9ybSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmgKaW5kZXggYjMwNjQ1MGNiMWQ4ZGM5ZmFjZTQ3M2YzYzkyNDNlODc4M2NjNDY1NS4uYjQy
NGU4OWUyZDM0NGFkOTNhMzI2OTg2MWU1NTdiMGE4YzIzZTk4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmgKQEAgLTEwMCw4ICsxMDAsNiBAQCBwdWJsaWM6CiAgICAgLy8gTk9URTogfGltYWdlQnVm
ZmVyfCBtYXkgYmUgZGVsZXRlZCBiZWZvcmUgdGhlIHxyZXN0b3JlfCBpcyBpbnZva2VkLgogICAg
IHZvaWQgYmVnaW5MYXllckNsaXBwZWRUb0ltYWdlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlQnVmZmVyKik7CiAgICAgdm9pZCBjbGlwUGF0aEFudGlBbGlhc2VkKGNvbnN0IFNrUGF0aCYp
OwotICAgIC8vIElmIG5vbi1lbXB0eSwgdGhlIGxheWVyIGlzIGNsaXBwZWQgdG8gdGhlIGJpdG1h
cC4KLSAgICBjb25zdCBTa0JpdG1hcCYgY2xpcHBlZFRvSW1hZ2UoKSBjb25zdDsKIAogICAgIC8v
IFNldHMgdXAgdGhlIGNvbW1vbiBmbGFncyBvbiBhIHBhaW50IGZvciBhbnRpYWxpYXNpbmcsIGVm
ZmVjdHMsIGV0Yy4KICAgICAvLyBUaGlzIGlzIGltcGxpY2l0bHkgY2FsbGVkIGJ5IHNldHVwUGFp
bnRGaWxsIGFuZCBzZXR1cFBhaW50U3Ryb2tlLCBidXQKQEAgLTIwNSw2ICsyMDMsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWREcmF3UG9pbnRzKFNrQ2FudmFzOjpQb2ludE1vZGUsIGludCBudW1Q
b2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWludCYpOwogICAgIC8vIEZvciBkcmF3
aW5nIG9wZXJhdGlvbnMgdGhhdCBkbyBub3QgZmlsbCB0aGUgZW50aXJlIHJlY3QuCiAgICAgdm9p
ZCBkaWREcmF3Qm91bmRlZChjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jik7CisgICAgLy8g
Rm9yIHB1c2hpbmcvcG9wcGluZyBhIG5ldyBsYXllciBpbiB0aGUgU2tDYW52YXMuCisgICAgdm9p
ZCBkaWRTYXZlTGF5ZXIoKTsKKyAgICB2b2lkIHdpbGxSZXN0b3JlTGF5ZXIoKTsKIAogcHJpdmF0
ZToKICAgICAvLyBVc2VkIHdoZW4gcmVzdG9yaW5nIGFuZCB0aGUgc3RhdGUgaGFzIGFuIGltYWdl
IGNsaXAuIE9ubHkgc2hvd3MgdGhlIHBpeGVscyBpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAppbmRleCBkMDk3
YzQ5OWEyZmRmZDQ1NTlhMGMyMzNmYjJlN2E3ZTQ4MzEyOTgyLi43ZDVkZjg4YjY3NDg2NjQwNWUy
Y2UyN2M2ZWI4OWRmYTI4ZGI1YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcApAQCAtMTM3LDkgKzEzNyw5
IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVlQ2xpcFRlc3QpCiAg
ICAgY29udGV4dC5zYXZlKCk7CiAgICAgY29udGV4dC5jbGlwKEZsb2F0UmVjdCgwLCAwLCAxMCwg
MTApKTsKICAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9w
YXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29u
dGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNv
bnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0go
Yml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwotICAgIGNv
bnRleHQucmVzdG9yZSgpOwogCiAgICAgY29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDEwLCAx
MCwgOTAsIDkwKSk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRl
eHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwpAQCAtMTQ3LDMyICsxNDcsMzkgQEAgVEVTVChQ
bGF0Zm9ybUNvbnRleHRTa2lhVGVzdCwgdHJhY2tPcGFxdWVDbGlwVGVzdCkKICAgICBjb250ZXh0
LnNhdmUoKTsKICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSk7CiAg
ICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQucmVz
dG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIwLCAxMCwgMTApLCBwbGF0
Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogICAgIEVYUEVDVF9QSVhFTFNf
TUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwog
CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5jbGlwKEZsb2F0UmVjdCgyMCwgMjAs
IDEwLCAxMCkpOwogICAgIGNvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5
MCkpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
KSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKIAogICAgIC8vIFRo
ZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHR3byBjbGlwcyBiZWNvbWVzIGVtcHR5LgorICAgIGNvbnRl
eHQuc2F2ZSgpOworICAgIGNvbnRleHQuY2xpcChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTApKTsK
ICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KDMwLCAyMCwgMTAsIDEwKSk7CiAgICAgY29udGV4
dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKLSAgICBFWFBF
Q1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFz
UmVjdCgpKTsKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKLQotICAgIGNvbnRleHQuY2xlYXJSZWN0
KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCkpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
KSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1Rf
UElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVj
dCgpKTsKIAogICAgIC8vIFRoZSB0cmFuc2Zvcm0gYW5kIHRoZSBjbGlwIG5lZWQgdG8gaW50ZXJh
Y3QgY29ycmVjdGx5ICh0cmFuc2Zvcm0gZmlyc3QpCiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAg
Y29udGV4dC50cmFuc2xhdGUoMTAsIDEwKTsKICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KDIw
LCAyMCwgMTAsIDEwKSk7CiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5
MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIp
OworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAs
IDMwLCAxMCwgMTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwog
ICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVn
aW9uKCkuYXNSZWN0KCkpOwotICAgIGNvbnRleHQucmVzdG9yZSgpOwogCisgICAgY29udGV4dC5z
YXZlKCk7CisgICAgY29udGV4dC50cmFuc2xhdGUoMTAsIDEwKTsKKyAgICBjb250ZXh0LmNsaXAo
RmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSk7CiAgICAgY29udGV4dC5jbGVhclJlY3QoRmxvYXRS
ZWN0KDEwLCAxMCwgOTAsIDkwKSk7CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCkpOwogCiAgICAgLy8gVGhlIHRyYW5zZm9ybSBhbmQgdGhlIGNsaXAgbmVlZCB0byBpbnRlcmFj
dCBjb3JyZWN0bHkgKGNsaXAgZmlyc3QpCkBAIC0xODAsMTEgKzE4NywxNSBAQCBURVNUKFBsYXRm
b3JtQ29udGV4dFNraWFUZXN0LCB0cmFja09wYXF1ZUNsaXBUZXN0KQogICAgIGNvbnRleHQuY2xp
cChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTApKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgxMCwg
MTApOwogICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgb3Bh
cXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBjb250
ZXh0LnJlc3RvcmUoKTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgMTAsIDEw
KSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKICAgICBFWFBFQ1Rf
UElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVj
dCgpKTsKLSAgICBjb250ZXh0LnJlc3RvcmUoKTsKIAorICAgIGNvbnRleHQuc2F2ZSgpOworICAg
IGNvbnRleHQuY2xpcChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTApKTsKKyAgICBjb250ZXh0LnRy
YW5zbGF0ZSgxMCwgMTApOwogICAgIGNvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgxMCwgMTAs
IDkwLCA5MCkpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKIAogICAg
IFBhdGggcGF0aDsKQEAgLTE5NSwxOCArMjA2LDE4IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tp
YVRlc3QsIHRyYWNrT3BhcXVlQ2xpcFRlc3QpCiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgY29u
dGV4dC5jbGlwUGF0aChwYXRoLCBSVUxFX0VWRU5PREQpOwogICAgIGNvbnRleHQuZmlsbFJlY3Qo
RmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBD
b21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3Qo
KSk7CiAgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFx
dWVSZWdpb24oKS5hc1JlY3QoKSk7Ci0gICAgY29udGV4dC5yZXN0b3JlKCk7CiAKICAgICAvLyBB
bm90aGVyIG5vbi1yZWN0YW5ndWxhciBjbGlwLgogICAgIGNvbnRleHQuc2F2ZSgpOwogICAgIGNv
bnRleHQuY2xpcChJbnRSZWN0KDMwLCAzMCwgMjAsIDIwKSk7CiAgICAgY29udGV4dC5jbGlwT3V0
KEludFJlY3QoMzAsIDMwLCAxMCwgMTApKTsKICAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVj
dCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRl
U291cmNlT3Zlcik7CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogICAg
IEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9u
KCkuYXNSZWN0KCkpOwotICAgIGNvbnRleHQucmVzdG9yZSgpOwogCiAgICAgT3duUHRyPEltYWdl
QnVmZmVyPiBhbHBoYUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShJbnRTaXplKDEwMCwgMTAw
KSk7CiAgICAgYWxwaGFJbWFnZS0+Y29udGV4dCgpLT5maWxsUmVjdChJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSwgYWxwaGEsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwpAQCAtMjE1LDkgKzIyNiw5IEBA
IFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVlQ2xpcFRlc3QpCiAgICAg
Y29udGV4dC5zYXZlKCk7CiAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihhbHBoYUltYWdl
LmdldCgpLCBGbG9hdFJlY3QoMzAsIDMwLCAxMCwgMTApKTsKICAgICBjb250ZXh0LmZpbGxSZWN0
KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
Q29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCkpOwogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3Bh
cXVlUmVnaW9uKCkuYXNSZWN0KCkpOwotICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCiBURVNU
KFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCB0cmFja09wYXF1ZUpvaW5UZXN0KQpAQCAtNjQxLDQg
KzY1MiwzNCBAQCBURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCBsYXllclRyYW5zZm9ybVNj
YWxlT3BhcXVlVGVzdCkKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29u
dGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CiB9CiAKK1RFU1QoUGxhdGZvcm1Db250ZXh0
U2tpYVRlc3QsIGNvbnRleHRUcmFuc3BhcmVuY3lMYXllclRlc3QpCit7CisgICAgU2tCaXRtYXAg
Yml0bWFwOworICAgIGJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmln
LCA0MDAsIDQwMCk7CisgICAgYml0bWFwLmFsbG9jUGl4ZWxzKCk7CisgICAgYml0bWFwLmVyYXNl
Q29sb3IoMCk7CisgICAgU2tDYW52YXMgY2FudmFzKGJpdG1hcCk7CisgICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoMik7CisKKyAgICBQbGF0Zm9ybUNv
bnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dCgmY2FudmFzKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQu
c2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNldE9wYXF1
ZVJlZ2lvblRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0
KCZwbGF0Zm9ybUNvbnRleHQpOworCisgICAgQ29sb3Igb3BhcXVlKDEuMGYsIDAuMGYsIDAuMGYs
IDEuMGYpOworCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTAp
LCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDAsIDQwLCAyMCwgMjApLCBwbGF0Zm9ybUNvbnRleHQu
b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFw
LCB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QocGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lv
bigpLmFzUmVjdCgpKSk7CisKKyAgICBjb250ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3QoMjAsIDIw
LCAxMCwgMTApKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29udGV4
dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXIoMC41KTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgyMCwgMjAsIDEw
LCAxMCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7
CisgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZDc5ZWFjN2E0OTY5NGNjM2FkMDEzZDNlYjY1MTBl
NzI5YWM5OWMzLi5iZDQ2OTJjMjcxNWZjYjBiZmZjZmI3MzQ2YmMxZjQ1ODM2ODg3Y2EzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMjEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIG9wYXF1ZSBwYWludCB0cmFja2Vy
IGF3YXJlIG9mIFNrQ2FudmFzIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzkxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1l
LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvY3VsbGluZy9jbGVh
ci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGlu
Zy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21w
b3NpdGluZy9jdWxsaW5nL3Jlc291cmNlcy9jbGVhci1maXhlZC1pZnJhbWUtY29udGVudC5odG1s
OiBBZGRlZC4KKwogMjAxMi0wMi0yMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS1leHBlY3Rl
ZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFt
ZS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThhYWNkOWNhNjMzMzNhMzAyYzkzNDVjYTg1ZjY1
YzFmNmNiMjdjNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg1OQp6Y21lQVNATj8ob2xIeWB1
VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVCF2KG0KejxrUz9p
dn05dW9iSVppIUd7WTFsUSF7ZjVXN0N2R1F4Z2pfZ0F8XlZBTkRkWmFQOVNVYVNXLUxeWShAI1ot
VzU/CnppPSVeJSlyQ09tN1lCc2REKUtIfUlIUiVTYExsMUk/YVViKD5aUSlsdXpoJmd1JHFENEtv
Kk1fZ00mezNCZzJ0Vgp6IyVMZ25yaTlVNEZxI1dTYkhRalg3fGpLdnhuUGp3Zl5UblUqKWxSRD0q
c0NaR3xWYF8jTCZTeHsxYFg1cW5KNj8KVll1dm9mMCZNKjxjKUkkenRhRDBlMHNzcSRWRDEwXwoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlm
cmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hYWNlNWUxODJhOTVmOWJiZDRlNWVjZWYzNzY0MDJlZDAxOWY3YzA1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUu
aHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPjxoZWFkPjx0aXRs
ZT5Db21wb3NpdG9yIElmcmFtZSBTYWRmYWNlPC90aXRsZT4KKzxzdHlsZT4KK2JvZHkgeyBtYXJn
aW46IDA7IHBhZGRpbmc6IDA7IH0KKy5jb21wb3NpdGVkIHsKKyAgLXdlYmtpdC10cmFuc2Zvcm06
IHRyYW5zbGF0ZVooMCk7CisgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICBwb3NpdGlvbjpm
aXhlZDsKKyAgbGVmdDowOyB0b3A6MDsgcmlnaHQ6MDsgYm90dG9tOjA7Cit9CitpZnJhbWUgewor
ICBwb3NpdGlvbjpmaXhlZDsKKyAgbGVmdDogMDsgdG9wOiAwOworICB3aWR0aDoxMDAlOworICBo
ZWlnaHQ6IDEwMCU7CisgIGJvcmRlcjowOworfQorPC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIH0KKzwvc2NyaXB0Pgor
PC9oZWFkPgorCis8Ym9keT4KKzxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQiPjwvZGl2PgorCis8IS0t
IFlvdSBzaG91bGQgc2VlIGEgbGlnaHQgZ3JlZW4gYm94IGZpbGxpbmcgdGhlIHRvcC9sZWZ0IG9m
IHRoZSB3aW5kb3csIGluc2lkZSBhIGRhcmtlciBncmVlbiBiYWNrZ3JvdW5kLgorICAgICBJZiB0
aGUgImdsYXNzIiBpbiB0aGUgaWZyYW1lIGlzIGNvbnNpZGVyZWQgb3BhcXVlLCB0aGVuIGRyYXdp
bmcgZXJyb3JzIHdpbGwgb2NjdXIgYW5kIHRpbGVzIGJlY29tZSBibGFjaworICAgICAobGlnaHQg
Z3JheSB3aXRoIHRoZSBnbGFzcykuCisgIC0tPgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9jbGVh
ci1maXhlZC1pZnJhbWUtY29udGVudC5odG1sIiBmcmFtZWJvcmRlcj0iMCI+PC9pZnJhbWU+Cis8
L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1
bGxpbmcvcmVzb3VyY2VzL2NsZWFyLWZpeGVkLWlmcmFtZS1jb250ZW50Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Jlc291cmNlcy9jbGVhci1maXhlZC1pZnJhbWUtY29u
dGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmYTA0ZDM5YzQ1ODZhNjUyZjdlOTU4NjVmY2I3NzNhMzhk
NjQ0YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5n
L3Jlc291cmNlcy9jbGVhci1maXhlZC1pZnJhbWUtY29udGVudC5odG1sCkBAIC0wLDAgKzEsMTkg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+Cis8c3R5bGU+
Citib2R5IHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfQorCisjZ2xhc3MgeworICBvcGFjaXR5OjAu
NDsKKyAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsKKyAgcG9zaXRpb246YWJzb2x1dGU7CisgIHRv
cDowcHg7IGxlZnQ6MHB4OyByaWdodDo1MHB4OyBib3R0b206IDUwcHg7Cit9Cis8L3N0eWxlPgor
PC9oZWFkPgorCis8Ym9keT4KKzxkaXYgaWQ9ImdsYXNzIj48L2Rpdj4KKzwvYm9keT4KKzwvc2Ny
aXB0PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128594</attachid>
            <date>2012-02-23 16:26:46 -0800</date>
            <delta_ts>2012-02-29 15:19:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79145-20120223192645.patch</filename>
            <type>text/plain</type>
            <size>26015</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUzNjIyMzVmMDg3MmJh
NTYwMzk0Y2M2MmU2NWI3ZGU1NDZhNjJiZC4uNTQ2Mzg3ZTIzODE4ZWRlNTU1MWE4OTBlMWM3YTI5
YTI5YTJmNDgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTAyLTIzICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBvcGFxdWUgcGFpbnQgdHJhY2tlciBhd2FyZSBvZiBTa0NhbnZhcyBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgb3BhcXVl
IHBhaW50IHRyYWNrZXIgaWdub3JlZCBTa0NhbnZhcyBsYXllcnMgZW50aXJlbHkuIEJ1dAorICAg
ICAgICBTa0NhbnZhcyBsYXllcnMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgdGhpbmdzIGxpa2UgYWxw
aGEuIFNvIHdlIG1ha2UgaXQKKyAgICAgICAga25vdyBhYm91dCBsYXllcnMsIGFuZCByZWFwcGx5
IHRoZSBvcGFxdWUgcmVjdCBpbiBhIGdpdmVuIGxheWVyIGludG8KKyAgICAgICAgdGhlIG5leHQg
bGF5ZXIgZG93biB3aGVuIHJlc3RvcmUoKSBpcyBjYWxsZWQsIHVzaW5nIHRoZSBwcm9wZXJ0aWVz
IG9mCisgICAgICAgIHRoYXQgbGF5ZXIuCisKKyAgICAgICAgSW1hZ2UgY2xpcHBpbmcgaXMgZG9u
ZSB2aWEgYSBsYXllciwgc28gd2UgY2FuIG5vdyBhbHNvIHJlbW92ZSB0aGUKKyAgICAgICAgc3Bl
Y2lhbC1jYXNlIGNvZGUgYXJvdW5kIGltYWdlIGNsaXBwaW5nIGluIFBsYXRmb3JtQ29udGV4dFNr
aWEgYW5kCisgICAgICAgIE9wYXF1ZVJlZ2lvblNraWEuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBQ
bGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9j
dWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGFxdWVSZWdpb25Ta2lhOjpkaWRTYXZlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGFxdWVSZWdpb25Ta2lhOjp3aWxsUmVzdG9yZUxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oOgorICAgICAgICAoT3BhcXVlUmVn
aW9uU2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRl
eHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OnNhdmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6YmVnaW5MYXllckNsaXBw
ZWRUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OnJlc3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6YXBwbHlDbGlwRnJv
bUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRpZFNhdmVM
YXllcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29u
dGV4dFNraWE6OndpbGxSZXN0b3JlTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0U2tp
YSk6CisKIDIwMTItMDItMjMgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5j
b20+CiAKICAgICAgICAgW3d4XSBCdWlsZCBmaXgsIHVzZSB0aGUgc3RyaW5ncyBpbiBMb2NhbGl6
ZWRTdHJpbmdzLmNwcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYWNkZTZlNDY0N2Y3
NjU2MTVhYmUzYjQ5NDAyNjc4NTkwZWU3ZGRmNC4uODYxNjY2OGM0MzUyOGZhYzEzMWE3NzBjMDhi
NmIxZmFjYzhhM2EzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxMi0wMi0yMyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIE1ha2Ugb3BhcXVlIHBhaW50IHRyYWNrZXIgYXdhcmUgb2YgU2tDYW52
YXMgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03OTE0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VEVTVCk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wMi0yMiAgSmFtZXMgUm9iaW5zb24g
IDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2xlYW4gdXAgR3Jh
cGhpY3NDb250ZXh0M0QgaW5pdGlhbGl6YXRpb24gcGF0aHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEu
Y3BwCmluZGV4IDRmNzljZmIwYjVlNjljNWM1NGU3M2JkMGUyY2JhOWEzOTVhZjY1ZWIuLjA5ZmM1
YTZjOTFmYTE4YWVjZDc5NDc1YjUyNDJhZTkzMGUzODMzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRT
a2lhLmNwcApAQCAtMjgxLDEyICsyODEsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2lu
UGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgICAgICAmbGF5ZXJQ
YWludCwKICAgICAgICAgc3RhdGljX2Nhc3Q8U2tDYW52YXM6OlNhdmVGbGFncz4oU2tDYW52YXM6
OmtIYXNBbHBoYUxheWVyX1NhdmVGbGFnIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2tDYW52YXM6OmtGdWxsQ29sb3JMYXllcl9TYXZlRmxhZykpOworICAgIHBs
YXRmb3JtQ29udGV4dCgpLT5kaWRTYXZlTGF5ZXIoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+d2lsbFJl
c3RvcmVMYXllcigpOwogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+cmVzdG9yZSgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L09wYXF1ZVJlZ2lvblNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcAppbmRleCAyMWZhY2FhZGI4YjE4OTM2ZjQyODI0OTRk
NTJkMjQ3MGRhYzc3ZGMwLi5mMzY3Y2FiYjBmNjlhZWVkMDExZGFmMWY3YjUxODY0ZGU0YmU2ZjY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1
ZVJlZ2lvblNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgcGFpbnRJc09wYXF1ZShjb25zdCBTa1BhaW50JiBwYWludCwgY29uc3QgU2tCaXRtYXAq
IGJpdG1hcCA9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6
ZGlkRHJhd1JlY3QoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgZmlsbFJlY3QsIGNvbnN0IFNr
UGFpbnQmIHBhaW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwKQordm9pZCBPcGFxdWVSZWdpb25T
a2lhOjpkaWREcmF3UmVjdChQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQ
YWludCYgcGFpbnQsIGNvbnN0IFNrQml0bWFwKiBiaXRtYXApCiB7CiAgICAgLy8gQW55IHN0cm9r
aW5nIG1heSBwdXQgYWxwaGEgaW4gcGl4ZWxzIGV2ZW4gaWYgdGhlIGZpbGxpbmcgcGFydCBkb2Vz
IG5vdC4KICAgICBpZiAocGFpbnQuZ2V0U3R5bGUoKSAhPSBTa1BhaW50OjprRmlsbF9TdHlsZSkg
ewpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3Qo
Y29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmCiAgICAgZGlkRHJh
dyhjb250ZXh0LCB0cmFuc2Zvcm0sIGZpbGxSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5k
cyk7CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3QgUGxhdGZv
cm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0s
IGNvbnN0IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCit2b2lkIE9wYXF1ZVJl
Z2lvblNraWE6OmRpZERyYXdQYXRoKFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1BhdGgmIHBhdGgsIGNvbnN0IFNr
UGFpbnQmIHBhaW50KQogewogICAgIFNrUmVjdCByZWN0OwogICAgIGlmIChwYXRoLmlzUmVjdCgm
cmVjdCkpIHsKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERy
YXdQYXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZgogICAg
IH0KIH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRm
b3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBTa0NhbnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnQg
cG9pbnRzW10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpk
aWREcmF3UG9pbnRzKFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgdHJhbnNmb3JtLCBTa0NhbnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2lu
dHMsIGNvbnN0IFNrUG9pbnQgcG9pbnRzW10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAg
IGlmICghbnVtUG9pbnRzKQogICAgICAgICByZXR1cm47CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9p
ZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNr
aWEqIGNvbnRleHQsIGNvbnN0IEEKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6
ZGlkRHJhd0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgYm91bmRzLCBjb25zdCBT
a1BhaW50JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQoUGxh
dGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0sIGNvbnN0IFNrUmVjdCYgYm91bmRzLCBjb25zdCBTa1BhaW50JiBwYWludCkKIHsKICAgICBi
b29sIG9wYXF1ZSA9IHBhaW50SXNPcGFxdWUocGFpbnQpOwogICAgIGJvb2wgZmlsbHNCb3VuZHMg
PSBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNTggQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWRE
cmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdAogICAg
IH0KIH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KGNvbnN0IFBsYXRmb3JtQ29u
dGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25z
dCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlLCBi
b29sIGZpbGxzQm91bmRzKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWRTYXZlTGF5ZXIoKQor
eworICAgIG1fb3BhcXVlUmVjdFN0YWNrLmFwcGVuZChTa1JlY3Q6Ok1ha2VFbXB0eSgpKTsKK30K
Kwordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjp3aWxsUmVzdG9yZUxheWVyKFBsYXRmb3JtQ29udGV4
dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAg
IGlmIChtX29wYXF1ZVJlY3RTdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9vcGFxdWVSZWN0
ID0gU2tSZWN0OjpNYWtlRW1wdHkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IFJlc3RvcmUgdGhlIHRvcCBvZiB0aGUgc3RhY2sgYmFjayBhcyB0aGUgY3VycmVudCBvcGFxdWUg
cmVjdCwgYW5kIHNhdmUgdGhlIHJlY3QgZm9yIHRoZSBsYXllciBiZWluZyByZXN0b3JlZAorICAg
IC8vIHNvIHdlIGNhbiBmaWd1cmUgb3V0IGhvdyBpdCBjb250cmlidXRlcyB0byB0aGUgbmV3bHkg
Y3VycmVudCBsYXllci4KKyAgICBTa1JlY3Qgb3BhcXVlTGF5ZXJSZWN0ID0gbV9vcGFxdWVSZWN0
OworICAgIG1fb3BhcXVlUmVjdCA9IG1fb3BhcXVlUmVjdFN0YWNrLmxhc3QoKTsKKyAgICBtX29w
YXF1ZVJlY3RTdGFjay5yZW1vdmVMYXN0KCk7CisKKyAgICBpZiAob3BhcXVlTGF5ZXJSZWN0Lmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gV2UgaGF2ZSBhIHJlY3QgaW4gdGFy
Z2V0IHNwYWNlLCBtb3ZlIGl0IHRvIGRldmljZSBzcGFjZS4KKyAgICBpZiAoIXRyYW5zZm9ybS5p
c0ludmVydGlibGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFNrTWF0cml4IHRhcmdldFRvRGV2
aWNlVHJhbnNmb3JtID0gdHJhbnNmb3JtLmludmVyc2UoKTsKKyAgICBpZiAoIXRhcmdldFRvRGV2
aWNlVHJhbnNmb3JtLm1hcFJlY3QoJm9wYXF1ZUxheWVyUmVjdCkpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIEdldCB0aGUgbGF5ZXIgdGhhdCB3aWxsIGJlIHBvcHBlZCBvZmYgdGhlIHN0YWNr
LgorICAgIFNrQ2FudmFzOjpMYXllckl0ZXIgaXQoY29udGV4dC0+Y2FudmFzKCksIGZhbHNlKTsK
KworICAgIC8vIEFwcGx5IHRoZSBsYXllcidzIGNsaXAgKHdoaWNoIGlzIGluIGRldmljZSBzcGFj
ZSkKKyAgICBjb25zdCBTa1JlZ2lvbiYgZGV2aWNlQ2xpcCA9IGl0LmNsaXAoKTsKKyAgICBpZiAo
ZGV2aWNlQ2xpcC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWRldmljZUNs
aXAuaXNSZWN0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBTa0lSZWN0IGNsaXBCb3VuZHMgPSBp
dC5jbGlwKCkuZ2V0Qm91bmRzKCk7CisgICAgaWYgKCFvcGFxdWVMYXllclJlY3QuaW50ZXJzZWN0
KFNrSW50VG9TY2FsYXIoY2xpcEJvdW5kcy5mTGVmdCksIFNrSW50VG9TY2FsYXIoY2xpcEJvdW5k
cy5mVG9wKSwgU2tJbnRUb1NjYWxhcihjbGlwQm91bmRzLmZSaWdodCksIFNrSW50VG9TY2FsYXIo
Y2xpcEJvdW5kcy5mQm90dG9tKSkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5vdyB3ZSBo
YXZlIGEgcmVjdCBpbiB0aGUgY2FudmFzIGRldmljZSBzcGFjZSwgYnV0IGRpZERyYXcoKSB3YW50
cyBhIHJlY3QgaW4gdGhlIHNvdXJjZSBzcGFjZS4KKyAgICBTa01hdHJpeCBkZXZpY2VUb1NvdXJj
ZVRyYW5zZm9ybTsKKyAgICBpZiAoIWNvbnRleHQtPmNhbnZhcygpLT5nZXRUb3RhbE1hdHJpeCgp
LmludmVydCgmZGV2aWNlVG9Tb3VyY2VUcmFuc2Zvcm0pKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKCFkZXZpY2VUb1NvdXJjZVRyYW5zZm9ybS5tYXBSZWN0KCZvcGFxdWVMYXllclJlY3QpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBkaWREcmF3UmVjdChjb250ZXh0LCB0cmFuc2Zvcm0sIG9w
YXF1ZUxheWVyUmVjdCwgaXQucGFpbnQoKSwgMCk7Cit9CisKK3ZvaWQgT3BhcXVlUmVnaW9uU2tp
YTo6ZGlkRHJhdyhQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiByZWN0LCBjb25zdCBTa1BhaW50JiBwYWlu
dCwgYm9vbCBkcmF3c09wYXF1ZSwgYm9vbCBmaWxsc0JvdW5kcykKIHsKICAgICBTa1JlY3QgdGFy
Z2V0UmVjdCA9IHJlY3Q7CiAKQEAgLTI0OSw4ICszMDAsNiBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNr
aWE6OmRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZm
aW5lVAogICAgICAgICBpZiAoIXRhcmdldFJlY3QuaW50ZXJzZWN0KFNrSW50VG9TY2FsYXIoZGV2
aWNlQ2xpcC5mTGVmdCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mVG9wKSwgU2tJbnRUb1Nj
YWxhcihkZXZpY2VDbGlwLmZSaWdodCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mQm90dG9t
KSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghY29udGV4dC0+Y2xpcHBl
ZFRvSW1hZ2UoKS5pc09wYXF1ZSgpKQotICAgICAgICBmaWxsc0JvdW5kcyA9IGZhbHNlOwogCiAg
ICAgLy8gQXBwbHkgdGhlIHRyYW5zZm9ybSB0byB0aGUgdHJhY2tpbmcgc3BhY2UuCiAgICAgU2tN
YXRyaXggY2FudmFzVG9UYXJnZXRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5o
CmluZGV4IDQ1YjA2OTAwNDJhNjk4YTRjYTAwM2QzZTg1MGVlOGQ0YzM2Nzk5NmQuLjg1ODliNzM0
YmU0MjQ1NTAyZGEwMTRjNjNlNTkxODVjNDRkNjljMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCkBAIC01
MywxNyArNTMsMjQgQEAgcHVibGljOgogICAgIC8vIFRoZSByZXN1bHRpbmcgb3BhcXVlIHJlZ2lv
biBhcyBhIHNpbmdsZSByZWN0LgogICAgIEludFJlY3QgYXNSZWN0KCkgY29uc3Q7CiAKLSAgICB2
b2lkIGRpZERyYXdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50JiwgY29uc3QgU2tCaXRtYXAq
KTsKLSAgICB2b2lkIGRpZERyYXdQYXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1BhdGgmLCBjb25zdCBTa1BhaW50Jik7Ci0gICAg
dm9pZCBkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBTa0NhbnZhczo6UG9pbnRNb2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBT
a1BvaW50W10sIGNvbnN0IFNrUGFpbnQmKTsKLSAgICB2b2lkIGRpZERyYXdCb3VuZGVkKGNvbnN0
IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1Jl
Y3QmLCBjb25zdCBTa1BhaW50Jik7CisgICAgLy8gRklYTUU6IG1ha2UgYWxsIHRoZSBQbGF0Zm9y
bUNvbnRleHRTa2lhKiBpbnRvIGEgY29uc3QgcG9pbnRlciB3aGVuIFNraWEgZml4ZXMgTGF5ZXJJ
dGVyJ3MgU2tDYW52YXMqLgorCisgICAgdm9pZCBkaWREcmF3UmVjdChQbGF0Zm9ybUNvbnRleHRT
a2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWlu
dCYsIGNvbnN0IFNrQml0bWFwKik7CisgICAgdm9pZCBkaWREcmF3UGF0aChQbGF0Zm9ybUNvbnRl
eHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tQYXRoJiwgY29uc3QgU2tQ
YWludCYpOworICAgIHZvaWQgZGlkRHJhd1BvaW50cyhQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgU2tDYW52YXM6OlBvaW50TW9kZSwgaW50IG51bVBvaW50cywg
Y29uc3QgU2tQb2ludFtdLCBjb25zdCBTa1BhaW50Jik7CisgICAgdm9pZCBkaWREcmF3Qm91bmRl
ZChQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tS
ZWN0JiwgY29uc3QgU2tQYWludCYpOworCisgICAgdm9pZCBkaWRTYXZlTGF5ZXIoKTsKKyAgICB2
b2lkIHdpbGxSZXN0b3JlTGF5ZXIoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkRHJhdyhjb25zdCBQbGF0Zm9ybUNv
bnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3Qg
U2tQYWludCYsIGJvb2wgZHJhd3NPcGFxdWUsIGJvb2wgZmlsbHNCb3VuZHMpOworICAgIHZvaWQg
ZGlkRHJhdyhQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYsIGJvb2wgZHJhd3NPcGFxdWUsIGJvb2wgZmlsbHNC
b3VuZHMpOwogICAgIHZvaWQgZGlkRHJhd1VuYm91bmRlZChjb25zdCBTa1BhaW50JiwgYm9vbCBk
cmF3c09wYXF1ZSk7CiAgICAgdm9pZCBtYXJrUmVjdEFzT3BhcXVlKGNvbnN0IFNrUmVjdCYpOwog
ICAgIHZvaWQgbWFya1JlY3RBc05vbk9wYXF1ZShjb25zdCBTa1JlY3QmKTsKIAorICAgIC8vIEEg
c3RhY2sgb2Ygb3BhcXVlIHJlY3RzIGZvciB3aGVuIHRoZSB1bmRlcmx5aW5nIGNhbnZhcyBoYXMg
bXVsdGlwbGUgbGF5ZXJzLiBUaGUgY3VycmVudCBsYXllciBpcyBhbHdheXMgcmVwcmVzZW50ZWQg
aW4gbV9vcGFxdWVSZWN0LgorICAgIFZlY3RvcjxTa1JlY3Q+IG1fb3BhcXVlUmVjdFN0YWNrOwog
ICAgIFNrUmVjdCBtX29wYXF1ZVJlY3Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcApp
bmRleCBjMzIzYTBkN2VmZmIzZGM2ZDkxMzhkODFlOTcxMTljY2RiZTEzZjZiLi5mMTk2YTk0ZjIx
ODM3MmVjZTRhOTY0YzY5MTJjZTQ3NTUwNDY3MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5j
cHAKQEAgLTIyMCw2ICsyMjAsNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNhdmUoKQog
CiAgICAgLy8gU2F2ZSBvdXIgbmF0aXZlIGNhbnZhcy4KICAgICBjYW52YXMoKS0+c2F2ZSgpOwor
ICAgIGRpZFNhdmVMYXllcigpOwogfQogCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmJlZ2lu
TGF5ZXJDbGlwcGVkVG9JbWFnZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsCkBAIC0yNDIsNiArMjQz
LDcgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpiZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2Uo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LAogCiAgICAgY2FudmFzKCktPnNhdmVMYXllckFscGhhKCZi
b3VuZHMsIDI1NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U2tD
YW52YXM6OlNhdmVGbGFncz4oU2tDYW52YXM6OmtIYXNBbHBoYUxheWVyX1NhdmVGbGFnIHwgU2tD
YW52YXM6OmtGdWxsQ29sb3JMYXllcl9TYXZlRmxhZykpOworICAgIGRpZFNhdmVMYXllcigpOwog
ICAgIC8vIENvcHkgb2ZmIHRoZSBpbWFnZSBhcyB8aW1hZ2VCdWZmZXJ8IG1heSBiZSBkZWxldGVk
IGJlZm9yZSByZXN0b3JlIGlzIGludm9rZWQuCiAgICAgY29uc3QgU2tCaXRtYXAqIGJpdG1hcCA9
IGltYWdlQnVmZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5iaXRtYXAoKTsKICAg
ICBpZiAoIWJpdG1hcC0+cGl4ZWxSZWYoKSkgewpAQCAtMjYzLDE1ICsyNjUsMTEgQEAgdm9pZCBQ
bGF0Zm9ybUNvbnRleHRTa2lhOjpjbGlwUGF0aEFudGlBbGlhc2VkKGNvbnN0IFNrUGF0aCYgY2xp
cFBhdGgpCiAgICAgY2FudmFzKCktPmNsaXBQYXRoKGNsaXBQYXRoLCBTa1JlZ2lvbjo6a0ludGVy
c2VjdF9PcCwgdHJ1ZSk7CiB9CiAKLWNvbnN0IFNrQml0bWFwJiBQbGF0Zm9ybUNvbnRleHRTa2lh
OjpjbGlwcGVkVG9JbWFnZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUtPm1faW1hZ2VC
dWZmZXJDbGlwOwotfQotCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnJlc3RvcmUoKQogewog
ICAgIGlmICghbV9zdGF0ZS0+bV9pbWFnZUJ1ZmZlckNsaXAuZW1wdHkoKSkgewogICAgICAgICBh
cHBseUNsaXBGcm9tSW1hZ2UobV9zdGF0ZS0+bV9jbGlwLCBtX3N0YXRlLT5tX2ltYWdlQnVmZmVy
Q2xpcCk7CisgICAgICAgIHdpbGxSZXN0b3JlTGF5ZXIoKTsKICAgICAgICAgY2FudmFzKCktPnJl
c3RvcmUoKTsKICAgICB9CiAKQEAgLTI3OSw2ICsyNzcsNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4
dFNraWE6OnJlc3RvcmUoKQogICAgIG1fc3RhdGUgPSAmbV9zdGF0ZVN0YWNrLmxhc3QoKTsKIAog
ICAgIC8vIFJlc3RvcmUgb3VyIG5hdGl2ZSBjYW52YXMuCisgICAgd2lsbFJlc3RvcmVMYXllcigp
OwogICAgIGNhbnZhcygpLT5yZXN0b3JlKCk7CiB9CiAKQEAgLTU5NSw4ICs1OTQsMTAgQEAgdm9p
ZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjphcHBseUNsaXBGcm9tSW1hZ2UoY29uc3QgU2tSZWN0JiBy
ZWN0LCBjb25zdCBTa0JpdG1hcCYKICAgICBTa1BhaW50IHBhaW50OwogICAgIHBhaW50LnNldFhm
ZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprRHN0SW5fTW9kZSk7CiAgICAgbV9jYW52YXMtPnNhdmUo
U2tDYW52YXM6OmtNYXRyaXhfU2F2ZUZsYWcpOworICAgIGRpZFNhdmVMYXllcigpOwogICAgIG1f
Y2FudmFzLT5yZXNldE1hdHJpeCgpOwogICAgIG1fY2FudmFzLT5kcmF3Qml0bWFwUmVjdChpbWFn
ZUJ1ZmZlciwgMCwgcmVjdCwgJnBhaW50KTsKKyAgICB3aWxsUmVzdG9yZUxheWVyKCk7CiAgICAg
bV9jYW52YXMtPnJlc3RvcmUoKTsKIH0KIApAQCAtNjI5LDQgKzYzMCwxNCBAQCB2b2lkIFBsYXRm
b3JtQ29udGV4dFNraWE6OmRpZERyYXdCb3VuZGVkKGNvbnN0IFNrUmVjdCYgcmVjdCwgY29uc3Qg
U2tQYWludCYgcGFpbgogICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3Qm91bmRlZCh0aGlz
LCBtX29wYXF1ZVJlZ2lvblRyYW5zZm9ybSwgcmVjdCwgcGFpbnQpOwogfQogCit2b2lkIFBsYXRm
b3JtQ29udGV4dFNraWE6OmRpZFNhdmVMYXllcigpCit7CisgICAgbV9vcGFxdWVSZWdpb24uZGlk
U2F2ZUxheWVyKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6d2lsbFJlc3RvcmVM
YXllcigpCit7CisgICAgbV9vcGFxdWVSZWdpb24ud2lsbFJlc3RvcmVMYXllcih0aGlzLCBtX29w
YXF1ZVJlZ2lvblRyYW5zZm9ybSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250
ZXh0U2tpYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9y
bUNvbnRleHRTa2lhLmgKaW5kZXggYjMwNjQ1MGNiMWQ4ZGM5ZmFjZTQ3M2YzYzkyNDNlODc4M2Nj
NDY1NS4uYjQyNGU4OWUyZDM0NGFkOTNhMzI2OTg2MWU1NTdiMGE4YzIzZTk4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9y
bUNvbnRleHRTa2lhLmgKQEAgLTEwMCw4ICsxMDAsNiBAQCBwdWJsaWM6CiAgICAgLy8gTk9URTog
fGltYWdlQnVmZmVyfCBtYXkgYmUgZGVsZXRlZCBiZWZvcmUgdGhlIHxyZXN0b3JlfCBpcyBpbnZv
a2VkLgogICAgIHZvaWQgYmVnaW5MYXllckNsaXBwZWRUb0ltYWdlKGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEltYWdlQnVmZmVyKik7CiAgICAgdm9pZCBjbGlwUGF0aEFudGlBbGlhc2VkKGNvbnN0
IFNrUGF0aCYpOwotICAgIC8vIElmIG5vbi1lbXB0eSwgdGhlIGxheWVyIGlzIGNsaXBwZWQgdG8g
dGhlIGJpdG1hcC4KLSAgICBjb25zdCBTa0JpdG1hcCYgY2xpcHBlZFRvSW1hZ2UoKSBjb25zdDsK
IAogICAgIC8vIFNldHMgdXAgdGhlIGNvbW1vbiBmbGFncyBvbiBhIHBhaW50IGZvciBhbnRpYWxp
YXNpbmcsIGVmZmVjdHMsIGV0Yy4KICAgICAvLyBUaGlzIGlzIGltcGxpY2l0bHkgY2FsbGVkIGJ5
IHNldHVwUGFpbnRGaWxsIGFuZCBzZXR1cFBhaW50U3Ryb2tlLCBidXQKQEAgLTIwNSw2ICsyMDMs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWREcmF3UG9pbnRzKFNrQ2FudmFzOjpQb2ludE1vZGUs
IGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWludCYpOwogICAgIC8v
IEZvciBkcmF3aW5nIG9wZXJhdGlvbnMgdGhhdCBkbyBub3QgZmlsbCB0aGUgZW50aXJlIHJlY3Qu
CiAgICAgdm9pZCBkaWREcmF3Qm91bmRlZChjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jik7
CisgICAgLy8gRm9yIHB1c2hpbmcvcG9wcGluZyBhIG5ldyBsYXllciBpbiB0aGUgU2tDYW52YXMu
CisgICAgdm9pZCBkaWRTYXZlTGF5ZXIoKTsKKyAgICB2b2lkIHdpbGxSZXN0b3JlTGF5ZXIoKTsK
IAogcHJpdmF0ZToKICAgICAvLyBVc2VkIHdoZW4gcmVzdG9yaW5nIGFuZCB0aGUgc3RhdGUgaGFz
IGFuIGltYWdlIGNsaXAuIE9ubHkgc2hvd3MgdGhlIHBpeGVscyBpbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcApp
bmRleCBkMDk3YzQ5OWEyZmRmZDQ1NTlhMGMyMzNmYjJlN2E3ZTQ4MzEyOTgyLi43ZDVkZjg4YjY3
NDg2NjQwNWUyY2UyN2M2ZWI4OWRmYTI4ZGI1YThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcApAQCAtMTM3
LDkgKzEzNyw5IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVlQ2xp
cFRlc3QpCiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgY29udGV4dC5jbGlwKEZsb2F0UmVjdCgw
LCAwLCAxMCwgMTApKTsKICAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkw
LCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7
CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBw
bGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogICAgIEVYUEVDVF9QSVhF
TFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkp
OwotICAgIGNvbnRleHQucmVzdG9yZSgpOwogCiAgICAgY29udGV4dC5jbGVhclJlY3QoRmxvYXRS
ZWN0KDEwLCAxMCwgOTAsIDkwKSk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0
Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwpAQCAtMTQ3LDMyICsxNDcsMzkg
QEAgVEVTVChQbGF0Zm9ybUNvbnRleHRTa2lhVGVzdCwgdHJhY2tPcGFxdWVDbGlwVGVzdCkKICAg
ICBjb250ZXh0LnNhdmUoKTsKICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KDIwLCAyMCwgMTAs
IDEwKSk7CiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5MCwgOTApLCBv
cGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGNv
bnRleHQucmVzdG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIwLCAxMCwg
MTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogICAgIEVYUEVD
VF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNS
ZWN0KCkpOwogCisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5jbGlwKEZsb2F0UmVj
dCgyMCwgMjAsIDEwLCAxMCkpOwogICAgIGNvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgxMCwg
MTAsIDkwLCA5MCkpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKIAog
ICAgIC8vIFRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHR3byBjbGlwcyBiZWNvbWVzIGVtcHR5Lgor
ICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRleHQuY2xpcChGbG9hdFJlY3QoMjAsIDIwLCAx
MCwgMTApKTsKICAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KDMwLCAyMCwgMTAsIDEwKSk7CiAg
ICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsK
LSAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJl
Z2lvbigpLmFzUmVjdCgpKTsKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKLQotICAgIGNvbnRleHQu
Y2xlYXJSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCkpOwogICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAg
ICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lv
bigpLmFzUmVjdCgpKTsKIAogICAgIC8vIFRoZSB0cmFuc2Zvcm0gYW5kIHRoZSBjbGlwIG5lZWQg
dG8gaW50ZXJhY3QgY29ycmVjdGx5ICh0cmFuc2Zvcm0gZmlyc3QpCiAgICAgY29udGV4dC5zYXZl
KCk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMTAsIDEwKTsKICAgICBjb250ZXh0LmNsaXAoRmxv
YXRSZWN0KDIwLCAyMCwgMTAsIDEwKSk7CiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3Qo
MTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNv
dXJjZU92ZXIpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDMwLCAxMCwgMTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNS
ZWN0KCkpOwogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQu
b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwotICAgIGNvbnRleHQucmVzdG9yZSgpOwogCisgICAg
Y29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC50cmFuc2xhdGUoMTAsIDEwKTsKKyAgICBjb250
ZXh0LmNsaXAoRmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSk7CiAgICAgY29udGV4dC5jbGVhclJl
Y3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSk7CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9u
KCkuYXNSZWN0KCkpOwogCiAgICAgLy8gVGhlIHRyYW5zZm9ybSBhbmQgdGhlIGNsaXAgbmVlZCB0
byBpbnRlcmFjdCBjb3JyZWN0bHkgKGNsaXAgZmlyc3QpCkBAIC0xODAsMTEgKzE4NywxNSBAQCBU
RVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCB0cmFja09wYXF1ZUNsaXBUZXN0KQogICAgIGNv
bnRleHQuY2xpcChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTApKTsKICAgICBjb250ZXh0LnRyYW5z
bGF0ZSgxMCwgMTApOwogICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAs
IDkwKSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsK
KyAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAy
MCwgMTAsIDEwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKICAg
ICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lv
bigpLmFzUmVjdCgpKTsKLSAgICBjb250ZXh0LnJlc3RvcmUoKTsKIAorICAgIGNvbnRleHQuc2F2
ZSgpOworICAgIGNvbnRleHQuY2xpcChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTApKTsKKyAgICBj
b250ZXh0LnRyYW5zbGF0ZSgxMCwgMTApOwogICAgIGNvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVj
dCgxMCwgMTAsIDkwLCA5MCkpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgp
KTsKIAogICAgIFBhdGggcGF0aDsKQEAgLTE5NSwxOCArMjA2LDE4IEBAIFRFU1QoUGxhdGZvcm1D
b250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVlQ2xpcFRlc3QpCiAgICAgY29udGV4dC5zYXZlKCk7
CiAgICAgY29udGV4dC5jbGlwUGF0aChwYXRoLCBSVUxFX0VWRU5PREQpOwogICAgIGNvbnRleHQu
ZmlsbFJlY3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24o
KS5hc1JlY3QoKSk7CiAgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29u
dGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7Ci0gICAgY29udGV4dC5yZXN0b3JlKCk7CiAK
ICAgICAvLyBBbm90aGVyIG5vbi1yZWN0YW5ndWxhciBjbGlwLgogICAgIGNvbnRleHQuc2F2ZSgp
OwogICAgIGNvbnRleHQuY2xpcChJbnRSZWN0KDMwLCAzMCwgMjAsIDIwKSk7CiAgICAgY29udGV4
dC5jbGlwT3V0KEludFJlY3QoMzAsIDMwLCAxMCwgMTApKTsKICAgICBjb250ZXh0LmZpbGxSZWN0
KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
Q29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCkpOwogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3Bh
cXVlUmVnaW9uKCkuYXNSZWN0KCkpOwotICAgIGNvbnRleHQucmVzdG9yZSgpOwogCiAgICAgT3du
UHRyPEltYWdlQnVmZmVyPiBhbHBoYUltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShJbnRTaXpl
KDEwMCwgMTAwKSk7CiAgICAgYWxwaGFJbWFnZS0+Y29udGV4dCgpLT5maWxsUmVjdChJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSwgYWxwaGEsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwpAQCAtMjE1LDkg
KzIyNiw5IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVlQ2xpcFRl
c3QpCiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihh
bHBoYUltYWdlLmdldCgpLCBGbG9hdFJlY3QoMzAsIDMwLCAxMCwgMTApKTsKICAgICBjb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9u
KCkuYXNSZWN0KCkpOwogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNv
bnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwotICAgIGNvbnRleHQucmVzdG9yZSgpOwog
fQogCiBURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCB0cmFja09wYXF1ZUpvaW5UZXN0KQpA
QCAtNjQxLDQgKzY1MiwzNCBAQCBURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCBsYXllclRy
YW5zZm9ybVNjYWxlT3BhcXVlVGVzdCkKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBs
YXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CiB9CiAKK1RFU1QoUGxhdGZv
cm1Db250ZXh0U2tpYVRlc3QsIGNvbnRleHRUcmFuc3BhcmVuY3lMYXllclRlc3QpCit7CisgICAg
U2tCaXRtYXAgYml0bWFwOworICAgIGJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4
ODhfQ29uZmlnLCA0MDAsIDQwMCk7CisgICAgYml0bWFwLmFsbG9jUGl4ZWxzKCk7CisgICAgYml0
bWFwLmVyYXNlQ29sb3IoMCk7CisgICAgU2tDYW52YXMgY2FudmFzKGJpdG1hcCk7CisgICAgQWZm
aW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoMik7CisKKyAgICBQ
bGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dCgmY2FudmFzKTsKKyAgICBwbGF0Zm9y
bUNvbnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7CisgICAgcGxhdGZvcm1Db250ZXh0
LnNldE9wYXF1ZVJlZ2lvblRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIEdyYXBoaWNzQ29udGV4
dCBjb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOworCisgICAgQ29sb3Igb3BhcXVlKDEuMGYsIDAu
MGYsIDAuMGYsIDEuMGYpOworCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMjAsIDIw
LCAxMCwgMTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92
ZXIpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDAsIDQwLCAyMCwgMjApLCBwbGF0Zm9y
bUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFU
Q0goYml0bWFwLCB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QocGxhdGZvcm1Db250ZXh0Lm9w
YXF1ZVJlZ2lvbigpLmFzUmVjdCgpKSk7CisKKyAgICBjb250ZXh0LmNsZWFyUmVjdChGbG9hdFJl
Y3QoMjAsIDIwLCAxMCwgMTApKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRm
b3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBjb250ZXh0LmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoMC41KTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgy
MCwgMjAsIDEwLCAxMCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291
cmNlT3Zlcik7CisgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVj
dCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZDc5ZWFjN2E0OTY5NGNjM2FkMDEz
ZDNlYjY1MTBlNzI5YWM5OWMzLi5hYzg4ODZkZjk5ZTA3YzQyMmFhNjdlOGRhY2Y5MTU4MzVmNGEx
ZDA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMjMgIERhbmEgSmFuc2VucyAgPGRh
bmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIG9wYXF1ZSBwYWlu
dCB0cmFja2VyIGF3YXJlIG9mIFNrQ2FudmFzIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4
ZWQtaWZyYW1lLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvY3Vs
bGluZy9jbGVhci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBj
b21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBjb21wb3NpdGluZy9jdWxsaW5nL3Jlc291cmNlcy9jbGVhci1maXhlZC1pZnJhbWUtY29u
dGVudC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMi0yMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3Nz
eUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFt
ZS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZp
eGVkLWlmcmFtZS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThhYWNkOWNhNjMzMzNhMzAyYzkz
NDVjYTg1ZjY1YzFmNmNiMjdjNQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg1OQp6Y21lQVNA
Tj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVCF2
KG0KejxrUz9pdn05dW9iSVppIUd7WTFsUSF7ZjVXN0N2R1F4Z2pfZ0F8XlZBTkRkWmFQOVNVYVNX
LUxeWShAI1otVzU/CnppPSVeJSlyQ09tN1lCc2REKUtIfUlIUiVTYExsMUk/YVViKD5aUSlsdXpo
Jmd1JHFENEtvKk1fZ00mezNCZzJ0Vgp6IyVMZ25yaTlVNEZxI1dTYkhRalg3fGpLdnhuUGp3Zl5U
blUqKWxSRD0qc0NaR3xWYF8jTCZTeHsxYFg1cW5KNj8KVll1dm9mMCZNKjxjKUkkenRhRDBlMHNz
cSRWRDEwXwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFy
LWZpeGVkLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hYWNlNWUxODJhOTVmOWJiZDRlNWVjZWYzNzY0MDJlZDAxOWY3YzA1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhl
ZC1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPjxo
ZWFkPjx0aXRsZT5Db21wb3NpdG9yIElmcmFtZSBTYWRmYWNlPC90aXRsZT4KKzxzdHlsZT4KK2Jv
ZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KKy5jb21wb3NpdGVkIHsKKyAgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICBw
b3NpdGlvbjpmaXhlZDsKKyAgbGVmdDowOyB0b3A6MDsgcmlnaHQ6MDsgYm90dG9tOjA7Cit9Citp
ZnJhbWUgeworICBwb3NpdGlvbjpmaXhlZDsKKyAgbGVmdDogMDsgdG9wOiAwOworICB3aWR0aDox
MDAlOworICBoZWlnaHQ6IDEwMCU7CisgIGJvcmRlcjowOworfQorPC9zdHlsZT4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIH0KKzwv
c2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQiPjwvZGl2
PgorCis8IS0tIFlvdSBzaG91bGQgc2VlIGEgbGlnaHQgZ3JlZW4gYm94IGZpbGxpbmcgdGhlIHRv
cC9sZWZ0IG9mIHRoZSB3aW5kb3csIGluc2lkZSBhIGRhcmtlciBncmVlbiBiYWNrZ3JvdW5kLgor
ICAgICBJZiB0aGUgImdsYXNzIiBpbiB0aGUgaWZyYW1lIGlzIGNvbnNpZGVyZWQgb3BhcXVlLCB0
aGVuIGRyYXdpbmcgZXJyb3JzIHdpbGwgb2NjdXIgYW5kIHRpbGVzIGJlY29tZSBibGFjaworICAg
ICAobGlnaHQgZ3JheSB3aXRoIHRoZSBnbGFzcykuCisgIC0tPgorPGlmcmFtZSBzcmM9InJlc291
cmNlcy9jbGVhci1maXhlZC1pZnJhbWUtY29udGVudC5odG1sIiBmcmFtZWJvcmRlcj0iMCI+PC9p
ZnJhbWU+Cis8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2N1bGxpbmcvcmVzb3VyY2VzL2NsZWFyLWZpeGVkLWlmcmFtZS1jb250ZW50Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Jlc291cmNlcy9jbGVhci1maXhlZC1p
ZnJhbWUtY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmYTA0ZDM5YzQ1ODZhNjUyZjdlOTU4NjVm
Y2I3NzNhMzhkNjQ0YWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9jdWxsaW5nL3Jlc291cmNlcy9jbGVhci1maXhlZC1pZnJhbWUtY29udGVudC5odG1sCkBAIC0w
LDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+
Cis8c3R5bGU+Citib2R5IHsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgfQorCisjZ2xhc3MgeworICBv
cGFjaXR5OjAuNDsKKyAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsKKyAgcG9zaXRpb246YWJzb2x1
dGU7CisgIHRvcDowcHg7IGxlZnQ6MHB4OyByaWdodDo1MHB4OyBib3R0b206IDUwcHg7Cit9Cis8
L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgaWQ9ImdsYXNzIj48L2Rpdj4KKzwvYm9k
eT4KKzwvc2NyaXB0PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129530</attachid>
            <date>2012-02-29 15:19:47 -0800</date>
            <delta_ts>2012-03-01 07:13:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79145-20120229181946.patch</filename>
            <type>text/plain</type>
            <size>17244</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUzNjIyMzVmMDg3MmJh
NTYwMzk0Y2M2MmU2NWI3ZGU1NDZhNjJiZC4uMGYxYTQ2MmM5ZDQxODczOTMxMzJmZWYzZTU1ZWVj
ZjYwMmU0YTNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAyLTI5ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBvcGFxdWUgcGFpbnQgdHJhY2tlciBhd2FyZSBvZiBTa0NhbnZhcyBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgb3BhcXVl
IHBhaW50IHRyYWNrZXIgaWdub3JlZCBTa0NhbnZhcyBsYXllcnMgZW50aXJlbHkuIEJ1dAorICAg
ICAgICBTa0NhbnZhcyBsYXllcnMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgdGhpbmdzIGxpa2UgYWxw
aGEuIFNvIHdlIG1ha2UgaXQKKyAgICAgICAga25vdyBhYm91dCBsYXllcnMsIGFuZCBhcHBseSBh
bnkgY2xpcHBpbmcgYW5kIFNrUGFpbnQgb2JqZWN0cyBmb3IgbGF5ZXJzCisgICAgICAgIHdoZW4g
dHJhY2tpbmcgYSBwYWludC4KKworICAgICAgICBJbWFnZSBjbGlwcGluZyBpcyBkb25lIHZpYSBh
IGxheWVyLCBzbyB3ZSBjYW4gbm93IGFsc28gcmVtb3ZlIHRoZQorICAgICAgICBzcGVjaWFsLWNh
c2UgY29kZSBhcm91bmQgaW1hZ2UgY2xpcHBpbmcgaW4gUGxhdGZvcm1Db250ZXh0U2tpYSBhbmQK
KyAgICAgICAgT3BhcXVlUmVnaW9uU2tpYS4KKworICAgICAgICBVbml0IHRlc3Q6IFBsYXRmb3Jt
Q29udGV4dFNraWFUZXN0LmNvbnRleHRUcmFuc3BhcmVuY3lMYXllclRlc3QKKworICAgICAgICBU
ZXN0OiBjb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGFx
dWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVS
ZWdpb25Ta2lhOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oOgorICAgICAgICAoT3BhcXVlUmVn
aW9uU2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRl
eHRTa2lhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29u
dGV4dFNraWEuaDoKKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWEpOgorCiAyMDEyLTAyLTIz
ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3
eF0gQnVpbGQgZml4LCB1c2UgdGhlIHN0cmluZ3MgaW4gTG9jYWxpemVkU3RyaW5ncy5jcHAuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFjZGU2ZTQ2NDdmNzY1NjE1YWJlM2I0OTQwMjY3
ODU5MGVlN2RkZjQuLmQ2NjU3ZTFjZjVjNjVkMzY3M2U1Mzk3ZGZmNmE3NzRiY2FmYmNjMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDItMjkgIERh
bmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBN
YWtlIG9wYXF1ZSBwYWludCB0cmFja2VyIGF3YXJlIG9mIFNrQ2FudmFzIGxheWVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxNDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL1BsYXRmb3Jt
Q29udGV4dFNraWFUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAo
V2ViQ29yZSk6CisKIDIwMTItMDItMjIgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENsZWFuIHVwIEdyYXBoaWNzQ29udGV4dDNEIGlu
aXRpYWxpemF0aW9uIHBhdGhzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcAppbmRleCAyMWZhY2FhZGI4YjE4
OTM2ZjQyODI0OTRkNTJkMjQ3MGRhYzc3ZGMwLi41YTRmMTUzNGMwOWZmODJjYzUzNmQ0ZmJiYmUz
NjhiZjZmNGNiYmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgcGFpbnRJc09wYXF1ZShjb25zdCBTa1BhaW50JiBwYWludCwgY29u
c3QgU2tCaXRtYXAqIGJpdG1hcCA9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgT3BhcXVl
UmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgZmlsbFJl
Y3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwKQordm9pZCBP
cGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBmaWxsUmVj
dCwgY29uc3QgU2tQYWludCYgcGFpbnQsIGNvbnN0IFNrQml0bWFwKiBiaXRtYXApCiB7CiAgICAg
Ly8gQW55IHN0cm9raW5nIG1heSBwdXQgYWxwaGEgaW4gcGl4ZWxzIGV2ZW4gaWYgdGhlIGZpbGxp
bmcgcGFydCBkb2VzIG5vdC4KICAgICBpZiAocGFpbnQuZ2V0U3R5bGUoKSAhPSBTa1BhaW50Ojpr
RmlsbF9TdHlsZSkgewpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6
ZGlkRHJhd1JlY3QoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZm
CiAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIGZpbGxSZWN0LCBwYWludCwgb3BhcXVl
LCBmaWxsc0JvdW5kcyk7CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgo
Y29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0sIGNvbnN0IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCit2
b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQYXRoKFBsYXRmb3JtQ29udGV4dFNraWEqIGNv
bnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1BhdGgmIHBh
dGgsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIFNrUmVjdCByZWN0OwogICAgIGlmIChw
YXRoLmlzUmVjdCgmcmVjdCkpIHsKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIE9wYXF1ZVJlZ2lv
blNraWE6OmRpZERyYXdQYXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNv
bnN0IEFmZgogICAgIH0KIH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRz
KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBTa0NhbnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNv
bnN0IFNrUG9pbnQgcG9pbnRzW10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVS
ZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBTa0NhbnZhczo6UG9pbnRNb2RlIG1vZGUs
IGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnQgcG9pbnRzW10sIGNvbnN0IFNrUGFpbnQmIHBh
aW50KQogewogICAgIGlmICghbnVtUG9pbnRzKQogICAgICAgICByZXR1cm47CkBAIC0yMTcsNyAr
MjE3LDcgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRm
b3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEEKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVl
UmVnaW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29u
dGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgYm91
bmRzLCBjb25zdCBTa1BhaW50JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJh
d0JvdW5kZWQoUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgYm91bmRzLCBjb25zdCBTa1BhaW50JiBwYWlu
dCkKIHsKICAgICBib29sIG9wYXF1ZSA9IHBhaW50SXNPcGFxdWUocGFpbnQpOwogICAgIGJvb2wg
ZmlsbHNCb3VuZHMgPSBmYWxzZTsKQEAgLTIzMSwxMCArMjMxLDEzIEBAIHZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4
dCwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhdyhjb25z
dCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRy
YW5zZm9ybSwgY29uc3QgU2tSZWN0JiByZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCwgYm9vbCBk
cmF3c09wYXF1ZSwgYm9vbCBmaWxsc0JvdW5kcykKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlk
RHJhdyhQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiByZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCwgYm9v
bCBkcmF3c09wYXF1ZSwgYm9vbCBmaWxsc0JvdW5kcykKIHsKICAgICBTa1JlY3QgdGFyZ2V0UmVj
dCA9IHJlY3Q7CiAKKyAgICBib29sIHhmZXJzT3BhcXVlID0geGZlcm1vZGVJc09wYXF1ZShwYWlu
dCwgZHJhd3NPcGFxdWUpOworICAgIGJvb2wgcHJlc2VydmVzT3BhcXVlID0geGZlcm1vZGVQcmVz
ZXJ2ZXNPcGFxdWUocGFpbnQsIGRyYXdzT3BhcXVlKTsKKwogICAgIC8vIEFwcGx5IHRoZSB0cmFu
c2Zvcm0gdG8gZGV2aWNlIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgU2tNYXRyaXggY2FudmFzVHJh
bnNmb3JtID0gY29udGV4dC0+Y2FudmFzKCktPmdldFRvdGFsTWF0cml4KCk7CiAgICAgaWYgKCFj
YW52YXNUcmFuc2Zvcm0ubWFwUmVjdCgmdGFyZ2V0UmVjdCkpCkBAIC0yNDksMTcgKzI1MiwzMyBA
QCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tp
YSogY29udGV4dCwgY29uc3QgQWZmaW5lVAogICAgICAgICBpZiAoIXRhcmdldFJlY3QuaW50ZXJz
ZWN0KFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mTGVmdCksIFNrSW50VG9TY2FsYXIoZGV2aWNl
Q2xpcC5mVG9wKSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZSaWdodCksIFNrSW50VG9TY2Fs
YXIoZGV2aWNlQ2xpcC5mQm90dG9tKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmICghY29udGV4dC0+Y2xpcHBlZFRvSW1hZ2UoKS5pc09wYXF1ZSgpKQotICAgICAgICBmaWxs
c0JvdW5kcyA9IGZhbHNlOworCisgICAgLy8gQXBwbHkgYW55IGxheWVycyB0aGF0IHdlIGFyZSBk
cmF3aW5nIGludG8uCisgICAgZm9yIChTa0NhbnZhczo6TGF5ZXJJdGVyIGl0KGNvbnRleHQtPmNh
bnZhcygpLCBmYWxzZSk7ICFpdC5kb25lKCk7IGl0Lm5leHQoKSkgeworICAgICAgICAvLyBBcHBs
eSB0aGUgbGF5ZXIncyBjbGlwICh3aGljaCBpcyBpbiBkZXZpY2Ugc3BhY2UpCisgICAgICAgIGNv
bnN0IFNrUmVnaW9uJiBkZXZpY2VMYXllckNsaXAgPSBpdC5jbGlwKCk7CisgICAgICAgIGlmIChk
ZXZpY2VMYXllckNsaXAuaXNFbXB0eSgpIHx8ICFkZXZpY2VMYXllckNsaXAuaXNSZWN0KCkpCisg
ICAgICAgICAgICBmaWxsc0JvdW5kcyA9IGZhbHNlOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIFNrSVJlY3QgY2xpcEJvdW5kcyA9IGl0LmNsaXAoKS5nZXRCb3VuZHMoKTsKKyAgICAgICAg
ICAgIGlmICghdGFyZ2V0UmVjdC5pbnRlcnNlY3QoU2tJbnRUb1NjYWxhcihjbGlwQm91bmRzLmZM
ZWZ0KSwgU2tJbnRUb1NjYWxhcihjbGlwQm91bmRzLmZUb3ApLCBTa0ludFRvU2NhbGFyKGNsaXBC
b3VuZHMuZlJpZ2h0KSwgU2tJbnRUb1NjYWxhcihjbGlwQm91bmRzLmZCb3R0b20pKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhl
IHBhaW50IHN0YXlzIG9wYXF1ZSB0aHJvdWdoIHRoZSBsYXllci4KKyAgICAgICAgYm9vbCBkcmF3
c09wYXF1ZSA9IHBhaW50SXNPcGFxdWUoaXQucGFpbnQoKSk7CisgICAgICAgIHhmZXJzT3BhcXVl
ID0geGZlcnNPcGFxdWUgJiYgeGZlcm1vZGVJc09wYXF1ZShpdC5wYWludCgpLCBkcmF3c09wYXF1
ZSk7CisgICAgICAgIHByZXNlcnZlc09wYXF1ZSA9IHByZXNlcnZlc09wYXF1ZSAmJiB4ZmVybW9k
ZVByZXNlcnZlc09wYXF1ZShpdC5wYWludCgpLCBkcmF3c09wYXF1ZSk7CisgICAgfQogCiAgICAg
Ly8gQXBwbHkgdGhlIHRyYW5zZm9ybSB0byB0aGUgdHJhY2tpbmcgc3BhY2UuCiAgICAgU2tNYXRy
aXggY2FudmFzVG9UYXJnZXRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CiAgICAgaWYgKCFjYW52YXNU
b1RhcmdldFRyYW5zZm9ybS5tYXBSZWN0KCZ0YXJnZXRSZWN0KSkKICAgICAgICAgZmlsbHNCb3Vu
ZHMgPSBmYWxzZTsKIAotICAgIGlmIChmaWxsc0JvdW5kcyAmJiB4ZmVybW9kZUlzT3BhcXVlKHBh
aW50LCBkcmF3c09wYXF1ZSkpCisgICAgaWYgKGZpbGxzQm91bmRzICYmIHhmZXJzT3BhcXVlKQog
ICAgICAgICBtYXJrUmVjdEFzT3BhcXVlKHRhcmdldFJlY3QpOwotICAgIGVsc2UgaWYgKFNrUmVj
dDo6SW50ZXJzZWN0cyh0YXJnZXRSZWN0LCBtX29wYXF1ZVJlY3QpICYmICF4ZmVybW9kZVByZXNl
cnZlc09wYXF1ZShwYWludCwgZHJhd3NPcGFxdWUpKQorICAgIGVsc2UgaWYgKFNrUmVjdDo6SW50
ZXJzZWN0cyh0YXJnZXRSZWN0LCBtX29wYXF1ZVJlY3QpICYmICFwcmVzZXJ2ZXNPcGFxdWUpCiAg
ICAgICAgIG1hcmtSZWN0QXNOb25PcGFxdWUodGFyZ2V0UmVjdCk7CiB9CiAKQEAgLTMzOSw0ICsz
NTgsNSBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6Om1hcmtSZWN0QXNOb25PcGFxdWUoY29uc3Qg
U2tSZWN0JiByZWN0KQogICAgICAgICBtX29wYXF1ZVJlY3QgPSB2ZXJ0aWNhbDsKIH0KIAorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCmluZGV4IDQ1YjA2OTAwNDJhNjk4
YTRjYTAwM2QzZTg1MGVlOGQ0YzM2Nzk5NmQuLjQzMWM2ZWMxOWU1YTY5NGMxOTI5OWFhMGQ3Yjdm
YjQ3YTI5MGZkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCkBAIC01MywxMyArNTMsMTUgQEAgcHVibGlj
OgogICAgIC8vIFRoZSByZXN1bHRpbmcgb3BhcXVlIHJlZ2lvbiBhcyBhIHNpbmdsZSByZWN0Lgog
ICAgIEludFJlY3QgYXNSZWN0KCkgY29uc3Q7CiAKLSAgICB2b2lkIGRpZERyYXdSZWN0KGNvbnN0
IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1Jl
Y3QmLCBjb25zdCBTa1BhaW50JiwgY29uc3QgU2tCaXRtYXAqKTsKLSAgICB2b2lkIGRpZERyYXdQ
YXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBTa1BhdGgmLCBjb25zdCBTa1BhaW50Jik7Ci0gICAgdm9pZCBkaWREcmF3UG9pbnRzKGNv
bnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBTa0NhbnZh
czo6UG9pbnRNb2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1BvaW50W10sIGNvbnN0IFNrUGFp
bnQmKTsKLSAgICB2b2lkIGRpZERyYXdCb3VuZGVkKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEq
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jik7
CisgICAgLy8gRklYTUU6IG1ha2UgYWxsIHRoZSBQbGF0Zm9ybUNvbnRleHRTa2lhKiBpbnRvIGEg
Y29uc3QgcG9pbnRlciB3aGVuIFNraWEgZml4ZXMgTGF5ZXJJdGVyJ3MgU2tDYW52YXMqLgorCisg
ICAgdm9pZCBkaWREcmF3UmVjdChQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYsIGNvbnN0IFNrQml0bWFwKik7
CisgICAgdm9pZCBkaWREcmF3UGF0aChQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgU2tQYXRoJiwgY29uc3QgU2tQYWludCYpOworICAgIHZvaWQgZGlk
RHJhd1BvaW50cyhQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
U2tDYW52YXM6OlBvaW50TW9kZSwgaW50IG51bVBvaW50cywgY29uc3QgU2tQb2ludFtdLCBjb25z
dCBTa1BhaW50Jik7CisgICAgdm9pZCBkaWREcmF3Qm91bmRlZChQbGF0Zm9ybUNvbnRleHRTa2lh
KiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYp
OwogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkRHJhdyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lh
KiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYs
IGJvb2wgZHJhd3NPcGFxdWUsIGJvb2wgZmlsbHNCb3VuZHMpOworICAgIHZvaWQgZGlkRHJhdyhQ
bGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0
JiwgY29uc3QgU2tQYWludCYsIGJvb2wgZHJhd3NPcGFxdWUsIGJvb2wgZmlsbHNCb3VuZHMpOwog
ICAgIHZvaWQgZGlkRHJhd1VuYm91bmRlZChjb25zdCBTa1BhaW50JiwgYm9vbCBkcmF3c09wYXF1
ZSk7CiAgICAgdm9pZCBtYXJrUmVjdEFzT3BhcXVlKGNvbnN0IFNrUmVjdCYpOwogICAgIHZvaWQg
bWFya1JlY3RBc05vbk9wYXF1ZShjb25zdCBTa1JlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
Y3BwCmluZGV4IGMzMjNhMGQ3ZWZmYjNkYzZkOTEzOGQ4MWU5NzExOWNjZGJlMTNmNmIuLmZmMGQ3
ZmZkYWZlMGRkODE3YTYxNmJjZDBkMzhhYzE0YmZlZTM0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmNwcApAQCAtMjYzLDExICsyNjMsNiBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmNs
aXBQYXRoQW50aUFsaWFzZWQoY29uc3QgU2tQYXRoJiBjbGlwUGF0aCkKICAgICBjYW52YXMoKS0+
Y2xpcFBhdGgoY2xpcFBhdGgsIFNrUmVnaW9uOjprSW50ZXJzZWN0X09wLCB0cnVlKTsKIH0KIAot
Y29uc3QgU2tCaXRtYXAmIFBsYXRmb3JtQ29udGV4dFNraWE6OmNsaXBwZWRUb0ltYWdlKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9zdGF0ZS0+bV9pbWFnZUJ1ZmZlckNsaXA7Ci19Ci0KIHZvaWQg
UGxhdGZvcm1Db250ZXh0U2tpYTo6cmVzdG9yZSgpCiB7CiAgICAgaWYgKCFtX3N0YXRlLT5tX2lt
YWdlQnVmZmVyQ2xpcC5lbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCmluZGV4IGIzMDY0
NTBjYjFkOGRjOWZhY2U0NzNmM2M5MjQzZTg3ODNjYzQ2NTUuLjhkN2EyZTY4NDE5YzM2YzdmNWVm
YWU1MjM4ZDJjNGRiMTg3MzZlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCkBAIC0xMDAsOCAr
MTAwLDYgQEAgcHVibGljOgogICAgIC8vIE5PVEU6IHxpbWFnZUJ1ZmZlcnwgbWF5IGJlIGRlbGV0
ZWQgYmVmb3JlIHRoZSB8cmVzdG9yZXwgaXMgaW52b2tlZC4KICAgICB2b2lkIGJlZ2luTGF5ZXJD
bGlwcGVkVG9JbWFnZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZUJ1ZmZlciopOwogICAg
IHZvaWQgY2xpcFBhdGhBbnRpQWxpYXNlZChjb25zdCBTa1BhdGgmKTsKLSAgICAvLyBJZiBub24t
ZW1wdHksIHRoZSBsYXllciBpcyBjbGlwcGVkIHRvIHRoZSBiaXRtYXAuCi0gICAgY29uc3QgU2tC
aXRtYXAmIGNsaXBwZWRUb0ltYWdlKCkgY29uc3Q7CiAKICAgICAvLyBTZXRzIHVwIHRoZSBjb21t
b24gZmxhZ3Mgb24gYSBwYWludCBmb3IgYW50aWFsaWFzaW5nLCBlZmZlY3RzLCBldGMuCiAgICAg
Ly8gVGhpcyBpcyBpbXBsaWNpdGx5IGNhbGxlZCBieSBzZXR1cFBhaW50RmlsbCBhbmQgc2V0dXBQ
YWludFN0cm9rZSwgYnV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwCmluZGV4IGQwOTdjNDk5YTJmZGZkNDU1OWEw
YzIzM2ZiMmU3YTdlNDgzMTI5ODIuLmIwZDg2ZGRmNmY3MTM4YjYxMjA4OTY0NzA2ZjQ0NDY0NWYw
OWVmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1D
b250ZXh0U2tpYVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxh
dGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwCkBAIC02NDEsNCArNjQxLDQ0IEBAIFRFU1QoUGxhdGZv
cm1Db250ZXh0U2tpYVRlc3QsIGxheWVyVHJhbnNmb3JtU2NhbGVPcGFxdWVUZXN0KQogICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFz
UmVjdCgpKTsKIH0KIAorVEVTVChQbGF0Zm9ybUNvbnRleHRTa2lhVGVzdCwgY29udGV4dFRyYW5z
cGFyZW5jeUxheWVyVGVzdCkKK3sKKyAgICBTa0JpdG1hcCBiaXRtYXA7CisgICAgYml0bWFwLnNl
dENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIDQwMCwgNDAwKTsKKyAgICBiaXRt
YXAuYWxsb2NQaXhlbHMoKTsKKyAgICBiaXRtYXAuZXJhc2VDb2xvcigwKTsKKyAgICBTa0NhbnZh
cyBjYW52YXMoYml0bWFwKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgIHRy
YW5zZm9ybS5zY2FsZSgyKTsKKworICAgIFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250
ZXh0KCZjYW52YXMpOworICAgIHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lvbih0
cnVlKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQuc2V0T3BhcXVlUmVnaW9uVHJhbnNmb3JtKHRyYW5z
Zm9ybSk7CisgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7Cisg
ICAgCisgICAgQ29sb3Igb3BhcXVlKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAgIAorICAg
IGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSwgb3BhcXVlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDQwLCA0MCwgMjAsIDIwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigp
LmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgdHJhbnNmb3JtLmlu
dmVyc2UoKS5tYXBSZWN0KHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSkp
OworICAgIAorICAgIGNvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgyMCwgMjAsIDEwLCAxMCkp
OworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJl
Z2lvbigpLmFzUmVjdCgpKTsKKworICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcigw
LjUpOworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0
KDIwLCAyMCwgMTAsIDEwKSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVT
b3VyY2VPdmVyKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKKyAgICBjb250ZXh0LmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNv
bnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgY29udGV4dC5jbGVhclJlY3Qo
RmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgp
LCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgY29udGV4
dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDAuNSk7CisgICAgY29udGV4dC5maWxsUmVjdChGbG9h
dFJlY3QoMjAsIDIwLCAxMCwgMTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBv
c2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24o
KS5hc1JlY3QoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2Q3OWVhYzdhNDk2OTRj
YzNhZDAxM2QzZWI2NTEwZTcyOWFjOTljMy4uYzgwZjdmOWFhMWYzYjk0NDAwOTNjYzM3ZDA4OTVi
OGIwMjBiNmJjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAyLTI5ICBEYW5hIEphbnNl
bnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBvcGFx
dWUgcGFpbnQgdHJhY2tlciBhd2FyZSBvZiBTa0NhbnZhcyBsYXllcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9jdWxsaW5nL2Ns
ZWFyLWZpeGVkLWlmcmFtZS1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0
aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogY29tcG9zaXRpbmcvY3VsbGluZy9yZXNvdXJjZXMvY2xlYXItZml4ZWQtaWZy
YW1lLWNvbnRlbnQuaHRtbDogQWRkZWQuCisKIDIwMTItMDItMjMgIENzYWJhIE9zenRyb2dvbsOh
YyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5n
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhl
ZC1pZnJhbWUtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9j
bGVhci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4YWFjZDljYTYzMzMz
YTMwMmM5MzQ1Y2E4NWY2NWMxZjZjYjI3YzUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NTkK
emNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8
bX0/b1QhdihtCno8a1M/aXZ9OXVvYklaaSFHe1kxbFEhe2Y1VzdDdkdReGdqX2dBfF5WQU5EZFph
UDlTVWFTVy1MXlkoQCNaLVc1Pwp6aT0lXiUpckNPbTdZQnNkRClLSH1JSFIlU2BMbDFJP2FVYig+
WlEpbHV6aCZndSRxRDRLbypNX2dNJnszQmcydFYKeiMlTGducmk5VTRGcSNXU2JIUWpYN3xqS3Z4
blBqd2ZeVG5VKilsUkQ9KnNDWkd8VmBfI0wmU3h7MWBYNXFuSjY/ClZZdXZvZjAmTSo8YylJJHp0
YUQwZTBzc3EkVkQxMF8KCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRl
ZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGlu
Zy9jbGVhci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUu
aHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWFjZTVlMTgyYTk1ZjliYmQ0ZTVlY2VmMzc2NDAyZWQwMTlmN2Mw
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvY2xl
YXItZml4ZWQtaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD48aGVhZD48dGl0bGU+Q29tcG9zaXRvciBJZnJhbWUgU2FkZmFjZTwvdGl0bGU+Cis8c3R5
bGU+Citib2R5IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CisuY29tcG9zaXRlZCB7CisgIC13
ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsKKyAgcG9zaXRpb246Zml4ZWQ7CisgIGxlZnQ6MDsgdG9wOjA7IHJpZ2h0OjA7IGJvdHRvbTow
OworfQoraWZyYW1lIHsKKyAgcG9zaXRpb246Zml4ZWQ7CisgIGxlZnQ6IDA7IHRvcDogMDsKKyAg
d2lkdGg6MTAwJTsKKyAgaGVpZ2h0OiAxMDAlOworICBib3JkZXI6MDsKK30KKzwvc3R5bGU+Cis8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOwor
ICB9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cis8ZGl2IGNsYXNzPSJjb21wb3NpdGVk
Ij48L2Rpdj4KKworPCEtLSBZb3Ugc2hvdWxkIHNlZSBhIGxpZ2h0IGdyZWVuIGJveCBmaWxsaW5n
IHRoZSB0b3AvbGVmdCBvZiB0aGUgd2luZG93LCBpbnNpZGUgYSBkYXJrZXIgZ3JlZW4gYmFja2dy
b3VuZC4KKyAgICAgSWYgdGhlICJnbGFzcyIgaW4gdGhlIGlmcmFtZSBpcyBjb25zaWRlcmVkIG9w
YXF1ZSwgdGhlbiBkcmF3aW5nIGVycm9ycyB3aWxsIG9jY3VyIGFuZCB0aWxlcyBiZWNvbWUgYmxh
Y2sKKyAgICAgKGxpZ2h0IGdyYXkgd2l0aCB0aGUgZ2xhc3MpLgorICAtLT4KKzxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvY2xlYXItZml4ZWQtaWZyYW1lLWNvbnRlbnQuaHRtbCIgZnJhbWVib3JkZXI9
IjAiPjwvaWZyYW1lPgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9jdWxsaW5nL3Jlc291cmNlcy9jbGVhci1maXhlZC1pZnJhbWUtY29udGVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9yZXNvdXJjZXMvY2xlYXIt
Zml4ZWQtaWZyYW1lLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZmEwNGQzOWM0NTg2YTY1MmY3
ZTk1ODY1ZmNiNzczYTM4ZDY0NGFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvY3VsbGluZy9yZXNvdXJjZXMvY2xlYXItZml4ZWQtaWZyYW1lLWNvbnRlbnQuaHRt
bApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPjxoZWFkPjx0aXRsZT48
L3RpdGxlPgorPHN0eWxlPgorYm9keSB7IG1hcmdpbjowOyBwYWRkaW5nOjA7IH0KKworI2dsYXNz
IHsKKyAgb3BhY2l0eTowLjQ7CisgIGJhY2tncm91bmQtY29sb3I6d2hpdGU7CisgIHBvc2l0aW9u
OmFic29sdXRlOworICB0b3A6MHB4OyBsZWZ0OjBweDsgcmlnaHQ6NTBweDsgYm90dG9tOiA1MHB4
OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHk+Cis8ZGl2IGlkPSJnbGFzcyI+PC9kaXY+
Cis8L2JvZHk+Cis8L3NjcmlwdD4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129702</attachid>
            <date>2012-03-01 07:13:25 -0800</date>
            <delta_ts>2012-03-01 13:10:13 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-79145-20120301101324.patch</filename>
            <type>text/plain</type>
            <size>17107</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJjMWIzZmZmMjZjZTY2
ZjM1YTA0YzgyNThiZThlMzZjMWQyYWM3OS4uNjA5ODdhODVjMTk4OGU5ZWM5MzEyZGVmZmMzNDE3
M2QwNGQ3MTliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAyLTI5ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBvcGFxdWUgcGFpbnQgdHJhY2tlciBhd2FyZSBvZiBTa0NhbnZhcyBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU3RlcGhlbiBXaGl0ZS4KKworICAgICAgICBUaGUgY3VycmVudCBvcGFxdWUg
cGFpbnQgdHJhY2tlciBpZ25vcmVkIFNrQ2FudmFzIGxheWVycyBlbnRpcmVseS4gQnV0CisgICAg
ICAgIFNrQ2FudmFzIGxheWVycyBjYW4gYmUgdXNlZCB0byBhcHBseSB0aGluZ3MgbGlrZSBhbHBo
YS4gU28gd2UgbWFrZSBpdAorICAgICAgICBrbm93IGFib3V0IGxheWVycywgYW5kIGFwcGx5IGFu
eSBjbGlwcGluZyBhbmQgU2tQYWludCBvYmplY3RzIGZvciBsYXllcnMKKyAgICAgICAgd2hlbiB0
cmFja2luZyBhIHBhaW50LgorCisgICAgICAgIEltYWdlIGNsaXBwaW5nIGlzIGRvbmUgdmlhIGEg
bGF5ZXIsIHNvIHdlIGNhbiBub3cgYWxzbyByZW1vdmUgdGhlCisgICAgICAgIHNwZWNpYWwtY2Fz
ZSBjb2RlIGFyb3VuZCBpbWFnZSBjbGlwcGluZyBpbiBQbGF0Zm9ybUNvbnRleHRTa2lhIGFuZAor
ICAgICAgICBPcGFxdWVSZWdpb25Ta2lhLgorCisgICAgICAgIFVuaXQgdGVzdDogUGxhdGZvcm1D
b250ZXh0U2tpYVRlc3QuY29udGV4dFRyYW5zcGFyZW5jeUxheWVyVGVzdAorCisgICAgICAgIFRl
c3Q6IGNvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1
ZVJlZ2lvblNraWE6OmRpZERyYXdCb3VuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJl
Z2lvblNraWE6OmRpZERyYXcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmg6CisgICAgICAgIChPcGFxdWVSZWdp
b25Ta2lhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250
ZXh0U2tpYS5oOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0U2tpYSk6CisKIDIwMTItMDItMjkg
IEphc29uIExpdSAgPGphc29uLmxpdUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0Js
YWNrQmVycnldTWFrZSBhYm91dDpjYWNoZSBmZWF0dXJlIGF2YWlsYWJsZSBpbiByZWxlYXNlIHZl
cnNpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDg5ZDlmZDMyMjg4MDU1NWIxN2M2
OTE3NjBjYjY2NjNjNzEyMzVlY2YuLjIzZDU0YmNmYjAzOGJjYmQyNjNhYzEwMzM2YmNmMzI0NTBi
ZmFjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTIt
MDItMjkgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBNYWtlIG9wYXF1ZSBwYWludCB0cmFja2VyIGF3YXJlIG9mIFNrQ2FudmFzIGxheWVy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxNDUK
KworICAgICAgICBSZXZpZXdlZCBieSBTdGVwaGVuIFdoaXRlLgorCisgICAgICAgICogdGVzdHMv
UGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wMi0yOSAgSmFtZXMgU2ltb25zZW4gIDxzaW1vbmph
bUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBGaXggbmF2aWdhdGlvbiBzdGFy
dCB0aW1lIG9uIGNyb3NzLXJlbmRlcmVyIG5hdmlnYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwCmlu
ZGV4IDIxZmFjYWFkYjhiMTg5MzZmNDI4MjQ5NGQ1MmQyNDcwZGFjNzdkYzAuLjc2ZWIxM2EyMDZh
ODFhZjRiODc3YTEzYTQyNjM3NjI4OTQ4MGU5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcApAQCAt
MTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwYWludElzT3BhcXVlKGNvbnN0IFNr
UGFpbnQmIHBhaW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwID0KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChjb25zdCBQbGF0Zm9ybUNv
bnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29u
c3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQYWludCYgcGFpbnQsIGNvbnN0IFNrQml0bWFw
KiBiaXRtYXApCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KFBsYXRmb3JtQ29u
dGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25z
dCBTa1JlY3QmIGZpbGxSZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCwgY29uc3QgU2tCaXRtYXAq
IGJpdG1hcCkKIHsKICAgICAvLyBBbnkgc3Ryb2tpbmcgbWF5IHB1dCBhbHBoYSBpbiBwaXhlbHMg
ZXZlbiBpZiB0aGUgZmlsbGluZyBwYXJ0IGRvZXMgbm90LgogICAgIGlmIChwYWludC5nZXRTdHls
ZSgpICE9IFNrUGFpbnQ6OmtGaWxsX1N0eWxlKSB7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBP
cGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBj
b250ZXh0LCBjb25zdCBBZmYKICAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgZmlsbFJl
Y3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKIH0KIAotdm9pZCBPcGFxdWVSZWdpb25T
a2lhOjpkaWREcmF3UGF0aChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tQYXRoJiBwYXRoLCBjb25zdCBT
a1BhaW50JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoUGxhdGZv
cm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0s
IGNvbnN0IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAgU2tSZWN0
IHJlY3Q7CiAgICAgaWYgKHBhdGguaXNSZWN0KCZyZWN0KSkgewpAQCAtMTg4LDcgKzE4OCw3IEBA
IHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3QgUGxhdGZvcm1Db250ZXh0
U2tpYSogY29udGV4dCwgY29uc3QgQWZmCiAgICAgfQogfQogCi12b2lkIE9wYXF1ZVJlZ2lvblNr
aWE6OmRpZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIFNrQ2FudmFzOjpQb2ludE1vZGUgbW9kZSwg
aW50IG51bVBvaW50cywgY29uc3QgU2tQb2ludCBwb2ludHNbXSwgY29uc3QgU2tQYWludCYgcGFp
bnQpCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQb2ludHMoUGxhdGZvcm1Db250ZXh0
U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIFNrQ2FudmFz
OjpQb2ludE1vZGUgbW9kZSwgaW50IG51bVBvaW50cywgY29uc3QgU2tQb2ludCBwb2ludHNbXSwg
Y29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAgaWYgKCFudW1Qb2ludHMpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQ
b2ludHMoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQQogICAgIH0K
IH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9y
bUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwg
Y29uc3QgU2tSZWN0JiBib3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVS
ZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBib3VuZHMsIGNv
bnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGJvb2wgb3BhcXVlID0gcGFpbnRJc09wYXF1ZShw
YWludCk7CiAgICAgYm9vbCBmaWxsc0JvdW5kcyA9IGZhbHNlOwpAQCAtMjMxLDEwICsyMzEsMTMg
QEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNv
bnRleHRTa2lhKiBjb250ZXh0LCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBPcGFxdWVSZWdpb25T
a2lhOjpkaWREcmF3KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFp
bnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZpbGxzQm91bmRzKQordm9pZCBPcGFx
dWVSZWdpb25Ta2lhOjpkaWREcmF3KFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNr
UGFpbnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZpbGxzQm91bmRzKQogewogICAg
IFNrUmVjdCB0YXJnZXRSZWN0ID0gcmVjdDsKIAorICAgIGJvb2wgeGZlcnNPcGFxdWUgPSB4ZmVy
bW9kZUlzT3BhcXVlKHBhaW50LCBkcmF3c09wYXF1ZSk7CisgICAgYm9vbCBwcmVzZXJ2ZXNPcGFx
dWUgPSB4ZmVybW9kZVByZXNlcnZlc09wYXF1ZShwYWludCwgZHJhd3NPcGFxdWUpOworCiAgICAg
Ly8gQXBwbHkgdGhlIHRyYW5zZm9ybSB0byBkZXZpY2UgY29vcmRpbmF0ZSBzcGFjZS4KICAgICBT
a01hdHJpeCBjYW52YXNUcmFuc2Zvcm0gPSBjb250ZXh0LT5jYW52YXMoKS0+Z2V0VG90YWxNYXRy
aXgoKTsKICAgICBpZiAoIWNhbnZhc1RyYW5zZm9ybS5tYXBSZWN0KCZ0YXJnZXRSZWN0KSkKQEAg
LTI0OSwxNyArMjUyLDMzIEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhdyhjb25zdCBQ
bGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUCiAgICAgICAgIGlmICgh
dGFyZ2V0UmVjdC5pbnRlcnNlY3QoU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZMZWZ0KSwgU2tJ
bnRUb1NjYWxhcihkZXZpY2VDbGlwLmZUb3ApLCBTa0ludFRvU2NhbGFyKGRldmljZUNsaXAuZlJp
Z2h0KSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZCb3R0b20pKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgaWYgKCFjb250ZXh0LT5jbGlwcGVkVG9JbWFnZSgpLmlzT3BhcXVl
KCkpCi0gICAgICAgIGZpbGxzQm91bmRzID0gZmFsc2U7CisKKyAgICAvLyBBcHBseSBhbnkgbGF5
ZXJzIHRoYXQgd2UgYXJlIGRyYXdpbmcgaW50by4KKyAgICBmb3IgKFNrQ2FudmFzOjpMYXllckl0
ZXIgaXQoY29udGV4dC0+Y2FudmFzKCksIGZhbHNlKTsgIWl0LmRvbmUoKTsgaXQubmV4dCgpKSB7
CisgICAgICAgIC8vIEFwcGx5IHRoZSBsYXllcidzIGNsaXAgKHdoaWNoIGlzIGluIGRldmljZSBz
cGFjZSkKKyAgICAgICAgY29uc3QgU2tSZWdpb24mIGRldmljZUxheWVyQ2xpcCA9IGl0LmNsaXAo
KTsKKyAgICAgICAgaWYgKGRldmljZUxheWVyQ2xpcC5pc0VtcHR5KCkgfHwgIWRldmljZUxheWVy
Q2xpcC5pc1JlY3QoKSkKKyAgICAgICAgICAgIGZpbGxzQm91bmRzID0gZmFsc2U7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgU2tJUmVjdCBjbGlwQm91bmRzID0gaXQuY2xpcCgpLmdldEJv
dW5kcygpOworICAgICAgICAgICAgaWYgKCF0YXJnZXRSZWN0LmludGVyc2VjdChTa0ludFRvU2Nh
bGFyKGNsaXBCb3VuZHMuZkxlZnQpLCBTa0ludFRvU2NhbGFyKGNsaXBCb3VuZHMuZlRvcCksIFNr
SW50VG9TY2FsYXIoY2xpcEJvdW5kcy5mUmlnaHQpLCBTa0ludFRvU2NhbGFyKGNsaXBCb3VuZHMu
ZkJvdHRvbSkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIE1ha2Ugc3VyZSB0aGUgcGFpbnQgc3RheXMgb3BhcXVlIHRocm91Z2ggdGhlIGxheWVyLgor
ICAgICAgICBib29sIGRyYXdzT3BhcXVlID0gcGFpbnRJc09wYXF1ZShpdC5wYWludCgpKTsKKyAg
ICAgICAgeGZlcnNPcGFxdWUgPSB4ZmVyc09wYXF1ZSAmJiB4ZmVybW9kZUlzT3BhcXVlKGl0LnBh
aW50KCksIGRyYXdzT3BhcXVlKTsKKyAgICAgICAgcHJlc2VydmVzT3BhcXVlID0gcHJlc2VydmVz
T3BhcXVlICYmIHhmZXJtb2RlUHJlc2VydmVzT3BhcXVlKGl0LnBhaW50KCksIGRyYXdzT3BhcXVl
KTsKKyAgICB9CiAKICAgICAvLyBBcHBseSB0aGUgdHJhbnNmb3JtIHRvIHRoZSB0cmFja2luZyBz
cGFjZS4KICAgICBTa01hdHJpeCBjYW52YXNUb1RhcmdldFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsK
ICAgICBpZiAoIWNhbnZhc1RvVGFyZ2V0VHJhbnNmb3JtLm1hcFJlY3QoJnRhcmdldFJlY3QpKQog
ICAgICAgICBmaWxsc0JvdW5kcyA9IGZhbHNlOwogCi0gICAgaWYgKGZpbGxzQm91bmRzICYmIHhm
ZXJtb2RlSXNPcGFxdWUocGFpbnQsIGRyYXdzT3BhcXVlKSkKKyAgICBpZiAoZmlsbHNCb3VuZHMg
JiYgeGZlcnNPcGFxdWUpCiAgICAgICAgIG1hcmtSZWN0QXNPcGFxdWUodGFyZ2V0UmVjdCk7Ci0g
ICAgZWxzZSBpZiAoU2tSZWN0OjpJbnRlcnNlY3RzKHRhcmdldFJlY3QsIG1fb3BhcXVlUmVjdCkg
JiYgIXhmZXJtb2RlUHJlc2VydmVzT3BhcXVlKHBhaW50LCBkcmF3c09wYXF1ZSkpCisgICAgZWxz
ZSBpZiAoU2tSZWN0OjpJbnRlcnNlY3RzKHRhcmdldFJlY3QsIG1fb3BhcXVlUmVjdCkgJiYgIXBy
ZXNlcnZlc09wYXF1ZSkKICAgICAgICAgbWFya1JlY3RBc05vbk9wYXF1ZSh0YXJnZXRSZWN0KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9P
cGFxdWVSZWdpb25Ta2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L09wYXF1ZVJlZ2lvblNraWEuaAppbmRleCA0NWIwNjkwMDQyYTY5OGE0Y2EwMDNkM2U4NTBlZThk
NGMzNjc5OTZkLi40MzFjNmVjMTllNWE2OTRjMTkyOTlhYTBkN2I3ZmI0N2EyOTBmZGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lv
blNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1
ZVJlZ2lvblNraWEuaApAQCAtNTMsMTMgKzUzLDE1IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcmVz
dWx0aW5nIG9wYXF1ZSByZWdpb24gYXMgYSBzaW5nbGUgcmVjdC4KICAgICBJbnRSZWN0IGFzUmVj
dCgpIGNvbnN0OwogCi0gICAgdm9pZCBkaWREcmF3UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHRT
a2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWlu
dCYsIGNvbnN0IFNrQml0bWFwKik7Ci0gICAgdm9pZCBkaWREcmF3UGF0aChjb25zdCBQbGF0Zm9y
bUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tQYXRoJiwgY29u
c3QgU2tQYWludCYpOwotICAgIHZvaWQgZGlkRHJhd1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRl
eHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgU2tDYW52YXM6OlBvaW50TW9kZSwgaW50
IG51bVBvaW50cywgY29uc3QgU2tQb2ludFtdLCBjb25zdCBTa1BhaW50Jik7Ci0gICAgdm9pZCBk
aWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYpOworICAgIC8vIEZJWE1FOiBt
YWtlIGFsbCB0aGUgUGxhdGZvcm1Db250ZXh0U2tpYSogaW50byBhIGNvbnN0IHBvaW50ZXIgd2hl
biBTa2lhIGZpeGVzIExheWVySXRlcidzIFNrQ2FudmFzKi4KKworICAgIHZvaWQgZGlkRHJhd1Jl
Y3QoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNr
UmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBjb25zdCBTa0JpdG1hcCopOworICAgIHZvaWQgZGlkRHJh
d1BhdGgoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IFNrUGF0aCYsIGNvbnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRpZERyYXdQb2ludHMoUGxhdGZv
cm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIFNrQ2FudmFzOjpQb2ludE1v
ZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWludCYpOworICAg
IHZvaWQgZGlkRHJhd0JvdW5kZWQoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmKTsKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdzT3BhcXVl
LCBib29sIGZpbGxzQm91bmRzKTsKKyAgICB2b2lkIGRpZERyYXcoUGxhdGZvcm1Db250ZXh0U2tp
YSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQm
LCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZpbGxzQm91bmRzKTsKICAgICB2b2lkIGRpZERyYXdV
bmJvdW5kZWQoY29uc3QgU2tQYWludCYsIGJvb2wgZHJhd3NPcGFxdWUpOwogICAgIHZvaWQgbWFy
a1JlY3RBc09wYXF1ZShjb25zdCBTa1JlY3QmKTsKICAgICB2b2lkIG1hcmtSZWN0QXNOb25PcGFx
dWUoY29uc3QgU2tSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAppbmRleCBiYmJjZGI1
NGNkNDE5YjE4YmRmY2M3NTViZTY4ZWI5ZDdlN2JlNjJhLi43ZWU5MGNhZGQ5OGJjMzUxYTQ2MWFk
NmQ2NzI0YzQ1ZjMyNWNkNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKQEAgLTI2Nywx
MSArMjY3LDYgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpjbGlwUGF0aEFudGlBbGlhc2Vk
KGNvbnN0IFNrUGF0aCYgY2xpcFBhdGgpCiAgICAgY2FudmFzKCktPmNsaXBQYXRoKGNsaXBQYXRo
LCBTa1JlZ2lvbjo6a0ludGVyc2VjdF9PcCwgdHJ1ZSk7CiB9CiAKLWNvbnN0IFNrQml0bWFwJiBQ
bGF0Zm9ybUNvbnRleHRTa2lhOjpjbGlwcGVkVG9JbWFnZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fc3RhdGUtPm1faW1hZ2VCdWZmZXJDbGlwOwotfQotCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNr
aWE6OnJlc3RvcmUoKQogewogICAgIGlmICghbV9zdGF0ZS0+bV9pbWFnZUJ1ZmZlckNsaXAuZW1w
dHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9QbGF0Zm9ybUNvbnRleHRTa2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAppbmRleCBiMzA2NDUwY2IxZDhkYzlmYWNlNDcz
ZjNjOTI0M2U4NzgzY2M0NjU1Li44ZDdhMmU2ODQxOWMzNmM3ZjVlZmFlNTIzOGQyYzRkYjE4NzM2
ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bs
YXRmb3JtQ29udGV4dFNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaApAQCAtMTAwLDggKzEwMCw2IEBAIHB1YmxpYzoK
ICAgICAvLyBOT1RFOiB8aW1hZ2VCdWZmZXJ8IG1heSBiZSBkZWxldGVkIGJlZm9yZSB0aGUgfHJl
c3RvcmV8IGlzIGludm9rZWQuCiAgICAgdm9pZCBiZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2UoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VCdWZmZXIqKTsKICAgICB2b2lkIGNsaXBQYXRoQW50
aUFsaWFzZWQoY29uc3QgU2tQYXRoJik7Ci0gICAgLy8gSWYgbm9uLWVtcHR5LCB0aGUgbGF5ZXIg
aXMgY2xpcHBlZCB0byB0aGUgYml0bWFwLgotICAgIGNvbnN0IFNrQml0bWFwJiBjbGlwcGVkVG9J
bWFnZSgpIGNvbnN0OwogCiAgICAgLy8gU2V0cyB1cCB0aGUgY29tbW9uIGZsYWdzIG9uIGEgcGFp
bnQgZm9yIGFudGlhbGlhc2luZywgZWZmZWN0cywgZXRjLgogICAgIC8vIFRoaXMgaXMgaW1wbGlj
aXRseSBjYWxsZWQgYnkgc2V0dXBQYWludEZpbGwgYW5kIHNldHVwUGFpbnRTdHJva2UsIGJ1dApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRT
a2lhVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4
dFNraWFUZXN0LmNwcAppbmRleCBkMDk3YzQ5OWEyZmRmZDQ1NTlhMGMyMzNmYjJlN2E3ZTQ4MzEy
OTgyLi5iMGQ4NmRkZjZmNzEzOGI2MTIwODk2NDcwNmY0NDQ2NDVmMDllZjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFU
ZXN0LmNwcApAQCAtNjQxLDQgKzY0MSw0NCBAQCBURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0
LCBsYXllclRyYW5zZm9ybVNjYWxlT3BhcXVlVGVzdCkKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CiB9CiAKK1RF
U1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIGNvbnRleHRUcmFuc3BhcmVuY3lMYXllclRlc3Qp
Cit7CisgICAgU2tCaXRtYXAgYml0bWFwOworICAgIGJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6
OmtBUkdCXzg4ODhfQ29uZmlnLCA0MDAsIDQwMCk7CisgICAgYml0bWFwLmFsbG9jUGl4ZWxzKCk7
CisgICAgYml0bWFwLmVyYXNlQ29sb3IoMCk7CisgICAgU2tDYW52YXMgY2FudmFzKGJpdG1hcCk7
CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoMik7
CisKKyAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dCgmY2FudmFzKTsKKyAg
ICBwbGF0Zm9ybUNvbnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7CisgICAgcGxhdGZv
cm1Db250ZXh0LnNldE9wYXF1ZVJlZ2lvblRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIEdyYXBo
aWNzQ29udGV4dCBjb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOworICAgIAorICAgIENvbG9yIG9w
YXF1ZSgxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKyAgICAKKyAgICBjb250ZXh0LmZpbGxSZWN0
KEZsb2F0UmVjdCgyMCwgMjAsIDEwLCAxMCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
Q29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0MCwgNDAs
IDIwLCAyMCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAg
RVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUmVjdChw
bGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpKTsKKyAgICAKKyAgICBjb250
ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3QoMjAsIDIwLCAxMCwgMTApKTsKKyAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7
CisKKyAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMC41KTsKKyAgICBjb250ZXh0
LnNhdmUoKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgyMCwgMjAsIDEwLCAxMCks
IG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAg
Y29udGV4dC5yZXN0b3JlKCk7CisgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lv
bigpLmFzUmVjdCgpKTsKKworICAgIGNvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgyMCwgMjAs
IDEwLCAxMCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0
Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVu
Y3lMYXllcigwLjUpOworICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDIwLCAyMCwgMTAs
IDEwKSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsK
KyAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZhYmIyODU5YTkyYzJjYWI3MzJlMTFjMzAyOWMzMWM2
MjYzY2JmYTQuLmQ1NTNlNTQ1MTY0MTMwYzZmYjdhYzZlNWEyODhiODYwNTVlMGVjNDAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMi0yOSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIE1ha2Ugb3BhcXVlIHBhaW50IHRyYWNrZXIg
YXdhcmUgb2YgU2tDYW52YXMgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03OTE0NQorCisgICAgICAgIFJldmlld2VkIGJ5IFN0ZXBoZW4gV2hp
dGUuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS1l
eHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXIt
Zml4ZWQtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcv
Y3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogY29tcG9z
aXRpbmcvY3VsbGluZy9yZXNvdXJjZXMvY2xlYXItZml4ZWQtaWZyYW1lLWNvbnRlbnQuaHRtbDog
QWRkZWQuCisKIDIwMTItMDItMjkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLWV4cGVjdGVkLnBuZyBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLWV4cGVj
dGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOGFhY2Q5Y2E2MzMzM2EzMDJjOTM0NWNhODVmNjVjMWY2Y2Iy
N2M1CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODU5CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEw
eX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UIXYobQp6PGtTP2l2fTl1b2JJ
WmkhR3tZMWxRIXtmNVc3Q3ZHUXhnal9nQXxeVkFORGRaYVA5U1VhU1ctTF5ZKEAjWi1XNT8Kemk9
JV4lKXJDT203WUJzZEQpS0h9SUhSJVNgTGwxST9hVWIoPlpRKWx1emgmZ3UkcUQ0S28qTV9nTSZ7
M0JnMnRWCnojJUxnbnJpOVU0RnEjV1NiSFFqWDd8akt2eG5QandmXlRuVSopbFJEPSpzQ1pHfFZg
XyNMJlN4ezFgWDVxbko2PwpWWXV2b2YwJk0qPGMpSSR6dGFEMGUwc3NxJFZEMTBfCgpsaXRlcmFs
IDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxs
aW5nL2NsZWFyLWZpeGVkLWlmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQwOGJkYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQtaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhY2U1
ZTE4MmE5NWY5YmJkNGU1ZWNlZjM3NjQwMmVkMDE5ZjdjMDUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sCkBA
IC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+PGhlYWQ+PHRpdGxlPkNvbXBv
c2l0b3IgSWZyYW1lIFNhZGZhY2U8L3RpdGxlPgorPHN0eWxlPgorYm9keSB7IG1hcmdpbjogMDsg
cGFkZGluZzogMDsgfQorLmNvbXBvc2l0ZWQgeworICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNs
YXRlWigwKTsKKyAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgIHBvc2l0aW9uOmZpeGVkOwor
ICBsZWZ0OjA7IHRvcDowOyByaWdodDowOyBib3R0b206MDsKK30KK2lmcmFtZSB7CisgIHBvc2l0
aW9uOmZpeGVkOworICBsZWZ0OiAwOyB0b3A6IDA7CisgIHdpZHRoOjEwMCU7CisgIGhlaWdodDog
MTAwJTsKKyAgYm9yZGVyOjA7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
CisKKzxib2R5PgorPGRpdiBjbGFzcz0iY29tcG9zaXRlZCI+PC9kaXY+CisKKzwhLS0gWW91IHNo
b3VsZCBzZWUgYSBsaWdodCBncmVlbiBib3ggZmlsbGluZyB0aGUgdG9wL2xlZnQgb2YgdGhlIHdp
bmRvdywgaW5zaWRlIGEgZGFya2VyIGdyZWVuIGJhY2tncm91bmQuCisgICAgIElmIHRoZSAiZ2xh
c3MiIGluIHRoZSBpZnJhbWUgaXMgY29uc2lkZXJlZCBvcGFxdWUsIHRoZW4gZHJhd2luZyBlcnJv
cnMgd2lsbCBvY2N1ciBhbmQgdGlsZXMgYmVjb21lIGJsYWNrCisgICAgIChsaWdodCBncmF5IHdp
dGggdGhlIGdsYXNzKS4KKyAgLS0+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2NsZWFyLWZpeGVk
LWlmcmFtZS1jb250ZW50Lmh0bWwiIGZyYW1lYm9yZGVyPSIwIj48L2lmcmFtZT4KKzwvYm9keT4K
KworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9y
ZXNvdXJjZXMvY2xlYXItZml4ZWQtaWZyYW1lLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2N1bGxpbmcvcmVzb3VyY2VzL2NsZWFyLWZpeGVkLWlmcmFtZS1jb250ZW50Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmZhMDRkMzljNDU4NmE2NTJmN2U5NTg2NWZjYjc3M2EzOGQ2NDRhZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvcmVzb3Vy
Y2VzL2NsZWFyLWZpeGVkLWlmcmFtZS1jb250ZW50Lmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD48aGVhZD48dGl0bGU+PC90aXRsZT4KKzxzdHlsZT4KK2JvZHkg
eyBtYXJnaW46MDsgcGFkZGluZzowOyB9CisKKyNnbGFzcyB7CisgIG9wYWNpdHk6MC40OworICBi
YWNrZ3JvdW5kLWNvbG9yOndoaXRlOworICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgdG9wOjBweDsg
bGVmdDowcHg7IHJpZ2h0OjUwcHg7IGJvdHRvbTogNTBweDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+
CisKKzxib2R5PgorPGRpdiBpZD0iZ2xhc3MiPjwvZGl2PgorPC9ib2R5PgorPC9zY3JpcHQ+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129735</attachid>
            <date>2012-03-01 13:10:17 -0800</date>
            <delta_ts>2012-03-01 22:47:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79145-20120301161016.patch</filename>
            <type>text/plain</type>
            <size>17258</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJjMWIzZmZmMjZjZTY2
ZjM1YTA0YzgyNThiZThlMzZjMWQyYWM3OS4uNTcyMmY0ZjVmY2U4OGVjMzZhZGJmM2RlZjNmZjk5
NjI3OTYyNzcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAzLTAxICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBvcGFxdWUgcGFpbnQgdHJhY2tlciBhd2FyZSBvZiBTa0NhbnZhcyBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgb3BhcXVl
IHBhaW50IHRyYWNrZXIgaWdub3JlZCBTa0NhbnZhcyBsYXllcnMgZW50aXJlbHkuIEJ1dAorICAg
ICAgICBTa0NhbnZhcyBsYXllcnMgY2FuIGJlIHVzZWQgdG8gYXBwbHkgdGhpbmdzIGxpa2UgYWxw
aGEuIFNvIHdlIG1ha2UgaXQKKyAgICAgICAga25vdyBhYm91dCBsYXllcnMsIGFuZCBhcHBseSBh
bnkgY2xpcHBpbmcgYW5kIFNrUGFpbnQgb2JqZWN0cyBmb3IgbGF5ZXJzCisgICAgICAgIHdoZW4g
dHJhY2tpbmcgYSBwYWludC4KKworICAgICAgICBJbWFnZSBjbGlwcGluZyBpcyBkb25lIHZpYSBh
IGxheWVyLCBzbyB3ZSBjYW4gbm93IGFsc28gcmVtb3ZlIHRoZQorICAgICAgICBzcGVjaWFsLWNh
c2UgY29kZSBhcm91bmQgaW1hZ2UgY2xpcHBpbmcgaW4gUGxhdGZvcm1Db250ZXh0U2tpYSBhbmQK
KyAgICAgICAgT3BhcXVlUmVnaW9uU2tpYS4KKworICAgICAgICBVbml0IHRlc3Q6IFBsYXRmb3Jt
Q29udGV4dFNraWFUZXN0LmNvbnRleHRUcmFuc3BhcmVuY3lMYXllclRlc3QKKworICAgICAgICBU
ZXN0OiBjb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS5odG1sCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGFx
dWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVS
ZWdpb25Ta2lhOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oOgorICAgICAgICAoT3BhcXVlUmVn
aW9uU2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRl
eHRTa2lhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29u
dGV4dFNraWEuaDoKKyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWEpOgorCiAyMDEyLTAyLTI5
ICBKYXNvbiBMaXUgIDxqYXNvbi5saXVAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtC
bGFja0JlcnJ5XU1ha2UgYWJvdXQ6Y2FjaGUgZmVhdHVyZSBhdmFpbGFibGUgaW4gcmVsZWFzZSB2
ZXJzaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4OWQ5ZmQzMjI4ODA1NTViMTdj
NjkxNzYwY2I2NjYzYzcxMjM1ZWNmLi5jNDNlZjViYmYwNjk2MzI0NjFlZTczMDIzMjVjOTE3NmNl
MTIzZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEy
LTAzLTAxICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtj
aHJvbWl1bV0gTWFrZSBvcGFxdWUgcGFpbnQgdHJhY2tlciBhd2FyZSBvZiBTa0NhbnZhcyBsYXll
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5MTQ1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0
cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToK
KyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAyLTI5ICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9u
amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEZpeCBuYXZpZ2F0aW9uIHN0
YXJ0IHRpbWUgb24gY3Jvc3MtcmVuZGVyZXIgbmF2aWdhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAK
aW5kZXggMjFmYWNhYWRiOGIxODkzNmY0MjgyNDk0ZDUyZDI0NzBkYWM3N2RjMC4uNWE0ZjE1MzRj
MDlmZjgyY2M1MzZkNGZiYmJlMzY4YmY2ZjRjYmJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwCkBA
IC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIGlubGluZSBib29sIHBhaW50SXNPcGFxdWUoY29uc3Qg
U2tQYWludCYgcGFpbnQsIGNvbnN0IFNrQml0bWFwKiBiaXRtYXAgPQogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KGNvbnN0IFBsYXRmb3Jt
Q29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBj
b25zdCBTa1JlY3QmIGZpbGxSZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCwgY29uc3QgU2tCaXRt
YXAqIGJpdG1hcCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QoUGxhdGZvcm1D
b250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNv
bnN0IFNrUmVjdCYgZmlsbFJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0JpdG1h
cCogYml0bWFwKQogewogICAgIC8vIEFueSBzdHJva2luZyBtYXkgcHV0IGFscGhhIGluIHBpeGVs
cyBldmVuIGlmIHRoZSBmaWxsaW5nIHBhcnQgZG9lcyBub3QuCiAgICAgaWYgKHBhaW50LmdldFN0
eWxlKCkgIT0gU2tQYWludDo6a0ZpbGxfU3R5bGUpIHsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lk
IE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEq
IGNvbnRleHQsIGNvbnN0IEFmZgogICAgIGRpZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCBmaWxs
UmVjdCwgcGFpbnQsIG9wYXF1ZSwgZmlsbHNCb3VuZHMpOwogfQogCi12b2lkIE9wYXF1ZVJlZ2lv
blNraWE6OmRpZERyYXdQYXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1BhdGgmIHBhdGgsIGNvbnN0
IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UGF0aChQbGF0
Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSwgY29uc3QgU2tQYXRoJiBwYXRoLCBjb25zdCBTa1BhaW50JiBwYWludCkKIHsKICAgICBTa1Jl
Y3QgcmVjdDsKICAgICBpZiAocGF0aC5pc1JlY3QoJnJlY3QpKSB7CkBAIC0xODgsNyArMTg4LDcg
QEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UGF0aChjb25zdCBQbGF0Zm9ybUNvbnRl
eHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmYKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9u
U2tpYTo6ZGlkRHJhd1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgU2tDYW52YXM6OlBvaW50TW9kZSBtb2Rl
LCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1BvaW50IHBvaW50c1tdLCBjb25zdCBTa1BhaW50JiBw
YWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyhQbGF0Zm9ybUNvbnRl
eHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgU2tDYW52
YXM6OlBvaW50TW9kZSBtb2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1BvaW50IHBvaW50c1td
LCBjb25zdCBTa1BhaW50JiBwYWludCkKIHsKICAgICBpZiAoIW51bVBvaW50cykKICAgICAgICAg
cmV0dXJuOwpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJh
d1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBCiAgICAg
fQogfQogCi12b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdCb3VuZGVkKGNvbnN0IFBsYXRm
b3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBjb25zdCBTa1JlY3QmIGJvdW5kcywgY29uc3QgU2tQYWludCYgcGFpbnQpCit2b2lkIE9wYXF1
ZVJlZ2lvblNraWE6OmRpZERyYXdCb3VuZGVkKFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1JlY3QmIGJvdW5kcywg
Y29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAgYm9vbCBvcGFxdWUgPSBwYWludElzT3BhcXVl
KHBhaW50KTsKICAgICBib29sIGZpbGxzQm91bmRzID0gZmFsc2U7CkBAIC0yMzEsMTAgKzIzMSwx
MyBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdCb3VuZGVkKGNvbnN0IFBsYXRmb3Jt
Q29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0CiAgICAgfQogfQogCi12b2lkIE9wYXF1ZVJlZ2lv
blNraWE6OmRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgcmVjdCwgY29uc3QgU2tQ
YWludCYgcGFpbnQsIGJvb2wgZHJhd3NPcGFxdWUsIGJvb2wgZmlsbHNCb3VuZHMpCit2b2lkIE9w
YXF1ZVJlZ2lvblNraWE6OmRpZERyYXcoUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgcmVjdCwgY29uc3Qg
U2tQYWludCYgcGFpbnQsIGJvb2wgZHJhd3NPcGFxdWUsIGJvb2wgZmlsbHNCb3VuZHMpCiB7CiAg
ICAgU2tSZWN0IHRhcmdldFJlY3QgPSByZWN0OwogCisgICAgYm9vbCB4ZmVyc09wYXF1ZSA9IHhm
ZXJtb2RlSXNPcGFxdWUocGFpbnQsIGRyYXdzT3BhcXVlKTsKKyAgICBib29sIHByZXNlcnZlc09w
YXF1ZSA9IHhmZXJtb2RlUHJlc2VydmVzT3BhcXVlKHBhaW50LCBkcmF3c09wYXF1ZSk7CisKICAg
ICAvLyBBcHBseSB0aGUgdHJhbnNmb3JtIHRvIGRldmljZSBjb29yZGluYXRlIHNwYWNlLgogICAg
IFNrTWF0cml4IGNhbnZhc1RyYW5zZm9ybSA9IGNvbnRleHQtPmNhbnZhcygpLT5nZXRUb3RhbE1h
dHJpeCgpOwogICAgIGlmICghY2FudmFzVHJhbnNmb3JtLm1hcFJlY3QoJnRhcmdldFJlY3QpKQpA
QCAtMjQ5LDE3ICsyNTIsMzMgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KGNvbnN0
IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVQKICAgICAgICAgaWYg
KCF0YXJnZXRSZWN0LmludGVyc2VjdChTa0ludFRvU2NhbGFyKGRldmljZUNsaXAuZkxlZnQpLCBT
a0ludFRvU2NhbGFyKGRldmljZUNsaXAuZlRvcCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5m
UmlnaHQpLCBTa0ludFRvU2NhbGFyKGRldmljZUNsaXAuZkJvdHRvbSkpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBpZiAoIWNvbnRleHQtPmNsaXBwZWRUb0ltYWdlKCkuaXNPcGFx
dWUoKSkKLSAgICAgICAgZmlsbHNCb3VuZHMgPSBmYWxzZTsKKworICAgIC8vIEFwcGx5IGFueSBs
YXllcnMgdGhhdCB3ZSBhcmUgZHJhd2luZyBpbnRvLgorICAgIGZvciAoU2tDYW52YXM6OkxheWVy
SXRlciBpdChjb250ZXh0LT5jYW52YXMoKSwgZmFsc2UpOyAhaXQuZG9uZSgpOyBpdC5uZXh0KCkp
IHsKKyAgICAgICAgLy8gQXBwbHkgdGhlIGxheWVyJ3MgY2xpcCAod2hpY2ggaXMgaW4gZGV2aWNl
IHNwYWNlKQorICAgICAgICBjb25zdCBTa1JlZ2lvbiYgZGV2aWNlTGF5ZXJDbGlwID0gaXQuY2xp
cCgpOworICAgICAgICBpZiAoZGV2aWNlTGF5ZXJDbGlwLmlzRW1wdHkoKSB8fCAhZGV2aWNlTGF5
ZXJDbGlwLmlzUmVjdCgpKQorICAgICAgICAgICAgZmlsbHNCb3VuZHMgPSBmYWxzZTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBTa0lSZWN0IGNsaXBCb3VuZHMgPSBpdC5jbGlwKCkuZ2V0
Qm91bmRzKCk7CisgICAgICAgICAgICBpZiAoIXRhcmdldFJlY3QuaW50ZXJzZWN0KFNrSW50VG9T
Y2FsYXIoY2xpcEJvdW5kcy5mTGVmdCksIFNrSW50VG9TY2FsYXIoY2xpcEJvdW5kcy5mVG9wKSwg
U2tJbnRUb1NjYWxhcihjbGlwQm91bmRzLmZSaWdodCksIFNrSW50VG9TY2FsYXIoY2xpcEJvdW5k
cy5mQm90dG9tKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gTWFrZSBzdXJlIHRoZSBwYWludCBzdGF5cyBvcGFxdWUgdGhyb3VnaCB0aGUgbGF5ZXIu
CisgICAgICAgIGJvb2wgZHJhd3NPcGFxdWUgPSBwYWludElzT3BhcXVlKGl0LnBhaW50KCkpOwor
ICAgICAgICB4ZmVyc09wYXF1ZSA9IHhmZXJzT3BhcXVlICYmIHhmZXJtb2RlSXNPcGFxdWUoaXQu
cGFpbnQoKSwgZHJhd3NPcGFxdWUpOworICAgICAgICBwcmVzZXJ2ZXNPcGFxdWUgPSBwcmVzZXJ2
ZXNPcGFxdWUgJiYgeGZlcm1vZGVQcmVzZXJ2ZXNPcGFxdWUoaXQucGFpbnQoKSwgZHJhd3NPcGFx
dWUpOworICAgIH0KIAogICAgIC8vIEFwcGx5IHRoZSB0cmFuc2Zvcm0gdG8gdGhlIHRyYWNraW5n
IHNwYWNlLgogICAgIFNrTWF0cml4IGNhbnZhc1RvVGFyZ2V0VHJhbnNmb3JtID0gdHJhbnNmb3Jt
OwogICAgIGlmICghY2FudmFzVG9UYXJnZXRUcmFuc2Zvcm0ubWFwUmVjdCgmdGFyZ2V0UmVjdCkp
CiAgICAgICAgIGZpbGxzQm91bmRzID0gZmFsc2U7CiAKLSAgICBpZiAoZmlsbHNCb3VuZHMgJiYg
eGZlcm1vZGVJc09wYXF1ZShwYWludCwgZHJhd3NPcGFxdWUpKQorICAgIGlmIChmaWxsc0JvdW5k
cyAmJiB4ZmVyc09wYXF1ZSkKICAgICAgICAgbWFya1JlY3RBc09wYXF1ZSh0YXJnZXRSZWN0KTsK
LSAgICBlbHNlIGlmIChTa1JlY3Q6OkludGVyc2VjdHModGFyZ2V0UmVjdCwgbV9vcGFxdWVSZWN0
KSAmJiAheGZlcm1vZGVQcmVzZXJ2ZXNPcGFxdWUocGFpbnQsIGRyYXdzT3BhcXVlKSkKKyAgICBl
bHNlIGlmIChTa1JlY3Q6OkludGVyc2VjdHModGFyZ2V0UmVjdCwgbV9vcGFxdWVSZWN0KSAmJiAh
cHJlc2VydmVzT3BhcXVlKQogICAgICAgICBtYXJrUmVjdEFzTm9uT3BhcXVlKHRhcmdldFJlY3Qp
OwogfQogCkBAIC0zMzksNCArMzU4LDUgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjptYXJrUmVj
dEFzTm9uT3BhcXVlKGNvbnN0IFNrUmVjdCYgcmVjdCkKICAgICAgICAgbV9vcGFxdWVSZWN0ID0g
dmVydGljYWw7CiB9CiAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaApp
bmRleCA0NWIwNjkwMDQyYTY5OGE0Y2EwMDNkM2U4NTBlZThkNGMzNjc5OTZkLi40MzFjNmVjMTll
NWE2OTRjMTkyOTlhYTBkN2I3ZmI0N2EyOTBmZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaApAQCAtNTMs
MTMgKzUzLDE1IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcmVzdWx0aW5nIG9wYXF1ZSByZWdpb24g
YXMgYSBzaW5nbGUgcmVjdC4KICAgICBJbnRSZWN0IGFzUmVjdCgpIGNvbnN0OwogCi0gICAgdm9p
ZCBkaWREcmF3UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYsIGNvbnN0IFNrQml0bWFwKik7
Ci0gICAgdm9pZCBkaWREcmF3UGF0aChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tQYXRoJiwgY29uc3QgU2tQYWludCYpOwotICAgIHZv
aWQgZGlkRHJhd1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgU2tDYW52YXM6OlBvaW50TW9kZSwgaW50IG51bVBvaW50cywgY29uc3QgU2tQ
b2ludFtdLCBjb25zdCBTa1BhaW50Jik7Ci0gICAgdm9pZCBkaWREcmF3Qm91bmRlZChjb25zdCBQ
bGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0
JiwgY29uc3QgU2tQYWludCYpOworICAgIC8vIEZJWE1FOiBtYWtlIGFsbCB0aGUgUGxhdGZvcm1D
b250ZXh0U2tpYSogaW50byBhIGNvbnN0IHBvaW50ZXIgd2hlbiBTa2lhIGZpeGVzIExheWVySXRl
cidzIFNrQ2FudmFzKi4KKworICAgIHZvaWQgZGlkRHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0U2tp
YSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQm
LCBjb25zdCBTa0JpdG1hcCopOworICAgIHZvaWQgZGlkRHJhd1BhdGgoUGxhdGZvcm1Db250ZXh0
U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUGF0aCYsIGNvbnN0IFNrUGFp
bnQmKTsKKyAgICB2b2lkIGRpZERyYXdQb2ludHMoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIFNrQ2FudmFzOjpQb2ludE1vZGUsIGludCBudW1Qb2ludHMsIGNv
bnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWludCYpOworICAgIHZvaWQgZGlkRHJhd0JvdW5kZWQo
UGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVj
dCYsIGNvbnN0IFNrUGFpbnQmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGRpZERyYXcoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVj
dCYsIGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZpbGxzQm91bmRzKTsK
KyAgICB2b2lkIGRpZERyYXcoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdzT3BhcXVlLCBi
b29sIGZpbGxzQm91bmRzKTsKICAgICB2b2lkIGRpZERyYXdVbmJvdW5kZWQoY29uc3QgU2tQYWlu
dCYsIGJvb2wgZHJhd3NPcGFxdWUpOwogICAgIHZvaWQgbWFya1JlY3RBc09wYXF1ZShjb25zdCBT
a1JlY3QmKTsKICAgICB2b2lkIG1hcmtSZWN0QXNOb25PcGFxdWUoY29uc3QgU2tSZWN0Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3Jt
Q29udGV4dFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Q
bGF0Zm9ybUNvbnRleHRTa2lhLmNwcAppbmRleCBiYmJjZGI1NGNkNDE5YjE4YmRmY2M3NTViZTY4
ZWI5ZDdlN2JlNjJhLi43ZWU5MGNhZGQ5OGJjMzUxYTQ2MWFkNmQ2NzI0YzQ1ZjMyNWNkNmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3Jt
Q29udGV4dFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKQEAgLTI2NywxMSArMjY3LDYgQEAgdm9pZCBQbGF0
Zm9ybUNvbnRleHRTa2lhOjpjbGlwUGF0aEFudGlBbGlhc2VkKGNvbnN0IFNrUGF0aCYgY2xpcFBh
dGgpCiAgICAgY2FudmFzKCktPmNsaXBQYXRoKGNsaXBQYXRoLCBTa1JlZ2lvbjo6a0ludGVyc2Vj
dF9PcCwgdHJ1ZSk7CiB9CiAKLWNvbnN0IFNrQml0bWFwJiBQbGF0Zm9ybUNvbnRleHRTa2lhOjpj
bGlwcGVkVG9JbWFnZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUtPm1faW1hZ2VCdWZm
ZXJDbGlwOwotfQotCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnJlc3RvcmUoKQogewogICAg
IGlmICghbV9zdGF0ZS0+bV9pbWFnZUJ1ZmZlckNsaXAuZW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuaAppbmRleCBiMzA2NDUwY2IxZDhkYzlmYWNlNDczZjNjOTI0M2U4NzgzY2M0NjU1Li44
ZDdhMmU2ODQxOWMzNmM3ZjVlZmFlNTIzOGQyYzRkYjE4NzM2ZWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuaApAQCAtMTAwLDggKzEwMCw2IEBAIHB1YmxpYzoKICAgICAvLyBOT1RFOiB8aW1hZ2VC
dWZmZXJ8IG1heSBiZSBkZWxldGVkIGJlZm9yZSB0aGUgfHJlc3RvcmV8IGlzIGludm9rZWQuCiAg
ICAgdm9pZCBiZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2UoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
SW1hZ2VCdWZmZXIqKTsKICAgICB2b2lkIGNsaXBQYXRoQW50aUFsaWFzZWQoY29uc3QgU2tQYXRo
Jik7Ci0gICAgLy8gSWYgbm9uLWVtcHR5LCB0aGUgbGF5ZXIgaXMgY2xpcHBlZCB0byB0aGUgYml0
bWFwLgotICAgIGNvbnN0IFNrQml0bWFwJiBjbGlwcGVkVG9JbWFnZSgpIGNvbnN0OwogCiAgICAg
Ly8gU2V0cyB1cCB0aGUgY29tbW9uIGZsYWdzIG9uIGEgcGFpbnQgZm9yIGFudGlhbGlhc2luZywg
ZWZmZWN0cywgZXRjLgogICAgIC8vIFRoaXMgaXMgaW1wbGljaXRseSBjYWxsZWQgYnkgc2V0dXBQ
YWludEZpbGwgYW5kIHNldHVwUGFpbnRTdHJva2UsIGJ1dApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAppbmRleCBk
MDk3YzQ5OWEyZmRmZDQ1NTlhMGMyMzNmYjJlN2E3ZTQ4MzEyOTgyLi5iMGQ4NmRkZjZmNzEzOGI2
MTIwODk2NDcwNmY0NDQ2NDVmMDllZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcApAQCAtNjQxLDQgKzY0
MSw0NCBAQCBURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCBsYXllclRyYW5zZm9ybVNjYWxl
T3BhcXVlVGVzdCkKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29udGV4
dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CiB9CiAKK1RFU1QoUGxhdGZvcm1Db250ZXh0U2tp
YVRlc3QsIGNvbnRleHRUcmFuc3BhcmVuY3lMYXllclRlc3QpCit7CisgICAgU2tCaXRtYXAgYml0
bWFwOworICAgIGJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCA0
MDAsIDQwMCk7CisgICAgYml0bWFwLmFsbG9jUGl4ZWxzKCk7CisgICAgYml0bWFwLmVyYXNlQ29s
b3IoMCk7CisgICAgU2tDYW52YXMgY2FudmFzKGJpdG1hcCk7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoMik7CisKKyAgICBQbGF0Zm9ybUNvbnRl
eHRTa2lhIHBsYXRmb3JtQ29udGV4dCgmY2FudmFzKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQuc2V0
VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNldE9wYXF1ZVJl
Z2lvblRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KCZw
bGF0Zm9ybUNvbnRleHQpOworICAgIAorICAgIENvbG9yIG9wYXF1ZSgxLjBmLCAwLjBmLCAwLjBm
LCAxLjBmKTsKKyAgICAKKyAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgyMCwgMjAsIDEw
LCAxMCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7
CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0MCwgNDAsIDIwLCAyMCksIHBsYXRmb3JtQ29u
dGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChi
aXRtYXAsIHRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUmVjdChwbGF0Zm9ybUNvbnRleHQub3BhcXVl
UmVnaW9uKCkuYXNSZWN0KCkpKTsKKyAgICAKKyAgICBjb250ZXh0LmNsZWFyUmVjdChGbG9hdFJl
Y3QoMjAsIDIwLCAxMCwgMTApKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRm
b3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBjb250ZXh0LmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoMC41KTsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdCgyMCwgMjAsIDEwLCAxMCksIG9wYXF1ZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5yZXN0b3JlKCk7Cisg
ICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAg
IGNvbnRleHQuY2xlYXJSZWN0KEZsb2F0UmVjdCgyMCwgMjAsIDEwLCAxMCkpOworICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVj
dCgpKTsKKworICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcigwLjUpOworICAgIGNv
bnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSwgb3BhcXVlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBjb250ZXh0LmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNv
bnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDZhYmIyODU5YTkyYzJjYWI3MzJlMTFjMzAyOWMzMWM2MjYzY2JmYTQuLmJkMjU3ODYyYWMw
M2RmNjZjYTEzMzQxOGUxMTRlNDMyMzUyMDU4MDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0wMy0wMSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBb
Y2hyb21pdW1dIE1ha2Ugb3BhcXVlIHBhaW50IHRyYWNrZXIgYXdhcmUgb2YgU2tDYW52YXMgbGF5
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY29t
cG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUtZXhwZWN0ZWQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiBjb21wb3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvY2xlYXItZml4ZWQt
aWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvcmVzb3Vy
Y2VzL2NsZWFyLWZpeGVkLWlmcmFtZS1jb250ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAyLTI5
ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxs
aW5nL2NsZWFyLWZpeGVkLWlmcmFtZS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZThhYWNkOWNhNjMzMzNhMzAyYzkzNDVjYTg1ZjY1YzFmNmNiMjdjNQpHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMjg1OQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWhe
aGxBJUBXcyRsSGBvazxtfT9vVCF2KG0KejxrUz9pdn05dW9iSVppIUd7WTFsUSF7ZjVXN0N2R1F4
Z2pfZ0F8XlZBTkRkWmFQOVNVYVNXLUxeWShAI1otVzU/CnppPSVeJSlyQ09tN1lCc2REKUtIfUlI
UiVTYExsMUk/YVViKD5aUSlsdXpoJmd1JHFENEtvKk1fZ00mezNCZzJ0Vgp6IyVMZ25yaTlVNEZx
I1dTYkhRalg3fGpLdnhuUGp3Zl5UblUqKWxSRD0qc0NaR3xWYF8jTCZTeHsxYFg1cW5KNj8KVll1
dm9mMCZNKjxjKUkkenRhRDBlMHNzcSRWRDEwXwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJh
bWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVhci1m
aXhlZC1pZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2Fk
NzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9jdWxsaW5nL2NsZWFyLWZpeGVkLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL2NsZWFy
LWZpeGVkLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9jbGVh
ci1maXhlZC1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYWNlNWUxODJhOTVmOWJiZDRlNWVjZWYz
NzY0MDJlZDAxOWY3YzA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvY3VsbGluZy9jbGVhci1maXhlZC1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPjxoZWFkPjx0aXRsZT5Db21wb3NpdG9yIElmcmFtZSBTYWRmYWNl
PC90aXRsZT4KKzxzdHlsZT4KK2JvZHkgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KKy5jb21w
b3NpdGVkIHsKKyAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgIGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOworICBwb3NpdGlvbjpmaXhlZDsKKyAgbGVmdDowOyB0b3A6MDsgcmln
aHQ6MDsgYm90dG9tOjA7Cit9CitpZnJhbWUgeworICBwb3NpdGlvbjpmaXhlZDsKKyAgbGVmdDog
MDsgdG9wOiAwOworICB3aWR0aDoxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIGJvcmRlcjowOwor
fQorPC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQodHJ1ZSk7CisgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgY2xh
c3M9ImNvbXBvc2l0ZWQiPjwvZGl2PgorCis8IS0tIFlvdSBzaG91bGQgc2VlIGEgbGlnaHQgZ3Jl
ZW4gYm94IGZpbGxpbmcgdGhlIHRvcC9sZWZ0IG9mIHRoZSB3aW5kb3csIGluc2lkZSBhIGRhcmtl
ciBncmVlbiBiYWNrZ3JvdW5kLgorICAgICBJZiB0aGUgImdsYXNzIiBpbiB0aGUgaWZyYW1lIGlz
IGNvbnNpZGVyZWQgb3BhcXVlLCB0aGVuIGRyYXdpbmcgZXJyb3JzIHdpbGwgb2NjdXIgYW5kIHRp
bGVzIGJlY29tZSBibGFjaworICAgICAobGlnaHQgZ3JheSB3aXRoIHRoZSBnbGFzcykuCisgIC0t
PgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9jbGVhci1maXhlZC1pZnJhbWUtY29udGVudC5odG1s
IiBmcmFtZWJvcmRlcj0iMCI+PC9pZnJhbWU+Cis8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvcmVzb3VyY2VzL2NsZWFyLWZpeGVk
LWlmcmFtZS1jb250ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Jl
c291cmNlcy9jbGVhci1maXhlZC1pZnJhbWUtY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmYTA0
ZDM5YzQ1ODZhNjUyZjdlOTU4NjVmY2I3NzNhMzhkNjQ0YWYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Jlc291cmNlcy9jbGVhci1maXhlZC1pZnJh
bWUtY29udGVudC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
PGhlYWQ+PHRpdGxlPjwvdGl0bGU+Cis8c3R5bGU+Citib2R5IHsgbWFyZ2luOjA7IHBhZGRpbmc6
MDsgfQorCisjZ2xhc3MgeworICBvcGFjaXR5OjAuNDsKKyAgYmFja2dyb3VuZC1jb2xvcjp3aGl0
ZTsKKyAgcG9zaXRpb246YWJzb2x1dGU7CisgIHRvcDowcHg7IGxlZnQ6MHB4OyByaWdodDo1MHB4
OyBib3R0b206IDUwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgaWQ9
ImdsYXNzIj48L2Rpdj4KKzwvYm9keT4KKzwvc2NyaXB0PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>