<?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>223021</bug_id>
          
          <creation_ts>2021-03-10 01:54:02 -0800</creation_ts>
          <short_desc>CSS scroll snap should allow scrolling to the middle of snap areas that overflow the snapport</short_desc>
          <delta_ts>2021-06-29 00:14:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>223986</dependson>
    
    <dependson>224326</dependson>
    
    <dependson>227062</dependson>
          <blocked>218115</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1737986</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-10 01:54:02 -0800</bug_when>
    <thetext>In the &quot;Snapping Boxes that Overflow the Scrollport&quot; section [1] of the CSS Scroll Snap specification, it reads:

  If the snap area is larger than the snapport in a particular axis, then any scroll
  position in which the snap area covers the snapport, and the distance between the
  geometrically previous and subsequent snap positions in that axis is larger than
  size of the snapport in that axis, is a valid snap position in that axis. The UA 
  may use the specified alignment as a more precise target for certain scroll operations
  (e.g. explicit paging).

In order to implement this behavior, the scroll snap selection code needs to know the size of snap areas when choosing snap points during scrolling. This is perhaps a good moment to rework the scroll snap data structure so that it will be able to support masonry layouts as well.

1. https://drafts.csswg.org/css-scroll-snap-1/#snap-overflow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740629</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-17 02:54:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/75518606&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740637</commentid>
    <comment_count>2</comment_count>
      <attachid>423466</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-17 03:15:18 -0700</bug_when>
    <thetext>Created attachment 423466
Patch

Here&apos;s some background on these changes as they are a bit larger and more complicated than normal:

Before this change when snap points were calculated after a layout and a ScrollSnapOffsetsInfo was created with both the offsets of the snap points and a set of ranges of offsets where no snapping occurred. These ranges were useful because it made it simple to determine if a particular offset was subject to snapping. With the implementation of this part of the specification, the range-based approach is not as suitable because snap areas (which may overlap) now affect whether or not a scroll will snap to a snap point.

Instead, this change take a lazier approach. During scrolling, we walk through each potential snap offset and look at the associated snap area. This information to determine if the destination scroll offset falls onto a snap area that overflows the snapport or if it is subject to proximity snapping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740639</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-17 03:15:46 -0700</bug_when>
    <thetext>*** Bug 223175 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740703</commentid>
    <comment_count>4</comment_count>
      <attachid>423486</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-17 07:48:46 -0700</bug_when>
    <thetext>Created attachment 423486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742733</commentid>
    <comment_count>5</comment_count>
      <attachid>424004</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-23 03:11:43 -0700</bug_when>
    <thetext>Created attachment 424004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745533</commentid>
    <comment_count>6</comment_count>
      <attachid>424004</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-03-31 00:43:26 -0700</bug_when>
    <thetext>Comment on attachment 424004
Patch

This patch is a little bit, so my plan is to split it up into very simple parts to make it easier to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761114</commentid>
    <comment_count>7</comment_count>
      <attachid>428925</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-05-18 03:18:31 -0700</bug_when>
    <thetext>Created attachment 428925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772598</commentid>
    <comment_count>8</comment_count>
      <attachid>432249</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-06-25 02:40:12 -0700</bug_when>
    <thetext>Created attachment 432249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773336</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-29 00:14:15 -0700</bug_when>
    <thetext>Committed r279364 (239230@main): &lt;https://commits.webkit.org/239230@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 432249.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423466</attachid>
            <date>2021-03-17 03:15:18 -0700</date>
            <delta_ts>2021-03-17 07:48:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223175-20210316104146.patch</filename>
            <type>text/plain</type>
            <size>79842</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThhMjM3MWNjYTE1MmJm
ZDg0NDk2NzQyNjU3MzVhZmFmNzdjOWQ1ZS4uODFkYzc3NzA2MjcwNDczM2ZmZGNjOWFkYzk4OGE4
YzZkYjdmNzE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTAzLTE1ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9s
bC1zbmFwXSBQcm9wZXJseSBoYW5kbGUgb3ZlcmZsb3dpbmcgc25hcCBhcmVhcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMTc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvcGVybHkgaGFuZGxlIG92
ZXJmbG93aW5nIHNuYXAgYXJlYXMuIFRoaXMgcmVxdWlyZXMgcmV3cml0aW5nIHRoZSBzbmFwcGlu
ZyBhbGdvcml0aG0uCisgICAgICAgIFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBub3cgc3RvcmVzIHNu
YXAgYXJlYSByZWN0YW5nbGVzLCB3aGljaCBhcmUgdXNlZCB0byBpbXBsZW1lbnQKKyAgICAgICAg
c3BlYy1jb21wbGlhbnQgc25hcCBwb2ludCBzZWxlY3Rpb24gYmVoYXZpb3IgaW4gc2l0dWF0aW9u
cyB3aGVyZSBzbmFwIGFyZWFzIG92ZXJmbG93IHRoZQorICAgICAgICBzbmFwcG9ydC4gQ29uY3Jl
dGVseSwgaW4gdGhpcyBzaXR1YXRpb24sIGFueSBzY3JvbGwgb2Zmc2V0IHdpdGhpbiB0aGUgc25h
cCBhcmVhIHdoZXJlIHRoZQorICAgICAgICBhcmVhIGZpbGxzIHRoZSBlbnRpcmUgdmlld3BvcnQg
KGluIHRoZSBheGlzIG9mIHNjcm9sbCkgaXMgYSB2YWxpZCBzbmFwIHBvaW50LgorCisgICAgICAg
IEluIGFkZGl0aW9uLCBzbmFwIG9mZnNldCByYW5nZXMgYXJlIG5vIGxvbmdlciBrZXB0IHRvIHJl
cHJlc2VudCBwcm94aW1pdHksIHNpbmNlIHByb3hpbWl0eQorICAgICAgICBjYW4gYmUgaGFuZGxl
ZCBkdXJpbmcgYSBtb3JlIHRob3JvdWdoIHNuYXAgcG9pbnQgc2VsZWN0aW9uIHByb2Nlc3MuCisK
KyAgICAgICAgU2Nyb2xsU25hcE9mZnNldHNJbmZvIG5vdyBjb250YWlucyBhIHJlY3RhbmdsZSB0
eXBlLCB3aGljaCBpcyBlaXRoZXIgYSBMYXlvdXRSZWN0IG9yIGEKKyAgICAgICAgRmxvYXRSZWN0
LCBzbyB0aGUgdGVtcGxhdGUgbmVlZHMgdG8gY2FycnkgdGhpcyB0eXBlIGFzIHdlbGwuIEluIG9y
ZGVyIHRvIG1ha2UgaXQgc2ltcGxlciB0bworICAgICAgICByZWZlciB0byBhIFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyB0aGlzIGNoYW5nZSBjcmVhdGVzIHR3byB0eXBlIGFsaWFzZXMsCisgICAgICAg
IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIGFuZCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8sIHdoaWNoIGFyZSB1c2VkIHRocm91Z2hvdXQKKyAgICAgICAgdGhlIGNvZGUuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBUaGlzIGNoYW5nZSBmaXhlcyB0aGUgV1BUIHRlc3Q6CisgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVy
Zmxvd2luZy1zbmFwLWFyZWFzLmh0bWwKKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzZXMuCisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmZpbmRGaXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0
aW9uKTogVXBkYXRlZCB0byByZXR1cm4gYW4gb2Zmc2V0L2luZGV4CisgICAgICAgIHBhaXIgc28g
dGhlIHJldHVybiB0eXBlIG9mIHRoaXMgZnVuY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoYXQg
b2YgY2FsY3VsYXRlQ2xvc2VzdFNuYXBPZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVT
bmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKTogTm8gbG9uZ2VyIHN0b3JlIG9mZnNldCByYW5n
ZXMgZm9yIHByb3hpbWl0eSBzbmFwcGluZworICAgICAgICBhbmQgYWxzbyBzdG9yZSBzbmFwIGFy
ZWFzIGNvbnZlcnRlZCB0byAib2Zmc2V0IiBjb29yZGluYXRlcy4KKyAgICAgICAgKFdlYkNvcmU6
OmNvbnZlcnRPZmZzZXRJbmZvKTogTm8gbG9uZ2VyIG5lZWQgdG8gY29udmVydCBvZmZzZXQgcmFu
Z2VzLCBidXQgdGhpcyBkb2VzIG5vdworICAgICAgICByZXF1aXJlIGNvbnZlcnRpbmcgb2Zmc2V0
IGFyZWFzLgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNv
bnZlcnRVbml0cyBjb25zdCk6IFVzZSB0aGUgbmV3IHR5cGUgYWxpYXNlcy4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y29udmVydFVuaXRzIGNvbnN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjptYXhGb3JBeGlzKTogQWRkZWQgdGhpcyBoZWxwZXIg
d2hpY2ggZ2V0cyB0aGUgbWF4aW11bSBpbiBhIHBhcnRpY3VsYXIgYXhpcyBnaXZlbiB0aGUgYXhp
cy4KKyAgICAgICAgKFdlYkNvcmU6Om1pbkZvckF4aXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KTogQWRkZWQgdGhpcyBoZWxwZXIg
d2hpY2ggcmVwbGFjZXMgY29tcHV0ZUF4aXNQcm94aW1pdHlTbmFwT2Zmc2V0UmFuZ2VzLgorICAg
ICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlQ2xvc2VzdFNuYXBPZmZzZXQpOiBUaGlzIHJlcGxhY2Vz
IGNsb3Nlc3RTbmFwT2Zmc2V0V2l0aE9mZnNldHNBbmRSYW5nZXMsIGJ1dCBhbHNvCisgICAgICAg
IGFuZCBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHMuIE5vdyB3cml0dGVuIHVzaW5nIHNuYXAg
YXJlYXMgZnJvbSB0aGUgZGF0YSBzdHJ1Y3R1cmUgYXMgd2VsbCBhcworICAgICAgICB3aXRoIHBy
b3BlciBoYW5kbGluZyBmb3Igb3ZlcmZsb3dpbmcgc25hcCBhcmVhcy4KKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQgY29uc3Qp
OiBVcGRhdGUgZm9yIG5ldyBtZXRob2QgbmFtZXMgYW5kIHR5cGUgYWxpYXNlcy4KKyAgICAgICAg
KFdlYkNvcmU6OkZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldCBj
b25zdCk6IERpdHRvLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRz
SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcE9mZnNldHNJbmZvOjppc0VxdWFs
IGNvbnN0KTogTm8gbG9uZ2VyIGxvb2sgYXQgc25hcCBvZmZzZXQgcmFuZ2VzLCBidXQgZG8gdGFr
ZSBpbnRvCisgICAgICAgIGNvbnNpZGVyYXRpb24gdGhlIHNuYXAgYXJlYXMuCisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxTbmFwT2Zmc2V0c0luZm86Om9mZnNldHNGb3JBeGlzIGNvbnN0KTogUmVu
YW1lZCB0aGUgdGVtcGxhdGUgYXJndW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8
KTogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUuY3BwOiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzLgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oOiBEaXR0by4KKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA6IERpdHRvLgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6IERpdHRv
LgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0YXRlTm9kZSk6IGNvbnZlcnRVbml0cyBub3cg
dGFrZXMgdHdvIHRlbXBsYXRlIGFyZ3VtZW50cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnVwZGF0
ZVNjcm9sbFNuYXBQb2ludHMpOiBQYXNzIGluIHRoZSB2aWV3cG9ydCBzaXplIHdoZW4gc2VsZWN0
aW5nIHNuYXAgcG9pbnRzLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlcjo6YWRq
dXN0U2Nyb2xsRGVzdGluYXRpb24pOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxD
b250cm9sbGVyLmg6IFVzZSB0aGUgbmV3IHR5cGUgYWxpYXMuCisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9yU3RhdGUpOiBQYXNzIHZpZXdwb3J0IHNp
emUgdG8gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQgY29uc3QpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBObyBsb25nZXIgcHJpbnQgc25h
cCBvZmZzZXQgcmFuZ2VzLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0
YXRlLmg6IFJlbW92ZWQgbWV0aG9kIGRlYWxpbmcgd2l0aCByYW5nZXMuIE5vdyBwYXNzIHZpZXdw
b3J0IHNpemUgdG8gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQuCisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwOiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzZXMuCisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOiBEaXR0by4KKwogMjAyMS0wMy0xMCAgU2VyZ2lvIFZp
bGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBEbyBub3Qgc2hyaW5r
IHJhZGlvIGJ1dHRvbnMgYmVsbG93IGl0cyBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNlNTQzYWY2NDA5NjEw
OTY4ZDM5YTZmZDkwM2YwNDA0YjI0MWI5YTcuLjNiMDJhNTk5ZjFmMzE0OWZkNjE4ODA2YTg0ZWJh
ODdiNzlkNjQwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMDMtMTUgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xs
LXNuYXBdIFByb3Blcmx5IGhhbmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm8gbm8gbG9uZ2VyIGhvbGRzIHNuYXAgb2Zmc2V0IHJhbmdlcywgYnV0IGlzIGFsc28gdGVtcGxh
dGVkIG9mZgorICAgICAgICBvZiBhIHJlY3QgdHlwZS4gSW4gV2ViS2l0IHdlIHN3aXRjaCB0byB1
c2luZyB0aGUgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gYWxpYXMuCisgICAgICAgIEFkZGl0
aW9uYWxseSwgd2UgbmVlZCB0byBwYXNzIGluIHRoZSB2aWV3cG9ydCBzaXplIHdoZW4gcmVxdWVz
dGluZyBhIHNuYXAgb2Zmc2V0CisgICAgICAgIHBvc2l0aW9uLgorCisgICAgICAgICogU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNw
cDoKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6
ZGVjb2RlKTogU3dpdGNoIHRvIHVzaW5nIHRoZSBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBh
bGlhcy4KKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+
OjplbmNvZGUpOiBEaXR0by4gQWxzbyB3ZSBubyBsb25nZXIgbmVlZCB0byBlbmNvZGUgdGhlIHJh
bmdlcy4KKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+
OjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDogRGl0dG8uCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOiBE
aXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9s
bGluZyBjb25zdCk6IFBhc3MgaW4gdGhlIHZpZXdwb3J0IHNpemUgbm93LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1MubW06CisgICAgICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0
ZSBzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zm
c2V0Ol0pOiBEaXR0by4KKwogMjAyMS0wMy0xNSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgY29tbWFuZHMgYXJl
IG5vdCBwcm9jZXNzZWQgaW4gb3JkZXIgaWYgR1BVIHByb2Nlc3MgaXMgd2FpdGluZyBmb3IgcmVw
bGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCA1ODQ4MGEyZDdhOGY4YWNiYzBkYzZlM2Qx
NTg0NzQwMDQ3OWI3Yzk3Li40ODBmZTk1ZDgyYjI5MTQ5NzlmYTA1OWI2NmI5M2U3MWE4Zjc4MTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtOTIsMTUgKzkyLDE1IEBAIHZvaWQgQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJ
RCBub2RlSUQsIFBsCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1zdGF0
aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPExheW91dFVuaXQ+KiBvZmZzZXRJbmZvLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK3N0
YXRpYyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQo
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBub2RlLCBjb25zdCBMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm8qIG9mZnNldEluZm8sIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAg
IGlmICghb2Zmc2V0SW5mbykgewotICAgICAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+KCkpOworICAgICAgICBub2RlLnNldFNuYXBPZmZzZXRz
SW5mbyhGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbygpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIC8vIEZJWE1FOiBJbmNvcnBvcmF0ZSBjdXJyZW50IHBhZ2Ugc2NhbGUgZmFjdG9y
IGluIHNuYXBwaW5nIHRvIGRldmljZSBwaXhlbC4gUGVyaGFwcyB3ZSBzaG91bGQganVzdCBjb252
ZXJ0IHRvIGZsb2F0IGhlcmUgYW5kIGxldCBVSSBwcm9jZXNzIGRvIHRoZSBwaXhlbCBzbmFwcGlu
Zz8KLSAgICBub2RlLnNldFNuYXBPZmZzZXRzSW5mbyhvZmZzZXRJbmZvLT5jb252ZXJ0VW5pdHM8
ZmxvYXQ+KGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgbm9kZS5zZXRTbmFwT2Zmc2V0c0luZm8o
b2Zmc2V0SW5mby0+Y29udmVydFVuaXRzPGZsb2F0LCBGbG9hdFJlY3Q+KGRldmljZVNjYWxlRmFj
dG9yKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKaW5kZXggYWNmZWQwZjM4Mzc4ZWI0ZTJl
YzJhNTFiNDEwMjhmNTIwM2Q1N2NiNC4uNjQwMjRlOWJmMWExYmQ5ZGUxNWFhYTQ0YWM2MjMwOTdi
YjBlYzZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
U25hcE9mZnNldHNJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCkBAIC00MSw2OCArNDEsMTAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KLXN0YXRpYyB2b2lk
IGluZGljZXNPZk5lYXJlc3RTbmFwT2Zmc2V0UmFuZ2VzKExheW91dFR5cGUgb2Zmc2V0LCBjb25z
dCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0UmFuZ2Vz
LCB1bnNpZ25lZCYgbG93ZXJJbmRleCwgdW5zaWduZWQmIHVwcGVySW5kZXgpCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVW5pdFR5cGU+CitzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFVuaXRUeXBlLCB1
bnNpZ25lZD4+IGZpbmRGaXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0
aW9uKGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PFVuaXRUeXBlPj4mIHNuYXBPZmZzZXRzLCBVbml0
VHlwZSBzY3JvbGxPcmlnaW5PZmZzZXQsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0
KQogewotICAgIGlmIChzbmFwT2Zmc2V0UmFuZ2VzLmlzRW1wdHkoKSkgewotICAgICAgICBsb3dl
ckluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKLSAgICAgICAgdXBwZXJJbmRleCA9IGlu
dmFsaWRTbmFwT2Zmc2V0SW5kZXg7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQg
bG93ZXJJbmRleEFzSW50ID0gLTE7Ci0gICAgaW50IHVwcGVySW5kZXhBc0ludCA9IHNuYXBPZmZz
ZXRSYW5nZXMuc2l6ZSgpOwotICAgIGRvIHsKLSAgICAgICAgaW50IG1pZGRsZUluZGV4ID0gKGxv
d2VySW5kZXhBc0ludCArIHVwcGVySW5kZXhBc0ludCkgLyAyOwotICAgICAgICBhdXRvJiByYW5n
ZSA9IHNuYXBPZmZzZXRSYW5nZXNbbWlkZGxlSW5kZXhdOwotICAgICAgICBpZiAocmFuZ2Uuc3Rh
cnQgPCBvZmZzZXQgJiYgb2Zmc2V0IDwgcmFuZ2UuZW5kKSB7Ci0gICAgICAgICAgICBsb3dlcklu
ZGV4QXNJbnQgPSBtaWRkbGVJbmRleDsKLSAgICAgICAgICAgIHVwcGVySW5kZXhBc0ludCA9IG1p
ZGRsZUluZGV4OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
b2Zmc2V0ID4gcmFuZ2UuZW5kKQotICAgICAgICAgICAgbG93ZXJJbmRleEFzSW50ID0gbWlkZGxl
SW5kZXg7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHVwcGVySW5kZXhBc0ludCA9IG1pZGRs
ZUluZGV4OwotICAgIH0gd2hpbGUgKGxvd2VySW5kZXhBc0ludCA8IHVwcGVySW5kZXhBc0ludCAt
IDEpOwotCi0gICAgaWYgKG9mZnNldCA8PSBzbmFwT2Zmc2V0UmFuZ2VzLmZpcnN0KCkuc3RhcnQp
Ci0gICAgICAgIGxvd2VySW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OwotICAgIGVsc2UK
LSAgICAgICAgbG93ZXJJbmRleCA9IGxvd2VySW5kZXhBc0ludDsKLQotICAgIGlmIChvZmZzZXQg
Pj0gc25hcE9mZnNldFJhbmdlcy5sYXN0KCkuZW5kKQotICAgICAgICB1cHBlckluZGV4ID0gaW52
YWxpZFNuYXBPZmZzZXRJbmRleDsKLSAgICBlbHNlCi0gICAgICAgIHVwcGVySW5kZXggPSB1cHBl
ckluZGV4QXNJbnQ7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXlvdXRUeXBlPgotc3RhdGlj
IHZvaWQgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRzKExheW91dFR5cGUgb2Zmc2V0LCBjb25z
dCBWZWN0b3I8U25hcE9mZnNldDxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRzLCB1bnNpZ25lZCYg
bG93ZXJJbmRleCwgdW5zaWduZWQmIHVwcGVySW5kZXgpCi17Ci0gICAgbG93ZXJJbmRleCA9IDA7
Ci0gICAgdXBwZXJJbmRleCA9IHNuYXBPZmZzZXRzLnNpemUoKSAtIDE7Ci0gICAgd2hpbGUgKGxv
d2VySW5kZXggPCB1cHBlckluZGV4IC0gMSkgewotICAgICAgICBpbnQgbWlkZGxlSW5kZXggPSAo
bG93ZXJJbmRleCArIHVwcGVySW5kZXgpIC8gMjsKLSAgICAgICAgYXV0byBtaWRkbGVPZmZzZXQg
PSBzbmFwT2Zmc2V0c1ttaWRkbGVJbmRleF0ub2Zmc2V0OwotICAgICAgICBpZiAob2Zmc2V0ID09
IG1pZGRsZU9mZnNldCkgewotICAgICAgICAgICAgdXBwZXJJbmRleCA9IG1pZGRsZUluZGV4Owot
ICAgICAgICAgICAgbG93ZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAob2Zmc2V0ID4gbWlkZGxlT2Zmc2V0KQotICAgICAg
ICAgICAgbG93ZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB1cHBlckluZGV4ID0gbWlkZGxlSW5kZXg7Ci0gICAgfQotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgTGF5b3V0VHlwZT4KLXN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0
b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29uc3QgVmVjdG9yPFNuYXBPZmZz
ZXQ8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0cywgTGF5b3V0VHlwZSBzY3JvbGxPcmlnaW5PZmZz
ZXQsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpCi17Ci0gICAgTGF5b3V0VHlw
ZSBkaWZmZXJlbmNlID0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBzY3JvbGxPcmlnaW5PZmZz
ZXQ7CisgICAgVW5pdFR5cGUgZGlmZmVyZW5jZSA9IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IC0g
c2Nyb2xsT3JpZ2luT2Zmc2V0OwogICAgIGlmICghZGlmZmVyZW5jZSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIApAQCAtMTEzLDcgKzU1LDcgQEAgc3RhdGljIE9wdGlvbmFsPHVuc2ln
bmVkPiBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihj
b24KICAgICAgICAgaXRlcmF0aW9uID0gLTE7CiAgICAgfQogCi0gICAgYXV0byBpc1Bhc3QgPSBb
ZGlmZmVyZW5jZV0oTGF5b3V0VHlwZSBtYXJrLCBMYXlvdXRUeXBlIGNhbmRpZGF0ZSkgeworICAg
IGF1dG8gaXNQYXN0ID0gW2RpZmZlcmVuY2VdKFVuaXRUeXBlIG1hcmssIFVuaXRUeXBlIGNhbmRp
ZGF0ZSkgewogICAgICAgICByZXR1cm4gKGRpZmZlcmVuY2UgPiAwICYmIGNhbmRpZGF0ZSA+IG1h
cmspIHx8IChkaWZmZXJlbmNlIDwgMCAmJiBjYW5kaWRhdGUgPCBtYXJrKTsKICAgICB9OwogCkBA
IC0xMjQsNjUgKzY2LDEyIEBAIHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25h
cFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29uCiAgICAgICAgIGlmIChz
bmFwT2Zmc2V0c1tpXS5zdG9wICE9IFNjcm9sbFNuYXBTdG9wOjpBbHdheXMpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgaWYgKGlzUGFzdChzY3JvbGxPcmlnaW5PZmZzZXQsIG9mZnNl
dCkpCi0gICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihvZmZzZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGU+Ci1z
dGF0aWMgc3RkOjpwYWlyPExheW91dFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0U25hcE9mZnNldFdp
dGhPZmZzZXRzQW5kUmFuZ2VzKGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFR5cGU+PiYg
c25hcE9mZnNldHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRUeXBlPj4m
IHNuYXBPZmZzZXRSYW5nZXMsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZs
b2F0IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRUeXBlPiBvcmlnaW5hbE9mZnNldEZvckRpcmVj
dGlvbmFsU25hcHBpbmcpCi17Ci0gICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlk
U25hcE9mZnNldEluZGV4KTsKLQotICAgIGlmIChvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFs
U25hcHBpbmcuaGFzVmFsdWUoKSkgewotICAgICAgICBhdXRvIGZpcnN0U25hcFN0b3BPZmZzZXRJ
bmRleCA9IGZpbmRGaXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9u
KHNuYXBPZmZzZXRzLCAqb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nLCBzY3Jv
bGxEZXN0aW5hdGlvbk9mZnNldCk7Ci0gICAgICAgIGlmIChmaXJzdFNuYXBTdG9wT2Zmc2V0SW5k
ZXguaGFzVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zm
c2V0c1sqZmlyc3RTbmFwU3RvcE9mZnNldEluZGV4XS5vZmZzZXQsICpmaXJzdFNuYXBTdG9wT2Zm
c2V0SW5kZXgpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGxvd2VyU25hcE9mZnNldFJhbmdlSW5k
ZXg7Ci0gICAgdW5zaWduZWQgdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleDsKLSAgICBpbmRpY2Vz
T2ZOZWFyZXN0U25hcE9mZnNldFJhbmdlczxMYXlvdXRUeXBlPihzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgc25hcE9mZnNldFJhbmdlcywgbG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCwgdXBwZXJT
bmFwT2Zmc2V0UmFuZ2VJbmRleCk7Ci0gICAgaWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXgg
PT0gdXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCAmJiB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4
ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7Ci0KLSAg
ICBpZiAoc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgPD0gc25hcE9mZnNldHMuZmlyc3QoKS5vZmZz
ZXQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5maXJzdCgpLm9m
ZnNldCwgMHUpOwotCi0gICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ID49IHNuYXBPZmZz
ZXRzLmxhc3QoKS5vZmZzZXQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zm
c2V0cy5sYXN0KCkub2Zmc2V0LCBzbmFwT2Zmc2V0cy5zaXplKCkgLSAxKTsKLQotICAgIHVuc2ln
bmVkIGxvd2VySW5kZXg7Ci0gICAgdW5zaWduZWQgdXBwZXJJbmRleDsKLSAgICBpbmRpY2VzT2ZO
ZWFyZXN0U25hcE9mZnNldHM8TGF5b3V0VHlwZT4oc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHNu
YXBPZmZzZXRzLCBsb3dlckluZGV4LCB1cHBlckluZGV4KTsKLSAgICBMYXlvdXRUeXBlIGxvd2Vy
U25hcFBvc2l0aW9uID0gc25hcE9mZnNldHNbbG93ZXJJbmRleF0ub2Zmc2V0OwotICAgIExheW91
dFR5cGUgdXBwZXJTbmFwUG9zaXRpb24gPSBzbmFwT2Zmc2V0c1t1cHBlckluZGV4XS5vZmZzZXQ7
Ci0gICAgaWYgKCFzdGQ6OmFicyh2ZWxvY2l0eSkpIHsKLSAgICAgICAgYm9vbCBpc0Nsb3NlclRv
TG93ZXJTbmFwUG9zaXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAtIGxvd2VyU25hcFBv
c2l0aW9uIDw9IHVwcGVyU25hcFBvc2l0aW9uIC0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQ7Ci0g
ICAgICAgIHJldHVybiBpc0Nsb3NlclRvTG93ZXJTbmFwUG9zaXRpb24gPyBzdGQ6Om1ha2VfcGFp
cihsb3dlclNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCkgOiBzdGQ6Om1ha2VfcGFpcih1cHBlclNu
YXBQb3NpdGlvbiwgdXBwZXJJbmRleCk7Ci0gICAgfQotCi0gICAgLy8gTm9uLXplcm8gdmVsb2Np
dHkgaW5kaWNhdGVzIGEgZmxpY2sgZ2VzdHVyZS4gRXZlbiBpZiBhbm90aGVyIHNuYXAgcG9pbnQg
aXMgY2xvc2VyLCB3ZSBzaG91bGQgY2hvb3NlIHRoZSBvbmUgaW4gdGhlIGRpcmVjdGlvbiBvZiB0
aGUgZmxpY2sgZ2VzdHVyZQotICAgIC8vIGFzIGxvbmcgYXMgYSBzY3JvbGwgc25hcCBvZmZzZXQg
cmFuZ2UgZG9lcyBub3QgbGllIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgdGhl
IHRhcmdldGVkIHNuYXAgb2Zmc2V0LiBJZiB3ZSBhcmUgZG9pbmcgZGlyZWN0aW9uYWwKLSAgICAv
LyBzbmFwcGluZywgd2Ugc2hvdWxkIG5ldmVyIHNuYXAgdG8gYSBwb2ludCB0aGF0IHdhcyBvbiB0
aGUgb3RoZXIgc2lkZSBvZiB0aGUgb3JpZ2luYWwgcG9zaXRpb24gaW4gdGhlIG9wcG9zaXRlIGRp
cmVjdGlvbiBvZiB0aGlzIHNjcm9sbC4KLSAgICAvLyBUaGlzIGFsbG93cyBkaXJlY3Rpb25hbCBz
Y3JvbGxpbmcgdG8gZXNjYXBlIHNuYXAgcG9pbnRzLgotICAgIGlmICh2ZWxvY2l0eSA8IDApIHsK
LSAgICAgICAgaWYgKGxvd2VyU25hcE9mZnNldFJhbmdlSW5kZXggPT0gaW52YWxpZFNuYXBPZmZz
ZXRJbmRleCB8fCBsb3dlclNuYXBQb3NpdGlvbiA+PSBzbmFwT2Zmc2V0UmFuZ2VzW2xvd2VyU25h
cE9mZnNldFJhbmdlSW5kZXhdLmVuZCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihsb3dlclNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCk7Ci0gICAgICAgIGlmICghb3JpZ2luYWxP
ZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nLmhhc1ZhbHVlKCkgfHwgKm9yaWdpbmFsT2Zmc2V0
Rm9yRGlyZWN0aW9uYWxTbmFwcGluZyA+IHVwcGVyU25hcFBvc2l0aW9uKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1cHBlckluZGV4KTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBpZiAodXBwZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9PSBpbnZh
bGlkU25hcE9mZnNldEluZGV4IHx8IHNuYXBPZmZzZXRSYW5nZXNbdXBwZXJTbmFwT2Zmc2V0UmFu
Z2VJbmRleF0uc3RhcnQgPj0gdXBwZXJTbmFwUG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOwotICAgICAgICBp
ZiAoIW9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZy5oYXNWYWx1ZSgpIHx8ICpv
cmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcgPCBsb3dlclNuYXBQb3NpdGlvbikK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlvbiwgbG93
ZXJJbmRleCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3Rp
bmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4KTsKLX0KLQogZW51bSBjbGFzcyBJ
bnNldE9yT3V0c2V0IHsKICAgICBJbnNldCwKICAgICBPdXRzZXQKQEAgLTIxOSwzMCArMTA4LDYg
QEAgc3RhdGljIExheW91dFVuaXQgY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChMYXlvdXRV
bml0IG1pbkxvY2F0aW9uLCBMYXlvdXRVbmkKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1
dGVBeGlzUHJveGltaXR5U25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U25hcE9mZnNldDxM
YXlvdXRVbml0Pj4mIHNuYXBPZmZzZXRzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0
VW5pdD4+JiBvZmZzZXRSYW5nZXMsIExheW91dFVuaXQgc2Nyb2xsUG9ydEF4aXNMZW5ndGgpCi17
Ci0gICAgLy8gVGhpcyBpcyBhbiBhcmJpdHJhcnkgY2hvaWNlIGZvciB3aGF0IGl0IG1lYW5zIHRv
IGJlICJpbiBwcm94aW1pdHkiIG9mIGEgc25hcCBvZmZzZXQuIFdlIHNob3VsZCBwbGF5IGFyb3Vu
ZCB3aXRoCi0gICAgLy8gdGhpcyBhbmQgc2VlIHdoYXQgZmVlbHMgYmVzdC4KLSAgICBzdGF0aWMg
Y29uc3QgZmxvYXQgcmF0aW9PZlNjcm9sbFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQ
cm94aW1pdHkgPSAwLjM7Ci0gICAgaWYgKHNuYXBPZmZzZXRzLnNpemUoKSA8IDIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC8vIFRoZSBleHRyYSBydWxlIGFjY291bnRpbmcgZm9yIHNjcm9sbCBv
ZmZzZXQgcmFuZ2VzIGluIGJldHdlZW4gdGhlIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgYSBwb3Rl
bnRpYWwgc25hcCBvZmZzZXQKLSAgICAvLyBoYW5kbGVzIHRoZSBjb3JuZXIgY2FzZSB3aGVyZSB0
aGUgdXNlciBzY3JvbGxzIHdpdGggbW9tZW50dW0gdmVyeSBsaWdodGx5IGF3YXkgZnJvbSBhIHNu
YXAgb2Zmc2V0LCBzdWNoIHRoYXQgdGhlCi0gICAgLy8gcHJlZGljdGVkIHNjcm9sbCBkZXN0aW5h
dGlvbiBpcyBzdGlsbCB3aXRoaW4gcHJveGltaXR5IG9mIHRoZSBzbmFwIG9mZnNldC4gSW4gdGhp
cyBjYXNlLCB0aGUgcmVndWxhciAobWFuZGF0b3J5Ci0gICAgLy8gc2Nyb2xsIHNuYXBwaW5nKSBi
ZWhhdmlvciB3b3VsZCBiZSB0byBzbmFwIHRvIHRoZSBuZXh0IG9mZnNldCBpbiB0aGUgZGlyZWN0
aW9uIG9mIG1vbWVudHVtIHNjcm9sbGluZywgYnV0Ci0gICAgLy8gaW5zdGVhZCwgaXQgaXMgbW9y
ZSBpbnR1aXRpdmUgdG8gZWl0aGVyIHJldHVybiB0byB0aGUgb3JpZ2luYWwgc25hcCBwb3NpdGlv
biAod2hpY2ggd2UgYXJiaXRyYXJpbHkgY2hvb3NlIGhlcmUpCi0gICAgLy8gb3Igc2Nyb2xsIGp1
c3Qgb3V0c2lkZSBvZiB0aGUgc25hcCBvZmZzZXQgcmFuZ2UuIFRoaXMgaXMgYW5vdGhlciBtaW5v
ciBiZWhhdmlvciB0d2VhayB0aGF0IHdlIHNob3VsZCBwbGF5IGFyb3VuZAotICAgIC8vIHdpdGgg
dG8gc2VlIHdoYXQgZmVlbHMgYmVzdC4KLSAgICBMYXlvdXRVbml0IHByb3hpbWl0eURpc3RhbmNl
IHsgcmF0aW9PZlNjcm9sbFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkg
KiBzY3JvbGxQb3J0QXhpc0xlbmd0aCB9OwotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMTsgaW5k
ZXggPCBzbmFwT2Zmc2V0cy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byBzdGFydE9m
ZnNldCA9IHNuYXBPZmZzZXRzW2luZGV4IC0gMV0ub2Zmc2V0ICsgcHJveGltaXR5RGlzdGFuY2U7
Ci0gICAgICAgIGF1dG8gZW5kT2Zmc2V0ID0gc25hcE9mZnNldHNbaW5kZXhdLm9mZnNldCAtIHBy
b3hpbWl0eURpc3RhbmNlOwotICAgICAgICBpZiAoc3RhcnRPZmZzZXQgPCBlbmRPZmZzZXQpCi0g
ICAgICAgICAgICBvZmZzZXRSYW5nZXMuYXBwZW5kKHsgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCB9
KTsKLSAgICB9Ci19Ci0KIHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShT
Y3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFJlbmRlckJveCYgc2Nyb2xsaW5n
RWxlbWVudEJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRTdHlsZSwgTGF5
b3V0UmVjdCB2aWV3cG9ydFJlY3RJbkJvcmRlckJveENvb3JkaW5hdGVzKQogewogICAgIGF1dG8g
c2Nyb2xsU25hcFR5cGUgPSBzY3JvbGxpbmdFbGVtZW50U3R5bGUuc2Nyb2xsU25hcFR5cGUoKTsK
QEAgLTI2Miw2ICsxMjcsNyBAQCB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFy
ZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25zdCBSZQogCiAgICAgSGFzaE1h
cDxmbG9hdCwgU25hcE9mZnNldDxMYXlvdXRVbml0Pj4gdmVydGljYWxTbmFwT2Zmc2V0c01hcDsK
ICAgICBIYXNoTWFwPGZsb2F0LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiBob3Jpem9udGFsU25h
cE9mZnNldHNNYXA7CisgICAgVmVjdG9yPExheW91dFJlY3Q+IHNuYXBBcmVhczsKICAgICBib29s
IGhhc0hvcml6b250YWxTbmFwT2Zmc2V0cyA9IHNjcm9sbFNuYXBUeXBlLmF4aXMgPT0gU2Nyb2xs
U25hcEF4aXM6OkJvdGggfHwgc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6
WEF4aXMgfHwgc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6SW5saW5lOwog
ICAgIGJvb2wgaGFzVmVydGljYWxTbmFwT2Zmc2V0cyA9IHNjcm9sbFNuYXBUeXBlLmF4aXMgPT0g
U2Nyb2xsU25hcEF4aXM6OkJvdGggfHwgc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFw
QXhpczo6WUF4aXMgfHwgc2Nyb2xsU25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6Qmxv
Y2s7CiAKQEAgLTI4OCwxNyArMTU0LDI4IEBAIHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3Jv
bGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFJlCiAKICAg
ICAgICAgc2Nyb2xsU25hcEFyZWEgPSBjb21wdXRlU2Nyb2xsU25hcFBvcnRPckFyZWFSZWN0KHNj
cm9sbFNuYXBBcmVhLCBjaGlsZC0+c3R5bGUoKS5zY3JvbGxNYXJnaW4oKSwgSW5zZXRPck91dHNl
dDo6T3V0c2V0KTsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8
PCAiICAgIENvbnNpZGVyaW5nIHNjcm9sbCBzbmFwIHRhcmdldCBhcmVhICIgPDwgc2Nyb2xsU25h
cEFyZWEpOworCiAgICAgICAgIGF1dG8gYWxpZ25tZW50ID0gY2hpbGQtPnN0eWxlKCkuc2Nyb2xs
U25hcEFsaWduKCk7CisgICAgICAgIGJvb2wgc25hcHNIb3Jpem9udGFsbHkgPSBoYXNIb3Jpem9u
dGFsU25hcE9mZnNldHMgJiYgYWxpZ25tZW50LnggIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6
Ok5vbmU7CisgICAgICAgIGJvb2wgc25hcHNWZXJ0aWNhbGx5ID0gaGFzVmVydGljYWxTbmFwT2Zm
c2V0cyAmJiBhbGlnbm1lbnQueSAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZTsKKyAg
ICAgICAgaWYgKCFzbmFwc0hvcml6b250YWxseSAmJiAhc25hcHNWZXJ0aWNhbGx5KQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gVGhlIHNjcm9sbCBzbmFwIGFyZWEgaXMgZGVm
aW5lZCB2aWEgaXRzIHNjcm9sbCBwb3NpdGlvbiwgc28gY29udmVydCB0aGUgc25hcCBhcmVhIHJl
Y3RhbmdsZSB0byBiZSByZWxhdGl2ZSB0byBzY3JvbGwgb2Zmc2V0cy4KKyAgICAgICAgYXV0byBz
bmFwQXJlYU9yaWdpblJlbGF0aXZlVG9Cb3JkZXJFZGdlID0gc2Nyb2xsU25hcEFyZWEubG9jYXRp
b24oKSAtIHNjcm9sbFNuYXBQb3J0LmxvY2F0aW9uKCk7CisgICAgICAgIExheW91dFJlY3Qgc2Ny
b2xsU25hcEFyZWFBc09mZnNldHMoc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0
aW9uKHJvdW5kZWRJbnRQb2ludChzbmFwQXJlYU9yaWdpblJlbGF0aXZlVG9Cb3JkZXJFZGdlKSks
IHNjcm9sbFNuYXBBcmVhLnNpemUoKSk7CisgICAgICAgIHNuYXBBcmVhcy5hcHBlbmQoc2Nyb2xs
U25hcEFyZWFBc09mZnNldHMpOworCiAgICAgICAgIGF1dG8gc3RvcCA9IGNoaWxkLT5zdHlsZSgp
LnNjcm9sbFNuYXBTdG9wKCk7Ci0gICAgICAgIGlmIChoYXNIb3Jpem9udGFsU25hcE9mZnNldHMg
JiYgYWxpZ25tZW50LnggIT0gU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6Ok5vbmUpIHsKKyAgICAg
ICAgaWYgKHNuYXBzSG9yaXpvbnRhbGx5KSB7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Ny
b2xsWFBvc2l0aW9uID0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwQXJl
YS54KCksIHNjcm9sbFNuYXBBcmVhLm1heFgoKSwgYWxpZ25tZW50LngsIHNjcm9sbGVySXNSVEwp
IC0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwUG9ydC54KCksIHNjcm9s
bFNuYXBQb3J0Lm1heFgoKSwgYWxpZ25tZW50LngsIHNjcm9sbGVySXNSVEwpOwogICAgICAgICAg
ICAgYXV0byBhYnNvbHV0ZVNjcm9sbE9mZnNldCA9IGNsYW1wVG88aW50PihzY3JvbGxhYmxlQXJl
YS5zY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24oeyByb3VuZFRvSW50KGFic29sdXRlU2Nyb2xsWFBv
c2l0aW9uKSwgMCB9KS54KCksIDAsIG1heFNjcm9sbE9mZnNldC54KCkpOwotICAgICAgICAgICAg
YWRkT3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldChob3Jpem9udGFsU25hcE9mZnNldHNNYXAsIHsg
YWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AgfSk7CisgICAgICAgICAgICBhZGRPclVwZGF0ZVN0
b3BGb3JTbmFwT2Zmc2V0KGhvcml6b250YWxTbmFwT2Zmc2V0c01hcCwgeyBhYnNvbHV0ZVNjcm9s
bE9mZnNldCwgc3RvcCwgc25hcEFyZWFzLnNpemUoKSAtIDEgfSk7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKGhhc1ZlcnRpY2FsU25hcE9mZnNldHMgJiYgYWxpZ25tZW50LnkgIT0gU2Nyb2xsU25h
cEF4aXNBbGlnblR5cGU6Ok5vbmUpIHsKKyAgICAgICAgaWYgKHNuYXBzVmVydGljYWxseSkgewog
ICAgICAgICAgICAgYXV0byBhYnNvbHV0ZVNjcm9sbFlQb3NpdGlvbiA9IGNvbXB1dGVTY3JvbGxT
bmFwQWxpZ25PZmZzZXQoc2Nyb2xsU25hcEFyZWEueSgpLCBzY3JvbGxTbmFwQXJlYS5tYXhZKCks
IGFsaWdubWVudC55LCBmYWxzZSkgLSBjb21wdXRlU2Nyb2xsU25hcEFsaWduT2Zmc2V0KHNjcm9s
bFNuYXBQb3J0LnkoKSwgc2Nyb2xsU25hcFBvcnQubWF4WSgpLCBhbGlnbm1lbnQueSwgZmFsc2Up
OwogICAgICAgICAgICAgYXV0byBhYnNvbHV0ZVNjcm9sbE9mZnNldCA9IGNsYW1wVG88aW50Pihz
Y3JvbGxhYmxlQXJlYS5zY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24oeyAwLCByb3VuZFRvSW50KGFi
c29sdXRlU2Nyb2xsWVBvc2l0aW9uKSB9KS55KCksIDAsIG1heFNjcm9sbE9mZnNldC55KCkpOwot
ICAgICAgICAgICAgYWRkT3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldCh2ZXJ0aWNhbFNuYXBPZmZz
ZXRzTWFwLCB7IGFic29sdXRlU2Nyb2xsT2Zmc2V0LCBzdG9wIH0pOworICAgICAgICAgICAgYWRk
T3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldCh2ZXJ0aWNhbFNuYXBPZmZzZXRzTWFwLCB7IGFic29s
dXRlU2Nyb2xsT2Zmc2V0LCBzdG9wLCBzbmFwQXJlYXMuc2l6ZSgpIC0gMSB9KTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMzA4LDMyICsxODUsMjUgQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0Zv
clNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgUmUK
ICAgICB9OwogCiAgICAgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+IGhvcml6b250YWxT
bmFwT2Zmc2V0cyA9IGNvcHlUb1ZlY3Rvcihob3Jpem9udGFsU25hcE9mZnNldHNNYXAudmFsdWVz
KCkpOwotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4gaG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXM7CiAgICAgaWYgKCFob3Jpem9udGFsU25hcE9mZnNldHMuaXNFbXB0
eSgpKSB7CiAgICAgICAgIHN0ZDo6c29ydChob3Jpem9udGFsU25hcE9mZnNldHMuYmVnaW4oKSwg
aG9yaXpvbnRhbFNuYXBPZmZzZXRzLmVuZCgpLCBjb21wYXJlU25hcE9mZnNldHMpOwotICAgICAg
ICBpZiAoc2Nyb2xsU25hcFR5cGUuc3RyaWN0bmVzcyA9PSBTY3JvbGxTbmFwU3RyaWN0bmVzczo6
UHJveGltaXR5KQotICAgICAgICAgICAgY29tcHV0ZUF4aXNQcm94aW1pdHlTbmFwT2Zmc2V0UmFu
Z2VzKGhvcml6b250YWxTbmFwT2Zmc2V0cywgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsIHNj
cm9sbFNuYXBQb3J0LndpZHRoKCkpOwotCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxT
bmFwLCBzdHJlYW0gPDwgIiA9PiBDb21wdXRlZCBob3Jpem9udGFsIHNjcm9sbCBzbmFwIG9mZnNl
dHM6ICIgPDwgaG9yaXpvbnRhbFNuYXBPZmZzZXRzKTsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFN
KFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiID0+IENvbXB1dGVkIGhvcml6b250YWwgc2Nyb2xsIHNu
YXAgb2Zmc2V0IHJhbmdlczogIiA8PCBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyk7CiAgICAg
fQogCiAgICAgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+IHZlcnRpY2FsU25hcE9mZnNl
dHMgPSBjb3B5VG9WZWN0b3IodmVydGljYWxTbmFwT2Zmc2V0c01hcC52YWx1ZXMoKSk7Ci0gICAg
VmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiB2ZXJ0aWNhbFNuYXBPZmZzZXRS
YW5nZXM7CiAgICAgaWYgKCF2ZXJ0aWNhbFNuYXBPZmZzZXRzLmlzRW1wdHkoKSkgewogICAgICAg
ICBzdGQ6OnNvcnQodmVydGljYWxTbmFwT2Zmc2V0cy5iZWdpbigpLCB2ZXJ0aWNhbFNuYXBPZmZz
ZXRzLmVuZCgpLCBjb21wYXJlU25hcE9mZnNldHMpOwotICAgICAgICBpZiAoc2Nyb2xsU25hcFR5
cGUuc3RyaWN0bmVzcyA9PSBTY3JvbGxTbmFwU3RyaWN0bmVzczo6UHJveGltaXR5KQotICAgICAg
ICAgICAgY29tcHV0ZUF4aXNQcm94aW1pdHlTbmFwT2Zmc2V0UmFuZ2VzKHZlcnRpY2FsU25hcE9m
ZnNldHMsIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcywgc2Nyb2xsU25hcFBvcnQuaGVpZ2h0KCkp
OwotCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIiA9PiBD
b21wdXRlZCB2ZXJ0aWNhbCBzY3JvbGwgc25hcCBvZmZzZXRzOiAiIDw8IHZlcnRpY2FsU25hcE9m
ZnNldHMpOwotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICIg
PT4gQ29tcHV0ZWQgdmVydGljYWwgc2Nyb2xsIHNuYXAgb2Zmc2V0IHJhbmdlczogIiA8PCB2ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMpOwogICAgIH0KIAorICAgIGlmICghc25hcEFyZWFzLmlzRW1w
dHkoKSkKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiID0+
IENvbXB1dGVkIHNuYXAgYXJlYXM6ICIgPDwgc25hcEFyZWFzKTsKKwogICAgIHNjcm9sbGFibGVB
cmVhLnNldFNjcm9sbFNuYXBPZmZzZXRJbmZvKHsKKyAgICAgICAgc2Nyb2xsU25hcFR5cGUuc3Ry
aWN0bmVzcywKICAgICAgICAgaG9yaXpvbnRhbFNuYXBPZmZzZXRzLAogICAgICAgICB2ZXJ0aWNh
bFNuYXBPZmZzZXRzLAotICAgICAgICBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywKLSAgICAg
ICAgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzCisgICAgICAgIHNuYXBBcmVhcywKICAgICB9KTsK
IH0KIApAQCAtMzQ3LDU3ICsyMTcsMTc5IEBAIHN0YXRpYyBMYXlvdXRVbml0IGNvbnZlcnRPZmZz
ZXRVbml0KGZsb2F0IGlucHV0LCBmbG9hdCAvKiBzY2FsZUZhY3RvciAqLykKICAgICByZXR1cm4g
TGF5b3V0VW5pdChpbnB1dCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFR5cGUsIHR5
cGVuYW1lIE91dHB1dFR5cGU+Ci1zdGF0aWMgU2Nyb2xsU25hcE9mZnNldHNJbmZvPE91dHB1dFR5
cGU+IGNvbnZlcnRPZmZzZXRJbmZvKGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxJbnB1dFR5
cGU+JiBpbnB1dCwgZmxvYXQgc2NhbGVGYWN0b3IgPSAwLjApCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
SW5wdXRUeXBlLCB0eXBlbmFtZSBJbnB1dFJlY3RUeXBlLCB0eXBlbmFtZSBPdXRwdXRUeXBlLCB0
eXBlbmFtZSBPdXRwdXRSZWN0VHlwZT4KK3N0YXRpYyBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T3V0
cHV0VHlwZSwgT3V0cHV0UmVjdFR5cGU+IGNvbnZlcnRPZmZzZXRJbmZvKGNvbnN0IFNjcm9sbFNu
YXBPZmZzZXRzSW5mbzxJbnB1dFR5cGUsIElucHV0UmVjdFR5cGU+JiBpbnB1dCwgZmxvYXQgc2Nh
bGVGYWN0b3IgPSAwLjApCiB7CiAgICAgYXV0byBjb252ZXJ0T2Zmc2V0cyA9IFtzY2FsZUZhY3Rv
cl0oY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8SW5wdXRUeXBlPj4mIGlucHV0KQogICAgIHsKICAg
ICAgICAgVmVjdG9yPFNuYXBPZmZzZXQ8T3V0cHV0VHlwZT4+IG91dHB1dDsKICAgICAgICAgb3V0
cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXQuc2l6ZSgpKTsKICAgICAgICAgZm9yIChh
dXRvJiBvZmZzZXQgOiBpbnB1dCkKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQo
eyBjb252ZXJ0T2Zmc2V0VW5pdChvZmZzZXQub2Zmc2V0LCBzY2FsZUZhY3RvciksIG9mZnNldC5z
dG9wIH0pOworICAgICAgICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZCh7IGNvbnZlcnRPZmZz
ZXRVbml0KG9mZnNldC5vZmZzZXQsIHNjYWxlRmFjdG9yKSwgb2Zmc2V0LnN0b3AsIG9mZnNldC5z
bmFwQXJlYUluZGV4IH0pOwogICAgICAgICByZXR1cm4gb3V0cHV0OwogICAgIH07CiAKLSAgICBh
dXRvIGNvbnZlcnRPZmZzZXRSYW5nZXMgPSBbc2NhbGVGYWN0b3JdKGNvbnN0IFZlY3RvcjxTY3Jv
bGxPZmZzZXRSYW5nZTxJbnB1dFR5cGU+PiYgaW5wdXQpCisgICAgYXV0byBjb252ZXJ0UmVjdHMg
PSBbc2NhbGVGYWN0b3JdKGNvbnN0IFZlY3RvcjxJbnB1dFJlY3RUeXBlPiYgaW5wdXQpCiAgICAg
ewotICAgICAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8T3V0cHV0VHlwZT4+IG91dHB1dDsK
KyAgICAgICAgVmVjdG9yPE91dHB1dFJlY3RUeXBlPiBvdXRwdXQ7CiAgICAgICAgIG91dHB1dC5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlucHV0LnNpemUoKSk7Ci0gICAgICAgIGZvciAoYXV0byYg
cmFuZ2UgOiBpbnB1dCkKLSAgICAgICAgICAgIG91dHB1dC51bmNoZWNrZWRBcHBlbmQoeyBjb252
ZXJ0T2Zmc2V0VW5pdChyYW5nZS5zdGFydCwgc2NhbGVGYWN0b3IpLCBjb252ZXJ0T2Zmc2V0VW5p
dChyYW5nZS5lbmQsIHNjYWxlRmFjdG9yKSB9KTsKKyAgICAgICAgZm9yIChhdXRvJiByZWN0IDog
aW5wdXQpIHsKKyAgICAgICAgICAgIE91dHB1dFJlY3RUeXBlIG91dHB1dFJlY3QoCisgICAgICAg
ICAgICAgICAgY29udmVydE9mZnNldFVuaXQocmVjdC54KCksIHNjYWxlRmFjdG9yKSwgY29udmVy
dE9mZnNldFVuaXQocmVjdC55KCksIHNjYWxlRmFjdG9yKSwKKyAgICAgICAgICAgICAgICBjb252
ZXJ0T2Zmc2V0VW5pdChyZWN0LndpZHRoKCksIHNjYWxlRmFjdG9yKSwgY29udmVydE9mZnNldFVu
aXQocmVjdC5oZWlnaHQoKSwgc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgIG91dHB1dC51bmNo
ZWNrZWRBcHBlbmQob3V0cHV0UmVjdCk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG91dHB1
dDsKICAgICB9OwogCiAgICAgcmV0dXJuIHsKKyAgICAgICAgaW5wdXQuc3RyaWN0bmVzcywKICAg
ICAgICAgY29udmVydE9mZnNldHMoaW5wdXQuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKSwKICAgICAg
ICAgY29udmVydE9mZnNldHMoaW5wdXQudmVydGljYWxTbmFwT2Zmc2V0cyksCi0gICAgICAgIGNv
bnZlcnRPZmZzZXRSYW5nZXMoaW5wdXQuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpLAotICAg
ICAgICBjb252ZXJ0T2Zmc2V0UmFuZ2VzKGlucHV0LnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykK
KyAgICAgICAgY29udmVydFJlY3RzKGlucHV0LnNuYXBBcmVhcyksCiAgICAgfTsKIH0KIAogdGVt
cGxhdGUgPD4gdGVtcGxhdGUgPD4KLVNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiBT
Y3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Ojpjb252ZXJ0VW5pdHMoZmxvYXQgLyogdW51c2Vk
U2NhbGVGYWN0b3IgKi8pIGNvbnN0CitMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gRmxvYXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRTY2FsZUZh
Y3RvciAqLykgY29uc3QKIHsKLSAgICByZXR1cm4gY29udmVydE9mZnNldEluZm88ZmxvYXQsIExh
eW91dFVuaXQ+KCp0aGlzKTsKKyAgICByZXR1cm4gY29udmVydE9mZnNldEluZm88ZmxvYXQsIEZs
b2F0UmVjdCwgTGF5b3V0VW5pdCwgTGF5b3V0UmVjdD4oKnRoaXMpOwogfQogCiB0ZW1wbGF0ZSA8
PiB0ZW1wbGF0ZSA8PgotU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiBTY3JvbGxTbmFwT2Zm
c2V0c0luZm88TGF5b3V0VW5pdD46OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cikgY29uc3QKK0Zsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIExheW91dFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzo6Y29udmVydFVuaXRzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25zdAogewot
ICAgIHJldHVybiBjb252ZXJ0T2Zmc2V0SW5mbzxMYXlvdXRVbml0LCBmbG9hdD4oKnRoaXMsIGRl
dmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gY29udmVydE9mZnNldEluZm88TGF5b3V0VW5p
dCwgTGF5b3V0UmVjdCwgZmxvYXQsIEZsb2F0UmVjdD4oKnRoaXMsIGRldmljZVNjYWxlRmFjdG9y
KTsKIH0KIAotdGVtcGxhdGUgPD4KLXN0ZDo6cGFpcjxMYXlvdXRVbml0LCB1bnNpZ25lZD4gU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+OjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxF
dmVudEF4aXMgYXhpcywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQg
dmVsb2NpdHksIE9wdGlvbmFsPExheW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rp
b25hbFNuYXBwaW5nKSBjb25zdAordGVtcGxhdGUgPHR5cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFt
ZSBSZWN0VHlwZT4KK3N0YXRpYyBVbml0VHlwZSBtYXhGb3JBeGlzKFJlY3RUeXBlIHJlY3QsIFNj
cm9sbEV2ZW50QXhpcyBheGlzKQogewotICAgIHJldHVybiBjbG9zZXN0U25hcE9mZnNldFdpdGhP
ZmZzZXRzQW5kUmFuZ2VzKG9mZnNldHNGb3JBeGlzKGF4aXMpLCBvZmZzZXRSYW5nZXNGb3JBeGlz
KGF4aXMpLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsUG9zaXRp
b25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKTsKKyAgICByZXR1cm4gYXhpcyA9PSBTY3JvbGxFdmVu
dEF4aXM6Okhvcml6b250YWwgPyByZWN0Lm1heFgoKSA6IHJlY3QubWF4WSgpOwogfQogCi10ZW1w
bGF0ZSA8Pgotc3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZv
PGZsb2F0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8ZmxvYXQ+IG9y
aWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdAordGVtcGxhdGUgPHR5
cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFtZSBSZWN0VHlwZT4KK3N0YXRpYyBVbml0VHlwZSBtaW5G
b3JBeGlzKFJlY3RUeXBlIHJlY3QsIFNjcm9sbEV2ZW50QXhpcyBheGlzKQoreworICAgIHJldHVy
biBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHJlY3QueCgpIDogcmVjdC55
KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVbml0VHlwZT4KK3N0YXRpYyBib29sIGlzTmVh
ckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KFNjcm9sbFNuYXBTdHJpY3RuZXNzIHN0cmljdG5l
c3MsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uLCBVbml0VHlwZSBjYW5kaWRhdGVTbmFwT2Zm
c2V0LCBVbml0VHlwZSB2aWV3cG9ydExlbmd0aCkKK3sKKyAgICBpZiAoc3RyaWN0bmVzcyAhPSBT
Y3JvbGxTbmFwU3RyaWN0bmVzczo6UHJveGltaXR5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIC8vIFRoaXMgaXMgYW4gYXJiaXRyYXJ5IGNob2ljZSBmb3Igd2hhdCBpdCBtZWFucyB0byBi
ZSAiaW4gcHJveGltaXR5IiBvZiBhIHNuYXAgb2Zmc2V0LiBXZSBzaG91bGQgcGxheSBhcm91bmQg
d2l0aAorICAgIC8vIHRoaXMgYW5kIHNlZSB3aGF0IGZlZWxzIGJlc3QuCisgICAgc3RhdGljIGNv
bnN0IGZsb2F0IHJhdGlvT2ZTY3JvbGxQb3J0QXhpc0xlbmd0aFRvQmVDb25zaWRlcmVkRm9yUHJv
eGltaXR5ID0gMC4zOworICAgIHJldHVybiBzdGQ6OmFicyhmbG9hdCB7Y2FuZGlkYXRlU25hcE9m
ZnNldCAtIHNjcm9sbERlc3RpbmF0aW9ufSkgPD0gKHZpZXdwb3J0TGVuZ3RoICogcmF0aW9PZlNj
cm9sbFBvcnRBeGlzTGVuZ3RoVG9CZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVW5pdFR5cGUsIHR5cGVuYW1lIFJlY3RUeXBlLCB0eXBlbmFtZSBTaXpl
VHlwZT4KK3N0YXRpYyBzdGQ6OnBhaXI8VW5pdFR5cGUsIHVuc2lnbmVkPiBjYWxjdWxhdGVDbG9z
ZXN0U25hcE9mZnNldChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88VW5pdFR5cGUsIFJlY3RU
eXBlPiYgaW5mbywgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNpemVUeXBlJiB2aWV3cG9y
dFNpemUsIFVuaXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwg
T3B0aW9uYWw8VW5pdFR5cGU+IG9yaWdpbmFsT2Zmc2V0KQoreworICAgIGNvbnN0IGF1dG8mIHNu
YXBPZmZzZXRzID0gaW5mby5vZmZzZXRzRm9yQXhpcyhheGlzKTsKKyAgICBhdXRvIHBhaXJGb3JO
b1NuYXBwaW5nID0gc3RkOjptYWtlX3BhaXIoc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGludmFs
aWRTbmFwT2Zmc2V0SW5kZXgpOworICAgIGlmIChzbmFwT2Zmc2V0cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBwYWlyRm9yTm9TbmFwcGluZzsKKworICAgIC8vIFRoZSBmaXJzdCBzbmFwIHBv
aW50IHdpdGggYHNjcm9sbC1zbmFwLXN0b3A6IGFsd2F5c2AgYmV0d2VlbiB0aGUgb3JpZ2luYWwg
cG9zaXRpb24gYW5kIGRlc3RpbmF0aW9uIHRha2VzIHByZWNlZGVuY2UuCisgICAgaWYgKG9yaWdp
bmFsT2Zmc2V0KSB7CisgICAgICAgIGlmIChhdXRvIGZpcnN0U25hcFN0b3BPZmZzZXQgPSBmaW5k
Rmlyc3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihzbmFwT2Zmc2V0
cywgKm9yaWdpbmFsT2Zmc2V0LCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCkpCisgICAgICAgICAg
ICByZXR1cm4gKmZpcnN0U25hcFN0b3BPZmZzZXQ7CisgICAgfQorCisgICAgYXV0byB2aWV3cG9y
dExlbmd0aCA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gdmlld3BvcnRT
aXplLndpZHRoKCkgOiB2aWV3cG9ydFNpemUuaGVpZ2h0KCk7CisgICAgYm9vbCBsYW5kZWRJbnNp
ZGVTbmFwQXJlYVRoYXRDb25zdW1lc1ZpZXdwb3J0ID0gZmFsc2U7CisgICAgT3B0aW9uYWw8c3Rk
OjpwYWlyPFVuaXRUeXBlLCB1bnNpZ25lZD4+IHByZXZpb3VzLCBuZXh0OworICAgIE9wdGlvbmFs
PFJlY3RUeXBlPiBwcmV2aW91c1NuYXBBcmVhLCBuZXh0U25hcEFyZWE7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNuYXBPZmZzZXRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGNvbnN0
IGF1dG8mIHNuYXBBcmVhID0gaW5mby5zbmFwQXJlYXNbc25hcE9mZnNldHNbaV0uc25hcEFyZWFJ
bmRleF07CisgICAgICAgIGxhbmRlZEluc2lkZVNuYXBBcmVhVGhhdENvbnN1bWVzVmlld3BvcnQg
fD0gKG1pbkZvckF4aXM8VW5pdFR5cGU+KHNuYXBBcmVhLCBheGlzKSA8PSBzY3JvbGxEZXN0aW5h
dGlvbk9mZnNldCAmJiBtYXhGb3JBeGlzPFVuaXRUeXBlPihzbmFwQXJlYSwgYXhpcykgPj0gKHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0ICsgdmlld3BvcnRMZW5ndGgpKTsKKyAgICAgICAgLy8gSWYg
dGhlIHNjcm9sbCBsYW5kZWQgZXhhY3RseSBvbiBhIHNuYXAgb2Zmc2V0LCBjaG9vc2UgdGhhdCBv
bmUuCisgICAgICAgIFVuaXRUeXBlIHBvdGVudGlhbFNuYXBPZmZzZXQgPSBzbmFwT2Zmc2V0c1tp
XS5vZmZzZXQ7CisgICAgICAgIGlmIChwb3RlbnRpYWxTbmFwT2Zmc2V0ID09IHNjcm9sbERlc3Rp
bmF0aW9uT2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHBvdGVudGlh
bFNuYXBPZmZzZXQsIGkpOworCisgICAgICAgIGlmIChwb3RlbnRpYWxTbmFwT2Zmc2V0IDwgc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQpIHsKKyAgICAgICAgICAgIHByZXZpb3VzID0gc3RkOjptYWtl
X3BhaXIocG90ZW50aWFsU25hcE9mZnNldCwgaSk7CisgICAgICAgICAgICBwcmV2aW91c1NuYXBB
cmVhID0gc25hcEFyZWE7CisgICAgICAgIH0gZWxzZSBpZiAoIW5leHQgJiYgcG90ZW50aWFsU25h
cE9mZnNldCA+IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0KSB7CisgICAgICAgICAgICBuZXh0ID0g
c3RkOjptYWtlX3BhaXIocG90ZW50aWFsU25hcE9mZnNldCwgaSk7CisgICAgICAgICAgICBuZXh0
U25hcEFyZWEgPSBzbmFwQXJlYTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZyb20gaHR0
cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY3JvbGwtc25hcC0xLyNzbmFwLW92ZXJmbG93CisgICAg
Ly8gIklmIHRoZSBzbmFwIGFyZWEgaXMgbGFyZ2VyIHRoYW4gdGhlIHNuYXBwb3J0IGluIGEgcGFy
dGljdWxhciBheGlzLCB0aGVuIGFueSBzY3JvbGwgcG9zaXRpb24KKyAgICAvLyBpbiB3aGljaCB0
aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQsIGFuZCB0aGUgZGlzdGFuY2UgYmV0d2Vl
biB0aGUgZ2VvbWV0cmljYWxseQorICAgIC8vIHByZXZpb3VzIGFuZCBzdWJzZXF1ZW50IHNuYXAg
cG9zaXRpb25zIGluIHRoYXQgYXhpcyBpcyBsYXJnZXIgdGhhbiBzaXplIG9mIHRoZSBzbmFwcG9y
dCBpbgorICAgIC8vIHRoYXQgYXhpcywgaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uIGluIHRoYXQg
YXhpcy4gVGhlIFVBIG1heSB1c2UgdGhlIHNwZWNpZmllZCBhbGlnbm1lbnQgYXMgYQorICAgIC8v
IG1vcmUgcHJlY2lzZSB0YXJnZXQgZm9yIGNlcnRhaW4gc2Nyb2xsIG9wZXJhdGlvbnMgKGUuZy4g
ZXhwbGljaXQgcGFnaW5nKS4iCisgICAgaWYgKGxhbmRlZEluc2lkZVNuYXBBcmVhVGhhdENvbnN1
bWVzVmlld3BvcnQgJiYgKCFwcmV2aW91cyB8fCAhbmV4dCB8fCAoKCpuZXh0KS5maXJzdCAtICgq
cHJldmlvdXMpLmZpcnN0KSA+PSB2aWV3cG9ydExlbmd0aCkpCisgICAgICAgIHJldHVybiBwYWly
Rm9yTm9TbmFwcGluZzsKKworICAgIGlmIChvcmlnaW5hbE9mZnNldCkgeworICAgICAgICAvLyBJ
ZiB0aGlzIGlzIGEgZGlyZWN0aW9uYWwgc2Nyb2xsIGFuZCB0aGVyZSBhcmUgbm8gc2Nyb2xsIHN0
b3BzIGluIGEgcGFydGljdWxhciBkaXJlY3Rpb24sCisgICAgICAgIC8vIGRvbid0IHNjcm9sbCBw
YXN0IHRoZSBlZGdlIG9mIHRoZSBzY3JvbGwgYXJlYS4KKyAgICAgICAgaWYgKCFuZXh0ICYmIHBy
ZXZpb3VzKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6bWF4KCgqcHJl
dmlvdXMpLmZpcnN0LCBtYXhGb3JBeGlzPFVuaXRUeXBlPigqcHJldmlvdXNTbmFwQXJlYSwgYXhp
cykgLSB2aWV3cG9ydExlbmd0aCksIGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpOworICAgICAgICBp
ZiAoIXByZXZpb3VzICYmIG5leHQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
bWluRm9yQXhpczxVbml0VHlwZT4oKm5leHRTbmFwQXJlYSwgYXhpcyksIGludmFsaWRTbmFwT2Zm
c2V0SW5kZXgpOworCisgICAgICAgIC8vIEZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1z
Y3JvbGwtc25hcC0xLyNjaG9vc2luZworICAgICAgICAvLyAiVXNlciBhZ2VudHMgbXVzdCBlbnN1
cmUgdGhhdCBhIHVzZXIgY2FuIOKAnGVzY2FwZeKAnSBhIHNuYXAgcG9zaXRpb24sIHJlZ2FyZGxl
c3Mgb2YgdGhlIHNjcm9sbAorICAgICAgICAvLyBtZXRob2QuIEZvciBleGFtcGxlLCBpZiB0aGUg
c25hcCB0eXBlIGlzIG1hbmRhdG9yeSBhbmQgdGhlIG5leHQgc25hcCBwb3NpdGlvbiBpcyBtb3Jl
IHRoYW4KKyAgICAgICAgLy8gdHdvIHNjcmVlbi13aWR0aHMgYXdheSwgYSBuYcOvdmUg4oCcYWx3
YXlzIHNuYXAgdG8gbmVhcmVzdOKAnSBzZWxlY3Rpb24gYWxnb3JpdGhtIG1pZ2h0IOKAnHRyYXDi
gJ0gdGhlCisgICAgICAgIC8vIHVzZXIgaWYgdGhlaXIgZW5kIHBvc2l0aW9uIHdhcyBvbmx5IG9u
ZSBzY3JlZW4td2lkdGggYXdheS4gSW5zdGVhZCwgYSBzbWFydGVyIGFsZ29yaXRobSB0aGF0Cisg
ICAgICAgIC8vIG9ubHkgcmV0dXJuZWQgdG8gdGhlIHN0YXJ0aW5nIHNuYXAgcG9zaXRpb24gaWYg
dGhlIGVuZC1wb2ludCB3YXMgYSBmYWlybHkgc21hbGwgZGlzdGFuY2UgZnJvbQorICAgICAgICAv
LyBpdCwgYW5kIG90aGVyd2lzZSBpZ25vcmVkIHRoZSBzdGFydGluZyBzbmFwIHBvc2l0aW9uLCB3
b3VsZCBnaXZlIGJldHRlciBiZWhhdmlvci4iCisgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBp
ZiB3ZSBhcmUgaW4gYSBzaXR1YXRpb24gd2hlcmUgd2UgYXJlIGNob29zaW5nIGJldHdlZW4gdHdv
IGNvbXBhdGlibGUKKyAgICAgICAgLy8gc25hcCBvZmZzZXRzLgorICAgICAgICBpZiAoKm9yaWdp
bmFsT2Zmc2V0IDwgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgJiYgKCpwcmV2aW91cykuZmlyc3Qg
PD0gKm9yaWdpbmFsT2Zmc2V0KQorICAgICAgICAgICAgcHJldmlvdXMucmVzZXQoKTsKKyAgICAg
ICAgaWYgKCpvcmlnaW5hbE9mZnNldCA+IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ICYmICgqbmV4
dCkuZmlyc3QgPj0gKm9yaWdpbmFsT2Zmc2V0KQorICAgICAgICAgICAgbmV4dC5yZXNldCgpOwor
ICAgIH0KKworICAgIGlmIChuZXh0ICYmICFpc05lYXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0
eShpbmZvLnN0cmljdG5lc3MsIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCAoKm5leHQpLmZpcnN0
LCB2aWV3cG9ydExlbmd0aCkpCisgICAgICAgIG5leHQucmVzZXQoKTsKKyAgICBpZiAocHJldmlv
dXMgJiYgIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KGluZm8uc3RyaWN0bmVzcywg
c2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsICgqcHJldmlvdXMpLmZpcnN0LCB2aWV3cG9ydExlbmd0
aCkpCisgICAgICAgIHByZXZpb3VzLnJlc2V0KCk7CisKKyAgICAvLyBJZiB3ZSBkb24ndCBoYXZl
IGNvbXBhdGlibGUgb2Zmc2V0cyB0byBjaG9vc2UgYmV0d2VlbiwganVzdCBkbyB0aGUgb2J2aW91
cyB0aGluZworICAgIC8vIGFuZCBkbyBubyBzbmFwcGluZyBvciBvbmx5IHNlbGVjdCB0aGUgc2lu
Z2xlIGNvbXBhdGlibGUgb2Zmc2V0LgorICAgIGlmICghcHJldmlvdXMgJiYgIW5leHQpCisgICAg
ICAgIHJldHVybiBwYWlyRm9yTm9TbmFwcGluZzsKKyAgICBpZiAoIXByZXZpb3VzKQorICAgICAg
ICByZXR1cm4gKm5leHQ7CisgICAgaWYgKCFuZXh0KQorICAgICAgICByZXR1cm4gKnByZXZpb3Vz
OworCisgICAgLy8gSWYgdGhpcyBzY3JvbGwgaXNuJ3QgZGlyZWN0aW9uYWwsIHRoZW4gY2hvb3Nl
IHdoYXRldmVyIHNuYXAgcG9pbnQgaXMgY2xvc2VyLgorICAgIFVuaXRUeXBlIHByZXZpb3VzU25h
cE9mZnNldCA9ICgqcHJldmlvdXMpLmZpcnN0OworICAgIFVuaXRUeXBlIG5leHRTbmFwT2Zmc2V0
ID0gKCpuZXh0KS5maXJzdDsKKyAgICBpZiAoIXN0ZDo6YWJzKHZlbG9jaXR5KSkgeworICAgICAg
ICBib29sIGlzQ2xvc2VyVG9QcmV2aW91c1NuYXBJbmRleCA9IHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0IC0gcHJldmlvdXNTbmFwT2Zmc2V0IDw9IG5leHRTbmFwT2Zmc2V0IC0gc2Nyb2xsRGVzdGlu
YXRpb25PZmZzZXQ7CisgICAgICAgIHJldHVybiBpc0Nsb3NlclRvUHJldmlvdXNTbmFwSW5kZXgg
PyAqcHJldmlvdXMgOiAqbmV4dDsKKyAgICB9CisKKyAgICAvLyBGaW5hbGx5LCBpZiB3ZSBoYXZl
IGEgZGlyZWN0aW9uYWwgc2Nyb2xsIHByZWZlciB0aGUgc25hcCBwb2ludCB0aGF0IGlzIGluIHRo
ZSBzY3JvbGwgZGlyZWN0aW9uLgorICAgIHJldHVybiB2ZWxvY2l0eSA8IDAgPyAqcHJldmlvdXMg
OiAqbmV4dDsKK30KKworCit0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8Pgorc3RkOjpwYWlyPExheW91
dFVuaXQsIHVuc2lnbmVkPiBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFw
T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBMYXlvdXRTaXplJiB2aWV3cG9ydFNp
emUsIExheW91dFVuaXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBP
cHRpb25hbDxMYXlvdXRVbml0PiBvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGNhbGN1bGF0ZUNsb3Nlc3RTbmFwT2Zmc2V0PExheW91dFVu
aXQsIExheW91dFJlY3QsIExheW91dFNpemU+KCp0aGlzLCBheGlzLCB2aWV3cG9ydFNpemUsIHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rp
b25hbFNuYXBwaW5nKTsKK30KKwordGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KK3N0ZDo6cGFpcjxm
bG9hdCwgdW5zaWduZWQ+IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9m
ZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUs
IGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8
ZmxvYXQ+IG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3QKIHsKLSAg
ICByZXR1cm4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoT2Zmc2V0c0FuZFJhbmdlcyhvZmZzZXRzRm9y
QXhpcyhheGlzKSwgb2Zmc2V0UmFuZ2VzRm9yQXhpcyhheGlzKSwgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZyk7
CisgICAgcmV0dXJuIGNhbGN1bGF0ZUNsb3Nlc3RTbmFwT2Zmc2V0PGZsb2F0LCBGbG9hdFJlY3Qs
IEZsb2F0U2l6ZT4oKnRoaXMsIGF4aXMsIHZpZXdwb3J0U2l6ZSwgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxT
bmFwT2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5oCmluZGV4IDIwYTY0N2ZlYTEyYzZjYzhiNTU1NzljNTFiZDBhMzYwNWZk
Y2U1ZTYuLjYyMzBhYjljN2JkNjA2OTI2YTEwZjc2ZWI3ZTY0Mjc4MWExNTE4OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5m
by5oCkBAIC0yNyw2ICsyNywxMCBAQAogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKIAor
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUg
IkxheW91dFJlY3QuaCIKKyNpbmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5jbHVkZSAiTGF5b3V0
VW5pdC5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiU3R5bGVTY3JvbGxT
bmFwUG9pbnRzLmgiCkBAIC0zNSwzOSArMzksMjkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBMYXlvdXRSZWN0OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBSZW5kZXJC
b3g7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgT2Zmc2V0VHlwZT4KIHN0cnVjdCBTbmFwT2Zmc2V0IHsKLSAgICBUIG9mZnNl
dDsKKyAgICBPZmZzZXRUeXBlIG9mZnNldDsKICAgICBTY3JvbGxTbmFwU3RvcCBzdG9wOworICAg
IHNpemVfdCBzbmFwQXJlYUluZGV4OwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1
Y3QgU2Nyb2xsT2Zmc2V0UmFuZ2UgewotICAgIFQgc3RhcnQ7Ci0gICAgVCBlbmQ7Ci19OwotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBPZmZzZXRUeXBlLCB0eXBl
bmFtZSBSZWN0VHlwZT4KIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gewogICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBWZWN0b3I8U25hcE9mZnNldDxUPj4gaG9y
aXpvbnRhbFNuYXBPZmZzZXRzOwotICAgIFZlY3RvcjxTbmFwT2Zmc2V0PFQ+PiB2ZXJ0aWNhbFNu
YXBPZmZzZXRzOworICAgIFNjcm9sbFNuYXBTdHJpY3RuZXNzIHN0cmljdG5lc3M7CiAKLSAgICAv
LyBTbmFwIG9mZnNldCByYW5nZXMgcmVwcmVzZW50IG5vbi1lbXB0eSByYW5nZXMgb2Ygc2Nyb2xs
IG9mZnNldHMgaW4gd2hpY2ggc2Nyb2xsaW5nIG1heSByZXN0IGFmdGVyIHNjcm9sbCBzbmFwcGlu
Zy4KLSAgICAvLyBUaGVzZSBhcmUgdXNlZCBpbiB0d28gY2FzZXM6ICgxKSBmb3IgcHJveGltaXR5
IHNjcm9sbCBzbmFwcGluZywgd2hlcmUgcG9ydGlvbnMgb2YgYXJlYXMgYmV0d2VlbiBhZGphY2Vu
dCBzbmFwIG9mZnNldHMKLSAgICAvLyBtYXkgZW1pdCBzbmFwIG9mZnNldCByYW5nZXMsIGFuZCAo
MikgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHNuYXAgYXJlYSBpcyBsYXJnZXIgdGhhbiB0aGUgc25h
cCBwb3J0LCBpbiB3aGljaCBjYXNlIGFyZWFzCi0gICAgLy8gd2hlcmUgdGhlIHNuYXAgcG9ydCBm
aXRzIHdpdGhpbiB0aGUgc25hcCBhcmVhIGFyZSBjb25zaWRlcmVkIHRvIGJlIHZhbGlkIHNuYXAg
cG9zaXRpb25zLgotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxUPj4gaG9yaXpvbnRhbFNu
YXBPZmZzZXRSYW5nZXM7Ci0gICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPFQ+PiB2ZXJ0aWNh
bFNuYXBPZmZzZXRSYW5nZXM7CisgICAgVmVjdG9yPFNuYXBPZmZzZXQ8T2Zmc2V0VHlwZT4+IGhv
cml6b250YWxTbmFwT2Zmc2V0czsKKyAgICBWZWN0b3I8U25hcE9mZnNldDxPZmZzZXRUeXBlPj4g
dmVydGljYWxTbmFwT2Zmc2V0czsKKyAgICBWZWN0b3I8UmVjdFR5cGU+IHNuYXBBcmVhczsKIAot
ICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88VD4mIG90aGVyKSBj
b25zdAorICAgIGJvb2wgaXNFcXVhbChjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T2Zmc2V0
VHlwZSwgUmVjdFR5cGU+JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBob3Jp
em9udGFsU25hcE9mZnNldHMgPT0gb3RoZXIuaG9yaXpvbnRhbFNuYXBPZmZzZXRzICYmIHZlcnRp
Y2FsU25hcE9mZnNldHMgPT0gb3RoZXIudmVydGljYWxTbmFwT2Zmc2V0cyAmJiBob3Jpem9udGFs
U25hcE9mZnNldFJhbmdlcyA9PSBvdGhlci5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyAmJiB2
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPT0gb3RoZXIudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
OworICAgICAgICByZXR1cm4gc3RyaWN0bmVzcyA9PSBvdGhlci5zdHJpY3RuZXNzICYmIGhvcml6
b250YWxTbmFwT2Zmc2V0cyA9PSBvdGhlci5ob3Jpem9udGFsU25hcE9mZnNldHMgJiYgdmVydGlj
YWxTbmFwT2Zmc2V0cyA9PSBvdGhlci52ZXJ0aWNhbFNuYXBPZmZzZXRzICYmIHNuYXBBcmVhcyA9
PSBvdGhlci5zbmFwQXJlYXM7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKQEAg
LTc1LDI5ICs2OSwyNyBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKICAgICAgICAg
cmV0dXJuIGhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkgJiYgdmVydGljYWxTbmFwT2Zm
c2V0cy5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgVmVjdG9yPFNuYXBPZmZzZXQ8VD4+IG9mZnNl
dHNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKSBjb25zdAorICAgIFZlY3RvcjxTbmFwT2Zm
c2V0PE9mZnNldFR5cGU+PiBvZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6VmVydGlj
YWwgPyB2ZXJ0aWNhbFNuYXBPZmZzZXRzIDogaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogICAgIH0K
IAotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxUPj4gb2Zmc2V0UmFuZ2VzRm9yQXhpcyhT
Y3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBheGlzID09
IFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwgPyB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgOiBo
b3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdXRwdXRUeXBlPiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T3V0cHV0VHlwZT4gY29udmVydFVu
aXRzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMC4wKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGQ6OnBhaXI8VCwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50
QXhpcywgVCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFs
PFQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gV1RGOjpudWxsb3B0
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRUeXBlLCB0eXBlbmFtZSBPdXRw
dXRSZWN0VHlwZT4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPE91dHB1dFR5cGUsIE91dHB1dFJlY3RU
eXBlPiBjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAwLjApIGNvbnN0Owor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpemVUeXBlPiBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
T2Zmc2V0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywg
Y29uc3QgU2l6ZVR5cGUmIHZpZXdwb3J0U2l6ZSwgT2Zmc2V0VHlwZSBzY3JvbGxEZXN0aW5hdGlv
bk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPE9mZnNldFR5cGU+IG9yaWdpbmFsUG9z
aXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0gV1RGOjpudWxsb3B0KSBjb25zdDsKIH07CiAK
K3VzaW5nIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyA9IFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxMYXlvdXRVbml0LCBMYXlvdXRSZWN0PjsKK3VzaW5nIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0LCBGbG9hdFJlY3Q+OworCiB0ZW1wbGF0
ZSA8PiB0ZW1wbGF0ZSA8PgotU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxmbG9hdD46OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRTY2Fs
ZUZhY3RvciAqLykgY29uc3Q7Ci10ZW1wbGF0ZSA8PgotV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWly
PGZsb2F0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y2xvc2VzdFNu
YXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwg
ZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0
aW9uYWxTbmFwcGluZykgY29uc3Q7CitMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gRmxvYXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCAvKiB1bnVzZWRTY2FsZUZh
Y3RvciAqLykgY29uc3Q7Cit0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgorV0VCQ09SRV9FWFBPUlQg
c3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNs
b3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9y
dFNpemUsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0
aW9uYWw8ZmxvYXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25z
dDsKIAogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9h
dD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+Ojpjb252ZXJ0VW5pdHMoZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0OwotdGVtcGxhdGUgPD4KLVdFQkNPUkVfRVhQT1JUIHN0
ZDo6cGFpcjxMYXlvdXRVbml0LCB1bnNpZ25lZD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91
dFVuaXQ+OjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIExheW91dFVuaXQgc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRVbml0
PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7CitGbG9hdFNj
cm9sbFNuYXBPZmZzZXRzSW5mbyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRV
bml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7Cit0ZW1wbGF0ZSA8PiB0ZW1wbGF0
ZSA8PgorV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlv
dXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhp
cywgY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9sbERlc3Rp
bmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2lu
YWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OwogCiBjb25zdCB1bnNpZ25l
ZCBpbnZhbGlkU25hcE9mZnNldEluZGV4ID0gVUlOVF9NQVg7CiAKQEAgLTEwNiw3ICs5OCw3IEBA
IGNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggPSBVSU5UX01BWDsKIC8vIHRo
ZSBzY3JvbGxpbmcgY29udGFpbmVyJ3MgYm9yZGVyIGJveC4KIHZvaWQgdXBkYXRlU25hcE9mZnNl
dHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYsIGNvbnN0IFJlbmRlckJveCYgc2Ny
b2xsaW5nRWxlbWVudEJveCwgY29uc3QgUmVuZGVyU3R5bGUmIHNjcm9sbGluZ0VsZW1lbnRTdHls
ZSwgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3RJbkJvcmRlckJveENvb3JkaW5hdGVzKTsKIAotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mIHRzLCBTbmFwT2Zmc2V0PFQ+IG9mZnNldCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBPZmZz
ZXRUeXBlPiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0cywg
U25hcE9mZnNldDxPZmZzZXRUeXBlPiBvZmZzZXQpCiB7CiAgICAgdHMgPDwgb2Zmc2V0Lm9mZnNl
dDsKICAgICBpZiAob2Zmc2V0LnN0b3AgPT0gU2Nyb2xsU25hcFN0b3A6OkFsd2F5cykKQEAgLTEx
NCwxMyArMTA2LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mIHRzLCBTbmFwT2Zmc2UKICAgICByZXR1cm4gdHM7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTY3JvbGxPZmZzZXRSYW5nZTxUPiYgcmFuZ2UpCi17Ci0gICAgdHMgPDwg
InN0YXJ0OiAiIDw8IHJhbmdlLnN0YXJ0IDw8ICIgZW5kOiAiIDw8IHJhbmdlLmVuZDsKLSAgICBy
ZXR1cm4gdHM7Ci19Ci0KIH07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggZjQwODE5
YWZlM2NlZmQzNDgxODA2ZjQxNzk5ZTkwNTk4NzVmODBlMS4uODQzMjg4MWM4OWYxNmM1N2I0Njc0
YzI0YmI0YTk4Mzg2ZDdhYzkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0xNTcs
NyArMTU3LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbE9y
aWdpbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQogfQogCiAjaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKLXZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zm
c2V0c0luZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykKK3ZvaWQg
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgRmxv
YXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIGluZm8pCiB7CiAgICAgaWYgKG1fc25hcE9mZnNldHNJ
bmZvLmlzRXF1YWwoaW5mbykpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgK
aW5kZXggYmQ0ZTk3YjljNWVmZGY5MTI5ZGVmOGI2YmIyMzBkMzdiNDE2NDA0NC4uYzVkNzYzOWNm
MWNhZTBjN2UwMzdmYzM1OTlmMjI1ODFiYWFkYWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgK
QEAgLTcxLDggKzcxLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Ny
b2xsT3JpZ2luKGNvbnN0IEludFBvaW50Jik7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQotICAgIGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRzSW5m
bygpIGNvbnN0IHsgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOyB9Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTbmFwT2Zmc2V0c0luZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZs
b2F0PiYgbmV3T2Zmc2V0c0luZm8pOworICAgIGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvJiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mbzsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U25hcE9mZnNldHNJbmZvKGNvbnN0IEZsb2F0
U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBuZXdPZmZzZXRzSW5mbyk7CiAKICAgICB1bnNpZ25lZCBj
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
dXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkKTsKQEAgLTEzMCw3ICsxMzAs
NyBAQCBwcml2YXRlOgogICAgIEludFBvaW50IG1fc2Nyb2xsT3JpZ2luOwogCiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKLSAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IG1fc25h
cE9mZnNldHNJbmZvOworICAgIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25hcE9mZnNl
dHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCB7
IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsgMCB9
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggMTMwZTczZWRiYzI4YzA4Mjg4
MzFhNThjMjJmM2M1MWNlNjdkMTBlNy4uOGI2MzRlMWFkNjRmMjQxOWJmMmJhOTA4NDMxYzgzN2M5
N2Q2ZjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMzI3LDcgKzMyNyw3IEBAIHZv
aWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0m
IHRzLCBTY3JvbGxpbmdTdGF0ZVRyCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQot
Y29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU6OnNuYXBPZmZzZXRzSW5mbygpIGNvbnN0Citjb25zdCBGbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnNuYXBPZmZzZXRzSW5mbygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmgKaW5kZXggYmU0OWQwYjEyNWYwMWI3MWVkNmQ4YmNhZTRmNmUyNzc1MGMzODRiNi4uNTViY2Vk
M2UwZTYxMjEwNmQ5M2Y4NTJlZWY3ZDQ2NDIxMDUyNTQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhhdmVTY3JvbGxiYXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMuaG9yaXpvbnRhbFNjcm9s
bGJhck1vZGUgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmIHx8IG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0
ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmY7IH0KIAogI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZv
PGZsb2F0PiYgc25hcE9mZnNldHNJbmZvKCkgY29uc3Q7CisgICAgY29uc3QgRmxvYXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwogICAgIHVuc2lnbmVkIGN1
cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRI
b3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICB1bnNpZ25lZCBjdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXg7IH0KICAgICB2b2lkIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgodW5z
aWduZWQgaW5kZXgpIHsgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ID0gaW5kZXg7
IH0KQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50
U2Nyb2xsUG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKLSAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IG1fc25h
cE9mZnNldHNJbmZvOworICAgIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIG1fc25hcE9mZnNl
dHNJbmZvOwogICAgIHVuc2lnbmVkIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCB7
IDAgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4IHsgMCB9
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
Lm1tCmluZGV4IGE1YjQ4YzIwMzQxNWFiN2IwOWNlOWMzZmE5OWMxNWVhNjM3NDBlNDUuLjNlMjQ1
NzRhYjAwZWZmNDVlMGY4Y2ExMGYxMzA4NTFhODFhZWE3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRlRnJvbVN0YXRlTm9k
ZShjb25zdCBTY3JvbGxpbmdTCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGlm
IChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbykpCi0gICAgICAgIG1fc2Nyb2xsQ29udHJvbGxl
ci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKHNjcm9sbGluZ1N0YXRlTm9kZS5zbmFwT2Zmc2V0c0lu
Zm8oKS5jb252ZXJ0VW5pdHM8TGF5b3V0VW5pdD4oKSk7CisgICAgICAgIG1fc2Nyb2xsQ29udHJv
bGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKHNjcm9sbGluZ1N0YXRlTm9kZS5zbmFwT2Zmc2V0
c0luZm8oKS5jb252ZXJ0VW5pdHM8TGF5b3V0VW5pdCwgTGF5b3V0UmVjdD4oKSk7CiAKICAgICBp
ZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCiAgICAgICAg
IG1fc2Nyb2xsQ29udHJvbGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9s
bEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgc2Nyb2xsaW5nU3RhdGVOb2RlLmN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENv
bnRyb2xsZXIuY3BwCmluZGV4IGMzZWM2YzQ0MWQzMTJmNTg1MmJiZDZmMmI0OTBlMjdjYjVlMzEz
YWUuLjY1NTAwZDEwZmVmMzgxMDc0MjJlMjlmYjk5YzA1NmUwNjEyNWRiMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFN0YXRlKGNvbnN0IFNjcm9s
bGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlCiAgICAgdXBkYXRlU2Nyb2xsU25hcFBvaW50cygqc25h
cE9mZnNldEluZm8pOwogfQogCi12b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNu
YXBQb2ludHMoY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBzbmFwT2Zm
c2V0SW5mbykKK3ZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhj
b25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRJbmZvKQogewogICAg
IGlmIChzbmFwT2Zmc2V0SW5mby5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9zY3JvbGxTbmFwU3Rh
dGUgPSBudWxscHRyOwpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6
c2V0TmVhcmVzdFNjcm9sbFNuYXBJbmRleEZvckF4aXNBbmRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlz
CiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFVuaXQgY2xhbXBlZE9mZnNldCA9IHN0ZDo6
bWluKHN0ZDo6bWF4KExheW91dFVuaXQob2Zmc2V0IC8gc2NhbGVGYWN0b3IpLCBzbmFwT2Zmc2V0
cy5maXJzdCgpLm9mZnNldCksIHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQpOwotCi0gICAgdW5z
aWduZWQgYWN0aXZlSW5kZXggPSBzbmFwU3RhdGUuc25hcE9mZnNldEluZm8oKS5jbG9zZXN0U25h
cE9mZnNldChheGlzLCBjbGFtcGVkT2Zmc2V0LCAwKS5zZWNvbmQ7CisgICAgTGF5b3V0U2l6ZSB2
aWV3cG9ydFNpemUobV9jbGllbnQudmlld3BvcnRTaXplKCkud2lkdGgoKSwgbV9jbGllbnQudmll
d3BvcnRTaXplKCkuaGVpZ2h0KCkpOworICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gc25hcFN0
YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgdmlld3BvcnRTaXpl
LCBjbGFtcGVkT2Zmc2V0LCAwKS5zZWNvbmQ7CiAgICAgaWYgKGFjdGl2ZUluZGV4ID09IGFjdGl2
ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoYXhpcykpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTM3
LDcgKzEzNyw5IEBAIGZsb2F0IFNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0
aW9uKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBkZXN0CiAgICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzOwogICAgIGlmIChvcmlnaW5hbE9mZnNl
dC5oYXNWYWx1ZSgpKQogICAgICAgICBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMgPSBMYXlv
dXRVbml0KCpvcmlnaW5hbE9mZnNldCAvIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAg
ICBMYXlvdXRVbml0IG9mZnNldCA9IHNuYXBTdGF0ZS5zbmFwT2Zmc2V0SW5mbygpLmNsb3Nlc3RT
bmFwT2Zmc2V0KGF4aXMsIExheW91dFVuaXQoZGVzdGluYXRpb25PZmZzZXQgLyBtX2NsaWVudC5w
YWdlU2NhbGVGYWN0b3IoKSksIHZlbG9jaXR5LCBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMp
LmZpcnN0OworCisgICAgTGF5b3V0U2l6ZSB2aWV3cG9ydFNpemUobV9jbGllbnQudmlld3BvcnRT
aXplKCkud2lkdGgoKSwgbV9jbGllbnQudmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOworICAgIExh
eW91dFVuaXQgb2Zmc2V0ID0gc25hcFN0YXRlLnNuYXBPZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBP
ZmZzZXQoYXhpcywgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0KGRlc3RpbmF0aW9uT2Zmc2V0IC8g
bV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpLCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRJbkxh
eW91dFVuaXRzKS5maXJzdDsKICAgICByZXR1cm4gb2Zmc2V0ICogbV9jbGllbnQucGFnZVNjYWxl
RmFjdG9yKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIu
aAppbmRleCBkOTI1ZmQ0NTU4NGMwMTExYzllZjBjMjg5MWY3Yzc1MTY2MTBlYjdiLi5kZDUzYWRh
OTBhMmY1ZjI5MDg4MDEwMjNjM2U1YTNjNDMxZWY2MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9T
TkFQKQotICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcFBvaW50cyhjb25zdCBTY3JvbGxTbmFwT2Zm
c2V0c0luZm88TGF5b3V0VW5pdD4mKTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMo
Y29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAgICAgdm9pZCBzZXRBY3RpdmVT
Y3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcywgdW5zaWduZWQpOwogICAgIHZv
aWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGljZXNGb3JPZmZzZXQoU2Nyb2xsT2Zmc2V0KTsKICAg
ICBib29sIGFjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKaW5kZXggN2Q2OGQ1MGRkZTc2
ZTg5MDk2Y2QzZTU4ZjNmYzM5MWZmYzY3MTc3Yy4uMWVlNzQxNjdiODE5ODNmNDcwMmQ4MzZhNmY5
NzcwNzcyNDcyMDkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
U25hcEFuaW1hdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFNuYXBBbmltYXRvclN0YXRlLmNwcApAQCAtNTEsOCArNTEsOCBAQCB2b2lkIFNjcm9sbFNuYXBB
bmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZSBzdGF0
ZSwgY29ucwogCiAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3IgPSBTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I6OmNyZWF0ZSh2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0
LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiAgICAgYXV0byBwcmVkaWN0ZWRTY3Jv
bGxUYXJnZXQgPSBtX21vbWVudHVtQ2FsY3VsYXRvci0+cHJlZGljdGVkRGVzdGluYXRpb25PZmZz
ZXQoKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRYID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZz
ZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBjb250ZW50U2l6ZS53aWR0aCgpIC0gdmll
d3BvcnRTaXplLndpZHRoKCksIGluaXRpYWxPZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJn
ZXQud2lkdGgoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEud2lkdGgoKSwgbV9hY3RpdmVTbmFw
SW5kZXhYKTsKLSAgICBmbG9hdCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRP
ZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2
aWV3cG9ydFNpemUuaGVpZ2h0KCksIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxU
YXJnZXQuaGVpZ2h0KCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2FjdGl2
ZVNuYXBJbmRleFkpOworICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRPZmZzZXRGb3JT
dGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHZpZXdwb3J0U2l6ZSwgY29u
dGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0Lngo
KSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRh
LndpZHRoKCksIG1fYWN0aXZlU25hcEluZGV4WCk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WSA9
IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHZp
ZXdwb3J0U2l6ZSwgY29udGVudFNpemUuaGVpZ2h0KCkgLSB2aWV3cG9ydFNpemUuaGVpZ2h0KCks
IGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQuaGVpZ2h0KCksIHBhZ2VT
Y2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpLCBtX2FjdGl2ZVNuYXBJbmRleFkpOwogICAgIG1f
bW9tZW50dW1DYWxjdWxhdG9yLT5zZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KHsgdGFyZ2V0T2Zm
c2V0WCwgdGFyZ2V0T2Zmc2V0WSB9KTsKICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6
Om5vdygpOwogICAgIG1fY3VycmVudFN0YXRlID0gc3RhdGU7CkBAIC05MSwxMCArOTEsMTEgQEAg
RmxvYXRQb2ludCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6Y3VycmVudEFuaW1hdGVkU2Nyb2xs
T2Zmc2V0KGJvb2wmIGlzQW5pbWF0aW8KICAgICByZXR1cm4gbV9tb21lbnR1bUNhbGN1bGF0b3It
PnNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoZWxhcHNlZFRpbWUpOwogfQogCi1mbG9hdCBT
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzIGF4aXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQs
IGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVs
dGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0CitmbG9hdCBTY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlz
IGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZz
ZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VT
Y2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBj
b25zdAogewogICAgIExheW91dFVuaXQgcHJvcG9zZWRPZmZzZXQ7Ci0gICAgc3RkOjp0aWUocHJv
cG9zZWRPZmZzZXQsIG91dEFjdGl2ZVNuYXBJbmRleCkgPSBtX3NuYXBPZmZzZXRzSW5mby5jbG9z
ZXN0U25hcE9mZnNldChheGlzLCBMYXlvdXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2Fs
ZSksIGluaXRpYWxEZWx0YSk7CisgICAgTGF5b3V0U2l6ZSB2aWV3cG9ydExheW91dFNpemUodmll
d3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSk7CisgICAgc3RkOjp0aWUo
cHJvcG9zZWRPZmZzZXQsIG91dEFjdGl2ZVNuYXBJbmRleCkgPSBtX3NuYXBPZmZzZXRzSW5mby5j
bG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydExheW91dFNpemUsIExheW91dFVuaXQocHJl
ZGljdGVkT2Zmc2V0IC8gcGFnZVNjYWxlKSwgaW5pdGlhbERlbHRhKTsKICAgICBpZiAob3V0QWN0
aXZlU25hcEluZGV4ICE9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpCiAgICAgICAgIHJldHVybiBw
YWdlU2NhbGUgKiBwcm9wb3NlZE9mZnNldDsKICAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oc3Rh
cnRPZmZzZXQsIDAsIG1heFNjcm9sbE9mZnNldCk7CkBAIC0xMDUsMTEgKzEwNiw2IEBAIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbFNuYXBBbmltYXRv
clN0YXRlJiBzdGF0ZSkKICAgICB0cyA8PCAiU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUiOwogICAg
IHRzLmR1bXBQcm9wZXJ0eSgic25hcCBvZmZzZXRzIHgiLCBzdGF0ZS5zbmFwT2Zmc2V0c0ZvckF4
aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJz
bmFwIG9mZnNldHMgeSIsIHN0YXRlLnNuYXBPZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6
OlZlcnRpY2FsKSk7Ci0gICAgaWYgKCFzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3Jv
bGxFdmVudEF4aXM6Okhvcml6b250YWwpLmlzRW1wdHkoKSkKLSAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzbmFwIG9mZnNldHMgcmFuZ2VzIHgiLCBzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhp
cyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpKTsKLSAgICBpZiAoIXN0YXRlLnNuYXBPZmZz
ZXRSYW5nZXNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpLmlzRW1wdHkoKSkKLSAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJzbmFwIG9mZnNldHMgcmFuZ2VzIHkiLCBzdGF0ZS5zbmFw
T2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKSk7Ci0KICAgICB0
cy5kdW1wUHJvcGVydHkoImFjdGl2ZSBzbmFwIGluZGV4IHgiLCBzdGF0ZS5hY3RpdmVTbmFwSW5k
ZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkpOwogICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiYWN0aXZlIHNuYXAgaW5kZXggeSIsIHN0YXRlLmFjdGl2ZVNuYXBJbmRleEZvckF4aXMo
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRleCAzZmViMWFjM2I1OWFhZWU0NGM2
MzliNGFmZjBjMjQyNjk1ODIxNDk5Li42YjZkMjI3NWNmYTM0NWI5YTJiNmE2OWVhODE4OWQ2NjVk
NjE0Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmlt
YXRvclN0YXRlLmgKQEAgLTU3LDI0ICs1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGF4
aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gbV9zbmFwT2Zmc2V0c0luZm8uaG9y
aXpvbnRhbFNuYXBPZmZzZXRzIDogbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0
czsKICAgICB9CiAKLSAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5p
dD4+JiBzbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRh
bCA/IG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzIDogbV9zbmFw
T2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOwotICAgIH0KLQotICAgIGNvbnN0
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgc25hcE9mZnNldEluZm8oKSBjb25z
dCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mbzsgfQotICAgIHZvaWQgc2V0U25hcE9mZnNldElu
Zm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBuZXdJbmZvKSB7IG1f
c25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsgfQotCi0gICAgdm9pZCBzZXRTbmFwT2Zmc2V0c0Fu
ZFBvc2l0aW9uUmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9y
PFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9s
bE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlcykKLSAgICB7Ci0gICAg
ICAgIGlmIChheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkgewotICAgICAgICAg
ICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7
Ci0gICAgICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cyA9IHNuYXBPZmZzZXRSYW5nZXM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Nu
YXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7Ci0gICAgICAg
ICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzbmFwT2Zm
c2V0UmFuZ2VzOwotICAgICAgICB9Ci0gICAgfQorICAgIGNvbnN0IExheW91dFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyYgc25hcE9mZnNldEluZm8oKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRz
SW5mbzsgfQorICAgIHZvaWQgc2V0U25hcE9mZnNldEluZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25h
cE9mZnNldHNJbmZvJiBuZXdJbmZvKSB7IG1fc25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsgfQog
CiAgICAgU2Nyb2xsU25hcFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vy
cmVudFN0YXRlOyB9CiAKQEAgLTEwMCwxMyArODQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdHJh
bnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBmbG9h
dCB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGZsb2F0IG1heFNj
cm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxv
YXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFw
SW5kZXgpIGNvbnN0OworICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9s
bEV2ZW50QXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IG1heFNjcm9s
bE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQg
cGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5k
ZXgpIGNvbnN0OwogICAgIHZvaWQgdGVhcmRvd25BbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFw
U3RhdGUpOwogICAgIHZvaWQgc2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUs
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRT
aXplLCBmbG9hdCBwYWdlU2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxE
ZWx0YSk7CiAKICAgICBTY3JvbGxTbmFwU3RhdGUgbV9jdXJyZW50U3RhdGUgeyBTY3JvbGxTbmFw
U3RhdGU6OlVzZXJJbnRlcmFjdGlvbiB9OwogCi0gICAgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExh
eW91dFVuaXQ+IG1fc25hcE9mZnNldHNJbmZvOworICAgIExheW91dFNjcm9sbFNuYXBPZmZzZXRz
SW5mbyBtX3NuYXBPZmZzZXRzSW5mbzsKIAogICAgIHVuc2lnbmVkIG1fYWN0aXZlU25hcEluZGV4
WCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2FjdGl2ZVNuYXBJbmRleFkgeyAwIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNzlmOWU5ODA5OGE4ZGRj
YTJiNDljZTk3N2QyMTQzZTFjYjZjYWY4NS4uMTMyYWVhMjg5ZTA5NzcyMjY5M2QxMmNlMDcwMDZh
NTkxNjk2MWY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNw
cApAQCAtNDc5LDE5ICs0NzksMTkgQEAgU3RyaW5nIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbFNj
cm9sbGJhclN0YXRlRm9yVGVzdGluZygpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKQotU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBTY3JvbGxhYmxlQXJl
YTo6ZW5zdXJlU25hcE9mZnNldHNJbmZvKCkKK0xheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYg
U2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5mbygpCiB7CiAgICAgaWYgKCFtX3Nu
YXBPZmZzZXRzSW5mbykKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBtYWtlVW5pcXVlPFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4oKTsKKyAgICAgICAgbV9zbmFwT2Zmc2V0
c0luZm8gPSBtYWtlVW5pcXVlPExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4oKTsKICAgICBy
ZXR1cm4gKm1fc25hcE9mZnNldHNJbmZvOwogfQogCi1jb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm88TGF5b3V0VW5pdD4qIFNjcm9sbGFibGVBcmVhOjpzbmFwT2Zmc2V0SW5mbygpIGNvbnN0Citj
b25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIFNjcm9sbGFibGVBcmVhOjpzbmFwT2Zm
c2V0SW5mbygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmdldCgpOwog
fQogCi12b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25zdCBT
Y3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIGluZm8pCit2b2lkIFNjcm9sbGFibGVB
cmVhOjpzZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8mIGluZm8pCiB7CiAgICAgaWYgKGluZm8uaXNFbXB0eSgpKSB7CiAgICAgICAgIGNsZWFy
U25hcE9mZnNldHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmlu
ZGV4IDdlYjdiNTQwMjgyODQwYWI3YjVmMzFmZGZhNmIyYmZkNThlYjE5ZGMuLjM1ODcxNzljZGI3
ZjY3OTM5OGE3Yzg3NzMxMmVkNDk3YzE2ZmU4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaApAQCAtOTEsOSArOTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2Vz
U2Nyb2xsU25hcCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4qIHNu
YXBPZmZzZXRJbmZvKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgTGF5b3V0U2Ny
b2xsU25hcE9mZnNldHNJbmZvKiBzbmFwT2Zmc2V0SW5mbygpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTbmFwT2Zmc2V0cygpIHsgfTsKLSAgICB2b2lkIHNldFNjcm9sbFNuYXBPZmZz
ZXRJbmZvKGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYpOworICAgIHZv
aWQgc2V0U2Nyb2xsU25hcE9mZnNldEluZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvJik7CiAgICAgdm9pZCBjbGVhclNuYXBPZmZzZXRzKCk7CiAgICAgdW5zaWduZWQgY3VycmVu
dEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEhvcml6
b250YWxTbmFwUG9pbnRJbmRleDsgfQogICAgIHZvaWQgc2V0Q3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXggPSBpbmRleDsgfQpAQCAtMzg1LDggKzM4NSw4IEBAIHByaXZhdGU6CiAgICAgbXV0YWJs
ZSBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IG1fc2Nyb2xsQW5pbWF0b3I7CiAKICNp
ZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlv
dXRVbml0PiYgZW5zdXJlU25hcE9mZnNldHNJbmZvKCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4gbV9zbmFwT2Zmc2V0c0luZm87CisgICAg
TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvPiBtX3NuYXBPZmZz
ZXRzSW5mbzsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgg
eyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7IDAg
fTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tCmluZGV4IGMwOTVjZDY2ZjU5NTZmOGI4OWFhY2IzM2Q1YjdmODAyMzBhOWE3YjUu
LmQ0NTIxZDY1OGMzM2ZhZDZlMzk2ZjYxYTgwN2U5ODUzMzE5OGJmYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTEyNzgsNyAr
MTI3OCw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEo
Y29uc3QgRmxvYXRTaXplJiBkZWx0YSkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCi1zdGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5TbmFwKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Piogb2Zmc2V0SW5mbykKK3N0YXRpYyBib29sIGdl
c3R1cmVTaG91bGRCZWdpblNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
LCBTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZv
KiBvZmZzZXRJbmZvKQogewogICAgIGlmICghb2Zmc2V0SW5mbykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24uY3BwCmluZGV4IDNlMzgwZmQxNDVkNzIyNWJhYzA1NzMzMGMxOWQ2Y2E4OGEwZTBjZDIuLjFj
ODIxZWViN2NkYmIxNGUwM2FhNGQ0ODQ1YmE0MTI1ODllZDY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTk4LDkgKzk4
LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxEYXRh
PiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwg
UmVxdWVzdGVkU2Nyb2xsRGF0YSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImLCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Jik7Ci0gICAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU2Nyb2xsU25h
cE9mZnNldHNJbmZvPGZsb2F0PiYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxG
bG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKKyAgICBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBGbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTbmFwT2Zm
c2V0PGZsb2F0Pj4gewpAQCAtMzExLDcgKzMxMSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xs
CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OlNjcm9sbFBvc2l0aW9uLCBGbG9hdFBvaW50LCBzZXRTY3JvbGxQb3NpdGlvbik7CiAgICAgU0NS
T0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9y
aWdpbiwgSW50UG9pbnQsIHNldFNjcm9sbE9yaWdpbik7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6U25hcE9mZnNldHNJbmZvLCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+LCBzZXRT
bmFwT2Zmc2V0c0luZm8pOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvLCBzZXRTbmFwT2Zmc2V0c0luZm8pOwogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRl
eCwgdW5zaWduZWQsIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpOwogICAgIFND
Uk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50
VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50VmVydGljYWxTbmFw
UG9pbnRJbmRleCk7CiAjZW5kaWYKQEAgLTUzMiw2ICs1MzIsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8U25hcE9mZnNldDxmbG9hdD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU25h
cE9mZnNldAogewogICAgIGVuY29kZXIgPDwgb2Zmc2V0Lm9mZnNldDsKICAgICBlbmNvZGVyIDw8
IG9mZnNldC5zdG9wOworICAgIGVuY29kZXIgPDwgb2Zmc2V0LnNuYXBBcmVhSW5kZXg7CiB9CiAK
IGJvb2wgQXJndW1lbnRDb2RlcjxTbmFwT2Zmc2V0PGZsb2F0Pj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBTbmFwT2Zmc2V0PGZsb2F0PiYgb2Zmc2V0KQpAQCAtNTQwLDI3ICs1NDEsMjYgQEAg
Ym9vbCBBcmd1bWVudENvZGVyPFNuYXBPZmZzZXQ8ZmxvYXQ+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFNuYXBPZmZzZXQ8ZmxvYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUob2Zmc2V0LnN0b3ApKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShvZmZzZXQuc25hcEFyZWFJbmRleCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIEFyZ3VtZW50Q29kZXI8U2Ny
b2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBpbmZvKQordm9pZCBBcmd1bWVudENvZGVy
PEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBpbmZvKQogewogICAgIGVuY29kZXIgPDwg
aW5mby5ob3Jpem9udGFsU25hcE9mZnNldHM7CiAgICAgZW5jb2RlciA8PCBpbmZvLnZlcnRpY2Fs
U25hcE9mZnNldHM7Ci0gICAgZW5jb2RlciA8PCBpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFu
Z2VzOwotICAgIGVuY29kZXIgPDwgaW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAg
ZW5jb2RlciA8PCBpbmZvLnNuYXBBcmVhczsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xs
U25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5mbykKK2Jvb2wgQXJndW1lbnRDb2RlcjxGbG9hdFNj
cm9sbFNuYXBPZmZzZXRzSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGbG9hdFNjcm9s
bFNuYXBPZmZzZXRzSW5mbyYgaW5mbykKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8u
aG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5ob3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGluZm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGluZm8uc25hcEFyZWFzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggMzhkZDlkMzFlNmM3Y2Y3OTQ5NTZlNzczMGIxMDdkZTQ5NDdhNGI4Ny4uODdlNGQ0NjBl
ZTNlNDFjYzc5ODY5NjRjMzE0ODVlZDM1NmYwZDdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yODA1LDMyICsyODA1LDYgQEAgYm9v
bCBBcmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXI+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgU2UKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKLQotdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4mIHJh
bmdlKQotewotICAgIGVuY29kZXIgPDwgcmFuZ2Uuc3RhcnQ7Ci0gICAgZW5jb2RlciA8PCByYW5n
ZS5lbmQ7Ci19Ci0KLWF1dG8gQXJndW1lbnRDb2RlcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsT2Zm
c2V0UmFuZ2U8ZmxvYXQ+PgotewotICAgIFdlYkNvcmU6OlNjcm9sbE9mZnNldFJhbmdlPGZsb2F0
PiByYW5nZTsKLSAgICBmbG9hdCBzdGFydDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXJ0
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGZsb2F0IGVuZDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGVuZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICByYW5nZS5zdGFydCA9IHN0YXJ0OwotICAgIHJhbmdlLmVuZCA9IGVuZDsKLSAgICByZXR1
cm4gcmFuZ2U7Ci19Ci0KLSNlbmRpZgotCiB2b2lkIEFyZ3VtZW50Q29kZXI8TWVkaWFTZWxlY3Rp
b25PcHRpb24+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWVkaWFTZWxlY3Rpb25P
cHRpb24mIG9wdGlvbikKIHsKICAgICBlbmNvZGVyIDw8IG9wdGlvbi5kaXNwbGF5TmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggOTI4ZGE3
NTYwYzNlODliZDQxZDUxOGE2YjYyZTU0ZThhNGVlZjVhOC4uZTNlYmQzM2MwZTY5Y2MyMzRmMWM2
ZDU4MTRlN2I0Nzc5ZmE2NmY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKQEAgLTc0MywxNSArNzQzLDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyPiB7CiAK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLQotdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+IHsKLSAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcm9sbE9mZnNl
dFJhbmdlPGZsb2F0PiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxPZmZz
ZXRSYW5nZTxmbG9hdD4+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi0jZW5kaWYKLQogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4g
ewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFT
ZWxlY3Rpb25PcHRpb24mKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFTZWxl
Y3Rpb25PcHRpb24+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggMTE2NzVmMzI0NWJh
MTFhYzM5OGZkYmEyZmNlMzYzYmFiZjBhYTQ1NC4uMDQ2NDEwOGZkOGZhZDQ4YjJiZDRlMzhmODBm
OWM2YjJhNTgwMjkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMjIzLDE0ICsyMjMsMTIgQEAgYm9vbCBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xs
aW5nKFNjcm9sbEV2ZW4KIAogZmxvYXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6
Y2xvc2VzdFNuYXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcoU2Nyb2xsRXZlbnRBeGlzIGF4
aXMsIGZsb2F0IHNjcm9sbERlc3RpbmF0aW9uLCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGN1
cnJlbnRJbmRleCkgY29uc3QKIHsKLSAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1fc2Ny
b2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKLSAgICBBU1NFUlQocm9vdCAmJiByb290LT5pc0ZyYW1l
U2Nyb2xsaW5nTm9kZSgpKTsKLSAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiBy
b290U2Nyb2xsaW5nTm9kZSA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGUqPihyb290KTsKKyAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290
U2Nyb2xsaW5nTm9kZSA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKICAgICBjb25zdCBh
dXRvJiBzbmFwT2Zmc2V0c0luZm8gPSByb290U2Nyb2xsaW5nTm9kZS0+c25hcE9mZnNldHNJbmZv
KCk7CiAKICAgICBmbG9hdCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiA9IHNjcm9sbERlc3RpbmF0
aW9uIC8gbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiAgICAgZmxvYXQg
cmF3Q2xvc2VzdFNuYXBPZmZzZXQ7Ci0gICAgc3RkOjp0aWUocmF3Q2xvc2VzdFNuYXBPZmZzZXQs
IGN1cnJlbnRJbmRleCkgPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywg
c2NhbGVkU2Nyb2xsRGVzdGluYXRpb24sIHZlbG9jaXR5KTsKKyAgICBzdGQ6OnRpZShyYXdDbG9z
ZXN0U25hcE9mZnNldCwgY3VycmVudEluZGV4KSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25h
cE9mZnNldChheGlzLCByb290U2Nyb2xsaW5nTm9kZS0+bGF5b3V0Vmlld3BvcnQoKS5zaXplKCks
IHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uLCB2ZWxvY2l0eSk7CiAgICAgcmV0dXJuIHJhd0Nsb3Nl
c3RTbmFwT2Zmc2V0ICogbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy5tbQppbmRleCA4ODBjMDMxOTVmODljNGJkMTNkZDZhNjQ2NTIzZjFkZjg0
Yzk1NjRlLi44ZmM2NjE1Zjc2ZjNjOWZhZDAwZjU5NGIzNGIxM2RkNDRjOTIzY2QwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TLm1tCkBAIC0xMDYsMTYgKzEwNiwxNyBAQCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsRW5k
RHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZlbG9jaXR5OihDR1BvaQog
ICAgIHVuc2lnbmVkIG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdU
cmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudEhvcml6b250YWxTbmFwUG9p
bnRJbmRleCgpOwogICAgIHVuc2lnbmVkIG9yaWdpbmFsVmVydGljYWxTbmFwUG9zaXRpb24gPSBf
c2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0aWNh
bFNuYXBQb2ludEluZGV4KCk7CiAKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdmlld3BvcnRTaXpl
KHN0YXRpY19jYXN0PGZsb2F0PihDR1JlY3RHZXRXaWR0aChbc2Nyb2xsVmlldyBib3VuZHNdKSks
IHN0YXRpY19jYXN0PGZsb2F0PihDR1JlY3RHZXRIZWlnaHQoW3Njcm9sbFZpZXcgYm91bmRzXSkp
KTsKICAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0c0luZm8gPSBfc2Nyb2xsaW5nVHJlZU5vZGVE
ZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpOwogICAgIGlmICghc25h
cE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
YXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xv
c2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBob3Jp
em9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54KTsKKyAgICAgICAgYXV0byBbcG90ZW50aWFsU25hcFBv
c2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoV2ViQ29y
ZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCB2aWV3cG9ydFNpemUsIGhvcml6b250YWxU
YXJnZXQsIHZlbG9jaXR5LngpOwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+
c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoaW5kZXgp
OwogICAgICAgICBpZiAoaG9yaXpvbnRhbFRhcmdldCA+PSAwICYmIGhvcml6b250YWxUYXJnZXQg
PD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCkKICAgICAgICAgICAgIHRhcmdldENvbnRl
bnRPZmZzZXQtPnggPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CiAgICAgfQogCiAgICAgaWYgKCFz
bmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
YXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xv
c2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmVydGlj
YWxUYXJnZXQsIHZlbG9jaXR5LngpOworICAgICAgICBhdXRvIFtwb3RlbnRpYWxTbmFwUG9zaXRp
b24sIGluZGV4XSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChXZWJDb3JlOjpT
Y3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCB2aWV3cG9ydFNpemUsIHZlcnRpY2FsVGFyZ2V0LCB2
ZWxvY2l0eS54KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGlu
Z05vZGUoKS5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAgICAg
IGlmICh2ZXJ0aWNhbFRhcmdldCA+PSAwICYmIHZlcnRpY2FsVGFyZ2V0IDw9IHNjcm9sbFZpZXcu
Y29udGVudFNpemUuaGVpZ2h0KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eSA9
IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ZjhhOWUwZjZkNmFjNmM4ZThjMDA1NTFk
YmQ2M2JiYzA1OTA3YzAyLi5kNDk0YmVjZTI2NjdjYmE2Y2FiMmY3Yjk3MGU0OTEwY2JjZDEwNjk2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDMtMTUgIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIFByb3Blcmx5
IGhhbmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtY2xp
Y2stc2Nyb2xsYmFyLWd1dHRlci5odG1sOiBUaGlzIHRlc3QgdXNlZCBzbmFwIGFyZWFzIHRoYXQK
KyAgICAgICAgb3ZlcmZsb3cgdGhlIHNuYXBwb3J0LCB0aHVzIG1lYW50IHRoYXQgaXQgcmVsaWVk
IG9uIG5vbi1zcGVjIGNvbXBsaWFudCBiZWhhdmlvci4gUmV3b3JrIGl0IHNvCisgICAgICAgIHRo
YXQgdGhlIHNuYXAgYXJlYXMgZG8gbm90IG92ZXJmbG93LCBtYWludGFpbmluZyB0aGUgZXhpc3Rp
bmcgYmVoYXZpb3IuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250
YWwuaHRtbDogRGl0dG8uCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93Lmh0bWw6IERpdHRvLgorCiAyMDIx
LTAzLTE0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgUHJl
dmVudCBkeW5hbWljIGltcG9ydCBpbiBzZXJ2aWNlIHdvcmtlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKaW5kZXggMWFlMzI2YzNjYjBiMmM0Y2UzNTY4M2I3ZDhhODZlNWQzZGIyNWU1OS4u
NTQ3MzhiYmQxZDk1OTY3Yzg5MjA5NDY0MTU5M2U5YTM1NTNhY2RlYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDMtMTUgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBd
IFByb3Blcmx5IGhhbmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxNzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXNjcm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0OiBVcGRh
dGUgZXhwZWN0YXRpb25zIHRvCisgICAgICAgIHNob3cgdGhhdCB0aGlzIHRlc3QgaXMgbm93IHBh
c3NpbmcuCisKIDIwMjEtMDMtMTAgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxp
YS5jb20+CiAKICAgICAgICAgRG8gbm90IHNocmluayByYWRpbyBidXR0b25zIGJlbGxvdyBpdHMg
c2l6ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1jbGljay1zY3JvbGxiYXItZ3V0dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbAppbmRleCA3YjM1MjZj
YzRkZDA3ZDUxYzllYzkzZGM4OWQ0OTAyYmYwYmQ0NjMyLi45NGRhOGJlNTMxYmZkZWI5NDIwNWY3
ZThlYzIxMjYxZDFkZjg2YmY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIu
aHRtbApAQCAtMzQsMjEgKzM0LDMyIEBACiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlw
ZTogYm90aCBtYW5kYXRvcnk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC5ibG9jayB7
Ci0gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7Ci0gICAgICAgICAgICAgICAgd2lkdGg6
IDI1MHB4OwotICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKLSAgICAg
ICAgICAgIH0KLQogICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyIHsKICAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgICAgICAgd2lkdGg6IDIwMDBweDsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyIC5ibG9jayB7Ci0gICAg
ICAgICAgICAgICAgd2lkdGg6IDEwMDBweDsKLSAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1MHB4
OworICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyID4gZGl2IHsKKyAgICAgICAgICAgICAg
ICBmbG9hdDogbGVmdDsKKyAgICAgICAgICAgICAgICB3aWR0aDogOTkwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuaG9yaXpv
bnRhbC1kcmF3ZXIgPiBkaXYuc25hcC1wb2ludCB7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNu
YXAtYWxpZ246IHN0YXJ0OworICAgICAgICAgICAgICAgIHdpZHRoOiAxMHB4OworICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgI3ZlcnRpY2FsLWNvbnRhaW5lciA+IGRpdiB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA5OTBweDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgI3ZlcnRpY2FsLWNvbnRhaW5lciA+IGRpdi5zbmFw
LXBvaW50IHsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgICAgICAgfQorCiAgICAgICAgIDwvc3R5
bGU+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KQEAgLTg3LDEzICs5OCwxNyBAQAogICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KICAgICAgICAgPGRpdiBpZD0iaG9yaXpvbnRhbC1jb250YWluZXIiIGNsYXNzPSJjb250
YWluZXIiPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1kcmF3ZXIiPgotICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IGJhY2tn
cm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2Nr
IiBzdHlsZT0id2lkdGg6IDQ1MHB4OyBmbG9hdDogbGVmdDsgYmFja2dyb3VuZDogI0NDNUE3MSI+
PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcC1wb2ludCIgc3R5bGU9ImJh
Y2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+Cisg
ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcC1wb2ludCIgc3R5bGU9ImJhY2tncm91bmQ6
ICNDQzVBNzEiPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+CiAgICAgICAgICAg
ICA8L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxkaXYgaWQ9InZlcnRpY2FsLWNvbnRh
aW5lciIgY2xhc3M9ImNvbnRhaW5lciI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayIg
c3R5bGU9ImJhY2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFz
cz0iYmxvY2siIHN0eWxlPSJoZWlnaHQ6IDQ1MHB4OyBiYWNrZ3JvdW5kOiAjQ0M1QTcxIj48L2Rp
dj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXAtcG9pbnQiIHN0eWxlPSJiYWNrZ3JvdW5k
OiAjODA0NzVFIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJzbmFwLXBvaW50IiBzdHlsZT0iYmFja2dyb3VuZDogI0NDNUE3MSI+PC9kaXY+
CisgICAgICAgICAgICA8ZGl2PjwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPHAgaWQ9
ImNvbnNvbGUiPjwvcD4KICAgICAgICAgPHNjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVy
Zmxvd2luZy1zbmFwLWFyZWFzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFw
LWFyZWFzLWV4cGVjdGVkLnR4dAppbmRleCBhNDVkMmFkY2RkZjZjZjAzZGYzOTg2M2MzNjM2NTkz
M2I4OGUyODFlLi4yNTljZDk4MGM1NDlhMDU4YTA4ZmZmYTdmMjQzMjFmNmFjNTgzMjI3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3Mtc2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9s
bC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDEz
IEBACiAKIFBBU1MgU25hcHMgdG8gdGhlIHNuYXAgcG9zaXRpb24gaWYgdGhlIHNuYXAgYXJlYSBk
b2Vzbid0IGNvdmVyIHRoZSBzbmFwcG9ydCBvbiB4LgotRkFJTCBTbmFwcyB0byB0aGUgc25hcCBw
b3NpdGlvbiBpZiB0aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUg
cmlnaHQgYm9yZGVyLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyNzE1IGJ1dCBnb3QgMjAwCi1G
QUlMIFNuYXBzIHRvIHRoZSBzbmFwIHBvc2l0aW9uIGlmIHRoZSBzbmFwIGFyZWEgY292ZXJzIHRo
ZSBzbmFwcG9ydCBvbiB4IG9uIHRoZSBsZWZ0IGJvcmRlci4gYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgMjAwIGJ1dCBnb3QgMjcxNQorUEFTUyBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBpZiB0
aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUgcmlnaHQgYm9yZGVy
LgorUEFTUyBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBpZiB0aGUgc25hcCBhcmVhIGNvdmVy
cyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUgbGVmdCBib3JkZXIuCiBQQVNTIFNuYXBzIGlmIHRo
ZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg0MDApIGFuZCBuZXh0KDgwMCkgc25hcCBw
b3NpdGlvbnMgaXMgc21hbGxlciB0aGFuIHNuYXBwb3J0KDUwMCkgb24geC4KIFBBU1MgU25hcHMg
aWYgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDQwMCkgYW5kIG5leHQoODAwKSBz
bmFwIHBvc2l0aW9ucyBpcyBzbWFsbGVyIHRoYW4gc25hcHBvcnQoNTAwKSBvbiB5LgotRkFJTCBT
bmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3Np
dGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlIGRpc3Rh
bmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2VyIHRo
YW4gc25hcHBvcnQoNTAwKS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgOTAwIGJ1dCBnb3QgODAw
Ci1GQUlMIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBz
bmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB5IGFuZCB0
aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcHJldmlvdXMoODAwKSBhbmQgbmV4dCgxNDAwKSBpcyBs
YXJnZXIgdGhhbiBzbmFwcG9ydCg1MDApLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCA5MDAgYnV0
IGdvdCA4MDAKLUZBSUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBh
IHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9u
IHggYW5kIHRoZXJlIGlzIG5vIHN1YnNlcXVlbnQgc25hcCBwb3NpdGlvbnMuIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIDE1MDAgYnV0IGdvdCAxNDAwCi1GQUlMIFNuYXAgdG8gY3VycmVudCBzY3Jv
bGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBh
cmVhIGNvdmVycyBzbmFwcG9ydCBvbiB5IGFuZCB0aGVyZSBpcyBubyBzdWJzZXF1ZW50IHNuYXAg
cG9zaXRpb25zLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAxNTAwIGJ1dCBnb3QgMTQwMAotRkFJ
TCBEb24ndCBzbmFwIGJhY2sgZXZlbiBpZiBzY3JvbGxUbyB0cmllcyB0byBzY3JvbGwgdG8gcG9z
aXRpb25zIHdoaWNoIGFyZSBvdXRzaWRlIG9mIHRoZSBzY3JvbGwgcmFuZ2UgYW5kIGlmIGEgc25h
cCB0YXJnZXQgZWxlbWVudCBjb3ZlcnMgdGhlIHNuYXBvcnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgMzcxNSBidXQgZ290IDIyMDAKLUZBSUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlv
biBvbiB4IGFzIHRoZSBhcmVhIGlzIGNvdmVyaW5nIHggYXhpcy5Ib3dldmVyLCB3ZSBzbmFwIHRv
IHRoZSBzcGVjaWZpZWQgc25hcCBwb3NpdGlvbiBvbiB5IGFzIHRoZSBhcmVhIGlzIG5vdCBjb3Zl
cmluZyB5IGF4aXMuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDEwIGJ1dCBnb3QgMAorUEFTUyBT
bmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3Np
dGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlIGRpc3Rh
bmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2VyIHRo
YW4gc25hcHBvcnQoNTAwKS4KK1BBU1MgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3
aGljaCBpcyBhIHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNu
YXBwb3J0IG9uIHkgYW5kIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg4MDApIGFu
ZCBuZXh0KDE0MDApIGlzIGxhcmdlciB0aGFuIHNuYXBwb3J0KDUwMCkuCitQQVNTIFNuYXAgdG8g
Y3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBh
cyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB4IGFuZCB0aGVyZSBpcyBubyBzdWJz
ZXF1ZW50IHNuYXAgcG9zaXRpb25zLgorUEFTUyBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0
aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3Zl
cnMgc25hcHBvcnQgb24geSBhbmQgdGhlcmUgaXMgbm8gc3Vic2VxdWVudCBzbmFwIHBvc2l0aW9u
cy4KK1BBU1MgRG9uJ3Qgc25hcCBiYWNrIGV2ZW4gaWYgc2Nyb2xsVG8gdHJpZXMgdG8gc2Nyb2xs
IHRvIHBvc2l0aW9ucyB3aGljaCBhcmUgb3V0c2lkZSBvZiB0aGUgc2Nyb2xsIHJhbmdlIGFuZCBp
ZiBhIHNuYXAgdGFyZ2V0IGVsZW1lbnQgY292ZXJzIHRoZSBzbmFwb3J0CitQQVNTIFNuYXAgdG8g
Y3VycmVudCBzY3JvbGwgcG9zaXRpb24gb24geCBhcyB0aGUgYXJlYSBpcyBjb3ZlcmluZyB4IGF4
aXMuSG93ZXZlciwgd2Ugc25hcCB0byB0aGUgc3BlY2lmaWVkIHNuYXAgcG9zaXRpb24gb24geSBh
cyB0aGUgYXJlYSBpcyBub3QgY292ZXJpbmcgeSBheGlzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5k
YXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0
b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbAppbmRleCA2NDI3YTEx
NGU0OGIyNmJlNjViNTVlN2I4NjhkZjg2NzU2OTFhOWY4Li45NGRhZDIxNjhjNjBkZTkxNTQ3NmIx
ZDAxMGE2NDNkMDRmZTkyMGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZl
cnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUt
dmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwKQEAgLTQsNiArNCw3IEBACiAgICAgICAgIDxz
dHlsZT4KICAgICAgICAgICAgIGh0bWwgewogICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLXR5
cGU6IHkgbWFuZGF0b3J5OworICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewogICAgICAgICAgICAgICAgIHdpZHRo
OiAxMDB2dzsKQEAgLTEyLDcgKzEzLDcgQEAKICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgLmNvbG9yQm94IHsKLSAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDEwMHZoOworICAgICAgICAgICAgICAgIGhlaWdodDogOTB2aDsKICAgICAgICAgICAg
ICAgICB3aWR0aDogMTAwdnc7CiAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAg
ICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGlt
aXR5LW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRtbAppbmRleCA1YjA1
MmZkYmY5NGM4NGEzZDhlMGQxYTI4ZmNiNTIyMDJhZWY5ZjJmLi4xNTMxZTFlM2FiMjI1ZTUwMmIz
YjcyMGQxZDA2MWI4YmUzMGZmNjJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRtbApAQCAtMTMsMjEgKzEzLDE2IEBA
CiAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICAgICAgIHRv
cDogMDsKICAgICAgICAgICAgICAgICBsZWZ0OiAwOwotICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IG5vbmU7CiAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgICAg
ICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6IHkgcHJveGltaXR5OwotICAgICAgICAgICAgICAgIC13
ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogcHJveGltaXR5OwotICAgICAgICAgICAgICAgIHNjcm9s
bC1zbmFwLXR5cGU6IHByb3hpbWl0eTsKICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjU7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC5hcmVhIHsKLSAgICAgICAgICAgICAgICBoZWln
aHQ6IDYwMHB4OwotICAgICAgICAgICAgICAgIHdpZHRoOiA2MDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAg
ICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0
YXJ0OwotICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtY29vcmRpbmF0ZTogMCAw
OwotICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWNvb3JkaW5hdGU6IDAgMDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423486</attachid>
            <date>2021-03-17 07:48:46 -0700</date>
            <delta_ts>2021-03-23 03:11:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223021-20210317154844.patch</filename>
            <type>text/plain</type>
            <size>81777</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGI2MzViMTMzMjMwNzZh
NzY2NWU3NTkwYjViMTg3OGJkODQzNWY4ZS4uNzhkNDhlMjkwNWRiZGZiYzY5ZmQ3YWMwMzE2NWI3
OTQyZWM2NzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIxLTAzLTE3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBDU1Mgc2Nyb2xs
IHNuYXAgc2hvdWxkIGFsbG93IHNjcm9sbGluZyB0byB0aGUgbWlkZGxlIG9mIHNuYXAgYXJlYXMg
dGhhdCBvdmVyZmxvdyB0aGUgc25hcHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMzAyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFByb3Blcmx5IGhhbmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFz
LiBUaGlzIHJlcXVpcmVzIHJld3JpdGluZyB0aGUgc25hcHBpbmcgYWxnb3JpdGhtLgorICAgICAg
ICBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gbm93IHN0b3JlcyBzbmFwIGFyZWEgcmVjdGFuZ2xlcywg
d2hpY2ggYXJlIHVzZWQgdG8gaW1wbGVtZW50CisgICAgICAgIHNwZWMtY29tcGxpYW50IHNuYXAg
cG9pbnQgc2VsZWN0aW9uIGJlaGF2aW9yIGluIHNpdHVhdGlvbnMgd2hlcmUgc25hcCBhcmVhcyBv
dmVyZmxvdyB0aGUKKyAgICAgICAgc25hcHBvcnQuIENvbmNyZXRlbHksIGluIHRoaXMgc2l0dWF0
aW9uLCBhbnkgc2Nyb2xsIG9mZnNldCB3aXRoaW4gdGhlIHNuYXAgYXJlYSB3aGVyZSB0aGUKKyAg
ICAgICAgYXJlYSBmaWxscyB0aGUgZW50aXJlIHZpZXdwb3J0IChpbiB0aGUgYXhpcyBvZiBzY3Jv
bGwpIGlzIGEgdmFsaWQgc25hcCBwb2ludC4KKworICAgICAgICBJbiBhZGRpdGlvbiwgc25hcCBv
ZmZzZXQgcmFuZ2VzIGFyZSBubyBsb25nZXIga2VwdCB0byByZXByZXNlbnQgcHJveGltaXR5LCBz
aW5jZSBwcm94aW1pdHkKKyAgICAgICAgY2FuIGJlIGhhbmRsZWQgZHVyaW5nIGEgbW9yZSB0aG9y
b3VnaCBzbmFwIHBvaW50IHNlbGVjdGlvbiBwcm9jZXNzLgorCisgICAgICAgIFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyBub3cgY29udGFpbnMgYSByZWN0YW5nbGUgdHlwZSwgd2hpY2ggaXMgZWl0aGVy
IGEgTGF5b3V0UmVjdCBvciBhCisgICAgICAgIEZsb2F0UmVjdCwgc28gdGhlIHRlbXBsYXRlIG5l
ZWRzIHRvIGNhcnJ5IHRoaXMgdHlwZSBhcyB3ZWxsLiBJbiBvcmRlciB0byBtYWtlIGl0IHNpbXBs
ZXIgdG8KKyAgICAgICAgcmVmZXIgdG8gYSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gdGhpcyBjaGFu
Z2UgY3JlYXRlcyB0d28gdHlwZSBhbGlhc2VzLAorICAgICAgICBGbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyBhbmQgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvLCB3aGljaCBhcmUgdXNlZCB0
aHJvdWdob3V0CisgICAgICAgIHRoZSBjb2RlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhp
cyBjaGFuZ2UgZml4ZXMgdGhlIFdQVCB0ZXN0OgorICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy5o
dG1sCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcDogVXNlIHRoZSBuZXcgdHlwZSBhbGlhc2VzLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRmlyc3RT
bmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbik6IFVwZGF0ZWQgdG8gcmV0
dXJuIGFuIG9mZnNldC9pbmRleAorICAgICAgICBwYWlyIHNvIHRoZSByZXR1cm4gdHlwZSBvZiB0
aGlzIGZ1bmN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGF0IG9mIGNhbGN1bGF0ZUNsb3Nlc3RT
bmFwT2Zmc2V0LgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxh
YmxlQXJlYSk6IE5vIGxvbmdlciBzdG9yZSBvZmZzZXQgcmFuZ2VzIGZvciBwcm94aW1pdHkgc25h
cHBpbmcKKyAgICAgICAgYW5kIGFsc28gc3RvcmUgc25hcCBhcmVhcyBjb252ZXJ0ZWQgdG8gIm9m
ZnNldCIgY29vcmRpbmF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0T2Zmc2V0SW5mbyk6
IE5vIGxvbmdlciBuZWVkIHRvIGNvbnZlcnQgb2Zmc2V0IHJhbmdlcywgYnV0IHRoaXMgZG9lcyBu
b3cKKyAgICAgICAgcmVxdWlyZSBjb252ZXJ0aW5nIG9mZnNldCBhcmVhcy4KKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMgY29uc3QpOiBV
c2UgdGhlIG5ldyB0eXBlIGFsaWFzZXMuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6bWF4Rm9yQXhpcyk6IEFkZGVkIHRoaXMgaGVscGVyIHdoaWNoIGdldHMgdGhlIG1heGlt
dW0gaW4gYSBwYXJ0aWN1bGFyIGF4aXMgZ2l2ZW4gdGhlIGF4aXMuCisgICAgICAgIChXZWJDb3Jl
OjptaW5Gb3JBeGlzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc05lYXJFbm91Z2hUb09m
ZnNldEZvclByb3hpbWl0eSk6IEFkZGVkIHRoaXMgaGVscGVyIHdoaWNoIHJlcGxhY2VzIGNvbXB1
dGVBeGlzUHJveGltaXR5U25hcE9mZnNldFJhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1
bGF0ZUNsb3Nlc3RTbmFwT2Zmc2V0KTogVGhpcyByZXBsYWNlcyBjbG9zZXN0U25hcE9mZnNldFdp
dGhPZmZzZXRzQW5kUmFuZ2VzLCBidXQgYWxzbworICAgICAgICBhbmQgaW5kaWNlc09mTmVhcmVz
dFNuYXBPZmZzZXRzLiBOb3cgd3JpdHRlbiB1c2luZyBzbmFwIGFyZWFzIGZyb20gdGhlIGRhdGEg
c3RydWN0dXJlIGFzIHdlbGwgYXMKKyAgICAgICAgd2l0aCBwcm9wZXIgaGFuZGxpbmcgZm9yIG92
ZXJmbG93aW5nIHNuYXAgYXJlYXMuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0IGNvbnN0KTogVXBkYXRlIGZvciBuZXcgbWV0
aG9kIG5hbWVzIGFuZCB0eXBlIGFsaWFzZXMuCisgICAgICAgIChXZWJDb3JlOjpGbG9hdFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6aXNFcXVhbCBjb25zdCk6IE5vIGxvbmdlciBs
b29rIGF0IHNuYXAgb2Zmc2V0IHJhbmdlcywgYnV0IGRvIHRha2UgaW50bworICAgICAgICBjb25z
aWRlcmF0aW9uIHRoZSBzbmFwIGFyZWFzLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcE9m
ZnNldHNJbmZvOjpvZmZzZXRzRm9yQXhpcyBjb25zdCk6IFJlbmFtZWQgdGhlIHRlbXBsYXRlIGFy
Z3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6IFJlbW92ZWQuCisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcDogVXNlIHRo
ZSBuZXcgdHlwZSBhbGlhcy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaDogRGl0dG8uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVw
ZGF0ZUZyb21TdGF0ZU5vZGUpOiBjb252ZXJ0VW5pdHMgbm93IHRha2VzIHR3byB0ZW1wbGF0ZSBh
cmd1bWVudHMuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudCk6
IFBhc3MgdGhlIHZpZXdwb3J0IHNpemUuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKTogUGFzcyBpbiB0aGUgdmlld3BvcnQgc2l6ZSB3aGVuIHNlbGVjdGluZyBz
bmFwIHBvaW50cy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNj
cm9sbERlc3RpbmF0aW9uKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJv
bGxlci5oOiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bFNuYXBBbmltYXRvclN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmlt
YXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKTogUGFzcyB2aWV3cG9ydCBzaXplIHRv
IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0IGNvbnN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KTogTm8gbG9uZ2VyIHByaW50IHNuYXAgb2Zm
c2V0IHJhbmdlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5o
OiBSZW1vdmVkIG1ldGhvZCBkZWFsaW5nIHdpdGggcmFuZ2VzLiBOb3cgcGFzcyB2aWV3cG9ydCBz
aXplIHRvIHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0LgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcDogVXNlIHRoZSBuZXcgdHlwZSBhbGlhc2VzLgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5tbTogRGl0dG8uCisKIDIwMjEtMDMtMTcgIEtpbW1vIEtpbm51bmVu
ICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTaHV0ZG93biBBTkdMRSBvbiBHUFUg
cHJvY2VzcyB3aGVuIGxhc3QgV2ViR0wgY29udGV4dCBpcyBkZXN0cm95ZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ZTgyMWViYjA0MGI5MzA2NWI1NmY2MGI0YTU3OGJlMjg4ZDJiZTc0Zi4uMmRiOGMwZDc4YzIxMjVm
ZDYyYzAxZTBiZDQ3NWZlZWE0NDQxNjZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAy
MS0wMy0xNyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQ1NTIHNjcm9sbCBzbmFwIHNob3VsZCBhbGxvdyBzY3JvbGxpbmcgdG8gdGhlIG1pZGRsZSBv
ZiBzbmFwIGFyZWFzIHRoYXQgb3ZlcmZsb3cgdGhlIHNuYXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMjEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gbm8g
bG9uZ2VyIGhvbGRzIHNuYXAgb2Zmc2V0IHJhbmdlcywgYnV0IGlzIGFsc28gdGVtcGxhdGVkIG9m
ZgorICAgICAgICBvZiBhIHJlY3QgdHlwZS4gSW4gV2ViS2l0IHdlIHN3aXRjaCB0byB1c2luZyB0
aGUgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gYWxpYXMuCisgICAgICAgIEFkZGl0aW9uYWxs
eSwgd2UgbmVlZCB0byBwYXNzIGluIHRoZSB2aWV3cG9ydCBzaXplIHdoZW4gcmVxdWVzdGluZyBh
IHNuYXAgb2Zmc2V0CisgICAgICAgIHBvc2l0aW9uLgorCisgICAgICAgICogU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcDoKKyAg
ICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZGVjb2Rl
KTogU3dpdGNoIHRvIHVzaW5nIHRoZSBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBhbGlhcy4K
KyAgICAgICAgKEFyZ3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+OjplbmNv
ZGUpOiBEaXR0by4gQWxzbyB3ZSBubyBsb25nZXIgbmVlZCB0byBlbmNvZGUgdGhlIHJhbmdlcy4K
KyAgICAgICAgKEFyZ3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+OjpkZWNv
ZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDog
RGl0dG8uCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOiBEaXR0by4K
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5OjpjbG9zZXN0U25hcE9mZnNldEZvck1haW5GcmFtZVNjcm9sbGluZyBj
b25zdCk6IFBhc3MgaW4gdGhlIHZpZXdwb3J0IHNpemUgbm93LgorICAgICAgICAqIFVJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MubW06CisgICAgICAgICgtW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBzY3Jv
bGxWaWV3V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zmc2V0Ol0p
OiBEaXR0by4KKwogMjAyMS0wMy0xNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgQWxpZ24gZGV2aWNlIG9yaWVudGF0aW9uIGRlbGVnYXRlIHRvIGdldFVzZXJN
ZWRpYS9nZW9sb2NhdGlvbiBkZWxlZ2F0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggNTg0
ODBhMmQ3YThmOGFjYmMwZGM2ZTNkMTU4NDc0MDA0NzliN2M5Ny4uNDgwZmU5NWQ4MmIyOTE0OTc5
ZmEwNTliNjZiOTNlNzFhOGY3ODExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTkyLDE1
ICs5MiwxNSBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhhbmRsZVdoZWVsRXZl
bnRQaGFzZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBQbAogI2VuZGlmCiAKICNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQotc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xsaW5nTm9k
ZVNuYXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIGNv
bnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Piogb2Zmc2V0SW5mbywgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0U3RhdGVTY3JvbGxpbmdO
b2RlU25hcE9mZnNldHNBc0Zsb2F0KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwg
Y29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBvZmZzZXRJbmZvLCBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvcikKIHsKICAgICBpZiAoIW9mZnNldEluZm8pIHsKLSAgICAgICAgbm9kZS5z
ZXRTbmFwT2Zmc2V0c0luZm8oU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PigpKTsKKyAgICAg
ICAgbm9kZS5zZXRTbmFwT2Zmc2V0c0luZm8oRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8oKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBGSVhNRTogSW5jb3Jwb3JhdGUgY3Vy
cmVudCBwYWdlIHNjYWxlIGZhY3RvciBpbiBzbmFwcGluZyB0byBkZXZpY2UgcGl4ZWwuIFBlcmhh
cHMgd2Ugc2hvdWxkIGp1c3QgY29udmVydCB0byBmbG9hdCBoZXJlIGFuZCBsZXQgVUkgcHJvY2Vz
cyBkbyB0aGUgcGl4ZWwgc25hcHBpbmc/Ci0gICAgbm9kZS5zZXRTbmFwT2Zmc2V0c0luZm8ob2Zm
c2V0SW5mby0+Y29udmVydFVuaXRzPGZsb2F0PihkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIG5v
ZGUuc2V0U25hcE9mZnNldHNJbmZvKG9mZnNldEluZm8tPmNvbnZlcnRVbml0czxmbG9hdCwgRmxv
YXRSZWN0PihkZXZpY2VTY2FsZUZhY3RvcikpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCmlu
ZGV4IGFjZmVkMGYzODM3OGViNGUyZWMyYTUxYjQxMDI4ZjUyMDNkNTdjYjQuLjY0MDI0ZTliZjFh
MWJkOWRlMTVhYWE0NGFjNjIzMDk3YmIwZWM2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcApAQCAtNDEsNjgg
KzQxLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIExh
eW91dFR5cGU+Ci1zdGF0aWMgdm9pZCBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldFJhbmdlcyhM
YXlvdXRUeXBlIG9mZnNldCwgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91dFR5
cGU+PiYgc25hcE9mZnNldFJhbmdlcywgdW5zaWduZWQmIGxvd2VySW5kZXgsIHVuc2lnbmVkJiB1
cHBlckluZGV4KQordGVtcGxhdGUgPHR5cGVuYW1lIFVuaXRUeXBlPgorc3RhdGljIE9wdGlvbmFs
PHN0ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+PiBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJl
dHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihjb25zdCBWZWN0b3I8U25hcE9mZnNldDxVbml0VHlw
ZT4+JiBzbmFwT2Zmc2V0cywgVW5pdFR5cGUgc2Nyb2xsT3JpZ2luT2Zmc2V0LCBVbml0VHlwZSBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCkKIHsKLSAgICBpZiAoc25hcE9mZnNldFJhbmdlcy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgbG93ZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXg7Ci0g
ICAgICAgIHVwcGVySW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaW50IGxvd2VySW5kZXhBc0ludCA9IC0xOwotICAgIGludCB1cHBl
ckluZGV4QXNJbnQgPSBzbmFwT2Zmc2V0UmFuZ2VzLnNpemUoKTsKLSAgICBkbyB7Ci0gICAgICAg
IGludCBtaWRkbGVJbmRleCA9IChsb3dlckluZGV4QXNJbnQgKyB1cHBlckluZGV4QXNJbnQpIC8g
MjsKLSAgICAgICAgYXV0byYgcmFuZ2UgPSBzbmFwT2Zmc2V0UmFuZ2VzW21pZGRsZUluZGV4XTsK
LSAgICAgICAgaWYgKHJhbmdlLnN0YXJ0IDwgb2Zmc2V0ICYmIG9mZnNldCA8IHJhbmdlLmVuZCkg
ewotICAgICAgICAgICAgbG93ZXJJbmRleEFzSW50ID0gbWlkZGxlSW5kZXg7Ci0gICAgICAgICAg
ICB1cHBlckluZGV4QXNJbnQgPSBtaWRkbGVJbmRleDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKG9mZnNldCA+IHJhbmdlLmVuZCkKLSAgICAgICAgICAgIGxv
d2VySW5kZXhBc0ludCA9IG1pZGRsZUluZGV4OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB1
cHBlckluZGV4QXNJbnQgPSBtaWRkbGVJbmRleDsKLSAgICB9IHdoaWxlIChsb3dlckluZGV4QXNJ
bnQgPCB1cHBlckluZGV4QXNJbnQgLSAxKTsKLQotICAgIGlmIChvZmZzZXQgPD0gc25hcE9mZnNl
dFJhbmdlcy5maXJzdCgpLnN0YXJ0KQotICAgICAgICBsb3dlckluZGV4ID0gaW52YWxpZFNuYXBP
ZmZzZXRJbmRleDsKLSAgICBlbHNlCi0gICAgICAgIGxvd2VySW5kZXggPSBsb3dlckluZGV4QXNJ
bnQ7Ci0KLSAgICBpZiAob2Zmc2V0ID49IHNuYXBPZmZzZXRSYW5nZXMubGFzdCgpLmVuZCkKLSAg
ICAgICAgdXBwZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0SW5kZXg7Ci0gICAgZWxzZQotICAg
ICAgICB1cHBlckluZGV4ID0gdXBwZXJJbmRleEFzSW50OwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgTGF5b3V0VHlwZT4KLXN0YXRpYyB2b2lkIGluZGljZXNPZk5lYXJlc3RTbmFwT2Zmc2V0cyhM
YXlvdXRUeXBlIG9mZnNldCwgY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VHlwZT4+JiBz
bmFwT2Zmc2V0cywgdW5zaWduZWQmIGxvd2VySW5kZXgsIHVuc2lnbmVkJiB1cHBlckluZGV4KQot
ewotICAgIGxvd2VySW5kZXggPSAwOwotICAgIHVwcGVySW5kZXggPSBzbmFwT2Zmc2V0cy5zaXpl
KCkgLSAxOwotICAgIHdoaWxlIChsb3dlckluZGV4IDwgdXBwZXJJbmRleCAtIDEpIHsKLSAgICAg
ICAgaW50IG1pZGRsZUluZGV4ID0gKGxvd2VySW5kZXggKyB1cHBlckluZGV4KSAvIDI7Ci0gICAg
ICAgIGF1dG8gbWlkZGxlT2Zmc2V0ID0gc25hcE9mZnNldHNbbWlkZGxlSW5kZXhdLm9mZnNldDsK
LSAgICAgICAgaWYgKG9mZnNldCA9PSBtaWRkbGVPZmZzZXQpIHsKLSAgICAgICAgICAgIHVwcGVy
SW5kZXggPSBtaWRkbGVJbmRleDsKLSAgICAgICAgICAgIGxvd2VySW5kZXggPSBtaWRkbGVJbmRl
eDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG9mZnNldCA+
IG1pZGRsZU9mZnNldCkKLSAgICAgICAgICAgIGxvd2VySW5kZXggPSBtaWRkbGVJbmRleDsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgdXBwZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgIH0K
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIExheW91dFR5cGU+Ci1zdGF0aWMgT3B0aW9uYWw8dW5z
aWduZWQ+IGZpbmRGaXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9u
KGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFR5cGU+PiYgc25hcE9mZnNldHMsIExheW91
dFR5cGUgc2Nyb2xsT3JpZ2luT2Zmc2V0LCBMYXlvdXRUeXBlIHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0KQotewotICAgIExheW91dFR5cGUgZGlmZmVyZW5jZSA9IHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0IC0gc2Nyb2xsT3JpZ2luT2Zmc2V0OworICAgIFVuaXRUeXBlIGRpZmZlcmVuY2UgPSBzY3Jv
bGxEZXN0aW5hdGlvbk9mZnNldCAtIHNjcm9sbE9yaWdpbk9mZnNldDsKICAgICBpZiAoIWRpZmZl
cmVuY2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKQEAgLTExMyw3ICs1NSw3IEBA
IHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVu
T3JpZ2luQW5kRGVzdGluYXRpb24oY29uCiAgICAgICAgIGl0ZXJhdGlvbiA9IC0xOwogICAgIH0K
IAotICAgIGF1dG8gaXNQYXN0ID0gW2RpZmZlcmVuY2VdKExheW91dFR5cGUgbWFyaywgTGF5b3V0
VHlwZSBjYW5kaWRhdGUpIHsKKyAgICBhdXRvIGlzUGFzdCA9IFtkaWZmZXJlbmNlXShVbml0VHlw
ZSBtYXJrLCBVbml0VHlwZSBjYW5kaWRhdGUpIHsKICAgICAgICAgcmV0dXJuIChkaWZmZXJlbmNl
ID4gMCAmJiBjYW5kaWRhdGUgPiBtYXJrKSB8fCAoZGlmZmVyZW5jZSA8IDAgJiYgY2FuZGlkYXRl
IDwgbWFyayk7CiAgICAgfTsKIApAQCAtMTI0LDY1ICs2NiwxMiBAQCBzdGF0aWMgT3B0aW9uYWw8
dW5zaWduZWQ+IGZpbmRGaXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0
aW9uKGNvbgogICAgICAgICBpZiAoc25hcE9mZnNldHNbaV0uc3RvcCAhPSBTY3JvbGxTbmFwU3Rv
cDo6QWx3YXlzKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChpc1Bhc3Qoc2Ny
b2xsT3JpZ2luT2Zmc2V0LCBvZmZzZXQpKQotICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIob2Zmc2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aSkpOwogICAgIH0KIAogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBMYXlvdXRUeXBlPgotc3RhdGljIHN0ZDo6cGFpcjxMYXlvdXRUeXBlLCB1bnNpZ25l
ZD4gY2xvc2VzdFNuYXBPZmZzZXRXaXRoT2Zmc2V0c0FuZFJhbmdlcyhjb25zdCBWZWN0b3I8U25h
cE9mZnNldDxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRzLCBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zm
c2V0UmFuZ2U8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0UmFuZ2VzLCBMYXlvdXRUeXBlIHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VHlwZT4g
b3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nKQotewotICAgIGlmIChzbmFwT2Zm
c2V0cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldCwgaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7Ci0KLSAgICBpZiAob3JpZ2lu
YWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nLmhhc1ZhbHVlKCkpIHsKLSAgICAgICAgYXV0
byBmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXggPSBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJldHdl
ZW5PcmlnaW5BbmREZXN0aW5hdGlvbihzbmFwT2Zmc2V0cywgKm9yaWdpbmFsT2Zmc2V0Rm9yRGly
ZWN0aW9uYWxTbmFwcGluZywgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpOwotICAgICAgICBpZiAo
Zmlyc3RTbmFwU3RvcE9mZnNldEluZGV4Lmhhc1ZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoc25hcE9mZnNldHNbKmZpcnN0U25hcFN0b3BPZmZzZXRJbmRleF0ub2Zm
c2V0LCAqZmlyc3RTbmFwU3RvcE9mZnNldEluZGV4KTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBs
b3dlclNuYXBPZmZzZXRSYW5nZUluZGV4OwotICAgIHVuc2lnbmVkIHVwcGVyU25hcE9mZnNldFJh
bmdlSW5kZXg7Ci0gICAgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRSYW5nZXM8TGF5b3V0VHlw
ZT4oc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHNuYXBPZmZzZXRSYW5nZXMsIGxvd2VyU25hcE9m
ZnNldFJhbmdlSW5kZXgsIHVwcGVyU25hcE9mZnNldFJhbmdlSW5kZXgpOwotICAgIGlmIChsb3dl
clNuYXBPZmZzZXRSYW5nZUluZGV4ID09IHVwcGVyU25hcE9mZnNldFJhbmdlSW5kZXggJiYgdXBw
ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCAhPSBpbnZhbGlkU25hcE9mZnNldEluZGV4KQotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGludmFsaWRT
bmFwT2Zmc2V0SW5kZXgpOwotCi0gICAgaWYgKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0IDw9IHNu
YXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0KQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
c25hcE9mZnNldHMuZmlyc3QoKS5vZmZzZXQsIDB1KTsKLQotICAgIGlmIChzY3JvbGxEZXN0aW5h
dGlvbk9mZnNldCA+PSBzbmFwT2Zmc2V0cy5sYXN0KCkub2Zmc2V0KQotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCwgc25hcE9mZnNldHMuc2l6
ZSgpIC0gMSk7Ci0KLSAgICB1bnNpZ25lZCBsb3dlckluZGV4OwotICAgIHVuc2lnbmVkIHVwcGVy
SW5kZXg7Ci0gICAgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRzPExheW91dFR5cGU+KHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0LCBzbmFwT2Zmc2V0cywgbG93ZXJJbmRleCwgdXBwZXJJbmRleCk7
Ci0gICAgTGF5b3V0VHlwZSBsb3dlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzW2xvd2VySW5k
ZXhdLm9mZnNldDsKLSAgICBMYXlvdXRUeXBlIHVwcGVyU25hcFBvc2l0aW9uID0gc25hcE9mZnNl
dHNbdXBwZXJJbmRleF0ub2Zmc2V0OwotICAgIGlmICghc3RkOjphYnModmVsb2NpdHkpKSB7Ci0g
ICAgICAgIGJvb2wgaXNDbG9zZXJUb0xvd2VyU25hcFBvc2l0aW9uID0gc2Nyb2xsRGVzdGluYXRp
b25PZmZzZXQgLSBsb3dlclNuYXBQb3NpdGlvbiA8PSB1cHBlclNuYXBQb3NpdGlvbiAtIHNjcm9s
bERlc3RpbmF0aW9uT2Zmc2V0OwotICAgICAgICByZXR1cm4gaXNDbG9zZXJUb0xvd2VyU25hcFBv
c2l0aW9uID8gc3RkOjptYWtlX3BhaXIobG93ZXJTbmFwUG9zaXRpb24sIGxvd2VySW5kZXgpIDog
c3RkOjptYWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24sIHVwcGVySW5kZXgpOwotICAgIH0KLQot
ICAgIC8vIE5vbi16ZXJvIHZlbG9jaXR5IGluZGljYXRlcyBhIGZsaWNrIGdlc3R1cmUuIEV2ZW4g
aWYgYW5vdGhlciBzbmFwIHBvaW50IGlzIGNsb3Nlciwgd2Ugc2hvdWxkIGNob29zZSB0aGUgb25l
IGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGZsaWNrIGdlc3R1cmUKLSAgICAvLyBhcyBsb25nIGFz
IGEgc2Nyb2xsIHNuYXAgb2Zmc2V0IHJhbmdlIGRvZXMgbm90IGxpZSBiZXR3ZWVuIHRoZSBzY3Jv
bGwgZGVzdGluYXRpb24gYW5kIHRoZSB0YXJnZXRlZCBzbmFwIG9mZnNldC4gSWYgd2UgYXJlIGRv
aW5nIGRpcmVjdGlvbmFsCi0gICAgLy8gc25hcHBpbmcsIHdlIHNob3VsZCBuZXZlciBzbmFwIHRv
IGEgcG9pbnQgdGhhdCB3YXMgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIG9yaWdpbmFsIHBvc2l0
aW9uIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gb2YgdGhpcyBzY3JvbGwuCi0gICAgLy8gVGhp
cyBhbGxvd3MgZGlyZWN0aW9uYWwgc2Nyb2xsaW5nIHRvIGVzY2FwZSBzbmFwIHBvaW50cy4KLSAg
ICBpZiAodmVsb2NpdHkgPCAwKSB7Ci0gICAgICAgIGlmIChsb3dlclNuYXBPZmZzZXRSYW5nZUlu
ZGV4ID09IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggfHwgbG93ZXJTbmFwUG9zaXRpb24gPj0gc25h
cE9mZnNldFJhbmdlc1tsb3dlclNuYXBPZmZzZXRSYW5nZUluZGV4XS5lbmQpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIobG93ZXJTbmFwUG9zaXRpb24sIGxvd2VySW5kZXgpOwot
ICAgICAgICBpZiAoIW9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZy5oYXNWYWx1
ZSgpIHx8ICpvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcgPiB1cHBlclNuYXBQ
b3NpdGlvbikKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih1cHBlclNuYXBQb3Np
dGlvbiwgdXBwZXJJbmRleCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHVwcGVyU25hcE9m
ZnNldFJhbmdlSW5kZXggPT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCB8fCBzbmFwT2Zmc2V0UmFu
Z2VzW3VwcGVyU25hcE9mZnNldFJhbmdlSW5kZXhdLnN0YXJ0ID49IHVwcGVyU25hcFBvc2l0aW9u
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1
cHBlckluZGV4KTsKLSAgICAgICAgaWYgKCFvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25h
cHBpbmcuaGFzVmFsdWUoKSB8fCAqb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5n
IDwgbG93ZXJTbmFwUG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
bG93ZXJTbmFwUG9zaXRpb24sIGxvd2VySW5kZXgpOwotICAgIH0KLQotICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcihzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgaW52YWxpZFNuYXBPZmZzZXRJbmRl
eCk7Ci19Ci0KIGVudW0gY2xhc3MgSW5zZXRPck91dHNldCB7CiAgICAgSW5zZXQsCiAgICAgT3V0
c2V0CkBAIC0yMTksMzAgKzEwOCw2IEBAIHN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVTY3JvbGxT
bmFwQWxpZ25PZmZzZXQoTGF5b3V0VW5pdCBtaW5Mb2NhdGlvbiwgTGF5b3V0VW5pCiAgICAgfQog
fQogCi1zdGF0aWMgdm9pZCBjb21wdXRlQXhpc1Byb3hpbWl0eVNuYXBPZmZzZXRSYW5nZXMoY29u
c3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0cywgVmVjdG9yPFNj
cm9sbE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgb2Zmc2V0UmFuZ2VzLCBMYXlvdXRVbml0IHNj
cm9sbFBvcnRBeGlzTGVuZ3RoKQotewotICAgIC8vIFRoaXMgaXMgYW4gYXJiaXRyYXJ5IGNob2lj
ZSBmb3Igd2hhdCBpdCBtZWFucyB0byBiZSAiaW4gcHJveGltaXR5IiBvZiBhIHNuYXAgb2Zmc2V0
LiBXZSBzaG91bGQgcGxheSBhcm91bmQgd2l0aAotICAgIC8vIHRoaXMgYW5kIHNlZSB3aGF0IGZl
ZWxzIGJlc3QuCi0gICAgc3RhdGljIGNvbnN0IGZsb2F0IHJhdGlvT2ZTY3JvbGxQb3J0QXhpc0xl
bmd0aFRvQmVDb25zaWRlcmVkRm9yUHJveGltaXR5ID0gMC4zOwotICAgIGlmIChzbmFwT2Zmc2V0
cy5zaXplKCkgPCAyKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUaGUgZXh0cmEgcnVsZSBh
Y2NvdW50aW5nIGZvciBzY3JvbGwgb2Zmc2V0IHJhbmdlcyBpbiBiZXR3ZWVuIHRoZSBzY3JvbGwg
ZGVzdGluYXRpb24gYW5kIGEgcG90ZW50aWFsIHNuYXAgb2Zmc2V0Ci0gICAgLy8gaGFuZGxlcyB0
aGUgY29ybmVyIGNhc2Ugd2hlcmUgdGhlIHVzZXIgc2Nyb2xscyB3aXRoIG1vbWVudHVtIHZlcnkg
bGlnaHRseSBhd2F5IGZyb20gYSBzbmFwIG9mZnNldCwgc3VjaCB0aGF0IHRoZQotICAgIC8vIHBy
ZWRpY3RlZCBzY3JvbGwgZGVzdGluYXRpb24gaXMgc3RpbGwgd2l0aGluIHByb3hpbWl0eSBvZiB0
aGUgc25hcCBvZmZzZXQuIEluIHRoaXMgY2FzZSwgdGhlIHJlZ3VsYXIgKG1hbmRhdG9yeQotICAg
IC8vIHNjcm9sbCBzbmFwcGluZykgYmVoYXZpb3Igd291bGQgYmUgdG8gc25hcCB0byB0aGUgbmV4
dCBvZmZzZXQgaW4gdGhlIGRpcmVjdGlvbiBvZiBtb21lbnR1bSBzY3JvbGxpbmcsIGJ1dAotICAg
IC8vIGluc3RlYWQsIGl0IGlzIG1vcmUgaW50dWl0aXZlIHRvIGVpdGhlciByZXR1cm4gdG8gdGhl
IG9yaWdpbmFsIHNuYXAgcG9zaXRpb24gKHdoaWNoIHdlIGFyYml0cmFyaWx5IGNob29zZSBoZXJl
KQotICAgIC8vIG9yIHNjcm9sbCBqdXN0IG91dHNpZGUgb2YgdGhlIHNuYXAgb2Zmc2V0IHJhbmdl
LiBUaGlzIGlzIGFub3RoZXIgbWlub3IgYmVoYXZpb3IgdHdlYWsgdGhhdCB3ZSBzaG91bGQgcGxh
eSBhcm91bmQKLSAgICAvLyB3aXRoIHRvIHNlZSB3aGF0IGZlZWxzIGJlc3QuCi0gICAgTGF5b3V0
VW5pdCBwcm94aW1pdHlEaXN0YW5jZSB7IHJhdGlvT2ZTY3JvbGxQb3J0QXhpc0xlbmd0aFRvQmVD
b25zaWRlcmVkRm9yUHJveGltaXR5ICogc2Nyb2xsUG9ydEF4aXNMZW5ndGggfTsKLSAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgc25hcE9mZnNldHMuc2l6ZSgpOyArK2luZGV4KSB7
Ci0gICAgICAgIGF1dG8gc3RhcnRPZmZzZXQgPSBzbmFwT2Zmc2V0c1tpbmRleCAtIDFdLm9mZnNl
dCArIHByb3hpbWl0eURpc3RhbmNlOwotICAgICAgICBhdXRvIGVuZE9mZnNldCA9IHNuYXBPZmZz
ZXRzW2luZGV4XS5vZmZzZXQgLSBwcm94aW1pdHlEaXN0YW5jZTsKLSAgICAgICAgaWYgKHN0YXJ0
T2Zmc2V0IDwgZW5kT2Zmc2V0KQotICAgICAgICAgICAgb2Zmc2V0UmFuZ2VzLmFwcGVuZCh7IHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgfSk7Ci0gICAgfQotfQotCiB2b2lkIHVwZGF0ZVNuYXBPZmZz
ZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBjb25z
dCBSZW5kZXJCb3gmIHNjcm9sbGluZ0VsZW1lbnRCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBzY3Jv
bGxpbmdFbGVtZW50U3R5bGUsIExheW91dFJlY3Qgdmlld3BvcnRSZWN0SW5Cb3JkZXJCb3hDb29y
ZGluYXRlcykKIHsKICAgICBhdXRvIHNjcm9sbFNuYXBUeXBlID0gc2Nyb2xsaW5nRWxlbWVudFN0
eWxlLnNjcm9sbFNuYXBUeXBlKCk7CkBAIC0yNjIsNiArMTI3LDcgQEAgdm9pZCB1cGRhdGVTbmFw
T2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwg
Y29uc3QgUmUKIAogICAgIEhhc2hNYXA8ZmxvYXQsIFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+IHZl
cnRpY2FsU25hcE9mZnNldHNNYXA7CiAgICAgSGFzaE1hcDxmbG9hdCwgU25hcE9mZnNldDxMYXlv
dXRVbml0Pj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzTWFwOworICAgIFZlY3RvcjxMYXlvdXRSZWN0
PiBzbmFwQXJlYXM7CiAgICAgYm9vbCBoYXNIb3Jpem9udGFsU25hcE9mZnNldHMgPSBzY3JvbGxT
bmFwVHlwZS5heGlzID09IFNjcm9sbFNuYXBBeGlzOjpCb3RoIHx8IHNjcm9sbFNuYXBUeXBlLmF4
aXMgPT0gU2Nyb2xsU25hcEF4aXM6OlhBeGlzIHx8IHNjcm9sbFNuYXBUeXBlLmF4aXMgPT0gU2Ny
b2xsU25hcEF4aXM6OklubGluZTsKICAgICBib29sIGhhc1ZlcnRpY2FsU25hcE9mZnNldHMgPSBz
Y3JvbGxTbmFwVHlwZS5heGlzID09IFNjcm9sbFNuYXBBeGlzOjpCb3RoIHx8IHNjcm9sbFNuYXBU
eXBlLmF4aXMgPT0gU2Nyb2xsU25hcEF4aXM6OllBeGlzIHx8IHNjcm9sbFNuYXBUeXBlLmF4aXMg
PT0gU2Nyb2xsU25hcEF4aXM6OkJsb2NrOwogCkBAIC0yODgsMTcgKzE1NCwyOCBAQCB2b2lkIHVw
ZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFi
bGVBcmVhLCBjb25zdCBSZQogCiAgICAgICAgIHNjcm9sbFNuYXBBcmVhID0gY29tcHV0ZVNjcm9s
bFNuYXBQb3J0T3JBcmVhUmVjdChzY3JvbGxTbmFwQXJlYSwgY2hpbGQtPnN0eWxlKCkuc2Nyb2xs
TWFyZ2luKCksIEluc2V0T3JPdXRzZXQ6Ok91dHNldCk7CiAgICAgICAgIExPR19XSVRIX1NUUkVB
TShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIiAgICBDb25zaWRlcmluZyBzY3JvbGwgc25hcCB0YXJn
ZXQgYXJlYSAiIDw8IHNjcm9sbFNuYXBBcmVhKTsKKwogICAgICAgICBhdXRvIGFsaWdubWVudCA9
IGNoaWxkLT5zdHlsZSgpLnNjcm9sbFNuYXBBbGlnbigpOworICAgICAgICBib29sIHNuYXBzSG9y
aXpvbnRhbGx5ID0gaGFzSG9yaXpvbnRhbFNuYXBPZmZzZXRzICYmIGFsaWdubWVudC54ICE9IFNj
cm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lOworICAgICAgICBib29sIHNuYXBzVmVydGljYWxs
eSA9IGhhc1ZlcnRpY2FsU25hcE9mZnNldHMgJiYgYWxpZ25tZW50LnkgIT0gU2Nyb2xsU25hcEF4
aXNBbGlnblR5cGU6Ok5vbmU7CisgICAgICAgIGlmICghc25hcHNIb3Jpem9udGFsbHkgJiYgIXNu
YXBzVmVydGljYWxseSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIFRoZSBz
Y3JvbGwgc25hcCBhcmVhIGlzIGRlZmluZWQgdmlhIGl0cyBzY3JvbGwgcG9zaXRpb24sIHNvIGNv
bnZlcnQgdGhlIHNuYXAgYXJlYSByZWN0YW5nbGUgdG8gYmUgcmVsYXRpdmUgdG8gc2Nyb2xsIG9m
ZnNldHMuCisgICAgICAgIGF1dG8gc25hcEFyZWFPcmlnaW5SZWxhdGl2ZVRvQm9yZGVyRWRnZSA9
IHNjcm9sbFNuYXBBcmVhLmxvY2F0aW9uKCkgLSBzY3JvbGxTbmFwUG9ydC5sb2NhdGlvbigpOwor
ICAgICAgICBMYXlvdXRSZWN0IHNjcm9sbFNuYXBBcmVhQXNPZmZzZXRzKHNjcm9sbGFibGVBcmVh
LnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihyb3VuZGVkSW50UG9pbnQoc25hcEFyZWFPcmlnaW5S
ZWxhdGl2ZVRvQm9yZGVyRWRnZSkpLCBzY3JvbGxTbmFwQXJlYS5zaXplKCkpOworICAgICAgICBz
bmFwQXJlYXMuYXBwZW5kKHNjcm9sbFNuYXBBcmVhQXNPZmZzZXRzKTsKKwogICAgICAgICBhdXRv
IHN0b3AgPSBjaGlsZC0+c3R5bGUoKS5zY3JvbGxTbmFwU3RvcCgpOwotICAgICAgICBpZiAoaGFz
SG9yaXpvbnRhbFNuYXBPZmZzZXRzICYmIGFsaWdubWVudC54ICE9IFNjcm9sbFNuYXBBeGlzQWxp
Z25UeXBlOjpOb25lKSB7CisgICAgICAgIGlmIChzbmFwc0hvcml6b250YWxseSkgewogICAgICAg
ICAgICAgYXV0byBhYnNvbHV0ZVNjcm9sbFhQb3NpdGlvbiA9IGNvbXB1dGVTY3JvbGxTbmFwQWxp
Z25PZmZzZXQoc2Nyb2xsU25hcEFyZWEueCgpLCBzY3JvbGxTbmFwQXJlYS5tYXhYKCksIGFsaWdu
bWVudC54LCBzY3JvbGxlcklzUlRMKSAtIGNvbXB1dGVTY3JvbGxTbmFwQWxpZ25PZmZzZXQoc2Ny
b2xsU25hcFBvcnQueCgpLCBzY3JvbGxTbmFwUG9ydC5tYXhYKCksIGFsaWdubWVudC54LCBzY3Jv
bGxlcklzUlRMKTsKICAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVTY3JvbGxPZmZzZXQgPSBjbGFt
cFRvPGludD4oc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKHsgcm91bmRU
b0ludChhYnNvbHV0ZVNjcm9sbFhQb3NpdGlvbiksIDAgfSkueCgpLCAwLCBtYXhTY3JvbGxPZmZz
ZXQueCgpKTsKLSAgICAgICAgICAgIGFkZE9yVXBkYXRlU3RvcEZvclNuYXBPZmZzZXQoaG9yaXpv
bnRhbFNuYXBPZmZzZXRzTWFwLCB7IGFic29sdXRlU2Nyb2xsT2Zmc2V0LCBzdG9wIH0pOworICAg
ICAgICAgICAgYWRkT3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldChob3Jpem9udGFsU25hcE9mZnNl
dHNNYXAsIHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AsIHNuYXBBcmVhcy5zaXplKCkgLSAx
IH0pOwogICAgICAgICB9Ci0gICAgICAgIGlmIChoYXNWZXJ0aWNhbFNuYXBPZmZzZXRzICYmIGFs
aWdubWVudC55ICE9IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lKSB7CisgICAgICAgIGlm
IChzbmFwc1ZlcnRpY2FsbHkpIHsKICAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVTY3JvbGxZUG9z
aXRpb24gPSBjb21wdXRlU2Nyb2xsU25hcEFsaWduT2Zmc2V0KHNjcm9sbFNuYXBBcmVhLnkoKSwg
c2Nyb2xsU25hcEFyZWEubWF4WSgpLCBhbGlnbm1lbnQueSwgZmFsc2UpIC0gY29tcHV0ZVNjcm9s
bFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwUG9ydC55KCksIHNjcm9sbFNuYXBQb3J0Lm1heFko
KSwgYWxpZ25tZW50LnksIGZhbHNlKTsKICAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVTY3JvbGxP
ZmZzZXQgPSBjbGFtcFRvPGludD4oc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0
aW9uKHsgMCwgcm91bmRUb0ludChhYnNvbHV0ZVNjcm9sbFlQb3NpdGlvbikgfSkueSgpLCAwLCBt
YXhTY3JvbGxPZmZzZXQueSgpKTsKLSAgICAgICAgICAgIGFkZE9yVXBkYXRlU3RvcEZvclNuYXBP
ZmZzZXQodmVydGljYWxTbmFwT2Zmc2V0c01hcCwgeyBhYnNvbHV0ZVNjcm9sbE9mZnNldCwgc3Rv
cCB9KTsKKyAgICAgICAgICAgIGFkZE9yVXBkYXRlU3RvcEZvclNuYXBPZmZzZXQodmVydGljYWxT
bmFwT2Zmc2V0c01hcCwgeyBhYnNvbHV0ZVNjcm9sbE9mZnNldCwgc3RvcCwgc25hcEFyZWFzLnNp
emUoKSAtIDEgfSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMwOCwzMiArMTg1LDI1IEBAIHZv
aWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Ny
b2xsYWJsZUFyZWEsIGNvbnN0IFJlCiAgICAgfTsKIAogICAgIFZlY3RvcjxTbmFwT2Zmc2V0PExh
eW91dFVuaXQ+PiBob3Jpem9udGFsU25hcE9mZnNldHMgPSBjb3B5VG9WZWN0b3IoaG9yaXpvbnRh
bFNuYXBPZmZzZXRzTWFwLnZhbHVlcygpKTsKLSAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8
TGF5b3V0VW5pdD4+IGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOwogICAgIGlmICghaG9yaXpv
bnRhbFNuYXBPZmZzZXRzLmlzRW1wdHkoKSkgewogICAgICAgICBzdGQ6OnNvcnQoaG9yaXpvbnRh
bFNuYXBPZmZzZXRzLmJlZ2luKCksIGhvcml6b250YWxTbmFwT2Zmc2V0cy5lbmQoKSwgY29tcGFy
ZVNuYXBPZmZzZXRzKTsKLSAgICAgICAgaWYgKHNjcm9sbFNuYXBUeXBlLnN0cmljdG5lc3MgPT0g
U2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSkKLSAgICAgICAgICAgIGNvbXB1dGVBeGlz
UHJveGltaXR5U25hcE9mZnNldFJhbmdlcyhob3Jpem9udGFsU25hcE9mZnNldHMsIGhvcml6b250
YWxTbmFwT2Zmc2V0UmFuZ2VzLCBzY3JvbGxTbmFwUG9ydC53aWR0aCgpKTsKLQogICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICIgPT4gQ29tcHV0ZWQgaG9yaXpv
bnRhbCBzY3JvbGwgc25hcCBvZmZzZXRzOiAiIDw8IGhvcml6b250YWxTbmFwT2Zmc2V0cyk7Ci0g
ICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIiA9PiBDb21wdXRl
ZCBob3Jpem9udGFsIHNjcm9sbCBzbmFwIG9mZnNldCByYW5nZXM6ICIgPDwgaG9yaXpvbnRhbFNu
YXBPZmZzZXRSYW5nZXMpOwogICAgIH0KIAogICAgIFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFVu
aXQ+PiB2ZXJ0aWNhbFNuYXBPZmZzZXRzID0gY29weVRvVmVjdG9yKHZlcnRpY2FsU25hcE9mZnNl
dHNNYXAudmFsdWVzKCkpOwotICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0
Pj4gdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOwogICAgIGlmICghdmVydGljYWxTbmFwT2Zmc2V0
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgc3RkOjpzb3J0KHZlcnRpY2FsU25hcE9mZnNldHMuYmVn
aW4oKSwgdmVydGljYWxTbmFwT2Zmc2V0cy5lbmQoKSwgY29tcGFyZVNuYXBPZmZzZXRzKTsKLSAg
ICAgICAgaWYgKHNjcm9sbFNuYXBUeXBlLnN0cmljdG5lc3MgPT0gU2Nyb2xsU25hcFN0cmljdG5l
c3M6OlByb3hpbWl0eSkKLSAgICAgICAgICAgIGNvbXB1dGVBeGlzUHJveGltaXR5U25hcE9mZnNl
dFJhbmdlcyh2ZXJ0aWNhbFNuYXBPZmZzZXRzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIHNj
cm9sbFNuYXBQb3J0LmhlaWdodCgpKTsKLQogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xs
U25hcCwgc3RyZWFtIDw8ICIgPT4gQ29tcHV0ZWQgdmVydGljYWwgc2Nyb2xsIHNuYXAgb2Zmc2V0
czogIiA8PCB2ZXJ0aWNhbFNuYXBPZmZzZXRzKTsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNj
cm9sbFNuYXAsIHN0cmVhbSA8PCAiID0+IENvbXB1dGVkIHZlcnRpY2FsIHNjcm9sbCBzbmFwIG9m
ZnNldCByYW5nZXM6ICIgPDwgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKTsKICAgICB9CiAKKyAg
ICBpZiAoIXNuYXBBcmVhcy5pc0VtcHR5KCkpCisgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxTbmFwLCBzdHJlYW0gPDwgIiA9PiBDb21wdXRlZCBzbmFwIGFyZWFzOiAiIDw8IHNuYXBBcmVh
cyk7CisKICAgICBzY3JvbGxhYmxlQXJlYS5zZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyh7CisgICAg
ICAgIHNjcm9sbFNuYXBUeXBlLnN0cmljdG5lc3MsCiAgICAgICAgIGhvcml6b250YWxTbmFwT2Zm
c2V0cywKICAgICAgICAgdmVydGljYWxTbmFwT2Zmc2V0cywKLSAgICAgICAgaG9yaXpvbnRhbFNu
YXBPZmZzZXRSYW5nZXMsCi0gICAgICAgIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcworICAgICAg
ICBzbmFwQXJlYXMsCiAgICAgfSk7CiB9CiAKQEAgLTM0Nyw1NyArMjE3LDE3OSBAQCBzdGF0aWMg
TGF5b3V0VW5pdCBjb252ZXJ0T2Zmc2V0VW5pdChmbG9hdCBpbnB1dCwgZmxvYXQgLyogc2NhbGVG
YWN0b3IgKi8pCiAgICAgcmV0dXJuIExheW91dFVuaXQoaW5wdXQpOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgSW5wdXRUeXBlLCB0eXBlbmFtZSBPdXRwdXRUeXBlPgotc3RhdGljIFNjcm9sbFNu
YXBPZmZzZXRzSW5mbzxPdXRwdXRUeXBlPiBjb252ZXJ0T2Zmc2V0SW5mbyhjb25zdCBTY3JvbGxT
bmFwT2Zmc2V0c0luZm88SW5wdXRUeXBlPiYgaW5wdXQsIGZsb2F0IHNjYWxlRmFjdG9yID0gMC4w
KQordGVtcGxhdGUgPHR5cGVuYW1lIElucHV0VHlwZSwgdHlwZW5hbWUgSW5wdXRSZWN0VHlwZSwg
dHlwZW5hbWUgT3V0cHV0VHlwZSwgdHlwZW5hbWUgT3V0cHV0UmVjdFR5cGU+CitzdGF0aWMgU2Ny
b2xsU25hcE9mZnNldHNJbmZvPE91dHB1dFR5cGUsIE91dHB1dFJlY3RUeXBlPiBjb252ZXJ0T2Zm
c2V0SW5mbyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88SW5wdXRUeXBlLCBJbnB1dFJlY3RU
eXBlPiYgaW5wdXQsIGZsb2F0IHNjYWxlRmFjdG9yID0gMC4wKQogewogICAgIGF1dG8gY29udmVy
dE9mZnNldHMgPSBbc2NhbGVGYWN0b3JdKGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PElucHV0VHlw
ZT4+JiBpbnB1dCkKICAgICB7CiAgICAgICAgIFZlY3RvcjxTbmFwT2Zmc2V0PE91dHB1dFR5cGU+
PiBvdXRwdXQ7CiAgICAgICAgIG91dHB1dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlucHV0LnNp
emUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgb2Zmc2V0IDogaW5wdXQpCi0gICAgICAgICAgICBv
dXRwdXQudW5jaGVja2VkQXBwZW5kKHsgY29udmVydE9mZnNldFVuaXQob2Zmc2V0Lm9mZnNldCwg
c2NhbGVGYWN0b3IpLCBvZmZzZXQuc3RvcCB9KTsKKyAgICAgICAgICAgIG91dHB1dC51bmNoZWNr
ZWRBcHBlbmQoeyBjb252ZXJ0T2Zmc2V0VW5pdChvZmZzZXQub2Zmc2V0LCBzY2FsZUZhY3Rvciks
IG9mZnNldC5zdG9wLCBvZmZzZXQuc25hcEFyZWFJbmRleCB9KTsKICAgICAgICAgcmV0dXJuIG91
dHB1dDsKICAgICB9OwogCi0gICAgYXV0byBjb252ZXJ0T2Zmc2V0UmFuZ2VzID0gW3NjYWxlRmFj
dG9yXShjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8SW5wdXRUeXBlPj4mIGlucHV0KQor
ICAgIGF1dG8gY29udmVydFJlY3RzID0gW3NjYWxlRmFjdG9yXShjb25zdCBWZWN0b3I8SW5wdXRS
ZWN0VHlwZT4mIGlucHV0KQogICAgIHsKLSAgICAgICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PE91dHB1dFR5cGU+PiBvdXRwdXQ7CisgICAgICAgIFZlY3RvcjxPdXRwdXRSZWN0VHlwZT4gb3V0
cHV0OwogICAgICAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnB1dC5zaXplKCkp
OwotICAgICAgICBmb3IgKGF1dG8mIHJhbmdlIDogaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXQu
dW5jaGVja2VkQXBwZW5kKHsgY29udmVydE9mZnNldFVuaXQocmFuZ2Uuc3RhcnQsIHNjYWxlRmFj
dG9yKSwgY29udmVydE9mZnNldFVuaXQocmFuZ2UuZW5kLCBzY2FsZUZhY3RvcikgfSk7CisgICAg
ICAgIGZvciAoYXV0byYgcmVjdCA6IGlucHV0KSB7CisgICAgICAgICAgICBPdXRwdXRSZWN0VHlw
ZSBvdXRwdXRSZWN0KAorICAgICAgICAgICAgICAgIGNvbnZlcnRPZmZzZXRVbml0KHJlY3QueCgp
LCBzY2FsZUZhY3RvciksIGNvbnZlcnRPZmZzZXRVbml0KHJlY3QueSgpLCBzY2FsZUZhY3Rvciks
CisgICAgICAgICAgICAgICAgY29udmVydE9mZnNldFVuaXQocmVjdC53aWR0aCgpLCBzY2FsZUZh
Y3RvciksIGNvbnZlcnRPZmZzZXRVbml0KHJlY3QuaGVpZ2h0KCksIHNjYWxlRmFjdG9yKSk7Cisg
ICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKG91dHB1dFJlY3QpOworICAgICAgICB9
CiAgICAgICAgIHJldHVybiBvdXRwdXQ7CiAgICAgfTsKIAogICAgIHJldHVybiB7CisgICAgICAg
IGlucHV0LnN0cmljdG5lc3MsCiAgICAgICAgIGNvbnZlcnRPZmZzZXRzKGlucHV0Lmhvcml6b250
YWxTbmFwT2Zmc2V0cyksCiAgICAgICAgIGNvbnZlcnRPZmZzZXRzKGlucHV0LnZlcnRpY2FsU25h
cE9mZnNldHMpLAotICAgICAgICBjb252ZXJ0T2Zmc2V0UmFuZ2VzKGlucHV0Lmhvcml6b250YWxT
bmFwT2Zmc2V0UmFuZ2VzKSwKLSAgICAgICAgY29udmVydE9mZnNldFJhbmdlcyhpbnB1dC52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAgICAgIGNvbnZlcnRSZWN0cyhpbnB1dC5zbmFwQXJl
YXMpLAogICAgIH07CiB9CiAKIHRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1TY3JvbGxTbmFwT2Zm
c2V0c0luZm88TGF5b3V0VW5pdD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y29udmVy
dFVuaXRzKGZsb2F0IC8qIHVudXNlZFNjYWxlRmFjdG9yICovKSBjb25zdAorTGF5b3V0U2Nyb2xs
U25hcE9mZnNldHNJbmZvIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMo
ZmxvYXQgLyogdW51c2VkU2NhbGVGYWN0b3IgKi8pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnZl
cnRPZmZzZXRJbmZvPGZsb2F0LCBMYXlvdXRVbml0PigqdGhpcyk7CisgICAgcmV0dXJuIGNvbnZl
cnRPZmZzZXRJbmZvPGZsb2F0LCBGbG9hdFJlY3QsIExheW91dFVuaXQsIExheW91dFJlY3Q+KCp0
aGlzKTsKIH0KIAogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxmbG9hdD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+Ojpjb252ZXJ0VW5pdHMo
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0CitGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5m
byBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcikgY29uc3QKIHsKLSAgICByZXR1cm4gY29udmVydE9mZnNldEluZm88TGF5b3V0
VW5pdCwgZmxvYXQ+KCp0aGlzLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcmV0dXJuIGNvbnZl
cnRPZmZzZXRJbmZvPExheW91dFVuaXQsIExheW91dFJlY3QsIGZsb2F0LCBGbG9hdFJlY3Q+KCp0
aGlzLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKLXRlbXBsYXRlIDw+Ci1zdGQ6OnBhaXI8TGF5
b3V0VW5pdCwgdW5zaWduZWQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pjo6Y2xv
c2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIExheW91dFVuaXQgc2Nyb2xsRGVz
dGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxMYXlvdXRVbml0PiBvcmln
aW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3QKK3RlbXBsYXRlIDx0eXBl
bmFtZSBVbml0VHlwZSwgdHlwZW5hbWUgUmVjdFR5cGU+CitzdGF0aWMgVW5pdFR5cGUgbWF4Rm9y
QXhpcyhSZWN0VHlwZSByZWN0LCBTY3JvbGxFdmVudEF4aXMgYXhpcykKIHsKLSAgICByZXR1cm4g
Y2xvc2VzdFNuYXBPZmZzZXRXaXRoT2Zmc2V0c0FuZFJhbmdlcyhvZmZzZXRzRm9yQXhpcyhheGlz
KSwgb2Zmc2V0UmFuZ2VzRm9yQXhpcyhheGlzKSwgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHZl
bG9jaXR5LCBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZyk7CisgICAgcmV0
dXJuIGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gcmVjdC5tYXhYKCkgOiBy
ZWN0Lm1heFkoKTsKIH0KIAotdGVtcGxhdGUgPD4KLXN0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD46OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2
ZW50QXhpcyBheGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2Np
dHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGlu
ZykgY29uc3QKK3RlbXBsYXRlIDx0eXBlbmFtZSBVbml0VHlwZSwgdHlwZW5hbWUgUmVjdFR5cGU+
CitzdGF0aWMgVW5pdFR5cGUgbWluRm9yQXhpcyhSZWN0VHlwZSByZWN0LCBTY3JvbGxFdmVudEF4
aXMgYXhpcykKK3sKKyAgICByZXR1cm4gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250
YWwgPyByZWN0LngoKSA6IHJlY3QueSgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5pdFR5
cGU+CitzdGF0aWMgYm9vbCBpc05lYXJFbm91Z2hUb09mZnNldEZvclByb3hpbWl0eShTY3JvbGxT
bmFwU3RyaWN0bmVzcyBzdHJpY3RuZXNzLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbiwgVW5p
dFR5cGUgY2FuZGlkYXRlU25hcE9mZnNldCwgVW5pdFR5cGUgdmlld3BvcnRMZW5ndGgpCit7Cisg
ICAgaWYgKHN0cmljdG5lc3MgIT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6OlByb3hpbWl0eSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBUaGlzIGlzIGFuIGFyYml0cmFyeSBjaG9pY2Ug
Zm9yIHdoYXQgaXQgbWVhbnMgdG8gYmUgImluIHByb3hpbWl0eSIgb2YgYSBzbmFwIG9mZnNldC4g
V2Ugc2hvdWxkIHBsYXkgYXJvdW5kIHdpdGgKKyAgICAvLyB0aGlzIGFuZCBzZWUgd2hhdCBmZWVs
cyBiZXN0LgorICAgIHN0YXRpYyBjb25zdCBmbG9hdCByYXRpb09mU2Nyb2xsUG9ydEF4aXNMZW5n
dGhUb0JlQ29uc2lkZXJlZEZvclByb3hpbWl0eSA9IDAuMzsKKyAgICByZXR1cm4gc3RkOjphYnMo
ZmxvYXQge2NhbmRpZGF0ZVNuYXBPZmZzZXQgLSBzY3JvbGxEZXN0aW5hdGlvbn0pIDw9ICh2aWV3
cG9ydExlbmd0aCAqIHJhdGlvT2ZTY3JvbGxQb3J0QXhpc0xlbmd0aFRvQmVDb25zaWRlcmVkRm9y
UHJveGltaXR5KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFtZSBS
ZWN0VHlwZSwgdHlwZW5hbWUgU2l6ZVR5cGU+CitzdGF0aWMgc3RkOjpwYWlyPFVuaXRUeXBlLCB1
bnNpZ25lZD4gY2FsY3VsYXRlQ2xvc2VzdFNuYXBPZmZzZXQoY29uc3QgU2Nyb2xsU25hcE9mZnNl
dHNJbmZvPFVuaXRUeXBlLCBSZWN0VHlwZT4mIGluZm8sIFNjcm9sbEV2ZW50QXhpcyBheGlzLCBj
b25zdCBTaXplVHlwZSYgdmlld3BvcnRTaXplLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9m
ZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPFVuaXRUeXBlPiBvcmlnaW5hbE9mZnNldCkK
K3sKKyAgICBjb25zdCBhdXRvJiBzbmFwT2Zmc2V0cyA9IGluZm8ub2Zmc2V0c0ZvckF4aXMoYXhp
cyk7CisgICAgYXV0byBwYWlyRm9yTm9TbmFwcGluZyA9IHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERl
c3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9mZnNldEluZGV4KTsKKyAgICBpZiAoc25hcE9m
ZnNldHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcGFpckZvck5vU25hcHBpbmc7CisKKyAg
ICAvLyBUaGUgZmlyc3Qgc25hcCBwb2ludCB3aXRoIGBzY3JvbGwtc25hcC1zdG9wOiBhbHdheXNg
IGJldHdlZW4gdGhlIG9yaWdpbmFsIHBvc2l0aW9uIGFuZCBkZXN0aW5hdGlvbiB0YWtlcyBwcmVj
ZWRlbmNlLgorICAgIGlmIChvcmlnaW5hbE9mZnNldCkgeworICAgICAgICBpZiAoYXV0byBmaXJz
dFNuYXBTdG9wT2Zmc2V0ID0gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5k
RGVzdGluYXRpb24oc25hcE9mZnNldHMsICpvcmlnaW5hbE9mZnNldCwgc2Nyb2xsRGVzdGluYXRp
b25PZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuICpmaXJzdFNuYXBTdG9wT2Zmc2V0OworICAg
IH0KKworICAgIGF1dG8gdmlld3BvcnRMZW5ndGggPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6
SG9yaXpvbnRhbCA/IHZpZXdwb3J0U2l6ZS53aWR0aCgpIDogdmlld3BvcnRTaXplLmhlaWdodCgp
OworICAgIGJvb2wgbGFuZGVkSW5zaWRlU25hcEFyZWFUaGF0Q29uc3VtZXNWaWV3cG9ydCA9IGZh
bHNlOworICAgIE9wdGlvbmFsPHN0ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+PiBwcmV2aW91
cywgbmV4dDsKKyAgICBPcHRpb25hbDxSZWN0VHlwZT4gcHJldmlvdXNTbmFwQXJlYSwgbmV4dFNu
YXBBcmVhOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzbmFwT2Zmc2V0cy5zaXplKCk7
IGkrKykgeworICAgICAgICBjb25zdCBhdXRvJiBzbmFwQXJlYSA9IGluZm8uc25hcEFyZWFzW3Nu
YXBPZmZzZXRzW2ldLnNuYXBBcmVhSW5kZXhdOworICAgICAgICBsYW5kZWRJbnNpZGVTbmFwQXJl
YVRoYXRDb25zdW1lc1ZpZXdwb3J0IHw9IChtaW5Gb3JBeGlzPFVuaXRUeXBlPihzbmFwQXJlYSwg
YXhpcykgPD0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgJiYgbWF4Rm9yQXhpczxVbml0VHlwZT4o
c25hcEFyZWEsIGF4aXMpID49IChzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCArIHZpZXdwb3J0TGVu
Z3RoKSk7CisgICAgICAgIC8vIElmIHRoZSBzY3JvbGwgbGFuZGVkIGV4YWN0bHkgb24gYSBzbmFw
IG9mZnNldCwgY2hvb3NlIHRoYXQgb25lLgorICAgICAgICBVbml0VHlwZSBwb3RlbnRpYWxTbmFw
T2Zmc2V0ID0gc25hcE9mZnNldHNbaV0ub2Zmc2V0OworICAgICAgICBpZiAocG90ZW50aWFsU25h
cE9mZnNldCA9PSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfcGFpcihwb3RlbnRpYWxTbmFwT2Zmc2V0LCBpKTsKKworICAgICAgICBpZiAocG90
ZW50aWFsU25hcE9mZnNldCA8IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0KSB7CisgICAgICAgICAg
ICBwcmV2aW91cyA9IHN0ZDo6bWFrZV9wYWlyKHBvdGVudGlhbFNuYXBPZmZzZXQsIGkpOworICAg
ICAgICAgICAgcHJldmlvdXNTbmFwQXJlYSA9IHNuYXBBcmVhOworICAgICAgICB9IGVsc2UgaWYg
KCFuZXh0ICYmIHBvdGVudGlhbFNuYXBPZmZzZXQgPiBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCkg
eworICAgICAgICAgICAgbmV4dCA9IHN0ZDo6bWFrZV9wYWlyKHBvdGVudGlhbFNuYXBPZmZzZXQs
IGkpOworICAgICAgICAgICAgbmV4dFNuYXBBcmVhID0gc25hcEFyZWE7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBGcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2Nyb2xsLXNuYXAt
MS8jc25hcC1vdmVyZmxvdworICAgIC8vICJJZiB0aGUgc25hcCBhcmVhIGlzIGxhcmdlciB0aGFu
IHRoZSBzbmFwcG9ydCBpbiBhIHBhcnRpY3VsYXIgYXhpcywgdGhlbiBhbnkgc2Nyb2xsIHBvc2l0
aW9uCisgICAgLy8gaW4gd2hpY2ggdGhlIHNuYXAgYXJlYSBjb3ZlcnMgdGhlIHNuYXBwb3J0LCBh
bmQgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdlb21ldHJpY2FsbHkKKyAgICAvLyBwcmV2aW91
cyBhbmQgc3Vic2VxdWVudCBzbmFwIHBvc2l0aW9ucyBpbiB0aGF0IGF4aXMgaXMgbGFyZ2VyIHRo
YW4gc2l6ZSBvZiB0aGUgc25hcHBvcnQgaW4KKyAgICAvLyB0aGF0IGF4aXMsIGlzIGEgdmFsaWQg
c25hcCBwb3NpdGlvbiBpbiB0aGF0IGF4aXMuIFRoZSBVQSBtYXkgdXNlIHRoZSBzcGVjaWZpZWQg
YWxpZ25tZW50IGFzIGEKKyAgICAvLyBtb3JlIHByZWNpc2UgdGFyZ2V0IGZvciBjZXJ0YWluIHNj
cm9sbCBvcGVyYXRpb25zIChlLmcuIGV4cGxpY2l0IHBhZ2luZykuIgorICAgIGlmIChsYW5kZWRJ
bnNpZGVTbmFwQXJlYVRoYXRDb25zdW1lc1ZpZXdwb3J0ICYmICghcHJldmlvdXMgfHwgIW5leHQg
fHwgKCgqbmV4dCkuZmlyc3QgLSAoKnByZXZpb3VzKS5maXJzdCkgPj0gdmlld3BvcnRMZW5ndGgp
KQorICAgICAgICByZXR1cm4gcGFpckZvck5vU25hcHBpbmc7CisKKyAgICBpZiAob3JpZ2luYWxP
ZmZzZXQpIHsKKyAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGRpcmVjdGlvbmFsIHNjcm9sbCBhbmQg
dGhlcmUgYXJlIG5vIHNjcm9sbCBzdG9wcyBpbiBhIHBhcnRpY3VsYXIgZGlyZWN0aW9uLAorICAg
ICAgICAvLyBkb24ndCBzY3JvbGwgcGFzdCB0aGUgZWRnZSBvZiB0aGUgc2Nyb2xsIGFyZWEuCisg
ICAgICAgIGlmICghbmV4dCAmJiBwcmV2aW91cykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihzdGQ6Om1heCgoKnByZXZpb3VzKS5maXJzdCwgbWF4Rm9yQXhpczxVbml0VHlwZT4o
KnByZXZpb3VzU25hcEFyZWEsIGF4aXMpIC0gdmlld3BvcnRMZW5ndGgpLCBpbnZhbGlkU25hcE9m
ZnNldEluZGV4KTsKKyAgICAgICAgaWYgKCFwcmV2aW91cyAmJiBuZXh0KQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG1pbkZvckF4aXM8VW5pdFR5cGU+KCpuZXh0U25hcEFyZWEs
IGF4aXMpLCBpbnZhbGlkU25hcE9mZnNldEluZGV4KTsKKworICAgICAgICAvLyBGcm9tIGh0dHBz
Oi8vd3d3LnczLm9yZy9UUi9jc3Mtc2Nyb2xsLXNuYXAtMS8jY2hvb3NpbmcKKyAgICAgICAgLy8g
IlVzZXIgYWdlbnRzIG11c3QgZW5zdXJlIHRoYXQgYSB1c2VyIGNhbiDigJxlc2NhcGXigJ0gYSBz
bmFwIHBvc2l0aW9uLCByZWdhcmRsZXNzIG9mIHRoZSBzY3JvbGwKKyAgICAgICAgLy8gbWV0aG9k
LiBGb3IgZXhhbXBsZSwgaWYgdGhlIHNuYXAgdHlwZSBpcyBtYW5kYXRvcnkgYW5kIHRoZSBuZXh0
IHNuYXAgcG9zaXRpb24gaXMgbW9yZSB0aGFuCisgICAgICAgIC8vIHR3byBzY3JlZW4td2lkdGhz
IGF3YXksIGEgbmHDr3ZlIOKAnGFsd2F5cyBzbmFwIHRvIG5lYXJlc3TigJ0gc2VsZWN0aW9uIGFs
Z29yaXRobSBtaWdodCDigJx0cmFw4oCdIHRoZQorICAgICAgICAvLyB1c2VyIGlmIHRoZWlyIGVu
ZCBwb3NpdGlvbiB3YXMgb25seSBvbmUgc2NyZWVuLXdpZHRoIGF3YXkuIEluc3RlYWQsIGEgc21h
cnRlciBhbGdvcml0aG0gdGhhdAorICAgICAgICAvLyBvbmx5IHJldHVybmVkIHRvIHRoZSBzdGFy
dGluZyBzbmFwIHBvc2l0aW9uIGlmIHRoZSBlbmQtcG9pbnQgd2FzIGEgZmFpcmx5IHNtYWxsIGRp
c3RhbmNlIGZyb20KKyAgICAgICAgLy8gaXQsIGFuZCBvdGhlcndpc2UgaWdub3JlZCB0aGUgc3Rh
cnRpbmcgc25hcCBwb3NpdGlvbiwgd291bGQgZ2l2ZSBiZXR0ZXIgYmVoYXZpb3IuIgorICAgICAg
ICAvLyBXZSBvbmx5IGRvIHRoaXMgaWYgd2UgYXJlIGluIGEgc2l0dWF0aW9uIHdoZXJlIHdlIGFy
ZSBjaG9vc2luZyBiZXR3ZWVuIHR3byBjb21wYXRpYmxlCisgICAgICAgIC8vIHNuYXAgb2Zmc2V0
cy4KKyAgICAgICAgaWYgKCpvcmlnaW5hbE9mZnNldCA8IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0
ICYmICgqcHJldmlvdXMpLmZpcnN0IDw9ICpvcmlnaW5hbE9mZnNldCkKKyAgICAgICAgICAgIHBy
ZXZpb3VzLnJlc2V0KCk7CisgICAgICAgIGlmICgqb3JpZ2luYWxPZmZzZXQgPiBzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldCAmJiAoKm5leHQpLmZpcnN0ID49ICpvcmlnaW5hbE9mZnNldCkKKyAgICAg
ICAgICAgIG5leHQucmVzZXQoKTsKKyAgICB9CisKKyAgICBpZiAobmV4dCAmJiAhaXNOZWFyRW5v
dWdoVG9PZmZzZXRGb3JQcm94aW1pdHkoaW5mby5zdHJpY3RuZXNzLCBzY3JvbGxEZXN0aW5hdGlv
bk9mZnNldCwgKCpuZXh0KS5maXJzdCwgdmlld3BvcnRMZW5ndGgpKQorICAgICAgICBuZXh0LnJl
c2V0KCk7CisgICAgaWYgKHByZXZpb3VzICYmICFpc05lYXJFbm91Z2hUb09mZnNldEZvclByb3hp
bWl0eShpbmZvLnN0cmljdG5lc3MsIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCAoKnByZXZpb3Vz
KS5maXJzdCwgdmlld3BvcnRMZW5ndGgpKQorICAgICAgICBwcmV2aW91cy5yZXNldCgpOworCisg
ICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBjb21wYXRpYmxlIG9mZnNldHMgdG8gY2hvb3NlIGJldHdl
ZW4sIGp1c3QgZG8gdGhlIG9idmlvdXMgdGhpbmcKKyAgICAvLyBhbmQgZG8gbm8gc25hcHBpbmcg
b3Igb25seSBzZWxlY3QgdGhlIHNpbmdsZSBjb21wYXRpYmxlIG9mZnNldC4KKyAgICBpZiAoIXBy
ZXZpb3VzICYmICFuZXh0KQorICAgICAgICByZXR1cm4gcGFpckZvck5vU25hcHBpbmc7CisgICAg
aWYgKCFwcmV2aW91cykKKyAgICAgICAgcmV0dXJuICpuZXh0OworICAgIGlmICghbmV4dCkKKyAg
ICAgICAgcmV0dXJuICpwcmV2aW91czsKKworICAgIC8vIElmIHRoaXMgc2Nyb2xsIGlzbid0IGRp
cmVjdGlvbmFsLCB0aGVuIGNob29zZSB3aGF0ZXZlciBzbmFwIHBvaW50IGlzIGNsb3Nlci4KKyAg
ICBVbml0VHlwZSBwcmV2aW91c1NuYXBPZmZzZXQgPSAoKnByZXZpb3VzKS5maXJzdDsKKyAgICBV
bml0VHlwZSBuZXh0U25hcE9mZnNldCA9ICgqbmV4dCkuZmlyc3Q7CisgICAgaWYgKCFzdGQ6OmFi
cyh2ZWxvY2l0eSkpIHsKKyAgICAgICAgYm9vbCBpc0Nsb3NlclRvUHJldmlvdXNTbmFwSW5kZXgg
PSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAtIHByZXZpb3VzU25hcE9mZnNldCA8PSBuZXh0U25h
cE9mZnNldCAtIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0OworICAgICAgICByZXR1cm4gaXNDbG9z
ZXJUb1ByZXZpb3VzU25hcEluZGV4ID8gKnByZXZpb3VzIDogKm5leHQ7CisgICAgfQorCisgICAg
Ly8gRmluYWxseSwgaWYgd2UgaGF2ZSBhIGRpcmVjdGlvbmFsIHNjcm9sbCBwcmVmZXIgdGhlIHNu
YXAgcG9pbnQgdGhhdCBpcyBpbiB0aGUgc2Nyb2xsIGRpcmVjdGlvbi4KKyAgICByZXR1cm4gdmVs
b2NpdHkgPCAwID8gKnByZXZpb3VzIDogKm5leHQ7Cit9CisKKwordGVtcGxhdGUgPD4gdGVtcGxh
dGUgPD4KK3N0ZDo6cGFpcjxMYXlvdXRVbml0LCB1bnNpZ25lZD4gTGF5b3V0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3Qg
TGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxPZmZzZXRG
b3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdAoreworICAgIHJldHVybiBjYWxjdWxhdGVDbG9z
ZXN0U25hcE9mZnNldDxMYXlvdXRVbml0LCBMYXlvdXRSZWN0LCBMYXlvdXRTaXplPigqdGhpcywg
YXhpcywgdmlld3BvcnRTaXplLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9y
aWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZyk7Cit9CisKK3RlbXBsYXRlIDw+IHRl
bXBsYXRlIDw+CitzdGQ6OnBhaXI8ZmxvYXQsIHVuc2lnbmVkPiBGbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IEZs
b2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxv
YXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFs
U25hcHBpbmcpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNsb3Nlc3RTbmFwT2Zmc2V0V2l0aE9mZnNl
dHNBbmRSYW5nZXMob2Zmc2V0c0ZvckF4aXMoYXhpcyksIG9mZnNldFJhbmdlc0ZvckF4aXMoYXhp
cyksIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxQb3NpdGlvbkZv
ckRpcmVjdGlvbmFsU25hcHBpbmcpOworICAgIHJldHVybiBjYWxjdWxhdGVDbG9zZXN0U25hcE9m
ZnNldDxmbG9hdCwgRmxvYXRSZWN0LCBGbG9hdFNpemU+KCp0aGlzLCBheGlzLCB2aWV3cG9ydFNp
emUsIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRGb3JE
aXJlY3Rpb25hbFNuYXBwaW5nKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCAyMGE2NDdmZWExMmM2
Y2M4YjU1NTc5YzUxYmQwYTM2MDVmZGNlNWU2Li42MjMwYWI5YzdiZDYwNjkyNmExMGY3NmViN2U2
NDI3ODFhMTUxODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtMjcsNiArMjcsMTAgQEAKIAogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCiAKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJG
bG9hdFNpemUuaCIKKyNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0U2l6
ZS5oIgogI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgog
I2luY2x1ZGUgIlN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIgpAQCAtMzUsMzkgKzM5LDI5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTGF5b3V0UmVjdDsKIGNsYXNzIFNjcm9sbGFi
bGVBcmVhOwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgordGVtcGxhdGUgPHR5cGVuYW1lIE9mZnNldFR5cGU+CiBzdHJ1Y3QgU25h
cE9mZnNldCB7Ci0gICAgVCBvZmZzZXQ7CisgICAgT2Zmc2V0VHlwZSBvZmZzZXQ7CiAgICAgU2Ny
b2xsU25hcFN0b3Agc3RvcDsKKyAgICBzaXplX3Qgc25hcEFyZWFJbmRleDsKIH07CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IFNjcm9sbE9mZnNldFJhbmdlIHsKLSAgICBUIHN0YXJ0
OwotICAgIFQgZW5kOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgT2Zmc2V0VHlwZSwgdHlwZW5hbWUgUmVjdFR5cGU+CiBzdHJ1Y3QgU2Nyb2xsU25hcE9m
ZnNldHNJbmZvIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgVmVj
dG9yPFNuYXBPZmZzZXQ8VD4+IGhvcml6b250YWxTbmFwT2Zmc2V0czsKLSAgICBWZWN0b3I8U25h
cE9mZnNldDxUPj4gdmVydGljYWxTbmFwT2Zmc2V0czsKKyAgICBTY3JvbGxTbmFwU3RyaWN0bmVz
cyBzdHJpY3RuZXNzOwogCi0gICAgLy8gU25hcCBvZmZzZXQgcmFuZ2VzIHJlcHJlc2VudCBub24t
ZW1wdHkgcmFuZ2VzIG9mIHNjcm9sbCBvZmZzZXRzIGluIHdoaWNoIHNjcm9sbGluZyBtYXkgcmVz
dCBhZnRlciBzY3JvbGwgc25hcHBpbmcuCi0gICAgLy8gVGhlc2UgYXJlIHVzZWQgaW4gdHdvIGNh
c2VzOiAoMSkgZm9yIHByb3hpbWl0eSBzY3JvbGwgc25hcHBpbmcsIHdoZXJlIHBvcnRpb25zIG9m
IGFyZWFzIGJldHdlZW4gYWRqYWNlbnQgc25hcCBvZmZzZXRzCi0gICAgLy8gbWF5IGVtaXQgc25h
cCBvZmZzZXQgcmFuZ2VzLCBhbmQgKDIpIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBzbmFwIGFyZWEg
aXMgbGFyZ2VyIHRoYW4gdGhlIHNuYXAgcG9ydCwgaW4gd2hpY2ggY2FzZSBhcmVhcwotICAgIC8v
IHdoZXJlIHRoZSBzbmFwIHBvcnQgZml0cyB3aXRoaW4gdGhlIHNuYXAgYXJlYSBhcmUgY29uc2lk
ZXJlZCB0byBiZSB2YWxpZCBzbmFwIHBvc2l0aW9ucy4KLSAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0
UmFuZ2U8VD4+IGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOwotICAgIFZlY3RvcjxTY3JvbGxP
ZmZzZXRSYW5nZTxUPj4gdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOworICAgIFZlY3RvcjxTbmFw
T2Zmc2V0PE9mZnNldFR5cGU+PiBob3Jpem9udGFsU25hcE9mZnNldHM7CisgICAgVmVjdG9yPFNu
YXBPZmZzZXQ8T2Zmc2V0VHlwZT4+IHZlcnRpY2FsU25hcE9mZnNldHM7CisgICAgVmVjdG9yPFJl
Y3RUeXBlPiBzbmFwQXJlYXM7CiAKLSAgICBib29sIGlzRXF1YWwoY29uc3QgU2Nyb2xsU25hcE9m
ZnNldHNJbmZvPFQ+JiBvdGhlcikgY29uc3QKKyAgICBib29sIGlzRXF1YWwoY29uc3QgU2Nyb2xs
U25hcE9mZnNldHNJbmZvPE9mZnNldFR5cGUsIFJlY3RUeXBlPiYgb3RoZXIpIGNvbnN0CiAgICAg
ewotICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzID09IG90aGVyLmhvcml6b250
YWxTbmFwT2Zmc2V0cyAmJiB2ZXJ0aWNhbFNuYXBPZmZzZXRzID09IG90aGVyLnZlcnRpY2FsU25h
cE9mZnNldHMgJiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPT0gb3RoZXIuaG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMgJiYgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzID09IG90aGVyLnZl
cnRpY2FsU25hcE9mZnNldFJhbmdlczsKKyAgICAgICAgcmV0dXJuIHN0cmljdG5lc3MgPT0gb3Ro
ZXIuc3RyaWN0bmVzcyAmJiBob3Jpem9udGFsU25hcE9mZnNldHMgPT0gb3RoZXIuaG9yaXpvbnRh
bFNuYXBPZmZzZXRzICYmIHZlcnRpY2FsU25hcE9mZnNldHMgPT0gb3RoZXIudmVydGljYWxTbmFw
T2Zmc2V0cyAmJiBzbmFwQXJlYXMgPT0gb3RoZXIuc25hcEFyZWFzOwogICAgIH0KIAogICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0CkBAIC03NSwyOSArNjksMjcgQEAgc3RydWN0IFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyB7CiAgICAgICAgIHJldHVybiBob3Jpem9udGFsU25hcE9mZnNldHMuaXNFbXB0
eSgpICYmIHZlcnRpY2FsU25hcE9mZnNldHMuaXNFbXB0eSgpOwogICAgIH0KIAotICAgIFZlY3Rv
cjxTbmFwT2Zmc2V0PFQ+PiBvZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29u
c3QKKyAgICBWZWN0b3I8U25hcE9mZnNldDxPZmZzZXRUeXBlPj4gb2Zmc2V0c0ZvckF4aXMoU2Ny
b2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gYXhpcyA9PSBT
Y3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsID8gdmVydGljYWxTbmFwT2Zmc2V0cyA6IGhvcml6b250
YWxTbmFwT2Zmc2V0czsKICAgICB9CiAKLSAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8VD4+
IG9mZnNldFJhbmdlc0ZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsID8gdmVydGlj
YWxTbmFwT2Zmc2V0UmFuZ2VzIDogaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXM7Ci0gICAgfQot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0VHlwZT4gU2Nyb2xsU25hcE9mZnNldHNJbmZv
PE91dHB1dFR5cGU+IGNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDAuMCkg
Y29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFQsIHVuc2lnbmVkPiBjbG9zZXN0
U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIFQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZs
b2F0IHZlbG9jaXR5LCBPcHRpb25hbDxUPiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxT
bmFwcGluZyA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3V0
cHV0VHlwZSwgdHlwZW5hbWUgT3V0cHV0UmVjdFR5cGU+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxP
dXRwdXRUeXBlLCBPdXRwdXRSZWN0VHlwZT4gY29udmVydFVuaXRzKGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yID0gMC4wKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTaXplVHlwZT4gV0VC
Q09SRV9FWFBPUlQgc3RkOjpwYWlyPE9mZnNldFR5cGUsIHVuc2lnbmVkPiBjbG9zZXN0U25hcE9m
ZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFNpemVUeXBlJiB2aWV3cG9ydFNpemUsIE9mZnNl
dFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxP
ZmZzZXRUeXBlPiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZyA9IFdURjo6
bnVsbG9wdCkgY29uc3Q7CiB9OwogCit1c2luZyBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8g
PSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdCwgTGF5b3V0UmVjdD47Cit1c2luZyBG
bG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyA9IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdCwg
RmxvYXRSZWN0PjsKKwogdGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KLVNjcm9sbFNuYXBPZmZzZXRz
SW5mbzxMYXlvdXRVbml0PiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Ojpjb252ZXJ0VW5p
dHMoZmxvYXQgLyogdW51c2VkU2NhbGVGYWN0b3IgKi8pIGNvbnN0OwotdGVtcGxhdGUgPD4KLVdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IFNjcm9sbFNuYXBPZmZzZXRz
SW5mbzxmbG9hdD46OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgZmxvYXQgc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxmbG9hdD4gb3Jp
Z2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0OworTGF5b3V0U2Nyb2xs
U25hcE9mZnNldHNJbmZvIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMo
ZmxvYXQgLyogdW51c2VkU2NhbGVGYWN0b3IgKi8pIGNvbnN0OwordGVtcGxhdGUgPD4gdGVtcGxh
dGUgPD4KK1dFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IEZsb2F0U2Ny
b2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNv
bnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNl
dCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPGZsb2F0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGly
ZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7CiAKIHRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1TY3Jv
bGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0
Pjo6Y29udmVydFVuaXRzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25zdDsKLXRlbXBsYXRl
IDw+Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgdW5zaWduZWQ+IFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pjo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZl
bnRBeGlzLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0
eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25h
cHBpbmcpIGNvbnN0OworRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gTGF5b3V0U2Nyb2xsU25h
cE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0
OwordGVtcGxhdGUgPD4gdGVtcGxhdGUgPD4KK1dFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxMYXlv
dXRVbml0LCB1bnNpZ25lZD4gTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjbG9zZXN0U25h
cE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IExheW91dFNpemUmIHZpZXdwb3J0U2l6ZSwg
TGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlv
bmFsPExheW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBj
b25zdDsKIAogY29uc3QgdW5zaWduZWQgaW52YWxpZFNuYXBPZmZzZXRJbmRleCA9IFVJTlRfTUFY
OwogCkBAIC0xMDYsNyArOTgsNyBAQCBjb25zdCB1bnNpZ25lZCBpbnZhbGlkU25hcE9mZnNldElu
ZGV4ID0gVUlOVF9NQVg7CiAvLyB0aGUgc2Nyb2xsaW5nIGNvbnRhaW5lcidzIGJvcmRlciBib3gu
CiB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEm
LCBjb25zdCBSZW5kZXJCb3gmIHNjcm9sbGluZ0VsZW1lbnRCb3gsIGNvbnN0IFJlbmRlclN0eWxl
JiBzY3JvbGxpbmdFbGVtZW50U3R5bGUsIExheW91dFJlY3Qgdmlld3BvcnRSZWN0SW5Cb3JkZXJC
b3hDb29yZGluYXRlcyk7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0cywgU25hcE9mZnNldDxUPiBvZmZzZXQpCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgT2Zmc2V0VHlwZT4gV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYgdHMsIFNuYXBPZmZzZXQ8T2Zmc2V0VHlwZT4gb2Zmc2V0KQogewog
ICAgIHRzIDw8IG9mZnNldC5vZmZzZXQ7CiAgICAgaWYgKG9mZnNldC5zdG9wID09IFNjcm9sbFNu
YXBTdG9wOjpBbHdheXMpCkBAIC0xMTQsMTMgKzEwNiw2IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0cywgU25hcE9m
ZnNlCiAgICAgcmV0dXJuIHRzOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2Nyb2xsT2Zmc2V0UmFuZ2U8VD4m
IHJhbmdlKQotewotICAgIHRzIDw8ICJzdGFydDogIiA8PCByYW5nZS5zdGFydCA8PCAiIGVuZDog
IiA8PCByYW5nZS5lbmQ7Ci0gICAgcmV0dXJuIHRzOwotfQotCiB9OyAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TQ1JPTExfU05BUCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuY3BwCmluZGV4IGY0MDgxOWFmZTNjZWZkMzQ4MTgwNmY0MTc5OWU5MDU5ODc1ZjgwZTEu
Ljg0MzI4ODFjODlmMTZjNTdiNDY3NGMyNGJiNGE5ODM4NmQ3YWM5MjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbikK
IH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi12b2lkIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6c2V0U25hcE9mZnNldHNJbmZvKGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxmbG9hdD4mIGluZm8pCit2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U25h
cE9mZnNldHNJbmZvKGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBpbmZvKQogewog
ICAgIGlmIChtX3NuYXBPZmZzZXRzSW5mby5pc0VxdWFsKGluZm8pKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IGJkNGU5N2I5YzVlZmRmOTEyOWRlZjhiNmJiMjMw
ZDM3YjQxNjQwNDQuLmM1ZDc2MzljZjFjYWUwYzdlMDM3ZmMzNTk5ZjIyNTgxYmFhZGFiZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5oCkBAIC03MSw4ICs3MSw4IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYpOwogCiAjaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88
ZmxvYXQ+JiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5m
bzsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U25hcE9mZnNldHNJbmZvKGNvbnN0IFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIG5ld09mZnNldHNJbmZvKTsKKyAgICBjb25zdCBG
bG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgc25hcE9mZnNldHNJbmZvKCkgY29uc3QgeyByZXR1
cm4gbV9zbmFwT2Zmc2V0c0luZm87IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNuYXBP
ZmZzZXRzSW5mbyhjb25zdCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgbmV3T2Zmc2V0c0lu
Zm8pOwogCiAgICAgdW5zaWduZWQgY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleDsgfQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCh1bnNp
Z25lZCk7CkBAIC0xMzAsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAgICBJbnRQb2ludCBtX3Njcm9s
bE9yaWdpbjsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgU2Nyb2xsU25hcE9m
ZnNldHNJbmZvPGZsb2F0PiBtX3NuYXBPZmZzZXRzSW5mbzsKKyAgICBGbG9hdFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyBtX3NuYXBPZmZzZXRzSW5mbzsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXggeyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleCB7IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCmlu
ZGV4IDEzMGU3M2VkYmMyOGMwODI4ODMxYTU4YzIyZjNjNTFjZTY3ZDEwZTcuLjhiNjM0ZTFhZDY0
ZjI0MTliZjJiYTkwODQzMWM4MzdjOTdkNmY0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAK
QEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpkdW1w
UHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcgogfQogCiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKLWNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4m
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpzbmFwT2Zmc2V0c0luZm8oKSBjb25zdAorY29u
c3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
OjpzbmFwT2Zmc2V0c0luZm8oKSBjb25zdAogewogICAgIHJldHVybiBtX3NuYXBPZmZzZXRzSW5m
bzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IGJlNDlkMGIxMjVmMDFiNzFlZDZkOGJjYWU0
ZjZlMjc3NTBjMzg0YjYuLjU1YmNlZDNlMGU2MTIxMDZkOTNmODUyZWVmN2Q0NjQyMTA1MjU0Mzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjYW5IYXZlU2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzLmhvcml6b250YWxTY3JvbGxiYXJNb2RlICE9IFNjcm9sbGJhckFsd2F5c09mZiB8fCBt
X3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbGJhck1vZGUgIT0gU2Nyb2xs
YmFyQWx3YXlzT2ZmOyB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGNvbnN0
IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0Owor
ICAgIGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBzbmFwT2Zmc2V0c0luZm8oKSBj
b25zdDsKICAgICB1bnNpZ25lZCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4OyB9CiAgICAgdW5z
aWduZWQgY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4OyB9CiAgICAgdm9pZCBzZXRDdXJyZW50SG9yaXpv
bnRhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fY3VycmVudEhvcml6b250YWxT
bmFwUG9pbnRJbmRleCA9IGluZGV4OyB9CkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAg
ICBGbG9hdFBvaW50IG1fY3VycmVudFNjcm9sbFBvc2l0aW9uOwogICAgIEludFBvaW50IG1fc2Ny
b2xsT3JpZ2luOwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgU2Nyb2xsU25hcE9m
ZnNldHNJbmZvPGZsb2F0PiBtX3NuYXBPZmZzZXRzSW5mbzsKKyAgICBGbG9hdFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyBtX3NuYXBPZmZzZXRzSW5mbzsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXggeyAwIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleCB7IDAgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQppbmRleCBhNWI0OGMyMDM0MTVhYjdiMDljZTljM2Zh
OTljMTVlYTYzNzQwZTQ1Li4zZTI0NTc0YWIwMGVmZjQ1ZTBmOGNhMTBmMTMwODUxYTgxYWVhNzY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbQpA
QCAtNjUsNyArNjUsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OnVwZGF0ZUZyb21TdGF0ZU5vZGUoY29uc3QgU2Nyb2xsaW5nUwogCiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8pKQotICAg
ICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlU2Nyb2xsU25hcFBvaW50cyhzY3JvbGxpbmdT
dGF0ZU5vZGUuc25hcE9mZnNldHNJbmZvKCkuY29udmVydFVuaXRzPExheW91dFVuaXQ+KCkpOwor
ICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIudXBkYXRlU2Nyb2xsU25hcFBvaW50cyhzY3JvbGxp
bmdTdGF0ZU5vZGUuc25hcE9mZnNldHNJbmZvKCkuY29udmVydFVuaXRzPExheW91dFVuaXQsIExh
eW91dFJlY3Q+KCkpOwogCiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFw
T2Zmc2V0SW5kZXgpKQogICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xs
U25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9sbGluZ1N0
YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcApp
bmRleCA3OTM4YjFhOTA0ODM3OTA0NjlkODE2MjNjZTBmYzRjZjkyMTI2NzkwLi45MjU4ZTdlYWE0
ZWRkNDdjNWU0MGNlMzZhMDJlZWQ4NjFhM2E0ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcApAQCAtMTczLDgg
KzE3Myw4IEBAIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFCiAgICAgICAgIEZsb2F0UG9pbnQgbmV3
RmxvYXRPZmZzZXQgPSBzY3JvbGxpbmdOb2RlKCkuY3VycmVudFNjcm9sbE9mZnNldCgpICsgRmxv
YXRTaXplKGRlbHRhWCwgZGVsdGFZKTsKICAgICAgICAgYXV0byBuZXdPZmZzZXQgPSBMYXlvdXRQ
b2ludChuZXdGbG9hdE9mZnNldC54KCkgLyBzY2FsZSwgbmV3RmxvYXRPZmZzZXQueSgpIC8gc2Nh
bGUpOwogCi0gICAgICAgIGF1dG8gb2Zmc2V0WCA9IHNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0
c0luZm8oKS5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIG5l
d09mZnNldC54KCksIGRlbHRhWCwgb3JpZ2luYWxPZmZzZXQueCgpKS5maXJzdDsKLSAgICAgICAg
YXV0byBvZmZzZXRZID0gc2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLmNsb3Nlc3RT
bmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIG5ld09mZnNldC55KCksIGRlbHRh
WSwgb3JpZ2luYWxPZmZzZXQueSgpKS5maXJzdDsKKyAgICAgICAgYXV0byBvZmZzZXRYID0gc2Ny
b2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2
ZW50QXhpczo6SG9yaXpvbnRhbCwgc2Nyb2xsYWJsZUFyZWFTaXplKCksIG5ld09mZnNldC54KCks
IGRlbHRhWCwgb3JpZ2luYWxPZmZzZXQueCgpKS5maXJzdDsKKyAgICAgICAgYXV0byBvZmZzZXRZ
ID0gc2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KFNj
cm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9sbGFibGVBcmVhU2l6ZSgpLCBuZXdPZmZzZXQu
eSgpLCBkZWx0YVksIG9yaWdpbmFsT2Zmc2V0LnkoKSkuZmlyc3Q7CiAKICAgICAgICAgZGVsdGFY
ID0gKG9mZnNldFggLSBvcmlnaW5hbE9mZnNldC54KCkpICogc2NhbGU7CiAgICAgICAgIGRlbHRh
WSA9IChvZmZzZXRZIC0gb3JpZ2luYWxPZmZzZXQueSgpKSAqIHNjYWxlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmNwcAppbmRleCBjM2VjNmM0NDFkMzEyZjU4
NTJiYmQ2ZjJiNDkwZTI3Y2I1ZTMxM2FlLi42NTUwMGQxMGZlZjM4MTA3NDIyZTI5ZmI5OWMwNTZl
MDYxMjVkYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVy
LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVwZGF0ZVNjcm9s
bFNuYXBTdGF0ZShjb25zdCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZQogICAgIHVwZGF0
ZVNjcm9sbFNuYXBQb2ludHMoKnNuYXBPZmZzZXRJbmZvKTsKIH0KIAotdm9pZCBTY3JvbGxDb250
cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxMYXlvdXRVbml0PiYgc25hcE9mZnNldEluZm8pCit2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnVw
ZGF0ZVNjcm9sbFNuYXBQb2ludHMoY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBz
bmFwT2Zmc2V0SW5mbykKIHsKICAgICBpZiAoc25hcE9mZnNldEluZm8uaXNFbXB0eSgpKSB7CiAg
ICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlID0gbnVsbHB0cjsKQEAgLTExNSw4ICsxMTUsOCBAQCB2
b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5k
T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcwogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRVbml0
IGNsYW1wZWRPZmZzZXQgPSBzdGQ6Om1pbihzdGQ6Om1heChMYXlvdXRVbml0KG9mZnNldCAvIHNj
YWxlRmFjdG9yKSwgc25hcE9mZnNldHMuZmlyc3QoKS5vZmZzZXQpLCBzbmFwT2Zmc2V0cy5sYXN0
KCkub2Zmc2V0KTsKLQotICAgIHVuc2lnbmVkIGFjdGl2ZUluZGV4ID0gc25hcFN0YXRlLnNuYXBP
ZmZzZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgY2xhbXBlZE9mZnNldCwgMCkuc2Vj
b25kOworICAgIExheW91dFNpemUgdmlld3BvcnRTaXplKG1fY2xpZW50LnZpZXdwb3J0U2l6ZSgp
LndpZHRoKCksIG1fY2xpZW50LnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpKTsKKyAgICB1bnNpZ25l
ZCBhY3RpdmVJbmRleCA9IHNuYXBTdGF0ZS5zbmFwT2Zmc2V0SW5mbygpLmNsb3Nlc3RTbmFwT2Zm
c2V0KGF4aXMsIHZpZXdwb3J0U2l6ZSwgY2xhbXBlZE9mZnNldCwgMCkuc2Vjb25kOwogICAgIGlm
IChhY3RpdmVJbmRleCA9PSBhY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKGF4aXMpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTEzNyw3ICsxMzcsOSBAQCBmbG9hdCBTY3JvbGxDb250cm9sbGVy
OjphZGp1c3RTY3JvbGxEZXN0aW5hdGlvbihTY3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgZGVz
dAogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG9yaWdpbmFsT2Zmc2V0SW5MYXlvdXRVbml0czsK
ICAgICBpZiAob3JpZ2luYWxPZmZzZXQuaGFzVmFsdWUoKSkKICAgICAgICAgb3JpZ2luYWxPZmZz
ZXRJbkxheW91dFVuaXRzID0gTGF5b3V0VW5pdCgqb3JpZ2luYWxPZmZzZXQgLyBtX2NsaWVudC5w
YWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgTGF5b3V0VW5pdCBvZmZzZXQgPSBzbmFwU3RhdGUuc25h
cE9mZnNldEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCBMYXlvdXRVbml0KGRlc3RpbmF0
aW9uT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpLCB2ZWxvY2l0eSwgb3JpZ2lu
YWxPZmZzZXRJbkxheW91dFVuaXRzKS5maXJzdDsKKworICAgIExheW91dFNpemUgdmlld3BvcnRT
aXplKG1fY2xpZW50LnZpZXdwb3J0U2l6ZSgpLndpZHRoKCksIG1fY2xpZW50LnZpZXdwb3J0U2l6
ZSgpLmhlaWdodCgpKTsKKyAgICBMYXlvdXRVbml0IG9mZnNldCA9IHNuYXBTdGF0ZS5zbmFwT2Zm
c2V0SW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIHZpZXdwb3J0U2l6ZSwgTGF5b3V0VW5p
dChkZXN0aW5hdGlvbk9mZnNldCAvIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpKSwgdmVsb2Np
dHksIG9yaWdpbmFsT2Zmc2V0SW5MYXlvdXRVbml0cykuZmlyc3Q7CiAgICAgcmV0dXJuIG9mZnNl
dCAqIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKaW5kZXggZDkyNWZkNDU1ODRjMDExMWM5ZWYwYzI4OTFm
N2M3NTE2NjEwZWI3Yi4uZGQ1M2FkYTkwYTJmNWYyOTA4ODAxMDIzYzNlNWEzYzQzMWVmNjE2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaApAQCAtMTMyLDcg
KzEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOwogCiAj
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBQb2lu
dHMoY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+Jik7CisgICAgdm9pZCB1
cGRhdGVTY3JvbGxTbmFwUG9pbnRzKGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYp
OwogICAgIHZvaWQgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4
aXMsIHVuc2lnbmVkKTsKICAgICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRpY2VzRm9yT2Zm
c2V0KFNjcm9sbE9mZnNldCk7CiAgICAgYm9vbCBhY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFu
Z2UoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
Y3BwCmluZGV4IDdkNjhkNTBkZGU3NmU4OTA5NmNkM2U1OGYzZmMzOTFmZmM2NzE3N2MuLjFlZTc0
MTY3YjgxOTgzZjQ3MDJkODM2YTZmOTc3MDc3MjQ3MjA5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKQEAgLTUxLDggKzUx
LDggQEAgdm9pZCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6c2V0dXBBbmltYXRpb25Gb3JTdGF0
ZShTY3JvbGxTbmFwU3RhdGUgc3RhdGUsIGNvbnMKIAogICAgIG1fbW9tZW50dW1DYWxjdWxhdG9y
ID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUodmlld3BvcnRTaXplLCBjb250
ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwog
ICAgIGF1dG8gcHJlZGljdGVkU2Nyb2xsVGFyZ2V0ID0gbV9tb21lbnR1bUNhbGN1bGF0b3ItPnBy
ZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCk7Ci0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WCA9IHRh
cmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgY29u
dGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCBpbml0aWFsT2Zmc2V0Lngo
KSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LndpZHRoKCksIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRh
LndpZHRoKCksIG1fYWN0aXZlU25hcEluZGV4WCk7Ci0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WSA9
IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIGNv
bnRlbnRTaXplLmhlaWdodCgpIC0gdmlld3BvcnRTaXplLmhlaWdodCgpLCBpbml0aWFsT2Zmc2V0
LnkoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LmhlaWdodCgpLCBwYWdlU2NhbGUsIGluaXRpYWxE
ZWx0YS5oZWlnaHQoKSwgbV9hY3RpdmVTbmFwSW5kZXhZKTsKKyAgICBmbG9hdCB0YXJnZXRPZmZz
ZXRYID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9u
dGFsLCB2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLndpZHRoKCkgLSB2aWV3cG9ydFNpemUud2lk
dGgoKSwgaW5pdGlhbE9mZnNldC54KCksIHByZWRpY3RlZFNjcm9sbFRhcmdldC53aWR0aCgpLCBw
YWdlU2NhbGUsIGluaXRpYWxEZWx0YS53aWR0aCgpLCBtX2FjdGl2ZVNuYXBJbmRleFgpOworICAg
IGZsb2F0IHRhcmdldE9mZnNldFkgPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxF
dmVudEF4aXM6OlZlcnRpY2FsLCB2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLmhlaWdodCgpIC0g
dmlld3BvcnRTaXplLmhlaWdodCgpLCBpbml0aWFsT2Zmc2V0LnkoKSwgcHJlZGljdGVkU2Nyb2xs
VGFyZ2V0LmhlaWdodCgpLCBwYWdlU2NhbGUsIGluaXRpYWxEZWx0YS5oZWlnaHQoKSwgbV9hY3Rp
dmVTbmFwSW5kZXhZKTsKICAgICBtX21vbWVudHVtQ2FsY3VsYXRvci0+c2V0UmV0YXJnZXRlZFNj
cm9sbE9mZnNldCh7IHRhcmdldE9mZnNldFgsIHRhcmdldE9mZnNldFkgfSk7CiAgICAgbV9zdGFy
dFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBtX2N1cnJlbnRTdGF0ZSA9IHN0YXRl
OwpAQCAtOTEsMTAgKzkxLDExIEBAIEZsb2F0UG9pbnQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6
OmN1cnJlbnRBbmltYXRlZFNjcm9sbE9mZnNldChib29sJiBpc0FuaW1hdGlvCiAgICAgcmV0dXJu
IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKGVsYXBz
ZWRUaW1lKTsKIH0KIAotZmxvYXQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNl
dEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBtYXhTY3JvbGxPZmZz
ZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VT
Y2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBj
b25zdAorZmxvYXQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0
T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6
ZSwgZmxvYXQgbWF4U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9mZnNldCwgZmxvYXQgcHJlZGlj
dGVkT2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IGluaXRpYWxEZWx0YSwgdW5zaWduZWQm
IG91dEFjdGl2ZVNuYXBJbmRleCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IHByb3Bvc2VkT2Zm
c2V0OwotICAgIHN0ZDo6dGllKHByb3Bvc2VkT2Zmc2V0LCBvdXRBY3RpdmVTbmFwSW5kZXgpID0g
bV9zbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0VW5pdChwcmVk
aWN0ZWRPZmZzZXQgLyBwYWdlU2NhbGUpLCBpbml0aWFsRGVsdGEpOworICAgIExheW91dFNpemUg
dmlld3BvcnRMYXlvdXRTaXplKHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVp
Z2h0KCkpOworICAgIHN0ZDo6dGllKHByb3Bvc2VkT2Zmc2V0LCBvdXRBY3RpdmVTbmFwSW5kZXgp
ID0gbV9zbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgdmlld3BvcnRMYXlv
dXRTaXplLCBMYXlvdXRVbml0KHByZWRpY3RlZE9mZnNldCAvIHBhZ2VTY2FsZSksIGluaXRpYWxE
ZWx0YSk7CiAgICAgaWYgKG91dEFjdGl2ZVNuYXBJbmRleCAhPSBpbnZhbGlkU25hcE9mZnNldElu
ZGV4KQogICAgICAgICByZXR1cm4gcGFnZVNjYWxlICogcHJvcG9zZWRPZmZzZXQ7CiAgICAgcmV0
dXJuIGNsYW1wVG88ZmxvYXQ+KHN0YXJ0T2Zmc2V0LCAwLCBtYXhTY3JvbGxPZmZzZXQpOwpAQCAt
MTA1LDExICsxMDYsNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZSYgc3RhdGUpCiAgICAgdHMgPDwgIlNjcm9sbFNu
YXBBbmltYXRvclN0YXRlIjsKICAgICB0cy5kdW1wUHJvcGVydHkoInNuYXAgb2Zmc2V0cyB4Iiwg
c3RhdGUuc25hcE9mZnNldHNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkpOwog
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic25hcCBvZmZzZXRzIHkiLCBzdGF0ZS5zbmFwT2Zmc2V0c0Zv
ckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCkpOwotICAgIGlmICghc3RhdGUuc25hcE9m
ZnNldFJhbmdlc0ZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKS5pc0VtcHR5KCkp
Ci0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic25hcCBvZmZzZXRzIHJhbmdlcyB4Iiwgc3RhdGUu
c25hcE9mZnNldFJhbmdlc0ZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSk7Ci0g
ICAgaWYgKCFzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZl
cnRpY2FsKS5pc0VtcHR5KCkpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic25hcCBvZmZzZXRz
IHJhbmdlcyB5Iiwgc3RhdGUuc25hcE9mZnNldFJhbmdlc0ZvckF4aXMoU2Nyb2xsRXZlbnRBeGlz
OjpWZXJ0aWNhbCkpOwotCiAgICAgdHMuZHVtcFByb3BlcnR5KCJhY3RpdmUgc25hcCBpbmRleCB4
Iiwgc3RhdGUuYWN0aXZlU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250
YWwpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImFjdGl2ZSBzbmFwIGluZGV4IHkiLCBzdGF0ZS5h
Y3RpdmVTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKaW5k
ZXggM2ZlYjFhYzNiNTlhYWVlNDRjNjM5YjRhZmYwYzI0MjY5NTgyMTQ5OS4uNmI2ZDIyNzVjZmEz
NDViOWEyYjZhNjllYTgxODlkNjY1ZDYxNGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oCkBAIC01NywyNCArNTcsOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/
IG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cyA6IG1fc25hcE9mZnNldHNJ
bmZvLnZlcnRpY2FsU25hcE9mZnNldHM7CiAgICAgfQogCi0gICAgY29uc3QgVmVjdG9yPFNjcm9s
bE9mZnNldFJhbmdlPExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlc0ZvckF4aXMoU2Nyb2xs
RXZlbnRBeGlzIGF4aXMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYXhpcyA9PSBTY3Jv
bGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25h
cE9mZnNldFJhbmdlcyA6IG1fc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdl
czsKLSAgICB9Ci0KLSAgICBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4m
IHNuYXBPZmZzZXRJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87IH0KLSAg
ICB2b2lkIHNldFNuYXBPZmZzZXRJbmZvKGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlv
dXRVbml0PiYgbmV3SW5mbykgeyBtX3NuYXBPZmZzZXRzSW5mbyA9IG5ld0luZm87IH0KLQotICAg
IHZvaWQgc2V0U25hcE9mZnNldHNBbmRQb3NpdGlvblJhbmdlc0ZvckF4aXMoU2Nyb2xsRXZlbnRB
eGlzIGF4aXMsIGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiYgc25hcE9mZnNl
dHMsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIHNuYXBPZmZz
ZXRSYW5nZXMpCi0gICAgewotICAgICAgICBpZiAoYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhv
cml6b250YWwpIHsKLSAgICAgICAgICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFw
T2Zmc2V0cyA9IHNuYXBPZmZzZXRzOwotICAgICAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9y
aXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPSBzbmFwT2Zmc2V0UmFuZ2VzOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cyA9
IHNuYXBPZmZzZXRzOwotICAgICAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFw
T2Zmc2V0UmFuZ2VzID0gc25hcE9mZnNldFJhbmdlczsKLSAgICAgICAgfQotICAgIH0KKyAgICBj
b25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRJbmZvKCkgY29uc3Qg
eyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87IH0KKyAgICB2b2lkIHNldFNuYXBPZmZzZXRJbmZv
KGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgbmV3SW5mbykgeyBtX3NuYXBPZmZz
ZXRzSW5mbyA9IG5ld0luZm87IH0KIAogICAgIFNjcm9sbFNuYXBTdGF0ZSBjdXJyZW50U3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRTdGF0ZTsgfQogCkBAIC0xMDAsMTMgKzg0LDEzIEBA
IHB1YmxpYzoKICAgICB2b2lkIHRyYW5zaXRpb25Ub0Rlc3RpbmF0aW9uUmVhY2hlZFN0YXRlKCk7
CiAKIHByaXZhdGU6Ci0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xs
RXZlbnRBeGlzLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9h
dCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1
bnNpZ25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdDsKKyAgICBmbG9hdCB0YXJnZXRPZmZz
ZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3Bv
cnRTaXplLCBmbG9hdCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBw
cmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNp
Z25lZCYgb3V0QWN0aXZlU25hcEluZGV4KSBjb25zdDsKICAgICB2b2lkIHRlYXJkb3duQW5pbWF0
aW9uRm9yU3RhdGUoU2Nyb2xsU25hcFN0YXRlKTsKICAgICB2b2lkIHNldHVwQW5pbWF0aW9uRm9y
U3RhdGUoU2Nyb2xsU25hcFN0YXRlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25z
dCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEpOwogCiAgICAgU2Nyb2xsU25hcFN0YXRlIG1fY3Vy
cmVudFN0YXRlIHsgU2Nyb2xsU25hcFN0YXRlOjpVc2VySW50ZXJhY3Rpb24gfTsKIAotICAgIFNj
cm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiBtX3NuYXBPZmZzZXRzSW5mbzsKKyAgICBM
YXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gbV9zbmFwT2Zmc2V0c0luZm87CiAKICAgICB1bnNp
Z25lZCBtX2FjdGl2ZVNuYXBJbmRleFggeyAwIH07CiAgICAgdW5zaWduZWQgbV9hY3RpdmVTbmFw
SW5kZXhZIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CmluZGV4IDc5ZjllOTgwOThhOGRkY2EyYjQ5Y2U5NzdkMjE0M2UxY2I2Y2FmODUuLjEzMmFlYTI4
OWUwOTc3MjI2OTNkMTJjZTA3MDA2YTU5MTY5NjFmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTQ3OSwxOSArNDc5LDE5IEBAIFN0cmluZyBTY3Jv
bGxhYmxlQXJlYTo6dmVydGljYWxTY3JvbGxiYXJTdGF0ZUZvclRlc3RpbmcoKSBjb25zdAogfQog
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLVNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlv
dXRVbml0PiYgU2Nyb2xsYWJsZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5mbygpCitMYXlvdXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8mIFNjcm9sbGFibGVBcmVhOjplbnN1cmVTbmFwT2Zmc2V0c0lu
Zm8oKQogewogICAgIGlmICghbV9zbmFwT2Zmc2V0c0luZm8pCi0gICAgICAgIG1fc25hcE9mZnNl
dHNJbmZvID0gbWFrZVVuaXF1ZTxTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4+KCk7
CisgICAgICAgIG1fc25hcE9mZnNldHNJbmZvID0gbWFrZVVuaXF1ZTxMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm8+KCk7CiAgICAgcmV0dXJuICptX3NuYXBPZmZzZXRzSW5mbzsKIH0KIAotY29u
c3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+KiBTY3JvbGxhYmxlQXJlYTo6c25h
cE9mZnNldEluZm8oKSBjb25zdAorY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBT
Y3JvbGxhYmxlQXJlYTo6c25hcE9mZnNldEluZm8oKSBjb25zdAogewogICAgIHJldHVybiBtX3Nu
YXBPZmZzZXRzSW5mby5nZXQoKTsKIH0KIAotdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xs
U25hcE9mZnNldEluZm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBp
bmZvKQordm9pZCBTY3JvbGxhYmxlQXJlYTo6c2V0U2Nyb2xsU25hcE9mZnNldEluZm8oY29uc3Qg
TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBpbmZvKQogewogICAgIGlmIChpbmZvLmlzRW1w
dHkoKSkgewogICAgICAgICBjbGVhclNuYXBPZmZzZXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCA3ZWI3YjU0MDI4Mjg0MGFiN2I1ZjMxZmRmYTZiMmJm
ZDU4ZWIxOWRjLi4zNTg3MTc5Y2RiN2Y2NzkzOThhN2M4NzczMTJlZDQ5N2MxNmZlOGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTkxLDkgKzkxLDkgQEAg
cHVibGljOgogICAgIGJvb2wgdXNlc1Njcm9sbFNuYXAoKSBjb25zdDsKIAogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCi0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU2Nyb2xsU25hcE9mZnNl
dHNJbmZvPExheW91dFVuaXQ+KiBzbmFwT2Zmc2V0SW5mbygpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyogc25hcE9mZnNldEluZm8o
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU25hcE9mZnNldHMoKSB7IH07Ci0gICAg
dm9pZCBzZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88
TGF5b3V0VW5pdD4mKTsKKyAgICB2b2lkIHNldFNjcm9sbFNuYXBPZmZzZXRJbmZvKGNvbnN0IExh
eW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYpOwogICAgIHZvaWQgY2xlYXJTbmFwT2Zmc2V0cygp
OwogICAgIHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICB2b2lkIHNl
dEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ID0gaW5kZXg7IH0KQEAgLTM4NSw4ICszODUsOCBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1hdG9yPiBt
X3Njcm9sbEFuaW1hdG9yOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIGVuc3VyZVNuYXBPZmZzZXRzSW5mbygpOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4+IG1f
c25hcE9mZnNldHNJbmZvOworICAgIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgZW5zdXJl
U25hcE9mZnNldHNJbmZvKCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPExheW91dFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbz4gbV9zbmFwT2Zmc2V0c0luZm87CiAgICAgdW5zaWduZWQgbV9jdXJyZW50SG9y
aXpvbnRhbFNuYXBQb2ludEluZGV4IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fY3VycmVudFZlcnRp
Y2FsU25hcFBvaW50SW5kZXggeyAwIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRleCBjMDk1Y2Q2NmY1OTU2ZjhiODlh
YWNiMzNkNWI3ZjgwMjMwYTlhN2I1Li5kNDUyMWQ2NThjMzNmYWQ2ZTM5NmY2MWE4MDdlOTg1MzMx
OThiZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5p
bWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1h
dG9yTWFjLm1tCkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpp
c1Bpbm5lZEZvclNjcm9sbERlbHRhKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpIGNvbnN0CiB9CiAK
ICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotc3RhdGljIGJvb2wgZ2VzdHVyZVNob3VsZEJl
Z2luU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbEV2ZW50
QXhpcyBheGlzLCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4qIG9mZnNl
dEluZm8pCitzdGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5TbmFwKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IExheW91
dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyogb2Zmc2V0SW5mbykKIHsKICAgICBpZiAoIW9mZnNldElu
Zm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAppbmRleCAzZTM4MGZkMTQ1ZDcyMjViYWMwNTcz
MzBjMTlkNmNhODhhMGUwY2QyLi4xYzgyMWVlYjdjZGJiMTRlMDNhYTRkNDg0NWJhNDEyNTg5ZWQ2
ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNh
Y3Rpb24uY3BwCkBAIC05OCw5ICs5OCw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmVxdWVzdGVkU2Nyb2xsRGF0YT4gewogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIFJlcXVlc3RlZFNjcm9sbERhdGEmKTsKIH07CiAKLXRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pj4g
ewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgU2Nyb2xsU25hcE9mZnNl
dHNJbmZvPGZsb2F0PiYpOwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGUoRGVjb2RlciYsIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mKTsKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvJik7CisgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVy
JiwgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8U25hcE9mZnNldDxmbG9hdD4+IHsKQEAgLTMxMSw3ICszMTEsNyBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFNjcm9sbAogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxQb3NpdGlvbiwgRmxvYXRQb2ludCwgc2V0U2Ny
b2xsUG9zaXRpb24pOwogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpTY3JvbGxPcmlnaW4sIEludFBvaW50LCBzZXRTY3JvbGxPcmlnaW4pOwog
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbywgU2Nyb2xsU25hcE9m
ZnNldHNJbmZvPGZsb2F0Piwgc2V0U25hcE9mZnNldHNJbmZvKTsKKyAgICBTQ1JPTExJTkdfTk9E
RV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvLCBG
bG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbywgc2V0U25hcE9mZnNldHNJbmZvKTsKICAgICBTQ1JP
TExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudEhv
cml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50SG9yaXpvbnRhbFNu
YXBQb2ludEluZGV4KTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4LCB1bnNpZ25lZCwg
c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpOwogI2VuZGlmCkBAIC01MzIsNiArNTMy
LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNuYXBPZmZzZXQ8ZmxvYXQ+Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFNuYXBPZmZzZXQKIHsKICAgICBlbmNvZGVyIDw8IG9mZnNldC5v
ZmZzZXQ7CiAgICAgZW5jb2RlciA8PCBvZmZzZXQuc3RvcDsKKyAgICBlbmNvZGVyIDw8IG9mZnNl
dC5zbmFwQXJlYUluZGV4OwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8U25hcE9mZnNldDxmbG9h
dD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU25hcE9mZnNldDxmbG9hdD4mIG9mZnNldCkK
QEAgLTU0MCwyNyArNTQxLDI2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTbmFwT2Zmc2V0PGZsb2F0
Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTbmFwT2Zmc2V0PGZsb2F0CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9mZnNldC5zdG9wKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUob2Zmc2V0LnNuYXBBcmVh
SW5kZXgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIAot
dm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0PiYgaW5m
bykKK3ZvaWQgQXJndW1lbnRDb2RlcjxGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbz46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgaW5m
bykKIHsKICAgICBlbmNvZGVyIDw8IGluZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzOwogICAgIGVu
Y29kZXIgPDwgaW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzOwotICAgIGVuY29kZXIgPDwgaW5mby5o
b3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKLSAgICBlbmNvZGVyIDw8IGluZm8udmVydGljYWxT
bmFwT2Zmc2V0UmFuZ2VzOworICAgIGVuY29kZXIgPDwgaW5mby5zbmFwQXJlYXM7CiB9CiAKLWJv
b2wgQXJndW1lbnRDb2RlcjxTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4mIGluZm8pCitib29s
IEFyZ3VtZW50Q29kZXI8RmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIGluZm8pCiB7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udmVydGljYWxTbmFwT2Zm
c2V0cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlu
Zm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykpCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnNuYXBBcmVhcykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDFkM2FiODgyNTQzNDZhYTExYWQ5YzY2ZjM0ZWFl
YzcyNzlhMTIyOWEuLjYzOWU3NDBmZTg5OWU5Y2M5N2I0NWE2NTlhMGY1OTA5MWY0ZGRiNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MjgxMiwzMiArMjgxMiw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyT3JDbGll
bnRJZGVudGlmaWVyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNlCiB9CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0KLXZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxP
ZmZzZXRSYW5nZTxmbG9hdD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xs
T2Zmc2V0UmFuZ2U8ZmxvYXQ+JiByYW5nZSkKLXsKLSAgICBlbmNvZGVyIDw8IHJhbmdlLnN0YXJ0
OwotICAgIGVuY29kZXIgPDwgcmFuZ2UuZW5kOwotfQotCi1hdXRvIEFyZ3VtZW50Q29kZXI8U2Ny
b2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpIC0+IE9wdGlv
bmFsPFdlYkNvcmU6OlNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4KLXsKLSAgICBXZWJDb3JlOjpT
Y3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4gcmFuZ2U7Ci0gICAgZmxvYXQgc3RhcnQ7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGFydCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICBmbG9hdCBlbmQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbmQpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmFuZ2Uuc3RhcnQgPSBzdGFydDsKLSAgICByYW5n
ZS5lbmQgPSBlbmQ7Ci0gICAgcmV0dXJuIHJhbmdlOwotfQotCi0jZW5kaWYKLQogdm9pZCBBcmd1
bWVudENvZGVyPE1lZGlhU2VsZWN0aW9uT3B0aW9uPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IE1lZGlhU2VsZWN0aW9uT3B0aW9uJiBvcHRpb24pCiB7CiAgICAgZW5jb2RlciA8PCBv
cHRpb24uZGlzcGxheU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCmluZGV4IGJkM2Q5ZTFiOTNiZmRjZTg5MmM4Y2EwNzIxZWEyNGY1ZmUyOWFiZGEu
LmY5YjIyZmI5NmMxMjdmN2M1M2Y4OTI4Nzg4ZTFhOWE2ZmIzZmNmOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC03NDQsMTUgKzc0NCw2IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VydmljZVdvcmtlck9y
Q2xpZW50SWRlbnRpZmllcj4gewogCiAjZW5kaWYKIAotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCi0KLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Nyb2xsT2Zm
c2V0UmFuZ2U8ZmxvYXQ+PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBXZWJDb3JlOjpTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4mKTsKLSAgICBzdGF0aWMgT3B0aW9u
YWw8V2ViQ29yZTo6U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiBkZWNvZGUoRGVjb2RlciYpOwot
fTsKLQotI2VuZGlmCi0KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
TWVkaWFTZWxlY3Rpb25PcHRpb24+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uJik7CiAgICAgc3RhdGljIE9wdGlv
bmFsPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9T
Lm1tCmluZGV4IDExNjc1ZjMyNDViYTExYWMzOThmZGJhMmZjZTM2M2JhYmYwYWE0NTQuLjA0NjQx
MDhmZDhmYWQ0OGIyYmQ0ZTM4ZjgwZjljNmIyYTU4MDI5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KQEAgLTIyMywx
NCArMjIzLDEyIEBAIGJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6c2hvdWxk
U25hcEZvck1haW5GcmFtZVNjcm9sbGluZyhTY3JvbGxFdmVuCiAKIGZsb2F0IFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFwT2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xs
aW5nKFNjcm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBzY3JvbGxEZXN0aW5hdGlvbiwgZmxvYXQg
dmVsb2NpdHksIHVuc2lnbmVkJiBjdXJyZW50SW5kZXgpIGNvbnN0CiB7Ci0gICAgU2Nyb2xsaW5n
VHJlZU5vZGUqIHJvb3QgPSBtX3Njcm9sbGluZ1RyZWUtPnJvb3ROb2RlKCk7Ci0gICAgQVNTRVJU
KHJvb3QgJiYgcm9vdC0+aXNGcmFtZVNjcm9sbGluZ05vZGUoKSk7Ci0gICAgU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZSogcm9vdFNjcm9sbGluZ05vZGUgPSBzdGF0aWNfY2FzdDxTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKj4ocm9vdCk7CisgICAgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZSogcm9vdFNjcm9sbGluZ05vZGUgPSBtX3Njcm9sbGluZ1RyZWUtPnJv
b3ROb2RlKCk7CiAgICAgY29uc3QgYXV0byYgc25hcE9mZnNldHNJbmZvID0gcm9vdFNjcm9sbGlu
Z05vZGUtPnNuYXBPZmZzZXRzSW5mbygpOwogCiAgICAgZmxvYXQgc2NhbGVkU2Nyb2xsRGVzdGlu
YXRpb24gPSBzY3JvbGxEZXN0aW5hdGlvbiAvIG1fd2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRl
bnRTY2FsZSgpOwogICAgIGZsb2F0IHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0OwotICAgIHN0ZDo6dGll
KHJhd0Nsb3Nlc3RTbmFwT2Zmc2V0LCBjdXJyZW50SW5kZXgpID0gc25hcE9mZnNldHNJbmZvLmNs
b3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIHNjYWxlZFNjcm9sbERlc3RpbmF0aW9uLCB2ZWxvY2l0eSk7
CisgICAgc3RkOjp0aWUocmF3Q2xvc2VzdFNuYXBPZmZzZXQsIGN1cnJlbnRJbmRleCkgPSBzbmFw
T2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgcm9vdFNjcm9sbGluZ05vZGUtPmxh
eW91dFZpZXdwb3J0KCkuc2l6ZSgpLCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiwgdmVsb2NpdHkp
OwogICAgIHJldHVybiByYXdDbG9zZXN0U25hcE9mZnNldCAqIG1fd2ViUGFnZVByb3h5LmRpc3Bs
YXllZENvbnRlbnRTY2FsZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KaW5kZXggODgwYzAzMTk1Zjg5
YzRiZDEzZGQ2YTY0NjUyM2YxZGY4NGM5NTY0ZS4uOGZjNjYxNWY3NmYzYzlmYWQwMGY1OTRiMzRi
MTNkZDQ0YzkyM2NkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQpAQCAtMTA2LDE2ICsxMDYsMTcgQEAgLSAo
dm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3
IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICB1bnNpZ25lZCBvcmlnaW5hbEhvcml6b250YWxTbmFw
UG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1
cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsKICAgICB1bnNpZ25lZCBvcmlnaW5hbFZl
cnRpY2FsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGlu
Z05vZGUoKS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpOwogCisgICAgV2ViQ29yZTo6
RmxvYXRTaXplIHZpZXdwb3J0U2l6ZShzdGF0aWNfY2FzdDxmbG9hdD4oQ0dSZWN0R2V0V2lkdGgo
W3Njcm9sbFZpZXcgYm91bmRzXSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oQ0dSZWN0R2V0SGVpZ2h0
KFtzY3JvbGxWaWV3IGJvdW5kc10pKSk7CiAgICAgY29uc3QgYXV0byYgc25hcE9mZnNldHNJbmZv
ID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0
c0luZm8oKTsKICAgICBpZiAoIXNuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gW3BvdGVudGlhbFNuYXBQb3NpdGlvbiwgaW5kZXhd
ID0gc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0KFdlYkNvcmU6OlNjcm9sbEV2ZW50
QXhpczo6SG9yaXpvbnRhbCwgaG9yaXpvbnRhbFRhcmdldCwgdmVsb2NpdHkueCk7CisgICAgICAg
IGF1dG8gW3BvdGVudGlhbFNuYXBQb3NpdGlvbiwgaW5kZXhdID0gc25hcE9mZnNldHNJbmZvLmNs
b3Nlc3RTbmFwT2Zmc2V0KFdlYkNvcmU6OlNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgdmll
d3BvcnRTaXplLCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54KTsKICAgICAgICAgX3Njcm9s
bGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zZXRDdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKGhvcml6b250YWxUYXJnZXQgPj0g
MCAmJiBob3Jpem9udGFsVGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNpemUud2lkdGgpCiAg
ICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT54ID0gcG90ZW50aWFsU25hcFBvc2l0aW9u
OwogICAgIH0KIAogICAgIGlmICghc25hcE9mZnNldHNJbmZvLnZlcnRpY2FsU25hcE9mZnNldHMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gW3BvdGVudGlhbFNuYXBQb3NpdGlvbiwgaW5kZXhd
ID0gc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0KFdlYkNvcmU6OlNjcm9sbEV2ZW50
QXhpczo6VmVydGljYWwsIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS54KTsKKyAgICAgICAgYXV0
byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2Vz
dFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmlld3BvcnRT
aXplLCB2ZXJ0aWNhbFRhcmdldCwgdmVsb2NpdHkueCk7CiAgICAgICAgIF9zY3JvbGxpbmdUcmVl
Tm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAodmVydGljYWxUYXJnZXQgPj0gMCAmJiB2ZXJ0aWNh
bFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLmhlaWdodCkKICAgICAgICAgICAgIHRh
cmdldENvbnRlbnRPZmZzZXQtPnkgPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGY0
YWUwZmZlZmZkMGYzMjZkMjljNzI3ODBlNGE0ZDI1NjY5NmQyMS4uZjNmNmVmYjNmODUwYTc2MjUz
ZWY0MGY0ZWZlMmNhY2U4ZDJiMjZlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAzLTE3
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBDU1Mg
c2Nyb2xsIHNuYXAgc2hvdWxkIGFsbG93IHNjcm9sbGluZyB0byB0aGUgbWlkZGxlIG9mIHNuYXAg
YXJlYXMgdGhhdCBvdmVyZmxvdyB0aGUgc25hcHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzAyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1j
bGljay1zY3JvbGxiYXItZ3V0dGVyLmh0bWw6IFRoaXMgdGVzdCB1c2VkIHNuYXAgYXJlYXMgdGhh
dAorICAgICAgICBvdmVyZmxvdyB0aGUgc25hcHBvcnQsIHRodXMgbWVhbnQgdGhhdCBpdCByZWxp
ZWQgb24gbm9uLXNwZWMgY29tcGxpYW50IGJlaGF2aW9yLiBSZXdvcmsgaXQgc28KKyAgICAgICAg
dGhhdCB0aGUgc25hcCBhcmVhcyBkbyBub3Qgb3ZlcmZsb3csIG1haW50YWluaW5nIHRoZSBleGlz
dGluZyBiZWhhdmlvci4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpv
bnRhbC5odG1sOiBEaXR0by4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRtbDogRGl0dG8uCisKIDIw
MjEtMDMtMTcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFs
aWduIGRldmljZSBvcmllbnRhdGlvbiBkZWxlZ2F0ZSB0byBnZXRVc2VyTWVkaWEvZ2VvbG9jYXRp
b24gZGVsZWdhdGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAxNzcxNjRjOGUy
OGMxZjkxZTYzZjhmOWM2ZjAzOTgwMzE0ZDFjNTJkLi4xOTE1NmYxMmMxY2YzZTZkZDFkYzdkZWM1
NTA4MmFiMmUwMDJhMTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMS0wMy0xNyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgQ1NTIHNjcm9sbCBzbmFwIHNob3VsZCBhbGxvdyBzY3JvbGxpbmcgdG8g
dGhlIG1pZGRsZSBvZiBzbmFwIGFyZWFzIHRoYXQgb3ZlcmZsb3cgdGhlIHNuYXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMjEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0
ZWQudHh0OiBVcGRhdGUgZXhwZWN0YXRpb25zIHRvCisgICAgICAgIHNob3cgdGhhdCB0aGlzIHRl
c3QgaXMgbm93IHBhc3NpbmcuCisKIDIwMjEtMDMtMTYgIEFsZXhleSBTaHZheWthICA8c2h2YWlr
YWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIENhY2hlIGNyb3NzLW9yaWdpbiBtZXRob2RzIC8g
YWNjZXNzb3JzIG9mIFdpbmRvdyBhbmQgTG9jYXRpb24gcGVyIGxleGljYWwgZ2xvYmFsIG9iamVj
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1j
bGljay1zY3JvbGxiYXItZ3V0dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbAppbmRleCA3YjM1MjZjYzRk
ZDA3ZDUxYzllYzkzZGM4OWQ0OTAyYmYwYmQ0NjMyLi45NGRhOGJlNTMxYmZkZWI5NDIwNWY3ZThl
YzIxMjYxZDFkZjg2YmY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRt
bApAQCAtMzQsMjEgKzM0LDMyIEBACiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTog
Ym90aCBtYW5kYXRvcnk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC5ibG9jayB7Ci0g
ICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAwcHg7Ci0gICAgICAgICAgICAgICAgd2lkdGg6IDI1
MHB4OwotICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKLSAgICAgICAg
ICAgIH0KLQogICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyIHsKICAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgICAgICAgd2lkdGg6IDIwMDBweDsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyIC5ibG9jayB7Ci0gICAgICAg
ICAgICAgICAgd2lkdGg6IDEwMDBweDsKLSAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1MHB4Owor
ICAgICAgICAgICAgLmhvcml6b250YWwtZHJhd2VyID4gZGl2IHsKKyAgICAgICAgICAgICAgICBm
bG9hdDogbGVmdDsKKyAgICAgICAgICAgICAgICB3aWR0aDogOTkwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAuaG9yaXpvbnRh
bC1kcmF3ZXIgPiBkaXYuc25hcC1wb2ludCB7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAt
YWxpZ246IHN0YXJ0OworICAgICAgICAgICAgICAgIHdpZHRoOiAxMHB4OworICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgI3ZlcnRpY2FsLWNvbnRhaW5lciA+IGRpdiB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiA5OTBweDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgI3ZlcnRpY2FsLWNvbnRhaW5lciA+IGRpdi5zbmFwLXBv
aW50IHsKKyAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAxMHB4OwogICAgICAgICAgICAgfQorCiAgICAgICAgIDwvc3R5bGU+
CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48
L3NjcmlwdD4KQEAgLTg3LDEzICs5OCwxNyBAQAogICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KICAgICAgICAgPGRpdiBpZD0iaG9yaXpvbnRhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWlu
ZXIiPgogICAgICAgICAgICAgPGRpdiBjbGFzcz0iaG9yaXpvbnRhbC1kcmF3ZXIiPgotICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IGJhY2tncm91
bmQ6ICM4MDQ3NUUiPjwvZGl2PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIiBz
dHlsZT0id2lkdGg6IDQ1MHB4OyBmbG9hdDogbGVmdDsgYmFja2dyb3VuZDogI0NDNUE3MSI+PC9k
aXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcC1wb2ludCIgc3R5bGU9ImJhY2tn
cm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+CisgICAg
ICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcC1wb2ludCIgc3R5bGU9ImJhY2tncm91bmQ6ICND
QzVBNzEiPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+CiAgICAgICAgICAgICA8
L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAgIDxkaXYgaWQ9InZlcnRpY2FsLWNvbnRhaW5l
ciIgY2xhc3M9ImNvbnRhaW5lciI+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayIgc3R5
bGU9ImJhY2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
YmxvY2siIHN0eWxlPSJoZWlnaHQ6IDQ1MHB4OyBiYWNrZ3JvdW5kOiAjQ0M1QTcxIj48L2Rpdj4K
KyAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXAtcG9pbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiAj
ODA0NzVFIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzbmFwLXBvaW50IiBzdHlsZT0iYmFja2dyb3VuZDogI0NDNUE3MSI+PC9kaXY+Cisg
ICAgICAgICAgICA8ZGl2PjwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPHAgaWQ9ImNv
bnNvbGUiPjwvcD4KICAgICAgICAgPHNjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxv
d2luZy1zbmFwLWFyZWFzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFy
ZWFzLWV4cGVjdGVkLnR4dAppbmRleCBhNDVkMmFkY2RkZjZjZjAzZGYzOTg2M2MzNjM2NTkzM2I4
OGUyODFlLi4yNTljZDk4MGM1NDlhMDU4YTA4ZmZmYTdmMjQzMjFmNmFjNTgzMjI3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
c2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1z
bmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDEzIEBA
CiAKIFBBU1MgU25hcHMgdG8gdGhlIHNuYXAgcG9zaXRpb24gaWYgdGhlIHNuYXAgYXJlYSBkb2Vz
bid0IGNvdmVyIHRoZSBzbmFwcG9ydCBvbiB4LgotRkFJTCBTbmFwcyB0byB0aGUgc25hcCBwb3Np
dGlvbiBpZiB0aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUgcmln
aHQgYm9yZGVyLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyNzE1IGJ1dCBnb3QgMjAwCi1GQUlM
IFNuYXBzIHRvIHRoZSBzbmFwIHBvc2l0aW9uIGlmIHRoZSBzbmFwIGFyZWEgY292ZXJzIHRoZSBz
bmFwcG9ydCBvbiB4IG9uIHRoZSBsZWZ0IGJvcmRlci4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
MjAwIGJ1dCBnb3QgMjcxNQorUEFTUyBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBpZiB0aGUg
c25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUgcmlnaHQgYm9yZGVyLgor
UEFTUyBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBpZiB0aGUgc25hcCBhcmVhIGNvdmVycyB0
aGUgc25hcHBvcnQgb24geCBvbiB0aGUgbGVmdCBib3JkZXIuCiBQQVNTIFNuYXBzIGlmIHRoZSBk
aXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg0MDApIGFuZCBuZXh0KDgwMCkgc25hcCBwb3Np
dGlvbnMgaXMgc21hbGxlciB0aGFuIHNuYXBwb3J0KDUwMCkgb24geC4KIFBBU1MgU25hcHMgaWYg
dGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDQwMCkgYW5kIG5leHQoODAwKSBzbmFw
IHBvc2l0aW9ucyBpcyBzbWFsbGVyIHRoYW4gc25hcHBvcnQoNTAwKSBvbiB5LgotRkFJTCBTbmFw
IHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlv
biwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlIGRpc3RhbmNl
IGJldHdlZW4gdGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2VyIHRoYW4g
c25hcHBvcnQoNTAwKS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgOTAwIGJ1dCBnb3QgODAwCi1G
QUlMIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFw
IHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB5IGFuZCB0aGUg
ZGlzdGFuY2UgYmV0d2VlbiB0aGUgcHJldmlvdXMoODAwKSBhbmQgbmV4dCgxNDAwKSBpcyBsYXJn
ZXIgdGhhbiBzbmFwcG9ydCg1MDApLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCA5MDAgYnV0IGdv
dCA4MDAKLUZBSUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBhIHZh
bGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9uIHgg
YW5kIHRoZXJlIGlzIG5vIHN1YnNlcXVlbnQgc25hcCBwb3NpdGlvbnMuIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkIDE1MDAgYnV0IGdvdCAxNDAwCi1GQUlMIFNuYXAgdG8gY3VycmVudCBzY3JvbGwg
cG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVh
IGNvdmVycyBzbmFwcG9ydCBvbiB5IGFuZCB0aGVyZSBpcyBubyBzdWJzZXF1ZW50IHNuYXAgcG9z
aXRpb25zLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAxNTAwIGJ1dCBnb3QgMTQwMAotRkFJTCBE
b24ndCBzbmFwIGJhY2sgZXZlbiBpZiBzY3JvbGxUbyB0cmllcyB0byBzY3JvbGwgdG8gcG9zaXRp
b25zIHdoaWNoIGFyZSBvdXRzaWRlIG9mIHRoZSBzY3JvbGwgcmFuZ2UgYW5kIGlmIGEgc25hcCB0
YXJnZXQgZWxlbWVudCBjb3ZlcnMgdGhlIHNuYXBvcnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
MzcxNSBidXQgZ290IDIyMDAKLUZBSUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBv
biB4IGFzIHRoZSBhcmVhIGlzIGNvdmVyaW5nIHggYXhpcy5Ib3dldmVyLCB3ZSBzbmFwIHRvIHRo
ZSBzcGVjaWZpZWQgc25hcCBwb3NpdGlvbiBvbiB5IGFzIHRoZSBhcmVhIGlzIG5vdCBjb3Zlcmlu
ZyB5IGF4aXMuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDEwIGJ1dCBnb3QgMAorUEFTUyBTbmFw
IHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlv
biwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlIGRpc3RhbmNl
IGJldHdlZW4gdGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2VyIHRoYW4g
c25hcHBvcnQoNTAwKS4KK1BBU1MgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGlj
aCBpcyBhIHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBw
b3J0IG9uIHkgYW5kIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg4MDApIGFuZCBu
ZXh0KDE0MDApIGlzIGxhcmdlciB0aGFuIHNuYXBwb3J0KDUwMCkuCitQQVNTIFNuYXAgdG8gY3Vy
cmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0
aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB4IGFuZCB0aGVyZSBpcyBubyBzdWJzZXF1
ZW50IHNuYXAgcG9zaXRpb25zLgorUEFTUyBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9u
IHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMg
c25hcHBvcnQgb24geSBhbmQgdGhlcmUgaXMgbm8gc3Vic2VxdWVudCBzbmFwIHBvc2l0aW9ucy4K
K1BBU1MgRG9uJ3Qgc25hcCBiYWNrIGV2ZW4gaWYgc2Nyb2xsVG8gdHJpZXMgdG8gc2Nyb2xsIHRv
IHBvc2l0aW9ucyB3aGljaCBhcmUgb3V0c2lkZSBvZiB0aGUgc2Nyb2xsIHJhbmdlIGFuZCBpZiBh
IHNuYXAgdGFyZ2V0IGVsZW1lbnQgY292ZXJzIHRoZSBzbmFwb3J0CitQQVNTIFNuYXAgdG8gY3Vy
cmVudCBzY3JvbGwgcG9zaXRpb24gb24geCBhcyB0aGUgYXJlYSBpcyBjb3ZlcmluZyB4IGF4aXMu
SG93ZXZlciwgd2Ugc25hcCB0byB0aGUgc3BlY2lmaWVkIHNuYXAgcG9zaXRpb24gb24geSBhcyB0
aGUgYXJlYSBpcyBub3QgY292ZXJpbmcgeSBheGlzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRv
cnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5
LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbAppbmRleCA2NDI3YTExNGU0
OGIyNmJlNjViNTVlN2I4NjhkZjg2NzU2OTFhOWY4Li45NGRhZDIxNjhjNjBkZTkxNTQ3NmIxZDAx
MGE2NDNkMDRmZTkyMGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRp
Y2FsLXRoZW4taG9yaXpvbnRhbC5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVy
dGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwKQEAgLTQsNiArNCw3IEBACiAgICAgICAgIDxzdHls
ZT4KICAgICAgICAgICAgIGh0bWwgewogICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6
IHkgbWFuZGF0b3J5OworICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewogICAgICAgICAgICAgICAgIHdpZHRoOiAx
MDB2dzsKQEAgLTEyLDcgKzEzLDcgQEAKICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgLmNvbG9yQm94IHsKLSAgICAgICAgICAgICAgICBoZWln
aHQ6IDEwMHZoOworICAgICAgICAgICAgICAgIGhlaWdodDogOTB2aDsKICAgICAgICAgICAgICAg
ICB3aWR0aDogMTAwdnc7CiAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgICAg
ICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5
LW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRtbAppbmRleCA1YjA1MmZk
YmY5NGM4NGEzZDhlMGQxYTI4ZmNiNTIyMDJhZWY5ZjJmLi4xNTMxZTFlM2FiMjI1ZTUwMmIzYjcy
MGQxZDA2MWI4YmUzMGZmNjJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRtbApAQCAtMTMsMjEgKzEzLDE2IEBACiAg
ICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICAgICAgIHRvcDog
MDsKICAgICAgICAgICAgICAgICBsZWZ0OiAwOwotICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IG5vbmU7CiAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgICAgICAg
ICAgIHNjcm9sbC1zbmFwLXR5cGU6IHkgcHJveGltaXR5OwotICAgICAgICAgICAgICAgIC13ZWJr
aXQtc2Nyb2xsLXNuYXAtdHlwZTogcHJveGltaXR5OwotICAgICAgICAgICAgICAgIHNjcm9sbC1z
bmFwLXR5cGU6IHByb3hpbWl0eTsKICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIC5hcmVhIHsKLSAgICAgICAgICAgICAgICBoZWlnaHQ6
IDYwMHB4OwotICAgICAgICAgICAgICAgIHdpZHRoOiA2MDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAg
ICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0
OwotICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtY29vcmRpbmF0ZTogMCAwOwot
ICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWNvb3JkaW5hdGU6IDAgMDsKICAgICAgICAgICAg
IH0KICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424004</attachid>
            <date>2021-03-23 03:11:43 -0700</date>
            <delta_ts>2021-05-18 03:18:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223021-20210323111141.patch</filename>
            <type>text/plain</type>
            <size>82129</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTMxZmQ0ZTM2YTJkZWFh
OTQ4Y2ZiMjFmM2RiM2E2Mjc3YTAzMDMzMi4uZGM4MmJhZWM5ZjQwMDBmNjgxZjc4MjQwODgwZDA4
YjcyMDhhOWI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIxLTAzLTIzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBDU1Mgc2Nyb2xs
IHNuYXAgc2hvdWxkIGFsbG93IHNjcm9sbGluZyB0byB0aGUgbWlkZGxlIG9mIHNuYXAgYXJlYXMg
dGhhdCBvdmVyZmxvdyB0aGUgc25hcHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMzAyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFByb3Blcmx5IGhhbmRsZSBvdmVyZmxvd2luZyBzbmFwIGFyZWFz
LiBUaGlzIHJlcXVpcmVzIHJld3JpdGluZyB0aGUgc25hcHBpbmcgYWxnb3JpdGhtLgorICAgICAg
ICBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gbm93IHN0b3JlcyBzbmFwIGFyZWEgcmVjdGFuZ2xlcywg
d2hpY2ggYXJlIHVzZWQgdG8gaW1wbGVtZW50CisgICAgICAgIHNwZWMtY29tcGxpYW50IHNuYXAg
cG9pbnQgc2VsZWN0aW9uIGJlaGF2aW9yIGluIHNpdHVhdGlvbnMgd2hlcmUgc25hcCBhcmVhcyBv
dmVyZmxvdyB0aGUKKyAgICAgICAgc25hcHBvcnQuIENvbmNyZXRlbHksIGluIHRoaXMgc2l0dWF0
aW9uLCBhbnkgc2Nyb2xsIG9mZnNldCB3aXRoaW4gdGhlIHNuYXAgYXJlYSB3aGVyZSB0aGUKKyAg
ICAgICAgYXJlYSBmaWxscyB0aGUgZW50aXJlIHZpZXdwb3J0IChpbiB0aGUgYXhpcyBvZiBzY3Jv
bGwpIGlzIGEgdmFsaWQgc25hcCBwb2ludC4KKworICAgICAgICBJbiBhZGRpdGlvbiwgc25hcCBv
ZmZzZXQgcmFuZ2VzIGFyZSBubyBsb25nZXIga2VwdCB0byByZXByZXNlbnQgcHJveGltaXR5LCBz
aW5jZSBwcm94aW1pdHkKKyAgICAgICAgY2FuIGJlIGhhbmRsZWQgZHVyaW5nIGEgbW9yZSB0aG9y
b3VnaCBzbmFwIHBvaW50IHNlbGVjdGlvbiBwcm9jZXNzLgorCisgICAgICAgIFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyBub3cgY29udGFpbnMgYSByZWN0YW5nbGUgdHlwZSwgd2hpY2ggaXMgZWl0aGVy
IGEgTGF5b3V0UmVjdCBvciBhCisgICAgICAgIEZsb2F0UmVjdCwgc28gdGhlIHRlbXBsYXRlIG5l
ZWRzIHRvIGNhcnJ5IHRoaXMgdHlwZSBhcyB3ZWxsLiBJbiBvcmRlciB0byBtYWtlIGl0IHNpbXBs
ZXIgdG8KKyAgICAgICAgcmVmZXIgdG8gYSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gdGhpcyBjaGFu
Z2UgY3JlYXRlcyB0d28gdHlwZSBhbGlhc2VzLAorICAgICAgICBGbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyBhbmQgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvLCB3aGljaCBhcmUgdXNlZCB0
aHJvdWdob3V0CisgICAgICAgIHRoZSBjb2RlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhp
cyBjaGFuZ2UgZml4ZXMgdGhlIFdQVCB0ZXN0OgorICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy5o
dG1sCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcDogVXNlIHRoZSBuZXcgdHlwZSBhbGlhc2VzLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kRmlyc3RT
bmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbik6IFVwZGF0ZWQgdG8gcmV0
dXJuIGFuIG9mZnNldC9pbmRleAorICAgICAgICBwYWlyIHNvIHRoZSByZXR1cm4gdHlwZSBvZiB0
aGlzIGZ1bmN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGF0IG9mIGNhbGN1bGF0ZUNsb3Nlc3RT
bmFwT2Zmc2V0LgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxh
YmxlQXJlYSk6IE5vIGxvbmdlciBzdG9yZSBvZmZzZXQgcmFuZ2VzIGZvciBwcm94aW1pdHkgc25h
cHBpbmcKKyAgICAgICAgYW5kIGFsc28gc3RvcmUgc25hcCBhcmVhcyBjb252ZXJ0ZWQgdG8gIm9m
ZnNldCIgY29vcmRpbmF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0T2Zmc2V0SW5mbyk6
IE5vIGxvbmdlciBuZWVkIHRvIGNvbnZlcnQgb2Zmc2V0IHJhbmdlcywgYnV0IHRoaXMgZG9lcyBu
b3cKKyAgICAgICAgcmVxdWlyZSBjb252ZXJ0aW5nIG9mZnNldCBhcmVhcy4KKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMgY29uc3QpOiBV
c2UgdGhlIG5ldyB0eXBlIGFsaWFzZXMuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTY3JvbGxT
bmFwT2Zmc2V0c0luZm86OmNvbnZlcnRVbml0cyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6bWF4Rm9yQXhpcyk6IEFkZGVkIHRoaXMgaGVscGVyIHdoaWNoIGdldHMgdGhlIG1heGlt
dW0gaW4gYSBwYXJ0aWN1bGFyIGF4aXMgZ2l2ZW4gdGhlIGF4aXMuCisgICAgICAgIChXZWJDb3Jl
OjptaW5Gb3JBeGlzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc05lYXJFbm91Z2hUb09m
ZnNldEZvclByb3hpbWl0eSk6IEFkZGVkIHRoaXMgaGVscGVyIHdoaWNoIHJlcGxhY2VzIGNvbXB1
dGVBeGlzUHJveGltaXR5U25hcE9mZnNldFJhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1
bGF0ZUNsb3Nlc3RTbmFwT2Zmc2V0KTogVGhpcyByZXBsYWNlcyBjbG9zZXN0U25hcE9mZnNldFdp
dGhPZmZzZXRzQW5kUmFuZ2VzLCBidXQgYWxzbworICAgICAgICBhbmQgaW5kaWNlc09mTmVhcmVz
dFNuYXBPZmZzZXRzLiBOb3cgd3JpdHRlbiB1c2luZyBzbmFwIGFyZWFzIGZyb20gdGhlIGRhdGEg
c3RydWN0dXJlIGFzIHdlbGwgYXMKKyAgICAgICAgd2l0aCBwcm9wZXIgaGFuZGxpbmcgZm9yIG92
ZXJmbG93aW5nIHNuYXAgYXJlYXMuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTY3JvbGxTbmFw
T2Zmc2V0c0luZm86OmNsb3Nlc3RTbmFwT2Zmc2V0IGNvbnN0KTogVXBkYXRlIGZvciBuZXcgbWV0
aG9kIG5hbWVzIGFuZCB0eXBlIGFsaWFzZXMuCisgICAgICAgIChXZWJDb3JlOjpGbG9hdFNjcm9s
bFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQgY29uc3QpOiBEaXR0by4KKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6aXNFcXVhbCBjb25zdCk6IE5vIGxvbmdlciBs
b29rIGF0IHNuYXAgb2Zmc2V0IHJhbmdlcywgYnV0IGRvIHRha2UgaW50bworICAgICAgICBjb25z
aWRlcmF0aW9uIHRoZSBzbmFwIGFyZWFzLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25hcE9m
ZnNldHNJbmZvOjpvZmZzZXRzRm9yQXhpcyBjb25zdCk6IFJlbmFtZWQgdGhlIHRlbXBsYXRlIGFy
Z3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6IFJlbW92ZWQuCisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcDogVXNlIHRo
ZSBuZXcgdHlwZSBhbGlhcy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaDogRGl0dG8uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM6OnVw
ZGF0ZUZyb21TdGF0ZU5vZGUpOiBjb252ZXJ0VW5pdHMgbm93IHRha2VzIHR3byB0ZW1wbGF0ZSBh
cmd1bWVudHMuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudCk6
IFBhc3MgdGhlIHZpZXdwb3J0IHNpemUuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKTogUGFzcyBpbiB0aGUgdmlld3BvcnQgc2l6ZSB3aGVuIHNlbGVjdGluZyBz
bmFwIHBvaW50cy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OmFkanVzdFNj
cm9sbERlc3RpbmF0aW9uKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQ29udHJv
bGxlci5oOiBVc2UgdGhlIG5ldyB0eXBlIGFsaWFzLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bFNuYXBBbmltYXRvclN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmlt
YXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKTogUGFzcyB2aWV3cG9ydCBzaXplIHRv
IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0IGNvbnN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KTogTm8gbG9uZ2VyIHByaW50IHNuYXAgb2Zm
c2V0IHJhbmdlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5o
OiBSZW1vdmVkIG1ldGhvZCBkZWFsaW5nIHdpdGggcmFuZ2VzLiBOb3cgcGFzcyB2aWV3cG9ydCBz
aXplIHRvIHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0LgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcDogVXNlIHRoZSBuZXcgdHlwZSBhbGlhc2VzLgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5tbTogRGl0dG8uCisKIDIwMjEtMDMtMjMgIE1hcnRpbiBSb2JpbnNv
biAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIE5vIHNjcm9sbGluZyBtb21lbnR1
bSB3aXRoICdzY3JvbGwtc25hcC10eXBlOiB4IG1hbmRhdG9yeScgaWYgdGhlIHNjcm9sbGVyIHNj
cm9sbHMgdmVydGljYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5NjNkNTJkOTMxZmEwOTg3MTBlOTBhOTZhOGYx
YWVlYTY1MjU5NzI2Li4wZDI2OTVhNGMxMWUxNzRkODg5NzhhZTkyZjE3YjcxNTZjYjM2YWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAzLTIzICBNYXJ0aW4gUm9iaW5zb24gIDxt
cm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBDU1Mgc2Nyb2xsIHNuYXAgc2hvdWxkIGFs
bG93IHNjcm9sbGluZyB0byB0aGUgbWlkZGxlIG9mIHNuYXAgYXJlYXMgdGhhdCBvdmVyZmxvdyB0
aGUgc25hcHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMzAyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBubyBsb25nZXIgaG9sZHMgc25hcCBvZmZzZXQgcmFu
Z2VzLCBidXQgaXMgYWxzbyB0ZW1wbGF0ZWQgb2ZmCisgICAgICAgIG9mIGEgcmVjdCB0eXBlLiBJ
biBXZWJLaXQgd2Ugc3dpdGNoIHRvIHVzaW5nIHRoZSBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5m
byBhbGlhcy4KKyAgICAgICAgQWRkaXRpb25hbGx5LCB3ZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHZp
ZXdwb3J0IHNpemUgd2hlbiByZXF1ZXN0aW5nIGEgc25hcCBvZmZzZXQKKyAgICAgICAgcG9zaXRp
b24uCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUpOiBTd2l0Y2ggdG8gdXNpbmcgdGhlIEZsb2F0
U2Nyb2xsU25hcE9mZnNldHNJbmZvIGFsaWFzLgorICAgICAgICAoQXJndW1lbnRDb2RlcjxGbG9h
dFNjcm9sbFNuYXBPZmZzZXRzSW5mbz46OmVuY29kZSk6IERpdHRvLiBBbHNvIHdlIG5vIGxvbmdl
ciBuZWVkIHRvIGVuY29kZSB0aGUgcmFuZ2VzLgorICAgICAgICAoQXJndW1lbnRDb2RlcjxGbG9h
dFNjcm9sbFNuYXBPZmZzZXRzSW5mbz46OmRlY29kZSk6IERpdHRvLgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNsb3Nlc3RTbmFw
T2Zmc2V0Rm9yTWFpbkZyYW1lU2Nyb2xsaW5nIGNvbnN0KTogUGFzcyBpbiB0aGUgdmlld3BvcnQg
c2l6ZSBub3cuCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKC1bV0tTY3JvbGxp
bmdOb2RlU2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6d2l0aFZl
bG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6IERpdHRvLgorCiAyMDIxLTAzLTIyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9j
ZXNzXTogSW1wcm92ZSBnZXRJbWFnZURhdGEoKSBwZXJmIHBhcnQgMTogQWRkIGEgR2V0SW1hZ2VE
YXRhIGRpc3BsYXkgbGlzdCBpdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDU4NDgwYTJk
N2E4ZjhhY2JjMGRjNmUzZDE1ODQ3NDAwNDc5YjdjOTcuLjQ4MGZlOTVkODJiMjkxNDk3OWZhMDU5
YjY2YjkzZTcxYThmNzgxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC05MiwxNSArOTIs
MTUgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYW5kbGVXaGVlbEV2ZW50UGhh
c2UoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgUGwKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFw
T2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBub2RlLCBjb25zdCBT
Y3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4qIG9mZnNldEluZm8sIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKQorc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNu
YXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIGNvbnN0
IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyogb2Zmc2V0SW5mbywgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCiB7CiAgICAgaWYgKCFvZmZzZXRJbmZvKSB7Ci0gICAgICAgIG5vZGUuc2V0U25h
cE9mZnNldHNJbmZvKFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD4oKSk7CisgICAgICAgIG5v
ZGUuc2V0U25hcE9mZnNldHNJbmZvKEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEluY29ycG9yYXRlIGN1cnJlbnQg
cGFnZSBzY2FsZSBmYWN0b3IgaW4gc25hcHBpbmcgdG8gZGV2aWNlIHBpeGVsLiBQZXJoYXBzIHdl
IHNob3VsZCBqdXN0IGNvbnZlcnQgdG8gZmxvYXQgaGVyZSBhbmQgbGV0IFVJIHByb2Nlc3MgZG8g
dGhlIHBpeGVsIHNuYXBwaW5nPwotICAgIG5vZGUuc2V0U25hcE9mZnNldHNJbmZvKG9mZnNldElu
Zm8tPmNvbnZlcnRVbml0czxmbG9hdD4oZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICBub2RlLnNl
dFNuYXBPZmZzZXRzSW5mbyhvZmZzZXRJbmZvLT5jb252ZXJ0VW5pdHM8ZmxvYXQsIEZsb2F0UmVj
dD4oZGV2aWNlU2NhbGVGYWN0b3IpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcAppbmRleCBh
Y2ZlZDBmMzgzNzhlYjRlMmVjMmE1MWI0MTAyOGY1MjAzZDU3Y2I0Li42NDAyNGU5YmYxYTFiZDlk
ZTE1YWFhNDRhYzYyMzA5N2JiMGVjNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKQEAgLTQxLDY4ICs0MSwx
MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBMYXlvdXRU
eXBlPgotc3RhdGljIHZvaWQgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRSYW5nZXMoTGF5b3V0
VHlwZSBvZmZzZXQsIGNvbnN0IFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxMYXlvdXRUeXBlPj4m
IHNuYXBPZmZzZXRSYW5nZXMsIHVuc2lnbmVkJiBsb3dlckluZGV4LCB1bnNpZ25lZCYgdXBwZXJJ
bmRleCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBVbml0VHlwZT4KK3N0YXRpYyBPcHRpb25hbDxzdGQ6
OnBhaXI8VW5pdFR5cGUsIHVuc2lnbmVkPj4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVu
T3JpZ2luQW5kRGVzdGluYXRpb24oY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8VW5pdFR5cGU+PiYg
c25hcE9mZnNldHMsIFVuaXRUeXBlIHNjcm9sbE9yaWdpbk9mZnNldCwgVW5pdFR5cGUgc2Nyb2xs
RGVzdGluYXRpb25PZmZzZXQpCiB7Ci0gICAgaWYgKHNuYXBPZmZzZXRSYW5nZXMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGxvd2VySW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OwotICAgICAg
ICB1cHBlckluZGV4ID0gaW52YWxpZFNuYXBPZmZzZXRJbmRleDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGludCBsb3dlckluZGV4QXNJbnQgPSAtMTsKLSAgICBpbnQgdXBwZXJJbmRl
eEFzSW50ID0gc25hcE9mZnNldFJhbmdlcy5zaXplKCk7Ci0gICAgZG8gewotICAgICAgICBpbnQg
bWlkZGxlSW5kZXggPSAobG93ZXJJbmRleEFzSW50ICsgdXBwZXJJbmRleEFzSW50KSAvIDI7Ci0g
ICAgICAgIGF1dG8mIHJhbmdlID0gc25hcE9mZnNldFJhbmdlc1ttaWRkbGVJbmRleF07Ci0gICAg
ICAgIGlmIChyYW5nZS5zdGFydCA8IG9mZnNldCAmJiBvZmZzZXQgPCByYW5nZS5lbmQpIHsKLSAg
ICAgICAgICAgIGxvd2VySW5kZXhBc0ludCA9IG1pZGRsZUluZGV4OwotICAgICAgICAgICAgdXBw
ZXJJbmRleEFzSW50ID0gbWlkZGxlSW5kZXg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChvZmZzZXQgPiByYW5nZS5lbmQpCi0gICAgICAgICAgICBsb3dlcklu
ZGV4QXNJbnQgPSBtaWRkbGVJbmRleDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdXBwZXJJ
bmRleEFzSW50ID0gbWlkZGxlSW5kZXg7Ci0gICAgfSB3aGlsZSAobG93ZXJJbmRleEFzSW50IDwg
dXBwZXJJbmRleEFzSW50IC0gMSk7Ci0KLSAgICBpZiAob2Zmc2V0IDw9IHNuYXBPZmZzZXRSYW5n
ZXMuZmlyc3QoKS5zdGFydCkKLSAgICAgICAgbG93ZXJJbmRleCA9IGludmFsaWRTbmFwT2Zmc2V0
SW5kZXg7Ci0gICAgZWxzZQotICAgICAgICBsb3dlckluZGV4ID0gbG93ZXJJbmRleEFzSW50Owot
Ci0gICAgaWYgKG9mZnNldCA+PSBzbmFwT2Zmc2V0UmFuZ2VzLmxhc3QoKS5lbmQpCi0gICAgICAg
IHVwcGVySW5kZXggPSBpbnZhbGlkU25hcE9mZnNldEluZGV4OwotICAgIGVsc2UKLSAgICAgICAg
dXBwZXJJbmRleCA9IHVwcGVySW5kZXhBc0ludDsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIExh
eW91dFR5cGU+Ci1zdGF0aWMgdm9pZCBpbmRpY2VzT2ZOZWFyZXN0U25hcE9mZnNldHMoTGF5b3V0
VHlwZSBvZmZzZXQsIGNvbnN0IFZlY3RvcjxTbmFwT2Zmc2V0PExheW91dFR5cGU+PiYgc25hcE9m
ZnNldHMsIHVuc2lnbmVkJiBsb3dlckluZGV4LCB1bnNpZ25lZCYgdXBwZXJJbmRleCkKLXsKLSAg
ICBsb3dlckluZGV4ID0gMDsKLSAgICB1cHBlckluZGV4ID0gc25hcE9mZnNldHMuc2l6ZSgpIC0g
MTsKLSAgICB3aGlsZSAobG93ZXJJbmRleCA8IHVwcGVySW5kZXggLSAxKSB7Ci0gICAgICAgIGlu
dCBtaWRkbGVJbmRleCA9IChsb3dlckluZGV4ICsgdXBwZXJJbmRleCkgLyAyOwotICAgICAgICBh
dXRvIG1pZGRsZU9mZnNldCA9IHNuYXBPZmZzZXRzW21pZGRsZUluZGV4XS5vZmZzZXQ7Ci0gICAg
ICAgIGlmIChvZmZzZXQgPT0gbWlkZGxlT2Zmc2V0KSB7Ci0gICAgICAgICAgICB1cHBlckluZGV4
ID0gbWlkZGxlSW5kZXg7Ci0gICAgICAgICAgICBsb3dlckluZGV4ID0gbWlkZGxlSW5kZXg7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChvZmZzZXQgPiBtaWRk
bGVPZmZzZXQpCi0gICAgICAgICAgICBsb3dlckluZGV4ID0gbWlkZGxlSW5kZXg7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHVwcGVySW5kZXggPSBtaWRkbGVJbmRleDsKLSAgICB9Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBMYXlvdXRUeXBlPgotc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVk
PiBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihjb25z
dCBWZWN0b3I8U25hcE9mZnNldDxMYXlvdXRUeXBlPj4mIHNuYXBPZmZzZXRzLCBMYXlvdXRUeXBl
IHNjcm9sbE9yaWdpbk9mZnNldCwgTGF5b3V0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCkK
LXsKLSAgICBMYXlvdXRUeXBlIGRpZmZlcmVuY2UgPSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAt
IHNjcm9sbE9yaWdpbk9mZnNldDsKKyAgICBVbml0VHlwZSBkaWZmZXJlbmNlID0gc2Nyb2xsRGVz
dGluYXRpb25PZmZzZXQgLSBzY3JvbGxPcmlnaW5PZmZzZXQ7CiAgICAgaWYgKCFkaWZmZXJlbmNl
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkBAIC0xMTMsNyArNTUsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8dW5zaWduZWQ+IGZpbmRGaXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdp
bkFuZERlc3RpbmF0aW9uKGNvbgogICAgICAgICBpdGVyYXRpb24gPSAtMTsKICAgICB9CiAKLSAg
ICBhdXRvIGlzUGFzdCA9IFtkaWZmZXJlbmNlXShMYXlvdXRUeXBlIG1hcmssIExheW91dFR5cGUg
Y2FuZGlkYXRlKSB7CisgICAgYXV0byBpc1Bhc3QgPSBbZGlmZmVyZW5jZV0oVW5pdFR5cGUgbWFy
aywgVW5pdFR5cGUgY2FuZGlkYXRlKSB7CiAgICAgICAgIHJldHVybiAoZGlmZmVyZW5jZSA+IDAg
JiYgY2FuZGlkYXRlID4gbWFyaykgfHwgKGRpZmZlcmVuY2UgPCAwICYmIGNhbmRpZGF0ZSA8IG1h
cmspOwogICAgIH07CiAKQEAgLTEyNCw2NSArNjYsMTIgQEAgc3RhdGljIE9wdGlvbmFsPHVuc2ln
bmVkPiBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihj
b24KICAgICAgICAgaWYgKHNuYXBPZmZzZXRzW2ldLnN0b3AgIT0gU2Nyb2xsU25hcFN0b3A6OkFs
d2F5cykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoaXNQYXN0KHNjcm9sbE9y
aWdpbk9mZnNldCwgb2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgTGF5b3V0VHlwZT4KLXN0YXRpYyBzdGQ6OnBhaXI8TGF5b3V0VHlwZSwgdW5zaWduZWQ+IGNs
b3Nlc3RTbmFwT2Zmc2V0V2l0aE9mZnNldHNBbmRSYW5nZXMoY29uc3QgVmVjdG9yPFNuYXBPZmZz
ZXQ8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJh
bmdlPExheW91dFR5cGU+PiYgc25hcE9mZnNldFJhbmdlcywgTGF5b3V0VHlwZSBzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPExheW91dFR5cGU+IG9yaWdp
bmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZykKLXsKLSAgICBpZiAoc25hcE9mZnNldHMu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc2Nyb2xsRGVzdGluYXRp
b25PZmZzZXQsIGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpOwotCi0gICAgaWYgKG9yaWdpbmFsT2Zm
c2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZy5oYXNWYWx1ZSgpKSB7Ci0gICAgICAgIGF1dG8gZmly
c3RTbmFwU3RvcE9mZnNldEluZGV4ID0gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3Jp
Z2luQW5kRGVzdGluYXRpb24oc25hcE9mZnNldHMsICpvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlv
bmFsU25hcHBpbmcsIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0KTsKLSAgICAgICAgaWYgKGZpcnN0
U25hcFN0b3BPZmZzZXRJbmRleC5oYXNWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKHNuYXBPZmZzZXRzWypmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXhdLm9mZnNldCwg
KmZpcnN0U25hcFN0b3BPZmZzZXRJbmRleCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgbG93ZXJT
bmFwT2Zmc2V0UmFuZ2VJbmRleDsKLSAgICB1bnNpZ25lZCB1cHBlclNuYXBPZmZzZXRSYW5nZUlu
ZGV4OwotICAgIGluZGljZXNPZk5lYXJlc3RTbmFwT2Zmc2V0UmFuZ2VzPExheW91dFR5cGU+KHNj
cm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBzbmFwT2Zmc2V0UmFuZ2VzLCBsb3dlclNuYXBPZmZzZXRS
YW5nZUluZGV4LCB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4KTsKLSAgICBpZiAobG93ZXJTbmFw
T2Zmc2V0UmFuZ2VJbmRleCA9PSB1cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4ICYmIHVwcGVyU25h
cE9mZnNldFJhbmdlSW5kZXggIT0gaW52YWxpZFNuYXBPZmZzZXRJbmRleCkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBpbnZhbGlkU25hcE9m
ZnNldEluZGV4KTsKLQotICAgIGlmIChzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCA8PSBzbmFwT2Zm
c2V0cy5maXJzdCgpLm9mZnNldCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHNuYXBP
ZmZzZXRzLmZpcnN0KCkub2Zmc2V0LCAwdSk7Ci0KLSAgICBpZiAoc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQgPj0gc25hcE9mZnNldHMubGFzdCgpLm9mZnNldCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQsIHNuYXBPZmZzZXRzLnNpemUoKSAt
IDEpOwotCi0gICAgdW5zaWduZWQgbG93ZXJJbmRleDsKLSAgICB1bnNpZ25lZCB1cHBlckluZGV4
OwotICAgIGluZGljZXNPZk5lYXJlc3RTbmFwT2Zmc2V0czxMYXlvdXRUeXBlPihzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldCwgc25hcE9mZnNldHMsIGxvd2VySW5kZXgsIHVwcGVySW5kZXgpOwotICAg
IExheW91dFR5cGUgbG93ZXJTbmFwUG9zaXRpb24gPSBzbmFwT2Zmc2V0c1tsb3dlckluZGV4XS5v
ZmZzZXQ7Ci0gICAgTGF5b3V0VHlwZSB1cHBlclNuYXBQb3NpdGlvbiA9IHNuYXBPZmZzZXRzW3Vw
cGVySW5kZXhdLm9mZnNldDsKLSAgICBpZiAoIXN0ZDo6YWJzKHZlbG9jaXR5KSkgewotICAgICAg
ICBib29sIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA9IHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0IC0gbG93ZXJTbmFwUG9zaXRpb24gPD0gdXBwZXJTbmFwUG9zaXRpb24gLSBzY3JvbGxEZXN0
aW5hdGlvbk9mZnNldDsKLSAgICAgICAgcmV0dXJuIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlv
biA/IHN0ZDo6bWFrZV9wYWlyKGxvd2VyU25hcFBvc2l0aW9uLCBsb3dlckluZGV4KSA6IHN0ZDo6
bWFrZV9wYWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1cHBlckluZGV4KTsKLSAgICB9Ci0KLSAgICAv
LyBOb24temVybyB2ZWxvY2l0eSBpbmRpY2F0ZXMgYSBmbGljayBnZXN0dXJlLiBFdmVuIGlmIGFu
b3RoZXIgc25hcCBwb2ludCBpcyBjbG9zZXIsIHdlIHNob3VsZCBjaG9vc2UgdGhlIG9uZSBpbiB0
aGUgZGlyZWN0aW9uIG9mIHRoZSBmbGljayBnZXN0dXJlCi0gICAgLy8gYXMgbG9uZyBhcyBhIHNj
cm9sbCBzbmFwIG9mZnNldCByYW5nZSBkb2VzIG5vdCBsaWUgYmV0d2VlbiB0aGUgc2Nyb2xsIGRl
c3RpbmF0aW9uIGFuZCB0aGUgdGFyZ2V0ZWQgc25hcCBvZmZzZXQuIElmIHdlIGFyZSBkb2luZyBk
aXJlY3Rpb25hbAotICAgIC8vIHNuYXBwaW5nLCB3ZSBzaG91bGQgbmV2ZXIgc25hcCB0byBhIHBv
aW50IHRoYXQgd2FzIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBvcmlnaW5hbCBwb3NpdGlvbiBp
biB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIG9mIHRoaXMgc2Nyb2xsLgotICAgIC8vIFRoaXMgYWxs
b3dzIGRpcmVjdGlvbmFsIHNjcm9sbGluZyB0byBlc2NhcGUgc25hcCBwb2ludHMuCi0gICAgaWYg
KHZlbG9jaXR5IDwgMCkgewotICAgICAgICBpZiAobG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleCA9
PSBpbnZhbGlkU25hcE9mZnNldEluZGV4IHx8IGxvd2VyU25hcFBvc2l0aW9uID49IHNuYXBPZmZz
ZXRSYW5nZXNbbG93ZXJTbmFwT2Zmc2V0UmFuZ2VJbmRleF0uZW5kKQotICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKGxvd2VyU25hcFBvc2l0aW9uLCBsb3dlckluZGV4KTsKLSAgICAg
ICAgaWYgKCFvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcuaGFzVmFsdWUoKSB8
fCAqb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5nID4gdXBwZXJTbmFwUG9zaXRp
b24pCi0gICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodXBwZXJTbmFwUG9zaXRpb24s
IHVwcGVySW5kZXgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICh1cHBlclNuYXBPZmZzZXRS
YW5nZUluZGV4ID09IGludmFsaWRTbmFwT2Zmc2V0SW5kZXggfHwgc25hcE9mZnNldFJhbmdlc1t1
cHBlclNuYXBPZmZzZXRSYW5nZUluZGV4XS5zdGFydCA+PSB1cHBlclNuYXBQb3NpdGlvbikKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcih1cHBlclNuYXBQb3NpdGlvbiwgdXBwZXJJ
bmRleCk7Ci0gICAgICAgIGlmICghb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBwaW5n
Lmhhc1ZhbHVlKCkgfHwgKm9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZyA8IGxv
d2VyU25hcFBvc2l0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGxvd2Vy
U25hcFBvc2l0aW9uLCBsb3dlckluZGV4KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpOwot
fQotCiBlbnVtIGNsYXNzIEluc2V0T3JPdXRzZXQgewogICAgIEluc2V0LAogICAgIE91dHNldApA
QCAtMjE5LDMwICsxMDgsNiBAQCBzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlU2Nyb2xsU25hcEFs
aWduT2Zmc2V0KExheW91dFVuaXQgbWluTG9jYXRpb24sIExheW91dFVuaQogICAgIH0KIH0KIAot
c3RhdGljIHZvaWQgY29tcHV0ZUF4aXNQcm94aW1pdHlTbmFwT2Zmc2V0UmFuZ2VzKGNvbnN0IFZl
Y3RvcjxTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiYgc25hcE9mZnNldHMsIFZlY3RvcjxTY3JvbGxP
ZmZzZXRSYW5nZTxMYXlvdXRVbml0Pj4mIG9mZnNldFJhbmdlcywgTGF5b3V0VW5pdCBzY3JvbGxQ
b3J0QXhpc0xlbmd0aCkKLXsKLSAgICAvLyBUaGlzIGlzIGFuIGFyYml0cmFyeSBjaG9pY2UgZm9y
IHdoYXQgaXQgbWVhbnMgdG8gYmUgImluIHByb3hpbWl0eSIgb2YgYSBzbmFwIG9mZnNldC4gV2Ug
c2hvdWxkIHBsYXkgYXJvdW5kIHdpdGgKLSAgICAvLyB0aGlzIGFuZCBzZWUgd2hhdCBmZWVscyBi
ZXN0LgotICAgIHN0YXRpYyBjb25zdCBmbG9hdCByYXRpb09mU2Nyb2xsUG9ydEF4aXNMZW5ndGhU
b0JlQ29uc2lkZXJlZEZvclByb3hpbWl0eSA9IDAuMzsKLSAgICBpZiAoc25hcE9mZnNldHMuc2l6
ZSgpIDwgMikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhlIGV4dHJhIHJ1bGUgYWNjb3Vu
dGluZyBmb3Igc2Nyb2xsIG9mZnNldCByYW5nZXMgaW4gYmV0d2VlbiB0aGUgc2Nyb2xsIGRlc3Rp
bmF0aW9uIGFuZCBhIHBvdGVudGlhbCBzbmFwIG9mZnNldAotICAgIC8vIGhhbmRsZXMgdGhlIGNv
cm5lciBjYXNlIHdoZXJlIHRoZSB1c2VyIHNjcm9sbHMgd2l0aCBtb21lbnR1bSB2ZXJ5IGxpZ2h0
bHkgYXdheSBmcm9tIGEgc25hcCBvZmZzZXQsIHN1Y2ggdGhhdCB0aGUKLSAgICAvLyBwcmVkaWN0
ZWQgc2Nyb2xsIGRlc3RpbmF0aW9uIGlzIHN0aWxsIHdpdGhpbiBwcm94aW1pdHkgb2YgdGhlIHNu
YXAgb2Zmc2V0LiBJbiB0aGlzIGNhc2UsIHRoZSByZWd1bGFyIChtYW5kYXRvcnkKLSAgICAvLyBz
Y3JvbGwgc25hcHBpbmcpIGJlaGF2aW9yIHdvdWxkIGJlIHRvIHNuYXAgdG8gdGhlIG5leHQgb2Zm
c2V0IGluIHRoZSBkaXJlY3Rpb24gb2YgbW9tZW50dW0gc2Nyb2xsaW5nLCBidXQKLSAgICAvLyBp
bnN0ZWFkLCBpdCBpcyBtb3JlIGludHVpdGl2ZSB0byBlaXRoZXIgcmV0dXJuIHRvIHRoZSBvcmln
aW5hbCBzbmFwIHBvc2l0aW9uICh3aGljaCB3ZSBhcmJpdHJhcmlseSBjaG9vc2UgaGVyZSkKLSAg
ICAvLyBvciBzY3JvbGwganVzdCBvdXRzaWRlIG9mIHRoZSBzbmFwIG9mZnNldCByYW5nZS4gVGhp
cyBpcyBhbm90aGVyIG1pbm9yIGJlaGF2aW9yIHR3ZWFrIHRoYXQgd2Ugc2hvdWxkIHBsYXkgYXJv
dW5kCi0gICAgLy8gd2l0aCB0byBzZWUgd2hhdCBmZWVscyBiZXN0LgotICAgIExheW91dFVuaXQg
cHJveGltaXR5RGlzdGFuY2UgeyByYXRpb09mU2Nyb2xsUG9ydEF4aXNMZW5ndGhUb0JlQ29uc2lk
ZXJlZEZvclByb3hpbWl0eSAqIHNjcm9sbFBvcnRBeGlzTGVuZ3RoIH07Ci0gICAgZm9yIChzaXpl
X3QgaW5kZXggPSAxOyBpbmRleCA8IHNuYXBPZmZzZXRzLnNpemUoKTsgKytpbmRleCkgewotICAg
ICAgICBhdXRvIHN0YXJ0T2Zmc2V0ID0gc25hcE9mZnNldHNbaW5kZXggLSAxXS5vZmZzZXQgKyBw
cm94aW1pdHlEaXN0YW5jZTsKLSAgICAgICAgYXV0byBlbmRPZmZzZXQgPSBzbmFwT2Zmc2V0c1tp
bmRleF0ub2Zmc2V0IC0gcHJveGltaXR5RGlzdGFuY2U7Ci0gICAgICAgIGlmIChzdGFydE9mZnNl
dCA8IGVuZE9mZnNldCkKLSAgICAgICAgICAgIG9mZnNldFJhbmdlcy5hcHBlbmQoeyBzdGFydE9m
ZnNldCwgZW5kT2Zmc2V0IH0pOwotICAgIH0KLX0KLQogdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0Zv
clNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgUmVu
ZGVyQm94JiBzY3JvbGxpbmdFbGVtZW50Qm94LCBjb25zdCBSZW5kZXJTdHlsZSYgc2Nyb2xsaW5n
RWxlbWVudFN0eWxlLCBMYXlvdXRSZWN0IHZpZXdwb3J0UmVjdEluQm9yZGVyQm94Q29vcmRpbmF0
ZXMpCiB7CiAgICAgYXV0byBzY3JvbGxTbmFwVHlwZSA9IHNjcm9sbGluZ0VsZW1lbnRTdHlsZS5z
Y3JvbGxTbmFwVHlwZSgpOwpAQCAtMjYyLDYgKzEyNyw3IEBAIHZvaWQgdXBkYXRlU25hcE9mZnNl
dHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0
IFJlCiAKICAgICBIYXNoTWFwPGZsb2F0LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiB2ZXJ0aWNh
bFNuYXBPZmZzZXRzTWFwOwogICAgIEhhc2hNYXA8ZmxvYXQsIFNuYXBPZmZzZXQ8TGF5b3V0VW5p
dD4+IGhvcml6b250YWxTbmFwT2Zmc2V0c01hcDsKKyAgICBWZWN0b3I8TGF5b3V0UmVjdD4gc25h
cEFyZWFzOwogICAgIGJvb2wgaGFzSG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc2Nyb2xsU25hcFR5
cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6Qm90aCB8fCBzY3JvbGxTbmFwVHlwZS5heGlzID09
IFNjcm9sbFNuYXBBeGlzOjpYQXhpcyB8fCBzY3JvbGxTbmFwVHlwZS5heGlzID09IFNjcm9sbFNu
YXBBeGlzOjpJbmxpbmU7CiAgICAgYm9vbCBoYXNWZXJ0aWNhbFNuYXBPZmZzZXRzID0gc2Nyb2xs
U25hcFR5cGUuYXhpcyA9PSBTY3JvbGxTbmFwQXhpczo6Qm90aCB8fCBzY3JvbGxTbmFwVHlwZS5h
eGlzID09IFNjcm9sbFNuYXBBeGlzOjpZQXhpcyB8fCBzY3JvbGxTbmFwVHlwZS5heGlzID09IFNj
cm9sbFNuYXBBeGlzOjpCbG9jazsKIApAQCAtMjg4LDE3ICsxNTQsMjggQEAgdm9pZCB1cGRhdGVT
bmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJl
YSwgY29uc3QgUmUKIAogICAgICAgICBzY3JvbGxTbmFwQXJlYSA9IGNvbXB1dGVTY3JvbGxTbmFw
UG9ydE9yQXJlYVJlY3Qoc2Nyb2xsU25hcEFyZWEsIGNoaWxkLT5zdHlsZSgpLnNjcm9sbE1hcmdp
bigpLCBJbnNldE9yT3V0c2V0OjpPdXRzZXQpOwogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Ny
b2xsU25hcCwgc3RyZWFtIDw8ICIgICAgQ29uc2lkZXJpbmcgc2Nyb2xsIHNuYXAgdGFyZ2V0IGFy
ZWEgIiA8PCBzY3JvbGxTbmFwQXJlYSk7CisKICAgICAgICAgYXV0byBhbGlnbm1lbnQgPSBjaGls
ZC0+c3R5bGUoKS5zY3JvbGxTbmFwQWxpZ24oKTsKKyAgICAgICAgYm9vbCBzbmFwc0hvcml6b250
YWxseSA9IGhhc0hvcml6b250YWxTbmFwT2Zmc2V0cyAmJiBhbGlnbm1lbnQueCAhPSBTY3JvbGxT
bmFwQXhpc0FsaWduVHlwZTo6Tm9uZTsKKyAgICAgICAgYm9vbCBzbmFwc1ZlcnRpY2FsbHkgPSBo
YXNWZXJ0aWNhbFNuYXBPZmZzZXRzICYmIGFsaWdubWVudC55ICE9IFNjcm9sbFNuYXBBeGlzQWxp
Z25UeXBlOjpOb25lOworICAgICAgICBpZiAoIXNuYXBzSG9yaXpvbnRhbGx5ICYmICFzbmFwc1Zl
cnRpY2FsbHkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBUaGUgc2Nyb2xs
IHNuYXAgYXJlYSBpcyBkZWZpbmVkIHZpYSBpdHMgc2Nyb2xsIHBvc2l0aW9uLCBzbyBjb252ZXJ0
IHRoZSBzbmFwIGFyZWEgcmVjdGFuZ2xlIHRvIGJlIHJlbGF0aXZlIHRvIHNjcm9sbCBvZmZzZXRz
LgorICAgICAgICBhdXRvIHNuYXBBcmVhT3JpZ2luUmVsYXRpdmVUb0JvcmRlckVkZ2UgPSBzY3Jv
bGxTbmFwQXJlYS5sb2NhdGlvbigpIC0gc2Nyb2xsU25hcFBvcnQubG9jYXRpb24oKTsKKyAgICAg
ICAgTGF5b3V0UmVjdCBzY3JvbGxTbmFwQXJlYUFzT2Zmc2V0cyhzY3JvbGxhYmxlQXJlYS5zY3Jv
bGxPZmZzZXRGcm9tUG9zaXRpb24ocm91bmRlZEludFBvaW50KHNuYXBBcmVhT3JpZ2luUmVsYXRp
dmVUb0JvcmRlckVkZ2UpKSwgc2Nyb2xsU25hcEFyZWEuc2l6ZSgpKTsKKyAgICAgICAgc25hcEFy
ZWFzLmFwcGVuZChzY3JvbGxTbmFwQXJlYUFzT2Zmc2V0cyk7CisKICAgICAgICAgYXV0byBzdG9w
ID0gY2hpbGQtPnN0eWxlKCkuc2Nyb2xsU25hcFN0b3AoKTsKLSAgICAgICAgaWYgKGhhc0hvcml6
b250YWxTbmFwT2Zmc2V0cyAmJiBhbGlnbm1lbnQueCAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlw
ZTo6Tm9uZSkgeworICAgICAgICBpZiAoc25hcHNIb3Jpem9udGFsbHkpIHsKICAgICAgICAgICAg
IGF1dG8gYWJzb2x1dGVTY3JvbGxYUG9zaXRpb24gPSBjb21wdXRlU2Nyb2xsU25hcEFsaWduT2Zm
c2V0KHNjcm9sbFNuYXBBcmVhLngoKSwgc2Nyb2xsU25hcEFyZWEubWF4WCgpLCBhbGlnbm1lbnQu
eCwgc2Nyb2xsZXJJc1JUTCkgLSBjb21wdXRlU2Nyb2xsU25hcEFsaWduT2Zmc2V0KHNjcm9sbFNu
YXBQb3J0LngoKSwgc2Nyb2xsU25hcFBvcnQubWF4WCgpLCBhbGlnbm1lbnQueCwgc2Nyb2xsZXJJ
c1JUTCk7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsT2Zmc2V0ID0gY2xhbXBUbzxp
bnQ+KHNjcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbih7IHJvdW5kVG9JbnQo
YWJzb2x1dGVTY3JvbGxYUG9zaXRpb24pLCAwIH0pLngoKSwgMCwgbWF4U2Nyb2xsT2Zmc2V0Lngo
KSk7Ci0gICAgICAgICAgICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFwT2Zmc2V0KGhvcml6b250YWxT
bmFwT2Zmc2V0c01hcCwgeyBhYnNvbHV0ZVNjcm9sbE9mZnNldCwgc3RvcCB9KTsKKyAgICAgICAg
ICAgIGFkZE9yVXBkYXRlU3RvcEZvclNuYXBPZmZzZXQoaG9yaXpvbnRhbFNuYXBPZmZzZXRzTWFw
LCB7IGFic29sdXRlU2Nyb2xsT2Zmc2V0LCBzdG9wLCBzbmFwQXJlYXMuc2l6ZSgpIC0gMSB9KTsK
ICAgICAgICAgfQotICAgICAgICBpZiAoaGFzVmVydGljYWxTbmFwT2Zmc2V0cyAmJiBhbGlnbm1l
bnQueSAhPSBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZSkgeworICAgICAgICBpZiAoc25h
cHNWZXJ0aWNhbGx5KSB7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsWVBvc2l0aW9u
ID0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwQXJlYS55KCksIHNjcm9s
bFNuYXBBcmVhLm1heFkoKSwgYWxpZ25tZW50LnksIGZhbHNlKSAtIGNvbXB1dGVTY3JvbGxTbmFw
QWxpZ25PZmZzZXQoc2Nyb2xsU25hcFBvcnQueSgpLCBzY3JvbGxTbmFwUG9ydC5tYXhZKCksIGFs
aWdubWVudC55LCBmYWxzZSk7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsT2Zmc2V0
ID0gY2xhbXBUbzxpbnQ+KHNjcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbih7
IDAsIHJvdW5kVG9JbnQoYWJzb2x1dGVTY3JvbGxZUG9zaXRpb24pIH0pLnkoKSwgMCwgbWF4U2Ny
b2xsT2Zmc2V0LnkoKSk7Ci0gICAgICAgICAgICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFwT2Zmc2V0
KHZlcnRpY2FsU25hcE9mZnNldHNNYXAsIHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AgfSk7
CisgICAgICAgICAgICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFwT2Zmc2V0KHZlcnRpY2FsU25hcE9m
ZnNldHNNYXAsIHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0b3AsIHNuYXBBcmVhcy5zaXplKCkg
LSAxIH0pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMDgsMzIgKzE4NSwyNSBAQCB2b2lkIHVw
ZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFi
bGVBcmVhLCBjb25zdCBSZQogICAgIH07CiAKICAgICBWZWN0b3I8U25hcE9mZnNldDxMYXlvdXRV
bml0Pj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gY29weVRvVmVjdG9yKGhvcml6b250YWxTbmFw
T2Zmc2V0c01hcC52YWx1ZXMoKSk7Ci0gICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPExheW91
dFVuaXQ+PiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKICAgICBpZiAoIWhvcml6b250YWxT
bmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKICAgICAgICAgc3RkOjpzb3J0KGhvcml6b250YWxTbmFw
T2Zmc2V0cy5iZWdpbigpLCBob3Jpem9udGFsU25hcE9mZnNldHMuZW5kKCksIGNvbXBhcmVTbmFw
T2Zmc2V0cyk7Ci0gICAgICAgIGlmIChzY3JvbGxTbmFwVHlwZS5zdHJpY3RuZXNzID09IFNjcm9s
bFNuYXBTdHJpY3RuZXNzOjpQcm94aW1pdHkpCi0gICAgICAgICAgICBjb21wdXRlQXhpc1Byb3hp
bWl0eVNuYXBPZmZzZXRSYW5nZXMoaG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBob3Jpem9udGFsU25h
cE9mZnNldFJhbmdlcywgc2Nyb2xsU25hcFBvcnQud2lkdGgoKSk7Ci0KICAgICAgICAgTE9HX1dJ
VEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiID0+IENvbXB1dGVkIGhvcml6b250YWwg
c2Nyb2xsIHNuYXAgb2Zmc2V0czogIiA8PCBob3Jpem9udGFsU25hcE9mZnNldHMpOwotICAgICAg
ICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICIgPT4gQ29tcHV0ZWQgaG9y
aXpvbnRhbCBzY3JvbGwgc25hcCBvZmZzZXQgcmFuZ2VzOiAiIDw8IGhvcml6b250YWxTbmFwT2Zm
c2V0UmFuZ2VzKTsKICAgICB9CiAKICAgICBWZWN0b3I8U25hcE9mZnNldDxMYXlvdXRVbml0Pj4g
dmVydGljYWxTbmFwT2Zmc2V0cyA9IGNvcHlUb1ZlY3Rvcih2ZXJ0aWNhbFNuYXBPZmZzZXRzTWFw
LnZhbHVlcygpKTsKLSAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IHZl
cnRpY2FsU25hcE9mZnNldFJhbmdlczsKICAgICBpZiAoIXZlcnRpY2FsU25hcE9mZnNldHMuaXNF
bXB0eSgpKSB7CiAgICAgICAgIHN0ZDo6c29ydCh2ZXJ0aWNhbFNuYXBPZmZzZXRzLmJlZ2luKCks
IHZlcnRpY2FsU25hcE9mZnNldHMuZW5kKCksIGNvbXBhcmVTbmFwT2Zmc2V0cyk7Ci0gICAgICAg
IGlmIChzY3JvbGxTbmFwVHlwZS5zdHJpY3RuZXNzID09IFNjcm9sbFNuYXBTdHJpY3RuZXNzOjpQ
cm94aW1pdHkpCi0gICAgICAgICAgICBjb21wdXRlQXhpc1Byb3hpbWl0eVNuYXBPZmZzZXRSYW5n
ZXModmVydGljYWxTbmFwT2Zmc2V0cywgdmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBzY3JvbGxT
bmFwUG9ydC5oZWlnaHQoKSk7Ci0KICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAs
IHN0cmVhbSA8PCAiID0+IENvbXB1dGVkIHZlcnRpY2FsIHNjcm9sbCBzbmFwIG9mZnNldHM6ICIg
PDwgdmVydGljYWxTbmFwT2Zmc2V0cyk7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxT
bmFwLCBzdHJlYW0gPDwgIiA9PiBDb21wdXRlZCB2ZXJ0aWNhbCBzY3JvbGwgc25hcCBvZmZzZXQg
cmFuZ2VzOiAiIDw8IHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyk7CiAgICAgfQogCisgICAgaWYg
KCFzbmFwQXJlYXMuaXNFbXB0eSgpKQorICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25h
cCwgc3RyZWFtIDw8ICIgPT4gQ29tcHV0ZWQgc25hcCBhcmVhczogIiA8PCBzbmFwQXJlYXMpOwor
CiAgICAgc2Nyb2xsYWJsZUFyZWEuc2V0U2Nyb2xsU25hcE9mZnNldEluZm8oeworICAgICAgICBz
Y3JvbGxTbmFwVHlwZS5zdHJpY3RuZXNzLAogICAgICAgICBob3Jpem9udGFsU25hcE9mZnNldHMs
CiAgICAgICAgIHZlcnRpY2FsU25hcE9mZnNldHMsCi0gICAgICAgIGhvcml6b250YWxTbmFwT2Zm
c2V0UmFuZ2VzLAotICAgICAgICB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMKKyAgICAgICAgc25h
cEFyZWFzLAogICAgIH0pOwogfQogCkBAIC0zNDcsNTcgKzIxNywxNzkgQEAgc3RhdGljIExheW91
dFVuaXQgY29udmVydE9mZnNldFVuaXQoZmxvYXQgaW5wdXQsIGZsb2F0IC8qIHNjYWxlRmFjdG9y
ICovKQogICAgIHJldHVybiBMYXlvdXRVbml0KGlucHV0KTsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIElucHV0VHlwZSwgdHlwZW5hbWUgT3V0cHV0VHlwZT4KLXN0YXRpYyBTY3JvbGxTbmFwT2Zm
c2V0c0luZm88T3V0cHV0VHlwZT4gY29udmVydE9mZnNldEluZm8oY29uc3QgU2Nyb2xsU25hcE9m
ZnNldHNJbmZvPElucHV0VHlwZT4mIGlucHV0LCBmbG9hdCBzY2FsZUZhY3RvciA9IDAuMCkKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBJbnB1dFR5cGUsIHR5cGVuYW1lIElucHV0UmVjdFR5cGUsIHR5cGVu
YW1lIE91dHB1dFR5cGUsIHR5cGVuYW1lIE91dHB1dFJlY3RUeXBlPgorc3RhdGljIFNjcm9sbFNu
YXBPZmZzZXRzSW5mbzxPdXRwdXRUeXBlLCBPdXRwdXRSZWN0VHlwZT4gY29udmVydE9mZnNldElu
Zm8oY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPElucHV0VHlwZSwgSW5wdXRSZWN0VHlwZT4m
IGlucHV0LCBmbG9hdCBzY2FsZUZhY3RvciA9IDAuMCkKIHsKICAgICBhdXRvIGNvbnZlcnRPZmZz
ZXRzID0gW3NjYWxlRmFjdG9yXShjb25zdCBWZWN0b3I8U25hcE9mZnNldDxJbnB1dFR5cGU+PiYg
aW5wdXQpCiAgICAgewogICAgICAgICBWZWN0b3I8U25hcE9mZnNldDxPdXRwdXRUeXBlPj4gb3V0
cHV0OwogICAgICAgICBvdXRwdXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbnB1dC5zaXplKCkp
OwogICAgICAgICBmb3IgKGF1dG8mIG9mZnNldCA6IGlucHV0KQotICAgICAgICAgICAgb3V0cHV0
LnVuY2hlY2tlZEFwcGVuZCh7IGNvbnZlcnRPZmZzZXRVbml0KG9mZnNldC5vZmZzZXQsIHNjYWxl
RmFjdG9yKSwgb2Zmc2V0LnN0b3AgfSk7CisgICAgICAgICAgICBvdXRwdXQudW5jaGVja2VkQXBw
ZW5kKHsgY29udmVydE9mZnNldFVuaXQob2Zmc2V0Lm9mZnNldCwgc2NhbGVGYWN0b3IpLCBvZmZz
ZXQuc3RvcCwgb2Zmc2V0LnNuYXBBcmVhSW5kZXggfSk7CiAgICAgICAgIHJldHVybiBvdXRwdXQ7
CiAgICAgfTsKIAotICAgIGF1dG8gY29udmVydE9mZnNldFJhbmdlcyA9IFtzY2FsZUZhY3Rvcl0o
Y29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPElucHV0VHlwZT4+JiBpbnB1dCkKKyAgICBh
dXRvIGNvbnZlcnRSZWN0cyA9IFtzY2FsZUZhY3Rvcl0oY29uc3QgVmVjdG9yPElucHV0UmVjdFR5
cGU+JiBpbnB1dCkKICAgICB7Ci0gICAgICAgIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxPdXRw
dXRUeXBlPj4gb3V0cHV0OworICAgICAgICBWZWN0b3I8T3V0cHV0UmVjdFR5cGU+IG91dHB1dDsK
ICAgICAgICAgb3V0cHV0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5wdXQuc2l6ZSgpKTsKLSAg
ICAgICAgZm9yIChhdXRvJiByYW5nZSA6IGlucHV0KQotICAgICAgICAgICAgb3V0cHV0LnVuY2hl
Y2tlZEFwcGVuZCh7IGNvbnZlcnRPZmZzZXRVbml0KHJhbmdlLnN0YXJ0LCBzY2FsZUZhY3Rvciks
IGNvbnZlcnRPZmZzZXRVbml0KHJhbmdlLmVuZCwgc2NhbGVGYWN0b3IpIH0pOworICAgICAgICBm
b3IgKGF1dG8mIHJlY3QgOiBpbnB1dCkgeworICAgICAgICAgICAgT3V0cHV0UmVjdFR5cGUgb3V0
cHV0UmVjdCgKKyAgICAgICAgICAgICAgICBjb252ZXJ0T2Zmc2V0VW5pdChyZWN0LngoKSwgc2Nh
bGVGYWN0b3IpLCBjb252ZXJ0T2Zmc2V0VW5pdChyZWN0LnkoKSwgc2NhbGVGYWN0b3IpLAorICAg
ICAgICAgICAgICAgIGNvbnZlcnRPZmZzZXRVbml0KHJlY3Qud2lkdGgoKSwgc2NhbGVGYWN0b3Ip
LCBjb252ZXJ0T2Zmc2V0VW5pdChyZWN0LmhlaWdodCgpLCBzY2FsZUZhY3RvcikpOworICAgICAg
ICAgICAgb3V0cHV0LnVuY2hlY2tlZEFwcGVuZChvdXRwdXRSZWN0KTsKKyAgICAgICAgfQogICAg
ICAgICByZXR1cm4gb3V0cHV0OwogICAgIH07CiAKICAgICByZXR1cm4geworICAgICAgICBpbnB1
dC5zdHJpY3RuZXNzLAogICAgICAgICBjb252ZXJ0T2Zmc2V0cyhpbnB1dC5ob3Jpem9udGFsU25h
cE9mZnNldHMpLAogICAgICAgICBjb252ZXJ0T2Zmc2V0cyhpbnB1dC52ZXJ0aWNhbFNuYXBPZmZz
ZXRzKSwKLSAgICAgICAgY29udmVydE9mZnNldFJhbmdlcyhpbnB1dC5ob3Jpem9udGFsU25hcE9m
ZnNldFJhbmdlcyksCi0gICAgICAgIGNvbnZlcnRPZmZzZXRSYW5nZXMoaW5wdXQudmVydGljYWxT
bmFwT2Zmc2V0UmFuZ2VzKQorICAgICAgICBjb252ZXJ0UmVjdHMoaW5wdXQuc25hcEFyZWFzKSwK
ICAgICB9OwogfQogCiB0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgotU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPExheW91dFVuaXQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxmbG9hdD46OmNvbnZlcnRVbml0
cyhmbG9hdCAvKiB1bnVzZWRTY2FsZUZhY3RvciAqLykgY29uc3QKK0xheW91dFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y29udmVydFVuaXRzKGZsb2F0
IC8qIHVudXNlZFNjYWxlRmFjdG9yICovKSBjb25zdAogewotICAgIHJldHVybiBjb252ZXJ0T2Zm
c2V0SW5mbzxmbG9hdCwgTGF5b3V0VW5pdD4oKnRoaXMpOworICAgIHJldHVybiBjb252ZXJ0T2Zm
c2V0SW5mbzxmbG9hdCwgRmxvYXRSZWN0LCBMYXlvdXRVbml0LCBMYXlvdXRSZWN0PigqdGhpcyk7
CiB9CiAKIHRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1TY3JvbGxTbmFwT2Zmc2V0c0luZm88Zmxv
YXQ+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0Pjo6Y29udmVydFVuaXRzKGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yKSBjb25zdAorRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gTGF5
b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvOjpjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRPZmZzZXRJbmZvPExheW91dFVuaXQs
IGZsb2F0PigqdGhpcywgZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHJldHVybiBjb252ZXJ0T2Zm
c2V0SW5mbzxMYXlvdXRVbml0LCBMYXlvdXRSZWN0LCBmbG9hdCwgRmxvYXRSZWN0PigqdGhpcywg
ZGV2aWNlU2NhbGVGYWN0b3IpOwogfQogCi10ZW1wbGF0ZSA8Pgotc3RkOjpwYWlyPExheW91dFVu
aXQsIHVuc2lnbmVkPiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD46OmNsb3Nlc3RT
bmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBMYXlvdXRVbml0IHNjcm9sbERlc3RpbmF0
aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2luYWxQ
b3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNvbnN0Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VW5pdFR5cGUsIHR5cGVuYW1lIFJlY3RUeXBlPgorc3RhdGljIFVuaXRUeXBlIG1heEZvckF4aXMo
UmVjdFR5cGUgcmVjdCwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMpCiB7Ci0gICAgcmV0dXJuIGNsb3Nl
c3RTbmFwT2Zmc2V0V2l0aE9mZnNldHNBbmRSYW5nZXMob2Zmc2V0c0ZvckF4aXMoYXhpcyksIG9m
ZnNldFJhbmdlc0ZvckF4aXMoYXhpcyksIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCB2ZWxvY2l0
eSwgb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpOworICAgIHJldHVybiBh
eGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHJlY3QubWF4WCgpIDogcmVjdC5t
YXhZKCk7CiB9CiAKLXRlbXBsYXRlIDw+Ci1zdGQ6OnBhaXI8ZmxvYXQsIHVuc2lnbmVkPiBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+OjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4
aXMgYXhpcywgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBP
cHRpb25hbDxmbG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcpIGNv
bnN0Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5pdFR5cGUsIHR5cGVuYW1lIFJlY3RUeXBlPgorc3Rh
dGljIFVuaXRUeXBlIG1pbkZvckF4aXMoUmVjdFR5cGUgcmVjdCwgU2Nyb2xsRXZlbnRBeGlzIGF4
aXMpCit7CisgICAgcmV0dXJuIGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8g
cmVjdC54KCkgOiByZWN0LnkoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFVuaXRUeXBlPgor
c3RhdGljIGJvb2wgaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHkoU2Nyb2xsU25hcFN0
cmljdG5lc3Mgc3RyaWN0bmVzcywgVW5pdFR5cGUgc2Nyb2xsRGVzdGluYXRpb24sIFVuaXRUeXBl
IGNhbmRpZGF0ZVNuYXBPZmZzZXQsIFVuaXRUeXBlIHZpZXdwb3J0TGVuZ3RoKQoreworICAgIGlm
IChzdHJpY3RuZXNzICE9IFNjcm9sbFNuYXBTdHJpY3RuZXNzOjpQcm94aW1pdHkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgLy8gVGhpcyBpcyBhbiBhcmJpdHJhcnkgY2hvaWNlIGZvciB3
aGF0IGl0IG1lYW5zIHRvIGJlICJpbiBwcm94aW1pdHkiIG9mIGEgc25hcCBvZmZzZXQuIFdlIHNo
b3VsZCBwbGF5IGFyb3VuZCB3aXRoCisgICAgLy8gdGhpcyBhbmQgc2VlIHdoYXQgZmVlbHMgYmVz
dC4KKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgcmF0aW9PZlNjcm9sbFBvcnRBeGlzTGVuZ3RoVG9C
ZUNvbnNpZGVyZWRGb3JQcm94aW1pdHkgPSAwLjM7CisgICAgcmV0dXJuIHN0ZDo6YWJzKGZsb2F0
IHtjYW5kaWRhdGVTbmFwT2Zmc2V0IC0gc2Nyb2xsRGVzdGluYXRpb259KSA8PSAodmlld3BvcnRM
ZW5ndGggKiByYXRpb09mU2Nyb2xsUG9ydEF4aXNMZW5ndGhUb0JlQ29uc2lkZXJlZEZvclByb3hp
bWl0eSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVbml0VHlwZSwgdHlwZW5hbWUgUmVjdFR5
cGUsIHR5cGVuYW1lIFNpemVUeXBlPgorc3RhdGljIHN0ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWdu
ZWQ+IGNhbGN1bGF0ZUNsb3Nlc3RTbmFwT2Zmc2V0KGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5m
bzxVbml0VHlwZSwgUmVjdFR5cGU+JiBpbmZvLCBTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3Qg
U2l6ZVR5cGUmIHZpZXdwb3J0U2l6ZSwgVW5pdFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQs
IGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxPZmZzZXQpCit7Cisg
ICAgY29uc3QgYXV0byYgc25hcE9mZnNldHMgPSBpbmZvLm9mZnNldHNGb3JBeGlzKGF4aXMpOwor
ICAgIGF1dG8gcGFpckZvck5vU25hcHBpbmcgPSBzdGQ6Om1ha2VfcGFpcihzY3JvbGxEZXN0aW5h
dGlvbk9mZnNldCwgaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7CisgICAgaWYgKHNuYXBPZmZzZXRz
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHBhaXJGb3JOb1NuYXBwaW5nOworCisgICAgLy8g
VGhlIGZpcnN0IHNuYXAgcG9pbnQgd2l0aCBgc2Nyb2xsLXNuYXAtc3RvcDogYWx3YXlzYCBiZXR3
ZWVuIHRoZSBvcmlnaW5hbCBwb3NpdGlvbiBhbmQgZGVzdGluYXRpb24gdGFrZXMgcHJlY2VkZW5j
ZS4KKyAgICBpZiAob3JpZ2luYWxPZmZzZXQpIHsKKyAgICAgICAgaWYgKGF1dG8gZmlyc3RTbmFw
U3RvcE9mZnNldCA9IGZpbmRGaXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3Rp
bmF0aW9uKHNuYXBPZmZzZXRzLCAqb3JpZ2luYWxPZmZzZXQsIHNjcm9sbERlc3RpbmF0aW9uT2Zm
c2V0KSkKKyAgICAgICAgICAgIHJldHVybiAqZmlyc3RTbmFwU3RvcE9mZnNldDsKKyAgICB9CisK
KyAgICBhdXRvIHZpZXdwb3J0TGVuZ3RoID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6
b250YWwgPyB2aWV3cG9ydFNpemUud2lkdGgoKSA6IHZpZXdwb3J0U2l6ZS5oZWlnaHQoKTsKKyAg
ICBib29sIGxhbmRlZEluc2lkZVNuYXBBcmVhVGhhdENvbnN1bWVzVmlld3BvcnQgPSBmYWxzZTsK
KyAgICBPcHRpb25hbDxzdGQ6OnBhaXI8VW5pdFR5cGUsIHVuc2lnbmVkPj4gcHJldmlvdXMsIG5l
eHQ7CisgICAgT3B0aW9uYWw8UmVjdFR5cGU+IHByZXZpb3VzU25hcEFyZWEsIG5leHRTbmFwQXJl
YTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc25hcE9mZnNldHMuc2l6ZSgpOyBpKysp
IHsKKyAgICAgICAgY29uc3QgYXV0byYgc25hcEFyZWEgPSBpbmZvLnNuYXBBcmVhc1tzbmFwT2Zm
c2V0c1tpXS5zbmFwQXJlYUluZGV4XTsKKyAgICAgICAgbGFuZGVkSW5zaWRlU25hcEFyZWFUaGF0
Q29uc3VtZXNWaWV3cG9ydCB8PSAobWluRm9yQXhpczxVbml0VHlwZT4oc25hcEFyZWEsIGF4aXMp
IDw9IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0ICYmIG1heEZvckF4aXM8VW5pdFR5cGU+KHNuYXBB
cmVhLCBheGlzKSA+PSAoc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgKyB2aWV3cG9ydExlbmd0aCkp
OworICAgICAgICAvLyBJZiB0aGUgc2Nyb2xsIGxhbmRlZCBleGFjdGx5IG9uIGEgc25hcCBvZmZz
ZXQsIGNob29zZSB0aGF0IG9uZS4KKyAgICAgICAgVW5pdFR5cGUgcG90ZW50aWFsU25hcE9mZnNl
dCA9IHNuYXBPZmZzZXRzW2ldLm9mZnNldDsKKyAgICAgICAgaWYgKHBvdGVudGlhbFNuYXBPZmZz
ZXQgPT0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIocG90ZW50aWFsU25hcE9mZnNldCwgaSk7CisKKyAgICAgICAgaWYgKHBvdGVudGlh
bFNuYXBPZmZzZXQgPCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCkgeworICAgICAgICAgICAgcHJl
dmlvdXMgPSBzdGQ6Om1ha2VfcGFpcihwb3RlbnRpYWxTbmFwT2Zmc2V0LCBpKTsKKyAgICAgICAg
ICAgIHByZXZpb3VzU25hcEFyZWEgPSBzbmFwQXJlYTsKKyAgICAgICAgfSBlbHNlIGlmICghbmV4
dCAmJiBwb3RlbnRpYWxTbmFwT2Zmc2V0ID4gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQpIHsKKyAg
ICAgICAgICAgIG5leHQgPSBzdGQ6Om1ha2VfcGFpcihwb3RlbnRpYWxTbmFwT2Zmc2V0LCBpKTsK
KyAgICAgICAgICAgIG5leHRTbmFwQXJlYSA9IHNuYXBBcmVhOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gRnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNjcm9sbC1zbmFwLTEvI3Nu
YXAtb3ZlcmZsb3cKKyAgICAvLyAiSWYgdGhlIHNuYXAgYXJlYSBpcyBsYXJnZXIgdGhhbiB0aGUg
c25hcHBvcnQgaW4gYSBwYXJ0aWN1bGFyIGF4aXMsIHRoZW4gYW55IHNjcm9sbCBwb3NpdGlvbgor
ICAgIC8vIGluIHdoaWNoIHRoZSBzbmFwIGFyZWEgY292ZXJzIHRoZSBzbmFwcG9ydCwgYW5kIHRo
ZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnZW9tZXRyaWNhbGx5CisgICAgLy8gcHJldmlvdXMgYW5k
IHN1YnNlcXVlbnQgc25hcCBwb3NpdGlvbnMgaW4gdGhhdCBheGlzIGlzIGxhcmdlciB0aGFuIHNp
emUgb2YgdGhlIHNuYXBwb3J0IGluCisgICAgLy8gdGhhdCBheGlzLCBpcyBhIHZhbGlkIHNuYXAg
cG9zaXRpb24gaW4gdGhhdCBheGlzLiBUaGUgVUEgbWF5IHVzZSB0aGUgc3BlY2lmaWVkIGFsaWdu
bWVudCBhcyBhCisgICAgLy8gbW9yZSBwcmVjaXNlIHRhcmdldCBmb3IgY2VydGFpbiBzY3JvbGwg
b3BlcmF0aW9ucyAoZS5nLiBleHBsaWNpdCBwYWdpbmcpLiIKKyAgICBpZiAobGFuZGVkSW5zaWRl
U25hcEFyZWFUaGF0Q29uc3VtZXNWaWV3cG9ydCAmJiAoIXByZXZpb3VzIHx8ICFuZXh0IHx8ICgo
Km5leHQpLmZpcnN0IC0gKCpwcmV2aW91cykuZmlyc3QpID49IHZpZXdwb3J0TGVuZ3RoKSkKKyAg
ICAgICAgcmV0dXJuIHBhaXJGb3JOb1NuYXBwaW5nOworCisgICAgaWYgKG9yaWdpbmFsT2Zmc2V0
KSB7CisgICAgICAgIC8vIElmIHRoaXMgaXMgYSBkaXJlY3Rpb25hbCBzY3JvbGwgYW5kIHRoZXJl
IGFyZSBubyBzY3JvbGwgc3RvcHMgaW4gYSBwYXJ0aWN1bGFyIGRpcmVjdGlvbiwKKyAgICAgICAg
Ly8gZG9uJ3Qgc2Nyb2xsIHBhc3QgdGhlIGVkZ2Ugb2YgdGhlIHNjcm9sbCBhcmVhLgorICAgICAg
ICBpZiAoIW5leHQgJiYgcHJldmlvdXMpCisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoc3RkOjptYXgoKCpwcmV2aW91cykuZmlyc3QsIG1heEZvckF4aXM8VW5pdFR5cGU+KCpwcmV2
aW91c1NuYXBBcmVhLCBheGlzKSAtIHZpZXdwb3J0TGVuZ3RoKSwgaW52YWxpZFNuYXBPZmZzZXRJ
bmRleCk7CisgICAgICAgIGlmICghcHJldmlvdXMgJiYgbmV4dCkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihtaW5Gb3JBeGlzPFVuaXRUeXBlPigqbmV4dFNuYXBBcmVhLCBheGlz
KSwgaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7CisKKyAgICAgICAgLy8gRnJvbSBodHRwczovL3d3
dy53My5vcmcvVFIvY3NzLXNjcm9sbC1zbmFwLTEvI2Nob29zaW5nCisgICAgICAgIC8vICJVc2Vy
IGFnZW50cyBtdXN0IGVuc3VyZSB0aGF0IGEgdXNlciBjYW4g4oCcZXNjYXBl4oCdIGEgc25hcCBw
b3NpdGlvbiwgcmVnYXJkbGVzcyBvZiB0aGUgc2Nyb2xsCisgICAgICAgIC8vIG1ldGhvZC4gRm9y
IGV4YW1wbGUsIGlmIHRoZSBzbmFwIHR5cGUgaXMgbWFuZGF0b3J5IGFuZCB0aGUgbmV4dCBzbmFw
IHBvc2l0aW9uIGlzIG1vcmUgdGhhbgorICAgICAgICAvLyB0d28gc2NyZWVuLXdpZHRocyBhd2F5
LCBhIG5hw692ZSDigJxhbHdheXMgc25hcCB0byBuZWFyZXN04oCdIHNlbGVjdGlvbiBhbGdvcml0
aG0gbWlnaHQg4oCcdHJhcOKAnSB0aGUKKyAgICAgICAgLy8gdXNlciBpZiB0aGVpciBlbmQgcG9z
aXRpb24gd2FzIG9ubHkgb25lIHNjcmVlbi13aWR0aCBhd2F5LiBJbnN0ZWFkLCBhIHNtYXJ0ZXIg
YWxnb3JpdGhtIHRoYXQKKyAgICAgICAgLy8gb25seSByZXR1cm5lZCB0byB0aGUgc3RhcnRpbmcg
c25hcCBwb3NpdGlvbiBpZiB0aGUgZW5kLXBvaW50IHdhcyBhIGZhaXJseSBzbWFsbCBkaXN0YW5j
ZSBmcm9tCisgICAgICAgIC8vIGl0LCBhbmQgb3RoZXJ3aXNlIGlnbm9yZWQgdGhlIHN0YXJ0aW5n
IHNuYXAgcG9zaXRpb24sIHdvdWxkIGdpdmUgYmV0dGVyIGJlaGF2aW9yLiIKKyAgICAgICAgLy8g
V2Ugb25seSBkbyB0aGlzIGlmIHdlIGFyZSBpbiBhIHNpdHVhdGlvbiB3aGVyZSB3ZSBhcmUgY2hv
b3NpbmcgYmV0d2VlbiB0d28gY29tcGF0aWJsZQorICAgICAgICAvLyBzbmFwIG9mZnNldHMuCisg
ICAgICAgIGlmICgqb3JpZ2luYWxPZmZzZXQgPCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAmJiAo
KnByZXZpb3VzKS5maXJzdCA8PSAqb3JpZ2luYWxPZmZzZXQpCisgICAgICAgICAgICBwcmV2aW91
cy5yZXNldCgpOworICAgICAgICBpZiAoKm9yaWdpbmFsT2Zmc2V0ID4gc2Nyb2xsRGVzdGluYXRp
b25PZmZzZXQgJiYgKCpuZXh0KS5maXJzdCA+PSAqb3JpZ2luYWxPZmZzZXQpCisgICAgICAgICAg
ICBuZXh0LnJlc2V0KCk7CisgICAgfQorCisgICAgaWYgKG5leHQgJiYgIWlzTmVhckVub3VnaFRv
T2Zmc2V0Rm9yUHJveGltaXR5KGluZm8uc3RyaWN0bmVzcywgc2Nyb2xsRGVzdGluYXRpb25PZmZz
ZXQsICgqbmV4dCkuZmlyc3QsIHZpZXdwb3J0TGVuZ3RoKSkKKyAgICAgICAgbmV4dC5yZXNldCgp
OworICAgIGlmIChwcmV2aW91cyAmJiAhaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHko
aW5mby5zdHJpY3RuZXNzLCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgKCpwcmV2aW91cykuZmly
c3QsIHZpZXdwb3J0TGVuZ3RoKSkKKyAgICAgICAgcHJldmlvdXMucmVzZXQoKTsKKworICAgIC8v
IElmIHdlIGRvbid0IGhhdmUgY29tcGF0aWJsZSBvZmZzZXRzIHRvIGNob29zZSBiZXR3ZWVuLCBq
dXN0IGRvIHRoZSBvYnZpb3VzIHRoaW5nCisgICAgLy8gYW5kIGRvIG5vIHNuYXBwaW5nIG9yIG9u
bHkgc2VsZWN0IHRoZSBzaW5nbGUgY29tcGF0aWJsZSBvZmZzZXQuCisgICAgaWYgKCFwcmV2aW91
cyAmJiAhbmV4dCkKKyAgICAgICAgcmV0dXJuIHBhaXJGb3JOb1NuYXBwaW5nOworICAgIGlmICgh
cHJldmlvdXMpCisgICAgICAgIHJldHVybiAqbmV4dDsKKyAgICBpZiAoIW5leHQpCisgICAgICAg
IHJldHVybiAqcHJldmlvdXM7CisKKyAgICAvLyBJZiB0aGlzIHNjcm9sbCBpc24ndCBkaXJlY3Rp
b25hbCwgdGhlbiBjaG9vc2Ugd2hhdGV2ZXIgc25hcCBwb2ludCBpcyBjbG9zZXIuCisgICAgVW5p
dFR5cGUgcHJldmlvdXNTbmFwT2Zmc2V0ID0gKCpwcmV2aW91cykuZmlyc3Q7CisgICAgVW5pdFR5
cGUgbmV4dFNuYXBPZmZzZXQgPSAoKm5leHQpLmZpcnN0OworICAgIGlmICghc3RkOjphYnModmVs
b2NpdHkpKSB7CisgICAgICAgIGJvb2wgaXNDbG9zZXJUb1ByZXZpb3VzU25hcEluZGV4ID0gc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQgLSBwcmV2aW91c1NuYXBPZmZzZXQgPD0gbmV4dFNuYXBPZmZz
ZXQgLSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldDsKKyAgICAgICAgcmV0dXJuIGlzQ2xvc2VyVG9Q
cmV2aW91c1NuYXBJbmRleCA/ICpwcmV2aW91cyA6ICpuZXh0OworICAgIH0KKworICAgIC8vIEZp
bmFsbHksIGlmIHdlIGhhdmUgYSBkaXJlY3Rpb25hbCBzY3JvbGwgcHJlZmVyIHRoZSBzbmFwIHBv
aW50IHRoYXQgaXMgaW4gdGhlIHNjcm9sbCBkaXJlY3Rpb24uCisgICAgcmV0dXJuIHZlbG9jaXR5
IDwgMCA/ICpwcmV2aW91cyA6ICpuZXh0OworfQorCisKK3RlbXBsYXRlIDw+IHRlbXBsYXRlIDw+
CitzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgdW5zaWduZWQ+IExheW91dFNjcm9sbFNuYXBPZmZzZXRz
SW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IExheW91
dFNpemUmIHZpZXdwb3J0U2l6ZSwgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwg
ZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPExheW91dFVuaXQ+IG9yaWdpbmFsT2Zmc2V0Rm9yRGly
ZWN0aW9uYWxTbmFwcGluZykgY29uc3QKK3sKKyAgICByZXR1cm4gY2FsY3VsYXRlQ2xvc2VzdFNu
YXBPZmZzZXQ8TGF5b3V0VW5pdCwgTGF5b3V0UmVjdCwgTGF5b3V0U2l6ZT4oKnRoaXMsIGF4aXMs
IHZpZXdwb3J0U2l6ZSwgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5h
bE9mZnNldEZvckRpcmVjdGlvbmFsU25hcHBpbmcpOworfQorCit0ZW1wbGF0ZSA8PiB0ZW1wbGF0
ZSA8Pgorc3RkOjpwYWlyPGZsb2F0LCB1bnNpZ25lZD4gRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0lu
Zm86OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBGbG9hdFNp
emUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZl
bG9jaXR5LCBPcHRpb25hbDxmbG9hdD4gb3JpZ2luYWxPZmZzZXRGb3JEaXJlY3Rpb25hbFNuYXBw
aW5nKSBjb25zdAogewotICAgIHJldHVybiBjbG9zZXN0U25hcE9mZnNldFdpdGhPZmZzZXRzQW5k
UmFuZ2VzKG9mZnNldHNGb3JBeGlzKGF4aXMpLCBvZmZzZXRSYW5nZXNGb3JBeGlzKGF4aXMpLCBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJl
Y3Rpb25hbFNuYXBwaW5nKTsKKyAgICByZXR1cm4gY2FsY3VsYXRlQ2xvc2VzdFNuYXBPZmZzZXQ8
ZmxvYXQsIEZsb2F0UmVjdCwgRmxvYXRTaXplPigqdGhpcywgYXhpcywgdmlld3BvcnRTaXplLCBz
Y3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0
aW9uYWxTbmFwcGluZyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKaW5kZXggMjBhNjQ3ZmVhMTJjNmNjOGI1
NTU3OWM1MWJkMGEzNjA1ZmRjZTVlNi4uNjIzMGFiOWM3YmQ2MDY5MjZhMTBmNzZlYjdlNjQyNzgx
YTE1MTg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
U25hcE9mZnNldHNJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsU25hcE9mZnNldHNJbmZvLmgKQEAgLTI3LDYgKzI3LDEwIEBACiAKICNpZiBFTkFCTEUoQ1NT
X1NDUk9MTF9TTkFQKQogCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRT
aXplLmgiCisjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIkxheW91dFNpemUuaCIK
ICNpbmNsdWRlICJMYXlvdXRVbml0LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNs
dWRlICJTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCIKQEAgLTM1LDM5ICszOSwyOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIExheW91dFJlY3Q7CiBjbGFzcyBTY3JvbGxhYmxlQXJl
YTsKIGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBPZmZzZXRUeXBlPgogc3RydWN0IFNuYXBPZmZz
ZXQgewotICAgIFQgb2Zmc2V0OworICAgIE9mZnNldFR5cGUgb2Zmc2V0OwogICAgIFNjcm9sbFNu
YXBTdG9wIHN0b3A7CisgICAgc2l6ZV90IHNuYXBBcmVhSW5kZXg7CiB9OwogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLXN0cnVjdCBTY3JvbGxPZmZzZXRSYW5nZSB7Ci0gICAgVCBzdGFydDsKLSAg
ICBUIGVuZDsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgordGVtcGxhdGUgPHR5cGVuYW1l
IE9mZnNldFR5cGUsIHR5cGVuYW1lIFJlY3RUeXBlPgogc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRz
SW5mbyB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIFZlY3RvcjxT
bmFwT2Zmc2V0PFQ+PiBob3Jpem9udGFsU25hcE9mZnNldHM7Ci0gICAgVmVjdG9yPFNuYXBPZmZz
ZXQ8VD4+IHZlcnRpY2FsU25hcE9mZnNldHM7CisgICAgU2Nyb2xsU25hcFN0cmljdG5lc3Mgc3Ry
aWN0bmVzczsKIAotICAgIC8vIFNuYXAgb2Zmc2V0IHJhbmdlcyByZXByZXNlbnQgbm9uLWVtcHR5
IHJhbmdlcyBvZiBzY3JvbGwgb2Zmc2V0cyBpbiB3aGljaCBzY3JvbGxpbmcgbWF5IHJlc3QgYWZ0
ZXIgc2Nyb2xsIHNuYXBwaW5nLgotICAgIC8vIFRoZXNlIGFyZSB1c2VkIGluIHR3byBjYXNlczog
KDEpIGZvciBwcm94aW1pdHkgc2Nyb2xsIHNuYXBwaW5nLCB3aGVyZSBwb3J0aW9ucyBvZiBhcmVh
cyBiZXR3ZWVuIGFkamFjZW50IHNuYXAgb2Zmc2V0cwotICAgIC8vIG1heSBlbWl0IHNuYXAgb2Zm
c2V0IHJhbmdlcywgYW5kICgyKSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgc25hcCBhcmVhIGlzIGxh
cmdlciB0aGFuIHRoZSBzbmFwIHBvcnQsIGluIHdoaWNoIGNhc2UgYXJlYXMKLSAgICAvLyB3aGVy
ZSB0aGUgc25hcCBwb3J0IGZpdHMgd2l0aGluIHRoZSBzbmFwIGFyZWEgYXJlIGNvbnNpZGVyZWQg
dG8gYmUgdmFsaWQgc25hcCBwb3NpdGlvbnMuCi0gICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PFQ+PiBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlczsKLSAgICBWZWN0b3I8U2Nyb2xsT2Zmc2V0
UmFuZ2U8VD4+IHZlcnRpY2FsU25hcE9mZnNldFJhbmdlczsKKyAgICBWZWN0b3I8U25hcE9mZnNl
dDxPZmZzZXRUeXBlPj4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzOworICAgIFZlY3RvcjxTbmFwT2Zm
c2V0PE9mZnNldFR5cGU+PiB2ZXJ0aWNhbFNuYXBPZmZzZXRzOworICAgIFZlY3RvcjxSZWN0VHlw
ZT4gc25hcEFyZWFzOwogCi0gICAgYm9vbCBpc0VxdWFsKGNvbnN0IFNjcm9sbFNuYXBPZmZzZXRz
SW5mbzxUPiYgb3RoZXIpIGNvbnN0CisgICAgYm9vbCBpc0VxdWFsKGNvbnN0IFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbzxPZmZzZXRUeXBlLCBSZWN0VHlwZT4mIG90aGVyKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGhvcml6b250YWxTbmFwT2Zmc2V0cyA9PSBvdGhlci5ob3Jpem9udGFsU25h
cE9mZnNldHMgJiYgdmVydGljYWxTbmFwT2Zmc2V0cyA9PSBvdGhlci52ZXJ0aWNhbFNuYXBPZmZz
ZXRzICYmIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID09IG90aGVyLmhvcml6b250YWxTbmFw
T2Zmc2V0UmFuZ2VzICYmIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyA9PSBvdGhlci52ZXJ0aWNh
bFNuYXBPZmZzZXRSYW5nZXM7CisgICAgICAgIHJldHVybiBzdHJpY3RuZXNzID09IG90aGVyLnN0
cmljdG5lc3MgJiYgaG9yaXpvbnRhbFNuYXBPZmZzZXRzID09IG90aGVyLmhvcml6b250YWxTbmFw
T2Zmc2V0cyAmJiB2ZXJ0aWNhbFNuYXBPZmZzZXRzID09IG90aGVyLnZlcnRpY2FsU25hcE9mZnNl
dHMgJiYgc25hcEFyZWFzID09IG90aGVyLnNuYXBBcmVhczsKICAgICB9CiAKICAgICBib29sIGlz
RW1wdHkoKSBjb25zdApAQCAtNzUsMjkgKzY5LDI3IEBAIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0
c0luZm8gewogICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFNuYXBPZmZzZXRzLmlzRW1wdHkoKSAm
JiB2ZXJ0aWNhbFNuYXBPZmZzZXRzLmlzRW1wdHkoKTsKICAgICB9CiAKLSAgICBWZWN0b3I8U25h
cE9mZnNldDxUPj4gb2Zmc2V0c0ZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpIGNvbnN0Cisg
ICAgVmVjdG9yPFNuYXBPZmZzZXQ8T2Zmc2V0VHlwZT4+IG9mZnNldHNGb3JBeGlzKFNjcm9sbEV2
ZW50QXhpcyBheGlzKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGF4aXMgPT0gU2Nyb2xs
RXZlbnRBeGlzOjpWZXJ0aWNhbCA/IHZlcnRpY2FsU25hcE9mZnNldHMgOiBob3Jpem9udGFsU25h
cE9mZnNldHM7CiAgICAgfQogCi0gICAgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPFQ+PiBvZmZz
ZXRSYW5nZXNGb3JBeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlzKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCA/IHZlcnRpY2FsU25h
cE9mZnNldFJhbmdlcyA6IGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOwotICAgIH0KLQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFR5cGU+IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxPdXRw
dXRUeXBlPiBjb252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAwLjApIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxULCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBP
ZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBUIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2
ZWxvY2l0eSwgT3B0aW9uYWw8VD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBp
bmcgPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFR5
cGUsIHR5cGVuYW1lIE91dHB1dFJlY3RUeXBlPiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88T3V0cHV0
VHlwZSwgT3V0cHV0UmVjdFR5cGU+IGNvbnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
ciA9IDAuMCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2l6ZVR5cGU+IFdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxPZmZzZXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBTaXplVHlwZSYgdmlld3BvcnRTaXplLCBPZmZzZXRUeXBl
IHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8T2Zmc2V0
VHlwZT4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcgPSBXVEY6Om51bGxv
cHQpIGNvbnN0OwogfTsKIAordXNpbmcgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvID0gU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQsIExheW91dFJlY3Q+OwordXNpbmcgRmxvYXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQsIEZsb2F0
UmVjdD47CisKIHRlbXBsYXRlIDw+IHRlbXBsYXRlIDw+Ci1TY3JvbGxTbmFwT2Zmc2V0c0luZm88
TGF5b3V0VW5pdD4gU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0Pjo6Y29udmVydFVuaXRzKGZs
b2F0IC8qIHVudXNlZFNjYWxlRmFjdG9yICovKSBjb25zdDsKLXRlbXBsYXRlIDw+Ci1XRUJDT1JF
X0VYUE9SVCBzdGQ6OnBhaXI8ZmxvYXQsIHVuc2lnbmVkPiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88
ZmxvYXQ+OjpjbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGZsb2F0IHNjcm9sbERl
c3RpbmF0aW9uT2Zmc2V0LCBmbG9hdCB2ZWxvY2l0eSwgT3B0aW9uYWw8ZmxvYXQ+IG9yaWdpbmFs
UG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nKSBjb25zdDsKK0xheW91dFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbyBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y29udmVydFVuaXRzKGZsb2F0
IC8qIHVudXNlZFNjYWxlRmFjdG9yICovKSBjb25zdDsKK3RlbXBsYXRlIDw+IHRlbXBsYXRlIDw+
CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8ZmxvYXQsIHVuc2lnbmVkPiBGbG9hdFNjcm9sbFNu
YXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBG
bG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZs
b2F0IHZlbG9jaXR5LCBPcHRpb25hbDxmbG9hdD4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlv
bmFsU25hcHBpbmcpIGNvbnN0OwogCiB0ZW1wbGF0ZSA8PiB0ZW1wbGF0ZSA8PgotU2Nyb2xsU25h
cE9mZnNldHNJbmZvPGZsb2F0PiBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD46OmNv
bnZlcnRVbml0cyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29uc3Q7Ci10ZW1wbGF0ZSA8Pgot
V0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBTY3JvbGxTbmFw
T2Zmc2V0c0luZm88TGF5b3V0VW5pdD46OmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhp
cywgTGF5b3V0VW5pdCBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIE9w
dGlvbmFsPExheW91dFVuaXQ+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5n
KSBjb25zdDsKK0Zsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvIExheW91dFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzo6Y29udmVydFVuaXRzKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25zdDsKK3Rl
bXBsYXRlIDw+IHRlbXBsYXRlIDw+CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8TGF5b3V0VW5p
dCwgdW5zaWduZWQ+IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y2xvc2VzdFNuYXBPZmZz
ZXQoU2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBMYXlvdXRTaXplJiB2aWV3cG9ydFNpemUsIExheW91
dFVuaXQgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxM
YXlvdXRVbml0PiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGluZykgY29uc3Q7
CiAKIGNvbnN0IHVuc2lnbmVkIGludmFsaWRTbmFwT2Zmc2V0SW5kZXggPSBVSU5UX01BWDsKIApA
QCAtMTA2LDcgKzk4LDcgQEAgY29uc3QgdW5zaWduZWQgaW52YWxpZFNuYXBPZmZzZXRJbmRleCA9
IFVJTlRfTUFYOwogLy8gdGhlIHNjcm9sbGluZyBjb250YWluZXIncyBib3JkZXIgYm94Lgogdm9p
ZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiwgY29u
c3QgUmVuZGVyQm94JiBzY3JvbGxpbmdFbGVtZW50Qm94LCBjb25zdCBSZW5kZXJTdHlsZSYgc2Ny
b2xsaW5nRWxlbWVudFN0eWxlLCBMYXlvdXRSZWN0IHZpZXdwb3J0UmVjdEluQm9yZGVyQm94Q29v
cmRpbmF0ZXMpOwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYgdHMsIFNuYXBPZmZzZXQ8VD4gb2Zmc2V0KQordGVtcGxh
dGUgPHR5cGVuYW1lIE9mZnNldFR5cGU+IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mIHRzLCBTbmFwT2Zmc2V0PE9mZnNldFR5cGU+IG9mZnNldCkKIHsKICAgICB0
cyA8PCBvZmZzZXQub2Zmc2V0OwogICAgIGlmIChvZmZzZXQuc3RvcCA9PSBTY3JvbGxTbmFwU3Rv
cDo6QWx3YXlzKQpAQCAtMTE0LDEzICsxMDYsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYgdHMsIFNuYXBPZmZzZQog
ICAgIHJldHVybiB0czsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbE9mZnNldFJhbmdlPFQ+JiByYW5n
ZSkKLXsKLSAgICB0cyA8PCAic3RhcnQ6ICIgPDwgcmFuZ2Uuc3RhcnQgPDwgIiBlbmQ6ICIgPDwg
cmFuZ2UuZW5kOwotICAgIHJldHVybiB0czsKLX0KLQogfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
LmNwcAppbmRleCBmNDA4MTlhZmUzY2VmZDM0ODE4MDZmNDE3OTllOTA1OTg3NWY4MGUxLi44NDMy
ODgxYzg5ZjE2YzU3YjQ2NzRjMjRiYjRhOTgzODZkN2FjOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6c2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50JiBzY3JvbGxPcmlnaW4pCiB9CiAK
ICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OnNldFNuYXBPZmZzZXRzSW5mbyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88Zmxv
YXQ+JiBpbmZvKQordm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNuYXBPZmZz
ZXRzSW5mbyhjb25zdCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgaW5mbykKIHsKICAgICBp
ZiAobV9zbmFwT2Zmc2V0c0luZm8uaXNFcXVhbChpbmZvKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaAppbmRleCBiZDRlOTdiOWM1ZWZkZjkxMjlkZWY4YjZiYjIzMGQzN2I0
MTY0MDQ0Li5jNWQ3NjM5Y2YxY2FlMGM3ZTAzN2ZjMzU5OWYyMjU4MWJhYWRhYmU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuaApAQCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRTY3JvbGxPcmlnaW4oY29uc3QgSW50UG9pbnQmKTsKIAogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCi0gICAgY29uc3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvPGZsb2F0
PiYgc25hcE9mZnNldHNJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87IH0K
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNuYXBPZmZzZXRzSW5mbyhjb25zdCBTY3JvbGxT
bmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBuZXdPZmZzZXRzSW5mbyk7CisgICAgY29uc3QgRmxvYXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8mIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
c25hcE9mZnNldHNJbmZvOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTbmFwT2Zmc2V0
c0luZm8oY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIG5ld09mZnNldHNJbmZvKTsK
IAogICAgIHVuc2lnbmVkIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXg7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgodW5zaWduZWQp
OwpAQCAtMTMwLDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmln
aW47CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFNjcm9sbFNuYXBPZmZzZXRz
SW5mbzxmbG9hdD4gbV9zbmFwT2Zmc2V0c0luZm87CisgICAgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8gbV9zbmFwT2Zmc2V0c0luZm87CiAgICAgdW5zaWduZWQgbV9jdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fY3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXggeyAwIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCA2
MzI3N2VmN2E0MjJiY2NjN2Q5NTE0YzJlNGJiYTc4OGJlYTBiZmIzLi4xMjA0ZjMzZjFmMDYxNjcz
YjQ5ZmI0YTY3ODg3OGI3Y2U5OTZhZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0z
MzUsNyArMzM1LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3Bl
cnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHIKIH0KIAogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCi1jb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c25hcE9mZnNldHNJbmZvKCkgY29uc3QKK2NvbnN0IEZs
b2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6c25h
cE9mZnNldHNJbmZvKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zbmFwT2Zmc2V0c0luZm87CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuaAppbmRleCBiZTQ5ZDBiMTI1ZjAxYjcxZWQ2ZDhiY2FlNGY2ZTI3
NzUwYzM4NGI2Li41NWJjZWQzZTBlNjEyMTA2ZDkzZjg1MmVlZjdkNDY0MjEwNTI1NDM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2Fu
SGF2ZVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVy
cy5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmYgfHwgbV9zY3Jv
bGxhYmxlQXJlYVBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxiYXJNb2RlICE9IFNjcm9sbGJhckFs
d2F5c09mZjsgfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBjb25zdCBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBzbmFwT2Zmc2V0c0luZm8oKSBjb25zdDsKKyAgICBj
b25zdCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgc25hcE9mZnNldHNJbmZvKCkgY29uc3Q7
CiAgICAgdW5zaWduZWQgY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleDsgfQogICAgIHVuc2lnbmVk
IGN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50
VmVydGljYWxTbmFwUG9pbnRJbmRleDsgfQogICAgIHZvaWQgc2V0Q3VycmVudEhvcml6b250YWxT
bmFwUG9pbnRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXggPSBpbmRleDsgfQpAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgRmxv
YXRQb2ludCBtX2N1cnJlbnRTY3JvbGxQb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX3Njcm9sbE9y
aWdpbjsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIFNjcm9sbFNuYXBPZmZzZXRz
SW5mbzxmbG9hdD4gbV9zbmFwT2Zmc2V0c0luZm87CisgICAgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0
c0luZm8gbV9zbmFwT2Zmc2V0c0luZm87CiAgICAgdW5zaWduZWQgbV9jdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fY3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXggeyAwIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVNYWMubW0KaW5kZXggYTViNDhjMjAzNDE1YWI3YjA5Y2U5YzNmYTk5YzE1
ZWE2Mzc0MGU0NS4uM2UyNDU3NGFiMDBlZmY0NWUwZjhjYTEwZjEzMDg1MWE4MWFlYTc2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KQEAgLTY1
LDcgKzY1LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjp1
cGRhdGVGcm9tU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1MKIAogI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25hcE9mZnNldHNJbmZvKSkKLSAgICAgICAg
bV9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoc2Nyb2xsaW5nU3RhdGVO
b2RlLnNuYXBPZmZzZXRzSW5mbygpLmNvbnZlcnRVbml0czxMYXlvdXRVbml0PigpKTsKKyAgICAg
ICAgbV9zY3JvbGxDb250cm9sbGVyLnVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoc2Nyb2xsaW5nU3Rh
dGVOb2RlLnNuYXBPZmZzZXRzSW5mbygpLmNvbnZlcnRVbml0czxMYXlvdXRVbml0LCBMYXlvdXRS
ZWN0PigpKTsKIAogICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNl
dEluZGV4KSkKICAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLnNldEFjdGl2ZVNjcm9sbFNuYXBJ
bmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBzY3JvbGxpbmdTdGF0ZU5v
ZGUuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKaW5kZXgg
NzkzOGIxYTkwNDgzNzkwNDY5ZDgxNjIzY2UwZmM0Y2Y5MjEyNjc5MC4uOTI1OGU3ZWFhNGVkZDQ3
YzVlNDBjZTM2YTAyZWVkODYxYTNhNDgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKQEAgLTE3Myw4ICsxNzMs
OCBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWE6OmhhbmRsZVdoZWVsRQogICAgICAgICBGbG9hdFBvaW50IG5ld0Zsb2F0
T2Zmc2V0ID0gc2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRTY3JvbGxPZmZzZXQoKSArIEZsb2F0U2l6
ZShkZWx0YVgsIGRlbHRhWSk7CiAgICAgICAgIGF1dG8gbmV3T2Zmc2V0ID0gTGF5b3V0UG9pbnQo
bmV3RmxvYXRPZmZzZXQueCgpIC8gc2NhbGUsIG5ld0Zsb2F0T2Zmc2V0LnkoKSAvIHNjYWxlKTsK
IAotICAgICAgICBhdXRvIG9mZnNldFggPSBzY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZv
KCkuY2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBuZXdPZmZz
ZXQueCgpLCBkZWx0YVgsIG9yaWdpbmFsT2Zmc2V0LngoKSkuZmlyc3Q7Ci0gICAgICAgIGF1dG8g
b2Zmc2V0WSA9IHNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKS5jbG9zZXN0U25hcE9m
ZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBuZXdPZmZzZXQueSgpLCBkZWx0YVksIG9y
aWdpbmFsT2Zmc2V0LnkoKSkuZmlyc3Q7CisgICAgICAgIGF1dG8gb2Zmc2V0WCA9IHNjcm9sbGlu
Z05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKS5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwsIHNjcm9sbGFibGVBcmVhU2l6ZSgpLCBuZXdPZmZzZXQueCgpLCBkZWx0
YVgsIG9yaWdpbmFsT2Zmc2V0LngoKSkuZmlyc3Q7CisgICAgICAgIGF1dG8gb2Zmc2V0WSA9IHNj
cm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0luZm8oKS5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxF
dmVudEF4aXM6OlZlcnRpY2FsLCBzY3JvbGxhYmxlQXJlYVNpemUoKSwgbmV3T2Zmc2V0LnkoKSwg
ZGVsdGFZLCBvcmlnaW5hbE9mZnNldC55KCkpLmZpcnN0OwogCiAgICAgICAgIGRlbHRhWCA9IChv
ZmZzZXRYIC0gb3JpZ2luYWxPZmZzZXQueCgpKSAqIHNjYWxlOwogICAgICAgICBkZWx0YVkgPSAo
b2Zmc2V0WSAtIG9yaWdpbmFsT2Zmc2V0LnkoKSkgKiBzY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAKaW5kZXggYzNlYzZjNDQxZDMxMmY1ODUyYmJk
NmYyYjQ5MGUyN2NiNWUzMTNhZS4uNjU1MDBkMTBmZWYzODEwNzQyMmUyOWZiOTljMDU2ZTA2MTI1
ZGIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5jcHAK
QEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFw
U3RhdGUoY29uc3QgU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmUKICAgICB1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKCpzbmFwT2Zmc2V0SW5mbyk7CiB9CiAKLXZvaWQgU2Nyb2xsQ29udHJvbGxl
cjo6dXBkYXRlU2Nyb2xsU25hcFBvaW50cyhjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5
b3V0VW5pdD4mIHNuYXBPZmZzZXRJbmZvKQordm9pZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVT
Y3JvbGxTbmFwUG9pbnRzKGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgc25hcE9m
ZnNldEluZm8pCiB7CiAgICAgaWYgKHNuYXBPZmZzZXRJbmZvLmlzRW1wdHkoKSkgewogICAgICAg
ICBtX3Njcm9sbFNuYXBTdGF0ZSA9IG51bGxwdHI7CkBAIC0xMTUsOCArMTE1LDggQEAgdm9pZCBT
Y3JvbGxDb250cm9sbGVyOjpzZXROZWFyZXN0U2Nyb2xsU25hcEluZGV4Rm9yQXhpc0FuZE9mZnNl
dChTY3JvbGxFdmVudEF4aXMKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0VW5pdCBjbGFt
cGVkT2Zmc2V0ID0gc3RkOjptaW4oc3RkOjptYXgoTGF5b3V0VW5pdChvZmZzZXQgLyBzY2FsZUZh
Y3RvciksIHNuYXBPZmZzZXRzLmZpcnN0KCkub2Zmc2V0KSwgc25hcE9mZnNldHMubGFzdCgpLm9m
ZnNldCk7Ci0KLSAgICB1bnNpZ25lZCBhY3RpdmVJbmRleCA9IHNuYXBTdGF0ZS5zbmFwT2Zmc2V0
SW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIGNsYW1wZWRPZmZzZXQsIDApLnNlY29uZDsK
KyAgICBMYXlvdXRTaXplIHZpZXdwb3J0U2l6ZShtX2NsaWVudC52aWV3cG9ydFNpemUoKS53aWR0
aCgpLCBtX2NsaWVudC52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSk7CisgICAgdW5zaWduZWQgYWN0
aXZlSW5kZXggPSBzbmFwU3RhdGUuc25hcE9mZnNldEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChh
eGlzLCB2aWV3cG9ydFNpemUsIGNsYW1wZWRPZmZzZXQsIDApLnNlY29uZDsKICAgICBpZiAoYWN0
aXZlSW5kZXggPT0gYWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhheGlzKSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0xMzcsNyArMTM3LDkgQEAgZmxvYXQgU2Nyb2xsQ29udHJvbGxlcjo6YWRq
dXN0U2Nyb2xsRGVzdGluYXRpb24oU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IGRlc3QKICAg
ICBPcHRpb25hbDxMYXlvdXRVbml0PiBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHM7CiAgICAg
aWYgKG9yaWdpbmFsT2Zmc2V0Lmhhc1ZhbHVlKCkpCiAgICAgICAgIG9yaWdpbmFsT2Zmc2V0SW5M
YXlvdXRVbml0cyA9IExheW91dFVuaXQoKm9yaWdpbmFsT2Zmc2V0IC8gbV9jbGllbnQucGFnZVNj
YWxlRmFjdG9yKCkpOwotICAgIExheW91dFVuaXQgb2Zmc2V0ID0gc25hcFN0YXRlLnNuYXBPZmZz
ZXRJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0VW5pdChkZXN0aW5hdGlvbk9m
ZnNldCAvIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpKSwgdmVsb2NpdHksIG9yaWdpbmFsT2Zm
c2V0SW5MYXlvdXRVbml0cykuZmlyc3Q7CisKKyAgICBMYXlvdXRTaXplIHZpZXdwb3J0U2l6ZSht
X2NsaWVudC52aWV3cG9ydFNpemUoKS53aWR0aCgpLCBtX2NsaWVudC52aWV3cG9ydFNpemUoKS5o
ZWlnaHQoKSk7CisgICAgTGF5b3V0VW5pdCBvZmZzZXQgPSBzbmFwU3RhdGUuc25hcE9mZnNldElu
Zm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydFNpemUsIExheW91dFVuaXQoZGVz
dGluYXRpb25PZmZzZXQgLyBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSksIHZlbG9jaXR5LCBv
cmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMpLmZpcnN0OwogICAgIHJldHVybiBvZmZzZXQgKiBt
X2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQ29udHJvbGxlci5oCmluZGV4IGQ5MjVmZDQ1NTg0YzAxMTFjOWVmMGMyODkxZjdjNzUx
NjYxMGViN2IuLmRkNTNhZGE5MGEyZjVmMjkwODgwMTAyM2MzZTVhM2M0MzFlZjYxNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbENvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxDb250cm9sbGVyLmgKQEAgLTEzMiw3ICsxMzIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxQb3NpdGlvbkNoYW5nZWQoKTsKIAogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgdm9pZCB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKGNv
bnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYpOworICAgIHZvaWQgdXBkYXRl
U2Nyb2xsU25hcFBvaW50cyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKICAg
ICB2b2lkIHNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzLCB1
bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kaWNlc0Zvck9mZnNldChT
Y3JvbGxPZmZzZXQpOwogICAgIGJvb2wgYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2U7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcApp
bmRleCBkYTk3OTJkMDc1OGZkMWM1NzcyZjdmNjNkMTI2OTI3ZWMwMDY1NzJlLi4wNTZkZDkxODZl
OGJlMmRkOWZhZmU4ZGI5YzQxNjg5YWFmY2ZkYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwCkBAIC01MSw4ICs1MSw4IEBA
IHZvaWQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Ny
b2xsU25hcFN0YXRlIHN0YXRlLCBjb25zCiAKICAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKHZpZXdwb3J0U2l6ZSwgY29udGVudFNp
emUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKICAgICBh
dXRvIHByZWRpY3RlZFNjcm9sbFRhcmdldCA9IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5wcmVkaWN0
ZWREZXN0aW5hdGlvbk9mZnNldCgpOwotICAgIGZsb2F0IHRhcmdldE9mZnNldFggPSB0YXJnZXRP
ZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIGNvbnRlbnRT
aXplLndpZHRoKCkgLSB2aWV3cG9ydFNpemUud2lkdGgoKSwgaW5pdGlhbE9mZnNldC54KCksIHBy
ZWRpY3RlZFNjcm9sbFRhcmdldC53aWR0aCgpLCBwYWdlU2NhbGUsIGluaXRpYWxEZWx0YS53aWR0
aCgpLCBtX2FjdGl2ZVNuYXBJbmRleFgpOwotICAgIGZsb2F0IHRhcmdldE9mZnNldFkgPSB0YXJn
ZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBjb250ZW50
U2l6ZS5oZWlnaHQoKSAtIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCks
IHByZWRpY3RlZFNjcm9sbFRhcmdldC5oZWlnaHQoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEu
aGVpZ2h0KCksIG1fYWN0aXZlU25hcEluZGV4WSk7CisgICAgZmxvYXQgdGFyZ2V0T2Zmc2V0WCA9
IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwg
dmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS53aWR0aCgpIC0gdmlld3BvcnRTaXplLndpZHRoKCks
IGluaXRpYWxPZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQud2lkdGgoKSwgcGFnZVNj
YWxlLCBpbml0aWFsRGVsdGEud2lkdGgoKSwgbV9hY3RpdmVTbmFwSW5kZXhYKTsKKyAgICBmbG9h
dCB0YXJnZXRPZmZzZXRZID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRB
eGlzOjpWZXJ0aWNhbCwgdmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS5oZWlnaHQoKSAtIHZpZXdw
b3J0U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRpY3RlZFNjcm9sbFRhcmdl
dC5oZWlnaHQoKSwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVpZ2h0KCksIG1fYWN0aXZlU25h
cEluZGV4WSk7CiAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3ItPnNldFJldGFyZ2V0ZWRTY3JvbGxP
ZmZzZXQoeyB0YXJnZXRPZmZzZXRYLCB0YXJnZXRPZmZzZXRZIH0pOwogICAgIG1fc3RhcnRUaW1l
ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgbV9jdXJyZW50U3RhdGUgPSBzdGF0ZTsKQEAg
LTkxLDcgKzkxLDcgQEAgRmxvYXRQb2ludCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6Y3VycmVu
dEFuaW1hdGVkU2Nyb2xsT2Zmc2V0KGJvb2wmIGlzQW5pbWF0aW8KICAgICByZXR1cm4gbV9tb21l
bnR1bUNhbGN1bGF0b3ItPnNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoZWxhcHNlZFRpbWUp
OwogfQogCi1mbG9hdCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3Rh
cnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxv
YXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBm
bG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0Citm
bG9hdCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9h
dCBtYXhTY3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBmbG9hdCBwcmVkaWN0ZWRPZmZz
ZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhLCB1bnNpZ25lZCYgb3V0QWN0
aXZlU25hcEluZGV4KSBjb25zdAogewogICAgIGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRzID0gbV9z
bmFwT2Zmc2V0c0luZm8ub2Zmc2V0c0ZvckF4aXMoYXhpcyk7CiAgICAgaWYgKHNuYXBPZmZzZXRz
LmlzRW1wdHkoKSkgewpAQCAtOTksNyArOTksNyBAQCBmbG9hdCBTY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZTo6dGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsCiAg
ICAgICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PihwcmVkaWN0ZWRPZmZzZXQsIDAsIG1heFNjcm9s
bE9mZnNldCk7CiAgICAgfQogCi0gICAgZmxvYXQgdGFyZ2V0T2Zmc2V0ID0gbV9zbmFwT2Zmc2V0
c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgTGF5b3V0VW5pdChwcmVkaWN0ZWRPZmZzZXQg
LyBwYWdlU2NhbGUpLCBpbml0aWFsRGVsdGEsIExheW91dFVuaXQoc3RhcnRPZmZzZXQgLyBwYWdl
U2NhbGUpKS5maXJzdDsKKyAgICBmbG9hdCB0YXJnZXRPZmZzZXQgPSBtX3NuYXBPZmZzZXRzSW5m
by5jbG9zZXN0U25hcE9mZnNldChheGlzLCBMYXlvdXRTaXplIHsgdmlld3BvcnRTaXplIH0sIExh
eW91dFVuaXQocHJlZGljdGVkT2Zmc2V0IC8gcGFnZVNjYWxlKSwgaW5pdGlhbERlbHRhLCBMYXlv
dXRVbml0KHN0YXJ0T2Zmc2V0IC8gcGFnZVNjYWxlKSkuZmlyc3Q7CiAgICAgZmxvYXQgbWluaW11
bVRhcmdldE9mZnNldCA9IHN0ZDo6bWF4PGZsb2F0PigwLCBzbmFwT2Zmc2V0cy5maXJzdCgpLm9m
ZnNldCk7CiAgICAgZmxvYXQgbWF4aW11bVRhcmdldE9mZnNldCA9IHN0ZDo6bWluPGZsb2F0Piht
YXhTY3JvbGxPZmZzZXQsIHNuYXBPZmZzZXRzLmxhc3QoKS5vZmZzZXQpOwogICAgIHRhcmdldE9m
ZnNldCA9IGNsYW1wVG88ZmxvYXQ+KHRhcmdldE9mZnNldCwgbWluaW11bVRhcmdldE9mZnNldCwg
bWF4aW11bVRhcmdldE9mZnNldCk7CkBAIC0xMTEsMTEgKzExMSw2IEBAIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlJiBz
dGF0ZSkKICAgICB0cyA8PCAiU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUiOwogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic25hcCBvZmZzZXRzIHgiLCBzdGF0ZS5zbmFwT2Zmc2V0c0ZvckF4aXMoU2Nyb2xs
RXZlbnRBeGlzOjpIb3Jpem9udGFsKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJzbmFwIG9mZnNl
dHMgeSIsIHN0YXRlLnNuYXBPZmZzZXRzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2Fs
KSk7Ci0gICAgaWYgKCFzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwpLmlzRW1wdHkoKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzbmFw
IG9mZnNldHMgcmFuZ2VzIHgiLCBzdGF0ZS5zbmFwT2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxF
dmVudEF4aXM6Okhvcml6b250YWwpKTsKLSAgICBpZiAoIXN0YXRlLnNuYXBPZmZzZXRSYW5nZXNG
b3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpLmlzRW1wdHkoKSkKLSAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJzbmFwIG9mZnNldHMgcmFuZ2VzIHkiLCBzdGF0ZS5zbmFwT2Zmc2V0UmFu
Z2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsKSk7Ci0KICAgICB0cy5kdW1wUHJv
cGVydHkoImFjdGl2ZSBzbmFwIGluZGV4IHgiLCBzdGF0ZS5hY3RpdmVTbmFwSW5kZXhGb3JBeGlz
KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgiYWN0
aXZlIHNuYXAgaW5kZXggeSIsIHN0YXRlLmFjdGl2ZVNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZl
bnRBeGlzOjpWZXJ0aWNhbCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRleCAzZmViMWFjM2I1OWFhZWU0NGM2MzliNGFmZjBj
MjQyNjk1ODIxNDk5Li42YjZkMjI3NWNmYTM0NWI5YTJiNmE2OWVhODE4OWQ2NjVkNjE0Y2RjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRl
LmgKQEAgLTU3LDI0ICs1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGF4aXMgPT0gU2Ny
b2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNu
YXBPZmZzZXRzIDogbV9zbmFwT2Zmc2V0c0luZm8udmVydGljYWxTbmFwT2Zmc2V0czsKICAgICB9
CiAKLSAgICBjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+JiBzbmFw
T2Zmc2V0UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IG1fc25h
cE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzIDogbV9zbmFwT2Zmc2V0c0lu
Zm8udmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzOwotICAgIH0KLQotICAgIGNvbnN0IFNjcm9sbFNu
YXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYgc25hcE9mZnNldEluZm8oKSBjb25zdCB7IHJldHVy
biBtX3NuYXBPZmZzZXRzSW5mbzsgfQotICAgIHZvaWQgc2V0U25hcE9mZnNldEluZm8oY29uc3Qg
U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBuZXdJbmZvKSB7IG1fc25hcE9mZnNl
dHNJbmZvID0gbmV3SW5mbzsgfQotCi0gICAgdm9pZCBzZXRTbmFwT2Zmc2V0c0FuZFBvc2l0aW9u
UmFuZ2VzRm9yQXhpcyhTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgVmVjdG9yPFNuYXBPZmZz
ZXQ8TGF5b3V0VW5pdD4+JiBzbmFwT2Zmc2V0cywgY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJh
bmdlPExheW91dFVuaXQ+PiYgc25hcE9mZnNldFJhbmdlcykKLSAgICB7Ci0gICAgICAgIGlmIChh
eGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkgewotICAgICAgICAgICAgbV9zbmFw
T2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7Ci0gICAgICAg
ICAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyA9IHNuYXBP
ZmZzZXRSYW5nZXM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3NuYXBPZmZzZXRz
SW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7Ci0gICAgICAgICAgICBtX3Nu
YXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzbmFwT2Zmc2V0UmFuZ2Vz
OwotICAgICAgICB9Ci0gICAgfQorICAgIGNvbnN0IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5m
byYgc25hcE9mZnNldEluZm8oKSBjb25zdCB7IHJldHVybiBtX3NuYXBPZmZzZXRzSW5mbzsgfQor
ICAgIHZvaWQgc2V0U25hcE9mZnNldEluZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvJiBuZXdJbmZvKSB7IG1fc25hcE9mZnNldHNJbmZvID0gbmV3SW5mbzsgfQogCiAgICAgU2Ny
b2xsU25hcFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFN0YXRl
OyB9CiAKQEAgLTEwMCwxMyArODQsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdHJhbnNpdGlvblRv
RGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBmbG9hdCB0YXJnZXRP
ZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGZsb2F0IG1heFNjcm9sbE9mZnNl
dCwgZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNj
YWxlLCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNv
bnN0OworICAgIGZsb2F0IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhp
cywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwg
ZmxvYXQgc3RhcnRPZmZzZXQsIGZsb2F0IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxl
LCBmbG9hdCBpbml0aWFsRGVsdGEsIHVuc2lnbmVkJiBvdXRBY3RpdmVTbmFwSW5kZXgpIGNvbnN0
OwogICAgIHZvaWQgdGVhcmRvd25BbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUpOwog
ICAgIHZvaWQgc2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUsIGNvbnN0IEZs
b2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9h
dCBwYWdlU2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0
U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSk7CiAK
ICAgICBTY3JvbGxTbmFwU3RhdGUgbV9jdXJyZW50U3RhdGUgeyBTY3JvbGxTbmFwU3RhdGU6OlVz
ZXJJbnRlcmFjdGlvbiB9OwogCi0gICAgU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+
IG1fc25hcE9mZnNldHNJbmZvOworICAgIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyBtX3Nu
YXBPZmZzZXRzSW5mbzsKIAogICAgIHVuc2lnbmVkIG1fYWN0aXZlU25hcEluZGV4WCB7IDAgfTsK
ICAgICB1bnNpZ25lZCBtX2FjdGl2ZVNuYXBJbmRleFkgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNzlmOWU5ODA5OGE4ZGRjYTJiNDljZTk3
N2QyMTQzZTFjYjZjYWY4NS4uMTMyYWVhMjg5ZTA5NzcyMjY5M2QxMmNlMDcwMDZhNTkxNjk2MWY2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcApAQCAtNDc5
LDE5ICs0NzksMTkgQEAgU3RyaW5nIFNjcm9sbGFibGVBcmVhOjp2ZXJ0aWNhbFNjcm9sbGJhclN0
YXRlRm9yVGVzdGluZygpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQot
U2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQ+JiBTY3JvbGxhYmxlQXJlYTo6ZW5zdXJl
U25hcE9mZnNldHNJbmZvKCkKK0xheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYgU2Nyb2xsYWJs
ZUFyZWE6OmVuc3VyZVNuYXBPZmZzZXRzSW5mbygpCiB7CiAgICAgaWYgKCFtX3NuYXBPZmZzZXRz
SW5mbykKLSAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBtYWtlVW5pcXVlPFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4oKTsKKyAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8gPSBt
YWtlVW5pcXVlPExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4oKTsKICAgICByZXR1cm4gKm1f
c25hcE9mZnNldHNJbmZvOwogfQogCi1jb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0
VW5pdD4qIFNjcm9sbGFibGVBcmVhOjpzbmFwT2Zmc2V0SW5mbygpIGNvbnN0Citjb25zdCBMYXlv
dXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIFNjcm9sbGFibGVBcmVhOjpzbmFwT2Zmc2V0SW5mbygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc25hcE9mZnNldHNJbmZvLmdldCgpOwogfQogCi12b2lk
IFNjcm9sbGFibGVBcmVhOjpzZXRTY3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25zdCBTY3JvbGxTbmFw
T2Zmc2V0c0luZm88TGF5b3V0VW5pdD4mIGluZm8pCit2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRT
Y3JvbGxTbmFwT2Zmc2V0SW5mbyhjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIGlu
Zm8pCiB7CiAgICAgaWYgKGluZm8uaXNFbXB0eSgpKSB7CiAgICAgICAgIGNsZWFyU25hcE9mZnNl
dHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmluZGV4IDdlYjdi
NTQwMjgyODQwYWI3YjVmMzFmZGZhNmIyYmZkNThlYjE5ZGMuLjM1ODcxNzljZGI3ZjY3OTM5OGE3
Yzg3NzMxMmVkNDk3YzE2ZmU4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJs
ZUFyZWEuaApAQCAtOTEsOSArOTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzU2Nyb2xsU25h
cCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0VW5pdD4qIHNuYXBPZmZzZXRJ
bmZvKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9m
ZnNldHNJbmZvKiBzbmFwT2Zmc2V0SW5mbygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTbmFwT2Zmc2V0cygpIHsgfTsKLSAgICB2b2lkIHNldFNjcm9sbFNuYXBPZmZzZXRJbmZvKGNv
bnN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYpOworICAgIHZvaWQgc2V0U2Ny
b2xsU25hcE9mZnNldEluZm8oY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvJik7CiAg
ICAgdm9pZCBjbGVhclNuYXBPZmZzZXRzKCk7CiAgICAgdW5zaWduZWQgY3VycmVudEhvcml6b250
YWxTbmFwUG9pbnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleDsgfQogICAgIHZvaWQgc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRl
eCh1bnNpZ25lZCBpbmRleCkgeyBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggPSBp
bmRleDsgfQpAQCAtMzg1LDggKzM4NSw4IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IG1fc2Nyb2xsQW5pbWF0b3I7CiAKICNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQotICAgIFNjcm9sbFNuYXBPZmZzZXRzSW5mbzxMYXlvdXRVbml0PiYg
ZW5zdXJlU25hcE9mZnNldHNJbmZvKCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbzxMYXlvdXRVbml0Pj4gbV9zbmFwT2Zmc2V0c0luZm87CisgICAgTGF5b3V0U2Ny
b2xsU25hcE9mZnNldHNJbmZvJiBlbnN1cmVTbmFwT2Zmc2V0c0luZm8oKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvPiBtX3NuYXBPZmZzZXRzSW5mbzsK
ICAgICB1bnNpZ25lZCBtX2N1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXggeyAwIH07CiAg
ICAgdW5zaWduZWQgbV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCB7IDAgfTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9y
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
CmluZGV4IGMwOTVjZDY2ZjU5NTZmOGI4OWFhY2IzM2Q1YjdmODAyMzBhOWE3YjUuLmQ0NTIxZDY1
OGMzM2ZhZDZlMzk2ZjYxYTgwN2U5ODUzMzE5OGJmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTEyNzgsNyArMTI3OCw3IEBA
IGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEoY29uc3QgRmxv
YXRTaXplJiBkZWx0YSkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1z
dGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5TbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzxMYXlvdXRVbml0Piogb2Zmc2V0SW5mbykKK3N0YXRpYyBib29sIGdlc3R1cmVTaG91
bGRCZWdpblNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxF
dmVudEF4aXMgYXhpcywgY29uc3QgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvKiBvZmZzZXRJ
bmZvKQogewogICAgIGlmICghb2Zmc2V0SW5mbykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IDNlMzgwZmQxNDVkNzIyNWJhYzA1NzMzMGMxOWQ2Y2E4OGEwZTBjZDIuLjFjODIxZWViN2Nk
YmIxNGUwM2FhNGQ0ODQ1YmE0MTI1ODllZDY4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTk4LDkgKzk4LDkgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxEYXRhPiB7CiAgICAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgUmVxdWVzdGVk
U2Nyb2xsRGF0YSYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+Jik7Ci0gICAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU2Nyb2xsU25hcE9mZnNldHNJ
bmZvPGZsb2F0PiYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxGbG9hdFNjcm9s
bFNuYXBPZmZzZXRzSW5mbz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mKTsKKyAgICBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBGbG9hdFNjcm9sbFNuYXBPZmZzZXRzSW5mbyYp
OwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTbmFwT2Zmc2V0PGZsb2F0
Pj4gewpAQCAtMzExLDcgKzMxMSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xsCiAgICAgU0NS
T0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbFBv
c2l0aW9uLCBGbG9hdFBvaW50LCBzZXRTY3JvbGxQb3NpdGlvbik7CiAgICAgU0NST0xMSU5HX05P
REVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9yaWdpbiwgSW50
UG9pbnQsIHNldFNjcm9sbE9yaWdpbik7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAg
ICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U25h
cE9mZnNldHNJbmZvLCBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQ+LCBzZXRTbmFwT2Zmc2V0
c0luZm8pOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8sIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJbmZvLCBzZXRT
bmFwT2Zmc2V0c0luZm8pOwogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCwgdW5zaWdu
ZWQsIHNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpOwogICAgIFNDUk9MTElOR19O
T0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50VmVydGljYWxT
bmFwT2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRl
eCk7CiAjZW5kaWYKQEAgLTUzMiw2ICs1MzIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U25hcE9m
ZnNldDxmbG9hdD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU25hcE9mZnNldAog
ewogICAgIGVuY29kZXIgPDwgb2Zmc2V0Lm9mZnNldDsKICAgICBlbmNvZGVyIDw8IG9mZnNldC5z
dG9wOworICAgIGVuY29kZXIgPDwgb2Zmc2V0LnNuYXBBcmVhSW5kZXg7CiB9CiAKIGJvb2wgQXJn
dW1lbnRDb2RlcjxTbmFwT2Zmc2V0PGZsb2F0Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBT
bmFwT2Zmc2V0PGZsb2F0PiYgb2Zmc2V0KQpAQCAtNTQwLDI3ICs1NDEsMjYgQEAgYm9vbCBBcmd1
bWVudENvZGVyPFNuYXBPZmZzZXQ8ZmxvYXQ+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNu
YXBPZmZzZXQ8ZmxvYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUob2Zmc2V0LnN0b3ApKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShvZmZzZXQuc25hcEFyZWFJbmRleCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogCi12b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsU25hcE9m
ZnNldHNJbmZvPGZsb2F0Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxT
bmFwT2Zmc2V0c0luZm88ZmxvYXQ+JiBpbmZvKQordm9pZCBBcmd1bWVudENvZGVyPEZsb2F0U2Ny
b2xsU25hcE9mZnNldHNJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZsb2F0
U2Nyb2xsU25hcE9mZnNldHNJbmZvJiBpbmZvKQogewogICAgIGVuY29kZXIgPDwgaW5mby5ob3Jp
em9udGFsU25hcE9mZnNldHM7CiAgICAgZW5jb2RlciA8PCBpbmZvLnZlcnRpY2FsU25hcE9mZnNl
dHM7Ci0gICAgZW5jb2RlciA8PCBpbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzOwotICAg
IGVuY29kZXIgPDwgaW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXM7CisgICAgZW5jb2RlciA8
PCBpbmZvLnNuYXBBcmVhczsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbzxmbG9hdD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xsU25hcE9mZnNl
dHNJbmZvPGZsb2F0PiYgaW5mbykKK2Jvb2wgQXJndW1lbnRDb2RlcjxGbG9hdFNjcm9sbFNuYXBP
ZmZzZXRzSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGbG9hdFNjcm9sbFNuYXBPZmZz
ZXRzSW5mbyYgaW5mbykKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uaG9yaXpvbnRh
bFNuYXBPZmZzZXRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8udmVy
dGljYWxTbmFwT2Zmc2V0UmFuZ2VzKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uc25h
cEFyZWFzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMjgw
Yzk4NDNjNjdlOWQ1ODVhMDM4NTc0ODUzYjI5MDZhMzMxMDliYS4uMzJhMjRhMWM4MWE1MThiMDVm
MTUzYzM3NGVhNmQ0M2RiNmVlOTlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yODE1LDMyICsyODE1LDYgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXI+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgU2UKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLQot
dm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4mIHJhbmdlKQotewot
ICAgIGVuY29kZXIgPDwgcmFuZ2Uuc3RhcnQ7Ci0gICAgZW5jb2RlciA8PCByYW5nZS5lbmQ7Ci19
Ci0KLWF1dG8gQXJndW1lbnRDb2RlcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsT2Zmc2V0UmFuZ2U8
ZmxvYXQ+PgotewotICAgIFdlYkNvcmU6OlNjcm9sbE9mZnNldFJhbmdlPGZsb2F0PiByYW5nZTsK
LSAgICBmbG9hdCBzdGFydDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXJ0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGZsb2F0IGVuZDsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGVuZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByYW5n
ZS5zdGFydCA9IHN0YXJ0OwotICAgIHJhbmdlLmVuZCA9IGVuZDsKLSAgICByZXR1cm4gcmFuZ2U7
Ci19Ci0KLSNlbmRpZgotCiB2b2lkIEFyZ3VtZW50Q29kZXI8TWVkaWFTZWxlY3Rpb25PcHRpb24+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWVkaWFTZWxlY3Rpb25PcHRpb24mIG9w
dGlvbikKIHsKICAgICBlbmNvZGVyIDw8IG9wdGlvbi5kaXNwbGF5TmFtZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYmQzZDllMWI5M2JmZGNl
ODkyYzhjYTA3MjFlYTI0ZjVmZTI5YWJkYS4uZjliMjJmYjk2YzEyN2Y3YzUzZjg5Mjg3ODhlMWE5
YTZmYjNmY2Y5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKQEAgLTc0NCwxNSArNzQ0LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyPiB7CiAKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+IHsKLSAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcm9sbE9mZnNldFJhbmdlPGZs
b2F0PiYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxPZmZzZXRSYW5nZTxm
bG9hdD4+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi0jZW5kaWYKLQogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gewogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25P
cHRpb24mKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRp
b24+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggMTE2NzVmMzI0NWJhMTFhYzM5OGZk
YmEyZmNlMzYzYmFiZjBhYTQ1NC4uMDQ2NDEwOGZkOGZhZDQ4YjJiZDRlMzhmODBmOWM2YjJhNTgw
MjkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eUlPUy5tbQpAQCAtMjIzLDE0ICsyMjMsMTIgQEAgYm9vbCBSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5OjpzaG91bGRTbmFwRm9yTWFpbkZyYW1lU2Nyb2xsaW5nKFNjcm9s
bEV2ZW4KIAogZmxvYXQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y2xvc2VzdFNu
YXBPZmZzZXRGb3JNYWluRnJhbWVTY3JvbGxpbmcoU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGZsb2F0
IHNjcm9sbERlc3RpbmF0aW9uLCBmbG9hdCB2ZWxvY2l0eSwgdW5zaWduZWQmIGN1cnJlbnRJbmRl
eCkgY29uc3QKIHsKLSAgICBTY3JvbGxpbmdUcmVlTm9kZSogcm9vdCA9IG1fc2Nyb2xsaW5nVHJl
ZS0+cm9vdE5vZGUoKTsKLSAgICBBU1NFUlQocm9vdCAmJiByb290LT5pc0ZyYW1lU2Nyb2xsaW5n
Tm9kZSgpKTsKLSAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290U2Nyb2xs
aW5nTm9kZSA9IHN0YXRpY19jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqPihy
b290KTsKKyAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiByb290U2Nyb2xsaW5n
Tm9kZSA9IG1fc2Nyb2xsaW5nVHJlZS0+cm9vdE5vZGUoKTsKICAgICBjb25zdCBhdXRvJiBzbmFw
T2Zmc2V0c0luZm8gPSByb290U2Nyb2xsaW5nTm9kZS0+c25hcE9mZnNldHNJbmZvKCk7CiAKICAg
ICBmbG9hdCBzY2FsZWRTY3JvbGxEZXN0aW5hdGlvbiA9IHNjcm9sbERlc3RpbmF0aW9uIC8gbV93
ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiAgICAgZmxvYXQgcmF3Q2xvc2Vz
dFNuYXBPZmZzZXQ7Ci0gICAgc3RkOjp0aWUocmF3Q2xvc2VzdFNuYXBPZmZzZXQsIGN1cnJlbnRJ
bmRleCkgPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywgc2NhbGVkU2Ny
b2xsRGVzdGluYXRpb24sIHZlbG9jaXR5KTsKKyAgICBzdGQ6OnRpZShyYXdDbG9zZXN0U25hcE9m
ZnNldCwgY3VycmVudEluZGV4KSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChh
eGlzLCByb290U2Nyb2xsaW5nTm9kZS0+bGF5b3V0Vmlld3BvcnQoKS5zaXplKCksIHNjYWxlZFNj
cm9sbERlc3RpbmF0aW9uLCB2ZWxvY2l0eSk7CiAgICAgcmV0dXJuIHJhd0Nsb3Nlc3RTbmFwT2Zm
c2V0ICogbV93ZWJQYWdlUHJveHkuZGlzcGxheWVkQ29udGVudFNjYWxlKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUy5tbQppbmRleCA4ODBjMDMxOTVmODljNGJkMTNkZDZhNjQ2NTIzZjFkZjg0Yzk1NjRlLi44
ZmM2NjE1Zjc2ZjNjOWZhZDAwZjU5NGIzNGIxM2RkNDRjOTIzY2QwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1t
CkBAIC0xMDYsMTYgKzEwNiwxNyBAQCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6
KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZlbG9jaXR5OihDR1BvaQogICAgIHVuc2ln
bmVkIG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVlTm9kZURl
bGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgp
OwogICAgIHVuc2lnbmVkIG9yaWdpbmFsVmVydGljYWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5n
VHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2lu
dEluZGV4KCk7CiAKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdmlld3BvcnRTaXplKHN0YXRpY19j
YXN0PGZsb2F0PihDR1JlY3RHZXRXaWR0aChbc2Nyb2xsVmlldyBib3VuZHNdKSksIHN0YXRpY19j
YXN0PGZsb2F0PihDR1JlY3RHZXRIZWlnaHQoW3Njcm9sbFZpZXcgYm91bmRzXSkpKTsKICAgICBj
b25zdCBhdXRvJiBzbmFwT2Zmc2V0c0luZm8gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+
c2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpOwogICAgIGlmICghc25hcE9mZnNldHNJ
bmZvLmhvcml6b250YWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBbcG90
ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBP
ZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBob3Jpem9udGFsVGFy
Z2V0LCB2ZWxvY2l0eS54KTsKKyAgICAgICAgYXV0byBbcG90ZW50aWFsU25hcFBvc2l0aW9uLCBp
bmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoV2ViQ29yZTo6U2Nyb2xs
RXZlbnRBeGlzOjpIb3Jpem9udGFsLCB2aWV3cG9ydFNpemUsIGhvcml6b250YWxUYXJnZXQsIHZl
bG9jaXR5LngpOwogICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5n
Tm9kZSgpLnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAg
ICBpZiAoaG9yaXpvbnRhbFRhcmdldCA+PSAwICYmIGhvcml6b250YWxUYXJnZXQgPD0gc2Nyb2xs
Vmlldy5jb250ZW50U2l6ZS53aWR0aCkKICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQt
PnggPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CiAgICAgfQogCiAgICAgaWYgKCFzbmFwT2Zmc2V0
c0luZm8udmVydGljYWxTbmFwT2Zmc2V0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBbcG90
ZW50aWFsU25hcFBvc2l0aW9uLCBpbmRleF0gPSBzbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBP
ZmZzZXQoV2ViQ29yZTo6U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgdmVydGljYWxUYXJnZXQs
IHZlbG9jaXR5LngpOworICAgICAgICBhdXRvIFtwb3RlbnRpYWxTbmFwUG9zaXRpb24sIGluZGV4
XSA9IHNuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChXZWJDb3JlOjpTY3JvbGxFdmVu
dEF4aXM6OlZlcnRpY2FsLCB2aWV3cG9ydFNpemUsIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS54
KTsKICAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5z
ZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAgICAgIGlmICh2ZXJ0
aWNhbFRhcmdldCA+PSAwICYmIHZlcnRpY2FsVGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNp
emUuaGVpZ2h0KQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eSA9IHBvdGVudGlh
bFNuYXBQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMzY2NjMzOTM5YzdhYzg3NTk3YzU0MzMzYzY4MDMyZTlh
NmY3YTBmLi5mMjI5Y2Y1NDU2ODZjNTA1OGYyZmNjNTM3NWMwYjBkNjJiOGI0MjhkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMjEtMDMtMjMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3
ZWJraXQub3JnPgorCisgICAgICAgIENTUyBzY3JvbGwgc25hcCBzaG91bGQgYWxsb3cgc2Nyb2xs
aW5nIHRvIHRoZSBtaWRkbGUgb2Ygc25hcCBhcmVhcyB0aGF0IG92ZXJmbG93IHRoZSBzbmFwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMDIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3Mz
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbDogVGhp
cyB0ZXN0IHVzZWQgc25hcCBhcmVhcyB0aGF0CisgICAgICAgIG92ZXJmbG93IHRoZSBzbmFwcG9y
dCwgdGh1cyBtZWFudCB0aGF0IGl0IHJlbGllZCBvbiBub24tc3BlYyBjb21wbGlhbnQgYmVoYXZp
b3IuIFJld29yayBpdCBzbworICAgICAgICB0aGF0IHRoZSBzbmFwIGFyZWFzIGRvIG5vdCBvdmVy
ZmxvdywgbWFpbnRhaW5pbmcgdGhlIGV4aXN0aW5nIGJlaGF2aW9yLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWlu
ZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWw6IERpdHRvLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1v
dmVyZmxvdy5odG1sOiBEaXR0by4KKwogMjAyMS0wMy0yMyAgTWFydGluIFJvYmluc29uICA8bXJv
Ymluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgTm8gc2Nyb2xsaW5nIG1vbWVudHVtIHdpdGgg
J3Njcm9sbC1zbmFwLXR5cGU6IHggbWFuZGF0b3J5JyBpZiB0aGUgc2Nyb2xsZXIgc2Nyb2xscyB2
ZXJ0aWNhbGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAwOTViZDM2ZDNkYWRl
ZWYxYjk0MWY4MDZiODBkNDk1ODNiMTYwMTIzLi40ODkyYjkxYmE5OTY5OTJhZDJkOTY1M2U3Y2Y3
ODg4ODRjOWEyMGQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMS0wMy0yMyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQ1NTIHNjcm9sbCBzbmFwIHNob3VsZCBhbGxvdyBzY3JvbGxpbmcgdG8gdGhl
IG1pZGRsZSBvZiBzbmFwIGFyZWFzIHRoYXQgb3ZlcmZsb3cgdGhlIHNuYXBwb3J0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMjEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQu
dHh0OiBVcGRhdGUgZXhwZWN0YXRpb25zIHRvCisgICAgICAgIHNob3cgdGhhdCB0aGlzIHRlc3Qg
aXMgbm93IHBhc3NpbmcuCisKIDIwMjEtMDMtMjIgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNv
bT4KIAogICAgICAgICBFbmFibGUgYWJpbGl0eSB0byBwcmV2ZW50IHNjcm9sbGluZyBpbiBFbGVt
ZW50LmZvY3VzKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtY2xpY2stc2Nyb2xsYmFyLWd1dHRlci5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1jbGljay1zY3JvbGxiYXItZ3V0dGVyLmh0bWwKaW5kZXgg
N2IzNTI2Y2M0ZGQwN2Q1MWM5ZWM5M2RjODlkNDkwMmJmMGJkNDYzMi4uOTRkYThiZTUzMWJmZGVi
OTQyMDVmN2U4ZWMyMTI2MWQxZGY4NmJmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1jbGljay1zY3JvbGxiYXItZ3V0dGVyLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1jbGljay1zY3JvbGxiYXIt
Z3V0dGVyLmh0bWwKQEAgLTM0LDIxICszNCwzMiBAQAogICAgICAgICAgICAgICAgIHNjcm9sbC1z
bmFwLXR5cGU6IGJvdGggbWFuZGF0b3J5OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAu
YmxvY2sgewotICAgICAgICAgICAgICAgIGhlaWdodDogMTAwMHB4OwotICAgICAgICAgICAgICAg
IHdpZHRoOiAyNTBweDsKLSAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7
Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIC5ob3Jpem9udGFsLWRyYXdlciB7CiAgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICAgICAgIHdpZHRoOiAyMDAwcHg7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC5ob3Jpem9udGFsLWRyYXdlciAuYmxvY2sg
ewotICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAwcHg7Ci0gICAgICAgICAgICAgICAgaGVpZ2h0
OiAyNTBweDsKKyAgICAgICAgICAgIC5ob3Jpem9udGFsLWRyYXdlciA+IGRpdiB7CisgICAgICAg
ICAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgICAgICAgICAgd2lkdGg6IDk5MHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Lmhvcml6b250YWwtZHJhd2VyID4gZGl2LnNuYXAtcG9pbnQgeworICAgICAgICAgICAgICAgIHNj
cm9sbC1zbmFwLWFsaWduOiBzdGFydDsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTBweDsKKyAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICN2ZXJ0aWNhbC1jb250YWluZXIgPiBkaXYgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAgICAgIGhlaWdodDogOTkw
cHg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICN2ZXJ0aWNhbC1jb250YWluZXIgPiBk
aXYuc25hcC1wb2ludCB7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0
OworICAgICAgICAgICAgICAgIGhlaWdodDogMTBweDsKICAgICAgICAgICAgIH0KKwogICAgICAg
ICA8L3N0eWxlPgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyI+PC9zY3JpcHQ+CkBAIC04NywxMyArOTgsMTcgQEAKICAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CiAgICAgICAgIDxkaXYgaWQ9Imhvcml6b250YWwtY29udGFpbmVyIiBjbGFz
cz0iY29udGFpbmVyIj4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhvcml6b250YWwtZHJhd2Vy
Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayIgc3R5bGU9ImZsb2F0OiBsZWZ0
OyBiYWNrZ3JvdW5kOiAjODA0NzVFIj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJibG9jayIgc3R5bGU9IndpZHRoOiA0NTBweDsgZmxvYXQ6IGxlZnQ7IGJhY2tncm91bmQ6ICND
QzVBNzEiPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXAtcG9pbnQiIHN0
eWxlPSJiYWNrZ3JvdW5kOiAjODA0NzVFIj48L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2Pjwv
ZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXAtcG9pbnQiIHN0eWxlPSJiYWNr
Z3JvdW5kOiAjQ0M1QTcxIj48L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PgogICAg
ICAgICAgICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGlkPSJ2ZXJ0aWNh
bC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0i
YmxvY2siIHN0eWxlPSJiYWNrZ3JvdW5kOiAjODA0NzVFIj48L2Rpdj4KLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9ImJsb2NrIiBzdHlsZT0iaGVpZ2h0OiA0NTBweDsgYmFja2dyb3VuZDogI0NDNUE3
MSI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwLXBvaW50IiBzdHlsZT0iYmFj
a2dyb3VuZDogIzgwNDc1RSI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2PjwvZGl2PgorICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ic25hcC1wb2ludCIgc3R5bGU9ImJhY2tncm91bmQ6ICNDQzVBNzEi
PjwvZGl2PgorICAgICAgICAgICAgPGRpdj48L2Rpdj4KICAgICAgICAgPC9kaXY+CiAgICAgICAg
IDxwIGlkPSJjb25zb2xlIj48L3A+CiAgICAgICAgIDxzY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNu
YXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvb3ZlcmZsb3dp
bmctc25hcC1hcmVhcy1leHBlY3RlZC50eHQKaW5kZXggYTQ1ZDJhZGNkZGY2Y2YwM2RmMzk4NjNj
MzYzNjU5MzNiODhlMjgxZS4uMjU5Y2Q5ODBjNTQ5YTA1OGEwOGZmZmE3ZjI0MzIxZjZhYzU4MzIy
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXNjcm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLWV4cGVjdGVkLnR4dApAQCAtMSwx
MyArMSwxMyBAQAogCiBQQVNTIFNuYXBzIHRvIHRoZSBzbmFwIHBvc2l0aW9uIGlmIHRoZSBzbmFw
IGFyZWEgZG9lc24ndCBjb3ZlciB0aGUgc25hcHBvcnQgb24geC4KLUZBSUwgU25hcHMgdG8gdGhl
IHNuYXAgcG9zaXRpb24gaWYgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgdGhlIHNuYXBwb3J0IG9uIHgg
b24gdGhlIHJpZ2h0IGJvcmRlci4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMjcxNSBidXQgZ290
IDIwMAotRkFJTCBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBpZiB0aGUgc25hcCBhcmVhIGNv
dmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUgbGVmdCBib3JkZXIuIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkIDIwMCBidXQgZ290IDI3MTUKK1BBU1MgU25hcHMgdG8gdGhlIHNuYXAgcG9zaXRp
b24gaWYgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgdGhlIHNuYXBwb3J0IG9uIHggb24gdGhlIHJpZ2h0
IGJvcmRlci4KK1BBU1MgU25hcHMgdG8gdGhlIHNuYXAgcG9zaXRpb24gaWYgdGhlIHNuYXAgYXJl
YSBjb3ZlcnMgdGhlIHNuYXBwb3J0IG9uIHggb24gdGhlIGxlZnQgYm9yZGVyLgogUEFTUyBTbmFw
cyBpZiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcHJldmlvdXMoNDAwKSBhbmQgbmV4dCg4MDAp
IHNuYXAgcG9zaXRpb25zIGlzIHNtYWxsZXIgdGhhbiBzbmFwcG9ydCg1MDApIG9uIHguCiBQQVNT
IFNuYXBzIGlmIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg0MDApIGFuZCBuZXh0
KDgwMCkgc25hcCBwb3NpdGlvbnMgaXMgc21hbGxlciB0aGFuIHNuYXBwb3J0KDUwMCkgb24geS4K
LUZBSUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBhIHZhbGlkIHNu
YXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9uIHggYW5kIHRo
ZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg4MDApIGFuZCBuZXh0KDE0MDApIGlzIGxh
cmdlciB0aGFuIHNuYXBwb3J0KDUwMCkuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDkwMCBidXQg
Z290IDgwMAotRkFJTCBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEg
dmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24g
eSBhbmQgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQw
MCkgaXMgbGFyZ2VyIHRoYW4gc25hcHBvcnQoNTAwKS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
OTAwIGJ1dCBnb3QgODAwCi1GQUlMIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hp
Y2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFw
cG9ydCBvbiB4IGFuZCB0aGVyZSBpcyBubyBzdWJzZXF1ZW50IHNuYXAgcG9zaXRpb25zLiBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAxNTAwIGJ1dCBnb3QgMTQwMAotRkFJTCBTbmFwIHRvIGN1cnJl
bnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhl
IHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geSBhbmQgdGhlcmUgaXMgbm8gc3Vic2VxdWVu
dCBzbmFwIHBvc2l0aW9ucy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMTUwMCBidXQgZ290IDE0
MDAKLUZBSUwgRG9uJ3Qgc25hcCBiYWNrIGV2ZW4gaWYgc2Nyb2xsVG8gdHJpZXMgdG8gc2Nyb2xs
IHRvIHBvc2l0aW9ucyB3aGljaCBhcmUgb3V0c2lkZSBvZiB0aGUgc2Nyb2xsIHJhbmdlIGFuZCBp
ZiBhIHNuYXAgdGFyZ2V0IGVsZW1lbnQgY292ZXJzIHRoZSBzbmFwb3J0IGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkIDM3MTUgYnV0IGdvdCAyMjAwCi1GQUlMIFNuYXAgdG8gY3VycmVudCBzY3JvbGwg
cG9zaXRpb24gb24geCBhcyB0aGUgYXJlYSBpcyBjb3ZlcmluZyB4IGF4aXMuSG93ZXZlciwgd2Ug
c25hcCB0byB0aGUgc3BlY2lmaWVkIHNuYXAgcG9zaXRpb24gb24geSBhcyB0aGUgYXJlYSBpcyBu
b3QgY292ZXJpbmcgeSBheGlzLiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAxMCBidXQgZ290IDAK
K1BBU1MgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBhIHZhbGlkIHNu
YXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9uIHggYW5kIHRo
ZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg4MDApIGFuZCBuZXh0KDE0MDApIGlzIGxh
cmdlciB0aGFuIHNuYXBwb3J0KDUwMCkuCitQQVNTIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9z
aXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNv
dmVycyBzbmFwcG9ydCBvbiB5IGFuZCB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcHJldmlvdXMo
ODAwKSBhbmQgbmV4dCgxNDAwKSBpcyBsYXJnZXIgdGhhbiBzbmFwcG9ydCg1MDApLgorUEFTUyBT
bmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3Np
dGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlcmUgaXMg
bm8gc3Vic2VxdWVudCBzbmFwIHBvc2l0aW9ucy4KK1BBU1MgU25hcCB0byBjdXJyZW50IHNjcm9s
bCBwb3NpdGlvbiB3aGljaCBpcyBhIHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFy
ZWEgY292ZXJzIHNuYXBwb3J0IG9uIHkgYW5kIHRoZXJlIGlzIG5vIHN1YnNlcXVlbnQgc25hcCBw
b3NpdGlvbnMuCitQQVNTIERvbid0IHNuYXAgYmFjayBldmVuIGlmIHNjcm9sbFRvIHRyaWVzIHRv
IHNjcm9sbCB0byBwb3NpdGlvbnMgd2hpY2ggYXJlIG91dHNpZGUgb2YgdGhlIHNjcm9sbCByYW5n
ZSBhbmQgaWYgYSBzbmFwIHRhcmdldCBlbGVtZW50IGNvdmVycyB0aGUgc25hcG9ydAorUEFTUyBT
bmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9uIHggYXMgdGhlIGFyZWEgaXMgY292ZXJp
bmcgeCBheGlzLkhvd2V2ZXIsIHdlIHNuYXAgdG8gdGhlIHNwZWNpZmllZCBzbmFwIHBvc2l0aW9u
IG9uIHkgYXMgdGhlIGFyZWEgaXMgbm90IGNvdmVyaW5nIHkgYXhpcy4KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwKaW5kZXgg
NjQyN2ExMTRlNDhiMjZiZTY1YjU1ZTdiODY4ZGY4Njc1NjkxYTlmOC4uOTRkYWQyMTY4YzYwZGU5
MTU0NzZiMWQwMTBhNjQzZDA0ZmU5MjBlNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5m
cmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFp
bmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sCkBAIC00LDYgKzQsNyBAQAogICAg
ICAgICA8c3R5bGU+CiAgICAgICAgICAgICBodG1sIHsKICAgICAgICAgICAgICAgICBzY3JvbGwt
c25hcC10eXBlOiB5IG1hbmRhdG9yeTsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDA7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKICAgICAgICAgICAgICAg
ICB3aWR0aDogMTAwdnc7CkBAIC0xMiw3ICsxMyw3IEBACiAgICAgICAgICAgICAgICAgcGFkZGlu
ZzogMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC5jb2xvckJveCB7Ci0gICAgICAgICAg
ICAgICAgaGVpZ2h0OiAxMDB2aDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDkwdmg7CiAgICAg
ICAgICAgICAgICAgd2lkdGg6IDEwMHZ3OwogICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0Owog
ICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LXByb3hpbWl0eS1vdmVyZmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93Lmh0bWwKaW5k
ZXggNWIwNTJmZGJmOTRjODRhM2Q4ZTBkMWEyOGZjYjUyMjAyYWVmOWYyZi4uMTUzMWUxZTNhYjIy
NWU1MDJiM2I3MjBkMWQwNjFiOGJlMzBmZjYyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92
ZXJmbG93Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93Lmh0bWwKQEAgLTEzLDIxICsx
MywxNiBAQAogICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAg
ICAgICB0b3A6IDA7CiAgICAgICAgICAgICAgICAgbGVmdDogMDsKLSAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBub25lOwogICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKICAg
ICAgICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiB5IHByb3hpbWl0eTsKLSAgICAgICAgICAg
ICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLXR5cGU6IHByb3hpbWl0eTsKLSAgICAgICAgICAgICAg
ICBzY3JvbGwtc25hcC10eXBlOiBwcm94aW1pdHk7CiAgICAgICAgICAgICAgICAgb3BhY2l0eTog
MC41OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAuYXJlYSB7Ci0gICAgICAgICAgICAg
ICAgaGVpZ2h0OiA2MDBweDsKLSAgICAgICAgICAgICAgICB3aWR0aDogNjAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAg
ICAgICAgICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLWFs
aWduOiBzdGFydDsKLSAgICAgICAgICAgICAgICAtd2Via2l0LXNjcm9sbC1zbmFwLWNvb3JkaW5h
dGU6IDAgMDsKLSAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1jb29yZGluYXRlOiAwIDA7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgIDxzY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428925</attachid>
            <date>2021-05-18 03:18:31 -0700</date>
            <delta_ts>2021-06-25 02:40:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223021-20210518121829.patch</filename>
            <type>text/plain</type>
            <size>23945</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA4YmMzYmVjMWJhMTY4
Yjc1MzRjODIzM2VjNzAwZTgwYTRhMzViNi4uNDU2MGE5OTQ2OTc3MWFmMDk2NjRjZWVjYzhjZjUx
MWVmNjdmNTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA1LTE4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBDU1Mgc2Nyb2xs
IHNuYXAgc2hvdWxkIGFsbG93IHNjcm9sbGluZyB0byB0aGUgbWlkZGxlIG9mIHNuYXAgYXJlYXMg
dGhhdCBvdmVyZmxvdyB0aGUgc25hcHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMzAyMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzU1MTg2
MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV3
cml0ZSB0aGUgc25hcCBhbGdvcml0aG0gdG8gYmUgYWJsZSB0byBzbmFwIHRvIHBvaW50cyBpbiB0
aGUgbWlkZGxlIG9mIHNuYXAgYXJlYXMKKyAgICAgICAgdGhhdCBvdmVyZmxvdyB0aGUgc25hcCBw
b3J0LiBUaGlzIGFsaWducyB0aGUgYWxnb3JpdGhtIHdpdGggdGhlIHNwZWMuIFRoaXMgY2hhbmdl
CisgICAgICAgIGFsc28gaW5jcmVhc2UgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzbmFwIHNl
bGVjdGlvbiBhbGdvcml0aG0sIGFkZGluZyB0ZXh0CisgICAgICAgIGZyb20gdGhlIHNwZWMgd2hp
Y2ggZGVzY3JpYmVzIHdoYXQgZWFjaCBzdGVwIGRvZXMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
Zml4ZXMgYW4gZXhpc3RpbmcgV1BUIHRlc3QKKyAgICAgICAgICB3ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLWV4cGVjdGVkLnR4dAor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om1heEZvckF4aXMpOiBBZGRlZCB0aGlzIGhlbHBlci4KKyAgICAgICAg
KFdlYkNvcmU6Om1pbkZvckF4aXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnJ1blNuYXBQ
b2ludFNlYXJjaCk6IFJld3JpdGUgdGhlIHNlbGVjdGlvbiBhbGdvcml0aG0gdG8gdGFrZSBpbnRv
IGFjY291bnQKKyAgICAgICAgc25hcCBhcmVhcyB0aGF0IG92ZXJmbG93IHRoZSBzbmFwIHBvcnQu
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTbmFwUG9pbnRTZWFyY2g6OnJ1bik6IEFkZGVkIHRl
bXBsYXRlIGFyZ3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRTbmFwUG9pbnRTZWFyY2g6
OnJ1bik6IERpdHRvLgorCiAyMDIxLTA1LTEzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
d2Via2l0Lm9yZz4KIAogICAgICAgICBbU2Nyb2xsIHNuYXBdIHByb3hpbWl0eSBzY3JvbGwgc25h
cHBpbmcgaXMgYnJva2VuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcAppbmRleCBhMTY1OTAxYWY4NmJlMDZhOTJiNGIz
MjU2YjBjMDM1ZTk1YjI5OGViLi5lNGRkOTRlODhhMjkzMDFlZDNhNWQ2NWY4YjZhODliNDk0Y2Nh
ZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFw
T2Zmc2V0c0luZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bFNuYXBPZmZzZXRzSW5mby5jcHAKQEAgLTU0LDI3ICs1NCw2IEBAIHN0YXRpYyBib29sIGlzTmVh
ckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KFNjcm9sbFNuYXBTdHJpY3RuZXNzIHN0cmljdG5l
c3MsIFVuCiAgICAgcmV0dXJuIHN0ZDo6YWJzKGZsb2F0IHtjYW5kaWRhdGVTbmFwT2Zmc2V0IC0g
c2Nyb2xsRGVzdGluYXRpb259KSA8PSAodmlld3BvcnRMZW5ndGggKiByYXRpb09mU2Nyb2xsUG9y
dEF4aXNMZW5ndGhUb0JlQ29uc2lkZXJlZEZvclByb3hpbWl0eSk7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBMYXlvdXRUeXBlPgotc3RhdGljIHZvaWQgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZz
ZXRzKExheW91dFR5cGUgb2Zmc2V0LCBjb25zdCBWZWN0b3I8U25hcE9mZnNldDxMYXlvdXRUeXBl
Pj4mIHNuYXBPZmZzZXRzLCB1bnNpZ25lZCYgbG93ZXJJbmRleCwgdW5zaWduZWQmIHVwcGVySW5k
ZXgpCi17Ci0gICAgbG93ZXJJbmRleCA9IDA7Ci0gICAgdXBwZXJJbmRleCA9IHNuYXBPZmZzZXRz
LnNpemUoKSAtIDE7Ci0gICAgd2hpbGUgKGxvd2VySW5kZXggPCB1cHBlckluZGV4IC0gMSkgewot
ICAgICAgICBpbnQgbWlkZGxlSW5kZXggPSAobG93ZXJJbmRleCArIHVwcGVySW5kZXgpIC8gMjsK
LSAgICAgICAgYXV0byBtaWRkbGVPZmZzZXQgPSBzbmFwT2Zmc2V0c1ttaWRkbGVJbmRleF0ub2Zm
c2V0OwotICAgICAgICBpZiAob2Zmc2V0ID09IG1pZGRsZU9mZnNldCkgewotICAgICAgICAgICAg
dXBwZXJJbmRleCA9IG1pZGRsZUluZGV4OwotICAgICAgICAgICAgbG93ZXJJbmRleCA9IG1pZGRs
ZUluZGV4OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAob2Zm
c2V0ID4gbWlkZGxlT2Zmc2V0KQotICAgICAgICAgICAgbG93ZXJJbmRleCA9IG1pZGRsZUluZGV4
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB1cHBlckluZGV4ID0gbWlkZGxlSW5kZXg7Ci0g
ICAgfQotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGF5b3V0VHlwZT4KIHN0YXRpYyBPcHRpb25h
bDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGlu
YXRpb24oY29uc3QgVmVjdG9yPFNuYXBPZmZzZXQ8TGF5b3V0VHlwZT4+JiBzbmFwT2Zmc2V0cywg
TGF5b3V0VHlwZSBzY3JvbGxPcmlnaW5PZmZzZXQsIExheW91dFR5cGUgc2Nyb2xsRGVzdGluYXRp
b25PZmZzZXQpCiB7CkBAIC0xMDYsNjMgKzg1LDExMSBAQCBzdGF0aWMgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGZpbmRGaXJzdFNuYXBTdG9wT2Zmc2V0QmV0d2Vlbk9yaWdpbkFuZERlc3RpbmF0aW9uKGNv
bgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBTZWFy
Y2hUeXBlLCB0eXBlbmFtZSBJbmZvVHlwZSwgdHlwZW5hbWUgTGF5b3V0VHlwZT4KLXN0YXRpYyBz
dGQ6OnBhaXI8TGF5b3V0VHlwZSwgdW5zaWduZWQ+IHJ1blNuYXBQb2ludFNlYXJjaChTZWFyY2hU
eXBlJiBzZWFyY2gsIGNvbnN0IEluZm9UeXBlJiBpbmZvKQordGVtcGxhdGUgPHR5cGVuYW1lIFVu
aXRUeXBlLCB0eXBlbmFtZSBSZWN0VHlwZT4KK3N0YXRpYyBVbml0VHlwZSBtYXhGb3JBeGlzKFJl
Y3RUeXBlIHJlY3QsIFNjcm9sbEV2ZW50QXhpcyBheGlzKQoreworICAgIHJldHVybiBheGlzID09
IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHJlY3QubWF4WCgpIDogcmVjdC5tYXhZKCk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBVbml0VHlwZSwgdHlwZW5hbWUgUmVjdFR5cGU+Citz
dGF0aWMgVW5pdFR5cGUgbWluRm9yQXhpcyhSZWN0VHlwZSByZWN0LCBTY3JvbGxFdmVudEF4aXMg
YXhpcykKK3sKKyAgICByZXR1cm4gYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwg
PyByZWN0LngoKSA6IHJlY3QueSgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VhcmNoVHlw
ZSwgdHlwZW5hbWUgSW5mb1R5cGUsIHR5cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFtZSBSZWN0VHlw
ZT4KK3N0YXRpYyBzdGQ6OnBhaXI8VW5pdFR5cGUsIHVuc2lnbmVkPiBydW5TbmFwUG9pbnRTZWFy
Y2goU2VhcmNoVHlwZSYgc2VhcmNoLCBjb25zdCBJbmZvVHlwZSYgaW5mbykKIHsKICAgICBjb25z
dCBhdXRvJiBzbmFwT2Zmc2V0cyA9IGluZm8ub2Zmc2V0c0ZvckF4aXMoc2VhcmNoLmF4aXMpOwor
ICAgIGF1dG8gcGFpckZvck5vU25hcHBpbmcgPSBzdGQ6Om1ha2VfcGFpcihzZWFyY2guZGVzdGlu
YXRpb25PZmZzZXQsIGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpOwogICAgIGlmIChzbmFwT2Zmc2V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzZWFyY2guZGVzdGlu
YXRpb25PZmZzZXQsIGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpOworICAgICAgICByZXR1cm4gcGFp
ckZvck5vU25hcHBpbmc7CiAKKyAgICAvLyBUaGUgZmlyc3Qgc25hcCBwb2ludCB3aXRoIGBzY3Jv
bGwtc25hcC1zdG9wOiBhbHdheXNgIGJldHdlZW4gdGhlIG9yaWdpbmFsIHBvc2l0aW9uIGFuZCBk
ZXN0aW5hdGlvbiB0YWtlcyBwcmVjZWRlbmNlLgogICAgIGlmIChzZWFyY2gub3JpZ2luYWxPZmZz
ZXQpIHsKLSAgICAgICAgYXV0byBmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXggPSBmaW5kRmlyc3RT
bmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0aW5hdGlvbihzbmFwT2Zmc2V0cywgKnNl
YXJjaC5vcmlnaW5hbE9mZnNldCwgc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0KTsKLSAgICAgICAg
aWYgKGZpcnN0U25hcFN0b3BPZmZzZXRJbmRleC5oYXNWYWx1ZSgpKQorICAgICAgICBpZiAoYXV0
byBmaXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXggPSBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJldHdl
ZW5PcmlnaW5BbmREZXN0aW5hdGlvbihzbmFwT2Zmc2V0cywgKnNlYXJjaC5vcmlnaW5hbE9mZnNl
dCwgc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0KSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihzbmFwT2Zmc2V0c1sqZmlyc3RTbmFwU3RvcE9mZnNldEluZGV4XS5vZmZzZXQsICpm
aXJzdFNuYXBTdG9wT2Zmc2V0SW5kZXgpOwogICAgIH0KIAotICAgIGlmIChzZWFyY2guZGVzdGlu
YXRpb25PZmZzZXQgPD0gc25hcE9mZnNldHMuZmlyc3QoKS5vZmZzZXQpCi0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihzbmFwT2Zmc2V0cy5maXJzdCgpLm9mZnNldCwgMHUpOwotCi0gICAg
aWYgKHNlYXJjaC5kZXN0aW5hdGlvbk9mZnNldCA+PSBzbmFwT2Zmc2V0cy5sYXN0KCkub2Zmc2V0
KQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc25hcE9mZnNldHMubGFzdCgpLm9mZnNl
dCwgc25hcE9mZnNldHMuc2l6ZSgpIC0gMSk7Ci0KLSAgICB1bnNpZ25lZCBsb3dlckluZGV4Owot
ICAgIHVuc2lnbmVkIHVwcGVySW5kZXg7Ci0gICAgaW5kaWNlc09mTmVhcmVzdFNuYXBPZmZzZXRz
PExheW91dFR5cGU+KHNlYXJjaC5kZXN0aW5hdGlvbk9mZnNldCwgc25hcE9mZnNldHMsIGxvd2Vy
SW5kZXgsIHVwcGVySW5kZXgpOwotICAgIExheW91dFR5cGUgbG93ZXJTbmFwUG9zaXRpb24gPSBz
bmFwT2Zmc2V0c1tsb3dlckluZGV4XS5vZmZzZXQ7Ci0gICAgTGF5b3V0VHlwZSB1cHBlclNuYXBQ
b3NpdGlvbiA9IHNuYXBPZmZzZXRzW3VwcGVySW5kZXhdLm9mZnNldDsKLQotICAgIGF1dG8gdmll
d3BvcnRMZW5ndGggPSBzZWFyY2guYXhpcyAgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
ID8gc2VhcmNoLnZpZXdwb3J0U2l6ZS53aWR0aCgpIDogc2VhcmNoLnZpZXdwb3J0U2l6ZS5oZWln
aHQoKTsKLSAgICBpZiAoIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5PExheW91dFR5
cGU+KGluZm8uc3RyaWN0bmVzcywgc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0LCBsb3dlclNuYXBQ
b3NpdGlvbiwgdmlld3BvcnRMZW5ndGgpKSB7Ci0gICAgICAgIGxvd2VyU25hcFBvc2l0aW9uID0g
c2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0OwotICAgICAgICBsb3dlckluZGV4ID0gaW52YWxpZFNu
YXBPZmZzZXRJbmRleDsKKyAgICBhdXRvIHZpZXdwb3J0TGVuZ3RoID0gc2VhcmNoLmF4aXMgPT0g
U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gc2VhcmNoLnZpZXdwb3J0U2l6ZS53aWR0aCgp
IDogc2VhcmNoLnZpZXdwb3J0U2l6ZS5oZWlnaHQoKTsKKyAgICBib29sIGxhbmRlZEluc2lkZVNu
YXBBcmVhVGhhdENvbnN1bWVzVmlld3BvcnQgPSBmYWxzZTsKKyAgICBPcHRpb25hbDxzdGQ6OnBh
aXI8VW5pdFR5cGUsIHVuc2lnbmVkPj4gcHJldmlvdXMsIG5leHQ7CisgICAgT3B0aW9uYWw8UmVj
dFR5cGU+IHByZXZpb3VzU25hcEFyZWEsIG5leHRTbmFwQXJlYTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc25hcE9mZnNldHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgY29uc3QgYXV0
byYgc25hcEFyZWEgPSBpbmZvLnNuYXBBcmVhc1tzbmFwT2Zmc2V0c1tpXS5zbmFwQXJlYUluZGV4
XTsKKyAgICAgICAgbGFuZGVkSW5zaWRlU25hcEFyZWFUaGF0Q29uc3VtZXNWaWV3cG9ydCB8PSAo
bWluRm9yQXhpczxVbml0VHlwZT4oc25hcEFyZWEsIHNlYXJjaC5heGlzKSA8PSBzZWFyY2guZGVz
dGluYXRpb25PZmZzZXQgJiYgbWF4Rm9yQXhpczxVbml0VHlwZT4oc25hcEFyZWEsIHNlYXJjaC5h
eGlzKSA+PSAoc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0ICsgdmlld3BvcnRMZW5ndGgpKTsKKyAg
ICAgICAgLy8gSWYgdGhlIHNjcm9sbCBsYW5kZWQgZXhhY3RseSBvbiBhIHNuYXAgb2Zmc2V0LCBj
aG9vc2UgdGhhdCBvbmUuCisgICAgICAgIFVuaXRUeXBlIHBvdGVudGlhbFNuYXBPZmZzZXQgPSBz
bmFwT2Zmc2V0c1tpXS5vZmZzZXQ7CisgICAgICAgIGlmIChwb3RlbnRpYWxTbmFwT2Zmc2V0ID09
IHNlYXJjaC5kZXN0aW5hdGlvbk9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihwb3RlbnRpYWxTbmFwT2Zmc2V0LCBpKTsKKworICAgICAgICBpZiAocG90ZW50aWFsU25h
cE9mZnNldCA8IHNlYXJjaC5kZXN0aW5hdGlvbk9mZnNldCkgeworICAgICAgICAgICAgcHJldmlv
dXMgPSBzdGQ6Om1ha2VfcGFpcihwb3RlbnRpYWxTbmFwT2Zmc2V0LCBpKTsKKyAgICAgICAgICAg
IHByZXZpb3VzU25hcEFyZWEgPSBzbmFwQXJlYTsKKyAgICAgICAgfSBlbHNlIGlmICghbmV4dCAm
JiBwb3RlbnRpYWxTbmFwT2Zmc2V0ID4gc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0KSB7CisgICAg
ICAgICAgICBuZXh0ID0gc3RkOjptYWtlX3BhaXIocG90ZW50aWFsU25hcE9mZnNldCwgaSk7Cisg
ICAgICAgICAgICBuZXh0U25hcEFyZWEgPSBzbmFwQXJlYTsKKyAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmICghaXNOZWFyRW5vdWdoVG9PZmZzZXRGb3JQcm94aW1pdHk8TGF5b3V0VHlwZT4oaW5m
by5zdHJpY3RuZXNzLCBzZWFyY2guZGVzdGluYXRpb25PZmZzZXQsIHVwcGVyU25hcFBvc2l0aW9u
LCB2aWV3cG9ydExlbmd0aCkpIHsKLSAgICAgICAgdXBwZXJTbmFwUG9zaXRpb24gPSBzZWFyY2gu
ZGVzdGluYXRpb25PZmZzZXQ7Ci0gICAgICAgIHVwcGVySW5kZXggPSBpbnZhbGlkU25hcE9mZnNl
dEluZGV4OworICAgIC8vIEZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY3JvbGwtc25h
cC0xLyNzbmFwLW92ZXJmbG93CisgICAgLy8gIklmIHRoZSBzbmFwIGFyZWEgaXMgbGFyZ2VyIHRo
YW4gdGhlIHNuYXBwb3J0IGluIGEgcGFydGljdWxhciBheGlzLCB0aGVuIGFueSBzY3JvbGwgcG9z
aXRpb24KKyAgICAvLyBpbiB3aGljaCB0aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQs
IGFuZCB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2VvbWV0cmljYWxseQorICAgIC8vIHByZXZp
b3VzIGFuZCBzdWJzZXF1ZW50IHNuYXAgcG9zaXRpb25zIGluIHRoYXQgYXhpcyBpcyBsYXJnZXIg
dGhhbiBzaXplIG9mIHRoZSBzbmFwcG9ydCBpbgorICAgIC8vIHRoYXQgYXhpcywgaXMgYSB2YWxp
ZCBzbmFwIHBvc2l0aW9uIGluIHRoYXQgYXhpcy4gVGhlIFVBIG1heSB1c2UgdGhlIHNwZWNpZmll
ZCBhbGlnbm1lbnQgYXMgYQorICAgIC8vIG1vcmUgcHJlY2lzZSB0YXJnZXQgZm9yIGNlcnRhaW4g
c2Nyb2xsIG9wZXJhdGlvbnMgKGUuZy4gZXhwbGljaXQgcGFnaW5nKS4iCisgICAgaWYgKGxhbmRl
ZEluc2lkZVNuYXBBcmVhVGhhdENvbnN1bWVzVmlld3BvcnQgJiYgKCFwcmV2aW91cyB8fCAhbmV4
dCB8fCAoKCpuZXh0KS5maXJzdCAtICgqcHJldmlvdXMpLmZpcnN0KSA+PSB2aWV3cG9ydExlbmd0
aCkpCisgICAgICAgIHJldHVybiBwYWlyRm9yTm9TbmFwcGluZzsKKworICAgIGlmIChzZWFyY2gu
b3JpZ2luYWxPZmZzZXQpIHsKKyAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGRpcmVjdGlvbmFsIHNj
cm9sbCBhbmQgdGhlcmUgYXJlIG5vIHNjcm9sbCBzdG9wcyBpbiBhIHBhcnRpY3VsYXIgZGlyZWN0
aW9uLAorICAgICAgICAvLyBkb24ndCBzY3JvbGwgcGFzdCB0aGUgZWRnZSBvZiB0aGUgc2Nyb2xs
IGFyZWEuCisgICAgICAgIGlmICghbmV4dCAmJiBwcmV2aW91cykKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihzdGQ6Om1heCgoKnByZXZpb3VzKS5maXJzdCwgbWF4Rm9yQXhpczxV
bml0VHlwZT4oKnByZXZpb3VzU25hcEFyZWEsIHNlYXJjaC5heGlzKSAtIHZpZXdwb3J0TGVuZ3Ro
KSwgaW52YWxpZFNuYXBPZmZzZXRJbmRleCk7CisgICAgICAgIGlmICghcHJldmlvdXMgJiYgbmV4
dCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihtaW5Gb3JBeGlzPFVuaXRUeXBl
PigqbmV4dFNuYXBBcmVhLCBzZWFyY2guYXhpcyksIGludmFsaWRTbmFwT2Zmc2V0SW5kZXgpOwor
CisgICAgICAgIC8vIEZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY3JvbGwtc25hcC0x
LyNjaG9vc2luZworICAgICAgICAvLyAiVXNlciBhZ2VudHMgbXVzdCBlbnN1cmUgdGhhdCBhIHVz
ZXIgY2FuIOKAnGVzY2FwZeKAnSBhIHNuYXAgcG9zaXRpb24sIHJlZ2FyZGxlc3Mgb2YgdGhlIHNj
cm9sbAorICAgICAgICAvLyBtZXRob2QuIEZvciBleGFtcGxlLCBpZiB0aGUgc25hcCB0eXBlIGlz
IG1hbmRhdG9yeSBhbmQgdGhlIG5leHQgc25hcCBwb3NpdGlvbiBpcyBtb3JlIHRoYW4KKyAgICAg
ICAgLy8gdHdvIHNjcmVlbi13aWR0aHMgYXdheSwgYSBuYcOvdmUg4oCcYWx3YXlzIHNuYXAgdG8g
bmVhcmVzdOKAnSBzZWxlY3Rpb24gYWxnb3JpdGhtIG1pZ2h0IOKAnHRyYXDigJ0gdGhlCisgICAg
ICAgIC8vIHVzZXIgaWYgdGhlaXIgZW5kIHBvc2l0aW9uIHdhcyBvbmx5IG9uZSBzY3JlZW4td2lk
dGggYXdheS4gSW5zdGVhZCwgYSBzbWFydGVyIGFsZ29yaXRobSB0aGF0CisgICAgICAgIC8vIG9u
bHkgcmV0dXJuZWQgdG8gdGhlIHN0YXJ0aW5nIHNuYXAgcG9zaXRpb24gaWYgdGhlIGVuZC1wb2lu
dCB3YXMgYSBmYWlybHkgc21hbGwgZGlzdGFuY2UgZnJvbQorICAgICAgICAvLyBpdCwgYW5kIG90
aGVyd2lzZSBpZ25vcmVkIHRoZSBzdGFydGluZyBzbmFwIHBvc2l0aW9uLCB3b3VsZCBnaXZlIGJl
dHRlciBiZWhhdmlvci4iCisgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBpZiB3ZSBhcmUgaW4g
YSBzaXR1YXRpb24gd2hlcmUgd2UgYXJlIGNob29zaW5nIGJldHdlZW4gdHdvIGNvbXBhdGlibGUK
KyAgICAgICAgLy8gc25hcCBvZmZzZXRzLgorICAgICAgICBib29sIGFsd2F5c0FsbG93RXNjYXBp
bmdTbmFwUG9zaXRpb24gPSBpbmZvLnN0cmljdG5lc3MgIT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6
OlByb3hpbWl0eSB8fCBzZWFyY2gudHlwZSA9PSBTbmFwUG9pbnRTZWFyY2hUeXBlOjpEaXJlY3Rp
b25hbDsKKyAgICAgICAgaWYgKCpzZWFyY2gub3JpZ2luYWxPZmZzZXQgPCBzZWFyY2guZGVzdGlu
YXRpb25PZmZzZXQgJiYgYWx3YXlzQWxsb3dFc2NhcGluZ1NuYXBQb3NpdGlvbiAmJiAoKnByZXZp
b3VzKS5maXJzdCA8PSAqc2VhcmNoLm9yaWdpbmFsT2Zmc2V0KQorICAgICAgICAgICAgcHJldmlv
dXMucmVzZXQoKTsKKyAgICAgICAgaWYgKCpzZWFyY2gub3JpZ2luYWxPZmZzZXQgPiBzZWFyY2gu
ZGVzdGluYXRpb25PZmZzZXQgJiYgYWx3YXlzQWxsb3dFc2NhcGluZ1NuYXBQb3NpdGlvbiAmJiAo
Km5leHQpLmZpcnN0ID49ICpzZWFyY2gub3JpZ2luYWxPZmZzZXQpCisgICAgICAgICAgICBuZXh0
LnJlc2V0KCk7CiAgICAgfQogCisgICAgaWYgKG5leHQgJiYgIWlzTmVhckVub3VnaFRvT2Zmc2V0
Rm9yUHJveGltaXR5KGluZm8uc3RyaWN0bmVzcywgc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0LCAo
Km5leHQpLmZpcnN0LCB2aWV3cG9ydExlbmd0aCkpCisgICAgICAgIG5leHQucmVzZXQoKTsKKyAg
ICBpZiAocHJldmlvdXMgJiYgIWlzTmVhckVub3VnaFRvT2Zmc2V0Rm9yUHJveGltaXR5KGluZm8u
c3RyaWN0bmVzcywgc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0LCAoKnByZXZpb3VzKS5maXJzdCwg
dmlld3BvcnRMZW5ndGgpKQorICAgICAgICBwcmV2aW91cy5yZXNldCgpOworCisgICAgLy8gSWYg
d2UgZG9uJ3QgaGF2ZSBjb21wYXRpYmxlIG9mZnNldHMgdG8gY2hvb3NlIGJldHdlZW4sIGp1c3Qg
ZG8gdGhlIG9idmlvdXMgdGhpbmcKKyAgICAvLyBhbmQgZG8gbm8gc25hcHBpbmcgb3Igb25seSBz
ZWxlY3QgdGhlIHNpbmdsZSBjb21wYXRpYmxlIG9mZnNldC4KKyAgICBpZiAoIXByZXZpb3VzICYm
ICFuZXh0KQorICAgICAgICByZXR1cm4gcGFpckZvck5vU25hcHBpbmc7CisgICAgaWYgKCFwcmV2
aW91cykKKyAgICAgICAgcmV0dXJuICpuZXh0OworICAgIGlmICghbmV4dCkKKyAgICAgICAgcmV0
dXJuICpwcmV2aW91czsKKworICAgIC8vIElmIHRoaXMgc2Nyb2xsIGlzbid0IGRpcmVjdGlvbmFs
LCB0aGVuIGNob29zZSB3aGF0ZXZlciBzbmFwIHBvaW50IGlzIGNsb3Nlci4KKyAgICBVbml0VHlw
ZSBwcmV2aW91c1NuYXBPZmZzZXQgPSAoKnByZXZpb3VzKS5maXJzdDsKKyAgICBVbml0VHlwZSBu
ZXh0U25hcE9mZnNldCA9ICgqbmV4dCkuZmlyc3Q7CiAgICAgZmxvYXQgdmVsb2NpdHkgPSBzZWFy
Y2gudmVsb2NpdHkoKTsKICAgICBpZiAoIXN0ZDo6YWJzKHZlbG9jaXR5KSkgewotICAgICAgICBi
b29sIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA9ICh1cHBlckluZGV4ID09IGludmFsaWRT
bmFwT2Zmc2V0SW5kZXgpCi0gICAgICAgICAgICB8fCAobG93ZXJJbmRleCAhPSBpbnZhbGlkU25h
cE9mZnNldEluZGV4ICYmIHNlYXJjaC5kZXN0aW5hdGlvbk9mZnNldCAtIGxvd2VyU25hcFBvc2l0
aW9uIDw9IHVwcGVyU25hcFBvc2l0aW9uIC0gc2VhcmNoLmRlc3RpbmF0aW9uT2Zmc2V0KTsKLSAg
ICAgICAgcmV0dXJuIGlzQ2xvc2VyVG9Mb3dlclNuYXBQb3NpdGlvbiA/IHN0ZDo6bWFrZV9wYWly
KGxvd2VyU25hcFBvc2l0aW9uLCBsb3dlckluZGV4KSA6IHN0ZDo6bWFrZV9wYWlyKHVwcGVyU25h
cFBvc2l0aW9uLCB1cHBlckluZGV4KTsKLSAgICB9Ci0KLSAgICAvLyBOb24temVybyB2ZWxvY2l0
eSBpbmRpY2F0ZXMgYSBmbGljayBnZXN0dXJlLiBFdmVuIGlmIGFub3RoZXIgc25hcCBwb2ludCBp
cyBjbG9zZXIsIHdlIHNob3VsZCBjaG9vc2UgdGhlIG9uZSBpbiB0aGUgZGlyZWN0aW9uIG9mIHRo
ZSBmbGljayBnZXN0dXJlCi0gICAgLy8gYXMgbG9uZyBhcyBhIHNjcm9sbCBzbmFwIG9mZnNldCBp
cyBjbG9zZSBlbm91Z2ggZm9yIHByb3hpbWl0eSAob3Igd2UgYXJlbid0IHVzaW5nIHByb3hpbWl0
eSkuIElmIHdlIGFyZSBkb2luZyBkaXJlY3Rpb25hbAotICAgIC8vIHNuYXBwaW5nLCB3ZSBzaG91
bGQgbmV2ZXIgc25hcCB0byBhIHBvaW50IHRoYXQgd2FzIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRo
ZSBvcmlnaW5hbCBwb3NpdGlvbiBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIG9mIHRoaXMgc2Ny
b2xsLgotICAgIC8vIFRoaXMgYWxsb3dzIGRpcmVjdGlvbmFsIHNjcm9sbGluZyB0byBlc2NhcGUg
c25hcCBwb2ludHMuCi0gICAgYm9vbCBhbHdheXNBbGxvd0VzY2FwaW5nU25hcFBvc2l0aW9uID0g
aW5mby5zdHJpY3RuZXNzICE9IFNjcm9sbFNuYXBTdHJpY3RuZXNzOjpQcm94aW1pdHkgfHwgc2Vh
cmNoLnR5cGUgPT0gU25hcFBvaW50U2VhcmNoVHlwZTo6RGlyZWN0aW9uYWw7Ci0gICAgaWYgKHZl
bG9jaXR5IDwgMCkgIHsKLSAgICAgICAgaWYgKHVwcGVySW5kZXggIT0gaW52YWxpZFNuYXBPZmZz
ZXRJbmRleCAmJiAoIWFsd2F5c0FsbG93RXNjYXBpbmdTbmFwUG9zaXRpb24gfHwgc2VhcmNoLm9y
aWdpbmFsT2Zmc2V0ID4gdXBwZXJTbmFwUG9zaXRpb24pKQotICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1cHBlckluZGV4KTsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKGxvd2VyU25hcFBvc2l0aW9uLCBsb3dlckluZGV4KTsKKyAgICAg
ICAgYm9vbCBpc0Nsb3NlclRvUHJldmlvdXNTbmFwSW5kZXggPSBzZWFyY2guZGVzdGluYXRpb25P
ZmZzZXQgLSBwcmV2aW91c1NuYXBPZmZzZXQgPD0gbmV4dFNuYXBPZmZzZXQgLSBzZWFyY2guZGVz
dGluYXRpb25PZmZzZXQ7CisgICAgICAgIHJldHVybiBpc0Nsb3NlclRvUHJldmlvdXNTbmFwSW5k
ZXggPyAqcHJldmlvdXMgOiAqbmV4dDsKICAgICB9CiAKLSAgICBpZiAobG93ZXJJbmRleCAhPSBp
bnZhbGlkU25hcE9mZnNldEluZGV4ICYmICghYWx3YXlzQWxsb3dFc2NhcGluZ1NuYXBQb3NpdGlv
biB8fCBzZWFyY2gub3JpZ2luYWxPZmZzZXQgPCBsb3dlclNuYXBQb3NpdGlvbikpCi0gICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihsb3dlclNuYXBQb3NpdGlvbiwgbG93ZXJJbmRleCk7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHVwcGVyU25hcFBvc2l0aW9uLCB1cHBlckluZGV4KTsK
KyAgICAvLyBGaW5hbGx5LCBpZiB3ZSBoYXZlIGEgZGlyZWN0aW9uYWwgc2Nyb2xsIHByZWZlciB0
aGUgc25hcCBwb2ludCB0aGF0IGlzIGluIHRoZSBzY3JvbGwgZGlyZWN0aW9uLgorICAgIHJldHVy
biB2ZWxvY2l0eSA8IDAgPyAqcHJldmlvdXMgOiAqbmV4dDsKIH0KIAogZW51bSBjbGFzcyBJbnNl
dE9yT3V0c2V0IHsKQEAgLTM2MSwxMyArMzg4LDEzIEBAIEZsb2F0U2Nyb2xsU25hcE9mZnNldHNJ
bmZvIExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbzo6Y29udmVydFVuaXRzKGZsb2F0IGRldmlj
CiB0ZW1wbGF0ZSA8Pgogc3RkOjpwYWlyPExheW91dFVuaXQsIHVuc2lnbmVkPiBMYXlvdXRTbmFw
UG9pbnRTZWFyY2g6OnJ1bihjb25zdCBMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIGluZm8p
CiB7Ci0gICAgcmV0dXJuIHJ1blNuYXBQb2ludFNlYXJjaDxMYXlvdXRTbmFwUG9pbnRTZWFyY2gs
IExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbywgTGF5b3V0VW5pdD4oKnRoaXMsIGluZm8pOwor
ICAgIHJldHVybiBydW5TbmFwUG9pbnRTZWFyY2g8TGF5b3V0U25hcFBvaW50U2VhcmNoLCBMYXlv
dXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8sIExheW91dFVuaXQsIExheW91dFJlY3Q+KCp0aGlzLCBp
bmZvKTsKIH0KIAogdGVtcGxhdGUgPD4KIHN0ZDo6cGFpcjxmbG9hdCwgdW5zaWduZWQ+IEZsb2F0
U25hcFBvaW50U2VhcmNoOjpydW4oY29uc3QgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8mIGlu
Zm8pCiB7Ci0gICAgcmV0dXJuIHJ1blNuYXBQb2ludFNlYXJjaDxGbG9hdFNuYXBQb2ludFNlYXJj
aCwgRmxvYXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8sIGZsb2F0PigqdGhpcywgaW5mbyk7CisgICAg
cmV0dXJuIHJ1blNuYXBQb2ludFNlYXJjaDxGbG9hdFNuYXBQb2ludFNlYXJjaCwgRmxvYXRTY3Jv
bGxTbmFwT2Zmc2V0c0luZm8sIGZsb2F0LCBGbG9hdFJlY3Q+KCp0aGlzLCBpbmZvKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDE4MmQwMjFlYjY4ZDEyYWVjYmEyNGNkZjNhNTk0YTZlZjU1NGUwNzkuLjVmYzQz
N2U3YzljYmEwZTM5NTUyN2ViZmI0YjZiZTJmZGE0YjlmNjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAyMS0wNS0xOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgQ1NTIHNjcm9sbCBzbmFwIHNob3VsZCBhbGxvdyBzY3JvbGxpbmcgdG8gdGhlIG1p
ZGRsZSBvZiBzbmFwIGFyZWFzIHRoYXQgb3ZlcmZsb3cgdGhlIHNuYXBwb3J0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMjEKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzc1NTE4NjA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeGVkIHNvbWUgdGVzdHMgdGhhdCByZWxpZWQgb24gdGhlIGluY29y
cmVjdCBiZWhhdmlvci4gVGhlc2UgdGVzdHMgdXNlZCBzbmFwIGFyZWFzCisgICAgICAgIHRoYXQg
b3ZlcmZsb3dlZCB0aGUgc25hcCBwb3J0IGFuZCBhc3N1bWVkIHRoYXQgdGhlIHNuYXAgcG9pbnQg
c2VsZWN0aW9uIGFsZ29yaXRobQorICAgICAgICB3b3VsZCBub3Qgc3RvcCBpbiB0aGUgbWlkZGxl
IG9mIHRob3NlIHNuYXAgYXJlYXMuCisKKyAgICAgICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbDoKKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1l
LXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5odG1sOgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1vdmVyZmxvdy5odG1s
OgorCiAyMDIxLTA1LTEzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBbU2Nyb2xsIHNuYXBdIHByb3hpbWl0eSBzY3JvbGwgc25hcHBpbmcgaXMgYnJv
a2VuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBlZTFmNjg5MDBkZWI0OTg5NWI1
MGZiY2RmNzMyYTk3ZjJkMDkwNTg5Li42MGEwYzE4ODE2Y2U4NTAwZTk1NGMyYTExMDM4MWYyNWRk
YzVlODI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMS0wNS0xOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgQ1NTIHNjcm9sbCBzbmFwIHNob3VsZCBhbGxvdyBzY3JvbGxpbmcgdG8gdGhlIG1pZGRs
ZSBvZiBzbmFwIGFyZWFzIHRoYXQgb3ZlcmZsb3cgdGhlIHNuYXBwb3J0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwMjEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzc1NTE4NjA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvb3Zl
cmZsb3dpbmctc25hcC1hcmVhcy1leHBlY3RlZC50eHQ6CisKIDIwMjEtMDUtMTYgIENhbWVyb24g
TWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIE1hdGhNTCBXUFRz
IHdhaXQgZm9yIGFsbCBmb250IGxvYWRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbCBiL0xheW91
dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtY2xpY2stc2Nyb2xsYmFyLWd1dHRl
ci5odG1sCmluZGV4IDdiMzUyNmNjNGRkMDdkNTFjOWVjOTNkYzg5ZDQ5MDJiZjBiZDQ2MzIuLjk0
ZGE4YmU1MzFiZmRlYjk0MjA1ZjdlOGVjMjEyNjFkMWRmODZiZjggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtY2xpY2stc2Nyb2xsYmFyLWd1dHRl
ci5odG1sCisrKyBiL0xheW91dFRlc3RzL2NzczMvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtY2xp
Y2stc2Nyb2xsYmFyLWd1dHRlci5odG1sCkBAIC0zNCwyMSArMzQsMzIgQEAKICAgICAgICAgICAg
ICAgICBzY3JvbGwtc25hcC10eXBlOiBib3RoIG1hbmRhdG9yeTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgLmJsb2NrIHsKLSAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMDBweDsKLSAg
ICAgICAgICAgICAgICB3aWR0aDogMjUwcHg7Ci0gICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAt
YWxpZ246IHN0YXJ0OwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAuaG9yaXpvbnRhbC1k
cmF3ZXIgewogICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgICAgICB3
aWR0aDogMjAwMHB4OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAuaG9yaXpvbnRhbC1k
cmF3ZXIgLmJsb2NrIHsKLSAgICAgICAgICAgICAgICB3aWR0aDogMTAwMHB4OwotICAgICAgICAg
ICAgICAgIGhlaWdodDogMjUwcHg7CisgICAgICAgICAgICAuaG9yaXpvbnRhbC1kcmF3ZXIgPiBk
aXYgeworICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgICAgICAgICAgIHdpZHRo
OiA5OTBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC5ob3Jpem9udGFsLWRyYXdlciA+IGRpdi5zbmFwLXBvaW50IHsKKyAgICAg
ICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDEwcHg7CisgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjdmVydGljYWwtY29udGFp
bmVyID4gZGl2IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDk5MHB4OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjdmVydGljYWwt
Y29udGFpbmVyID4gZGl2LnNuYXAtcG9pbnQgeworICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFw
LWFsaWduOiBzdGFydDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgICAgICAg
ICB9CisKICAgICAgICAgPC9zdHlsZT4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgpAQCAtODcsMTMgKzk4LDE3IEBACiAgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgogICAgICAgICA8ZGl2IGlkPSJob3Jpem9udGFsLWNv
bnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJob3Jp
em9udGFsLWRyYXdlciI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siIHN0eWxl
PSJmbG9hdDogbGVmdDsgYmFja2dyb3VuZDogIzgwNDc1RSI+PC9kaXY+Ci0gICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iYmxvY2siIHN0eWxlPSJ3aWR0aDogNDUwcHg7IGZsb2F0OiBsZWZ0OyBi
YWNrZ3JvdW5kOiAjQ0M1QTcxIj48L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJz
bmFwLXBvaW50IiBzdHlsZT0iYmFja2dyb3VuZDogIzgwNDc1RSI+PC9kaXY+CisgICAgICAgICAg
ICAgICAgPGRpdj48L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwLXBvaW50
IiBzdHlsZT0iYmFja2dyb3VuZDogI0NDNUE3MSI+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRp
dj48L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPGRp
diBpZD0idmVydGljYWwtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj4KLSAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImJsb2NrIiBzdHlsZT0iYmFja2dyb3VuZDogIzgwNDc1RSI+PC9kaXY+Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayIgc3R5bGU9ImhlaWdodDogNDUwcHg7IGJhY2tn
cm91bmQ6ICNDQzVBNzEiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcC1wb2lu
dCIgc3R5bGU9ImJhY2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2PgorICAgICAgICAgICAgPGRpdj48
L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXAtcG9pbnQiIHN0eWxlPSJiYWNrZ3Jv
dW5kOiAjQ0M1QTcxIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXY+PC9kaXY+CiAgICAgICAgIDwv
ZGl2PgogICAgICAgICA8cCBpZD0iY29uc29sZSI+PC9wPgogICAgICAgICA8c2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXNjcm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1z
bmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0CmluZGV4IGE0NWQyYWRjZGRm
NmNmMDNkZjM5ODYzYzM2MzY1OTMzYjg4ZTI4MWUuLjI1OWNkOTgwYzU0OWEwNThhMDhmZmZhN2Yy
NDMyMWY2YWM1ODMyMjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy1leHBlY3Rl
ZC50eHQKQEAgLTEsMTMgKzEsMTMgQEAKIAogUEFTUyBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlv
biBpZiB0aGUgc25hcCBhcmVhIGRvZXNuJ3QgY292ZXIgdGhlIHNuYXBwb3J0IG9uIHguCi1GQUlM
IFNuYXBzIHRvIHRoZSBzbmFwIHBvc2l0aW9uIGlmIHRoZSBzbmFwIGFyZWEgY292ZXJzIHRoZSBz
bmFwcG9ydCBvbiB4IG9uIHRoZSByaWdodCBib3JkZXIuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
IDI3MTUgYnV0IGdvdCAyMDAKLUZBSUwgU25hcHMgdG8gdGhlIHNuYXAgcG9zaXRpb24gaWYgdGhl
IHNuYXAgYXJlYSBjb3ZlcnMgdGhlIHNuYXBwb3J0IG9uIHggb24gdGhlIGxlZnQgYm9yZGVyLiBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAyMDAgYnV0IGdvdCAyNzE1CitQQVNTIFNuYXBzIHRvIHRo
ZSBzbmFwIHBvc2l0aW9uIGlmIHRoZSBzbmFwIGFyZWEgY292ZXJzIHRoZSBzbmFwcG9ydCBvbiB4
IG9uIHRoZSByaWdodCBib3JkZXIuCitQQVNTIFNuYXBzIHRvIHRoZSBzbmFwIHBvc2l0aW9uIGlm
IHRoZSBzbmFwIGFyZWEgY292ZXJzIHRoZSBzbmFwcG9ydCBvbiB4IG9uIHRoZSBsZWZ0IGJvcmRl
ci4KIFBBU1MgU25hcHMgaWYgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHByZXZpb3VzKDQwMCkg
YW5kIG5leHQoODAwKSBzbmFwIHBvc2l0aW9ucyBpcyBzbWFsbGVyIHRoYW4gc25hcHBvcnQoNTAw
KSBvbiB4LgogUEFTUyBTbmFwcyBpZiB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcHJldmlvdXMo
NDAwKSBhbmQgbmV4dCg4MDApIHNuYXAgcG9zaXRpb25zIGlzIHNtYWxsZXIgdGhhbiBzbmFwcG9y
dCg1MDApIG9uIHkuCi1GQUlMIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2gg
aXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9y
dCBvbiB4IGFuZCB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcHJldmlvdXMoODAwKSBhbmQgbmV4
dCgxNDAwKSBpcyBsYXJnZXIgdGhhbiBzbmFwcG9ydCg1MDApLiBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCA5MDAgYnV0IGdvdCA4MDAKLUZBSUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlv
biB3aGljaCBpcyBhIHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJz
IHNuYXBwb3J0IG9uIHkgYW5kIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg4MDAp
IGFuZCBuZXh0KDE0MDApIGlzIGxhcmdlciB0aGFuIHNuYXBwb3J0KDUwMCkuIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIDkwMCBidXQgZ290IDgwMAotRkFJTCBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xs
IHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJl
YSBjb3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlcmUgaXMgbm8gc3Vic2VxdWVudCBzbmFwIHBv
c2l0aW9ucy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMTUwMCBidXQgZ290IDE0MDAKLUZBSUwg
U25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBhIHZhbGlkIHNuYXAgcG9z
aXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9uIHkgYW5kIHRoZXJlIGlz
IG5vIHN1YnNlcXVlbnQgc25hcCBwb3NpdGlvbnMuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDE1
MDAgYnV0IGdvdCAxNDAwCi1GQUlMIERvbid0IHNuYXAgYmFjayBldmVuIGlmIHNjcm9sbFRvIHRy
aWVzIHRvIHNjcm9sbCB0byBwb3NpdGlvbnMgd2hpY2ggYXJlIG91dHNpZGUgb2YgdGhlIHNjcm9s
bCByYW5nZSBhbmQgaWYgYSBzbmFwIHRhcmdldCBlbGVtZW50IGNvdmVycyB0aGUgc25hcG9ydCBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAzNzE1IGJ1dCBnb3QgMjIwMAotRkFJTCBTbmFwIHRvIGN1
cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9uIHggYXMgdGhlIGFyZWEgaXMgY292ZXJpbmcgeCBheGlz
Lkhvd2V2ZXIsIHdlIHNuYXAgdG8gdGhlIHNwZWNpZmllZCBzbmFwIHBvc2l0aW9uIG9uIHkgYXMg
dGhlIGFyZWEgaXMgbm90IGNvdmVyaW5nIHkgYXhpcy4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
MTAgYnV0IGdvdCAwCitQQVNTIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2gg
aXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9y
dCBvbiB4IGFuZCB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcHJldmlvdXMoODAwKSBhbmQgbmV4
dCgxNDAwKSBpcyBsYXJnZXIgdGhhbiBzbmFwcG9ydCg1MDApLgorUEFTUyBTbmFwIHRvIGN1cnJl
bnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhl
IHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geSBhbmQgdGhlIGRpc3RhbmNlIGJldHdlZW4g
dGhlIHByZXZpb3VzKDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2VyIHRoYW4gc25hcHBvcnQo
NTAwKS4KK1BBU1MgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBhIHZh
bGlkIHNuYXAgcG9zaXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9uIHgg
YW5kIHRoZXJlIGlzIG5vIHN1YnNlcXVlbnQgc25hcCBwb3NpdGlvbnMuCitQQVNTIFNuYXAgdG8g
Y3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBh
cyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB5IGFuZCB0aGVyZSBpcyBubyBzdWJz
ZXF1ZW50IHNuYXAgcG9zaXRpb25zLgorUEFTUyBEb24ndCBzbmFwIGJhY2sgZXZlbiBpZiBzY3Jv
bGxUbyB0cmllcyB0byBzY3JvbGwgdG8gcG9zaXRpb25zIHdoaWNoIGFyZSBvdXRzaWRlIG9mIHRo
ZSBzY3JvbGwgcmFuZ2UgYW5kIGlmIGEgc25hcCB0YXJnZXQgZWxlbWVudCBjb3ZlcnMgdGhlIHNu
YXBvcnQKK1BBU1MgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBvbiB4IGFzIHRoZSBh
cmVhIGlzIGNvdmVyaW5nIHggYXhpcy5Ib3dldmVyLCB3ZSBzbmFwIHRvIHRoZSBzcGVjaWZpZWQg
c25hcCBwb3NpdGlvbiBvbiB5IGFzIHRoZSBhcmVhIGlzIG5vdCBjb3ZlcmluZyB5IGF4aXMuCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9u
dGFsLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRh
bC5odG1sCmluZGV4IDY0MjdhMTE0ZTQ4YjI2YmU2NWI1NWU3Yjg2OGRmODY3NTY5MWE5ZjguLjk0
ZGFkMjE2OGM2MGRlOTE1NDc2YjFkMDEwYTY0M2QwNGZlOTIwZTcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1h
bmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
bWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10aGVuLWhvcml6b250YWwuaHRtbApAQCAtNCw2
ICs0LDcgQEAKICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAgaHRtbCB7CiAgICAgICAgICAg
ICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CiAg
ICAgICAgICAgICAgICAgd2lkdGg6IDEwMHZ3OwpAQCAtMTIsNyArMTMsNyBAQAogICAgICAgICAg
ICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAuY29sb3JCb3gg
ewotICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiA5MHZoOwogICAgICAgICAgICAgICAgIHdpZHRoOiAxMDB2dzsKICAgICAgICAgICAgICAgICBm
bG9hdDogbGVmdDsKICAgICAgICAgICAgICAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1vdmVy
Zmxvdy5odG1sCmluZGV4IDViMDUyZmRiZjk0Yzg0YTNkOGUwZDFhMjhmY2I1MjIwMmFlZjlmMmYu
LjE1MzFlMWUzYWIyMjVlNTAyYjNiNzIwZDFkMDYxYjhiZTMwZmY2MmMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LXByb3hpbWl0eS1vdmVyZmxvdy5odG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3hpbWl0eS1vdmVyZmxvdy5odG1s
CkBAIC0xMywyMSArMTMsMTYgQEAKICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CiAgICAgICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICAgICAgIGxlZnQ6IDA7Ci0gICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogbm9uZTsKICAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBzY3JvbGw7CiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBwcm94aW1pdHk7
Ci0gICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiBwcm94aW1pdHk7Ci0g
ICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogcHJveGltaXR5OwogICAgICAgICAgICAg
ICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLmFyZWEgewot
ICAgICAgICAgICAgICAgIGhlaWdodDogNjAwcHg7Ci0gICAgICAgICAgICAgICAgd2lkdGg6IDYw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMTAwJTsKICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICAgICAgICAgICBz
Y3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7Ci0gICAgICAgICAgICAgICAgLXdlYmtpdC1zY3JvbGwt
c25hcC1jb29yZGluYXRlOiAwIDA7Ci0gICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtY29vcmRp
bmF0ZTogMCAwOwogICAgICAgICAgICAgfQogICAgICAgICA8L3N0eWxlPgogICAgICAgICA8c2Ny
aXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432249</attachid>
            <date>2021-06-25 02:40:12 -0700</date>
            <delta_ts>2021-06-29 00:14:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223021-20210625114010.patch</filename>
            <type>text/plain</type>
            <size>16377</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODIwNTNjYzU1ODdhOTc0
YTZlM2RjNmUzNzg5N2RhYTAzZWEyNDFiZS4uNzYxOTJlODBkNDEzOTU2MjE0YThiZDNmZDZhZjg4
MzkyNTdkMTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA2LTE2ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBDU1Mgc2Nyb2xs
IHNuYXAgc2hvdWxkIGFsbG93IHNjcm9sbGluZyB0byB0aGUgbWlkZGxlIG9mIHNuYXAgYXJlYXMg
dGhhdCBvdmVyZmxvdyB0aGUgc25hcHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMzAyMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzU1MTg2
MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiBUaGlzIGlzIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgYW5kLCBpbiBwYXJ0
aWN1bGFyLCBhIFdQVCB0ZXN0OgorICAgICAgICAgICAgLSB3ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLmh0bWwKKworICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZWFyY2hGb3JQb3RlbnRpYWxTbmFwUG9pbnRzKTogUmVjb3JkIHdoZW4gdGhlIHRhcmdl
dCBzbmFwIG9mZnNldCBoYXBwZW5zIHRvCisgICAgICAgIGZhbGwgaW4gdGhlIGludGVyaW9yIG9m
IGEgc25hcCBhcmVhIHRoYXQgb3ZlcmZsb3dzIHRoZSBzbmFwIHBvcnQuCisgICAgICAgIChXZWJD
b3JlOjpjbG9zZXN0U25hcE9mZnNldFdpdGhJbmZvQW5kQXhpcyk6IFdoZW4gdGhpcyBoYXBwZW5z
IGFuZCB3ZSBhcmUgaW4gYSBzcGVjLWNvbXBsaWFudAorICAgICAgICBzaXRhdXRpb24sIGp1c3Qg
c25hcCB0byB0aGUgb3JpZ2luYWwgdGFyZ2V0IG9mZnNldC4KKwogMjAyMS0wNi0yNSAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2Nzcy1zY3JvbGwt
c25hcF0gU2ltcGxpZnkgc25hcCBwb2ludCBzZWxlY3Rpb24gaGVscGVycwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAK
aW5kZXggYWY4NTRmODc1M2JjMzM3ZDNlMDI5MzQ5NDNkNWVlMTViMzdlNmQyNi4uZDFiNjJiYjY1
ZDQ0ZjViNDAyN2NkMmEyMWMwMjRkYTFmNzZhZjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCkBAIC00NSwx
MyArNDUsMTUgQEAgc3RydWN0IFBvdGVudGlhbFNuYXBQb2ludFNlYXJjaFJlc3VsdCB7CiAgICAg
c3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8VW5pdFR5cGUsIHVuc2lnbmVkPj4gcHJldmlvdXM7CiAg
ICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8VW5pdFR5cGUsIHVuc2lnbmVkPj4gbmV4dDsKICAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+PiBzbmFwU3RvcDsK
KyAgICBib29sIGxhbmRlZEluc2lkZVNuYXBBcmVhVGhhdENvbnN1bWVzVmlld3BvcnQ7CiB9Owog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5mb1R5cGUsIHR5cGVuYW1lIFVuaXRUeXBlPgotc3RhdGlj
IFBvdGVudGlhbFNuYXBQb2ludFNlYXJjaFJlc3VsdDxVbml0VHlwZT4gc2VhcmNoRm9yUG90ZW50
aWFsU25hcFBvaW50cyhjb25zdCBJbmZvVHlwZSYgaW5mbywgU2Nyb2xsRXZlbnRBeGlzIGF4aXMs
IFVuaXRUeXBlIGRlc3RpbmF0aW9uT2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFVuaXRUeXBlPiBvcmln
aW5hbE9mZnNldCkKK3N0YXRpYyBQb3RlbnRpYWxTbmFwUG9pbnRTZWFyY2hSZXN1bHQ8VW5pdFR5
cGU+IHNlYXJjaEZvclBvdGVudGlhbFNuYXBQb2ludHMoY29uc3QgSW5mb1R5cGUmIGluZm8sIFNj
cm9sbEV2ZW50QXhpcyBheGlzLCBVbml0VHlwZSB2aWV3cG9ydExlbmd0aCwgVW5pdFR5cGUgZGVz
dGluYXRpb25PZmZzZXQsIHN0ZDo6b3B0aW9uYWw8VW5pdFR5cGU+IG9yaWdpbmFsT2Zmc2V0KQog
ewogICAgIGNvbnN0IGF1dG8mIHNuYXBPZmZzZXRzID0gaW5mby5vZmZzZXRzRm9yQXhpcyhheGlz
KTsKICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+PiBwcmV2
aW91cywgbmV4dCwgZXhhY3QsIHNuYXBTdG9wOworICAgIGJvb2wgbGFuZGVkSW5zaWRlU25hcEFy
ZWFUaGF0Q29uc3VtZXNWaWV3cG9ydCA9IGZhbHNlOwogCiAgICAgLy8gQSBwYXJ0aWN1bGFyIHNu
YXAgc3RvcCBpcyBiZXR0ZXIgaWYgaXQncyBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBvZmZzZXQgYW5k
IGRlc3RpbmF0aW9uIG9mZnNldCBhbmQgY2xvc2VyIG9yaWdpbmFsCiAgICAgLy8gb2Zmc2V0IHRo
YW4gdGhlIHByZXZpb3VzbHkgc2VsZWN0ZWQgc25hcCBzdG9wLiBXZSBhbHdheXMgd2FudCB0byBz
dG9wIGF0IHRoZSBzbmFwIHN0b3AgY2xvc2VzdCB0byB0aGUgb3JpZ2luYWwgb2Zmc2V0LgpAQCAt
NjYsNiArNjgsMTIgQEAgc3RhdGljIFBvdGVudGlhbFNuYXBQb2ludFNlYXJjaFJlc3VsdDxVbml0
VHlwZT4gc2VhcmNoRm9yUG90ZW50aWFsU25hcFBvaW50cyhjb24KIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzbmFwT2Zmc2V0cy5zaXplKCk7IGkrKykgewogICAgICAgICBVbml0VHlw
ZSBwb3RlbnRpYWxTbmFwT2Zmc2V0ID0gc25hcE9mZnNldHNbaV0ub2Zmc2V0OworCisgICAgICAg
IGNvbnN0IGF1dG8mIHNuYXBBcmVhID0gaW5mby5zbmFwQXJlYXNbc25hcE9mZnNldHNbaV0uc25h
cEFyZWFJbmRleF07CisgICAgICAgIGF1dG8gc25hcEFyZWFNaW4gPSBheGlzID09IFNjcm9sbEV2
ZW50QXhpczo6SG9yaXpvbnRhbCA/IHNuYXBBcmVhLngoKSA6IHNuYXBBcmVhLnkoKTsKKyAgICAg
ICAgYXV0byBzbmFwQXJlYU1heCA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFs
ID8gc25hcEFyZWEubWF4WCgpIDogc25hcEFyZWEubWF4WSgpOworICAgICAgICBsYW5kZWRJbnNp
ZGVTbmFwQXJlYVRoYXRDb25zdW1lc1ZpZXdwb3J0IHw9IHNuYXBBcmVhTWluIDw9IGRlc3RpbmF0
aW9uT2Zmc2V0ICYmIHNuYXBBcmVhTWF4ID49IChkZXN0aW5hdGlvbk9mZnNldCArIHZpZXdwb3J0
TGVuZ3RoKTsKKwogICAgICAgICBpZiAocG90ZW50aWFsU25hcE9mZnNldCA9PSBkZXN0aW5hdGlv
bk9mZnNldCkKICAgICAgICAgICAgIGV4YWN0ID0gc3RkOjptYWtlX3BhaXIocG90ZW50aWFsU25h
cE9mZnNldCwgaSk7CiAgICAgICAgIGVsc2UgaWYgKHBvdGVudGlhbFNuYXBPZmZzZXQgPCBkZXN0
aW5hdGlvbk9mZnNldCkKQEAgLTc4LDggKzg2LDggQEAgc3RhdGljIFBvdGVudGlhbFNuYXBQb2lu
dFNlYXJjaFJlc3VsdDxVbml0VHlwZT4gc2VhcmNoRm9yUG90ZW50aWFsU25hcFBvaW50cyhjb24K
ICAgICB9CiAKICAgICBpZiAoZXhhY3QpCi0gICAgICAgIHJldHVybiB7IGV4YWN0LCBleGFjdCwg
c25hcFN0b3AgfTsKLSAgICByZXR1cm4geyBwcmV2aW91cywgbmV4dCwgc25hcFN0b3AgfTsKKyAg
ICAgICAgcmV0dXJuIHsgZXhhY3QsIGV4YWN0LCBzbmFwU3RvcCwgbGFuZGVkSW5zaWRlU25hcEFy
ZWFUaGF0Q29uc3VtZXNWaWV3cG9ydCB9OworICAgIHJldHVybiB7IHByZXZpb3VzLCBuZXh0LCBz
bmFwU3RvcCwgbGFuZGVkSW5zaWRlU25hcEFyZWFUaGF0Q29uc3VtZXNWaWV3cG9ydCB9OwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5mb1R5cGUsIHR5cGVuYW1lIFNpemVUeXBlLCB0eXBlbmFt
ZSBMYXlvdXRUeXBlPgpAQCAtOTAsMTEgKzk4LDIwIEBAIHN0YXRpYyBzdGQ6OnBhaXI8TGF5b3V0
VHlwZSwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IGNsb3Nlc3RTbmFwT2Zmc2V0V2l0aEluZm9B
CiAgICAgaWYgKHNuYXBPZmZzZXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHBhaXJGb3JO
b1NuYXBwaW5nOwogCi0gICAgYXV0byBbcHJldmlvdXMsIG5leHQsIHNuYXBTdG9wXSA9IHNlYXJj
aEZvclBvdGVudGlhbFNuYXBQb2ludHMoaW5mbywgYXhpcywgc2Nyb2xsRGVzdGluYXRpb25PZmZz
ZXQsIG9yaWdpbmFsT2Zmc2V0Rm9yRGlyZWN0aW9uYWxTbmFwcGluZyk7CisgICAgYXV0byB2aWV3
cG9ydExlbmd0aCA9IGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gdmlld3Bv
cnRTaXplLndpZHRoKCkgOiB2aWV3cG9ydFNpemUuaGVpZ2h0KCk7CisgICAgYXV0byBbcHJldmlv
dXMsIG5leHQsIHNuYXBTdG9wLCBsYW5kZWRJbnNpZGVTbmFwQXJlYVRoYXRDb25zdW1lc1ZpZXdw
b3J0XSA9IHNlYXJjaEZvclBvdGVudGlhbFNuYXBQb2ludHMoaW5mbywgYXhpcywgdmlld3BvcnRM
ZW5ndGgsIHNjcm9sbERlc3RpbmF0aW9uT2Zmc2V0LCBvcmlnaW5hbE9mZnNldEZvckRpcmVjdGlv
bmFsU25hcHBpbmcpOwogICAgIGlmIChzbmFwU3RvcCkKICAgICAgICAgcmV0dXJuICpzbmFwU3Rv
cDsKIAotICAgIGF1dG8gdmlld3BvcnRMZW5ndGggPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6
SG9yaXpvbnRhbCA/IHZpZXdwb3J0U2l6ZS53aWR0aCgpIDogdmlld3BvcnRTaXplLmhlaWdodCgp
OworICAgIC8vIEZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zY3JvbGwtc25hcC0xLyNz
bmFwLW92ZXJmbG93CisgICAgLy8gIklmIHRoZSBzbmFwIGFyZWEgaXMgbGFyZ2VyIHRoYW4gdGhl
IHNuYXBwb3J0IGluIGEgcGFydGljdWxhciBheGlzLCB0aGVuIGFueSBzY3JvbGwgcG9zaXRpb24K
KyAgICAvLyBpbiB3aGljaCB0aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQsIGFuZCB0
aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2VvbWV0cmljYWxseQorICAgIC8vIHByZXZpb3VzIGFu
ZCBzdWJzZXF1ZW50IHNuYXAgcG9zaXRpb25zIGluIHRoYXQgYXhpcyBpcyBsYXJnZXIgdGhhbiBz
aXplIG9mIHRoZSBzbmFwcG9ydCBpbgorICAgIC8vIHRoYXQgYXhpcywgaXMgYSB2YWxpZCBzbmFw
IHBvc2l0aW9uIGluIHRoYXQgYXhpcy4gVGhlIFVBIG1heSB1c2UgdGhlIHNwZWNpZmllZCBhbGln
bm1lbnQgYXMgYQorICAgIC8vIG1vcmUgcHJlY2lzZSB0YXJnZXQgZm9yIGNlcnRhaW4gc2Nyb2xs
IG9wZXJhdGlvbnMgKGUuZy4gZXhwbGljaXQgcGFnaW5nKS4iCisgICAgaWYgKGxhbmRlZEluc2lk
ZVNuYXBBcmVhVGhhdENvbnN1bWVzVmlld3BvcnQgJiYgKCFwcmV2aW91cyB8fCAhbmV4dCB8fCAo
KCpuZXh0KS5maXJzdCAtICgqcHJldmlvdXMpLmZpcnN0KSA+PSB2aWV3cG9ydExlbmd0aCkpCisg
ICAgICAgIHJldHVybiBwYWlyRm9yTm9TbmFwcGluZzsKKwogICAgIGF1dG8gaXNOZWFyRW5vdWdo
VG9PZmZzZXRGb3JQcm94aW1pdHkgPSBbJl0oTGF5b3V0VHlwZSBjYW5kaWRhdGVTbmFwT2Zmc2V0
KSB7CiAgICAgICAgIGlmIChpbmZvLnN0cmljdG5lc3MgIT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6
OlByb3hpbWl0eSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA5Mjc0YjNlYTJm
YTcwOWQ2MTc1MjI0OTNiNzBlZjY2Y2QxYWEzM2IuLmU5MGQ5NDE4YTQxZTQxMmY1YzAwNDUzZDk4
OGNhMGQyMjFjNzcwZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMS0wNi0xNiAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgQ1NTIHNjcm9sbCBz
bmFwIHNob3VsZCBhbGxvdyBzY3JvbGxpbmcgdG8gdGhlIG1pZGRsZSBvZiBzbmFwIGFyZWFzIHRo
YXQgb3ZlcmZsb3cgdGhlIHNuYXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjMwMjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NTE4NjA2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBzb21lIGV4aXN0aW5nIHRlc3RzIHRoYXQgd2VyZSByZWx5aW5nIG9uIG5vbi1zcGVjIGNvbXBs
aWFudCBiZWhhdmlvci4gVGhlc2UgdGVzdHMKKyAgICAgICAgdXNlZCBzbmFwIGFyZWFzIHRoYXQg
d2VyZSBsYXJnZXIgdGhhbiB0aGUgc25hcHBvcnQgYW5kIGRpZG4ndCBleHBlY3QgdGhhdCB0aGUg
cGFyZW50CisgICAgICAgIHNjcm9sbGVyIGNvdWxkIHNjcm9sbCBpbnRvIHRoZW0uCisKKyAgICAg
ICAgKiBjc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIu
aHRtbDogVGhpcyB0ZXN0IHVzZWQgc25hcCBhcmVhcyB0aGF0CisgICAgICAgIG92ZXJmbG93IHRo
ZSBzbmFwcG9ydCwgdGh1cyBtZWFudCB0aGF0IGl0IHJlbGllZCBvbiBub24tc3BlYyBjb21wbGlh
bnQgYmVoYXZpb3IuIFJld29yayBpdCBzbworICAgICAgICB0aGF0IHRoZSBzbmFwIGFyZWFzIGRv
IG5vdCBvdmVyZmxvdywgbWFpbnRhaW5pbmcgdGhlIGV4aXN0aW5nIGJlaGF2aW9yLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLW1hbmRh
dG9yeS1tYWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFsLmh0bWw6IERpdHRvLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXBy
b3hpbWl0eS1vdmVyZmxvdy5odG1sOiBEaXR0by4KKwogMjAyMS0wNi0xNCAgU2VyZ2lvIFZpbGxh
ciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhib3hdIERv
IG5vdCBjbGFtcCBmbGV4IGJhc2Ugc2l6ZSB3aXRoIHttaW58bWF4fS17aGVpZ2h0fHdpZHRofQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggN2NmM2E4OThmYjVmOWE2MzUzNzM3NzBj
MmZjMTM5ZDJmMTBlNzA0NC4uMDRiMjg2MDE1ZTNjYjZhMWZiNDIwOTgyODE3OGI5YTQyZDNjNmM2
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEt
MDYtMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAg
IENTUyBzY3JvbGwgc25hcCBzaG91bGQgYWxsb3cgc2Nyb2xsaW5nIHRvIHRoZSBtaWRkbGUgb2Yg
c25hcCBhcmVhcyB0aGF0IG92ZXJmbG93IHRoZSBzbmFwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMDIxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83NTUxODYwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL292ZXJmbG93
aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0OiBVcGRhdGUgdGVzdAorICAgICAgICBleHBlY3Rh
dGlvbnMgdG8gcmVmbGVjdCBuZXdseSBwYXNzaW5nIHRlc3RzLgorCiAyMDIxLTA2LTI1ICBaaXJh
biBTdW4gIDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVzeW5jIHdlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWdyaWQgdGVzdHMgZnJvbSB1cHN0cmVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1jbGljay1zY3JvbGxiYXItZ3V0dGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNj
cm9sbGJhci1ndXR0ZXIuaHRtbAppbmRleCA3YjM1MjZjYzRkZDA3ZDUxYzllYzkzZGM4OWQ0OTAy
YmYwYmQ0NjMyLi45NGRhOGJlNTMxYmZkZWI5NDIwNWY3ZThlYzIxMjYxZDFkZjg2YmY4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWNsaWNrLXNj
cm9sbGJhci1ndXR0ZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWNsaWNrLXNjcm9sbGJhci1ndXR0ZXIuaHRtbApAQCAtMzQsMjEgKzM0LDMyIEBA
CiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogYm90aCBtYW5kYXRvcnk7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIC5ibG9jayB7Ci0gICAgICAgICAgICAgICAgaGVpZ2h0
OiAxMDAwcHg7Ci0gICAgICAgICAgICAgICAgd2lkdGg6IDI1MHB4OwotICAgICAgICAgICAgICAg
IHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAg
Lmhvcml6b250YWwtZHJhd2VyIHsKICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAg
ICAgICAgICAgICAgd2lkdGg6IDIwMDBweDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
Lmhvcml6b250YWwtZHJhd2VyIC5ibG9jayB7Ci0gICAgICAgICAgICAgICAgd2lkdGg6IDEwMDBw
eDsKLSAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1MHB4OworICAgICAgICAgICAgLmhvcml6b250
YWwtZHJhd2VyID4gZGl2IHsKKyAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogOTkwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAuaG9yaXpvbnRhbC1kcmF3ZXIgPiBkaXYuc25hcC1w
b2ludCB7CisgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OworICAgICAg
ICAgICAgICAgIHdpZHRoOiAxMHB4OworICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI3Zl
cnRpY2FsLWNvbnRhaW5lciA+IGRpdiB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiA5OTBweDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgI3ZlcnRpY2FsLWNvbnRhaW5lciA+IGRpdi5zbmFwLXBvaW50IHsKKyAgICAgICAgICAgICAg
ICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4
OwogICAgICAgICAgICAgfQorCiAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KQEAgLTg3LDEzICs5
OCwxNyBAQAogICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KICAgICAgICAgPGRpdiBpZD0i
aG9yaXpvbnRhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICAgPGRp
diBjbGFzcz0iaG9yaXpvbnRhbC1kcmF3ZXIiPgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImJsb2NrIiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IGJhY2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2Pgot
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJsb2NrIiBzdHlsZT0id2lkdGg6IDQ1MHB4OyBm
bG9hdDogbGVmdDsgYmFja2dyb3VuZDogI0NDNUE3MSI+PC9kaXY+CisgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0ic25hcC1wb2ludCIgc3R5bGU9ImJhY2tncm91bmQ6ICM4MDQ3NUUiPjwvZGl2
PgorICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ic25hcC1wb2ludCIgc3R5bGU9ImJhY2tncm91bmQ6ICNDQzVBNzEiPjwvZGl2PgorICAgICAg
ICAgICAgICAgIDxkaXY+PC9kaXY+CiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgPC9kaXY+
CiAgICAgICAgIDxkaXYgaWQ9InZlcnRpY2FsLWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+
Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJibG9jayIgc3R5bGU9ImJhY2tncm91bmQ6ICM4MDQ3
NUUiPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmxvY2siIHN0eWxlPSJoZWlnaHQ6
IDQ1MHB4OyBiYWNrZ3JvdW5kOiAjQ0M1QTcxIj48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgY2xh
c3M9InNuYXAtcG9pbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjODA0NzVFIj48L2Rpdj4KKyAgICAg
ICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwLXBvaW50IiBz
dHlsZT0iYmFja2dyb3VuZDogI0NDNUE3MSI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2PjwvZGl2
PgogICAgICAgICA8L2Rpdj4KICAgICAgICAgPHAgaWQ9ImNvbnNvbGUiPjwvcD4KICAgICAgICAg
PHNjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLWV4cGVjdGVkLnR4dAppbmRl
eCBhNDVkMmFkY2RkZjZjZjAzZGYzOTg2M2MzNjM2NTkzM2I4OGUyODFlLi4yNTljZDk4MGM1NDlh
MDU4YTA4ZmZmYTdmMjQzMjFmNmFjNTgzMjI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvb3ZlcmZsb3dp
bmctc25hcC1hcmVhcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAt
YXJlYXMtZXhwZWN0ZWQudHh0CkBAIC0xLDEzICsxLDEzIEBACiAKIFBBU1MgU25hcHMgdG8gdGhl
IHNuYXAgcG9zaXRpb24gaWYgdGhlIHNuYXAgYXJlYSBkb2Vzbid0IGNvdmVyIHRoZSBzbmFwcG9y
dCBvbiB4LgotRkFJTCBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBpZiB0aGUgc25hcCBhcmVh
IGNvdmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0aGUgcmlnaHQgYm9yZGVyLiBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAyNzE1IGJ1dCBnb3QgMjAwCi1GQUlMIFNuYXBzIHRvIHRoZSBzbmFwIHBv
c2l0aW9uIGlmIHRoZSBzbmFwIGFyZWEgY292ZXJzIHRoZSBzbmFwcG9ydCBvbiB4IG9uIHRoZSBs
ZWZ0IGJvcmRlci4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMjAwIGJ1dCBnb3QgMjcxNQorUEFT
UyBTbmFwcyB0byB0aGUgc25hcCBwb3NpdGlvbiBpZiB0aGUgc25hcCBhcmVhIGNvdmVycyB0aGUg
c25hcHBvcnQgb24geCBvbiB0aGUgcmlnaHQgYm9yZGVyLgorUEFTUyBTbmFwcyB0byB0aGUgc25h
cCBwb3NpdGlvbiBpZiB0aGUgc25hcCBhcmVhIGNvdmVycyB0aGUgc25hcHBvcnQgb24geCBvbiB0
aGUgbGVmdCBib3JkZXIuCiBQQVNTIFNuYXBzIGlmIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBw
cmV2aW91cyg0MDApIGFuZCBuZXh0KDgwMCkgc25hcCBwb3NpdGlvbnMgaXMgc21hbGxlciB0aGFu
IHNuYXBwb3J0KDUwMCkgb24geC4KIFBBU1MgU25hcHMgaWYgdGhlIGRpc3RhbmNlIGJldHdlZW4g
dGhlIHByZXZpb3VzKDQwMCkgYW5kIG5leHQoODAwKSBzbmFwIHBvc2l0aW9ucyBpcyBzbWFsbGVy
IHRoYW4gc25hcHBvcnQoNTAwKSBvbiB5LgotRkFJTCBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBv
c2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBj
b3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHByZXZpb3Vz
KDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2VyIHRoYW4gc25hcHBvcnQoNTAwKS4gYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgOTAwIGJ1dCBnb3QgODAwCi1GQUlMIFNuYXAgdG8gY3VycmVudCBz
Y3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25h
cCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB5IGFuZCB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUg
cHJldmlvdXMoODAwKSBhbmQgbmV4dCgxNDAwKSBpcyBsYXJnZXIgdGhhbiBzbmFwcG9ydCg1MDAp
LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCA5MDAgYnV0IGdvdCA4MDAKLUZBSUwgU25hcCB0byBj
dXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBhIHZhbGlkIHNuYXAgcG9zaXRpb24sIGFz
IHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9uIHggYW5kIHRoZXJlIGlzIG5vIHN1YnNl
cXVlbnQgc25hcCBwb3NpdGlvbnMuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIDE1MDAgYnV0IGdv
dCAxNDAwCi1GQUlMIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gd2hpY2ggaXMgYSB2
YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBzbmFwcG9ydCBvbiB5
IGFuZCB0aGVyZSBpcyBubyBzdWJzZXF1ZW50IHNuYXAgcG9zaXRpb25zLiBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAxNTAwIGJ1dCBnb3QgMTQwMAotRkFJTCBEb24ndCBzbmFwIGJhY2sgZXZlbiBp
ZiBzY3JvbGxUbyB0cmllcyB0byBzY3JvbGwgdG8gcG9zaXRpb25zIHdoaWNoIGFyZSBvdXRzaWRl
IG9mIHRoZSBzY3JvbGwgcmFuZ2UgYW5kIGlmIGEgc25hcCB0YXJnZXQgZWxlbWVudCBjb3ZlcnMg
dGhlIHNuYXBvcnQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgMzcxNSBidXQgZ290IDIyMDAKLUZB
SUwgU25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBvbiB4IGFzIHRoZSBhcmVhIGlzIGNv
dmVyaW5nIHggYXhpcy5Ib3dldmVyLCB3ZSBzbmFwIHRvIHRoZSBzcGVjaWZpZWQgc25hcCBwb3Np
dGlvbiBvbiB5IGFzIHRoZSBhcmVhIGlzIG5vdCBjb3ZlcmluZyB5IGF4aXMuIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkIDEwIGJ1dCBnb3QgMAorUEFTUyBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBv
c2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBj
b3ZlcnMgc25hcHBvcnQgb24geCBhbmQgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHByZXZpb3Vz
KDgwMCkgYW5kIG5leHQoMTQwMCkgaXMgbGFyZ2VyIHRoYW4gc25hcHBvcnQoNTAwKS4KK1BBU1Mg
U25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBhIHZhbGlkIHNuYXAgcG9z
aXRpb24sIGFzIHRoZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9uIHkgYW5kIHRoZSBkaXN0
YW5jZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyg4MDApIGFuZCBuZXh0KDE0MDApIGlzIGxhcmdlciB0
aGFuIHNuYXBwb3J0KDUwMCkuCitQQVNTIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24g
d2hpY2ggaXMgYSB2YWxpZCBzbmFwIHBvc2l0aW9uLCBhcyB0aGUgc25hcCBhcmVhIGNvdmVycyBz
bmFwcG9ydCBvbiB4IGFuZCB0aGVyZSBpcyBubyBzdWJzZXF1ZW50IHNuYXAgcG9zaXRpb25zLgor
UEFTUyBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNoIGlzIGEgdmFsaWQgc25h
cCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAgYXJlYSBjb3ZlcnMgc25hcHBvcnQgb24geSBhbmQgdGhl
cmUgaXMgbm8gc3Vic2VxdWVudCBzbmFwIHBvc2l0aW9ucy4KK1BBU1MgRG9uJ3Qgc25hcCBiYWNr
IGV2ZW4gaWYgc2Nyb2xsVG8gdHJpZXMgdG8gc2Nyb2xsIHRvIHBvc2l0aW9ucyB3aGljaCBhcmUg
b3V0c2lkZSBvZiB0aGUgc2Nyb2xsIHJhbmdlIGFuZCBpZiBhIHNuYXAgdGFyZ2V0IGVsZW1lbnQg
Y292ZXJzIHRoZSBzbmFwb3J0CitQQVNTIFNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24g
b24geCBhcyB0aGUgYXJlYSBpcyBjb3ZlcmluZyB4IGF4aXMuSG93ZXZlciwgd2Ugc25hcCB0byB0
aGUgc3BlY2lmaWVkIHNuYXAgcG9zaXRpb24gb24geSBhcyB0aGUgYXJlYSBpcyBub3QgY292ZXJp
bmcgeSBheGlzLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2Fs
LXRoZW4taG9yaXpvbnRhbC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFtZS12ZXJ0aWNhbC10
aGVuLWhvcml6b250YWwuaHRtbAppbmRleCA2NDI3YTExNGU0OGIyNmJlNjViNTVlN2I4NjhkZjg2
NzU2OTFhOWY4Li45NGRhZDIxNjhjNjBkZTkxNTQ3NmIxZDAxMGE2NDNkMDRmZTkyMGU3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZyYW1lLXZlcnRpY2FsLXRoZW4taG9yaXpvbnRhbC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLW1hbmRhdG9yeS1tYWluZnJhbWUtdmVydGljYWwtdGhlbi1ob3Jpem9udGFs
Lmh0bWwKQEAgLTQsNiArNCw3IEBACiAgICAgICAgIDxzdHlsZT4KICAgICAgICAgICAgIGh0bWwg
ewogICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5OworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgewogICAgICAgICAgICAgICAgIHdpZHRoOiAxMDB2dzsKQEAgLTEyLDcgKzEzLDcg
QEAKICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgLmNvbG9yQm94IHsKLSAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoOworICAgICAgICAg
ICAgICAgIGhlaWdodDogOTB2aDsKICAgICAgICAgICAgICAgICB3aWR0aDogMTAwdnc7CiAgICAg
ICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxp
Z246IHN0YXJ0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtcHJveGltaXR5LW92ZXJmbG93Lmh0bWwgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1w
cm94aW1pdHktb3ZlcmZsb3cuaHRtbAppbmRleCA1YjA1MmZkYmY5NGM4NGEzZDhlMGQxYTI4ZmNi
NTIyMDJhZWY5ZjJmLi4xNTMxZTFlM2FiMjI1ZTUwMmIzYjcyMGQxZDA2MWI4YmUzMGZmNjJjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1wcm94aW1pdHktb3ZlcmZsb3cuaHRtbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm94aW1pdHkt
b3ZlcmZsb3cuaHRtbApAQCAtMTMsMjEgKzEzLDE2IEBACiAgICAgICAgICAgICAgICAgcG9zaXRp
b246IGFic29sdXRlOwogICAgICAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgICAgICBs
ZWZ0OiAwOwotICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IG5vbmU7CiAgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6
IHkgcHJveGltaXR5OwotICAgICAgICAgICAgICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTog
cHJveGltaXR5OwotICAgICAgICAgICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6IHByb3hpbWl0eTsK
ICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIC5hcmVhIHsKLSAgICAgICAgICAgICAgICBoZWlnaHQ6IDYwMHB4OwotICAgICAgICAgICAg
ICAgIHdpZHRoOiA2MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAg
ICAgICAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0OwotICAgICAgICAgICAgICAgIC13
ZWJraXQtc2Nyb2xsLXNuYXAtY29vcmRpbmF0ZTogMCAwOwotICAgICAgICAgICAgICAgIHNjcm9s
bC1zbmFwLWNvb3JkaW5hdGU6IDAgMDsKICAgICAgICAgICAgIH0KICAgICAgICAgPC9zdHlsZT4K
ICAgICAgICAgPHNjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>