<?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>179972</bug_id>
          
          <creation_ts>2017-11-23 04:00:55 -0800</creation_ts>
          <short_desc>[CoordGraphics] Simplify CoordinatedGraphicsLayer&apos;s content buffer updates</short_desc>
          <delta_ts>2017-11-23 06:20:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1374391</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-11-23 04:00:55 -0800</bug_when>
    <thetext>[CoordGraphics] Simplify CoordinatedGraphicsLayer&apos;s content buffer updates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374392</commentid>
    <comment_count>1</comment_count>
      <attachid>327494</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-11-23 04:27:10 -0800</bug_when>
    <thetext>Created attachment 327494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374394</commentid>
    <comment_count>2</comment_count>
      <attachid>327494</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-11-23 04:57:31 -0800</bug_when>
    <thetext>Comment on attachment 327494
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedBuffer.h:-56
&gt; -    class Client {
&gt; -    public:
&gt; -        virtual ~Client() = default;
&gt; -        virtual void paintToSurfaceContext(GraphicsContext&amp;) = 0;
&gt; -    };

\o/

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:-859
&gt; -void CoordinatedGraphicsLayer::didUpdateTileBuffers()
&gt; -{
&gt; -    if (!isShowingRepaintCounter())
&gt; -        return;
&gt; -
&gt; -    m_layerState.repaintCount = incrementRepaintCount();
&gt; -    m_layerState.repaintCountChanged = true;
&gt; -}

Why did you move this?

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:976
&gt; +            if (!coordinatedBuffer)
&gt; +                continue;

Dow we consider the tile to be still dirty in this case?

&gt; Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:33
&gt; +#include &lt;WebCore/CoordinatedBuffer.h&gt;

Can we forward declare this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374400</commentid>
    <comment_count>3</comment_count>
      <attachid>327494</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-11-23 06:18:11 -0800</bug_when>
    <thetext>Comment on attachment 327494
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:-859
&gt;&gt; -}
&gt; 
&gt; Why did you move this?

Because it&apos;s also moved in the class declaration, and it&apos;s not an override of the TiledBackingStoreClient interface anymore, so it best fits with other didChange*() methods.

&gt;&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:976
&gt;&gt; +                continue;
&gt; 
&gt; Dow we consider the tile to be still dirty in this case?

Yes. It might be possible to always retrieve a non-null CoordinatedBuffer simply because CoordinatedBuffer::create() in UpdateAtlas is a Ref&lt;&gt;. I&apos;ll look into it.

&gt;&gt; Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:33
&gt;&gt; +#include &lt;WebCore/CoordinatedBuffer.h&gt;
&gt; 
&gt; Can we forward declare this?

No, because we need the CoordinatedBuffer::Flags type. This just includes the CoordinatedBuffer header explicitly, I assume it was until now included through UpdateAtlas.h or some other header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374401</commentid>
    <comment_count>4</comment_count>
      <attachid>327494</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-11-23 06:19:55 -0800</bug_when>
    <thetext>Comment on attachment 327494
Patch

Clearing flags on attachment: 327494

Committed r225115: &lt;https://trac.webkit.org/changeset/225115&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374402</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-11-23 06:19:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374403</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-23 06:20:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/35676071&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327494</attachid>
            <date>2017-11-23 04:27:10 -0800</date>
            <delta_ts>2017-11-23 06:19:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179972-20171123132708.patch</filename>
            <type>text/plain</type>
            <size>28689</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2VjYmIwYjEyZDAyNjk2
M2VlNTg1YTNhNGU5ZWVkNjE0MmFiMGZhMi4uNDc5NTRmYjBkNmIzZmI5ODdiMWUyODZjZTYzNDJk
NGI2ZGU1ZWUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc5IEBACiAyMDE3LTExLTIzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbQ29vcmRHcmFwaGlj
c10gU2ltcGxpZnkgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyJ3MgY29udGVudCBidWZmZXIgdXBk
YXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5
OTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHVy
aW5nIGxheWVyIGZsdXNoZXMsIHdoZW4gYSBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIncyB0aWxl
ZCBiYWNraW5nIHN0b3JlCisgICAgICAgIGhhcyBkaXJ0eSB0aWxlcyB0aGF0IG5lZWQgdG8gYmUg
dXBkYXRlZCwgdGhlIGZvbGxvd2luZyBjaGFpbiBvZiBjYWxscyB3b3VsZAorICAgICAgICBiZSBp
bnZva2VkIHRvIHBlcmZvcm0gdGhlIHBhaW50aW5nLCBzdGFydGluZyBpbgorICAgICAgICBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCk6CisgICAgICAgIHwt
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlQ29udGVudEJ1ZmZlcnMoKQorICAgICAg
ICAgfC0gVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGVCdWZmZXJzKCkKKyAgICAgICAgICB8
LSBUaWxlOjp1cGRhdGVCYWNrQnVmZmVyKCkKKyAgICAgICAgICAgfC0gQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpwYWludFRvU3VyZmFjZSgpCisgICAgICAgICAgICB8LSBDb21wb3NpdGluZ0Nv
b3JkaW5hdG9yOjpwYWludFRvU3VyZmFjZSgpCisgICAgICAgICAgICAgfC0gVXBkYXRlQXRsYXM6
OnBhaW50T25BdmFpbGFibGVCdWZmZXIoKQorICAgICAgICAgICAgICB8LSBUaHJlYWRTYWZlQ29v
cmRpbmF0ZWRTdXJmYWNlOjpwYWludFRvU3VyZmFjZSgpCisgICAgICAgICAgICAgICB8LSBUaWxl
OjpwYWludFRvU3VyZmFjZUNvbnRleHQoKQorICAgICAgICAgICAgICAgIHwtIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludCgpCisgICAgICAgICAgICAgICAg
IHwtIEdyYXBoaWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKCkKKworICAgICAg
ICBUaGF0J3MgYSBiaXQgbXVjaC4KKworICAgICAgICBJbiBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnVwZGF0ZUNvbnRlbnRCdWZmZXJzKCksIHdlIG5vdyBmaXJzdCByZXRyaWV2ZQorICAgICAg
ICBhbGwgdGhlIGRpcnR5IGxheWVycyBpbiBvdXIgVGlsZWRCYWNraW5nU3RvcmUuIFdlIHRoZW4g
aXRlcmF0ZSB0aHJvdWdoIHRoZW0sCisgICAgICAgIGZpcnN0IGVzdGFibGlzaGluZyB0aGVpciBJ
RCBhbmQgdGhlbiByZXRyaWV2aW5nIGFuIGF2YWlsYWJsZSBDb29yZGluYXRlZEJ1ZmZlcgorICAg
ICAgICB0aGF0IHdlIGNhbiB1c2UgZm9yIHBhaW50aW5nLiBUaGUgQ29vcmRpbmF0ZWRCdWZmZXIg
aXMgcmV0cmlldmVkIHRocm91Z2gKKyAgICAgICAgQ29tcG9zaXRpbmdDb29yZGluYXRvciwgd2hp
Y2ggaXMgc3RpbGwgY2FjaGluZyB0aGVzZSBidWZmZXJzIHZpYSBVcGRhdGVBdGxhcworICAgICAg
ICBvYmplY3RzLgorCisgICAgICAgIFdpdGggYSBDb29yZGluYXRlZEJ1ZmZlciBhdmFpbGFibGUs
IHdlIGNhbiB0aGVuIHByb2NlZWQgd2l0aCBwYWludGluZy4gVGhlCisgICAgICAgIHBhaW50aW5n
IGNvbnRleHQgaGFzIHRvIGJlIHByb3Blcmx5IHNldCB1cCB0byBwYWludCBpbnRvIHRoZSBjb3Jy
ZWN0IGFyZWEgb2YKKyAgICAgICAgdGhlIGdpdmVuIGJ1ZmZlciwgYW5kIHRoZSBhbHBoYSBjaGFu
bmVsLCBpZiBuZWNlc3NhcnksIGhhcyB0byBiZSBhZGRyZXNzZWQuCisgICAgICAgIEFmdGVyIHBy
b3Blcmx5IHBvc2l0aW9uaW5nIGFuZCBzY2FsaW5nIG91cnNlbHZlcyBvbiB0aGUgZ2l2ZW4gY29u
dGV4dCwgd2UKKyAgICAgICAgY2FuIHByb2NlZWQgd2l0aCB0aGUgR3JhcGhpY3NMYXllcjo6cGFp
bnRHcmFwaGljc0xheWVyQ29udGVudHMoKSBjYWxsLgorCisgICAgICAgIFdoYXQncyBsZWZ0IGlz
IGZpbGxpbmcgb3V0IHRoZSBtaXNzaW5nIFN1cmZhY2VVcGRhdGVJbmZvIGluZm9ybWF0aW9uIHdo
aWNoIGlzCisgICAgICAgIHRoZW4gcGFzc2VkIHRvIHRoZSB1cGRhdGVUaWxlKCkgbWV0aG9kIHRo
YXQgcHJvcGVybHkgcmVnaXN0ZXJzIHRoZSB0aWxlCisgICAgICAgIHVwZGF0ZSB3ZSd2ZSBqdXN0
IHBlcmZvcm1lZC4gVGhlIHRpbGUgaXRzZWxmIGlzIG1hcmtlZCBjbGVhbi4gQWZ0ZXIgdGhlCisg
ICAgICAgIGl0ZXJhdGlvbiwgd2UgY2FsbCB0aGUgZGlkVXBkYXRlVGlsZUJ1ZmZlcnMoKSBtZXRo
b2QgaW4gY2FzZSBhbnkgc3VjY2Vzc2Z1bAorICAgICAgICB0aWxlIHVwZGF0ZSB3YXMgaW5kZWVk
IHBlcmZvcm1lZCwgaW5jcmVtZW50aW5nIHRoZSByZXBhaW50IGNvdW50ZXIuCisKKyAgICAgICAg
VGhhdCdzIGl0IC0tIHdlIGNsaXBwZWQgOCBjYWxscyBmcm9tIHRoZSBjYWxsIGNoYWluLiBXZSBj
YW4gbm93IGFsc28gcmVtb3ZlCisgICAgICAgIHRoZSBDb29yZGluYXRlZEJ1ZmZlcjo6Q2xpZW50
IGludGVyZmFjZSwgYXMgd2VsbCBhcyBzbGltIGRvd24gdGhlCisgICAgICAgIFRpbGVkQmFja2lu
Z1N0b3JlIGludGVyZmFjZS4gVGhlIFRpbGUgY2xhc3MgaXMgY2xlYW5lZCB1cCBhIGJpdCwgd2l0
aCBtZXRob2RzCisgICAgICAgIHNoaWZ0ZWQgaW50byBhIG1vcmUgc2Vuc2libGUgb3JkZXIuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIC0tIG5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
QnVmZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZGlkVXBkYXRlVGlsZUJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1cGRhdGVDb250ZW50
QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRp
bGVkQmFja2luZ1N0b3JlUGFpbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpwYWludFRvU3VyZmFjZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9U
aWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGU6OmVuc3VyZVRpbGVJRCk6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlOjppc0RpcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGU6
OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZTo6bWFya0NsZWFuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGU6OnVwZGF0ZUJhY2tCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6VGlsZTo6cGFpbnRUb1N1cmZhY2VDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6VGlsZTo6dGlsZUlEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGU6OmRp
cnR5UmVjdCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFj
a2luZ1N0b3JlOjpkaXJ0eVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0
b3JlOjp1cGRhdGVUaWxlQnVmZmVycyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlQ2xp
ZW50Lmg6CisKKzIwMTctMTEtMjMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgorCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBSZW1vdmUgcmVsYXkgQ29vcmRpbmF0ZWRCdWZm
ZXI6OkNsaWVudCBpbXBsZW1lbnRhdGlvbnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3OTk3MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhMmFlMjRjMmQ2ZTBmNTJj
MWU5ZDdhOGY4NTYzMDUzZTIzZTkxY2UuLjhhNzUzNTNlODRkMzg2YjY3NjgwMmMyZjhmMjllMzVm
M2FlMjhhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzIgQEAKIDIwMTctMTEtMjMgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCisgICAgICAgIFtDb29yZEdyYXBoaWNzXSBT
aW1wbGlmeSBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIncyBjb250ZW50IGJ1ZmZlciB1cGRhdGVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk5NzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBDb21w
b3NpdGluZ0Nvb3JkaW5hdG9yLCBhZGQgdGhlIGdldENvb3JkaW5hdGVkQnVmZmVyKCkgbWV0aG9k
LCByZXBsYWNpbmcKKyAgICAgICAgcGFpbnRUb1N1cmZhY2UoKS4gVGhlIG5ldyBtZXRob2QgdHJh
dmVyc2VzIHRoZSBsaXN0IG9mIFVwZGF0ZUF0bGFzZXMgYW5kCisgICAgICAgIHJldHVybnMgYW55
IENvb3JkaW5hdGVkQnVmZmVyIG9iamVjdCB0aGF0IHdhcyBmcmVlIHRvIHVzZS4gSWYgbm9uZSBl
eGlzdCwKKyAgICAgICAgYSBuZXcgVXBkYXRlQXRsYXMgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCBp
dHMgQ29vcmRpbmF0ZWRCdWZmZXIgaXMgcmV0dXJuZWQuCisKKyAgICAgICAgSW4gIFVwZGF0ZUF0
bGFzLCB0aGUgcGFpbnRPbkF2YWlsYWJsZUJ1ZmZlcigpIG1ldGhvZCBpcyByZXBsYWNlZCB3aXRo
CisgICAgICAgIGdldENvb3JkaW5hdGVkQnVmZmVyKCkuIFRoZSBsYXR0ZXIgYWxsb2NhdGVzIHRo
ZSBuZWNlc3NhcnkgYXJlYSBidXQgdGhlbgorICAgICAgICByZXR1cm5zIGEgcmVmZXJlbmNlIHRv
IHRoZSBDb29yZGluYXRlZEJ1ZmZlciBidWZmZXIsIGFsb25nIHdpdGggdGhlIGF0bGFzIElECisg
ICAgICAgIGFuZCB0aGUgYWxsb2NhdGVkIHJlY3RhbmdsZSBpbmZvcm1hdGlvbiwgYW5kIGRvZXMg
bm90IGludm9rZSBhbnkgcGFpbnRpbmcKKyAgICAgICAgb3BlcmF0aW9uIGxpa2UgcGFpbnRPbkF2
YWlsYWJsZUJ1ZmZlcigpIGRpZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpnZXRDb29yZGluYXRlZEJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnBhaW50VG9TdXJmYWNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b21wb3NpdGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpVcGRh
dGVBdGxhczo6Z2V0Q29vcmRpbmF0ZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVB
dGxhczo6cGFpbnRPbkF2YWlsYWJsZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuaDoKKworMjAxNy0x
MS0yMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKICAgICAgICAgW0Nv
b3JkR3JhcGhpY3NdIFJlbW92ZSByZWxheSBDb29yZGluYXRlZEJ1ZmZlcjo6Q2xpZW50IGltcGxl
bWVudGF0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5OTcwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRCdWZmZXIu
Y3BwCmluZGV4IGQxZDE1NWYxY2MxZGM5NDk3YTcyNmY0NmZhYzE1ZDI5OGZhMmI2MTUuLjY5MWE1
NzkzMDViNTJiN2ZhMjFjMjhlMTZjNDRkYTc4NTUyZmI1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkQnVmZmVyLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5j
bHVkZSAiSW50UmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkQnVmZmVyLmgKaW5kZXggNGM2M2E1NWNiZTdkNzA2MDk0ZDEy
ZTNiM2JmNjQzMjBmYjQ3OWUzZi4uYzM4OTNlYTZiOWE3M2M1M2ZhM2U5OWE2OTNlMDFiZmI1YWM1
MGM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkQnVmZmVyLmgKQEAg
LTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgSW1hZ2U7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKLWNsYXNzIEludFJlY3Q7CiAKIGNs
YXNzIENvb3JkaW5hdGVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3Jk
aW5hdGVkQnVmZmVyPiB7CiBwdWJsaWM6CkBAIC00OSwxMiArNDgsNiBAQCBwdWJsaWM6CiAgICAg
fTsKICAgICB1c2luZyBGbGFncyA9IHVuc2lnbmVkOwogCi0gICAgY2xhc3MgQ2xpZW50IHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkNsaWVudCgpID0gZGVmYXVsdDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIHBhaW50VG9TdXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQmKSA9IDA7
Ci0gICAgfTsKLQogICAgIHN0YXRpYyBSZWY8Q29vcmRpbmF0ZWRCdWZmZXI+IGNyZWF0ZShjb25z
dCBJbnRTaXplJiwgRmxhZ3MpOwogICAgIH5Db29yZGluYXRlZEJ1ZmZlcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmlu
ZGV4IGM2NmMyNmNkZjUyMWMxYzdmMTJiNTI2MzA2MGY2MGFmZWRlYmU2NmEuLmFkMjUwNzRlNGY4
NWM0NmZmZjVlYjU0ODc1YjdkOTZkN2ZmZjY0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC05NCw2ICs5NCwxNSBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZGlkQ2hhbmdlSW1hZ2VCYWNraW5nKCkK
ICAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpkaWRVcGRhdGVUaWxlQnVmZmVycygpCit7CisgICAgaWYgKCFpc1Nob3dpbmdSZXBh
aW50Q291bnRlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xheWVyU3RhdGUucmVwYWlu
dENvdW50ID0gaW5jcmVtZW50UmVwYWludENvdW50KCk7CisgICAgbV9sYXllclN0YXRlLnJlcGFp
bnRDb3VudENoYW5nZWQgPSB0cnVlOworfQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0U2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QoKQogewogICAgIG1fc2hvdWxkVXBkYXRlVmlz
aWJsZVJlY3QgPSB0cnVlOwpAQCAtODQyLDIyICs4NTEsNiBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6Y3JlYXRlQmFja2luZ1N0b3JlKCkKICAgICBtX21haW5CYWNraW5nU3RvcmUt
PnNldFN1cHBvcnRzQWxwaGEoIWNvbnRlbnRzT3BhcXVlKCkpOwogfQogCi12b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm47Ci0gICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4
dCwgcmVjdCk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkaWRVcGRhdGVU
aWxlQnVmZmVycygpCi17Ci0gICAgaWYgKCFpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2xheWVyU3RhdGUucmVwYWludENvdW50ID0gaW5jcmVtZW50
UmVwYWludENvdW50KCk7Ci0gICAgbV9sYXllclN0YXRlLnJlcGFpbnRDb3VudENoYW5nZWQgPSB0
cnVlOwotfQotCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3Rv
cmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKCkKIHsKICAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRq
dXN0bWVudCgpOwpAQCAtODkyLDEzICs4ODUsNiBAQCBJbnRSZWN0IENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6dHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpCiAgICAgcmV0dXJuIGVuY2xvc2luZ0lu
dFJlY3QocmVjdCk7CiB9CiAKLWJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwYWludFRv
U3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCB1aW50MzJfdCYgYXRsYXMsIEludFBvaW50JiBv
ZmZzZXQsIENvb3JkaW5hdGVkQnVmZmVyOjpDbGllbnQmIGNsaWVudCkKLXsKLSAgICBBU1NFUlQo
bV9jb29yZGluYXRvcik7Ci0gICAgQVNTRVJUKG1fY29vcmRpbmF0b3ItPmlzRmx1c2hpbmdMYXll
ckNoYW5nZXMoKSk7Ci0gICAgcmV0dXJuIG1fY29vcmRpbmF0b3ItPnBhaW50VG9TdXJmYWNlKHNp
emUsIGNvbnRlbnRzT3BhcXVlKCkgPyBDb29yZGluYXRlZEJ1ZmZlcjo6Tm9GbGFncyA6IENvb3Jk
aW5hdGVkQnVmZmVyOjpTdXBwb3J0c0FscGhhLCBhdGxhcywgb2Zmc2V0LCBjbGllbnQpOwotfQot
CiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSh1aW50MzJfdCB0aWxl
SUQsIGZsb2F0IHNjYWxlRmFjdG9yKQogewogICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKQEAg
LTk2OCw3ICs5NTQsNjAgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0ZUNv
bnRlbnRCdWZmZXJzKCkKICAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5jcmVhdGVUaWxlc0lm
TmVlZGVkKHRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKSwgSW50UmVjdCgwLCAwLCBzaXplKCkud2lk
dGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CiAgICAgfQogCi0gICAgbV9tYWluQmFja2luZ1N0b3Jl
LT51cGRhdGVUaWxlQnVmZmVycygpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yICYmIG1fY29v
cmRpbmF0b3ItPmlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSk7CisKKyAgICBhdXRvIGRpcnR5VGls
ZXMgPSBtX21haW5CYWNraW5nU3RvcmUtPmRpcnR5VGlsZXMoKTsKKyAgICBpZiAoIWRpcnR5VGls
ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGJvb2wgZGlkVXBkYXRlVGlsZXMgPSBmYWxzZTsKKwor
ICAgICAgICBmb3IgKGF1dG8mIHRpbGVSZWZlcmVuY2UgOiBkaXJ0eVRpbGVzKSB7CisgICAgICAg
ICAgICBhdXRvJiB0aWxlID0gdGlsZVJlZmVyZW5jZS5nZXQoKTsKKyAgICAgICAgICAgIHRpbGUu
ZW5zdXJlVGlsZUlEKCk7CisKKyAgICAgICAgICAgIGF1dG8mIHRpbGVSZWN0ID0gdGlsZS5yZWN0
KCk7CisgICAgICAgICAgICBhdXRvJiBkaXJ0eVJlY3QgPSB0aWxlLmRpcnR5UmVjdCgpOworCisg
ICAgICAgICAgICBTdXJmYWNlVXBkYXRlSW5mbyB1cGRhdGVJbmZvOworICAgICAgICAgICAgSW50
UmVjdCB0YXJnZXRSZWN0OworICAgICAgICAgICAgYXV0byBjb29yZGluYXRlZEJ1ZmZlciA9IG1f
Y29vcmRpbmF0b3ItPmdldENvb3JkaW5hdGVkQnVmZmVyKGRpcnR5UmVjdC5zaXplKCksCisgICAg
ICAgICAgICAgICAgY29udGVudHNPcGFxdWUoKSA/IENvb3JkaW5hdGVkQnVmZmVyOjpOb0ZsYWdz
IDogQ29vcmRpbmF0ZWRCdWZmZXI6OlN1cHBvcnRzQWxwaGEsCisgICAgICAgICAgICAgICAgdXBk
YXRlSW5mby5hdGxhc0lELCB0YXJnZXRSZWN0KTsKKyAgICAgICAgICAgIGlmICghY29vcmRpbmF0
ZWRCdWZmZXIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBjb29yZGluYXRlZEJ1ZmZl
ci0+Y29udGV4dCgpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2F2ZSgpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQuY2xpcCh0YXJnZXRSZWN0KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LnRyYW5zbGF0ZSh0YXJnZXRSZWN0LngoKSwgdGFyZ2V0UmVjdC55KCkpOworCisgICAgICAgICAg
ICAgICAgaWYgKGNvb3JkaW5hdGVkQnVmZmVyLT5zdXBwb3J0c0FscGhhKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7
CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludDo6
emVybygpLCBkaXJ0eVJlY3Quc2l6ZSgpKSwgQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNl
T3Zlcik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY29udGV4dC50cmFu
c2xhdGUoLWRpcnR5UmVjdC54KCksIC1kaXJ0eVJlY3QueSgpKTsKKyAgICAgICAgICAgICAgICBm
bG9hdCBiYWNraW5nU3RvcmVTY2FsZSA9IG1fbWFpbkJhY2tpbmdTdG9yZS0+Y29udGVudHNTY2Fs
ZSgpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKGJhY2tpbmdTdG9y
ZVNjYWxlLCBiYWNraW5nU3RvcmVTY2FsZSkpOworCisgICAgICAgICAgICAgICAgcGFpbnRHcmFw
aGljc0xheWVyQ29udGVudHMoY29udGV4dCwgbV9tYWluQmFja2luZ1N0b3JlLT5tYXBUb0NvbnRl
bnRzKGRpcnR5UmVjdCkpOworCisgICAgICAgICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHVwZGF0ZUluZm8uc3VyZmFjZU9mZnNldCA9IHRh
cmdldFJlY3QubG9jYXRpb24oKTsKKyAgICAgICAgICAgIHVwZGF0ZUluZm8udXBkYXRlUmVjdCA9
IGRpcnR5UmVjdDsKKyAgICAgICAgICAgIHVwZGF0ZUluZm8udXBkYXRlUmVjdC5tb3ZlKC10aWxl
UmVjdC54KCksIC10aWxlUmVjdC55KCkpOworICAgICAgICAgICAgdXBkYXRlVGlsZSh0aWxlLnRp
bGVJRCgpLCB1cGRhdGVJbmZvLCB0aWxlUmVjdCk7CisKKyAgICAgICAgICAgIHRpbGUubWFya0Ns
ZWFuKCk7CisgICAgICAgICAgICBkaWRVcGRhdGVUaWxlcyB8PSB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGRpZFVwZGF0ZVRpbGVzKQorICAgICAgICAgICAgZGlkVXBkYXRlVGlsZUJ1
ZmZlcnMoKTsKKyAgICB9CiAKICAgICAvLyBUaGUgcHJldmlvdXMgYmFja2luZyBzdG9yZSBpcyBr
ZXB0IGFyb3VuZCB0byBhdm9pZCBmbGlja2VyaW5nIGJldHdlZW4KICAgICAvLyByZW1vdmluZyB0
aGUgZXhpc3RpbmcgdGlsZXMgYW5kIHBhaW50aW5nIHRoZSBuZXcgb25lcy4gVGhlIGZpcnN0IHRp
bWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaAppbmRleCA1YjlkNTRlNzgyOWNjYjM4MDliYTRkNjEyODAxODZmZGFlMTViODJhLi4yMjRm
MDUxNTRiYzQ4ZmNmNDljNzUwNzE4NGQ0MTE0YjA3YjdiODE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC00OCw3ICs0OCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVh
dGVJbWFnZUJhY2tpbmdJZk5lZWRlZChJbWFnZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV0
YWNoTGF5ZXIoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKikgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBwYWludFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiwgQ29vcmRpbmF0ZWRCdWZmZXI6OkZsYWdz
LCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmLCBDb29yZGluYXRlZEJ1ZmZlcjo6Q2xpZW50
JikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvb3JkaW5hdGVkQnVmZmVyPiBnZXRDb29yZGlu
YXRlZEJ1ZmZlcihjb25zdCBJbnRTaXplJiwgQ29vcmRpbmF0ZWRCdWZmZXI6OkZsYWdzLCB1aW50
MzJfdCYsIEludFJlY3QmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyU3RhdGUo
Q29vcmRpbmF0ZWRMYXllcklELCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpID0gMDsK
IH07CkBAIC0xMzAsMTMgKzEzMCwxMCBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCB0cmFuc2Zvcm1l
ZFZpc2libGVSZWN0KCk7CiAKICAgICAvLyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudAotICAgIHZv
aWQgdGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRVcGRhdGVUaWxlQnVmZmVycygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgdGlsZWRCYWNraW5nU3RvcmVIYXNQZW5kaW5nVGlsZUNyZWF0aW9uKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgZmxvYXQpIG92ZXJyaWRl
OwogICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRh
dGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlVGlsZSh1
aW50MzJfdCB0aWxlSUQpIG92ZXJyaWRlOwotICAgIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3Qg
SW50U2l6ZSYsIHVpbnQzMl90JiAvKiBhdGxhc0lEICovLCBJbnRQb2ludCYsIENvb3JkaW5hdGVk
QnVmZmVyOjpDbGllbnQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0Q29vcmRpbmF0b3IoQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAKQEAgLTE2NSw2ICsxNjIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlQ2hpbGRyZW4oKTsKICAgICB2b2lkIGRpZENoYW5nZUZp
bHRlcnMoKTsKICAgICB2b2lkIGRpZENoYW5nZUltYWdlQmFja2luZygpOworICAgIHZvaWQgZGlk
VXBkYXRlVGlsZUJ1ZmZlcnMoKTsKIAogICAgIHZvaWQgcmVzZXRMYXllclN0YXRlKCk7CiAgICAg
dm9pZCBzeW5jTGF5ZXJTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuY3BwCmluZGV4IDVjMWYx
NmYxOTU3ZDNhNWZkMGJiZjg5ZjQwOWQzODkxZDJjNmZmMDYuLmE0NDdhNmJjNTZjMTBjNjRiYjkx
MTE0YjJjZTg2M2NjMDMxYzU5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5jcHAKQEAgLTI3LDcg
KzI3LDcgQEAKICNpbmNsdWRlICJUaWxlLmgiCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisKICNpbmNsdWRlICJTdXJmYWNlVXBk
YXRlSW5mby5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiVGls
ZWRCYWNraW5nU3RvcmVDbGllbnQuaCIKQEAgLTM4LDkgKzM4LDkgQEAgc3RhdGljIGNvbnN0IHVp
bnQzMl90IEludmFsaWRUaWxlSUQgPSAwOwogCiBUaWxlOjpUaWxlKFRpbGVkQmFja2luZ1N0b3Jl
JiB0aWxlZEJhY2tpbmdTdG9yZSwgY29uc3QgQ29vcmRpbmF0ZSYgdGlsZUNvb3JkaW5hdGUpCiAg
ICAgOiBtX3RpbGVkQmFja2luZ1N0b3JlKHRpbGVkQmFja2luZ1N0b3JlKQorICAgICwgbV9JRChJ
bnZhbGlkVGlsZUlEKQogICAgICwgbV9jb29yZGluYXRlKHRpbGVDb29yZGluYXRlKQogICAgICwg
bV9yZWN0KHRpbGVkQmFja2luZ1N0b3JlLnRpbGVSZWN0Rm9yQ29vcmRpbmF0ZSh0aWxlQ29vcmRp
bmF0ZSkpCi0gICAgLCBtX0lEKEludmFsaWRUaWxlSUQpCiAgICAgLCBtX2RpcnR5UmVjdChtX3Jl
Y3QpCiB7CiB9CkBAIC01MSwzMyArNTEsOCBAQCBUaWxlOjp+VGlsZSgpCiAgICAgICAgIG1fdGls
ZWRCYWNraW5nU3RvcmUuY2xpZW50KCkucmVtb3ZlVGlsZShtX0lEKTsKIH0KIAotYm9vbCBUaWxl
Ojppc0RpcnR5KCkgY29uc3QKK3ZvaWQgVGlsZTo6ZW5zdXJlVGlsZUlEKCkKIHsKLSAgICByZXR1
cm4gIW1fZGlydHlSZWN0LmlzRW1wdHkoKTsKLX0KLQotdm9pZCBUaWxlOjppbnZhbGlkYXRlKGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICBJbnRSZWN0IHRpbGVEaXJ0eVJlY3QgPSBp
bnRlcnNlY3Rpb24oZGlydHlSZWN0LCBtX3JlY3QpOwotICAgIGlmICh0aWxlRGlydHlSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kaXJ0eVJlY3QudW5pdGUodGlsZURp
cnR5UmVjdCk7Ci19Ci0KLWJvb2wgVGlsZTo6dXBkYXRlQmFja0J1ZmZlcigpCi17Ci0gICAgaWYg
KCFpc0RpcnR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFN1cmZhY2VVcGRhdGVJ
bmZvIHVwZGF0ZUluZm87Ci0KLSAgICBpZiAoIW1fdGlsZWRCYWNraW5nU3RvcmUuY2xpZW50KCku
cGFpbnRUb1N1cmZhY2UobV9kaXJ0eVJlY3Quc2l6ZSgpLCB1cGRhdGVJbmZvLmF0bGFzSUQsIHVw
ZGF0ZUluZm8uc3VyZmFjZU9mZnNldCwgKnRoaXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICB1cGRhdGVJbmZvLnVwZGF0ZVJlY3QgPSBtX2RpcnR5UmVjdDsKLSAgICB1cGRhdGVJbmZv
LnVwZGF0ZVJlY3QubW92ZSgtbV9yZWN0LngoKSwgLW1fcmVjdC55KCkpOwotCiAgICAgc3RhdGlj
IHVpbnQzMl90IGlkID0gMTsKICAgICBpZiAobV9JRCA9PSBJbnZhbGlkVGlsZUlEKSB7CiAgICAg
ICAgIG1fSUQgPSBpZCsrOwpAQCAtODYsMTggKzYxLDExIEBAIGJvb2wgVGlsZTo6dXBkYXRlQmFj
a0J1ZmZlcigpCiAgICAgICAgICAgICBtX0lEID0gaWQrKzsKICAgICAgICAgbV90aWxlZEJhY2tp
bmdTdG9yZS5jbGllbnQoKS5jcmVhdGVUaWxlKG1fSUQsIG1fdGlsZWRCYWNraW5nU3RvcmUuY29u
dGVudHNTY2FsZSgpKTsKICAgICB9Ci0gICAgbV90aWxlZEJhY2tpbmdTdG9yZS5jbGllbnQoKS51
cGRhdGVUaWxlKG1fSUQsIHVwZGF0ZUluZm8sIG1fcmVjdCk7Ci0KLSAgICBtX2RpcnR5UmVjdCA9
IEludFJlY3QoKTsKLQotICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFRpbGU6OnBhaW50VG9T
dXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCitib29sIFRpbGU6OmlzRGly
dHkoKSBjb25zdAogewotICAgIGNvbnRleHQudHJhbnNsYXRlKC1tX2RpcnR5UmVjdC54KCksIC1t
X2RpcnR5UmVjdC55KCkpOwotICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKG1fdGlsZWRCYWNr
aW5nU3RvcmUuY29udGVudHNTY2FsZSgpLCBtX3RpbGVkQmFja2luZ1N0b3JlLmNvbnRlbnRzU2Nh
bGUoKSkpOwotICAgIG1fdGlsZWRCYWNraW5nU3RvcmUuY2xpZW50KCkudGlsZWRCYWNraW5nU3Rv
cmVQYWludChjb250ZXh0LCBtX3RpbGVkQmFja2luZ1N0b3JlLm1hcFRvQ29udGVudHMobV9kaXJ0
eVJlY3QpKTsKKyAgICByZXR1cm4gIW1fZGlydHlSZWN0LmlzRW1wdHkoKTsKIH0KIAogYm9vbCBU
aWxlOjppc1JlYWR5VG9QYWludCgpIGNvbnN0CkBAIC0xMDUsNiArNzMsMTggQEAgYm9vbCBUaWxl
Ojppc1JlYWR5VG9QYWludCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fSUQgIT0gSW52YWxpZFRpbGVJ
RDsKIH0KIAordm9pZCBUaWxlOjppbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkK
K3sKKyAgICBJbnRSZWN0IHRpbGVEaXJ0eVJlY3QgPSBpbnRlcnNlY3Rpb24oZGlydHlSZWN0LCBt
X3JlY3QpOworICAgIGlmICghdGlsZURpcnR5UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIG1fZGly
dHlSZWN0LnVuaXRlKHRpbGVEaXJ0eVJlY3QpOworfQorCit2b2lkIFRpbGU6Om1hcmtDbGVhbigp
Cit7CisgICAgbV9kaXJ0eVJlY3QgPSB7IH07Cit9CisKIHZvaWQgVGlsZTo6cmVzaXplKGNvbnN0
IEludFNpemUmIG5ld1NpemUpCiB7CiAgICAgbV9yZWN0ID0gSW50UmVjdChtX3JlY3QubG9jYXRp
b24oKSwgbmV3U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaAppbmRleCBkNzhmZmVhZWJiYjJlNmNl
MjlmYjkzMTgzZTNiMzYyMzBhZWZkNzIxLi44YmIwM2ZiZDgxOTgzYWE5M2U1ODE0MzRlYzk5ZGY4
YWM2ZDczMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmgKQEAgLTM1LDMzICszNSwzMyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIFRpbGVk
QmFja2luZ1N0b3JlOwogCi1jbGFzcyBUaWxlIDogcHVibGljIENvb3JkaW5hdGVkQnVmZmVyOjpD
bGllbnQgeworY2xhc3MgVGlsZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBJbnRQb2ludCBDb29y
ZGluYXRlOwogCiAgICAgVGlsZShUaWxlZEJhY2tpbmdTdG9yZSYsIGNvbnN0IENvb3JkaW5hdGUm
KTsKICAgICB+VGlsZSgpOwogCi0gICAgYm9vbCBpc0RpcnR5KCkgY29uc3Q7Ci0gICAgdm9pZCBp
bnZhbGlkYXRlKGNvbnN0IEludFJlY3QmKTsKLSAgICBib29sIHVwZGF0ZUJhY2tCdWZmZXIoKTsK
LSAgICBib29sIGlzUmVhZHlUb1BhaW50KCkgY29uc3Q7CisgICAgdWludDMyX3QgdGlsZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9JRDsgfQorICAgIHZvaWQgZW5zdXJlVGlsZUlEKCk7CiAKICAgICBj
b25zdCBDb29yZGluYXRlJiBjb29yZGluYXRlKCkgY29uc3QgeyByZXR1cm4gbV9jb29yZGluYXRl
OyB9CiAgICAgY29uc3QgSW50UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQot
ICAgIHZvaWQgcmVzaXplKGNvbnN0IEludFNpemUmKTsKKyAgICBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QoKSBjb25zdCB7IHJldHVybiBtX2RpcnR5UmVjdDsgfQorICAgIGJvb2wgaXNEaXJ0eSgp
IGNvbnN0OworICAgIGJvb2wgaXNSZWFkeVRvUGFpbnQoKSBjb25zdDsKIAotICAgIHZvaWQgcGFp
bnRUb1N1cmZhY2VDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYpIG92ZXJyaWRlOworICAgIHZvaWQg
aW52YWxpZGF0ZShjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBtYXJrQ2xlYW4oKTsKKyAgICB2
b2lkIHJlc2l6ZShjb25zdCBJbnRTaXplJik7CiAKIHByaXZhdGU6CiAgICAgVGlsZWRCYWNraW5n
U3RvcmUmIG1fdGlsZWRCYWNraW5nU3RvcmU7CisgICAgdWludDMyX3QgbV9JRDsKICAgICBDb29y
ZGluYXRlIG1fY29vcmRpbmF0ZTsKICAgICBJbnRSZWN0IG1fcmVjdDsKLQotICAgIHVpbnQzMl90
IG1fSUQ7CiAgICAgSW50UmVjdCBtX2RpcnR5UmVjdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IGFlMjY2YjAyMWQ3ZmY1YWY0MTA4
ZWY1MDZjODYyNzFhYThiMDUxZDkuLmRlZTQ5YzhiMmZmM2QxMGEzOGExOTRlNmM0ZDVjMzI2ZDJi
NGI3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmNw
cApAQCAtODgsMjEgKzg4LDE1IEBAIHZvaWQgVGlsZWRCYWNraW5nU3RvcmU6OmludmFsaWRhdGUo
Y29uc3QgSW50UmVjdCYgY29udGVudHNEaXJ0eVJlY3QpCiAgICAgfQogfQogCi12b2lkIFRpbGVk
QmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlQnVmZmVycygpCitWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxUaWxlPj4gVGlsZWRCYWNraW5nU3RvcmU6OmRpcnR5VGlsZXMoKQogewotICAgIC8v
IEZJWE1FOiBJbiBzaW5nbGUgdGhyZWFkZWQgY2FzZSwgdGlsZSBiYWNrIGJ1ZmZlcnMgY291bGQg
YmUgdXBkYXRlZCBhc3luY2hyb25vdXNseSAKLSAgICAvLyBvbmUgYnkgb25lIGFuZCB0aGVuIHN3
YXBwZWQgdG8gZnJvbnQgaW4gb25lIGdvLiBUaGlzIHdvdWxkIG1pbmltaXplIHRoZSB0aW1lIHNw
ZW50Ci0gICAgLy8gYmxvY2tpbmcgb24gdGlsZSB1cGRhdGVzLgotICAgIGJvb2wgdXBkYXRlZCA9
IGZhbHNlOworICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFRpbGU+PiB0aWxlczsK
ICAgICBmb3IgKGF1dG8mIHRpbGUgOiBtX3RpbGVzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICgh
dGlsZS0+aXNEaXJ0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgdXBkYXRl
ZCB8PSB0aWxlLT51cGRhdGVCYWNrQnVmZmVyKCk7CisgICAgICAgIGlmICh0aWxlLT5pc0RpcnR5
KCkpCisgICAgICAgICAgICB0aWxlcy5hcHBlbmQoKnRpbGUpOwogICAgIH0KIAotICAgIGlmICh1
cGRhdGVkKQotICAgICAgICBtX2NsaWVudC5kaWRVcGRhdGVUaWxlQnVmZmVycygpOworICAgIHJl
dHVybiB0aWxlczsKIH0KIAogZG91YmxlIFRpbGVkQmFja2luZ1N0b3JlOjp0aWxlRGlzdGFuY2Uo
Y29uc3QgSW50UmVjdCYgdmlld3BvcnQsIGNvbnN0IFRpbGU6OkNvb3JkaW5hdGUmIHRpbGVDb29y
ZGluYXRlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUu
aAppbmRleCAyYjQxZWY3YmUyMWJmNjk3MWNiOGE0MzVkNDk5NTFkYjQ0MmY5M2U2Li5iNGRkMmE1
Y2MwNDk5ZTJkODc4ZDhlMzM1NmM0N2VkZjBmNDJmZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAg
ICBmbG9hdCBjb250ZW50c1NjYWxlKCkgeyByZXR1cm4gbV9jb250ZW50c1NjYWxlOyB9CiAKLSAg
ICB2b2lkIHVwZGF0ZVRpbGVCdWZmZXJzKCk7CisgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8VGlsZT4+IGRpcnR5VGlsZXMoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZShjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxl
ZEJhY2tpbmdTdG9yZUNsaWVudC5oCmluZGV4IDk3ZDgzN2NlM2VjOTg2ZDkwOGI0N2Y2MTRhYWY0
MTM0NmI3YWM5NGEuLjI1ZjJhOTAxY2QwOGUxYjRhNTZkYWE5NGExZWY1ZjMyNjFiZGIwODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5o
CkBAIC0yMCw4ICsyMCw2IEBACiAjaWZuZGVmIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50X2gKICNk
ZWZpbmUgVGlsZWRCYWNraW5nU3RvcmVDbGllbnRfaAogCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRC
dWZmZXIuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQpAQCAtMzIsMTQgKzMwLDExIEBAIGNsYXNzIFN1cmZhY2VVcGRhdGVJbmZvOwogY2xh
c3MgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflRpbGVk
QmFja2luZ1N0b3JlQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCB0aWxlZEJh
Y2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZVRpbGVCdWZmZXJzKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB0aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxlQ3JlYXRpb24oKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGZsb2F0KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNl
VXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZVRpbGUodWludDMyX3QgdGlsZUlEKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHBhaW50VG9TdXJm
YWNlKGNvbnN0IEludFNpemUmLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmLCBDb29yZGlu
YXRlZEJ1ZmZlcjo6Q2xpZW50JikgPSAwOwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0
aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCA4N2I2MzAw
MWVkMzYyMDE1NDI3Y2FhNzFiMDhhYzg4MjQ1MWFhYWEwLi5kMDQ4MjczMTc0YmUzOWRhOTc2YjVk
ZjUzYzhjYWRlZmRkODRlNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKQEAgLTM4NSwyMSArMzg1LDE5IEBAIHZvaWQgQ29t
cG9zaXRpbmdDb29yZGluYXRvcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKICAgICBtX3VwZGF0ZUF0
bGFzZXMuY2xlYXIoKTsKIH0KIAotYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpwYWludFRv
U3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZEJ1ZmZlcjo6RmxhZ3MgZmxh
Z3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYgb2Zmc2V0LCBDb29yZGluYXRlZEJ1ZmZl
cjo6Q2xpZW50JiBjbGllbnQpCitSZWZQdHI8Q29vcmRpbmF0ZWRCdWZmZXI+IENvbXBvc2l0aW5n
Q29vcmRpbmF0b3I6OmdldENvb3JkaW5hdGVkQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIENv
b3JkaW5hdGVkQnVmZmVyOjpGbGFncyBmbGFncywgdWludDMyX3QmIGF0bGFzSUQsIEludFJlY3Qm
IGFsbG9jYXRlZFJlY3QpCiB7Ci0gICAgZm9yIChhdXRvJiB1cGRhdGVBdGxhcyA6IG1fdXBkYXRl
QXRsYXNlcykgewotICAgICAgICBVcGRhdGVBdGxhcyogYXRsYXMgPSB1cGRhdGVBdGxhcy5nZXQo
KTsKKyAgICBmb3IgKGF1dG8mIGF0bGFzIDogbV91cGRhdGVBdGxhc2VzKSB7CiAgICAgICAgIGlm
IChhdGxhcy0+c3VwcG9ydHNBbHBoYSgpID09IChmbGFncyAmIENvb3JkaW5hdGVkQnVmZmVyOjpT
dXBwb3J0c0FscGhhKSkgewotICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGJlIGZhbHNlIGlmIHRo
ZXJlIGlzIG5vIGF2YWlsYWJsZSBidWZmZXIgc3BhY2UuCi0gICAgICAgICAgICBpZiAoYXRsYXMt
PnBhaW50T25BdmFpbGFibGVCdWZmZXIoc2l6ZSwgYXRsYXNJRCwgb2Zmc2V0LCBjbGllbnQpKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgaWYgKGF1dG8gYnVmZmVy
ID0gYXRsYXMtPmdldENvb3JkaW5hdGVkQnVmZmVyKHNpemUsIGF0bGFzSUQsIGFsbG9jYXRlZFJl
Y3QpKQorICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBzdGF0aWMgY29uc3QgaW50IFNjcmF0Y2hCdWZmZXJEaW1lbnNpb24gPSAxMDI0OyAvLyBT
aG91bGQgYmUgYSBwb3dlciBvZiB0d28uCisgICAgc3RhdGljIGNvbnN0IGludCBTY3JhdGNoQnVm
ZmVyRGltZW5zaW9uID0gMTAyNDsKICAgICBtX3VwZGF0ZUF0bGFzZXMuYXBwZW5kKHN0ZDo6bWFr
ZV91bmlxdWU8VXBkYXRlQXRsYXM+KCp0aGlzLCBTY3JhdGNoQnVmZmVyRGltZW5zaW9uLCBmbGFn
cykpOwogICAgIHNjaGVkdWxlUmVsZWFzZUluYWN0aXZlQXRsYXNlcygpOwotICAgIHJldHVybiBt
X3VwZGF0ZUF0bGFzZXMubGFzdCgpLT5wYWludE9uQXZhaWxhYmxlQnVmZmVyKHNpemUsIGF0bGFz
SUQsIG9mZnNldCwgY2xpZW50KTsKKyAgICByZXR1cm4gbV91cGRhdGVBdGxhc2VzLmxhc3QoKS0+
Z2V0Q29vcmRpbmF0ZWRCdWZmZXIoc2l6ZSwgYXRsYXNJRCwgYWxsb2NhdGVkUmVjdCk7CiB9CiAK
IGNvbnN0IFNlY29uZHMgcmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVySW50ZXJ2YWwgeyA1MDBf
bXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5h
dG9yLmgKaW5kZXggMjQ1MDY0YmQzMTNiNjM3YTAyMWZhMjllMWU1MzBmNTMxODU5YWM0Yi4uZjBl
YzI2YzZmYThhYjUwNDZjZWQ3MGYzMjkyZDQ5OGZiMWU5ZWQwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlICJVcGRhdGVBdGxh
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29vcmRpbmF0ZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29yZGluYXRlZElt
YWdlQmFja2luZy5oPgpAQCAtMTE2LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWY8
V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVl
ZGVkKFdlYkNvcmU6OkltYWdlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXRhY2hMYXllcihXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKLSAgICBib29sIHBhaW50
VG9TdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZEJ1
ZmZlcjo6RmxhZ3MsIHVpbnQzMl90JiAvKiBhdGxhc0lEICovLCBXZWJDb3JlOjpJbnRQb2ludCYs
IFdlYkNvcmU6OkNvb3JkaW5hdGVkQnVmZmVyOjpDbGllbnQmKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRCdWZmZXI+IGdldENvb3JkaW5hdGVkQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZEJ1ZmZlcjo6RmxhZ3MsIHVp
bnQzMl90JiwgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3luY0xheWVy
U3RhdGUoV2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXJTdGF0ZSYpIG92ZXJyaWRlOwogCiAgICAgLy8gVXBkYXRlQXRsYXM6OkNsaWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmNwcAppbmRleCA1ZDBlYmM1YjRj
YTFhMDA2ZWJiNTY4MjU1MWZhOGVhYzQ1MTk2NDZkLi4xNzkzYzI5OGFjODk0MjdhNDA0MTQzNDE4
Mzc4ZTJhMzVhODcwZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmNw
cApAQCAtNjAsMzggKzYwLDE3IEBAIHZvaWQgVXBkYXRlQXRsYXM6OmRpZFN3YXBCdWZmZXJzKCkK
ICAgICBtX2FyZWFBbGxvY2F0b3IgPSBudWxscHRyOwogfQogCi1ib29sIFVwZGF0ZUF0bGFzOjpw
YWludE9uQXZhaWxhYmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIHVpbnQzMl90JiBhdGxh
c0lELCBJbnRQb2ludCYgb2Zmc2V0LCBDb29yZGluYXRlZEJ1ZmZlcjo6Q2xpZW50JiBjbGllbnQp
CitSZWZQdHI8Q29vcmRpbmF0ZWRCdWZmZXI+IFVwZGF0ZUF0bGFzOjpnZXRDb29yZGluYXRlZEJ1
ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UmVjdCYgYWxs
b2NhdGVkUmVjdCkKIHsKICAgICBtX2luYWN0aXZpdHlJblNlY29uZHMgPSAwOwogICAgIGJ1aWxk
TGF5b3V0SWZOZWVkZWQoKTsKLSAgICBJbnRSZWN0IHJlY3QgPSBtX2FyZWFBbGxvY2F0b3ItPmFs
bG9jYXRlKHNpemUpOworICAgIGFsbG9jYXRlZFJlY3QgPSBtX2FyZWFBbGxvY2F0b3ItPmFsbG9j
YXRlKHNpemUpOwogCi0gICAgLy8gTm8gYXZhaWxhYmxlIGJ1ZmZlciB3YXMgZm91bmQuCi0gICAg
aWYgKHJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGFsbG9j
YXRlZFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF0bGFz
SUQgPSBtX0lEOwotCi0gICAgLy8gRklYTUU6IFVzZSB0cmktc3RhdGUgYnVmZmVycywgdG8gYWxs
b3cgZmFzdGVyIHVwZGF0ZXMuCi0gICAgb2Zmc2V0ID0gcmVjdC5sb2NhdGlvbigpOwotCi0gICAg
ewotICAgICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBtX2J1ZmZlci0+Y29udGV4dCgp
OwotICAgICAgICBjb250ZXh0LnNhdmUoKTsKLSAgICAgICAgY29udGV4dC5jbGlwKHJlY3QpOwot
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkpOwotCi0gICAgICAg
IGlmIChzdXBwb3J0c0FscGhhKCkpIHsKLSAgICAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwotICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChJ
bnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHNpemUpLCBDb2xvcjo6dHJhbnNwYXJlbnQpOwotICAg
ICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zl
cik7Ci0gICAgICAgIH0KLQotICAgICAgICBjbGllbnQucGFpbnRUb1N1cmZhY2VDb250ZXh0KGNv
bnRleHQpOwotICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmgKaW5kZXggYjJlNGE2
MTYxYTU5OGU3MjI4YzczODc4ODViNjU2YzIyNzc1MmY1ZS4uM2NjZTAxMDMxNTk2NDQwOTVhMzdl
ZTk2ZTk1ZTczNzE5OGE4ZTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMu
aApAQCAtMjMsMTQgKzIzLDEzIEBACiAKICNpbmNsdWRlICJBcmVhQWxsb2NhdG9yLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Db29yZGluYXRlZEJ1ZmZlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW50
U2l6ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgR3JhcGhpY3NDb250ZXh0Owot
Y2xhc3MgSW50UG9pbnQ7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgSW50U2l6ZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC00OSw4ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci0+c2l6ZSgpOyB9
CiAKLSAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBidWZmZXIu
Ci0gICAgYm9vbCBwYWludE9uQXZhaWxhYmxlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCB1aW50MzJfdCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmIG9mZnNldCwgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRCdWZmZXI6OkNsaWVudCYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb29yZGlu
YXRlZEJ1ZmZlcj4gZ2V0Q29vcmRpbmF0ZWRCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IHVpbnQzMl90JiwgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnMo
KTsKICAgICBib29sIHN1cHBvcnRzQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci0+c3Vw
cG9ydHNBbHBoYSgpOyB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>