<?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>233849</bug_id>
          
          <creation_ts>2021-12-03 19:09:44 -0800</creation_ts>
          <short_desc>[GPU Process] (REGRESSION r285597): Set the filterRegion of the CSSFilter after it is created</short_desc>
          <delta_ts>2021-12-06 10:21:34 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=233843</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=231253</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=232457</see_also>
          <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>
          
          <blocked>231253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820402</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-12-03 19:09:44 -0800</bug_when>
    <thetext>The filterRegion() of the CSSFilter is the union of the targetBoundingBox and its outsets. The outsets of the CSSFilter is the union of the outsets of all its functions including the referenced SVGFilter. Notice that if the outsets of a FilterFunction are relative they are calculated relative on the targetBoundingBox. So we have to create the CSSFilter first giving the create() function the targetBoundingBox. Then we calculate the outsets of the CSSFilter and finally we calculate and set its filterRegion().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820407</commentid>
    <comment_count>1</comment_count>
      <attachid>445938</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-12-03 19:31:29 -0800</bug_when>
    <thetext>Created attachment 445938
Combined Patch (this bug + bug 233843)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820413</commentid>
    <comment_count>2</comment_count>
      <attachid>445944</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-12-03 19:57:19 -0800</bug_when>
    <thetext>Created attachment 445944
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820435</commentid>
    <comment_count>3</comment_count>
      <attachid>445961</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-12-03 22:51:37 -0800</bug_when>
    <thetext>Created attachment 445961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820467</commentid>
    <comment_count>4</comment_count>
      <attachid>445961</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-04 16:54:13 -0800</bug_when>
    <thetext>Comment on attachment 445961
Patch

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

&gt; Source/WebCore/ChangeLog:27
&gt; +           b) Recreate the sourceImage if needed.
&gt; +           c) setup the context for drawing the target renderer.

&quot;e)&quot; and &quot;f)&quot;

&gt; Source/WebCore/rendering/RenderLayerFilters.cpp:174
&gt; +        filterRegion += filter.outsets();
&gt; +        filterRegion = intersection(filterBoxRect, filterRegion);

What about:

filterRegion += filter.outsets();
filterRegion.intersect(filterBoxRect);

&gt; Source/WebCore/rendering/RenderLayerFilters.cpp:185
&gt; +    if (m_sourceImageRect != filterRegion) {
&gt; +        m_sourceImageRect = filterRegion;
&gt; +        hasUpdatedBackingStore = true;
&gt;      }

After this point, m_sourceImageRect and filterRegion are the same, so I think we should consistently use one or the other in the remainder of the function.

&gt; Source/WebCore/rendering/RenderLayerFilters.cpp:202
&gt; +    filter.setFilterRegion(m_sourceImageRect);

So here I think we should use filterRegion.

&gt; Source/WebCore/rendering/RenderLayerFilters.cpp:-189
&gt; -    if (!sourceGraphicsContext || filter.filterRegion().isEmpty() || ImageBuffer::sizeNeedsClamping(filter.filterRegion().size()))

In this old code, how would it be that ImageBuffer::sizeNeedsClamping would return true, since earlier we call clampFilterRegionIfNeeded?

&gt; Source/WebCore/svg/graphics/filters/SVGFilter.h:50
&gt; +    SVGFilter(RenderingMode, const FloatSize&amp; filterScale, ClipOperation, const FloatRect&amp; filterRegion, const FloatRect&amp; targetBoundingBox,  SVGUnitTypes::SVGUnitType primitiveUnits);

Nit: two spaces after &quot;targetBoundingBox,&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820559</commentid>
    <comment_count>5</comment_count>
      <attachid>446015</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-12-06 02:17:29 -0800</bug_when>
    <thetext>Created attachment 446015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820651</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-06 10:20:52 -0800</bug_when>
    <thetext>Committed r286546 (244878@main): &lt;https://commits.webkit.org/244878@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446015.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820653</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-06 10:21:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/86110979&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445938</attachid>
            <date>2021-12-03 19:31:29 -0800</date>
            <delta_ts>2021-12-03 22:51:31 -0800</delta_ts>
            <desc>Combined Patch (this bug + bug 233843)</desc>
            <filename>bug-233849-20211203193129.patch</filename>
            <type>text/plain</type>
            <size>48092</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFkODU3N2Q2NGQ1YmMz
ZGIxZTRhZDk2NzA4N2M2NDc0YTAyNTRiZi4uOTlkOTEwYWZiNmM1MDQzZDAxM2IzN2VhNDI1NjU2
MDdhYzJiNjU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAyMS0xMi0wMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IChSRUdSRVNTSU9OIHIyODU1OTcpOiBTZXQgdGhlIGZpbHRlclJlZ2lvbiBvZiB0aGUgQ1NTRmls
dGVyIGFmdGVyIGl0IGlzIGNyZWF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzg0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2g6CisKKyAgICAgICAgMS4gVGhlIHNvdXJjZUlt
YWdlUmVjdCBpcyBwYXNzZWQgdG8gZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoKS4gVGhlIHBsYW4K
KyAgICAgICAgICAgaXMgdG8gcmVtb3ZlIEZpbHRlcjo6bV9zb3VyY2VJbWFnZSBhbmQgbV9zb3Vy
Y2VJbWFnZVJlY3QgYW5kIGhhdmUgdGhlbQorICAgICAgICAgICBhcyBpbnB1dHMgdG8gRmlsdGVy
OjphcHBseSgpLgorCisgICAgICAgIDIuIHNvdXJjZUltYWdlUmVjdCBpcyBubyBsb25nZXIgcGFz
c2VkIGFzIGFuIGFyZ3VtZW50IHRvIFNWR0ZpbHRlci4gSXQKKyAgICAgICAgICAgc2hvdWxkIGJl
IHBhc3NlZCBvbmx5IHdoZW4gU1ZHRmlsdGVyOjphcHBseSgpIGlzIGNhbGxlZC4KKworICAgICAg
ICAzLiBDU1NGaWx0ZXI6OmNyZWF0ZSgpIHdpbGwgY3JlYXRlIGFuZCBidWlsZCB0aGUgRmlsdGVy
RnVuY3Rpb25zIGZyb20gdGhlCisgICAgICAgICAgIEZpbHRlck9wZXJhdGlvbnMuIFNvIHdlIGhh
dmUgdG8gcGFzcyB0aGUgdGFyZ2V0Qm91bmRpbmdCb3ggc2luY2UgdGhlCisgICAgICAgICAgIEZp
bHRlckVmZmVjdHMgd2lsbCBuZWVkIGl0IHdoZW4gY2FsY3VsYXRpbmcgdGhlIG91dHNldHMuCisK
KyAgICAgICAgNC4gVGhlIHN0ZXBzIGluIFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJF
ZmZlY3QoKSBhcmU6CisgICAgICAgICAgIGEpIFJlY3JlYXRlIHRoZSBDU1NGaWx0ZXIgaWYgdGhl
IHRhcmdldEJvdW5kaW5nQm94IGNoYW5nZXMuCisgICAgICAgICAgIGIpIENhbGN1bGF0ZSB0aGUg
ZmlsdGVyUmVnaW9uID0gdGFyZ2V0Qm91bmRpbmdCb3ggKyBvdXRzZXRzCisgICAgICAgICAgIGMp
IENsYW1wIHRoZSBmaWx0ZXJSZWdpb24gaWYgbmVlZGVkLiBUaGlzIHdpbGwgY2hhbmdlIHRoZSBm
aWx0ZXJTY2FsZS4KKyAgICAgICAgICAgZCkgU2V0IHNvdXJjZUltYWdlUmVjdCA9IGZpbHRlclJl
Z2lvbi4KKyAgICAgICAgICAgYikgUmVjcmVhdGUgdGhlIHNvdXJjZUltYWdlIGlmIG5lZWRlZC4K
KyAgICAgICAgICAgYykgc2V0dXAgdGhlIGNvbnRleHQgZm9yIGRyYXdpbmcgdGhlIHRhcmdldCBy
ZW5kZXJlci4KKworICAgICAgICA1LiBNYW5hZ2luZyB0aGUgdGFyZ2V0Qm91bmRpbmdCb3ggYW5k
IHRoZSBmaWx0ZXJSZWdpb24gaXMgbW92ZWQgZnJvbSAKKyAgICAgICAgICAgQ1NTRmlsdGVyIHRv
IFJlbmRlckxheWVyRmlsdGVycy4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6
RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6YXBwbHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXI6OkZpbHRlcik6CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0
ZXI6OkNTU0ZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTVkdGaWx0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
cjo6c2V0RmlsdGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om1faGFzRmlsdGVyVGhhdFNo
b3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRmlsdGVyOjp1cGRhdGVCYWNraW5nU3RvcmVSZWN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6bGFzdEVmZmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NGaWx0ZXI6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJl
Y3RGb3JEaXJ0eVJlY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpz
ZXRTb3VyY2VJbWFnZVJlY3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YnVpbGRGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjphcHBseUZpbHRlckVm
ZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFj
a2luZ1N0b3JlKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0
ZXJzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFw
cGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjpT
VkdGaWx0ZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oOgor
CisyMDIxLTEyLTAzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAg
ICAgIFtHUFUgUHJvY2Vzc10gKFJFR1JFU1NJT04gcjI4NTU5Nyk6IEZpeCBTVkdGaWx0ZXIgY2xh
bXBpbmcgY2FsY3VsYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzg0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEluIHRoaXMgcGF0Y2g6CisKKyAgICAgICAgMS4gbGFzdEVmZmVjdCgpIGlzIG1h
ZGUgdmlydHVhbCBmdW5jdGlvbiBvZiBGaWx0ZXIgYW5kIGl0J3MgYWxyZWFkeSAKKyAgICAgICAg
ICAgaW1wbGVtZW50ZWQgYXMgbm9uLXZpcnR1YWwgZnVuY3Rpb24gaW4gYm90aCBDU1NGaWx0ZXIg
YW5kIFNWR0ZpbHRlci4KKworICAgICAgICAyLiBUaGUgY2xhbXBpbmcgY2FsY3VsYXRpb25zIGZv
ciBTVkdGaWx0ZXIgYW5kIENTU0ZpbHRlciBhcmUgbWVyZ2VkIGluCisgICAgICAgICAgIG9uZSBm
dW5jdGlvbiBjYWxsZWQgRmlsdGVyOjpjbGFtcEZpbHRlclJlZ2lvbklmTmVlZGVkKCkuIFRoaXMg
bWVyZ2UKKyAgICAgICAgICAgbWFrZXMgdGhlIG5ldyBmdW5jdGlvbiBpcyB0aGUgb25seSBjYWxs
ZXIgdG8gRmlsdGVyRWZmZWN0OjptYXhFZmZlY3RSZWN0KCkuCisKKyAgICAgICAgMy4gUmVtb3Zl
IEZpbHRlckVmZmVjdDo6bWF4RWZmZWN0UmVjdCgpIC4gSXQgY2FuIGJlIGNhbGN1bGF0ZWQgYnkg
Y2xpcHBpbmcKKyAgICAgICAgICAgdGhlIEZpbHRlckVmZmVjdDo6ZmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKCkgdG8gZmlsdGVyUmVnaW9uKCkgYW5kIHRoZW4KKyAgICAgICAgICAgc2NhbGluZyB0
aGUgcmVzdWx0IGJ5IGZpbHRlclNjYWxlKCkuCisKKyAgICAgICAgNC4gSW4gUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoKSB3ZSBuZWVkIHRvIHBhc3MgdGhlIG5vbi0KKyAg
ICAgICAgICAgc2NhbGVkIGRyYXdpbmdSZWdpb24gdG8gSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKCkgYmVjYXVzZSB0aGlzCisgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0cyBieSBzY2Fs
aW5nIHRoZSBhcmd1bWVudCAnc2l6ZScgYnkgdGhlIGFyZ3VtZW50ICdzY2FsZScuCisgICAgICAg
ICAgIFNvIHdlIHdlcmUgZG91YmxpbmcgdGhlIHNjYWxpbmcgYnkgcGFzc2luZyAnYWJzb2x1dGVE
cmF3aW5nUmVnaW9uJworCisgICAgICAgIDUuIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKCkgbmVlZHMgdG8gdXNlIEltYWdlQnVmZmVyOjoKKyAgICAgICAgICAgc2l6ZU5l
ZWRzQ2xhbXBpbmcoKSBpbnN0ZWFkIG9mIHVzaW5nIEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZSgp
LiBUaGUKKyAgICAgICAgICAgZm9ybWVyIGZ1bmN0aW9uIGNsYW1wcyB0aGUgc2l6ZSB0byB0aGUg
TWF4Q2xhbXBlZEFyZWEuIEJ1dCB0aGUgbGF0ZXIKKyAgICAgICAgICAgZnVuY3Rpb24gc2hyaW5r
cyB0aGUgc2l6ZSB0byB7IE1heENsYW1wZWRMZW5ndGgsIE1heENsYW1wZWRMZW5ndGggfS4KKyAg
ICAgICAgICAgV2hlbiBjYWxsaW5nIGNyZWF0ZUltYWdlQnVmZmVyKCkgZnJvbSBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlcjo6CisgICAgICAgICAgIGFwcGx5UmVzb3VyY2UoKSB3ZSBkbyBub3QgZXhw
ZWN0IGFueSBmdXJ0aGVyIGNsYW1waW5nLiBCdXQgaWYgd2UgcGFzcworICAgICAgICAgICBhIHNp
emUgd2l0aCBhIHNpZGUgIGdyZWF0ZXIgdGhhbiBNYXhDbGFtcGVkTGVuZ3RoIHRvIGNsYW1wZWRT
aXplKCksCisgICAgICAgICAgIGl0ICB3aWxsIGJlIGNsYW1wZWQgZXZlbiBpZiB0aGUgYXJlYSBp
cyBsZXNzIHRoYW4gTWF4Q2xhbXBlZEFyZWEuIEFuZAorICAgICAgICAgICBmb3IgZmlsdGVycyB3
ZSBjbGFtcCB0byB0aGUgYXJlYS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6Y2xhbXBGaWx0ZXJSZWdp
b25JZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclByaW1pdGl2
ZVN1YnJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFwcGx5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjptYXhFZmZlY3RSZWN0IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0TWF4RWZmZWN0UmVjdCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGaWx0ZXI6Omxhc3RFZmZlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpsYXN0RWZmZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmls
dGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBs
eVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oOgorCiAy
MDIxLTEyLTAyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAg
IFtHUFUgUHJvY2Vzc10gTW92ZSB0aGUgRmlsdGVyRWZmZWN0IGJvdW5kYXJpZXMgdG8gYSBuZXcg
Y2xhc3MgRmlsdGVyRWZmZWN0R2VvbWV0cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJ
bWFnZVZhbHVlLmNwcAppbmRleCAyNjhmNDhjMzE0YzczYzVjZDI4ZDVjNjVjNWE2M2FmNDI3ODA1
NGEwLi42NTMxMjI1MjJhYmYzNTJmZWE5MzBjNTU4OGI1ZmVkMWZlY2ZhMzc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC0xMjQsMTIgKzEyNCwxMiBA
QCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIGF1dG8gc291cmNlSW1hZ2VSZWN0ID0gRmxv
YXRSZWN0IHsgeyB9LCBzaXplIH07CiAgICAgc291cmNlSW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlLCBzb3VyY2VJbWFnZVJlY3QpOwogCi0gICAgYXV0byBjc3NGaWx0ZXIgPSBDU1NG
aWx0ZXI6OmNyZWF0ZShtX2ZpbHRlck9wZXJhdGlvbnMsIHJlbmRlcmluZ01vZGUpOwotCi0gICAg
Y3NzRmlsdGVyLT5zZXRTb3VyY2VJbWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KTsKLSAgICBpZiAo
IWNzc0ZpbHRlci0+YnVpbGRGaWx0ZXJGdW5jdGlvbnMocmVuZGVyZXIsIG1fZmlsdGVyT3BlcmF0
aW9ucykpCisgICAgYXV0byBjc3NGaWx0ZXIgPSBDU1NGaWx0ZXI6OmNyZWF0ZShyZW5kZXJlciwg
bV9maWx0ZXJPcGVyYXRpb25zLCByZW5kZXJpbmdNb2RlLCBGbG9hdFNpemUgeyAxLCAxIH0sIEZp
bHRlcjo6Q2xpcE9wZXJhdGlvbjo6SW50ZXJzZWN0LCBzb3VyY2VJbWFnZVJlY3QpOworICAgIGlm
ICghY3NzRmlsdGVyKQogICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAorICAg
IGNzc0ZpbHRlci0+c2V0RmlsdGVyUmVnaW9uKHNvdXJjZUltYWdlUmVjdCk7CisKICAgICBpZiAo
YXV0byBpbWFnZSA9IHNvdXJjZUltYWdlLT5maWx0ZXJlZEltYWdlKCpjc3NGaWx0ZXIpKQogICAg
ICAgICByZXR1cm4gaW1hZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRleCA3NTBkYjRlZTg5MTY2MGZhNGJl
Y2ViYzQ0NDdjNjg1Y2U1YzQ4NDgxLi4yZmQ0MjI5YjcxMjdmMDQ5MGQ0MmQ1NDFlMTQ0YWQ2YTlk
OGUxZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHJvdGVjdGVkOgogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgY29uc3RfY2FzdDxDb25jcmV0ZUlt
YWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKLSAgICAgICAgYXV0byBy
ZXN1bHQgPSBmaWx0ZXIuYXBwbHkodGhpcyk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gZmlsdGVy
LmFwcGx5KHRoaXMsIHsgeyB9LCBsb2dpY2FsU2l6ZSgpIH0pOwogICAgICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBlMzdiNzE1NTcx
NDA2MGJmZWI3YWRiMDE4OWZhYmVkZjc5ZjE2ODE0Li4yY2JiY2M1NjYzZmU1ODgwN2QxMDM2MDZm
NWI1MWEwZmY4ZTU2MmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTYzMSw5ICs2MzEsOSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
aW1hZ2UsIGNvbnN0CiAgICAgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFn
ZSksICp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJ
bWFnZSwgRmlsdGVyJiBmaWx0ZXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZpbHRlcmVk
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZUltYWdlUmVjdCwgRmlsdGVyJiBmaWx0ZXIpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBmaWx0
ZXIuYXBwbHkoc291cmNlSW1hZ2UpOworICAgIGF1dG8gcmVzdWx0ID0gZmlsdGVyLmFwcGx5KHNv
dXJjZUltYWdlLCBzb3VyY2VJbWFnZVJlY3QpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICBy
ZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDNkOGQzYTcxMjUzZTM2MzBmOGQ5NWNkZGQ0MDk2YmI2NDIy
ODliZjkuLjMyZWEyZWQxNDUxYzU0YjRjZGU4MTMwYTQ5MzdlN2Q1MzIwMTZhM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC00NTIsNyArNDUyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0Nv
bnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihSZWZQdHI8
SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciogc291cmNlSW1hZ2UsIEZpbHRlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKaW5kZXggODNjZmIxNmZmYTVjMWVkM2YwNDVlN2NjNzQ2
OTIzOWE1ZDMwMjM4OS4uMzliNjBkYmYzZTFlMjg5NzgxYmEyYjE0NjJlMDc2NzNiOWVkY2ZkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyLmNwcApAQCAtMjYsMjUgKzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRmlsdGVyLmgiCiAKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJGaWx0
ZXJJbWFnZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbHRlcjo6RmlsdGVyKEZpbHRl
cjo6VHlwZSBmaWx0ZXJUeXBlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZs
b2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbikKK0ZpbHRl
cjo6RmlsdGVyKEZpbHRlcjo6VHlwZSBmaWx0ZXJUeXBlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24gY2xpcE9w
ZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pCiAgICAgOiBGaWx0ZXJGdW5j
dGlvbihmaWx0ZXJUeXBlKQogICAgICwgbV9yZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpCiAg
ICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQogICAgICwgbV9jbGlwT3BlcmF0aW9uKGNs
aXBPcGVyYXRpb24pCi17Ci19Ci0KLUZpbHRlcjo6RmlsdGVyKEZpbHRlcjo6VHlwZSBmaWx0ZXJU
eXBlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVy
U2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uKQotICAgIDogRmlsdGVy
RnVuY3Rpb24oZmlsdGVyVHlwZSkKLSAgICAsIG1fcmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2Rl
KQotICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSkKLSAgICAsIG1fc291cmNlSW1hZ2VS
ZWN0KHNvdXJjZUltYWdlUmVjdCkKICAgICAsIG1fZmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lvbikK
LSAgICAsIG1fY2xpcE9wZXJhdGlvbihjbGlwT3BlcmF0aW9uKQogewogfQogCkBAIC03Niw5ICs2
OCwzMSBAQCBGbG9hdFJlY3QgRmlsdGVyOjpjbGlwVG9NYXhFZmZlY3RSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlYwogICAgIHJldHVybiBtX2NsaXBPcGVyYXRp
b24gPT0gQ2xpcE9wZXJhdGlvbjo6SW50ZXJzZWN0ID8gaW50ZXJzZWN0aW9uKGltYWdlUmVjdCwg
bWF4RWZmZWN0UmVjdCkgOiB1bmlvblJlY3QoaW1hZ2VSZWN0LCBtYXhFZmZlY3RSZWN0KTsKIH0K
IAotUmVmUHRyPEZpbHRlckltYWdlPiBGaWx0ZXI6OmFwcGx5KEltYWdlQnVmZmVyKiBzb3VyY2VJ
bWFnZSkKK2Jvb2wgRmlsdGVyOjpjbGFtcEZpbHRlclJlZ2lvbklmTmVlZGVkKCkKK3sKKyAgICBh
dXRvIGxhc3RFZmZlY3QgPSB0aGlzLT5sYXN0RWZmZWN0KCk7CisgICAgbGFzdEVmZmVjdC0+ZGV0
ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCp0aGlzKTsKKyAgICAKKyAgICBhdXRvIG1h
eEVmZmVjdFJlY3QgPSB0aGlzLT5tYXhFZmZlY3RSZWN0KGxhc3RFZmZlY3QtPmZpbHRlclByaW1p
dGl2ZVN1YnJlZ2lvbigpKTsKKyAgICBhdXRvIHNjYWxlZE1heEVmZmVjdFJlY3QgPSBzY2FsZWRC
eUZpbHRlclNjYWxlKG1heEVmZmVjdFJlY3QpOworCisgICAgRmxvYXRTaXplIGNsYW1waW5nU2Nh
bGUoMSwgMSk7CisgICAgaWYgKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVk
TWF4RWZmZWN0UmVjdC5zaXplKCksIGNsYW1waW5nU2NhbGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBtX2ZpbHRlclNjYWxlID0gbV9maWx0ZXJTY2FsZSAqIGNsYW1waW5nU2NhbGU7
CisKKyAgICAvLyBBdCBsZWFzdCBvbmUgRmlsdGVyRWZmZWN0IGhhcyBhIHRvbyBiaWcgaW1hZ2Ug
c2l6ZSwKKyAgICAvLyByZWNhbGN1bGF0ZSB0aGUgZWZmZWN0IHNpemVzIHdpdGggbmV3IHNjYWxl
IGZhY3RvcnMuCisgICAgbGFzdEVmZmVjdC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKCp0aGlzKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmUHRyPEZpbHRlckltYWdlPiBG
aWx0ZXI6OmFwcGx5KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2VJbWFnZVJlY3QpCiB7CisgICAgLy8gRklYTUU6IEEgRmlsdGVySW1hZ2Ugc2hvdWxkIGJl
IGNyZWF0ZWQgZnJvbSBzb3VyY2VJbWFnZSBhbmQgc291cmNlSW1hZ2VSZWN0IGFuZCBpdCB3aWxs
IGJlIHBhc3NlZCBhcyB0aGUgaW5wdXQgdG8gYXBwbHkoKS4KICAgICBzZXRTb3VyY2VJbWFnZShz
b3VyY2VJbWFnZSk7CisgICAgc2V0U291cmNlSW1hZ2VSZWN0KHNvdXJjZUltYWdlUmVjdCk7CiAK
ICAgICBhdXRvIHJlc3VsdCA9IGFwcGx5KCk7CiAgICAgaWYgKCFyZXN1bHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCBjMzkx
OTk2Mzc4NDMwN2FhMjFjNGM0MDAxNTc1Yjg3ZGEzYmExZTIxLi5hOGY1NTVmYmQ3MzRmYmRkNmM2
M2VjYjliYTJiZmQxZmIyM2M0ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTY3LDIzICs2NywyNSBAQCBwdWJsaWM6CiAg
ICAgRmxvYXRSZWN0IG1heEVmZmVjdFJlY3QoY29uc3QgRmxvYXRSZWN0JiBwcmltaXRpdmVTdWJy
ZWdpb24pIGNvbnN0OwogICAgIEZsb2F0UmVjdCBjbGlwVG9NYXhFZmZlY3RSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHByaW1pdGl2ZVN1YnJlZ2lvbikg
Y29uc3Q7CiAKKyAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKSBj
b25zdCA9IDA7CisKKyAgICBib29sIGNsYW1wRmlsdGVyUmVnaW9uSWZOZWVkZWQoKTsKKyAgICAK
ICAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoKSA9IDA7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseShJbWFnZUJ1ZmZlciogc291cmNlSW1h
Z2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoSW1hZ2VC
dWZmZXIqIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCk7CiAK
IHByb3RlY3RlZDoKLSAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlLCBSZW5kZXJpbmdNb2RlLCBjb25z
dCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uID0gQ2xpcE9wZXJhdGlvbjo6
SW50ZXJzZWN0KTsKLSAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlLCBSZW5kZXJpbmdNb2RlLCBjb25z
dCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIENsaXBPcGVyYXRpb24gPSBDbGlwT3Bl
cmF0aW9uOjpJbnRlcnNlY3QpOworICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUsIFJlbmRlcmluZ01v
ZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVnaW9uID0geyB9KTsKIAogcHJpdmF0ZToKICAgICBSZW5kZXJpbmdN
b2RlIG1fcmVuZGVyaW5nTW9kZTsKLQogICAgIEZsb2F0U2l6ZSBtX2ZpbHRlclNjYWxlOwotICAg
IEZsb2F0UmVjdCBtX3NvdXJjZUltYWdlUmVjdDsKKyAgICBDbGlwT3BlcmF0aW9uIG1fY2xpcE9w
ZXJhdGlvbjsKICAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247CiAKKyAgICAvLyBGSVhNRTog
dGhlc2Ugc2hvdWxkIG5vdCBiZSBtZW1iZXJzIG9mIEZpbHRlci4gVGhleSBzaG91bGQgYmUgcGFz
c2VkIHRvIEZpbHRlcjo6YXBwbHkoKS4KKyAgICBGbG9hdFJlY3QgbV9zb3VyY2VJbWFnZVJlY3Q7
CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX3NvdXJjZUltYWdlOwotCi0gICAgQ2xpcE9wZXJh
dGlvbiBtX2NsaXBPcGVyYXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHAKaW5kZXggNmUxMDkyNDk2ZWY4NDViNmI4NzJjYjEwNmMwZGQxNjA4OWY1N2Fl
ZC4uMGFlOTRkNTA2ZTE0MWVkZjM0MzRhZGI2MjRjODZjNTMyMjI2M2QzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmNwcApAQCAtNzAsMTMgKzcwLDcgQEAgRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6ZGV0ZXJt
aW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGNvbnN0IEZpbHRlciYgZmlsdGVyKQogICAgICAg
ICAgICAgcHJpbWl0aXZlU3VicmVnaW9uLnNldEhlaWdodCgqaGVpZ2h0KTsKICAgICB9CiAKLSAg
ICAvLyBDbGlwIGV2ZXJ5IGZpbHRlciBlZmZlY3QgdG8gdGhlIGZpbHRlciByZWdpb24uCi0gICAg
YXV0byBhYnNvbHV0ZU1heEVmZmVjdFJlY3QgPSBmaWx0ZXIubWF4RWZmZWN0UmVjdChwcmltaXRp
dmVTdWJyZWdpb24pOwotICAgIGFic29sdXRlTWF4RWZmZWN0UmVjdC5zY2FsZShmaWx0ZXIuZmls
dGVyU2NhbGUoKSk7Ci0KICAgICBzZXRGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24ocHJpbWl0aXZl
U3VicmVnaW9uKTsKLSAgICBzZXRNYXhFZmZlY3RSZWN0KGFic29sdXRlTWF4RWZmZWN0UmVjdCk7
Ci0KICAgICByZXR1cm4gcHJpbWl0aXZlU3VicmVnaW9uOwogfQogCkBAIC0xMjcsNyArMTIxLDcg
QEAgYm9vbCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KGNvbnN0IEZpbHRlciYgZmlsdGVyKQogICAgICAg
ICA8PCAiRmlsdGVyRWZmZWN0ICIgPDwgZmlsdGVyTmFtZSgpIDw8ICIgIiA8PCB0aGlzIDw8ICIg
YXBwbHkoKToiCiAgICAgICAgIDw8ICJcbiAgZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uICIgPDwg
bV9maWx0ZXJQcmltaXRpdmVTdWJyZWdpb24KICAgICAgICAgPDwgIlxuICBhYnNvbHV0ZVBhaW50
UmVjdCAiIDw8IGFic29sdXRlSW1hZ2VSZWN0Ci0gICAgICAgIDw8ICJcbiAgbWF4RWZmZWN0UmVj
dCAiIDw8IG1fbWF4RWZmZWN0UmVjdAorICAgICAgICA8PCAiXG4gIG1heEVmZmVjdFJlY3QgIiA8
PCBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZShmaWx0ZXIubWF4RWZmZWN0UmVjdChtX2ZpbHRl
clByaW1pdGl2ZVN1YnJlZ2lvbikpCiAgICAgICAgIDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwg
ZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogCiAgICAgcmV0dXJuIGFwcGxpZXItPmFwcGx5KGZpbHRl
ciwgaW5wdXRGaWx0ZXJJbWFnZXMsICptX2ZpbHRlckltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4
IDYyZTZhMzdjOGZlZGZkN2QyNGRiNDVmMWM4ZmY3NzIyN2E1YjgyZDMuLjgyN2ViNWRiODFlOTFj
OTIzNjk2OWVhNWZkOTIwMmE4Y2I5NWIzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtNTYsOSArNTYs
NiBAQCBwdWJsaWM6CiAgICAgLy8gUmVjdXJzZXMgb24gaW5wdXRzLgogICAgIEZsb2F0UmVjdCBk
ZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oY29uc3QgRmlsdGVyJik7CiAKLSAgICBG
bG9hdFJlY3QgbWF4RWZmZWN0UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4RWZmZWN0UmVjdDsg
fQotICAgIHZvaWQgc2V0TWF4RWZmZWN0UmVjdChjb25zdCBGbG9hdFJlY3QmIG1heEVmZmVjdFJl
Y3QpIHsgbV9tYXhFZmZlY3RSZWN0ID0gbWF4RWZmZWN0UmVjdDsgfQotCiAgICAgYm9vbCBhcHBs
eShjb25zdCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIC8vIENvcnJlY3QgYW55IGludmFsaWQg
cGl4ZWxzLCBpZiBuZWNlc3NhcnksIGluIHRoZSByZXN1bHQgb2YgYSBmaWx0ZXIgb3BlcmF0aW9u
LgpAQCAtOTYsMTAgKzkzLDYgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxGaWx0ZXJJbWFnZT4g
bV9maWx0ZXJJbWFnZTsKIAotICAgIC8vIFRoZSBtYXhpbXVtIHNpemUgb2YgYSBmaWx0ZXIgcHJp
bWl0aXZlLiBJbiBTVkcgdGhpcyBpcyB0aGUgcHJpbWl0aXZlIHN1YnJlZ2lvbiBpbiBhYnNvbHV0
ZSBjb29yZGluYXRlIHNwYWNlLgotICAgIC8vIFRoZSBhYnNvbHV0ZSBwYWludCByZWN0IHNob3Vs
ZCBuZXZlciBiZSBiaWdnZXIgdGhhbiBtX21heEVmZmVjdFJlY3QuCi0gICAgRmxvYXRSZWN0IG1f
bWF4RWZmZWN0UmVjdDsKLSAgICAKICAgICAvLyBUaGUgc3VicmVnaW9uIG9mIGEgZmlsdGVyIHBy
aW1pdGl2ZSBhY2NvcmRpbmcgdG8gdGhlIFNWRyBGaWx0ZXIgc3BlY2lmaWNhdGlvbiBpbiBsb2Nh
bCBjb29yZGluYXRlcy4KICAgICAvLyBUaGlzIGlzIFNWRyBzcGVjaWZpYyBhbmQgbmVlZHMgdG8g
bW92ZSB0byBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS4KICAgICBGbG9hdFJlY3Qg
bV9maWx0ZXJQcmltaXRpdmVTdWJyZWdpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0
ZXIuY3BwCmluZGV4IGE3OTY5MzI4ZDY1OGY5M2E0NTIzM2I2MWNlY2YwZjIxZmY5MzhkZmYuLjYy
NmU3ODc4ZWZiZDNhZGI4YTBjYTY5ZTgyNTg1MWZlNGNjNDQyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiRkVDb21w
b25lbnRUcmFuc2Zlci5oIgogI2luY2x1ZGUgIkZFRHJvcFNoYWRvdy5oIgogI2luY2x1ZGUgIkZF
R2F1c3NpYW5CbHVyLmgiCi0jaW5jbHVkZSAiRkVNZXJnZS5oIgogI2luY2x1ZGUgIkZpbHRlck9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJMZW5n
dGhGdW5jdGlvbnMuaCIKQEAgLTQzLDIyICs0MiwyMyBAQAogI2luY2x1ZGUgIlNWR0ZpbHRlckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTb3VyY2VHcmFwaGljLmgiCiAKLSNpZiBVU0UoRElSRUNUMkQp
Ci0jaW5jbHVkZSA8ZDJkMS5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
UHRyPENTU0ZpbHRlcj4gQ1NTRmlsdGVyOjpjcmVhdGUoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
b3BlcmF0aW9ucywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCBzY2FsZUZhY3Rv
ciwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uKQorUmVmUHRyPENTU0ZpbHRlcj4gQ1NTRmls
dGVyOjpjcmVhdGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIG9wZXJhdGlvbnMsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRT
aXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KQogewogICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVz
UGl4ZWxzID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKTsKICAgICBib29s
IGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luID0gb3BlcmF0
aW9ucy5oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbigpOwog
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRmlsdGVyKHJlbmRlcmluZ01vZGUsIHNjYWxl
RmFjdG9yLCBjbGlwT3BlcmF0aW9uLCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMsIGhhc0ZpbHRl
clRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKSk7CisgICAgYXV0byBmaWx0
ZXIgPSBhZG9wdFJlZigqbmV3IENTU0ZpbHRlcihyZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwg
Y2xpcE9wZXJhdGlvbiwgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBoYXNGaWx0ZXJUaGF0U2hv
dWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbikpOworICAgIAorICAgIGlmICghZmlsdGVy
LT5idWlsZEZpbHRlckZ1bmN0aW9ucyhyZW5kZXJlciwgb3BlcmF0aW9ucywgdGFyZ2V0Qm91bmRp
bmdCb3gpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBmaWx0ZXI7CiB9
CiAKLUNTU0ZpbHRlcjo6Q1NTRmlsdGVyKFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxv
YXQgc2NhbGVGYWN0b3IsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgYm9vbCBoYXNGaWx0
ZXJUaGF0TW92ZXNQaXhlbHMsIGJvb2wgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5
U2VjdXJpdHlPcmlnaW4pCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpDU1NGaWx0ZXIsIHJl
bmRlcmluZ01vZGUsIEZsb2F0U2l6ZSB7IHNjYWxlRmFjdG9yLCBzY2FsZUZhY3RvciB9LCBjbGlw
T3BlcmF0aW9uKQorQ1NTRmlsdGVyOjpDU1NGaWx0ZXIoUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVy
YXRpb24sIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBib29sIGhhc0ZpbHRlclRoYXRT
aG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKQorICAgIDogRmlsdGVyKEZpbHRlcjo6
VHlwZTo6Q1NTRmlsdGVyLCByZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgY2xpcE9wZXJhdGlv
bikKICAgICAsIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKGhhc0ZpbHRlclRoYXRNb3Zlc1Bp
eGVscykKICAgICAsIG1faGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlP
cmlnaW4oaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4pCiB7
CkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGNyZWF0ZVNl
cGlhRWZmZWN0KGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXQKICAgICByZXR1cm4g
RkVDb2xvck1hdHJpeDo6Y3JlYXRlKEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgsIFdURk1vdmUo
aW5wdXRQYXJhbWV0ZXJzKSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGVT
VkdGaWx0ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlv
biYgZmlsdGVyT3BlcmF0aW9uLCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmlsdGVyRWZmZWN0
JiBwcmV2aW91c0VmZmVjdCkKK3N0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGVTVkdGaWx0
ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYgZmls
dGVyT3BlcmF0aW9uLCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCkKIHsKICAgICBh
dXRvJiByZWZlcmVuY2VkU1ZHUmVzb3VyY2VzID0gcmVuZGVyZXIuZW5zdXJlUmVmZXJlbmNlZFNW
R1Jlc291cmNlcygpOwogICAgIGF1dG8qIGZpbHRlckVsZW1lbnQgPSByZWZlcmVuY2VkU1ZHUmVz
b3VyY2VzLnJlZmVyZW5jZWRGaWx0ZXJFbGVtZW50KHJlbmRlcmVyLmRvY3VtZW50KCksIGZpbHRl
ck9wZXJhdGlvbik7CkBAIC0yMjEsMTAgKzIyMSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNWR0ZpbHRl
cj4gY3JlYXRlU1ZHRmlsdGVyKENTU0ZpbHRlciYgZmlsdGVyLCBjb25zdCBSZWZlcmVuY2VGaWx0
ZQogICAgIH0KIAogICAgIFNWR0ZpbHRlckJ1aWxkZXIgYnVpbGRlcjsKLSAgICByZXR1cm4gU1ZH
RmlsdGVyOjpjcmVhdGUoKmZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIGZpbHRlci5yZW5kZXJpbmdN
b2RlKCksIGZpbHRlci5maWx0ZXJTY2FsZSgpLCBmaWx0ZXIuc291cmNlSW1hZ2VSZWN0KCksIGZp
bHRlci5maWx0ZXJSZWdpb24oKSwgZmlsdGVyLmNsaXBPcGVyYXRpb24oKSwgcHJldmlvdXNFZmZl
Y3QpOworICAgIHJldHVybiBTVkdGaWx0ZXI6OmNyZWF0ZSgqZmlsdGVyRWxlbWVudCwgYnVpbGRl
ciwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgZmlsdGVyLmZpbHRlclNjYWxlKCksIGZpbHRlci5j
bGlwT3BlcmF0aW9uKCksIHRhcmdldEJvdW5kaW5nQm94LCBwcmV2aW91c0VmZmVjdCk7CiB9CiAK
LWJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucykKK2Jvb2wgQ1NTRmlsdGVy
OjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGlu
Z0JveCkKIHsKICAgICBtX2Z1bmN0aW9ucy5jbGVhcigpOwogICAgIG1fb3V0c2V0cyA9IHsgfTsK
QEAgLTI4MSw3ICsyODEsNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdAogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRToKLSAgICAg
ICAgICAgIGZpbHRlciA9IGNyZWF0ZVNWR0ZpbHRlcigqdGhpcywgZG93bmNhc3Q8UmVmZXJlbmNl
RmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSwgcmVuZGVyZXIsICpwcmV2aW91c0VmZmVjdCk7
CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVTVkdGaWx0ZXIoKnRoaXMsIGRvd25jYXN0PFJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbiksIHJlbmRlcmVyLCB0YXJnZXRCb3Vu
ZGluZ0JveCwgKnByZXZpb3VzRWZmZWN0KTsKICAgICAgICAgICAgIGVmZmVjdCA9IG51bGxwdHI7
CiAgICAgICAgICAgICBicmVhazsKIApAQCAtMzI0LDE5ICszMjQsNyBAQCBib29sIENTU0ZpbHRl
cjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZp
bHRlck9wZXJhdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU0ZpbHRlcjo6dXBkYXRl
QmFja2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpCi17Ci0gICAgaWYg
KGZpbHRlclJlY3QuaXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhm
aWx0ZXJSZWN0LnNpemUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChmaWx0
ZXJSZWN0ID09IHNvdXJjZUltYWdlUmVjdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBzZXRTb3VyY2VJbWFnZVJlY3QoZmlsdGVyUmVjdCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LVJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6bGFzdEVmZmVjdCgpCitSZWZQdHI8Rmls
dGVyRWZmZWN0PiBDU1NGaWx0ZXI6Omxhc3RFZmZlY3QoKSBjb25zdAogewogICAgIGlmIChtX2Z1
bmN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzYzLDE5ICsz
NTEsNiBAQCBib29sIENTU0ZpbHRlcjo6c3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoKSBjb25z
dAogfQogI2VuZGlmCiAKLXZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVT
dWJyZWdpb24oKQotewotICAgIGF1dG8gZWZmZWN0ID0gbGFzdEVmZmVjdCgpOwotICAgIGVmZmVj
dC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCp0aGlzKTsKLSAgICBGbG9hdFJl
Y3Qgc3ViUmVnaW9uID0gZWZmZWN0LT5tYXhFZmZlY3RSZWN0KCk7Ci0gICAgLy8gQXQgbGVhc3Qg
b25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsIHJlY2FsY3VsYXRlIHRo
ZSBlZmZlY3Qgc2l6ZXMgd2l0aCBuZXcgc2NhbGUgZmFjdG9ycy4KLSAgICBGbG9hdFNpemUgZmls
dGVyU2NhbGUgeyAxLCAxIH07Ci0gICAgaWYgKEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGlu
ZyhzdWJSZWdpb24uc2l6ZSgpLCBmaWx0ZXJTY2FsZSkpIHsKLSAgICAgICAgc2V0RmlsdGVyU2Nh
bGUoZmlsdGVyU2NhbGUpOwotICAgICAgICBlZmZlY3QtPmRldGVybWluZUZpbHRlclByaW1pdGl2
ZVN1YnJlZ2lvbigqdGhpcyk7Ci0gICAgfQotfQotCiB2b2lkIENTU0ZpbHRlcjo6Y2xlYXJJbnRl
cm1lZGlhdGVSZXN1bHRzKCkKIHsKICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogbV9mdW5jdGlv
bnMpCkBAIC0zODUsMzMgKzM2MCwyNCBAQCB2b2lkIENTU0ZpbHRlcjo6Y2xlYXJJbnRlcm1lZGlh
dGVSZXN1bHRzKCkKIFJlZlB0cjxGaWx0ZXJJbWFnZT4gQ1NTRmlsdGVyOjphcHBseSgpCiB7CiAg
ICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fZnVuY3Rpb25zKSB7CisgICAgICAgIGlmIChmdW5j
dGlvbi0+aXNTVkdGaWx0ZXIoKSkKKyAgICAgICAgICAgIGRvd25jYXN0PFNWR0ZpbHRlcj4oZnVu
Y3Rpb24ucHRyKCkpLT5zZXRTb3VyY2VJbWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KCkpOwogICAg
ICAgICBpZiAoIWZ1bmN0aW9uLT5hcHBseSgqdGhpcykpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAgICAgcmV0dXJuIGxhc3RFZmZlY3QoKS0+ZmlsdGVySW1hZ2UoKTsKIH0K
IAotTGF5b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJl
Y3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGly
dHlSZWN0KQordm9pZCBDU1NGaWx0ZXI6OnNldEZpbHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3Qm
IGZpbHRlclJlZ2lvbikKIHsKLSAgICAvLyBUaGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gaXMg
dGhlIGFyZWEgaW4gdGhlICJmaWx0ZXJCb3hSZWN0IiB0aGF0IG5lZWRzIHRvIGJlIHJlcGFpbnRl
ZCwgc28gdGhhdCB3ZSBmdWxseSBjb3ZlciB0aGUgImRpcnR5UmVjdCIuCi0gICAgYXV0byByZWN0
Rm9yUmVwYWludCA9IGRpcnR5UmVjdDsKLSAgICBpZiAoaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxz
KCkpCi0gICAgICAgIHJlY3RGb3JSZXBhaW50ICs9IG91dHNldHMoKTsKLSAgICByZWN0Rm9yUmVw
YWludC5pbnRlcnNlY3QoZmlsdGVyQm94UmVjdCk7Ci0gICAgcmV0dXJuIHJlY3RGb3JSZXBhaW50
OwotfQotCi12b2lkIENTU0ZpbHRlcjo6c2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlSW1hZ2VSZWN0KQotewotICAgIEZpbHRlcjo6c2V0RmlsdGVyUmVnaW9uKHNvdXJj
ZUltYWdlUmVjdCk7Ci0gICAgRmlsdGVyOjpzZXRTb3VyY2VJbWFnZVJlY3Qoc291cmNlSW1hZ2VS
ZWN0KTsKKyAgICBGaWx0ZXI6OnNldEZpbHRlclJlZ2lvbihmaWx0ZXJSZWdpb24pOwogCiAgICAg
Zm9yIChhdXRvJiBmdW5jdGlvbiA6IG1fZnVuY3Rpb25zKSB7Ci0gICAgICAgIGlmIChmdW5jdGlv
bi0+aXNTVkdGaWx0ZXIoKSkgewotICAgICAgICAgICAgZG93bmNhc3Q8U1ZHRmlsdGVyPihmdW5j
dGlvbi5wdHIoKSktPnNldEZpbHRlclJlZ2lvbihzb3VyY2VJbWFnZVJlY3QpOwotICAgICAgICAg
ICAgZG93bmNhc3Q8U1ZHRmlsdGVyPihmdW5jdGlvbi5wdHIoKSktPnNldFNvdXJjZUltYWdlUmVj
dChzb3VyY2VJbWFnZVJlY3QpOwotICAgICAgICB9CisgICAgICAgIGlmIChmdW5jdGlvbi0+aXNT
VkdGaWx0ZXIoKSkKKyAgICAgICAgICAgIGRvd25jYXN0PFNWR0ZpbHRlcj4oZnVuY3Rpb24ucHRy
KCkpLT5zZXRGaWx0ZXJSZWdpb24oZmlsdGVyUmVnaW9uKTsKICAgICB9CisKKyAgICBjbGFtcEZp
bHRlclJlZ2lvbklmTmVlZGVkKCk7CiB9CiAKIEludE91dHNldHMgQ1NTRmlsdGVyOjpvdXRzZXRz
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAppbmRleCAyZjUxNmU1MDU0
OWNmMDcwYjczMzkwMmY4MmY0Njg1YTM4MWM1YTMyLi45YzM1NTJhMzg2OGI2NjQ0NzRiMTE3NDE0
OGZiMGQ3NjA4Y2ZmMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NT
RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCkBAIC00
MiwyNyArNDIsMjMgQEAgY2xhc3MgU291cmNlR3JhcGhpYzsKIGNsYXNzIENTU0ZpbHRlciBmaW5h
bCA6IHB1YmxpYyBGaWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWZQdHI8Q1NTRmlsdGVyPiBjcmVhdGUoY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHNjYWxlRmFjdG9yID0gMSwgQ2xpcE9wZXJhdGlv
biA9IENsaXBPcGVyYXRpb246OkludGVyc2VjdCk7CisgICAgc3RhdGljIFJlZlB0cjxDU1NGaWx0
ZXI+IGNyZWF0ZShSZW5kZXJFbGVtZW50JiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYsIFJlbmRl
cmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpOwogCi0gICAgdm9pZCBzZXRTb3VyY2VJ
bWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgYm9vbCBidWlsZEZpbHRlckZ1bmN0aW9u
cyhSZW5kZXJFbGVtZW50JiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwotICAgIHZvaWQgZGV0
ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAgdm9pZCBzZXRGaWx0ZXJSZWdp
b24oY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVs
cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzOyB9CiAgICAgYm9v
bCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1faGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmln
aW47IH0KIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKTsKKyAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBsYXN0RWZmZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50T3V0
c2V0cyBvdXRzZXRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNsZWFySW50ZXJtZWRp
YXRlUmVzdWx0cygpOwogICAgIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoKSBvdmVycmlkZTsK
IAotICAgIGJvb2wgdXBkYXRlQmFja2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbHRl
clJlY3QpOwotCi0gICAgTGF5b3V0UmVjdCBjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlS
ZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRp
cnR5UmVjdCk7Ci0KIHByaXZhdGU6Ci0gICAgQ1NTRmlsdGVyKFJlbmRlcmluZ01vZGUsIGZsb2F0
IHNjYWxlRmFjdG9yLCBDbGlwT3BlcmF0aW9uLCBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVs
cywgYm9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbik7
CisgICAgQ1NTRmlsdGVyKFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2Nh
bGUsIENsaXBPcGVyYXRpb24sIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBib29sIGhh
c0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKTsKKworICAgIGJv
b2wgYnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KTsKIAogI2lmIFVTRShD
T1JFX0lNQUdFKQogICAgIGJvb2wgc3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVy
cy5jcHAKaW5kZXggYWM3N2I4ZTUzZmUzYjNkYTk5MmE3MjJiZDgyZTU0MTVjYTc0YjIzYS4uY2Zk
YjE3NDJiOTM4ODk2NzZkM2FkYTIxYjJmNGYxMjZkZjAyZTdlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKQEAgLTEyMSw3ICsxMjEsNyBA
QCB2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YnVpbGRGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGZsb2F0IHNjYWxlRmFjdG9yLAogICAgIC8vIElmIHRoZSBmaWx0ZXIgZmFpbHMgdG8g
YnVpbGQsIHJlbW92ZSBpdCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBzdGlsbCBhdHRlbXB0IHRv
CiAgICAgLy8gZ28gdGhyb3VnaCByZWd1bGFyIHByb2Nlc3NpbmcgKGUuZy4gY29tcG9zaXRpbmcp
LCBidXQgbmV2ZXIgYXBwbHkgYW55dGhpbmcuCiAgICAgLy8gRklYTUU6IHRoaXMgcmVidWlsZHMg
dGhlIGVudGlyZSBlZmZlY3RzIGNoYWluIGV2ZW4gaWYgdGhlIGZpbHRlciBzdHlsZSBkaWRuJ3Qg
Y2hhbmdlLgotICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUocmVuZGVyZXIuc3R5bGUo
KS5maWx0ZXIoKSwgcmVuZGVyaW5nTW9kZSwgc2NhbGVGYWN0b3IsIEZpbHRlcjo6Q2xpcE9wZXJh
dGlvbjo6VW5pdGUpOworICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUocmVuZGVyZXIs
IHJlbmRlcmVyLnN0eWxlKCkuZmlsdGVyKCksIHJlbmRlcmluZ01vZGUsIEZsb2F0U2l6ZSB7IHNj
YWxlRmFjdG9yLCBzY2FsZUZhY3RvciB9LCBGaWx0ZXI6OkNsaXBPcGVyYXRpb246OlVuaXRlLCBt
X3RhcmdldEJvdW5kaW5nQm94KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZp
bHRlcnM6OmlucHV0Q29udGV4dCgpCkBAIC0xMjksMTAgKzEyOSwxMCBAQCBHcmFwaGljc0NvbnRl
eHQqIFJlbmRlckxheWVyRmlsdGVyczo6aW5wdXRDb250ZXh0KCkKICAgICByZXR1cm4gbV9zb3Vy
Y2VJbWFnZSA/ICZtX3NvdXJjZUltYWdlLT5jb250ZXh0KCkgOiBudWxscHRyOwogfQogCi12b2lk
IFJlbmRlckxheWVyRmlsdGVyczo6YWxsb2NhdGVCYWNraW5nU3RvcmUoY29uc3QgR3JhcGhpY3ND
b250ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0
KQogewogICAgIGF1dG8mIGZpbHRlciA9ICptX2ZpbHRlcjsKLSAgICBhdXRvIGxvZ2ljYWxTaXpl
ID0gZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2NhbGUoZmlsdGVyLnNvdXJjZUltYWdlUmVjdCgpLnNp
emUoKSk7CisgICAgYXV0byBsb2dpY2FsU2l6ZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxl
KG1fc291cmNlSW1hZ2VSZWN0LnNpemUoKSk7CiAKICAgICBpZiAoIW1fc291cmNlSW1hZ2UgfHwg
bV9zb3VyY2VJbWFnZS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkgewogI2lmIFVTRShE
SVJFQ1QyRCkKQEAgLTE1MSw0MiArMTUxLDU5IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5
ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0CiAg
ICAgaWYgKCFtX2ZpbHRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvJiBm
aWx0ZXIgPSAqbV9maWx0ZXI7Ci0gICAgYXV0byBmaWx0ZXJTb3VyY2VSZWN0ID0gZmlsdGVyLmNv
bXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoZmlsdGVyQm94UmVjdCwgZGlydHlSZWN0
KTsKLSAgICBpZiAoZmlsdGVyU291cmNlUmVjdC5pc0VtcHR5KCkpCisgICAgLy8gQ2FsY3VsYXRl
IHRhcmdldEJvdW5kaW5nQm94IHNpbmNlIGl0IHdpbGwgYmUgdXNlZCBpZiB0aGUgZmlsdGVyIGlz
IGNyZWF0ZWQuCisgICAgYXV0byB0YXJnZXRCb3VuZGluZ0JveCA9IGludGVyc2VjdGlvbihmaWx0
ZXJCb3hSZWN0LCBkaXJ0eVJlY3QpOworICAgIGlmICh0YXJnZXRCb3VuZGluZ0JveC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKG1fdGFyZ2V0Qm91bmRpbmdC
b3ggIT0gdGFyZ2V0Qm91bmRpbmdCb3gpIHsKKyAgICAgICAgbV90YXJnZXRCb3VuZGluZ0JveCA9
IHRhcmdldEJvdW5kaW5nQm94OworICAgICAgICAvLyBGSVhNRTogdGhpcyByZWJ1aWxkcyB0aGUg
ZW50aXJlIGVmZmVjdHMgY2hhaW4gZXZlbiBpZiB0aGUgZmlsdGVyIHN0eWxlIGRpZG4ndCBjaGFu
Z2UuCisgICAgICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUocmVuZGVyZXIsIHJlbmRl
cmVyLnN0eWxlKCkuZmlsdGVyKCksIG1fZmlsdGVyLT5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LT5maWx0ZXJTY2FsZSgpLCBGaWx0ZXI6OkNsaXBPcGVyYXRpb246OlVuaXRlLCBtX3RhcmdldEJv
dW5kaW5nQm94KTsKKyAgICB9CisKKyAgICBpZiAoIW1fZmlsdGVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGJvb2wgaGFzVXBkYXRlZEJhY2tpbmdTdG9yZSA9IGZpbHRlci51cGRh
dGVCYWNraW5nU3RvcmVSZWN0KGZpbHRlclNvdXJjZVJlY3QpOworICAgIGF1dG8mIGZpbHRlciA9
ICptX2ZpbHRlcjsKKyAgICAKKyAgICAvLyBGb3IgQ1NTRmlsdGVyLCBmaWx0ZXJSZWdpb24gPSB0
YXJnZXRCb3VuZGluZ0JveCArIGZpbHRlci0+b3V0c2V0cygpCisgICAgYXV0byBmaWx0ZXJSZWdp
b24gPSB0YXJnZXRCb3VuZGluZ0JveDsKKyAgICBpZiAoZmlsdGVyLmhhc0ZpbHRlclRoYXRNb3Zl
c1BpeGVscygpKSB7CisgICAgICAgIGZpbHRlclJlZ2lvbiArPSBmaWx0ZXIub3V0c2V0cygpOwor
ICAgICAgICBmaWx0ZXJSZWdpb24gPSBpbnRlcnNlY3Rpb24oZmlsdGVyQm94UmVjdCwgZmlsdGVy
UmVnaW9uKTsKKyAgICB9CisKKyAgICBpZiAoZmlsdGVyUmVnaW9uLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAvLyBGSVhNRTogdGhpcyBjYWxsIHNob3VsZCBiZSBt
b3ZlZCB0byBDU1NGaWx0ZXI6OmNyZWF0ZSgpIHdoZW4gRmlsdGVyRWZmZWN0IGRvZXMgbm90IHN0
b3JlIGl0cyBnZW9tZXRyeS4KLSAgICBpZiAoaGFzVXBkYXRlZEJhY2tpbmdTdG9yZSB8fCAhbV9m
aWx0ZXItPmxhc3RFZmZlY3QoKSkgewotICAgICAgICAvLyBJZiB0aGUgZmlsdGVyIGZhaWxzIHRv
IGJ1aWxkLCByZW1vdmUgaXQgZnJvbSB0aGUgbGF5ZXIuIEl0IHdpbGwgc3RpbGwgYXR0ZW1wdCB0
bwotICAgICAgICAvLyBnbyB0aHJvdWdoIHJlZ3VsYXIgcHJvY2Vzc2luZyAoZS5nLiBjb21wb3Np
dGluZyksIGJ1dCBuZXZlciBhcHBseSBhbnl0aGluZy4KLSAgICAgICAgaWYgKCFtX2ZpbHRlci0+
YnVpbGRGaWx0ZXJGdW5jdGlvbnMocmVuZGVyZXIsIHJlbmRlcmVyLnN0eWxlKCkuZmlsdGVyKCkp
KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gRm9yIENTU0ZpbHRlciwgc291
cmNlSW1hZ2VSZWN0ID0gZmlsdGVyUmVnaW9uLgorICAgIGJvb2wgaGFzVXBkYXRlZEJhY2tpbmdT
dG9yZSA9IGZhbHNlOworICAgIGlmIChtX3NvdXJjZUltYWdlUmVjdCAhPSBmaWx0ZXJSZWdpb24p
IHsKKyAgICAgICAgbV9zb3VyY2VJbWFnZVJlY3QgPSBmaWx0ZXJSZWdpb247CisgICAgICAgIGhh
c1VwZGF0ZWRCYWNraW5nU3RvcmUgPSB0cnVlOwogICAgIH0KIAogICAgIGlmICghZmlsdGVyLmhh
c0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpKQogICAgICAgICBtX3JlcGFpbnRSZWN0ID0gZGlydHlS
ZWN0OwogICAgIGVsc2UgewogICAgICAgICBpZiAoaGFzVXBkYXRlZEJhY2tpbmdTdG9yZSkKLSAg
ICAgICAgICAgIG1fcmVwYWludFJlY3QgPSBmaWx0ZXJTb3VyY2VSZWN0OworICAgICAgICAgICAg
bV9yZXBhaW50UmVjdCA9IGZpbHRlclJlZ2lvbjsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBtX3JlcGFpbnRSZWN0ID0gZGlydHlSZWN0OwogICAgICAgICAgICAgbV9yZXBhaW50UmVjdC51
bml0ZShsYXllclJlcGFpbnRSZWN0KTsKLSAgICAgICAgICAgIG1fcmVwYWludFJlY3QuaW50ZXJz
ZWN0KGZpbHRlclNvdXJjZVJlY3QpOworICAgICAgICAgICAgbV9yZXBhaW50UmVjdC5pbnRlcnNl
Y3QoZmlsdGVyUmVnaW9uKTsKICAgICAgICAgfQogICAgIH0KLSAgICBtX3BhaW50T2Zmc2V0ID0g
ZmlsdGVyU291cmNlUmVjdC5sb2NhdGlvbigpOwotICAgIHJlc2V0RGlydHlTb3VyY2VSZWN0KCk7
CiAKLSAgICBmaWx0ZXIuZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CisgICAg
bV9wYWludE9mZnNldCA9IGZpbHRlclJlZ2lvbi5sb2NhdGlvbigpOworICAgIHJlc2V0RGlydHlT
b3VyY2VSZWN0KCk7CiAKLSAgICBpZiAoaGFzVXBkYXRlZEJhY2tpbmdTdG9yZSkKLSAgICAgICAg
YWxsb2NhdGVCYWNraW5nU3RvcmUoZGVzdGluYXRpb25Db250ZXh0KTsKKyAgICBmaWx0ZXIuc2V0
RmlsdGVyUmVnaW9uKG1fc291cmNlSW1hZ2VSZWN0KTsKKyAgICBhbGxvY2F0ZUJhY2tpbmdTdG9y
ZUlmTmVlZGVkKGRlc3RpbmF0aW9uQ29udGV4dCk7CiAKICAgICBhdXRvKiBzb3VyY2VHcmFwaGlj
c0NvbnRleHQgPSBpbnB1dENvbnRleHQoKTsKLSAgICBpZiAoIXNvdXJjZUdyYXBoaWNzQ29udGV4
dCB8fCBmaWx0ZXIuZmlsdGVyUmVnaW9uKCkuaXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXpl
TmVlZHNDbGFtcGluZyhmaWx0ZXIuZmlsdGVyUmVnaW9uKCkuc2l6ZSgpKSkKKyAgICBpZiAoIXNv
dXJjZUdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBU
cmFuc2xhdGUgdGhlIGNvbnRleHQgc28gdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIGxheWVyIGlz
IGNhcHR1cmVkIGluIHRoZSBvZmZzY3JlZW4gbWVtb3J5IGJ1ZmZlci4KQEAgLTIwNyw3ICsyMjQs
NyBAQCB2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3ND
b250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCiAKICAgICBhdXRvJiBmaWx0ZXIgPSAqbV9maWx0
ZXI7CiAKLSAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIobV9z
b3VyY2VJbWFnZS5nZXQoKSwgZmlsdGVyKTsKKyAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0Zp
bHRlcmVkSW1hZ2VCdWZmZXIobV9zb3VyY2VJbWFnZS5nZXQoKSwgbV9zb3VyY2VJbWFnZVJlY3Qs
IGZpbHRlcik7CiAgICAgZmlsdGVyLmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwogCiAgICAg
TE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiUmVuZGVyTGF5ZXJGaWx0ZXJzICIg
PDwgdGhpcyA8PCAiIGFwcGx5RmlsdGVyRWZmZWN0IGRvbmVcbiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oCmluZGV4IGI3MGFmMTU1YTFhNGY2ODdk
NTQ2OGZkNGM3MjlhOTNlYzFkMTM3MzAuLmY2YmQ2MjgxYjczZWI5ZTUxMDdiZGRiNjEyZDVlOWZj
YWY2OTM0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckZpbHRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0
ZXJzLmgKQEAgLTcwLDEzICs3MCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAg
ICB2b2lkIHJlc2V0RGlydHlTb3VyY2VSZWN0KCkgeyBtX2RpcnR5U291cmNlUmVjdCA9IExheW91
dFJlY3QoKTsgfQogICAgIEdyYXBoaWNzQ29udGV4dCogaW5wdXRDb250ZXh0KCk7Ci0gICAgdm9p
ZCBhbGxvY2F0ZUJhY2tpbmdTdG9yZShjb25zdCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRl
eHQpOworICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChjb25zdCBHcmFwaGlj
c0NvbnRleHQmIHRhcmdldENvbnRleHQpOwogCiAgICAgUmVuZGVyTGF5ZXImIG1fbGF5ZXI7CiAK
ICAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBtX2ludGVybmFsU1ZHUmVmZXJlbmNlczsKICAg
ICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9jdW1lbnQ+PiBtX2V4dGVy
bmFsU1ZHUmVmZXJlbmNlczsKIAorICAgIExheW91dFJlY3QgbV90YXJnZXRCb3VuZGluZ0JveDsK
KyAgICBGbG9hdFJlY3QgbV9zb3VyY2VJbWFnZVJlY3Q7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVy
PiBtX3NvdXJjZUltYWdlOwogICAgIFJlZlB0cjxDU1NGaWx0ZXI+IG1fZmlsdGVyOwogICAgIExh
eW91dFJlY3QgbV9kaXJ0eVNvdXJjZVJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IGZkYWQwMzlh
MGMxMGExZjg1MGI2M2MwNDg0ZmUyMTZjZTUxOWQ1ZWMuLjQzNDg4Njg0YWE2NTc3ZTg5Y2U1ZjI5
NDc0OWE0OTMyNjM1MTRmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xMjIsMzYgKzEyMiwyMiBA
QCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24u
aW50ZXJzZWN0KGZpbHRlckRhdGEtPmJvdW5kYXJpZXMpOwogCiAgICAgLy8gRGV0ZXJtaW5lIHNj
YWxlIGZhY3RvciBmb3IgZmlsdGVyLiBUaGUgc2l6ZSBvZiBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZm
ZXJzIHNob3VsZG4ndCBiZSBiaWdnZXIgdGhhbiBrTWF4RmlsdGVyU2l6ZS4KLSAgICBGbG9hdFJl
Y3QgYWJzb2x1dGVEcmF3aW5nUmVnaW9uID0gZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbjsKLSAg
ICBhYnNvbHV0ZURyYXdpbmdSZWdpb24uc2NhbGUoZmlsdGVyU2NhbGUpOwotICAgIEltYWdlQnVm
ZmVyOjpzaXplTmVlZHNDbGFtcGluZyhhYnNvbHV0ZURyYXdpbmdSZWdpb24uc2l6ZSgpLCBmaWx0
ZXJTY2FsZSk7CisgICAgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGZpbHRlckRhdGEt
PmRyYXdpbmdSZWdpb24uc2l6ZSgpLCBmaWx0ZXJTY2FsZSk7CiAKICAgICAvLyBTZXQgdGhlIHJl
bmRlcmluZyBtb2RlIGZyb20gdGhlIHBhZ2UncyBzZXR0aW5ncy4KICAgICBhdXRvIHJlbmRlcmlu
Z01vZGUgPSByZW5kZXJlci5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSA/
IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZDsKIAogICAgIC8vIENyZWF0ZSB0aGUgU1ZHRmlsdGVyIG9iamVjdC4KICAgICBmaWx0ZXJEYXRh
LT5idWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigpOwotICAgIGZpbHRlckRh
dGEtPmZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlckVsZW1lbnQoKSwgKmZpbHRlckRh
dGEtPmJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBmaWx0ZXJEYXRhLT5kcmF3
aW5nUmVnaW9uLCBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3VuZGluZ0JveCk7Cisg
ICAgZmlsdGVyRGF0YS0+ZmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyRWxlbWVudCgp
LCAqZmlsdGVyRGF0YS0+YnVpbGRlciwgcmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIGZpbHRl
ckRhdGEtPmJvdW5kYXJpZXMsIHRhcmdldEJvdW5kaW5nQm94KTsKICAgICBpZiAoIWZpbHRlckRh
dGEtPmZpbHRlcikgewogICAgICAgICBtX3JlbmRlcmVyRmlsdGVyRGF0YU1hcC5yZW1vdmUoJnJl
bmRlcmVyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGF1dG8gbGFzdEVm
ZmVjdCA9IGZpbHRlckRhdGEtPmJ1aWxkZXItPmxhc3RFZmZlY3QoKTsKLSAgICBBU1NFUlQobGFz
dEVmZmVjdCk7Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZVxuIiA8PCAqZmlsdGVyRGF0YS0+YnVp
bGRlci0+bGFzdEVmZmVjdCgpKTsKLQotICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigqZmlsdGVyRGF0YS0+ZmlsdGVyKTsKLSAgICBGbG9hdFJlY3Qgc3Vi
UmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOwotCi0gICAgLy8gQXQgbGVhc3Qg
b25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsCi0gICAgLy8gcmVjYWxj
dWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgotICAgIGlmIChJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgZmlsdGVyU2Nh
bGUpKSB7Ci0gICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyU2NhbGUoZmlsdGVy
U2NhbGUpOwotICAgICAgICBsYXN0RWZmZWN0LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJy
ZWdpb24oKmZpbHRlckRhdGEtPmZpbHRlcik7Ci0gICAgfQotCisgICAgaWYgKGZpbHRlckRhdGEt
PmZpbHRlci0+Y2xhbXBGaWx0ZXJSZWdpb25JZk5lZWRlZCgpKQorICAgICAgICBmaWx0ZXJTY2Fs
ZSA9IGZpbHRlckRhdGEtPmZpbHRlci0+ZmlsdGVyU2NhbGUoKTsKKyAgICAKICAgICAvLyBJZiB0
aGUgZHJhd2luZ1JlZ2lvbiBpcyBlbXB0eSwgd2UgaGF2ZSBzb21ldGhpbmcgbGlrZSA8ZyBmaWx0
ZXI9Ii4uIi8+LgogICAgIC8vIEV2ZW4gaWYgdGhlIHRhcmdldCBvYmplY3RCb3VuZGluZ0JveCgp
IGlzIGVtcHR5LCB3ZSBzdGlsbCBoYXZlIHRvIGRyYXcgdGhlIGxhc3QgZWZmZWN0IHJlc3VsdCBp
bWFnZSBpbiBwb3N0QXBwbHlSZXNvdXJjZS4KICAgICBpZiAoZmlsdGVyRGF0YS0+ZHJhd2luZ1Jl
Z2lvbi5pc0VtcHR5KCkpIHsKQEAgLTIyOSw3ICsyMTUsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3Jh
cGhpYwogCiAgICAgaWYgKCFmaWx0ZXJEYXRhLmJvdW5kYXJpZXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsKLSAgICAgICAgY29udGV4
dC0+ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS5zb3VyY2VHcmFwaGljQnVmZmVy
LmdldCgpLCAqZmlsdGVyRGF0YS5maWx0ZXIpOworICAgICAgICBjb250ZXh0LT5kcmF3RmlsdGVy
ZWRJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZmZXIuZ2V0KCksIGZpbHRl
ckRhdGEuZHJhd2luZ1JlZ2lvbiwgKmZpbHRlckRhdGEuZmlsdGVyKTsKICAgICB9CiAKICAgICBm
aWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggMWM0
Y2RkNWEyMjViODQwZTQwYjM3NDBjMDgwM2IzMWIyY2I3ZjQ2MC4uYTI3YWM0ZmMzNjUxNjMyNjEy
Yjk2NDY4MmQ5YjRiNDljMDk4ODgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAgdm9p
ZCB3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lciYKICAgICAgICAgRmxvYXRSZWN0IGR1bW15UmVjdDsKICAgICAg
ICAgRmxvYXRTaXplIGR1bW15U2NhbGUoMSwgMSk7CiAgICAgICAgIFNWR0ZpbHRlckJ1aWxkZXIg
YnVpbGRlcjsKLSAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZp
bHRlci5maWx0ZXJFbGVtZW50KCksIGJ1aWxkZXIsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIGR1bW15U2NhbGUsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QpOworICAgICAg
ICBhdXRvIGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyLmZpbHRlckVsZW1l
bnQoKSwgYnVpbGRlciwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgZHVtbXlTY2FsZSwg
ZHVtbXlSZWN0LCBkdW1teVJlY3QpOwogICAgICAgICBpZiAoZHVtbXlGaWx0ZXIpIHsKICAgICAg
ICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggMjBiOGI1ZTdiMDdiMzFhMTJjNWFhY2JhMzg1ODkyZmJmM2EyMzU3My4uM2QwNjA3NGY0
NmVjODA0YjJkOTgyMGE5ZmZkODQ5NTBiOGEwMDVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMzUsOCArMjM1
LDEwIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnCiAgICAgaWYgKHBhaW50UmVjdC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgRmxvYXRTaXplIHNjYWxlOwotICAg
IEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShwYWludFJl
Y3Quc2l6ZSgpLCBzY2FsZSk7CisgICAgRmxvYXRTaXplIHNjYWxlKDEsIDEpOworICAgIEZsb2F0
U2l6ZSBjbGFtcGVkU2l6ZSA9IHBhaW50UmVjdC5zaXplKCk7CisgICAgaWYgKEltYWdlQnVmZmVy
OjpzaXplTmVlZHNDbGFtcGluZyhjbGFtcGVkU2l6ZSwgc2NhbGUpKQorICAgICAgICBjbGFtcGVk
U2l6ZSA9IGNsYW1wZWRTaXplICogc2NhbGU7CiAKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRlcmlu
Z01vZGUsIGNvbnRleHQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAppbmRl
eCBmMzlmYzI2ZGQ5MDYyZGFjMWE4NzhiOTEzM2YyNThhMjFiNTkyZWIzLi4xMjY0MmQ2MzM1Y2Zk
NjUyYjI2ZWI3ZmY4NzlkODE5M2Y0NGY2YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKQEAgLTI5LDE5ICsyOSwxOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRl
KFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxk
ZXIsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJT
Y2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
ZmlsdGVyUmVnaW9uLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIEZpbHRlckVmZmVjdCYg
cHJldmlvdXNFZmZlY3QpCitSZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdG
aWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3Vu
ZGluZ0JveCwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCkKIHsKLSAgICByZXR1cm4gY3Jl
YXRlKGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBz
b3VyY2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbiwgY2xpcE9wZXJhdGlvbiwgZmlsdGVyUmVnaW9u
LCAmcHJldmlvdXNFZmZlY3QpOworICAgIHJldHVybiBjcmVhdGUoZmlsdGVyRWxlbWVudCwgYnVp
bGRlciwgcmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIGNsaXBPcGVyYXRpb24sIHRhcmdldEJv
dW5kaW5nQm94LCB0YXJnZXRCb3VuZGluZ0JveCwgJnByZXZpb3VzRWZmZWN0KTsKIH0KIAotUmVm
UHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVy
RWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpCitSZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNy
ZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBi
dWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmls
dGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldEJvdW5kaW5nQm94KQogewotICAgIHJldHVybiBjcmVhdGUoZmlsdGVyRWxlbWVudCwg
YnVpbGRlciwgcmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIHNvdXJjZUltYWdlUmVjdCwgZmls
dGVyUmVnaW9uLCBDbGlwT3BlcmF0aW9uOjpJbnRlcnNlY3QsIHRhcmdldEJvdW5kaW5nQm94LCBu
dWxscHRyKTsKKyAgICByZXR1cm4gY3JlYXRlKGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIHJlbmRl
cmluZ01vZGUsIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uOjpJbnRlcnNlY3QsIGZpbHRlclJl
Z2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIG51bGxwdHIpOwogfQogCi1SZWZQdHI8U1ZHRmlsdGVy
PiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdG
aWx0ZXJCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBGaWx0ZXJFZmZlY3QqIHBy
ZXZpb3VzRWZmZWN0KQorUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmls
dGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRlciYgYnVpbGRlciwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBD
bGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9u
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBGaWx0ZXJFZmZlY3QqIHByZXZp
b3VzRWZmZWN0KQogewotICAgIGF1dG8gZmlsdGVyID0gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXIo
cmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9u
LCBjbGlwT3BlcmF0aW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZmlsdGVyRWxlbWVudC5wcmltaXRp
dmVVbml0cygpKSk7CisgICAgYXV0byBmaWx0ZXIgPSBhZG9wdFJlZigqbmV3IFNWR0ZpbHRlcihy
ZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgY2xpcE9wZXJhdGlvbiwgZmlsdGVyUmVnaW9uLCB0
YXJnZXRCb3VuZGluZ0JveCwgZmlsdGVyRWxlbWVudC5wcmltaXRpdmVVbml0cygpKSk7CiAKICAg
ICBpZiAoIXByZXZpb3VzRWZmZWN0KQogICAgICAgICBidWlsZGVyLnNldHVwQnVpbHRpbkVmZmVj
dHMoU291cmNlR3JhcGhpYzo6Y3JlYXRlKCkpOwpAQCAtNzEsOCArNzEsOCBAQCBSZWZQdHI8U1ZH
RmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50
LCBTVkdGaWx0ZXJCdQogICAgIHJldHVybiBmaWx0ZXI7CiB9CiAKLVNWR0ZpbHRlcjo6U1ZHRmls
dGVyKFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJT
Y2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
ZmlsdGVyUmVnaW9uLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZl
VW5pdHMpCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpTVkdGaWx0ZXIsIHJlbmRlcmluZ01v
ZGUsIGZpbHRlclNjYWxlLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbiwgY2xpcE9wZXJh
dGlvbikKK1NWR0ZpbHRlcjo6U1ZHRmlsdGVyKFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRC
b3VuZGluZ0JveCwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmltaXRpdmVVbml0cykKKyAg
ICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OlNWR0ZpbHRlciwgcmVuZGVyaW5nTW9kZSwgZmlsdGVy
U2NhbGUsIGNsaXBPcGVyYXRpb24sIGZpbHRlclJlZ2lvbikKICAgICAsIG1fdGFyZ2V0Qm91bmRp
bmdCb3godGFyZ2V0Qm91bmRpbmdCb3gpCiAgICAgLCBtX3ByaW1pdGl2ZVVuaXRzKHByaW1pdGl2
ZVVuaXRzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXIuaAppbmRleCA2NWIxMGM5YzY4OWEwN2MxYmFjZjlkODc5MTk2YzY3NDQ4NzkxNDExLi43
NDZjMTdiMzlmYTZiNTM3YjhjMmZiMDYyZTUwZmExYzEwYmViOTBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaApAQCAtMzYsMTggKzM2LDE4
IEBAIGNsYXNzIFNWR0ZpbHRlckVsZW1lbnQ7CiAKIGNsYXNzIFNWR0ZpbHRlciBmaW5hbCA6IHB1
YmxpYyBGaWx0ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVh
dGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBj
b25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdl
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIENsaXBPcGVyYXRpb24sIEZpbHRl
ckVmZmVjdCYgcHJldmlvdXNFZmZlY3QpOwotICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBj
cmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2Rl
LCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUlt
YWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0Qm91bmRpbmdCb3gpOwotICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUo
U1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25z
dCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIENsaXBPcGVyYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCogcHJldmlvdXNFZmZlY3Qp
OworICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYs
IFNWR0ZpbHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRl
clNjYWxlLCBDbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94
LCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNWR0Zp
bHRlcj4gY3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmLCBTVkdGaWx0ZXJCdWlsZGVyJiwgUmVuZGVy
aW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBm
aWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpOworICAgIHN0
YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRl
ckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBD
bGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0KiBwcmV2aW91c0VmZmVjdCk7CiAK
ICAgICBGbG9hdFJlY3QgdGFyZ2V0Qm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBtX3Rhcmdl
dEJvdW5kaW5nQm94OyB9CiAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBsYXN0RWZmZWN0KCkg
Y29uc3QgeyByZXR1cm4gIW1fZXhwcmVzc2lvbi5pc0VtcHR5KCkgPyBtX2V4cHJlc3Npb24ubGFz
dCgpIDogbnVsbHB0cjsgfQorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9leHByZXNzaW9uLmlzRW1wdHkoKSA/IG1fZXhwcmVz
c2lvbi5sYXN0KCkgOiBudWxscHRyOyB9CiAKICAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5
KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgU1ZHRmlsdGVyKFJlbmRlcmluZ01vZGUsIGNv
bnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlvbiwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBw
cmltaXRpdmVVbml0cyk7CisgICAgU1ZHRmlsdGVyKFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVy
UmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCAgU1ZHVW5pdFR5cGVz
OjpTVkdVbml0VHlwZSBwcmltaXRpdmVVbml0cyk7CiAKICAgICAvLyBGSVhNRTogTWVyZ2UgdGhl
IGVmZmVjdEJvdW5kYXJpZXMgaW4gdGhlIGV4cHJlc3Npb24gbm9kZS4KICAgICB2b2lkIHNldEV4
cHJlc3Npb24oRmlsdGVyRWZmZWN0VmVjdG9yJiYgZXhwcmVzc2lvbikgeyBtX2V4cHJlc3Npb24g
PSBXVEZNb3ZlKGV4cHJlc3Npb24pOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWMwMjg4MmE1NDQ5OTk4ZmYwNzUyZGMx
M2ExZWU1NDg4NzNhOTRmZS4uZjYwMGZhOTk1NWNkNjU5MDUzNGVhNGVlYmM4NTJiMDUwNDUwZWIy
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTEyLTAzICBTYWlkIEFib3UtSGFsbGF3YSAg
PHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gKFJFR1JFU1NJT04gcjI4
NTU5Nyk6IFNldCB0aGUgZmlsdGVyUmVnaW9uIG9mIHRoZSBDU1NGaWx0ZXIgYWZ0ZXIgaXQgaXMg
Y3JlYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzODQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VW5za2lwIGxheW91dCB0ZXN0cyB3aGljaCB3ZXJlIHNraXBwZWQgaW4gcjI4NTU5Ny4KKworICAg
ICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisKKzIwMjEtMTItMDMgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSAoUkVHUkVTU0lPTiBy
Mjg1NTk3KTogRml4IFNWR0ZpbHRlciBjbGFtcGluZyBjYWxjdWxhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODQzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5za2lwIHR3byBsYXlvdXQgdGVz
dHMgd2hpY2ggd2VyZSBza2lwcGVkIGluIHIyODU1OTcuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0
YXRpb25zOgorCiAyMDIxLTEyLTAyICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmUtYWRkIHN1cHBvcnQgb2YgaW1hZ2UgY29udHJvbCBtZW51cy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDcwMDBjMDIxMzVmYjczZjlkZmE0MGZiMzRjYmVmYzQ2NjQx
YmRiMjguLjA3MjMxN2ViNmU5ODFjZDg1N2M3NTQ0MTM4MTZiNGU3ZjZmYTIyMGQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtNTE2NCwyMSArNTE2NCwzIEBAIGltcG9ydGVkL2JsaW5rL2h0dHAvdGVz
dHMvcGx1Z2lucyBbIFNraXAgXQogaW1wb3J0ZWQvYmxpbmsvcGx1Z2lucyBbIFNraXAgXQoganMv
ZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmh0bWwgWyBTa2lwIF0KIHVzZXJzY3JpcHRzL3VzZXIt
c2NyaXB0LXBsdWdpbi1kb2N1bWVudC5odG1sIFsgU2tpcCBdCi0KLSMgVGhlc2UgZmlsdGVyIHJl
bGF0ZWQgZmFpbHVyZXMgc2hvdWxkIGJlIGZpeGVkIG9uY2Ugd2Via2l0Lm9yZy9iLzIzMjcwNSBp
cyByZXNvbHZlZAotd2Via2l0Lm9yZy9iLzIzMjcwNSBjb21wb3NpdGluZy9maWx0ZXJzL3N3LW5l
c3RlZC1zaGFkb3ctb3ZlcmxhcHMtaHctbmVzdGVkLXNoYWRvdy5odG1sIFsgU2tpcCBdCi13ZWJr
aXQub3JnL2IvMjMyNzA1IGNvbXBvc2l0aW5nL2ZpbHRlcnMvc3ctc2hhZG93LW92ZXJsYXBzLWh3
LWxheWVyLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgY29tcG9zaXRpbmcvZmls
dGVycy9zdy1zaGFkb3ctb3ZlcmxhcHMtaHctc2hhZG93Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5v
cmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UtZGVsZXRlLmh0bWwgWyBT
a2lwIF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL3N2Zy1ibHVyLWZpbHRlci1j
bGlwcGVkLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9maWx0ZXItaW1h
Z2UvYmFja2dyb3VuZC1maWx0ZXItaW1hZ2UuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIz
MjcwNSBmYXN0L2ZpbHRlci1pbWFnZS9maWx0ZXItaW1hZ2UtYmx1ci5odG1sIFsgU2tpcCBdCi13
ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvZmlsdGVyLWltYWdlL2ZpbHRlci1pbWFnZS1zdmcuaHRt
bCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2ZpbHRlci1pbWFnZS9maWx0ZXIt
aW1hZ2UuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMjcwNSBpbXBvcnRlZC9ibGluay9z
dmcvZmlsdGVycy9maWx0ZXItaHVnZS1jbGFtcGluZy5zdmcgWyBTa2lwIF0KLXdlYmtpdC5vcmcv
Yi8yMzI3MDUgaW1wb3J0ZWQvbW96aWxsYS9zdmcvZHluYW1pYy1maWx0ZXItY29udGVudHMtMDFh
LnN2ZyBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMjcwNSBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9m
aWx0ZXJzL2ZlQ29tcG9zaXRlLTIuc3ZnIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IGlt
cG9ydGVkL21vemlsbGEvc3ZnL2ZpbHRlcnMvZmVTcGVjdWxhckxpZ2h0aW5nLTEuc3ZnIFsgU2tp
cCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IHN2Zy9jdXN0b20vcmVzb3VyY2VzLWNzcy1zY2FsZWQu
aHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMjcwNSBzdmcvZmlsdGVycy9mZUxpZ2h0aW5n
LWNsaXBwZWQuc3ZnIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IHN2Zy9maWx0ZXJzL2Jp
Zy1zaXplZC1vZmYtdmlld3BvcnQtZmlsdGVyLnN2ZyBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445944</attachid>
            <date>2021-12-03 19:57:19 -0800</date>
            <delta_ts>2021-12-03 22:51:34 -0800</delta_ts>
            <desc>Patch for review</desc>
            <filename>Filters-split-css-filter-region.patch</filename>
            <type>text/plain</type>
            <size>35672</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxY2NhMGVkYTNjYzMuLmY2MDBmYTk5NTVjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIxLTEyLTAzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAg
ICAgIFtHUFUgUHJvY2Vzc10gKFJFR1JFU1NJT04gcjI4NTU5Nyk6IFNldCB0aGUgZmlsdGVyUmVn
aW9uIG9mIHRoZSBDU1NGaWx0ZXIgYWZ0ZXIgaXQgaXMgY3JlYXRlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5za2lwIGxheW91dCB0ZXN0cyB3aGlj
aCB3ZXJlIHNraXBwZWQgaW4gcjI4NTU5Ny4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6
CisKIDIwMjEtMTItMDMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0dQVSBQcm9jZXNzXSAoUkVHUkVTU0lPTiByMjg1NTk3KTogRml4IFNWR0ZpbHRlciBj
bGFtcGluZyBjYWxjdWxhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMTUyMjU3OWY2ZTFmLi4w
NzIzMTdlYjZlOTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTE2NCwxOSArNTE2NCwzIEBAIGlt
cG9ydGVkL2JsaW5rL2h0dHAvdGVzdHMvcGx1Z2lucyBbIFNraXAgXQogaW1wb3J0ZWQvYmxpbmsv
cGx1Z2lucyBbIFNraXAgXQoganMvZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmh0bWwgWyBTa2lw
IF0KIHVzZXJzY3JpcHRzL3VzZXItc2NyaXB0LXBsdWdpbi1kb2N1bWVudC5odG1sIFsgU2tpcCBd
Ci0KLSMgVGhlc2UgZmlsdGVyIHJlbGF0ZWQgZmFpbHVyZXMgc2hvdWxkIGJlIGZpeGVkIG9uY2Ug
d2Via2l0Lm9yZy9iLzIzMjcwNSBpcyByZXNvbHZlZAotd2Via2l0Lm9yZy9iLzIzMjcwNSBjb21w
b3NpdGluZy9maWx0ZXJzL3N3LW5lc3RlZC1zaGFkb3ctb3ZlcmxhcHMtaHctbmVzdGVkLXNoYWRv
dy5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IGNvbXBvc2l0aW5nL2ZpbHRlcnMv
c3ctc2hhZG93LW92ZXJsYXBzLWh3LWxheWVyLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8y
MzI3MDUgY29tcG9zaXRpbmcvZmlsdGVycy9zdy1zaGFkb3ctb3ZlcmxhcHMtaHctc2hhZG93Lmh0
bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZl
cmVuY2UtZGVsZXRlLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0
ZXJzL3N2Zy1ibHVyLWZpbHRlci1jbGlwcGVkLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8y
MzI3MDUgZmFzdC9maWx0ZXItaW1hZ2UvYmFja2dyb3VuZC1maWx0ZXItaW1hZ2UuaHRtbCBbIFNr
aXAgXQotd2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2ZpbHRlci1pbWFnZS9maWx0ZXItaW1hZ2Ut
Ymx1ci5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvZmlsdGVyLWltYWdl
L2ZpbHRlci1pbWFnZS1zdmcuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0
L2ZpbHRlci1pbWFnZS9maWx0ZXItaW1hZ2UuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIz
MjcwNSBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9keW5hbWljLWZpbHRlci1jb250ZW50cy0wMWEuc3Zn
IFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IGltcG9ydGVkL21vemlsbGEvc3ZnL2ZpbHRl
cnMvZmVDb21wb3NpdGUtMi5zdmcgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgaW1wb3J0
ZWQvbW96aWxsYS9zdmcvZmlsdGVycy9mZVNwZWN1bGFyTGlnaHRpbmctMS5zdmcgWyBTa2lwIF0K
LXdlYmtpdC5vcmcvYi8yMzI3MDUgc3ZnL2N1c3RvbS9yZXNvdXJjZXMtY3NzLXNjYWxlZC5odG1s
IFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IHN2Zy9maWx0ZXJzL2ZlTGlnaHRpbmctY2xp
cHBlZC5zdmcgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNTk4MDk1NmM2MWMuLjk5ZDkxMGFmYjZj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTEyLTAzICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gKFJFR1JFU1NJ
T04gcjI4NTU5Nyk6IFNldCB0aGUgZmlsdGVyUmVnaW9uIG9mIHRoZSBDU1NGaWx0ZXIgYWZ0ZXIg
aXQgaXMgY3JlYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzODQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW4gdGhpcyBwYXRjaDoKKworICAgICAgICAxLiBUaGUgc291cmNlSW1hZ2VSZWN0IGlz
IHBhc3NlZCB0byBkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcigpLiBUaGUgcGxhbgorICAgICAgICAg
ICBpcyB0byByZW1vdmUgRmlsdGVyOjptX3NvdXJjZUltYWdlIGFuZCBtX3NvdXJjZUltYWdlUmVj
dCBhbmQgaGF2ZSB0aGVtCisgICAgICAgICAgIGFzIGlucHV0cyB0byBGaWx0ZXI6OmFwcGx5KCku
CisKKyAgICAgICAgMi4gc291cmNlSW1hZ2VSZWN0IGlzIG5vIGxvbmdlciBwYXNzZWQgYXMgYW4g
YXJndW1lbnQgdG8gU1ZHRmlsdGVyLiBJdAorICAgICAgICAgICBzaG91bGQgYmUgcGFzc2VkIG9u
bHkgd2hlbiBTVkdGaWx0ZXI6OmFwcGx5KCkgaXMgY2FsbGVkLgorCisgICAgICAgIDMuIENTU0Zp
bHRlcjo6Y3JlYXRlKCkgd2lsbCBjcmVhdGUgYW5kIGJ1aWxkIHRoZSBGaWx0ZXJGdW5jdGlvbnMg
ZnJvbSB0aGUKKyAgICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucy4gU28gd2UgaGF2ZSB0byBwYXNz
IHRoZSB0YXJnZXRCb3VuZGluZ0JveCBzaW5jZSB0aGUKKyAgICAgICAgICAgRmlsdGVyRWZmZWN0
cyB3aWxsIG5lZWQgaXQgd2hlbiBjYWxjdWxhdGluZyB0aGUgb3V0c2V0cy4KKworICAgICAgICA0
LiBUaGUgc3RlcHMgaW4gUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdCgpIGFy
ZToKKyAgICAgICAgICAgYSkgUmVjcmVhdGUgdGhlIENTU0ZpbHRlciBpZiB0aGUgdGFyZ2V0Qm91
bmRpbmdCb3ggY2hhbmdlcy4KKyAgICAgICAgICAgYikgQ2FsY3VsYXRlIHRoZSBmaWx0ZXJSZWdp
b24gPSB0YXJnZXRCb3VuZGluZ0JveCArIG91dHNldHMKKyAgICAgICAgICAgYykgQ2xhbXAgdGhl
IGZpbHRlclJlZ2lvbiBpZiBuZWVkZWQuIFRoaXMgd2lsbCBjaGFuZ2UgdGhlIGZpbHRlclNjYWxl
LgorICAgICAgICAgICBkKSBTZXQgc291cmNlSW1hZ2VSZWN0ID0gZmlsdGVyUmVnaW9uLgorICAg
ICAgICAgICBiKSBSZWNyZWF0ZSB0aGUgc291cmNlSW1hZ2UgaWYgbmVlZGVkLgorICAgICAgICAg
ICBjKSBzZXR1cCB0aGUgY29udGV4dCBmb3IgZHJhd2luZyB0aGUgdGFyZ2V0IHJlbmRlcmVyLgor
CisgICAgICAgIDUuIE1hbmFnaW5nIHRoZSB0YXJnZXRCb3VuZGluZ0JveCBhbmQgdGhlIGZpbHRl
clJlZ2lvbiBpcyBtb3ZlZCBmcm9tIAorICAgICAgICAgICBDU1NGaWx0ZXIgdG8gUmVuZGVyTGF5
ZXJGaWx0ZXJzLgorCisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6RmlsdGVy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Q1NTRmls
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNWR0ZpbHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGaWx0ZXI6OmJ1aWxkRmlsdGVyRnVuY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpzZXRGaWx0
ZXJSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6bV9oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0
cmljdGVkQnlTZWN1cml0eU9yaWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NG
aWx0ZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZVJlY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRmlsdGVyOjpsYXN0RWZmZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZpbHRlcjo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5
UmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OnNldFNvdXJjZUlt
YWdlUmVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjpidWlsZEZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmFwcGx5RmlsdGVyRWZmZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YWxsb2NhdGVCYWNraW5nU3RvcmUp
OiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJj
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OndyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
aWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OlNWR0ZpbHRlcik6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisKIDIwMjEtMTIt
MDMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQ
cm9jZXNzXSAoUkVHUkVTU0lPTiByMjg1NTk3KTogRml4IFNWR0ZpbHRlciBjbGFtcGluZyBjYWxj
dWxhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4
IDI2OGY0OGMzMTRjNy4uNjUzMTIyNTIyYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuY3BwCkBAIC0xMjQsMTIgKzEyNCwxMiBAQCBSZWZQdHI8SW1hZ2U+IENT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBG
bG9hdFNpegogICAgIGF1dG8gc291cmNlSW1hZ2VSZWN0ID0gRmxvYXRSZWN0IHsgeyB9LCBzaXpl
IH07CiAgICAgc291cmNlSW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBzb3VyY2VJ
bWFnZVJlY3QpOwogCi0gICAgYXV0byBjc3NGaWx0ZXIgPSBDU1NGaWx0ZXI6OmNyZWF0ZShtX2Zp
bHRlck9wZXJhdGlvbnMsIHJlbmRlcmluZ01vZGUpOwotCi0gICAgY3NzRmlsdGVyLT5zZXRTb3Vy
Y2VJbWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KTsKLSAgICBpZiAoIWNzc0ZpbHRlci0+YnVpbGRG
aWx0ZXJGdW5jdGlvbnMocmVuZGVyZXIsIG1fZmlsdGVyT3BlcmF0aW9ucykpCisgICAgYXV0byBj
c3NGaWx0ZXIgPSBDU1NGaWx0ZXI6OmNyZWF0ZShyZW5kZXJlciwgbV9maWx0ZXJPcGVyYXRpb25z
LCByZW5kZXJpbmdNb2RlLCBGbG9hdFNpemUgeyAxLCAxIH0sIEZpbHRlcjo6Q2xpcE9wZXJhdGlv
bjo6SW50ZXJzZWN0LCBzb3VyY2VJbWFnZVJlY3QpOworICAgIGlmICghY3NzRmlsdGVyKQogICAg
ICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKIAorICAgIGNzc0ZpbHRlci0+c2V0Rmls
dGVyUmVnaW9uKHNvdXJjZUltYWdlUmVjdCk7CisKICAgICBpZiAoYXV0byBpbWFnZSA9IHNvdXJj
ZUltYWdlLT5maWx0ZXJlZEltYWdlKCpjc3NGaWx0ZXIpKQogICAgICAgICByZXR1cm4gaW1hZ2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaAppbmRleCA3NTBkYjRlZTg5MTYuLjJmZDQyMjliNzEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaApAQCAtMTQ2LDcgKzE0Niw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlz
KS5mbHVzaERyYXdpbmdDb250ZXh0KCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gZmlsdGVyLmFw
cGx5KHRoaXMpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGZpbHRlci5hcHBseSh0aGlzLCB7IHsg
fSwgbG9naWNhbFNpemUoKSB9KTsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZTM3YjcxNTU3MTQwLi4yY2JiY2M1NjYzZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcApAQCAtNjMxLDkgKzYzMSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3QKICAg
ICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRoaXMsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBGaWx0ZXImIGZp
bHRlcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBG
aWx0ZXImIGZpbHRlcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGZpbHRlci5hcHBseShzb3VyY2VJ
bWFnZSk7CisgICAgYXV0byByZXN1bHQgPSBmaWx0ZXIuYXBwbHkoc291cmNlSW1hZ2UsIHNvdXJj
ZUltYWdlUmVjdCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggM2Q4ZDNhNzEyNTNlLi4zMmVhMmVkMTQ1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00NTIsNyArNDUyLDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVm
ZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihSZWZQdHI8SW1hZ2VCdWZmZXI+LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1h
Z2UsIEZpbHRlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3RmlsdGVy
ZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVy
bihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlci5jcHAKaW5kZXggMzJjZDgwOTcxMTU0Li4zOWI2MGRiZjNlMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKQEAgLTI2
LDI1ICsyNiwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgog
CisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiRmlsdGVySW1hZ2UuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWx0ZXI6OkZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVy
VHlwZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRl
clNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24pCitGaWx0ZXI6OkZpbHRlcihGaWx0
ZXI6OlR5cGUgZmlsdGVyVHlwZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBG
bG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKQogICAgIDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlw
ZSkKICAgICAsIG1fcmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKQogICAgICwgbV9maWx0ZXJT
Y2FsZShmaWx0ZXJTY2FsZSkKICAgICAsIG1fY2xpcE9wZXJhdGlvbihjbGlwT3BlcmF0aW9uKQot
ewotfQotCi1GaWx0ZXI6OkZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24s
IENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbikKLSAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRl
clR5cGUpCi0gICAgLCBtX3JlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSkKLSAgICAsIG1fZmls
dGVyU2NhbGUoZmlsdGVyU2NhbGUpCi0gICAgLCBtX3NvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFn
ZVJlY3QpCiAgICAgLCBtX2ZpbHRlclJlZ2lvbihmaWx0ZXJSZWdpb24pCi0gICAgLCBtX2NsaXBP
cGVyYXRpb24oY2xpcE9wZXJhdGlvbikKIHsKIH0KIApAQCAtOTYsOSArODgsMTEgQEAgYm9vbCBG
aWx0ZXI6OmNsYW1wRmlsdGVyUmVnaW9uSWZOZWVkZWQoKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1SZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlcjo6YXBwbHkoSW1hZ2VCdWZmZXIqIHNvdXJjZUlt
YWdlKQorUmVmUHRyPEZpbHRlckltYWdlPiBGaWx0ZXI6OmFwcGx5KEltYWdlQnVmZmVyKiBzb3Vy
Y2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCiB7CisgICAgLy8gRklY
TUU6IEEgRmlsdGVySW1hZ2Ugc2hvdWxkIGJlIGNyZWF0ZWQgZnJvbSBzb3VyY2VJbWFnZSBhbmQg
c291cmNlSW1hZ2VSZWN0IGFuZCBpdCB3aWxsIGJlIHBhc3NlZCBhcyB0aGUgaW5wdXQgdG8gYXBw
bHkoKS4KICAgICBzZXRTb3VyY2VJbWFnZShzb3VyY2VJbWFnZSk7CisgICAgc2V0U291cmNlSW1h
Z2VSZWN0KHNvdXJjZUltYWdlUmVjdCk7CiAKICAgICBhdXRvIHJlc3VsdCA9IGFwcGx5KCk7CiAg
ICAgaWYgKCFyZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXIuaAppbmRleCBjYTFkOTUzNGM3ZjguLmE4ZjU1NWZiZDczNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCkBA
IC03MiwyMiArNzIsMjAgQEAgcHVibGljOgogICAgIGJvb2wgY2xhbXBGaWx0ZXJSZWdpb25JZk5l
ZWRlZCgpOwogICAgIAogICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseSgpID0g
MDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KEltYWdlQnVm
ZmVyKiBzb3VyY2VJbWFnZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEZpbHRlckltYWdl
PiBhcHBseShJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
SW1hZ2VSZWN0KTsKIAogcHJvdGVjdGVkOgotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUsIFJlbmRl
cmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24gPSBD
bGlwT3BlcmF0aW9uOjpJbnRlcnNlY3QpOwotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUsIFJlbmRl
cmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJh
dGlvbiA9IENsaXBPcGVyYXRpb246OkludGVyc2VjdCk7CisgICAgRmlsdGVyKEZpbHRlcjo6VHlw
ZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJh
dGlvbiwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24gPSB7IH0pOwogCiBwcml2YXRlOgog
ICAgIFJlbmRlcmluZ01vZGUgbV9yZW5kZXJpbmdNb2RlOwotCiAgICAgRmxvYXRTaXplIG1fZmls
dGVyU2NhbGU7Ci0gICAgRmxvYXRSZWN0IG1fc291cmNlSW1hZ2VSZWN0OworICAgIENsaXBPcGVy
YXRpb24gbV9jbGlwT3BlcmF0aW9uOwogICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsKIAor
ICAgIC8vIEZJWE1FOiB0aGVzZSBzaG91bGQgbm90IGJlIG1lbWJlcnMgb2YgRmlsdGVyLiBUaGV5
IHNob3VsZCBiZSBwYXNzZWQgdG8gRmlsdGVyOjphcHBseSgpLgorICAgIEZsb2F0UmVjdCBtX3Nv
dXJjZUltYWdlUmVjdDsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1hZ2U7Ci0K
LSAgICBDbGlwT3BlcmF0aW9uIG1fY2xpcE9wZXJhdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKaW5kZXggYzkxOWQ5
ODA1NDNiLi42MjZlNzg3OGVmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
Y3BwCkBAIC00NCwxNiArNDQsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8
Q1NTRmlsdGVyPiBDU1NGaWx0ZXI6OmNyZWF0ZShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVy
YXRpb25zLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHNjYWxlRmFjdG9yLCBD
bGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24pCitSZWZQdHI8Q1NTRmlsdGVyPiBDU1NGaWx0ZXI6
OmNyZWF0ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYg
b3BlcmF0aW9ucywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUm
IGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0Qm91bmRpbmdCb3gpCiB7CiAgICAgYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMgPSBvcGVyYXRpb25zLmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpOwogICAgIGJvb2wgaGFz
RmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4gPSBvcGVyYXRpb25z
Lmhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKCk7CiAKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGaWx0ZXIocmVuZGVyaW5nTW9kZSwgc2NhbGVGYWN0
b3IsIGNsaXBPcGVyYXRpb24sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscywgaGFzRmlsdGVyVGhh
dFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4pKTsKKyAgICBhdXRvIGZpbHRlciA9
IGFkb3B0UmVmKCpuZXcgQ1NTRmlsdGVyKHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBjbGlw
T3BlcmF0aW9uLCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMsIGhhc0ZpbHRlclRoYXRTaG91bGRC
ZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKSk7CisgICAgCisgICAgaWYgKCFmaWx0ZXItPmJ1
aWxkRmlsdGVyRnVuY3Rpb25zKHJlbmRlcmVyLCBvcGVyYXRpb25zLCB0YXJnZXRCb3VuZGluZ0Jv
eCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGZpbHRlcjsKIH0KIAot
Q1NTRmlsdGVyOjpDU1NGaWx0ZXIoUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCBz
Y2FsZUZhY3RvciwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uLCBib29sIGhhc0ZpbHRlclRo
YXRNb3Zlc1BpeGVscywgYm9vbCBoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1
cml0eU9yaWdpbikKLSAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OkNTU0ZpbHRlciwgcmVuZGVy
aW5nTW9kZSwgRmxvYXRTaXplIHsgc2NhbGVGYWN0b3IsIHNjYWxlRmFjdG9yIH0sIGNsaXBPcGVy
YXRpb24pCitDU1NGaWx0ZXI6OkNTU0ZpbHRlcihSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlv
biwgYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMsIGJvb2wgaGFzRmlsdGVyVGhhdFNob3Vs
ZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4pCisgICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBl
OjpDU1NGaWx0ZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBjbGlwT3BlcmF0aW9uKQog
ICAgICwgbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxz
KQogICAgICwgbV9oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdp
bihoYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbikKIHsKQEAg
LTIwMiw3ICsyMDcsNyBAQCBzdGF0aWMgUmVmUHRyPEZpbHRlckVmZmVjdD4gY3JlYXRlU2VwaWFF
ZmZlY3QoY29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdAogICAgIHJldHVybiBGRUNv
bG9yTWF0cml4OjpjcmVhdGUoRkVDT0xPUk1BVFJJWF9UWVBFX01BVFJJWCwgV1RGTW92ZShpbnB1
dFBhcmFtZXRlcnMpKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZVNWR0Zp
bHRlcihDU1NGaWx0ZXImIGZpbHRlciwgY29uc3QgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uJiBm
aWx0ZXJPcGVyYXRpb24sIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBGaWx0ZXJFZmZlY3QmIHBy
ZXZpb3VzRWZmZWN0KQorc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZVNWR0ZpbHRlcihD
U1NGaWx0ZXImIGZpbHRlciwgY29uc3QgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXJP
cGVyYXRpb24sIFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dEJvdW5kaW5nQm94LCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0KQogewogICAgIGF1dG8m
IHJlZmVyZW5jZWRTVkdSZXNvdXJjZXMgPSByZW5kZXJlci5lbnN1cmVSZWZlcmVuY2VkU1ZHUmVz
b3VyY2VzKCk7CiAgICAgYXV0byogZmlsdGVyRWxlbWVudCA9IHJlZmVyZW5jZWRTVkdSZXNvdXJj
ZXMucmVmZXJlbmNlZEZpbHRlckVsZW1lbnQocmVuZGVyZXIuZG9jdW1lbnQoKSwgZmlsdGVyT3Bl
cmF0aW9uKTsKQEAgLTIxNiwxMCArMjIxLDEwIEBAIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBj
cmVhdGVTVkdGaWx0ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFJlZmVyZW5jZUZpbHRlCiAg
ICAgfQogCiAgICAgU1ZHRmlsdGVyQnVpbGRlciBidWlsZGVyOwotICAgIHJldHVybiBTVkdGaWx0
ZXI6OmNyZWF0ZSgqZmlsdGVyRWxlbWVudCwgYnVpbGRlciwgZmlsdGVyLnJlbmRlcmluZ01vZGUo
KSwgZmlsdGVyLmZpbHRlclNjYWxlKCksIGZpbHRlci5zb3VyY2VJbWFnZVJlY3QoKSwgZmlsdGVy
LmZpbHRlclJlZ2lvbigpLCBmaWx0ZXIuY2xpcE9wZXJhdGlvbigpLCBwcmV2aW91c0VmZmVjdCk7
CisgICAgcmV0dXJuIFNWR0ZpbHRlcjo6Y3JlYXRlKCpmaWx0ZXJFbGVtZW50LCBidWlsZGVyLCBm
aWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBmaWx0ZXIuZmlsdGVyU2NhbGUoKSwgZmlsdGVyLmNsaXBP
cGVyYXRpb24oKSwgdGFyZ2V0Qm91bmRpbmdCb3gsIHByZXZpb3VzRWZmZWN0KTsKIH0KIAotYm9v
bCBDU1NGaWx0ZXI6OmJ1aWxkRmlsdGVyRnVuY3Rpb25zKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zKQorYm9vbCBDU1NGaWx0ZXI6OmJ1
aWxkRmlsdGVyRnVuY3Rpb25zKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJP
cGVyYXRpb25zJiBvcGVyYXRpb25zLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94
KQogewogICAgIG1fZnVuY3Rpb25zLmNsZWFyKCk7CiAgICAgbV9vdXRzZXRzID0geyB9OwpAQCAt
Mjc2LDcgKzI4MSw3IEBAIGJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOgotICAgICAgICAg
ICAgZmlsdGVyID0gY3JlYXRlU1ZHRmlsdGVyKCp0aGlzLCBkb3duY2FzdDxSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24+KCpvcGVyYXRpb24pLCByZW5kZXJlciwgKnByZXZpb3VzRWZmZWN0KTsKKyAg
ICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZVNWR0ZpbHRlcigqdGhpcywgZG93bmNhc3Q8UmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSwgcmVuZGVyZXIsIHRhcmdldEJvdW5kaW5n
Qm94LCAqcHJldmlvdXNFZmZlY3QpOwogICAgICAgICAgICAgZWZmZWN0ID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIGJyZWFrOwogCkBAIC0zMTksMTggKzMyNCw2IEBAIGJvb2wgQ1NTRmlsdGVyOjpi
dWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVy
T3BlcmF0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ1NTRmlsdGVyOjp1cGRhdGVCYWNr
aW5nU3RvcmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCkKLXsKLSAgICBpZiAoZmls
dGVyUmVjdC5pc0VtcHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGZpbHRl
clJlY3Quc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGZpbHRlclJl
Y3QgPT0gc291cmNlSW1hZ2VSZWN0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNl
dFNvdXJjZUltYWdlUmVjdChmaWx0ZXJSZWN0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogUmVm
UHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpsYXN0RWZmZWN0KCkgY29uc3QKIHsKICAgICBp
ZiAobV9mdW5jdGlvbnMuaXNFbXB0eSgpKQpAQCAtMzY3LDMzICszNjAsMjQgQEAgdm9pZCBDU1NG
aWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCiBSZWZQdHI8RmlsdGVySW1hZ2U+IENT
U0ZpbHRlcjo6YXBwbHkoKQogewogICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBtX2Z1bmN0aW9u
cykgeworICAgICAgICBpZiAoZnVuY3Rpb24tPmlzU1ZHRmlsdGVyKCkpCisgICAgICAgICAgICBk
b3duY2FzdDxTVkdGaWx0ZXI+KGZ1bmN0aW9uLnB0cigpKS0+c2V0U291cmNlSW1hZ2VSZWN0KHNv
dXJjZUltYWdlUmVjdCgpKTsKICAgICAgICAgaWYgKCFmdW5jdGlvbi0+YXBwbHkoKnRoaXMpKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBsYXN0RWZmZWN0
KCktPmZpbHRlckltYWdlKCk7CiB9CiAKLUxheW91dFJlY3QgQ1NTRmlsdGVyOjpjb21wdXRlU291
cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3Qs
IGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICAvLyBUaGUgcmVzdWx0IG9mIHRo
aXMgZnVuY3Rpb24gaXMgdGhlIGFyZWEgaW4gdGhlICJmaWx0ZXJCb3hSZWN0IiB0aGF0IG5lZWRz
IHRvIGJlIHJlcGFpbnRlZCwgc28gdGhhdCB3ZSBmdWxseSBjb3ZlciB0aGUgImRpcnR5UmVjdCIu
Ci0gICAgYXV0byByZWN0Rm9yUmVwYWludCA9IGRpcnR5UmVjdDsKLSAgICBpZiAoaGFzRmlsdGVy
VGhhdE1vdmVzUGl4ZWxzKCkpCi0gICAgICAgIHJlY3RGb3JSZXBhaW50ICs9IG91dHNldHMoKTsK
LSAgICByZWN0Rm9yUmVwYWludC5pbnRlcnNlY3QoZmlsdGVyQm94UmVjdCk7Ci0gICAgcmV0dXJu
IHJlY3RGb3JSZXBhaW50OwotfQotCi12b2lkIENTU0ZpbHRlcjo6c2V0U291cmNlSW1hZ2VSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KQordm9pZCBDU1NGaWx0ZXI6OnNldEZp
bHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikKIHsKLSAgICBGaWx0ZXI6
OnNldEZpbHRlclJlZ2lvbihzb3VyY2VJbWFnZVJlY3QpOwotICAgIEZpbHRlcjo6c2V0U291cmNl
SW1hZ2VSZWN0KHNvdXJjZUltYWdlUmVjdCk7CisgICAgRmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24o
ZmlsdGVyUmVnaW9uKTsKIAogICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBtX2Z1bmN0aW9ucykg
ewotICAgICAgICBpZiAoZnVuY3Rpb24tPmlzU1ZHRmlsdGVyKCkpIHsKLSAgICAgICAgICAgIGRv
d25jYXN0PFNWR0ZpbHRlcj4oZnVuY3Rpb24ucHRyKCkpLT5zZXRGaWx0ZXJSZWdpb24oc291cmNl
SW1hZ2VSZWN0KTsKLSAgICAgICAgICAgIGRvd25jYXN0PFNWR0ZpbHRlcj4oZnVuY3Rpb24ucHRy
KCkpLT5zZXRTb3VyY2VJbWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KTsKLSAgICAgICAgfQorICAg
ICAgICBpZiAoZnVuY3Rpb24tPmlzU1ZHRmlsdGVyKCkpCisgICAgICAgICAgICBkb3duY2FzdDxT
VkdGaWx0ZXI+KGZ1bmN0aW9uLnB0cigpKS0+c2V0RmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lvbik7
CiAgICAgfQorCisgICAgY2xhbXBGaWx0ZXJSZWdpb25JZk5lZWRlZCgpOwogfQogCiBJbnRPdXRz
ZXRzIENTU0ZpbHRlcjo6b3V0c2V0cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmls
dGVyLmgKaW5kZXggNzUzOTliMzdjZjM3Li45YzM1NTJhMzg2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmgKQEAgLTQyLDEwICs0Miw5IEBAIGNsYXNzIFNvdXJjZUdyYXBoaWM7
CiBjbGFzcyBDU1NGaWx0ZXIgZmluYWwgOiBwdWJsaWMgRmlsdGVyIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENTU0ZpbHRlcj4gY3Jl
YXRlKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCBzY2FsZUZh
Y3RvciA9IDEsIENsaXBPcGVyYXRpb24gPSBDbGlwT3BlcmF0aW9uOjpJbnRlcnNlY3QpOworICAg
IHN0YXRpYyBSZWZQdHI8Q1NTRmlsdGVyPiBjcmVhdGUoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNj
YWxlLCBDbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KTsK
IAotICAgIHZvaWQgc2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIGJv
b2wgYnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmKTsKKyAgICB2b2lkIHNldEZpbHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3QmKTsKIAog
ICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNG
aWx0ZXJUaGF0TW92ZXNQaXhlbHM7IH0KICAgICBib29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJl
c3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9oYXNGaWx0ZXJUaGF0
U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbjsgfQpAQCAtNTYsMTIgKzU1LDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIGNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwogICAgIFJlZlB0
cjxGaWx0ZXJJbWFnZT4gYXBwbHkoKSBvdmVycmlkZTsKIAotICAgIGJvb2wgdXBkYXRlQmFja2lu
Z1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpOwotCi0gICAgTGF5b3V0UmVj
dCBjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dFJlY3QmIGZp
bHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCk7Ci0KIHByaXZhdGU6Ci0g
ICAgQ1NTRmlsdGVyKFJlbmRlcmluZ01vZGUsIGZsb2F0IHNjYWxlRmFjdG9yLCBDbGlwT3BlcmF0
aW9uLCBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscywgYm9vbCBoYXNGaWx0ZXJUaGF0U2hv
dWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbik7CisgICAgQ1NTRmlsdGVyKFJlbmRlcmlu
Z01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGJvb2wg
aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBib29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3Ry
aWN0ZWRCeVNlY3VyaXR5T3JpZ2luKTsKKworICAgIGJvb2wgYnVpbGRGaWx0ZXJGdW5jdGlvbnMo
UmVuZGVyRWxlbWVudCYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldEJvdW5kaW5nQm94KTsKIAogI2lmIFVTRShDT1JFX0lNQUdFKQogICAgIGJvb2wgc3Vw
cG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKaW5kZXggYWU3MTIyNDRmOWM4
Li5jZmRiMTc0MmI5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlcnMuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBSZW5kZXJMYXllckZpbHRl
cnM6OmJ1aWxkRmlsdGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBmbG9hdCBzY2FsZUZhY3Rv
ciwKICAgICAvLyBJZiB0aGUgZmlsdGVyIGZhaWxzIHRvIGJ1aWxkLCByZW1vdmUgaXQgZnJvbSB0
aGUgbGF5ZXIuIEl0IHdpbGwgc3RpbGwgYXR0ZW1wdCB0bwogICAgIC8vIGdvIHRocm91Z2ggcmVn
dWxhciBwcm9jZXNzaW5nIChlLmcuIGNvbXBvc2l0aW5nKSwgYnV0IG5ldmVyIGFwcGx5IGFueXRo
aW5nLgogICAgIC8vIEZJWE1FOiB0aGlzIHJlYnVpbGRzIHRoZSBlbnRpcmUgZWZmZWN0cyBjaGFp
biBldmVuIGlmIHRoZSBmaWx0ZXIgc3R5bGUgZGlkbid0IGNoYW5nZS4KLSAgICBtX2ZpbHRlciA9
IENTU0ZpbHRlcjo6Y3JlYXRlKHJlbmRlcmVyLnN0eWxlKCkuZmlsdGVyKCksIHJlbmRlcmluZ01v
ZGUsIHNjYWxlRmFjdG9yLCBGaWx0ZXI6OkNsaXBPcGVyYXRpb246OlVuaXRlKTsKKyAgICBtX2Zp
bHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKHJlbmRlcmVyLCByZW5kZXJlci5zdHlsZSgpLmZpbHRl
cigpLCByZW5kZXJpbmdNb2RlLCBGbG9hdFNpemUgeyBzY2FsZUZhY3Rvciwgc2NhbGVGYWN0b3Ig
fSwgRmlsdGVyOjpDbGlwT3BlcmF0aW9uOjpVbml0ZSwgbV90YXJnZXRCb3VuZGluZ0JveCk7CiB9
CiAKIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjppbnB1dENvbnRleHQoKQpA
QCAtMTI5LDEwICsxMjksMTAgQEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6
OmlucHV0Q29udGV4dCgpCiAgICAgcmV0dXJuIG1fc291cmNlSW1hZ2UgPyAmbV9zb3VyY2VJbWFn
ZS0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAotdm9pZCBSZW5kZXJMYXllckZpbHRlcnM6OmFs
bG9jYXRlQmFja2luZ1N0b3JlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkK
K3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICBhdXRvJiBmaWx0ZXIg
PSAqbV9maWx0ZXI7Ci0gICAgYXV0byBsb2dpY2FsU2l6ZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRl
clNjYWxlKGZpbHRlci5zb3VyY2VJbWFnZVJlY3QoKS5zaXplKCkpOworICAgIGF1dG8gbG9naWNh
bFNpemUgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZShtX3NvdXJjZUltYWdlUmVjdC5zaXpl
KCkpOwogCiAgICAgaWYgKCFtX3NvdXJjZUltYWdlIHx8IG1fc291cmNlSW1hZ2UtPmxvZ2ljYWxT
aXplKCkgIT0gbG9naWNhbFNpemUpIHsKICNpZiBVU0UoRElSRUNUMkQpCkBAIC0xNTEsNDIgKzE1
MSw1OSBAQCBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJF
ZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdAogICAgIGlmICghbV9maWx0ZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVyOwotICAg
IGF1dG8gZmlsdGVyU291cmNlUmVjdCA9IGZpbHRlci5jb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9y
RGlydHlSZWN0KGZpbHRlckJveFJlY3QsIGRpcnR5UmVjdCk7Ci0gICAgaWYgKGZpbHRlclNvdXJj
ZVJlY3QuaXNFbXB0eSgpKQorICAgIC8vIENhbGN1bGF0ZSB0YXJnZXRCb3VuZGluZ0JveCBzaW5j
ZSBpdCB3aWxsIGJlIHVzZWQgaWYgdGhlIGZpbHRlciBpcyBjcmVhdGVkLgorICAgIGF1dG8gdGFy
Z2V0Qm91bmRpbmdCb3ggPSBpbnRlcnNlY3Rpb24oZmlsdGVyQm94UmVjdCwgZGlydHlSZWN0KTsK
KyAgICBpZiAodGFyZ2V0Qm91bmRpbmdCb3guaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGlmIChtX3RhcmdldEJvdW5kaW5nQm94ICE9IHRhcmdldEJvdW5kaW5nQm94
KSB7CisgICAgICAgIG1fdGFyZ2V0Qm91bmRpbmdCb3ggPSB0YXJnZXRCb3VuZGluZ0JveDsKKyAg
ICAgICAgLy8gRklYTUU6IHRoaXMgcmVidWlsZHMgdGhlIGVudGlyZSBlZmZlY3RzIGNoYWluIGV2
ZW4gaWYgdGhlIGZpbHRlciBzdHlsZSBkaWRuJ3QgY2hhbmdlLgorICAgICAgICBtX2ZpbHRlciA9
IENTU0ZpbHRlcjo6Y3JlYXRlKHJlbmRlcmVyLCByZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBt
X2ZpbHRlci0+cmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci0+ZmlsdGVyU2NhbGUoKSwgRmlsdGVy
OjpDbGlwT3BlcmF0aW9uOjpVbml0ZSwgbV90YXJnZXRCb3VuZGluZ0JveCk7CisgICAgfQorCisg
ICAgaWYgKCFtX2ZpbHRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBib29sIGhh
c1VwZGF0ZWRCYWNraW5nU3RvcmUgPSBmaWx0ZXIudXBkYXRlQmFja2luZ1N0b3JlUmVjdChmaWx0
ZXJTb3VyY2VSZWN0KTsKKyAgICBhdXRvJiBmaWx0ZXIgPSAqbV9maWx0ZXI7CisgICAgCisgICAg
Ly8gRm9yIENTU0ZpbHRlciwgZmlsdGVyUmVnaW9uID0gdGFyZ2V0Qm91bmRpbmdCb3ggKyBmaWx0
ZXItPm91dHNldHMoKQorICAgIGF1dG8gZmlsdGVyUmVnaW9uID0gdGFyZ2V0Qm91bmRpbmdCb3g7
CisgICAgaWYgKGZpbHRlci5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSkgeworICAgICAgICBm
aWx0ZXJSZWdpb24gKz0gZmlsdGVyLm91dHNldHMoKTsKKyAgICAgICAgZmlsdGVyUmVnaW9uID0g
aW50ZXJzZWN0aW9uKGZpbHRlckJveFJlY3QsIGZpbHRlclJlZ2lvbik7CisgICAgfQorCisgICAg
aWYgKGZpbHRlclJlZ2lvbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgLy8gRklYTUU6IHRoaXMgY2FsbCBzaG91bGQgYmUgbW92ZWQgdG8gQ1NTRmlsdGVyOjpjcmVh
dGUoKSB3aGVuIEZpbHRlckVmZmVjdCBkb2VzIG5vdCBzdG9yZSBpdHMgZ2VvbWV0cnkuCi0gICAg
aWYgKGhhc1VwZGF0ZWRCYWNraW5nU3RvcmUgfHwgIW1fZmlsdGVyLT5sYXN0RWZmZWN0KCkpIHsK
LSAgICAgICAgLy8gSWYgdGhlIGZpbHRlciBmYWlscyB0byBidWlsZCwgcmVtb3ZlIGl0IGZyb20g
dGhlIGxheWVyLiBJdCB3aWxsIHN0aWxsIGF0dGVtcHQgdG8KLSAgICAgICAgLy8gZ28gdGhyb3Vn
aCByZWd1bGFyIHByb2Nlc3NpbmcgKGUuZy4gY29tcG9zaXRpbmcpLCBidXQgbmV2ZXIgYXBwbHkg
YW55dGhpbmcuCi0gICAgICAgIGlmICghbV9maWx0ZXItPmJ1aWxkRmlsdGVyRnVuY3Rpb25zKHJl
bmRlcmVyLCByZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpKSkKLSAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIC8vIEZvciBDU1NGaWx0ZXIsIHNvdXJjZUltYWdlUmVjdCA9IGZpbHRlclJl
Z2lvbi4KKyAgICBib29sIGhhc1VwZGF0ZWRCYWNraW5nU3RvcmUgPSBmYWxzZTsKKyAgICBpZiAo
bV9zb3VyY2VJbWFnZVJlY3QgIT0gZmlsdGVyUmVnaW9uKSB7CisgICAgICAgIG1fc291cmNlSW1h
Z2VSZWN0ID0gZmlsdGVyUmVnaW9uOworICAgICAgICBoYXNVcGRhdGVkQmFja2luZ1N0b3JlID0g
dHJ1ZTsKICAgICB9CiAKICAgICBpZiAoIWZpbHRlci5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMo
KSkKICAgICAgICAgbV9yZXBhaW50UmVjdCA9IGRpcnR5UmVjdDsKICAgICBlbHNlIHsKICAgICAg
ICAgaWYgKGhhc1VwZGF0ZWRCYWNraW5nU3RvcmUpCi0gICAgICAgICAgICBtX3JlcGFpbnRSZWN0
ID0gZmlsdGVyU291cmNlUmVjdDsKKyAgICAgICAgICAgIG1fcmVwYWludFJlY3QgPSBmaWx0ZXJS
ZWdpb247CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9yZXBhaW50UmVjdCA9IGRpcnR5
UmVjdDsKICAgICAgICAgICAgIG1fcmVwYWludFJlY3QudW5pdGUobGF5ZXJSZXBhaW50UmVjdCk7
Ci0gICAgICAgICAgICBtX3JlcGFpbnRSZWN0LmludGVyc2VjdChmaWx0ZXJTb3VyY2VSZWN0KTsK
KyAgICAgICAgICAgIG1fcmVwYWludFJlY3QuaW50ZXJzZWN0KGZpbHRlclJlZ2lvbik7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgbV9wYWludE9mZnNldCA9IGZpbHRlclNvdXJjZVJlY3QubG9jYXRp
b24oKTsKLSAgICByZXNldERpcnR5U291cmNlUmVjdCgpOwogCi0gICAgZmlsdGVyLmNsYW1wRmls
dGVyUmVnaW9uSWZOZWVkZWQoKTsKKyAgICBtX3BhaW50T2Zmc2V0ID0gZmlsdGVyUmVnaW9uLmxv
Y2F0aW9uKCk7CisgICAgcmVzZXREaXJ0eVNvdXJjZVJlY3QoKTsKIAotICAgIGlmIChoYXNVcGRh
dGVkQmFja2luZ1N0b3JlKQotICAgICAgICBhbGxvY2F0ZUJhY2tpbmdTdG9yZShkZXN0aW5hdGlv
bkNvbnRleHQpOworICAgIGZpbHRlci5zZXRGaWx0ZXJSZWdpb24obV9zb3VyY2VJbWFnZVJlY3Qp
OworICAgIGFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoZGVzdGluYXRpb25Db250ZXh0KTsK
IAogICAgIGF1dG8qIHNvdXJjZUdyYXBoaWNzQ29udGV4dCA9IGlucHV0Q29udGV4dCgpOwotICAg
IGlmICghc291cmNlR3JhcGhpY3NDb250ZXh0IHx8IGZpbHRlci5maWx0ZXJSZWdpb24oKS5pc0Vt
cHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGZpbHRlci5maWx0ZXJSZWdp
b24oKS5zaXplKCkpKQorICAgIGlmICghc291cmNlR3JhcGhpY3NDb250ZXh0KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgY29udGV4dCBzbyB0aGF0IHRo
ZSBjb250ZW50cyBvZiB0aGUgbGF5ZXIgaXMgY2FwdHVyZWQgaW4gdGhlIG9mZnNjcmVlbiBtZW1v
cnkgYnVmZmVyLgpAQCAtMjA3LDcgKzIyNCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjph
cHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkKIAog
ICAgIGF1dG8mIGZpbHRlciA9ICptX2ZpbHRlcjsKIAotICAgIGRlc3RpbmF0aW9uQ29udGV4dC5k
cmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihtX3NvdXJjZUltYWdlLmdldCgpLCBmaWx0ZXIpOworICAg
IGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihtX3NvdXJjZUltYWdl
LmdldCgpLCBtX3NvdXJjZUltYWdlUmVjdCwgZmlsdGVyKTsKICAgICBmaWx0ZXIuY2xlYXJJbnRl
cm1lZGlhdGVSZXN1bHRzKCk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFt
IDw8ICJSZW5kZXJMYXllckZpbHRlcnMgIiA8PCB0aGlzIDw8ICIgYXBwbHlGaWx0ZXJFZmZlY3Qg
ZG9uZVxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJz
LmgKaW5kZXggYjcwYWYxNTVhMWE0Li5mNmJkNjI4MWI3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKQEAgLTcwLDEzICs3MCwxNSBAQCBwcml2
YXRlOgogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0RGlydHlTb3VyY2VSZWN0KCkg
eyBtX2RpcnR5U291cmNlUmVjdCA9IExheW91dFJlY3QoKTsgfQogICAgIEdyYXBoaWNzQ29udGV4
dCogaW5wdXRDb250ZXh0KCk7Ci0gICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdTdG9yZShjb25zdCBH
cmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpOworICAgIHZvaWQgYWxsb2NhdGVCYWNraW5n
U3RvcmVJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpOwogCiAg
ICAgUmVuZGVyTGF5ZXImIG1fbGF5ZXI7CiAKICAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBt
X2ludGVybmFsU1ZHUmVmZXJlbmNlczsKICAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkU1ZHRG9jdW1lbnQ+PiBtX2V4dGVybmFsU1ZHUmVmZXJlbmNlczsKIAorICAgIExheW91
dFJlY3QgbV90YXJnZXRCb3VuZGluZ0JveDsKKyAgICBGbG9hdFJlY3QgbV9zb3VyY2VJbWFnZVJl
Y3Q7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBtX3NvdXJjZUltYWdlOwogICAgIFJlZlB0cjxD
U1NGaWx0ZXI+IG1fZmlsdGVyOwogICAgIExheW91dFJlY3QgbV9kaXJ0eVNvdXJjZVJlY3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXIuY3BwCmluZGV4IGIwMzBjMGY2NjU2MS4uNDM0ODg2ODRhYTY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6
OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAg
ICAvLyBDcmVhdGUgdGhlIFNWR0ZpbHRlciBvYmplY3QuCiAgICAgZmlsdGVyRGF0YS0+YnVpbGRl
ciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oKTsKLSAgICBmaWx0ZXJEYXRhLT5maWx0
ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJFbGVtZW50KCksICpmaWx0ZXJEYXRhLT5idWls
ZGVyLCByZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lv
biwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgdGFyZ2V0Qm91bmRpbmdCb3gpOworICAgIGZpbHRl
ckRhdGEtPmZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlckVsZW1lbnQoKSwgKmZpbHRl
ckRhdGEtPmJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBmaWx0ZXJEYXRhLT5i
b3VuZGFyaWVzLCB0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgaWYgKCFmaWx0ZXJEYXRhLT5maWx0
ZXIpIHsKICAgICAgICAgbV9yZW5kZXJlckZpbHRlckRhdGFNYXAucmVtb3ZlKCZyZW5kZXJlcik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgR3JhcGhpYwogCiAgICAgaWYgKCFmaWx0ZXJEYXRhLmJvdW5kYXJpZXMuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsKLSAgICAgICAg
Y29udGV4dC0+ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS5zb3VyY2VHcmFwaGlj
QnVmZmVyLmdldCgpLCAqZmlsdGVyRGF0YS5maWx0ZXIpOworICAgICAgICBjb250ZXh0LT5kcmF3
RmlsdGVyZWRJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZmZXIuZ2V0KCks
IGZpbHRlckRhdGEuZHJhd2luZ1JlZ2lvbiwgKmZpbHRlckRhdGEuZmlsdGVyKTsKICAgICB9CiAK
ICAgICBmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5k
ZXggMWM0Y2RkNWEyMjViLi5hMjdhYzRmYzM2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNDMxLDcgKzQzMSw3
IEBAIHZvaWQgd3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcihUZXh0U3RyZWFtJiB0cywgY29uc3Qg
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXImCiAgICAgICAgIEZsb2F0UmVjdCBkdW1teVJlY3Q7
CiAgICAgICAgIEZsb2F0U2l6ZSBkdW1teVNjYWxlKDEsIDEpOwogICAgICAgICBTVkdGaWx0ZXJC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGF1dG8gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNy
ZWF0ZShmaWx0ZXIuZmlsdGVyRWxlbWVudCgpLCBidWlsZGVyLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCBkdW1teVNjYWxlLCBkdW1teVJlY3QsIGR1bW15UmVjdCwgZHVtbXlSZWN0KTsK
KyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlci5maWx0
ZXJFbGVtZW50KCksIGJ1aWxkZXIsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGR1bW15
U2NhbGUsIGR1bW15UmVjdCwgZHVtbXlSZWN0KTsKICAgICAgICAgaWYgKGR1bW15RmlsdGVyKSB7
CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
CmluZGV4IGYzOWZjMjZkZDkwNi4uMTI2NDJkNjMzNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKQEAgLTI5LDE5ICsyOSwxOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6
Y3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXIm
IGJ1aWxkZXIsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBm
aWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgZmlsdGVyUmVnaW9uLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIEZpbHRlckVm
ZmVjdCYgcHJldmlvdXNFZmZlY3QpCitSZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0
ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWls
ZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVy
U2NhbGUsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCkKIHsKLSAgICByZXR1
cm4gY3JlYXRlKGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNj
YWxlLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbiwgY2xpcE9wZXJhdGlvbiwgZmlsdGVy
UmVnaW9uLCAmcHJldmlvdXNFZmZlY3QpOworICAgIHJldHVybiBjcmVhdGUoZmlsdGVyRWxlbWVu
dCwgYnVpbGRlciwgcmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIGNsaXBPcGVyYXRpb24sIHRh
cmdldEJvdW5kaW5nQm94LCB0YXJnZXRCb3VuZGluZ0JveCwgJnByZXZpb3VzRWZmZWN0KTsKIH0K
IAotUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYg
ZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gpCitSZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0
ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJCdWls
ZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6
ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KQogewotICAgIHJldHVybiBjcmVhdGUoZmlsdGVyRWxl
bWVudCwgYnVpbGRlciwgcmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIHNvdXJjZUltYWdlUmVj
dCwgZmlsdGVyUmVnaW9uLCBDbGlwT3BlcmF0aW9uOjpJbnRlcnNlY3QsIHRhcmdldEJvdW5kaW5n
Qm94LCBudWxscHRyKTsKKyAgICByZXR1cm4gY3JlYXRlKGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIs
IHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uOjpJbnRlcnNlY3QsIGZp
bHRlclJlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIG51bGxwdHIpOwogfQogCi1SZWZQdHI8U1ZH
RmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50
LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1h
Z2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlvbiBjbGlw
T3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBGaWx0ZXJFZmZl
Y3QqIHByZXZpb3VzRWZmZWN0KQorUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUo
U1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRlciYgYnVpbGRl
ciwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNj
YWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVy
UmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBGaWx0ZXJFZmZlY3Qq
IHByZXZpb3VzRWZmZWN0KQogewotICAgIGF1dG8gZmlsdGVyID0gYWRvcHRSZWYoKm5ldyBTVkdG
aWx0ZXIocmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVy
UmVnaW9uLCBjbGlwT3BlcmF0aW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZmlsdGVyRWxlbWVudC5w
cmltaXRpdmVVbml0cygpKSk7CisgICAgYXV0byBmaWx0ZXIgPSBhZG9wdFJlZigqbmV3IFNWR0Zp
bHRlcihyZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgY2xpcE9wZXJhdGlvbiwgZmlsdGVyUmVn
aW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZmlsdGVyRWxlbWVudC5wcmltaXRpdmVVbml0cygpKSk7
CiAKICAgICBpZiAoIXByZXZpb3VzRWZmZWN0KQogICAgICAgICBidWlsZGVyLnNldHVwQnVpbHRp
bkVmZmVjdHMoU291cmNlR3JhcGhpYzo6Y3JlYXRlKCkpOwpAQCAtNzEsOCArNzEsOCBAQCBSZWZQ
dHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJF
bGVtZW50LCBTVkdGaWx0ZXJCdQogICAgIHJldHVybiBmaWx0ZXI7CiB9CiAKLVNWR0ZpbHRlcjo6
U1ZHRmlsdGVyKFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBm
aWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgZmlsdGVyUmVnaW9uLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJp
bWl0aXZlVW5pdHMpCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpTVkdGaWx0ZXIsIHJlbmRl
cmluZ01vZGUsIGZpbHRlclNjYWxlLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbiwgY2xp
cE9wZXJhdGlvbikKK1NWR0ZpbHRlcjo6U1ZHRmlsdGVyKFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiBjbGlwT3Bl
cmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRCb3VuZGluZ0JveCwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmltaXRpdmVVbml0
cykKKyAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OlNWR0ZpbHRlciwgcmVuZGVyaW5nTW9kZSwg
ZmlsdGVyU2NhbGUsIGNsaXBPcGVyYXRpb24sIGZpbHRlclJlZ2lvbikKICAgICAsIG1fdGFyZ2V0
Qm91bmRpbmdCb3godGFyZ2V0Qm91bmRpbmdCb3gpCiAgICAgLCBtX3ByaW1pdGl2ZVVuaXRzKHBy
aW1pdGl2ZVVuaXRzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuaAppbmRleCA0ZTc1ZTYyZjI2M2QuLjc0NmMxN2IzOWZhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKQEAgLTM2LDkg
KzM2LDkgQEAgY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIAogY2xhc3MgU1ZHRmlsdGVyIGZpbmFs
IDogcHVibGljIEZpbHRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+
IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmluZ01v
ZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
SW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlvbiwg
RmlsdGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0
ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmlu
Z01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRCb3VuZGluZ0JveCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNy
ZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmluZ01vZGUs
IGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1h
Z2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0KiBwcmV2aW91c0Vm
ZmVjdCk7CisgICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVt
ZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYg
ZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRp
bmdCb3gsIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3QpOworICAgIHN0YXRpYyBSZWZQdHI8
U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxkZXImLCBS
ZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJl
Y3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCk7Cisg
ICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZH
RmlsdGVyQnVpbGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2Nh
bGUsIENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBGaWx0ZXJFZmZlY3QqIHByZXZpb3VzRWZmZWN0
KTsKIAogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGFyZ2V0Qm91bmRpbmdCb3g7IH0KIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgUmVm
UHRyPEZpbHRlckltYWdlPiBhcHBseSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFNWR0Zp
bHRlcihSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24s
IENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMpOworICAgIFNWR0ZpbHRlcihSZW5k
ZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3Vu
ZGluZ0JveCwgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMpOwogCiAg
ICAgLy8gRklYTUU6IE1lcmdlIHRoZSBlZmZlY3RCb3VuZGFyaWVzIGluIHRoZSBleHByZXNzaW9u
IG5vZGUuCiAgICAgdm9pZCBzZXRFeHByZXNzaW9uKEZpbHRlckVmZmVjdFZlY3RvciYmIGV4cHJl
c3Npb24pIHsgbV9leHByZXNzaW9uID0gV1RGTW92ZShleHByZXNzaW9uKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445961</attachid>
            <date>2021-12-03 22:51:37 -0800</date>
            <delta_ts>2021-12-04 16:54:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233849-20211203225136.patch</filename>
            <type>text/plain</type>
            <size>36546</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3Mjk5NTM4MGYwNjk3
NGRlMDdjYjhhYzU4MzRjNWEzNzNlZTE5ZC4uNTg0NTQ4ZWRhY2M4MDg4ODI0NmQxM2Y1MzJkNWVh
ODk2NjNkMGZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTEyLTAzICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
KFJFR1JFU1NJT04gcjI4NTU5Nyk6IFNldCB0aGUgZmlsdGVyUmVnaW9uIG9mIHRoZSBDU1NGaWx0
ZXIgYWZ0ZXIgaXQgaXMgY3JlYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzODQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW4gdGhpcyBwYXRjaDoKKworICAgICAgICAxLiBUaGUgc291cmNlSW1h
Z2VSZWN0IGlzIHBhc3NlZCB0byBkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcigpLiBUaGUgcGxhbgor
ICAgICAgICAgICBpcyB0byByZW1vdmUgRmlsdGVyOjptX3NvdXJjZUltYWdlIGFuZCBtX3NvdXJj
ZUltYWdlUmVjdCBhbmQgaGF2ZSB0aGVtCisgICAgICAgICAgIGFzIGlucHV0cyB0byBGaWx0ZXI6
OmFwcGx5KCkuCisKKyAgICAgICAgMi4gc291cmNlSW1hZ2VSZWN0IGlzIG5vIGxvbmdlciBwYXNz
ZWQgYXMgYW4gYXJndW1lbnQgdG8gU1ZHRmlsdGVyLiBJdAorICAgICAgICAgICBzaG91bGQgYmUg
cGFzc2VkIG9ubHkgd2hlbiBTVkdGaWx0ZXI6OmFwcGx5KCkgaXMgY2FsbGVkLgorCisgICAgICAg
IDMuIENTU0ZpbHRlcjo6Y3JlYXRlKCkgd2lsbCBjcmVhdGUgYW5kIGJ1aWxkIHRoZSBGaWx0ZXJG
dW5jdGlvbnMgZnJvbSB0aGUKKyAgICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucy4gU28gd2UgaGF2
ZSB0byBwYXNzIHRoZSB0YXJnZXRCb3VuZGluZ0JveCBzaW5jZSB0aGUKKyAgICAgICAgICAgRmls
dGVyRWZmZWN0cyB3aWxsIG5lZWQgaXQgd2hlbiBjYWxjdWxhdGluZyB0aGUgb3V0c2V0cy4KKwor
ICAgICAgICA0LiBUaGUgc3RlcHMgaW4gUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVm
ZmVjdCgpIGFyZToKKyAgICAgICAgICAgYSkgUmVjcmVhdGUgdGhlIENTU0ZpbHRlciBpZiB0aGUg
dGFyZ2V0Qm91bmRpbmdCb3ggY2hhbmdlcy4KKyAgICAgICAgICAgYikgQ2FsY3VsYXRlIHRoZSBm
aWx0ZXJSZWdpb24gPSB0YXJnZXRCb3VuZGluZ0JveCArIG91dHNldHMKKyAgICAgICAgICAgYykg
Q2xhbXAgdGhlIGZpbHRlclJlZ2lvbiBpZiBuZWVkZWQuIFRoaXMgd2lsbCBjaGFuZ2UgdGhlIGZp
bHRlclNjYWxlLgorICAgICAgICAgICBkKSBTZXQgc291cmNlSW1hZ2VSZWN0ID0gZmlsdGVyUmVn
aW9uLgorICAgICAgICAgICBiKSBSZWNyZWF0ZSB0aGUgc291cmNlSW1hZ2UgaWYgbmVlZGVkLgor
ICAgICAgICAgICBjKSBzZXR1cCB0aGUgY29udGV4dCBmb3IgZHJhd2luZyB0aGUgdGFyZ2V0IHJl
bmRlcmVyLgorCisgICAgICAgIDUuIE1hbmFnaW5nIHRoZSB0YXJnZXRCb3VuZGluZ0JveCBhbmQg
dGhlIGZpbHRlclJlZ2lvbiBpcyBtb3ZlZCBmcm9tIAorICAgICAgICAgICBDU1NGaWx0ZXIgdG8g
UmVuZGVyTGF5ZXJGaWx0ZXJzLgorCisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpG
aWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjphcHBseSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
cjo6RmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
cjo6Q1NTRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNWR0ZpbHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmJ1aWxkRmlsdGVyRnVuY3Rpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVy
OjpzZXRGaWx0ZXJSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6bV9oYXNGaWx0ZXJUaGF0U2hv
dWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NGaWx0ZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZVJlY3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpsYXN0RWZmZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZpbHRlcjo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVj
dEZvckRpcnR5UmVjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OnNl
dFNvdXJjZUltYWdlUmVjdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRl
ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjpidWlsZEZpbHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmFwcGx5RmlsdGVyRWZm
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YWxsb2NhdGVCYWNr
aW5nU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRl
cnMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBw
bHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OlNW
R0ZpbHRlcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisK
IDIwMjEtMTItMDMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0dQVSBQcm9jZXNzXSAoUkVHUkVTU0lPTiByMjg1NTk3KTogRml4IFNWR0ZpbHRlciBjbGFt
cGluZyBjYWxjdWxhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
Y3BwCmluZGV4IDI2OGY0OGMzMTRjNzNjNWNkMjhkNWM2NWM1YTYzYWY0Mjc4MDU0YTAuLjY1MzEy
MjUyMmFiZjM1MmZlYTkzMGM1NTg4YjVmZWQxZmVjZmEzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNCwxMiArMTI0LDEyIEBAIFJlZlB0cjxJ
bWFnZT4gQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGNvbnN0IEZsb2F0U2l6CiAgICAgYXV0byBzb3VyY2VJbWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7
IH0sIHNpemUgfTsKICAgICBzb3VyY2VJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2Us
IHNvdXJjZUltYWdlUmVjdCk7CiAKLSAgICBhdXRvIGNzc0ZpbHRlciA9IENTU0ZpbHRlcjo6Y3Jl
YXRlKG1fZmlsdGVyT3BlcmF0aW9ucywgcmVuZGVyaW5nTW9kZSk7Ci0KLSAgICBjc3NGaWx0ZXIt
PnNldFNvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpOwotICAgIGlmICghY3NzRmlsdGVy
LT5idWlsZEZpbHRlckZ1bmN0aW9ucyhyZW5kZXJlciwgbV9maWx0ZXJPcGVyYXRpb25zKSkKKyAg
ICBhdXRvIGNzc0ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKHJlbmRlcmVyLCBtX2ZpbHRlck9w
ZXJhdGlvbnMsIHJlbmRlcmluZ01vZGUsIEZsb2F0U2l6ZSB7IDEsIDEgfSwgRmlsdGVyOjpDbGlw
T3BlcmF0aW9uOjpJbnRlcnNlY3QsIHNvdXJjZUltYWdlUmVjdCk7CisgICAgaWYgKCFjc3NGaWx0
ZXIpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCisgICAgY3NzRmlsdGVy
LT5zZXRGaWx0ZXJSZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKKwogICAgIGlmIChhdXRvIGltYWdl
ID0gc291cmNlSW1hZ2UtPmZpbHRlcmVkSW1hZ2UoKmNzc0ZpbHRlcikpCiAgICAgICAgIHJldHVy
biBpbWFnZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4IDc1MGRiNGVlODkxNjYwZmE0YmVjZWJjNDQ0N2M2
ODVjZTVjNDg0ODEuLjJmZDQyMjliNzEyN2YwNDkwZDQyZDU0MWUxNDRhZDZhOWQ4ZTFmZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUlt
YWdlQnVmZmVyLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBjb25zdF9jYXN0PENvbmNyZXRlSW1hZ2VCdWZmZXIm
PigqdGhpcykuZmx1c2hEcmF3aW5nQ29udGV4dCgpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGZp
bHRlci5hcHBseSh0aGlzKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBmaWx0ZXIuYXBwbHkodGhp
cywgeyB7IH0sIGxvZ2ljYWxTaXplKCkgfSk7CiAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGUzN2I3MTU1NzE0MDYwYmZlYjdh
ZGIwMTg5ZmFiZWRmNzlmMTY4MTQuLjJjYmJjYzU2NjNmZTU4ODA3ZDEwMzYwNmY1YjUxYTBmZjhl
NTYyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcApAQCAtNjMxLDkgKzYzMSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29u
c3QKICAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRoaXMs
IGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlLCBGaWx0
ZXImIGZpbHRlcikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RmlsdGVyZWRJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VS
ZWN0LCBGaWx0ZXImIGZpbHRlcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGZpbHRlci5hcHBseShz
b3VyY2VJbWFnZSk7CisgICAgYXV0byByZXN1bHQgPSBmaWx0ZXIuYXBwbHkoc291cmNlSW1hZ2Us
IHNvdXJjZUltYWdlUmVjdCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybjsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKaW5kZXggM2Q4ZDNhNzEyNTNlMzYzMGY4ZDk1Y2RkZDQwOTZiYjY0MjI4OWJmOS4uMzJl
YTJlZDE0NTFjNTRiNGNkZTgxMzBhNDkzN2U3ZDUzMjAxNmEzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ1Miw3ICs0
NTIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1h
Z2VCdWZmZXIoUmVmUHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZl
cj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3Vy
Y2VJbWFnZSwgRmlsdGVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdG
aWx0ZXJlZEltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VJbWFnZVJlY3QsIEZpbHRlciYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9
KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyLmNwcAppbmRleCA1MmRjMzVkNmQ2MWQzODgzNWQ0MGNlNjMzZGUwNmY2NjQ1M2Vk
MWViLi4yM2I0ZWI1OWM1ZTU0NTU2ZTI4ZTBiZTUyNTE1MzRmNzdiOTRmNDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwCkBA
IC0zMiwyMSArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWx0ZXI6OkZpbHRl
cihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBj
b25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24p
CitGaWx0ZXI6OkZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9u
IGNsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKQogICAgIDogRmls
dGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKICAgICAsIG1fcmVuZGVyaW5nTW9kZShyZW5kZXJpbmdN
b2RlKQogICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSkKICAgICAsIG1fY2xpcE9wZXJh
dGlvbihjbGlwT3BlcmF0aW9uKQotewotfQotCi1GaWx0ZXI6OkZpbHRlcihGaWx0ZXI6OlR5cGUg
ZmlsdGVyVHlwZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUm
IGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBmaWx0ZXJSZWdpb24sIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbikKLSAgICA6
IEZpbHRlckZ1bmN0aW9uKGZpbHRlclR5cGUpCi0gICAgLCBtX3JlbmRlcmluZ01vZGUocmVuZGVy
aW5nTW9kZSkKLSAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpCi0gICAgLCBtX3NvdXJj
ZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCiAgICAgLCBtX2ZpbHRlclJlZ2lvbihmaWx0ZXJS
ZWdpb24pCi0gICAgLCBtX2NsaXBPcGVyYXRpb24oY2xpcE9wZXJhdGlvbikKIHsKIH0KIApAQCAt
OTgsOSArODksMTEgQEAgYm9vbCBGaWx0ZXI6OmNsYW1wRmlsdGVyUmVnaW9uSWZOZWVkZWQoKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8RmlsdGVySW1hZ2U+IEZpbHRlcjo6YXBwbHko
SW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKQorUmVmUHRyPEZpbHRlckltYWdlPiBGaWx0ZXI6OmFw
cGx5KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFn
ZVJlY3QpCiB7CisgICAgLy8gRklYTUU6IEEgRmlsdGVySW1hZ2Ugc2hvdWxkIGJlIGNyZWF0ZWQg
ZnJvbSBzb3VyY2VJbWFnZSBhbmQgc291cmNlSW1hZ2VSZWN0IGFuZCBpdCB3aWxsIGJlIHBhc3Nl
ZCBhcyB0aGUgaW5wdXQgdG8gYXBwbHkoKS4KICAgICBzZXRTb3VyY2VJbWFnZShzb3VyY2VJbWFn
ZSk7CisgICAgc2V0U291cmNlSW1hZ2VSZWN0KHNvdXJjZUltYWdlUmVjdCk7CiAKICAgICBhdXRv
IHJlc3VsdCA9IGFwcGx5KCk7CiAgICAgaWYgKCFyZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCBjYTFkOTUzNGM3Zjhi
MTgwNmQ4MWE1ZDIwMjdmOGM0OTJhZTIyODNhLi5hOGY1NTVmYmQ3MzRmYmRkNmM2M2VjYjliYTJi
ZmQxZmIyM2M0ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTcyLDIyICs3MiwyMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
bGFtcEZpbHRlclJlZ2lvbklmTmVlZGVkKCk7CiAgICAgCiAgICAgdmlydHVhbCBSZWZQdHI8Rmls
dGVySW1hZ2U+IGFwcGx5KCkgPSAwOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxGaWx0ZXJJ
bWFnZT4gYXBwbHkoSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgRmlsdGVy
KEZpbHRlcjo6VHlwZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2Fs
ZSwgQ2xpcE9wZXJhdGlvbiA9IENsaXBPcGVyYXRpb246OkludGVyc2VjdCk7Ci0gICAgRmlsdGVy
KEZpbHRlcjo6VHlwZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2Fs
ZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmls
dGVyUmVnaW9uLCBDbGlwT3BlcmF0aW9uID0gQ2xpcE9wZXJhdGlvbjo6SW50ZXJzZWN0KTsKKyAg
ICBGaWx0ZXIoRmlsdGVyOjpUeXBlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZp
bHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiA9
IHsgfSk7CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyaW5nTW9kZSBtX3JlbmRlcmluZ01vZGU7Ci0K
ICAgICBGbG9hdFNpemUgbV9maWx0ZXJTY2FsZTsKLSAgICBGbG9hdFJlY3QgbV9zb3VyY2VJbWFn
ZVJlY3Q7CisgICAgQ2xpcE9wZXJhdGlvbiBtX2NsaXBPcGVyYXRpb247CiAgICAgRmxvYXRSZWN0
IG1fZmlsdGVyUmVnaW9uOwogCisgICAgLy8gRklYTUU6IHRoZXNlIHNob3VsZCBub3QgYmUgbWVt
YmVycyBvZiBGaWx0ZXIuIFRoZXkgc2hvdWxkIGJlIHBhc3NlZCB0byBGaWx0ZXI6OmFwcGx5KCku
CisgICAgRmxvYXRSZWN0IG1fc291cmNlSW1hZ2VSZWN0OwogICAgIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gbV9zb3VyY2VJbWFnZTsKLQotICAgIENsaXBPcGVyYXRpb24gbV9jbGlwT3BlcmF0aW9uOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmls
dGVyLmNwcAppbmRleCBjOTE5ZDk4MDU0M2I3ODlmNWI5ZTU5ZTlhMjYxNWNhNzkwZTdmYmRkLi42
MjZlNzg3OGVmYmQzYWRiOGEwY2E2OWU4MjU4NTFmZTRjYzQ0Mjc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcApAQCAtNDQsMTYgKzQ0LDIxIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmUHRyPENTU0ZpbHRlcj4gQ1NTRmlsdGVyOjpjcmVhdGUoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCBzY2FsZUZhY3RvciwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uKQorUmVmUHRyPENT
U0ZpbHRlcj4gQ1NTRmlsdGVyOjpjcmVhdGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KQogewogICAgIGJvb2wgaGFz
RmlsdGVyVGhhdE1vdmVzUGl4ZWxzID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMoKTsKICAgICBib29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5
T3JpZ2luID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1
cml0eU9yaWdpbigpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRmlsdGVyKHJlbmRl
cmluZ01vZGUsIHNjYWxlRmFjdG9yLCBjbGlwT3BlcmF0aW9uLCBoYXNGaWx0ZXJUaGF0TW92ZXNQ
aXhlbHMsIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKSk7
CisgICAgYXV0byBmaWx0ZXIgPSBhZG9wdFJlZigqbmV3IENTU0ZpbHRlcihyZW5kZXJpbmdNb2Rl
LCBmaWx0ZXJTY2FsZSwgY2xpcE9wZXJhdGlvbiwgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBo
YXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbikpOworICAgIAor
ICAgIGlmICghZmlsdGVyLT5idWlsZEZpbHRlckZ1bmN0aW9ucyhyZW5kZXJlciwgb3BlcmF0aW9u
cywgdGFyZ2V0Qm91bmRpbmdCb3gpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBmaWx0ZXI7CiB9CiAKLUNTU0ZpbHRlcjo6Q1NTRmlsdGVyKFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgZmxvYXQgc2NhbGVGYWN0b3IsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlv
biwgYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMsIGJvb2wgaGFzRmlsdGVyVGhhdFNob3Vs
ZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4pCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBl
OjpDU1NGaWx0ZXIsIHJlbmRlcmluZ01vZGUsIEZsb2F0U2l6ZSB7IHNjYWxlRmFjdG9yLCBzY2Fs
ZUZhY3RvciB9LCBjbGlwT3BlcmF0aW9uKQorQ1NTRmlsdGVyOjpDU1NGaWx0ZXIoUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3Bl
cmF0aW9uIGNsaXBPcGVyYXRpb24sIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBib29s
IGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKQorICAgIDog
RmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCByZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2Fs
ZSwgY2xpcE9wZXJhdGlvbikKICAgICAsIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKGhhc0Zp
bHRlclRoYXRNb3Zlc1BpeGVscykKICAgICAsIG1faGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJp
Y3RlZEJ5U2VjdXJpdHlPcmlnaW4oaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2Vj
dXJpdHlPcmlnaW4pCiB7CkBAIC0yMDIsNyArMjA3LDcgQEAgc3RhdGljIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGNyZWF0ZVNlcGlhRWZmZWN0KGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXQKICAgICByZXR1cm4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKEZFQ09MT1JNQVRSSVhfVFlQRV9N
QVRSSVgsIFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U1ZH
RmlsdGVyPiBjcmVhdGVTVkdGaWx0ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFJlZmVyZW5j
ZUZpbHRlck9wZXJhdGlvbiYgZmlsdGVyT3BlcmF0aW9uLCBSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCkKK3N0YXRpYyBSZWZQdHI8U1ZHRmlsdGVy
PiBjcmVhdGVTVkdGaWx0ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbiYgZmlsdGVyT3BlcmF0aW9uLCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0Vm
ZmVjdCkKIHsKICAgICBhdXRvJiByZWZlcmVuY2VkU1ZHUmVzb3VyY2VzID0gcmVuZGVyZXIuZW5z
dXJlUmVmZXJlbmNlZFNWR1Jlc291cmNlcygpOwogICAgIGF1dG8qIGZpbHRlckVsZW1lbnQgPSBy
ZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLnJlZmVyZW5jZWRGaWx0ZXJFbGVtZW50KHJlbmRlcmVyLmRv
Y3VtZW50KCksIGZpbHRlck9wZXJhdGlvbik7CkBAIC0yMTYsMTAgKzIyMSwxMCBAQCBzdGF0aWMg
UmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlU1ZHRmlsdGVyKENTU0ZpbHRlciYgZmlsdGVyLCBjb25z
dCBSZWZlcmVuY2VGaWx0ZQogICAgIH0KIAogICAgIFNWR0ZpbHRlckJ1aWxkZXIgYnVpbGRlcjsK
LSAgICByZXR1cm4gU1ZHRmlsdGVyOjpjcmVhdGUoKmZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIGZp
bHRlci5yZW5kZXJpbmdNb2RlKCksIGZpbHRlci5maWx0ZXJTY2FsZSgpLCBmaWx0ZXIuc291cmNl
SW1hZ2VSZWN0KCksIGZpbHRlci5maWx0ZXJSZWdpb24oKSwgZmlsdGVyLmNsaXBPcGVyYXRpb24o
KSwgcHJldmlvdXNFZmZlY3QpOworICAgIHJldHVybiBTVkdGaWx0ZXI6OmNyZWF0ZSgqZmlsdGVy
RWxlbWVudCwgYnVpbGRlciwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgZmlsdGVyLmZpbHRlclNj
YWxlKCksIGZpbHRlci5jbGlwT3BlcmF0aW9uKCksIHRhcmdldEJvdW5kaW5nQm94LCBwcmV2aW91
c0VmZmVjdCk7CiB9CiAKLWJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucykK
K2Jvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRCb3VuZGluZ0JveCkKIHsKICAgICBtX2Z1bmN0aW9ucy5jbGVhcigpOwogICAgIG1f
b3V0c2V0cyA9IHsgfTsKQEAgLTI3Niw3ICsyODEsNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGRG
aWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJh
dAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJF
RkVSRU5DRToKLSAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZVNWR0ZpbHRlcigqdGhpcywgZG93
bmNhc3Q8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSwgcmVuZGVyZXIsICpw
cmV2aW91c0VmZmVjdCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVTVkdGaWx0ZXIoKnRo
aXMsIGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbiksIHJlbmRl
cmVyLCB0YXJnZXRCb3VuZGluZ0JveCwgKnByZXZpb3VzRWZmZWN0KTsKICAgICAgICAgICAgIGVm
ZmVjdCA9IG51bGxwdHI7CiAgICAgICAgICAgICBicmVhazsKIApAQCAtMzE5LDE4ICszMjQsNiBA
QCBib29sIENTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENT
U0ZpbHRlcjo6dXBkYXRlQmFja2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJl
Y3QpCi17Ci0gICAgaWYgKGZpbHRlclJlY3QuaXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXpl
TmVlZHNDbGFtcGluZyhmaWx0ZXJSZWN0LnNpemUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmIChmaWx0ZXJSZWN0ID09IHNvdXJjZUltYWdlUmVjdCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBzZXRTb3VyY2VJbWFnZVJlY3QoZmlsdGVyUmVjdCk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6bGFzdEVmZmVj
dCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnVuY3Rpb25zLmlzRW1wdHkoKSkKQEAgLTM2NywzMyAr
MzYwLDI0IEBAIHZvaWQgQ1NTRmlsdGVyOjpjbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKQogUmVm
UHRyPEZpbHRlckltYWdlPiBDU1NGaWx0ZXI6OmFwcGx5KCkKIHsKICAgICBmb3IgKGF1dG8mIGZ1
bmN0aW9uIDogbV9mdW5jdGlvbnMpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc1NWR0ZpbHRl
cigpKQorICAgICAgICAgICAgZG93bmNhc3Q8U1ZHRmlsdGVyPihmdW5jdGlvbi5wdHIoKSktPnNl
dFNvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QoKSk7CiAgICAgICAgIGlmICghZnVuY3Rp
b24tPmFwcGx5KCp0aGlzKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAg
ICByZXR1cm4gbGFzdEVmZmVjdCgpLT5maWx0ZXJJbWFnZSgpOwogfQogCi1MYXlvdXRSZWN0IENT
U0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRS
ZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpCi17Ci0gICAg
Ly8gVGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBhcmVhIGluIHRoZSAiZmlsdGVy
Qm94UmVjdCIgdGhhdCBuZWVkcyB0byBiZSByZXBhaW50ZWQsIHNvIHRoYXQgd2UgZnVsbHkgY292
ZXIgdGhlICJkaXJ0eVJlY3QiLgotICAgIGF1dG8gcmVjdEZvclJlcGFpbnQgPSBkaXJ0eVJlY3Q7
Ci0gICAgaWYgKGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpKQotICAgICAgICByZWN0Rm9yUmVw
YWludCArPSBvdXRzZXRzKCk7Ci0gICAgcmVjdEZvclJlcGFpbnQuaW50ZXJzZWN0KGZpbHRlckJv
eFJlY3QpOwotICAgIHJldHVybiByZWN0Rm9yUmVwYWludDsKLX0KLQotdm9pZCBDU1NGaWx0ZXI6
OnNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkKK3Zv
aWQgQ1NTRmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdp
b24pCiB7Ci0gICAgRmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKLSAg
ICBGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpOworICAgIEZpbHRl
cjo6c2V0RmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lvbik7CiAKICAgICBmb3IgKGF1dG8mIGZ1bmN0
aW9uIDogbV9mdW5jdGlvbnMpIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc1NWR0ZpbHRlcigp
KSB7Ci0gICAgICAgICAgICBkb3duY2FzdDxTVkdGaWx0ZXI+KGZ1bmN0aW9uLnB0cigpKS0+c2V0
RmlsdGVyUmVnaW9uKHNvdXJjZUltYWdlUmVjdCk7Ci0gICAgICAgICAgICBkb3duY2FzdDxTVkdG
aWx0ZXI+KGZ1bmN0aW9uLnB0cigpKS0+c2V0U291cmNlSW1hZ2VSZWN0KHNvdXJjZUltYWdlUmVj
dCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc1NWR0ZpbHRlcigpKQorICAg
ICAgICAgICAgZG93bmNhc3Q8U1ZHRmlsdGVyPihmdW5jdGlvbi5wdHIoKSktPnNldEZpbHRlclJl
Z2lvbihmaWx0ZXJSZWdpb24pOwogICAgIH0KKworICAgIGNsYW1wRmlsdGVyUmVnaW9uSWZOZWVk
ZWQoKTsKIH0KIAogSW50T3V0c2V0cyBDU1NGaWx0ZXI6Om91dHNldHMoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCmluZGV4IDczYTRlODdhOGY1NWRhODIyYjgyZTlkZTkz
MjYyZDVkODc4ZTI3NGQuLjVlZjhjZDVmODdhOWQ0MGY3ZDBkN2FiMWZiNzZiZjBiYjg0NjE2ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKQEAgLTQyLDEwICs0Miw5IEBAIGNs
YXNzIFNvdXJjZUdyYXBoaWM7CiBjbGFzcyBDU1NGaWx0ZXIgZmluYWwgOiBwdWJsaWMgRmlsdGVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPENTU0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBSZW5kZXJpbmdN
b2RlLCBmbG9hdCBzY2FsZUZhY3RvciA9IDEsIENsaXBPcGVyYXRpb24gPSBDbGlwT3BlcmF0aW9u
OjpJbnRlcnNlY3QpOworICAgIHN0YXRpYyBSZWZQdHI8Q1NTRmlsdGVyPiBjcmVhdGUoUmVuZGVy
RWxlbWVudCYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBG
bG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldEJvdW5kaW5nQm94KTsKIAotICAgIHZvaWQgc2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZs
b2F0UmVjdCYpOwotICAgIGJvb2wgYnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYs
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKKyAgICB2b2lkIHNldEZpbHRlclJlZ2lvbihjb25z
dCBGbG9hdFJlY3QmKTsKIAogICAgIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHM7IH0KICAgICBib29sIGhhc0Zp
bHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbjsgfQpA
QCAtNTYsMTIgKzU1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFySW50ZXJtZWRpYXRlUmVz
dWx0cygpOwogICAgIFJlZlB0cjxGaWx0ZXJJbWFnZT4gYXBwbHkoKSBmaW5hbDsKIAotICAgIGJv
b2wgdXBkYXRlQmFja2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpOwot
Ci0gICAgTGF5b3V0UmVjdCBjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0
IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCk7
Ci0KIHByaXZhdGU6Ci0gICAgQ1NTRmlsdGVyKFJlbmRlcmluZ01vZGUsIGZsb2F0IHNjYWxlRmFj
dG9yLCBDbGlwT3BlcmF0aW9uLCBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscywgYm9vbCBo
YXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbik7CisgICAgQ1NT
RmlsdGVyKFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBP
cGVyYXRpb24sIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBib29sIGhhc0ZpbHRlclRo
YXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKTsKKworICAgIGJvb2wgYnVpbGRG
aWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KTsKIAogI2lmIFVTRShDT1JFX0lNQUdF
KQogICAgIGJvb2wgc3VwcG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKaW5kZXgg
YWU3MTIyNDRmOWM4NDJkMTg3NmIyMDk5YTZjM2M5MDc3NzJhYzBkMS4uY2ZkYjE3NDJiOTM4ODk2
NzZkM2FkYTIxYjJmNGYxMjZkZjAyZTdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFJlbmRl
ckxheWVyRmlsdGVyczo6YnVpbGRGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGZsb2F0
IHNjYWxlRmFjdG9yLAogICAgIC8vIElmIHRoZSBmaWx0ZXIgZmFpbHMgdG8gYnVpbGQsIHJlbW92
ZSBpdCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBzdGlsbCBhdHRlbXB0IHRvCiAgICAgLy8gZ28g
dGhyb3VnaCByZWd1bGFyIHByb2Nlc3NpbmcgKGUuZy4gY29tcG9zaXRpbmcpLCBidXQgbmV2ZXIg
YXBwbHkgYW55dGhpbmcuCiAgICAgLy8gRklYTUU6IHRoaXMgcmVidWlsZHMgdGhlIGVudGlyZSBl
ZmZlY3RzIGNoYWluIGV2ZW4gaWYgdGhlIGZpbHRlciBzdHlsZSBkaWRuJ3QgY2hhbmdlLgotICAg
IG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUocmVuZGVyZXIuc3R5bGUoKS5maWx0ZXIoKSwg
cmVuZGVyaW5nTW9kZSwgc2NhbGVGYWN0b3IsIEZpbHRlcjo6Q2xpcE9wZXJhdGlvbjo6VW5pdGUp
OworICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUocmVuZGVyZXIsIHJlbmRlcmVyLnN0
eWxlKCkuZmlsdGVyKCksIHJlbmRlcmluZ01vZGUsIEZsb2F0U2l6ZSB7IHNjYWxlRmFjdG9yLCBz
Y2FsZUZhY3RvciB9LCBGaWx0ZXI6OkNsaXBPcGVyYXRpb246OlVuaXRlLCBtX3RhcmdldEJvdW5k
aW5nQm94KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmlucHV0
Q29udGV4dCgpCkBAIC0xMjksMTAgKzEyOSwxMCBAQCBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxh
eWVyRmlsdGVyczo6aW5wdXRDb250ZXh0KCkKICAgICByZXR1cm4gbV9zb3VyY2VJbWFnZSA/ICZt
X3NvdXJjZUltYWdlLT5jb250ZXh0KCkgOiBudWxscHRyOwogfQogCi12b2lkIFJlbmRlckxheWVy
RmlsdGVyczo6YWxsb2NhdGVCYWNraW5nU3RvcmUoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJn
ZXRDb250ZXh0KQordm9pZCBSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3Jl
SWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewogICAgIGF1
dG8mIGZpbHRlciA9ICptX2ZpbHRlcjsKLSAgICBhdXRvIGxvZ2ljYWxTaXplID0gZmlsdGVyLnNj
YWxlZEJ5RmlsdGVyU2NhbGUoZmlsdGVyLnNvdXJjZUltYWdlUmVjdCgpLnNpemUoKSk7CisgICAg
YXV0byBsb2dpY2FsU2l6ZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKG1fc291cmNlSW1h
Z2VSZWN0LnNpemUoKSk7CiAKICAgICBpZiAoIW1fc291cmNlSW1hZ2UgfHwgbV9zb3VyY2VJbWFn
ZS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkgewogI2lmIFVTRShESVJFQ1QyRCkKQEAg
LTE1MSw0MiArMTUxLDU5IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpi
ZWdpbkZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0CiAgICAgaWYgKCFtX2Zp
bHRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvJiBmaWx0ZXIgPSAqbV9m
aWx0ZXI7Ci0gICAgYXV0byBmaWx0ZXJTb3VyY2VSZWN0ID0gZmlsdGVyLmNvbXB1dGVTb3VyY2VJ
bWFnZVJlY3RGb3JEaXJ0eVJlY3QoZmlsdGVyQm94UmVjdCwgZGlydHlSZWN0KTsKLSAgICBpZiAo
ZmlsdGVyU291cmNlUmVjdC5pc0VtcHR5KCkpCisgICAgLy8gQ2FsY3VsYXRlIHRhcmdldEJvdW5k
aW5nQm94IHNpbmNlIGl0IHdpbGwgYmUgdXNlZCBpZiB0aGUgZmlsdGVyIGlzIGNyZWF0ZWQuCisg
ICAgYXV0byB0YXJnZXRCb3VuZGluZ0JveCA9IGludGVyc2VjdGlvbihmaWx0ZXJCb3hSZWN0LCBk
aXJ0eVJlY3QpOworICAgIGlmICh0YXJnZXRCb3VuZGluZ0JveC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgaWYgKG1fdGFyZ2V0Qm91bmRpbmdCb3ggIT0gdGFyZ2V0
Qm91bmRpbmdCb3gpIHsKKyAgICAgICAgbV90YXJnZXRCb3VuZGluZ0JveCA9IHRhcmdldEJvdW5k
aW5nQm94OworICAgICAgICAvLyBGSVhNRTogdGhpcyByZWJ1aWxkcyB0aGUgZW50aXJlIGVmZmVj
dHMgY2hhaW4gZXZlbiBpZiB0aGUgZmlsdGVyIHN0eWxlIGRpZG4ndCBjaGFuZ2UuCisgICAgICAg
IG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUocmVuZGVyZXIsIHJlbmRlcmVyLnN0eWxlKCku
ZmlsdGVyKCksIG1fZmlsdGVyLT5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLT5maWx0ZXJTY2Fs
ZSgpLCBGaWx0ZXI6OkNsaXBPcGVyYXRpb246OlVuaXRlLCBtX3RhcmdldEJvdW5kaW5nQm94KTsK
KyAgICB9CisKKyAgICBpZiAoIW1fZmlsdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGJvb2wgaGFzVXBkYXRlZEJhY2tpbmdTdG9yZSA9IGZpbHRlci51cGRhdGVCYWNraW5nU3Rv
cmVSZWN0KGZpbHRlclNvdXJjZVJlY3QpOworICAgIGF1dG8mIGZpbHRlciA9ICptX2ZpbHRlcjsK
KyAgICAKKyAgICAvLyBGb3IgQ1NTRmlsdGVyLCBmaWx0ZXJSZWdpb24gPSB0YXJnZXRCb3VuZGlu
Z0JveCArIGZpbHRlci0+b3V0c2V0cygpCisgICAgYXV0byBmaWx0ZXJSZWdpb24gPSB0YXJnZXRC
b3VuZGluZ0JveDsKKyAgICBpZiAoZmlsdGVyLmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpKSB7
CisgICAgICAgIGZpbHRlclJlZ2lvbiArPSBmaWx0ZXIub3V0c2V0cygpOworICAgICAgICBmaWx0
ZXJSZWdpb24gPSBpbnRlcnNlY3Rpb24oZmlsdGVyQm94UmVjdCwgZmlsdGVyUmVnaW9uKTsKKyAg
ICB9CisKKyAgICBpZiAoZmlsdGVyUmVnaW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICAvLyBGSVhNRTogdGhpcyBjYWxsIHNob3VsZCBiZSBtb3ZlZCB0byBDU1NG
aWx0ZXI6OmNyZWF0ZSgpIHdoZW4gRmlsdGVyRWZmZWN0IGRvZXMgbm90IHN0b3JlIGl0cyBnZW9t
ZXRyeS4KLSAgICBpZiAoaGFzVXBkYXRlZEJhY2tpbmdTdG9yZSB8fCAhbV9maWx0ZXItPmxhc3RF
ZmZlY3QoKSkgewotICAgICAgICAvLyBJZiB0aGUgZmlsdGVyIGZhaWxzIHRvIGJ1aWxkLCByZW1v
dmUgaXQgZnJvbSB0aGUgbGF5ZXIuIEl0IHdpbGwgc3RpbGwgYXR0ZW1wdCB0bwotICAgICAgICAv
LyBnbyB0aHJvdWdoIHJlZ3VsYXIgcHJvY2Vzc2luZyAoZS5nLiBjb21wb3NpdGluZyksIGJ1dCBu
ZXZlciBhcHBseSBhbnl0aGluZy4KLSAgICAgICAgaWYgKCFtX2ZpbHRlci0+YnVpbGRGaWx0ZXJG
dW5jdGlvbnMocmVuZGVyZXIsIHJlbmRlcmVyLnN0eWxlKCkuZmlsdGVyKCkpKQotICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gRm9yIENTU0ZpbHRlciwgc291cmNlSW1hZ2VSZWN0
ID0gZmlsdGVyUmVnaW9uLgorICAgIGJvb2wgaGFzVXBkYXRlZEJhY2tpbmdTdG9yZSA9IGZhbHNl
OworICAgIGlmIChtX3NvdXJjZUltYWdlUmVjdCAhPSBmaWx0ZXJSZWdpb24pIHsKKyAgICAgICAg
bV9zb3VyY2VJbWFnZVJlY3QgPSBmaWx0ZXJSZWdpb247CisgICAgICAgIGhhc1VwZGF0ZWRCYWNr
aW5nU3RvcmUgPSB0cnVlOwogICAgIH0KIAogICAgIGlmICghZmlsdGVyLmhhc0ZpbHRlclRoYXRN
b3Zlc1BpeGVscygpKQogICAgICAgICBtX3JlcGFpbnRSZWN0ID0gZGlydHlSZWN0OwogICAgIGVs
c2UgewogICAgICAgICBpZiAoaGFzVXBkYXRlZEJhY2tpbmdTdG9yZSkKLSAgICAgICAgICAgIG1f
cmVwYWludFJlY3QgPSBmaWx0ZXJTb3VyY2VSZWN0OworICAgICAgICAgICAgbV9yZXBhaW50UmVj
dCA9IGZpbHRlclJlZ2lvbjsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX3JlcGFpbnRS
ZWN0ID0gZGlydHlSZWN0OwogICAgICAgICAgICAgbV9yZXBhaW50UmVjdC51bml0ZShsYXllclJl
cGFpbnRSZWN0KTsKLSAgICAgICAgICAgIG1fcmVwYWludFJlY3QuaW50ZXJzZWN0KGZpbHRlclNv
dXJjZVJlY3QpOworICAgICAgICAgICAgbV9yZXBhaW50UmVjdC5pbnRlcnNlY3QoZmlsdGVyUmVn
aW9uKTsKICAgICAgICAgfQogICAgIH0KLSAgICBtX3BhaW50T2Zmc2V0ID0gZmlsdGVyU291cmNl
UmVjdC5sb2NhdGlvbigpOwotICAgIHJlc2V0RGlydHlTb3VyY2VSZWN0KCk7CiAKLSAgICBmaWx0
ZXIuY2xhbXBGaWx0ZXJSZWdpb25JZk5lZWRlZCgpOworICAgIG1fcGFpbnRPZmZzZXQgPSBmaWx0
ZXJSZWdpb24ubG9jYXRpb24oKTsKKyAgICByZXNldERpcnR5U291cmNlUmVjdCgpOwogCi0gICAg
aWYgKGhhc1VwZGF0ZWRCYWNraW5nU3RvcmUpCi0gICAgICAgIGFsbG9jYXRlQmFja2luZ1N0b3Jl
KGRlc3RpbmF0aW9uQ29udGV4dCk7CisgICAgZmlsdGVyLnNldEZpbHRlclJlZ2lvbihtX3NvdXJj
ZUltYWdlUmVjdCk7CisgICAgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChkZXN0aW5hdGlv
bkNvbnRleHQpOwogCiAgICAgYXV0byogc291cmNlR3JhcGhpY3NDb250ZXh0ID0gaW5wdXRDb250
ZXh0KCk7Ci0gICAgaWYgKCFzb3VyY2VHcmFwaGljc0NvbnRleHQgfHwgZmlsdGVyLmZpbHRlclJl
Z2lvbigpLmlzRW1wdHkoKSB8fCBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoZmlsdGVy
LmZpbHRlclJlZ2lvbigpLnNpemUoKSkpCisgICAgaWYgKCFzb3VyY2VHcmFwaGljc0NvbnRleHQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gVHJhbnNsYXRlIHRoZSBjb250ZXh0
IHNvIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBsYXllciBpcyBjYXB0dXJlZCBpbiB0aGUgb2Zm
c2NyZWVuIG1lbW9yeSBidWZmZXIuCkBAIC0yMDcsNyArMjI0LDcgQEAgdm9pZCBSZW5kZXJMYXll
ckZpbHRlcnM6OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25D
b250ZXh0KQogCiAgICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVyOwogCi0gICAgZGVzdGluYXRp
b25Db250ZXh0LmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKG1fc291cmNlSW1hZ2UuZ2V0KCksIGZp
bHRlcik7CisgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKG1f
c291cmNlSW1hZ2UuZ2V0KCksIG1fc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXIpOwogICAgIGZpbHRl
ci5jbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGaWx0
ZXJzLCBzdHJlYW0gPDwgIlJlbmRlckxheWVyRmlsdGVycyAiIDw8IHRoaXMgPDwgIiBhcHBseUZp
bHRlckVmZmVjdCBkb25lXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckZpbHRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlcnMuaAppbmRleCBiNzBhZjE1NWExYTRmNjg3ZDU0NjhmZDRjNzI5YTkzZWMxZDEz
NzMwLi5mNmJkNjI4MWI3M2ViOWU1MTA3YmRkYjYxMmQ1ZTlmY2FmNjkzNGY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oCkBAIC03MCwxMyArNzAs
MTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCByZXNldERpcnR5U291
cmNlUmVjdCgpIHsgbV9kaXJ0eVNvdXJjZVJlY3QgPSBMYXlvdXRSZWN0KCk7IH0KICAgICBHcmFw
aGljc0NvbnRleHQqIGlucHV0Q29udGV4dCgpOwotICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3Rv
cmUoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KTsKKyAgICB2b2lkIGFsbG9j
YXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250
ZXh0KTsKIAogICAgIFJlbmRlckxheWVyJiBtX2xheWVyOwogCiAgICAgVmVjdG9yPFJlZlB0cjxF
bGVtZW50Pj4gbV9pbnRlcm5hbFNWR1JlZmVyZW5jZXM7CiAgICAgVmVjdG9yPENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFNWR0RvY3VtZW50Pj4gbV9leHRlcm5hbFNWR1JlZmVyZW5jZXM7CiAK
KyAgICBMYXlvdXRSZWN0IG1fdGFyZ2V0Qm91bmRpbmdCb3g7CisgICAgRmxvYXRSZWN0IG1fc291
cmNlSW1hZ2VSZWN0OwogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9zb3VyY2VJbWFnZTsKICAg
ICBSZWZQdHI8Q1NTRmlsdGVyPiBtX2ZpbHRlcjsKICAgICBMYXlvdXRSZWN0IG1fZGlydHlTb3Vy
Y2VSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCBiMDMwYzBmNjY1NjE1MWMxMTFhMjFlOTlkMzAw
MTIyMTM2NmY0MDVkLi40MzQ4ODY4NGFhNjU3N2U4OWNlNWYyOTQ3NDlhNDkzMjYzNTE0Zjc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJl
bmRlCiAKICAgICAvLyBDcmVhdGUgdGhlIFNWR0ZpbHRlciBvYmplY3QuCiAgICAgZmlsdGVyRGF0
YS0+YnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oKTsKLSAgICBmaWx0ZXJE
YXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJFbGVtZW50KCksICpmaWx0ZXJE
YXRhLT5idWlsZGVyLCByZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgZmlsdGVyRGF0YS0+ZHJh
d2luZ1JlZ2lvbiwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgdGFyZ2V0Qm91bmRpbmdCb3gpOwor
ICAgIGZpbHRlckRhdGEtPmZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlckVsZW1lbnQo
KSwgKmZpbHRlckRhdGEtPmJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBmaWx0
ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgaWYgKCFmaWx0ZXJE
YXRhLT5maWx0ZXIpIHsKICAgICAgICAgbV9yZW5kZXJlckZpbHRlckRhdGFNYXAucmVtb3ZlKCZy
ZW5kZXJlcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lk
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgR3JhcGhpYwogCiAgICAgaWYgKCFmaWx0ZXJEYXRhLmJvdW5kYXJpZXMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsK
LSAgICAgICAgY29udGV4dC0+ZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS5zb3Vy
Y2VHcmFwaGljQnVmZmVyLmdldCgpLCAqZmlsdGVyRGF0YS5maWx0ZXIpOworICAgICAgICBjb250
ZXh0LT5kcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZm
ZXIuZ2V0KCksIGZpbHRlckRhdGEuZHJhd2luZ1JlZ2lvbiwgKmZpbHRlckRhdGEuZmlsdGVyKTsK
ICAgICB9CiAKICAgICBmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4
dC5jcHAKaW5kZXggMWM0Y2RkNWEyMjViODQwZTQwYjM3NDBjMDgwM2IzMWIyY2I3ZjQ2MC4uYTI3
YWM0ZmMzNjUxNjMyNjEyYjk2NDY4MmQ5YjRiNDljMDk4ODgzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00MzEs
NyArNDMxLDcgQEAgdm9pZCB3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYKICAgICAgICAgRmxvYXRSZWN0IGR1
bW15UmVjdDsKICAgICAgICAgRmxvYXRTaXplIGR1bW15U2NhbGUoMSwgMSk7CiAgICAgICAgIFNW
R0ZpbHRlckJ1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0Zp
bHRlcjo6Y3JlYXRlKGZpbHRlci5maWx0ZXJFbGVtZW50KCksIGJ1aWxkZXIsIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIGR1bW15U2NhbGUsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1t
eVJlY3QpOworICAgICAgICBhdXRvIGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmls
dGVyLmZpbHRlckVsZW1lbnQoKSwgYnVpbGRlciwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgZHVtbXlTY2FsZSwgZHVtbXlSZWN0LCBkdW1teVJlY3QpOwogICAgICAgICBpZiAoZHVtbXlG
aWx0ZXIpIHsKICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3Bl
KHRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlci5jcHAKaW5kZXggZjM5ZmMyNmRkOTA2MmRhYzFhODc4YjkxMzNmMjU4YTIxYjU5MmViMy4u
MTI2NDJkNjMzNWNmZDY1MmIyNmViN2ZmODc5ZDgxOTNmNDRmNmI2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCkBAIC0yOSwxOSAr
MjksMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8U1ZHRmlsdGVyPiBTVkdG
aWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50LCBTVkdGaWx0ZXJC
dWlsZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uLCBG
aWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0KQorUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVy
OjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRl
ciYgYnVpbGRlciwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUm
IGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3QpCiB7Ci0g
ICAgcmV0dXJuIGNyZWF0ZShmaWx0ZXJFbGVtZW50LCBidWlsZGVyLCByZW5kZXJpbmdNb2RlLCBm
aWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXJSZWdpb24sIGNsaXBPcGVyYXRpb24s
IGZpbHRlclJlZ2lvbiwgJnByZXZpb3VzRWZmZWN0KTsKKyAgICByZXR1cm4gY3JlYXRlKGZpbHRl
ckVsZW1lbnQsIGJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBjbGlwT3BlcmF0
aW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgdGFyZ2V0Qm91bmRpbmdCb3gsICZwcmV2aW91c0VmZmVj
dCk7CiB9CiAKLVJlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNWR0ZpbHRlckVs
ZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9u
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KQorUmVmUHRyPFNWR0ZpbHRlcj4g
U1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmls
dGVyQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBG
bG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCkKIHsKLSAgICByZXR1cm4gY3JlYXRlKGZp
bHRlckVsZW1lbnQsIGJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBzb3VyY2VJ
bWFnZVJlY3QsIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlvbjo6SW50ZXJzZWN0LCB0YXJnZXRC
b3VuZGluZ0JveCwgbnVsbHB0cik7CisgICAgcmV0dXJuIGNyZWF0ZShmaWx0ZXJFbGVtZW50LCBi
dWlsZGVyLCByZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbjo6SW50ZXJz
ZWN0LCBmaWx0ZXJSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94LCBudWxscHRyKTsKIH0KIAotUmVm
UHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVy
RWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIENsaXBPcGVyYXRp
b24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmls
dGVyRWZmZWN0KiBwcmV2aW91c0VmZmVjdCkKK1JlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6
Y3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXIm
IGJ1aWxkZXIsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBm
aWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVy
RWZmZWN0KiBwcmV2aW91c0VmZmVjdCkKIHsKLSAgICBhdXRvIGZpbHRlciA9IGFkb3B0UmVmKCpu
ZXcgU1ZHRmlsdGVyKHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBzb3VyY2VJbWFnZVJlY3Qs
IGZpbHRlclJlZ2lvbiwgY2xpcE9wZXJhdGlvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlckVs
ZW1lbnQucHJpbWl0aXZlVW5pdHMoKSkpOworICAgIGF1dG8gZmlsdGVyID0gYWRvcHRSZWYoKm5l
dyBTVkdGaWx0ZXIocmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIGNsaXBPcGVyYXRpb24sIGZp
bHRlclJlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlckVsZW1lbnQucHJpbWl0aXZlVW5p
dHMoKSkpOwogCiAgICAgaWYgKCFwcmV2aW91c0VmZmVjdCkKICAgICAgICAgYnVpbGRlci5zZXR1
cEJ1aWx0aW5FZmZlY3RzKFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpKTsKQEAgLTcxLDggKzcxLDgg
QEAgUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYg
ZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnUKICAgICByZXR1cm4gZmlsdGVyOwogfQogCi1TVkdG
aWx0ZXI6OlNWR0ZpbHRlcihSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlIHByaW1pdGl2ZVVuaXRzKQotICAgIDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6U1ZHRmlsdGVy
LCByZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXJSZWdp
b24sIGNsaXBPcGVyYXRpb24pCitTVkdGaWx0ZXI6OlNWR0ZpbHRlcihSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24g
Y2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0
aXZlVW5pdHMpCisgICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpTVkdGaWx0ZXIsIHJlbmRlcmlu
Z01vZGUsIGZpbHRlclNjYWxlLCBjbGlwT3BlcmF0aW9uLCBmaWx0ZXJSZWdpb24pCiAgICAgLCBt
X3RhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KQogICAgICwgbV9wcmltaXRpdmVV
bml0cyhwcmltaXRpdmVVbml0cykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyLmgKaW5kZXggZjRkMjk0YTcxMGZjYTMwYTk1ZjcwMWQyYzhlMjQy
ZmYyMDk2MmEyMC4uYzBhNWZhZTQyMTNjODFhOTFjYTNhM2YzZjkyMjc0MDY4NWE3NTNiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKQEAg
LTM2LDkgKzM2LDkgQEAgY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIAogY2xhc3MgU1ZHRmlsdGVy
IGZpbmFsIDogcHVibGljIEZpbHRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTVkdG
aWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRl
cmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJh
dGlvbiwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCk7Ci0gICAgc3RhdGljIFJlZlB0cjxT
VkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJl
bmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0
ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmlu
Z01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlv
biwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0KiBwcmV2
aW91c0VmZmVjdCk7CisgICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0
ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3QpOworICAgIHN0YXRpYyBS
ZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYsIFNWR0ZpbHRlckJ1aWxk
ZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBG
bG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0Jv
eCk7CisgICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50
JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmls
dGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBGaWx0ZXJFZmZlY3QqIHByZXZpb3Vz
RWZmZWN0KTsKIAogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0KIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseSgpIGZpbmFsOwogCiBwcml2YXRlOgotICAgIFNW
R0ZpbHRlcihSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdp
b24sIENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMpOworICAgIFNWR0ZpbHRlcihS
ZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRC
b3VuZGluZ0JveCwgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMpOwog
CiAgICAgLy8gRklYTUU6IE1lcmdlIHRoZSBlZmZlY3RCb3VuZGFyaWVzIGluIHRoZSBleHByZXNz
aW9uIG5vZGUuCiAgICAgdm9pZCBzZXRFeHByZXNzaW9uKEZpbHRlckVmZmVjdFZlY3RvciYmIGV4
cHJlc3Npb24pIHsgbV9leHByZXNzaW9uID0gV1RGTW92ZShleHByZXNzaW9uKTsgfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDAwYzE4NWYwYTY2MmJjNTNlNDdlMWZkNDZiODhjM2JjZDU2ZTAxOWIuLjVlNzk1OWM2YWQyNDcw
OWJiMjY2NjQzYTI4ODE3MjkwZmEyMzBlYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0x
Mi0wMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIChSRUdSRVNTSU9OIHIyODU1OTcpOiBTZXQgdGhlIGZpbHRlclJlZ2lvbiBvZiB0
aGUgQ1NTRmlsdGVyIGFmdGVyIGl0IGlzIGNyZWF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzg0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCBsYXlvdXQgdGVzdHMgd2hpY2ggd2VyZSBz
a2lwcGVkIGluIHIyODU1OTcuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDIx
LTEyLTAzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtH
UFUgUHJvY2Vzc10gKFJFR1JFU1NJT04gcjI4NTU5Nyk6IEZpeCBTVkdGaWx0ZXIgY2xhbXBpbmcg
Y2FsY3VsYXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDY4MWU0NWU1NDZhODc0YmY5ZTQ4ZDdi
ZjdjODQ2Y2Q2MmYxZmIyYWEuLjg3MGExYTk1Yzg2NTJiMTlmYmExMWE0ZTAwN2ZhOTZjOGUwNDIz
NWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTE2MywxOSArNTE2MywzIEBAIGltcG9ydGVkL2Js
aW5rL2h0dHAvdGVzdHMvcGx1Z2lucyBbIFNraXAgXQogaW1wb3J0ZWQvYmxpbmsvcGx1Z2lucyBb
IFNraXAgXQoganMvZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmh0bWwgWyBTa2lwIF0KIHVzZXJz
Y3JpcHRzL3VzZXItc2NyaXB0LXBsdWdpbi1kb2N1bWVudC5odG1sIFsgU2tpcCBdCi0KLSMgVGhl
c2UgZmlsdGVyIHJlbGF0ZWQgZmFpbHVyZXMgc2hvdWxkIGJlIGZpeGVkIG9uY2Ugd2Via2l0Lm9y
Zy9iLzIzMjcwNSBpcyByZXNvbHZlZAotd2Via2l0Lm9yZy9iLzIzMjcwNSBjb21wb3NpdGluZy9m
aWx0ZXJzL3N3LW5lc3RlZC1zaGFkb3ctb3ZlcmxhcHMtaHctbmVzdGVkLXNoYWRvdy5odG1sIFsg
U2tpcCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IGNvbXBvc2l0aW5nL2ZpbHRlcnMvc3ctc2hhZG93
LW92ZXJsYXBzLWh3LWxheWVyLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgY29t
cG9zaXRpbmcvZmlsdGVycy9zdy1zaGFkb3ctb3ZlcmxhcHMtaHctc2hhZG93Lmh0bWwgWyBTa2lw
IF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UtZGVs
ZXRlLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL3N2Zy1i
bHVyLWZpbHRlci1jbGlwcGVkLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgZmFz
dC9maWx0ZXItaW1hZ2UvYmFja2dyb3VuZC1maWx0ZXItaW1hZ2UuaHRtbCBbIFNraXAgXQotd2Vi
a2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2ZpbHRlci1pbWFnZS9maWx0ZXItaW1hZ2UtYmx1ci5odG1s
IFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvZmlsdGVyLWltYWdlL2ZpbHRlci1p
bWFnZS1zdmcuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2ZpbHRlci1p
bWFnZS9maWx0ZXItaW1hZ2UuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMjcwNSBpbXBv
cnRlZC9tb3ppbGxhL3N2Zy9keW5hbWljLWZpbHRlci1jb250ZW50cy0wMWEuc3ZnIFsgU2tpcCBd
Ci13ZWJraXQub3JnL2IvMjMyNzA1IGltcG9ydGVkL21vemlsbGEvc3ZnL2ZpbHRlcnMvZmVDb21w
b3NpdGUtMi5zdmcgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgaW1wb3J0ZWQvbW96aWxs
YS9zdmcvZmlsdGVycy9mZVNwZWN1bGFyTGlnaHRpbmctMS5zdmcgWyBTa2lwIF0KLXdlYmtpdC5v
cmcvYi8yMzI3MDUgc3ZnL2N1c3RvbS9yZXNvdXJjZXMtY3NzLXNjYWxlZC5odG1sIFsgU2tpcCBd
Ci13ZWJraXQub3JnL2IvMjMyNzA1IHN2Zy9maWx0ZXJzL2ZlTGlnaHRpbmctY2xpcHBlZC5zdmcg
WyBTa2lwIF0K
</data>
<flag name="review"
          id="471272"
          type_id="1"
          status="+"
          setter="heycam"
    />
    <flag name="commit-queue"
          id="471285"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446015</attachid>
            <date>2021-12-06 02:17:29 -0800</date>
            <delta_ts>2021-12-06 10:20:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233849-20211206021728.patch</filename>
            <type>text/plain</type>
            <size>32473</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc4NjM4MTJhNjg1ZWRl
YzcyYWQ4NzE2NTBkZTYzZWM5MGQ0MDkyZi4uZmYxNjNlNGFmZTdkMzI4ZTkwM2FjYjRmY2Y3Mjc4
ZDIzMDY5ZmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTEyLTA2ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorICAgICAgICBbR1BVIFByb2Nlc3NdIChS
RUdSRVNTSU9OIHIyODU1OTcpOiBTZXQgdGhlIGZpbHRlclJlZ2lvbiBvZiB0aGUgQ1NTRmlsdGVy
IGFmdGVyIGl0IGlzIGNyZWF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzg0OQorCisgICAgICAgIFJldmlld2VkIGJ5IENhbWVyb24gTWNDb3Jt
YWNrLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2g6CisKKyAgICAgICAgMS4gc291cmNlSW1hZ2VS
ZWN0IGlzIG5vIGxvbmdlciBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gU1ZHRmlsdGVyLiBJdAor
ICAgICAgICAgICBzaG91bGQgYmUgcGFzc2VkIG9ubHkgd2hlbiBTVkdGaWx0ZXI6OmFwcGx5KCkg
aXMgY2FsbGVkLgorCisgICAgICAgIDIuIENTU0ZpbHRlcjo6Y3JlYXRlKCkgd2lsbCBjcmVhdGUg
YW5kIGJ1aWxkIHRoZSBGaWx0ZXJGdW5jdGlvbnMgZnJvbSB0aGUKKyAgICAgICAgICAgRmlsdGVy
T3BlcmF0aW9ucy4gU28gd2UgaGF2ZSB0byBwYXNzIHRoZSB0YXJnZXRCb3VuZGluZ0JveCBzaW5j
ZSB0aGUKKyAgICAgICAgICAgRmlsdGVyRWZmZWN0cyB3aWxsIG5lZWQgaXQgd2hlbiBjYWxjdWxh
dGluZyB0aGUgb3V0c2V0cy4KKworICAgICAgICAzLiBUaGUgc3RlcHMgaW4gUmVuZGVyTGF5ZXJG
aWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdCgpIGFyZToKKyAgICAgICAgICAgYSkgUmVjcmVhdGUg
dGhlIENTU0ZpbHRlciBpZiB0aGUgdGFyZ2V0Qm91bmRpbmdCb3ggY2hhbmdlcy4KKyAgICAgICAg
ICAgYikgQ2FsY3VsYXRlIHRoZSBmaWx0ZXJSZWdpb24gPSB0YXJnZXRCb3VuZGluZ0JveCArIG91
dHNldHMKKyAgICAgICAgICAgYykgQ2xhbXAgdGhlIGZpbHRlclJlZ2lvbiBpZiBuZWVkZWQuIFRo
aXMgd2lsbCBjaGFuZ2UgdGhlIGZpbHRlclNjYWxlLgorICAgICAgICAgICBkKSBTZXQgc291cmNl
SW1hZ2VSZWN0ID0gZmlsdGVyUmVnaW9uLgorICAgICAgICAgICBlKSBSZWNyZWF0ZSB0aGUgc291
cmNlSW1hZ2UgaWYgbmVlZGVkLgorICAgICAgICAgICBmKSBzZXR1cCB0aGUgY29udGV4dCBmb3Ig
ZHJhd2luZyB0aGUgdGFyZ2V0IHJlbmRlcmVyLgorCisgICAgICAgIDQuIE1hbmFnaW5nIHRoZSB0
YXJnZXRCb3VuZGluZ0JveCBhbmQgdGhlIGZpbHRlclJlZ2lvbiBpcyBtb3ZlZCBmcm9tIAorICAg
ICAgICAgICBDU1NGaWx0ZXIgdG8gUmVuZGVyTGF5ZXJGaWx0ZXJzLgorCisgICAgICAgICogY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1h
Z2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6RmlsdGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyOjpGaWx0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpDU1NGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU1ZHRmlsdGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0
ZXI6OnNldEZpbHRlclJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjptX2hhc0ZpbHRlclRoYXRT
aG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZpbHRlcjo6dXBkYXRlQmFja2luZ1N0b3JlUmVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJl
Y3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpzZXRTb3VyY2VJbWFn
ZVJlY3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyRmlsdGVyczo6YnVpbGRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjphcHBseUZpbHRlckVmZmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3JlKTog
RGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OlNWR0ZpbHRlcik6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisKIDIwMjEtMTItMDUgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBB
ZGQgdGhlIGVuY29kaW5nL2RlY29kaW5nIGZvciBGaWx0ZXIgYW5kIEZpbHRlckVmZmVjdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDI2OGY0OGMzMTRj
NzNjNWNkMjhkNWM2NWM1YTYzYWY0Mjc4MDU0YTAuLjY1MzEyMjUyMmFiZjM1MmZlYTkzMGM1NTg4
YjVmZWQxZmVjZmEzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJ
bWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1
ZS5jcHAKQEAgLTEyNCwxMiArMTI0LDEyIEBAIFJlZlB0cjxJbWFnZT4gQ1NTRmlsdGVySW1hZ2VW
YWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6CiAgICAg
YXV0byBzb3VyY2VJbWFnZVJlY3QgPSBGbG9hdFJlY3QgeyB7IH0sIHNpemUgfTsKICAgICBzb3Vy
Y2VJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIHNvdXJjZUltYWdlUmVjdCk7CiAK
LSAgICBhdXRvIGNzc0ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKG1fZmlsdGVyT3BlcmF0aW9u
cywgcmVuZGVyaW5nTW9kZSk7Ci0KLSAgICBjc3NGaWx0ZXItPnNldFNvdXJjZUltYWdlUmVjdChz
b3VyY2VJbWFnZVJlY3QpOwotICAgIGlmICghY3NzRmlsdGVyLT5idWlsZEZpbHRlckZ1bmN0aW9u
cyhyZW5kZXJlciwgbV9maWx0ZXJPcGVyYXRpb25zKSkKKyAgICBhdXRvIGNzc0ZpbHRlciA9IENT
U0ZpbHRlcjo6Y3JlYXRlKHJlbmRlcmVyLCBtX2ZpbHRlck9wZXJhdGlvbnMsIHJlbmRlcmluZ01v
ZGUsIEZsb2F0U2l6ZSB7IDEsIDEgfSwgRmlsdGVyOjpDbGlwT3BlcmF0aW9uOjpJbnRlcnNlY3Qs
IHNvdXJjZUltYWdlUmVjdCk7CisgICAgaWYgKCFjc3NGaWx0ZXIpCiAgICAgICAgIHJldHVybiAm
SW1hZ2U6Om51bGxJbWFnZSgpOwogCisgICAgY3NzRmlsdGVyLT5zZXRGaWx0ZXJSZWdpb24oc291
cmNlSW1hZ2VSZWN0KTsKKwogICAgIGlmIChhdXRvIGltYWdlID0gc291cmNlSW1hZ2UtPmZpbHRl
cmVkSW1hZ2UoKmNzc0ZpbHRlcikpCiAgICAgICAgIHJldHVybiBpbWFnZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuY3BwCmluZGV4
IDU3OTlhMDM2NWUxNTBmMzQ1N2VkYmExMjJlOTk5YWVmYjg2ZTQzNjEuLjczM2FmNjYxOWY0MWRk
MWU1MDlkYjY4ZWE0YmZlODc1YzI4NzZhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5jcHAKQEAgLTMyLDIxICszMiwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbHRlcjo6RmlsdGVyKEZpbHRlcjo6VHlwZSBmaWx0
ZXJUeXBlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmls
dGVyU2NhbGUsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbikKK0ZpbHRlcjo6RmlsdGVyKEZp
bHRlcjo6VHlwZSBmaWx0ZXJUeXBlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pCiAgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0ZXJU
eXBlKQogICAgICwgbV9yZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpCiAgICAgLCBtX2ZpbHRl
clNjYWxlKGZpbHRlclNjYWxlKQogICAgICwgbV9jbGlwT3BlcmF0aW9uKGNsaXBPcGVyYXRpb24p
Ci17Ci19Ci0KLUZpbHRlcjo6RmlsdGVyKEZpbHRlcjo6VHlwZSBmaWx0ZXJUeXBlLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lv
biwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uKQotICAgIDogRmlsdGVyRnVuY3Rpb24oZmls
dGVyVHlwZSkKLSAgICAsIG1fcmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKQotICAgICwgbV9m
aWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSkKLSAgICAsIG1fc291cmNlSW1hZ2VSZWN0KHNvdXJjZUlt
YWdlUmVjdCkKICAgICAsIG1fZmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lvbikKLSAgICAsIG1fY2xp
cE9wZXJhdGlvbihjbGlwT3BlcmF0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCBjMzNlZDA4MjhiMTNhYTc2
MTJjMTRhM2M4MzZmMWRlYTkxODIwOGVkLi4xNjJhYmU2NzI5NDE4YjRmM2YwMjU2Mjk4ZTViNjY4
ZWNkYWE4MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyLmgKQEAgLTc3LDE5ICs3NywxNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICB1c2luZyBGaWx0ZXJGdW5jdGlvbjo6RmlsdGVyRnVuY3Rpb247Ci0gICAgRmlsdGVyKEZp
bHRlcjo6VHlwZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwg
Q2xpcE9wZXJhdGlvbiA9IENsaXBPcGVyYXRpb246OkludGVyc2VjdCk7Ci0gICAgRmlsdGVyKEZp
bHRlcjo6VHlwZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVy
UmVnaW9uLCBDbGlwT3BlcmF0aW9uID0gQ2xpcE9wZXJhdGlvbjo6SW50ZXJzZWN0KTsKKyAgICBG
aWx0ZXIoRmlsdGVyOjpUeXBlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRl
clNjYWxlLCBDbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiA9IHsg
fSk7CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyaW5nTW9kZSBtX3JlbmRlcmluZ01vZGU7Ci0KICAg
ICBGbG9hdFNpemUgbV9maWx0ZXJTY2FsZTsKLSAgICBGbG9hdFJlY3QgbV9zb3VyY2VJbWFnZVJl
Y3Q7CisgICAgQ2xpcE9wZXJhdGlvbiBtX2NsaXBPcGVyYXRpb247CiAgICAgRmxvYXRSZWN0IG1f
ZmlsdGVyUmVnaW9uOwogCisgICAgLy8gRklYTUU6IHRoZXNlIHNob3VsZCBub3QgYmUgbWVtYmVy
cyBvZiBGaWx0ZXIuIFRoZXkgc2hvdWxkIGJlIHBhc3NlZCB0byBGaWx0ZXI6OmFwcGx5KCkuCisg
ICAgRmxvYXRSZWN0IG1fc291cmNlSW1hZ2VSZWN0OwogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
bV9zb3VyY2VJbWFnZTsKLQotICAgIENsaXBPcGVyYXRpb24gbV9jbGlwT3BlcmF0aW9uOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcAppbmRleCBhOTc4YjlhZWYwZWJiMGFiYTM1NzAwOGVlYWI1MzdjZTVjMjA1MTM3Li4xMWM0
OWFmYTU3ZmQyM2ZlYTA5OWJiNjBiMjYwYzljN2U4ZjhkM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcApAQCAtNDQsMTIgKzQ0LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmUHRyPENTU0ZpbHRlcj4gQ1NTRmlsdGVyOjpjcmVhdGUoY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9h
dCBzY2FsZUZhY3RvciwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uKQorUmVmUHRyPENTU0Zp
bHRlcj4gQ1NTRmlsdGVyOjpjcmVhdGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KQogewogICAgIGJvb2wgaGFzRmls
dGVyVGhhdE1vdmVzUGl4ZWxzID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMo
KTsKICAgICBib29sIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3Jp
Z2luID0gb3BlcmF0aW9ucy5oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0
eU9yaWdpbigpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRmlsdGVyKHJlbmRlcmlu
Z01vZGUsIHNjYWxlRmFjdG9yLCBjbGlwT3BlcmF0aW9uLCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMsIGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKSk7Cisg
ICAgYXV0byBmaWx0ZXIgPSBhZG9wdFJlZigqbmV3IENTU0ZpbHRlcihyZW5kZXJpbmdNb2RlLCBm
aWx0ZXJTY2FsZSwgY2xpcE9wZXJhdGlvbiwgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBoYXNG
aWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbikpOworCisgICAgaWYg
KCFmaWx0ZXItPmJ1aWxkRmlsdGVyRnVuY3Rpb25zKHJlbmRlcmVyLCBvcGVyYXRpb25zLCB0YXJn
ZXRCb3VuZGluZ0JveCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGZp
bHRlcjsKIH0KIAogUmVmUHRyPENTU0ZpbHRlcj4gQ1NTRmlsdGVyOjpjcmVhdGUoVmVjdG9yPFJl
ZjxGaWx0ZXJGdW5jdGlvbj4+JiYgZnVuY3Rpb25zKQpAQCAtNTcsOCArNjIsOCBAQCBSZWZQdHI8
Q1NTRmlsdGVyPiBDU1NGaWx0ZXI6OmNyZWF0ZShWZWN0b3I8UmVmPEZpbHRlckZ1bmN0aW9uPj4m
JiBmdW5jdGlvbnMpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NGaWx0ZXIoV1RGTW92ZShm
dW5jdGlvbnMpKSk7CiB9CiAKLUNTU0ZpbHRlcjo6Q1NTRmlsdGVyKFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgZmxvYXQgc2NhbGVGYWN0b3IsIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlv
biwgYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMsIGJvb2wgaGFzRmlsdGVyVGhhdFNob3Vs
ZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4pCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBl
OjpDU1NGaWx0ZXIsIHJlbmRlcmluZ01vZGUsIEZsb2F0U2l6ZSB7IHNjYWxlRmFjdG9yLCBzY2Fs
ZUZhY3RvciB9LCBjbGlwT3BlcmF0aW9uKQorQ1NTRmlsdGVyOjpDU1NGaWx0ZXIoUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3Bl
cmF0aW9uIGNsaXBPcGVyYXRpb24sIGJvb2wgaGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzLCBib29s
IGhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luKQorICAgIDog
RmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCByZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2Fs
ZSwgY2xpcE9wZXJhdGlvbikKICAgICAsIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzKGhhc0Zp
bHRlclRoYXRNb3Zlc1BpeGVscykKICAgICAsIG1faGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJp
Y3RlZEJ5U2VjdXJpdHlPcmlnaW4oaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2Vj
dXJpdHlPcmlnaW4pCiB7CkBAIC0yMTMsNyArMjE4LDcgQEAgc3RhdGljIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGNyZWF0ZVNlcGlhRWZmZWN0KGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXQKICAgICByZXR1cm4gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKEZFQ09MT1JNQVRSSVhfVFlQRV9N
QVRSSVgsIFdURk1vdmUoaW5wdXRQYXJhbWV0ZXJzKSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U1ZH
RmlsdGVyPiBjcmVhdGVTVkdGaWx0ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFJlZmVyZW5j
ZUZpbHRlck9wZXJhdGlvbiYgZmlsdGVyT3BlcmF0aW9uLCBSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCkKK3N0YXRpYyBSZWZQdHI8U1ZHRmlsdGVy
PiBjcmVhdGVTVkdGaWx0ZXIoQ1NTRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IFJlZmVyZW5jZUZpbHRl
ck9wZXJhdGlvbiYgZmlsdGVyT3BlcmF0aW9uLCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0Vm
ZmVjdCkKIHsKICAgICBhdXRvJiByZWZlcmVuY2VkU1ZHUmVzb3VyY2VzID0gcmVuZGVyZXIuZW5z
dXJlUmVmZXJlbmNlZFNWR1Jlc291cmNlcygpOwogICAgIGF1dG8qIGZpbHRlckVsZW1lbnQgPSBy
ZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLnJlZmVyZW5jZWRGaWx0ZXJFbGVtZW50KHJlbmRlcmVyLmRv
Y3VtZW50KCksIGZpbHRlck9wZXJhdGlvbik7CkBAIC0yMjcsMTAgKzIzMiwxMCBAQCBzdGF0aWMg
UmVmUHRyPFNWR0ZpbHRlcj4gY3JlYXRlU1ZHRmlsdGVyKENTU0ZpbHRlciYgZmlsdGVyLCBjb25z
dCBSZWZlcmVuY2VGaWx0ZQogICAgIH0KIAogICAgIFNWR0ZpbHRlckJ1aWxkZXIgYnVpbGRlcjsK
LSAgICByZXR1cm4gU1ZHRmlsdGVyOjpjcmVhdGUoKmZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIGZp
bHRlci5yZW5kZXJpbmdNb2RlKCksIGZpbHRlci5maWx0ZXJTY2FsZSgpLCBmaWx0ZXIuc291cmNl
SW1hZ2VSZWN0KCksIGZpbHRlci5maWx0ZXJSZWdpb24oKSwgZmlsdGVyLmNsaXBPcGVyYXRpb24o
KSwgcHJldmlvdXNFZmZlY3QpOworICAgIHJldHVybiBTVkdGaWx0ZXI6OmNyZWF0ZSgqZmlsdGVy
RWxlbWVudCwgYnVpbGRlciwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgZmlsdGVyLmZpbHRlclNj
YWxlKCksIGZpbHRlci5jbGlwT3BlcmF0aW9uKCksIHRhcmdldEJvdW5kaW5nQm94LCBwcmV2aW91
c0VmZmVjdCk7CiB9CiAKLWJvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucykK
K2Jvb2wgQ1NTRmlsdGVyOjpidWlsZEZpbHRlckZ1bmN0aW9ucyhSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRCb3VuZGluZ0JveCkKIHsKICAgICBtX2Z1bmN0aW9ucy5jbGVhcigpOwogICAgIG1f
b3V0c2V0cyA9IHsgfTsKQEAgLTI4Nyw3ICsyOTIsNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGRG
aWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJh
dAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJF
RkVSRU5DRToKLSAgICAgICAgICAgIGZpbHRlciA9IGNyZWF0ZVNWR0ZpbHRlcigqdGhpcywgZG93
bmNhc3Q8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uPigqb3BlcmF0aW9uKSwgcmVuZGVyZXIsICpw
cmV2aW91c0VmZmVjdCk7CisgICAgICAgICAgICBmaWx0ZXIgPSBjcmVhdGVTVkdGaWx0ZXIoKnRo
aXMsIGRvd25jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4oKm9wZXJhdGlvbiksIHJlbmRl
cmVyLCB0YXJnZXRCb3VuZGluZ0JveCwgKnByZXZpb3VzRWZmZWN0KTsKICAgICAgICAgICAgIGVm
ZmVjdCA9IG51bGxwdHI7CiAgICAgICAgICAgICBicmVhazsKIApAQCAtMzMwLDE4ICszMzUsNiBA
QCBib29sIENTU0ZpbHRlcjo6YnVpbGRGaWx0ZXJGdW5jdGlvbnMoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENT
U0ZpbHRlcjo6dXBkYXRlQmFja2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJl
Y3QpCi17Ci0gICAgaWYgKGZpbHRlclJlY3QuaXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXpl
TmVlZHNDbGFtcGluZyhmaWx0ZXJSZWN0LnNpemUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmIChmaWx0ZXJSZWN0ID09IHNvdXJjZUltYWdlUmVjdCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBzZXRTb3VyY2VJbWFnZVJlY3QoZmlsdGVyUmVjdCk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6bGFzdEVmZmVj
dCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnVuY3Rpb25zLmlzRW1wdHkoKSkKQEAgLTM3OCwzMyAr
MzcxLDI0IEBAIHZvaWQgQ1NTRmlsdGVyOjpjbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKQogUmVm
UHRyPEZpbHRlckltYWdlPiBDU1NGaWx0ZXI6OmFwcGx5KCkKIHsKICAgICBmb3IgKGF1dG8mIGZ1
bmN0aW9uIDogbV9mdW5jdGlvbnMpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc1NWR0ZpbHRl
cigpKQorICAgICAgICAgICAgZG93bmNhc3Q8U1ZHRmlsdGVyPihmdW5jdGlvbi5wdHIoKSktPnNl
dFNvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QoKSk7CiAgICAgICAgIGlmICghZnVuY3Rp
b24tPmFwcGx5KCp0aGlzKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAg
ICByZXR1cm4gbGFzdEVmZmVjdCgpLT5maWx0ZXJJbWFnZSgpOwogfQogCi1MYXlvdXRSZWN0IENT
U0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRS
ZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpCi17Ci0gICAg
Ly8gVGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBhcmVhIGluIHRoZSAiZmlsdGVy
Qm94UmVjdCIgdGhhdCBuZWVkcyB0byBiZSByZXBhaW50ZWQsIHNvIHRoYXQgd2UgZnVsbHkgY292
ZXIgdGhlICJkaXJ0eVJlY3QiLgotICAgIGF1dG8gcmVjdEZvclJlcGFpbnQgPSBkaXJ0eVJlY3Q7
Ci0gICAgaWYgKGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpKQotICAgICAgICByZWN0Rm9yUmVw
YWludCArPSBvdXRzZXRzKCk7Ci0gICAgcmVjdEZvclJlcGFpbnQuaW50ZXJzZWN0KGZpbHRlckJv
eFJlY3QpOwotICAgIHJldHVybiByZWN0Rm9yUmVwYWludDsKLX0KLQotdm9pZCBDU1NGaWx0ZXI6
OnNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkKK3Zv
aWQgQ1NTRmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdp
b24pCiB7Ci0gICAgRmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKLSAg
ICBGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpOworICAgIEZpbHRl
cjo6c2V0RmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lvbik7CiAKICAgICBmb3IgKGF1dG8mIGZ1bmN0
aW9uIDogbV9mdW5jdGlvbnMpIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc1NWR0ZpbHRlcigp
KSB7Ci0gICAgICAgICAgICBkb3duY2FzdDxTVkdGaWx0ZXI+KGZ1bmN0aW9uLnB0cigpKS0+c2V0
RmlsdGVyUmVnaW9uKHNvdXJjZUltYWdlUmVjdCk7Ci0gICAgICAgICAgICBkb3duY2FzdDxTVkdG
aWx0ZXI+KGZ1bmN0aW9uLnB0cigpKS0+c2V0U291cmNlSW1hZ2VSZWN0KHNvdXJjZUltYWdlUmVj
dCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc1NWR0ZpbHRlcigpKQorICAg
ICAgICAgICAgZG93bmNhc3Q8U1ZHRmlsdGVyPihmdW5jdGlvbi5wdHIoKSktPnNldEZpbHRlclJl
Z2lvbihmaWx0ZXJSZWdpb24pOwogICAgIH0KKworICAgIGNsYW1wRmlsdGVyUmVnaW9uSWZOZWVk
ZWQoKTsKIH0KIAogSW50T3V0c2V0cyBDU1NGaWx0ZXI6Om91dHNldHMoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCmluZGV4IDk5MjE3N2ZmMDRkODgxZDZjMDJhNGE2N2Yw
MjIxZWViZWFmMTRjMjMuLmE3ZjBlNTNlZGQzZWUzMDk1YjI4ZTQ0NjRmZDQ5NjNkZjczNDA5ZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKQEAgLTQyLDEzICs0MiwxMiBAQCBj
bGFzcyBTb3VyY2VHcmFwaGljOwogY2xhc3MgQ1NTRmlsdGVyIGZpbmFsIDogcHVibGljIEZpbHRl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxDU1NGaWx0ZXI+IGNyZWF0ZShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgUmVuZGVyaW5n
TW9kZSwgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLCBDbGlwT3BlcmF0aW9uID0gQ2xpcE9wZXJhdGlv
bjo6SW50ZXJzZWN0KTsKKyAgICBzdGF0aWMgUmVmUHRyPENTU0ZpbHRlcj4gY3JlYXRlKFJlbmRl
ckVsZW1lbnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgUmVuZGVyaW5nTW9kZSwgY29uc3Qg
RmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRCb3VuZGluZ0JveCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDU1NG
aWx0ZXI+IGNyZWF0ZShWZWN0b3I8UmVmPEZpbHRlckZ1bmN0aW9uPj4mJik7CiAKICAgICBjb25z
dCBWZWN0b3I8UmVmPEZpbHRlckZ1bmN0aW9uPj4mIGZ1bmN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fZnVuY3Rpb25zOyB9CiAKLSAgICB2b2lkIHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9h
dFJlY3QmKTsKLSAgICBib29sIGJ1aWxkRmlsdGVyRnVuY3Rpb25zKFJlbmRlckVsZW1lbnQmLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgdm9pZCBzZXRGaWx0ZXJSZWdpb24oY29uc3Qg
RmxvYXRSZWN0Jik7CiAKICAgICBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxzOyB9CiAgICAgYm9vbCBoYXNGaWx0
ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1faGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW47IH0KQEAg
LTU5LDEzICs1OCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckludGVybWVkaWF0ZVJlc3Vs
dHMoKTsKICAgICBSZWZQdHI8RmlsdGVySW1hZ2U+IGFwcGx5KCkgZmluYWw7CiAKLSAgICBib29s
IHVwZGF0ZUJhY2tpbmdTdG9yZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWN0KTsKLQot
ICAgIExheW91dFJlY3QgY29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBM
YXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwot
CiBwcml2YXRlOgotICAgIENTU0ZpbHRlcihSZW5kZXJpbmdNb2RlLCBmbG9hdCBzY2FsZUZhY3Rv
ciwgQ2xpcE9wZXJhdGlvbiwgYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMsIGJvb2wgaGFz
RmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4pOworICAgIENTU0Zp
bHRlcihSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3Bl
cmF0aW9uLCBib29sIGhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscywgYm9vbCBoYXNGaWx0ZXJUaGF0
U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdpbik7CiAgICAgQ1NTRmlsdGVyKFZlY3Rv
cjxSZWY8RmlsdGVyRnVuY3Rpb24+PiYmKTsKKyAgICAKKyAgICBib29sIGJ1aWxkRmlsdGVyRnVu
Y3Rpb25zKFJlbmRlckVsZW1lbnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCk7CiAKICNpZiBVU0UoQ09SRV9JTUFHRSkKICAgICBi
b29sIHN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCmluZGV4IGNhZGZmNDE2
NjNkOWZjZWNhZDVjNDViNWY4NzQ3OTMwZGI4MDMyM2YuLjQwMWMwZjE5N2QyMjFiNzMxZmZmOWNk
YTc5MjY2NTFkOTI5NjFhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckZpbHRlcnMuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBSZW5kZXJMYXllckZp
bHRlcnM6OmJ1aWxkRmlsdGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBmbG9hdCBzY2FsZUZh
Y3RvciwKICAgICAvLyBJZiB0aGUgZmlsdGVyIGZhaWxzIHRvIGJ1aWxkLCByZW1vdmUgaXQgZnJv
bSB0aGUgbGF5ZXIuIEl0IHdpbGwgc3RpbGwgYXR0ZW1wdCB0bwogICAgIC8vIGdvIHRocm91Z2gg
cmVndWxhciBwcm9jZXNzaW5nIChlLmcuIGNvbXBvc2l0aW5nKSwgYnV0IG5ldmVyIGFwcGx5IGFu
eXRoaW5nLgogICAgIC8vIEZJWE1FOiB0aGlzIHJlYnVpbGRzIHRoZSBlbnRpcmUgZWZmZWN0cyBj
aGFpbiBldmVuIGlmIHRoZSBmaWx0ZXIgc3R5bGUgZGlkbid0IGNoYW5nZS4KLSAgICBtX2ZpbHRl
ciA9IENTU0ZpbHRlcjo6Y3JlYXRlKHJlbmRlcmVyLnN0eWxlKCkuZmlsdGVyKCksIHJlbmRlcmlu
Z01vZGUsIHNjYWxlRmFjdG9yLCBGaWx0ZXI6OkNsaXBPcGVyYXRpb246OlVuaXRlKTsKKyAgICBt
X2ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKHJlbmRlcmVyLCByZW5kZXJlci5zdHlsZSgpLmZp
bHRlcigpLCByZW5kZXJpbmdNb2RlLCBGbG9hdFNpemUgeyBzY2FsZUZhY3Rvciwgc2NhbGVGYWN0
b3IgfSwgRmlsdGVyOjpDbGlwT3BlcmF0aW9uOjpVbml0ZSwgbV90YXJnZXRCb3VuZGluZ0JveCk7
CiB9CiAKIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjppbnB1dENvbnRleHQo
KQpAQCAtMTI5LDEwICsxMjksMTAgQEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRl
cnM6OmlucHV0Q29udGV4dCgpCiAgICAgcmV0dXJuIG1fc291cmNlSW1hZ2UgPyAmbV9zb3VyY2VJ
bWFnZS0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAotdm9pZCBSZW5kZXJMYXllckZpbHRlcnM6
OmFsbG9jYXRlQmFja2luZ1N0b3JlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4
dCkKK3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVk
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICBhdXRvJiBmaWx0
ZXIgPSAqbV9maWx0ZXI7Ci0gICAgYXV0byBsb2dpY2FsU2l6ZSA9IGZpbHRlci5zY2FsZWRCeUZp
bHRlclNjYWxlKGZpbHRlci5zb3VyY2VJbWFnZVJlY3QoKS5zaXplKCkpOworICAgIGF1dG8gbG9n
aWNhbFNpemUgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZShtX2ZpbHRlclJlZ2lvbi5zaXpl
KCkpOwogCiAgICAgaWYgKCFtX3NvdXJjZUltYWdlIHx8IG1fc291cmNlSW1hZ2UtPmxvZ2ljYWxT
aXplKCkgIT0gbG9naWNhbFNpemUpIHsKICNpZiBVU0UoRElSRUNUMkQpCkBAIC0xNTEsNDIgKzE1
MSw1OSBAQCBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJF
ZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdAogICAgIGlmICghbV9maWx0ZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVyOwotICAg
IGF1dG8gZmlsdGVyU291cmNlUmVjdCA9IGZpbHRlci5jb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9y
RGlydHlSZWN0KGZpbHRlckJveFJlY3QsIGRpcnR5UmVjdCk7Ci0gICAgaWYgKGZpbHRlclNvdXJj
ZVJlY3QuaXNFbXB0eSgpKQorICAgIC8vIENhbGN1bGF0ZSB0YXJnZXRCb3VuZGluZ0JveCBzaW5j
ZSBpdCB3aWxsIGJlIHVzZWQgaWYgdGhlIGZpbHRlciBpcyBjcmVhdGVkLgorICAgIGF1dG8gdGFy
Z2V0Qm91bmRpbmdCb3ggPSBpbnRlcnNlY3Rpb24oZmlsdGVyQm94UmVjdCwgZGlydHlSZWN0KTsK
KyAgICBpZiAodGFyZ2V0Qm91bmRpbmdCb3guaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGlmIChtX3RhcmdldEJvdW5kaW5nQm94ICE9IHRhcmdldEJvdW5kaW5nQm94
KSB7CisgICAgICAgIG1fdGFyZ2V0Qm91bmRpbmdCb3ggPSB0YXJnZXRCb3VuZGluZ0JveDsKKyAg
ICAgICAgLy8gRklYTUU6IHRoaXMgcmVidWlsZHMgdGhlIGVudGlyZSBlZmZlY3RzIGNoYWluIGV2
ZW4gaWYgdGhlIGZpbHRlciBzdHlsZSBkaWRuJ3QgY2hhbmdlLgorICAgICAgICBtX2ZpbHRlciA9
IENTU0ZpbHRlcjo6Y3JlYXRlKHJlbmRlcmVyLCByZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBt
X2ZpbHRlci0+cmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci0+ZmlsdGVyU2NhbGUoKSwgRmlsdGVy
OjpDbGlwT3BlcmF0aW9uOjpVbml0ZSwgbV90YXJnZXRCb3VuZGluZ0JveCk7CisgICAgfQorCisg
ICAgaWYgKCFtX2ZpbHRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBib29sIGhh
c1VwZGF0ZWRCYWNraW5nU3RvcmUgPSBmaWx0ZXIudXBkYXRlQmFja2luZ1N0b3JlUmVjdChmaWx0
ZXJTb3VyY2VSZWN0KTsKKyAgICBhdXRvJiBmaWx0ZXIgPSAqbV9maWx0ZXI7CisgICAgCisgICAg
Ly8gRm9yIENTU0ZpbHRlciwgZmlsdGVyUmVnaW9uID0gdGFyZ2V0Qm91bmRpbmdCb3ggKyBmaWx0
ZXItPm91dHNldHMoKQorICAgIGF1dG8gZmlsdGVyUmVnaW9uID0gdGFyZ2V0Qm91bmRpbmdCb3g7
CisgICAgaWYgKGZpbHRlci5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSkgeworICAgICAgICBm
aWx0ZXJSZWdpb24gKz0gZmlsdGVyLm91dHNldHMoKTsKKyAgICAgICAgZmlsdGVyUmVnaW9uLmlu
dGVyc2VjdChmaWx0ZXJCb3hSZWN0KTsKKyAgICB9CisKKyAgICBpZiAoZmlsdGVyUmVnaW9uLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAvLyBGSVhNRTogdGhpcyBj
YWxsIHNob3VsZCBiZSBtb3ZlZCB0byBDU1NGaWx0ZXI6OmNyZWF0ZSgpIHdoZW4gRmlsdGVyRWZm
ZWN0IGRvZXMgbm90IHN0b3JlIGl0cyBnZW9tZXRyeS4KLSAgICBpZiAoaGFzVXBkYXRlZEJhY2tp
bmdTdG9yZSB8fCAhbV9maWx0ZXItPmxhc3RFZmZlY3QoKSkgewotICAgICAgICAvLyBJZiB0aGUg
ZmlsdGVyIGZhaWxzIHRvIGJ1aWxkLCByZW1vdmUgaXQgZnJvbSB0aGUgbGF5ZXIuIEl0IHdpbGwg
c3RpbGwgYXR0ZW1wdCB0bwotICAgICAgICAvLyBnbyB0aHJvdWdoIHJlZ3VsYXIgcHJvY2Vzc2lu
ZyAoZS5nLiBjb21wb3NpdGluZyksIGJ1dCBuZXZlciBhcHBseSBhbnl0aGluZy4KLSAgICAgICAg
aWYgKCFtX2ZpbHRlci0+YnVpbGRGaWx0ZXJGdW5jdGlvbnMocmVuZGVyZXIsIHJlbmRlcmVyLnN0
eWxlKCkuZmlsdGVyKCkpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gRm9y
IENTU0ZpbHRlciwgc291cmNlSW1hZ2VSZWN0ID0gZmlsdGVyUmVnaW9uLgorICAgIGJvb2wgaGFz
VXBkYXRlZEJhY2tpbmdTdG9yZSA9IGZhbHNlOworICAgIGlmIChtX2ZpbHRlclJlZ2lvbiAhPSBm
aWx0ZXJSZWdpb24pIHsKKyAgICAgICAgbV9maWx0ZXJSZWdpb24gPSBmaWx0ZXJSZWdpb247Cisg
ICAgICAgIGhhc1VwZGF0ZWRCYWNraW5nU3RvcmUgPSB0cnVlOwogICAgIH0KIAogICAgIGlmICgh
ZmlsdGVyLmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpKQogICAgICAgICBtX3JlcGFpbnRSZWN0
ID0gZGlydHlSZWN0OwogICAgIGVsc2UgewogICAgICAgICBpZiAoaGFzVXBkYXRlZEJhY2tpbmdT
dG9yZSkKLSAgICAgICAgICAgIG1fcmVwYWludFJlY3QgPSBmaWx0ZXJTb3VyY2VSZWN0OworICAg
ICAgICAgICAgbV9yZXBhaW50UmVjdCA9IGZpbHRlclJlZ2lvbjsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBtX3JlcGFpbnRSZWN0ID0gZGlydHlSZWN0OwogICAgICAgICAgICAgbV9yZXBh
aW50UmVjdC51bml0ZShsYXllclJlcGFpbnRSZWN0KTsKLSAgICAgICAgICAgIG1fcmVwYWludFJl
Y3QuaW50ZXJzZWN0KGZpbHRlclNvdXJjZVJlY3QpOworICAgICAgICAgICAgbV9yZXBhaW50UmVj
dC5pbnRlcnNlY3QoZmlsdGVyUmVnaW9uKTsKICAgICAgICAgfQogICAgIH0KLSAgICBtX3BhaW50
T2Zmc2V0ID0gZmlsdGVyU291cmNlUmVjdC5sb2NhdGlvbigpOwotICAgIHJlc2V0RGlydHlTb3Vy
Y2VSZWN0KCk7CiAKLSAgICBmaWx0ZXIuY2xhbXBGaWx0ZXJSZWdpb25JZk5lZWRlZCgpOworICAg
IG1fcGFpbnRPZmZzZXQgPSBmaWx0ZXJSZWdpb24ubG9jYXRpb24oKTsKKyAgICByZXNldERpcnR5
U291cmNlUmVjdCgpOwogCi0gICAgaWYgKGhhc1VwZGF0ZWRCYWNraW5nU3RvcmUpCi0gICAgICAg
IGFsbG9jYXRlQmFja2luZ1N0b3JlKGRlc3RpbmF0aW9uQ29udGV4dCk7CisgICAgZmlsdGVyLnNl
dEZpbHRlclJlZ2lvbihtX2ZpbHRlclJlZ2lvbik7CisgICAgYWxsb2NhdGVCYWNraW5nU3RvcmVJ
Zk5lZWRlZChkZXN0aW5hdGlvbkNvbnRleHQpOwogCiAgICAgYXV0byogc291cmNlR3JhcGhpY3ND
b250ZXh0ID0gaW5wdXRDb250ZXh0KCk7Ci0gICAgaWYgKCFzb3VyY2VHcmFwaGljc0NvbnRleHQg
fHwgZmlsdGVyLmZpbHRlclJlZ2lvbigpLmlzRW1wdHkoKSB8fCBJbWFnZUJ1ZmZlcjo6c2l6ZU5l
ZWRzQ2xhbXBpbmcoZmlsdGVyLmZpbHRlclJlZ2lvbigpLnNpemUoKSkpCisgICAgaWYgKCFzb3Vy
Y2VHcmFwaGljc0NvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gVHJh
bnNsYXRlIHRoZSBjb250ZXh0IHNvIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBsYXllciBpcyBj
YXB0dXJlZCBpbiB0aGUgb2Zmc2NyZWVuIG1lbW9yeSBidWZmZXIuCkBAIC0yMDcsNyArMjI0LDcg
QEAgdm9pZCBSZW5kZXJMYXllckZpbHRlcnM6OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29u
dGV4dCYgZGVzdGluYXRpb25Db250ZXh0KQogCiAgICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVy
OwogCi0gICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKG1fc291
cmNlSW1hZ2UuZ2V0KCksIGZpbHRlci5zb3VyY2VJbWFnZVJlY3QoKSwgZmlsdGVyKTsKKyAgICBk
ZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ZpbHRlcmVkSW1hZ2VCdWZmZXIobV9zb3VyY2VJbWFnZS5n
ZXQoKSwgbV9maWx0ZXJSZWdpb24sIGZpbHRlcik7CiAgICAgZmlsdGVyLmNsZWFySW50ZXJtZWRp
YXRlUmVzdWx0cygpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAi
UmVuZGVyTGF5ZXJGaWx0ZXJzICIgPDwgdGhpcyA8PCAiIGFwcGx5RmlsdGVyRWZmZWN0IGRvbmVc
biIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVycy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oCmlu
ZGV4IGI3MGFmMTU1YTFhNGY2ODdkNTQ2OGZkNGM3MjlhOTNlYzFkMTM3MzAuLmU4ZGIyZTVkZGE5
OGQ5OGJkM2I1OTBkYmM1OTc0MmY3M2UxM2IxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKQEAgLTcwLDEzICs3MCwxNSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0RGlydHlTb3VyY2VSZWN0KCkgeyBtX2Rp
cnR5U291cmNlUmVjdCA9IExheW91dFJlY3QoKTsgfQogICAgIEdyYXBoaWNzQ29udGV4dCogaW5w
dXRDb250ZXh0KCk7Ci0gICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdTdG9yZShjb25zdCBHcmFwaGlj
c0NvbnRleHQmIHRhcmdldENvbnRleHQpOworICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmVJ
Zk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpOwogCiAgICAgUmVu
ZGVyTGF5ZXImIG1fbGF5ZXI7CiAKICAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBtX2ludGVy
bmFsU1ZHUmVmZXJlbmNlczsKICAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
U1ZHRG9jdW1lbnQ+PiBtX2V4dGVybmFsU1ZHUmVmZXJlbmNlczsKIAorICAgIExheW91dFJlY3Qg
bV90YXJnZXRCb3VuZGluZ0JveDsKKyAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247CiAgICAg
UmVmUHRyPEltYWdlQnVmZmVyPiBtX3NvdXJjZUltYWdlOwogICAgIFJlZlB0cjxDU1NGaWx0ZXI+
IG1fZmlsdGVyOwogICAgIExheW91dFJlY3QgbV9kaXJ0eVNvdXJjZVJlY3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwCmluZGV4IDZiNjFiMmM4NjY1ZDNmM2FiMTIxMDgxYTkwZDcwNmYzOGEwMDdmMzIuLjQzNDg4
Njg0YWE2NTc3ZTg5Y2U1ZjI5NDc0OWE0OTMyNjM1MTRmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBA
IC0xMjksNyArMTI5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKIAogICAgIC8vIENyZWF0
ZSB0aGUgU1ZHRmlsdGVyIG9iamVjdC4KICAgICBmaWx0ZXJEYXRhLT5idWlsZGVyID0gbWFrZVVu
aXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigpOwotICAgIGZpbHRlckRhdGEtPmZpbHRlciA9IFNWR0Zp
bHRlcjo6Y3JlYXRlKGZpbHRlckVsZW1lbnQoKSwgKmZpbHRlckRhdGEtPmJ1aWxkZXIsIHJlbmRl
cmluZ01vZGUsIGZpbHRlclNjYWxlLCBmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBmaWx0ZXJE
YXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3VuZGluZ0JveCk7CisgICAgZmlsdGVyRGF0YS0+Zmls
dGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyRWxlbWVudCgpLCAqZmlsdGVyRGF0YS0+YnVp
bGRlciwgcmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIGZpbHRlckRhdGEtPmJvdW5kYXJpZXMs
IHRhcmdldEJvdW5kaW5nQm94KTsKICAgICBpZiAoIWZpbHRlckRhdGEtPmZpbHRlcikgewogICAg
ICAgICBtX3JlbmRlcmVyRmlsdGVyRGF0YU1hcC5yZW1vdmUoJnJlbmRlcmVyKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggMWM0Y2RkNWEyMjViODQwZTQwYjM3NDBjMDgwM2Iz
MWIyY2I3ZjQ2MC4uYTI3YWM0ZmMzNjUxNjMyNjEyYjk2NDY4MmQ5YjRiNDljMDk4ODgzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1Rl
eHQuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCB3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVy
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYKICAgICAg
ICAgRmxvYXRSZWN0IGR1bW15UmVjdDsKICAgICAgICAgRmxvYXRTaXplIGR1bW15U2NhbGUoMSwg
MSk7CiAgICAgICAgIFNWR0ZpbHRlckJ1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYXV0byBkdW1t
eUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlci5maWx0ZXJFbGVtZW50KCksIGJ1aWxk
ZXIsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGR1bW15U2NhbGUsIGR1bW15UmVjdCwg
ZHVtbXlSZWN0LCBkdW1teVJlY3QpOworICAgICAgICBhdXRvIGR1bW15RmlsdGVyID0gU1ZHRmls
dGVyOjpjcmVhdGUoZmlsdGVyLmZpbHRlckVsZW1lbnQoKSwgYnVpbGRlciwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgZHVtbXlTY2FsZSwgZHVtbXlSZWN0LCBkdW1teVJlY3QpOwogICAg
ICAgICBpZiAoZHVtbXlGaWx0ZXIpIHsKICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNj
b3BlIGluZGVudFNjb3BlKHRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKaW5kZXggZjM5ZmMyNmRkOTA2MmRhYzFhODc4YjkxMzNm
MjU4YTIxYjU5MmViMy4uMTI2NDJkNjMzNWNmZDY1MmIyNmViN2ZmODc5ZDgxOTNmNDRmNmI2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIu
Y3BwCkBAIC0yOSwxOSArMjksMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8
U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVt
ZW50LCBTVkdGaWx0ZXJCdWlsZGVyJiBidWlsZGVyLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
SW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlvbiBj
bGlwT3BlcmF0aW9uLCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0KQorUmVmUHRyPFNWR0Zp
bHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwg
U1ZHRmlsdGVyQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBj
b25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBDbGlwT3BlcmF0aW9uIGNsaXBPcGVyYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCYgcHJldmlv
dXNFZmZlY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShmaWx0ZXJFbGVtZW50LCBidWlsZGVyLCBy
ZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXJSZWdpb24s
IGNsaXBPcGVyYXRpb24sIGZpbHRlclJlZ2lvbiwgJnByZXZpb3VzRWZmZWN0KTsKKyAgICByZXR1
cm4gY3JlYXRlKGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNj
YWxlLCBjbGlwT3BlcmF0aW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgdGFyZ2V0Qm91bmRpbmdCb3gs
ICZwcmV2aW91c0VmZmVjdCk7CiB9CiAKLVJlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3Jl
YXRlKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNWR0ZpbHRlckJ1aWxkZXImIGJ1
aWxkZXIsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0
ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94KQorUmVm
UHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYgZmlsdGVy
RWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRlciYgYnVpbGRlciwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIGZp
bHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCkKIHsKLSAgICBy
ZXR1cm4gY3JlYXRlKGZpbHRlckVsZW1lbnQsIGJ1aWxkZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRl
clNjYWxlLCBzb3VyY2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlvbjo6SW50
ZXJzZWN0LCB0YXJnZXRCb3VuZGluZ0JveCwgbnVsbHB0cik7CisgICAgcmV0dXJuIGNyZWF0ZShm
aWx0ZXJFbGVtZW50LCBidWlsZGVyLCByZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgQ2xpcE9w
ZXJhdGlvbjo6SW50ZXJzZWN0LCBmaWx0ZXJSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94LCBudWxs
cHRyKTsKIH0KIAotUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZHRmlsdGVy
RWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnVpbGRlciYgYnVpbGRlciwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdp
b24sIENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRC
b3VuZGluZ0JveCwgRmlsdGVyRWZmZWN0KiBwcmV2aW91c0VmZmVjdCkKK1JlZlB0cjxTVkdGaWx0
ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQsIFNW
R0ZpbHRlckJ1aWxkZXImIGJ1aWxkZXIsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29u
c3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgQ2xpcE9wZXJhdGlvbiBjbGlwT3BlcmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3Vu
ZGluZ0JveCwgRmlsdGVyRWZmZWN0KiBwcmV2aW91c0VmZmVjdCkKIHsKLSAgICBhdXRvIGZpbHRl
ciA9IGFkb3B0UmVmKCpuZXcgU1ZHRmlsdGVyKHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBz
b3VyY2VJbWFnZVJlY3QsIGZpbHRlclJlZ2lvbiwgY2xpcE9wZXJhdGlvbiwgdGFyZ2V0Qm91bmRp
bmdCb3gsIGZpbHRlckVsZW1lbnQucHJpbWl0aXZlVW5pdHMoKSkpOworICAgIGF1dG8gZmlsdGVy
ID0gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXIocmVuZGVyaW5nTW9kZSwgZmlsdGVyU2NhbGUsIGNs
aXBPcGVyYXRpb24sIGZpbHRlclJlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlckVsZW1l
bnQucHJpbWl0aXZlVW5pdHMoKSkpOwogCiAgICAgaWYgKCFwcmV2aW91c0VmZmVjdCkKICAgICAg
ICAgYnVpbGRlci5zZXR1cEJ1aWx0aW5FZmZlY3RzKFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpKTsK
QEAgLTcxLDggKzcxLDggQEAgUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoU1ZH
RmlsdGVyRWxlbWVudCYgZmlsdGVyRWxlbWVudCwgU1ZHRmlsdGVyQnUKICAgICByZXR1cm4gZmls
dGVyOwogfQogCi1TVkdGaWx0ZXI6OlNWR0ZpbHRlcihSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
SW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgQ2xpcE9wZXJhdGlvbiBj
bGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlIHByaW1pdGl2ZVVuaXRzKQotICAgIDogRmlsdGVyKEZpbHRlcjo6
VHlwZTo6U1ZHRmlsdGVyLCByZW5kZXJpbmdNb2RlLCBmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VS
ZWN0LCBmaWx0ZXJSZWdpb24sIGNsaXBPcGVyYXRpb24pCitTVkdGaWx0ZXI6OlNWR0ZpbHRlcihS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IENsaXBPcGVyYXRpb24gY2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdp
b24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIFNWR1VuaXRUeXBlczo6U1ZH
VW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMpCisgICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpTVkdG
aWx0ZXIsIHJlbmRlcmluZ01vZGUsIGZpbHRlclNjYWxlLCBjbGlwT3BlcmF0aW9uLCBmaWx0ZXJS
ZWdpb24pCiAgICAgLCBtX3RhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KQogICAg
ICwgbV9wcmltaXRpdmVVbml0cyhwcmltaXRpdmVVbml0cykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKaW5kZXggZjRkMjk0YTcxMGZjYTMw
YTk1ZjcwMWQyYzhlMjQyZmYyMDk2MmEyMC4uOWYyZmU2YTIzYTVmOTU5NzI3NzE2NmU2YTRhYWQ2
MTRhOTg2NDViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgY2xhc3MgU1ZHRmlsdGVyRWxlbWVudDsKIAog
Y2xhc3MgU1ZHRmlsdGVyIGZpbmFsIDogcHVibGljIEZpbHRlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVy
QnVpbGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJl
Z2lvbiwgQ2xpcE9wZXJhdGlvbiwgRmlsdGVyRWZmZWN0JiBwcmV2aW91c0VmZmVjdCk7Ci0gICAg
c3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmls
dGVyQnVpbGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCk7Ci0gICAgc3RhdGlj
IFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVp
bGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lv
biwgQ2xpcE9wZXJhdGlvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgRmls
dGVyRWZmZWN0KiBwcmV2aW91c0VmZmVjdCk7CisgICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+
IGNyZWF0ZShTVkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmluZ01v
ZGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIEZpbHRlckVmZmVjdCYgcHJldmlvdXNFZmZlY3Qp
OworICAgIHN0YXRpYyBSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoU1ZHRmlsdGVyRWxlbWVudCYs
IFNWR0ZpbHRlckJ1aWxkZXImLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRl
clNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRCb3VuZGluZ0JveCk7CisgICAgc3RhdGljIFJlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShT
VkdGaWx0ZXJFbGVtZW50JiwgU1ZHRmlsdGVyQnVpbGRlciYsIFJlbmRlcmluZ01vZGUsIGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
ZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBGaWx0ZXJF
ZmZlY3QqIHByZXZpb3VzRWZmZWN0KTsKIAogICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0Jv
eCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0KIApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEZpbHRlckltYWdlPiBhcHBseSgpIGZpbmFsOwogCiBw
cml2YXRlOgotICAgIFNWR0ZpbHRlcihSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZp
bHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBmaWx0ZXJSZWdpb24sIENsaXBPcGVyYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
Qm91bmRpbmdCb3gsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJpbWl0aXZlVW5pdHMpOwor
ICAgIFNWR0ZpbHRlcihSZW5kZXJpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxl
LCBDbGlwT3BlcmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcmlt
aXRpdmVVbml0cyk7CiAKICAgICAvLyBGSVhNRTogTWVyZ2UgdGhlIGVmZmVjdEJvdW5kYXJpZXMg
aW4gdGhlIGV4cHJlc3Npb24gbm9kZS4KICAgICB2b2lkIHNldEV4cHJlc3Npb24oRmlsdGVyRWZm
ZWN0VmVjdG9yJiYgZXhwcmVzc2lvbikgeyBtX2V4cHJlc3Npb24gPSBXVEZNb3ZlKGV4cHJlc3Np
b24pOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggODU5ZWRjODZjYjY4MjE4OWU5MjMxMjMwZDA0NjM5MTJhODViNGZiNS4u
MzAwN2YyM2M2YTNmZmQ4MzhmOWZkZGMxZThlMmZjZTQ3NTc4MDIyNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIxLTEyLTA2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgor
CisgICAgICAgIFtHUFUgUHJvY2Vzc10gKFJFR1JFU1NJT04gcjI4NTU5Nyk6IFNldCB0aGUgZmls
dGVyUmVnaW9uIG9mIHRoZSBDU1NGaWx0ZXIgYWZ0ZXIgaXQgaXMgY3JlYXRlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODQ5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ2FtZXJvbiBNY0Nvcm1hY2suCisKKyAgICAgICAgVW5za2lwIGxheW91dCB0
ZXN0cyB3aGljaCB3ZXJlIHNraXBwZWQgaW4gcjI4NTU5Ny4KKworICAgICAgICAqIFRlc3RFeHBl
Y3RhdGlvbnM6CisKIDIwMjEtMTItMDQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQ1NTIGFuaW1hdGlvbiBzb3J0aW5nIG1heSBjcmFzaCBkdWUgdG8gQW5p
bWF0aW9uTGlzdCBjb3B5IHVwb24gQ1NTIEFuaW1hdGlvbiByZW1vdmFsCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCA2ODFlNDVlNTQ2YTg3NGJmOWU0OGQ3YmY3Yzg0NmNkNjJmMWZiMmFhLi44NzBhMWE5
NWM4NjUyYjE5ZmJhMTFhNGUwMDdmYTk2YzhlMDQyMzViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTUxNjMsMTkgKzUxNjMsMyBAQCBpbXBvcnRlZC9ibGluay9odHRwL3Rlc3RzL3BsdWdpbnMgWyBT
a2lwIF0KIGltcG9ydGVkL2JsaW5rL3BsdWdpbnMgWyBTa2lwIF0KIGpzL2RvbS9yZWZsZWN0LXNl
dC1vbnRvLWRvbS5odG1sIFsgU2tpcCBdCiB1c2Vyc2NyaXB0cy91c2VyLXNjcmlwdC1wbHVnaW4t
ZG9jdW1lbnQuaHRtbCBbIFNraXAgXQotCi0jIFRoZXNlIGZpbHRlciByZWxhdGVkIGZhaWx1cmVz
IHNob3VsZCBiZSBmaXhlZCBvbmNlIHdlYmtpdC5vcmcvYi8yMzI3MDUgaXMgcmVzb2x2ZWQKLXdl
YmtpdC5vcmcvYi8yMzI3MDUgY29tcG9zaXRpbmcvZmlsdGVycy9zdy1uZXN0ZWQtc2hhZG93LW92
ZXJsYXBzLWh3LW5lc3RlZC1zaGFkb3cuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMjcw
NSBjb21wb3NpdGluZy9maWx0ZXJzL3N3LXNoYWRvdy1vdmVybGFwcy1ody1sYXllci5odG1sIFsg
U2tpcCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IGNvbXBvc2l0aW5nL2ZpbHRlcnMvc3ctc2hhZG93
LW92ZXJsYXBzLWh3LXNoYWRvdy5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IGNz
czMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLWRlbGV0ZS5odG1sIFsgU2tpcCBdCi13ZWJraXQu
b3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9zdmctYmx1ci1maWx0ZXItY2xpcHBlZC5odG1sIFsg
U2tpcCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvZmlsdGVyLWltYWdlL2JhY2tncm91bmQt
ZmlsdGVyLWltYWdlLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9maWx0
ZXItaW1hZ2UvZmlsdGVyLWltYWdlLWJsdXIuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIz
MjcwNSBmYXN0L2ZpbHRlci1pbWFnZS9maWx0ZXItaW1hZ2Utc3ZnLmh0bWwgWyBTa2lwIF0KLXdl
YmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9maWx0ZXItaW1hZ2UvZmlsdGVyLWltYWdlLmh0bWwgWyBT
a2lwIF0KLXdlYmtpdC5vcmcvYi8yMzI3MDUgaW1wb3J0ZWQvbW96aWxsYS9zdmcvZHluYW1pYy1m
aWx0ZXItY29udGVudHMtMDFhLnN2ZyBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMjcwNSBpbXBv
cnRlZC9tb3ppbGxhL3N2Zy9maWx0ZXJzL2ZlQ29tcG9zaXRlLTIuc3ZnIFsgU2tpcCBdCi13ZWJr
aXQub3JnL2IvMjMyNzA1IGltcG9ydGVkL21vemlsbGEvc3ZnL2ZpbHRlcnMvZmVTcGVjdWxhckxp
Z2h0aW5nLTEuc3ZnIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjMyNzA1IHN2Zy9jdXN0b20vcmVz
b3VyY2VzLWNzcy1zY2FsZWQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMjcwNSBzdmcv
ZmlsdGVycy9mZUxpZ2h0aW5nLWNsaXBwZWQuc3ZnIFsgU2tpcCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>