<?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>83351</bug_id>
          
          <creation_ts>2012-04-05 22:38:10 -0700</creation_ts>
          <short_desc>[chromium] Viewport is not filled when out of texture memory on mac</short_desc>
          <delta_ts>2012-04-09 21:55:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>83217</dependson>
          <blocked>83386</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>abarth</cc>
    
    <cc>asvitkine</cc>
    
    <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>sievers</cc>
    
    <cc>tkent</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>597211</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-05 22:38:10 -0700</bug_when>
    <thetext>[chromium] Viewport is not filled when out of texture memory on mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597212</commentid>
    <comment_count>1</comment_count>
      <attachid>135981</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-05 22:43:52 -0700</bug_when>
    <thetext>Created attachment 135981
Patch

Here&apos;s a CL to make sure we draw something opaque in every pixel in the viewport without special-casing drawing of the NCCH.

I renamed &quot;backgroundCoversViewport&quot; since that is not what it actually means. I propose the name &quot;rootContentLayer&quot; instead,
to say that the layer is the parent of all content in the tree, and that its background color should be used to fill the
background of the viewport.

We use the occlusion tracker to figure out what pixels we are seeing through the viewport with, and we add &quot;gutter quads&quot; to
cover those pixels up with the NCCH background color. I tested this with acko.net, by setting the memory limits very low, and
it seems well. Am running a mac try job to try and verify that the rubberbanding works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597345</commentid>
    <comment_count>2</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-06 07:26:34 -0700</bug_when>
    <thetext>The transform-overhang tests are currently marked as IMAGE PASS so it&apos;s hard to tell from EWS if this is good. Still attempting to get a good mac try job without them blacklisted in expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597400</commentid>
    <comment_count>3</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-06 09:15:36 -0700</bug_when>
    <thetext>Looks good on mac.

http://build.chromium.org/p/tryserver.chromium/builders/mac_layout_rel/builds/194/steps/webkit_tests/logs/stdio

08:52:17.984 20323 worker/1 platform/chromium/compositing/rubberbanding/transform-overhang-e.html passed
08:52:18.232 20323 worker/1 platform/chromium/compositing/rubberbanding/transform-overhang-n.html passed
08:52:18.530 20323 worker/1 platform/chromium/compositing/rubberbanding/transform-overhang-ne.html passed
08:52:18.799 20323 worker/1 platform/chromium/compositing/rubberbanding/transform-overhang-nw.html passed
08:52:19.036 20323 worker/1 platform/chromium/compositing/rubberbanding/transform-overhang-s.html passed
08:52:19.296 20323 worker/1 platform/chromium/compositing/rubberbanding/transform-overhang-se.html passed
08:52:19.803 20323 worker/1 platform/chromium/compositing/rubberbanding/transform-overhang-size-change.html passed
08:52:20.099 20323 worker/1 platform/chromium/compositing/rubberbanding/transform-overhang-sw.html passed
08:52:20.352 20323 worker/1 platform/chromium/compositing/rubberbanding/transform-overhang-w.html passed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597451</commentid>
    <comment_count>4</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-06 10:22:22 -0700</bug_when>
    <thetext>Another use case for consideration is that sometimes we don&apos;t have a NCCH.  See bug 82860, for what I&apos;m talking about here.  I totally dig the idea that this should be based on the occlusion tracker and not just on the size of one layer against its clip rect.

However, I&apos;d like to see us not special case any layer and instead set a background color on the layer tree host itself for what color the viewport should be filled with if not covered by opaque content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597464</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-06 10:37:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Another use case for consideration is that sometimes we don&apos;t have a NCCH.  See bug 82860, for what I&apos;m talking about here.  I totally dig the idea that this should be based on the occlusion tracker and not just on the size of one layer against its clip rect.
&gt; 
&gt; However, I&apos;d like to see us not special case any layer and instead set a background color on the layer tree host itself for what color the viewport should be filled with if not covered by opaque content.

Oh, okay cool. I was not sure how to handle this well.. that sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597551</commentid>
    <comment_count>6</comment_count>
      <attachid>136050</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-06 12:17:36 -0700</bug_when>
    <thetext>Created attachment 136050
Patch

- Remove backgroundCoversViewport() entirely.
- Set the background color on the LayerTreeHost when painting the NCCH, from WebViewImpl.
- Default the background color on the LTH to white in case we never had a NCCH yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597589</commentid>
    <comment_count>7</comment_count>
      <attachid>136050</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-06 13:12:16 -0700</bug_when>
    <thetext>Comment on attachment 136050
Patch

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

&gt; Source/WebCore/ChangeLog:22
&gt; +        In order to do this, we fix a bug in the occlusion tracker, that
&gt; +        allowed opaque() layers with skipsDraw to occlude, by sticking a
&gt; +        virtual skipsDraw() on the layer classes that the tiled layers
&gt; +        can override and return something useful with.

Forgive my change aversion, but I liked when skipsDraw was a property that was localized internal to tiled layers and not public in a way that other parts of the compositor needed to worry about.

Can visibleContentOpaqueRegion() just return the right thing for opaque() layers, handling skipsDraw internally?

&gt; Source/Platform/chromium/public/WebLayerTreeView.h:114
&gt; +    // Sets the background color for the viewport.
&gt; +    WEBKIT_EXPORT void setBackgroundColor(const WebCore::Color&amp;);
&gt; +

Since this is the platform interface, I think this needs to be WebColor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597597</commentid>
    <comment_count>8</comment_count>
      <attachid>136050</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-06 13:18:39 -0700</bug_when>
    <thetext>Comment on attachment 136050
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt; +        can override and return something useful with.
&gt; 
&gt; Forgive my change aversion, but I liked when skipsDraw was a property that was localized internal to tiled layers and not public in a way that other parts of the compositor needed to worry about.
&gt; 
&gt; Can visibleContentOpaqueRegion() just return the right thing for opaque() layers, handling skipsDraw internally?

We can move skipsDraw back. But it means making the LayerChromium/CCLayerImpl hold logic about returning their opaque area if opaque() is true. I liked what we have now because that logic is isolated in CCOcclusionTracker.cpp and not duplicated across the two layer types. Is there some compromise?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597608</commentid>
    <comment_count>9</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-06 13:27:23 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 136050 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136050&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:22
&gt; &gt;&gt; +        can override and return something useful with.
&gt; &gt; 
&gt; &gt; Forgive my change aversion, but I liked when skipsDraw was a property that was localized internal to tiled layers and not public in a way that other parts of the compositor needed to worry about.
&gt; &gt; 
&gt; &gt; Can visibleContentOpaqueRegion() just return the right thing for opaque() layers, handling skipsDraw internally?
&gt; 
&gt; We can move skipsDraw back. But it means making the LayerChromium/CCLayerImpl hold logic about returning their opaque area if opaque() is true. I liked what we have now because that logic is isolated in CCOcclusionTracker.cpp and not duplicated across the two layer types. Is there some compromise?

It&apos;s true that this results in duplicating that conditional in two functions, but I think that&apos;s the right abstraction?  Maybe it just seems to me that CCOcclusionTracker shouldn&apos;t know better than the layer itself about what that layer&apos;s opaque region is and visibleContentOpaqueRegion() should return what it says on the tin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597814</commentid>
    <comment_count>10</comment_count>
      <attachid>136097</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-06 16:48:29 -0700</bug_when>
    <thetext>Created attachment 136097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597815</commentid>
    <comment_count>11</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-06 16:50:16 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Since this is the platform interface, I think this needs to be WebColor.

done.

(In reply to comment #9)
&gt; It&apos;s true that this results in duplicating that conditional in two functions, but I think that&apos;s the right abstraction?  Maybe it just seems to me that CCOcclusionTracker shouldn&apos;t know better than the layer itself about what that layer&apos;s opaque region is and visibleContentOpaqueRegion() should return what it says on the tin.

done. this wasn&apos;t as bad as I was thinking it would be for whatever reason.


this is depping on bug #83217 cuz they both change the same code (markOccludedBehindLayer) and that one is for M19 so i&apos;d rather it go in first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597858</commentid>
    <comment_count>12</comment_count>
      <attachid>136097</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-06 17:50:44 -0700</bug_when>
    <thetext>Comment on attachment 136097
Patch

R=me.  Thanks! I&apos;m super excited to get rid of backgroundCovers&quot;Viewport&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598402</commentid>
    <comment_count>13</comment_count>
      <attachid>136261</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-09 10:29:13 -0700</bug_when>
    <thetext>Created attachment 136261
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598404</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 10:31:39 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598409</commentid>
    <comment_count>15</comment_count>
      <attachid>136261</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-09 10:38:15 -0700</bug_when>
    <thetext>Comment on attachment 136261
Patch

Oops, this never got an API approval.

jamesr, can you ok the API changes and CQ+ this if you&apos;re good with it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598411</commentid>
    <comment_count>16</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-09 10:39:26 -0700</bug_when>
    <thetext>I&apos;m going to s/WebColor&amp;/WebColor/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598416</commentid>
    <comment_count>17</comment_count>
      <attachid>136263</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-09 10:44:36 -0700</bug_when>
    <thetext>Created attachment 136263
Patch

no reference for WebColor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598417</commentid>
    <comment_count>18</comment_count>
      <attachid>136263</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-09 10:45:31 -0700</bug_when>
    <thetext>Comment on attachment 136263
Patch

Looks fine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598474</commentid>
    <comment_count>19</comment_count>
      <attachid>136263</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-09 11:46:36 -0700</bug_when>
    <thetext>Comment on attachment 136263
Patch

This depends on the culling clipped rects bug which was reverted. Will request CQ again when it lands again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598838</commentid>
    <comment_count>20</comment_count>
      <attachid>136263</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 18:25:20 -0700</bug_when>
    <thetext>Comment on attachment 136263
Patch

Rejecting attachment 136263 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:
sts/CCLayerImplTest.cpp
patching file Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp
patching file Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp
patching file Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp
patching file Source/WebKit/chromium/tests/CCTiledLayerImplTest.cpp
patching file Source/WebKit/chromium/tests/LayerChromiumTest.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12371534</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598897</commentid>
    <comment_count>21</comment_count>
      <attachid>136375</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-09 19:16:14 -0700</bug_when>
    <thetext>Created attachment 136375
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598999</commentid>
    <comment_count>22</comment_count>
      <attachid>136375</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 21:55:11 -0700</bug_when>
    <thetext>Comment on attachment 136375
Patch for landing

Clearing flags on attachment: 136375

Committed r113677: &lt;http://trac.webkit.org/changeset/113677&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599000</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-09 21:55:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135981</attachid>
            <date>2012-04-05 22:43:52 -0700</date>
            <delta_ts>2012-04-06 12:17:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83351-20120406014350.patch</filename>
            <type>text/plain</type>
            <size>34844</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmUzOGY5OTY0YzYyNDU1
NmNjZjIxYzFlYzllN2NiY2JhZjlhYzE2Ni4uMWY0Y2IyNjEzNGI4NGJlMmVhZGQ5YmNhZWI3ZDBm
ODM0YzAxMjRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEyLTA0LTA1ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVmll
d3BvcnQgaXMgbm90IGZpbGxlZCB3aGVuIG91dCBvZiB0ZXh0dXJlIG1lbW9yeSBvbiBtYWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMzUxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIGJhY2tn
cm91bmRDb3ZlcnNWaWV3cG9ydCgpIHRvIHJvb3RDb250ZW50TGF5ZXIoKS4gQ3VycmVudGx5IHdl
CisgICAgICAgIGFkZCBndXR0ZXIgcXVhZHMgb24gdGhlIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dCBsYXllciwgd2hpY2ggbGllcworICAgICAgICBhYm92ZSBhbm90aGVyIHZpc2libGUgbGF5ZXIg
LSB0aGUgcnViYmVyYmFuZCBsYXllciBvbiBtYWMuCisKKyAgICAgICAgRm9yIHRoaXMgcmVhc29u
LCBvbiBtYWMsIGd1dHRlciBxdWFkcyB3ZXJlIGRpc2FibGVkLCBhcyB3ZWxsIGFzIGZvcmNpbmcK
KyAgICAgICAgdGhlIE5DQ0ggbGF5ZXIgdG8gZHJhdywgaW4gb3JkZXIgdG8gbWFrZSB0aGUgcnVi
YmVyYmFuZCBsYXllciBhcHBlYXIuCisKKyAgICAgICAgV2UgbW92ZSB0aGUgbG9naWMgZm9yIGFk
ZGluZyBndXR0ZXIgcXVhZHMgaW50byBDQ1JlbmRlclBhc3MsIGFuZCBhZGQKKyAgICAgICAgZ3V0
dGVyIHF1YWRzIGZvciBhbGwgcGl4ZWxzIHRoYXQgYXJlIHZpc2libGUgdGhyb3VnaCB0aGUgdmll
d3BvcnQuCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvIHN0b3Agc3BlY2lhbC1jYXNpbmcgdGhl
IE5DQ0ggbGF5ZXIsIGFuZCBhbGxvd3MgdXMKKyAgICAgICAgdG8gc2tpcCBkcmF3aW5nIHRoZSBs
YXllciBlcXVhbGx5IHdpdGggb3RoZXIgbGF5ZXJzLgorCisgICAgICAgIEluIG9yZGVyIHRvIGRv
IHRoaXMsIHdlIGZpeCBhIGJ1ZyBpbiB0aGUgb2NjbHVzaW9uIHRyYWNrZXIsIHRoYXQKKyAgICAg
ICAgYWxsb3dlZCBvcGFxdWUoKSBsYXllcnMgd2l0aCBza2lwc0RyYXcgdG8gb2NjbHVkZSwgYnkg
c3RpY2tpbmcgYQorICAgICAgICB2aXJ0dWFsIHNraXBzRHJhdygpIG9uIHRoZSBsYXllciBjbGFz
c2VzIHRoYXQgdGhlIHRpbGVkIGxheWVycworICAgICAgICBjYW4gb3ZlcnJpZGUgYW5kIHJldHVy
biBzb21ldGhpbmcgdXNlZnVsIHdpdGguCisKKyAgICAgICAgVW5pdCB0ZXN0OiBDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5yb290Q29udGVudExheWVyCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OkxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6c2V0Um9vdENvbnRlbnRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ2hyb21pdW06OnJvb3RDb250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJDaHJvbWl1bTo6c2tpcHNEcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZExheWVyQ2hyb21pdW06OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6c2tpcHNEcmF3KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckltcGw6OnNldFJvb3RDb250ZW50TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckltcGw6OnJvb3RDb250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckltcGw6OnNraXBzRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjo6Om1hcmtPY2NsdWRlZEJlaGluZExheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaDoKKyAgICAgICAg
KENDT2NjbHVzaW9uVHJhY2tlckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25U
cmFja2VyQmFzZTo6Y29tcHV0ZVZpc2libGVSZWdpb25JblNjcmVlbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4pOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyUGFzcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJl
Z2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6c2tpcHNEcmF3
KToKKyAgICAgICAgKENDVGlsZWRMYXllckltcGwpOgorCiAyMDEyLTA0LTA1ICBTaGF3biBTaW5n
aCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTmVlZCB0
byBjbGlwIHRvIGhvbW9nZW5lb3VzIHc9MCBwbGFuZSB3aGVuIGFwcGx5aW5nIHRyYW5zZm9ybXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGM4NTI4YzIyMzgzMWI0ZjQ5ZTEyZDZlZDVi
ZGRkYzFlODcwYTM3NTMuLmY4MjBkN2QzYzUzMWY3MjVmNzdjYTIxMmVmMmY1ZjhhYmI2MzMwN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDQtMDUg
IERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVt
XSBWaWV3cG9ydCBpcyBub3QgZmlsbGVkIHdoZW4gb3V0IG9mIHRleHR1cmUgbWVtb3J5IG9uIG1h
YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMzNTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9O
b25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3Np
dGVkQ29udGVudEhvc3Q6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCk6CisgICAgICAgICogdGVz
dHMvQ0NMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAg
ICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRl
c3RzOjpCbGVuZFN0YXRlQ2hlY2tMYXllcjo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViS2l0
VGVzdHM6OlRFU1RfRik6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgICogdGVzdHMv
Q0NUaWxlZExheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0xheWVyQ2hyb21pdW1U
ZXN0LmNwcDoKKwogMjAxMi0wNC0wNSAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE5lZWQgdG8gY2xpcCB0byBob21vZ2VuZW91cyB3
PTAgcGxhbmUgd2hlbiBhcHBseWluZyB0cmFuc2Zvcm1zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApp
bmRleCAyYWQwOWI5NDhhNDNiYjNjZTNhNzE5NTFmYzdiNWQ5ZTEzMDBlYTU1Li43MWExMDg5NDI4
Y2NhZTMzNTVjZDBhMDBmZjRjNTVlY2MzYWQyNGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApA
QCAtNjYsNyArNjYsNyBAQCBMYXllckNocm9taXVtOjpMYXllckNocm9taXVtKCkKICAgICAsIG1f
bm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKGZhbHNlKQogICAgICwgbV9hbmNob3JQb2lu
dCgwLjUsIDAuNSkKICAgICAsIG1fYmFja2dyb3VuZENvbG9yKDAsIDAsIDAsIDApCi0gICAgLCBt
X2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydChmYWxzZSkKKyAgICAsIG1fcm9vdENvbnRlbnRMYXll
cihmYWxzZSkKICAgICAsIG1fZGVidWdCb3JkZXJXaWR0aCgwKQogICAgICwgbV9vcGFjaXR5KDEu
MCkKICAgICAsIG1fYW5jaG9yUG9pbnRaKDApCkBAIC0yNzAsMTEgKzI3MCwxMSBAQCB2b2lkIExh
eWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgYmFja2dyb3VuZENv
bG9yKQogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0
QmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGJvb2wgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQor
dm9pZCBMYXllckNocm9taXVtOjpzZXRSb290Q29udGVudExheWVyKGJvb2wgcm9vdENvbnRlbnRM
YXllcikKIHsKLSAgICBpZiAobV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQgPT0gYmFja2dyb3Vu
ZENvdmVyc1ZpZXdwb3J0KQorICAgIGlmIChtX3Jvb3RDb250ZW50TGF5ZXIgPT0gcm9vdENvbnRl
bnRMYXllcikKICAgICAgICAgcmV0dXJuOwotICAgIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0
ID0gYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0OworICAgIG1fcm9vdENvbnRlbnRMYXllciA9IHJv
b3RDb250ZW50TGF5ZXI7CiAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIApAQCAtNDUzLDcgKzQ1
Myw2IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCog
bGF5ZXIpCiAgICAgbGF5ZXItPnNldEFuY2hvclBvaW50KG1fYW5jaG9yUG9pbnQpOwogICAgIGxh
eWVyLT5zZXRBbmNob3JQb2ludFoobV9hbmNob3JQb2ludFopOwogICAgIGxheWVyLT5zZXRCYWNr
Z3JvdW5kQ29sb3IobV9iYWNrZ3JvdW5kQ29sb3IpOwotICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5k
Q292ZXJzVmlld3BvcnQobV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpOwogICAgIGxheWVyLT5z
ZXRCb3VuZHMobV9ib3VuZHMpOwogICAgIGxheWVyLT5zZXRDb250ZW50Qm91bmRzKGNvbnRlbnRC
b3VuZHMoKSk7CiAgICAgbGF5ZXItPnNldERlYnVnQm9yZGVyQ29sb3IobV9kZWJ1Z0JvcmRlckNv
bG9yKTsKQEAgLTQ3Niw2ICs0NzUsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0
aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMo
KSk7CiAgICAgbGF5ZXItPnNldElzTm9uQ29tcG9zaXRlZENvbnRlbnQobV9pc05vbkNvbXBvc2l0
ZWRDb250ZW50KTsKICAgICBsYXllci0+c2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3VuZHMp
OworICAgIGxheWVyLT5zZXRSb290Q29udGVudExheWVyKG1fcm9vdENvbnRlbnRMYXllcik7CiAg
ICAgbGF5ZXItPnNldFNjcm9sbGFibGUobV9zY3JvbGxhYmxlKTsKICAgICBsYXllci0+c2V0U2hv
dWxkU2Nyb2xsT25NYWluVGhyZWFkKG1fc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKTsKICAgICBs
YXllci0+c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGI5ODAyMmI1MmRhNThiOTE5N2NiZjU0NDhjYjZkNDBh
OWEwN2MyNzAuLmQ1MDFiYTM5MmVjYjRhNTk3OTAxOWU4MzZiZjA0ODdmZTVlN2YxYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmgKQEAgLTk5LDggKzk5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFj
a2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KIAotICAgIHZvaWQgc2V0QmFja2dy
b3VuZENvdmVyc1ZpZXdwb3J0KGJvb2wpOwotICAgIGJvb2wgYmFja2dyb3VuZENvdmVyc1ZpZXdw
b3J0KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQ7IH0KKyAgICB2
b2lkIHNldFJvb3RDb250ZW50TGF5ZXIoYm9vbCk7CisgICAgYm9vbCByb290Q29udGVudExheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9yb290Q29udGVudExheWVyOyB9CiAKICAgICB2b2lkIHNldEJv
dW5kcyhjb25zdCBJbnRTaXplJik7CiAgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBib3VuZHMoKTsgfQpAQCAtMTgwLDYgKzE4MCw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKSB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAorICAgIHZpcnR1YWwgYm9vbCBza2lwc0RyYXcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
CiAgICAgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgdm9pZCBz
ZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKICAgICB2b2lkIHNldERlYnVnTmFtZShjb25zdCBT
dHJpbmcmKTsKQEAgLTMwNSw3ICszMDcsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9w
b3NpdGlvbjsKICAgICBGbG9hdFBvaW50IG1fYW5jaG9yUG9pbnQ7CiAgICAgQ29sb3IgbV9iYWNr
Z3JvdW5kQ29sb3I7Ci0gICAgYm9vbCBtX2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydDsKKyAgICBi
b29sIG1fcm9vdENvbnRlbnRMYXllcjsKICAgICBDb2xvciBtX2RlYnVnQm9yZGVyQ29sb3I7CiAg
ICAgZmxvYXQgbV9kZWJ1Z0JvcmRlcldpZHRoOwogICAgIFN0cmluZyBtX2RlYnVnTmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDAxMGE0MzE4YzgzYWRjODc4ZTRhN2Mw
NzBjM2UyOThlOGE5MTNjZTIuLjMzOTY4ZTA5ZDE5ZDllZjRlMDNiOTU0MmRhMDU5YzYxMTkyZGVl
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtNDU2LDEwICs0NTYsNyBA
QCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxl
LCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRU
ZXh0dXJlKCktPnJlc2VydmUobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkg
ewogICAgICAgICAgICAgICAgIG1fc2tpcHNJZGxlUGFpbnQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIGlmICghaWRsZSkgewotICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYmFja2dyb3Vu
ZCBjb3ZlcnMgdGhlIHZpZXdwb3J0LCBhbHdheXMgZHJhdyB0aGlzCi0gICAgICAgICAgICAgICAg
ICAgIC8vIGxheWVyIHNvIHRoYXQgY2hlY2tlcmJvYXJkZWQgdGlsZXMgd2lsbCBzdGlsbCBkcmF3
LgotICAgICAgICAgICAgICAgICAgICBpZiAoIWJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIG1fdGlsZXIt
PnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIG1fcGFpbnRSZWN0ID0gSW50UmVjdCgpOwog
ICAgICAgICAgICAgICAgICAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3Qo
KTsKQEAgLTU4MSw5ICs1NzgsNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cmVzZXJ2ZVRl
eHR1cmVzKCkKIAogUmVnaW9uIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dmlzaWJsZUNvbnRlbnRPcGFx
dWVSZWdpb24oKSBjb25zdAogewotICAgIGlmIChtX3NraXBzRHJhdykKLSAgICAgICAgcmV0dXJu
IFJlZ2lvbigpOwotCiAgICAgcmV0dXJuIG1fdGlsZXItPm9wYXF1ZVJlZ2lvbkluTGF5ZXJSZWN0
KHZpc2libGVMYXllclJlY3QoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5k
ZXggODFlZTI0OGE3NjhmZjk5ZGY4NmNlYzBmMThjNGEzMGJjMGFjYzdkYy4uZWMwNzNlMTZiZjBl
N2FmZWJhMDNiYjQxOTdmYWUzMWU2MGM3N2EyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmgKQEAgLTk5LDcgKzk5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgSW50UmVjdCBpZGxlUGFpbnRS
ZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpOwogCi0gICAgYm9vbCBza2lwc0Ry
YXcoKSBjb25zdCB7IHJldHVybiBtX3NraXBzRHJhdzsgfQorICAgIHZpcnR1YWwgYm9vbCBza2lw
c0RyYXcoKSBjb25zdCB7IHJldHVybiBtX3NraXBzRHJhdzsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApp
bmRleCAyYWZiOWQ4ZmY3NDFmOTMzNTk1NjZhMTY5ZmQ0MzcyOTcwMmE3OTY5Li42NjM3MjYxMDli
NjQ3MWY0N2Y3NGI4NTJjYWE1ZDU0MmI4YTA2NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIENDTGF5ZXJJbXBsOjpDQ0xheWVySW1wbChpbnQgaWQpCiAgICAg
LCBtX3Njcm9sbGFibGUoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFNjcm9sbE9uTWFpblRocmVhZChm
YWxzZSkKICAgICAsIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKLSAgICAsIG1fYmFj
a2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZhbHNlKQorICAgICwgbV9yb290Q29udGVudExheWVyKGZh
bHNlKQogICAgICwgbV9kb3VibGVTaWRlZCh0cnVlKQogICAgICwgbV9sYXllclByb3BlcnR5Q2hh
bmdlZChmYWxzZSkKICAgICAsIG1fbWFza3NUb0JvdW5kcyhmYWxzZSkKQEAgLTEzNiw0MyArMTM2
LDYgQEAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NMYXllckltcGw6OmNyZWF0ZVNo
YXJlZFF1YWRTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIENDU2hhcmVkUXVhZFN0YXRlOjpjcmVh
dGUocXVhZFRyYW5zZm9ybSgpLCBkcmF3VHJhbnNmb3JtKCksIHZpc2libGVMYXllclJlY3QoKSwg
bGF5ZXJDbGlwUmVjdCwgZHJhd09wYWNpdHkoKSwgb3BhcXVlKCkpOwogfQogCi12b2lkIENDTGF5
ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKLXsKLSAgICBhcHBlbmRHdXR0ZXJR
dWFkcyhxdWFkTGlzdCwgc2hhcmVkUXVhZFN0YXRlKTsKLX0KLQotdm9pZCBDQ0xheWVySW1wbDo6
YXBwZW5kR3V0dGVyUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKLXsKLSAgICBpZiAoIWJhY2tncm91bmRDb3ZlcnNW
aWV3cG9ydCgpIHx8ICFiYWNrZ3JvdW5kQ29sb3IoKS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsK
LSAgICBJbnRSZWN0IGNsaXAgPSBzY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBS
ZWN0KGNsaXBSZWN0KCkpOwotCi0gICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgcXVhZExpc3QuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBjbGlwLCBiYWNrZ3JvdW5kQ29sb3IoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgSW50UmVjdCBndXR0ZXJSZWN0c1s0XTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8
IDQ7IGkrKykKLSAgICAgICAgZ3V0dGVyUmVjdHNbaV0gPSBjbGlwOwotICAgIGd1dHRlclJlY3Rz
WzBdLnNoaWZ0TWF4WUVkZ2VUbyhsYXllclJlY3QueSgpKTsKLSAgICBndXR0ZXJSZWN0c1sxXS5z
aGlmdFlFZGdlVG8obGF5ZXJSZWN0Lm1heFkoKSk7Ci0gICAgZ3V0dGVyUmVjdHNbMl0uc2hpZnRN
YXhYRWRnZVRvKGxheWVyUmVjdC54KCkpOwotICAgIGd1dHRlclJlY3RzWzNdLnNoaWZ0WEVkZ2VU
byhsYXllclJlY3QubWF4WCgpKTsKLQotICAgIGd1dHRlclJlY3RzWzJdLnNoaWZ0WUVkZ2VUbyhs
YXllclJlY3QueSgpKTsKLSAgICBndXR0ZXJSZWN0c1szXS5zaGlmdFlFZGdlVG8obGF5ZXJSZWN0
LnkoKSk7Ci0gICAgZ3V0dGVyUmVjdHNbMl0uc2hpZnRNYXhZRWRnZVRvKGxheWVyUmVjdC5tYXhZ
KCkpOwotICAgIGd1dHRlclJlY3RzWzNdLnNoaWZ0TWF4WUVkZ2VUbyhsYXllclJlY3QubWF4WSgp
KTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgIGlmICghZ3V0
dGVyUmVjdHNbaV0uaXNFbXB0eSgpKQotICAgICAgICAgICAgcXVhZExpc3QuYXBwZW5kKENDU29s
aWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBndXR0ZXJSZWN0c1tpXSwg
YmFja2dyb3VuZENvbG9yKCkpKTsKLSAgICB9Ci19Ci0KIHZvaWQgQ0NMYXllckltcGw6OmFwcGVu
ZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBjb25zdAogewogICAgIGlmICghaGFzRGVidWdCb3Jk
ZXJzKCkpCkBAIC0zOTIsMTIgKzM1NSwxMiBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKICAgICBtX2xheWVyUHJvcGVy
dHlDaGFuZ2VkID0gdHJ1ZTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6c2V0QmFja2dyb3VuZENv
dmVyc1ZpZXdwb3J0KGJvb2wgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQordm9pZCBDQ0xheWVy
SW1wbDo6c2V0Um9vdENvbnRlbnRMYXllcihib29sIHJvb3RDb250ZW50TGF5ZXIpCiB7Ci0gICAg
aWYgKG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0ID09IGJhY2tncm91bmRDb3ZlcnNWaWV3cG9y
dCkKKyAgICBpZiAobV9yb290Q29udGVudExheWVyID09IHJvb3RDb250ZW50TGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0ID0gYmFja2dyb3Vu
ZENvdmVyc1ZpZXdwb3J0OworICAgIG1fcm9vdENvbnRlbnRMYXllciA9IHJvb3RDb250ZW50TGF5
ZXI7CiAgICAgbV9sYXllclByb3BlcnR5Q2hhbmdlZCA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oCmluZGV4IDZjYjZkZjAzYzI5ZWFlNjA4N2UwZjRhOWVlOTQxYzMyYjk5NTA4OTIuLjQx
MTc2YjA4YzhiNDAxN2U4ZmE5ZGMxMWI3Y2I5OTYxNmEwNTg4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzT3duUHRyPENDU2hhcmVk
UXVhZFN0YXRlPiBjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbERyYXcoTGF5ZXJSZW5kZXJlckNocm9taXVtKikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9v
bCYgdXNlZENoZWNrZXJib2FyZCk7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVh
ZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgdXNlZENoZWNrZXJib2Fy
ZCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoKSB7IH0KICAgICB2b2lkIGFwcGVuZERl
YnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopIGNv
bnN0OwogCkBAIC0xMDcsOCArMTA3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KIAotICAgIHZvaWQgc2V0QmFja2dyb3VuZENv
dmVyc1ZpZXdwb3J0KGJvb2wpOwotICAgIGJvb2wgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQ7IH0KKyAgICB2b2lkIHNl
dFJvb3RDb250ZW50TGF5ZXIoYm9vbCk7CisgICAgYm9vbCByb290Q29udGVudExheWVyKCkgY29u
c3QgeyByZXR1cm4gbV9yb290Q29udGVudExheWVyOyB9CiAKICAgICB2b2lkIHNldEZpbHRlcnMo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0KQEAgLTEzNyw2ICsxMzcsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpOwogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VibGF5ZXJUcmFuc2Zvcm07IH0KIAorICAgIHZpcnR1
YWwgYm9vbCBza2lwc0RyYXcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgLy8gRGVi
dWcgbGF5ZXIgYm9yZGVyIC0gdmlzdWFsIGVmZmVjdCBvbmx5LCBkbyBub3QgY2hhbmdlIGdlb21l
dHJ5L2NsaXBwaW5nL2V0Yy4KICAgICB2b2lkIHNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IpOwog
ICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVy
Q29sb3I7IH0KQEAgLTI0OCw4ICsyNTAsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gVHJhbnNmb3Jt
YXRpb24gdXNlZCB0byB0cmFuc2Zvcm0gcXVhZHMgcHJvdmlkZWQgaW4gYXBwZW5kUXVhZHMuCiAg
ICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFkVHJhbnNmb3JtKCkgY29uc3Q7CiAK
LSAgICB2b2lkIGFwcGVuZEd1dHRlclF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKik7Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQYXJlbnQoQ0NMYXllckltcGwq
IHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogICAgIGZyaWVuZCBjbGFzcyBUcmVlU3lu
Y2hyb25pemVyOwpAQCAtMjg1LDcgKzI4NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhdmVX
aGVlbEV2ZW50SGFuZGxlcnM7CiAgICAgUmVnaW9uIG1fbm9uRmFzdFNjcm9sbGFibGVSZWdpb247
CiAgICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgYm9vbCBtX2JhY2tncm91bmRDb3Zl
cnNWaWV3cG9ydDsKKyAgICBib29sIG1fcm9vdENvbnRlbnRMYXllcjsKIAogICAgIC8vIFdoZXRo
ZXIgdGhlICJiYWNrIiBvZiB0aGlzIGxheWVyIHNob3VsZCBkcmF3LgogICAgIGJvb2wgbV9kb3Vi
bGVTaWRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggNjUw
OTA5NDllNDg1ZDhiODFkODhlYmRmNjYwOTlmMmJiOWI4OGU0OC4uNmVmMjk1ZTc3MDRiZGM2OGVh
NjFmY2E1MDRlOGFlNzM5YmNhMzU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAKQEAgLTI5Myw2ICsyOTMsOSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNh
bGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMsIENDTGF5ZQogICAg
IC8vIGluIHRoZSBmdXR1cmUuCiAgICAgYm9vbCBkcmF3RnJhbWUgPSB0cnVlOwogCisgICAgLy8g
VGhlIGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3QsIHdo
aWNoIGlzIHVzZWQgdG8gZmlsbCBhbnkgdW5vY2NsdWRlZCByZWdpb25zLgorICAgIENvbG9yIHNj
cmVlbkJhY2tncm91bmRDb2xvcjsKKwogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NM
YXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBmb3Ig
KENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBDQ1JlbmRl
clN1cmZhY2UqIHJlbmRlclN1cmZhY2UgPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+
cmVuZGVyU3VyZmFjZSgpOwpAQCAtMzA0LDYgKzMwNyw5IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NM
YXllCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubGVhdmVUb1Rh
cmdldFJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZSk7CiAKKyAgICAgICAgaWYgKGl0LT5yb290
Q29udGVudExheWVyKCkpCisgICAgICAgICAgICBzY3JlZW5CYWNrZ3JvdW5kQ29sb3IgPSBpdC0+
YmFja2dyb3VuZENvbG9yKCk7CisKICAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNUYXJnZXRSZW5k
ZXJTdXJmYWNlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGl0LT52aXNp
YmxlTGF5ZXJSZWN0KCkuaXNFbXB0eSgpKQpAQCAtMzI4LDYgKzMzNCw4IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBh
c3NlcywgQ0NMYXllCiAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoKml0KTsKICAgICB9CiAKKyAgICBwYXNzZXMubGFzdCgpLT5hcHBlbmRRdWFkc1RvRmls
bFNjcmVlbihyb290TGF5ZXIoKSwgc2NyZWVuQmFja2dyb3VuZENvbG9yLCBvY2NsdXNpb25UcmFj
a2VyKTsKKwogICAgIGlmIChkcmF3RnJhbWUpCiAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIub3Zl
cmRyYXdNZXRyaWNzKCkucmVjb3JkTWV0cmljcyh0aGlzKTsKICAgICByZXR1cm4gZHJhd0ZyYW1l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKaW5kZXggZTA0YWRmYTMxMzZh
NGYwOWVlYTI4ZDhiMjA1MWEzZmI0NmM2NzczZS4uOTFkYmYyNTM0ZDM3ZDJmNTI1YzFkOTRjYWMw
MDA2ZTczYmQ2MWQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCkBA
IC0yMjUsNyArMjI1LDcgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGU+OjptYXJrT2NjbHVkZWRCZWhpbmRMYXkKICAgICBpZiAobV9zdGFj
ay5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbGF5ZXJPcGFjaXR5S25v
d24obGF5ZXIpIHx8IGxheWVyLT5kcmF3T3BhY2l0eSgpIDwgMSkKKyAgICBpZiAoIWxheWVyT3Bh
Y2l0eUtub3duKGxheWVyKSB8fCBsYXllci0+ZHJhd09wYWNpdHkoKSA8IDEgfHwgbGF5ZXItPnNr
aXBzRHJhdygpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIG1fdXNl
UGFpbnRUcmFja2luZyB3aGVuIHBhaW50IHRyYWNraW5nIGlzIG9uIGZvciBwYWludCBjdWxsaW5n
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NPY2NsdXNpb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAppbmRleCA2YjJiNmUxNjY4YjU3OTU5
YzEzODIwNDU3MjMzMmY5Y2Y3YTkzNDRmLi5iNjIxOTczYjUzMTkyZGI3YWVlYTkwMTI5N2NkZTQ1
ZGYwOTcwMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaApAQCAtNzMsNiAr
NzMsOSBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gcGFpbnQgdHJh
Y2tpbmcgaXMgb24gZm9yIHBhaW50IGN1bGxpbmcuCiAgICAgdm9pZCBzZXRVc2VQYWludFRyYWNr
aW5nKGJvb2wgdXNlKSB7IG1fdXNlUGFpbnRUcmFja2luZyA9IHVzZTsgfQogCisgICAgLy8gR2l2
ZXMgdGhlIHJlZ2lvbiBvZiB0aGUgc2NyZWVuIHRoYXQgaXMgbm90IG9jY2x1ZGVkIGJ5IHNvbWV0
aGluZyBvcGFxdWUuCisgICAgUmVnaW9uIGNvbXB1dGVWaXNpYmxlUmVnaW9uSW5TY3JlZW4oKSBj
b25zdCB7IHJldHVybiBzdWJ0cmFjdChSZWdpb24obV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2Up
LCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbik7IH0KKwogcHJvdGVjdGVkOgogICAg
IHN0cnVjdCBTdGFja09iamVjdCB7CiAgICAgICAgIFN0YWNrT2JqZWN0KCkgOiBzdXJmYWNlKDAp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggMTcwNGE2MTZkNWIzMTM0YzlhYzlh
ODQ2MWRhOGE0ZGIyZmYxMGViNy4uOWVlZTczMDMzNjdmNGRmZGFkYmVmZjFjMzdlNGIxODBkOTc3
M2Y3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC0yNywxMiArMjcsMTQgQEAKIAog
I2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5oIgogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNs
dWRlICJjYy9DQ0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJh
d1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUXVh
ZEN1bGxlci5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5j
bHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKKyNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JE
cmF3UXVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg4LDQgKzkwLDIzIEBAIHZv
aWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVy
SW1wbCogbGF5ZXIpCiAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFk
U3RhdGUucmVsZWFzZSgpKTsKIH0KIAordm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzVG9G
aWxsU2NyZWVuKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IENvbG9yJiBzY3JlZW5CYWNr
Z3JvdW5kQ29sb3IsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwmIG9jY2x1c2lvblRyYWNr
ZXIpCit7CisgICAgaWYgKCFyb290TGF5ZXIgfHwgIXNjcmVlbkJhY2tncm91bmRDb2xvci5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZ2lvbiBmaWxsUmVnaW9uID0gb2NjbHVz
aW9uVHJhY2tlci5jb21wdXRlVmlzaWJsZVJlZ2lvbkluU2NyZWVuKCk7CisgICAgaWYgKGZpbGxS
ZWdpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBPd25QdHI8Q0NTaGFyZWRR
dWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IHJvb3RMYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0
YXRlKCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtVG9MYXllclNwYWNlID0g
cm9vdExheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2UoKTsKKyAgICBWZWN0b3I8
SW50UmVjdD4gZmlsbFJlY3RzID0gZmlsbFJlZ2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZmlsbFJlY3RzLnNpemUoKTsgKytpKSB7CisgICAgICAgIEludFJlY3QgbGF5
ZXJSZWN0ID0gdHJhbnNmb3JtVG9MYXllclNwYWNlLm1hcFJlY3QoZmlsbFJlY3RzW2ldKTsKKyAg
ICAgICAgbV9xdWFkTGlzdC5hcHBlbmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFy
ZWRRdWFkU3RhdGUuZ2V0KCksIGxheWVyUmVjdCwgc2NyZWVuQmFja2dyb3VuZENvbG9yKSk7Cisg
ICAgfQorICAgIG1fc2hhcmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJl
bGVhc2UoKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggNTk5MDFjOGM1OGNm
Mzc2YTBjMWYwY2MwOWM1NzhlZTA0ZDMxNjJlMy4uMTI1MjZiMTEwMDQyMGU0NjAxZWYzZjI3OTI1
NmZmYjQ4ODA5MjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTM2LDYgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ1JlbmRlclN1
cmZhY2U7CiBjbGFzcyBDQ1NoYXJlZFF1YWRTdGF0ZTsKK2NsYXNzIENvbG9yOwogCiAvLyBBIGxp
c3Qgb2YgQ0NEcmF3UXVhZCBvYmplY3RzLCBzb3J0ZWQgaW50ZXJuYWxseSBpbiBmcm9udC10by1i
YWNrIG9yZGVyLgogY2xhc3MgQ0NRdWFkTGlzdCA6IHB1YmxpYyBWZWN0b3I8T3duUHRyPENDRHJh
d1F1YWQ+ID4gewpAQCAtNTYsNiArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZFF1
YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiwgYm9vbCYg
dXNlZENoZWNrZXJib2FyZCk7CiAgICAgdm9pZCBhcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VM
YXllcihDQ0xheWVySW1wbCopOworICAgIHZvaWQgYXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4oQ0NM
YXllckltcGwqIHJvb3RMYXllciwgY29uc3QgQ29sb3ImIHNjcmVlbkJhY2tncm91bmRDb2xvciwg
Y29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYpOwogCiAgICAgY29uc3QgQ0NRdWFkTGlzdCYg
cXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CiAgICAgQ0NSZW5kZXJTdXJm
YWNlKiB0YXJnZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRTdXJmYWNlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDEwNTExNjViMTdmMzNlYjM1NGZm
MTZmNGQzMDUxNGJlYTVmOWM5NTcuLjk1ZDJmOWU0Y2ExZjBhNDAyZjRhZDc2NmExODZjYTc2Yjg2
NDJiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0xNDIsOCArMTQy
LDYgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1
YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGEKICAgICBpZiAobV9za2lwc0RyYXcpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGFwcGVuZEd1dHRlclF1YWRzKHF1YWRMaXN0LCBzaGFyZWRRdWFk
U3RhdGUpOwotCiAgICAgaWYgKCFtX3RpbGVyIHx8IG1fdGlsZXItPmhhc0VtcHR5Qm91bmRzKCkg
fHwgbGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjYsOSArMjI0
LDYgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpwdXNoVGlsZVByb3BlcnRpZXMoaW50IGksIGlu
dCBqLCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUKIAogUmVnaW9uIENDVGlsZWRMYXllckltcGw6
OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9za2lwc0Ry
YXcpCi0gICAgICAgIHJldHVybiBSZWdpb24oKTsKLQogICAgIHJldHVybiBtX3RpbGVyLT5vcGFx
dWVSZWdpb25JbkxheWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5
ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggMzc5MGZhZTVhNjY4NThiMjhjMGU2NGU0Mjc2YzQwNWQx
YzI2NzMwNi4uNjg0MmY1MTI3YjFiZTU2NWE5NmQxMTExNGE5YjRmZmMxZDRkZThmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxl
ZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNDksNyArNDksOSBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVu
dCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2tpcHNEcmF3KCkgY29uc3QgeyByZXR1cm4g
bV9za2lwc0RyYXc7IH0KICAgICB2b2lkIHNldFNraXBzRHJhdyhib29sIHNraXBzRHJhdykgeyBt
X3NraXBzRHJhdyA9IHNraXBzRHJhdzsgfQorCiAgICAgdm9pZCBzZXRUaWxpbmdEYXRhKGNvbnN0
IENDTGF5ZXJUaWxpbmdEYXRhJiB0aWxlcik7CiAgICAgdm9pZCBwdXNoVGlsZVByb3BlcnRpZXMo
aW50LCBpbnQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBvcGFx
dWVSZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKaW5kZXggYjZiMWEyMjk0ZDE0OTZiMzgxZGRjMThiMjRk
YWUxNTM2ZjY4MDhjOC4uOTJjZjRhM2U3YmRkNjQwMTU2OTkxOWIxOGM5ZTFlOTUxNzRiMzZhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVk
Q29udGVudEhvc3QuY3BwCkBAIC00Niw5ICs0Niw3IEBAIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KFBhc3NPd25QdHI8V2ViQ29yZTo6TGF5ZXJQYWlu
CiAjZW5kaWYKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAg
ICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0SXNOb25Db21wb3NpdGVkQ29u
dGVudCh0cnVlKTsKLSNpZiAhRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotICAgIG1fZ3JhcGhpY3NM
YXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQodHJ1ZSk7
Ci0jZW5kaWYKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0Um9vdENv
bnRlbnRMYXllcih0cnVlKTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+
c2V0T3BhcXVlKHRydWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggOGE5ZjM1ZGM4YTdiODljMGM5NGJkNzUzN2M2ODQ2
NGZhNzhhNmJiOC4uMDRiZjgyNzBkZTEzNmYxYTkyYzFiMzk5YmVmZDAyZWE3YjNmMDUxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcApA
QCAtMTEyLDcgKzExMiw3IEBAIFRFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJpZnlMYXllckNoYW5n
ZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJf
Q0hBTkdFRChyb290LT5zZXREZWJ1Z0JvcmRlcldpZHRoKGFyYml0cmFyeU51bWJlcikpOwogICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0RHJhd3NDb250
ZW50KHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJv
b3QtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSkpOwotICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0
KHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3Qt
PnNldFJvb3RDb250ZW50TGF5ZXIodHJ1ZSkpOwogCiAgICAgLy8gU3BlY2lhbCBjYXNlOiBjaGVj
ayB0aGF0IHN1YmxheWVyIHRyYW5zZm9ybSBjaGFuZ2VzIGFsbCBsYXllcidzIGRlc2NlbmRhbnRz
LCBidXQgbm90IHRoZSBsYXllciBpdHNlbGYuCiAgICAgcm9vdC0+cmVzZXRBbGxDaGFuZ2VUcmFj
a2luZ0ZvclN1YnRyZWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggZWEzZWUwYzA0NThlZWFkZmIx
MmJjOWQ4YjNjNTgyMTRjNzI1MjQwYi4uMjA3NDc5NjNjZjNlNmM4YWI4YjAyMzc0MzkxNzY1N2Nj
ZWZiYWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJj
Yy9DQ1F1YWRDdWxsZXIuaCIKIAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgor
I2luY2x1ZGUgIkNDTGF5ZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCkBAIC0zNyw2ICszOCw3IEBACiAjaW5jbHVk
ZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCit1c2lu
ZyBuYW1lc3BhY2UgQ0NMYXllclRlc3RDb21tb247CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CkBA
IC01OTksNiArNjAxLDcgQEAgcHVibGljOgogICAgICAgICB0ZXN0QmxlbmRpbmdEcmF3UXVhZC0+
c2V0UXVhZFZpc2libGVSZWN0KG1fcXVhZFZpc2libGVSZWN0KTsKICAgICAgICAgRVhQRUNUX0VR
KG1fYmxlbmQsIHRlc3RCbGVuZGluZ0RyYXdRdWFkLT5uZWVkc0JsZW5kaW5nKCkpOwogICAgICAg
ICBFWFBFQ1RfRVEobV9oYXNSZW5kZXJTdXJmYWNlLCAhIXJlbmRlclN1cmZhY2UoKSk7CisgICAg
ICAgIHF1YWRMaXN0LmFwcGVuZCh0ZXN0QmxlbmRpbmdEcmF3UXVhZC5yZWxlYXNlKCkpOwogICAg
IH0KIAogICAgIHZvaWQgc2V0RXhwZWN0YXRpb24oYm9vbCBibGVuZCwgYm9vbCBoYXNSZW5kZXJT
dXJmYWNlKQpAQCAtODQyLDYgKzg0NSw4OSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAKIH0KIAorVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByb290Q29udGVudExheWVyKQoreworICAgIG1faG9zdElt
cGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CisKKyAgICBJbnRT
aXplIHZpZXdwb3J0U2l6ZSgxMDAsIDEwMCk7CisgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRT
aXplKHZpZXdwb3J0U2l6ZSk7CisKKyAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIoQmxlbmRT
dGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgQmxlbmRTdGF0ZUNoZWNrTGF5ZXIqIHJv
b3QgPSBzdGF0aWNfY2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KG1faG9zdEltcGwtPnJvb3RM
YXllcigpKTsKKyAgICByb290LT5zZXRFeHBlY3RhdGlvbihmYWxzZSwgdHJ1ZSk7CisgICAgcm9v
dC0+c2V0T3BhcXVlKHRydWUpOworICAgIHJvb3QtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6
Z3JheSk7CisgICAgcm9vdC0+c2V0Um9vdENvbnRlbnRMYXllcih0cnVlKTsKKworICAgIC8vIE5v
IGd1dHRlciByZWN0cworICAgIHsKKyAgICAgICAgSW50UmVjdCBsYXllclJlY3QoMCwgMCwgMTAw
LCAxMDApOworICAgICAgICByb290LT5zZXRQb3NpdGlvbihsYXllclJlY3QubG9jYXRpb24oKSk7
CisgICAgICAgIHJvb3QtPnNldEJvdW5kcyhsYXllclJlY3Quc2l6ZSgpKTsKKyAgICAgICAgcm9v
dC0+c2V0Q29udGVudEJvdW5kcyhsYXllclJlY3Quc2l6ZSgpKTsKKyAgICAgICAgcm9vdC0+c2V0
UXVhZFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllclJlY3Quc2l6ZSgpKSk7CisgICAgICAg
IHJvb3QtPnNldFF1YWRWaXNpYmxlUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyUmVjdC5z
aXplKCkpKTsKKworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7
CisgICAgICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsK
KyAgICAgICAgQVNTRVJUX0VRKDF1LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAg
ICAgICBzaXplX3QgbnVtR3V0dGVyUXVhZHMgPSAwOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIG51bUd1dHRlclF1YWRzICs9IChmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRM
aXN0KClbaV0tPm1hdGVyaWFsKCkgPT0gQ0NEcmF3UXVhZDo6U29saWRDb2xvcikgPyAxIDogMDsK
KyAgICAgICAgRVhQRUNUX0VRKDB1LCBudW1HdXR0ZXJRdWFkcyk7CisgICAgICAgIEVYUEVDVF9F
USgxdSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAg
ICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVh
ZExpc3QoKSwgSW50UmVjdCgtbGF5ZXJSZWN0LmxvY2F0aW9uKCksIHZpZXdwb3J0U2l6ZSkpOwor
ICAgIH0KKworICAgIC8vIEVtcHR5IHZpc2libGUgY29udGVudCBhcmVhIChmdWxsc2NyZWVuIGd1
dHRlciByZWN0KQorICAgIHsKKyAgICAgICAgSW50UmVjdCBsYXllclJlY3QoMCwgMCwgMCwgMCk7
CisgICAgICAgIHJvb3QtPnNldFBvc2l0aW9uKGxheWVyUmVjdC5sb2NhdGlvbigpKTsKKyAgICAg
ICAgcm9vdC0+c2V0Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOworICAgICAgICByb290LT5zZXRD
b250ZW50Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOworICAgICAgICByb290LT5zZXRRdWFkUmVj
dChJbnRSZWN0KEludFBvaW50KCksIGxheWVyUmVjdC5zaXplKCkpKTsKKyAgICAgICAgcm9vdC0+
c2V0UXVhZFZpc2libGVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJSZWN0LnNpemUoKSkp
OworCisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgICAg
ICBBU1NFUlRfRVEoMXUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIHNp
emVfdCBudW1HdXR0ZXJRdWFkcyA9IDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKTsgKytpKQorICAgICAgICAg
ICAgbnVtR3V0dGVyUXVhZHMgKz0gKGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKVtp
XS0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yKSA/IDEgOiAwOworICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG51bUd1dHRlclF1YWRzKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBm
cmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICB2ZXJp
ZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QoZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgp
LCBJbnRSZWN0KC1sYXllclJlY3QubG9jYXRpb24oKSwgdmlld3BvcnRTaXplKSk7CisgICAgfQor
CisgICAgLy8gQ29udGVudCBhcmVhIGluIG1pZGRsZSBvZiBjbGlwIHJlY3QgKGZvdXIgc3Vycm91
bmRpbmcgZ3V0dGVyIHJlY3RzKQorICAgIHsKKyAgICAgICAgSW50UmVjdCBsYXllclJlY3QoNTAs
IDUwLCAyMCwgMjApOworICAgICAgICByb290LT5zZXRQb3NpdGlvbihsYXllclJlY3QubG9jYXRp
b24oKSk7CisgICAgICAgIHJvb3QtPnNldEJvdW5kcyhsYXllclJlY3Quc2l6ZSgpKTsKKyAgICAg
ICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhsYXllclJlY3Quc2l6ZSgpKTsKKyAgICAgICAgcm9v
dC0+c2V0UXVhZFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllclJlY3Quc2l6ZSgpKSk7Cisg
ICAgICAgIHJvb3QtPnNldFF1YWRWaXNpYmxlUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVy
UmVjdC5zaXplKCkpKTsKKworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEg
ZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJh
bWUpKTsKKyAgICAgICAgQVNTRVJUX0VRKDF1LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsK
KworICAgICAgICBzaXplX3QgbnVtR3V0dGVyUXVhZHMgPSAwOworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgIG51bUd1dHRlclF1YWRzICs9IChmcmFtZS5yZW5kZXJQYXNzZXNbMF0t
PnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCkgPT0gQ0NEcmF3UXVhZDo6U29saWRDb2xvcikgPyAx
IDogMDsKKyAgICAgICAgRVhQRUNUX0VRKDR1LCBudW1HdXR0ZXJRdWFkcyk7CisgICAgICAgIEVY
UEVDVF9FUSg1dSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisK
KyAgICAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KGZyYW1lLnJlbmRlclBhc3Nlc1sw
XS0+cXVhZExpc3QoKSwgSW50UmVjdCgtbGF5ZXJSZWN0LmxvY2F0aW9uKCksIHZpZXdwb3J0U2l6
ZSkpOworICAgIH0KKworfQorCisKIGNsYXNzIFJlc2hhcGVUcmFja2VyQ29udGV4dDogcHVibGlj
IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7CiBwdWJsaWM6CiAgICAgUmVzaGFwZVRyYWNrZXJD
b250ZXh0KCkgOiBtX3Jlc2hhcGVDYWxsZWQoZmFsc2UpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAppbmRleCA1N2Nh
YTdkYzE3MTRhMWY5ZTUyZTUyMWM1OGQ0MDM5MjUzNTM3YmI5Li42MGNiZjlmZWYyZTdlNzc5ZWFk
MTA3YjkxNzkwMzVlM2ZiZDRkNDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcApAQCAtMjYyLDc2ICsyNjIsNCBAQCBU
RVNUKENDVGlsZWRMYXllckltcGxUZXN0LCB0aWxlT3BhcXVlUmVjdEZvckxheWVyTm9Cb3JkZXJz
KQogICAgIH0KIH0KIAotVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgYmFja2dyb3VuZENvdmVy
c1ZpZXdwb3J0KQotewotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzY29wZWRJbXBsVGhy
ZWFkOwotCi0gICAgY29uc3QgSW50U2l6ZSB0aWxlU2l6ZSgxMCwgMTApOwotICAgIGNvbnN0IGlu
dCBudW1UaWxlc1ggPSAyOwotICAgIGNvbnN0IGludCBudW1UaWxlc1kgPSAyOwotICAgIGNvbnN0
IHVuc2lnbmVkIG51bVRpbGVzID0gbnVtVGlsZXNYICogbnVtVGlsZXNZOwotICAgIGNvbnN0IElu
dFNpemUgbGF5ZXJTaXplKHRpbGVTaXplLndpZHRoKCkgKiBudW1UaWxlc1gsIHRpbGVTaXplLmhl
aWdodCgpICogbnVtVGlsZXNZKTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIg
PSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9C
b3JkZXJUZXhlbHMpOwotICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkp
OwotICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQodHJ1ZSk7Ci0KLSAgICAv
LyBObyBndXR0ZXIgcmVjdHMKLSAgICB7Ci0gICAgICAgIEludFJlY3QgY2xpcFJlY3QgPSBJbnRS
ZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSk7Ci0gICAgICAgIGxheWVyLT5zZXRDbGlwUmVjdChj
bGlwUmVjdCk7Ci0gICAgICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgbGF5ZXJTaXplKSk7Ci0KLSAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0KLSAg
ICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBib29sIHVzZWRDaGVj
a2VyYm9hcmQgPSBmYWxzZTsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIs
IHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7Ci0gICAgICAgIEVYUEVD
VF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCBudW1UaWxlcyk7Ci0KLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlh
bCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpOwotICAgIH0KLQotICAgIC8vIEVtcHR5IHZp
c2libGUgY29udGVudCBhcmVhIChmdWxsc2NyZWVuIGd1dHRlciByZWN0KQotICAgIHsKLSAgICAg
ICAgSW50UmVjdCBjbGlwUmVjdCA9IEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKTsKLSAgICAg
ICAgbGF5ZXItPnNldENsaXBSZWN0KGNsaXBSZWN0KTsKLSAgICAgICAgbGF5ZXItPnNldFZpc2li
bGVMYXllclJlY3QoSW50UmVjdCgpKTsKLQotICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAg
ICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBib29sIHVzZWRDaGVj
a2VyYm9hcmQgPSBmYWxzZTsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIs
IHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7Ci0KLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCi0g
ICAgICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgp
LCBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yKTsKLQotICAgICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlD
b3ZlclJlY3QocXVhZEN1bGxlci5xdWFkTGlzdCgpLCBjbGlwUmVjdCk7Ci0gICAgfQotCi0gICAg
Ly8gQ29udGVudCBhcmVhIGluIG1pZGRsZSBvZiBjbGlwIHJlY3QgKGZvdXIgc3Vycm91bmRpbmcg
Z3V0dGVyIHJlY3RzKQotICAgIHsKLSAgICAgICAgSW50UmVjdCBjbGlwUmVjdCA9IEludFJlY3Qo
LTUwLCAtNTAsIDEwMCwgMTAwKTsKLSAgICAgICAgbGF5ZXItPnNldENsaXBSZWN0KGNsaXBSZWN0
KTsKLSAgICAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCBsYXllclNpemUpKTsKLQotICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJl
ZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICAgICAgTW9j
a0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQg
PSBmYWxzZTsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1
YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7Ci0KLSAgICAgICAgdW5zaWduZWQgbnVt
Q29udGVudFRpbGVzID0gMCwgbnVtR3V0dGVyVGlsZXMgPSAwOwotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgaWYgKHF1YWRDdWxsZXIucXVhZExpc3QoKVtpXS0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdR
dWFkOjpUaWxlZENvbnRlbnQpCi0gICAgICAgICAgICAgICAgbnVtQ29udGVudFRpbGVzKys7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChxdWFkQ3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCkg
PT0gQ0NEcmF3UXVhZDo6U29saWRDb2xvcikKLSAgICAgICAgICAgICAgICBudW1HdXR0ZXJUaWxl
cysrOwotICAgICAgICB9Ci0gICAgICAgIEVYUEVDVF9FUShudW1Db250ZW50VGlsZXMsIG51bVRp
bGVzKTsKLSAgICAgICAgRVhQRUNUX0dFKG51bUd1dHRlclRpbGVzLCA0dSk7Ci0KLSAgICAgICAg
dmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRDdWxsZXIucXVhZExpc3QoKSwgY2xpcFJl
Y3QpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggZTdkZTM1NmRkMGRhMzhh
MzFiODk2YjJkN2E5YzQ4YTliMWEzNmMyMy4uNDczNWQ4MjkwNjM2YTU3ZWY5OTM1NGVhNmQ1MGYw
Nzc2ZDQwNzY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXll
ckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXll
ckNocm9taXVtVGVzdC5jcHAKQEAgLTUwNiw3ICs1MDYsNyBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1
bVRlc3QsIGNoZWNrUHJvcGVydHlDaGFuZ2VDYXVzZXNDb3JyZWN0QmVoYXZpb3IpCiAgICAgRVhF
Q1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDEuMjNmLCA0LjU2ZikpKTsKICAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldEFuY2hv
clBvaW50WigwLjdmKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRf
QkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3IoMC40ZiwgMC40
ZiwgMC40ZikpKTsKLSAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhB
VklPUigxLCB0ZXN0TGF5ZXItPnNldEJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCh0cnVlKSk7Cisg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExh
eWVyLT5zZXRSb290Q29udGVudExheWVyKHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllf
U0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMo
dHJ1ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9S
KDEsIHRlc3RMYXllci0+c2V0TWFza0xheWVyKGR1bW15TGF5ZXIuZ2V0KCkpKTsKICAgICBFWEVD
VVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNl
dE9wYWNpdHkoMC41ZikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136050</attachid>
            <date>2012-04-06 12:17:36 -0700</date>
            <delta_ts>2012-04-06 16:48:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83351-20120406151735.patch</filename>
            <type>text/plain</type>
            <size>42935</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTAwNDAzOGVkN2Q5OTFi
Y2VmNDI4YWNkZWY5YWFjNjc2ZmFjY2ExNi4uMGE2ODRiOGMzZTRkN2EwMDU1Mzc5NmE3ZTNlNDEz
YTViYzQ3Y2ZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEyLTA0LTA1ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVmll
d3BvcnQgaXMgbm90IGZpbGxlZCB3aGVuIG91dCBvZiB0ZXh0dXJlIG1lbW9yeSBvbiBtYWMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMzUxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHdl
IGFkZCBndXR0ZXIgcXVhZHMgb24gdGhlIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCBsYXllciwK
KyAgICAgICAgd2hpY2ggbGllcyBhYm92ZSBhbm90aGVyIHZpc2libGUgbGF5ZXIgLSB0aGUgcnVi
YmVyYmFuZCBsYXllciBvbiBtYWMuCisgICAgICAgIEZvciB0aGlzIHJlYXNvbiwgb24gbWFjLCBn
dXR0ZXIgcXVhZHMgd2VyZSBkaXNhYmxlZCwgYXMgd2VsbCBhcyBmb3JjaW5nCisgICAgICAgIHRo
ZSBOQ0NIIGxheWVyIHRvIGRyYXcsIGluIG9yZGVyIHRvIG1ha2UgdGhlIHJ1YmJlcmJhbmQgbGF5
ZXIgYXBwZWFyLgorCisgICAgICAgIFdlIG1vdmUgdGhlIGxvZ2ljIGZvciBhZGRpbmcgZ3V0dGVy
IHF1YWRzIGludG8gQ0NSZW5kZXJQYXNzLCBhbmQgYWRkCisgICAgICAgIGd1dHRlciBxdWFkcyBm
b3IgYWxsIHBpeGVscyB0aGF0IGFyZSB2aXNpYmxlIHRocm91Z2ggdGhlIHZpZXdwb3J0LgorICAg
ICAgICBUaGlzIGFsbG93cyB1cyB0byBzdG9wIHNwZWNpYWwtY2FzaW5nIHRoZSBOQ0NIIGxheWVy
LCBhbmQgYWxsb3dzIHVzCisgICAgICAgIHRvIHNraXAgZHJhd2luZyB0aGUgbGF5ZXIgZXF1YWxs
eSB3aXRoIG90aGVyIGxheWVycy4gV2UgcmVtb3ZlIHRoZQorICAgICAgICBiYWNrZ3JvdW5kQ292
ZXJzVmlld3BvcnQoKSBmbGFnIGVudGlyZWx5LgorCisgICAgICAgIEluIG9yZGVyIHRvIGRvIHRo
aXMsIHdlIGZpeCBhIGJ1ZyBpbiB0aGUgb2NjbHVzaW9uIHRyYWNrZXIsIHRoYXQKKyAgICAgICAg
YWxsb3dlZCBvcGFxdWUoKSBsYXllcnMgd2l0aCBza2lwc0RyYXcgdG8gb2NjbHVkZSwgYnkgc3Rp
Y2tpbmcgYQorICAgICAgICB2aXJ0dWFsIHNraXBzRHJhdygpIG9uIHRoZSBsYXllciBjbGFzc2Vz
IHRoYXQgdGhlIHRpbGVkIGxheWVycworICAgICAgICBjYW4gb3ZlcnJpZGUgYW5kIHJldHVybiBz
b21ldGhpbmcgdXNlZnVsIHdpdGguCisKKyAgICAgICAgVW5pdCB0ZXN0OiBDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5yb290Q29udGVudExheWVyCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hy
b21pdW06OkxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6
c2V0Um9vdENvbnRlbnRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpw
dXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmg6CisgICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyQ2hyb21pdW06OnJvb3RDb250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bTo6c2tpcHNEcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpU
aWxlZExheWVyQ2hyb21pdW06OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6c2tpcHNEcmF3KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllckltcGw6OnNldFJvb3RDb250ZW50TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllckltcGw6OnJvb3RDb250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckltcGw6OnNraXBzRHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjo6Om1hcmtPY2NsdWRlZEJlaGluZExheWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaDoKKyAgICAgICAgKEND
T2NjbHVzaW9uVHJhY2tlckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFj
a2VyQmFzZTo6Y29tcHV0ZVZpc2libGVSZWdpb25JblNjcmVlbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4pOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyUGFzcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVy
SW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6c2tpcHNEcmF3KToK
KyAgICAgICAgKENDVGlsZWRMYXllckltcGwpOgorCiAyMDEyLTA0LTA2ICBMZXZpIFdlaW50cmF1
YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVcGRhdGUgTGF5b3V0VW5pdCB1c2Fn
ZSBpbiBSZW5kZXJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGM4MWEzOWRhNjA5
YmU0ZDgwOTczNTExMjI2NDAwYjM4MTFlM2U1NGYuLjUwYjJiOTM0N2FmN2Q5MGE3NzEyMWM3YmQ1
N2EzYTRmYzllNzdhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTItMDQtMDUgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBWaWV3cG9ydCBpcyBub3QgZmlsbGVkIHdoZW4gb3V0IG9mIHRleHR1
cmUgbWVtb3J5IG9uIG1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODMzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCk6
CisgICAgICAgICogdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpCbGVuZFN0YXRlQ2hlY2tMYXllcjo6YXBwZW5kUXVhZHMpOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgIChXZWJLaXRUZXN0cyk6Cisg
ICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3Rz
L0xheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwogMjAxMi0wNC0wNiAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2FsZW5kYXIgUGlja2VyOiBBZGQgY29kZSB0byBv
cGVuL2Nsb3NlIHRoZSBjYWxlbmRhciBwaWNrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggMmExNmM4NjcwNWMzYjkyY2Ni
NGU4ZWQ0YzBiOWEzZDYwZmEyMWNmNC4uOTI4NDkyNGRhZmU3ZTMyOTliYTM1ZjM5YjQ2Yzc4MTA5
YTNhZWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJM
YXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJM
YXllclRyZWVWaWV3LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQ0NMYXllclRyZWVIb3N0OworY2xhc3MgQ29sb3I7CiBzdHJ1Y3QgQ0NTZXR0aW5nczsK
IH0KIApAQCAtMTA4LDYgKzEwOSw5IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYlNpemUmKTsKICAgICBXRUJLSVRfRVhQT1JUIFdlYlNp
emUgdmlld3BvcnRTaXplKCkgY29uc3Q7CiAKKyAgICAvLyBTZXRzIHRoZSBiYWNrZ3JvdW5kIGNv
bG9yIGZvciB0aGUgdmlld3BvcnQuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91
bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOworCiAgICAgLy8gU2V0cyB3aGV0aGVyIHRo
aXMgdmlldyBpcyB2aXNpYmxlLiBJbiB0aHJlYWRlZCBtb2RlLCBhIHZpZXcgdGhhdCBpcyBub3Qg
dmlzaWJsZSB3aWxsIG5vdAogICAgIC8vIGNvbXBvc2l0ZSBvciB0cmlnZ2VyIHVwZGF0ZUFuaW1h
dGlvbnMoKSBvciBsYXlvdXQoKSBjYWxscyB1bnRpbCBpdCBiZWNvbWVzIHZpc2libGUuCiAgICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpc2libGUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDJhZDA5Yjk0OGE0M2JiM2NlM2E3MTk1MWZjN2I1ZDllMTMwMGVhNTUuLmU4NjIzZDAz
ZDA0NGFlZjc4OTU1ZDgyZDBjYWNjNGFmZGJmNzUyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3Bw
CkBAIC02Niw3ICs2Niw2IEBAIExheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0oKQogICAgICwg
bV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNoYW5nZWQoZmFsc2UpCiAgICAgLCBtX2FuY2hvclBv
aW50KDAuNSwgMC41KQogICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoMCwgMCwgMCwgMCkKLSAgICAs
IG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZhbHNlKQogICAgICwgbV9kZWJ1Z0JvcmRlcldp
ZHRoKDApCiAgICAgLCBtX29wYWNpdHkoMS4wKQogICAgICwgbV9hbmNob3JQb2ludFooMCkKQEAg
LTI3MCwxNCArMjY5LDYgQEAgdm9pZCBMYXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3Io
Y29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQog
Ci12b2lkIExheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydChib29sIGJh
Y2tncm91bmRDb3ZlcnNWaWV3cG9ydCkKLXsKLSAgICBpZiAobV9iYWNrZ3JvdW5kQ292ZXJzVmll
d3BvcnQgPT0gYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQotICAgICAgICByZXR1cm47Ci0gICAg
bV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQgPSBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQ7Ci0g
ICAgc2V0TmVlZHNDb21taXQoKTsKLX0KLQogdm9pZCBMYXllckNocm9taXVtOjpzZXRNYXNrc1Rv
Qm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKIHsKICAgICBpZiAobV9tYXNrc1RvQm91bmRzID09
IG1hc2tzVG9Cb3VuZHMpCkBAIC00NTMsNyArNDQ0LDYgQEAgdm9pZCBMYXllckNocm9taXVtOjpw
dXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICBsYXllci0+c2V0QW5jaG9y
UG9pbnQobV9hbmNob3JQb2ludCk7CiAgICAgbGF5ZXItPnNldEFuY2hvclBvaW50WihtX2FuY2hv
clBvaW50Wik7CiAgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihtX2JhY2tncm91bmRDb2xv
cik7Ci0gICAgbGF5ZXItPnNldEJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydChtX2JhY2tncm91bmRD
b3ZlcnNWaWV3cG9ydCk7CiAgICAgbGF5ZXItPnNldEJvdW5kcyhtX2JvdW5kcyk7CiAgICAgbGF5
ZXItPnNldENvbnRlbnRCb3VuZHMoY29udGVudEJvdW5kcygpKTsKICAgICBsYXllci0+c2V0RGVi
dWdCb3JkZXJDb2xvcihtX2RlYnVnQm9yZGVyQ29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IGI5ODAyMmI1MmRhNThiOTE5N2NiZjU0NDhjYjZkNDBhOWEwN2MyNzAuLmRjMDAwMDUzZjJjMjcw
ZWJlNDA5YzVhMjk1MTAxYzkxZTQ5ZGU2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTk5LDkg
Kzk5LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9y
Jik7CiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3Jv
dW5kQ29sb3I7IH0KIAotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGJvb2wp
OwotICAgIGJvb2wgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQ7IH0KLQogICAgIHZvaWQgc2V0Qm91bmRzKGNvbnN0IElu
dFNpemUmKTsKICAgICB2aXJ0dWFsIEludFNpemUgY29udGVudEJvdW5kcygpIGNvbnN0IHsgcmV0
dXJuIGJvdW5kcygpOyB9CiAKQEAgLTE4MCw2ICsxNzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCkgeyB9CiAgICAgdmlydHVhbCBib29s
IG5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0
dWFsIGJvb2wgc2tpcHNEcmF3KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHZvaWQg
c2V0RGVidWdCb3JkZXJDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0RGVidWdCb3Jk
ZXJXaWR0aChmbG9hdCk7CiAgICAgdm9pZCBzZXREZWJ1Z05hbWUoY29uc3QgU3RyaW5nJik7CkBA
IC0zMDUsNyArMzA0LDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fcG9zaXRpb247CiAg
ICAgRmxvYXRQb2ludCBtX2FuY2hvclBvaW50OwogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9y
OwotICAgIGJvb2wgbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQ7CiAgICAgQ29sb3IgbV9kZWJ1
Z0JvcmRlckNvbG9yOwogICAgIGZsb2F0IG1fZGVidWdCb3JkZXJXaWR0aDsKICAgICBTdHJpbmcg
bV9kZWJ1Z05hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCAxMmIyYzVk
NDliZmIzYzJhZmQyOTU4NTk3OGNhYjA3ZmQ1ODUzYjgxLi5iYTFhYmI1OWE5NzQyMTIzNTBjZDEw
MTRiNDkzZjI3MDM0ZjBlZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTQ1NCwxMCArNDU0LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0
ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgaWYg
KCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZXItPnRpbGVTaXplKCksIG1f
dGV4dHVyZUZvcm1hdCkpIHsKICAgICAgICAgICAgICAgICBtX3NraXBzSWRsZVBhaW50ID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBpZiAoIWlkbGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8g
SWYgdGhlIGJhY2tncm91bmQgY292ZXJzIHRoZSB2aWV3cG9ydCwgYWx3YXlzIGRyYXcgdGhpcwot
ICAgICAgICAgICAgICAgICAgICAvLyBsYXllciBzbyB0aGF0IGNoZWNrZXJib2FyZGVkIHRpbGVz
IHdpbGwgc3RpbGwgZHJhdy4KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFiYWNrZ3JvdW5kQ292
ZXJzVmlld3BvcnQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICBtX3RpbGVyLT5yZXNldCgpOwogICAgICAgICAgICAgICAgICAgICBtX3BhaW50UmVj
dCA9IEludFJlY3QoKTsKICAgICAgICAgICAgICAgICAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxl
c1JlY3QgPSBJbnRSZWN0KCk7CkBAIC01NzgsOSArNTc1LDYgQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnJlc2VydmVUZXh0dXJlcygpCiAKIFJlZ2lvbiBUaWxlZExheWVyQ2hyb21pdW06OnZp
c2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9za2lwc0RyYXcp
Ci0gICAgICAgIHJldHVybiBSZWdpb24oKTsKLQogICAgIHJldHVybiBtX3RpbGVyLT5vcGFxdWVS
ZWdpb25JbkxheWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDgxZWUyNDhhNzY4ZmY5OWRmODZjZWMwZjE4YzRhMzBiYzBhY2M3
ZGMuLmVjMDczZTE2YmYwZTdhZmViYTAzYmI0MTk3ZmFlMzFlNjBjNzdhMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC05OSw3ICs5OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIElu
dFJlY3QgaWRsZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KTsKIAot
ICAgIGJvb2wgc2tpcHNEcmF3KCkgY29uc3QgeyByZXR1cm4gbV9za2lwc0RyYXc7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgc2tpcHNEcmF3KCkgY29uc3QgeyByZXR1cm4gbV9za2lwc0RyYXc7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHAKaW5kZXggMmFmYjlkOGZmNzQxZjkzMzU5NTY2YTE2OWZkNDM3Mjk3MDJh
Nzk2OS4uZWFmYWUzNjY1NjQ2N2M1NGZjNTUyMzQxMmVkZGNhNmE5MmRlNDdlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmNwcApAQCAtNTAsNyArNTAsNiBAQCBDQ0xheWVySW1wbDo6Q0NMYXllcklt
cGwoaW50IGlkKQogICAgICwgbV9zY3JvbGxhYmxlKGZhbHNlKQogICAgICwgbV9zaG91bGRTY3Jv
bGxPbk1haW5UaHJlYWQoZmFsc2UpCiAgICAgLCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMoZmFs
c2UpCi0gICAgLCBtX2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydChmYWxzZSkKICAgICAsIG1fZG91
YmxlU2lkZWQodHJ1ZSkKICAgICAsIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQoZmFsc2UpCiAgICAg
LCBtX21hc2tzVG9Cb3VuZHMoZmFsc2UpCkBAIC0xMzYsNDMgKzEzNSw2IEBAIFBhc3NPd25QdHI8
Q0NTaGFyZWRRdWFkU3RhdGU+IENDTGF5ZXJJbXBsOjpjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSBj
b25zdAogICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHF1YWRUcmFuc2Zvcm0o
KSwgZHJhd1RyYW5zZm9ybSgpLCB2aXNpYmxlTGF5ZXJSZWN0KCksIGxheWVyQ2xpcFJlY3QsIGRy
YXdPcGFjaXR5KCksIG9wYXF1ZSgpKTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kUXVh
ZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgYm9vbCYpCi17Ci0gICAgYXBwZW5kR3V0dGVyUXVhZHMocXVhZExpc3QsIHNo
YXJlZFF1YWRTdGF0ZSk7Ci19Ci0KLXZvaWQgQ0NMYXllckltcGw6OmFwcGVuZEd1dHRlclF1YWRz
KENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUpCi17Ci0gICAgaWYgKCFiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQoKSB8fCAhYmFj
a2dyb3VuZENvbG9yKCkuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7Ci0gICAgSW50UmVjdCBjbGlw
ID0gc2NyZWVuU3BhY2VUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFwUmVjdChjbGlwUmVjdCgpKTsK
LQotICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHF1YWRMaXN0LmFwcGVu
ZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgY2xpcCwgYmFj
a2dyb3VuZENvbG9yKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEludFJlY3Qg
Z3V0dGVyUmVjdHNbNF07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCi0gICAgICAg
IGd1dHRlclJlY3RzW2ldID0gY2xpcDsKLSAgICBndXR0ZXJSZWN0c1swXS5zaGlmdE1heFlFZGdl
VG8obGF5ZXJSZWN0LnkoKSk7Ci0gICAgZ3V0dGVyUmVjdHNbMV0uc2hpZnRZRWRnZVRvKGxheWVy
UmVjdC5tYXhZKCkpOwotICAgIGd1dHRlclJlY3RzWzJdLnNoaWZ0TWF4WEVkZ2VUbyhsYXllclJl
Y3QueCgpKTsKLSAgICBndXR0ZXJSZWN0c1szXS5zaGlmdFhFZGdlVG8obGF5ZXJSZWN0Lm1heFgo
KSk7Ci0KLSAgICBndXR0ZXJSZWN0c1syXS5zaGlmdFlFZGdlVG8obGF5ZXJSZWN0LnkoKSk7Ci0g
ICAgZ3V0dGVyUmVjdHNbM10uc2hpZnRZRWRnZVRvKGxheWVyUmVjdC55KCkpOwotICAgIGd1dHRl
clJlY3RzWzJdLnNoaWZ0TWF4WUVkZ2VUbyhsYXllclJlY3QubWF4WSgpKTsKLSAgICBndXR0ZXJS
ZWN0c1szXS5zaGlmdE1heFlFZGdlVG8obGF5ZXJSZWN0Lm1heFkoKSk7Ci0KLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICBpZiAoIWd1dHRlclJlY3RzW2ldLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6
Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgZ3V0dGVyUmVjdHNbaV0sIGJhY2tncm91bmRDb2xvcigp
KSk7Ci0gICAgfQotfQotCiB2b2lkIENDTGF5ZXJJbXBsOjphcHBlbmREZWJ1Z0JvcmRlclF1YWQo
Q0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSkgY29uc3QKIHsKICAgICBpZiAoIWhhc0RlYnVnQm9yZGVycygpKQpAQCAtMzkyLDE1
ICszNTQsNiBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImIGJhY2tncm91bmRDb2xvcikKICAgICBtX2xheWVyUHJvcGVydHlDaGFuZ2VkID0gdHJ1ZTsK
IH0KIAotdm9pZCBDQ0xheWVySW1wbDo6c2V0QmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGJvb2wg
YmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQotewotICAgIGlmIChtX2JhY2tncm91bmRDb3ZlcnNW
aWV3cG9ydCA9PSBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0ID0gYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0
OwotICAgIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQgPSB0cnVlOwotfQotCiB2b2lkIENDTGF5ZXJJ
bXBsOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7CiAgICAg
aWYgKG1fZmlsdGVycyA9PSBmaWx0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggNmNiNmRm
MDNjMjllYWU2MDg3ZTBmNGE5ZWU5NDFjMzJiOTk1MDg5Mi4uMWZkZTY0ZGNjODU3YTcxODQ2ZGVj
OGQwZTE2ZjgxZDE2MDE4ZGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC04NCw3ICs4NCw3
IEBAIHB1YmxpYzoKIAogICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVNo
YXJlZFF1YWRTdGF0ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJl
bmRlcmVyQ2hyb21pdW0qKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFk
Q3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJk
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkRHJhdygpIHsgfQogICAgIHZvaWQgYXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVh
ZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKikgY29uc3Q7CiAKQEAgLTEwNyw5ICsx
MDcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3Im
KTsKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91
bmRDb2xvcjsgfQogCi0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQoYm9vbCk7
Ci0gICAgYm9vbCBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tncm91bmRDb3ZlcnNWaWV3cG9ydDsgfQotCiAgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmKTsKICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9maWx0ZXJzOyB9CiAKQEAgLTEzNyw2ICsxMzQsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpOwogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3VibGF5ZXJUcmFuc2Zvcm07IH0KIAorICAgIHZpcnR1YWwgYm9v
bCBza2lwc0RyYXcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgLy8gRGVidWcgbGF5
ZXIgYm9yZGVyIC0gdmlzdWFsIGVmZmVjdCBvbmx5LCBkbyBub3QgY2hhbmdlIGdlb21ldHJ5L2Ns
aXBwaW5nL2V0Yy4KICAgICB2b2lkIHNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IpOwogICAgIENv
bG9yIGRlYnVnQm9yZGVyQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyQ29sb3I7
IH0KQEAgLTI0OCw4ICsyNDcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gVHJhbnNmb3JtYXRpb24g
dXNlZCB0byB0cmFuc2Zvcm0gcXVhZHMgcHJvdmlkZWQgaW4gYXBwZW5kUXVhZHMuCiAgICAgdmly
dHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFkVHJhbnNmb3JtKCkgY29uc3Q7CiAKLSAgICB2
b2lkIGFwcGVuZEd1dHRlclF1YWRzKENDUXVhZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKik7Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQYXJlbnQoQ0NMYXllckltcGwqIHBhcmVu
dCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogICAgIGZyaWVuZCBjbGFzcyBUcmVlU3luY2hyb25p
emVyOwpAQCAtMjg1LDcgKzI4Miw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhdmVXaGVlbEV2
ZW50SGFuZGxlcnM7CiAgICAgUmVnaW9uIG1fbm9uRmFzdFNjcm9sbGFibGVSZWdpb247CiAgICAg
Q29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgYm9vbCBtX2JhY2tncm91bmRDb3ZlcnNWaWV3
cG9ydDsKIAogICAgIC8vIFdoZXRoZXIgdGhlICJiYWNrIiBvZiB0aGlzIGxheWVyIHNob3VsZCBk
cmF3LgogICAgIGJvb2wgbV9kb3VibGVTaWRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IGQzZmM5NzBiZDM2NzNkNzFjODIwYmEzMzhhNmJkMDZkNDYyMzU2ZWUuLjVlNzkw
NDkzNGVlMWRlMGYzMTVhMzI3NDRlOGY4MmJjZTdmOWI3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcApAQCAtODAsNiArODAsNyBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJU
cmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncwog
ICAgICwgbV9taW5QYWdlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fbWF4UGFnZVNjYWxlRmFjdG9y
KDEpCiAgICAgLCBtX3RyaWdnZXJJZGxlUGFpbnRzKHRydWUpCisgICAgLCBtX2JhY2tncm91bmRD
b2xvcihDb2xvcjo6d2hpdGUpCiAgICAgLCBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMo
MCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwpAQCAtMjIwLDYgKzIy
MSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbkltcGxUaHJlYWQoQ0NM
YXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiAgICAgaG9zdEltcGwtPnNldFNvdXJjZUZyYW1l
TnVtYmVyKGZyYW1lTnVtYmVyKCkpOwogICAgIGhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmll
d3BvcnRTaXplKCkpOwogICAgIGhvc3RJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMo
bV9wYWdlU2NhbGVGYWN0b3IsIG1fbWluUGFnZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZh
Y3Rvcik7CisgICAgaG9zdEltcGwtPnNldEJhY2tncm91bmRDb2xvcihtX2JhY2tncm91bmRDb2xv
cik7CiAKICAgICBtX2ZyYW1lTnVtYmVyKys7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CmluZGV4IDljYTE0ZmMwNDQ4ODNhYjBjMzEwOWE5N2ZiOGJlMWIyYmEyMzcxNjEuLjY1ZDRiOGJm
NmY0M2UwMWRmZDFmOTBmMzU5MDA1MTRlODNkYWI1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIENDTGF5ZXJUcmVlSG9zdF9oCiAjZGVm
aW5lIENDTGF5ZXJUcmVlSG9zdF9oCiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYXllckNo
cm9taXVtLmgiCkBAIC0yMDEsNiArMjAyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQYWdl
U2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBmbG9hdCBtaW5QYWdl
U2NhbGVGYWN0b3IsIGZsb2F0IG1heFBhZ2VTY2FsZUZhY3Rvcik7CiAKKyAgICB2b2lkIHNldEJh
Y2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBj
b2xvcjsgfQorCiAgICAgVGV4dHVyZU1hbmFnZXIqIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSBj
b25zdDsKIAogICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQpA
QCAtMjcwLDYgKzI3Myw3IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9wYWdlU2NhbGVGYWN0b3I7
CiAgICAgZmxvYXQgbV9taW5QYWdlU2NhbGVGYWN0b3IsIG1fbWF4UGFnZVNjYWxlRmFjdG9yOwog
ICAgIGJvb2wgbV90cmlnZ2VySWRsZVBhaW50czsKKyAgICBDb2xvciBtX2JhY2tncm91bmRDb2xv
cjsKIAogICAgIFRleHR1cmVMaXN0IG1fZGVsZXRlVGV4dHVyZUFmdGVyQ29tbWl0TGlzdDsKICAg
ICBzaXplX3QgbV9wYXJ0aWFsVGV4dHVyZVVwZGF0ZVJlcXVlc3RzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBkMjFhNGUwYzYwOWMzN2JkYWQyZGY5MzE1YWY1
MDcyNzZkN2FkMWJlLi4wZWM0NzA0NTIxNWQxYzEyZTM3OGZmMGJkMWEwMzgwOGY4NjcwMmQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzI4LDYgKzMyOCw4
IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVu
ZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoKml0KTsKICAgICB9CiAKKyAgICBwYXNzZXMubGFzdCgpLT5h
cHBlbmRRdWFkc1RvRmlsbFNjcmVlbihyb290TGF5ZXIoKSwgbV9iYWNrZ3JvdW5kQ29sb3IsIG9j
Y2x1c2lvblRyYWNrZXIpOworCiAgICAgaWYgKGRyYXdGcmFtZSkKICAgICAgICAgb2NjbHVzaW9u
VHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5yZWNvcmRNZXRyaWNzKHRoaXMpOwogICAgIHJldHVy
biBkcmF3RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggZDU4
ZGI1ZjJkNDFlOWU4NTRjYmI2ZGZmNDU2ZmExMzIyYTMxMmIzYy4uZGM2YTE0ODMzYzBkNTU5OWVk
OTg1YWI4M2MyZjJiMDg0ZjRlZTdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBDQ0xheWVyVHJlZUhvc3RJbXBsX2gKICNk
ZWZpbmUgQ0NMYXllclRyZWVIb3N0SW1wbF9oCiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1
ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgImNjL0NDQW5pbWF0aW9uRXZl
bnRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKQEAgLTEzOCw2ICsxMzksOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNp
emUmIHRyYWdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBk
dXJhdGlvblNlYyk7CiAKKyAgICBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQorCiAg
ICAgYm9vbCBuZWVkc0FuaW1hdGVMYXllcnMoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQW5pbWF0
ZUxheWVyczsgfQogICAgIHZvaWQgc2V0TmVlZHNBbmltYXRlTGF5ZXJzKCkgeyBtX25lZWRzQW5p
bWF0ZUxheWVycyA9IHRydWU7IH0KIApAQCAtMTg1LDYgKzE4OSw4IEBAIHByaXZhdGU6CiAgICAg
ZmxvYXQgbV9zZW50UGFnZVNjYWxlRGVsdGE7CiAgICAgZmxvYXQgbV9taW5QYWdlU2NhbGUsIG1f
bWF4UGFnZVNjYWxlOwogCisgICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7CisKICAgICAvLyBJ
ZiB0aGlzIGlzIHRydWUsIGl0IGlzIG5lY2Vzc2FyeSB0byB0cmF2ZXJzZSB0aGUgbGF5ZXIgdHJl
ZSB0aWNraW5nIHRoZSBhbmltYXRvcnMuCiAgICAgYm9vbCBtX25lZWRzQW5pbWF0ZUxheWVyczsK
ICAgICBib29sIG1fcGluY2hHZXN0dXJlQWN0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9u
VHJhY2tlci5jcHAKaW5kZXggZTA0YWRmYTMxMzZhNGYwOWVlYTI4ZDhiMjA1MWEzZmI0NmM2Nzcz
ZS4uOTFkYmYyNTM0ZDM3ZDJmNTI1YzFkOTRjYWMwMDA2ZTczYmQ2MWQ4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25U
cmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjptYXJrT2Nj
bHVkZWRCZWhpbmRMYXkKICAgICBpZiAobV9zdGFjay5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghbGF5ZXJPcGFjaXR5S25vd24obGF5ZXIpIHx8IGxheWVyLT5kcmF3T3Bh
Y2l0eSgpIDwgMSkKKyAgICBpZiAoIWxheWVyT3BhY2l0eUtub3duKGxheWVyKSB8fCBsYXllci0+
ZHJhd09wYWNpdHkoKSA8IDEgfHwgbGF5ZXItPnNraXBzRHJhdygpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIG1fdXNlUGFpbnRUcmFja2luZyB3aGVuIHBhaW50IHRy
YWNraW5nIGlzIG9uIGZvciBwYWludCBjdWxsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRy
YWNrZXIuaAppbmRleCA2YjJiNmUxNjY4YjU3OTU5YzEzODIwNDU3MjMzMmY5Y2Y3YTkzNDRmLi5i
NjIxOTczYjUzMTkyZGI3YWVlYTkwMTI5N2NkZTQ1ZGYwOTcwMTEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNr
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q09jY2x1c2lvblRyYWNrZXIuaApAQCAtNzMsNiArNzMsOSBAQCBwdWJsaWM6CiAgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMgb24gZm9yIHBhaW50IGN1bGxp
bmcuCiAgICAgdm9pZCBzZXRVc2VQYWludFRyYWNraW5nKGJvb2wgdXNlKSB7IG1fdXNlUGFpbnRU
cmFja2luZyA9IHVzZTsgfQogCisgICAgLy8gR2l2ZXMgdGhlIHJlZ2lvbiBvZiB0aGUgc2NyZWVu
IHRoYXQgaXMgbm90IG9jY2x1ZGVkIGJ5IHNvbWV0aGluZyBvcGFxdWUuCisgICAgUmVnaW9uIGNv
bXB1dGVWaXNpYmxlUmVnaW9uSW5TY3JlZW4oKSBjb25zdCB7IHJldHVybiBzdWJ0cmFjdChSZWdp
b24obV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UpLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25J
blNjcmVlbik7IH0KKwogcHJvdGVjdGVkOgogICAgIHN0cnVjdCBTdGFja09iamVjdCB7CiAgICAg
ICAgIFN0YWNrT2JqZWN0KCkgOiBzdXJmYWNlKDApIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5j
cHAKaW5kZXggMTcwNGE2MTZkNWIzMTM0YzlhYzlhODQ2MWRhOGE0ZGIyZmYxMGViNy4uOWVlZTcz
MDMzNjdmNGRmZGFkYmVmZjFjMzdlNGIxODBkOTc3M2Y3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuY3BwCkBAIC0yNywxMiArMjcsMTQgQEAKIAogI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFzcy5o
IgogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJjYy9DQ0RhbWFnZVRyYWNrZXIuaCIK
ICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgogI2luY2x1ZGUgImNjL0ND
UmVuZGVyU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUu
aCIKKyNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTg4LDQgKzkwLDIzIEBAIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFk
c0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbV9zaGFyZWRR
dWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKIH0KIAordm9p
ZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKENDTGF5ZXJJbXBsKiByb290
TGF5ZXIsIGNvbnN0IENvbG9yJiBzY3JlZW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IENDT2NjbHVz
aW9uVHJhY2tlckltcGwmIG9jY2x1c2lvblRyYWNrZXIpCit7CisgICAgaWYgKCFyb290TGF5ZXIg
fHwgIXNjcmVlbkJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFJlZ2lvbiBmaWxsUmVnaW9uID0gb2NjbHVzaW9uVHJhY2tlci5jb21wdXRlVmlzaWJsZVJl
Z2lvbkluU2NyZWVuKCk7CisgICAgaWYgKGZpbGxSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9
IHJvb3RMYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggdHJhbnNmb3JtVG9MYXllclNwYWNlID0gcm9vdExheWVyLT5zY3JlZW5TcGFjZVRyYW5z
Zm9ybSgpLmludmVyc2UoKTsKKyAgICBWZWN0b3I8SW50UmVjdD4gZmlsbFJlY3RzID0gZmlsbFJl
Z2lvbi5yZWN0cygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsbFJlY3RzLnNpemUo
KTsgKytpKSB7CisgICAgICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gdHJhbnNmb3JtVG9MYXllclNw
YWNlLm1hcFJlY3QoZmlsbFJlY3RzW2ldKTsKKyAgICAgICAgbV9xdWFkTGlzdC5hcHBlbmQoQ0NT
b2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGxheWVyUmVj
dCwgc2NyZWVuQmFja2dyb3VuZENvbG9yKSk7CisgICAgfQorICAgIG1fc2hhcmVkUXVhZFN0YXRl
TGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmgKaW5kZXggNTk5MDFjOGM1OGNmMzc2YTBjMWYwY2MwOWM1NzhlZTA0ZDMxNjJl
My4uMTI1MjZiMTEwMDQyMGU0NjAxZWYzZjI3OTI1NmZmYjQ4ODA5MjAwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Q0NMYXllckltcGw7CiBjbGFzcyBDQ1JlbmRlclN1cmZhY2U7CiBjbGFzcyBDQ1NoYXJlZFF1YWRT
dGF0ZTsKK2NsYXNzIENvbG9yOwogCiAvLyBBIGxpc3Qgb2YgQ0NEcmF3UXVhZCBvYmplY3RzLCBz
b3J0ZWQgaW50ZXJuYWxseSBpbiBmcm9udC10by1iYWNrIG9yZGVyLgogY2xhc3MgQ0NRdWFkTGlz
dCA6IHB1YmxpYyBWZWN0b3I8T3duUHRyPENDRHJhd1F1YWQ+ID4gewpAQCAtNTYsNiArNTcsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqLCBD
Q09jY2x1c2lvblRyYWNrZXJJbXBsKiwgYm9vbCYgdXNlZENoZWNrZXJib2FyZCk7CiAgICAgdm9p
ZCBhcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCopOworICAgIHZv
aWQgYXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4oQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3Qg
Q29sb3ImIHNjcmVlbkJhY2tncm91bmRDb2xvciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1w
bCYpOwogCiAgICAgY29uc3QgQ0NRdWFkTGlzdCYgcXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBt
X3F1YWRMaXN0OyB9CiAgICAgQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlKCkgY29uc3Qg
eyByZXR1cm4gbV90YXJnZXRTdXJmYWNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
Y3BwCmluZGV4IDEwNTExNjViMTdmMzNlYjM1NGZmMTZmNGQzMDUxNGJlYTVmOWM5NTcuLjk1ZDJm
OWU0Y2ExZjBhNDAyZjRhZDc2NmExODZjYTc2Yjg2NDJiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuY3BwCkBAIC0xNDIsOCArMTQyLDYgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGEKICAgICBpZiAobV9za2lwc0RyYXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGFwcGVuZEd1
dHRlclF1YWRzKHF1YWRMaXN0LCBzaGFyZWRRdWFkU3RhdGUpOwotCiAgICAgaWYgKCFtX3RpbGVy
IHx8IG1fdGlsZXItPmhhc0VtcHR5Qm91bmRzKCkgfHwgbGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yMjYsOSArMjI0LDYgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBs
OjpwdXNoVGlsZVByb3BlcnRpZXMoaW50IGksIGludCBqLCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmUKIAogUmVnaW9uIENDVGlsZWRMYXllckltcGw6OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9u
KCkgY29uc3QKIHsKLSAgICBpZiAobV9za2lwc0RyYXcpCi0gICAgICAgIHJldHVybiBSZWdpb24o
KTsKLQogICAgIHJldHVybiBtX3RpbGVyLT5vcGFxdWVSZWdpb25JbkxheWVyUmVjdCh2aXNpYmxl
TGF5ZXJSZWN0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggMzc5
MGZhZTVhNjY4NThiMjhjMGU2NGU0Mjc2YzQwNWQxYzI2NzMwNi4uNjg0MmY1MTI3YjFiZTU2NWE5
NmQxMTExNGE5YjRmZmMxZDRkZThmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApA
QCAtNDksNyArNDksOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJv
cGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIGJv
b2wgc2tpcHNEcmF3KCkgY29uc3QgeyByZXR1cm4gbV9za2lwc0RyYXc7IH0KICAgICB2b2lkIHNl
dFNraXBzRHJhdyhib29sIHNraXBzRHJhdykgeyBtX3NraXBzRHJhdyA9IHNraXBzRHJhdzsgfQor
CiAgICAgdm9pZCBzZXRUaWxpbmdEYXRhKGNvbnN0IENDTGF5ZXJUaWxpbmdEYXRhJiB0aWxlcik7
CiAgICAgdm9pZCBwdXNoVGlsZVByb3BlcnRpZXMoaW50LCBpbnQsIFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKaW5k
ZXggYjZiMWEyMjk0ZDE0OTZiMzgxZGRjMThiMjRkYWUxNTM2ZjY4MDhjOC4uZWMwYjJlNGYwYWQw
MWJkZmQxNzA3Zjg2ZjhmOWQ1MjQ4MTU1ZDA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCkBAIC00Niw5ICs0
Niw2IEBAIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
KFBhc3NPd25QdHI8V2ViQ29yZTo6TGF5ZXJQYWluCiAjZW5kaWYKICAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3Jt
TGF5ZXIoKS0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVudCh0cnVlKTsKLSNpZiAhRU5BQkxFKFJV
QkJFUl9CQU5ESU5HKQotICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRC
YWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQodHJ1ZSk7Ci0jZW5kaWYKICAgICBtX2dyYXBoaWNzTGF5
ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0T3BhcXVlKHRydWUpOwogfQogCkBAIC01OCwxMCArNTUs
NyBAQCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6On5Ob25Db21wb3NpdGVkQ29udGVudEhvc3Qo
KQogCiB2b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0QmFja2dyb3VuZENvbG9yKGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKIHsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQot
ICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0QmFja2dyb3VuZENv
bG9yKGNvbG9yKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1M
YXllcigpLT5zZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKKyAgICBt
X2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9y
KTsKIH0KIAogdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFNjcm9sbExheWVyKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAppbmRleCA1MzI0NmIxY2E4N2ZiM2IxZDE5OWNiY2Nk
YmY3MmIzM2RmNzExZWZkLi5kNjQyNThkMmI0YTY0ZjY4ZTgyNGFjN2Y3YTI0ZGY5YTY4Y2RiNDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNw
cApAQCAtOTcsNiArOTcsMTEgQEAgV2ViU2l6ZSBXZWJMYXllclRyZWVWaWV3Ojp2aWV3cG9ydFNp
emUoKSBjb25zdAogICAgIHJldHVybiBXZWJTaXplKG1fcHJpdmF0ZS0+dmlld3BvcnRTaXplKCkp
OwogfQogCit2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBX
ZWJDb3JlOjpDb2xvciYgY29sb3IpCit7CisgICAgbV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kQ29s
b3IoY29sb3IpOworfQorCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFZpc2libGUoYm9vbCB2
aXNpYmxlKQogewogICAgIG1fcHJpdmF0ZS0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAwMzBkOGUxZDFiNTQzMjRm
MGFjMWNjOWY4NDI4YmJhZjBiNmE2Mjg4Li42NTBkMDE3MmM1MTc1Mjc5ZjY3NmZjNWM2NjA2NGRi
NTcwMjhlMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1
ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJD
b2xvci5oIgogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJDb21wb3NpdGlvblVu
ZGVybGluZVZlY3RvckJ1aWxkZXIuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgpAQCAtMzI0
NCw2ICszMjQ1LDEzIEBAIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCogV2ViVmlld0ltcGw6Om5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpCiAgICAgcmV0dXJuIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LmdldCgpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3Io
Y29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQoreworICAgIFdlYkNvcmU6OkNvbG9yIGRvY3Vt
ZW50QmFja2dyb3VuZENvbG9yID0gY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBXZWJDb3JlOjpD
b2xvcjo6d2hpdGU7CisgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldEJhY2tncm91
bmRDb2xvcihkb2N1bWVudEJhY2tncm91bmRDb2xvcik7CisgICAgbV9sYXllclRyZWVWaWV3LnNl
dEJhY2tncm91bmRDb2xvcihkb2N1bWVudEJhY2tncm91bmRDb2xvcik7Cit9CisKICNpZiBFTkFC
TEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiB2b2lkIFdlYlZpZXdJbXBsOjpzY2hlZHVsZUFu
aW1hdGlvbigpCiB7CkBAIC0zMjc5LDggKzMyODcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYktp
dDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQu
QWNjZWxSb290UGFpbnREdXJhdGlvbk1TIiwgKHBhaW50RW5kIC0gcGFpbnRTdGFydCkgKiAxMDAw
LCAwLCAxMjAsIDMwKTsKICAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5oaXN0
b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5BY2NlbFJvb3RQYWludE1lZ2FwaXhQZXJTZWNv
bmQiLCBwaXhlbHNQZXJTZWMgLyAxMDAwMDAwLCAxMCwgMjEwLCAzMCk7CiAKLSAgICAgICAgbV93
ZWJWaWV3SW1wbC0+bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KCktPnNldEJhY2tncm91bmRDb2xv
cih2aWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpKTsKLQorICAgICAgICBtX3dlYlZpZXdJ
bXBsLT5zZXRCYWNrZ3JvdW5kQ29sb3Iodmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSk7
CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMzMyNyw5ICszMzM0LDYgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAg
ICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCA9IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6
Y3JlYXRlKFdlYlZpZXdJbXBsQ29udGVudFBhaW50ZXI6OmNyZWF0ZSh0aGlzKSk7CiAgICAgICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRTaG93RGVidWdCb3JkZXJzKHBhZ2UoKS0+
c2V0dGluZ3MoKS0+c2hvd0RlYnVnQm9yZGVycygpKTsKIAotICAgICAgICBpZiAocGFnZSgpICYm
IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKSkKLSAgICAgICAgICAgIG1fbm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0LT5zZXRCYWNrZ3JvdW5kQ29sb3IocGFnZSgpLT5tYWluRnJhbWUoKS0+dmll
dygpLT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpKTsKLQogICAgICAgICBtX2xheWVyVHJlZVZp
ZXcuaW5pdGlhbGl6ZSh0aGlzLCBtX3Jvb3RMYXllciwgbGF5ZXJUcmVlVmlld1NldHRpbmdzKTsK
ICAgICAgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIG1f
bGF5ZXJUcmVlVmlldy5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9y
KCksIG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDgwMGU1MTFkYzQ1
MWJmNTFjNzE1NzJiYzliOTEyMjI4MDBkMjY0NGQuLjJmZDgzZmI3ZWQ5YmJmMTUwNGQzMTk3ZjA4
MmVjM2E3Njg5MDVmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aApAQCAtNjAsNiArNjAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uOwogY2xhc3MgQ2hyb21pdW1EYXRhT2JqZWN0OworY2xhc3Mg
Q29sb3I7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0M0Q7CkBAIC00NjgsNiArNDY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xs
Um9vdExheWVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpOwogICAgIHZvaWQgaW52YWxpZGF0ZVJvb3RMYXll
clJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIE5vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdCogbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KCk7CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5k
Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKICNlbmRpZgogI2lmIEVOQUJMRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkKICAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggOGE5
ZjM1ZGM4YTdiODljMGM5NGJkNzUzN2M2ODQ2NGZhNzhhNmJiOC4uYmI2NWNjNTgwYWMxNThiZjA1
Y2IzYzk3ZDIxN2YyOTg0YzhlYWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcApAQCAtMTEyLDcgKzExMiw2IEBAIFRFU1QoQ0NMYXll
ckltcGxUZXN0LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAgRVhF
Q1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXREZWJ1Z0JvcmRlcldp
ZHRoKGFyYml0cmFyeU51bWJlcikpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVS
X0NIQU5HRUQocm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9W
RVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6
Z3JheSkpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+
c2V0QmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KHRydWUpKTsKIAogICAgIC8vIFNwZWNpYWwgY2Fz
ZTogY2hlY2sgdGhhdCBzdWJsYXllciB0cmFuc2Zvcm0gY2hhbmdlcyBhbGwgbGF5ZXIncyBkZXNj
ZW5kYW50cywgYnV0IG5vdCB0aGUgbGF5ZXIgaXRzZWxmLgogICAgIHJvb3QtPnJlc2V0QWxsQ2hh
bmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDcwMDljOGMzZTkz
Y2E2Y2MwMmQ0NTUyNTdlZjEzMDljZWRmZjY1YmUuLmM5ZjM4YTAxZmRlMWU3OTUyMmE4Nzg1Zjlj
MGRlOTIwN2Q5OTI3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCiAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21t
b24uaCIKKyNpbmNsdWRlICJDQ0xheWVyVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VXZWJH
cmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgpAQCAtMzcsNiArMzgsNyBAQAog
I2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
IAordXNpbmcgbmFtZXNwYWNlIENDTGF5ZXJUZXN0Q29tbW9uOwogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRl
c3RzOwpAQCAtNTk4LDYgKzYwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgdGVzdEJsZW5kaW5nRHJh
d1F1YWQtPnNldFF1YWRWaXNpYmxlUmVjdChtX3F1YWRWaXNpYmxlUmVjdCk7CiAgICAgICAgIEVY
UEVDVF9FUShtX2JsZW5kLCB0ZXN0QmxlbmRpbmdEcmF3UXVhZC0+bmVlZHNCbGVuZGluZygpKTsK
ICAgICAgICAgRVhQRUNUX0VRKG1faGFzUmVuZGVyU3VyZmFjZSwgISFyZW5kZXJTdXJmYWNlKCkp
OworICAgICAgICBxdWFkTGlzdC5hcHBlbmQodGVzdEJsZW5kaW5nRHJhd1F1YWQucmVsZWFzZSgp
KTsKICAgICB9CiAKICAgICB2b2lkIHNldEV4cGVjdGF0aW9uKGJvb2wgYmxlbmQsIGJvb2wgaGFz
UmVuZGVyU3VyZmFjZSkKQEAgLTg0MSw2ICs4NDQsODggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCBibGVuZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogCiB9CiAKK1RF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdmlld3BvcnRDb3ZlcmVkKQoreworICAgIG1f
aG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CisgICAg
bV9ob3N0SW1wbC0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpncmF5KTsKKworICAgIEludFNp
emUgdmlld3BvcnRTaXplKDEwMCwgMTAwKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNp
emUodmlld3BvcnRTaXplKTsKKworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihCbGVuZFN0
YXRlQ2hlY2tMYXllcjo6Y3JlYXRlKDApKTsKKyAgICBCbGVuZFN0YXRlQ2hlY2tMYXllciogcm9v
dCA9IHN0YXRpY19jYXN0PEJsZW5kU3RhdGVDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExh
eWVyKCkpOworICAgIHJvb3QtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCB0cnVlKTsKKyAgICByb290
LT5zZXRPcGFxdWUodHJ1ZSk7CisKKyAgICAvLyBObyBndXR0ZXIgcmVjdHMKKyAgICB7CisgICAg
ICAgIEludFJlY3QgbGF5ZXJSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICAgICAgcm9vdC0+c2V0
UG9zaXRpb24obGF5ZXJSZWN0LmxvY2F0aW9uKCkpOworICAgICAgICByb290LT5zZXRCb3VuZHMo
bGF5ZXJSZWN0LnNpemUoKSk7CisgICAgICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMobGF5ZXJS
ZWN0LnNpemUoKSk7CisgICAgICAgIHJvb3QtPnNldFF1YWRSZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgbGF5ZXJSZWN0LnNpemUoKSkpOworICAgICAgICByb290LT5zZXRRdWFkVmlzaWJsZVJlY3Qo
SW50UmVjdChJbnRQb2ludCgpLCBsYXllclJlY3Quc2l6ZSgpKSk7CisKKyAgICAgICAgQ0NMYXll
clRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShtX2hv
c3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgICAgIEFTU0VSVF9FUSgxdSwgZnJh
bWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgc2l6ZV90IG51bUd1dHRlclF1YWRz
ID0gMDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5yZW5kZXJQYXNzZXNb
MF0tPnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBudW1HdXR0ZXJRdWFkcyAr
PSAoZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpID09IEND
RHJhd1F1YWQ6OlNvbGlkQ29sb3IpID8gMSA6IDA7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgbnVt
R3V0dGVyUXVhZHMpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIGZyYW1lLnJlbmRlclBhc3Nlc1sw
XS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVy
UmVjdChmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCksIEludFJlY3QoLWxheWVyUmVj
dC5sb2NhdGlvbigpLCB2aWV3cG9ydFNpemUpKTsKKyAgICB9CisKKyAgICAvLyBFbXB0eSB2aXNp
YmxlIGNvbnRlbnQgYXJlYSAoZnVsbHNjcmVlbiBndXR0ZXIgcmVjdCkKKyAgICB7CisgICAgICAg
IEludFJlY3QgbGF5ZXJSZWN0KDAsIDAsIDAsIDApOworICAgICAgICByb290LT5zZXRQb3NpdGlv
bihsYXllclJlY3QubG9jYXRpb24oKSk7CisgICAgICAgIHJvb3QtPnNldEJvdW5kcyhsYXllclJl
Y3Quc2l6ZSgpKTsKKyAgICAgICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhsYXllclJlY3Quc2l6
ZSgpKTsKKyAgICAgICAgcm9vdC0+c2V0UXVhZFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXll
clJlY3Quc2l6ZSgpKSk7CisgICAgICAgIHJvb3QtPnNldFF1YWRWaXNpYmxlUmVjdChJbnRSZWN0
KEludFBvaW50KCksIGxheWVyUmVjdC5zaXplKCkpKTsKKworICAgICAgICBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwt
PnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICAgICAgQVNTRVJUX0VRKDF1LCBmcmFtZS5yZW5k
ZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBzaXplX3QgbnVtR3V0dGVyUXVhZHMgPSAwOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVh
ZExpc3QoKS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG51bUd1dHRlclF1YWRzICs9IChmcmFt
ZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCkgPT0gQ0NEcmF3UXVh
ZDo6U29saWRDb2xvcikgPyAxIDogMDsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBudW1HdXR0ZXJR
dWFkcyk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFk
TGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KGZy
YW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKSwgSW50UmVjdCgtbGF5ZXJSZWN0LmxvY2F0
aW9uKCksIHZpZXdwb3J0U2l6ZSkpOworICAgIH0KKworICAgIC8vIENvbnRlbnQgYXJlYSBpbiBt
aWRkbGUgb2YgY2xpcCByZWN0IChmb3VyIHN1cnJvdW5kaW5nIGd1dHRlciByZWN0cykKKyAgICB7
CisgICAgICAgIEludFJlY3QgbGF5ZXJSZWN0KDUwLCA1MCwgMjAsIDIwKTsKKyAgICAgICAgcm9v
dC0+c2V0UG9zaXRpb24obGF5ZXJSZWN0LmxvY2F0aW9uKCkpOworICAgICAgICByb290LT5zZXRC
b3VuZHMobGF5ZXJSZWN0LnNpemUoKSk7CisgICAgICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMo
bGF5ZXJSZWN0LnNpemUoKSk7CisgICAgICAgIHJvb3QtPnNldFF1YWRSZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgbGF5ZXJSZWN0LnNpemUoKSkpOworICAgICAgICByb290LT5zZXRRdWFkVmlzaWJs
ZVJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllclJlY3Quc2l6ZSgpKSk7CisKKyAgICAgICAg
Q0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJV
RShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgICAgIEFTU0VSVF9FUSgx
dSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgc2l6ZV90IG51bUd1dHRl
clF1YWRzID0gMDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5yZW5kZXJQ
YXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBudW1HdXR0ZXJR
dWFkcyArPSAoZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgp
ID09IENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IpID8gMSA6IDA7CisgICAgICAgIEVYUEVDVF9FUSg0
dSwgbnVtR3V0dGVyUXVhZHMpOworICAgICAgICBFWFBFQ1RfRVEoNXUsIGZyYW1lLnJlbmRlclBh
c3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIHZlcmlmeVF1YWRzRXhhY3Rs
eUNvdmVyUmVjdChmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCksIEludFJlY3QoLWxh
eWVyUmVjdC5sb2NhdGlvbigpLCB2aWV3cG9ydFNpemUpKTsKKyAgICB9CisKK30KKworCiBjbGFz
cyBSZXNoYXBlVHJhY2tlckNvbnRleHQ6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Qg
ewogcHVibGljOgogICAgIFJlc2hhcGVUcmFja2VyQ29udGV4dCgpIDogbV9yZXNoYXBlQ2FsbGVk
KGZhbHNlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGUyMjVkMjZkYjJiOTI5NThlZWJjZTMyZmQ5NWMxZDY1
NzJkMjUzYWYuLjNlN2FkYjI3NzA4MTUwNzU1ODMxM2YyNmVmNDQ4OWJlOTFiMzQ5NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcApAQCAtMTI2Myw2ICsxMjYzLDM4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2Ny
b2xsTXVsdGlwbGVSZWRyYXcsIERJU0FCTEVEX3J1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3RU
aHJlYWRlZCgpOwogfQogCisvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBwcm9wZXJ0aWVzIG9u
IHRoZSBsYXllciB0cmVlIGhvc3QgYXJlIGNvbW1pdGVkIHRvIHRoZSBpbXBsIHNpZGUuCitjbGFz
cyBDQ0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3Qg
eworcHVibGljOgorCisgICAgQ0NMYXllclRyZWVIb3N0VGVzdENvbW1pdCgpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDIwLCAyMCkpOworICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSk7CisgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKDUsIDUsIDUpOworCisgICAgICAgIHBv
c3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAg
ICB7CisgICAgICAgIEVYUEVDVF9FUShJbnRTaXplKDIwLCAyMCksIGltcGwtPnZpZXdwb3J0U2l6
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKENvbG9yOjpncmF5LCBpbXBsLT5iYWNrZ3JvdW5kQ29s
b3IoKSk7CisgICAgICAgIEVYUEVDVF9FUSg1LCBpbXBsLT5wYWdlU2NhbGUoKSk7CisKKyAgICAg
ICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKSB7IH0K
K307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0LCBydW5UZXN0KQoreworICAg
IHJ1blRlc3QodHJ1ZSk7Cit9CisKIC8vIFZlcmlmaWVzIHRoYXQgc3RhcnRQYWdlU2NhbGVBbmlt
YXRpb24gZXZlbnRzIHByb3BhZ2F0ZSBjb3JyZWN0bHkgZnJvbSBDQ0xheWVyVHJlZUhvc3QgdG8K
IC8vIENDTGF5ZXJUcmVlSG9zdEltcGwgaW4gdGhlIE1UIGNvbXBvc2l0b3IuCiBjbGFzcyBDQ0xh
eWVyVHJlZUhvc3RUZXN0U3RhcnRQYWdlU2NhbGVBbmltYXRpb24gOiBwdWJsaWMgQ0NMYXllclRy
ZWVIb3N0VGVzdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
VGlsZWRMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
aWxlZExheWVySW1wbFRlc3QuY3BwCmluZGV4IDU3Y2FhN2RjMTcxNGExZjllNTJlNTIxYzU4ZDQw
MzkyNTM1MzdiYjkuLjYwY2JmOWZlZjJlN2U3NzllYWQxMDdiOTE3OTAzNWUzZmJkNGQ0ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1w
bFRlc3QuY3BwCkBAIC0yNjIsNzYgKzI2Miw0IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3Qs
IHRpbGVPcGFxdWVSZWN0Rm9yTGF5ZXJOb0JvcmRlcnMpCiAgICAgfQogfQogCi1URVNUKENDVGls
ZWRMYXllckltcGxUZXN0LCBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpCi17Ci0gICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7Ci0KLSAgICBjb25zdCBJbnRTaXpl
IHRpbGVTaXplKDEwLCAxMCk7Ci0gICAgY29uc3QgaW50IG51bVRpbGVzWCA9IDI7Ci0gICAgY29u
c3QgaW50IG51bVRpbGVzWSA9IDI7Ci0gICAgY29uc3QgdW5zaWduZWQgbnVtVGlsZXMgPSBudW1U
aWxlc1ggKiBudW1UaWxlc1k7Ci0gICAgY29uc3QgSW50U2l6ZSBsYXllclNpemUodGlsZVNpemUu
d2lkdGgoKSAqIG51bVRpbGVzWCwgdGlsZVNpemUuaGVpZ2h0KCkgKiBudW1UaWxlc1kpOwotICAg
IE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBs
YXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7Ci0gICAgbGF5ZXIt
PnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSk7Ci0gICAgbGF5ZXItPnNldEJhY2tncm91
bmRDb3ZlcnNWaWV3cG9ydCh0cnVlKTsKLQotICAgIC8vIE5vIGd1dHRlciByZWN0cwotICAgIHsK
LSAgICAgICAgSW50UmVjdCBjbGlwUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXpl
KTsKLSAgICAgICAgbGF5ZXItPnNldENsaXBSZWN0KGNsaXBSZWN0KTsKLSAgICAgICAgbGF5ZXIt
PnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKLQot
ICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVy
LT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLQotICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1
YWRDdWxsZXI7Ci0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOwotICAgICAg
ICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1
c2VkQ2hlY2tlcmJvYXJkKTsKLSAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3Qo
KS5zaXplKCksIG51bVRpbGVzKTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1
YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIEVYUEVDVF9FUShx
dWFkQ3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlRpbGVkQ29u
dGVudCk7Ci0gICAgfQotCi0gICAgLy8gRW1wdHkgdmlzaWJsZSBjb250ZW50IGFyZWEgKGZ1bGxz
Y3JlZW4gZ3V0dGVyIHJlY3QpCi0gICAgewotICAgICAgICBJbnRSZWN0IGNsaXBSZWN0ID0gSW50
UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApOwotICAgICAgICBsYXllci0+c2V0Q2xpcFJlY3QoY2xp
cFJlY3QpOwotICAgICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KCkpOwot
Ci0gICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5
ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1
YWRDdWxsZXI7Ci0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOwotICAgICAg
ICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1
c2VkQ2hlY2tlcmJvYXJkKTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRD
dWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIEVYUEVDVF9FUShxdWFk
Q3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlNvbGlkQ29sb3Ip
OwotCi0gICAgICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFkQ3VsbGVyLnF1YWRM
aXN0KCksIGNsaXBSZWN0KTsKLSAgICB9Ci0KLSAgICAvLyBDb250ZW50IGFyZWEgaW4gbWlkZGxl
IG9mIGNsaXAgcmVjdCAoZm91ciBzdXJyb3VuZGluZyBndXR0ZXIgcmVjdHMpCi0gICAgewotICAg
ICAgICBJbnRSZWN0IGNsaXBSZWN0ID0gSW50UmVjdCgtNTAsIC01MCwgMTAwLCAxMDApOwotICAg
ICAgICBsYXllci0+c2V0Q2xpcFJlY3QoY2xpcFJlY3QpOwotICAgICAgICBsYXllci0+c2V0Vmlz
aWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwotCi0gICAgICAg
IE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0
ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7
Ci0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOwotICAgICAgICBsYXllci0+
YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1c2VkQ2hlY2tl
cmJvYXJkKTsKLQotICAgICAgICB1bnNpZ25lZCBudW1Db250ZW50VGlsZXMgPSAwLCBudW1HdXR0
ZXJUaWxlcyA9IDA7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZEN1bGxlci5x
dWFkTGlzdCgpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAocXVhZEN1bGxlci5xdWFk
TGlzdCgpW2ldLT5tYXRlcmlhbCgpID09IENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCkKLSAgICAg
ICAgICAgICAgICBudW1Db250ZW50VGlsZXMrKzsKLSAgICAgICAgICAgIGVsc2UgaWYgKHF1YWRD
dWxsZXIucXVhZExpc3QoKVtpXS0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpTb2xpZENvbG9y
KQotICAgICAgICAgICAgICAgIG51bUd1dHRlclRpbGVzKys7Ci0gICAgICAgIH0KLSAgICAgICAg
RVhQRUNUX0VRKG51bUNvbnRlbnRUaWxlcywgbnVtVGlsZXMpOwotICAgICAgICBFWFBFQ1RfR0Uo
bnVtR3V0dGVyVGlsZXMsIDR1KTsKLQotICAgICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJl
Y3QocXVhZEN1bGxlci5xdWFkTGlzdCgpLCBjbGlwUmVjdCk7Ci0gICAgfQotfQotCiB9IC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNo
cm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21p
dW1UZXN0LmNwcAppbmRleCBlN2RlMzU2ZGQwZGEzOGEzMWI4OTZiMmQ3YTljNDhhOWIxYTM2YzIz
Li5mM2Y5OGNmYTcwNDgzN2Y0MmFhMjdkMmI4Yzk0YjE4Y2ZiNGM0Y2M3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTA2
LDcgKzUwNiw2IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tQcm9wZXJ0eUNoYW5n
ZUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURT
X0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQo
MS4yM2YsIDQuNTZmKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlU
X0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0QW5jaG9yUG9pbnRaKDAuN2YpKTsKICAgICBFWEVD
VVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNl
dEJhY2tncm91bmRDb2xvcihDb2xvcigwLjRmLCAwLjRmLCAwLjRmKSkpOwotICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0QmFj
a2dyb3VuZENvdmVyc1ZpZXdwb3J0KHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VU
X05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHModHJ1
ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEs
IHRlc3RMYXllci0+c2V0TWFza0xheWVyKGR1bW15TGF5ZXIuZ2V0KCkpKTsKICAgICBFWEVDVVRF
X0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldE9w
YWNpdHkoMC41ZikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136097</attachid>
            <date>2012-04-06 16:48:29 -0700</date>
            <delta_ts>2012-04-09 10:29:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83351-20120406194828.patch</filename>
            <type>text/plain</type>
            <size>54592</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhMThmMDA3YTE4MjNi
MTY4NzQyYjA1YmMxMmZkMTQ3MWQyMTgxYmJkLi40YTBlMDQ3N2YyZDAwNzBhNDc4MzZlYmQ4MDMz
ZmI5YzhlY2IxYjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNC0wNiAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFZpZXdwb3J0IGlzIG5vdCBmaWxsZWQgd2hlbiBvdXQgb2YgdGV4dHVyZSBtZW1vcnkgb24gbWFj
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzM1MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaDoKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXcp
OgorCiAyMDEyLTA0LTA0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgZmlndXJlIG91dCBob3cgdG8gZXhwb3J0IHdlYmNvcmUgc3ltYm9scyBmcm9tIHdlYmtpdC5k
bGwgcHJvcGVybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMGNjY2FiMmI2ZmU3ZjU5ZDljMTU1OGRhODI4ZTUz
YjJiODA4OGM5Li41N2IwYjY5ZGRhYjM3MDA4MzYxZjc3MTVjYTFiYjE4ODZlM2Y3YWY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsNzkgQEAKIDIwMTItMDQtMDYgIERhbmEgSmFuc2VucyAgPGRhbmFr
akBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBWaWV3cG9ydCBpcyBub3QgZmls
bGVkIHdoZW4gb3V0IG9mIHRleHR1cmUgbWVtb3J5IG9uIG1hYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMzNTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgd2UgYWRkIGd1dHRlciBxdWFk
cyBvbiB0aGUgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0IGxheWVyLAorICAgICAgICB3aGljaCBs
aWVzIGFib3ZlIGFub3RoZXIgdmlzaWJsZSBsYXllciAtIHRoZSBydWJiZXJiYW5kIGxheWVyIG9u
IG1hYy4KKyAgICAgICAgRm9yIHRoaXMgcmVhc29uLCBvbiBtYWMsIGd1dHRlciBxdWFkcyB3ZXJl
IGRpc2FibGVkLCBhcyB3ZWxsIGFzIGZvcmNpbmcKKyAgICAgICAgdGhlIE5DQ0ggbGF5ZXIgdG8g
ZHJhdywgaW4gb3JkZXIgdG8gbWFrZSB0aGUgcnViYmVyYmFuZCBsYXllciBhcHBlYXIuCisKKyAg
ICAgICAgV2UgbW92ZSB0aGUgbG9naWMgZm9yIGFkZGluZyBndXR0ZXIgcXVhZHMgaW50byBDQ1Jl
bmRlclBhc3MsIGFuZCBhZGQKKyAgICAgICAgZ3V0dGVyIHF1YWRzIGZvciBhbGwgcGl4ZWxzIHRo
YXQgYXJlIHZpc2libGUgdGhyb3VnaCB0aGUgdmlld3BvcnQuCisgICAgICAgIFRoaXMgYWxsb3dz
IHVzIHRvIHN0b3Agc3BlY2lhbC1jYXNpbmcgdGhlIE5DQ0ggbGF5ZXIsIGFuZCBhbGxvd3MgdXMK
KyAgICAgICAgdG8gc2tpcCBkcmF3aW5nIHRoZSBsYXllciBlcXVhbGx5IHdpdGggb3RoZXIgbGF5
ZXJzLiBXZSByZW1vdmUgdGhlCisgICAgICAgIGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCgpIGZs
YWcgZW50aXJlbHkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gZG8gdGhpcywgd2UgZml4IGEgYnVn
IGluIHRoZSBvY2NsdXNpb24gdHJhY2tlciwgdGhhdAorICAgICAgICBhbGxvd2VkIG9wYXF1ZSgp
IGxheWVycyB3aXRoIHNraXBzRHJhdyB0byBvY2NsdWRlLCBieSBtYWtpbmcKKyAgICAgICAgdGhl
IHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgbWV0aG9kIG9uIHRoZSBsYXllciBjbGFzc2Vz
CisgICAgICAgIGFsc28gcmV0dXJuIHRoZSBvcGFxdWUgcmVnaW9uIGZvciBub24tdGlsZWQgbGF5
ZXJzLCBhbHdheXMgdXNlCisgICAgICAgIGl0cyB2YWx1ZSBpbiB0aGUgb2NjbHVzaW9uIHRyYWNr
ZXIuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC52aWV3cG9y
dENvdmVyZWQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6TGF5ZXJDaHJvbWl1
bSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnZpc2libGVDb250ZW50T3BhcXVlUmVn
aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKExheWVyQ2hyb21pdW0pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dmlzaWJsZUNvbnRlbnRP
cGFxdWVSZWdpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpDQ0xheWVySW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6dmlzaWJsZUNvbnRlbnRPcGFxdWVS
ZWdpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyk6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAg
ICAgKENDTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAg
ICAoQ0NMYXllclRyZWVIb3N0SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1
dGVPY2NsdXNpb25CZWhpbmRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjo6Om1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q09jY2x1c2lvblRyYWNrZXIuaDoKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlckJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyQmFzZTo6Y29tcHV0ZVZpc2libGVS
ZWdpb25JblNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6YXBwZW5k
UXVhZHNUb0ZpbGxTY3JlZW4pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKENDUmVuZGVyUGFzcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rp
bGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5
ZXJJbXBsOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaWxlZExheWVySW1wbDo6c2tpcHNEcmF3KToKKyAgICAgICAgKENDVGlsZWRMYXllcklt
cGwpOgorCisyMDEyLTA0LTA2ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgor
CiAgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBjdWxsaW5nIHdvcmsgd2l0aCBjbGlwcGVkIHJlY3Rz
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzIxNwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRmMjE4M2Q5OGJlNGM1OTZkOGY0OWI3MmI5
YTQyYjdjNGExNTZmMTMuLjExMDc2ZjE1N2NmZjcxNWJkMWExYzg0MmI4OWE5ZmZhNzU0ZmZjNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTMgQEAKIDIwMTItMDQtMDYg
IERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVt
XSBWaWV3cG9ydCBpcyBub3QgZmlsbGVkIHdoZW4gb3V0IG9mIHRleHR1cmUgbWVtb3J5IG9uIG1h
YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMzNTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9O
b25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3Np
dGVkQ29udGVudEhvc3Q6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAg
ICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXc6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViVmlld0lt
cGwpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6
CisgICAgICAgIChXZWJLaXRUZXN0czo6QmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmFwcGVuZFF1YWRz
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUX0YpOgorICAgICAgICAoV2ViS2l0VGVzdHMp
OgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RG
KToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXQpOgorICAgICAgICAoV1RGOjpD
Q0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0OjpDQ0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0KToKKyAg
ICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdENvbW1pdDo6YmVnaW5UZXN0KToKKyAgICAg
ICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdENvbW1pdDo6Y29tbWl0Q29tcGxldGVPbkNDVGhy
ZWFkKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdENvbW1pdDo6YWZ0ZXJUZXN0
KToKKyAgICAgICAgKFdURjo6VEVTVF9GKToKKyAgICAgICAgKFRlc3RMYXllckNocm9taXVtKToK
KyAgICAgICAgKiB0ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcDoKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpUZXN0Q29udGVudExheWVyQ2hyb21pdW06OlRlc3RDb250ZW50TGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VGVzdENvbnRlbnRMYXllckNocm9taXVtOjp2
aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbik6CisgICAgICAgIChXZWJLaXRUZXN0czo6VGVzdENv
bnRlbnRMYXllckNocm9taXVtOjpzZXRPcGFxdWVDb250ZW50c1JlY3QpOgorICAgICAgICAoVGVz
dENvbnRlbnRMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpUZXN0Q29udGVu
dExheWVySW1wbDo6VGVzdENvbnRlbnRMYXllckltcGwpOgorICAgICAgICAoVGVzdENvbnRlbnRM
YXllckltcGwpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRlc3RDb250ZW50TGF5ZXJJbXBsOjp2
aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbik6CisgICAgICAgIChXZWJLaXRUZXN0czo6VGVzdENv
bnRlbnRMYXllckltcGw6OnNldE9wYXF1ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgICogdGVzdHMv
Q0NUaWxlZExheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0xheWVyQ2hyb21pdW1U
ZXN0LmNwcDoKKworMjAxMi0wNC0wNiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9y
Zz4KKwogICAgICAgICBbY2hyb21pdW1dIE1ha2UgY3VsbGluZyB3b3JrIHdpdGggY2xpcHBlZCBy
ZWN0cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMy
MTcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXll
clRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJl
ZVZpZXcuaAppbmRleCAyYTE2Yzg2NzA1YzNiOTJjY2I0ZThlZDRjMGI5YTNkNjBmYTIxY2Y0Li42
ZTMwZDgwZDhiMmI2NTgzOWFjMDYxNGU5Mzk4YTNlNDY0ZWYxOGNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2lmbmRlZiBXZWJMYXllclRyZWVWaWV3X2gKICNkZWZpbmUgV2ViTGF5ZXJUcmVl
Vmlld19oCiAKKyNpbmNsdWRlICJXZWJDb2xvci5oIgogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgog
I2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKIApAQCAtMTA4LDYgKzEwOSw5IEBAIHB1YmxpYzoK
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYlNpemUmKTsK
ICAgICBXRUJLSVRfRVhQT1JUIFdlYlNpemUgdmlld3BvcnRTaXplKCkgY29uc3Q7CiAKKyAgICAv
LyBTZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgdmlld3BvcnQuCisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb2xvciYpOworCiAgICAg
Ly8gU2V0cyB3aGV0aGVyIHRoaXMgdmlldyBpcyB2aXNpYmxlLiBJbiB0aHJlYWRlZCBtb2RlLCBh
IHZpZXcgdGhhdCBpcyBub3QgdmlzaWJsZSB3aWxsIG5vdAogICAgIC8vIGNvbXBvc2l0ZSBvciB0
cmlnZ2VyIHVwZGF0ZUFuaW1hdGlvbnMoKSBvciBsYXlvdXQoKSBjYWxscyB1bnRpbCBpdCBiZWNv
bWVzIHZpc2libGUuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpc2libGUoYm9vbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDJhZDA5Yjk0OGE0M2JiM2NlM2E3MTk1MWZjN2I1ZDll
MTMwMGVhNTUuLmYzZTlhMGQ5NzYxMGM1YTNiZGRmZWQ3ODRlYjVkZTBkNmI2ZDE4NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwCkBAIC02Niw3ICs2Niw2IEBAIExheWVyQ2hyb21pdW06OkxheWVy
Q2hyb21pdW0oKQogICAgICwgbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNoYW5nZWQoZmFsc2Up
CiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41KQogICAgICwgbV9iYWNrZ3JvdW5kQ29sb3Io
MCwgMCwgMCwgMCkKLSAgICAsIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZhbHNlKQogICAg
ICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgLCBtX29wYWNpdHkoMS4wKQogICAgICwgbV9h
bmNob3JQb2ludFooMCkKQEAgLTI3MCwxNCArMjY5LDYgQEAgdm9pZCBMYXllckNocm9taXVtOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKICAgICBzZXRO
ZWVkc0NvbW1pdCgpOwogfQogCi12b2lkIExheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRDb3Zl
cnNWaWV3cG9ydChib29sIGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCkKLXsKLSAgICBpZiAobV9i
YWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQgPT0gYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQotICAg
ICAgICByZXR1cm47Ci0gICAgbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQgPSBiYWNrZ3JvdW5k
Q292ZXJzVmlld3BvcnQ7Ci0gICAgc2V0TmVlZHNDb21taXQoKTsKLX0KLQogdm9pZCBMYXllckNo
cm9taXVtOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKIHsKICAgICBpZiAo
bV9tYXNrc1RvQm91bmRzID09IG1hc2tzVG9Cb3VuZHMpCkBAIC00NTMsNyArNDQ0LDYgQEAgdm9p
ZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAg
ICBsYXllci0+c2V0QW5jaG9yUG9pbnQobV9hbmNob3JQb2ludCk7CiAgICAgbGF5ZXItPnNldEFu
Y2hvclBvaW50WihtX2FuY2hvclBvaW50Wik7CiAgICAgbGF5ZXItPnNldEJhY2tncm91bmRDb2xv
cihtX2JhY2tncm91bmRDb2xvcik7Ci0gICAgbGF5ZXItPnNldEJhY2tncm91bmRDb3ZlcnNWaWV3
cG9ydChtX2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCk7CiAgICAgbGF5ZXItPnNldEJvdW5kcyht
X2JvdW5kcyk7CiAgICAgbGF5ZXItPnNldENvbnRlbnRCb3VuZHMoY29udGVudEJvdW5kcygpKTsK
ICAgICBsYXllci0+c2V0RGVidWdCb3JkZXJDb2xvcihtX2RlYnVnQm9yZGVyQ29sb3IpOwpAQCAt
NjMxLDYgKzYyMSwxMyBAQCB2b2lkIExheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQoY29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQmIGV2ZW50LAogICAgIG1fbGF5ZXJBbmlt
YXRpb25EZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh3YWxsQ2xvY2tUaW1lKTsKIH0K
IAorUmVnaW9uIExheWVyQ2hyb21pdW06OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29u
c3QKK3sKKyAgICBpZiAob3BhcXVlKCkpCisgICAgICAgIHJldHVybiB2aXNpYmxlTGF5ZXJSZWN0
KCk7CisgICAgcmV0dXJuIFJlZ2lvbigpOworfQorCiB2b2lkIHNvcnRMYXllcnMoVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+OjppdGVyYXRvciwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+OjppdGVyYXRvciwgdm9pZCopCiB7CiAgICAgLy8gQ3VycmVudGx5IHdlIGRvbid0IHVz
ZSB6LW9yZGVyIHRvIGRlY2lkZSB3aGF0IHRvIHBhaW50LCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8g
YWN0dWFsbHkgc29ydCBMYXllckNocm9taXVtcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBiOTgw
MjJiNTJkYTU4YjkxOTdjYmY1NDQ4Y2I2ZDQwYTlhMDdjMjcwLi5mNDE4ZGZkNGJhZTVjODgwMTAw
NGU2Yzk3YmVlYTBmMTgxZGNiNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC05OSw5ICs5OSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwog
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENv
bG9yOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydChib29sKTsKLSAg
ICBib29sIGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dy
b3VuZENvdmVyc1ZpZXdwb3J0OyB9Ci0KICAgICB2b2lkIHNldEJvdW5kcyhjb25zdCBJbnRTaXpl
Jik7CiAgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRCb3VuZHMoKSBjb25zdCB7IHJldHVybiBi
b3VuZHMoKTsgfQogCkBAIC0yNDYsNyArMjQzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBub3Rp
ZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50JiwgZG91Ymxl
IHdhbGxDbG9ja1RpbWUpOwogCi0gICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNvbnRlbnRPcGFx
dWVSZWdpb24oKSBjb25zdCB7IHJldHVybiBSZWdpb24oKTsgfTsKKyAgICB2aXJ0dWFsIFJlZ2lv
biB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTY3Jv
bGxiYXJMYXllckNocm9taXVtKiB0b1Njcm9sbGJhckxheWVyQ2hyb21pdW0oKSB7IHJldHVybiAw
OyB9CiAKQEAgLTMwNSw3ICszMDIsNiBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9wb3Np
dGlvbjsKICAgICBGbG9hdFBvaW50IG1fYW5jaG9yUG9pbnQ7CiAgICAgQ29sb3IgbV9iYWNrZ3Jv
dW5kQ29sb3I7Ci0gICAgYm9vbCBtX2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydDsKICAgICBDb2xv
ciBtX2RlYnVnQm9yZGVyQ29sb3I7CiAgICAgZmxvYXQgbV9kZWJ1Z0JvcmRlcldpZHRoOwogICAg
IFN0cmluZyBtX2RlYnVnTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4
IDEyYjJjNWQ0OWJmYjNjMmFmZDI5NTg1OTc4Y2FiMDdmZDU4NTNiODEuLjI2NjFkODcxYmIzNGEx
NmQ5ZDQ0OGM2ZDllYjQzZmIyYmM1YzIwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcApAQCAtNDU0LDEwICs0NTQsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAg
ICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnJlc2VydmUobV90aWxlci0+dGlsZVNp
emUoKSwgbV90ZXh0dXJlRm9ybWF0KSkgewogICAgICAgICAgICAgICAgIG1fc2tpcHNJZGxlUGFp
bnQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmICghaWRsZSkgewotICAgICAgICAgICAgICAg
ICAgICAvLyBJZiB0aGUgYmFja2dyb3VuZCBjb3ZlcnMgdGhlIHZpZXdwb3J0LCBhbHdheXMgZHJh
dyB0aGlzCi0gICAgICAgICAgICAgICAgICAgIC8vIGxheWVyIHNvIHRoYXQgY2hlY2tlcmJvYXJk
ZWQgdGlsZXMgd2lsbCBzdGlsbCBkcmF3LgotICAgICAgICAgICAgICAgICAgICBpZiAoIWJhY2tn
cm91bmRDb3ZlcnNWaWV3cG9ydCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbV9za2lwc0Ry
YXcgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgIG1fdGlsZXItPnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIG1f
cGFpbnRSZWN0ID0gSW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICBtX3JlcXVlc3RlZFVw
ZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QoKTsKQEAgLTU4MCw3ICs1NzcsOCBAQCBSZWdpb24gVGls
ZWRMYXllckNocm9taXVtOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fc2tpcHNEcmF3KQogICAgICAgICByZXR1cm4gUmVnaW9uKCk7Ci0KKyAgICBpZiAo
b3BhcXVlKCkpCisgICAgICAgIHJldHVybiB2aXNpYmxlTGF5ZXJSZWN0KCk7CiAgICAgcmV0dXJu
IG1fdGlsZXItPm9wYXF1ZVJlZ2lvbkluTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCAyYWZiOWQ4ZmY3NDFmOTMzNTk1NjZhMTY5
ZmQ0MzcyOTcwMmE3OTY5Li5hMmE0MTg1MzI5YjhkOWFmZDkyZDZjYzRhMDUyZmRiNzE4YThjYjM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC01MCw3ICs1MCw2IEBAIENDTGF5ZXJJbXBs
OjpDQ0xheWVySW1wbChpbnQgaWQpCiAgICAgLCBtX3Njcm9sbGFibGUoZmFsc2UpCiAgICAgLCBt
X3Nob3VsZFNjcm9sbE9uTWFpblRocmVhZChmYWxzZSkKICAgICAsIG1faGF2ZVdoZWVsRXZlbnRI
YW5kbGVycyhmYWxzZSkKLSAgICAsIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZhbHNlKQog
ICAgICwgbV9kb3VibGVTaWRlZCh0cnVlKQogICAgICwgbV9sYXllclByb3BlcnR5Q2hhbmdlZChm
YWxzZSkKICAgICAsIG1fbWFza3NUb0JvdW5kcyhmYWxzZSkKQEAgLTEzNiw0MyArMTM1LDYgQEAg
UGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NMYXllckltcGw6OmNyZWF0ZVNoYXJlZFF1
YWRTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUocXVh
ZFRyYW5zZm9ybSgpLCBkcmF3VHJhbnNmb3JtKCksIHZpc2libGVMYXllclJlY3QoKSwgbGF5ZXJD
bGlwUmVjdCwgZHJhd09wYWNpdHkoKSwgb3BhcXVlKCkpOwogfQogCi12b2lkIENDTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKLXsKLSAgICBhcHBlbmRHdXR0ZXJRdWFkcyhx
dWFkTGlzdCwgc2hhcmVkUXVhZFN0YXRlKTsKLX0KLQotdm9pZCBDQ0xheWVySW1wbDo6YXBwZW5k
R3V0dGVyUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSkKLXsKLSAgICBpZiAoIWJhY2tncm91bmRDb3ZlcnNWaWV3cG9y
dCgpIHx8ICFiYWNrZ3JvdW5kQ29sb3IoKS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKLSAgICBJ
bnRSZWN0IGNsaXAgPSBzY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBSZWN0KGNs
aXBSZWN0KCkpOwotCi0gICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgcXVh
ZExpc3QuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBjbGlwLCBiYWNrZ3JvdW5kQ29sb3IoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgSW50UmVjdCBndXR0ZXJSZWN0c1s0XTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkr
KykKLSAgICAgICAgZ3V0dGVyUmVjdHNbaV0gPSBjbGlwOwotICAgIGd1dHRlclJlY3RzWzBdLnNo
aWZ0TWF4WUVkZ2VUbyhsYXllclJlY3QueSgpKTsKLSAgICBndXR0ZXJSZWN0c1sxXS5zaGlmdFlF
ZGdlVG8obGF5ZXJSZWN0Lm1heFkoKSk7Ci0gICAgZ3V0dGVyUmVjdHNbMl0uc2hpZnRNYXhYRWRn
ZVRvKGxheWVyUmVjdC54KCkpOwotICAgIGd1dHRlclJlY3RzWzNdLnNoaWZ0WEVkZ2VUbyhsYXll
clJlY3QubWF4WCgpKTsKLQotICAgIGd1dHRlclJlY3RzWzJdLnNoaWZ0WUVkZ2VUbyhsYXllclJl
Y3QueSgpKTsKLSAgICBndXR0ZXJSZWN0c1szXS5zaGlmdFlFZGdlVG8obGF5ZXJSZWN0LnkoKSk7
Ci0gICAgZ3V0dGVyUmVjdHNbMl0uc2hpZnRNYXhZRWRnZVRvKGxheWVyUmVjdC5tYXhZKCkpOwot
ICAgIGd1dHRlclJlY3RzWzNdLnNoaWZ0TWF4WUVkZ2VUbyhsYXllclJlY3QubWF4WSgpKTsKLQot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgIGlmICghZ3V0dGVyUmVj
dHNbaV0uaXNFbXB0eSgpKQotICAgICAgICAgICAgcXVhZExpc3QuYXBwZW5kKENDU29saWRDb2xv
ckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBndXR0ZXJSZWN0c1tpXSwgYmFja2dy
b3VuZENvbG9yKCkpKTsKLSAgICB9Ci19Ci0KIHZvaWQgQ0NMYXllckltcGw6OmFwcGVuZERlYnVn
Qm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlKSBjb25zdAogewogICAgIGlmICghaGFzRGVidWdCb3JkZXJzKCkp
CkBAIC0zOTIsMTUgKzM1NCw2IEBAIHZvaWQgQ0NMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKQogICAgIG1fbGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQgPSB0cnVlOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kQ292ZXJzVmll
d3BvcnQoYm9vbCBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpCi17Ci0gICAgaWYgKG1fYmFja2dy
b3VuZENvdmVyc1ZpZXdwb3J0ID09IGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQgPSBiYWNrZ3JvdW5kQ292
ZXJzVmlld3BvcnQ7Ci0gICAgbV9sYXllclByb3BlcnR5Q2hhbmdlZCA9IHRydWU7Ci19Ci0KIHZv
aWQgQ0NMYXllckltcGw6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cykKIHsKICAgICBpZiAobV9maWx0ZXJzID09IGZpbHRlcnMpCkBAIC01NTIsNiArNTA1LDEzIEBA
IHZvaWQgQ0NMYXllckltcGw6OnNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpCiAgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOwogfQogCitSZWdpb24gQ0NMYXll
ckltcGw6OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3QKK3sKKyAgICBpZiAob3Bh
cXVlKCkpCisgICAgICAgIHJldHVybiB2aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgcmV0dXJuIFJl
Z2lvbigpOworfQorCiB2b2lkIENDTGF5ZXJJbXBsOjpkaWRMb3NlQ29udGV4dCgpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaAppbmRleCA2Y2I2ZGYwM2MyOWVhZTYwODdlMGY0YTllZTk0MWMzMmI5
OTUwODkyLi43Yjc1OTg0MzUxMDU4YmQ3NzExMDNjM2Q5NmE5ZDRkNmI0ODBkN2UyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgUGFzc093blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRR
dWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRD
aGVja2VyYm9hcmQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCkgeyB9CiAgICAgdm9p
ZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUqKSBjb25zdDsKIApAQCAtMTA3LDkgKzEwNyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIENvbG9yIGJhY2tncm91bmRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAKLSAgICB2b2lkIHNldEJh
Y2tncm91bmRDb3ZlcnNWaWV3cG9ydChib29sKTsKLSAgICBib29sIGJhY2tncm91bmRDb3ZlcnNW
aWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0OyB9Ci0K
ICAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogICAgIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcnM7IH0K
IApAQCAtMjMyLDcgKzIyOSw3IEBAIHB1YmxpYzoKIAogICAgIENDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVyKiBsYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2xheWVyQW5pbWF0
aW9uQ29udHJvbGxlci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNvbnRl
bnRPcGFxdWVSZWdpb24oKSBjb25zdCB7IHJldHVybiBSZWdpb24oKTsgfTsKKyAgICB2aXJ0dWFs
IFJlZ2lvbiB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0OwogCiAgICAgLy8gSW5k
aWNhdGVzIHRoYXQgdGhlIGNvbnRleHQgcHJldmlvdXNseSB1c2VkIHRvIHJlbmRlciB0aGlzIGxh
eWVyCiAgICAgLy8gd2FzIGxvc3QgYW5kIHRoYXQgYSBuZXcgb25lIGhhcyBiZWVuIGNyZWF0ZWQu
IFdvbid0IGJlIGNhbGxlZApAQCAtMjQ4LDggKzI0NSw2IEBAIHByb3RlY3RlZDoKICAgICAvLyBU
cmFuc2Zvcm1hdGlvbiB1c2VkIHRvIHRyYW5zZm9ybSBxdWFkcyBwcm92aWRlZCBpbiBhcHBlbmRR
dWFkcy4KICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRUcmFuc2Zvcm0oKSBj
b25zdDsKIAotICAgIHZvaWQgYXBwZW5kR3V0dGVyUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqKTsKLQogcHJpdmF0ZToKICAgICB2b2lkIHNldFBhcmVudChDQ0xh
eWVySW1wbCogcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAgICAgZnJpZW5kIGNsYXNz
IFRyZWVTeW5jaHJvbml6ZXI7CkBAIC0yODUsNyArMjgwLDYgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKICAgICBSZWdpb24gbV9ub25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbjsKICAgICBDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKLSAgICBib29sIG1fYmFja2dy
b3VuZENvdmVyc1ZpZXdwb3J0OwogCiAgICAgLy8gV2hldGhlciB0aGUgImJhY2siIG9mIHRoaXMg
bGF5ZXIgc2hvdWxkIGRyYXcuCiAgICAgYm9vbCBtX2RvdWJsZVNpZGVkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZDNmYzk3MGJkMzY3M2Q3MWM4MjBiYTMzOGE2YmQwNmQ0
NjIzNTZlZS4uNWU3OTA0OTM0ZWUxZGUwZjMxNWEzMjc0NGU4ZjgyYmNlN2Y5YjcwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC04MCw2ICs4MCw3IEBAIENDTGF5ZXJUcmVl
SG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25z
dCBDQ1NldHRpbmdzCiAgICAgLCBtX21pblBhZ2VTY2FsZUZhY3RvcigxKQogICAgICwgbV9tYXhQ
YWdlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fdHJpZ2dlcklkbGVQYWludHModHJ1ZSkKKyAgICAs
IG1fYmFja2dyb3VuZENvbG9yKENvbG9yOjp3aGl0ZSkKICAgICAsIG1fcGFydGlhbFRleHR1cmVV
cGRhdGVSZXF1ZXN0cygwKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7
CkBAIC0yMjAsNiArMjIxLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENvbW1pdE9u
SW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICBob3N0SW1wbC0+
c2V0U291cmNlRnJhbWVOdW1iZXIoZnJhbWVOdW1iZXIoKSk7CiAgICAgaG9zdEltcGwtPnNldFZp
ZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUoKSk7CiAgICAgaG9zdEltcGwtPnNldFBhZ2VTY2FsZUZh
Y3RvckFuZExpbWl0cyhtX3BhZ2VTY2FsZUZhY3RvciwgbV9taW5QYWdlU2NhbGVGYWN0b3IsIG1f
bWF4UGFnZVNjYWxlRmFjdG9yKTsKKyAgICBob3N0SW1wbC0+c2V0QmFja2dyb3VuZENvbG9yKG1f
YmFja2dyb3VuZENvbG9yKTsKIAogICAgIG1fZnJhbWVOdW1iZXIrKzsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmgKaW5kZXggOWNhMTRmYzA0NDg4M2FiMGMzMTA5YTk3ZmI4YmUxYjJiYTIz
NzE2MS4uNjVkNGI4YmY2ZjQzZTAxZGZkMWY5MGYzNTkwMDUxNGU4M2RhYjU2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpZm5kZWYgQ0NMYXllclRy
ZWVIb3N0X2gKICNkZWZpbmUgQ0NMYXllclRyZWVIb3N0X2gKIAorI2luY2x1ZGUgIkNvbG9yLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2lu
Y2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKQEAgLTIwMSw2ICsyMDIsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhmbG9hdCBwYWdlU2NhbGVGYWN0b3Is
IGZsb2F0IG1pblBhZ2VTY2FsZUZhY3RvciwgZmxvYXQgbWF4UGFnZVNjYWxlRmFjdG9yKTsKIAor
ICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2JhY2tn
cm91bmRDb2xvciA9IGNvbG9yOyB9CisKICAgICBUZXh0dXJlTWFuYWdlciogY29udGVudHNUZXh0
dXJlTWFuYWdlcigpIGNvbnN0OwogCiAgICAgYm9vbCB2aXNpYmxlKCkgY29uc3QgeyByZXR1cm4g
bV92aXNpYmxlOyB9CkBAIC0yNzAsNiArMjczLDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3Bh
Z2VTY2FsZUZhY3RvcjsKICAgICBmbG9hdCBtX21pblBhZ2VTY2FsZUZhY3RvciwgbV9tYXhQYWdl
U2NhbGVGYWN0b3I7CiAgICAgYm9vbCBtX3RyaWdnZXJJZGxlUGFpbnRzOworICAgIENvbG9yIG1f
YmFja2dyb3VuZENvbG9yOwogCiAgICAgVGV4dHVyZUxpc3QgbV9kZWxldGVUZXh0dXJlQWZ0ZXJD
b21taXRMaXN0OwogICAgIHNpemVfdCBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGQyMWE0ZTBjNjA5YzM3
YmRhZDJkZjkzMTVhZjUwNzI3NmQ3YWQxYmUuLjBlYzQ3MDQ1MjE1ZDFjMTJlMzc4ZmYwYmQxYTAz
ODA4Zjg2NzAyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBA
IC0zMjgsNiArMzI4LDggQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5k
ZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUKICAgICAgICAgb2NjbHVz
aW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcigqaXQpOwogICAgIH0KIAorICAgIHBh
c3Nlcy5sYXN0KCktPmFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKHJvb3RMYXllcigpLCBtX2JhY2tn
cm91bmRDb2xvciwgb2NjbHVzaW9uVHJhY2tlcik7CisKICAgICBpZiAoZHJhd0ZyYW1lKQogICAg
ICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnJlY29yZE1ldHJpY3ModGhp
cyk7CiAgICAgcmV0dXJuIGRyYXdGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaAppbmRleCBkNThkYjVmMmQ0MWU5ZTg1NGNiYjZkZmY0NTZmYTEzMjJhMzEyYjNjLi5kYzZh
MTQ4MzNjMGQ1NTk5ZWQ5ODVhYjgzYzJmMmIwODRmNGVlN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIENDTGF5ZXJUcmVl
SG9zdEltcGxfaAogI2RlZmluZSBDQ0xheWVyVHJlZUhvc3RJbXBsX2gKIAorI2luY2x1ZGUgIkNv
bG9yLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NBbmltYXRpb25FdmVudHMuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5oIgpAQCAt
MTM4LDYgKzEzOSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRp
b24oY29uc3QgSW50U2l6ZSYgdHJhZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBz
Y2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKIAorICAgIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0
QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xvciA9
IGNvbG9yOyB9CisKICAgICBib29sIG5lZWRzQW5pbWF0ZUxheWVycygpIGNvbnN0IHsgcmV0dXJu
IG1fbmVlZHNBbmltYXRlTGF5ZXJzOyB9CiAgICAgdm9pZCBzZXROZWVkc0FuaW1hdGVMYXllcnMo
KSB7IG1fbmVlZHNBbmltYXRlTGF5ZXJzID0gdHJ1ZTsgfQogCkBAIC0xODUsNiArMTg5LDggQEAg
cHJpdmF0ZToKICAgICBmbG9hdCBtX3NlbnRQYWdlU2NhbGVEZWx0YTsKICAgICBmbG9hdCBtX21p
blBhZ2VTY2FsZSwgbV9tYXhQYWdlU2NhbGU7CiAKKyAgICBDb2xvciBtX2JhY2tncm91bmRDb2xv
cjsKKwogICAgIC8vIElmIHRoaXMgaXMgdHJ1ZSwgaXQgaXMgbmVjZXNzYXJ5IHRvIHRyYXZlcnNl
IHRoZSBsYXllciB0cmVlIHRpY2tpbmcgdGhlIGFuaW1hdG9ycy4KICAgICBib29sIG1fbmVlZHNB
bmltYXRlTGF5ZXJzOwogICAgIGJvb2wgbV9waW5jaEdlc3R1cmVBY3RpdmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lv
blRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRleCBjZjc2YmRmNjNiY2ZjMmI4M2E5NTRkN2Vm
N2JiYjk2ZjdkMmM5YzE0Li5hNWEwYzVjYTRhOTJkZjI0M2UwMjQwMzIwZDVlMzQzYjYyNmJhMWU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTE5OCwzMCArMTk4
LDI5IEBAIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvVGFyZ2V0
U3VyZmFjZVRyYW5zZm9ybShjb25zdCBMYXllclR5CiAKIC8vIEZJWE1FOiBSZW1vdmUgdXNlUGFp
bnRUcmFja2luZyB3aGVuIHBhaW50IHRyYWNraW5nIGlzIG9uIGZvciBwYWludCBjdWxsaW5nLgog
dGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgotc3RhdGljIGlubGluZSBSZWdpb24gY29tcHV0
ZU9jY2x1c2lvbkJlaGluZExheWVyKGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBi
b29sIHVzZVBhaW50VHJhY2tpbmcpCitzdGF0aWMgaW5saW5lIFJlZ2lvbiBjb21wdXRlT2NjbHVz
aW9uQmVoaW5kTGF5ZXIoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVnaW9uJiBvcGFxdWVDb250ZW50cywgY29uc3Qg
SW50UmVjdCYgc2Npc3NvclJlY3QsIGJvb2wgdXNlUGFpbnRUcmFja2luZykKIHsKLSAgICBSZWdp
b24gb3BhcXVlUmVnaW9uOworICAgIEFTU0VSVChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpLmNv
bnRhaW5zKG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKSk7CiAKICAgICBib29sIGNsaXBwZWQ7CiAg
ICAgRmxvYXRRdWFkIHVub2NjbHVkZWRRdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZCh0cmFuc2Zv
cm0sIEZsb2F0UXVhZChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpKSwgY2xpcHBlZCk7CiAgICAg
Ym9vbCBpc1BhaW50ZWRBeGlzQWxpZ25lZCA9IHVub2NjbHVkZWRRdWFkLmlzUmVjdGlsaW5lYXIo
KTsKICAgICAvLyBGSVhNRTogRmluZCBhIHJlY3QgaW50ZXJpb3IgdG8gZWFjaCB0cmFuc2Zvcm1l
ZCBxdWFkLgogICAgIGlmIChjbGlwcGVkIHx8ICFpc1BhaW50ZWRBeGlzQWxpZ25lZCkKLSAgICAg
ICAgcmV0dXJuIG9wYXF1ZVJlZ2lvbjsKKyAgICAgICAgcmV0dXJuIFJlZ2lvbigpOwogCi0gICAg
aWYgKGxheWVyLT5vcGFxdWUoKSkKLSAgICAgICAgb3BhcXVlUmVnaW9uID0gZW5jbG9zZWRJbnRS
ZWN0KHVub2NjbHVkZWRRdWFkLmJvdW5kaW5nQm94KCkpOwotICAgIGVsc2UgaWYgKHVzZVBhaW50
VHJhY2tpbmcgJiYgdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKLSAgICAgICAgb3BhcXVlUmVnaW9u
ID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CisgICAgUmVnaW9uIHRyYW5z
Zm9ybWVkT3BhcXVlQ29udGVudHM7CisgICAgaWYgKHVzZVBhaW50VHJhY2tpbmcgJiYgdHJhbnNm
b3JtLmlzSWRlbnRpdHkoKSkKKyAgICAgICAgdHJhbnNmb3JtZWRPcGFxdWVDb250ZW50cyA9IG9w
YXF1ZUNvbnRlbnRzOwogICAgIGVsc2UgaWYgKHVzZVBhaW50VHJhY2tpbmcpIHsKLSAgICAgICAg
UmVnaW9uIGNvbnRlbnRSZWdpb24gPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24o
KTsKLSAgICAgICAgVmVjdG9yPEludFJlY3Q+IGNvbnRlbnRSZWN0cyA9IGNvbnRlbnRSZWdpb24u
cmVjdHMoKTsKKyAgICAgICAgVmVjdG9yPEludFJlY3Q+IGNvbnRlbnRSZWN0cyA9IG9wYXF1ZUNv
bnRlbnRzLnJlY3RzKCk7CiAgICAgICAgIC8vIFdlIHZlcmlmeSB0aGF0IHRoZSBwb3NzaWJsZSBi
b3VuZHMgb2YgdGhpcyByZWdpb24gYXJlIG5vdCBjbGlwcGVkIGFib3ZlLCBzbyB3ZSBjYW4gdXNl
IG1hcFJlY3QoKSBzYWZlbHkgaGVyZS4KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b250ZW50UmVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBvcGFxdWVSZWdpb24udW5pdGUo
ZW5jbG9zZWRJbnRSZWN0KHRyYW5zZm9ybS5tYXBSZWN0KEZsb2F0UmVjdChjb250ZW50UmVjdHNb
aV0pKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtZWRPcGFxdWVDb250ZW50cy51bml0ZShlbmNs
b3NlZEludFJlY3QodHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KGNvbnRlbnRSZWN0c1tpXSkp
KSk7CiAgICAgfQotICAgIG9wYXF1ZVJlZ2lvbi5pbnRlcnNlY3Qoc2Npc3NvclJlY3QpOwotICAg
IHJldHVybiBvcGFxdWVSZWdpb247CisKKyAgICB0cmFuc2Zvcm1lZE9wYXF1ZUNvbnRlbnRzLmlu
dGVyc2VjdChzY2lzc29yUmVjdCk7CisgICAgcmV0dXJuIHRyYW5zZm9ybWVkT3BhcXVlQ29udGVu
dHM7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3Vy
ZmFjZVR5cGU+CkBAIC0yMzUsOSArMjM0LDEzIEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFz
ZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bWFya09jY2x1ZGVkQmVoaW5kTGF5CiAg
ICAgaWYgKCFsYXllck9wYWNpdHlLbm93bihsYXllcikgfHwgbGF5ZXItPmRyYXdPcGFjaXR5KCkg
PCAxKQogICAgICAgICByZXR1cm47CiAKKyAgICBSZWdpb24gb3BhcXVlQ29udGVudHMgPSBsYXll
ci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKKyAgICBpZiAob3BhcXVlQ29udGVudHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAgICBJbnRSZWN0IHNjaXNzb3JJblRhcmdl
dCA9IGxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIpOwogICAgIGlmIChsYXll
clRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSkKLSAgICAgICAgbV9zdGFjay5sYXN0KCku
b2NjbHVzaW9uSW5UYXJnZXQudW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyPExheWVy
VHlwZT4obGF5ZXIsIGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihs
YXllciksIHNjaXNzb3JJblRhcmdldCwgbV91c2VQYWludFRyYWNraW5nKSk7CisgICAgICAgIG1f
c3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LnVuaXRlKGNvbXB1dGVPY2NsdXNpb25CZWhp
bmRMYXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3Jt
PExheWVyVHlwZT4obGF5ZXIpLCBvcGFxdWVDb250ZW50cywgc2Npc3NvckluVGFyZ2V0LCBtX3Vz
ZVBhaW50VHJhY2tpbmcpKTsKIAogICAgIC8vIFdlIG11c3QgY2xpcCB0aGUgb2NjbHVzaW9uIHdp
dGhpbiB0aGUgbGF5ZXIncyBzY2lzc29ySW5UYXJnZXQgd2l0aGluIHNjcmVlbiBzcGFjZSBhcyB3
ZWxsLiBJZiB0aGUgc2Npc3NvciByZWN0IGNhbid0IGJlIG1vdmVkIHRvIHNjcmVlbiBzcGFjZSBh
bmQKICAgICAvLyByZW1haW4gcmVjdGlsaW5lYXIsIHRoZW4gd2UgZG9uJ3QgYWRkIGFueSBvY2Ns
dXNpb24gaW4gc2NyZWVuIHNwYWNlLgpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgQ0NPY2NsdXNp
b25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bWFya09jY2x1ZGVk
QmVoaW5kTGF5CiAgICAgICAgIGlmICghc2Npc3NvckluU2NyZWVuUXVhZC5pc1JlY3RpbGluZWFy
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEludFJlY3Qgc2Npc3NvckluU2NyZWVu
UmVjdCA9IGludGVyc2VjdGlvbihtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgZW5jbG9zZWRJ
bnRSZWN0KENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHRhcmdldFRvU2NyZWVuVHJhbnNmb3Jt
LCBGbG9hdFJlY3Qoc2Npc3NvckluVGFyZ2V0KSkpKTsKLSAgICAgICAgbV9zdGFjay5sYXN0KCku
b2NjbHVzaW9uSW5TY3JlZW4udW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyPExheWVy
VHlwZT4obGF5ZXIsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5
ZXIpLCBzY2lzc29ySW5TY3JlZW5SZWN0LCBtX3VzZVBhaW50VHJhY2tpbmcpKTsKKyAgICAgICAg
bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4udW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJl
aGluZExheWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3Jt
PExheWVyVHlwZT4obGF5ZXIpLCBvcGFxdWVDb250ZW50cywgc2Npc3NvckluU2NyZWVuUmVjdCwg
bV91c2VQYWludFRyYWNraW5nKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9u
VHJhY2tlci5oCmluZGV4IDZiMmI2ZTE2NjhiNTc5NTljMTM4MjA0NTcyMzMyZjljZjdhOTM0NGYu
LmI2MjE5NzNiNTMxOTJkYjdhZWVhOTAxMjk3Y2RlNDVkZjA5NzAxMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJh
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5oCkBAIC03Myw2ICs3Myw5IEBAIHB1YmxpYzoKICAgICAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBwYWludCB0cmFja2luZyBpcyBvbiBmb3IgcGFpbnQgY3Vs
bGluZy4KICAgICB2b2lkIHNldFVzZVBhaW50VHJhY2tpbmcoYm9vbCB1c2UpIHsgbV91c2VQYWlu
dFRyYWNraW5nID0gdXNlOyB9CiAKKyAgICAvLyBHaXZlcyB0aGUgcmVnaW9uIG9mIHRoZSBzY3Jl
ZW4gdGhhdCBpcyBub3Qgb2NjbHVkZWQgYnkgc29tZXRoaW5nIG9wYXF1ZS4KKyAgICBSZWdpb24g
Y29tcHV0ZVZpc2libGVSZWdpb25JblNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIHN1YnRyYWN0KFJl
Z2lvbihtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSksIG1fc3RhY2subGFzdCgpLm9jY2x1c2lv
bkluU2NyZWVuKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0IFN0YWNrT2JqZWN0IHsKICAg
ICAgICAgU3RhY2tPYmplY3QoKSA6IHN1cmZhY2UoMCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
LmNwcAppbmRleCAxNzA0YTYxNmQ1YjMxMzRjOWFjOWE4NDYxZGE4YTRkYjJmZjEwZWI3Li45ZWVl
NzMwMzM2N2Y0ZGZkYWRiZWZmMWMzN2U0YjE4MGQ5NzczZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5jcHAKQEAgLTI3LDEyICsyNywxNCBAQAogCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNz
LmgiCiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdlVHJhY2tlci5o
IgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0
ZS5oIgorI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtODgsNCArOTAsMjMgQEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1
YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICBtX3NoYXJl
ZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQogCit2
b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4oQ0NMYXllckltcGwqIHJv
b3RMYXllciwgY29uc3QgQ29sb3ImIHNjcmVlbkJhY2tncm91bmRDb2xvciwgY29uc3QgQ0NPY2Ns
dXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJhY2tlcikKK3sKKyAgICBpZiAoIXJvb3RMYXll
ciB8fCAhc2NyZWVuQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVnaW9uIGZpbGxSZWdpb24gPSBvY2NsdXNpb25UcmFja2VyLmNvbXB1dGVWaXNpYmxl
UmVnaW9uSW5TY3JlZW4oKTsKKyAgICBpZiAoZmlsbFJlZ2lvbi5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRl
ID0gcm9vdExheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKKyAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCB0cmFuc2Zvcm1Ub0xheWVyU3BhY2UgPSByb290TGF5ZXItPnNjcmVlblNwYWNlVHJh
bnNmb3JtKCkuaW52ZXJzZSgpOworICAgIFZlY3RvcjxJbnRSZWN0PiBmaWxsUmVjdHMgPSBmaWxs
UmVnaW9uLnJlY3RzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxsUmVjdHMuc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgSW50UmVjdCBsYXllclJlY3QgPSB0cmFuc2Zvcm1Ub0xheWVy
U3BhY2UubWFwUmVjdChmaWxsUmVjdHNbaV0pOworICAgICAgICBtX3F1YWRMaXN0LmFwcGVuZChD
Q1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgbGF5ZXJS
ZWN0LCBzY3JlZW5CYWNrZ3JvdW5kQ29sb3IpKTsKKyAgICB9CisgICAgbV9zaGFyZWRRdWFkU3Rh
dGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3MuaAppbmRleCA1OTkwMWM4YzU4Y2YzNzZhMGMxZjBjYzA5YzU3OGVlMDRkMzE2
MmUzLi4xMjUyNmIxMTAwNDIwZTQ2MDFlZjNmMjc5MjU2ZmZiNDg4MDkyMDA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3MuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBDQ0xheWVySW1wbDsKIGNsYXNzIENDUmVuZGVyU3VyZmFjZTsKIGNsYXNzIENDU2hhcmVkUXVh
ZFN0YXRlOworY2xhc3MgQ29sb3I7CiAKIC8vIEEgbGlzdCBvZiBDQ0RyYXdRdWFkIG9iamVjdHMs
IHNvcnRlZCBpbnRlcm5hbGx5IGluIGZyb250LXRvLWJhY2sgb3JkZXIuCiBjbGFzcyBDQ1F1YWRM
aXN0IDogcHVibGljIFZlY3RvcjxPd25QdHI8Q0NEcmF3UXVhZD4gPiB7CkBAIC01Niw2ICs1Nyw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1wbCos
IENDT2NjbHVzaW9uVHJhY2tlckltcGwqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKTsKICAgICB2
b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKik7CisgICAg
dm9pZCBhcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25z
dCBDb2xvciYgc2NyZWVuQmFja2dyb3VuZENvbG9yLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsJik7CiAKICAgICBjb25zdCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcXVhZExpc3Q7IH0KICAgICBDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UoKSBjb25z
dCB7IHJldHVybiBtX3RhcmdldFN1cmZhY2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHAKaW5kZXggMTA1MTE2NWIxN2YzM2ViMzU0ZmYxNmY0ZDMwNTE0YmVhNWY5Yzk1Ny4uMTFi
MjVlZGJjNmNjMGQ4NjY5OGQ1MjNlZjk5YTBmODQ0MjI1NzM2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5jcHAKQEAgLTE0Miw4ICsxNDIsNiBAQCB2b2lkIENDVGlsZWRMYXllcklt
cGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YQogICAgIGlmIChtX3NraXBzRHJhdykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXBwZW5k
R3V0dGVyUXVhZHMocXVhZExpc3QsIHNoYXJlZFF1YWRTdGF0ZSk7Ci0KICAgICBpZiAoIW1fdGls
ZXIgfHwgbV90aWxlci0+aGFzRW1wdHlCb3VuZHMoKSB8fCBsYXllclJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTIyOCw3ICsyMjYsOCBAQCBSZWdpb24gQ0NUaWxlZExheWVy
SW1wbDo6dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKSBjb25zdAogewogICAgIGlmIChtX3Nr
aXBzRHJhdykKICAgICAgICAgcmV0dXJuIFJlZ2lvbigpOwotCisgICAgaWYgKG9wYXF1ZSgpKQor
ICAgICAgICByZXR1cm4gdmlzaWJsZUxheWVyUmVjdCgpOwogICAgIHJldHVybiBtX3RpbGVyLT5v
cGFxdWVSZWdpb25JbkxheWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggMzc5MGZhZTVhNjY4NThiMjhjMGU2NGU0Mjc2YzQw
NWQxYzI2NzMwNi4uNzQ4YTc3OWYwNjRhZDQ4ZmRkODZmNDViYWRkNDZhZjdhOGVlNjRkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtNDksNyArNDksOSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGlu
ZGVudCkgY29uc3Q7CiAKKyAgICBib29sIHNraXBzRHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fc2tp
cHNEcmF3OyB9CiAgICAgdm9pZCBzZXRTa2lwc0RyYXcoYm9vbCBza2lwc0RyYXcpIHsgbV9za2lw
c0RyYXcgPSBza2lwc0RyYXc7IH0KKwogICAgIHZvaWQgc2V0VGlsaW5nRGF0YShjb25zdCBDQ0xh
eWVyVGlsaW5nRGF0YSYgdGlsZXIpOwogICAgIHZvaWQgcHVzaFRpbGVQcm9wZXJ0aWVzKGludCwg
aW50LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVj
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3Np
dGVkQ29udGVudEhvc3QuY3BwCmluZGV4IGI2YjFhMjI5NGQxNDk2YjM4MWRkYzE4YjI0ZGFlMTUz
NmY2ODA4YzguLmVjMGIyZTRmMGFkMDFiZGZkMTcwN2Y4NmY4ZjlkNTI0ODE1NWQwODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LmNwcApAQCAtNDYsOSArNDYsNiBAQCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6Ok5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdChQYXNzT3duUHRyPFdlYkNvcmU6OkxheWVyUGFpbgogI2Vu
ZGlmCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAgICAgbV9n
cmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldElzTm9uQ29tcG9zaXRlZENvbnRlbnQo
dHJ1ZSk7Ci0jaWYgIUVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICBtX2dyYXBoaWNzTGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKS0+c2V0QmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KHRydWUpOwotI2Vu
ZGlmCiAgICAgbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldE9wYXF1ZSh0cnVl
KTsKIH0KIApAQCAtNTgsMTAgKzU1LDcgQEAgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojp+Tm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0KCkKIAogdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6
OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiB7Ci0gICAg
aWYgKGNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxh
eWVyKCktPnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7Ci0gICAgZWxzZQotICAgICAgICBtX2dy
YXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0QmFja2dyb3VuZENvbG9yKFdlYkNvcmU6
OkNvbG9yOjp3aGl0ZSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNl
dEJhY2tncm91bmRDb2xvcihjb2xvcik7CiB9CiAKIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0OjpzZXRTY3JvbGxMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBsYXllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKaW5kZXggNTMy
NDZiMWNhODdmYjNiMWQxOTljYmNjZGJmNzJiMzNkZjcxMWVmZC4uYzAxNzA1OGNiNTI0YTM4ZWY4
MWVkZDIyNzhkNjcwZDdlMWUyMzFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAKQEAgLTk3LDYgKzk3LDExIEBAIFdlYlNpemUgV2ViTGF5
ZXJUcmVlVmlldzo6dmlld3BvcnRTaXplKCkgY29uc3QKICAgICByZXR1cm4gV2ViU2l6ZShtX3By
aXZhdGUtPnZpZXdwb3J0U2l6ZSgpKTsKIH0KIAordm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRC
YWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQoreworICAgIG1fcHJpdmF0ZS0+
c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30KKwogdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpz
ZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKICAgICBtX3ByaXZhdGUtPnNldFZpc2libGUodmlz
aWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXgg
MDMwZDhlMWQxYjU0MzI0ZjBhYzFjYzlmODQyOGJiYWYwYjZhNjI4OC4uODA0ZjZjOWI4YjIwNzkw
NDdiOTZiYThmYzIwNWMwYzRmMTc4ZDI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2Vs
ZWN0b3IuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2hyb21l
LmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVk
ZSAiQ29tcG9zaXRpb25VbmRlcmxpbmVWZWN0b3JCdWlsZGVyLmgiCiAjaW5jbHVkZSAiQ29udGV4
dE1lbnUuaCIKQEAgLTMyNDQsNiArMzI0NSwxNCBAQCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Qq
IFdlYlZpZXdJbXBsOjpub25Db21wb3NpdGVkQ29udGVudEhvc3QoKQogICAgIHJldHVybiBtX25v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdC5nZXQoKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2V0
QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICBXZWJD
b3JlOjpDb2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xvciA9IGNvbG9yLmlzVmFsaWQoKSA/IGNv
bG9yIDogV2ViQ29yZTo6Q29sb3I6OndoaXRlOworICAgIFdlYkNvbG9yIHdlYkRvY3VtZW50QmFj
a2dyb3VuZENvbG9yID0gZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IucmdiKCk7CisgICAgbV9ub25D
b21wb3NpdGVkQ29udGVudEhvc3QtPnNldEJhY2tncm91bmRDb2xvcihkb2N1bWVudEJhY2tncm91
bmRDb2xvcik7CisgICAgbV9sYXllclRyZWVWaWV3LnNldEJhY2tncm91bmRDb2xvcih3ZWJEb2N1
bWVudEJhY2tncm91bmRDb2xvcik7Cit9CisKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUpCiB2b2lkIFdlYlZpZXdJbXBsOjpzY2hlZHVsZUFuaW1hdGlvbigpCiB7CkBAIC0zMjc5
LDggKzMyODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQo
KS0+aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQuQWNjZWxSb290UGFpbnREdXJhdGlv
bk1TIiwgKHBhaW50RW5kIC0gcGFpbnRTdGFydCkgKiAxMDAwLCAwLCAxMjAsIDMwKTsKICAgICAg
ICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5oaXN0b2dyYW1DdXN0b21Db3VudHMoIlJl
bmRlcmVyNC5BY2NlbFJvb3RQYWludE1lZ2FwaXhQZXJTZWNvbmQiLCBwaXhlbHNQZXJTZWMgLyAx
MDAwMDAwLCAxMCwgMjEwLCAzMCk7CiAKLSAgICAgICAgbV93ZWJWaWV3SW1wbC0+bm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0KCktPnNldEJhY2tncm91bmRDb2xvcih2aWV3LT5kb2N1bWVudEJhY2tn
cm91bmRDb2xvcigpKTsKLQorICAgICAgICBtX3dlYlZpZXdJbXBsLT5zZXRCYWNrZ3JvdW5kQ29s
b3Iodmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgfQogCiBwcml2YXRlOgpA
QCAtMzMyNyw5ICszMzM1LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdCA9IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Y3JlYXRlKFdlYlZpZXdJbXBsQ29u
dGVudFBhaW50ZXI6OmNyZWF0ZSh0aGlzKSk7CiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LT5zZXRTaG93RGVidWdCb3JkZXJzKHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2hvd0RlYnVn
Qm9yZGVycygpKTsKIAotICAgICAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+bWFpbkZyYW1lKCkt
PnZpZXcoKSkKLSAgICAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRCYWNr
Z3JvdW5kQ29sb3IocGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT5kb2N1bWVudEJhY2tncm91
bmRDb2xvcigpKTsKLQogICAgICAgICBtX2xheWVyVHJlZVZpZXcuaW5pdGlhbGl6ZSh0aGlzLCBt
X3Jvb3RMYXllciwgbGF5ZXJUcmVlVmlld1NldHRpbmdzKTsKICAgICAgICAgaWYgKCFtX2xheWVy
VHJlZVZpZXcuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRQYWdl
U2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCksIG1fbWluaW11bVBhZ2VTY2Fs
ZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDgwMGU1MTFkYzQ1MWJmNTFjNzE1NzJiYzliOTEyMjI4
MDBkMjY0NGQuLjJmZDgzZmI3ZWQ5YmJmMTUwNGQzMTk3ZjA4MmVjM2E3Njg5MDVmYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNjAsNiArNjAsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
OwogY2xhc3MgQ2hyb21pdW1EYXRhT2JqZWN0OworY2xhc3MgQ29sb3I7CiBjbGFzcyBEb2N1bWVu
dExvYWRlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CkBAIC00Njgs
NiArNDY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsUm9vdExheWVyUmVjdChjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xp
cFJlY3QpOwogICAgIHZvaWQgaW52YWxpZGF0ZVJvb3RMYXllclJlY3QoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOwogICAgIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCogbm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0KCk7CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImKTsKICNlbmRpZgogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKICAg
ICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggOGE5ZjM1ZGM4YTdiODljMGM5NGJkNzUz
N2M2ODQ2NGZhNzhhNmJiOC4uYmI2NWNjNTgwYWMxNThiZjA1Y2IzYzk3ZDIxN2YyOTg0YzhlYWNk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0
LmNwcApAQCAtMTEyLDcgKzExMiw2IEBAIFRFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJpZnlMYXll
ckNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlf
TEFZRVJfQ0hBTkdFRChyb290LT5zZXREZWJ1Z0JvcmRlcldpZHRoKGFyYml0cmFyeU51bWJlcikp
OwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0RHJh
d3NDb250ZW50KHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFO
R0VEKHJvb3QtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSkpOwotICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3VuZENvdmVyc1Zp
ZXdwb3J0KHRydWUpKTsKIAogICAgIC8vIFNwZWNpYWwgY2FzZTogY2hlY2sgdGhhdCBzdWJsYXll
ciB0cmFuc2Zvcm0gY2hhbmdlcyBhbGwgbGF5ZXIncyBkZXNjZW5kYW50cywgYnV0IG5vdCB0aGUg
bGF5ZXIgaXRzZWxmLgogICAgIHJvb3QtPnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDcwMDljOGMzZTkzY2E2Y2MwMmQ0NTUyNTdlZjEzMDlj
ZWRmZjY1YmUuLmM5ZjM4YTAxZmRlMWU3OTUyMmE4Nzg1ZjljMGRlOTIwN2Q5OTI3ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVy
LmgiCiAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21tb24uaCIKKyNpbmNsdWRlICJDQ0xh
eWVyVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgImNjL0NDVGlsZURy
YXdRdWFkLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIAordXNpbmcgbmFtZXNwYWNlIEND
TGF5ZXJUZXN0Q29tbW9uOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwpAQCAtNTk4LDYgKzYwMCw3
IEBAIHB1YmxpYzoKICAgICAgICAgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPnNldFF1YWRWaXNpYmxl
UmVjdChtX3F1YWRWaXNpYmxlUmVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShtX2JsZW5kLCB0ZXN0
QmxlbmRpbmdEcmF3UXVhZC0+bmVlZHNCbGVuZGluZygpKTsKICAgICAgICAgRVhQRUNUX0VRKG1f
aGFzUmVuZGVyU3VyZmFjZSwgISFyZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBxdWFkTGlzdC5h
cHBlbmQodGVzdEJsZW5kaW5nRHJhd1F1YWQucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICB2b2lk
IHNldEV4cGVjdGF0aW9uKGJvb2wgYmxlbmQsIGJvb2wgaGFzUmVuZGVyU3VyZmFjZSkKQEAgLTg0
MSw2ICs4NDQsODggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVuZGluZ09m
ZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogCiB9CiAKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgdmlld3BvcnRDb3ZlcmVkKQoreworICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVM
YXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0QmFja2dy
b3VuZENvbG9yKENvbG9yOjpncmF5KTsKKworICAgIEludFNpemUgdmlld3BvcnRTaXplKDEwMCwg
MTAwKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKKwor
ICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihCbGVuZFN0YXRlQ2hlY2tMYXllcjo6Y3JlYXRl
KDApKTsKKyAgICBCbGVuZFN0YXRlQ2hlY2tMYXllciogcm9vdCA9IHN0YXRpY19jYXN0PEJsZW5k
U3RhdGVDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOworICAgIHJvb3QtPnNl
dEV4cGVjdGF0aW9uKGZhbHNlLCB0cnVlKTsKKyAgICByb290LT5zZXRPcGFxdWUodHJ1ZSk7CisK
KyAgICAvLyBObyBndXR0ZXIgcmVjdHMKKyAgICB7CisgICAgICAgIEludFJlY3QgbGF5ZXJSZWN0
KDAsIDAsIDEwMCwgMTAwKTsKKyAgICAgICAgcm9vdC0+c2V0UG9zaXRpb24obGF5ZXJSZWN0Lmxv
Y2F0aW9uKCkpOworICAgICAgICByb290LT5zZXRCb3VuZHMobGF5ZXJSZWN0LnNpemUoKSk7Cisg
ICAgICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMobGF5ZXJSZWN0LnNpemUoKSk7CisgICAgICAg
IHJvb3QtPnNldFF1YWRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJSZWN0LnNpemUoKSkp
OworICAgICAgICByb290LT5zZXRRdWFkVmlzaWJsZVJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBs
YXllclJlY3Quc2l6ZSgpKSk7CisKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVE
YXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3
KGZyYW1lKSk7CisgICAgICAgIEFTU0VSVF9FUSgxdSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUo
KSk7CisKKyAgICAgICAgc2l6ZV90IG51bUd1dHRlclF1YWRzID0gMDsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgp
OyArK2kpCisgICAgICAgICAgICBudW1HdXR0ZXJRdWFkcyArPSAoZnJhbWUucmVuZGVyUGFzc2Vz
WzBdLT5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpID09IENDRHJhd1F1YWQ6OlNvbGlkQ29sb3Ip
ID8gMSA6IDA7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgbnVtR3V0dGVyUXVhZHMpOworICAgICAg
ICBFWFBFQ1RfRVEoMXUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkp
OworCisgICAgICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChmcmFtZS5yZW5kZXJQYXNz
ZXNbMF0tPnF1YWRMaXN0KCksIEludFJlY3QoLWxheWVyUmVjdC5sb2NhdGlvbigpLCB2aWV3cG9y
dFNpemUpKTsKKyAgICB9CisKKyAgICAvLyBFbXB0eSB2aXNpYmxlIGNvbnRlbnQgYXJlYSAoZnVs
bHNjcmVlbiBndXR0ZXIgcmVjdCkKKyAgICB7CisgICAgICAgIEludFJlY3QgbGF5ZXJSZWN0KDAs
IDAsIDAsIDApOworICAgICAgICByb290LT5zZXRQb3NpdGlvbihsYXllclJlY3QubG9jYXRpb24o
KSk7CisgICAgICAgIHJvb3QtPnNldEJvdW5kcyhsYXllclJlY3Quc2l6ZSgpKTsKKyAgICAgICAg
cm9vdC0+c2V0Q29udGVudEJvdW5kcyhsYXllclJlY3Quc2l6ZSgpKTsKKyAgICAgICAgcm9vdC0+
c2V0UXVhZFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllclJlY3Quc2l6ZSgpKSk7CisgICAg
ICAgIHJvb3QtPnNldFF1YWRWaXNpYmxlUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyUmVj
dC5zaXplKCkpKTsKKworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJh
bWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUp
KTsKKyAgICAgICAgQVNTRVJUX0VRKDF1LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKwor
ICAgICAgICBzaXplX3QgbnVtR3V0dGVyUXVhZHMgPSAwOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCk7ICsraSkK
KyAgICAgICAgICAgIG51bUd1dHRlclF1YWRzICs9IChmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1
YWRMaXN0KClbaV0tPm1hdGVyaWFsKCkgPT0gQ0NEcmF3UXVhZDo6U29saWRDb2xvcikgPyAxIDog
MDsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBudW1HdXR0ZXJRdWFkcyk7CisgICAgICAgIEVYUEVD
VF9FUSgxdSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAg
ICAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+
cXVhZExpc3QoKSwgSW50UmVjdCgtbGF5ZXJSZWN0LmxvY2F0aW9uKCksIHZpZXdwb3J0U2l6ZSkp
OworICAgIH0KKworICAgIC8vIENvbnRlbnQgYXJlYSBpbiBtaWRkbGUgb2YgY2xpcCByZWN0IChm
b3VyIHN1cnJvdW5kaW5nIGd1dHRlciByZWN0cykKKyAgICB7CisgICAgICAgIEludFJlY3QgbGF5
ZXJSZWN0KDUwLCA1MCwgMjAsIDIwKTsKKyAgICAgICAgcm9vdC0+c2V0UG9zaXRpb24obGF5ZXJS
ZWN0LmxvY2F0aW9uKCkpOworICAgICAgICByb290LT5zZXRCb3VuZHMobGF5ZXJSZWN0LnNpemUo
KSk7CisgICAgICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMobGF5ZXJSZWN0LnNpemUoKSk7Cisg
ICAgICAgIHJvb3QtPnNldFF1YWRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJSZWN0LnNp
emUoKSkpOworICAgICAgICByb290LT5zZXRRdWFkVmlzaWJsZVJlY3QoSW50UmVjdChJbnRQb2lu
dCgpLCBsYXllclJlY3Quc2l6ZSgpKSk7CisKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6
RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJl
VG9EcmF3KGZyYW1lKSk7CisgICAgICAgIEFTU0VSVF9FUSgxdSwgZnJhbWUucmVuZGVyUGFzc2Vz
LnNpemUoKSk7CisKKyAgICAgICAgc2l6ZV90IG51bUd1dHRlclF1YWRzID0gMDsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCku
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBudW1HdXR0ZXJRdWFkcyArPSAoZnJhbWUucmVuZGVy
UGFzc2VzWzBdLT5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpID09IENDRHJhd1F1YWQ6OlNvbGlk
Q29sb3IpID8gMSA6IDA7CisgICAgICAgIEVYUEVDVF9FUSg0dSwgbnVtR3V0dGVyUXVhZHMpOwor
ICAgICAgICBFWFBFQ1RfRVEoNXUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5z
aXplKCkpOworCisgICAgICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChmcmFtZS5yZW5k
ZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCksIEludFJlY3QoLWxheWVyUmVjdC5sb2NhdGlvbigpLCB2
aWV3cG9ydFNpemUpKTsKKyAgICB9CisKK30KKworCiBjbGFzcyBSZXNoYXBlVHJhY2tlckNvbnRl
eHQ6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QgewogcHVibGljOgogICAgIFJlc2hh
cGVUcmFja2VyQ29udGV4dCgpIDogbV9yZXNoYXBlQ2FsbGVkKGZhbHNlKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmlu
ZGV4IGUyMjVkMjZkYjJiOTI5NThlZWJjZTMyZmQ5NWMxZDY1NzJkMjUzYWYuLjJkNzRhNGVlYWE1
MTRmM2U5NmVhYTJiMmQ5ZGViOGRlMTFjMjU3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTI2Myw2ICsxMjYz
LDM4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsTXVsdGlwbGVSZWRyYXcsIERJ
U0FCTEVEX3J1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3RUaHJlYWRlZCgpOwogfQogCisvLyBU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBwcm9wZXJ0aWVzIG9uIHRoZSBsYXllciB0cmVlIGhvc3Qg
YXJlIGNvbW1pdGVkIHRvIHRoZSBpbXBsIHNpZGUuCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0
Q29tbWl0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgeworcHVibGljOgorCisgICAgQ0NM
YXllclRyZWVIb3N0VGVzdENvbW1pdCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVz
dCgpCisgICAgeworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRT
aXplKDIwLCAyMCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldEJhY2tncm91bmRDb2xv
cihDb2xvcjo6Z3JheSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0UGFnZVNjYWxlRmFj
dG9yQW5kTGltaXRzKDUsIDUsIDUpOworCisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFp
blRocmVhZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NU
aHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB7CisgICAgICAgIEVYUEVDVF9F
UShJbnRTaXplKDIwLCAyMCksIGltcGwtPnZpZXdwb3J0U2l6ZSgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKENvbG9yOjpncmF5LCBpbXBsLT5iYWNrZ3JvdW5kQ29sb3IoKSk7CisgICAgICAgIEVYUEVD
VF9FUSg1LCBpbXBsLT5wYWdlU2NhbGUoKSk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKSB7IH0KK307CisKK1RFU1RfRihDQ0xheWVy
VHJlZUhvc3RUZXN0Q29tbWl0LCBydW5UZXN0KQoreworICAgIHJ1blRlc3QodHJ1ZSk7Cit9CisK
IC8vIFZlcmlmaWVzIHRoYXQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24gZXZlbnRzIHByb3BhZ2F0
ZSBjb3JyZWN0bHkgZnJvbSBDQ0xheWVyVHJlZUhvc3QgdG8KIC8vIENDTGF5ZXJUcmVlSG9zdElt
cGwgaW4gdGhlIE1UIGNvbXBvc2l0b3IuCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0U3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24gOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CkBAIC0xNzY5
LDkgKzE4MDEsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNvbnRl
bnRPcGFxdWVSZWdpb24oKSBjb25zdCB7IHJldHVybiBpbnRlcnNlY3Rpb24obV9vcGFxdWVDb250
ZW50c1JlY3QsIHZpc2libGVMYXllclJlY3QoKSk7IH0KLSAgICB2b2lkIHNldE9wYXF1ZUNvbnRl
bnRzUmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVDb250ZW50c1JlY3QpIHsgbV9vcGFxdWVDb250
ZW50c1JlY3QgPSBvcGFxdWVDb250ZW50c1JlY3Q7IH0KLQogICAgIGNvbnN0IFJlZ2lvbiYgb2Nj
bHVkZWRTY3JlZW5TcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2NjbHVkZWRTY3JlZW5TcGFjZTsg
fQogICAgIHZvaWQgY2xlYXJPY2NsdWRlZFNjcmVlblNwYWNlKCkgeyBtX29jY2x1ZGVkU2NyZWVu
U3BhY2UgPSBSZWdpb24oKTsgfQogCkBAIC0xNzc5LDcgKzE4MDgsNiBAQCBwcml2YXRlOgogICAg
IFRlc3RMYXllckNocm9taXVtKCkgOiBMYXllckNocm9taXVtKCkgeyB9CiAKICAgICBSZWdpb24g
bV9vY2NsdWRlZFNjcmVlblNwYWNlOwotICAgIEludFJlY3QgbV9vcGFxdWVDb250ZW50c1JlY3Q7
CiB9OwogCiBzdGF0aWMgdm9pZCBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKFRlc3RMYXll
ckNocm9taXVtKiBsYXllciwgTGF5ZXJDaHJvbWl1bSogcGFyZW50LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3IsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQpA
QCAtMTk5Niw0NiArMjAyNCw2IEBAIHB1YmxpYzoKIAogU0lOR0xFX0FORF9NVUxUSV9USFJFQURf
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RMYXllck9jY2x1c2lvbikKIAotY2xhc3MgQ0NMYXll
clRyZWVIb3N0VGVzdENvbnRlbnRMYXllck9jY2x1c2lvbiA6IHB1YmxpYyBDQ0xheWVyVHJlZUhv
c3RUZXN0IHsKLXB1YmxpYzoKLSAgICBDQ0xheWVyVHJlZUhvc3RUZXN0Q29udGVudExheWVyT2Nj
bHVzaW9uKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKLSAgICB7Ci0gICAg
ICAgIFJlZlB0cjxUZXN0TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyID0gVGVzdExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOwotICAgICAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IGNoaWxkID0g
VGVzdExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotCi0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGlkZW50aXR5TWF0cml4OwotICAgICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHJvb3RMYXllci5nZXQoKSwgMCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCB0cnVlKTsKLSAgICAgICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgcm9vdExheWVyLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXpl
KDUwLCA1MCksIGZhbHNlKTsKLQotICAgICAgICBjaGlsZC0+c2V0T3BhcXVlQ29udGVudHNSZWN0
KEludFJlY3QoMTAsIDEwLCAyMCwgMjApKTsKLQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFJvb3RMYXllcihyb290TGF5ZXIpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdw
b3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnMoKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgp
OwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgY2hpbGQtPm9jY2x1ZGVkU2Ny
ZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgY2hpbGQtPm9jY2x1
ZGVkU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCg0MCwgNDAsIDIwLCAyMCksIHJvb3RMYXllci0+b2NjbHVkZWRTY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCByb290TGF5ZXItPm9jY2x1ZGVk
U2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgLy8gS2lsbCB0aGUgbGF5
ZXJUcmVlSG9zdCBpbW1lZGlhdGVseS4KLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290
TGF5ZXIoMCk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5jbGVhcigpOwotCi0gICAgICAgIGVu
ZFRlc3QoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKLSAgICB7Ci0g
ICAgfQotfTsKLQotU0lOR0xFX0FORF9NVUxUSV9USFJFQURfVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dFRlc3RDb250ZW50TGF5ZXJPY2NsdXNpb24pCi0KIGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RM
YXllck9jY2x1c2lvbldpdGhGaWx0ZXJzIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3Qgewog
cHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RMYXllck9jY2x1c2lvbldpdGhGaWx0ZXJz
KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVz
aW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1
c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCBiMWE2ZjNhOWUzYTUwNTljYTFkYWM3Yzg1ZjgyZWNj
YWRjYjdmOTIxLi5mMDQ3OTQwNmQzM2M3N2JhNWFiMGQ4OWFiMzg1OGVlOTRjMGZmYmFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdC5jcHAKQEAgLTU0LDIzICs1NCw1MyBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBUZXN0
Q29udGVudExheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0g
ICAgVGVzdENvbnRlbnRMYXllckNocm9taXVtKCkgOiBMYXllckNocm9taXVtKCkgeyB9CisgICAg
VGVzdENvbnRlbnRMYXllckNocm9taXVtKCkKKyAgICAgICAgOiBMYXllckNocm9taXVtKCkKKyAg
ICAgICAgLCBtX292ZXJyaWRlT3BhcXVlQ29udGVudHNSZWN0KGZhbHNlKQorICAgIHsKKyAgICB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgUmVnaW9uIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3Qg
eyByZXR1cm4gaW50ZXJzZWN0aW9uKG1fb3BhcXVlQ29udGVudHNSZWN0LCB2aXNpYmxlTGF5ZXJS
ZWN0KCkpOyB9Ci0gICAgdm9pZCBzZXRPcGFxdWVDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYg
b3BhcXVlQ29udGVudHNSZWN0KSB7IG1fb3BhcXVlQ29udGVudHNSZWN0ID0gb3BhcXVlQ29udGVu
dHNSZWN0OyB9CisgICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24o
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fb3ZlcnJpZGVPcGFxdWVDb250ZW50c1JlY3Qp
CisgICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0aW9uKG1fb3BhcXVlQ29udGVudHNSZWN0LCB2
aXNpYmxlTGF5ZXJSZWN0KCkpOworICAgICAgICByZXR1cm4gTGF5ZXJDaHJvbWl1bTo6dmlzaWJs
ZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKKyAgICB9CisgICAgdm9pZCBzZXRPcGFxdWVDb250ZW50
c1JlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlQ29udGVudHNSZWN0KQorICAgIHsKKyAgICAgICAg
bV9vdmVycmlkZU9wYXF1ZUNvbnRlbnRzUmVjdCA9IHRydWU7CisgICAgICAgIG1fb3BhcXVlQ29u
dGVudHNSZWN0ID0gb3BhcXVlQ29udGVudHNSZWN0OworICAgIH0KIAogcHJpdmF0ZToKKyAgICBi
b29sIG1fb3ZlcnJpZGVPcGFxdWVDb250ZW50c1JlY3Q7CiAgICAgSW50UmVjdCBtX29wYXF1ZUNv
bnRlbnRzUmVjdDsKIH07CiAKIGNsYXNzIFRlc3RDb250ZW50TGF5ZXJJbXBsIDogcHVibGljIEND
TGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBUZXN0Q29udGVudExheWVySW1wbChpbnQgaWQpIDog
Q0NMYXllckltcGwoaWQpIHsgc2V0RHJhd3NDb250ZW50KHRydWUpOyB9CisgICAgVGVzdENvbnRl
bnRMYXllckltcGwoaW50IGlkKQorICAgICAgICA6IENDTGF5ZXJJbXBsKGlkKQorICAgICAgICAs
IG1fb3ZlcnJpZGVPcGFxdWVDb250ZW50c1JlY3QoZmFsc2UpCisgICAgeworICAgICAgICBzZXRE
cmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgfQorCisgICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNv
bnRlbnRPcGFxdWVSZWdpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fb3ZlcnJpZGVP
cGFxdWVDb250ZW50c1JlY3QpCisgICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0aW9uKG1fb3Bh
cXVlQ29udGVudHNSZWN0LCB2aXNpYmxlTGF5ZXJSZWN0KCkpOworICAgICAgICByZXR1cm4gQ0NM
YXllckltcGw6OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CisgICAgfQorICAgIHZvaWQg
c2V0T3BhcXVlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZUNvbnRlbnRzUmVjdCkK
KyAgICB7CisgICAgICAgIG1fb3ZlcnJpZGVPcGFxdWVDb250ZW50c1JlY3QgPSB0cnVlOworICAg
ICAgICBtX29wYXF1ZUNvbnRlbnRzUmVjdCA9IG9wYXF1ZUNvbnRlbnRzUmVjdDsKKyAgICB9CiAK
LSAgICB2aXJ0dWFsIFJlZ2lvbiB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0IHsg
cmV0dXJuIGludGVyc2VjdGlvbihtX29wYXF1ZUNvbnRlbnRzUmVjdCwgdmlzaWJsZUxheWVyUmVj
dCgpKTsgfQotICAgIHZvaWQgc2V0T3BhcXVlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIG9w
YXF1ZUNvbnRlbnRzUmVjdCkgeyBtX29wYXF1ZUNvbnRlbnRzUmVjdCA9IG9wYXF1ZUNvbnRlbnRz
UmVjdDsgfQogcHJpdmF0ZToKKyAgICBib29sIG1fb3ZlcnJpZGVPcGFxdWVDb250ZW50c1JlY3Q7
CiAgICAgSW50UmVjdCBtX29wYXF1ZUNvbnRlbnRzUmVjdDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXgg
NTdjYWE3ZGMxNzE0YTFmOWU1MmU1MjFjNThkNDAzOTI1MzUzN2JiOS4uNjBjYmY5ZmVmMmU3ZTc3
OWVhZDEwN2I5MTc5MDM1ZTNmYmQ0ZDQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTI2Miw3NiArMjYyLDQg
QEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGlsZU9wYXF1ZVJlY3RGb3JMYXllck5vQm9y
ZGVycykKICAgICB9CiB9CiAKLVRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGJhY2tncm91bmRD
b3ZlcnNWaWV3cG9ydCkKLXsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2NvcGVkSW1w
bFRocmVhZDsKLQotICAgIGNvbnN0IEludFNpemUgdGlsZVNpemUoMTAsIDEwKTsKLSAgICBjb25z
dCBpbnQgbnVtVGlsZXNYID0gMjsKLSAgICBjb25zdCBpbnQgbnVtVGlsZXNZID0gMjsKLSAgICBj
b25zdCB1bnNpZ25lZCBudW1UaWxlcyA9IG51bVRpbGVzWCAqIG51bVRpbGVzWTsKLSAgICBjb25z
dCBJbnRTaXplIGxheWVyU2l6ZSh0aWxlU2l6ZS53aWR0aCgpICogbnVtVGlsZXNYLCB0aWxlU2l6
ZS5oZWlnaHQoKSAqIG51bVRpbGVzWSk7Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxh
eWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGluZ0RhdGE6
Ok5vQm9yZGVyVGV4ZWxzKTsKLSAgICBsYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpn
cmF5KTsKLSAgICBsYXllci0+c2V0QmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KHRydWUpOwotCi0g
ICAgLy8gTm8gZ3V0dGVyIHJlY3RzCi0gICAgewotICAgICAgICBJbnRSZWN0IGNsaXBSZWN0ID0g
SW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpOwotICAgICAgICBsYXllci0+c2V0Q2xpcFJl
Y3QoY2xpcFJlY3QpOwotICAgICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0
KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwotCi0gICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwot
Ci0gICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgYm9vbCB1c2Vk
Q2hlY2tlcmJvYXJkID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3Vs
bGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwotICAgICAgICBF
WFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgbnVtVGlsZXMpOwotCi0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKTsg
KytpKQotICAgICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKVtpXS0+bWF0
ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KTsKLSAgICB9Ci0KLSAgICAvLyBFbXB0
eSB2aXNpYmxlIGNvbnRlbnQgYXJlYSAoZnVsbHNjcmVlbiBndXR0ZXIgcmVjdCkKLSAgICB7Ci0g
ICAgICAgIEludFJlY3QgY2xpcFJlY3QgPSBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCk7Ci0g
ICAgICAgIGxheWVyLT5zZXRDbGlwUmVjdChjbGlwUmVjdCk7Ci0gICAgICAgIGxheWVyLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoKSk7Ci0KLSAgICAgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7
Ci0gICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgYm9vbCB1c2Vk
Q2hlY2tlcmJvYXJkID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3Vs
bGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwotCi0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKVtpXS0+bWF0ZXJp
YWwoKSwgQ0NEcmF3UXVhZDo6U29saWRDb2xvcik7Ci0KLSAgICAgICAgdmVyaWZ5UXVhZHNFeGFj
dGx5Q292ZXJSZWN0KHF1YWRDdWxsZXIucXVhZExpc3QoKSwgY2xpcFJlY3QpOwotICAgIH0KLQot
ICAgIC8vIENvbnRlbnQgYXJlYSBpbiBtaWRkbGUgb2YgY2xpcCByZWN0IChmb3VyIHN1cnJvdW5k
aW5nIGd1dHRlciByZWN0cykKLSAgICB7Ci0gICAgICAgIEludFJlY3QgY2xpcFJlY3QgPSBJbnRS
ZWN0KC01MCwgLTUwLCAxMDAsIDEwMCk7Ci0gICAgICAgIGxheWVyLT5zZXRDbGlwUmVjdChjbGlw
UmVjdCk7Ci0gICAgICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9p
bnQoKSwgbGF5ZXJTaXplKSk7Ci0KLSAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBz
aGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0gICAgICAg
IE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgYm9vbCB1c2VkQ2hlY2tlcmJv
YXJkID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFy
ZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwotCi0gICAgICAgIHVuc2lnbmVk
IG51bUNvbnRlbnRUaWxlcyA9IDAsIG51bUd1dHRlclRpbGVzID0gMDsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgIGlmIChxdWFkQ3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCkgPT0gQ0NE
cmF3UXVhZDo6VGlsZWRDb250ZW50KQotICAgICAgICAgICAgICAgIG51bUNvbnRlbnRUaWxlcysr
OwotICAgICAgICAgICAgZWxzZSBpZiAocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlh
bCgpID09IENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IpCi0gICAgICAgICAgICAgICAgbnVtR3V0dGVy
VGlsZXMrKzsKLSAgICAgICAgfQotICAgICAgICBFWFBFQ1RfRVEobnVtQ29udGVudFRpbGVzLCBu
dW1UaWxlcyk7Ci0gICAgICAgIEVYUEVDVF9HRShudW1HdXR0ZXJUaWxlcywgNHUpOwotCi0gICAg
ICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFkQ3VsbGVyLnF1YWRMaXN0KCksIGNs
aXBSZWN0KTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGU3ZGUzNTZkZDBk
YTM4YTMxYjg5NmIyZDdhOWM0OGE5YjFhMzZjMjMuLmYzZjk4Y2ZhNzA0ODM3ZjQyYWEyN2QyYjhj
OTRiMThjZmI0YzRjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01MDYsNyArNTA2LDYgQEAgVEVTVF9GKExheWVyQ2hy
b21pdW1UZXN0LCBjaGVja1Byb3BlcnR5Q2hhbmdlQ2F1c2VzQ29ycmVjdEJlaGF2aW9yKQogICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXll
ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgxLjIzZiwgNC41NmYpKSk7CiAgICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRB
bmNob3JQb2ludFooMC43ZikpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09N
TUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKDAuNGYs
IDAuNGYsIDAuNGYpKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRf
QkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQodHJ1ZSkp
OwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRl
c3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRNYXNrTGF5ZXIoZHVt
bXlMYXllci5nZXQoKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlU
X0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0T3BhY2l0eSgwLjVmKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136261</attachid>
            <date>2012-04-09 10:29:13 -0700</date>
            <delta_ts>2012-04-09 10:44:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83351-20120409132911.patch</filename>
            <type>text/plain</type>
            <size>53700</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhMThmMDA3YTE4MjNi
MTY4NzQyYjA1YmMxMmZkMTQ3MWQyMTgxYmJkLi43NmJlODYwMDE3NTc2ZTcyM2ZhOGM2YjYyMTUz
NGM0ZDllZDI5MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNC0wNiAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFZpZXdwb3J0IGlzIG5vdCBmaWxsZWQgd2hlbiBvdXQgb2YgdGV4dHVyZSBtZW1vcnkgb24gbWFj
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzM1MQor
CisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3
KToKKwogMjAxMi0wNC0wNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIGZpZ3VyZSBvdXQgaG93IHRvIGV4cG9ydCB3ZWJjb3JlIHN5bWJvbHMgZnJvbSB3ZWJraXQu
ZGxsIHByb3Blcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y2OGQ2YzcwZmQ4MjY2NTllYTRlNjE3YWFmNDNj
ZWVkNjEwNzlhMy4uYWIxZDQ5MTBhYTEwOGUwOTNhY2QyOTQ2MDQxMzVlYWQ0ZjI5YWZjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA0LTA2ICBEYW5hIEphbnNlbnMgIDxkYW5h
a2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVmlld3BvcnQgaXMgbm90IGZp
bGxlZCB3aGVuIG91dCBvZiB0ZXh0dXJlIG1lbW9yeSBvbiBtYWMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMzUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAgICAgIEN1cnJlbnRseSB3ZSBhZGQgZ3V0dGVyIHF1
YWRzIG9uIHRoZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3QgbGF5ZXIsCisgICAgICAgIHdoaWNo
IGxpZXMgYWJvdmUgYW5vdGhlciB2aXNpYmxlIGxheWVyIC0gdGhlIHJ1YmJlcmJhbmQgbGF5ZXIg
b24gbWFjLgorICAgICAgICBGb3IgdGhpcyByZWFzb24sIG9uIG1hYywgZ3V0dGVyIHF1YWRzIHdl
cmUgZGlzYWJsZWQsIGFzIHdlbGwgYXMgZm9yY2luZworICAgICAgICB0aGUgTkNDSCBsYXllciB0
byBkcmF3LCBpbiBvcmRlciB0byBtYWtlIHRoZSBydWJiZXJiYW5kIGxheWVyIGFwcGVhci4KKwor
ICAgICAgICBXZSBtb3ZlIHRoZSBsb2dpYyBmb3IgYWRkaW5nIGd1dHRlciBxdWFkcyBpbnRvIEND
UmVuZGVyUGFzcywgYW5kIGFkZAorICAgICAgICBndXR0ZXIgcXVhZHMgZm9yIGFsbCBwaXhlbHMg
dGhhdCBhcmUgdmlzaWJsZSB0aHJvdWdoIHRoZSB2aWV3cG9ydC4KKyAgICAgICAgVGhpcyBhbGxv
d3MgdXMgdG8gc3RvcCBzcGVjaWFsLWNhc2luZyB0aGUgTkNDSCBsYXllciwgYW5kIGFsbG93cyB1
cworICAgICAgICB0byBza2lwIGRyYXdpbmcgdGhlIGxheWVyIGVxdWFsbHkgd2l0aCBvdGhlciBs
YXllcnMuIFdlIHJlbW92ZSB0aGUKKyAgICAgICAgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KCkg
ZmxhZyBlbnRpcmVseS4KKworICAgICAgICBJbiBvcmRlciB0byBkbyB0aGlzLCB3ZSBmaXggYSBi
dWcgaW4gdGhlIG9jY2x1c2lvbiB0cmFja2VyLCB0aGF0CisgICAgICAgIGFsbG93ZWQgb3BhcXVl
KCkgbGF5ZXJzIHdpdGggc2tpcHNEcmF3IHRvIG9jY2x1ZGUsIGJ5IG1ha2luZworICAgICAgICB0
aGUgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKSBtZXRob2Qgb24gdGhlIGxheWVyIGNsYXNz
ZXMKKyAgICAgICAgYWxzbyByZXR1cm4gdGhlIG9wYXF1ZSByZWdpb24gZm9yIG5vbi10aWxlZCBs
YXllcnMsIGFsd2F5cyB1c2UKKyAgICAgICAgaXRzIHZhbHVlIGluIHRoZSBvY2NsdXNpb24gdHJh
Y2tlci4KKworICAgICAgICBVbml0IHRlc3Q6IENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LnZpZXdw
b3J0Q292ZXJlZAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpMYXllckNocm9t
aXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6dmlzaWJsZUNvbnRlbnRPcGFxdWVS
ZWdpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGls
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp2aXNpYmxlQ29udGVu
dE9wYXF1ZVJlZ2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OkNDTGF5ZXJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjp2aXNpYmxlQ29udGVudE9wYXF1
ZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcklt
cGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbkltcGxUaHJlYWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAg
ICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3Nlcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YmFja2dyb3VuZENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZU9jY2x1c2lvbkJlaGluZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5oOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlOjpjb21wdXRlVmlzaWJs
ZVJlZ2lvbkluU2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjphcHBl
bmRRdWFkc1RvRmlsbFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ0NSZW5kZXJQYXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
VGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRM
YXllckltcGw6OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpza2lwc0RyYXcpOgorICAgICAgICAoQ0NUaWxlZExheWVy
SW1wbCk6CisKIDIwMTItMDQtMDkgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIENyb3NzLW9yaWdpbiBwcmVmbGlnaHQgcmVxdWVzdCBzaG91bGQgbm90IGluY2x1
ZGUgY3JlZGVudGlhbHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZiNTljMzlhMzE4
Y2U1YWI5ZmEzNzgxODRkYzhhNjdmYjFkMmRjMTUuLmFlYTEwZmUxNzE5Y2UzNmE4YzMxODJiNDcz
NTg4ZDliODIyZGJlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTItMDQtMDYgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBWaWV3cG9ydCBpcyBub3QgZmlsbGVkIHdoZW4gb3V0IG9mIHRleHR1
cmUgbWVtb3J5IG9uIG1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODMzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIuCisK
KyAgICAgICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldEJhY2tncm91
bmRDb2xvcik6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsQ29udGVudFBhaW50ZXI6OnBhaW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2
ZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkJsZW5kU3RhdGVDaGVja0xh
eWVyOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAgICAg
ICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0KToK
KyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdENvbW1pdDo6Q0NMYXllclRyZWVIb3N0
VGVzdENvbW1pdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXQ6OmJl
Z2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXQ6OmNvbW1p
dENvbXBsZXRlT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RD
b21taXQ6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisgICAgICAgIChUZXN0
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5j
cHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VGVzdENvbnRlbnRMYXllckNocm9taXVtOjpUZXN0
Q29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRlc3RDb250ZW50
TGF5ZXJDaHJvbWl1bTo6dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OlRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bTo6c2V0T3BhcXVlQ29udGVudHNSZWN0
KToKKyAgICAgICAgKFRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6VGVzdENvbnRlbnRMYXllckltcGw6OlRlc3RDb250ZW50TGF5ZXJJbXBsKToKKyAgICAg
ICAgKFRlc3RDb250ZW50TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpUZXN0Q29u
dGVudExheWVySW1wbDo6dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OlRlc3RDb250ZW50TGF5ZXJJbXBsOjpzZXRPcGFxdWVDb250ZW50c1JlY3QpOgor
ICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0
cy9MYXllckNocm9taXVtVGVzdC5jcHA6CisKIDIwMTItMDQtMDkgIERhbmEgSmFuc2VucyAgPGRh
bmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBNYWtlIGN1bGxpbmcgd29y
ayB3aXRoIGNsaXBwZWQgcmVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggMmExNmM4NjcwNWMzYjkyY2NiNGU4ZWQ0YzBi
OWEzZDYwZmEyMWNmNC4uNmUzMGQ4MGQ4YjJiNjU4MzlhYzA2MTRlOTM5OGEzZTQ2NGVmMThjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgV2ViTGF5ZXJUcmVlVmlld19oCiAjZGVm
aW5lIFdlYkxheWVyVHJlZVZpZXdfaAogCisjaW5jbHVkZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRl
ICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCiAKQEAgLTEwOCw2ICsx
MDksOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0U2l6ZShj
b25zdCBXZWJTaXplJik7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIHZpZXdwb3J0U2l6ZSgp
IGNvbnN0OwogCisgICAgLy8gU2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHZpZXdw
b3J0LgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2Vi
Q29sb3ImKTsKKwogICAgIC8vIFNldHMgd2hldGhlciB0aGlzIHZpZXcgaXMgdmlzaWJsZS4gSW4g
dGhyZWFkZWQgbW9kZSwgYSB2aWV3IHRoYXQgaXMgbm90IHZpc2libGUgd2lsbCBub3QKICAgICAv
LyBjb21wb3NpdGUgb3IgdHJpZ2dlciB1cGRhdGVBbmltYXRpb25zKCkgb3IgbGF5b3V0KCkgY2Fs
bHMgdW50aWwgaXQgYmVjb21lcyB2aXNpYmxlLgogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRW
aXNpYmxlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCAyYWQwOWI5NDhhNDNiYjNj
ZTNhNzE5NTFmYzdiNWQ5ZTEzMDBlYTU1Li5mM2U5YTBkOTc2MTBjNWEzYmRkZmVkNzg0ZWI1ZGUw
ZDZiNmQxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtNjYsNyArNjYsNiBAQCBMYXll
ckNocm9taXVtOjpMYXllckNocm9taXVtKCkKICAgICAsIG1fbm9uRmFzdFNjcm9sbGFibGVSZWdp
b25DaGFuZ2VkKGZhbHNlKQogICAgICwgbV9hbmNob3JQb2ludCgwLjUsIDAuNSkKICAgICAsIG1f
YmFja2dyb3VuZENvbG9yKDAsIDAsIDAsIDApCi0gICAgLCBtX2JhY2tncm91bmRDb3ZlcnNWaWV3
cG9ydChmYWxzZSkKICAgICAsIG1fZGVidWdCb3JkZXJXaWR0aCgwKQogICAgICwgbV9vcGFjaXR5
KDEuMCkKICAgICAsIG1fYW5jaG9yUG9pbnRaKDApCkBAIC0yNzAsMTQgKzI2OSw2IEBAIHZvaWQg
TGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5k
Q29sb3IpCiAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAotdm9pZCBMYXllckNocm9taXVtOjpz
ZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQoYm9vbCBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQp
Ci17Ci0gICAgaWYgKG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0ID09IGJhY2tncm91bmRDb3Zl
cnNWaWV3cG9ydCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdw
b3J0ID0gYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0OwotICAgIHNldE5lZWRzQ29tbWl0KCk7Ci19
Ci0KIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3Vu
ZHMpCiB7CiAgICAgaWYgKG1fbWFza3NUb0JvdW5kcyA9PSBtYXNrc1RvQm91bmRzKQpAQCAtNDUz
LDcgKzQ0NCw2IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVy
SW1wbCogbGF5ZXIpCiAgICAgbGF5ZXItPnNldEFuY2hvclBvaW50KG1fYW5jaG9yUG9pbnQpOwog
ICAgIGxheWVyLT5zZXRBbmNob3JQb2ludFoobV9hbmNob3JQb2ludFopOwogICAgIGxheWVyLT5z
ZXRCYWNrZ3JvdW5kQ29sb3IobV9iYWNrZ3JvdW5kQ29sb3IpOwotICAgIGxheWVyLT5zZXRCYWNr
Z3JvdW5kQ292ZXJzVmlld3BvcnQobV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpOwogICAgIGxh
eWVyLT5zZXRCb3VuZHMobV9ib3VuZHMpOwogICAgIGxheWVyLT5zZXRDb250ZW50Qm91bmRzKGNv
bnRlbnRCb3VuZHMoKSk7CiAgICAgbGF5ZXItPnNldERlYnVnQm9yZGVyQ29sb3IobV9kZWJ1Z0Jv
cmRlckNvbG9yKTsKQEAgLTYzMSw2ICs2MjEsMTMgQEAgdm9pZCBMYXllckNocm9taXVtOjpub3Rp
ZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50JiBldmVudCwK
ICAgICBtX2xheWVyQW5pbWF0aW9uRGVsZWdhdGUtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQod2Fs
bENsb2NrVGltZSk7CiB9CiAKK1JlZ2lvbiBMYXllckNocm9taXVtOjp2aXNpYmxlQ29udGVudE9w
YXF1ZVJlZ2lvbigpIGNvbnN0Cit7CisgICAgaWYgKG9wYXF1ZSgpKQorICAgICAgICByZXR1cm4g
dmlzaWJsZUxheWVyUmVjdCgpOworICAgIHJldHVybiBSZWdpb24oKTsKK30KKwogdm9pZCBzb3J0
TGF5ZXJzKFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0b3IsIFZlY3RvcjxS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0b3IsIHZvaWQqKQogewogICAgIC8vIEN1cnJl
bnRseSB3ZSBkb24ndCB1c2Ugei1vcmRlciB0byBkZWNpZGUgd2hhdCB0byBwYWludCwgc28gdGhl
cmUncyBubyBuZWVkIHRvIGFjdHVhbGx5IHNvcnQgTGF5ZXJDaHJvbWl1bXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmgKaW5kZXggYjk4MDIyYjUyZGE1OGI5MTk3Y2JmNTQ0OGNiNmQ0MGE5YTA3YzI3MC4uZjQx
OGRmZDRiYWU1Yzg4MDEwMDRlNmM5N2JlZWEwZjE4MWRjYjUxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aApAQCAtOTksOSArOTksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3Io
Y29uc3QgQ29sb3ImKTsKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tncm91bmRDb2xvcjsgfQogCi0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ292ZXJzVmll
d3BvcnQoYm9vbCk7Ci0gICAgYm9vbCBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydDsgfQotCiAgICAgdm9pZCBzZXRCb3Vu
ZHMoY29uc3QgSW50U2l6ZSYpOwogICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50Qm91bmRzKCkg
Y29uc3QgeyByZXR1cm4gYm91bmRzKCk7IH0KIApAQCAtMjQ2LDcgKzI0Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBDQ0FuaW1hdGlvblN0YXJ0
ZWRFdmVudCYsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKIAotICAgIHZpcnR1YWwgUmVnaW9uIHZp
c2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gUmVnaW9uKCk7IH07Cisg
ICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bSogdG9TY3JvbGxiYXJMYXllckNocm9t
aXVtKCkgeyByZXR1cm4gMDsgfQogCkBAIC0zMDUsNyArMzAyLDYgQEAgcHJpdmF0ZToKICAgICBG
bG9hdFBvaW50IG1fcG9zaXRpb247CiAgICAgRmxvYXRQb2ludCBtX2FuY2hvclBvaW50OwogICAg
IENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwotICAgIGJvb2wgbV9iYWNrZ3JvdW5kQ292ZXJzVmll
d3BvcnQ7CiAgICAgQ29sb3IgbV9kZWJ1Z0JvcmRlckNvbG9yOwogICAgIGZsb2F0IG1fZGVidWdC
b3JkZXJXaWR0aDsKICAgICBTdHJpbmcgbV9kZWJ1Z05hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcAppbmRleCAxMmIyYzVkNDliZmIzYzJhZmQyOTU4NTk3OGNhYjA3ZmQ1ODUzYjgx
Li4yNjYxZDg3MWJiMzRhMTZkOWQ0NDhjNmQ5ZWI0M2ZiMmJjNWMyMDNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ1NCwxMCArNDU0LDcgQEAgdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0
b3AsIGludAogICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5yZXNlcnZl
KG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsKICAgICAgICAgICAgICAg
ICBtX3NraXBzSWRsZVBhaW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAoIWlkbGUpIHsK
LSAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJhY2tncm91bmQgY292ZXJzIHRoZSB2aWV3
cG9ydCwgYWx3YXlzIGRyYXcgdGhpcwotICAgICAgICAgICAgICAgICAgICAvLyBsYXllciBzbyB0
aGF0IGNoZWNrZXJib2FyZGVkIHRpbGVzIHdpbGwgc3RpbGwgZHJhdy4KLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9za2lwc0Ry
YXcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBtX3RpbGVyLT5yZXNldCgpOwogICAgICAg
ICAgICAgICAgICAgICBtX3BhaW50UmVjdCA9IEludFJlY3QoKTsKICAgICAgICAgICAgICAgICAg
ICAgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QgPSBJbnRSZWN0KCk7CkBAIC01ODAsNyArNTc3
LDggQEAgUmVnaW9uIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdp
b24oKSBjb25zdAogewogICAgIGlmIChtX3NraXBzRHJhdykKICAgICAgICAgcmV0dXJuIFJlZ2lv
bigpOwotCisgICAgaWYgKG9wYXF1ZSgpKQorICAgICAgICByZXR1cm4gdmlzaWJsZUxheWVyUmVj
dCgpOwogICAgIHJldHVybiBtX3RpbGVyLT5vcGFxdWVSZWdpb25JbkxheWVyUmVjdCh2aXNpYmxl
TGF5ZXJSZWN0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggMmFmYjlkOGZm
NzQxZjkzMzU5NTY2YTE2OWZkNDM3Mjk3MDJhNzk2OS4uYTJhNDE4NTMyOWI4ZDlhZmQ5MmQ2Y2M0
YTA1MmZkYjcxOGE4Y2IzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtNTAsNyArNTAs
NiBAQCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQogICAgICwgbV9zY3JvbGxhYmxl
KGZhbHNlKQogICAgICwgbV9zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoZmFsc2UpCiAgICAgLCBt
X2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMoZmFsc2UpCi0gICAgLCBtX2JhY2tncm91bmRDb3ZlcnNW
aWV3cG9ydChmYWxzZSkKICAgICAsIG1fZG91YmxlU2lkZWQodHJ1ZSkKICAgICAsIG1fbGF5ZXJQ
cm9wZXJ0eUNoYW5nZWQoZmFsc2UpCiAgICAgLCBtX21hc2tzVG9Cb3VuZHMoZmFsc2UpCkBAIC0x
MzYsNDMgKzEzNSw2IEBAIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDTGF5ZXJJbXBs
OjpjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSBjb25zdAogICAgIHJldHVybiBDQ1NoYXJlZFF1YWRT
dGF0ZTo6Y3JlYXRlKHF1YWRUcmFuc2Zvcm0oKSwgZHJhd1RyYW5zZm9ybSgpLCB2aXNpYmxlTGF5
ZXJSZWN0KCksIGxheWVyQ2xpcFJlY3QsIGRyYXdPcGFjaXR5KCksIG9wYXF1ZSgpKTsKIH0KIAot
dm9pZCBDQ0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCi17Ci0gICAgYXBw
ZW5kR3V0dGVyUXVhZHMocXVhZExpc3QsIHNoYXJlZFF1YWRTdGF0ZSk7Ci19Ci0KLXZvaWQgQ0NM
YXllckltcGw6OmFwcGVuZEd1dHRlclF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUpCi17Ci0gICAgaWYgKCFiYWNrZ3Jv
dW5kQ292ZXJzVmlld3BvcnQoKSB8fCAhYmFja2dyb3VuZENvbG9yKCkuaXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2aXNpYmxlTGF5
ZXJSZWN0KCk7Ci0gICAgSW50UmVjdCBjbGlwID0gc2NyZWVuU3BhY2VUcmFuc2Zvcm0oKS5pbnZl
cnNlKCkubWFwUmVjdChjbGlwUmVjdCgpKTsKLQotICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRl
KHNoYXJlZFF1YWRTdGF0ZSwgY2xpcCwgYmFja2dyb3VuZENvbG9yKCkpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEludFJlY3QgZ3V0dGVyUmVjdHNbNF07Ci0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCA0OyBpKyspCi0gICAgICAgIGd1dHRlclJlY3RzW2ldID0gY2xpcDsKLSAgICBn
dXR0ZXJSZWN0c1swXS5zaGlmdE1heFlFZGdlVG8obGF5ZXJSZWN0LnkoKSk7Ci0gICAgZ3V0dGVy
UmVjdHNbMV0uc2hpZnRZRWRnZVRvKGxheWVyUmVjdC5tYXhZKCkpOwotICAgIGd1dHRlclJlY3Rz
WzJdLnNoaWZ0TWF4WEVkZ2VUbyhsYXllclJlY3QueCgpKTsKLSAgICBndXR0ZXJSZWN0c1szXS5z
aGlmdFhFZGdlVG8obGF5ZXJSZWN0Lm1heFgoKSk7Ci0KLSAgICBndXR0ZXJSZWN0c1syXS5zaGlm
dFlFZGdlVG8obGF5ZXJSZWN0LnkoKSk7Ci0gICAgZ3V0dGVyUmVjdHNbM10uc2hpZnRZRWRnZVRv
KGxheWVyUmVjdC55KCkpOwotICAgIGd1dHRlclJlY3RzWzJdLnNoaWZ0TWF4WUVkZ2VUbyhsYXll
clJlY3QubWF4WSgpKTsKLSAgICBndXR0ZXJSZWN0c1szXS5zaGlmdE1heFlFZGdlVG8obGF5ZXJS
ZWN0Lm1heFkoKSk7Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAg
ICBpZiAoIWd1dHRlclJlY3RzW2ldLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHF1YWRMaXN0LmFw
cGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgZ3V0dGVy
UmVjdHNbaV0sIGJhY2tncm91bmRDb2xvcigpKSk7Ci0gICAgfQotfQotCiB2b2lkIENDTGF5ZXJJ
bXBsOjphcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkgY29uc3QKIHsKICAgICBpZiAoIWhh
c0RlYnVnQm9yZGVycygpKQpAQCAtMzkyLDE1ICszNTQsNiBAQCB2b2lkIENDTGF5ZXJJbXBsOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKICAgICBtX2xh
eWVyUHJvcGVydHlDaGFuZ2VkID0gdHJ1ZTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6c2V0QmFj
a2dyb3VuZENvdmVyc1ZpZXdwb3J0KGJvb2wgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQotewot
ICAgIGlmIChtX2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCA9PSBiYWNrZ3JvdW5kQ292ZXJzVmll
d3BvcnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0
ID0gYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0OwotICAgIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQg
PSB0cnVlOwotfQotCiB2b2lkIENDTGF5ZXJJbXBsOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMpCiB7CiAgICAgaWYgKG1fZmlsdGVycyA9PSBmaWx0ZXJzKQpAQCAt
NTUyLDYgKzUwNSwxMyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXREb3VibGVTaWRlZChib29sIGRv
dWJsZVNpZGVkKQogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKIH0K
IAorUmVnaW9uIENDTGF5ZXJJbXBsOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0
Cit7CisgICAgaWYgKG9wYXF1ZSgpKQorICAgICAgICByZXR1cm4gdmlzaWJsZUxheWVyUmVjdCgp
OworICAgIHJldHVybiBSZWdpb24oKTsKK30KKwogdm9pZCBDQ0xheWVySW1wbDo6ZGlkTG9zZUNv
bnRleHQoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggNmNiNmRmMDNjMjllYWU2MDg3
ZTBmNGE5ZWU5NDFjMzJiOTk1MDg5Mi4uN2I3NTk4NDM1MTA1OGJkNzcxMTAzYzNkOTZhOWQ0ZDZi
NDgwZDdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoK
IAogICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVNoYXJlZFF1YWRTdGF0
ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhMYXllclJlbmRlcmVyQ2hyb21p
dW0qKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBib29sJiB1c2VkQ2hlY2tlcmJvYXJkKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJh
dygpIHsgfQogICAgIHZvaWQgYXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVhZEN1bGxlciYsIGNv
bnN0IENDU2hhcmVkUXVhZFN0YXRlKikgY29uc3Q7CiAKQEAgLTEwNyw5ICsxMDcsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBDb2xv
ciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQog
Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQoYm9vbCk7Ci0gICAgYm9vbCBi
YWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb3Zl
cnNWaWV3cG9ydDsgfQotCiAgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmKTsKICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKCkgY29uc3QgeyByZXR1
cm4gbV9maWx0ZXJzOyB9CiAKQEAgLTIzMiw3ICsyMjksNyBAQCBwdWJsaWM6CiAKICAgICBDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlciogbGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkgeyByZXR1
cm4gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgUmVn
aW9uIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gUmVnaW9uKCk7
IH07CisgICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKSBjb25z
dDsKIAogICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBjb250ZXh0IHByZXZpb3VzbHkgdXNlZCB0
byByZW5kZXIgdGhpcyBsYXllcgogICAgIC8vIHdhcyBsb3N0IGFuZCB0aGF0IGEgbmV3IG9uZSBo
YXMgYmVlbiBjcmVhdGVkLiBXb24ndCBiZSBjYWxsZWQKQEAgLTI0OCw4ICsyNDUsNiBAQCBwcm90
ZWN0ZWQ6CiAgICAgLy8gVHJhbnNmb3JtYXRpb24gdXNlZCB0byB0cmFuc2Zvcm0gcXVhZHMgcHJv
dmlkZWQgaW4gYXBwZW5kUXVhZHMuCiAgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBx
dWFkVHJhbnNmb3JtKCkgY29uc3Q7CiAKLSAgICB2b2lkIGFwcGVuZEd1dHRlclF1YWRzKENDUXVh
ZEN1bGxlciYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKik7Ci0KIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRQYXJlbnQoQ0NMYXllckltcGwqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQog
ICAgIGZyaWVuZCBjbGFzcyBUcmVlU3luY2hyb25pemVyOwpAQCAtMjg1LDcgKzI4MCw2IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnM7CiAgICAgUmVnaW9uIG1f
bm9uRmFzdFNjcm9sbGFibGVSZWdpb247CiAgICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7Ci0g
ICAgYm9vbCBtX2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydDsKIAogICAgIC8vIFdoZXRoZXIgdGhl
ICJiYWNrIiBvZiB0aGlzIGxheWVyIHNob3VsZCBkcmF3LgogICAgIGJvb2wgbV9kb3VibGVTaWRl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDhkYzliNGYzZDAyYTk2YjFh
ZDcxYTZhNWJkYmYxZGExODVjNTFkYmMuLjU3MzkxNzlmOWU2Y2JhNmFmZWViOTcxYzVjOWZkNWEz
MDE3NDlmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtODAsNiArODAs
NyBAQCBDQ0xheWVyVHJlZUhvc3Q6OkNDTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGll
bnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncwogICAgICwgbV9taW5QYWdlU2NhbGVGYWN0b3Io
MSkKICAgICAsIG1fbWF4UGFnZVNjYWxlRmFjdG9yKDEpCiAgICAgLCBtX3RyaWdnZXJJZGxlUGFp
bnRzKHRydWUpCisgICAgLCBtX2JhY2tncm91bmRDb2xvcihDb2xvcjo6d2hpdGUpCiAgICAgLCBt
X3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVzdHMoMCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6
aXNNYWluVGhyZWFkKCkpOwpAQCAtMjIwLDYgKzIyMSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
OjpmaW5pc2hDb21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwp
CiAgICAgaG9zdEltcGwtPnNldFNvdXJjZUZyYW1lTnVtYmVyKGZyYW1lTnVtYmVyKCkpOwogICAg
IGhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKCkpOwogICAgIGhvc3RJbXBs
LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMobV9wYWdlU2NhbGVGYWN0b3IsIG1fbWluUGFn
ZVNjYWxlRmFjdG9yLCBtX21heFBhZ2VTY2FsZUZhY3Rvcik7CisgICAgaG9zdEltcGwtPnNldEJh
Y2tncm91bmRDb2xvcihtX2JhY2tncm91bmRDb2xvcik7CiAKICAgICBtX2ZyYW1lTnVtYmVyKys7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDljYTE0ZmMwNDQ4ODNhYjBjMzEw
OWE5N2ZiOGJlMWIyYmEyMzcxNjEuLjY1ZDRiOGJmNmY0M2UwMWRmZDFmOTBmMzU5MDA1MTRlODNk
YWI1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0yNSw2ICsyNSw3IEBACiAj
aWZuZGVmIENDTGF5ZXJUcmVlSG9zdF9oCiAjZGVmaW5lIENDTGF5ZXJUcmVlSG9zdF9oCiAKKyNp
bmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUg
IkludFJlY3QuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCkBAIC0yMDEsNiArMjAyLDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxvYXQg
cGFnZVNjYWxlRmFjdG9yLCBmbG9hdCBtaW5QYWdlU2NhbGVGYWN0b3IsIGZsb2F0IG1heFBhZ2VT
Y2FsZUZhY3Rvcik7CiAKKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQorCiAgICAgVGV4dHVyZU1hbmFn
ZXIqIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSBjb25zdDsKIAogICAgIGJvb2wgdmlzaWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQpAQCAtMjcwLDYgKzI3Myw3IEBAIHByaXZhdGU6
CiAgICAgZmxvYXQgbV9wYWdlU2NhbGVGYWN0b3I7CiAgICAgZmxvYXQgbV9taW5QYWdlU2NhbGVG
YWN0b3IsIG1fbWF4UGFnZVNjYWxlRmFjdG9yOwogICAgIGJvb2wgbV90cmlnZ2VySWRsZVBhaW50
czsKKyAgICBDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKIAogICAgIFRleHR1cmVMaXN0IG1fZGVs
ZXRlVGV4dHVyZUFmdGVyQ29tbWl0TGlzdDsKICAgICBzaXplX3QgbV9wYXJ0aWFsVGV4dHVyZVVw
ZGF0ZVJlcXVlc3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRl
eCBkMjFhNGUwYzYwOWMzN2JkYWQyZGY5MzE1YWY1MDcyNzZkN2FkMWJlLi4wZWM0NzA0NTIxNWQx
YzEyZTM3OGZmMGJkMWEwMzgwOGY4NjcwMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcApAQCAtMzI4LDYgKzMyOCw4IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXll
CiAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoKml0KTsK
ICAgICB9CiAKKyAgICBwYXNzZXMubGFzdCgpLT5hcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihyb290
TGF5ZXIoKSwgbV9iYWNrZ3JvdW5kQ29sb3IsIG9jY2x1c2lvblRyYWNrZXIpOworCiAgICAgaWYg
KGRyYXdGcmFtZSkKICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5y
ZWNvcmRNZXRyaWNzKHRoaXMpOwogICAgIHJldHVybiBkcmF3RnJhbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggZDU4ZGI1ZjJkNDFlOWU4NTRjYmI2ZGZmNDU2ZmEx
MzIyYTMxMmIzYy4uZGM2YTE0ODMzYzBkNTU5OWVkOTg1YWI4M2MyZjJiMDg0ZjRlZTdkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMjUsNiArMjUsNyBAQAogI2lm
bmRlZiBDQ0xheWVyVHJlZUhvc3RJbXBsX2gKICNkZWZpbmUgQ0NMYXllclRyZWVIb3N0SW1wbF9o
CiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5o
IgogI2luY2x1ZGUgImNjL0NDQW5pbWF0aW9uRXZlbnRzLmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1
dEhhbmRsZXIuaCIKQEAgLTEzOCw2ICsxMzksOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0
UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRyYWdldFBvc2l0aW9uLCBib29sIHVz
ZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYyk7CiAKKyAgICBjb25zdCBD
b2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7
IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9i
YWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQorCiAgICAgYm9vbCBuZWVkc0FuaW1hdGVMYXllcnMo
KSBjb25zdCB7IHJldHVybiBtX25lZWRzQW5pbWF0ZUxheWVyczsgfQogICAgIHZvaWQgc2V0TmVl
ZHNBbmltYXRlTGF5ZXJzKCkgeyBtX25lZWRzQW5pbWF0ZUxheWVycyA9IHRydWU7IH0KIApAQCAt
MTg1LDYgKzE4OSw4IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9zZW50UGFnZVNjYWxlRGVsdGE7
CiAgICAgZmxvYXQgbV9taW5QYWdlU2NhbGUsIG1fbWF4UGFnZVNjYWxlOwogCisgICAgQ29sb3Ig
bV9iYWNrZ3JvdW5kQ29sb3I7CisKICAgICAvLyBJZiB0aGlzIGlzIHRydWUsIGl0IGlzIG5lY2Vz
c2FyeSB0byB0cmF2ZXJzZSB0aGUgbGF5ZXIgdHJlZSB0aWNraW5nIHRoZSBhbmltYXRvcnMuCiAg
ICAgYm9vbCBtX25lZWRzQW5pbWF0ZUxheWVyczsKICAgICBib29sIG1fcGluY2hHZXN0dXJlQWN0
aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKaW5kZXggY2Y3NmJkZjYz
YmNmYzJiODNhOTU0ZDdlZjdiYmI5NmY3ZDJjOWMxNC4uYTVhMGM1Y2E0YTkyZGYyNDNlMDI0MDMy
MGQ1ZTM0M2I2MjZiYTFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3Bw
CkBAIC0xOTgsMzAgKzE5OCwyOSBAQCBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm0oY29uc3QgTGF5ZXJUeQogCiAvLyBGSVhN
RTogUmVtb3ZlIHVzZVBhaW50VHJhY2tpbmcgd2hlbiBwYWludCB0cmFja2luZyBpcyBvbiBmb3Ig
cGFpbnQgY3VsbGluZy4KIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KLXN0YXRpYyBpbmxp
bmUgUmVnaW9uIGNvbXB1dGVPY2NsdXNpb25CZWhpbmRMYXllcihjb25zdCBMYXllclR5cGUqIGxh
eWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0
JiBzY2lzc29yUmVjdCwgYm9vbCB1c2VQYWludFRyYWNraW5nKQorc3RhdGljIGlubGluZSBSZWdp
b24gY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyKGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFJlZ2lvbiYgb3BhcXVl
Q29udGVudHMsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBib29sIHVzZVBhaW50VHJhY2tp
bmcpCiB7Ci0gICAgUmVnaW9uIG9wYXF1ZVJlZ2lvbjsKKyAgICBBU1NFUlQobGF5ZXItPnZpc2li
bGVMYXllclJlY3QoKS5jb250YWlucyhvcGFxdWVDb250ZW50cy5ib3VuZHMoKSkpOwogCiAgICAg
Ym9vbCBjbGlwcGVkOwogICAgIEZsb2F0UXVhZCB1bm9jY2x1ZGVkUXVhZCA9IENDTWF0aFV0aWw6
Om1hcFF1YWQodHJhbnNmb3JtLCBGbG9hdFF1YWQobGF5ZXItPnZpc2libGVMYXllclJlY3QoKSks
IGNsaXBwZWQpOwogICAgIGJvb2wgaXNQYWludGVkQXhpc0FsaWduZWQgPSB1bm9jY2x1ZGVkUXVh
ZC5pc1JlY3RpbGluZWFyKCk7CiAgICAgLy8gRklYTUU6IEZpbmQgYSByZWN0IGludGVyaW9yIHRv
IGVhY2ggdHJhbnNmb3JtZWQgcXVhZC4KICAgICBpZiAoY2xpcHBlZCB8fCAhaXNQYWludGVkQXhp
c0FsaWduZWQpCi0gICAgICAgIHJldHVybiBvcGFxdWVSZWdpb247CisgICAgICAgIHJldHVybiBS
ZWdpb24oKTsKIAotICAgIGlmIChsYXllci0+b3BhcXVlKCkpCi0gICAgICAgIG9wYXF1ZVJlZ2lv
biA9IGVuY2xvc2VkSW50UmVjdCh1bm9jY2x1ZGVkUXVhZC5ib3VuZGluZ0JveCgpKTsKLSAgICBl
bHNlIGlmICh1c2VQYWludFRyYWNraW5nICYmIHRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAg
ICAgIG9wYXF1ZVJlZ2lvbiA9IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwor
ICAgIFJlZ2lvbiB0cmFuc2Zvcm1lZE9wYXF1ZUNvbnRlbnRzOworICAgIGlmICh1c2VQYWludFRy
YWNraW5nICYmIHRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCisgICAgICAgIHRyYW5zZm9ybWVkT3Bh
cXVlQ29udGVudHMgPSBvcGFxdWVDb250ZW50czsKICAgICBlbHNlIGlmICh1c2VQYWludFRyYWNr
aW5nKSB7Ci0gICAgICAgIFJlZ2lvbiBjb250ZW50UmVnaW9uID0gbGF5ZXItPnZpc2libGVDb250
ZW50T3BhcXVlUmVnaW9uKCk7Ci0gICAgICAgIFZlY3RvcjxJbnRSZWN0PiBjb250ZW50UmVjdHMg
PSBjb250ZW50UmVnaW9uLnJlY3RzKCk7CisgICAgICAgIFZlY3RvcjxJbnRSZWN0PiBjb250ZW50
UmVjdHMgPSBvcGFxdWVDb250ZW50cy5yZWN0cygpOwogICAgICAgICAvLyBXZSB2ZXJpZnkgdGhh
dCB0aGUgcG9zc2libGUgYm91bmRzIG9mIHRoaXMgcmVnaW9uIGFyZSBub3QgY2xpcHBlZCBhYm92
ZSwgc28gd2UgY2FuIHVzZSBtYXBSZWN0KCkgc2FmZWx5IGhlcmUuCiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY29udGVudFJlY3RzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgb3Bh
cXVlUmVnaW9uLnVuaXRlKGVuY2xvc2VkSW50UmVjdCh0cmFuc2Zvcm0ubWFwUmVjdChGbG9hdFJl
Y3QoY29udGVudFJlY3RzW2ldKSkpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybWVkT3BhcXVlQ29u
dGVudHMudW5pdGUoZW5jbG9zZWRJbnRSZWN0KHRyYW5zZm9ybS5tYXBSZWN0KEZsb2F0UmVjdChj
b250ZW50UmVjdHNbaV0pKSkpOwogICAgIH0KLSAgICBvcGFxdWVSZWdpb24uaW50ZXJzZWN0KHNj
aXNzb3JSZWN0KTsKLSAgICByZXR1cm4gb3BhcXVlUmVnaW9uOworCisgICAgdHJhbnNmb3JtZWRP
cGFxdWVDb250ZW50cy5pbnRlcnNlY3Qoc2Npc3NvclJlY3QpOworICAgIHJldHVybiB0cmFuc2Zv
cm1lZE9wYXF1ZUNvbnRlbnRzOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5
cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgpAQCAtMjM1LDkgKzIzNCwxMyBAQCB2b2lkIENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om1hcmtPY2Ns
dWRlZEJlaGluZExheQogICAgIGlmICghbGF5ZXJPcGFjaXR5S25vd24obGF5ZXIpIHx8IGxheWVy
LT5kcmF3T3BhY2l0eSgpIDwgMSkKICAgICAgICAgcmV0dXJuOwogCisgICAgUmVnaW9uIG9wYXF1
ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CisgICAgaWYg
KG9wYXF1ZUNvbnRlbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgSW50UmVj
dCBzY2lzc29ySW5UYXJnZXQgPSBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVy
KTsKICAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihsYXllcikpCi0gICAgICAg
IG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LnVuaXRlKGNvbXB1dGVPY2NsdXNpb25C
ZWhpbmRMYXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNm
b3JtPExheWVyVHlwZT4obGF5ZXIpLCBzY2lzc29ySW5UYXJnZXQsIG1fdXNlUGFpbnRUcmFja2lu
ZykpOworICAgICAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldC51bml0ZShjb21w
dXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihsYXllciwgY29udGVudFRvVGFyZ2V0
U3VyZmFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgb3BhcXVlQ29udGVudHMsIHNjaXNz
b3JJblRhcmdldCwgbV91c2VQYWludFRyYWNraW5nKSk7CiAKICAgICAvLyBXZSBtdXN0IGNsaXAg
dGhlIG9jY2x1c2lvbiB3aXRoaW4gdGhlIGxheWVyJ3Mgc2Npc3NvckluVGFyZ2V0IHdpdGhpbiBz
Y3JlZW4gc3BhY2UgYXMgd2VsbC4gSWYgdGhlIHNjaXNzb3IgcmVjdCBjYW4ndCBiZSBtb3ZlZCB0
byBzY3JlZW4gc3BhY2UgYW5kCiAgICAgLy8gcmVtYWluIHJlY3RpbGluZWFyLCB0aGVuIHdlIGRv
bid0IGFkZCBhbnkgb2NjbHVzaW9uIGluIHNjcmVlbiBzcGFjZS4KQEAgLTI0OCw3ICsyNTEsNyBA
QCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlw
ZT46Om1hcmtPY2NsdWRlZEJlaGluZExheQogICAgICAgICBpZiAoIXNjaXNzb3JJblNjcmVlblF1
YWQuaXNSZWN0aWxpbmVhcigpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBJbnRSZWN0
IHNjaXNzb3JJblNjcmVlblJlY3QgPSBpbnRlcnNlY3Rpb24obV9zY2lzc29yUmVjdEluU2NyZWVu
U3BhY2UsIGVuY2xvc2VkSW50UmVjdChDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdCh0YXJnZXRU
b1NjcmVlblRyYW5zZm9ybSwgRmxvYXRSZWN0KHNjaXNzb3JJblRhcmdldCkpKSk7Ci0gICAgICAg
IG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuLnVuaXRlKGNvbXB1dGVPY2NsdXNpb25C
ZWhpbmRMYXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9y
bTxMYXllclR5cGU+KGxheWVyKSwgc2Npc3NvckluU2NyZWVuUmVjdCwgbV91c2VQYWludFRyYWNr
aW5nKSk7CisgICAgICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuLnVuaXRlKGNv
bXB1dGVPY2NsdXNpb25CZWhpbmRMYXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9TY3Jl
ZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgb3BhcXVlQ29udGVudHMsIHNjaXNz
b3JJblNjcmVlblJlY3QsIG1fdXNlUGFpbnRUcmFja2luZykpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2Ns
dXNpb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAppbmRleCA2YjJiNmUxNjY4YjU3OTU5YzEzODIwNDU3
MjMzMmY5Y2Y3YTkzNDRmLi5iNjIxOTczYjUzMTkyZGI3YWVlYTkwMTI5N2NkZTQ1ZGYwOTcwMTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ09jY2x1c2lvblRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaApAQCAtNzMsNiArNzMsOSBAQCBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMg
b24gZm9yIHBhaW50IGN1bGxpbmcuCiAgICAgdm9pZCBzZXRVc2VQYWludFRyYWNraW5nKGJvb2wg
dXNlKSB7IG1fdXNlUGFpbnRUcmFja2luZyA9IHVzZTsgfQogCisgICAgLy8gR2l2ZXMgdGhlIHJl
Z2lvbiBvZiB0aGUgc2NyZWVuIHRoYXQgaXMgbm90IG9jY2x1ZGVkIGJ5IHNvbWV0aGluZyBvcGFx
dWUuCisgICAgUmVnaW9uIGNvbXB1dGVWaXNpYmxlUmVnaW9uSW5TY3JlZW4oKSBjb25zdCB7IHJl
dHVybiBzdWJ0cmFjdChSZWdpb24obV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UpLCBtX3N0YWNr
Lmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbik7IH0KKwogcHJvdGVjdGVkOgogICAgIHN0cnVjdCBT
dGFja09iamVjdCB7CiAgICAgICAgIFN0YWNrT2JqZWN0KCkgOiBzdXJmYWNlKDApIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggOTZiNzYwOGY4Y2UzZWVjNzJlZGE2MGFkYzc5OWY0
OWZmOGFiMDMwMC4uYmFjMWZjNjkxNTBkOGE0ODY2NTZmOGE3MzQ2OGQxMDkyZmZlN2RhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC0yNywxMiArMjcsMTQgQEAKIAogI2luY2x1ZGUg
ImNjL0NDUmVuZGVyUGFzcy5oIgogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJjYy9D
Q0RhbWFnZVRyYWNrZXIuaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIK
ICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5o
IgogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NTaGFyZWRRdWFkU3RhdGUuaCIKKyNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTkzLDQgKzk1LDIzIEBAIHZvaWQgQ0NSZW5k
ZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5
ZXIpCiAgICAgfQogfQogCit2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxTY3Jl
ZW4oQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3QgQ29sb3ImIHNjcmVlbkJhY2tncm91bmRD
b2xvciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJhY2tlcikKK3sK
KyAgICBpZiAoIXJvb3RMYXllciB8fCAhc2NyZWVuQmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgUmVnaW9uIGZpbGxSZWdpb24gPSBvY2NsdXNpb25UcmFj
a2VyLmNvbXB1dGVWaXNpYmxlUmVnaW9uSW5TY3JlZW4oKTsKKyAgICBpZiAoZmlsbFJlZ2lvbi5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gc2hhcmVkUXVhZFN0YXRlID0gcm9vdExheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsK
KyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm1Ub0xheWVyU3BhY2UgPSByb290TGF5
ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkuaW52ZXJzZSgpOworICAgIFZlY3RvcjxJbnRSZWN0
PiBmaWxsUmVjdHMgPSBmaWxsUmVnaW9uLnJlY3RzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmaWxsUmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgSW50UmVjdCBsYXllclJlY3Qg
PSB0cmFuc2Zvcm1Ub0xheWVyU3BhY2UubWFwUmVjdChmaWxsUmVjdHNbaV0pOworICAgICAgICBt
X3F1YWRMaXN0LmFwcGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZS5nZXQoKSwgbGF5ZXJSZWN0LCBzY3JlZW5CYWNrZ3JvdW5kQ29sb3IpKTsKKyAgICB9Cisg
ICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgp
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaAppbmRleCA1OTkwMWM4YzU4Y2YzNzZhMGMx
ZjBjYzA5YzU3OGVlMDRkMzE2MmUzLi4xMjUyNmIxMTAwNDIwZTQ2MDFlZjNmMjc5MjU2ZmZiNDg4
MDkyMDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDUmVuZGVyU3VyZmFjZTsK
IGNsYXNzIENDU2hhcmVkUXVhZFN0YXRlOworY2xhc3MgQ29sb3I7CiAKIC8vIEEgbGlzdCBvZiBD
Q0RyYXdRdWFkIG9iamVjdHMsIHNvcnRlZCBpbnRlcm5hbGx5IGluIGZyb250LXRvLWJhY2sgb3Jk
ZXIuCiBjbGFzcyBDQ1F1YWRMaXN0IDogcHVibGljIFZlY3RvcjxPd25QdHI8Q0NEcmF3UXVhZD4g
PiB7CkBAIC01Niw2ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JM
YXllcihDQ0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlckltcGwqLCBib29sJiB1c2VkQ2hl
Y2tlcmJvYXJkKTsKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKEND
TGF5ZXJJbXBsKik7CisgICAgdm9pZCBhcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xheWVySW1w
bCogcm9vdExheWVyLCBjb25zdCBDb2xvciYgc2NyZWVuQmFja2dyb3VuZENvbG9yLCBjb25zdCBD
Q09jY2x1c2lvblRyYWNrZXJJbXBsJik7CiAKICAgICBjb25zdCBDQ1F1YWRMaXN0JiBxdWFkTGlz
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZExpc3Q7IH0KICAgICBDQ1JlbmRlclN1cmZhY2UqIHRh
cmdldFN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFN1cmZhY2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRM
YXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggN2EzYzQ0ZmY1NDc1Y2VjNDMwNWQxNzk1MWE5
OWJjYTIxZDA1MWM1NC4uNDdkMzcxNWQ0YjU5Mjg1ZmFmNzE0MjJiYzNjNjY1OTNlZjVhNjg0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTEzOSw4ICsxMzksNiBAQCB2
b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZEN1bGxlciYgcXVhZExpc3Qs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YQogewogICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9
IHZpc2libGVMYXllclJlY3QoKTsKIAotICAgIGFwcGVuZEd1dHRlclF1YWRzKHF1YWRMaXN0LCBz
aGFyZWRRdWFkU3RhdGUpOwotCiAgICAgaWYgKCFtX3RpbGVyIHx8IG1fdGlsZXItPmhhc0VtcHR5
Qm91bmRzKCkgfHwgbGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0y
MjgsNyArMjI2LDggQEAgUmVnaW9uIENDVGlsZWRMYXllckltcGw6OnZpc2libGVDb250ZW50T3Bh
cXVlUmVnaW9uKCkgY29uc3QKIHsKICAgICBpZiAobV9za2lwc0RyYXcpCiAgICAgICAgIHJldHVy
biBSZWdpb24oKTsKLQorICAgIGlmIChvcGFxdWUoKSkKKyAgICAgICAgcmV0dXJuIHZpc2libGVM
YXllclJlY3QoKTsKICAgICByZXR1cm4gbV90aWxlci0+b3BhcXVlUmVnaW9uSW5MYXllclJlY3Qo
dmlzaWJsZUxheWVyUmVjdCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKaW5kZXggYjZiMWEyMjk0ZDE0
OTZiMzgxZGRjMThiMjRkYWUxNTM2ZjY4MDhjOC4uZWMwYjJlNGYwYWQwMWJkZmQxNzA3Zjg2Zjhm
OWQ1MjQ4MTU1ZDA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCkBAIC00Niw5ICs0Niw2IEBAIE5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KFBhc3NPd25QdHI8V2Vi
Q29yZTo6TGF5ZXJQYWluCiAjZW5kaWYKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldERyYXdzQ29u
dGVudCh0cnVlKTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0SXNO
b25Db21wb3NpdGVkQ29udGVudCh0cnVlKTsKLSNpZiAhRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQot
ICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRCYWNrZ3JvdW5kQ292ZXJz
Vmlld3BvcnQodHJ1ZSk7Ci0jZW5kaWYKICAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKS0+c2V0T3BhcXVlKHRydWUpOwogfQogCkBAIC01OCwxMCArNTUsNyBAQCBOb25Db21wb3Np
dGVkQ29udGVudEhvc3Q6On5Ob25Db21wb3NpdGVkQ29udGVudEhvc3QoKQogCiB2b2lkIE5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvcikKIHsKLSAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQotICAgICAgICBtX2dyYXBo
aWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRCYWNr
Z3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKKyAgICBtX2dyYXBoaWNzTGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKIH0KIAogdm9pZCBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFNjcm9sbExheWVyKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcAppbmRleCA1MzI0NmIxY2E4N2ZiM2IxZDE5OWNiY2NkYmY3MmIzM2RmNzExZWZk
Li5jMDE3MDU4Y2I1MjRhMzhlZjgxZWRkMjI3OGQ2NzBkN2UxZTIzMWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApAQCAtOTcsNiArOTcs
MTEgQEAgV2ViU2l6ZSBXZWJMYXllclRyZWVWaWV3Ojp2aWV3cG9ydFNpemUoKSBjb25zdAogICAg
IHJldHVybiBXZWJTaXplKG1fcHJpdmF0ZS0+dmlld3BvcnRTaXplKCkpOwogfQogCit2b2lkIFdl
YkxheWVyVHJlZVZpZXc6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb2xvciYgY29sb3Ip
Cit7CisgICAgbV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOworfQorCiB2b2lk
IFdlYkxheWVyVHJlZVZpZXc6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAgIG1fcHJp
dmF0ZS0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAppbmRleCAwMzBkOGUxZDFiNTQzMjRmMGFjMWNjOWY4NDI4YmJhZjBiNmE2
Mjg4Li44MDRmNmM5YjhiMjA3OTA0N2I5NmJhOGZjMjA1YzBjNGYxNzhkMjY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMu
aCIKICNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJDb21wb3NpdGlvblVuZGVybGluZVZlY3RvckJ1aWxkZXIu
aCIKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgpAQCAtMzI0NCw2ICszMjQ1LDE0IEBAIE5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdCogV2ViVmlld0ltcGw6Om5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dCgpCiAgICAgcmV0dXJuIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmdldCgpOwogfQogCit2
b2lkIFdlYlZpZXdJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
IGNvbG9yKQoreworICAgIFdlYkNvcmU6OkNvbG9yIGRvY3VtZW50QmFja2dyb3VuZENvbG9yID0g
Y29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBXZWJDb3JlOjpDb2xvcjo6d2hpdGU7CisgICAgV2Vi
Q29sb3Igd2ViRG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgPSBkb2N1bWVudEJhY2tncm91bmRDb2xv
ci5yZ2IoKTsKKyAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0QmFja2dyb3VuZENv
bG9yKGRvY3VtZW50QmFja2dyb3VuZENvbG9yKTsKKyAgICBtX2xheWVyVHJlZVZpZXcuc2V0QmFj
a2dyb3VuZENvbG9yKHdlYkRvY3VtZW50QmFja2dyb3VuZENvbG9yKTsKK30KKwogI2lmIEVOQUJM
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKIHZvaWQgV2ViVmlld0ltcGw6OnNjaGVkdWxlQW5p
bWF0aW9uKCkKIHsKQEAgLTMyNzksOCArMzI4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5oaXN0b2dyYW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5B
Y2NlbFJvb3RQYWludER1cmF0aW9uTVMiLCAocGFpbnRFbmQgLSBwYWludFN0YXJ0KSAqIDEwMDAs
IDAsIDEyMCwgMzApOwogICAgICAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmhpc3Rv
Z3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LkFjY2VsUm9vdFBhaW50TWVnYXBpeFBlclNlY29u
ZCIsIHBpeGVsc1BlclNlYyAvIDEwMDAwMDAsIDEwLCAyMTAsIDMwKTsKIAotICAgICAgICBtX3dl
YlZpZXdJbXBsLT5ub25Db21wb3NpdGVkQ29udGVudEhvc3QoKS0+c2V0QmFja2dyb3VuZENvbG9y
KHZpZXctPmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkpOwotCisgICAgICAgIG1fd2ViVmlld0lt
cGwtPnNldEJhY2tncm91bmRDb2xvcih2aWV3LT5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC0zMzI3LDkgKzMzMzUsNiBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpj
cmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKICAgICAgICAg
bV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5z
ZXR0aW5ncygpLT5zaG93RGVidWdCb3JkZXJzKCkpOwogCi0gICAgICAgIGlmIChwYWdlKCkgJiYg
cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpKQotICAgICAgICAgICAgbV9ub25Db21wb3NpdGVk
Q29udGVudEhvc3QtPnNldEJhY2tncm91bmRDb2xvcihwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3
KCktPmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkpOwotCiAgICAgICAgIG1fbGF5ZXJUcmVlVmll
dy5pbml0aWFsaXplKHRoaXMsIG1fcm9vdExheWVyLCBsYXllclRyZWVWaWV3U2V0dGluZ3MpOwog
ICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkgewogICAgICAgICAgICAgbV9s
YXllclRyZWVWaWV3LnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhwYWdlU2NhbGVGYWN0b3Io
KSwgbV9taW5pbXVtUGFnZVNjYWxlRmFjdG9yLCBtX21heGltdW1QYWdlU2NhbGVGYWN0b3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggODAwZTUxMWRjNDUx
YmY1MWM3MTU3MmJjOWI5MTIyMjgwMGQyNjQ0ZC4uMmZkODNmYjdlZDliYmYxNTA0ZDMxOTdmMDgy
ZWMzYTc2ODkwNWZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CkBAIC02MCw2ICs2MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBY3RpdmVQbGF0
Zm9ybUdlc3R1cmVBbmltYXRpb247CiBjbGFzcyBDaHJvbWl1bURhdGFPYmplY3Q7CitjbGFzcyBD
b2xvcjsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKQEAgLTQ2OCw2ICs0NjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxS
b290TGF5ZXJSZWN0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlUm9vdExheWVy
UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0KiBub25Db21wb3NpdGVkQ29udGVudEhvc3QoKTsKKyAgICB2b2lkIHNldEJhY2tncm91bmRD
b2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKQogICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAppbmRleCA4YTlm
MzVkYzhhN2I4OWMwYzk0YmQ3NTM3YzY4NDY0ZmE3OGE2YmI4Li5iYjY1Y2M1ODBhYzE1OGJmMDVj
YjNjOTdkMjE3ZjI5ODRjOGVhY2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCkBAIC0xMTIsNyArMTEyLDYgQEAgVEVTVChDQ0xheWVy
SW1wbFRlc3QsIHZlcmlmeUxheWVyQ2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkKICAgICBFWEVD
VVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldERlYnVnQm9yZGVyV2lk
dGgoYXJiaXRyYXJ5TnVtYmVyKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJf
Q0hBTkdFRChyb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpn
cmF5KSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5z
ZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQodHJ1ZSkpOwogCiAgICAgLy8gU3BlY2lhbCBjYXNl
OiBjaGVjayB0aGF0IHN1YmxheWVyIHRyYW5zZm9ybSBjaGFuZ2VzIGFsbCBsYXllcidzIGRlc2Nl
bmRhbnRzLCBidXQgbm90IHRoZSBsYXllciBpdHNlbGYuCiAgICAgcm9vdC0+cmVzZXRBbGxDaGFu
Z2VUcmFja2luZ0ZvclN1YnRyZWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNzAwOWM4YzNlOTNj
YTZjYzAyZDQ1NTI1N2VmMTMwOWNlZGZmNjViZS4uYzlmMzhhMDFmZGUxZTc5NTIyYTg3ODVmOWMw
ZGU5MjA3ZDk5Mjc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIKIAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1v
bi5oIgorI2luY2x1ZGUgIkNDTGF5ZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgi
CiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCkBAIC0zNyw2ICszOCw3IEBACiAj
aW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgog
Cit1c2luZyBuYW1lc3BhY2UgQ0NMYXllclRlc3RDb21tb247CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVz
dHM7CkBAIC01OTgsNiArNjAwLDcgQEAgcHVibGljOgogICAgICAgICB0ZXN0QmxlbmRpbmdEcmF3
UXVhZC0+c2V0UXVhZFZpc2libGVSZWN0KG1fcXVhZFZpc2libGVSZWN0KTsKICAgICAgICAgRVhQ
RUNUX0VRKG1fYmxlbmQsIHRlc3RCbGVuZGluZ0RyYXdRdWFkLT5uZWVkc0JsZW5kaW5nKCkpOwog
ICAgICAgICBFWFBFQ1RfRVEobV9oYXNSZW5kZXJTdXJmYWNlLCAhIXJlbmRlclN1cmZhY2UoKSk7
CisgICAgICAgIHF1YWRMaXN0LmFwcGVuZCh0ZXN0QmxlbmRpbmdEcmF3UXVhZC5yZWxlYXNlKCkp
OwogICAgIH0KIAogICAgIHZvaWQgc2V0RXhwZWN0YXRpb24oYm9vbCBibGVuZCwgYm9vbCBoYXNS
ZW5kZXJTdXJmYWNlKQpAQCAtODQxLDYgKzg0NCw4OCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIGJsZW5kaW5nT2ZmV2hlbkRyYXdpbmdPcGFxdWVMYXllcnMpCiAKIH0KIAorVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB2aWV3cG9ydENvdmVyZWQpCit7CisgICAgbV9o
b3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpKTsKKyAgICBt
X2hvc3RJbXBsLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkpOworCisgICAgSW50U2l6
ZSB2aWV3cG9ydFNpemUoMTAwLCAxMDApOworICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6
ZSh2aWV3cG9ydFNpemUpOworCisgICAgbV9ob3N0SW1wbC0+c2V0Um9vdExheWVyKEJsZW5kU3Rh
dGVDaGVja0xheWVyOjpjcmVhdGUoMCkpOworICAgIEJsZW5kU3RhdGVDaGVja0xheWVyKiByb290
ID0gc3RhdGljX2Nhc3Q8QmxlbmRTdGF0ZUNoZWNrTGF5ZXIqPihtX2hvc3RJbXBsLT5yb290TGF5
ZXIoKSk7CisgICAgcm9vdC0+c2V0RXhwZWN0YXRpb24oZmFsc2UsIHRydWUpOworICAgIHJvb3Qt
PnNldE9wYXF1ZSh0cnVlKTsKKworICAgIC8vIE5vIGd1dHRlciByZWN0cworICAgIHsKKyAgICAg
ICAgSW50UmVjdCBsYXllclJlY3QoMCwgMCwgMTAwLCAxMDApOworICAgICAgICByb290LT5zZXRQ
b3NpdGlvbihsYXllclJlY3QubG9jYXRpb24oKSk7CisgICAgICAgIHJvb3QtPnNldEJvdW5kcyhs
YXllclJlY3Quc2l6ZSgpKTsKKyAgICAgICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhsYXllclJl
Y3Quc2l6ZSgpKTsKKyAgICAgICAgcm9vdC0+c2V0UXVhZFJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCBsYXllclJlY3Quc2l6ZSgpKSk7CisgICAgICAgIHJvb3QtPnNldFF1YWRWaXNpYmxlUmVjdChJ
bnRSZWN0KEludFBvaW50KCksIGxheWVyUmVjdC5zaXplKCkpKTsKKworICAgICAgICBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG1faG9z
dEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICAgICAgQVNTRVJUX0VRKDF1LCBmcmFt
ZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBzaXplX3QgbnVtR3V0dGVyUXVhZHMg
PSAwOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lLnJlbmRlclBhc3Nlc1sw
XS0+cXVhZExpc3QoKS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG51bUd1dHRlclF1YWRzICs9
IChmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCkgPT0gQ0NE
cmF3UXVhZDo6U29saWRDb2xvcikgPyAxIDogMDsKKyAgICAgICAgRVhQRUNUX0VRKDB1LCBudW1H
dXR0ZXJRdWFkcyk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgZnJhbWUucmVuZGVyUGFzc2VzWzBd
LT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJS
ZWN0KGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKSwgSW50UmVjdCgtbGF5ZXJSZWN0
LmxvY2F0aW9uKCksIHZpZXdwb3J0U2l6ZSkpOworICAgIH0KKworICAgIC8vIEVtcHR5IHZpc2li
bGUgY29udGVudCBhcmVhIChmdWxsc2NyZWVuIGd1dHRlciByZWN0KQorICAgIHsKKyAgICAgICAg
SW50UmVjdCBsYXllclJlY3QoMCwgMCwgMCwgMCk7CisgICAgICAgIHJvb3QtPnNldFBvc2l0aW9u
KGxheWVyUmVjdC5sb2NhdGlvbigpKTsKKyAgICAgICAgcm9vdC0+c2V0Qm91bmRzKGxheWVyUmVj
dC5zaXplKCkpOworICAgICAgICByb290LT5zZXRDb250ZW50Qm91bmRzKGxheWVyUmVjdC5zaXpl
KCkpOworICAgICAgICByb290LT5zZXRRdWFkUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVy
UmVjdC5zaXplKCkpKTsKKyAgICAgICAgcm9vdC0+c2V0UXVhZFZpc2libGVSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXJSZWN0LnNpemUoKSkpOworCisgICAgICAgIENDTGF5ZXJUcmVlSG9z
dEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+
cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgICAgICBBU1NFUlRfRVEoMXUsIGZyYW1lLnJlbmRl
clBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIHNpemVfdCBudW1HdXR0ZXJRdWFkcyA9IDA7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFk
TGlzdCgpLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbnVtR3V0dGVyUXVhZHMgKz0gKGZyYW1l
LnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKVtpXS0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFk
OjpTb2xpZENvbG9yKSA/IDEgOiAwOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG51bUd1dHRlclF1
YWRzKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRM
aXN0KCkuc2l6ZSgpKTsKKworICAgICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QoZnJh
bWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLCBJbnRSZWN0KC1sYXllclJlY3QubG9jYXRp
b24oKSwgdmlld3BvcnRTaXplKSk7CisgICAgfQorCisgICAgLy8gQ29udGVudCBhcmVhIGluIG1p
ZGRsZSBvZiBjbGlwIHJlY3QgKGZvdXIgc3Vycm91bmRpbmcgZ3V0dGVyIHJlY3RzKQorICAgIHsK
KyAgICAgICAgSW50UmVjdCBsYXllclJlY3QoNTAsIDUwLCAyMCwgMjApOworICAgICAgICByb290
LT5zZXRQb3NpdGlvbihsYXllclJlY3QubG9jYXRpb24oKSk7CisgICAgICAgIHJvb3QtPnNldEJv
dW5kcyhsYXllclJlY3Quc2l6ZSgpKTsKKyAgICAgICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhs
YXllclJlY3Quc2l6ZSgpKTsKKyAgICAgICAgcm9vdC0+c2V0UXVhZFJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCBsYXllclJlY3Quc2l6ZSgpKSk7CisgICAgICAgIHJvb3QtPnNldFF1YWRWaXNpYmxl
UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyUmVjdC5zaXplKCkpKTsKKworICAgICAgICBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVF
KG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICAgICAgQVNTRVJUX0VRKDF1
LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgICAgICBzaXplX3QgbnVtR3V0dGVy
UXVhZHMgPSAwOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lLnJlbmRlclBh
c3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG51bUd1dHRlclF1
YWRzICs9IChmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCkg
PT0gQ0NEcmF3UXVhZDo6U29saWRDb2xvcikgPyAxIDogMDsKKyAgICAgICAgRVhQRUNUX0VRKDR1
LCBudW1HdXR0ZXJRdWFkcyk7CisgICAgICAgIEVYUEVDVF9FUSg1dSwgZnJhbWUucmVuZGVyUGFz
c2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisKKyAgICAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5
Q292ZXJSZWN0KGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKSwgSW50UmVjdCgtbGF5
ZXJSZWN0LmxvY2F0aW9uKCksIHZpZXdwb3J0U2l6ZSkpOworICAgIH0KKworfQorCisKIGNsYXNz
IFJlc2hhcGVUcmFja2VyQ29udGV4dDogcHVibGljIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7
CiBwdWJsaWM6CiAgICAgUmVzaGFwZVRyYWNrZXJDb250ZXh0KCkgOiBtX3Jlc2hhcGVDYWxsZWQo
ZmFsc2UpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAKaW5kZXggZTIyNWQyNmRiMmI5Mjk1OGVlYmNlMzJmZDk1YzFkNjU3
MmQyNTNhZi4uMmQ3NGE0ZWVhYTUxNGYzZTk2ZWFhMmIyZDlkZWI4ZGUxMWMyNTc3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCkBAIC0xMjYzLDYgKzEyNjMsMzggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTY3Jv
bGxNdWx0aXBsZVJlZHJhdywgRElTQUJMRURfcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdFRo
cmVhZGVkKCk7CiB9CiAKKy8vIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHByb3BlcnRpZXMgb24g
dGhlIGxheWVyIHRyZWUgaG9zdCBhcmUgY29tbWl0ZWQgdG8gdGhlIGltcGwgc2lkZS4KK2NsYXNz
IENDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXQgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7
CitwdWJsaWM6CisKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0KCkgeyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Vmlld3BvcnRTaXplKEludFNpemUoMjAsIDIwKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yOjpncmF5KTsKKyAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoNSwgNSwgNSk7CisKKyAgICAgICAgcG9z
dFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAg
IHsKKyAgICAgICAgRVhQRUNUX0VRKEludFNpemUoMjAsIDIwKSwgaW1wbC0+dmlld3BvcnRTaXpl
KCkpOworICAgICAgICBFWFBFQ1RfRVEoQ29sb3I6OmdyYXksIGltcGwtPmJhY2tncm91bmRDb2xv
cigpKTsKKyAgICAgICAgRVhQRUNUX0VRKDUsIGltcGwtPnBhZ2VTY2FsZSgpKTsKKworICAgICAg
ICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpIHsgfQor
fTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXQsIHJ1blRlc3QpCit7CisgICAg
cnVuVGVzdCh0cnVlKTsKK30KKwogLy8gVmVyaWZpZXMgdGhhdCBzdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbiBldmVudHMgcHJvcGFnYXRlIGNvcnJlY3RseSBmcm9tIENDTGF5ZXJUcmVlSG9zdCB0bwog
Ly8gQ0NMYXllclRyZWVIb3N0SW1wbCBpbiB0aGUgTVQgY29tcG9zaXRvci4KIGNsYXNzIENDTGF5
ZXJUcmVlSG9zdFRlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbiA6IHB1YmxpYyBDQ0xheWVyVHJl
ZUhvc3RUZXN0IHsKQEAgLTE3NjksOSArMTgwMSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFs
IFJlZ2lvbiB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIGludGVy
c2VjdGlvbihtX29wYXF1ZUNvbnRlbnRzUmVjdCwgdmlzaWJsZUxheWVyUmVjdCgpKTsgfQotICAg
IHZvaWQgc2V0T3BhcXVlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZUNvbnRlbnRz
UmVjdCkgeyBtX29wYXF1ZUNvbnRlbnRzUmVjdCA9IG9wYXF1ZUNvbnRlbnRzUmVjdDsgfQotCiAg
ICAgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9v
Y2NsdWRlZFNjcmVlblNwYWNlOyB9CiAgICAgdm9pZCBjbGVhck9jY2x1ZGVkU2NyZWVuU3BhY2Uo
KSB7IG1fb2NjbHVkZWRTY3JlZW5TcGFjZSA9IFJlZ2lvbigpOyB9CiAKQEAgLTE3NzksNyArMTgw
OCw2IEBAIHByaXZhdGU6CiAgICAgVGVzdExheWVyQ2hyb21pdW0oKSA6IExheWVyQ2hyb21pdW0o
KSB7IH0KIAogICAgIFJlZ2lvbiBtX29jY2x1ZGVkU2NyZWVuU3BhY2U7Ci0gICAgSW50UmVjdCBt
X29wYXF1ZUNvbnRlbnRzUmVjdDsKIH07CiAKIHN0YXRpYyB2b2lkIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcoVGVzdExheWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckNocm9taXVtKiBwYXJl
bnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIGFuY2hvciwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJv
dW5kcywgYm9vbCBvcGFxdWUpCkBAIC0xOTk2LDQ2ICsyMDI0LDYgQEAgcHVibGljOgogCiBTSU5H
TEVfQU5EX01VTFRJX1RIUkVBRF9URVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdExheWVyT2NjbHVz
aW9uKQogCi1jbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0Q29udGVudExheWVyT2NjbHVzaW9uIDog
cHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgewotcHVibGljOgotICAgIENDTGF5ZXJUcmVlSG9z
dFRlc3RDb250ZW50TGF5ZXJPY2NsdXNpb24oKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBiZWdp
blRlc3QoKQotICAgIHsKLSAgICAgICAgUmVmUHRyPFRlc3RMYXllckNocm9taXVtPiByb290TGF5
ZXIgPSBUZXN0TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgICAgIFJlZlB0cjxUZXN0TGF5
ZXJDaHJvbWl1bT4gY2hpbGQgPSBUZXN0TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0KLSAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3Rpbmcocm9vdExheWVyLmdldCgpLCAwLCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIHRy
dWUpOwotICAgICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBy
b290TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBv
aW50KDMwLCAzMCksIEludFNpemUoNTAsIDUwKSwgZmFsc2UpOwotCi0gICAgICAgIGNoaWxkLT5z
ZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgxMCwgMTAsIDIwLCAyMCkpOwotCi0gICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7Ci0gICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPmNvbW1pdENvbXBsZXRlKCk7Ci0KLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgp
LCBjaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNU
X0VRKDB1LCBjaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQot
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQwLCA0MCwgMjAsIDIwKSwgcm9vdExheWVy
LT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUs
IHJvb3RMYXllci0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAg
ICAgICAvLyBLaWxsIHRoZSBsYXllclRyZWVIb3N0IGltbWVkaWF0ZWx5LgotICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcigwKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LmNs
ZWFyKCk7Ci0KLSAgICAgICAgZW5kVGVzdCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBh
ZnRlclRlc3QoKQotICAgIHsKLSAgICB9Ci19OwotCi1TSU5HTEVfQU5EX01VTFRJX1RIUkVBRF9U
RVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdENvbnRlbnRMYXllck9jY2x1c2lvbikKLQogY2xhc3Mg
Q0NMYXllclRyZWVIb3N0VGVzdExheWVyT2NjbHVzaW9uV2l0aEZpbHRlcnMgOiBwdWJsaWMgQ0NM
YXllclRyZWVIb3N0VGVzdCB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0VGVzdExheWVy
T2NjbHVzaW9uV2l0aEZpbHRlcnMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCmluZGV4IGIxYTZmM2E5ZTNh
NTA1OWNhMWRhYzdjODVmODJlY2NhZGNiN2Y5MjEuLmYwNDc5NDA2ZDMzYzc3YmE1YWIwZDg5YWIz
ODU4ZWU5NGMwZmZiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcApAQCAtNTQsMjMgKzU0LDUzIEBAIG5hbWVz
cGFjZSB7CiAKIGNsYXNzIFRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNo
cm9taXVtIHsKIHB1YmxpYzoKLSAgICBUZXN0Q29udGVudExheWVyQ2hyb21pdW0oKSA6IExheWVy
Q2hyb21pdW0oKSB7IH0KKyAgICBUZXN0Q29udGVudExheWVyQ2hyb21pdW0oKQorICAgICAgICA6
IExheWVyQ2hyb21pdW0oKQorICAgICAgICAsIG1fb3ZlcnJpZGVPcGFxdWVDb250ZW50c1JlY3Qo
ZmFsc2UpCisgICAgeworICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNvbnRlbnRP
cGFxdWVSZWdpb24oKSBjb25zdCB7IHJldHVybiBpbnRlcnNlY3Rpb24obV9vcGFxdWVDb250ZW50
c1JlY3QsIHZpc2libGVMYXllclJlY3QoKSk7IH0KLSAgICB2b2lkIHNldE9wYXF1ZUNvbnRlbnRz
UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVDb250ZW50c1JlY3QpIHsgbV9vcGFxdWVDb250ZW50
c1JlY3QgPSBvcGFxdWVDb250ZW50c1JlY3Q7IH0KKyAgICB2aXJ0dWFsIFJlZ2lvbiB2aXNpYmxl
Q29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9vdmVycmlk
ZU9wYXF1ZUNvbnRlbnRzUmVjdCkKKyAgICAgICAgICAgIHJldHVybiBpbnRlcnNlY3Rpb24obV9v
cGFxdWVDb250ZW50c1JlY3QsIHZpc2libGVMYXllclJlY3QoKSk7CisgICAgICAgIHJldHVybiBM
YXllckNocm9taXVtOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOworICAgIH0KKyAgICB2
b2lkIHNldE9wYXF1ZUNvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVDb250ZW50c1Jl
Y3QpCisgICAgeworICAgICAgICBtX292ZXJyaWRlT3BhcXVlQ29udGVudHNSZWN0ID0gdHJ1ZTsK
KyAgICAgICAgbV9vcGFxdWVDb250ZW50c1JlY3QgPSBvcGFxdWVDb250ZW50c1JlY3Q7CisgICAg
fQogCiBwcml2YXRlOgorICAgIGJvb2wgbV9vdmVycmlkZU9wYXF1ZUNvbnRlbnRzUmVjdDsKICAg
ICBJbnRSZWN0IG1fb3BhcXVlQ29udGVudHNSZWN0OwogfTsKIAogY2xhc3MgVGVzdENvbnRlbnRM
YXllckltcGwgOiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgotICAgIFRlc3RDb250ZW50
TGF5ZXJJbXBsKGludCBpZCkgOiBDQ0xheWVySW1wbChpZCkgeyBzZXREcmF3c0NvbnRlbnQodHJ1
ZSk7IH0KKyAgICBUZXN0Q29udGVudExheWVySW1wbChpbnQgaWQpCisgICAgICAgIDogQ0NMYXll
ckltcGwoaWQpCisgICAgICAgICwgbV9vdmVycmlkZU9wYXF1ZUNvbnRlbnRzUmVjdChmYWxzZSkK
KyAgICB7CisgICAgICAgIHNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIFJlZ2lvbiB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAobV9vdmVycmlkZU9wYXF1ZUNvbnRlbnRzUmVjdCkKKyAgICAgICAgICAgIHJldHVy
biBpbnRlcnNlY3Rpb24obV9vcGFxdWVDb250ZW50c1JlY3QsIHZpc2libGVMYXllclJlY3QoKSk7
CisgICAgICAgIHJldHVybiBDQ0xheWVySW1wbDo6dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24o
KTsKKyAgICB9CisgICAgdm9pZCBzZXRPcGFxdWVDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYg
b3BhcXVlQ29udGVudHNSZWN0KQorICAgIHsKKyAgICAgICAgbV9vdmVycmlkZU9wYXF1ZUNvbnRl
bnRzUmVjdCA9IHRydWU7CisgICAgICAgIG1fb3BhcXVlQ29udGVudHNSZWN0ID0gb3BhcXVlQ29u
dGVudHNSZWN0OworICAgIH0KIAotICAgIHZpcnR1YWwgUmVnaW9uIHZpc2libGVDb250ZW50T3Bh
cXVlUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gaW50ZXJzZWN0aW9uKG1fb3BhcXVlQ29udGVudHNS
ZWN0LCB2aXNpYmxlTGF5ZXJSZWN0KCkpOyB9Ci0gICAgdm9pZCBzZXRPcGFxdWVDb250ZW50c1Jl
Y3QoY29uc3QgSW50UmVjdCYgb3BhcXVlQ29udGVudHNSZWN0KSB7IG1fb3BhcXVlQ29udGVudHNS
ZWN0ID0gb3BhcXVlQ29udGVudHNSZWN0OyB9CiBwcml2YXRlOgorICAgIGJvb2wgbV9vdmVycmlk
ZU9wYXF1ZUNvbnRlbnRzUmVjdDsKICAgICBJbnRSZWN0IG1fb3BhcXVlQ29udGVudHNSZWN0Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5
ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXll
ckltcGxUZXN0LmNwcAppbmRleCA1N2NhYTdkYzE3MTRhMWY5ZTUyZTUyMWM1OGQ0MDM5MjUzNTM3
YmI5Li42MGNiZjlmZWYyZTdlNzc5ZWFkMTA3YjkxNzkwMzVlM2ZiZDRkNDgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNw
cApAQCAtMjYyLDc2ICsyNjIsNCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCB0aWxlT3Bh
cXVlUmVjdEZvckxheWVyTm9Cb3JkZXJzKQogICAgIH0KIH0KIAotVEVTVChDQ1RpbGVkTGF5ZXJJ
bXBsVGVzdCwgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KQotewotICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBzY29wZWRJbXBsVGhyZWFkOwotCi0gICAgY29uc3QgSW50U2l6ZSB0aWxlU2l6
ZSgxMCwgMTApOwotICAgIGNvbnN0IGludCBudW1UaWxlc1ggPSAyOwotICAgIGNvbnN0IGludCBu
dW1UaWxlc1kgPSAyOwotICAgIGNvbnN0IHVuc2lnbmVkIG51bVRpbGVzID0gbnVtVGlsZXNYICog
bnVtVGlsZXNZOwotICAgIGNvbnN0IEludFNpemUgbGF5ZXJTaXplKHRpbGVTaXplLndpZHRoKCkg
KiBudW1UaWxlc1gsIHRpbGVTaXplLmhlaWdodCgpICogbnVtVGlsZXNZKTsKLSAgICBPd25QdHI8
Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXpl
LCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwotICAgIGxheWVyLT5zZXRCYWNr
Z3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkpOwotICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ292ZXJz
Vmlld3BvcnQodHJ1ZSk7Ci0KLSAgICAvLyBObyBndXR0ZXIgcmVjdHMKLSAgICB7Ci0gICAgICAg
IEludFJlY3QgY2xpcFJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSk7Ci0gICAg
ICAgIGxheWVyLT5zZXRDbGlwUmVjdChjbGlwUmVjdCk7Ci0gICAgICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7Ci0KLSAgICAgICAg
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRl
U2hhcmVkUXVhZFN0YXRlKCk7Ci0KLSAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVy
OwotICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKLSAgICAgICAgbGF5ZXIt
PmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNr
ZXJib2FyZCk7Ci0gICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgp
LCBudW1UaWxlcyk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVy
LnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxl
ci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpOwot
ICAgIH0KLQotICAgIC8vIEVtcHR5IHZpc2libGUgY29udGVudCBhcmVhIChmdWxsc2NyZWVuIGd1
dHRlciByZWN0KQotICAgIHsKLSAgICAgICAgSW50UmVjdCBjbGlwUmVjdCA9IEludFJlY3QoMTAw
LCAxMDAsIDEwMCwgMTAwKTsKLSAgICAgICAgbGF5ZXItPnNldENsaXBSZWN0KGNsaXBSZWN0KTsK
LSAgICAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgpKTsKLQotICAgICAg
ICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVh
dGVTaGFyZWRRdWFkU3RhdGUoKTsKLSAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVy
OwotICAgICAgICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKLSAgICAgICAgbGF5ZXIt
PmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNr
ZXJib2FyZCk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1
YWRMaXN0KCkuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5x
dWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpLCBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yKTsKLQotICAg
ICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZEN1bGxlci5xdWFkTGlzdCgpLCBj
bGlwUmVjdCk7Ci0gICAgfQotCi0gICAgLy8gQ29udGVudCBhcmVhIGluIG1pZGRsZSBvZiBjbGlw
IHJlY3QgKGZvdXIgc3Vycm91bmRpbmcgZ3V0dGVyIHJlY3RzKQotICAgIHsKLSAgICAgICAgSW50
UmVjdCBjbGlwUmVjdCA9IEludFJlY3QoLTUwLCAtNTAsIDEwMCwgMTAwKTsKLSAgICAgICAgbGF5
ZXItPnNldENsaXBSZWN0KGNsaXBSZWN0KTsKLSAgICAgICAgbGF5ZXItPnNldFZpc2libGVMYXll
clJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKLQotICAgICAgICBPd25QdHI8
Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRR
dWFkU3RhdGUoKTsKLSAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAg
ICBib29sIHVzZWRDaGVja2VyYm9hcmQgPSBmYWxzZTsKLSAgICAgICAgbGF5ZXItPmFwcGVuZFF1
YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdXNlZENoZWNrZXJib2FyZCk7
Ci0KLSAgICAgICAgdW5zaWduZWQgbnVtQ29udGVudFRpbGVzID0gMCwgbnVtR3V0dGVyVGlsZXMg
PSAwOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3Qo
KS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKHF1YWRDdWxsZXIucXVhZExpc3QoKVtp
XS0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQpCi0gICAgICAgICAgICAg
ICAgbnVtQ29udGVudFRpbGVzKys7Ci0gICAgICAgICAgICBlbHNlIGlmIChxdWFkQ3VsbGVyLnF1
YWRMaXN0KClbaV0tPm1hdGVyaWFsKCkgPT0gQ0NEcmF3UXVhZDo6U29saWRDb2xvcikKLSAgICAg
ICAgICAgICAgICBudW1HdXR0ZXJUaWxlcysrOwotICAgICAgICB9Ci0gICAgICAgIEVYUEVDVF9F
UShudW1Db250ZW50VGlsZXMsIG51bVRpbGVzKTsKLSAgICAgICAgRVhQRUNUX0dFKG51bUd1dHRl
clRpbGVzLCA0dSk7Ci0KLSAgICAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRD
dWxsZXIucXVhZExpc3QoKSwgY2xpcFJlY3QpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5j
cHAKaW5kZXggZTdkZTM1NmRkMGRhMzhhMzFiODk2YjJkN2E5YzQ4YTliMWEzNmMyMy4uZjNmOThj
ZmE3MDQ4MzdmNDJhYTI3ZDJiOGM5NGIxOGNmYjRjNGNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTUwNiw3ICs1MDYs
NiBAQCBURVNUX0YoTGF5ZXJDaHJvbWl1bVRlc3QsIGNoZWNrUHJvcGVydHlDaGFuZ2VDYXVzZXND
b3JyZWN0QmVoYXZpb3IpCiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRf
QkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDEuMjNmLCA0
LjU2ZikpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklP
UigxLCB0ZXN0TGF5ZXItPnNldEFuY2hvclBvaW50WigwLjdmKSk7CiAgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3IoMC40ZiwgMC40ZiwgMC40ZikpKTsKLSAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldEJhY2tncm91bmRD
b3ZlcnNWaWV3cG9ydCh0cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19D
T01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpKTsKICAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5
ZXItPnNldE1hc2tMYXllcihkdW1teUxheWVyLmdldCgpKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRPcGFjaXR5KDAu
NWYpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136263</attachid>
            <date>2012-04-09 10:44:36 -0700</date>
            <delta_ts>2012-04-09 19:16:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83351-20120409134435.patch</filename>
            <type>text/plain</type>
            <size>53686</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhMThmMDA3YTE4MjNi
MTY4NzQyYjA1YmMxMmZkMTQ3MWQyMTgxYmJkLi43NmJlODYwMDE3NTc2ZTcyM2ZhOGM2YjYyMTUz
NGM0ZDllZDI5MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNC0wNiAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFZpZXdwb3J0IGlzIG5vdCBmaWxsZWQgd2hlbiBvdXQgb2YgdGV4dHVyZSBtZW1vcnkgb24gbWFj
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzM1MQor
CisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3
KToKKwogMjAxMi0wNC0wNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIGZpZ3VyZSBvdXQgaG93IHRvIGV4cG9ydCB3ZWJjb3JlIHN5bWJvbHMgZnJvbSB3ZWJraXQu
ZGxsIHByb3Blcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y2OGQ2YzcwZmQ4MjY2NTllYTRlNjE3YWFmNDNj
ZWVkNjEwNzlhMy4uYWIxZDQ5MTBhYTEwOGUwOTNhY2QyOTQ2MDQxMzVlYWQ0ZjI5YWZjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA0LTA2ICBEYW5hIEphbnNlbnMgIDxkYW5h
a2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVmlld3BvcnQgaXMgbm90IGZp
bGxlZCB3aGVuIG91dCBvZiB0ZXh0dXJlIG1lbW9yeSBvbiBtYWMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMzUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAgICAgIEN1cnJlbnRseSB3ZSBhZGQgZ3V0dGVyIHF1
YWRzIG9uIHRoZSBOb25Db21wb3NpdGVkQ29udGVudEhvc3QgbGF5ZXIsCisgICAgICAgIHdoaWNo
IGxpZXMgYWJvdmUgYW5vdGhlciB2aXNpYmxlIGxheWVyIC0gdGhlIHJ1YmJlcmJhbmQgbGF5ZXIg
b24gbWFjLgorICAgICAgICBGb3IgdGhpcyByZWFzb24sIG9uIG1hYywgZ3V0dGVyIHF1YWRzIHdl
cmUgZGlzYWJsZWQsIGFzIHdlbGwgYXMgZm9yY2luZworICAgICAgICB0aGUgTkNDSCBsYXllciB0
byBkcmF3LCBpbiBvcmRlciB0byBtYWtlIHRoZSBydWJiZXJiYW5kIGxheWVyIGFwcGVhci4KKwor
ICAgICAgICBXZSBtb3ZlIHRoZSBsb2dpYyBmb3IgYWRkaW5nIGd1dHRlciBxdWFkcyBpbnRvIEND
UmVuZGVyUGFzcywgYW5kIGFkZAorICAgICAgICBndXR0ZXIgcXVhZHMgZm9yIGFsbCBwaXhlbHMg
dGhhdCBhcmUgdmlzaWJsZSB0aHJvdWdoIHRoZSB2aWV3cG9ydC4KKyAgICAgICAgVGhpcyBhbGxv
d3MgdXMgdG8gc3RvcCBzcGVjaWFsLWNhc2luZyB0aGUgTkNDSCBsYXllciwgYW5kIGFsbG93cyB1
cworICAgICAgICB0byBza2lwIGRyYXdpbmcgdGhlIGxheWVyIGVxdWFsbHkgd2l0aCBvdGhlciBs
YXllcnMuIFdlIHJlbW92ZSB0aGUKKyAgICAgICAgYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KCkg
ZmxhZyBlbnRpcmVseS4KKworICAgICAgICBJbiBvcmRlciB0byBkbyB0aGlzLCB3ZSBmaXggYSBi
dWcgaW4gdGhlIG9jY2x1c2lvbiB0cmFja2VyLCB0aGF0CisgICAgICAgIGFsbG93ZWQgb3BhcXVl
KCkgbGF5ZXJzIHdpdGggc2tpcHNEcmF3IHRvIG9jY2x1ZGUsIGJ5IG1ha2luZworICAgICAgICB0
aGUgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKSBtZXRob2Qgb24gdGhlIGxheWVyIGNsYXNz
ZXMKKyAgICAgICAgYWxzbyByZXR1cm4gdGhlIG9wYXF1ZSByZWdpb24gZm9yIG5vbi10aWxlZCBs
YXllcnMsIGFsd2F5cyB1c2UKKyAgICAgICAgaXRzIHZhbHVlIGluIHRoZSBvY2NsdXNpb24gdHJh
Y2tlci4KKworICAgICAgICBVbml0IHRlc3Q6IENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LnZpZXdw
b3J0Q292ZXJlZAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpMYXllckNocm9t
aXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6dmlzaWJsZUNvbnRlbnRPcGFxdWVS
ZWdpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGls
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp2aXNpYmxlQ29udGVu
dE9wYXF1ZVJlZ2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OkNDTGF5ZXJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjp2aXNpYmxlQ29udGVudE9wYXF1
ZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcklt
cGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpDQ0xheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpmaW5pc2hDb21taXRPbkltcGxUaHJlYWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAg
ICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3Nlcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6YmFja2dyb3VuZENvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAg
ICAgIChDQ0xheWVyVHJlZUhvc3RJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZU9jY2x1c2lvbkJlaGluZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5oOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlOjpjb21wdXRlVmlzaWJs
ZVJlZ2lvbkluU2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjphcHBl
bmRRdWFkc1RvRmlsbFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ0NSZW5kZXJQYXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
VGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRM
YXllckltcGw6OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpza2lwc0RyYXcpOgorICAgICAgICAoQ0NUaWxlZExheWVy
SW1wbCk6CisKIDIwMTItMDQtMDkgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIENyb3NzLW9yaWdpbiBwcmVmbGlnaHQgcmVxdWVzdCBzaG91bGQgbm90IGluY2x1
ZGUgY3JlZGVudGlhbHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZiNTljMzlhMzE4
Y2U1YWI5ZmEzNzgxODRkYzhhNjdmYjFkMmRjMTUuLmFlYTEwZmUxNzE5Y2UzNmE4YzMxODJiNDcz
NTg4ZDliODIyZGJlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTItMDQtMDYgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW2Nocm9taXVtXSBWaWV3cG9ydCBpcyBub3QgZmlsbGVkIHdoZW4gb3V0IG9mIHRleHR1
cmUgbWVtb3J5IG9uIG1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODMzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIuCisK
KyAgICAgICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldEJhY2tncm91
bmRDb2xvcik6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsQ29udGVudFBhaW50ZXI6OnBhaW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2
ZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkJsZW5kU3RhdGVDaGVja0xh
eWVyOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAgICAg
ICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0KToK
KyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdENvbW1pdDo6Q0NMYXllclRyZWVIb3N0
VGVzdENvbW1pdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXQ6OmJl
Z2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXQ6OmNvbW1p
dENvbXBsZXRlT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RD
b21taXQ6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisgICAgICAgIChUZXN0
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5j
cHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VGVzdENvbnRlbnRMYXllckNocm9taXVtOjpUZXN0
Q29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRlc3RDb250ZW50
TGF5ZXJDaHJvbWl1bTo6dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OlRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bTo6c2V0T3BhcXVlQ29udGVudHNSZWN0
KToKKyAgICAgICAgKFRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6VGVzdENvbnRlbnRMYXllckltcGw6OlRlc3RDb250ZW50TGF5ZXJJbXBsKToKKyAgICAg
ICAgKFRlc3RDb250ZW50TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpUZXN0Q29u
dGVudExheWVySW1wbDo6dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OlRlc3RDb250ZW50TGF5ZXJJbXBsOjpzZXRPcGFxdWVDb250ZW50c1JlY3QpOgor
ICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0
cy9MYXllckNocm9taXVtVGVzdC5jcHA6CisKIDIwMTItMDQtMDkgIERhbmEgSmFuc2VucyAgPGRh
bmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBNYWtlIGN1bGxpbmcgd29y
ayB3aXRoIGNsaXBwZWQgcmVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggMmExNmM4NjcwNWMzYjkyY2NiNGU4ZWQ0YzBi
OWEzZDYwZmEyMWNmNC4uMTlmZGJlYjZlOTdlZjFiNjc2NDE2NTI5OWNmMGZhMjhiOTNhZmMzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgV2ViTGF5ZXJUcmVlVmlld19oCiAjZGVm
aW5lIFdlYkxheWVyVHJlZVZpZXdfaAogCisjaW5jbHVkZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRl
ICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCiAKQEAgLTEwOCw2ICsx
MDksOSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0U2l6ZShj
b25zdCBXZWJTaXplJik7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIHZpZXdwb3J0U2l6ZSgp
IGNvbnN0OwogCisgICAgLy8gU2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHZpZXdw
b3J0LgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3Ip
OworCiAgICAgLy8gU2V0cyB3aGV0aGVyIHRoaXMgdmlldyBpcyB2aXNpYmxlLiBJbiB0aHJlYWRl
ZCBtb2RlLCBhIHZpZXcgdGhhdCBpcyBub3QgdmlzaWJsZSB3aWxsIG5vdAogICAgIC8vIGNvbXBv
c2l0ZSBvciB0cmlnZ2VyIHVwZGF0ZUFuaW1hdGlvbnMoKSBvciBsYXlvdXQoKSBjYWxscyB1bnRp
bCBpdCBiZWNvbWVzIHZpc2libGUuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpc2libGUo
Ym9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDJhZDA5Yjk0OGE0M2JiM2NlM2E3MTk1
MWZjN2I1ZDllMTMwMGVhNTUuLmYzZTlhMGQ5NzYxMGM1YTNiZGRmZWQ3ODRlYjVkZTBkNmI2ZDE4
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC02Niw3ICs2Niw2IEBAIExheWVyQ2hyb21p
dW06OkxheWVyQ2hyb21pdW0oKQogICAgICwgbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNoYW5n
ZWQoZmFsc2UpCiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41KQogICAgICwgbV9iYWNrZ3Jv
dW5kQ29sb3IoMCwgMCwgMCwgMCkKLSAgICAsIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZh
bHNlKQogICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgLCBtX29wYWNpdHkoMS4wKQog
ICAgICwgbV9hbmNob3JQb2ludFooMCkKQEAgLTI3MCwxNCArMjY5LDYgQEAgdm9pZCBMYXllckNo
cm9taXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikK
ICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCi12b2lkIExheWVyQ2hyb21pdW06OnNldEJhY2tn
cm91bmRDb3ZlcnNWaWV3cG9ydChib29sIGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCkKLXsKLSAg
ICBpZiAobV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQgPT0gYmFja2dyb3VuZENvdmVyc1ZpZXdw
b3J0KQotICAgICAgICByZXR1cm47Ci0gICAgbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQgPSBi
YWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQ7Ci0gICAgc2V0TmVlZHNDb21taXQoKTsKLX0KLQogdm9p
ZCBMYXllckNocm9taXVtOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKIHsK
ICAgICBpZiAobV9tYXNrc1RvQm91bmRzID09IG1hc2tzVG9Cb3VuZHMpCkBAIC00NTMsNyArNDQ0
LDYgQEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBs
YXllcikKICAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQobV9hbmNob3JQb2ludCk7CiAgICAgbGF5
ZXItPnNldEFuY2hvclBvaW50WihtX2FuY2hvclBvaW50Wik7CiAgICAgbGF5ZXItPnNldEJhY2tn
cm91bmRDb2xvcihtX2JhY2tncm91bmRDb2xvcik7Ci0gICAgbGF5ZXItPnNldEJhY2tncm91bmRD
b3ZlcnNWaWV3cG9ydChtX2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCk7CiAgICAgbGF5ZXItPnNl
dEJvdW5kcyhtX2JvdW5kcyk7CiAgICAgbGF5ZXItPnNldENvbnRlbnRCb3VuZHMoY29udGVudEJv
dW5kcygpKTsKICAgICBsYXllci0+c2V0RGVidWdCb3JkZXJDb2xvcihtX2RlYnVnQm9yZGVyQ29s
b3IpOwpAQCAtNjMxLDYgKzYyMSwxMyBAQCB2b2lkIExheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1h
dGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQmIGV2ZW50LAogICAgIG1f
bGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh3YWxsQ2xvY2tU
aW1lKTsKIH0KIAorUmVnaW9uIExheWVyQ2hyb21pdW06OnZpc2libGVDb250ZW50T3BhcXVlUmVn
aW9uKCkgY29uc3QKK3sKKyAgICBpZiAob3BhcXVlKCkpCisgICAgICAgIHJldHVybiB2aXNpYmxl
TGF5ZXJSZWN0KCk7CisgICAgcmV0dXJuIFJlZ2lvbigpOworfQorCiB2b2lkIHNvcnRMYXllcnMo
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+OjppdGVyYXRvciwgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+OjppdGVyYXRvciwgdm9pZCopCiB7CiAgICAgLy8gQ3VycmVudGx5IHdl
IGRvbid0IHVzZSB6LW9yZGVyIHRvIGRlY2lkZSB3aGF0IHRvIHBhaW50LCBzbyB0aGVyZSdzIG5v
IG5lZWQgdG8gYWN0dWFsbHkgc29ydCBMYXllckNocm9taXVtcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApp
bmRleCBiOTgwMjJiNTJkYTU4YjkxOTdjYmY1NDQ4Y2I2ZDQwYTlhMDdjMjcwLi5mNDE4ZGZkNGJh
ZTVjODgwMTAwNGU2Yzk3YmVlYTBmMTgxZGNiNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC05
OSw5ICs5OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBD
b2xvciYpOwogICAgIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZENvbG9yOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydChi
b29sKTsKLSAgICBib29sIGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0OyB9Ci0KICAgICB2b2lkIHNldEJvdW5kcyhjb25z
dCBJbnRTaXplJik7CiAgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRCb3VuZHMoKSBjb25zdCB7
IHJldHVybiBib3VuZHMoKTsgfQogCkBAIC0yNDYsNyArMjQzLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50
JiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogCi0gICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNv
bnRlbnRPcGFxdWVSZWdpb24oKSBjb25zdCB7IHJldHVybiBSZWdpb24oKTsgfTsKKyAgICB2aXJ0
dWFsIFJlZ2lvbiB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBTY3JvbGxiYXJMYXllckNocm9taXVtKiB0b1Njcm9sbGJhckxheWVyQ2hyb21pdW0oKSB7
IHJldHVybiAwOyB9CiAKQEAgLTMwNSw3ICszMDIsNiBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9p
bnQgbV9wb3NpdGlvbjsKICAgICBGbG9hdFBvaW50IG1fYW5jaG9yUG9pbnQ7CiAgICAgQ29sb3Ig
bV9iYWNrZ3JvdW5kQ29sb3I7Ci0gICAgYm9vbCBtX2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydDsK
ICAgICBDb2xvciBtX2RlYnVnQm9yZGVyQ29sb3I7CiAgICAgZmxvYXQgbV9kZWJ1Z0JvcmRlcldp
ZHRoOwogICAgIFN0cmluZyBtX2RlYnVnTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IDEyYjJjNWQ0OWJmYjNjMmFmZDI5NTg1OTc4Y2FiMDdmZDU4NTNiODEuLjI2NjFk
ODcxYmIzNGExNmQ5ZDQ0OGM2ZDllYjQzZmIyYmM1YzIwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcApAQCAtNDU0LDEwICs0NTQsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50
CiAgICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnJlc2VydmUobV90aWxl
ci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkgewogICAgICAgICAgICAgICAgIG1fc2tp
cHNJZGxlUGFpbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmICghaWRsZSkgewotICAgICAg
ICAgICAgICAgICAgICAvLyBJZiB0aGUgYmFja2dyb3VuZCBjb3ZlcnMgdGhlIHZpZXdwb3J0LCBh
bHdheXMgZHJhdyB0aGlzCi0gICAgICAgICAgICAgICAgICAgIC8vIGxheWVyIHNvIHRoYXQgY2hl
Y2tlcmJvYXJkZWQgdGlsZXMgd2lsbCBzdGlsbCBkcmF3LgotICAgICAgICAgICAgICAgICAgICBp
ZiAoIWJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
bV9za2lwc0RyYXcgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtX3NraXBzRHJhdyA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIG1fdGlsZXItPnJlc2V0KCk7CiAgICAgICAgICAgICAg
ICAgICAgIG1fcGFpbnRSZWN0ID0gSW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICBtX3Jl
cXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QoKTsKQEAgLTU4MCw3ICs1NzcsOCBAQCBS
ZWdpb24gVGlsZWRMYXllckNocm9taXVtOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNv
bnN0CiB7CiAgICAgaWYgKG1fc2tpcHNEcmF3KQogICAgICAgICByZXR1cm4gUmVnaW9uKCk7Ci0K
KyAgICBpZiAob3BhcXVlKCkpCisgICAgICAgIHJldHVybiB2aXNpYmxlTGF5ZXJSZWN0KCk7CiAg
ICAgcmV0dXJuIG1fdGlsZXItPm9wYXF1ZVJlZ2lvbkluTGF5ZXJSZWN0KHZpc2libGVMYXllclJl
Y3QoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCAyYWZiOWQ4ZmY3NDFmOTMz
NTk1NjZhMTY5ZmQ0MzcyOTcwMmE3OTY5Li5hMmE0MTg1MzI5YjhkOWFmZDkyZDZjYzRhMDUyZmRi
NzE4YThjYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC01MCw3ICs1MCw2IEBAIEND
TGF5ZXJJbXBsOjpDQ0xheWVySW1wbChpbnQgaWQpCiAgICAgLCBtX3Njcm9sbGFibGUoZmFsc2Up
CiAgICAgLCBtX3Nob3VsZFNjcm9sbE9uTWFpblRocmVhZChmYWxzZSkKICAgICAsIG1faGF2ZVdo
ZWVsRXZlbnRIYW5kbGVycyhmYWxzZSkKLSAgICAsIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0
KGZhbHNlKQogICAgICwgbV9kb3VibGVTaWRlZCh0cnVlKQogICAgICwgbV9sYXllclByb3BlcnR5
Q2hhbmdlZChmYWxzZSkKICAgICAsIG1fbWFza3NUb0JvdW5kcyhmYWxzZSkKQEAgLTEzNiw0MyAr
MTM1LDYgQEAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NMYXllckltcGw6OmNyZWF0
ZVNoYXJlZFF1YWRTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIENDU2hhcmVkUXVhZFN0YXRlOjpj
cmVhdGUocXVhZFRyYW5zZm9ybSgpLCBkcmF3VHJhbnNmb3JtKCksIHZpc2libGVMYXllclJlY3Qo
KSwgbGF5ZXJDbGlwUmVjdCwgZHJhd09wYWNpdHkoKSwgb3BhcXVlKCkpOwogfQogCi12b2lkIEND
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKLXsKLSAgICBhcHBlbmRHdXR0
ZXJRdWFkcyhxdWFkTGlzdCwgc2hhcmVkUXVhZFN0YXRlKTsKLX0KLQotdm9pZCBDQ0xheWVySW1w
bDo6YXBwZW5kR3V0dGVyUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKLXsKLSAgICBpZiAoIWJhY2tncm91bmRDb3Zl
cnNWaWV3cG9ydCgpIHx8ICFiYWNrZ3JvdW5kQ29sb3IoKS5pc1ZhbGlkKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3Qo
KTsKLSAgICBJbnRSZWN0IGNsaXAgPSBzY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2UoKS5t
YXBSZWN0KGNsaXBSZWN0KCkpOwotCi0gICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgcXVhZExpc3QuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVk
UXVhZFN0YXRlLCBjbGlwLCBiYWNrZ3JvdW5kQ29sb3IoKSkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgSW50UmVjdCBndXR0ZXJSZWN0c1s0XTsKLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IDQ7IGkrKykKLSAgICAgICAgZ3V0dGVyUmVjdHNbaV0gPSBjbGlwOwotICAgIGd1dHRlclJl
Y3RzWzBdLnNoaWZ0TWF4WUVkZ2VUbyhsYXllclJlY3QueSgpKTsKLSAgICBndXR0ZXJSZWN0c1sx
XS5zaGlmdFlFZGdlVG8obGF5ZXJSZWN0Lm1heFkoKSk7Ci0gICAgZ3V0dGVyUmVjdHNbMl0uc2hp
ZnRNYXhYRWRnZVRvKGxheWVyUmVjdC54KCkpOwotICAgIGd1dHRlclJlY3RzWzNdLnNoaWZ0WEVk
Z2VUbyhsYXllclJlY3QubWF4WCgpKTsKLQotICAgIGd1dHRlclJlY3RzWzJdLnNoaWZ0WUVkZ2VU
byhsYXllclJlY3QueSgpKTsKLSAgICBndXR0ZXJSZWN0c1szXS5zaGlmdFlFZGdlVG8obGF5ZXJS
ZWN0LnkoKSk7Ci0gICAgZ3V0dGVyUmVjdHNbMl0uc2hpZnRNYXhZRWRnZVRvKGxheWVyUmVjdC5t
YXhZKCkpOwotICAgIGd1dHRlclJlY3RzWzNdLnNoaWZ0TWF4WUVkZ2VUbyhsYXllclJlY3QubWF4
WSgpKTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgIGlmICgh
Z3V0dGVyUmVjdHNbaV0uaXNFbXB0eSgpKQotICAgICAgICAgICAgcXVhZExpc3QuYXBwZW5kKEND
U29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBndXR0ZXJSZWN0c1tp
XSwgYmFja2dyb3VuZENvbG9yKCkpKTsKLSAgICB9Ci19Ci0KIHZvaWQgQ0NMYXllckltcGw6OmFw
cGVuZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBjb25zdAogewogICAgIGlmICghaGFzRGVidWdC
b3JkZXJzKCkpCkBAIC0zOTIsMTUgKzM1NCw2IEBAIHZvaWQgQ0NMYXllckltcGw6OnNldEJhY2tn
cm91bmRDb2xvcihjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKQogICAgIG1fbGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQgPSB0cnVlOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5k
Q292ZXJzVmlld3BvcnQoYm9vbCBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpCi17Ci0gICAgaWYg
KG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0ID09IGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQgPSBiYWNr
Z3JvdW5kQ292ZXJzVmlld3BvcnQ7Ci0gICAgbV9sYXllclByb3BlcnR5Q2hhbmdlZCA9IHRydWU7
Ci19Ci0KIHZvaWQgQ0NMYXllckltcGw6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9u
cyYgZmlsdGVycykKIHsKICAgICBpZiAobV9maWx0ZXJzID09IGZpbHRlcnMpCkBAIC01NTIsNiAr
NTA1LDEzIEBAIHZvaWQgQ0NMYXllckltcGw6OnNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lk
ZWQpCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOwogfQogCitSZWdp
b24gQ0NMYXllckltcGw6OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3QKK3sKKyAg
ICBpZiAob3BhcXVlKCkpCisgICAgICAgIHJldHVybiB2aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAg
cmV0dXJuIFJlZ2lvbigpOworfQorCiB2b2lkIENDTGF5ZXJJbXBsOjpkaWRMb3NlQ29udGV4dCgp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCA2Y2I2ZGYwM2MyOWVhZTYwODdlMGY0YTll
ZTk0MWMzMmI5OTUwODkyLi43Yjc1OTg0MzUxMDU4YmQ3NzExMDNjM2Q5NmE5ZDRkNmI0ODBkN2Uy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAg
UGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOworICAgIHZpcnR1YWwgdm9p
ZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJv
b2wmIHVzZWRDaGVja2VyYm9hcmQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCkgeyB9
CiAgICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqKSBjb25zdDsKIApAQCAtMTA3LDkgKzEwNyw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIENvbG9yIGJhY2tn
cm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAKLSAgICB2
b2lkIHNldEJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydChib29sKTsKLSAgICBib29sIGJhY2tncm91
bmRDb3ZlcnNWaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdw
b3J0OyB9Ci0KICAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwog
ICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2Zp
bHRlcnM7IH0KIApAQCAtMjMyLDcgKzIyOSw3IEBAIHB1YmxpYzoKIAogICAgIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyKiBsYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCBSZWdpb24gdmlz
aWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKSBjb25zdCB7IHJldHVybiBSZWdpb24oKTsgfTsKKyAg
ICB2aXJ0dWFsIFJlZ2lvbiB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0OwogCiAg
ICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIGNvbnRleHQgcHJldmlvdXNseSB1c2VkIHRvIHJlbmRl
ciB0aGlzIGxheWVyCiAgICAgLy8gd2FzIGxvc3QgYW5kIHRoYXQgYSBuZXcgb25lIGhhcyBiZWVu
IGNyZWF0ZWQuIFdvbid0IGJlIGNhbGxlZApAQCAtMjQ4LDggKzI0NSw2IEBAIHByb3RlY3RlZDoK
ICAgICAvLyBUcmFuc2Zvcm1hdGlvbiB1c2VkIHRvIHRyYW5zZm9ybSBxdWFkcyBwcm92aWRlZCBp
biBhcHBlbmRRdWFkcy4KICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRUcmFu
c2Zvcm0oKSBjb25zdDsKIAotICAgIHZvaWQgYXBwZW5kR3V0dGVyUXVhZHMoQ0NRdWFkQ3VsbGVy
JiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKLQogcHJpdmF0ZToKICAgICB2b2lkIHNldFBh
cmVudChDQ0xheWVySW1wbCogcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAgICAgZnJp
ZW5kIGNsYXNzIFRyZWVTeW5jaHJvbml6ZXI7CkBAIC0yODUsNyArMjgwLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKICAgICBSZWdpb24gbV9ub25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbjsKICAgICBDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKLSAgICBib29s
IG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0OwogCiAgICAgLy8gV2hldGhlciB0aGUgImJhY2si
IG9mIHRoaXMgbGF5ZXIgc2hvdWxkIGRyYXcuCiAgICAgYm9vbCBtX2RvdWJsZVNpZGVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggOGRjOWI0ZjNkMDJhOTZiMWFkNzFhNmE1
YmRiZjFkYTE4NWM1MWRiYy4uNTczOTE3OWY5ZTZjYmE2YWZlZWI5NzFjNWM5ZmQ1YTMwMTc0OWY0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC04MCw2ICs4MCw3IEBAIEND
TGF5ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xp
ZW50LCBjb25zdCBDQ1NldHRpbmdzCiAgICAgLCBtX21pblBhZ2VTY2FsZUZhY3RvcigxKQogICAg
ICwgbV9tYXhQYWdlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fdHJpZ2dlcklkbGVQYWludHModHJ1
ZSkKKyAgICAsIG1fYmFja2dyb3VuZENvbG9yKENvbG9yOjp3aGl0ZSkKICAgICAsIG1fcGFydGlh
bFRleHR1cmVVcGRhdGVSZXF1ZXN0cygwKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5U
aHJlYWQoKSk7CkBAIC0yMjAsNiArMjIxLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlz
aENvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICBo
b3N0SW1wbC0+c2V0U291cmNlRnJhbWVOdW1iZXIoZnJhbWVOdW1iZXIoKSk7CiAgICAgaG9zdElt
cGwtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUoKSk7CiAgICAgaG9zdEltcGwtPnNldFBh
Z2VTY2FsZUZhY3RvckFuZExpbWl0cyhtX3BhZ2VTY2FsZUZhY3RvciwgbV9taW5QYWdlU2NhbGVG
YWN0b3IsIG1fbWF4UGFnZVNjYWxlRmFjdG9yKTsKKyAgICBob3N0SW1wbC0+c2V0QmFja2dyb3Vu
ZENvbG9yKG1fYmFja2dyb3VuZENvbG9yKTsKIAogICAgIG1fZnJhbWVOdW1iZXIrKzsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggOWNhMTRmYzA0NDg4M2FiMGMzMTA5YTk3ZmI4
YmUxYjJiYTIzNzE2MS4uNjVkNGI4YmY2ZjQzZTAxZGZkMWY5MGYzNTkwMDUxNGU4M2RhYjU2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpZm5kZWYg
Q0NMYXllclRyZWVIb3N0X2gKICNkZWZpbmUgQ0NMYXllclRyZWVIb3N0X2gKIAorI2luY2x1ZGUg
IkNvbG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKQEAgLTIwMSw2ICsyMDIsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhmbG9hdCBwYWdlU2Nh
bGVGYWN0b3IsIGZsb2F0IG1pblBhZ2VTY2FsZUZhY3RvciwgZmxvYXQgbWF4UGFnZVNjYWxlRmFj
dG9yKTsKIAorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikg
eyBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOyB9CisKICAgICBUZXh0dXJlTWFuYWdlciogY29u
dGVudHNUZXh0dXJlTWFuYWdlcigpIGNvbnN0OwogCiAgICAgYm9vbCB2aXNpYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV92aXNpYmxlOyB9CkBAIC0yNzAsNiArMjczLDcgQEAgcHJpdmF0ZToKICAgICBm
bG9hdCBtX3BhZ2VTY2FsZUZhY3RvcjsKICAgICBmbG9hdCBtX21pblBhZ2VTY2FsZUZhY3Rvciwg
bV9tYXhQYWdlU2NhbGVGYWN0b3I7CiAgICAgYm9vbCBtX3RyaWdnZXJJZGxlUGFpbnRzOworICAg
IENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwogCiAgICAgVGV4dHVyZUxpc3QgbV9kZWxldGVUZXh0
dXJlQWZ0ZXJDb21taXRMaXN0OwogICAgIHNpemVfdCBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVx
dWVzdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGQyMWE0
ZTBjNjA5YzM3YmRhZDJkZjkzMTVhZjUwNzI3NmQ3YWQxYmUuLjBlYzQ3MDQ1MjE1ZDFjMTJlMzc4
ZmYwYmQxYTAzODA4Zjg2NzAyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCkBAIC0zMjgsNiArMzI4LDggQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxj
dWxhdGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUKICAgICAg
ICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcigqaXQpOwogICAgIH0K
IAorICAgIHBhc3Nlcy5sYXN0KCktPmFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKHJvb3RMYXllcigp
LCBtX2JhY2tncm91bmRDb2xvciwgb2NjbHVzaW9uVHJhY2tlcik7CisKICAgICBpZiAoZHJhd0Zy
YW1lKQogICAgICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnJlY29yZE1l
dHJpY3ModGhpcyk7CiAgICAgcmV0dXJuIGRyYXdGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaAppbmRleCBkNThkYjVmMmQ0MWU5ZTg1NGNiYjZkZmY0NTZmYTEzMjJhMzEy
YjNjLi5kYzZhMTQ4MzNjMGQ1NTk5ZWQ5ODVhYjgzYzJmMmIwODRmNGVlN2RmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIEND
TGF5ZXJUcmVlSG9zdEltcGxfaAogI2RlZmluZSBDQ0xheWVyVHJlZUhvc3RJbXBsX2gKIAorI2lu
Y2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiY2MvQ0NBbmltYXRpb25FdmVudHMuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxl
ci5oIgpAQCAtMTM4LDYgKzEzOSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnRQYWdlU2Nh
bGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdHJhZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9y
LCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKIAorICAgIGNvbnN0IENvbG9yJiBi
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorICAg
IHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2JhY2tncm91
bmRDb2xvciA9IGNvbG9yOyB9CisKICAgICBib29sIG5lZWRzQW5pbWF0ZUxheWVycygpIGNvbnN0
IHsgcmV0dXJuIG1fbmVlZHNBbmltYXRlTGF5ZXJzOyB9CiAgICAgdm9pZCBzZXROZWVkc0FuaW1h
dGVMYXllcnMoKSB7IG1fbmVlZHNBbmltYXRlTGF5ZXJzID0gdHJ1ZTsgfQogCkBAIC0xODUsNiAr
MTg5LDggQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3NlbnRQYWdlU2NhbGVEZWx0YTsKICAgICBm
bG9hdCBtX21pblBhZ2VTY2FsZSwgbV9tYXhQYWdlU2NhbGU7CiAKKyAgICBDb2xvciBtX2JhY2tn
cm91bmRDb2xvcjsKKwogICAgIC8vIElmIHRoaXMgaXMgdHJ1ZSwgaXQgaXMgbmVjZXNzYXJ5IHRv
IHRyYXZlcnNlIHRoZSBsYXllciB0cmVlIHRpY2tpbmcgdGhlIGFuaW1hdG9ycy4KICAgICBib29s
IG1fbmVlZHNBbmltYXRlTGF5ZXJzOwogICAgIGJvb2wgbV9waW5jaEdlc3R1cmVBY3RpdmU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRleCBjZjc2YmRmNjNiY2ZjMmI4
M2E5NTRkN2VmN2JiYjk2ZjdkMmM5YzE0Li5hNWEwYzVjYTRhOTJkZjI0M2UwMjQwMzIwZDVlMzQz
YjYyNmJhMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTE5
OCwzMCArMTk4LDI5IEBAIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVu
dFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybShjb25zdCBMYXllclR5CiAKIC8vIEZJWE1FOiBSZW1v
dmUgdXNlUGFpbnRUcmFja2luZyB3aGVuIHBhaW50IHRyYWNraW5nIGlzIG9uIGZvciBwYWludCBj
dWxsaW5nLgogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgotc3RhdGljIGlubGluZSBSZWdp
b24gY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyKGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIHNjaXNz
b3JSZWN0LCBib29sIHVzZVBhaW50VHJhY2tpbmcpCitzdGF0aWMgaW5saW5lIFJlZ2lvbiBjb21w
dXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXIoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVnaW9uJiBvcGFxdWVDb250ZW50
cywgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGJvb2wgdXNlUGFpbnRUcmFja2luZykKIHsK
LSAgICBSZWdpb24gb3BhcXVlUmVnaW9uOworICAgIEFTU0VSVChsYXllci0+dmlzaWJsZUxheWVy
UmVjdCgpLmNvbnRhaW5zKG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKSk7CiAKICAgICBib29sIGNs
aXBwZWQ7CiAgICAgRmxvYXRRdWFkIHVub2NjbHVkZWRRdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVh
ZCh0cmFuc2Zvcm0sIEZsb2F0UXVhZChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpKSwgY2xpcHBl
ZCk7CiAgICAgYm9vbCBpc1BhaW50ZWRBeGlzQWxpZ25lZCA9IHVub2NjbHVkZWRRdWFkLmlzUmVj
dGlsaW5lYXIoKTsKICAgICAvLyBGSVhNRTogRmluZCBhIHJlY3QgaW50ZXJpb3IgdG8gZWFjaCB0
cmFuc2Zvcm1lZCBxdWFkLgogICAgIGlmIChjbGlwcGVkIHx8ICFpc1BhaW50ZWRBeGlzQWxpZ25l
ZCkKLSAgICAgICAgcmV0dXJuIG9wYXF1ZVJlZ2lvbjsKKyAgICAgICAgcmV0dXJuIFJlZ2lvbigp
OwogCi0gICAgaWYgKGxheWVyLT5vcGFxdWUoKSkKLSAgICAgICAgb3BhcXVlUmVnaW9uID0gZW5j
bG9zZWRJbnRSZWN0KHVub2NjbHVkZWRRdWFkLmJvdW5kaW5nQm94KCkpOwotICAgIGVsc2UgaWYg
KHVzZVBhaW50VHJhY2tpbmcgJiYgdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKLSAgICAgICAgb3Bh
cXVlUmVnaW9uID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CisgICAgUmVn
aW9uIHRyYW5zZm9ybWVkT3BhcXVlQ29udGVudHM7CisgICAgaWYgKHVzZVBhaW50VHJhY2tpbmcg
JiYgdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKKyAgICAgICAgdHJhbnNmb3JtZWRPcGFxdWVDb250
ZW50cyA9IG9wYXF1ZUNvbnRlbnRzOwogICAgIGVsc2UgaWYgKHVzZVBhaW50VHJhY2tpbmcpIHsK
LSAgICAgICAgUmVnaW9uIGNvbnRlbnRSZWdpb24gPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFx
dWVSZWdpb24oKTsKLSAgICAgICAgVmVjdG9yPEludFJlY3Q+IGNvbnRlbnRSZWN0cyA9IGNvbnRl
bnRSZWdpb24ucmVjdHMoKTsKKyAgICAgICAgVmVjdG9yPEludFJlY3Q+IGNvbnRlbnRSZWN0cyA9
IG9wYXF1ZUNvbnRlbnRzLnJlY3RzKCk7CiAgICAgICAgIC8vIFdlIHZlcmlmeSB0aGF0IHRoZSBw
b3NzaWJsZSBib3VuZHMgb2YgdGhpcyByZWdpb24gYXJlIG5vdCBjbGlwcGVkIGFib3ZlLCBzbyB3
ZSBjYW4gdXNlIG1hcFJlY3QoKSBzYWZlbHkgaGVyZS4KICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb250ZW50UmVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBvcGFxdWVSZWdp
b24udW5pdGUoZW5jbG9zZWRJbnRSZWN0KHRyYW5zZm9ybS5tYXBSZWN0KEZsb2F0UmVjdChjb250
ZW50UmVjdHNbaV0pKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtZWRPcGFxdWVDb250ZW50cy51
bml0ZShlbmNsb3NlZEludFJlY3QodHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KGNvbnRlbnRS
ZWN0c1tpXSkpKSk7CiAgICAgfQotICAgIG9wYXF1ZVJlZ2lvbi5pbnRlcnNlY3Qoc2Npc3NvclJl
Y3QpOwotICAgIHJldHVybiBvcGFxdWVSZWdpb247CisKKyAgICB0cmFuc2Zvcm1lZE9wYXF1ZUNv
bnRlbnRzLmludGVyc2VjdChzY2lzc29yUmVjdCk7CisgICAgcmV0dXJuIHRyYW5zZm9ybWVkT3Bh
cXVlQ29udGVudHM7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUg
UmVuZGVyU3VyZmFjZVR5cGU+CkBAIC0yMzUsOSArMjM0LDEzIEBAIHZvaWQgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bWFya09jY2x1ZGVkQmVo
aW5kTGF5CiAgICAgaWYgKCFsYXllck9wYWNpdHlLbm93bihsYXllcikgfHwgbGF5ZXItPmRyYXdP
cGFjaXR5KCkgPCAxKQogICAgICAgICByZXR1cm47CiAKKyAgICBSZWdpb24gb3BhcXVlQ29udGVu
dHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKKyAgICBpZiAob3BhcXVl
Q29udGVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAgICBJbnRSZWN0IHNjaXNz
b3JJblRhcmdldCA9IGxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIpOwogICAg
IGlmIChsYXllclRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSkKLSAgICAgICAgbV9zdGFj
ay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQudW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJlaGluZExh
eWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5
ZXJUeXBlPihsYXllciksIHNjaXNzb3JJblRhcmdldCwgbV91c2VQYWludFRyYWNraW5nKSk7Cisg
ICAgICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LnVuaXRlKGNvbXB1dGVPY2Ns
dXNpb25CZWhpbmRMYXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9UYXJnZXRTdXJmYWNl
VHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBvcGFxdWVDb250ZW50cywgc2Npc3NvckluVGFy
Z2V0LCBtX3VzZVBhaW50VHJhY2tpbmcpKTsKIAogICAgIC8vIFdlIG11c3QgY2xpcCB0aGUgb2Nj
bHVzaW9uIHdpdGhpbiB0aGUgbGF5ZXIncyBzY2lzc29ySW5UYXJnZXQgd2l0aGluIHNjcmVlbiBz
cGFjZSBhcyB3ZWxsLiBJZiB0aGUgc2Npc3NvciByZWN0IGNhbid0IGJlIG1vdmVkIHRvIHNjcmVl
biBzcGFjZSBhbmQKICAgICAvLyByZW1haW4gcmVjdGlsaW5lYXIsIHRoZW4gd2UgZG9uJ3QgYWRk
IGFueSBvY2NsdXNpb24gaW4gc2NyZWVuIHNwYWNlLgpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bWFy
a09jY2x1ZGVkQmVoaW5kTGF5CiAgICAgICAgIGlmICghc2Npc3NvckluU2NyZWVuUXVhZC5pc1Jl
Y3RpbGluZWFyKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEludFJlY3Qgc2Npc3Nv
ckluU2NyZWVuUmVjdCA9IGludGVyc2VjdGlvbihtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwg
ZW5jbG9zZWRJbnRSZWN0KENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHRhcmdldFRvU2NyZWVu
VHJhbnNmb3JtLCBGbG9hdFJlY3Qoc2Npc3NvckluVGFyZ2V0KSkpKTsKLSAgICAgICAgbV9zdGFj
ay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4udW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJlaGluZExh
eWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVy
VHlwZT4obGF5ZXIpLCBzY2lzc29ySW5TY3JlZW5SZWN0LCBtX3VzZVBhaW50VHJhY2tpbmcpKTsK
KyAgICAgICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4udW5pdGUoY29tcHV0ZU9j
Y2x1c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1NjcmVlblNwYWNl
VHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBvcGFxdWVDb250ZW50cywgc2Npc3NvckluU2Ny
ZWVuUmVjdCwgbV91c2VQYWludFRyYWNraW5nKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRy
YWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
T2NjbHVzaW9uVHJhY2tlci5oCmluZGV4IDZiMmI2ZTE2NjhiNTc5NTljMTM4MjA0NTcyMzMyZjlj
ZjdhOTM0NGYuLmI2MjE5NzNiNTMxOTJkYjdhZWVhOTAxMjk3Y2RlNDVkZjA5NzAxMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2Nj
bHVzaW9uVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCkBAIC03Myw2ICs3Myw5IEBAIHB1YmxpYzoK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBwYWludCB0cmFja2luZyBpcyBvbiBmb3Ig
cGFpbnQgY3VsbGluZy4KICAgICB2b2lkIHNldFVzZVBhaW50VHJhY2tpbmcoYm9vbCB1c2UpIHsg
bV91c2VQYWludFRyYWNraW5nID0gdXNlOyB9CiAKKyAgICAvLyBHaXZlcyB0aGUgcmVnaW9uIG9m
IHRoZSBzY3JlZW4gdGhhdCBpcyBub3Qgb2NjbHVkZWQgYnkgc29tZXRoaW5nIG9wYXF1ZS4KKyAg
ICBSZWdpb24gY29tcHV0ZVZpc2libGVSZWdpb25JblNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIHN1
YnRyYWN0KFJlZ2lvbihtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSksIG1fc3RhY2subGFzdCgp
Lm9jY2x1c2lvbkluU2NyZWVuKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0IFN0YWNrT2Jq
ZWN0IHsKICAgICAgICAgU3RhY2tPYmplY3QoKSA6IHN1cmZhY2UoMCkgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcAppbmRleCA5NmI3NjA4ZjhjZTNlZWM3MmVkYTYwYWRjNzk5ZjQ5ZmY4YWIw
MzAwLi5iYWMxZmM2OTE1MGQ4YTQ4NjY1NmY4YTczNDY4ZDEwOTJmZmU3ZGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzcy5jcHAKQEAgLTI3LDEyICsyNywxNCBAQAogCiAjaW5jbHVkZSAiY2MvQ0NS
ZW5kZXJQYXNzLmgiCiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdl
VHJhY2tlci5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCiAjaW5j
bHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJl
ZFF1YWRTdGF0ZS5oIgorI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTMsNCArOTUsMjMgQEAgdm9pZCBDQ1JlbmRlclBhc3M6
OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllcikKICAg
ICB9CiB9CiAKK3ZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xh
eWVySW1wbCogcm9vdExheWVyLCBjb25zdCBDb2xvciYgc2NyZWVuQmFja2dyb3VuZENvbG9yLCBj
b25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsJiBvY2NsdXNpb25UcmFja2VyKQoreworICAgIGlm
ICghcm9vdExheWVyIHx8ICFzY3JlZW5CYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWdpb24gZmlsbFJlZ2lvbiA9IG9jY2x1c2lvblRyYWNrZXIuY29t
cHV0ZVZpc2libGVSZWdpb25JblNjcmVlbigpOworICAgIGlmIChmaWxsUmVnaW9uLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFy
ZWRRdWFkU3RhdGUgPSByb290TGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOworICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybVRvTGF5ZXJTcGFjZSA9IHJvb3RMYXllci0+c2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0oKS5pbnZlcnNlKCk7CisgICAgVmVjdG9yPEludFJlY3Q+IGZpbGxS
ZWN0cyA9IGZpbGxSZWdpb24ucmVjdHMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZp
bGxSZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IHRyYW5z
Zm9ybVRvTGF5ZXJTcGFjZS5tYXBSZWN0KGZpbGxSZWN0c1tpXSk7CisgICAgICAgIG1fcXVhZExp
c3QuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLmdl
dCgpLCBsYXllclJlY3QsIHNjcmVlbkJhY2tncm91bmRDb2xvcikpOworICAgIH0KKyAgICBtX3No
YXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOworfQor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCmluZGV4IDU5OTAxYzhjNThjZjM3NmEwYzFmMGNjMDlj
NTc4ZWUwNGQzMTYyZTMuLjEyNTI2YjExMDA0MjBlNDYwMWVmM2YyNzkyNTZmZmI0ODgwOTIwMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NSZW5kZXJTdXJmYWNlOwogY2xhc3Mg
Q0NTaGFyZWRRdWFkU3RhdGU7CitjbGFzcyBDb2xvcjsKIAogLy8gQSBsaXN0IG9mIENDRHJhd1F1
YWQgb2JqZWN0cywgc29ydGVkIGludGVybmFsbHkgaW4gZnJvbnQtdG8tYmFjayBvcmRlci4KIGNs
YXNzIENDUXVhZExpc3QgOiBwdWJsaWMgVmVjdG9yPE93blB0cjxDQ0RyYXdRdWFkPiA+IHsKQEAg
LTU2LDYgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRRdWFkc0ZvckxheWVyKEND
TGF5ZXJJbXBsKiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCosIGJvb2wmIHVzZWRDaGVja2VyYm9h
cmQpOwogICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllcklt
cGwqKTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKENDTGF5ZXJJbXBsKiByb290
TGF5ZXIsIGNvbnN0IENvbG9yJiBzY3JlZW5CYWNrZ3JvdW5kQ29sb3IsIGNvbnN0IENDT2NjbHVz
aW9uVHJhY2tlckltcGwmKTsKIAogICAgIGNvbnN0IENDUXVhZExpc3QmIHF1YWRMaXN0KCkgY29u
c3QgeyByZXR1cm4gbV9xdWFkTGlzdDsgfQogICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3Vy
ZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0U3VyZmFjZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmNwcAppbmRleCA3YTNjNDRmZjU0NzVjZWM0MzA1ZDE3OTUxYTk5YmNhMjFk
MDUxYzU0Li40N2QzNzE1ZDRiNTkyODVmYWY3MTQyMmJjM2M2NjU5M2VmNWE2ODRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtMTM5LDggKzEzOSw2IEBAIHZvaWQgQ0NU
aWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhCiB7CiAgICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlzaWJs
ZUxheWVyUmVjdCgpOwogCi0gICAgYXBwZW5kR3V0dGVyUXVhZHMocXVhZExpc3QsIHNoYXJlZFF1
YWRTdGF0ZSk7Ci0KICAgICBpZiAoIW1fdGlsZXIgfHwgbV90aWxlci0+aGFzRW1wdHlCb3VuZHMo
KSB8fCBsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIyOCw3ICsy
MjYsOCBAQCBSZWdpb24gQ0NUaWxlZExheWVySW1wbDo6dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdp
b24oKSBjb25zdAogewogICAgIGlmIChtX3NraXBzRHJhdykKICAgICAgICAgcmV0dXJuIFJlZ2lv
bigpOwotCisgICAgaWYgKG9wYXF1ZSgpKQorICAgICAgICByZXR1cm4gdmlzaWJsZUxheWVyUmVj
dCgpOwogICAgIHJldHVybiBtX3RpbGVyLT5vcGFxdWVSZWdpb25JbkxheWVyUmVjdCh2aXNpYmxl
TGF5ZXJSZWN0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAppbmRleCBiNmIxYTIyOTRkMTQ5NmIzODFk
ZGMxOGIyNGRhZTE1MzZmNjgwOGM4Li5lYzBiMmU0ZjBhZDAxYmRmZDE3MDdmODZmOGY5ZDUyNDgx
NTVkMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3Np
dGVkQ29udGVudEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKQEAgLTQ2LDkgKzQ2LDYgQEAgTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3QoUGFzc093blB0cjxXZWJDb3JlOjpM
YXllclBhaW4KICNlbmRpZgogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0RHJhd3NDb250ZW50KHRy
dWUpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT5zZXRJc05vbkNvbXBv
c2l0ZWRDb250ZW50KHRydWUpOwotI2lmICFFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi0gICAgbV9n
cmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldEJhY2tncm91bmRDb3ZlcnNWaWV3cG9y
dCh0cnVlKTsKLSNlbmRpZgogICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigpLT5z
ZXRPcGFxdWUodHJ1ZSk7CiB9CiAKQEAgLTU4LDEwICs1NSw3IEBAIE5vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdDo6fk5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpCiAKIHZvaWQgTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNv
bG9yKQogewotICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIG1fZ3JhcGhpY3NMYXll
ci0+cGxhdGZvcm1MYXllcigpLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwotICAgIGVsc2UK
LSAgICAgICAgbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnNldEJhY2tncm91bmRD
b2xvcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOworICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZv
cm1MYXllcigpLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwogfQogCiB2b2lkIE5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdDo6c2V0U2Nyb2xsTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciog
bGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcu
Y3BwCmluZGV4IDUzMjQ2YjFjYTg3ZmIzYjFkMTk5Y2JjY2RiZjcyYjMzZGY3MTFlZmQuLmVjYzhl
YTg1Nzc0N2Y4YjcwZDI0YWJiNzkyOTc4ODY0YTVmODI1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC05Nyw2ICs5NywxMSBAQCBX
ZWJTaXplIFdlYkxheWVyVHJlZVZpZXc6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IFdlYlNpemUobV9wcml2YXRlLT52aWV3cG9ydFNpemUoKSk7CiB9CiAKK3ZvaWQgV2ViTGF5ZXJU
cmVlVmlldzo6c2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yIGNvbG9yKQoreworICAgIG1fcHJp
dmF0ZS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30KKwogdm9pZCBXZWJMYXllclRyZWVW
aWV3OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKICAgICBtX3ByaXZhdGUtPnNldFZpc2li
bGUodmlzaWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
aW5kZXggMDMwZDhlMWQxYjU0MzI0ZjBhYzFjYzlmODQyOGJiYWYwYjZhNjI4OC4uODA0ZjZjOWI4
YjIwNzkwNDdiOTZiYThmYzIwNWMwYzRmMTc4ZDI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkNTU1N0
eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAi
Q2hyb21lLmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiQ29tcG9zaXRpb25VbmRlcmxpbmVWZWN0b3JCdWlsZGVyLmgiCiAjaW5jbHVkZSAi
Q29udGV4dE1lbnUuaCIKQEAgLTMyNDQsNiArMzI0NSwxNCBAQCBOb25Db21wb3NpdGVkQ29udGVu
dEhvc3QqIFdlYlZpZXdJbXBsOjpub25Db21wb3NpdGVkQ29udGVudEhvc3QoKQogICAgIHJldHVy
biBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5nZXQoKTsKIH0KIAordm9pZCBXZWJWaWV3SW1w
bDo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAg
ICBXZWJDb3JlOjpDb2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xvciA9IGNvbG9yLmlzVmFsaWQo
KSA/IGNvbG9yIDogV2ViQ29yZTo6Q29sb3I6OndoaXRlOworICAgIFdlYkNvbG9yIHdlYkRvY3Vt
ZW50QmFja2dyb3VuZENvbG9yID0gZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IucmdiKCk7CisgICAg
bV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldEJhY2tncm91bmRDb2xvcihkb2N1bWVudEJh
Y2tncm91bmRDb2xvcik7CisgICAgbV9sYXllclRyZWVWaWV3LnNldEJhY2tncm91bmRDb2xvcih3
ZWJEb2N1bWVudEJhY2tncm91bmRDb2xvcik7Cit9CisKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpCiB2b2lkIFdlYlZpZXdJbXBsOjpzY2hlZHVsZUFuaW1hdGlvbigpCiB7CkBA
IC0zMjc5LDggKzMyODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYktpdDo6UGxhdGZvcm06OmN1
cnJlbnQoKS0+aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQuQWNjZWxSb290UGFpbnRE
dXJhdGlvbk1TIiwgKHBhaW50RW5kIC0gcGFpbnRTdGFydCkgKiAxMDAwLCAwLCAxMjAsIDMwKTsK
ICAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5oaXN0b2dyYW1DdXN0b21Db3Vu
dHMoIlJlbmRlcmVyNC5BY2NlbFJvb3RQYWludE1lZ2FwaXhQZXJTZWNvbmQiLCBwaXhlbHNQZXJT
ZWMgLyAxMDAwMDAwLCAxMCwgMjEwLCAzMCk7CiAKLSAgICAgICAgbV93ZWJWaWV3SW1wbC0+bm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0KCktPnNldEJhY2tncm91bmRDb2xvcih2aWV3LT5kb2N1bWVu
dEJhY2tncm91bmRDb2xvcigpKTsKLQorICAgICAgICBtX3dlYlZpZXdJbXBsLT5zZXRCYWNrZ3Jv
dW5kQ29sb3Iodmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSk7CiAgICAgfQogCiBwcml2
YXRlOgpAQCAtMzMyNyw5ICszMzM1LDYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBtX25vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdCA9IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Y3JlYXRlKFdlYlZpZXdJ
bXBsQ29udGVudFBhaW50ZXI6OmNyZWF0ZSh0aGlzKSk7CiAgICAgICAgIG1fbm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0LT5zZXRTaG93RGVidWdCb3JkZXJzKHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2hv
d0RlYnVnQm9yZGVycygpKTsKIAotICAgICAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+bWFpbkZy
YW1lKCktPnZpZXcoKSkKLSAgICAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5z
ZXRCYWNrZ3JvdW5kQ29sb3IocGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT5kb2N1bWVudEJh
Y2tncm91bmRDb2xvcigpKTsKLQogICAgICAgICBtX2xheWVyVHJlZVZpZXcuaW5pdGlhbGl6ZSh0
aGlzLCBtX3Jvb3RMYXllciwgbGF5ZXJUcmVlVmlld1NldHRpbmdzKTsKICAgICAgICAgaWYgKCFt
X2xheWVyVHJlZVZpZXcuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy5z
ZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yKCksIG1fbWluaW11bVBh
Z2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFnZVNjYWxlRmFjdG9yKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDgwMGU1MTFkYzQ1MWJmNTFjNzE1NzJiYzli
OTEyMjI4MDBkMjY0NGQuLjJmZDgzZmI3ZWQ5YmJmMTUwNGQzMTk3ZjA4MmVjM2E3Njg5MDVmYWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNjAsNiArNjAs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5p
bWF0aW9uOwogY2xhc3MgQ2hyb21pdW1EYXRhT2JqZWN0OworY2xhc3MgQ29sb3I7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CkBA
IC00NjgsNiArNDY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsUm9vdExheWVyUmVjdChj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgY2xpcFJlY3QpOwogICAgIHZvaWQgaW52YWxpZGF0ZVJvb3RMYXllclJlY3QoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOwogICAgIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCogbm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0KCk7CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImKTsKICNlbmRpZgogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RSkKICAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggOGE5ZjM1ZGM4YTdiODljMGM5
NGJkNzUzN2M2ODQ2NGZhNzhhNmJiOC4uYmI2NWNjNTgwYWMxNThiZjA1Y2IzYzk3ZDIxN2YyOTg0
YzhlYWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllcklt
cGxUZXN0LmNwcApAQCAtMTEyLDcgKzExMiw2IEBAIFRFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJp
ZnlMYXllckNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXREZWJ1Z0JvcmRlcldpZHRoKGFyYml0cmFyeU51
bWJlcikpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+
c2V0RHJhd3NDb250ZW50KHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlF
Ul9DSEFOR0VEKHJvb3QtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSkpOwotICAgIEVY
RUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3VuZENv
dmVyc1ZpZXdwb3J0KHRydWUpKTsKIAogICAgIC8vIFNwZWNpYWwgY2FzZTogY2hlY2sgdGhhdCBz
dWJsYXllciB0cmFuc2Zvcm0gY2hhbmdlcyBhbGwgbGF5ZXIncyBkZXNjZW5kYW50cywgYnV0IG5v
dCB0aGUgbGF5ZXIgaXRzZWxmLgogICAgIHJvb3QtPnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JT
dWJ0cmVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDcwMDljOGMzZTkzY2E2Y2MwMmQ0NTUyNTdl
ZjEzMDljZWRmZjY1YmUuLmM5ZjM4YTAxZmRlMWU3OTUyMmE4Nzg1ZjljMGRlOTIwN2Q5OTI3ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NRdWFk
Q3VsbGVyLmgiCiAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21tb24uaCIKKyNpbmNsdWRl
ICJDQ0xheWVyVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQz
RC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIgpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgImNjL0ND
VGlsZURyYXdRdWFkLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIAordXNpbmcgbmFtZXNw
YWNlIENDTGF5ZXJUZXN0Q29tbW9uOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwpAQCAtNTk4LDYg
KzYwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPnNldFF1YWRW
aXNpYmxlUmVjdChtX3F1YWRWaXNpYmxlUmVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShtX2JsZW5k
LCB0ZXN0QmxlbmRpbmdEcmF3UXVhZC0+bmVlZHNCbGVuZGluZygpKTsKICAgICAgICAgRVhQRUNU
X0VRKG1faGFzUmVuZGVyU3VyZmFjZSwgISFyZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBxdWFk
TGlzdC5hcHBlbmQodGVzdEJsZW5kaW5nRHJhd1F1YWQucmVsZWFzZSgpKTsKICAgICB9CiAKICAg
ICB2b2lkIHNldEV4cGVjdGF0aW9uKGJvb2wgYmxlbmQsIGJvb2wgaGFzUmVuZGVyU3VyZmFjZSkK
QEAgLTg0MSw2ICs4NDQsODggQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBibGVu
ZGluZ09mZldoZW5EcmF3aW5nT3BhcXVlTGF5ZXJzKQogCiB9CiAKK1RFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgdmlld3BvcnRDb3ZlcmVkKQoreworICAgIG1faG9zdEltcGwtPmluaXRp
YWxpemVMYXllclJlbmRlcmVyKGNyZWF0ZUNvbnRleHQoKSk7CisgICAgbV9ob3N0SW1wbC0+c2V0
QmFja2dyb3VuZENvbG9yKENvbG9yOjpncmF5KTsKKworICAgIEludFNpemUgdmlld3BvcnRTaXpl
KDEwMCwgMTAwKTsKKyAgICBtX2hvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXpl
KTsKKworICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihCbGVuZFN0YXRlQ2hlY2tMYXllcjo6
Y3JlYXRlKDApKTsKKyAgICBCbGVuZFN0YXRlQ2hlY2tMYXllciogcm9vdCA9IHN0YXRpY19jYXN0
PEJsZW5kU3RhdGVDaGVja0xheWVyKj4obV9ob3N0SW1wbC0+cm9vdExheWVyKCkpOworICAgIHJv
b3QtPnNldEV4cGVjdGF0aW9uKGZhbHNlLCB0cnVlKTsKKyAgICByb290LT5zZXRPcGFxdWUodHJ1
ZSk7CisKKyAgICAvLyBObyBndXR0ZXIgcmVjdHMKKyAgICB7CisgICAgICAgIEludFJlY3QgbGF5
ZXJSZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICAgICAgcm9vdC0+c2V0UG9zaXRpb24obGF5ZXJS
ZWN0LmxvY2F0aW9uKCkpOworICAgICAgICByb290LT5zZXRCb3VuZHMobGF5ZXJSZWN0LnNpemUo
KSk7CisgICAgICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMobGF5ZXJSZWN0LnNpemUoKSk7Cisg
ICAgICAgIHJvb3QtPnNldFF1YWRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJSZWN0LnNp
emUoKSkpOworICAgICAgICByb290LT5zZXRRdWFkVmlzaWJsZVJlY3QoSW50UmVjdChJbnRQb2lu
dCgpLCBsYXllclJlY3Quc2l6ZSgpKSk7CisKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6
RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJl
VG9EcmF3KGZyYW1lKSk7CisgICAgICAgIEFTU0VSVF9FUSgxdSwgZnJhbWUucmVuZGVyUGFzc2Vz
LnNpemUoKSk7CisKKyAgICAgICAgc2l6ZV90IG51bUd1dHRlclF1YWRzID0gMDsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCku
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBudW1HdXR0ZXJRdWFkcyArPSAoZnJhbWUucmVuZGVy
UGFzc2VzWzBdLT5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpID09IENDRHJhd1F1YWQ6OlNvbGlk
Q29sb3IpID8gMSA6IDA7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgbnVtR3V0dGVyUXVhZHMpOwor
ICAgICAgICBFWFBFQ1RfRVEoMXUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5z
aXplKCkpOworCisgICAgICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChmcmFtZS5yZW5k
ZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCksIEludFJlY3QoLWxheWVyUmVjdC5sb2NhdGlvbigpLCB2
aWV3cG9ydFNpemUpKTsKKyAgICB9CisKKyAgICAvLyBFbXB0eSB2aXNpYmxlIGNvbnRlbnQgYXJl
YSAoZnVsbHNjcmVlbiBndXR0ZXIgcmVjdCkKKyAgICB7CisgICAgICAgIEludFJlY3QgbGF5ZXJS
ZWN0KDAsIDAsIDAsIDApOworICAgICAgICByb290LT5zZXRQb3NpdGlvbihsYXllclJlY3QubG9j
YXRpb24oKSk7CisgICAgICAgIHJvb3QtPnNldEJvdW5kcyhsYXllclJlY3Quc2l6ZSgpKTsKKyAg
ICAgICAgcm9vdC0+c2V0Q29udGVudEJvdW5kcyhsYXllclJlY3Quc2l6ZSgpKTsKKyAgICAgICAg
cm9vdC0+c2V0UXVhZFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllclJlY3Quc2l6ZSgpKSk7
CisgICAgICAgIHJvb3QtPnNldFF1YWRWaXNpYmxlUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxh
eWVyUmVjdC5zaXplKCkpKTsKKworICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURh
dGEgZnJhbWU7CisgICAgICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXco
ZnJhbWUpKTsKKyAgICAgICAgQVNTRVJUX0VRKDF1LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgp
KTsKKworICAgICAgICBzaXplX3QgbnVtR3V0dGVyUXVhZHMgPSAwOworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgIG51bUd1dHRlclF1YWRzICs9IChmcmFtZS5yZW5kZXJQYXNzZXNb
MF0tPnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCkgPT0gQ0NEcmF3UXVhZDo6U29saWRDb2xvcikg
PyAxIDogMDsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBudW1HdXR0ZXJRdWFkcyk7CisgICAgICAg
IEVYUEVDVF9FUSgxdSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7
CisKKyAgICAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KGZyYW1lLnJlbmRlclBhc3Nl
c1swXS0+cXVhZExpc3QoKSwgSW50UmVjdCgtbGF5ZXJSZWN0LmxvY2F0aW9uKCksIHZpZXdwb3J0
U2l6ZSkpOworICAgIH0KKworICAgIC8vIENvbnRlbnQgYXJlYSBpbiBtaWRkbGUgb2YgY2xpcCBy
ZWN0IChmb3VyIHN1cnJvdW5kaW5nIGd1dHRlciByZWN0cykKKyAgICB7CisgICAgICAgIEludFJl
Y3QgbGF5ZXJSZWN0KDUwLCA1MCwgMjAsIDIwKTsKKyAgICAgICAgcm9vdC0+c2V0UG9zaXRpb24o
bGF5ZXJSZWN0LmxvY2F0aW9uKCkpOworICAgICAgICByb290LT5zZXRCb3VuZHMobGF5ZXJSZWN0
LnNpemUoKSk7CisgICAgICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMobGF5ZXJSZWN0LnNpemUo
KSk7CisgICAgICAgIHJvb3QtPnNldFF1YWRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJS
ZWN0LnNpemUoKSkpOworICAgICAgICByb290LT5zZXRRdWFkVmlzaWJsZVJlY3QoSW50UmVjdChJ
bnRQb2ludCgpLCBsYXllclJlY3Quc2l6ZSgpKSk7CisKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0
SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5w
cmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgICAgIEFTU0VSVF9FUSgxdSwgZnJhbWUucmVuZGVy
UGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgc2l6ZV90IG51bUd1dHRlclF1YWRzID0gMDsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRM
aXN0KCkuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBudW1HdXR0ZXJRdWFkcyArPSAoZnJhbWUu
cmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpID09IENDRHJhd1F1YWQ6
OlNvbGlkQ29sb3IpID8gMSA6IDA7CisgICAgICAgIEVYUEVDVF9FUSg0dSwgbnVtR3V0dGVyUXVh
ZHMpOworICAgICAgICBFWFBFQ1RfRVEoNXUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExp
c3QoKS5zaXplKCkpOworCisgICAgICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChmcmFt
ZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCksIEludFJlY3QoLWxheWVyUmVjdC5sb2NhdGlv
bigpLCB2aWV3cG9ydFNpemUpKTsKKyAgICB9CisKK30KKworCiBjbGFzcyBSZXNoYXBlVHJhY2tl
ckNvbnRleHQ6IHB1YmxpYyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QgewogcHVibGljOgogICAg
IFJlc2hhcGVUcmFja2VyQ29udGV4dCgpIDogbV9yZXNoYXBlQ2FsbGVkKGZhbHNlKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCmluZGV4IGUyMjVkMjZkYjJiOTI5NThlZWJjZTMyZmQ5NWMxZDY1NzJkMjUzYWYuLjJkNzRh
NGVlYWE1MTRmM2U5NmVhYTJiMmQ5ZGViOGRlMTFjMjU3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTI2Myw2
ICsxMjYzLDM4IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsTXVsdGlwbGVSZWRy
YXcsIERJU0FCTEVEX3J1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3RUaHJlYWRlZCgpOwogfQog
CisvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBwcm9wZXJ0aWVzIG9uIHRoZSBsYXllciB0cmVl
IGhvc3QgYXJlIGNvbW1pdGVkIHRvIHRoZSBpbXBsIHNpZGUuCitjbGFzcyBDQ0xheWVyVHJlZUhv
c3RUZXN0Q29tbWl0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgeworcHVibGljOgorCisg
ICAgQ0NMYXllclRyZWVIb3N0VGVzdENvbW1pdCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGJl
Z2luVGVzdCgpCisgICAgeworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6
ZShJbnRTaXplKDIwLCAyMCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldEJhY2tncm91
bmRDb2xvcihDb2xvcjo6Z3JheSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0UGFnZVNj
YWxlRmFjdG9yQW5kTGltaXRzKDUsIDUsIDUpOworCisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1p
dFRvTWFpblRocmVhZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0
ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAgICB7CisgICAgICAgIEVY
UEVDVF9FUShJbnRTaXplKDIwLCAyMCksIGltcGwtPnZpZXdwb3J0U2l6ZSgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKENvbG9yOjpncmF5LCBpbXBsLT5iYWNrZ3JvdW5kQ29sb3IoKSk7CisgICAgICAg
IEVYUEVDVF9FUSg1LCBpbXBsLT5wYWdlU2NhbGUoKSk7CisKKyAgICAgICAgZW5kVGVzdCgpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKSB7IH0KK307CisKK1RFU1RfRihD
Q0xheWVyVHJlZUhvc3RUZXN0Q29tbWl0LCBydW5UZXN0KQoreworICAgIHJ1blRlc3QodHJ1ZSk7
Cit9CisKIC8vIFZlcmlmaWVzIHRoYXQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24gZXZlbnRzIHBy
b3BhZ2F0ZSBjb3JyZWN0bHkgZnJvbSBDQ0xheWVyVHJlZUhvc3QgdG8KIC8vIENDTGF5ZXJUcmVl
SG9zdEltcGwgaW4gdGhlIE1UIGNvbXBvc2l0b3IuCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0
U3RhcnRQYWdlU2NhbGVBbmltYXRpb24gOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CkBA
IC0xNzY5LDkgKzE4MDEsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250
ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBSZWdpb24gdmlzaWJs
ZUNvbnRlbnRPcGFxdWVSZWdpb24oKSBjb25zdCB7IHJldHVybiBpbnRlcnNlY3Rpb24obV9vcGFx
dWVDb250ZW50c1JlY3QsIHZpc2libGVMYXllclJlY3QoKSk7IH0KLSAgICB2b2lkIHNldE9wYXF1
ZUNvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVDb250ZW50c1JlY3QpIHsgbV9vcGFx
dWVDb250ZW50c1JlY3QgPSBvcGFxdWVDb250ZW50c1JlY3Q7IH0KLQogICAgIGNvbnN0IFJlZ2lv
biYgb2NjbHVkZWRTY3JlZW5TcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2NjbHVkZWRTY3JlZW5T
cGFjZTsgfQogICAgIHZvaWQgY2xlYXJPY2NsdWRlZFNjcmVlblNwYWNlKCkgeyBtX29jY2x1ZGVk
U2NyZWVuU3BhY2UgPSBSZWdpb24oKTsgfQogCkBAIC0xNzc5LDcgKzE4MDgsNiBAQCBwcml2YXRl
OgogICAgIFRlc3RMYXllckNocm9taXVtKCkgOiBMYXllckNocm9taXVtKCkgeyB9CiAKICAgICBS
ZWdpb24gbV9vY2NsdWRlZFNjcmVlblNwYWNlOwotICAgIEludFJlY3QgbV9vcGFxdWVDb250ZW50
c1JlY3Q7CiB9OwogCiBzdGF0aWMgdm9pZCBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKFRl
c3RMYXllckNocm9taXVtKiBsYXllciwgTGF5ZXJDaHJvbWl1bSogcGFyZW50LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3IsIGNv
bnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3Bh
cXVlKQpAQCAtMTk5Niw0NiArMjAyNCw2IEBAIHB1YmxpYzoKIAogU0lOR0xFX0FORF9NVUxUSV9U
SFJFQURfVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RMYXllck9jY2x1c2lvbikKIAotY2xhc3Mg
Q0NMYXllclRyZWVIb3N0VGVzdENvbnRlbnRMYXllck9jY2x1c2lvbiA6IHB1YmxpYyBDQ0xheWVy
VHJlZUhvc3RUZXN0IHsKLXB1YmxpYzoKLSAgICBDQ0xheWVyVHJlZUhvc3RUZXN0Q29udGVudExh
eWVyT2NjbHVzaW9uKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKLSAgICB7
Ci0gICAgICAgIFJlZlB0cjxUZXN0TGF5ZXJDaHJvbWl1bT4gcm9vdExheWVyID0gVGVzdExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwotICAgICAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IGNo
aWxkID0gVGVzdExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotCi0gICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKHJvb3RMYXllci5nZXQoKSwgMCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCB0cnVlKTsKLSAgICAgICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgcm9vdExheWVyLmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJ
bnRTaXplKDUwLCA1MCksIGZhbHNlKTsKLQotICAgICAgICBjaGlsZC0+c2V0T3BhcXVlQ29udGVu
dHNSZWN0KEludFJlY3QoMTAsIDEwLCAyMCwgMjApKTsKLQotICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVI
b3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21w
bGV0ZSgpOwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgY2hpbGQtPm9jY2x1
ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgY2hpbGQt
Pm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCg0MCwgNDAsIDIwLCAyMCksIHJvb3RMYXllci0+b2NjbHVkZWRTY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCByb290TGF5ZXItPm9j
Y2x1ZGVkU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgLy8gS2lsbCB0
aGUgbGF5ZXJUcmVlSG9zdCBpbW1lZGlhdGVseS4KLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRSb290TGF5ZXIoMCk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5jbGVhcigpOwotCi0gICAg
ICAgIGVuZFRlc3QoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKLSAg
ICB7Ci0gICAgfQotfTsKLQotU0lOR0xFX0FORF9NVUxUSV9USFJFQURfVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdFRlc3RDb250ZW50TGF5ZXJPY2NsdXNpb24pCi0KIGNsYXNzIENDTGF5ZXJUcmVlSG9z
dFRlc3RMYXllck9jY2x1c2lvbldpdGhGaWx0ZXJzIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRl
c3QgewogcHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RMYXllck9jY2x1c2lvbldpdGhG
aWx0ZXJzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
T2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCBiMWE2ZjNhOWUzYTUwNTljYTFkYWM3Yzg1
ZjgyZWNjYWRjYjdmOTIxLi5mMDQ3OTQwNmQzM2M3N2JhNWFiMGQ4OWFiMzg1OGVlOTRjMGZmYmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJh
Y2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNp
b25UcmFja2VyVGVzdC5jcHAKQEAgLTU0LDIzICs1NCw1MyBAQCBuYW1lc3BhY2UgewogCiBjbGFz
cyBUZXN0Q29udGVudExheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJs
aWM6Ci0gICAgVGVzdENvbnRlbnRMYXllckNocm9taXVtKCkgOiBMYXllckNocm9taXVtKCkgeyB9
CisgICAgVGVzdENvbnRlbnRMYXllckNocm9taXVtKCkKKyAgICAgICAgOiBMYXllckNocm9taXVt
KCkKKyAgICAgICAgLCBtX292ZXJyaWRlT3BhcXVlQ29udGVudHNSZWN0KGZhbHNlKQorICAgIHsK
KyAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgUmVnaW9uIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkg
Y29uc3QgeyByZXR1cm4gaW50ZXJzZWN0aW9uKG1fb3BhcXVlQ29udGVudHNSZWN0LCB2aXNpYmxl
TGF5ZXJSZWN0KCkpOyB9Ci0gICAgdm9pZCBzZXRPcGFxdWVDb250ZW50c1JlY3QoY29uc3QgSW50
UmVjdCYgb3BhcXVlQ29udGVudHNSZWN0KSB7IG1fb3BhcXVlQ29udGVudHNSZWN0ID0gb3BhcXVl
Q29udGVudHNSZWN0OyB9CisgICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNvbnRlbnRPcGFxdWVS
ZWdpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fb3ZlcnJpZGVPcGFxdWVDb250ZW50
c1JlY3QpCisgICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0aW9uKG1fb3BhcXVlQ29udGVudHNS
ZWN0LCB2aXNpYmxlTGF5ZXJSZWN0KCkpOworICAgICAgICByZXR1cm4gTGF5ZXJDaHJvbWl1bTo6
dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKKyAgICB9CisgICAgdm9pZCBzZXRPcGFxdWVD
b250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlQ29udGVudHNSZWN0KQorICAgIHsKKyAg
ICAgICAgbV9vdmVycmlkZU9wYXF1ZUNvbnRlbnRzUmVjdCA9IHRydWU7CisgICAgICAgIG1fb3Bh
cXVlQ29udGVudHNSZWN0ID0gb3BhcXVlQ29udGVudHNSZWN0OworICAgIH0KIAogcHJpdmF0ZToK
KyAgICBib29sIG1fb3ZlcnJpZGVPcGFxdWVDb250ZW50c1JlY3Q7CiAgICAgSW50UmVjdCBtX29w
YXF1ZUNvbnRlbnRzUmVjdDsKIH07CiAKIGNsYXNzIFRlc3RDb250ZW50TGF5ZXJJbXBsIDogcHVi
bGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBUZXN0Q29udGVudExheWVySW1wbChpbnQg
aWQpIDogQ0NMYXllckltcGwoaWQpIHsgc2V0RHJhd3NDb250ZW50KHRydWUpOyB9CisgICAgVGVz
dENvbnRlbnRMYXllckltcGwoaW50IGlkKQorICAgICAgICA6IENDTGF5ZXJJbXBsKGlkKQorICAg
ICAgICAsIG1fb3ZlcnJpZGVPcGFxdWVDb250ZW50c1JlY3QoZmFsc2UpCisgICAgeworICAgICAg
ICBzZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgfQorCisgICAgdmlydHVhbCBSZWdpb24gdmlz
aWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fb3Zl
cnJpZGVPcGFxdWVDb250ZW50c1JlY3QpCisgICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0aW9u
KG1fb3BhcXVlQ29udGVudHNSZWN0LCB2aXNpYmxlTGF5ZXJSZWN0KCkpOworICAgICAgICByZXR1
cm4gQ0NMYXllckltcGw6OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CisgICAgfQorICAg
IHZvaWQgc2V0T3BhcXVlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZUNvbnRlbnRz
UmVjdCkKKyAgICB7CisgICAgICAgIG1fb3ZlcnJpZGVPcGFxdWVDb250ZW50c1JlY3QgPSB0cnVl
OworICAgICAgICBtX29wYXF1ZUNvbnRlbnRzUmVjdCA9IG9wYXF1ZUNvbnRlbnRzUmVjdDsKKyAg
ICB9CiAKLSAgICB2aXJ0dWFsIFJlZ2lvbiB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNv
bnN0IHsgcmV0dXJuIGludGVyc2VjdGlvbihtX29wYXF1ZUNvbnRlbnRzUmVjdCwgdmlzaWJsZUxh
eWVyUmVjdCgpKTsgfQotICAgIHZvaWQgc2V0T3BhcXVlQ29udGVudHNSZWN0KGNvbnN0IEludFJl
Y3QmIG9wYXF1ZUNvbnRlbnRzUmVjdCkgeyBtX29wYXF1ZUNvbnRlbnRzUmVjdCA9IG9wYXF1ZUNv
bnRlbnRzUmVjdDsgfQogcHJpdmF0ZToKKyAgICBib29sIG1fb3ZlcnJpZGVPcGFxdWVDb250ZW50
c1JlY3Q7CiAgICAgSW50UmVjdCBtX29wYXF1ZUNvbnRlbnRzUmVjdDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAK
aW5kZXggNTdjYWE3ZGMxNzE0YTFmOWU1MmU1MjFjNThkNDAzOTI1MzUzN2JiOS4uNjBjYmY5ZmVm
MmU3ZTc3OWVhZDEwN2I5MTc5MDM1ZTNmYmQ0ZDQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTI2Miw3NiAr
MjYyLDQgQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGlsZU9wYXF1ZVJlY3RGb3JMYXll
ck5vQm9yZGVycykKICAgICB9CiB9CiAKLVRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGJhY2tn
cm91bmRDb3ZlcnNWaWV3cG9ydCkKLXsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2Nv
cGVkSW1wbFRocmVhZDsKLQotICAgIGNvbnN0IEludFNpemUgdGlsZVNpemUoMTAsIDEwKTsKLSAg
ICBjb25zdCBpbnQgbnVtVGlsZXNYID0gMjsKLSAgICBjb25zdCBpbnQgbnVtVGlsZXNZID0gMjsK
LSAgICBjb25zdCB1bnNpZ25lZCBudW1UaWxlcyA9IG51bVRpbGVzWCAqIG51bVRpbGVzWTsKLSAg
ICBjb25zdCBJbnRTaXplIGxheWVyU2l6ZSh0aWxlU2l6ZS53aWR0aCgpICogbnVtVGlsZXNYLCB0
aWxlU2l6ZS5oZWlnaHQoKSAqIG51bVRpbGVzWSk7Ci0gICAgT3duUHRyPENDVGlsZWRMYXllcklt
cGw+IGxheWVyID0gY3JlYXRlTGF5ZXIodGlsZVNpemUsIGxheWVyU2l6ZSwgQ0NMYXllclRpbGlu
Z0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKLSAgICBsYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENv
bG9yOjpncmF5KTsKLSAgICBsYXllci0+c2V0QmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KHRydWUp
OwotCi0gICAgLy8gTm8gZ3V0dGVyIHJlY3RzCi0gICAgewotICAgICAgICBJbnRSZWN0IGNsaXBS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpOwotICAgICAgICBsYXllci0+c2V0
Q2xpcFJlY3QoY2xpcFJlY3QpOwotICAgICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJ
bnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwotCi0gICAgICAgIE93blB0cjxDQ1NoYXJl
ZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0
ZSgpOwotCi0gICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgYm9v
bCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhx
dWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwotICAg
ICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgbnVtVGlsZXMpOwot
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZEN1bGxlci5xdWFkTGlzdCgpLnNp
emUoKTsgKytpKQotICAgICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKVtp
XS0+bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KTsKLSAgICB9Ci0KLSAgICAv
LyBFbXB0eSB2aXNpYmxlIGNvbnRlbnQgYXJlYSAoZnVsbHNjcmVlbiBndXR0ZXIgcmVjdCkKLSAg
ICB7Ci0gICAgICAgIEludFJlY3QgY2xpcFJlY3QgPSBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEw
MCk7Ci0gICAgICAgIGxheWVyLT5zZXRDbGlwUmVjdChjbGlwUmVjdCk7Ci0gICAgICAgIGxheWVy
LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoKSk7Ci0KLSAgICAgICAgT3duUHRyPENDU2hh
cmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0
YXRlKCk7Ci0gICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgYm9v
bCB1c2VkQ2hlY2tlcmJvYXJkID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhx
dWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwotCi0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUo
KTsgKytpKQotICAgICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKVtpXS0+
bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6U29saWRDb2xvcik7Ci0KLSAgICAgICAgdmVyaWZ5UXVh
ZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRDdWxsZXIucXVhZExpc3QoKSwgY2xpcFJlY3QpOwotICAg
IH0KLQotICAgIC8vIENvbnRlbnQgYXJlYSBpbiBtaWRkbGUgb2YgY2xpcCByZWN0IChmb3VyIHN1
cnJvdW5kaW5nIGd1dHRlciByZWN0cykKLSAgICB7Ci0gICAgICAgIEludFJlY3QgY2xpcFJlY3Qg
PSBJbnRSZWN0KC01MCwgLTUwLCAxMDAsIDEwMCk7Ci0gICAgICAgIGxheWVyLT5zZXRDbGlwUmVj
dChjbGlwUmVjdCk7Ci0gICAgICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7Ci0KLSAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7Ci0g
ICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgYm9vbCB1c2VkQ2hl
Y2tlcmJvYXJkID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHVzZWRDaGVja2VyYm9hcmQpOwotCi0gICAgICAgIHVu
c2lnbmVkIG51bUNvbnRlbnRUaWxlcyA9IDAsIG51bUd1dHRlclRpbGVzID0gMDsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgIGlmIChxdWFkQ3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCkg
PT0gQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KQotICAgICAgICAgICAgICAgIG51bUNvbnRlbnRU
aWxlcysrOwotICAgICAgICAgICAgZWxzZSBpZiAocXVhZEN1bGxlci5xdWFkTGlzdCgpW2ldLT5t
YXRlcmlhbCgpID09IENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IpCi0gICAgICAgICAgICAgICAgbnVt
R3V0dGVyVGlsZXMrKzsKLSAgICAgICAgfQotICAgICAgICBFWFBFQ1RfRVEobnVtQ29udGVudFRp
bGVzLCBudW1UaWxlcyk7Ci0gICAgICAgIEVYUEVDVF9HRShudW1HdXR0ZXJUaWxlcywgNHUpOwot
Ci0gICAgICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFkQ3VsbGVyLnF1YWRMaXN0
KCksIGNsaXBSZWN0KTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGU3ZGUz
NTZkZDBkYTM4YTMxYjg5NmIyZDdhOWM0OGE5YjFhMzZjMjMuLmYzZjk4Y2ZhNzA0ODM3ZjQyYWEy
N2QyYjhjOTRiMThjZmI0YzRjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01MDYsNyArNTA2LDYgQEAgVEVTVF9GKExh
eWVyQ2hyb21pdW1UZXN0LCBjaGVja1Byb3BlcnR5Q2hhbmdlQ2F1c2VzQ29ycmVjdEJlaGF2aW9y
KQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRl
c3RMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgxLjIzZiwgNC41NmYpKSk7CiAgICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVy
LT5zZXRBbmNob3JQb2ludFooMC43ZikpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVF
RFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9y
KDAuNGYsIDAuNGYsIDAuNGYpKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19D
T01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQo
dHJ1ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9S
KDEsIHRlc3RMYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRNYXNrTGF5
ZXIoZHVtbXlMYXllci5nZXQoKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNf
Q09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0T3BhY2l0eSgwLjVmKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136375</attachid>
            <date>2012-04-09 19:16:14 -0700</date>
            <delta_ts>2012-04-09 21:55:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-83351-20120409221612.patch</filename>
            <type>text/plain</type>
            <size>53831</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5YmM0NDViNzkyOWMx
NmFmODQ0NGQ2Mzc5ZjJmMWJiZWMxMTM1NjU2Li5kOTczNDQ4ZDc3ZGU3Yjg3MDFlM2MyNzk3ZWEy
ODYyNmQzOTQwNmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNC0wNiAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFZpZXdwb3J0IGlzIG5vdCBmaWxsZWQgd2hlbiBvdXQgb2YgdGV4dHVyZSBtZW1vcnkgb24gbWFj
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzM1MQor
CisgICAgICAgIFJldmlld2VkIGJ5IEFkcmllbm5lIFdhbGtlci4KKworICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJMYXllclRyZWVWaWV3
KToKKwogMjAxMi0wNC0wOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gQ0NMYXllclRyZWVIb3N0IC8gV2ViTGF5ZXJUcmVlVmlldyBz
aG91bGQgYmUgc2luZ2xlIG93bmVyc2hpcCwgbm90IFJlZkNvdW50ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjIzMzI4OTQ5ZDRiMmQ2Y2NkNzUyMzczODUxZjMxZGY3NmY3NGJmLi41MWIzMWNkYTllOTgzYmI5
MDhiZjgzYzc1ODgzOWYwMGNkYzRhMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIw
MTItMDQtMDYgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBWaWV3cG9ydCBpcyBub3QgZmlsbGVkIHdoZW4gb3V0IG9mIHRleHR1cmUgbWVt
b3J5IG9uIG1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODMzNTEKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIuCisKKyAgICAg
ICAgQ3VycmVudGx5IHdlIGFkZCBndXR0ZXIgcXVhZHMgb24gdGhlIE5vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdCBsYXllciwKKyAgICAgICAgd2hpY2ggbGllcyBhYm92ZSBhbm90aGVyIHZpc2libGUg
bGF5ZXIgLSB0aGUgcnViYmVyYmFuZCBsYXllciBvbiBtYWMuCisgICAgICAgIEZvciB0aGlzIHJl
YXNvbiwgb24gbWFjLCBndXR0ZXIgcXVhZHMgd2VyZSBkaXNhYmxlZCwgYXMgd2VsbCBhcyBmb3Jj
aW5nCisgICAgICAgIHRoZSBOQ0NIIGxheWVyIHRvIGRyYXcsIGluIG9yZGVyIHRvIG1ha2UgdGhl
IHJ1YmJlcmJhbmQgbGF5ZXIgYXBwZWFyLgorCisgICAgICAgIFdlIG1vdmUgdGhlIGxvZ2ljIGZv
ciBhZGRpbmcgZ3V0dGVyIHF1YWRzIGludG8gQ0NSZW5kZXJQYXNzLCBhbmQgYWRkCisgICAgICAg
IGd1dHRlciBxdWFkcyBmb3IgYWxsIHBpeGVscyB0aGF0IGFyZSB2aXNpYmxlIHRocm91Z2ggdGhl
IHZpZXdwb3J0LgorICAgICAgICBUaGlzIGFsbG93cyB1cyB0byBzdG9wIHNwZWNpYWwtY2FzaW5n
IHRoZSBOQ0NIIGxheWVyLCBhbmQgYWxsb3dzIHVzCisgICAgICAgIHRvIHNraXAgZHJhd2luZyB0
aGUgbGF5ZXIgZXF1YWxseSB3aXRoIG90aGVyIGxheWVycy4gV2UgcmVtb3ZlIHRoZQorICAgICAg
ICBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQoKSBmbGFnIGVudGlyZWx5LgorCisgICAgICAgIElu
IG9yZGVyIHRvIGRvIHRoaXMsIHdlIGZpeCBhIGJ1ZyBpbiB0aGUgb2NjbHVzaW9uIHRyYWNrZXIs
IHRoYXQKKyAgICAgICAgYWxsb3dlZCBvcGFxdWUoKSBsYXllcnMgd2l0aCBza2lwc0RyYXcgdG8g
b2NjbHVkZSwgYnkgbWFraW5nCisgICAgICAgIHRoZSB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lv
bigpIG1ldGhvZCBvbiB0aGUgbGF5ZXIgY2xhc3NlcworICAgICAgICBhbHNvIHJldHVybiB0aGUg
b3BhcXVlIHJlZ2lvbiBmb3Igbm9uLXRpbGVkIGxheWVycywgYWx3YXlzIHVzZQorICAgICAgICBp
dHMgdmFsdWUgaW4gdGhlIG9jY2x1c2lvbiB0cmFja2VyLgorCisgICAgICAgIFVuaXQgdGVzdDog
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3Qudmlld3BvcnRDb3ZlcmVkCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyQ2hyb21pdW06OkxheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNo
cm9taXVtOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZExheWVyQ2hyb21pdW06OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllckltcGw6OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAo
Q0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OkND
TGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmZpbmlz
aENvbW1pdE9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVu
ZGVyUGFzc2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBs
OjpiYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1w
bDo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKENDTGF5ZXJUcmVlSG9zdEltcGwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6OjptYXJrT2NjbHVkZWRCZWhpbmRMYXllcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmg6CisgICAg
ICAgIChDQ09jY2x1c2lvblRyYWNrZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVz
aW9uVHJhY2tlckJhc2U6OmNvbXB1dGVWaXNpYmxlUmVnaW9uSW5TY3JlZW4pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1JlbmRlclBhc3Mp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllcklt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6dmlzaWJsZUNvbnRlbnRPcGFx
dWVSZWdpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OnNraXBz
RHJhdyk6CisgICAgICAgIChDQ1RpbGVkTGF5ZXJJbXBsKToKKwogMjAxMi0wNC0wOSAgR3JlZyBC
aWxsb2NrICA8Z2JpbGxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBZGQgdHJhbnNmZXIgbWFw
IGFyZ3VtZW50IHRvIEludGVudCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBiZDVhZGU5Y2Q2OWQxN2FjMGNhZjg0NjViMmY3ZGU2MWY0ZTE3ZTIyLi44MTY3OTQwOGVh
ZWZkYjFkOTJmYzFiNmZkYmQ5MDE4NDhkNDlhZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA0LTA2ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVmlld3BvcnQgaXMgbm90IGZpbGxlZCB3
aGVuIG91dCBvZiB0ZXh0dXJlIG1lbW9yeSBvbiBtYWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMzUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRy
aWVubmUgV2Fsa2VyLgorCisgICAgICAgICogc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0OjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6c2V0QmFja2dyb3VuZENv
bG9yKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbENvbnRlbnRQYWludGVy
OjpwYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisgICAgICAgICogdGVzdHMvQ0NM
YXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpC
bGVuZFN0YXRlQ2hlY2tMYXllcjo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OlRFU1RfRik6CisgICAgICAgIChXZWJLaXRUZXN0cyk6CisgICAgICAgICogdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEYpOgorICAgICAgICAoQ0NMYXllclRyZWVI
b3N0VGVzdENvbW1pdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXQ6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RDb21taXQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0Q29tbWl0OjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RU
ZXN0Q29tbWl0Ojpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0Q29tbWl0OjphZnRlclRlc3QpOgorICAgICAgICAoV1RGOjpURVNUX0Yp
OgorICAgICAgICAoVGVzdExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHRlc3RzL0NDT2NjbHVz
aW9uVHJhY2tlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRlc3RDb250ZW50TGF5
ZXJDaHJvbWl1bTo6VGVzdENvbnRlbnRMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYktpdFRl
c3RzOjpUZXN0Q29udGVudExheWVyQ2hyb21pdW06OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9u
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpUZXN0Q29udGVudExheWVyQ2hyb21pdW06OnNldE9w
YXF1ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChUZXN0Q29udGVudExheWVyQ2hyb21pdW0pOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OlRlc3RDb250ZW50TGF5ZXJJbXBsOjpUZXN0Q29udGVudExh
eWVySW1wbCk6CisgICAgICAgIChUZXN0Q29udGVudExheWVySW1wbCk6CisgICAgICAgIChXZWJL
aXRUZXN0czo6VGVzdENvbnRlbnRMYXllckltcGw6OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9u
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpUZXN0Q29udGVudExheWVySW1wbDo6c2V0T3BhcXVl
Q29udGVudHNSZWN0KToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHA6
CisgICAgICAgICogdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorCiAyMDEyLTA0LTA5ICBE
YW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
Q3VsbCBvY2NsdWRlZCBzdXJmYWNlIHF1YWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IDVjOWNjZDgzZGY0MmNjNTYzMTQw
NGNhMDRhZTkwMGJmYzYwY2FkMGUuLmFlODYyMmRjMTRjYzNkMzMyMzgwOTNmNjY3MzBmYjIzMTYw
MzUxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXJUcmVlVmlldy5oCkBAIC0yNiwxMSArMjYsMTMgQEAKICNpZm5kZWYgV2ViTGF5ZXJUcmVlVmll
d19oCiAjZGVmaW5lIFdlYkxheWVyVHJlZVZpZXdfaAogCisjaW5jbHVkZSAiV2ViQ29sb3IuaCIK
ICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgogI2lu
Y2x1ZGUgIldlYlByaXZhdGVPd25QdHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
Q0NMYXllclRyZWVIb3N0Owogc3RydWN0IENDU2V0dGluZ3M7CiB9CiAKQEAgLTEwMCw2ICsxMDIs
OSBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25z
dCBXZWJTaXplJik7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIHZpZXdwb3J0U2l6ZSgpIGNv
bnN0OwogCisgICAgLy8gU2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHZpZXdwb3J0
LgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpOwor
CiAgICAgLy8gU2V0cyB3aGV0aGVyIHRoaXMgdmlldyBpcyB2aXNpYmxlLiBJbiB0aHJlYWRlZCBt
b2RlLCBhIHZpZXcgdGhhdCBpcyBub3QgdmlzaWJsZSB3aWxsIG5vdAogICAgIC8vIGNvbXBvc2l0
ZSBvciB0cmlnZ2VyIHVwZGF0ZUFuaW1hdGlvbnMoKSBvciBsYXlvdXQoKSBjYWxscyB1bnRpbCBp
dCBiZWNvbWVzIHZpc2libGUuCiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpc2libGUoYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDA1OTM0NTQ3ZGE5MWE1NTVmMTEzMmI1NWQ5
MjkwMWQ3NmViZGIyYTguLjEzYmEwNmRhZDc0OGQ0ZmNmMTQ3MDI1ZmUzODFmOWEwNWVjYmFiMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC02Nyw3ICs2Nyw2IEBAIExheWVyQ2hyb21pdW06
OkxheWVyQ2hyb21pdW0oKQogICAgICwgbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNoYW5nZWQo
ZmFsc2UpCiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41KQogICAgICwgbV9iYWNrZ3JvdW5k
Q29sb3IoMCwgMCwgMCwgMCkKLSAgICAsIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZhbHNl
KQogICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgLCBtX29wYWNpdHkoMS4wKQogICAg
ICwgbV9hbmNob3JQb2ludFooMCkKQEAgLTI3MSwxNCArMjcwLDYgQEAgdm9pZCBMYXllckNocm9t
aXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKICAg
ICBzZXROZWVkc0NvbW1pdCgpOwogfQogCi12b2lkIExheWVyQ2hyb21pdW06OnNldEJhY2tncm91
bmRDb3ZlcnNWaWV3cG9ydChib29sIGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCkKLXsKLSAgICBp
ZiAobV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQgPT0gYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0
KQotICAgICAgICByZXR1cm47Ci0gICAgbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQgPSBiYWNr
Z3JvdW5kQ292ZXJzVmlld3BvcnQ7Ci0gICAgc2V0TmVlZHNDb21taXQoKTsKLX0KLQogdm9pZCBM
YXllckNocm9taXVtOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKIHsKICAg
ICBpZiAobV9tYXNrc1RvQm91bmRzID09IG1hc2tzVG9Cb3VuZHMpCkBAIC00NTQsNyArNDQ1LDYg
QEAgdm9pZCBMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXll
cikKICAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQobV9hbmNob3JQb2ludCk7CiAgICAgbGF5ZXIt
PnNldEFuY2hvclBvaW50WihtX2FuY2hvclBvaW50Wik7CiAgICAgbGF5ZXItPnNldEJhY2tncm91
bmRDb2xvcihtX2JhY2tncm91bmRDb2xvcik7Ci0gICAgbGF5ZXItPnNldEJhY2tncm91bmRDb3Zl
cnNWaWV3cG9ydChtX2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCk7CiAgICAgbGF5ZXItPnNldEJv
dW5kcyhtX2JvdW5kcyk7CiAgICAgbGF5ZXItPnNldENvbnRlbnRCb3VuZHMoY29udGVudEJvdW5k
cygpKTsKICAgICBsYXllci0+c2V0RGVidWdCb3JkZXJDb2xvcihtX2RlYnVnQm9yZGVyQ29sb3Ip
OwpAQCAtNjMyLDYgKzYyMiwxMyBAQCB2b2lkIExheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1hdGlv
blN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQmIGV2ZW50LAogICAgIG1fbGF5
ZXJBbmltYXRpb25EZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh3YWxsQ2xvY2tUaW1l
KTsKIH0KIAorUmVnaW9uIExheWVyQ2hyb21pdW06OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9u
KCkgY29uc3QKK3sKKyAgICBpZiAob3BhcXVlKCkpCisgICAgICAgIHJldHVybiB2aXNpYmxlTGF5
ZXJSZWN0KCk7CisgICAgcmV0dXJuIFJlZ2lvbigpOworfQorCiB2b2lkIHNvcnRMYXllcnMoVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+OjppdGVyYXRvciwgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+OjppdGVyYXRvciwgdm9pZCopCiB7CiAgICAgLy8gQ3VycmVudGx5IHdlIGRv
bid0IHVzZSB6LW9yZGVyIHRvIGRlY2lkZSB3aGF0IHRvIHBhaW50LCBzbyB0aGVyZSdzIG5vIG5l
ZWQgdG8gYWN0dWFsbHkgc29ydCBMYXllckNocm9taXVtcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRl
eCBlODdiMDc0Y2IyMDE5YTkyODRhM2FkMmJkYzQ0YzdlM2RmYmU1NmJjLi41MjRlMTVkZjk1YTkx
NGJiMjBmYmViMDI0NWNlM2JmMDFiYzc2ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC05OSw5
ICs5OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xv
ciYpOwogICAgIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dy
b3VuZENvbG9yOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydChib29s
KTsKLSAgICBib29sIGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0OyB9Ci0KICAgICB2b2lkIHNldEJvdW5kcyhjb25zdCBJ
bnRTaXplJik7CiAgICAgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRCb3VuZHMoKSBjb25zdCB7IHJl
dHVybiBib3VuZHMoKTsgfQogCkBAIC0yNDYsNyArMjQzLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50Jiwg
ZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogCi0gICAgdmlydHVhbCBSZWdpb24gdmlzaWJsZUNvbnRl
bnRPcGFxdWVSZWdpb24oKSBjb25zdCB7IHJldHVybiBSZWdpb24oKTsgfTsKKyAgICB2aXJ0dWFs
IFJlZ2lvbiB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0OwogCiAgICAgdmlydHVh
bCBTY3JvbGxiYXJMYXllckNocm9taXVtKiB0b1Njcm9sbGJhckxheWVyQ2hyb21pdW0oKSB7IHJl
dHVybiAwOyB9CiAKQEAgLTMwOCw3ICszMDUsNiBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQg
bV9wb3NpdGlvbjsKICAgICBGbG9hdFBvaW50IG1fYW5jaG9yUG9pbnQ7CiAgICAgQ29sb3IgbV9i
YWNrZ3JvdW5kQ29sb3I7Ci0gICAgYm9vbCBtX2JhY2tncm91bmRDb3ZlcnNWaWV3cG9ydDsKICAg
ICBDb2xvciBtX2RlYnVnQm9yZGVyQ29sb3I7CiAgICAgZmxvYXQgbV9kZWJ1Z0JvcmRlcldpZHRo
OwogICAgIFN0cmluZyBtX2RlYnVnTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IGYxZjEwZTk3YmEwYjVmOTljNTRmMjAyMjExMThmMmEzNGM5ZTA5ZWEuLjdjOWMzMDZk
ODZiNzRkZTRlYTI1MjQ4M2RhNjUyMDJkYTY5NzA1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcApAQCAtNDU0LDEwICs0NTQsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAg
ICAgICAgICAgICBpZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPnJlc2VydmUobV90aWxlci0+
dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkgewogICAgICAgICAgICAgICAgIG1fc2tpcHNJ
ZGxlUGFpbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmICghaWRsZSkgewotICAgICAgICAg
ICAgICAgICAgICAvLyBJZiB0aGUgYmFja2dyb3VuZCBjb3ZlcnMgdGhlIHZpZXdwb3J0LCBhbHdh
eXMgZHJhdyB0aGlzCi0gICAgICAgICAgICAgICAgICAgIC8vIGxheWVyIHNvIHRoYXQgY2hlY2tl
cmJvYXJkZWQgdGlsZXMgd2lsbCBzdGlsbCBkcmF3LgotICAgICAgICAgICAgICAgICAgICBpZiAo
IWJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgbV9z
a2lwc0RyYXcgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIG1fdGlsZXItPnJlc2V0KCk7CiAgICAgICAgICAgICAgICAg
ICAgIG1fcGFpbnRSZWN0ID0gSW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgICBtX3JlcXVl
c3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QoKTsKQEAgLTU4MCw3ICs1NzcsOCBAQCBSZWdp
b24gVGlsZWRMYXllckNocm9taXVtOjp2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0
CiB7CiAgICAgaWYgKG1fc2tpcHNEcmF3KQogICAgICAgICByZXR1cm4gUmVnaW9uKCk7Ci0KKyAg
ICBpZiAob3BhcXVlKCkpCisgICAgICAgIHJldHVybiB2aXNpYmxlTGF5ZXJSZWN0KCk7CiAgICAg
cmV0dXJuIG1fdGlsZXItPm9wYXF1ZVJlZ2lvbkluTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3Qo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCAyYWZiOWQ4ZmY3NDFmOTMzNTk1
NjZhMTY5ZmQ0MzcyOTcwMmE3OTY5Li5hMmE0MTg1MzI5YjhkOWFmZDkyZDZjYzRhMDUyZmRiNzE4
YThjYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC01MCw3ICs1MCw2IEBAIENDTGF5
ZXJJbXBsOjpDQ0xheWVySW1wbChpbnQgaWQpCiAgICAgLCBtX3Njcm9sbGFibGUoZmFsc2UpCiAg
ICAgLCBtX3Nob3VsZFNjcm9sbE9uTWFpblRocmVhZChmYWxzZSkKICAgICAsIG1faGF2ZVdoZWVs
RXZlbnRIYW5kbGVycyhmYWxzZSkKLSAgICAsIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KGZh
bHNlKQogICAgICwgbV9kb3VibGVTaWRlZCh0cnVlKQogICAgICwgbV9sYXllclByb3BlcnR5Q2hh
bmdlZChmYWxzZSkKICAgICAsIG1fbWFza3NUb0JvdW5kcyhmYWxzZSkKQEAgLTEzNiw0MyArMTM1
LDYgQEAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NMYXllckltcGw6OmNyZWF0ZVNo
YXJlZFF1YWRTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIENDU2hhcmVkUXVhZFN0YXRlOjpjcmVh
dGUocXVhZFRyYW5zZm9ybSgpLCBkcmF3VHJhbnNmb3JtKCksIHZpc2libGVMYXllclJlY3QoKSwg
bGF5ZXJDbGlwUmVjdCwgZHJhd09wYWNpdHkoKSwgb3BhcXVlKCkpOwogfQogCi12b2lkIENDTGF5
ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKLXsKLSAgICBhcHBlbmRHdXR0ZXJR
dWFkcyhxdWFkTGlzdCwgc2hhcmVkUXVhZFN0YXRlKTsKLX0KLQotdm9pZCBDQ0xheWVySW1wbDo6
YXBwZW5kR3V0dGVyUXVhZHMoQ0NRdWFkQ3VsbGVyJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSkKLXsKLSAgICBpZiAoIWJhY2tncm91bmRDb3ZlcnNW
aWV3cG9ydCgpIHx8ICFiYWNrZ3JvdW5kQ29sb3IoKS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsK
LSAgICBJbnRSZWN0IGNsaXAgPSBzY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBS
ZWN0KGNsaXBSZWN0KCkpOwotCi0gICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgcXVhZExpc3QuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBjbGlwLCBiYWNrZ3JvdW5kQ29sb3IoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgSW50UmVjdCBndXR0ZXJSZWN0c1s0XTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8
IDQ7IGkrKykKLSAgICAgICAgZ3V0dGVyUmVjdHNbaV0gPSBjbGlwOwotICAgIGd1dHRlclJlY3Rz
WzBdLnNoaWZ0TWF4WUVkZ2VUbyhsYXllclJlY3QueSgpKTsKLSAgICBndXR0ZXJSZWN0c1sxXS5z
aGlmdFlFZGdlVG8obGF5ZXJSZWN0Lm1heFkoKSk7Ci0gICAgZ3V0dGVyUmVjdHNbMl0uc2hpZnRN
YXhYRWRnZVRvKGxheWVyUmVjdC54KCkpOwotICAgIGd1dHRlclJlY3RzWzNdLnNoaWZ0WEVkZ2VU
byhsYXllclJlY3QubWF4WCgpKTsKLQotICAgIGd1dHRlclJlY3RzWzJdLnNoaWZ0WUVkZ2VUbyhs
YXllclJlY3QueSgpKTsKLSAgICBndXR0ZXJSZWN0c1szXS5zaGlmdFlFZGdlVG8obGF5ZXJSZWN0
LnkoKSk7Ci0gICAgZ3V0dGVyUmVjdHNbMl0uc2hpZnRNYXhZRWRnZVRvKGxheWVyUmVjdC5tYXhZ
KCkpOwotICAgIGd1dHRlclJlY3RzWzNdLnNoaWZ0TWF4WUVkZ2VUbyhsYXllclJlY3QubWF4WSgp
KTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7Ci0gICAgICAgIGlmICghZ3V0
dGVyUmVjdHNbaV0uaXNFbXB0eSgpKQotICAgICAgICAgICAgcXVhZExpc3QuYXBwZW5kKENDU29s
aWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBndXR0ZXJSZWN0c1tpXSwg
YmFja2dyb3VuZENvbG9yKCkpKTsKLSAgICB9Ci19Ci0KIHZvaWQgQ0NMYXllckltcGw6OmFwcGVu
ZERlYnVnQm9yZGVyUXVhZChDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlKSBjb25zdAogewogICAgIGlmICghaGFzRGVidWdCb3Jk
ZXJzKCkpCkBAIC0zOTIsMTUgKzM1NCw2IEBAIHZvaWQgQ0NMYXllckltcGw6OnNldEJhY2tncm91
bmRDb2xvcihjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKQogICAgIG1fbGF5ZXJQcm9wZXJ0
eUNoYW5nZWQgPSB0cnVlOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kQ292
ZXJzVmlld3BvcnQoYm9vbCBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpCi17Ci0gICAgaWYgKG1f
YmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0ID09IGJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9iYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQgPSBiYWNrZ3Jv
dW5kQ292ZXJzVmlld3BvcnQ7Ci0gICAgbV9sYXllclByb3BlcnR5Q2hhbmdlZCA9IHRydWU7Ci19
Ci0KIHZvaWQgQ0NMYXllckltcGw6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycykKIHsKICAgICBpZiAobV9maWx0ZXJzID09IGZpbHRlcnMpCkBAIC01NTIsNiArNTA1
LDEzIEBAIHZvaWQgQ0NMYXllckltcGw6OnNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQp
CiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOwogfQogCitSZWdpb24g
Q0NMYXllckltcGw6OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3QKK3sKKyAgICBp
ZiAob3BhcXVlKCkpCisgICAgICAgIHJldHVybiB2aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgcmV0
dXJuIFJlZ2lvbigpOworfQorCiB2b2lkIENDTGF5ZXJJbXBsOjpkaWRMb3NlQ29udGV4dCgpCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCA2Y2I2ZGYwM2MyOWVhZTYwODdlMGY0YTllZTk0
MWMzMmI5OTUwODkyLi43Yjc1OTg0MzUxMDU4YmQ3NzExMDNjM2Q5NmE5ZDRkNmI0ODBkN2UyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgUGFz
c093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSopIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSosIGJvb2wmIHVzZWRDaGVja2VyYm9hcmQpOworICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wm
IHVzZWRDaGVja2VyYm9hcmQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KCkgeyB9CiAg
ICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1YWQoQ0NRdWFkQ3VsbGVyJiwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqKSBjb25zdDsKIApAQCAtMTA3LDkgKzEwNyw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIENvbG9yIGJhY2tncm91
bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAKLSAgICB2b2lk
IHNldEJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydChib29sKTsKLSAgICBib29sIGJhY2tncm91bmRD
b3ZlcnNWaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0
OyB9Ci0KICAgICB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogICAg
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRl
cnM7IH0KIApAQCAtMjMyLDcgKzIyOSw3IEBAIHB1YmxpYzoKIAogICAgIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyKiBsYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2xheWVy
QW5pbWF0aW9uQ29udHJvbGxlci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCBSZWdpb24gdmlzaWJs
ZUNvbnRlbnRPcGFxdWVSZWdpb24oKSBjb25zdCB7IHJldHVybiBSZWdpb24oKTsgfTsKKyAgICB2
aXJ0dWFsIFJlZ2lvbiB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0OwogCiAgICAg
Ly8gSW5kaWNhdGVzIHRoYXQgdGhlIGNvbnRleHQgcHJldmlvdXNseSB1c2VkIHRvIHJlbmRlciB0
aGlzIGxheWVyCiAgICAgLy8gd2FzIGxvc3QgYW5kIHRoYXQgYSBuZXcgb25lIGhhcyBiZWVuIGNy
ZWF0ZWQuIFdvbid0IGJlIGNhbGxlZApAQCAtMjQ4LDggKzI0NSw2IEBAIHByb3RlY3RlZDoKICAg
ICAvLyBUcmFuc2Zvcm1hdGlvbiB1c2VkIHRvIHRyYW5zZm9ybSBxdWFkcyBwcm92aWRlZCBpbiBh
cHBlbmRRdWFkcy4KICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRUcmFuc2Zv
cm0oKSBjb25zdDsKIAotICAgIHZvaWQgYXBwZW5kR3V0dGVyUXVhZHMoQ0NRdWFkQ3VsbGVyJiwg
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKTsKLQogcHJpdmF0ZToKICAgICB2b2lkIHNldFBhcmVu
dChDQ0xheWVySW1wbCogcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAgICAgZnJpZW5k
IGNsYXNzIFRyZWVTeW5jaHJvbml6ZXI7CkBAIC0yODUsNyArMjgwLDYgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVyczsKICAgICBSZWdpb24gbV9ub25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbjsKICAgICBDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKLSAgICBib29sIG1f
YmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0OwogCiAgICAgLy8gV2hldGhlciB0aGUgImJhY2siIG9m
IHRoaXMgbGF5ZXIgc2hvdWxkIGRyYXcuCiAgICAgYm9vbCBtX2RvdWJsZVNpZGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNmJlNTc4YzNjNjRkOTRiMTY3MDhhNDk1Y2Rj
MTAwODdkZDQ0YWNkNi4uOTlkZWUzMjU5YjAxZGFhNGJiYjhhMjg2Nzk4Mzg2OTAzYzE1OTdiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC04MCw2ICs4MCw3IEBAIENDTGF5
ZXJUcmVlSG9zdDo6Q0NMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50
LCBjb25zdCBDQ1NldHRpbmdzCiAgICAgLCBtX21pblBhZ2VTY2FsZUZhY3RvcigxKQogICAgICwg
bV9tYXhQYWdlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fdHJpZ2dlcklkbGVQYWludHModHJ1ZSkK
KyAgICAsIG1fYmFja2dyb3VuZENvbG9yKENvbG9yOjp3aGl0ZSkKICAgICAsIG1fcGFydGlhbFRl
eHR1cmVVcGRhdGVSZXF1ZXN0cygwKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJl
YWQoKSk7CkBAIC0yMjAsNiArMjIxLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZpbmlzaENv
bW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICBob3N0
SW1wbC0+c2V0U291cmNlRnJhbWVOdW1iZXIoZnJhbWVOdW1iZXIoKSk7CiAgICAgaG9zdEltcGwt
PnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUoKSk7CiAgICAgaG9zdEltcGwtPnNldFBhZ2VT
Y2FsZUZhY3RvckFuZExpbWl0cyhtX3BhZ2VTY2FsZUZhY3RvciwgbV9taW5QYWdlU2NhbGVGYWN0
b3IsIG1fbWF4UGFnZVNjYWxlRmFjdG9yKTsKKyAgICBob3N0SW1wbC0+c2V0QmFja2dyb3VuZENv
bG9yKG1fYmFja2dyb3VuZENvbG9yKTsKIAogICAgIG1fZnJhbWVOdW1iZXIrKzsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggMWMyMmE0ZDVlYmUyMjVhODM2NDVmMGZlYmFjNDQ1
NDMzOTM5MTMzOC4uZDc2YzQ2ZjU3NTdiNDExZWE4OTNhZGY1MmRkNWQwNzU2YzFlZDQxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpZm5kZWYgQ0NM
YXllclRyZWVIb3N0X2gKICNkZWZpbmUgQ0NMYXllclRyZWVIb3N0X2gKIAorI2luY2x1ZGUgIkNv
bG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKQEAgLTIwMiw2ICsyMDMsOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhmbG9hdCBwYWdlU2NhbGVG
YWN0b3IsIGZsb2F0IG1pblBhZ2VTY2FsZUZhY3RvciwgZmxvYXQgbWF4UGFnZVNjYWxlRmFjdG9y
KTsKIAorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBt
X2JhY2tncm91bmRDb2xvciA9IGNvbG9yOyB9CisKICAgICBUZXh0dXJlTWFuYWdlciogY29udGVu
dHNUZXh0dXJlTWFuYWdlcigpIGNvbnN0OwogCiAgICAgYm9vbCB2aXNpYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV92aXNpYmxlOyB9CkBAIC0yNzEsNiArMjc0LDcgQEAgcHJpdmF0ZToKICAgICBmbG9h
dCBtX3BhZ2VTY2FsZUZhY3RvcjsKICAgICBmbG9hdCBtX21pblBhZ2VTY2FsZUZhY3RvciwgbV9t
YXhQYWdlU2NhbGVGYWN0b3I7CiAgICAgYm9vbCBtX3RyaWdnZXJJZGxlUGFpbnRzOworICAgIENv
bG9yIG1fYmFja2dyb3VuZENvbG9yOwogCiAgICAgVGV4dHVyZUxpc3QgbV9kZWxldGVUZXh0dXJl
QWZ0ZXJDb21taXRMaXN0OwogICAgIHNpemVfdCBtX3BhcnRpYWxUZXh0dXJlVXBkYXRlUmVxdWVz
dHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDk2NTJmYjQ4
OGQwMDYzOTA5NjRiZmU1YzBhZjIxNDI2YjcyNjU5YmMuLjIwMWJiNTE0ZGU4MzAzNzM3OTNlNTQx
OTYyZmRmMzA4NTAzMzU0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
Y3BwCkBAIC0zMjUsNiArMzI1LDggQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxh
dGVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUKICAgICAgICAg
b2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcigqaXQpOwogICAgIH0KIAor
ICAgIHBhc3Nlcy5sYXN0KCktPmFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKHJvb3RMYXllcigpLCBt
X2JhY2tncm91bmRDb2xvciwgb2NjbHVzaW9uVHJhY2tlcik7CisKICAgICBpZiAoZHJhd0ZyYW1l
KQogICAgICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnJlY29yZE1ldHJp
Y3ModGhpcyk7CiAgICAgcmV0dXJuIGRyYXdGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaAppbmRleCBkNThkYjVmMmQ0MWU5ZTg1NGNiYjZkZmY0NTZmYTEzMjJhMzEyYjNj
Li5kYzZhMTQ4MzNjMGQ1NTk5ZWQ5ODVhYjgzYzJmMmIwODRmNGVlN2RmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIENDTGF5
ZXJUcmVlSG9zdEltcGxfaAogI2RlZmluZSBDQ0xheWVyVHJlZUhvc3RJbXBsX2gKIAorI2luY2x1
ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NBbmltYXRpb25FdmVudHMuaCIKICNpbmNsdWRlICJjYy9DQ0lucHV0SGFuZGxlci5o
IgpAQCAtMTM4LDYgKzEzOSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnRQYWdlU2NhbGVB
bmltYXRpb24oY29uc3QgSW50U2l6ZSYgdHJhZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBm
bG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKIAorICAgIGNvbnN0IENvbG9yJiBiYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorICAgIHZv
aWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX2JhY2tncm91bmRD
b2xvciA9IGNvbG9yOyB9CisKICAgICBib29sIG5lZWRzQW5pbWF0ZUxheWVycygpIGNvbnN0IHsg
cmV0dXJuIG1fbmVlZHNBbmltYXRlTGF5ZXJzOyB9CiAgICAgdm9pZCBzZXROZWVkc0FuaW1hdGVM
YXllcnMoKSB7IG1fbmVlZHNBbmltYXRlTGF5ZXJzID0gdHJ1ZTsgfQogCkBAIC0xODUsNiArMTg5
LDggQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3NlbnRQYWdlU2NhbGVEZWx0YTsKICAgICBmbG9h
dCBtX21pblBhZ2VTY2FsZSwgbV9tYXhQYWdlU2NhbGU7CiAKKyAgICBDb2xvciBtX2JhY2tncm91
bmRDb2xvcjsKKwogICAgIC8vIElmIHRoaXMgaXMgdHJ1ZSwgaXQgaXMgbmVjZXNzYXJ5IHRvIHRy
YXZlcnNlIHRoZSBsYXllciB0cmVlIHRpY2tpbmcgdGhlIGFuaW1hdG9ycy4KICAgICBib29sIG1f
bmVlZHNBbmltYXRlTGF5ZXJzOwogICAgIGJvb2wgbV9waW5jaEdlc3R1cmVBY3RpdmU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09j
Y2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRleCBhZWRiNzA3ZThlYzg4YWIxYTBj
ODRhMTk0MDA2YTI2YTlmNmFmYmQxLi5kZmQzNmQwMDYxNDg2NTliMjRmOGJmMmUyMmQ0ZTQ0NDI2
ZWQzZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTE5OSwz
MCArMTk5LDI5IEBAIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRv
VGFyZ2V0U3VyZmFjZVRyYW5zZm9ybShjb25zdCBMYXllclR5CiAKIC8vIEZJWE1FOiBSZW1vdmUg
dXNlUGFpbnRUcmFja2luZyB3aGVuIHBhaW50IHRyYWNraW5nIGlzIG9uIGZvciBwYWludCBjdWxs
aW5nLgogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgotc3RhdGljIGlubGluZSBSZWdpb24g
Y29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyKGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIHNjaXNzb3JS
ZWN0LCBib29sIHVzZVBhaW50VHJhY2tpbmcpCitzdGF0aWMgaW5saW5lIFJlZ2lvbiBjb21wdXRl
T2NjbHVzaW9uQmVoaW5kTGF5ZXIoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVnaW9uJiBvcGFxdWVDb250ZW50cywg
Y29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGJvb2wgdXNlUGFpbnRUcmFja2luZykKIHsKLSAg
ICBSZWdpb24gb3BhcXVlUmVnaW9uOworICAgIEFTU0VSVChsYXllci0+dmlzaWJsZUxheWVyUmVj
dCgpLmNvbnRhaW5zKG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKSk7CiAKICAgICBib29sIGNsaXBw
ZWQ7CiAgICAgRmxvYXRRdWFkIHVub2NjbHVkZWRRdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZCh0
cmFuc2Zvcm0sIEZsb2F0UXVhZChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpKSwgY2xpcHBlZCk7
CiAgICAgYm9vbCBpc1BhaW50ZWRBeGlzQWxpZ25lZCA9IHVub2NjbHVkZWRRdWFkLmlzUmVjdGls
aW5lYXIoKTsKICAgICAvLyBGSVhNRTogRmluZCBhIHJlY3QgaW50ZXJpb3IgdG8gZWFjaCB0cmFu
c2Zvcm1lZCBxdWFkLgogICAgIGlmIChjbGlwcGVkIHx8ICFpc1BhaW50ZWRBeGlzQWxpZ25lZCkK
LSAgICAgICAgcmV0dXJuIG9wYXF1ZVJlZ2lvbjsKKyAgICAgICAgcmV0dXJuIFJlZ2lvbigpOwog
Ci0gICAgaWYgKGxheWVyLT5vcGFxdWUoKSkKLSAgICAgICAgb3BhcXVlUmVnaW9uID0gZW5jbG9z
ZWRJbnRSZWN0KHVub2NjbHVkZWRRdWFkLmJvdW5kaW5nQm94KCkpOwotICAgIGVsc2UgaWYgKHVz
ZVBhaW50VHJhY2tpbmcgJiYgdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKLSAgICAgICAgb3BhcXVl
UmVnaW9uID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CisgICAgUmVnaW9u
IHRyYW5zZm9ybWVkT3BhcXVlQ29udGVudHM7CisgICAgaWYgKHVzZVBhaW50VHJhY2tpbmcgJiYg
dHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKKyAgICAgICAgdHJhbnNmb3JtZWRPcGFxdWVDb250ZW50
cyA9IG9wYXF1ZUNvbnRlbnRzOwogICAgIGVsc2UgaWYgKHVzZVBhaW50VHJhY2tpbmcpIHsKLSAg
ICAgICAgUmVnaW9uIGNvbnRlbnRSZWdpb24gPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVS
ZWdpb24oKTsKLSAgICAgICAgVmVjdG9yPEludFJlY3Q+IGNvbnRlbnRSZWN0cyA9IGNvbnRlbnRS
ZWdpb24ucmVjdHMoKTsKKyAgICAgICAgVmVjdG9yPEludFJlY3Q+IGNvbnRlbnRSZWN0cyA9IG9w
YXF1ZUNvbnRlbnRzLnJlY3RzKCk7CiAgICAgICAgIC8vIFdlIHZlcmlmeSB0aGF0IHRoZSBwb3Nz
aWJsZSBib3VuZHMgb2YgdGhpcyByZWdpb24gYXJlIG5vdCBjbGlwcGVkIGFib3ZlLCBzbyB3ZSBj
YW4gdXNlIG1hcFJlY3QoKSBzYWZlbHkgaGVyZS4KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb250ZW50UmVjdHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBvcGFxdWVSZWdpb24u
dW5pdGUoZW5jbG9zZWRJbnRSZWN0KHRyYW5zZm9ybS5tYXBSZWN0KEZsb2F0UmVjdChjb250ZW50
UmVjdHNbaV0pKSkpOworICAgICAgICAgICAgdHJhbnNmb3JtZWRPcGFxdWVDb250ZW50cy51bml0
ZShlbmNsb3NlZEludFJlY3QodHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KGNvbnRlbnRSZWN0
c1tpXSkpKSk7CiAgICAgfQotICAgIG9wYXF1ZVJlZ2lvbi5pbnRlcnNlY3Qoc2Npc3NvclJlY3Qp
OwotICAgIHJldHVybiBvcGFxdWVSZWdpb247CisKKyAgICB0cmFuc2Zvcm1lZE9wYXF1ZUNvbnRl
bnRzLmludGVyc2VjdChzY2lzc29yUmVjdCk7CisgICAgcmV0dXJuIHRyYW5zZm9ybWVkT3BhcXVl
Q29udGVudHM7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVu
ZGVyU3VyZmFjZVR5cGU+CkBAIC0yMzYsOSArMjM1LDEzIEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bWFya09jY2x1ZGVkQmVoaW5k
TGF5CiAgICAgaWYgKCFsYXllck9wYWNpdHlLbm93bihsYXllcikgfHwgbGF5ZXItPmRyYXdPcGFj
aXR5KCkgPCAxKQogICAgICAgICByZXR1cm47CiAKKyAgICBSZWdpb24gb3BhcXVlQ29udGVudHMg
PSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKKyAgICBpZiAob3BhcXVlQ29u
dGVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAgICBJbnRSZWN0IHNjaXNzb3JJ
blRhcmdldCA9IGxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIpOwogICAgIGlm
IChsYXllclRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSkKLSAgICAgICAgbV9zdGFjay5s
YXN0KCkub2NjbHVzaW9uSW5UYXJnZXQudW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVy
PExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5ZXJU
eXBlPihsYXllciksIHNjaXNzb3JJblRhcmdldCwgbV91c2VQYWludFRyYWNraW5nKSk7CisgICAg
ICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LnVuaXRlKGNvbXB1dGVPY2NsdXNp
b25CZWhpbmRMYXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJh
bnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBvcGFxdWVDb250ZW50cywgc2Npc3NvckluVGFyZ2V0
LCBtX3VzZVBhaW50VHJhY2tpbmcpKTsKIAogICAgIC8vIFdlIG11c3QgY2xpcCB0aGUgb2NjbHVz
aW9uIHdpdGhpbiB0aGUgbGF5ZXIncyBzY2lzc29ySW5UYXJnZXQgd2l0aGluIHNjcmVlbiBzcGFj
ZSBhcyB3ZWxsLiBJZiB0aGUgc2Npc3NvciByZWN0IGNhbid0IGJlIG1vdmVkIHRvIHNjcmVlbiBz
cGFjZSBhbmQKICAgICAvLyByZW1haW4gcmVjdGlsaW5lYXIsIHRoZW4gd2UgZG9uJ3QgYWRkIGFu
eSBvY2NsdXNpb24gaW4gc2NyZWVuIHNwYWNlLgpAQCAtMjQ5LDcgKzI1Miw3IEBAIHZvaWQgQ0NP
Y2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bWFya09j
Y2x1ZGVkQmVoaW5kTGF5CiAgICAgICAgIGlmICghc2Npc3NvckluU2NyZWVuUXVhZC5pc1JlY3Rp
bGluZWFyKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIEludFJlY3Qgc2Npc3Nvcklu
U2NyZWVuUmVjdCA9IGludGVyc2VjdGlvbihtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgZW5j
bG9zZWRJbnRSZWN0KENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHRhcmdldFRvU2NyZWVuVHJh
bnNmb3JtLCBGbG9hdFJlY3Qoc2Npc3NvckluVGFyZ2V0KSkpKTsKLSAgICAgICAgbV9zdGFjay5s
YXN0KCkub2NjbHVzaW9uSW5TY3JlZW4udW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVy
PExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlw
ZT4obGF5ZXIpLCBzY2lzc29ySW5TY3JlZW5SZWN0LCBtX3VzZVBhaW50VHJhY2tpbmcpKTsKKyAg
ICAgICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4udW5pdGUoY29tcHV0ZU9jY2x1
c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJh
bnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBvcGFxdWVDb250ZW50cywgc2Npc3NvckluU2NyZWVu
UmVjdCwgbV91c2VQYWludFRyYWNraW5nKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2Nj
bHVzaW9uVHJhY2tlci5oCmluZGV4IGE1OTM0ZTEyMDQwNjRkZmI0NTdmN2JjNzZiMTBjNGJkYmRm
MWY2ZDQuLmY0YTZhYzkzMjk3YjAzY2QyMTBjOTExZmRlNWI2YWQyOTU4ZjkyMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVz
aW9uVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCkBAIC03Nyw2ICs3Nyw5IEBAIHB1YmxpYzoKICAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBwYWludCB0cmFja2luZyBpcyBvbiBmb3IgcGFp
bnQgY3VsbGluZy4KICAgICB2b2lkIHNldFVzZVBhaW50VHJhY2tpbmcoYm9vbCB1c2UpIHsgbV91
c2VQYWludFRyYWNraW5nID0gdXNlOyB9CiAKKyAgICAvLyBHaXZlcyB0aGUgcmVnaW9uIG9mIHRo
ZSBzY3JlZW4gdGhhdCBpcyBub3Qgb2NjbHVkZWQgYnkgc29tZXRoaW5nIG9wYXF1ZS4KKyAgICBS
ZWdpb24gY29tcHV0ZVZpc2libGVSZWdpb25JblNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIHN1YnRy
YWN0KFJlZ2lvbihtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSksIG1fc3RhY2subGFzdCgpLm9j
Y2x1c2lvbkluU2NyZWVuKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0IFN0YWNrT2JqZWN0
IHsKICAgICAgICAgU3RhY2tPYmplY3QoKSA6IHN1cmZhY2UoMCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzLmNwcAppbmRleCA2MWYxZmRkOWM1MmUwZWQ4OWNmZDhjNjJhYmFkMmJlY2JiY2E5Y2Q0
Li44NDY5NThjMzcyMDkwMzJmMWM1NmZlZDkyNDNiNjJlZTc4N2ZhODRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzcy5jcHAKQEAgLTI3LDEyICsyNywxNCBAQAogCiAjaW5jbHVkZSAiY2MvQ0NSZW5k
ZXJQYXNzLmgiCiAKKyNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdlVHJh
Y2tlci5oIgogI2luY2x1ZGUgImNjL0NDRGVidWdCb3JkZXJEcmF3UXVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1
YWRTdGF0ZS5oIgorI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdRdWFkLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtOTUsNCArOTcsMjMgQEAgdm9pZCBDQ1JlbmRlclBhc3M6OmFw
cGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2Ns
dXMKICAgICB9CiB9CiAKK3ZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc1RvRmlsbFNjcmVl
bihDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBDb2xvciYgc2NyZWVuQmFja2dyb3VuZENv
bG9yLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsJiBvY2NsdXNpb25UcmFja2VyKQorewor
ICAgIGlmICghcm9vdExheWVyIHx8ICFzY3JlZW5CYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBSZWdpb24gZmlsbFJlZ2lvbiA9IG9jY2x1c2lvblRyYWNr
ZXIuY29tcHV0ZVZpc2libGVSZWdpb25JblNjcmVlbigpOworICAgIGlmIChmaWxsUmVnaW9uLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiBzaGFyZWRRdWFkU3RhdGUgPSByb290TGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwor
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybVRvTGF5ZXJTcGFjZSA9IHJvb3RMYXll
ci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKS5pbnZlcnNlKCk7CisgICAgVmVjdG9yPEludFJlY3Q+
IGZpbGxSZWN0cyA9IGZpbGxSZWdpb24ucmVjdHMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZpbGxSZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICBJbnRSZWN0IGxheWVyUmVjdCA9
IHRyYW5zZm9ybVRvTGF5ZXJTcGFjZS5tYXBSZWN0KGZpbGxSZWN0c1tpXSk7CisgICAgICAgIG1f
cXVhZExpc3QuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0
YXRlLmdldCgpLCBsYXllclJlY3QsIHNjcmVlbkJhY2tncm91bmRDb2xvcikpOworICAgIH0KKyAg
ICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkp
OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCmluZGV4IDlmM2E3ZTc5ZDU4ZDM3M2I0ZTdm
ZDFkYWY4NDg3M2FkNjJlMmNhNWMuLjVjNjBiZTc3NGNiNzYzYzFhZWM3NmZjNTE5MWU2NDg1YjFm
ODM5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NSZW5kZXJTdXJmYWNlOwog
Y2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGU7CitjbGFzcyBDb2xvcjsKIAogLy8gQSBsaXN0IG9mIEND
RHJhd1F1YWQgb2JqZWN0cywgc29ydGVkIGludGVybmFsbHkgaW4gZnJvbnQtdG8tYmFjayBvcmRl
ci4KIGNsYXNzIENDUXVhZExpc3QgOiBwdWJsaWMgVmVjdG9yPE93blB0cjxDQ0RyYXdRdWFkPiA+
IHsKQEAgLTU2LDYgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRRdWFkc0Zvckxh
eWVyKENDTGF5ZXJJbXBsKiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCosIGJvb2wmIHVzZWRDaGVj
a2VyYm9hcmQpOwogICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NM
YXllckltcGwqLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKik7CisgICAgdm9pZCBhcHBlbmRRdWFk
c1RvRmlsbFNjcmVlbihDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBDb2xvciYgc2NyZWVu
QmFja2dyb3VuZENvbG9yLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsJik7CiAKICAgICBj
b25zdCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZExpc3Q7IH0K
ICAgICBDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3Rh
cmdldFN1cmZhY2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggN2Ez
YzQ0ZmY1NDc1Y2VjNDMwNWQxNzk1MWE5OWJjYTIxZDA1MWM1NC4uNDdkMzcxNWQ0YjU5Mjg1ZmFm
NzE0MjJiYzNjNjY1OTNlZjVhNjg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5j
cHAKQEAgLTEzOSw4ICsxMzksNiBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRz
KENDUXVhZEN1bGxlciYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YQogewogICAgIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKIAotICAgIGFwcGVu
ZEd1dHRlclF1YWRzKHF1YWRMaXN0LCBzaGFyZWRRdWFkU3RhdGUpOwotCiAgICAgaWYgKCFtX3Rp
bGVyIHx8IG1fdGlsZXItPmhhc0VtcHR5Qm91bmRzKCkgfHwgbGF5ZXJSZWN0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjgsNyArMjI2LDggQEAgUmVnaW9uIENDVGlsZWRMYXll
ckltcGw6OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3QKIHsKICAgICBpZiAobV9z
a2lwc0RyYXcpCiAgICAgICAgIHJldHVybiBSZWdpb24oKTsKLQorICAgIGlmIChvcGFxdWUoKSkK
KyAgICAgICAgcmV0dXJuIHZpc2libGVMYXllclJlY3QoKTsKICAgICByZXR1cm4gbV90aWxlci0+
b3BhcXVlUmVnaW9uSW5MYXllclJlY3QodmlzaWJsZUxheWVyUmVjdCgpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dC5jcHAKaW5kZXggYjZiMWEyMjk0ZDE0OTZiMzgxZGRjMThiMjRkYWUxNTM2ZjY4MDhjOC4uZWMw
YjJlNGYwYWQwMWJkZmQxNzA3Zjg2ZjhmOWQ1MjQ4MTU1ZDA4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCkBA
IC00Niw5ICs0Niw2IEBAIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0KFBhc3NPd25QdHI8V2ViQ29yZTo6TGF5ZXJQYWluCiAjZW5kaWYKICAgICBtX2dy
YXBoaWNzTGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICBtX2dyYXBoaWNzTGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKS0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVudCh0cnVlKTsKLSNpZiAh
RU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotICAgIG1fZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXll
cigpLT5zZXRCYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQodHJ1ZSk7Ci0jZW5kaWYKICAgICBtX2dy
YXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0T3BhcXVlKHRydWUpOwogfQogCkBAIC01
OCwxMCArNTUsNyBAQCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6On5Ob25Db21wb3NpdGVkQ29u
dGVudEhvc3QoKQogCiB2b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKIHsKLSAgICBpZiAoY29sb3IuaXNW
YWxpZCgpKQotICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0QmFj
a2dyb3VuZENvbG9yKGNvbG9yKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZ3JhcGhpY3NMYXllci0+
cGxhdGZvcm1MYXllcigpLT5zZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRl
KTsKKyAgICBtX2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+c2V0QmFja2dyb3VuZENv
bG9yKGNvbG9yKTsKIH0KIAogdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFNjcm9s
bExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAppbmRleCBkZjExNTQzMTgwN2VkNzI2
YTNiOWJmNjgyMzY2OGY1ZDU0MmMwYTg4Li4xMTg1YjU0NTU5YjdkNmQ1NzI0YjEyNWE2OGY4ZWE1
NWVjNWUxYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
clRyZWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcApAQCAtOTMsNiArOTMsMTEgQEAgV2ViU2l6ZSBXZWJMYXllclRyZWVWaWV3Ojp2
aWV3cG9ydFNpemUoKSBjb25zdAogICAgIHJldHVybiBXZWJTaXplKG1fcHJpdmF0ZS0+dmlld3Bv
cnRTaXplKCkpOwogfQogCit2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldEJhY2tncm91bmRDb2xv
cihXZWJDb2xvciBjb2xvcikKK3sKKyAgICBtX3ByaXZhdGUtPnNldEJhY2tncm91bmRDb2xvcihj
b2xvcik7Cit9CisKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6c2V0VmlzaWJsZShib29sIHZpc2li
bGUpCiB7CiAgICAgbV9wcml2YXRlLT5zZXRWaXNpYmxlKHZpc2libGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDAzMGQ4ZTFkMWI1NDMyNGYwYWMx
Y2M5Zjg0MjhiYmFmMGI2YTYyODguLjgwNGY2YzliOGIyMDc5MDQ3Yjk2YmE4ZmMyMDVjMGM0ZjE3
OGQyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNvbG9y
LmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkNvbXBvc2l0aW9uVW5kZXJs
aW5lVmVjdG9yQnVpbGRlci5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCkBAIC0zMjQ0LDYg
KzMyNDUsMTQgQEAgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KiBXZWJWaWV3SW1wbDo6bm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0KCkKICAgICByZXR1cm4gbV9ub25Db21wb3NpdGVkQ29udGVudEhv
c3QuZ2V0KCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNldEJhY2tncm91bmRDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit7CisgICAgV2ViQ29yZTo6Q29sb3IgZG9jdW1lbnRC
YWNrZ3JvdW5kQ29sb3IgPSBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IFdlYkNvcmU6OkNvbG9y
Ojp3aGl0ZTsKKyAgICBXZWJDb2xvciB3ZWJEb2N1bWVudEJhY2tncm91bmRDb2xvciA9IGRvY3Vt
ZW50QmFja2dyb3VuZENvbG9yLnJnYigpOworICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
LT5zZXRCYWNrZ3JvdW5kQ29sb3IoZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IpOworICAgIG1fbGF5
ZXJUcmVlVmlldy5zZXRCYWNrZ3JvdW5kQ29sb3Iod2ViRG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3Ip
OworfQorCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogdm9pZCBXZWJWaWV3
SW1wbDo6c2NoZWR1bGVBbmltYXRpb24oKQogewpAQCAtMzI3OSw4ICszMjg4LDcgQEAgcHVibGlj
OgogICAgICAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmhpc3RvZ3JhbUN1c3RvbUNv
dW50cygiUmVuZGVyZXI0LkFjY2VsUm9vdFBhaW50RHVyYXRpb25NUyIsIChwYWludEVuZCAtIHBh
aW50U3RhcnQpICogMTAwMCwgMCwgMTIwLCAzMCk7CiAgICAgICAgIFdlYktpdDo6UGxhdGZvcm06
OmN1cnJlbnQoKS0+aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQuQWNjZWxSb290UGFp
bnRNZWdhcGl4UGVyU2Vjb25kIiwgcGl4ZWxzUGVyU2VjIC8gMTAwMDAwMCwgMTAsIDIxMCwgMzAp
OwogCi0gICAgICAgIG1fd2ViVmlld0ltcGwtPm5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpLT5z
ZXRCYWNrZ3JvdW5kQ29sb3Iodmlldy0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSk7Ci0KKyAg
ICAgICAgbV93ZWJWaWV3SW1wbC0+c2V0QmFja2dyb3VuZENvbG9yKHZpZXctPmRvY3VtZW50QmFj
a2dyb3VuZENvbG9yKCkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTMzMjcsOSArMzMzNSw2IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29s
IGFjdGl2ZSkKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBOb25Db21wb3Np
dGVkQ29udGVudEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVhdGUo
dGhpcykpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0U2hvd0RlYnVn
Qm9yZGVycyhwYWdlKCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMoKSk7CiAKLSAgICAg
ICAgaWYgKHBhZ2UoKSAmJiBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCkpCi0gICAgICAgICAg
ICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0QmFja2dyb3VuZENvbG9yKHBhZ2UoKS0+
bWFpbkZyYW1lKCktPnZpZXcoKS0+ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSk7Ci0KICAgICAg
ICAgbV9sYXllclRyZWVWaWV3LmluaXRpYWxpemUodGhpcywgbV9yb290TGF5ZXIsIGxheWVyVHJl
ZVZpZXdTZXR0aW5ncyk7CiAgICAgICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVsbCgpKSB7
CiAgICAgICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRz
KHBhZ2VTY2FsZUZhY3RvcigpLCBtX21pbmltdW1QYWdlU2NhbGVGYWN0b3IsIG1fbWF4aW11bVBh
Z2VTY2FsZUZhY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApp
bmRleCA4MDBlNTExZGM0NTFiZjUxYzcxNTcyYmM5YjkxMjIyODAwZDI2NDRkLi4yZmQ4M2ZiN2Vk
OWJiZjE1MDRkMzE5N2YwODJlYzNhNzY4OTA1ZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKQEAgLTYwLDYgKzYwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjsKIGNsYXNzIENocm9taXVtRGF0
YU9iamVjdDsKK2NsYXNzIENvbG9yOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwpAQCAtNDY4LDYgKzQ2OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNjcm9sbFJvb3RMYXllclJlY3QoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Ny
b2xsRGVsdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KTsKICAgICB2b2lkIGlu
dmFsaWRhdGVSb290TGF5ZXJSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICBOb25D
b21wb3NpdGVkQ29udGVudEhvc3QqIG5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCgpOworICAgIHZv
aWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgdm9pZCBzY2hlZHVsZUFuaW1h
dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRl
c3QuY3BwCmluZGV4IDhhOWYzNWRjOGE3Yjg5YzBjOTRiZDc1MzdjNjg0NjRmYTc4YTZiYjguLmJi
NjVjYzU4MGFjMTU4YmYwNWNiM2M5N2QyMTdmMjk4NGM4ZWFjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTExMiw3ICsxMTIs
NiBAQCBURVNUKENDTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJlVHJhY2tlZFBy
b3Blcmx5KQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+
c2V0RGVidWdCb3JkZXJXaWR0aChhcmJpdHJhcnlOdW1iZXIpKTsKICAgICBFWEVDVVRFX0FORF9W
RVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKSk7CiAg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXRCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3I6OmdyYXkpKTsKLSAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlF
Ul9DSEFOR0VEKHJvb3QtPnNldEJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCh0cnVlKSk7CiAKICAg
ICAvLyBTcGVjaWFsIGNhc2U6IGNoZWNrIHRoYXQgc3VibGF5ZXIgdHJhbnNmb3JtIGNoYW5nZXMg
YWxsIGxheWVyJ3MgZGVzY2VuZGFudHMsIGJ1dCBub3QgdGhlIGxheWVyIGl0c2VsZi4KICAgICBy
b290LT5yZXNldEFsbENoYW5nZVRyYWNraW5nRm9yU3VidHJlZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApp
bmRleCA3MDA5YzhjM2U5M2NhNmNjMDJkNDU1MjU3ZWYxMzA5Y2VkZmY2NWJlLi5jOWYzOGEwMWZk
ZTFlNzk1MjJhODc4NWY5YzBkZTkyMDdkOTkyNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgogCiAjaW5jbHVkZSAiQ0NB
bmltYXRpb25UZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiQ0NMYXllclRlc3RDb21tb24uaCIKICNp
bmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKQEAg
LTM3LDYgKzM4LDcgQEAKICNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVhZC5oIgogI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBDQ0xheWVyVGVzdENvbW1vbjsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXRUZXN0czsKQEAgLTU5OCw2ICs2MDAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHRlc3RCbGVuZGluZ0RyYXdRdWFkLT5zZXRRdWFkVmlzaWJsZVJlY3QobV9xdWFkVmlzaWJsZVJl
Y3QpOwogICAgICAgICBFWFBFQ1RfRVEobV9ibGVuZCwgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPm5l
ZWRzQmxlbmRpbmcoKSk7CiAgICAgICAgIEVYUEVDVF9FUShtX2hhc1JlbmRlclN1cmZhY2UsICEh
cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgcXVhZExpc3QuYXBwZW5kKHRlc3RCbGVuZGluZ0Ry
YXdRdWFkLnJlbGVhc2UoKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRFeHBlY3RhdGlvbihib29s
IGJsZW5kLCBib29sIGhhc1JlbmRlclN1cmZhY2UpCkBAIC04NDEsNiArODQ0LDg4IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgYmxlbmRpbmdPZmZXaGVuRHJhd2luZ09wYXF1ZUxh
eWVycykKIAogfQogCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHZpZXdwb3J0Q292
ZXJlZCkKK3sKKyAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjcmVhdGVD
b250ZXh0KCkpOworICAgIG1faG9zdEltcGwtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3Jh
eSk7CisKKyAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSgxMDAsIDEwMCk7CisgICAgbV9ob3N0SW1w
bC0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CisKKyAgICBtX2hvc3RJbXBsLT5zZXRS
b290TGF5ZXIoQmxlbmRTdGF0ZUNoZWNrTGF5ZXI6OmNyZWF0ZSgwKSk7CisgICAgQmxlbmRTdGF0
ZUNoZWNrTGF5ZXIqIHJvb3QgPSBzdGF0aWNfY2FzdDxCbGVuZFN0YXRlQ2hlY2tMYXllcio+KG1f
aG9zdEltcGwtPnJvb3RMYXllcigpKTsKKyAgICByb290LT5zZXRFeHBlY3RhdGlvbihmYWxzZSwg
dHJ1ZSk7CisgICAgcm9vdC0+c2V0T3BhcXVlKHRydWUpOworCisgICAgLy8gTm8gZ3V0dGVyIHJl
Y3RzCisgICAgeworICAgICAgICBJbnRSZWN0IGxheWVyUmVjdCgwLCAwLCAxMDAsIDEwMCk7Cisg
ICAgICAgIHJvb3QtPnNldFBvc2l0aW9uKGxheWVyUmVjdC5sb2NhdGlvbigpKTsKKyAgICAgICAg
cm9vdC0+c2V0Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOworICAgICAgICByb290LT5zZXRDb250
ZW50Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOworICAgICAgICByb290LT5zZXRRdWFkUmVjdChJ
bnRSZWN0KEludFBvaW50KCksIGxheWVyUmVjdC5zaXplKCkpKTsKKyAgICAgICAgcm9vdC0+c2V0
UXVhZFZpc2libGVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJSZWN0LnNpemUoKSkpOwor
CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICAgICAg
RVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgICAgICBB
U1NFUlRfRVEoMXUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIHNpemVf
dCBudW1HdXR0ZXJRdWFkcyA9IDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJh
bWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKTsgKytpKQorICAgICAgICAgICAg
bnVtR3V0dGVyUXVhZHMgKz0gKGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKVtpXS0+
bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yKSA/IDEgOiAwOworICAgICAgICBF
WFBFQ1RfRVEoMHUsIG51bUd1dHRlclF1YWRzKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBmcmFt
ZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICB2ZXJpZnlR
dWFkc0V4YWN0bHlDb3ZlclJlY3QoZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLCBJ
bnRSZWN0KC1sYXllclJlY3QubG9jYXRpb24oKSwgdmlld3BvcnRTaXplKSk7CisgICAgfQorCisg
ICAgLy8gRW1wdHkgdmlzaWJsZSBjb250ZW50IGFyZWEgKGZ1bGxzY3JlZW4gZ3V0dGVyIHJlY3Qp
CisgICAgeworICAgICAgICBJbnRSZWN0IGxheWVyUmVjdCgwLCAwLCAwLCAwKTsKKyAgICAgICAg
cm9vdC0+c2V0UG9zaXRpb24obGF5ZXJSZWN0LmxvY2F0aW9uKCkpOworICAgICAgICByb290LT5z
ZXRCb3VuZHMobGF5ZXJSZWN0LnNpemUoKSk7CisgICAgICAgIHJvb3QtPnNldENvbnRlbnRCb3Vu
ZHMobGF5ZXJSZWN0LnNpemUoKSk7CisgICAgICAgIHJvb3QtPnNldFF1YWRSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXJSZWN0LnNpemUoKSkpOworICAgICAgICByb290LT5zZXRRdWFkVmlz
aWJsZVJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllclJlY3Quc2l6ZSgpKSk7CisKKyAgICAg
ICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgICAgICBFWFBFQ1Rf
VFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgICAgIEFTU0VSVF9F
USgxdSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAgICAgc2l6ZV90IG51bUd1
dHRlclF1YWRzID0gMDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5yZW5k
ZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBudW1HdXR0
ZXJRdWFkcyArPSAoZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpW2ldLT5tYXRlcmlh
bCgpID09IENDRHJhd1F1YWQ6OlNvbGlkQ29sb3IpID8gMSA6IDA7CisgICAgICAgIEVYUEVDVF9F
USgxdSwgbnVtR3V0dGVyUXVhZHMpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIGZyYW1lLnJlbmRl
clBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgICAgIHZlcmlmeVF1YWRzRXhh
Y3RseUNvdmVyUmVjdChmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCksIEludFJlY3Qo
LWxheWVyUmVjdC5sb2NhdGlvbigpLCB2aWV3cG9ydFNpemUpKTsKKyAgICB9CisKKyAgICAvLyBD
b250ZW50IGFyZWEgaW4gbWlkZGxlIG9mIGNsaXAgcmVjdCAoZm91ciBzdXJyb3VuZGluZyBndXR0
ZXIgcmVjdHMpCisgICAgeworICAgICAgICBJbnRSZWN0IGxheWVyUmVjdCg1MCwgNTAsIDIwLCAy
MCk7CisgICAgICAgIHJvb3QtPnNldFBvc2l0aW9uKGxheWVyUmVjdC5sb2NhdGlvbigpKTsKKyAg
ICAgICAgcm9vdC0+c2V0Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOworICAgICAgICByb290LT5z
ZXRDb250ZW50Qm91bmRzKGxheWVyUmVjdC5zaXplKCkpOworICAgICAgICByb290LT5zZXRRdWFk
UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyUmVjdC5zaXplKCkpKTsKKyAgICAgICAgcm9v
dC0+c2V0UXVhZFZpc2libGVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJSZWN0LnNpemUo
KSkpOworCisgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAg
ICAgICBBU1NFUlRfRVEoMXUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAg
IHNpemVfdCBudW1HdXR0ZXJRdWFkcyA9IDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgbnVtR3V0dGVyUXVhZHMgKz0gKGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3Qo
KVtpXS0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpTb2xpZENvbG9yKSA/IDEgOiAwOworICAg
ICAgICBFWFBFQ1RfRVEoNHUsIG51bUd1dHRlclF1YWRzKTsKKyAgICAgICAgRVhQRUNUX0VRKDV1
LCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKworICAgICAgICB2
ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QoZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlz
dCgpLCBJbnRSZWN0KC1sYXllclJlY3QubG9jYXRpb24oKSwgdmlld3BvcnRTaXplKSk7CisgICAg
fQorCit9CisKKwogY2xhc3MgUmVzaGFwZVRyYWNrZXJDb250ZXh0OiBwdWJsaWMgRmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNEIHsKIHB1YmxpYzoKICAgICBSZXNoYXBlVHJhY2tlckNvbnRleHQoKSA6
IG1fcmVzaGFwZUNhbGxlZChmYWxzZSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA4ZjZhYzJiYTc0OGVkNWU2
ZWYwOTlhZDZjMGE2MGU0ODZhNzQ2OWQ4Li40YTE0ZGNiNTYzNDM2MzQzZGY5Zjc0ZTc3Y2ZkMGEy
MjcwZTZiZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTEyNjMsNiArMTI2MywzOCBAQCBURVNUX0YoQ0NMYXll
clRyZWVIb3N0VGVzdFNjcm9sbE11bHRpcGxlUmVkcmF3LCBESVNBQkxFRF9ydW5NdWx0aVRocmVh
ZCkKICAgICBydW5UZXN0VGhyZWFkZWQoKTsKIH0KIAorLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgcHJvcGVydGllcyBvbiB0aGUgbGF5ZXIgdHJlZSBob3N0IGFyZSBjb21taXRlZCB0byB0aGUg
aW1wbCBzaWRlLgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdENvbW1pdCA6IHB1YmxpYyBDQ0xh
eWVyVHJlZUhvc3RUZXN0IHsKK3B1YmxpYzoKKworICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RDb21t
aXQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQorICAgIHsKKyAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgyMCwgMjApKTsKKyAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OmdyYXkpOworICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyg1LCA1LCA1
KTsKKworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqIGltcGwpCisgICAgeworICAgICAgICBFWFBFQ1RfRVEoSW50U2l6ZSgyMCwgMjApLCBp
bXBsLT52aWV3cG9ydFNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUShDb2xvcjo6Z3JheSwgaW1w
bC0+YmFja2dyb3VuZENvbG9yKCkpOworICAgICAgICBFWFBFQ1RfRVEoNSwgaW1wbC0+cGFnZVNj
YWxlKCkpOworCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
YWZ0ZXJUZXN0KCkgeyB9Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdENvbW1pdCwg
cnVuVGVzdCkKK3sKKyAgICBydW5UZXN0KHRydWUpOworfQorCiAvLyBWZXJpZmllcyB0aGF0IHN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uIGV2ZW50cyBwcm9wYWdhdGUgY29ycmVjdGx5IGZyb20gQ0NM
YXllclRyZWVIb3N0IHRvCiAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsIGluIHRoZSBNVCBjb21wb3Np
dG9yLgogY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uIDog
cHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgewpAQCAtMTc2OSw5ICsxODAxLDYgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KIAotICAgIHZpcnR1YWwgUmVnaW9uIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29u
c3QgeyByZXR1cm4gaW50ZXJzZWN0aW9uKG1fb3BhcXVlQ29udGVudHNSZWN0LCB2aXNpYmxlTGF5
ZXJSZWN0KCkpOyB9Ci0gICAgdm9pZCBzZXRPcGFxdWVDb250ZW50c1JlY3QoY29uc3QgSW50UmVj
dCYgb3BhcXVlQ29udGVudHNSZWN0KSB7IG1fb3BhcXVlQ29udGVudHNSZWN0ID0gb3BhcXVlQ29u
dGVudHNSZWN0OyB9Ci0KICAgICBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UoKSBj
b25zdCB7IHJldHVybiBtX29jY2x1ZGVkU2NyZWVuU3BhY2U7IH0KICAgICB2b2lkIGNsZWFyT2Nj
bHVkZWRTY3JlZW5TcGFjZSgpIHsgbV9vY2NsdWRlZFNjcmVlblNwYWNlID0gUmVnaW9uKCk7IH0K
IApAQCAtMTc3OSw3ICsxODA4LDYgQEAgcHJpdmF0ZToKICAgICBUZXN0TGF5ZXJDaHJvbWl1bSgp
IDogTGF5ZXJDaHJvbWl1bSgpIHsgfQogCiAgICAgUmVnaW9uIG1fb2NjbHVkZWRTY3JlZW5TcGFj
ZTsKLSAgICBJbnRSZWN0IG1fb3BhcXVlQ29udGVudHNSZWN0OwogfTsKIAogc3RhdGljIHZvaWQg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhUZXN0TGF5ZXJDaHJvbWl1bSogbGF5ZXIsIExh
eWVyQ2hyb21pdW0qIHBhcmVudCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwg
Y29uc3QgSW50U2l6ZSYgYm91bmRzLCBib29sIG9wYXF1ZSkKQEAgLTE5OTYsNDYgKzIwMjQsNiBA
QCBwdWJsaWM6CiAKIFNJTkdMRV9BTkRfTVVMVElfVEhSRUFEX1RFU1RfRihDQ0xheWVyVHJlZUhv
c3RUZXN0TGF5ZXJPY2NsdXNpb24pCiAKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RDb250ZW50
TGF5ZXJPY2NsdXNpb24gOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7Ci1wdWJsaWM6Ci0g
ICAgQ0NMYXllclRyZWVIb3N0VGVzdENvbnRlbnRMYXllck9jY2x1c2lvbigpIHsgfQotCi0gICAg
dmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCi0gICAgewotICAgICAgICBSZWZQdHI8VGVzdExheWVy
Q2hyb21pdW0+IHJvb3RMYXllciA9IFRlc3RMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICAg
ICAgUmVmUHRyPFRlc3RMYXllckNocm9taXVtPiBjaGlsZCA9IFRlc3RMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKLQotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
LSAgICAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhyb290TGF5ZXIuZ2V0KCksIDAs
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSwgdHJ1ZSk7Ci0gICAgICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcoY2hpbGQuZ2V0KCksIHJvb3RMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MCwgNTApLCBmYWxzZSk7Ci0K
LSAgICAgICAgY2hpbGQtPnNldE9wYXF1ZUNvbnRlbnRzUmVjdChJbnRSZWN0KDEwLCAxMCwgMjAs
IDIwKSk7Ci0KLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVy
KTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5i
b3VuZHMoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKLQotICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KCksIGNoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkp
OwotICAgICAgICBFWFBFQ1RfRVEoMHUsIGNoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDAsIDQwLCAy
MCwgMjApLCByb290TGF5ZXItPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAg
ICAgIEVYUEVDVF9FUSgxdSwgcm9vdExheWVyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOwotCi0gICAgICAgIC8vIEtpbGwgdGhlIGxheWVyVHJlZUhvc3QgaW1tZWRpYXRl
bHkuCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKDApOwotICAgICAgICBt
X2xheWVyVHJlZUhvc3QuY2xlYXIoKTsKLQotICAgICAgICBlbmRUZXN0KCk7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCi0gICAgewotICAgIH0KLX07Ci0KLVNJTkdMRV9B
TkRfTVVMVElfVEhSRUFEX1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0Q29udGVudExheWVyT2Nj
bHVzaW9uKQotCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0TGF5ZXJPY2NsdXNpb25XaXRoRmls
dGVycyA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKIHB1YmxpYzoKICAgICBDQ0xheWVy
VHJlZUhvc3RUZXN0TGF5ZXJPY2NsdXNpb25XaXRoRmlsdGVycygpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAK
aW5kZXggYzA2MzUzMTViYzdlZDM3NGVkZDhmM2IxMWM2ZWRlOTNmMTA0MDliZC4uMGViMWY3ZDg2
YzYxMjRhZDQwN2JjZmY1ZGZmMDdhNzA4NDBjZDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCkBAIC01NCwy
MyArNTQsNTMgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgVGVzdENvbnRlbnRMYXllckNocm9taXVt
IDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIFRlc3RDb250ZW50TGF5ZXJD
aHJvbWl1bSgpIDogTGF5ZXJDaHJvbWl1bSgpIHsgfQorICAgIFRlc3RDb250ZW50TGF5ZXJDaHJv
bWl1bSgpCisgICAgICAgIDogTGF5ZXJDaHJvbWl1bSgpCisgICAgICAgICwgbV9vdmVycmlkZU9w
YXF1ZUNvbnRlbnRzUmVjdChmYWxzZSkKKyAgICB7CisgICAgfQogCiAgICAgdmlydHVhbCBib29s
IGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIFJlZ2lv
biB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIGludGVyc2VjdGlv
bihtX29wYXF1ZUNvbnRlbnRzUmVjdCwgdmlzaWJsZUxheWVyUmVjdCgpKTsgfQotICAgIHZvaWQg
c2V0T3BhcXVlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZUNvbnRlbnRzUmVjdCkg
eyBtX29wYXF1ZUNvbnRlbnRzUmVjdCA9IG9wYXF1ZUNvbnRlbnRzUmVjdDsgfQorICAgIHZpcnR1
YWwgUmVnaW9uIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmIChtX292ZXJyaWRlT3BhcXVlQ29udGVudHNSZWN0KQorICAgICAgICAgICAgcmV0dXJu
IGludGVyc2VjdGlvbihtX29wYXF1ZUNvbnRlbnRzUmVjdCwgdmlzaWJsZUxheWVyUmVjdCgpKTsK
KyAgICAgICAgcmV0dXJuIExheWVyQ2hyb21pdW06OnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9u
KCk7CisgICAgfQorICAgIHZvaWQgc2V0T3BhcXVlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3Qm
IG9wYXF1ZUNvbnRlbnRzUmVjdCkKKyAgICB7CisgICAgICAgIG1fb3ZlcnJpZGVPcGFxdWVDb250
ZW50c1JlY3QgPSB0cnVlOworICAgICAgICBtX29wYXF1ZUNvbnRlbnRzUmVjdCA9IG9wYXF1ZUNv
bnRlbnRzUmVjdDsKKyAgICB9CiAKIHByaXZhdGU6CisgICAgYm9vbCBtX292ZXJyaWRlT3BhcXVl
Q29udGVudHNSZWN0OwogICAgIEludFJlY3QgbV9vcGFxdWVDb250ZW50c1JlY3Q7CiB9OwogCiBj
bGFzcyBUZXN0Q29udGVudExheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6
Ci0gICAgVGVzdENvbnRlbnRMYXllckltcGwoaW50IGlkKSA6IENDTGF5ZXJJbXBsKGlkKSB7IHNl
dERyYXdzQ29udGVudCh0cnVlKTsgfQorICAgIFRlc3RDb250ZW50TGF5ZXJJbXBsKGludCBpZCkK
KyAgICAgICAgOiBDQ0xheWVySW1wbChpZCkKKyAgICAgICAgLCBtX292ZXJyaWRlT3BhcXVlQ29u
dGVudHNSZWN0KGZhbHNlKQorICAgIHsKKyAgICAgICAgc2V0RHJhd3NDb250ZW50KHRydWUpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgUmVnaW9uIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX292ZXJyaWRlT3BhcXVlQ29udGVudHNSZWN0KQor
ICAgICAgICAgICAgcmV0dXJuIGludGVyc2VjdGlvbihtX29wYXF1ZUNvbnRlbnRzUmVjdCwgdmlz
aWJsZUxheWVyUmVjdCgpKTsKKyAgICAgICAgcmV0dXJuIENDTGF5ZXJJbXBsOjp2aXNpYmxlQ29u
dGVudE9wYXF1ZVJlZ2lvbigpOworICAgIH0KKyAgICB2b2lkIHNldE9wYXF1ZUNvbnRlbnRzUmVj
dChjb25zdCBJbnRSZWN0JiBvcGFxdWVDb250ZW50c1JlY3QpCisgICAgeworICAgICAgICBtX292
ZXJyaWRlT3BhcXVlQ29udGVudHNSZWN0ID0gdHJ1ZTsKKyAgICAgICAgbV9vcGFxdWVDb250ZW50
c1JlY3QgPSBvcGFxdWVDb250ZW50c1JlY3Q7CisgICAgfQogCi0gICAgdmlydHVhbCBSZWdpb24g
dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKSBjb25zdCB7IHJldHVybiBpbnRlcnNlY3Rpb24o
bV9vcGFxdWVDb250ZW50c1JlY3QsIHZpc2libGVMYXllclJlY3QoKSk7IH0KLSAgICB2b2lkIHNl
dE9wYXF1ZUNvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVDb250ZW50c1JlY3QpIHsg
bV9vcGFxdWVDb250ZW50c1JlY3QgPSBvcGFxdWVDb250ZW50c1JlY3Q7IH0KIHByaXZhdGU6Cisg
ICAgYm9vbCBtX292ZXJyaWRlT3BhcXVlQ29udGVudHNSZWN0OwogICAgIEludFJlY3QgbV9vcGFx
dWVDb250ZW50c1JlY3Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwCmluZGV4IDU3Y2FhN2RjMTcxNGExZjllNTJl
NTIxYzU4ZDQwMzkyNTM1MzdiYjkuLjYwY2JmOWZlZjJlN2U3NzllYWQxMDdiOTE3OTAzNWUzZmJk
NGQ0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExh
eWVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxl
ZExheWVySW1wbFRlc3QuY3BwCkBAIC0yNjIsNzYgKzI2Miw0IEBAIFRFU1QoQ0NUaWxlZExheWVy
SW1wbFRlc3QsIHRpbGVPcGFxdWVSZWN0Rm9yTGF5ZXJOb0JvcmRlcnMpCiAgICAgfQogfQogCi1U
RVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBiYWNrZ3JvdW5kQ292ZXJzVmlld3BvcnQpCi17Ci0g
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7Ci0KLSAgICBjb25z
dCBJbnRTaXplIHRpbGVTaXplKDEwLCAxMCk7Ci0gICAgY29uc3QgaW50IG51bVRpbGVzWCA9IDI7
Ci0gICAgY29uc3QgaW50IG51bVRpbGVzWSA9IDI7Ci0gICAgY29uc3QgdW5zaWduZWQgbnVtVGls
ZXMgPSBudW1UaWxlc1ggKiBudW1UaWxlc1k7Ci0gICAgY29uc3QgSW50U2l6ZSBsYXllclNpemUo
dGlsZVNpemUud2lkdGgoKSAqIG51bVRpbGVzWCwgdGlsZVNpemUuaGVpZ2h0KCkgKiBudW1UaWxl
c1kpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRp
bGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7Ci0g
ICAgbGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSk7Ci0gICAgbGF5ZXItPnNl
dEJhY2tncm91bmRDb3ZlcnNWaWV3cG9ydCh0cnVlKTsKLQotICAgIC8vIE5vIGd1dHRlciByZWN0
cwotICAgIHsKLSAgICAgICAgSW50UmVjdCBjbGlwUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwg
bGF5ZXJTaXplKTsKLSAgICAgICAgbGF5ZXItPnNldENsaXBSZWN0KGNsaXBSZWN0KTsKLSAgICAg
ICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNp
emUpKTsKLQotICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0
ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoKTsKLQotICAgICAgICBNb2NrQ0NRdWFk
Q3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNl
OwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRl
LmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKLSAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIu
cXVhZExpc3QoKS5zaXplKCksIG51bVRpbGVzKTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIEVY
UEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6
OlRpbGVkQ29udGVudCk7Ci0gICAgfQotCi0gICAgLy8gRW1wdHkgdmlzaWJsZSBjb250ZW50IGFy
ZWEgKGZ1bGxzY3JlZW4gZ3V0dGVyIHJlY3QpCi0gICAgewotICAgICAgICBJbnRSZWN0IGNsaXBS
ZWN0ID0gSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApOwotICAgICAgICBsYXllci0+c2V0Q2xp
cFJlY3QoY2xpcFJlY3QpOwotICAgICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRS
ZWN0KCkpOwotCi0gICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0
YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBNb2NrQ0NRdWFk
Q3VsbGVyIHF1YWRDdWxsZXI7Ci0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNl
OwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRl
LmdldCgpLCB1c2VkQ2hlY2tlcmJvYXJkKTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIEVYUEVD
VF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KClbaV0tPm1hdGVyaWFsKCksIENDRHJhd1F1YWQ6OlNv
bGlkQ29sb3IpOwotCi0gICAgICAgIHZlcmlmeVF1YWRzRXhhY3RseUNvdmVyUmVjdChxdWFkQ3Vs
bGVyLnF1YWRMaXN0KCksIGNsaXBSZWN0KTsKLSAgICB9Ci0KLSAgICAvLyBDb250ZW50IGFyZWEg
aW4gbWlkZGxlIG9mIGNsaXAgcmVjdCAoZm91ciBzdXJyb3VuZGluZyBndXR0ZXIgcmVjdHMpCi0g
ICAgewotICAgICAgICBJbnRSZWN0IGNsaXBSZWN0ID0gSW50UmVjdCgtNTAsIC01MCwgMTAwLCAx
MDApOwotICAgICAgICBsYXllci0+c2V0Q2xpcFJlY3QoY2xpcFJlY3QpOwotICAgICAgICBsYXll
ci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOwot
Ci0gICAgICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5
ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1
YWRDdWxsZXI7Ci0gICAgICAgIGJvb2wgdXNlZENoZWNrZXJib2FyZCA9IGZhbHNlOwotICAgICAg
ICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB1
c2VkQ2hlY2tlcmJvYXJkKTsKLQotICAgICAgICB1bnNpZ25lZCBudW1Db250ZW50VGlsZXMgPSAw
LCBudW1HdXR0ZXJUaWxlcyA9IDA7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVh
ZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAocXVhZEN1
bGxlci5xdWFkTGlzdCgpW2ldLT5tYXRlcmlhbCgpID09IENDRHJhd1F1YWQ6OlRpbGVkQ29udGVu
dCkKLSAgICAgICAgICAgICAgICBudW1Db250ZW50VGlsZXMrKzsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKHF1YWRDdWxsZXIucXVhZExpc3QoKVtpXS0+bWF0ZXJpYWwoKSA9PSBDQ0RyYXdRdWFkOjpT
b2xpZENvbG9yKQotICAgICAgICAgICAgICAgIG51bUd1dHRlclRpbGVzKys7Ci0gICAgICAgIH0K
LSAgICAgICAgRVhQRUNUX0VRKG51bUNvbnRlbnRUaWxlcywgbnVtVGlsZXMpOwotICAgICAgICBF
WFBFQ1RfR0UobnVtR3V0dGVyVGlsZXMsIDR1KTsKLQotICAgICAgICB2ZXJpZnlRdWFkc0V4YWN0
bHlDb3ZlclJlY3QocXVhZEN1bGxlci5xdWFkTGlzdCgpLCBjbGlwUmVjdCk7Ci0gICAgfQotfQot
CiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9MYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xh
eWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBkMjcyYWFkMzFhMmQ2ZWNmODc3NGI0ZjI1ZDY0OWU4
YjVhOTc0MDM0Li4zOTI1NWNmN2FmNjQ5N2MzMzhmNTM3YTRkNmYyNjNlM2I5MjQzOTQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNw
cApAQCAtNTA2LDcgKzUwNiw2IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tQcm9w
ZXJ0eUNoYW5nZUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKICAgICBFWEVDVVRFX0FORF9WRVJJRllf
U0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldEFuY2hvclBvaW50KEZs
b2F0UG9pbnQoMS4yM2YsIDQuNTZmKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVF
RFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0QW5jaG9yUG9pbnRaKDAuN2YpKTsK
ICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0
TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihDb2xvcigwLjRmLCAwLjRmLCAwLjRmKSkpOwotICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXll
ci0+c2V0QmFja2dyb3VuZENvdmVyc1ZpZXdwb3J0KHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9W
RVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldE1hc2tzVG9C
b3VuZHModHJ1ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JF
SEFWSU9SKDEsIHRlc3RMYXllci0+c2V0TWFza0xheWVyKGR1bW15TGF5ZXIuZ2V0KCkpKTsKICAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5
ZXItPnNldE9wYWNpdHkoMC41ZikpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>