<?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>273885</bug_id>
          
          <creation_ts>2024-05-08 10:59:45 -0700</creation_ts>
          <short_desc>[Cleanup] Remove RenderBox::hasOverridingLogicalHeight</short_desc>
          <delta_ts>2024-05-09 05:07:16 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rego</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2034036</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2024-05-08 10:59:45 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2034041</commentid>
    <comment_count>1</comment_count>
      <attachid>471318</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-05-08 11:25:50 -0700</bug_when>
    <thetext>Created attachment 471318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2034069</commentid>
    <comment_count>2</comment_count>
      <attachid>471321</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-05-08 13:08:47 -0700</bug_when>
    <thetext>Created attachment 471321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2034116</commentid>
    <comment_count>3</comment_count>
      <attachid>471321</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2024-05-08 15:04:04 -0700</bug_when>
    <thetext>Comment on attachment 471321
Patch

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

&gt; Source/WebCore/rendering/RenderBox.cpp:1321
&gt; +    auto iterator = gOverridingLogicalHeightMap-&gt;find(*this);

Use getOptional()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2034192</commentid>
    <comment_count>4</comment_count>
      <attachid>471331</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-05-08 20:08:00 -0700</bug_when>
    <thetext>Created attachment 471331
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2034261</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-05-09 05:06:40 -0700</bug_when>
    <thetext>Committed 278557@main (6330fd99ca44): &lt;https://commits.webkit.org/278557@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 471331.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2034263</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-05-09 05:07:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/127806050&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>471318</attachid>
            <date>2024-05-08 11:25:50 -0700</date>
            <delta_ts>2024-05-08 13:01:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-273885-20240508112319.patch</filename>
            <type>text/plain</type>
            <size>32668</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBkMzUyMGIwMjAyODU1YjliNmQ5NTA0NDNmOTFjYTdiMGU3MTdmZGMyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgOCBNYXkgMjAyNCAxMDo1OTo1NiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtDbGVhbnVw
XSBSZW1vdmUgUmVuZGVyQm94OjpoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodAogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3Mzg4NQoKUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgpUaGlzIHBhdGNoIGVsaW1pbmF0ZXMgYSByZWR1bmRhbnQgaGFzaCBsb29rdXAg
YnkKMS4gcmVtb3ZpbmcgUmVuZGVyQm94OjpoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCBhbmQK
Mi4gY2hhbmdpbmcgdGhlIHJldHVybiB0eXBlIG9mIFJlbmRlckJveDo6b3ZlcnJpZGluZ0xvZ2lj
YWxIZWlnaHQgZnJvbSBMYXlvdXRVbml0IHRvIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4KCnNv
IHRoYXQgdGhlIGZvbGxvd2luZyAoaGlnaGx5IGNvbW1vbikgcGF0dGVybgogIGlmIChoYXNPdmVy
cmlkaW5nTG9naWNhbEhlaWdodCgpKQogICAgLi4uICsgb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQo
KSArIC4uLgoKY2FuIGJlIHR1cm5lZCBpbnRvCiAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxI
ZWlnaHQgPSB0aGlzLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQogICAgLi4uICsgKm92ZXJy
aWRpbmdMb2dpY2FsSGVpZ2h0ICsgLi4uCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHA6CihXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXZhaWxhYmxlTG9naWNhbEhlaWdo
dEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbiBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHA6CihXZWJDb3JlOjpSZW5kZXJCb3g6Om92ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6cGVycGVuZGljdWxhckNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxIZWlnaHQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94OjpjYWNoZUlu
dHJpbnNpY0NvbnRlbnRMb2dpY2FsSGVpZ2h0Rm9yRmxleEl0ZW0gY29uc3QpOgooV2ViQ29yZTo6
UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyBjb25zdCk6CihXZWJDb3Jl
OjpSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyBjb25zdCk6CihXZWJDb3Jl
OjpSZW5kZXJCb3g6OnNob3VsZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8gY29u
c3QpOgooV2ViQ29yZTo6UmVuZGVyQm94OjpoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCBjb25z
dCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgoo
V2ViQ29yZTo6aGVpZ2h0Rm9yQ2hpbGQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjpPdmVycmlkaW5nU2l6ZXNTY29wZTo6T3ZlcnJp
ZGluZ1NpemVzU2NvcGUpOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnVzZWRDaGlsZE92
ZXJyaWRpbmdDcm9zc1NpemVGb3JQZXJjZW50YWdlUmVzb2x1dGlvbik6CihXZWJDb3JlOjpSZW5k
ZXJGbGV4aWJsZUJveDo6dXNlZENoaWxkT3ZlcnJpZGluZ01haW5TaXplRm9yUGVyY2VudGFnZVJl
c29sdXRpb24pOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmFwcGx5U3RyZXRjaEFsaWdu
bWVudFRvQ2hpbGQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoK
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OmxheW91dEdyaWQpOgooV2ViQ29yZTo6UmVuZGVyR3JpZDo6
bGF5b3V0TWFzb25yeSk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcDoKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpsYXlvdXQp
OgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgooV2Vi
Q29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93TG9naWNhbEhlaWdodCk6Ci0tLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAgIHwgOTIgKysrKysrKysr
Ky0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgICAgICAg
IHwgNTQgKysrKystLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCAg
ICAgICAgICB8ICAzICstCiAuLi4vcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eC5jcHAgfCAgNCArLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNw
cCAgIHwgMjEgKystLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCAg
ICAgICB8IDEwICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3Bw
ICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCAgICAg
IHwgMTEgKystCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCAg
fCAgMiArLQogOSBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAxMDIgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMGU2OTAw
MjY0NWIyLi42MzZjODJlZTdjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtMzE5Niw1MyArMzE5Niw1OSBAQCBib29sIFJlbmRlckJsb2NrOjpoYXNEZWZp
bml0ZUxvZ2ljYWxIZWlnaHQoKSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJl
bmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9u
KCkgY29uc3QKIHsKLSAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUhlaWdo
dDsKLSAgICAKICAgICAvLyBGb3IgYW5vbnltb3VzIGJsb2NrcyB0aGF0IGFyZSBza2lwcGVkIGR1
cmluZyBwZXJjZW50YWdlIGhlaWdodCBjYWxjdWxhdGlvbiwKICAgICAvLyB3ZSBjb25zaWRlciB0
aGVtIHRvIGhhdmUgYW4gaW5kZWZpbml0ZSBoZWlnaHQuCiAgICAgaWYgKHNraXBDb250YWluaW5n
QmxvY2tGb3JQZXJjZW50SGVpZ2h0Q2FsY3VsYXRpb24oKnRoaXMsIGZhbHNlKSkKLSAgICAgICAg
cmV0dXJuIGF2YWlsYWJsZUhlaWdodDsKLSAgICAKLSAgICBjb25zdCBhdXRvJiBzdHlsZVRvVXNl
ID0gc3R5bGUoKTsKLSAgICAKLSAgICAvLyBBIHBvc2l0aW9uZWQgZWxlbWVudCB0aGF0IHNwZWNp
ZmllZCBib3RoIHRvcC9ib3R0b20gb3IgdGhhdCBzcGVjaWZpZXMKLSAgICAvLyBoZWlnaHQgc2hv
dWxkIGJlIHRyZWF0ZWQgYXMgdGhvdWdoIGl0IGhhcyBhIGhlaWdodCBleHBsaWNpdGx5IHNwZWNp
ZmllZAotICAgIC8vIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGFueSBwZXJjZW50YWdlIGNvbXB1dGF0
aW9ucy4KLSAgICBib29sIGlzT3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQg
PSBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAoIXN0eWxlVG9Vc2UubG9naWNhbEhlaWdodCgp
LmlzQXV0bygpIHx8ICghc3R5bGVUb1VzZS5sb2dpY2FsVG9wKCkuaXNBdXRvKCkgJiYgIXN0eWxl
VG9Vc2UubG9naWNhbEJvdHRvbSgpLmlzQXV0bygpKSk7Ci0gICAgCi0gICAgYXV0byB1c2VkQ2hp
bGRPdmVycmlkaW5nTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uRm9yRmxleCA9
IGlzRmxleEl0ZW0oKSA/IGRvd25jYXN0PFJlbmRlckZsZXhpYmxlQm94PihwYXJlbnQoKSktPnVz
ZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZVJlc29sdXRpb24oKnRo
aXMpIDogc3RkOjpudWxsb3B0OwotICAgIGlmICh1c2VkQ2hpbGRPdmVycmlkaW5nTG9naWNhbEhl
aWdodEZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uRm9yRmxleCkKLSAgICAgICAgYXZhaWxhYmxlSGVp
Z2h0ID0gb3ZlcnJpZGluZ0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCp1c2VkQ2hpbGRPdmVycmlkaW5n
TG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uRm9yRmxleCk7Ci0gICAgZWxzZSBp
ZiAoaXNHcmlkSXRlbSgpICYmIGhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCi0gICAgICAg
IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdodChvdmVycmlk
aW5nTG9naWNhbEhlaWdodCgpKTsKLSAgICBlbHNlIGlmIChzdHlsZVRvVXNlLmxvZ2ljYWxIZWln
aHQoKS5pc0ZpeGVkKCkpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVpZ2h0ID0g
YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoKExheW91dFVuaXQpc3R5
bGVUb1VzZS5sb2dpY2FsSGVpZ2h0KCkudmFsdWUoKSk7Ci0gICAgICAgIGF2YWlsYWJsZUhlaWdo
dCA9IHN0ZDo6bWF4KDBfbHUsIGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5N
YXgoY29udGVudEJveEhlaWdodCAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwgc3RkOjpudWxs
b3B0KSk7Ci0gICAgfSBlbHNlIGlmIChzaG91bGRDb21wdXRlTG9naWNhbEhlaWdodEZyb21Bc3Bl
Y3RSYXRpbygpKSB7Ci0gICAgICAgIC8vIE9ubHkgZ3JpZCBpcyBleHBlY3RlZCB0byBiZSBpbiBh
IHN0YXRlIHdoZXJlIGl0IGlzIGNhbGN1bGF0aW5nIHByZWYgd2lkdGggYW5kIGhhdmluZyB1bmtu
b3duIGxvZ2ljYWwgd2lkdGguCi0gICAgICAgIGlmIChpc1JlbmRlckdyaWQoKSAmJiBwcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzRGlydHkoKSAmJiAhc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc1NwZWNp
ZmllZCgpKQotICAgICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUhlaWdodDsKLSAgICAgICAgYXZh
aWxhYmxlSGVpZ2h0ID0gYmxvY2tTaXplRnJvbUFzcGVjdFJhdGlvKGhvcml6b250YWxCb3JkZXJB
bmRQYWRkaW5nRXh0ZW50KCksIHZlcnRpY2FsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpLCBMYXlv
dXRVbml0KHN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCkpLCBzdHlsZSgpLmJveFNpemluZ0Zv
ckFzcGVjdFJhdGlvKCksIGxvZ2ljYWxXaWR0aCgpLCBzdHlsZSgpLmFzcGVjdFJhdGlvVHlwZSgp
LCBpc1JlbmRlclJlcGxhY2VkKCkpOwotICAgIH0gZWxzZSBpZiAoaXNPdXRPZkZsb3dQb3NpdGlv
bmVkV2l0aFNwZWNpZmllZEhlaWdodCkgewotICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRv
IGFmZmVjdCB0aGUgYmxvY2snIHNpemUoKSBtZW1iZXIgdmFyaWFibGUsIHNpbmNlIHRoaXMKLSAg
ICAgICAgLy8gY2FuIGdldCBjYWxsZWQgd2hpbGUgdGhlIGJsb2NrIGlzIHN0aWxsIGxheWluZyBv
dXQgaXRzIGtpZHMuCi0gICAgICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRl
ZFZhbHVlcyA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSwgMF9sdSk7Ci0g
ICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6bWF4KDBfbHUsIGNvbXB1dGVkVmFsdWVzLm1f
ZXh0ZW50IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIHNjcm9sbGJhckxvZ2lj
YWxIZWlnaHQoKSk7Ci0gICAgfSBlbHNlIGlmIChzdHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKS5p
c1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGhlaWdodFdpdGhTY3JvbGxiYXIgPSBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQo
c3R5bGVUb1VzZS5sb2dpY2FsSGVpZ2h0KCkpOwotICAgICAgICBpZiAoaGVpZ2h0V2l0aFNjcm9s
bGJhcikgewotICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVpZ2h0V2l0aFNjcm9s
bGJhciA9IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGhlaWdodFdp
dGhTY3JvbGxiYXIudmFsdWUoKSk7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGFkanVzdCBm
b3IgbWluL21heCBoZWlnaHQgYmVjYXVzZSB0aGlzIG1ldGhvZCBkb2VzIG5vdAotICAgICAgICAg
ICAgLy8gaGFuZGxlIHRoZSBtaW4vbWF4IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBpdHMgY2FsbGVy
IGRvZXMuIFNvIHRoZQotICAgICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGZyb20gdGhlIHJlY3Vy
c2l2ZSBjYWxsIHdpbGwgbm90IGhhdmUgYmVlbiBhZGp1c3RlZAotICAgICAgICAgICAgLy8geWV0
LgotICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVpZ2h0ID0gY29uc3RyYWluQ29u
dGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50Qm94SGVpZ2h0V2l0aFNjcm9sbGJh
ciAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwgc3RkOjpudWxsb3B0KTsKLSAgICAgICAgICAg
IGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6bWF4KDBfbHUsIGNvbnRlbnRCb3hIZWlnaHQpOworICAg
ICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBhdmFpbGFibGVIZWlnaHQgPSBbJl0oKSAtPiBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHsKKyAgICAgICAgYXV0byB1c2VkQ2hpbGRPdmVycmlk
aW5nTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uRm9yRmxleCA9IGlzRmxleEl0
ZW0oKSA/IGRvd25jYXN0PFJlbmRlckZsZXhpYmxlQm94PihwYXJlbnQoKSktPnVzZWRDaGlsZE92
ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZVJlc29sdXRpb24oKnRoaXMpIDogc3Rk
OjpudWxsb3B0OworICAgICAgICBpZiAodXNlZENoaWxkT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRG
b3JQZXJjZW50YWdlUmVzb2x1dGlvbkZvckZsZXgpCisgICAgICAgICAgICByZXR1cm4gb3ZlcnJp
ZGluZ0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCp1c2VkQ2hpbGRPdmVycmlkaW5nTG9naWNhbEhlaWdo
dEZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uRm9yRmxleCk7CisKKyAgICAgICAgYXV0byB1c2VkQ2hp
bGRPdmVycmlkaW5nTG9naWNhbEhlaWdodEZvckZvckdyaWQgPSBpc0dyaWRJdGVtKCkgPyBvdmVy
cmlkaW5nTG9naWNhbEhlaWdodCgpIDogc3RkOjpudWxsb3B0OworICAgICAgICBpZiAodXNlZENo
aWxkT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRGb3JGb3JHcmlkKQorICAgICAgICAgICAgcmV0dXJu
IG92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdodCgqdXNlZENoaWxkT3ZlcnJpZGluZ0xvZ2lj
YWxIZWlnaHRGb3JGb3JHcmlkKTsKKworICAgICAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxl
KCk7CisgICAgICAgIGlmIChzdHlsZS5sb2dpY2FsSGVpZ2h0KCkuaXNGaXhlZCgpKSB7CisgICAg
ICAgICAgICBhdXRvIGNvbnRlbnRCb3hIZWlnaHQgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhl
aWdodEZvckJveFNpemluZyhMYXlvdXRVbml0IHsgc3R5bGUubG9naWNhbEhlaWdodCgpLnZhbHVl
KCkgfSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgoMF9sdSwgY29uc3RyYWluQ29udGVu
dEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50Qm94SGVpZ2h0IC0gc2Nyb2xsYmFyTG9n
aWNhbEhlaWdodCgpLCB7IH0pKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaXNSZW5kZXJW
aWV3KCkpCi0gICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHZpZXcoKS5wYWdlT3JWaWV3TG9naWNh
bEhlaWdodCgpOwotICAgIAotICAgIHJldHVybiBhdmFpbGFibGVIZWlnaHQ7CisKKyAgICAgICAg
aWYgKHNob3VsZENvbXB1dGVMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvKCkpIHsKKyAgICAg
ICAgICAgIC8vIE9ubHkgZ3JpZCBpcyBleHBlY3RlZCB0byBiZSBpbiBhIHN0YXRlIHdoZXJlIGl0
IGlzIGNhbGN1bGF0aW5nIHByZWYgd2lkdGggYW5kIGhhdmluZyB1bmtub3duIGxvZ2ljYWwgd2lk
dGguCisgICAgICAgICAgICBpZiAoaXNSZW5kZXJHcmlkKCkgJiYgcHJlZmVycmVkTG9naWNhbFdp
ZHRoc0RpcnR5KCkgJiYgIXN0eWxlLmxvZ2ljYWxXaWR0aCgpLmlzU3BlY2lmaWVkKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIHJldHVybiBibG9ja1NpemVGcm9t
QXNwZWN0UmF0aW8oaG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSwgdmVydGljYWxC
b3JkZXJBbmRQYWRkaW5nRXh0ZW50KCksIExheW91dFVuaXQgeyBzdHlsZS5sb2dpY2FsQXNwZWN0
UmF0aW8oKSB9LCBzdHlsZS5ib3hTaXppbmdGb3JBc3BlY3RSYXRpbygpLCBsb2dpY2FsV2lkdGgo
KSwgc3R5bGUuYXNwZWN0UmF0aW9UeXBlKCksIGlzUmVuZGVyUmVwbGFjZWQoKSk7CisgICAgICAg
IH0KKworICAgICAgICAvLyBBIHBvc2l0aW9uZWQgZWxlbWVudCB0aGF0IHNwZWNpZmllZCBib3Ro
IHRvcC9ib3R0b20gb3IgdGhhdCBzcGVjaWZpZXMKKyAgICAgICAgLy8gaGVpZ2h0IHNob3VsZCBi
ZSB0cmVhdGVkIGFzIHRob3VnaCBpdCBoYXMgYSBoZWlnaHQgZXhwbGljaXRseSBzcGVjaWZpZWQK
KyAgICAgICAgLy8gdGhhdCBjYW4gYmUgdXNlZCBmb3IgYW55IHBlcmNlbnRhZ2UgY29tcHV0YXRp
b25zLgorICAgICAgICBhdXRvIGlzT3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWln
aHQgPSBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAoIXN0eWxlLmxvZ2ljYWxIZWlnaHQoKS5p
c0F1dG8oKSB8fCAoIXN0eWxlLmxvZ2ljYWxUb3AoKS5pc0F1dG8oKSAmJiAhc3R5bGUubG9naWNh
bEJvdHRvbSgpLmlzQXV0bygpKSk7CisgICAgICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWRX
aXRoU3BlY2lmaWVkSGVpZ2h0KSB7CisgICAgICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRv
IGFmZmVjdCB0aGUgYmxvY2snIHNpemUoKSBtZW1iZXIgdmFyaWFibGUsIHNpbmNlIHRoaXMKKyAg
ICAgICAgICAgIC8vIGNhbiBnZXQgY2FsbGVkIHdoaWxlIHRoZSBibG9jayBpcyBzdGlsbCBsYXlp
bmcgb3V0IGl0cyBraWRzLgorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KDBfbHUsIGNvbXB1
dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSwgMF9sdSkubV9leHRlbnQgLSBib3JkZXJB
bmRQYWRkaW5nTG9naWNhbEhlaWdodCgpIC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChzdHlsZS5sb2dpY2FsSGVpZ2h0KCkuaXNQZXJjZW50T3JD
YWxjdWxhdGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGhlaWdodFdpdGhTY3JvbGxiYXIg
PSBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGUubG9naWNhbEhlaWdodCgpKSkg
eworICAgICAgICAgICAgICAgIGF1dG8gY29udGVudEJveEhlaWdodFdpdGhTY3JvbGxiYXIgPSBh
ZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhoZWlnaHRXaXRoU2Nyb2xs
YmFyLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IGZvciBt
aW4vbWF4IGhlaWdodCBiZWNhdXNlIHRoaXMgbWV0aG9kIGRvZXMgbm90IGhhbmRsZSB0aGUgbWlu
L21heCBvZiB0aGUgY3VycmVudCBibG9jaywgaXRzIGNhbGxlciBkb2VzLgorICAgICAgICAgICAg
ICAgIC8vIFNvIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgcmVjdXJzaXZlIGNhbGwgd2lsbCBu
b3QgaGF2ZSBiZWVuIGFkanVzdGVkIHlldC4KKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YXgoMF9sdSwgY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50
Qm94SGVpZ2h0V2l0aFNjcm9sbGJhciAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwgeyB9KSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGlzUmVuZGVyVmlldygpKQorICAgICAgICAgICAgcmV0dXJuIHZpZXcoKS5wYWdl
T3JWaWV3TG9naWNhbEhlaWdodCgpOworCisgICAgICAgIHJldHVybiB7IH07CisgICAgfTsKKyAg
ICByZXR1cm4gYXZhaWxhYmxlSGVpZ2h0KCk7CiB9CiAgICAgCiB2b2lkIFJlbmRlckJsb2NrOjps
YXlvdXRFeGNsdWRlZENoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNTkyNjdlN2ZlZjE4Li5hM2VjZWIzOGMwODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMjcxLDExICsxMjcx
LDYgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6Om1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoOwogfQogCi1ib29sIFJl
bmRlckJveDo6aGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSBjb25zdAotewotICAgIHJldHVy
biBnT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRNYXAgJiYgZ092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0
TWFwLT5jb250YWlucygqdGhpcyk7Ci19Ci0KIGJvb2wgUmVuZGVyQm94OjpoYXNPdmVycmlkaW5n
TG9naWNhbFdpZHRoKCkgY29uc3QKIHsKICAgICByZXR1cm4gZ092ZXJyaWRpbmdMb2dpY2FsV2lk
dGhNYXAgJiYgZ092ZXJyaWRpbmdMb2dpY2FsV2lkdGhNYXAtPmNvbnRhaW5zKCp0aGlzKTsKQEAg
LTEzMTksMTAgKzEzMTQsMTIgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6Om92ZXJyaWRpbmdMb2dp
Y2FsV2lkdGgoKSBjb25zdAogICAgIHJldHVybiBnT3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aE1hcC0+
Z2V0KCp0aGlzKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6Om92ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94OjpvdmVy
cmlkaW5nTG9naWNhbEhlaWdodCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc092ZXJyaWRpbmdM
b2dpY2FsSGVpZ2h0KCkpOwotICAgIHJldHVybiBnT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRNYXAt
PmdldCgqdGhpcyk7CisgICAgaWYgKCFnT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRNYXApCisgICAg
ICAgIHJldHVybiB7IH07CisgICAgYXV0byBpdGVyYXRvciA9IGdPdmVycmlkaW5nTG9naWNhbEhl
aWdodE1hcC0+ZmluZCgqdGhpcyk7CisgICAgcmV0dXJuIGl0ZXJhdG9yICE9IGdPdmVycmlkaW5n
TG9naWNhbEhlaWdodE1hcC0+ZW5kKCkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoaXRlcmF0b3ItPnZh
bHVlKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJCb3g6Om92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50V2lkdGgoKSBjb25zdApAQCAt
MjM2OCwyNCArMjM2NSwyNCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6cGVycGVuZGljdWxhckNv
bnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGhl
aWdodC52YWx1ZSgpOwogICAgIH0KIAotICAgIFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdC
bG9jaygpOwotICAgIGlmIChjYi0+aGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSkKLSAgICAg
ICAgcmV0dXJuIGNiLT5vdmVycmlkaW5nQ29udGVudExvZ2ljYWxIZWlnaHQob3ZlcnJpZGluZ0xv
Z2ljYWxIZWlnaHQoKSk7CisgICAgYXV0byogY29udGFpbmluZ0Jsb2NrID0gdGhpcy0+Y29udGFp
bmluZ0Jsb2NrKCk7CisgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQgPSB0aGlz
LT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQorICAgICAgICByZXR1cm4gY29udGFpbmluZ0Js
b2NrLT5vdmVycmlkaW5nQ29udGVudExvZ2ljYWxIZWlnaHQoKm92ZXJyaWRpbmdMb2dpY2FsSGVp
Z2h0KTsKIAotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjb250YWluaW5nQmxvY2tTdHlsZSA9IGNi
LT5zdHlsZSgpOworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjb250YWluaW5nQmxvY2tTdHlsZSA9
IGNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKTsKICAgICBMZW5ndGggbG9naWNhbEhlaWdodExlbmd0
aCA9IGNvbnRhaW5pbmdCbG9ja1N0eWxlLmxvZ2ljYWxIZWlnaHQoKTsKIAogICAgIC8vIEZJWE1F
OiBGb3Igbm93IGp1c3Qgc3VwcG9ydCBmaXhlZCBoZWlnaHRzLiAgRXZlbnR1YWxseSBzaG91bGQg
c3VwcG9ydCBwZXJjZW50YWdlIGhlaWdodHMgYXMgd2VsbC4KICAgICBpZiAoIWxvZ2ljYWxIZWln
aHRMZW5ndGguaXNGaXhlZCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgZmlsbEZhbGxiYWNrRXh0
ZW50ID0gY29udGFpbmluZ0Jsb2NrU3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHZp
ZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRTaXplKCkuaGVpZ2h0KCkgOiB2aWV3KCkuZnJhbWVWaWV3
KCkubGF5b3V0U2l6ZSgpLndpZHRoKCk7Ci0gICAgICAgIExheW91dFVuaXQgZmlsbEF2YWlsYWJs
ZUV4dGVudCA9IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEV4Y2x1
ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKTsKKyAgICAgICAgTGF5b3V0VW5pdCBmaWxsQXZhaWxhYmxl
RXh0ZW50ID0gY29udGFpbmluZ0Jsb2NrLT5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEV4Y2x1ZGVN
YXJnaW5Cb3JkZXJQYWRkaW5nKTsKICAgICAgICAgdmlldygpLmFkZFBlcmNlbnRIZWlnaHREZXNj
ZW5kYW50KGNvbnN0X2Nhc3Q8UmVuZGVyQm94Jj4oKnRoaXMpKTsKICAgICAgICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgyODYgV2UgYWxzbyBu
ZWVkIHRvIHBlcmZvcm0gdGhlIHNhbWUgcGVyY2VudEhlaWdodERlc2NlbmRhbnQgdHJlYXRtZW50
IHRvIHRoZSBlbGVtZW50IHdoaWNoIGRpY3RhdGVzIHRoZSByZXR1cm4gdmFsdWUgZm9yIGNvbnRh
aW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0KCkgYWJvdmUuCiAgICAgICAgIHJl
dHVybiBzdGQ6Om1pbihmaWxsQXZhaWxhYmxlRXh0ZW50LCBmaWxsRmFsbGJhY2tFeHRlbnQpOwog
ICAgIH0KIAogICAgIC8vIFVzZSB0aGUgY29udGVudCBib3ggbG9naWNhbCBoZWlnaHQgYXMgc3Bl
Y2lmaWVkIGJ5IHRoZSBzdHlsZS4KLSAgICByZXR1cm4gY2ItPmFkanVzdENvbnRlbnRCb3hMb2dp
Y2FsSGVpZ2h0Rm9yQm94U2l6aW5nKExheW91dFVuaXQobG9naWNhbEhlaWdodExlbmd0aC52YWx1
ZSgpKSk7CisgICAgcmV0dXJuIGNvbnRhaW5pbmdCbG9jay0+YWRqdXN0Q29udGVudEJveExvZ2lj
YWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdChsb2dpY2FsSGVpZ2h0TGVuZ3RoLnZhbHVl
KCkpKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0
cmFuc2Zvcm1TdGF0ZSwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4gbW9kZSwgYm9vbCog
d2FzRml4ZWQpIGNvbnN0CkBAIC0zMTM0LDcgKzMxMzEsNyBAQCB2b2lkIFJlbmRlckJveDo6Y2Fj
aGVJbnRyaW5zaWNDb250ZW50TG9naWNhbEhlaWdodEZvckZsZXhJdGVtKExheW91dFVuaXQgaGVp
Z2h0KQogICAgIENoZWNrZWRQdHIgZmxleGlibGVCb3ggPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVy
RmxleGlibGVCb3g+KHBhcmVudCgpKTsKICAgICBpZiAoIWZsZXhpYmxlQm94KQogICAgICAgICBy
ZXR1cm47Ci0gICAgaWYgKGhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgfHwgc2hvdWxkQ29t
cHV0ZUxvZ2ljYWxIZWlnaHRGcm9tQXNwZWN0UmF0aW8oKSkKKyAgICBpZiAob3ZlcnJpZGluZ0xv
Z2ljYWxIZWlnaHQoKSB8fCBzaG91bGRDb21wdXRlTG9naWNhbEhlaWdodEZyb21Bc3BlY3RSYXRp
bygpKQogICAgICAgICByZXR1cm47CiAgICAgZmxleGlibGVCb3gtPnNldENhY2hlZENoaWxkSW50
cmluc2ljQ29udGVudExvZ2ljYWxIZWlnaHQoKnRoaXMsIGhlaWdodCk7CiB9CkBAIC0zMjIwLDkg
KzMyMTcsOSBAQCBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBSZW5kZXJC
b3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaQogICAgICAgICAvLyBncmFiIG91ciBj
YWNoZWQgZmxleGlibGUgaGVpZ2h0LgogICAgICAgICAvLyBGSVhNRTogQWNjb3VudCBmb3IgYmxv
Y2stZmxvdyBpbiBmbGV4aWJsZSBib3hlcy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NDE4Ci0gICAgICAgIGlmIChoYXNPdmVycmlkaW5nTG9n
aWNhbEhlaWdodCgpICYmIChwYXJlbnQoKS0+aXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0
ZWQoKSB8fCBwYXJlbnQoKS0+aXNSZW5kZXJHcmlkKCkpKSB7Ci0gICAgICAgICAgICBoID0gTGVu
Z3RoKG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCksIExlbmd0aFR5cGU6OkZpeGVkKTsKLSAgICAg
ICAgfSBlbHNlIGlmICh0cmVhdEFzUmVwbGFjZWQpCisgICAgICAgIGlmIChhdXRvIG92ZXJyaWRp
bmdMb2dpY2FsSGVpZ2h0Rm9yRmxleE9yR3JpZCA9IChwYXJlbnQoKS0+aXNGbGV4aWJsZUJveElu
Y2x1ZGluZ0RlcHJlY2F0ZWQoKSB8fCBwYXJlbnQoKS0+aXNSZW5kZXJHcmlkKCkgPyBvdmVycmlk
aW5nTG9naWNhbEhlaWdodCgpIDogc3RkOjpudWxsb3B0KSkKKyAgICAgICAgICAgIGggPSBMZW5n
dGgoKm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yRmxleE9yR3JpZCwgTGVuZ3RoVHlwZTo6Rml4
ZWQpOworICAgICAgICBlbHNlIGlmICh0cmVhdEFzUmVwbGFjZWQpCiAgICAgICAgICAgICBoID0g
TGVuZ3RoKGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoKSArIGJvcmRlckFuZFBhZGRpbmdM
b2dpY2FsSGVpZ2h0KCksIExlbmd0aFR5cGU6OkZpeGVkKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBoID0gbG9naWNhbEhlaWdodEluVXNlOwpAQCAtMzQ1MiwxMCArMzQ0OSwxMCBAQCBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dp
Y2FsSGVpZ2h0KGNvbnN0IExlbmd0aAogICAgICAgICAgICAgLy8gVGFibGUgY2VsbHMgdmlvbGF0
ZSB3aGF0IHRoZSBDU1Mgc3BlYyBzYXlzIHRvIGRvIHdpdGggaGVpZ2h0cy4gQmFzaWNhbGx5IHdl
CiAgICAgICAgICAgICAvLyBkb24ndCBjYXJlIGlmIHRoZSBjZWxsIHNwZWNpZmllZCBhIGhlaWdo
dCBvciBub3QuIFdlIGp1c3QgYWx3YXlzIG1ha2Ugb3Vyc2VsdmVzCiAgICAgICAgICAgICAvLyBi
ZSBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNlbGwncyBjdXJyZW50IGNvbnRlbnQgaGVpZ2h0LgotICAg
ICAgICAgICAgaWYgKCFjYi0+aGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSkKKyAgICAgICAg
ICAgIGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQgPSBjYi0+b3ZlcnJpZGluZ0xvZ2ljYWxI
ZWlnaHQoKTsKKyAgICAgICAgICAgIGlmICghb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbFNob3VsZEhhdmVaZXJvSW5pdGlhbFNpemUoKmNi
LCAqdGhpcywgc2Nyb2xsc092ZXJmbG93WSgpKSA/IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4o
MCkgOiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGNiLT5v
dmVycmlkaW5nTG9naWNhbEhlaWdodCgpIC0gY2ItPmNvbXB1dGVkQ1NTUGFkZGluZ0JlZm9yZSgp
IC0gY2ItPmNvbXB1dGVkQ1NTUGFkZGluZ0FmdGVyKCkgLSBjYi0+Ym9yZGVyQmVmb3JlKCkgLSBj
Yi0+Ym9yZGVyQWZ0ZXIoKSAtIGNiLT5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAg
ICAgICBhdmFpbGFibGVIZWlnaHQgPSAqb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQgLSBjYi0+Y29t
cHV0ZWRDU1NQYWRkaW5nQmVmb3JlKCkgLSBjYi0+Y29tcHV0ZWRDU1NQYWRkaW5nQWZ0ZXIoKSAt
IGNiLT5ib3JkZXJCZWZvcmUoKSAtIGNiLT5ib3JkZXJBZnRlcigpIC0gY2ItPnNjcm9sbGJhckxv
Z2ljYWxIZWlnaHQoKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBhdmFpbGFibGVI
ZWlnaHQgPSBjYi0+YXZhaWxhYmxlTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VDb21wdXRhdGlv
bigpOwpAQCAtMzQ3MSw3ICszNDY4LDcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgKICAgICAv
LyB0aGVuIHdlIG11c3Qgc3VidHJhY3QgdGhlIGJvcmRlciBhbmQgcGFkZGluZyBmcm9tIHRoZSBj
ZWxsJ3MKICAgICAvLyB8YXZhaWxhYmxlSGVpZ2h0fCAoZ2l2ZW4gYnkgfG92ZXJyaWRpbmdMb2dp
Y2FsSGVpZ2h0fCkgdG8gYXJyaXZlCiAgICAgLy8gYXQgdGhlIGNoaWxkJ3MgY29tcHV0ZWQgaGVp
Z2h0LgotICAgIGJvb2wgc3VidHJhY3RCb3JkZXJBbmRQYWRkaW5nID0gaXNSZW5kZXJUYWJsZSgp
IHx8IChpczxSZW5kZXJUYWJsZUNlbGw+KCpjYikgJiYgIXNraXBwZWRBdXRvSGVpZ2h0Q29udGFp
bmluZ0Jsb2NrICYmIGNiLT5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpICYmIHN0eWxlKCku
Ym94U2l6aW5nKCkgPT0gQm94U2l6aW5nOjpDb250ZW50Qm94KTsKKyAgICBib29sIHN1YnRyYWN0
Qm9yZGVyQW5kUGFkZGluZyA9IGlzUmVuZGVyVGFibGUoKSB8fCAoaXM8UmVuZGVyVGFibGVDZWxs
PigqY2IpICYmICFza2lwcGVkQXV0b0hlaWdodENvbnRhaW5pbmdCbG9jayAmJiBjYi0+b3ZlcnJp
ZGluZ0xvZ2ljYWxIZWlnaHQoKSAmJiBzdHlsZSgpLmJveFNpemluZygpID09IEJveFNpemluZzo6
Q29udGVudEJveCk7CiAgICAgaWYgKHN1YnRyYWN0Qm9yZGVyQW5kUGFkZGluZykgewogICAgICAg
ICByZXN1bHQgLT0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgcmV0
dXJuIHN0ZDo6bWF4KDBfbHUsIHJlc3VsdCk7CkBAIC0zNjU4LDExICszNjU1LDEwIEBAIExheW91
dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5
cGUgaGVpZ2h0VHlwZSwgTGVuCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gc3Ry
ZXRjaGVkSGVpZ2h0OwogICAgICAgICBpZiAoYXV0byogYmxvY2sgPSBkeW5hbWljRG93bmNhc3Q8
UmVuZGVyQmxvY2s+KGNvbnRhaW5lcikpIHsKICAgICAgICAgICAgIGJsb2NrLT5hZGRQZXJjZW50
SGVpZ2h0RGVzY2VuZGFudCgqY29uc3RfY2FzdDxSZW5kZXJCb3gqPih0aGlzKSk7Ci0gICAgICAg
ICAgICBhdXRvIHVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZVJl
c29sdXRpb25Gb3JGbGV4ID0gYmxvY2stPmlzRmxleEl0ZW0oKSA/IGRvd25jYXN0PFJlbmRlckZs
ZXhpYmxlQm94PihibG9jay0+cGFyZW50KCkpLT51c2VkQ2hpbGRPdmVycmlkaW5nTG9naWNhbEhl
aWdodEZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uKCpibG9jaykgOiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgICAgICBpZiAodXNlZENoaWxkT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdl
UmVzb2x1dGlvbkZvckZsZXgpCisgICAgICAgICAgICBpZiAoYXV0byB1c2VkQ2hpbGRPdmVycmlk
aW5nTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uRm9yRmxleCA9IChibG9jay0+
aXNGbGV4SXRlbSgpID8gZG93bmNhc3Q8UmVuZGVyRmxleGlibGVCb3g+KGJsb2NrLT5wYXJlbnQo
KSktPnVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZVJlc29sdXRp
b24oKmJsb2NrKSA6IHN0ZDo6bnVsbG9wdCkpCiAgICAgICAgICAgICAgICAgc3RyZXRjaGVkSGVp
Z2h0ID0gYmxvY2stPm92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdodCgqdXNlZENoaWxkT3Zl
cnJpZGluZ0xvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlUmVzb2x1dGlvbkZvckZsZXgpOwotICAg
ICAgICAgICAgZWxzZSBpZiAoYmxvY2stPmlzR3JpZEl0ZW0oKSAmJiBibG9jay0+aGFzT3ZlcnJp
ZGluZ0xvZ2ljYWxIZWlnaHQoKSAmJiAhaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jaykK
LSAgICAgICAgICAgICAgICBzdHJldGNoZWRIZWlnaHQgPSBibG9jay0+b3ZlcnJpZGluZ0NvbnRl
bnRMb2dpY2FsSGVpZ2h0KG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICAgICAg
ZWxzZSBpZiAoYXV0byB1c2VkQ2hpbGRPdmVycmlkaW5nTG9naWNhbEhlaWdodEZvckdyaWQgPSAo
YmxvY2stPmlzR3JpZEl0ZW0oKSAmJiAhaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jayA/
IGJsb2NrLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIDogc3RkOjpudWxsb3B0KSkKKyAgICAg
ICAgICAgICAgICBzdHJldGNoZWRIZWlnaHQgPSBibG9jay0+b3ZlcnJpZGluZ0NvbnRlbnRMb2dp
Y2FsSGVpZ2h0KCp1c2VkQ2hpbGRPdmVycmlkaW5nTG9naWNhbEhlaWdodEZvckdyaWQpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FsY3VsYXRpb24gaXMgbm90IHBhdGNo
ZWQgZm9yIGJsb2NrLWZsb3cgeWV0LgpAQCAtMzcyMyw4ICszNzE5LDggQEAgTGF5b3V0VW5pdCBS
ZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyhjb25zdCBMZW5ndGgmIGgsIEF2
YWlsYWJsZUxvZ2kKICAgICAvLyBhcnRpZmljaWFsbHkuICBXZSdyZSBnb2luZyB0byByZWx5IG9u
IHRoaXMgY2VsbCBnZXR0aW5nIGV4cGFuZGVkIHRvIHNvbWUgbmV3CiAgICAgLy8gaGVpZ2h0LCBh
bmQgdGhlbiB3aGVuIHdlIGxheSBvdXQgYWdhaW4gd2UnbGwgdXNlIHRoZSBjYWxjdWxhdGlvbiBi
ZWxvdy4KICAgICBpZiAoaXNSZW5kZXJUYWJsZUNlbGwoKSAmJiAoaC5pc0F1dG8oKSB8fCBoLmlz
UGVyY2VudE9yQ2FsY3VsYXRlZCgpKSkgewotICAgICAgICBpZiAoaGFzT3ZlcnJpZGluZ0xvZ2lj
YWxIZWlnaHQoKSkKLSAgICAgICAgICAgIHJldHVybiBvdmVycmlkaW5nTG9naWNhbEhlaWdodCgp
IC0gY29tcHV0ZWRDU1NQYWRkaW5nQmVmb3JlKCkgLSBjb21wdXRlZENTU1BhZGRpbmdBZnRlcigp
IC0gYm9yZGVyQmVmb3JlKCkgLSBib3JkZXJBZnRlcigpIC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdo
dCgpOworICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdodCA9IHRoaXMtPm92
ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCisgICAgICAgICAgICByZXR1cm4gKm92ZXJyaWRpbmdM
b2dpY2FsSGVpZ2h0IC0gY29tcHV0ZWRDU1NQYWRkaW5nQmVmb3JlKCkgLSBjb21wdXRlZENTU1Bh
ZGRpbmdBZnRlcigpIC0gYm9yZGVyQmVmb3JlKCkgLSBib3JkZXJBZnRlcigpIC0gc2Nyb2xsYmFy
TG9naWNhbEhlaWdodCgpOwogICAgICAgICByZXR1cm4gbG9naWNhbEhlaWdodCgpIC0gYm9yZGVy
QW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsKICAgICB9CiAKQEAgLTU2MDIsNyArNTU5OCw3IEBA
IGJvb2wgUmVuZGVyQm94OjpzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlv
KCkgY29uc3QKICAgICBhdXRvIGlzUmVzb2x2YWJsZVBlcmNlbnRhZ2VIZWlnaHQgPSBbJl0gewog
ICAgICAgICByZXR1cm4gc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNQZXJjZW50T3JDYWxjdWxh
dGVkKCkgJiYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IHBlcmNlbnRhZ2VMb2dpY2FsSGVp
Z2h0SXNSZXNvbHZhYmxlKCkpOwogICAgIH07Ci0gICAgcmV0dXJuIGhhc092ZXJyaWRpbmdMb2dp
Y2FsSGVpZ2h0KCkgfHwgc2hvdWxkQ29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpb0Fu
ZEluc2V0cygqdGhpcykgfHwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNGaXhlZCgpIHx8IGlz
UmVzb2x2YWJsZVBlcmNlbnRhZ2VIZWlnaHQoKTsKKyAgICByZXR1cm4gb3ZlcnJpZGluZ0xvZ2lj
YWxIZWlnaHQoKSB8fCBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvQW5k
SW5zZXRzKCp0aGlzKSB8fCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0ZpeGVkKCkgfHwgaXNS
ZXNvbHZhYmxlUGVyY2VudGFnZUhlaWdodCgpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveDo6
Y29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpb0ludGVybmFsKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCAzZjJiYjc3N2Q1MDguLjhjNmY1YjY1Y2Ri
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMjgxLDggKzI4MSw3IEBA
IHB1YmxpYzoKICAgICBMYXlvdXRVbml0IG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5pdCBvdmVycmlkaW5nTG9naWNhbFdpZHRoKCkgY29u
c3Q7Ci0gICAgTGF5b3V0VW5pdCBvdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIGNvbnN0OwotICAg
IGJvb2wgaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CiAgICAgYm9v
bCBoYXNPdmVycmlkaW5nTG9naWNhbFdpZHRoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRPdmVycmlk
aW5nTG9naWNhbEhlaWdodChMYXlvdXRVbml0KTsKICAgICB2b2lkIHNldE92ZXJyaWRpbmdMb2dp
Y2FsV2lkdGgoTGF5b3V0VW5pdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IDIxNTI2ZWQyNWNlNC4u
NGJmYzc1NjlhYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtMTY4LDggKzE2OCw4IEBAIHN0YXRp
YyBMYXlvdXRVbml0IHdpZHRoRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkKIAogc3RhdGljIExh
eW91dFVuaXQgaGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkKIHsKLSAgICBpZiAoY2hp
bGQtPmhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCi0gICAgICAgIHJldHVybiBjaGlsZC0+
b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKTsKKyAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNh
bEhlaWdodCA9IGNoaWxkLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQorICAgICAgICByZXR1
cm4gKm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0OwogICAgIHJldHVybiBjaGlsZC0+bG9naWNhbEhl
aWdodCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcAppbmRleCBjZTljMzQ4NTA5MjUuLjdkZmJhYTJlMjM4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0yMTQsOCArMjE0LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgU0VUX09SX0NMRUFSX09WRVJSSURJTkdfU0laRShtX2Jv
eCwgV2lkdGgsIHNpemUpOwogICAgICAgICB9CiAgICAgICAgIGlmIChheGlzID09IEF4aXM6OkJv
dGggfHwgYXhpcyA9PSBBeGlzOjpCbG9jaykgewotICAgICAgICAgICAgaWYgKGJveC5oYXNPdmVy
cmlkaW5nTG9naWNhbEhlaWdodCgpKQotICAgICAgICAgICAgICAgIG1fb3ZlcnJpZGluZ0hlaWdo
dCA9IGJveC5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpOworICAgICAgICAgICAgbV9vdmVycmlk
aW5nSGVpZ2h0ID0gYm94Lm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICBT
RVRfT1JfQ0xFQVJfT1ZFUlJJRElOR19TSVpFKG1fYm94LCBIZWlnaHQsIHNpemUpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTYyMiwxMCArMTYyMSw3IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gUmVuZGVyRmxleGlibGVCb3g6OnVzZWRDaGlsZE92ZXJyaWRpbmdDcm9zc1NpemVGb3JQZXJj
CiAgICAgQVNTRVJUKG1haW5BeGlzSXNDaGlsZElubGluZUF4aXMoY2hpbGQpKTsKICAgICBpZiAo
YWxpZ25tZW50Rm9yQ2hpbGQoY2hpbGQpICE9IEl0ZW1Qb3NpdGlvbjo6U3RyZXRjaCkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLQotICAgIGlmIChjaGlsZC5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdo
dCgpKQotICAgICAgICByZXR1cm4gY2hpbGQub3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKTsKLSAg
ICByZXR1cm4geyB9OworICAgIHJldHVybiBjaGlsZC5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgp
OwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBvbmx5IGNhbGxlZCB3aGVuZXZlciBhIGRlc2NlbmRh
bnQgb2YgYSBmbGV4IGl0ZW0gd2FudHMgdG8gcmVzb2x2ZSBhIHBlcmNlbnRhZ2UgaW4gaXRzCkBA
IC0xNjM5LDExICsxNjM1LDggQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4
aWJsZUJveDo6dXNlZENoaWxkT3ZlcnJpZGluZ01haW5TaXplRm9yUGVyY2UKICAgICBBU1NFUlQo
IW1haW5BeGlzSXNDaGlsZElubGluZUF4aXMoY2hpbGQpKTsKIAogICAgIC8vIFRoZSBtYWluIHNp
emUgb2YgYSBmdWxseSBpbmZsZXhpYmxlIGl0ZW0gd2l0aCBhIGRlZmluaXRlIGZsZXggYmFzaXMg
aXMsIGJ5IGRlZmluaXRpb24sIGRlZmluaXRlLgotICAgIGlmIChjaGlsZC5zdHlsZSgpLmZsZXhH
cm93KCkgPT0gMC4wICYmIGNoaWxkLnN0eWxlKCkuZmxleFNocmluaygpID09IDAuMCAmJiBjaGls
ZE1haW5TaXplSXNEZWZpbml0ZShjaGlsZCwgZmxleEJhc2lzRm9yQ2hpbGQoY2hpbGQpKSkgewot
ICAgICAgICBpZiAoY2hpbGQuaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBjaGlsZC5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpOwotICAgICAgICByZXR1
cm4geyB9OwotICAgIH0KKyAgICBpZiAoY2hpbGQuc3R5bGUoKS5mbGV4R3JvdygpID09IDAuMCAm
JiBjaGlsZC5zdHlsZSgpLmZsZXhTaHJpbmsoKSA9PSAwLjAgJiYgY2hpbGRNYWluU2l6ZUlzRGVm
aW5pdGUoY2hpbGQsIGZsZXhCYXNpc0ZvckNoaWxkKGNoaWxkKSkpCisgICAgICAgIHJldHVybiBj
aGlsZC5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBp
bXBsZW1lbnRzIHNlY3Rpb24gOS44LiBEZWZpbml0ZSBhbmQgSW5kZWZpbml0ZSBTaXplcywgY2Fz
ZSAyKSBvZiB0aGUgZmxleGJveCBzcGVjLgogICAgIC8vIElmIHRoZSBmbGV4IGNvbnRhaW5lciBo
YXMgYSBkZWZpbml0ZSBtYWluIHNpemUgdGhlIGZsZXggaXRlbSBwb3N0LWZsZXhpbmcgbWFpbiBz
aXplIGlzIGFsc28gdHJlYXRlZApAQCAtMTY1MSw5ICsxNjQ0LDcgQEAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6dXNlZENoaWxkT3ZlcnJpZGluZ01haW5TaXpl
Rm9yUGVyY2UKICAgICBpZiAoIWNhbkNvbXB1dGVQZXJjZW50YWdlRmxleEJhc2lzKGNoaWxkLCBM
ZW5ndGgoMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIFVwZGF0ZVBlcmNlbnRhZ2VIZWlnaHREZXNj
ZW5kYW50czo6WWVzKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmIChjaGlsZC5oYXNP
dmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQotICAgICAgICByZXR1cm4gY2hpbGQub3ZlcnJpZGlu
Z0xvZ2ljYWxIZWlnaHQoKTsKLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBjaGlsZC5vdmVy
cmlkaW5nTG9naWNhbEhlaWdodCgpOwogfQogCiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJl
bmRlckZsZXhpYmxlQm94Ojp1c2VkQ2hpbGRPdmVycmlkaW5nTG9naWNhbEhlaWdodEZvclBlcmNl
bnRhZ2VSZXNvbHV0aW9uKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCkBAIC0yNTMzLDcgKzI1MjQs
NyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjphcHBseVN0cmV0Y2hBbGlnbm1lbnRUb0NoaWxk
KFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaQogICAgICAgICAgICAgLy8gU28sIHJlZG8gaXQg
aGVyZS4KICAgICAgICAgICAgIGNoaWxkTmVlZHNSZWxheW91dCA9IHRydWU7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKGNoaWxkTmVlZHNSZWxheW91dCB8fCAhY2hpbGQuaGFzT3ZlcnJpZGluZ0xv
Z2ljYWxIZWlnaHQoKSkKKyAgICAgICAgaWYgKGNoaWxkTmVlZHNSZWxheW91dCB8fCAhY2hpbGQu
b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAgICAgIGNoaWxkLnNldE92ZXJyaWRp
bmdMb2dpY2FsSGVpZ2h0KGRlc2lyZWRMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgaWYgKGNoaWxk
TmVlZHNSZWxheW91dCkgewogICAgICAgICAgICAgU2V0Rm9yU2NvcGUgcmVzZXRDaGlsZExvZ2lj
YWxIZWlnaHQobV9zaG91bGRSZXNldENoaWxkTG9naWNhbEhlaWdodEJlZm9yZUxheW91dCwgdHJ1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggMDQzZjQ4ZDYz
YTM3Li40NzJhYjk5MzhlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHAKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWQoYm9vbCBy
ZWxheW91dENoaWxkcmVuKQogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBSZW5kZXJC
bG9jazo6aGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0KCkgb25seSBidXQgaXQgZG9lcyBub3Qgd29y
ayBmb3IgcG9zaXRpb25lZCBzdHVmZi4KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGNhY2hp
bmcgdGhlIGhhc0RlZmluaXRlTG9naWNhbEhlaWdodCB2YWx1ZSB0aHJvdWdob3V0IHRoZSBsYXlv
dXQuCiAgICAgICAgIC8vIEZJWE1FOiBXZSBtaWdodCBuZWVkIHRvIGNhY2hlIHRoZSBoYXNEZWZp
bml0ZUxvZ2ljYWxIZWlnaHQgaWYgdGhlIGNhbGwgb2YgUmVuZGVyQmxvY2s6Omhhc0RlZmluaXRl
TG9naWNhbEhlaWdodCgpIGNhdXNlcyBhIHJlbGV2YW50IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24u
Ci0gICAgICAgIGJvb2wgaGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0ID0gUmVuZGVyQmxvY2s6Omhh
c0RlZmluaXRlTG9naWNhbEhlaWdodCgpIHx8IGhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkg
fHwgY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxl
KCkubG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBib29sIGhhc0RlZmlu
aXRlTG9naWNhbEhlaWdodCA9IFJlbmRlckJsb2NrOjpoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQo
KSB8fCBvdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIHx8IGNvbXB1dGVDb250ZW50TG9naWNhbEhl
aWdodChNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgc3RkOjpu
dWxsb3B0KTsKIAogICAgICAgICBhdXRvIGFzcGVjdFJhdGlvQmxvY2tTaXplRGVwZW5kZW50R3Jp
ZEl0ZW1zID0gY29tcHV0ZUFzcGVjdFJhdGlvRGVwZW5kZW50QW5kQmFzZWxpbmVJdGVtcygpOwog
CkBAIC0zNDIsOSArMzQyLDkgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRHcmlkKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbikKICAgICAgICAgICAgICAgICBzaG91bGRSZWNvbXB1dGVIZWlnaHQgPSB0
cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYXV0byBhdmFpbGFibGVMb2dpY2Fs
SGVpZ2h0Rm9yQ29udGVudEJveCA9IFsmXSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFoYXNPdmVy
cmlkaW5nTG9naWNhbEhlaWdodCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXZhaWxh
YmxlTG9naWNhbEhlaWdodChFeGNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgob3Zl
cnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCks
IHsgfSk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQg
PSB0aGlzLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heCgqb3ZlcnJpZGlu
Z0xvZ2ljYWxIZWlnaHQgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpLCB7IH0pOwor
ICAgICAgICAgICAgICAgIHJldHVybiBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEV4Y2x1ZGVNYXJn
aW5Cb3JkZXJQYWRkaW5nKTsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBjb21wdXRlVHJh
Y2tTaXplc0ZvckRlZmluaXRlU2l6ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb246OkZvclJvd3Ms
IGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRGb3JDb250ZW50Qm94KCkpOwogICAgICAgICB9CkBAIC00
MzQsNyArNDM0LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRNYXNvbnJ5KGJvb2wgcmVsYXlv
dXRDaGlsZHJlbikKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgUmVuZGVyQmxvY2s6
Omhhc0RlZmluaXRlTG9naWNhbEhlaWdodCgpIG9ubHkgYnV0IGl0IGRvZXMgbm90IHdvcmsgZm9y
IHBvc2l0aW9uZWQgc3R1ZmYuCiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBjYWNoaW5nIHRo
ZSBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQgdmFsdWUgdGhyb3VnaG91dCB0aGUgbGF5b3V0Lgog
ICAgICAgICAvLyBGSVhNRTogV2UgbWlnaHQgbmVlZCB0byBjYWNoZSB0aGUgaGFzRGVmaW5pdGVM
b2dpY2FsSGVpZ2h0IGlmIHRoZSBjYWxsIG9mIFJlbmRlckJsb2NrOjpoYXNEZWZpbml0ZUxvZ2lj
YWxIZWlnaHQoKSBjYXVzZXMgYSByZWxldmFudCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLgotICAg
ICAgICBib29sIGhhc0RlZmluaXRlTG9naWNhbEhlaWdodCA9IFJlbmRlckJsb2NrOjpoYXNEZWZp
bml0ZUxvZ2ljYWxIZWlnaHQoKSB8fCBoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIHx8IGNv
bXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxv
Z2ljYWxIZWlnaHQoKSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgYm9vbCBoYXNEZWZpbml0ZUxv
Z2ljYWxIZWlnaHQgPSBSZW5kZXJCbG9jazo6aGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0KCkgfHwg
b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSB8fCBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQo
TWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIHN0ZDo6bnVsbG9w
dCk7CiAKICAgICAgICAgYXV0byBhc3BlY3RSYXRpb0Jsb2NrU2l6ZURlcGVuZGVudEdyaWRJdGVt
cyA9IGNvbXB1dGVBc3BlY3RSYXRpb0RlcGVuZGVudEFuZEJhc2VsaW5lSXRlbXMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggZTM3NTExNTlm
OTc4Li5iZmZlMjllNDA1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcApAQCAtNjA3LDggKzYwNyw4IEBAIExheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6
OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkIHNoCiAg
ICAgICAgIC8vIEZvciBmbGV4IG9yIGdyaWQgaXRlbXMgd2hlcmUgdGhlIGxvZ2ljYWwgaGVpZ2h0
IGhhcyBiZWVuIG92ZXJyaWRlbiB0aGVuIHdlIHNob3VsZCB1c2UgdGhhdCBzaXplIHRvIGNvbXB1
dGUgdGhlIHJlcGxhY2VkIHdpZHRoIGFzIGxvbmcgYXMgdGhlIGZsZXggb3IKICAgICAgICAgLy8g
Z3JpZCBpdGVtIGhhcyBhbiBpbnRyaW5zaWMgc2l6ZS4gSXQgaXMgcG9zc2libGUgKGluZGVlZCwg
Y29tbW9uKSBmb3IgYW4gU1ZHIGdyYXBoaWMgdG8gaGF2ZSBhbiBpbnRyaW5zaWMgYXNwZWN0IHJh
dGlvIGJ1dCBub3QgdG8gaGF2ZSBhbiBpbnRyaW5zaWMKICAgICAgICAgLy8gd2lkdGggb3IgaGVp
Z2h0LiBUaGVyZSBhcmUgYWxzbyBlbGVtZW50cyB3aXRoIGludHJpbnNpYyBzaXplcyBidXQgd2l0
aG91dCBpbnRyaW5zaWMgcmF0aW8gKGxpa2UgYW4gaWZyYW1lKS4KLSAgICAgICAgaWYgKCFpbnRy
aW5zaWNSYXRpby5pc0VtcHR5KCkgJiYgKGlzRmxleEl0ZW0oKSB8fCBpc0dyaWRJdGVtKCkpICYm
IGhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgJiYgaGFzSW50cmluc2ljU2l6ZShjb250ZW50
UmVuZGVyZXIsIGhhc0ludHJpbnNpY1dpZHRoLCBoYXNJbnRyaW5zaWNIZWlnaHQpKQotICAgICAg
ICAgICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFJlc3BlY3RpbmdNaW5NYXhX
aWR0aChvdmVycmlkaW5nQ29udGVudExvZ2ljYWxIZWlnaHQob3ZlcnJpZGluZ0xvZ2ljYWxIZWln
aHQoKSkgKiBpbnRyaW5zaWNSYXRpby5hc3BlY3RSYXRpb0RvdWJsZSgpLCBzaG91bGRDb21wdXRl
UHJlZmVycmVkKTsKKyAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQgPSAo
IWludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiAoaXNGbGV4SXRlbSgpIHx8IGlzR3JpZEl0ZW0o
KSkgJiYgaGFzSW50cmluc2ljU2l6ZShjb250ZW50UmVuZGVyZXIsIGhhc0ludHJpbnNpY1dpZHRo
LCBoYXNJbnRyaW5zaWNIZWlnaHQpID8gdGhpcy0+b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSA6
IHN0ZDo6bnVsbG9wdCkpCisgICAgICAgICAgICByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNh
bFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKG92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdo
dCgqb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQpICogaW50cmluc2ljUmF0aW8uYXNwZWN0UmF0aW9E
b3VibGUoKSwgc2hvdWxkQ29tcHV0ZVByZWZlcnJlZCk7CiAKICAgICAgICAgLy8gSWYgJ2hlaWdo
dCcgYW5kICd3aWR0aCcgYm90aCBoYXZlIGNvbXB1dGVkIHZhbHVlcyBvZiAnYXV0bycgYW5kIHRo
ZSBlbGVtZW50IGFsc28gaGFzIGFuIGludHJpbnNpYyB3aWR0aCwgdGhlbiB0aGF0IGludHJpbnNp
YyB3aWR0aCBpcyB0aGUgdXNlZCB2YWx1ZSBvZiAnd2lkdGgnLgogICAgICAgICBpZiAoY29tcHV0
ZWRIZWlnaHRJc0F1dG8gJiYgaGFzSW50cmluc2ljV2lkdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCBmZmQ2NTAyN2I3M2YuLmIxNmYzZjk4N2VhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC01MjYsOCArNTI2LDgg
QEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0KCkKICAgICAgICAgaWYgKGxvZ2ljYWxIZWlnaHRM
ZW5ndGguaXNJbnRyaW5zaWMoKSB8fCAobG9naWNhbEhlaWdodExlbmd0aC5pc1NwZWNpZmllZCgp
ICYmIGxvZ2ljYWxIZWlnaHRMZW5ndGguaXNQb3NpdGl2ZSgpKSkKICAgICAgICAgICAgIGNvbXB1
dGVkTG9naWNhbEhlaWdodCA9IGNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVp
Z2h0KGxvZ2ljYWxIZWlnaHRMZW5ndGgpOwogCi0gICAgICAgIGlmIChoYXNPdmVycmlkaW5nTG9n
aWNhbEhlaWdodCgpKQotICAgICAgICAgICAgY29tcHV0ZWRMb2dpY2FsSGVpZ2h0ID0gc3RkOjpt
YXgoY29tcHV0ZWRMb2dpY2FsSGVpZ2h0LCBvdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIC0gYm9y
ZGVyQW5kUGFkZGluZ0FmdGVyIC0gc3VtQ2FwdGlvbnNMb2dpY2FsSGVpZ2h0KCkpOworICAgICAg
ICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdodCA9IHRoaXMtPm92ZXJyaWRpbmdMb2dp
Y2FsSGVpZ2h0KCkpCisgICAgICAgICAgICBjb21wdXRlZExvZ2ljYWxIZWlnaHQgPSBzdGQ6Om1h
eChjb21wdXRlZExvZ2ljYWxIZWlnaHQsICpvdmVycmlkaW5nTG9naWNhbEhlaWdodCAtIGJvcmRl
ckFuZFBhZGRpbmdBZnRlciAtIHN1bUNhcHRpb25zTG9naWNhbEhlaWdodCgpKTsKIAogICAgICAg
ICBMZW5ndGggbG9naWNhbE1heEhlaWdodExlbmd0aCA9IHN0eWxlKCkubG9naWNhbE1heEhlaWdo
dCgpOwogICAgICAgICBpZiAobG9naWNhbE1heEhlaWdodExlbmd0aC5pc0ZpbGxBdmFpbGFibGUo
KSB8fCAobG9naWNhbE1heEhlaWdodExlbmd0aC5pc1NwZWNpZmllZCgpICYmICFsb2dpY2FsTWF4
SGVpZ2h0TGVuZ3RoLmlzTmVnYXRpdmUoKQpAQCAtNTUzLDcgKzU1MywxMiBAQCB2b2lkIFJlbmRl
clRhYmxlOjpsYXlvdXQoKQogICAgICAgICAgICAgLy8gQ29tcGxldGVseSBlbXB0eSB0YWJsZXMg
KHdpdGggbm8gc2VjdGlvbnMgb3IgYW55dGhpbmcpIHNob3VsZCBhdCBsZWFzdCBob25vciB0aGVp
cgogICAgICAgICAgICAgLy8gb3ZlcnJpZGluZyBvciBzcGVjaWZpZWQgaGVpZ2h0IGluIHN0cmlj
dCBtb2RlLCBidXQgdGhpcyB2YWx1ZSB3aWxsIG5vdCBiZSBjYWNoZWQuCiAgICAgICAgICAgICBz
aG91bGRDYWNoZUludHJpbnNpY0NvbnRlbnRMb2dpY2FsSGVpZ2h0Rm9yRmxleEl0ZW0gPSBmYWxz
ZTsKLSAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWln
aHQoKSA/IG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nQWZ0ZXIg
OiBsb2dpY2FsSGVpZ2h0KCkgKyBjb21wdXRlZExvZ2ljYWxIZWlnaHQpOworICAgICAgICAgICAg
YXV0byB0YWJsZUxvZ2ljYWxIZWlnaHQgPSBbJl0geworICAgICAgICAgICAgICAgIGlmIChhdXRv
IG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0ID0gdGhpcy0+b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQo
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICpvdmVycmlkaW5nTG9naWNhbEhlaWdodCAt
IGJvcmRlckFuZFBhZGRpbmdBZnRlcjsKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9naWNhbEhl
aWdodCgpICsgY29tcHV0ZWRMb2dpY2FsSGVpZ2h0OworICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgIHNldExvZ2ljYWxIZWlnaHQodGFibGVMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgTGF5b3V0VW5pdCBzZWN0aW9uTG9naWNhbExlZnQgPSBzdHlsZSgpLmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSA/IGJvcmRlclN0YXJ0KCkgOiBib3JkZXJFbmQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggYTU5ZTg2
ZjEwYWE5Li4wMjIxOWIwMzY3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dMb2dpY2FsSGVpZ2h0KCkKICAgICAgICAgICAgICAgICAv
LyBGb3Igcm93IHNwYW5uaW5nIGNlbGxzLCB8cnwgaXMgdGhlIGxhc3Qgcm93IGluIHRoZSBzcGFu
LgogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNlbGxTdGFydFJvdyA9IGNlbGwtPnJvd0luZGV4
KCk7CiAKLSAgICAgICAgICAgICAgICBpZiAoY2VsbC0+aGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWln
aHQoKSkgeworICAgICAgICAgICAgICAgIGlmIChjZWxsLT5vdmVycmlkaW5nTG9naWNhbEhlaWdo
dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNlbGwtPmNsZWFySW50cmluc2ljUGFkZGluZygp
OwogICAgICAgICAgICAgICAgICAgICBjZWxsLT5jbGVhck92ZXJyaWRpbmdDb250ZW50U2l6ZSgp
OwogICAgICAgICAgICAgICAgICAgICBjZWxsLT5zZXRDaGlsZE5lZWRzTGF5b3V0KE1hcmtPbmx5
VGhpcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>471321</attachid>
            <date>2024-05-08 13:08:47 -0700</date>
            <delta_ts>2024-05-08 20:07:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-273885-20240508130616.patch</filename>
            <type>text/plain</type>
            <size>31977</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAzNzBiOGIzZmVjNmU4NTg2MDAzZGNmNmQ0M2M1YzZiNTY2NmNmYzc1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgOCBNYXkgMjAyNCAxMjo0MDo1MCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtDbGVhbnVw
XSBSZW1vdmUgUmVuZGVyQm94OjpoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodAogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3Mzg4NQoKUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgpUaGlzIHBhdGNoIGVsaW1pbmF0ZXMgYSByZWR1bmRhbnQgaGFzaCBsb29rdXAg
YnkKMS4gcmVtb3ZpbmcgUmVuZGVyQm94OjpoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCBhbmQK
Mi4gY2hhbmdpbmcgdGhlIHJldHVybiB0eXBlIG9mIFJlbmRlckJveDo6b3ZlcnJpZGluZ0xvZ2lj
YWxIZWlnaHQgZnJvbSBMYXlvdXRVbml0IHRvIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4KCnNv
IHRoYXQgdGhlIGZvbGxvd2luZyAoaGlnaGx5IGNvbW1vbikgcGF0dGVybgogIGlmIChoYXNPdmVy
cmlkaW5nTG9naWNhbEhlaWdodCgpKQogICAgLi4uICsgb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQo
KSArIC4uLgoKY2FuIGJlIHR1cm5lZCBpbnRvCiAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxI
ZWlnaHQgPSB0aGlzLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQogICAgLi4uICsgKm92ZXJy
aWRpbmdMb2dpY2FsSGVpZ2h0ICsgLi4uCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHA6CihXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXZhaWxhYmxlTG9naWNhbEhlaWdo
dEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbiBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHA6CihXZWJDb3JlOjpSZW5kZXJCb3g6Om92ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6cGVycGVuZGljdWxhckNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxIZWlnaHQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94OjpjYWNoZUlu
dHJpbnNpY0NvbnRlbnRMb2dpY2FsSGVpZ2h0Rm9yRmxleEl0ZW0gY29uc3QpOgooV2ViQ29yZTo6
UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyBjb25zdCk6CihXZWJDb3Jl
OjpSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyBjb25zdCk6CihXZWJDb3Jl
OjpSZW5kZXJCb3g6OnNob3VsZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8gY29u
c3QpOgooV2ViQ29yZTo6UmVuZGVyQm94OjpoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCBjb25z
dCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgoo
V2ViQ29yZTo6aGVpZ2h0Rm9yQ2hpbGQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjpPdmVycmlkaW5nU2l6ZXNTY29wZTo6T3ZlcnJp
ZGluZ1NpemVzU2NvcGUpOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnVzZWRDaGlsZE92
ZXJyaWRpbmdDcm9zc1NpemVGb3JQZXJjZW50YWdlUmVzb2x1dGlvbik6CihXZWJDb3JlOjpSZW5k
ZXJGbGV4aWJsZUJveDo6dXNlZENoaWxkT3ZlcnJpZGluZ01haW5TaXplRm9yUGVyY2VudGFnZVJl
c29sdXRpb24pOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmFwcGx5U3RyZXRjaEFsaWdu
bWVudFRvQ2hpbGQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoK
KFdlYkNvcmU6OlJlbmRlckdyaWQ6OmxheW91dEdyaWQpOgooV2ViQ29yZTo6UmVuZGVyR3JpZDo6
bGF5b3V0TWFzb25yeSk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcDoKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpsYXlvdXQp
OgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgooV2Vi
Q29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93TG9naWNhbEhlaWdodCk6Ci0tLQogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAgIHwgODkgKysrKysrKysr
Ky0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgICAgICAg
IHwgNTEgKysrKystLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCAg
ICAgICAgICB8ICAzICstCiAuLi4vcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eC5jcHAgfCAgNCArLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNw
cCAgIHwgMjEgKystLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCAg
ICAgICB8IDEwICstLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cCAgIHwgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgICAg
ICB8IDExICsrLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAg
IHwgIDIgKy0KIDkgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgOTkgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMjc5ZTc0
NjE2ZGNjLi5kODYxZGQ4ZGJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtMzE5Niw1MiArMzE5Niw1NyBAQCBib29sIFJlbmRlckJsb2NrOjpoYXNEZWZp
bml0ZUxvZ2ljYWxIZWlnaHQoKSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJl
bmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9u
KCkgY29uc3QKIHsKLSAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUhlaWdo
dDsKLSAgICAKICAgICAvLyBGb3IgYW5vbnltb3VzIGJsb2NrcyB0aGF0IGFyZSBza2lwcGVkIGR1
cmluZyBwZXJjZW50YWdlIGhlaWdodCBjYWxjdWxhdGlvbiwKICAgICAvLyB3ZSBjb25zaWRlciB0
aGVtIHRvIGhhdmUgYW4gaW5kZWZpbml0ZSBoZWlnaHQuCiAgICAgaWYgKHNraXBDb250YWluaW5n
QmxvY2tGb3JQZXJjZW50SGVpZ2h0Q2FsY3VsYXRpb24oKnRoaXMsIGZhbHNlKSkKLSAgICAgICAg
cmV0dXJuIGF2YWlsYWJsZUhlaWdodDsKLSAgICAKLSAgICBjb25zdCBhdXRvJiBzdHlsZVRvVXNl
ID0gc3R5bGUoKTsKLSAgICAKLSAgICAvLyBBIHBvc2l0aW9uZWQgZWxlbWVudCB0aGF0IHNwZWNp
ZmllZCBib3RoIHRvcC9ib3R0b20gb3IgdGhhdCBzcGVjaWZpZXMKLSAgICAvLyBoZWlnaHQgc2hv
dWxkIGJlIHRyZWF0ZWQgYXMgdGhvdWdoIGl0IGhhcyBhIGhlaWdodCBleHBsaWNpdGx5IHNwZWNp
ZmllZAotICAgIC8vIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGFueSBwZXJjZW50YWdlIGNvbXB1dGF0
aW9ucy4KLSAgICBib29sIGlzT3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQg
PSBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAoIXN0eWxlVG9Vc2UubG9naWNhbEhlaWdodCgp
LmlzQXV0bygpIHx8ICghc3R5bGVUb1VzZS5sb2dpY2FsVG9wKCkuaXNBdXRvKCkgJiYgIXN0eWxl
VG9Vc2UubG9naWNhbEJvdHRvbSgpLmlzQXV0bygpKSk7Ci0gICAgCi0gICAgaWYgKGF1dG8gdXNl
ZENoaWxkT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlUmVzb2x1dGlvbkZvckZs
ZXggPSAoaXNGbGV4SXRlbSgpID8gZG93bmNhc3Q8UmVuZGVyRmxleGlibGVCb3g+KHBhcmVudCgp
KS0+dXNlZENoaWxkT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlUmVzb2x1dGlv
bigqdGhpcykgOiBzdGQ6Om51bGxvcHQpKQotICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBvdmVy
cmlkaW5nQ29udGVudExvZ2ljYWxIZWlnaHQoKnVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVp
Z2h0Rm9yUGVyY2VudGFnZVJlc29sdXRpb25Gb3JGbGV4KTsKLSAgICBlbHNlIGlmIChpc0dyaWRJ
dGVtKCkgJiYgaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgYXZhaWxhYmxl
SGVpZ2h0ID0gb3ZlcnJpZGluZ0NvbnRlbnRMb2dpY2FsSGVpZ2h0KG92ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0KCkpOwotICAgIGVsc2UgaWYgKHN0eWxlVG9Vc2UubG9naWNhbEhlaWdodCgpLmlzRml4
ZWQoKSkgewotICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHQgPSBhZGp1c3RDb250
ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZygoTGF5b3V0VW5pdClzdHlsZVRvVXNlLmxv
Z2ljYWxIZWlnaHQoKS52YWx1ZSgpKTsKLSAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gc3RkOjpt
YXgoMF9sdSwgY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50
Qm94SGVpZ2h0IC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxvcHQpKTsKLSAg
ICB9IGVsc2UgaWYgKHNob3VsZENvbXB1dGVMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvKCkp
IHsKLSAgICAgICAgLy8gT25seSBncmlkIGlzIGV4cGVjdGVkIHRvIGJlIGluIGEgc3RhdGUgd2hl
cmUgaXQgaXMgY2FsY3VsYXRpbmcgcHJlZiB3aWR0aCBhbmQgaGF2aW5nIHVua25vd24gbG9naWNh
bCB3aWR0aC4KLSAgICAgICAgaWYgKGlzUmVuZGVyR3JpZCgpICYmIHByZWZlcnJlZExvZ2ljYWxX
aWR0aHNEaXJ0eSgpICYmICFzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzU3BlY2lmaWVkKCkpCi0g
ICAgICAgICAgICByZXR1cm4gYXZhaWxhYmxlSGVpZ2h0OwotICAgICAgICBhdmFpbGFibGVIZWln
aHQgPSBibG9ja1NpemVGcm9tQXNwZWN0UmF0aW8oaG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmdF
eHRlbnQoKSwgdmVydGljYWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCksIExheW91dFVuaXQoc3R5
bGUoKS5sb2dpY2FsQXNwZWN0UmF0aW8oKSksIHN0eWxlKCkuYm94U2l6aW5nRm9yQXNwZWN0UmF0
aW8oKSwgbG9naWNhbFdpZHRoKCksIHN0eWxlKCkuYXNwZWN0UmF0aW9UeXBlKCksIGlzUmVuZGVy
UmVwbGFjZWQoKSk7Ci0gICAgfSBlbHNlIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWRXaXRoU3Bl
Y2lmaWVkSGVpZ2h0KSB7Ci0gICAgICAgIC8vIERvbid0IGFsbG93IHRoaXMgdG8gYWZmZWN0IHRo
ZSBibG9jaycgc2l6ZSgpIG1lbWJlciB2YXJpYWJsZSwgc2luY2UgdGhpcwotICAgICAgICAvLyBj
YW4gZ2V0IGNhbGxlZCB3aGlsZSB0aGUgYmxvY2sgaXMgc3RpbGwgbGF5aW5nIG91dCBpdHMga2lk
cy4KLSAgICAgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzID0g
Y29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgpLCAwX2x1KTsKLSAgICAgICAgYXZh
aWxhYmxlSGVpZ2h0ID0gc3RkOjptYXgoMF9sdSwgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgLSBi
b3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpIC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgp
KTsKLSAgICB9IGVsc2UgaWYgKHN0eWxlVG9Vc2UubG9naWNhbEhlaWdodCgpLmlzUGVyY2VudE9y
Q2FsY3VsYXRlZCgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0
V2l0aFNjcm9sbGJhciA9IGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChzdHlsZVRvVXNl
LmxvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAgIGlmIChoZWlnaHRXaXRoU2Nyb2xsYmFyKSB7Ci0g
ICAgICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHRXaXRoU2Nyb2xsYmFyID0gYWRq
dXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoaGVpZ2h0V2l0aFNjcm9sbGJh
ci52YWx1ZSgpKTsKLSAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IGZvciBtaW4vbWF4
IGhlaWdodCBiZWNhdXNlIHRoaXMgbWV0aG9kIGRvZXMgbm90Ci0gICAgICAgICAgICAvLyBoYW5k
bGUgdGhlIG1pbi9tYXggb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGl0cyBjYWxsZXIgZG9lcy4gU28g
dGhlCi0gICAgICAgICAgICAvLyByZXR1cm4gdmFsdWUgZnJvbSB0aGUgcmVjdXJzaXZlIGNhbGwg
d2lsbCBub3QgaGF2ZSBiZWVuIGFkanVzdGVkCi0gICAgICAgICAgICAvLyB5ZXQuCi0gICAgICAg
ICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHQgPSBjb25zdHJhaW5Db250ZW50Qm94TG9n
aWNhbEhlaWdodEJ5TWluTWF4KGNvbnRlbnRCb3hIZWlnaHRXaXRoU2Nyb2xsYmFyIC0gc2Nyb2xs
YmFyTG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxvcHQpOwotICAgICAgICAgICAgYXZhaWxhYmxl
SGVpZ2h0ID0gc3RkOjptYXgoMF9sdSwgY29udGVudEJveEhlaWdodCk7CisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBhdXRvIGF2YWlsYWJsZUhlaWdodCA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4geworICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdo
dEZvckZsZXggPSAoaXNGbGV4SXRlbSgpID8gZG93bmNhc3Q8UmVuZGVyRmxleGlibGVCb3g+KHBh
cmVudCgpKS0+dXNlZENoaWxkT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlUmVz
b2x1dGlvbigqdGhpcykgOiBzdGQ6Om51bGxvcHQpKQorICAgICAgICAgICAgcmV0dXJuIG92ZXJy
aWRpbmdDb250ZW50TG9naWNhbEhlaWdodCgqb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRGb3JGbGV4
KTsKKworICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdodEZvckdyaWQgPSAo
aXNHcmlkSXRlbSgpID8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSA6IHN0ZDo6bnVsbG9wdCkp
CisgICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGluZ0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCpvdmVy
cmlkaW5nTG9naWNhbEhlaWdodEZvckdyaWQpOworCisgICAgICAgIGF1dG8mIHN0eWxlID0gdGhp
cy0+c3R5bGUoKTsKKyAgICAgICAgaWYgKHN0eWxlLmxvZ2ljYWxIZWlnaHQoKS5pc0ZpeGVkKCkp
IHsKKyAgICAgICAgICAgIGF1dG8gY29udGVudEJveEhlaWdodCA9IGFkanVzdENvbnRlbnRCb3hM
b2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKExheW91dFVuaXQgeyBzdHlsZS5sb2dpY2FsSGVpZ2h0
KCkudmFsdWUoKSB9KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heCgwX2x1LCBjb25zdHJh
aW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KGNvbnRlbnRCb3hIZWlnaHQgLSBzY3Jv
bGxiYXJMb2dpY2FsSGVpZ2h0KCksIHsgfSkpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChp
c1JlbmRlclZpZXcoKSkKLSAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gdmlldygpLnBhZ2VPclZp
ZXdMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgCi0gICAgcmV0dXJuIGF2YWlsYWJsZUhlaWdodDsKKwor
ICAgICAgICBpZiAoc2hvdWxkQ29tcHV0ZUxvZ2ljYWxIZWlnaHRGcm9tQXNwZWN0UmF0aW8oKSkg
eworICAgICAgICAgICAgLy8gT25seSBncmlkIGlzIGV4cGVjdGVkIHRvIGJlIGluIGEgc3RhdGUg
d2hlcmUgaXQgaXMgY2FsY3VsYXRpbmcgcHJlZiB3aWR0aCBhbmQgaGF2aW5nIHVua25vd24gbG9n
aWNhbCB3aWR0aC4KKyAgICAgICAgICAgIGlmIChpc1JlbmRlckdyaWQoKSAmJiBwcmVmZXJyZWRM
b2dpY2FsV2lkdGhzRGlydHkoKSAmJiAhc3R5bGUubG9naWNhbFdpZHRoKCkuaXNTcGVjaWZpZWQo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgcmV0dXJuIGJsb2Nr
U2l6ZUZyb21Bc3BlY3RSYXRpbyhob3Jpem9udGFsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpLCB2
ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSwgTGF5b3V0VW5pdCB7IHN0eWxlLmxvZ2lj
YWxBc3BlY3RSYXRpbygpIH0sIHN0eWxlLmJveFNpemluZ0ZvckFzcGVjdFJhdGlvKCksIGxvZ2lj
YWxXaWR0aCgpLCBzdHlsZS5hc3BlY3RSYXRpb1R5cGUoKSwgaXNSZW5kZXJSZXBsYWNlZCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIEEgcG9zaXRpb25lZCBlbGVtZW50IHRoYXQgc3BlY2lm
aWVkIGJvdGggdG9wL2JvdHRvbSBvciB0aGF0IHNwZWNpZmllcworICAgICAgICAvLyBoZWlnaHQg
c2hvdWxkIGJlIHRyZWF0ZWQgYXMgdGhvdWdoIGl0IGhhcyBhIGhlaWdodCBleHBsaWNpdGx5IHNw
ZWNpZmllZAorICAgICAgICAvLyB0aGF0IGNhbiBiZSB1c2VkIGZvciBhbnkgcGVyY2VudGFnZSBj
b21wdXRhdGlvbnMuCisgICAgICAgIGF1dG8gaXNPdXRPZkZsb3dQb3NpdGlvbmVkV2l0aFNwZWNp
ZmllZEhlaWdodCA9IGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICghc3R5bGUubG9naWNhbEhl
aWdodCgpLmlzQXV0bygpIHx8ICghc3R5bGUubG9naWNhbFRvcCgpLmlzQXV0bygpICYmICFzdHls
ZS5sb2dpY2FsQm90dG9tKCkuaXNBdXRvKCkpKTsKKyAgICAgICAgaWYgKGlzT3V0T2ZGbG93UG9z
aXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQpIHsKKyAgICAgICAgICAgIC8vIERvbid0IGFsbG93
IHRoaXMgdG8gYWZmZWN0IHRoZSBibG9jaycgc2l6ZSgpIG1lbWJlciB2YXJpYWJsZSwgc2luY2Ug
dGhpcworICAgICAgICAgICAgLy8gY2FuIGdldCBjYWxsZWQgd2hpbGUgdGhlIGJsb2NrIGlzIHN0
aWxsIGxheWluZyBvdXQgaXRzIGtpZHMuCisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgoMF9s
dSwgY29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgpLCAwX2x1KS5tX2V4dGVudCAt
IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0
KCkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0eWxlLmxvZ2ljYWxIZWlnaHQoKS5pc1Bl
cmNlbnRPckNhbGN1bGF0ZWQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaGVpZ2h0V2l0aFNj
cm9sbGJhciA9IGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChzdHlsZS5sb2dpY2FsSGVp
Z2h0KCkpKSB7CisgICAgICAgICAgICAgICAgYXV0byBjb250ZW50Qm94SGVpZ2h0V2l0aFNjcm9s
bGJhciA9IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGhlaWdodFdp
dGhTY3JvbGxiYXIudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGp1
c3QgZm9yIG1pbi9tYXggaGVpZ2h0IGJlY2F1c2UgdGhpcyBtZXRob2QgZG9lcyBub3QgaGFuZGxl
IHRoZSBtaW4vbWF4IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBpdHMgY2FsbGVyIGRvZXMuCisgICAg
ICAgICAgICAgICAgLy8gU28gdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoZSByZWN1cnNpdmUgY2Fs
bCB3aWxsIG5vdCBoYXZlIGJlZW4gYWRqdXN0ZWQgeWV0LgorICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1heCgwX2x1LCBjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4
KGNvbnRlbnRCb3hIZWlnaHRXaXRoU2Nyb2xsYmFyIC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgp
LCB7IH0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
IH0KKworICAgICAgICBpZiAoaXNSZW5kZXJWaWV3KCkpCisgICAgICAgICAgICByZXR1cm4gdmll
dygpLnBhZ2VPclZpZXdMb2dpY2FsSGVpZ2h0KCk7CisKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9OworICAgIHJldHVybiBhdmFpbGFibGVIZWlnaHQoKTsKIH0KICAgICAKIHZvaWQgUmVuZGVy
QmxvY2s6OmxheW91dEV4Y2x1ZGVkQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA1NDIwOGQ2NDI5MjMuLmNkOTZm
ZDZhZDViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTEyNzEs
MTEgKzEyNzEsNiBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6bWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoKCkgY29uc3QKICAgICByZXR1cm4gbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGg7CiB9CiAK
LWJvb2wgUmVuZGVyQm94OjpoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGdPdmVycmlkaW5nTG9naWNhbEhlaWdodE1hcCAmJiBnT3ZlcnJpZGluZ0xvZ2lj
YWxIZWlnaHRNYXAtPmNvbnRhaW5zKCp0aGlzKTsKLX0KLQogYm9vbCBSZW5kZXJCb3g6Omhhc092
ZXJyaWRpbmdMb2dpY2FsV2lkdGgoKSBjb25zdAogewogICAgIHJldHVybiBnT3ZlcnJpZGluZ0xv
Z2ljYWxXaWR0aE1hcCAmJiBnT3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aE1hcC0+Y29udGFpbnMoKnRo
aXMpOwpAQCAtMTMxOSwxMCArMTMxNCwxMiBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6b3ZlcnJp
ZGluZ0xvZ2ljYWxXaWR0aCgpIGNvbnN0CiAgICAgcmV0dXJuIGdPdmVycmlkaW5nTG9naWNhbFdp
ZHRoTWFwLT5nZXQoKnRoaXMpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckJveDo6b3ZlcnJpZGlu
Z0xvZ2ljYWxIZWlnaHQoKSBjb25zdAorc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJC
b3g6Om92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzT3Zl
cnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgcmV0dXJuIGdPdmVycmlkaW5nTG9naWNhbEhl
aWdodE1hcC0+Z2V0KCp0aGlzKTsKKyAgICBpZiAoIWdPdmVycmlkaW5nTG9naWNhbEhlaWdodE1h
cCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIGl0ZXJhdG9yID0gZ092ZXJyaWRpbmdM
b2dpY2FsSGVpZ2h0TWFwLT5maW5kKCp0aGlzKTsKKyAgICByZXR1cm4gaXRlcmF0b3IgIT0gZ092
ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0TWFwLT5lbmQoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChpdGVy
YXRvci0+dmFsdWUpIDogc3RkOjpudWxsb3B0OwogfQogCiBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IFJlbmRlckJveDo6b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpIGNv
bnN0CkBAIC0yMzY4LDI0ICsyMzY1LDI0IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjpwZXJwZW5k
aWN1bGFyQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCgpIGNvbnN0CiAgICAgICAgICAgICBy
ZXR1cm4gaGVpZ2h0LnZhbHVlKCk7CiAgICAgfQogCi0gICAgUmVuZGVyQmxvY2sqIGNiID0gY29u
dGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYgKGNiLT5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgp
KQotICAgICAgICByZXR1cm4gY2ItPm92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdodChjYi0+
b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CisgICAgYXV0byogY29udGFpbmluZ0Jsb2NrID0g
dGhpcy0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxI
ZWlnaHQgPSBjb250YWluaW5nQmxvY2stPm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCisgICAg
ICAgIHJldHVybiBjb250YWluaW5nQmxvY2stPm92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdo
dCgqb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQpOwogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUmIGNv
bnRhaW5pbmdCbG9ja1N0eWxlID0gY2ItPnN0eWxlKCk7CisgICAgY29uc3QgUmVuZGVyU3R5bGUm
IGNvbnRhaW5pbmdCbG9ja1N0eWxlID0gY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpOwogICAgIExl
bmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoID0gY29udGFpbmluZ0Jsb2NrU3R5bGUubG9naWNhbEhl
aWdodCgpOwogCiAgICAgLy8gRklYTUU6IEZvciBub3cganVzdCBzdXBwb3J0IGZpeGVkIGhlaWdo
dHMuICBFdmVudHVhbGx5IHNob3VsZCBzdXBwb3J0IHBlcmNlbnRhZ2UgaGVpZ2h0cyBhcyB3ZWxs
LgogICAgIGlmICghbG9naWNhbEhlaWdodExlbmd0aC5pc0ZpeGVkKCkpIHsKICAgICAgICAgTGF5
b3V0VW5pdCBmaWxsRmFsbGJhY2tFeHRlbnQgPSBjb250YWluaW5nQmxvY2tTdHlsZS5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gdmlldygpLmZyYW1lVmlldygpLmxheW91dFNpemUoKS5oZWln
aHQoKSA6IHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRTaXplKCkud2lkdGgoKTsKLSAgICAgICAg
TGF5b3V0VW5pdCBmaWxsQXZhaWxhYmxlRXh0ZW50ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWls
YWJsZUxvZ2ljYWxIZWlnaHQoRXhjbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOworICAgICAgICBM
YXlvdXRVbml0IGZpbGxBdmFpbGFibGVFeHRlbnQgPSBjb250YWluaW5nQmxvY2stPmF2YWlsYWJs
ZUxvZ2ljYWxIZWlnaHQoRXhjbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOwogICAgICAgICB2aWV3
KCkuYWRkUGVyY2VudEhlaWdodERlc2NlbmRhbnQoY29uc3RfY2FzdDxSZW5kZXJCb3gmPigqdGhp
cykpOwogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODI4NiBXZSBhbHNvIG5lZWQgdG8gcGVyZm9ybSB0aGUgc2FtZSBwZXJjZW50SGVp
Z2h0RGVzY2VuZGFudCB0cmVhdG1lbnQgdG8gdGhlIGVsZW1lbnQgd2hpY2ggZGljdGF0ZXMgdGhl
IHJldHVybiB2YWx1ZSBmb3IgY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxIZWln
aHQoKSBhYm92ZS4KICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGZpbGxBdmFpbGFibGVFeHRlbnQs
IGZpbGxGYWxsYmFja0V4dGVudCk7CiAgICAgfQogCiAgICAgLy8gVXNlIHRoZSBjb250ZW50IGJv
eCBsb2dpY2FsIGhlaWdodCBhcyBzcGVjaWZpZWQgYnkgdGhlIHN0eWxlLgotICAgIHJldHVybiBj
Yi0+YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdChs
b2dpY2FsSGVpZ2h0TGVuZ3RoLnZhbHVlKCkpKTsKKyAgICByZXR1cm4gY29udGFpbmluZ0Jsb2Nr
LT5hZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0KGxv
Z2ljYWxIZWlnaHRMZW5ndGgudmFsdWUoKSkpOwogfQogCiB2b2lkIFJlbmRlckJveDo6bWFwTG9j
YWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRh
aW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBPcHRpb25TZXQ8TWFwQ29vcmRp
bmF0ZXNNb2RlPiBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKQEAgLTMxMzQsNyArMzEzMSw3
IEBAIHZvaWQgUmVuZGVyQm94OjpjYWNoZUludHJpbnNpY0NvbnRlbnRMb2dpY2FsSGVpZ2h0Rm9y
RmxleEl0ZW0oTGF5b3V0VW5pdCBoZWlnaHQpCiAgICAgQ2hlY2tlZFB0ciBmbGV4aWJsZUJveCA9
IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJGbGV4aWJsZUJveD4ocGFyZW50KCkpOwogICAgIGlmICgh
ZmxleGlibGVCb3gpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoaGFzT3ZlcnJpZGluZ0xvZ2lj
YWxIZWlnaHQoKSB8fCBzaG91bGRDb21wdXRlTG9naWNhbEhlaWdodEZyb21Bc3BlY3RSYXRpbygp
KQorICAgIGlmIChvdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIHx8IHNob3VsZENvbXB1dGVMb2dp
Y2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvKCkpCiAgICAgICAgIHJldHVybjsKICAgICBmbGV4aWJs
ZUJveC0+c2V0Q2FjaGVkQ2hpbGRJbnRyaW5zaWNDb250ZW50TG9naWNhbEhlaWdodCgqdGhpcywg
aGVpZ2h0KTsKIH0KQEAgLTMyMjAsOSArMzIxNyw5IEBAIFJlbmRlckJveDo6TG9naWNhbEV4dGVu
dENvbXB1dGVkVmFsdWVzIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5p
CiAgICAgICAgIC8vIGdyYWIgb3VyIGNhY2hlZCBmbGV4aWJsZSBoZWlnaHQuCiAgICAgICAgIC8v
IEZJWE1FOiBBY2NvdW50IGZvciBibG9jay1mbG93IGluIGZsZXhpYmxlIGJveGVzLgogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0MTgKLSAgICAg
ICAgaWYgKGhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgJiYgKHBhcmVudCgpLT5pc0ZsZXhp
YmxlQm94SW5jbHVkaW5nRGVwcmVjYXRlZCgpIHx8IHBhcmVudCgpLT5pc1JlbmRlckdyaWQoKSkp
IHsKLSAgICAgICAgICAgIGggPSBMZW5ndGgob3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSwgTGVu
Z3RoVHlwZTo6Rml4ZWQpOwotICAgICAgICB9IGVsc2UgaWYgKHRyZWF0QXNSZXBsYWNlZCkKKyAg
ICAgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRGb3JGbGV4T3JHcmlkID0gKHBh
cmVudCgpLT5pc0ZsZXhpYmxlQm94SW5jbHVkaW5nRGVwcmVjYXRlZCgpIHx8IHBhcmVudCgpLT5p
c1JlbmRlckdyaWQoKSA/IG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgOiBzdGQ6Om51bGxvcHQp
KQorICAgICAgICAgICAgaCA9IExlbmd0aCgqb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRGb3JGbGV4
T3JHcmlkLCBMZW5ndGhUeXBlOjpGaXhlZCk7CisgICAgICAgIGVsc2UgaWYgKHRyZWF0QXNSZXBs
YWNlZCkKICAgICAgICAgICAgIGggPSBMZW5ndGgoY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdo
dCgpICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGggPSBsb2dpY2FsSGVpZ2h0SW5Vc2U7CkBA
IC0zNDUyLDEwICszNDQ5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94
Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29uc3QgTGVuZ3RoCiAgICAgICAgICAg
ICAvLyBUYWJsZSBjZWxscyB2aW9sYXRlIHdoYXQgdGhlIENTUyBzcGVjIHNheXMgdG8gZG8gd2l0
aCBoZWlnaHRzLiBCYXNpY2FsbHkgd2UKICAgICAgICAgICAgIC8vIGRvbid0IGNhcmUgaWYgdGhl
IGNlbGwgc3BlY2lmaWVkIGEgaGVpZ2h0IG9yIG5vdC4gV2UganVzdCBhbHdheXMgbWFrZSBvdXJz
ZWx2ZXMKICAgICAgICAgICAgIC8vIGJlIGEgcGVyY2VudGFnZSBvZiB0aGUgY2VsbCdzIGN1cnJl
bnQgY29udGVudCBoZWlnaHQuCi0gICAgICAgICAgICBpZiAoIWNiLT5oYXNPdmVycmlkaW5nTG9n
aWNhbEhlaWdodCgpKQorICAgICAgICAgICAgYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdodCA9
IGNiLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpOworICAgICAgICAgICAgaWYgKCFvdmVycmlk
aW5nTG9naWNhbEhlaWdodCkKICAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVDZWxsU2hvdWxk
SGF2ZVplcm9Jbml0aWFsU2l6ZSgqY2IsICp0aGlzLCBzY3JvbGxzT3ZlcmZsb3dZKCkpID8gc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PigwKSA6IHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICAgICAg
YXZhaWxhYmxlSGVpZ2h0ID0gY2ItPm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBjYi0+Y29t
cHV0ZWRDU1NQYWRkaW5nQmVmb3JlKCkgLSBjYi0+Y29tcHV0ZWRDU1NQYWRkaW5nQWZ0ZXIoKSAt
IGNiLT5ib3JkZXJCZWZvcmUoKSAtIGNiLT5ib3JkZXJBZnRlcigpIC0gY2ItPnNjcm9sbGJhckxv
Z2ljYWxIZWlnaHQoKTsKKyAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9ICpvdmVycmlkaW5n
TG9naWNhbEhlaWdodCAtIGNiLT5jb21wdXRlZENTU1BhZGRpbmdCZWZvcmUoKSAtIGNiLT5jb21w
dXRlZENTU1BhZGRpbmdBZnRlcigpIC0gY2ItPmJvcmRlckJlZm9yZSgpIC0gY2ItPmJvcmRlckFm
dGVyKCkgLSBjYi0+c2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpOwogICAgICAgICB9CiAgICAgfSBl
bHNlCiAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGNiLT5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0
Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9uKCk7CkBAIC0zNDcxLDcgKzM0NjgsNyBAQCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVp
Z2h0KGNvbnN0IExlbmd0aAogICAgIC8vIHRoZW4gd2UgbXVzdCBzdWJ0cmFjdCB0aGUgYm9yZGVy
IGFuZCBwYWRkaW5nIGZyb20gdGhlIGNlbGwncwogICAgIC8vIHxhdmFpbGFibGVIZWlnaHR8IChn
aXZlbiBieSB8b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHR8KSB0byBhcnJpdmUKICAgICAvLyBhdCB0
aGUgY2hpbGQncyBjb21wdXRlZCBoZWlnaHQuCi0gICAgYm9vbCBzdWJ0cmFjdEJvcmRlckFuZFBh
ZGRpbmcgPSBpc1JlbmRlclRhYmxlKCkgfHwgKGlzPFJlbmRlclRhYmxlQ2VsbD4oKmNiKSAmJiAh
c2tpcHBlZEF1dG9IZWlnaHRDb250YWluaW5nQmxvY2sgJiYgY2ItPmhhc092ZXJyaWRpbmdMb2dp
Y2FsSGVpZ2h0KCkgJiYgc3R5bGUoKS5ib3hTaXppbmcoKSA9PSBCb3hTaXppbmc6OkNvbnRlbnRC
b3gpOworICAgIGJvb2wgc3VidHJhY3RCb3JkZXJBbmRQYWRkaW5nID0gaXNSZW5kZXJUYWJsZSgp
IHx8IChpczxSZW5kZXJUYWJsZUNlbGw+KCpjYikgJiYgIXNraXBwZWRBdXRvSGVpZ2h0Q29udGFp
bmluZ0Jsb2NrICYmIGNiLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpICYmIHN0eWxlKCkuYm94
U2l6aW5nKCkgPT0gQm94U2l6aW5nOjpDb250ZW50Qm94KTsKICAgICBpZiAoc3VidHJhY3RCb3Jk
ZXJBbmRQYWRkaW5nKSB7CiAgICAgICAgIHJlc3VsdCAtPSBib3JkZXJBbmRQYWRkaW5nTG9naWNh
bEhlaWdodCgpOwogICAgICAgICByZXR1cm4gc3RkOjptYXgoMF9sdSwgcmVzdWx0KTsKQEAgLTM2
NjAsOCArMzY1Nyw4IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgTGVuCiAgICAgICAgICAgICBibG9j
ay0+YWRkUGVyY2VudEhlaWdodERlc2NlbmRhbnQoKmNvbnN0X2Nhc3Q8UmVuZGVyQm94Kj4odGhp
cykpOwogICAgICAgICAgICAgaWYgKGF1dG8gdXNlZENoaWxkT3ZlcnJpZGluZ0xvZ2ljYWxIZWln
aHRGb3JQZXJjZW50YWdlUmVzb2x1dGlvbkZvckZsZXggPSAoYmxvY2stPmlzRmxleEl0ZW0oKSA/
IGRvd25jYXN0PFJlbmRlckZsZXhpYmxlQm94PihibG9jay0+cGFyZW50KCkpLT51c2VkQ2hpbGRP
dmVycmlkaW5nTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uKCpibG9jaykgOiBz
dGQ6Om51bGxvcHQpKQogICAgICAgICAgICAgICAgIHN0cmV0Y2hlZEhlaWdodCA9IGJsb2NrLT5v
dmVycmlkaW5nQ29udGVudExvZ2ljYWxIZWlnaHQoKnVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0Rm9yUGVyY2VudGFnZVJlc29sdXRpb25Gb3JGbGV4KTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGJsb2NrLT5pc0dyaWRJdGVtKCkgJiYgYmxvY2stPmhhc092ZXJyaWRpbmdMb2dpY2FsSGVp
Z2h0KCkgJiYgIWhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2spCi0gICAgICAgICAgICAg
ICAgc3RyZXRjaGVkSGVpZ2h0ID0gYmxvY2stPm92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdo
dChibG9jay0+b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgICAgICBlbHNlIGlm
IChhdXRvIHVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yR3JpZCA9IChibG9jay0+
aXNHcmlkSXRlbSgpICYmICFoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrID8gYmxvY2st
Pm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgOiBzdGQ6Om51bGxvcHQpKQorICAgICAgICAgICAg
ICAgIHN0cmV0Y2hlZEhlaWdodCA9IGJsb2NrLT5vdmVycmlkaW5nQ29udGVudExvZ2ljYWxIZWln
aHQoKnVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yR3JpZCk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWxjdWxhdGlvbiBpcyBub3QgcGF0Y2hlZCBmb3Ig
YmxvY2stZmxvdyB5ZXQuCkBAIC0zNzIyLDggKzM3MTksOCBAQCBMYXlvdXRVbml0IFJlbmRlckJv
eDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaCwgQXZhaWxhYmxl
TG9naQogICAgIC8vIGFydGlmaWNpYWxseS4gIFdlJ3JlIGdvaW5nIHRvIHJlbHkgb24gdGhpcyBj
ZWxsIGdldHRpbmcgZXhwYW5kZWQgdG8gc29tZSBuZXcKICAgICAvLyBoZWlnaHQsIGFuZCB0aGVu
IHdoZW4gd2UgbGF5IG91dCBhZ2FpbiB3ZSdsbCB1c2UgdGhlIGNhbGN1bGF0aW9uIGJlbG93Lgog
ICAgIGlmIChpc1JlbmRlclRhYmxlQ2VsbCgpICYmIChoLmlzQXV0bygpIHx8IGguaXNQZXJjZW50
T3JDYWxjdWxhdGVkKCkpKSB7Ci0gICAgICAgIGlmIChoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdo
dCgpKQotICAgICAgICAgICAgcmV0dXJuIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBjb21w
dXRlZENTU1BhZGRpbmdCZWZvcmUoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ0FmdGVyKCkgLSBib3Jk
ZXJCZWZvcmUoKSAtIGJvcmRlckFmdGVyKCkgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7Cisg
ICAgICAgIGlmIChhdXRvIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0ID0gdGhpcy0+b3ZlcnJpZGlu
Z0xvZ2ljYWxIZWlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybiAqb3ZlcnJpZGluZ0xvZ2ljYWxI
ZWlnaHQgLSBjb21wdXRlZENTU1BhZGRpbmdCZWZvcmUoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ0Fm
dGVyKCkgLSBib3JkZXJCZWZvcmUoKSAtIGJvcmRlckFmdGVyKCkgLSBzY3JvbGxiYXJMb2dpY2Fs
SGVpZ2h0KCk7CiAgICAgICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRk
aW5nTG9naWNhbEhlaWdodCgpOwogICAgIH0KIApAQCAtNTYwMCw3ICs1NTk3LDcgQEAgYm9vbCBS
ZW5kZXJCb3g6OnNob3VsZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8oKSBjb25z
dAogICAgIGF1dG8gaXNSZXNvbHZhYmxlUGVyY2VudGFnZUhlaWdodCA9IFsmXSB7CiAgICAgICAg
IHJldHVybiBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSAm
JiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgcGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jl
c29sdmFibGUoKSk7CiAgICAgfTsKLSAgICByZXR1cm4gaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWln
aHQoKSB8fCBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvQW5kSW5zZXRz
KCp0aGlzKSB8fCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0ZpeGVkKCkgfHwgaXNSZXNvbHZh
YmxlUGVyY2VudGFnZUhlaWdodCgpOworICAgIHJldHVybiBvdmVycmlkaW5nTG9naWNhbEhlaWdo
dCgpIHx8IHNob3VsZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW9BbmRJbnNldHMo
KnRoaXMpIHx8IHN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzRml4ZWQoKSB8fCBpc1Jlc29sdmFi
bGVQZXJjZW50YWdlSGVpZ2h0KCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRl
TG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvSW50ZXJuYWwoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDNmMmJiNzc3ZDUwOC4uOGM2ZjViNjVjZGI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0yODEsOCArMjgxLDcgQEAgcHVibGlj
OgogICAgIExheW91dFVuaXQgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBMYXlvdXRVbml0IG92ZXJyaWRpbmdMb2dpY2FsV2lkdGgoKSBjb25zdDsKLSAg
ICBMYXlvdXRVbml0IG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7Ci0gICAgYm9vbCBo
YXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSBjb25zdDsKICAgICBib29sIGhhc092
ZXJyaWRpbmdMb2dpY2FsV2lkdGgoKSBjb25zdDsKICAgICB2b2lkIHNldE92ZXJyaWRpbmdMb2dp
Y2FsSGVpZ2h0KExheW91dFVuaXQpOwogICAgIHZvaWQgc2V0T3ZlcnJpZGluZ0xvZ2ljYWxXaWR0
aChMYXlvdXRVbml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXggMjE1MjZlZDI1Y2U0Li40YmZjNzU2
OWFjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC0xNjgsOCArMTY4LDggQEAgc3RhdGljIExheW91
dFVuaXQgd2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogCiBzdGF0aWMgTGF5b3V0VW5p
dCBoZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewotICAgIGlmIChjaGlsZC0+aGFz
T3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIGNoaWxkLT5vdmVycmlk
aW5nTG9naWNhbEhlaWdodCgpOworICAgIGlmIChhdXRvIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0
ID0gY2hpbGQtPm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCisgICAgICAgIHJldHVybiAqb3Zl
cnJpZGluZ0xvZ2ljYWxIZWlnaHQ7CiAgICAgcmV0dXJuIGNoaWxkLT5sb2dpY2FsSGVpZ2h0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
CmluZGV4IGNlOWMzNDg1MDkyNS4uN2RmYmFhMmUyMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTIxNCw4ICsyMTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBTRVRfT1JfQ0xFQVJfT1ZFUlJJRElOR19TSVpFKG1fYm94LCBXaWR0
aCwgc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGF4aXMgPT0gQXhpczo6Qm90aCB8fCBh
eGlzID09IEF4aXM6OkJsb2NrKSB7Ci0gICAgICAgICAgICBpZiAoYm94Lmhhc092ZXJyaWRpbmdM
b2dpY2FsSGVpZ2h0KCkpCi0gICAgICAgICAgICAgICAgbV9vdmVycmlkaW5nSGVpZ2h0ID0gYm94
Lm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAgICBtX292ZXJyaWRpbmdIZWln
aHQgPSBib3gub3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgICAgIFNFVF9PUl9D
TEVBUl9PVkVSUklESU5HX1NJWkUobV9ib3gsIEhlaWdodCwgc2l6ZSk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNjIyLDEwICsxNjIxLDcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJGbGV4aWJsZUJveDo6dXNlZENoaWxkT3ZlcnJpZGluZ0Nyb3NzU2l6ZUZvclBlcmMKICAgICBB
U1NFUlQobWFpbkF4aXNJc0NoaWxkSW5saW5lQXhpcyhjaGlsZCkpOwogICAgIGlmIChhbGlnbm1l
bnRGb3JDaGlsZChjaGlsZCkgIT0gSXRlbVBvc2l0aW9uOjpTdHJldGNoKQogICAgICAgICByZXR1
cm4geyB9OwotCi0gICAgaWYgKGNoaWxkLmhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCi0g
ICAgICAgIHJldHVybiBjaGlsZC5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpOwotICAgIHJldHVy
biB7IH07CisgICAgcmV0dXJuIGNoaWxkLm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCk7CiB9CiAK
IC8vIFRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIHdoZW5ldmVyIGEgZGVzY2VuZGFudCBvZiBh
IGZsZXggaXRlbSB3YW50cyB0byByZXNvbHZlIGEgcGVyY2VudGFnZSBpbiBpdHMKQEAgLTE2Mzks
MTEgKzE2MzUsOCBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94
Ojp1c2VkQ2hpbGRPdmVycmlkaW5nTWFpblNpemVGb3JQZXJjZQogICAgIEFTU0VSVCghbWFpbkF4
aXNJc0NoaWxkSW5saW5lQXhpcyhjaGlsZCkpOwogCiAgICAgLy8gVGhlIG1haW4gc2l6ZSBvZiBh
IGZ1bGx5IGluZmxleGlibGUgaXRlbSB3aXRoIGEgZGVmaW5pdGUgZmxleCBiYXNpcyBpcywgYnkg
ZGVmaW5pdGlvbiwgZGVmaW5pdGUuCi0gICAgaWYgKGNoaWxkLnN0eWxlKCkuZmxleEdyb3coKSA9
PSAwLjAgJiYgY2hpbGQuc3R5bGUoKS5mbGV4U2hyaW5rKCkgPT0gMC4wICYmIGNoaWxkTWFpblNp
emVJc0RlZmluaXRlKGNoaWxkLCBmbGV4QmFzaXNGb3JDaGlsZChjaGlsZCkpKSB7Ci0gICAgICAg
IGlmIChjaGlsZC5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQotICAgICAgICAgICAgcmV0
dXJuIGNoaWxkLm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybiB7IH07
Ci0gICAgfQorICAgIGlmIChjaGlsZC5zdHlsZSgpLmZsZXhHcm93KCkgPT0gMC4wICYmIGNoaWxk
LnN0eWxlKCkuZmxleFNocmluaygpID09IDAuMCAmJiBjaGlsZE1haW5TaXplSXNEZWZpbml0ZShj
aGlsZCwgZmxleEJhc2lzRm9yQ2hpbGQoY2hpbGQpKSkKKyAgICAgICAgcmV0dXJuIGNoaWxkLm92
ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCk7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVu
dHMgc2VjdGlvbiA5LjguIERlZmluaXRlIGFuZCBJbmRlZmluaXRlIFNpemVzLCBjYXNlIDIpIG9m
IHRoZSBmbGV4Ym94IHNwZWMuCiAgICAgLy8gSWYgdGhlIGZsZXggY29udGFpbmVyIGhhcyBhIGRl
ZmluaXRlIG1haW4gc2l6ZSB0aGUgZmxleCBpdGVtIHBvc3QtZmxleGluZyBtYWluIHNpemUgaXMg
YWxzbyB0cmVhdGVkCkBAIC0xNjUxLDkgKzE2NDQsNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IFJlbmRlckZsZXhpYmxlQm94Ojp1c2VkQ2hpbGRPdmVycmlkaW5nTWFpblNpemVGb3JQZXJj
ZQogICAgIGlmICghY2FuQ29tcHV0ZVBlcmNlbnRhZ2VGbGV4QmFzaXMoY2hpbGQsIExlbmd0aCgw
LCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgVXBkYXRlUGVyY2VudGFnZUhlaWdodERlc2NlbmRhbnRz
OjpZZXMpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgaWYgKGNoaWxkLmhhc092ZXJyaWRp
bmdMb2dpY2FsSGVpZ2h0KCkpCi0gICAgICAgIHJldHVybiBjaGlsZC5vdmVycmlkaW5nTG9naWNh
bEhlaWdodCgpOwotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIGNoaWxkLm92ZXJyaWRpbmdM
b2dpY2FsSGVpZ2h0KCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxl
eGlibGVCb3g6OnVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZVJl
c29sdXRpb24oY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKQEAgLTI1MzMsNyArMjUyNCw3IEBAIHZv
aWQgUmVuZGVyRmxleGlibGVCb3g6OmFwcGx5U3RyZXRjaEFsaWdubWVudFRvQ2hpbGQoUmVuZGVy
Qm94JiBjaGlsZCwgTGF5b3V0VW5pCiAgICAgICAgICAgICAvLyBTbywgcmVkbyBpdCBoZXJlLgog
ICAgICAgICAgICAgY2hpbGROZWVkc1JlbGF5b3V0ID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAg
ICBpZiAoY2hpbGROZWVkc1JlbGF5b3V0IHx8ICFjaGlsZC5oYXNPdmVycmlkaW5nTG9naWNhbEhl
aWdodCgpKQorICAgICAgICBpZiAoY2hpbGROZWVkc1JlbGF5b3V0IHx8ICFjaGlsZC5vdmVycmlk
aW5nTG9naWNhbEhlaWdodCgpKQogICAgICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0xvZ2lj
YWxIZWlnaHQoZGVzaXJlZExvZ2ljYWxIZWlnaHQpOwogICAgICAgICBpZiAoY2hpbGROZWVkc1Jl
bGF5b3V0KSB7CiAgICAgICAgICAgICBTZXRGb3JTY29wZSByZXNldENoaWxkTG9naWNhbEhlaWdo
dChtX3Nob3VsZFJlc2V0Q2hpbGRMb2dpY2FsSGVpZ2h0QmVmb3JlTGF5b3V0LCB0cnVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCAwNDNmNDhkNjNhMzcuLjQ3
MmFiOTkzOGViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAt
MzA1LDcgKzMwNSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0R3JpZChib29sIHJlbGF5b3V0
Q2hpbGRyZW4pCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFJlbmRlckJsb2NrOjpo
YXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKSBvbmx5IGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGZvciBw
b3NpdGlvbmVkIHN0dWZmLgogICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgY2FjaGluZyB0aGUg
aGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0IHZhbHVlIHRocm91Z2hvdXQgdGhlIGxheW91dC4KICAg
ICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5lZWQgdG8gY2FjaGUgdGhlIGhhc0RlZmluaXRlTG9n
aWNhbEhlaWdodCBpZiB0aGUgY2FsbCBvZiBSZW5kZXJCbG9jazo6aGFzRGVmaW5pdGVMb2dpY2Fs
SGVpZ2h0KCkgY2F1c2VzIGEgcmVsZXZhbnQgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KLSAgICAg
ICAgYm9vbCBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQgPSBSZW5kZXJCbG9jazo6aGFzRGVmaW5p
dGVMb2dpY2FsSGVpZ2h0KCkgfHwgaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSB8fCBjb21w
dXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dp
Y2FsSGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGJvb2wgaGFzRGVmaW5pdGVMb2dp
Y2FsSGVpZ2h0ID0gUmVuZGVyQmxvY2s6Omhhc0RlZmluaXRlTG9naWNhbEhlaWdodCgpIHx8IG92
ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgfHwgY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1h
aW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxvcHQp
OwogCiAgICAgICAgIGF1dG8gYXNwZWN0UmF0aW9CbG9ja1NpemVEZXBlbmRlbnRHcmlkSXRlbXMg
PSBjb21wdXRlQXNwZWN0UmF0aW9EZXBlbmRlbnRBbmRCYXNlbGluZUl0ZW1zKCk7CiAKQEAgLTM0
Miw5ICszNDIsOSBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWQoYm9vbCByZWxheW91dENo
aWxkcmVuKQogICAgICAgICAgICAgICAgIHNob3VsZFJlY29tcHV0ZUhlaWdodCA9IHRydWU7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhdXRvIGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRG
b3JDb250ZW50Qm94ID0gWyZdIHsKLSAgICAgICAgICAgICAgICBpZiAoIWhhc092ZXJyaWRpbmdM
b2dpY2FsSGVpZ2h0KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBhdmFpbGFibGVMb2dp
Y2FsSGVpZ2h0KEV4Y2x1ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChvdmVycmlkaW5n
TG9naWNhbEhlaWdodCgpIC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwgeyB9KTsK
KyAgICAgICAgICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdodCA9IHRoaXMt
Pm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBj
b25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KCpvdmVycmlkaW5nTG9naWNh
bEhlaWdodCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCksIHsgfSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoRXhjbHVkZU1hcmdpbkJvcmRl
clBhZGRpbmcpOwogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGNvbXB1dGVUcmFja1NpemVz
Rm9yRGVmaW5pdGVTaXplKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbjo6Rm9yUm93cywgYXZhaWxh
YmxlTG9naWNhbEhlaWdodEZvckNvbnRlbnRCb3goKSk7CiAgICAgICAgIH0KQEAgLTQzNCw3ICs0
MzQsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dE1hc29ucnkoYm9vbCByZWxheW91dENoaWxk
cmVuKQogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBSZW5kZXJCbG9jazo6aGFzRGVm
aW5pdGVMb2dpY2FsSGVpZ2h0KCkgb25seSBidXQgaXQgZG9lcyBub3Qgd29yayBmb3IgcG9zaXRp
b25lZCBzdHVmZi4KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGNhY2hpbmcgdGhlIGhhc0Rl
ZmluaXRlTG9naWNhbEhlaWdodCB2YWx1ZSB0aHJvdWdob3V0IHRoZSBsYXlvdXQuCiAgICAgICAg
IC8vIEZJWE1FOiBXZSBtaWdodCBuZWVkIHRvIGNhY2hlIHRoZSBoYXNEZWZpbml0ZUxvZ2ljYWxI
ZWlnaHQgaWYgdGhlIGNhbGwgb2YgUmVuZGVyQmxvY2s6Omhhc0RlZmluaXRlTG9naWNhbEhlaWdo
dCgpIGNhdXNlcyBhIHJlbGV2YW50IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uCi0gICAgICAgIGJv
b2wgaGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0ID0gUmVuZGVyQmxvY2s6Omhhc0RlZmluaXRlTG9n
aWNhbEhlaWdodCgpIHx8IGhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgfHwgY29tcHV0ZUNv
bnRlbnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhl
aWdodCgpLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBib29sIGhhc0RlZmluaXRlTG9naWNhbEhl
aWdodCA9IFJlbmRlckJsb2NrOjpoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKSB8fCBvdmVycmlk
aW5nTG9naWNhbEhlaWdodCgpIHx8IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYWluT3JQ
cmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgc3RkOjpudWxsb3B0KTsKIAog
ICAgICAgICBhdXRvIGFzcGVjdFJhdGlvQmxvY2tTaXplRGVwZW5kZW50R3JpZEl0ZW1zID0gY29t
cHV0ZUFzcGVjdFJhdGlvRGVwZW5kZW50QW5kQmFzZWxpbmVJdGVtcygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBlMzc1MTE1OWY5NzguLmJm
ZmUyOWU0MDViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCkBAIC02MDcsOCArNjA3LDggQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0
ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2gKICAgICAgICAg
Ly8gRm9yIGZsZXggb3IgZ3JpZCBpdGVtcyB3aGVyZSB0aGUgbG9naWNhbCBoZWlnaHQgaGFzIGJl
ZW4gb3ZlcnJpZGVuIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGF0IHNpemUgdG8gY29tcHV0ZSB0aGUg
cmVwbGFjZWQgd2lkdGggYXMgbG9uZyBhcyB0aGUgZmxleCBvcgogICAgICAgICAvLyBncmlkIGl0
ZW0gaGFzIGFuIGludHJpbnNpYyBzaXplLiBJdCBpcyBwb3NzaWJsZSAoaW5kZWVkLCBjb21tb24p
IGZvciBhbiBTVkcgZ3JhcGhpYyB0byBoYXZlIGFuIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gYnV0
IG5vdCB0byBoYXZlIGFuIGludHJpbnNpYwogICAgICAgICAvLyB3aWR0aCBvciBoZWlnaHQuIFRo
ZXJlIGFyZSBhbHNvIGVsZW1lbnRzIHdpdGggaW50cmluc2ljIHNpemVzIGJ1dCB3aXRob3V0IGlu
dHJpbnNpYyByYXRpbyAobGlrZSBhbiBpZnJhbWUpLgotICAgICAgICBpZiAoIWludHJpbnNpY1Jh
dGlvLmlzRW1wdHkoKSAmJiAoaXNGbGV4SXRlbSgpIHx8IGlzR3JpZEl0ZW0oKSkgJiYgaGFzT3Zl
cnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSAmJiBoYXNJbnRyaW5zaWNTaXplKGNvbnRlbnRSZW5kZXJl
ciwgaGFzSW50cmluc2ljV2lkdGgsIGhhc0ludHJpbnNpY0hlaWdodCkpCi0gICAgICAgICAgICBy
ZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKG92
ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdodChvdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKSAq
IGludHJpbnNpY1JhdGlvLmFzcGVjdFJhdGlvRG91YmxlKCksIHNob3VsZENvbXB1dGVQcmVmZXJy
ZWQpOworICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdodCA9ICghaW50cmlu
c2ljUmF0aW8uaXNFbXB0eSgpICYmIChpc0ZsZXhJdGVtKCkgfHwgaXNHcmlkSXRlbSgpKSAmJiBo
YXNJbnRyaW5zaWNTaXplKGNvbnRlbnRSZW5kZXJlciwgaGFzSW50cmluc2ljV2lkdGgsIGhhc0lu
dHJpbnNpY0hlaWdodCkgPyB0aGlzLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIDogc3RkOjpu
dWxsb3B0KSkKKyAgICAgICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhS
ZXNwZWN0aW5nTWluTWF4V2lkdGgob3ZlcnJpZGluZ0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCpvdmVy
cmlkaW5nTG9naWNhbEhlaWdodCkgKiBpbnRyaW5zaWNSYXRpby5hc3BlY3RSYXRpb0RvdWJsZSgp
LCBzaG91bGRDb21wdXRlUHJlZmVycmVkKTsKIAogICAgICAgICAvLyBJZiAnaGVpZ2h0JyBhbmQg
J3dpZHRoJyBib3RoIGhhdmUgY29tcHV0ZWQgdmFsdWVzIG9mICdhdXRvJyBhbmQgdGhlIGVsZW1l
bnQgYWxzbyBoYXMgYW4gaW50cmluc2ljIHdpZHRoLCB0aGVuIHRoYXQgaW50cmluc2ljIHdpZHRo
IGlzIHRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcuCiAgICAgICAgIGlmIChjb21wdXRlZEhlaWdo
dElzQXV0byAmJiBoYXNJbnRyaW5zaWNXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCmluZGV4IGZmZDY1MDI3YjczZi4uYjE2ZjNmOTg3ZWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTUyNiw4ICs1MjYsOCBAQCB2b2lk
IFJlbmRlclRhYmxlOjpsYXlvdXQoKQogICAgICAgICBpZiAobG9naWNhbEhlaWdodExlbmd0aC5p
c0ludHJpbnNpYygpIHx8IChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzU3BlY2lmaWVkKCkgJiYgbG9n
aWNhbEhlaWdodExlbmd0aC5pc1Bvc2l0aXZlKCkpKQogICAgICAgICAgICAgY29tcHV0ZWRMb2dp
Y2FsSGVpZ2h0ID0gY29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRIZWlnaHQobG9n
aWNhbEhlaWdodExlbmd0aCk7CiAKLSAgICAgICAgaWYgKGhhc092ZXJyaWRpbmdMb2dpY2FsSGVp
Z2h0KCkpCi0gICAgICAgICAgICBjb21wdXRlZExvZ2ljYWxIZWlnaHQgPSBzdGQ6Om1heChjb21w
dXRlZExvZ2ljYWxIZWlnaHQsIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQ
YWRkaW5nQWZ0ZXIgLSBzdW1DYXB0aW9uc0xvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgIGlmIChh
dXRvIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0ID0gdGhpcy0+b3ZlcnJpZGluZ0xvZ2ljYWxIZWln
aHQoKSkKKyAgICAgICAgICAgIGNvbXB1dGVkTG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4KGNvbXB1
dGVkTG9naWNhbEhlaWdodCwgKm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0IC0gYm9yZGVyQW5kUGFk
ZGluZ0FmdGVyIC0gc3VtQ2FwdGlvbnNMb2dpY2FsSGVpZ2h0KCkpOwogCiAgICAgICAgIExlbmd0
aCBsb2dpY2FsTWF4SGVpZ2h0TGVuZ3RoID0gc3R5bGUoKS5sb2dpY2FsTWF4SGVpZ2h0KCk7CiAg
ICAgICAgIGlmIChsb2dpY2FsTWF4SGVpZ2h0TGVuZ3RoLmlzRmlsbEF2YWlsYWJsZSgpIHx8IChs
b2dpY2FsTWF4SGVpZ2h0TGVuZ3RoLmlzU3BlY2lmaWVkKCkgJiYgIWxvZ2ljYWxNYXhIZWlnaHRM
ZW5ndGguaXNOZWdhdGl2ZSgpCkBAIC01NTMsNyArNTUzLDEyIEBAIHZvaWQgUmVuZGVyVGFibGU6
OmxheW91dCgpCiAgICAgICAgICAgICAvLyBDb21wbGV0ZWx5IGVtcHR5IHRhYmxlcyAod2l0aCBu
byBzZWN0aW9ucyBvciBhbnl0aGluZykgc2hvdWxkIGF0IGxlYXN0IGhvbm9yIHRoZWlyCiAgICAg
ICAgICAgICAvLyBvdmVycmlkaW5nIG9yIHNwZWNpZmllZCBoZWlnaHQgaW4gc3RyaWN0IG1vZGUs
IGJ1dCB0aGlzIHZhbHVlIHdpbGwgbm90IGJlIGNhY2hlZC4KICAgICAgICAgICAgIHNob3VsZENh
Y2hlSW50cmluc2ljQ29udGVudExvZ2ljYWxIZWlnaHRGb3JGbGV4SXRlbSA9IGZhbHNlOwotICAg
ICAgICAgICAgc2V0TG9naWNhbEhlaWdodChoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpID8g
b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmdBZnRlciA6IGxvZ2lj
YWxIZWlnaHQoKSArIGNvbXB1dGVkTG9naWNhbEhlaWdodCk7CisgICAgICAgICAgICBhdXRvIHRh
YmxlTG9naWNhbEhlaWdodCA9IFsmXSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3ZlcnJp
ZGluZ0xvZ2ljYWxIZWlnaHQgPSB0aGlzLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0IC0gYm9yZGVy
QW5kUGFkZGluZ0FmdGVyOworICAgICAgICAgICAgICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0KCkg
KyBjb21wdXRlZExvZ2ljYWxIZWlnaHQ7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgc2V0
TG9naWNhbEhlaWdodCh0YWJsZUxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBMYXlvdXRVbml0IHNlY3Rpb25Mb2dpY2FsTGVmdCA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpID8gYm9yZGVyU3RhcnQoKSA6IGJvcmRlckVuZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBhNTllODZmMTBhYTku
LjAyMjE5YjAzNjc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxl
U2VjdGlvbjo6Y2FsY1Jvd0xvZ2ljYWxIZWlnaHQoKQogICAgICAgICAgICAgICAgIC8vIEZvciBy
b3cgc3Bhbm5pbmcgY2VsbHMsIHxyfCBpcyB0aGUgbGFzdCByb3cgaW4gdGhlIHNwYW4uCiAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2VsbFN0YXJ0Um93ID0gY2VsbC0+cm93SW5kZXgoKTsKIAot
ICAgICAgICAgICAgICAgIGlmIChjZWxsLT5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGNlbGwtPm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgY2VsbC0+Y2xlYXJJbnRyaW5zaWNQYWRkaW5nKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGNlbGwtPmNsZWFyT3ZlcnJpZGluZ0NvbnRlbnRTaXplKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGNlbGwtPnNldENoaWxkTmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>471331</attachid>
            <date>2024-05-08 20:08:00 -0700</date>
            <delta_ts>2024-05-09 05:06:41 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-273885-20240508200759.patch</filename>
            <type>text/plain</type>
            <size>31860</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBlZDU0MDhiODhmMTU5MDliMGFlZDY1ZmRlMzQ2ODUyYTJhOTk1MmVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgOCBNYXkgMjAyNCAxMjo0MDo1MCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtDbGVhbnVw
XSBSZW1vdmUgUmVuZGVyQm94OjpoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodAogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3Mzg4NQoKUmV2aWV3ZWQgYnkgU2ltb24g
RnJhc2VyLgoKVGhpcyBwYXRjaCBlbGltaW5hdGVzIGEgcmVkdW5kYW50IGhhc2ggbG9va3VwIGJ5
CjEuIHJlbW92aW5nIFJlbmRlckJveDo6aGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQgYW5kCjIu
IGNoYW5naW5nIHRoZSByZXR1cm4gdHlwZSBvZiBSZW5kZXJCb3g6Om92ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0IGZyb20gTGF5b3V0VW5pdCB0byBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+CgpzbyB0
aGF0IHRoZSBmb2xsb3dpbmcgKGhpZ2hseSBjb21tb24pIHBhdHRlcm4KICBpZiAoaGFzT3ZlcnJp
ZGluZ0xvZ2ljYWxIZWlnaHQoKSkKICAgIC4uLiArIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkg
KyAuLi4KCmNhbiBiZSB0dXJuZWQgaW50bwogIGlmIChhdXRvIG92ZXJyaWRpbmdMb2dpY2FsSGVp
Z2h0ID0gdGhpcy0+b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSkKICAgIC4uLiArICpvdmVycmlk
aW5nTG9naWNhbEhlaWdodCArIC4uLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwOgooV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRG
b3JQZXJjZW50YWdlQ29tcHV0YXRpb24gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwOgooV2ViQ29yZTo6UmVuZGVyQm94OjpvdmVycmlkaW5nTG9naWNhbEhl
aWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OnBlcnBlbmRpY3VsYXJDb250YWluaW5n
QmxvY2tMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FjaGVJbnRy
aW5zaWNDb250ZW50TG9naWNhbEhlaWdodEZvckZsZXhJdGVtIGNvbnN0KToKKFdlYkNvcmU6OlJl
bmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94
Ojpjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVy
Qm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcgY29uc3QpOgooV2ViQ29yZTo6
UmVuZGVyQm94OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcgY29uc3QpOgooV2ViQ29yZTo6
UmVuZGVyQm94OjpzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvIGNvbnN0
KToKKFdlYkNvcmU6OlJlbmRlckJveDo6aGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQgY29uc3Qp
OiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKFdl
YkNvcmU6OmhlaWdodEZvckNoaWxkKToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwOgooV2ViQ29yZTo6T3ZlcnJpZGluZ1NpemVzU2NvcGU6Ok92ZXJyaWRp
bmdTaXplc1Njb3BlKToKKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojp1c2VkQ2hpbGRPdmVy
cmlkaW5nQ3Jvc3NTaXplRm9yUGVyY2VudGFnZVJlc29sdXRpb24pOgooV2ViQ29yZTo6UmVuZGVy
RmxleGlibGVCb3g6OnVzZWRDaGlsZE92ZXJyaWRpbmdNYWluU2l6ZUZvclBlcmNlbnRhZ2VSZXNv
bHV0aW9uKToKKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjphcHBseVN0cmV0Y2hBbGlnbm1l
bnRUb0NoaWxkKToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CihX
ZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRHcmlkKToKKFdlYkNvcmU6OlJlbmRlckdyaWQ6Omxh
eW91dE1hc29ucnkpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHA6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6cGFpbnQpOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CihXZWJDb3JlOjpSZW5kZXJUYWJsZTo6bGF5b3V0KToK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKFdlYkNv
cmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0xvZ2ljYWxIZWlnaHQpOgotLS0KIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgICAgICB8IDg5ICsrKysrKysrKyst
LS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwICAgICAgICB8
IDUwICsrKysrLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggICAg
ICAgICAgfCAgMyArLQogLi4uL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gu
Y3BwIHwgIDQgKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAg
ICB8IDIxICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgICAg
ICAgfCAxMCArLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAg
ICB8ICA0ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwICAgICAg
fCAxMSArKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwICB8
ICAyICstCiA5IGZpbGVzIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDk5IGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDI3OWU3NDYx
NmRjYy4uZDg2MWRkOGRiZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKQEAgLTMxOTYsNTIgKzMxOTYsNTcgQEAgYm9vbCBSZW5kZXJCbG9jazo6aGFzRGVmaW5p
dGVMb2dpY2FsSGVpZ2h0KCkgY29uc3QKIAogc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJCbG9jazo6YXZhaWxhYmxlTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbigp
IGNvbnN0CiB7Ci0gICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVIZWlnaHQ7
Ci0gICAgCiAgICAgLy8gRm9yIGFub255bW91cyBibG9ja3MgdGhhdCBhcmUgc2tpcHBlZCBkdXJp
bmcgcGVyY2VudGFnZSBoZWlnaHQgY2FsY3VsYXRpb24sCiAgICAgLy8gd2UgY29uc2lkZXIgdGhl
bSB0byBoYXZlIGFuIGluZGVmaW5pdGUgaGVpZ2h0LgogICAgIGlmIChza2lwQ29udGFpbmluZ0Js
b2NrRm9yUGVyY2VudEhlaWdodENhbGN1bGF0aW9uKCp0aGlzLCBmYWxzZSkpCi0gICAgICAgIHJl
dHVybiBhdmFpbGFibGVIZWlnaHQ7Ci0gICAgCi0gICAgY29uc3QgYXV0byYgc3R5bGVUb1VzZSA9
IHN0eWxlKCk7Ci0gICAgCi0gICAgLy8gQSBwb3NpdGlvbmVkIGVsZW1lbnQgdGhhdCBzcGVjaWZp
ZWQgYm90aCB0b3AvYm90dG9tIG9yIHRoYXQgc3BlY2lmaWVzCi0gICAgLy8gaGVpZ2h0IHNob3Vs
ZCBiZSB0cmVhdGVkIGFzIHRob3VnaCBpdCBoYXMgYSBoZWlnaHQgZXhwbGljaXRseSBzcGVjaWZp
ZWQKLSAgICAvLyB0aGF0IGNhbiBiZSB1c2VkIGZvciBhbnkgcGVyY2VudGFnZSBjb21wdXRhdGlv
bnMuCi0gICAgYm9vbCBpc091dE9mRmxvd1Bvc2l0aW9uZWRXaXRoU3BlY2lmaWVkSGVpZ2h0ID0g
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgKCFzdHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKS5p
c0F1dG8oKSB8fCAoIXN0eWxlVG9Vc2UubG9naWNhbFRvcCgpLmlzQXV0bygpICYmICFzdHlsZVRv
VXNlLmxvZ2ljYWxCb3R0b20oKS5pc0F1dG8oKSkpOwotICAgIAotICAgIGlmIChhdXRvIHVzZWRD
aGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZVJlc29sdXRpb25Gb3JGbGV4
ID0gKGlzRmxleEl0ZW0oKSA/IGRvd25jYXN0PFJlbmRlckZsZXhpYmxlQm94PihwYXJlbnQoKSkt
PnVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZVJlc29sdXRpb24o
KnRoaXMpIDogc3RkOjpudWxsb3B0KSkKLSAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gb3ZlcnJp
ZGluZ0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCp1c2VkQ2hpbGRPdmVycmlkaW5nTG9naWNhbEhlaWdo
dEZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uRm9yRmxleCk7Ci0gICAgZWxzZSBpZiAoaXNHcmlkSXRl
bSgpICYmIGhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCi0gICAgICAgIGF2YWlsYWJsZUhl
aWdodCA9IG92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdodChvdmVycmlkaW5nTG9naWNhbEhl
aWdodCgpKTsKLSAgICBlbHNlIGlmIChzdHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKS5pc0ZpeGVk
KCkpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVpZ2h0ID0gYWRqdXN0Q29udGVu
dEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoKExheW91dFVuaXQpc3R5bGVUb1VzZS5sb2dp
Y2FsSGVpZ2h0KCkudmFsdWUoKSk7Ci0gICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6bWF4
KDBfbHUsIGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoY29udGVudEJv
eEhlaWdodCAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwgc3RkOjpudWxsb3B0KSk7Ci0gICAg
fSBlbHNlIGlmIChzaG91bGRDb21wdXRlTG9naWNhbEhlaWdodEZyb21Bc3BlY3RSYXRpbygpKSB7
Ci0gICAgICAgIC8vIE9ubHkgZ3JpZCBpcyBleHBlY3RlZCB0byBiZSBpbiBhIHN0YXRlIHdoZXJl
IGl0IGlzIGNhbGN1bGF0aW5nIHByZWYgd2lkdGggYW5kIGhhdmluZyB1bmtub3duIGxvZ2ljYWwg
d2lkdGguCi0gICAgICAgIGlmIChpc1JlbmRlckdyaWQoKSAmJiBwcmVmZXJyZWRMb2dpY2FsV2lk
dGhzRGlydHkoKSAmJiAhc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc1NwZWNpZmllZCgpKQotICAg
ICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUhlaWdodDsKLSAgICAgICAgYXZhaWxhYmxlSGVpZ2h0
ID0gYmxvY2tTaXplRnJvbUFzcGVjdFJhdGlvKGhvcml6b250YWxCb3JkZXJBbmRQYWRkaW5nRXh0
ZW50KCksIHZlcnRpY2FsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpLCBMYXlvdXRVbml0KHN0eWxl
KCkubG9naWNhbEFzcGVjdFJhdGlvKCkpLCBzdHlsZSgpLmJveFNpemluZ0ZvckFzcGVjdFJhdGlv
KCksIGxvZ2ljYWxXaWR0aCgpLCBzdHlsZSgpLmFzcGVjdFJhdGlvVHlwZSgpLCBpc1JlbmRlclJl
cGxhY2VkKCkpOwotICAgIH0gZWxzZSBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkV2l0aFNwZWNp
ZmllZEhlaWdodCkgewotICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRvIGFmZmVjdCB0aGUg
YmxvY2snIHNpemUoKSBtZW1iZXIgdmFyaWFibGUsIHNpbmNlIHRoaXMKLSAgICAgICAgLy8gY2Fu
IGdldCBjYWxsZWQgd2hpbGUgdGhlIGJsb2NrIGlzIHN0aWxsIGxheWluZyBvdXQgaXRzIGtpZHMu
Ci0gICAgICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlZFZhbHVlcyA9IGNv
bXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSwgMF9sdSk7Ci0gICAgICAgIGF2YWls
YWJsZUhlaWdodCA9IHN0ZDo6bWF4KDBfbHUsIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50IC0gYm9y
ZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSk7
Ci0gICAgfSBlbHNlIGlmIChzdHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNlbnRPckNh
bGN1bGF0ZWQoKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodFdp
dGhTY3JvbGxiYXIgPSBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGVUb1VzZS5s
b2dpY2FsSGVpZ2h0KCkpOwotICAgICAgICBpZiAoaGVpZ2h0V2l0aFNjcm9sbGJhcikgewotICAg
ICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVpZ2h0V2l0aFNjcm9sbGJhciA9IGFkanVz
dENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGhlaWdodFdpdGhTY3JvbGxiYXIu
dmFsdWUoKSk7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGFkanVzdCBmb3IgbWluL21heCBo
ZWlnaHQgYmVjYXVzZSB0aGlzIG1ldGhvZCBkb2VzIG5vdAotICAgICAgICAgICAgLy8gaGFuZGxl
IHRoZSBtaW4vbWF4IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBpdHMgY2FsbGVyIGRvZXMuIFNvIHRo
ZQotICAgICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGZyb20gdGhlIHJlY3Vyc2l2ZSBjYWxsIHdp
bGwgbm90IGhhdmUgYmVlbiBhZGp1c3RlZAotICAgICAgICAgICAgLy8geWV0LgotICAgICAgICAg
ICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVpZ2h0ID0gY29uc3RyYWluQ29udGVudEJveExvZ2lj
YWxIZWlnaHRCeU1pbk1heChjb250ZW50Qm94SGVpZ2h0V2l0aFNjcm9sbGJhciAtIHNjcm9sbGJh
ckxvZ2ljYWxIZWlnaHQoKSwgc3RkOjpudWxsb3B0KTsKLSAgICAgICAgICAgIGF2YWlsYWJsZUhl
aWdodCA9IHN0ZDo6bWF4KDBfbHUsIGNvbnRlbnRCb3hIZWlnaHQpOworICAgICAgICByZXR1cm4g
eyB9OworCisgICAgYXV0byBhdmFpbGFibGVIZWlnaHQgPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IHsKKyAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRG
b3JGbGV4ID0gKGlzRmxleEl0ZW0oKSA/IGRvd25jYXN0PFJlbmRlckZsZXhpYmxlQm94PihwYXJl
bnQoKSktPnVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZVJlc29s
dXRpb24oKnRoaXMpIDogc3RkOjpudWxsb3B0KSkKKyAgICAgICAgICAgIHJldHVybiBvdmVycmlk
aW5nQ29udGVudExvZ2ljYWxIZWlnaHQoKm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yRmxleCk7
CisKKyAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRGb3JHcmlkID0gKGlz
R3JpZEl0ZW0oKSA/IG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgOiBzdGQ6Om51bGxvcHQpKQor
ICAgICAgICAgICAgcmV0dXJuIG92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdodCgqb3ZlcnJp
ZGluZ0xvZ2ljYWxIZWlnaHRGb3JHcmlkKTsKKworICAgICAgICBhdXRvJiBzdHlsZSA9IHRoaXMt
PnN0eWxlKCk7CisgICAgICAgIGlmIChzdHlsZS5sb2dpY2FsSGVpZ2h0KCkuaXNGaXhlZCgpKSB7
CisgICAgICAgICAgICBhdXRvIGNvbnRlbnRCb3hIZWlnaHQgPSBhZGp1c3RDb250ZW50Qm94TG9n
aWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0IHsgc3R5bGUubG9naWNhbEhlaWdodCgp
LnZhbHVlKCkgfSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgoMF9sdSwgY29uc3RyYWlu
Q29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50Qm94SGVpZ2h0IC0gc2Nyb2xs
YmFyTG9naWNhbEhlaWdodCgpLCB7IH0pKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoaXNS
ZW5kZXJWaWV3KCkpCi0gICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHZpZXcoKS5wYWdlT3JWaWV3
TG9naWNhbEhlaWdodCgpOwotICAgIAotICAgIHJldHVybiBhdmFpbGFibGVIZWlnaHQ7CisKKyAg
ICAgICAgaWYgKHNob3VsZENvbXB1dGVMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvKCkpIHsK
KyAgICAgICAgICAgIC8vIE9ubHkgZ3JpZCBpcyBleHBlY3RlZCB0byBiZSBpbiBhIHN0YXRlIHdo
ZXJlIGl0IGlzIGNhbGN1bGF0aW5nIHByZWYgd2lkdGggYW5kIGhhdmluZyB1bmtub3duIGxvZ2lj
YWwgd2lkdGguCisgICAgICAgICAgICBpZiAoaXNSZW5kZXJHcmlkKCkgJiYgcHJlZmVycmVkTG9n
aWNhbFdpZHRoc0RpcnR5KCkgJiYgIXN0eWxlLmxvZ2ljYWxXaWR0aCgpLmlzU3BlY2lmaWVkKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIHJldHVybiBibG9ja1Np
emVGcm9tQXNwZWN0UmF0aW8oaG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSwgdmVy
dGljYWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCksIExheW91dFVuaXQgeyBzdHlsZS5sb2dpY2Fs
QXNwZWN0UmF0aW8oKSB9LCBzdHlsZS5ib3hTaXppbmdGb3JBc3BlY3RSYXRpbygpLCBsb2dpY2Fs
V2lkdGgoKSwgc3R5bGUuYXNwZWN0UmF0aW9UeXBlKCksIGlzUmVuZGVyUmVwbGFjZWQoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBBIHBvc2l0aW9uZWQgZWxlbWVudCB0aGF0IHNwZWNpZmll
ZCBib3RoIHRvcC9ib3R0b20gb3IgdGhhdCBzcGVjaWZpZXMKKyAgICAgICAgLy8gaGVpZ2h0IHNo
b3VsZCBiZSB0cmVhdGVkIGFzIHRob3VnaCBpdCBoYXMgYSBoZWlnaHQgZXhwbGljaXRseSBzcGVj
aWZpZWQKKyAgICAgICAgLy8gdGhhdCBjYW4gYmUgdXNlZCBmb3IgYW55IHBlcmNlbnRhZ2UgY29t
cHV0YXRpb25zLgorICAgICAgICBhdXRvIGlzT3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZp
ZWRIZWlnaHQgPSBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAoIXN0eWxlLmxvZ2ljYWxIZWln
aHQoKS5pc0F1dG8oKSB8fCAoIXN0eWxlLmxvZ2ljYWxUb3AoKS5pc0F1dG8oKSAmJiAhc3R5bGUu
bG9naWNhbEJvdHRvbSgpLmlzQXV0bygpKSk7CisgICAgICAgIGlmIChpc091dE9mRmxvd1Bvc2l0
aW9uZWRXaXRoU3BlY2lmaWVkSGVpZ2h0KSB7CisgICAgICAgICAgICAvLyBEb24ndCBhbGxvdyB0
aGlzIHRvIGFmZmVjdCB0aGUgYmxvY2snIHNpemUoKSBtZW1iZXIgdmFyaWFibGUsIHNpbmNlIHRo
aXMKKyAgICAgICAgICAgIC8vIGNhbiBnZXQgY2FsbGVkIHdoaWxlIHRoZSBibG9jayBpcyBzdGls
bCBsYXlpbmcgb3V0IGl0cyBraWRzLgorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KDBfbHUs
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSwgMF9sdSkubV9leHRlbnQgLSBi
b3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpIC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgp
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdHlsZS5sb2dpY2FsSGVpZ2h0KCkuaXNQZXJj
ZW50T3JDYWxjdWxhdGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGhlaWdodFdpdGhTY3Jv
bGxiYXIgPSBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGUubG9naWNhbEhlaWdo
dCgpKSkgeworICAgICAgICAgICAgICAgIGF1dG8gY29udGVudEJveEhlaWdodFdpdGhTY3JvbGxi
YXIgPSBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhoZWlnaHRXaXRo
U2Nyb2xsYmFyLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0
IGZvciBtaW4vbWF4IGhlaWdodCBiZWNhdXNlIHRoaXMgbWV0aG9kIGRvZXMgbm90IGhhbmRsZSB0
aGUgbWluL21heCBvZiB0aGUgY3VycmVudCBibG9jaywgaXRzIGNhbGxlciBkb2VzLgorICAgICAg
ICAgICAgICAgIC8vIFNvIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgcmVjdXJzaXZlIGNhbGwg
d2lsbCBub3QgaGF2ZSBiZWVuIGFkanVzdGVkIHlldC4KKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjptYXgoMF9sdSwgY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChj
b250ZW50Qm94SGVpZ2h0V2l0aFNjcm9sbGJhciAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwg
eyB9KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGlzUmVuZGVyVmlldygpKQorICAgICAgICAgICAgcmV0dXJuIHZpZXco
KS5wYWdlT3JWaWV3TG9naWNhbEhlaWdodCgpOworCisgICAgICAgIHJldHVybiB7IH07CisgICAg
fTsKKyAgICByZXR1cm4gYXZhaWxhYmxlSGVpZ2h0KCk7CiB9CiAgICAgCiB2b2lkIFJlbmRlckJs
b2NrOjpsYXlvdXRFeGNsdWRlZENoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNTQyMDhkNjQyOTIzLi41YTMyYzEz
MjYwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMjcxLDEx
ICsxMjcxLDYgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6Om1heFByZWZlcnJlZExvZ2ljYWxXaWR0
aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoOwogfQogCi1i
b29sIFJlbmRlckJveDo6aGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSBjb25zdAotewotICAg
IHJldHVybiBnT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRNYXAgJiYgZ092ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0TWFwLT5jb250YWlucygqdGhpcyk7Ci19Ci0KIGJvb2wgUmVuZGVyQm94OjpoYXNPdmVy
cmlkaW5nTG9naWNhbFdpZHRoKCkgY29uc3QKIHsKICAgICByZXR1cm4gZ092ZXJyaWRpbmdMb2dp
Y2FsV2lkdGhNYXAgJiYgZ092ZXJyaWRpbmdMb2dpY2FsV2lkdGhNYXAtPmNvbnRhaW5zKCp0aGlz
KTsKQEAgLTEzMTksMTAgKzEzMTQsMTEgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6Om92ZXJyaWRp
bmdMb2dpY2FsV2lkdGgoKSBjb25zdAogICAgIHJldHVybiBnT3ZlcnJpZGluZ0xvZ2ljYWxXaWR0
aE1hcC0+Z2V0KCp0aGlzKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3g6Om92ZXJyaWRpbmdM
b2dpY2FsSGVpZ2h0KCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94
OjpvdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc092ZXJy
aWRpbmdMb2dpY2FsSGVpZ2h0KCkpOwotICAgIHJldHVybiBnT3ZlcnJpZGluZ0xvZ2ljYWxIZWln
aHRNYXAtPmdldCgqdGhpcyk7CisgICAgaWYgKCFnT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRNYXAp
CisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIGdPdmVycmlkaW5nTG9naWNhbEhlaWdo
dE1hcC0+Z2V0T3B0aW9uYWwoKnRoaXMpOwogfQogCiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlckJveDo6b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpIGNvbnN0
CkBAIC0yMzY4LDI0ICsyMzY0LDI0IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjpwZXJwZW5kaWN1
bGFyQ29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCgpIGNvbnN0CiAgICAgICAgICAgICByZXR1
cm4gaGVpZ2h0LnZhbHVlKCk7CiAgICAgfQogCi0gICAgUmVuZGVyQmxvY2sqIGNiID0gY29udGFp
bmluZ0Jsb2NrKCk7Ci0gICAgaWYgKGNiLT5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQot
ICAgICAgICByZXR1cm4gY2ItPm92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdodChjYi0+b3Zl
cnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CisgICAgYXV0byogY29udGFpbmluZ0Jsb2NrID0gdGhp
cy0+Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWln
aHQgPSBjb250YWluaW5nQmxvY2stPm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCisgICAgICAg
IHJldHVybiBjb250YWluaW5nQmxvY2stPm92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdodCgq
b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQpOwogCi0gICAgY29uc3QgUmVuZGVyU3R5bGUmIGNvbnRh
aW5pbmdCbG9ja1N0eWxlID0gY2ItPnN0eWxlKCk7CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIGNv
bnRhaW5pbmdCbG9ja1N0eWxlID0gY29udGFpbmluZ0Jsb2NrLT5zdHlsZSgpOwogICAgIExlbmd0
aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoID0gY29udGFpbmluZ0Jsb2NrU3R5bGUubG9naWNhbEhlaWdo
dCgpOwogCiAgICAgLy8gRklYTUU6IEZvciBub3cganVzdCBzdXBwb3J0IGZpeGVkIGhlaWdodHMu
ICBFdmVudHVhbGx5IHNob3VsZCBzdXBwb3J0IHBlcmNlbnRhZ2UgaGVpZ2h0cyBhcyB3ZWxsLgog
ICAgIGlmICghbG9naWNhbEhlaWdodExlbmd0aC5pc0ZpeGVkKCkpIHsKICAgICAgICAgTGF5b3V0
VW5pdCBmaWxsRmFsbGJhY2tFeHRlbnQgPSBjb250YWluaW5nQmxvY2tTdHlsZS5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gdmlldygpLmZyYW1lVmlldygpLmxheW91dFNpemUoKS5oZWlnaHQo
KSA6IHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRTaXplKCkud2lkdGgoKTsKLSAgICAgICAgTGF5
b3V0VW5pdCBmaWxsQXZhaWxhYmxlRXh0ZW50ID0gY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJs
ZUxvZ2ljYWxIZWlnaHQoRXhjbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOworICAgICAgICBMYXlv
dXRVbml0IGZpbGxBdmFpbGFibGVFeHRlbnQgPSBjb250YWluaW5nQmxvY2stPmF2YWlsYWJsZUxv
Z2ljYWxIZWlnaHQoRXhjbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOwogICAgICAgICB2aWV3KCku
YWRkUGVyY2VudEhlaWdodERlc2NlbmRhbnQoY29uc3RfY2FzdDxSZW5kZXJCb3gmPigqdGhpcykp
OwogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1ODI4NiBXZSBhbHNvIG5lZWQgdG8gcGVyZm9ybSB0aGUgc2FtZSBwZXJjZW50SGVpZ2h0
RGVzY2VuZGFudCB0cmVhdG1lbnQgdG8gdGhlIGVsZW1lbnQgd2hpY2ggZGljdGF0ZXMgdGhlIHJl
dHVybiB2YWx1ZSBmb3IgY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQo
KSBhYm92ZS4KICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGZpbGxBdmFpbGFibGVFeHRlbnQsIGZp
bGxGYWxsYmFja0V4dGVudCk7CiAgICAgfQogCiAgICAgLy8gVXNlIHRoZSBjb250ZW50IGJveCBs
b2dpY2FsIGhlaWdodCBhcyBzcGVjaWZpZWQgYnkgdGhlIHN0eWxlLgotICAgIHJldHVybiBjYi0+
YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdChsb2dp
Y2FsSGVpZ2h0TGVuZ3RoLnZhbHVlKCkpKTsKKyAgICByZXR1cm4gY29udGFpbmluZ0Jsb2NrLT5h
ZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0KGxvZ2lj
YWxIZWlnaHRMZW5ndGgudmFsdWUoKSkpOwogfQogCiB2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5l
ciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0
ZXNNb2RlPiBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKQEAgLTMxMzQsNyArMzEzMCw3IEBA
IHZvaWQgUmVuZGVyQm94OjpjYWNoZUludHJpbnNpY0NvbnRlbnRMb2dpY2FsSGVpZ2h0Rm9yRmxl
eEl0ZW0oTGF5b3V0VW5pdCBoZWlnaHQpCiAgICAgQ2hlY2tlZFB0ciBmbGV4aWJsZUJveCA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJGbGV4aWJsZUJveD4ocGFyZW50KCkpOwogICAgIGlmICghZmxl
eGlibGVCb3gpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoaGFzT3ZlcnJpZGluZ0xvZ2ljYWxI
ZWlnaHQoKSB8fCBzaG91bGRDb21wdXRlTG9naWNhbEhlaWdodEZyb21Bc3BlY3RSYXRpbygpKQor
ICAgIGlmIChvdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIHx8IHNob3VsZENvbXB1dGVMb2dpY2Fs
SGVpZ2h0RnJvbUFzcGVjdFJhdGlvKCkpCiAgICAgICAgIHJldHVybjsKICAgICBmbGV4aWJsZUJv
eC0+c2V0Q2FjaGVkQ2hpbGRJbnRyaW5zaWNDb250ZW50TG9naWNhbEhlaWdodCgqdGhpcywgaGVp
Z2h0KTsKIH0KQEAgLTMyMjAsOSArMzIxNiw5IEBAIFJlbmRlckJveDo6TG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pCiAg
ICAgICAgIC8vIGdyYWIgb3VyIGNhY2hlZCBmbGV4aWJsZSBoZWlnaHQuCiAgICAgICAgIC8vIEZJ
WE1FOiBBY2NvdW50IGZvciBibG9jay1mbG93IGluIGZsZXhpYmxlIGJveGVzLgogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY0MTgKLSAgICAgICAg
aWYgKGhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgJiYgKHBhcmVudCgpLT5pc0ZsZXhpYmxl
Qm94SW5jbHVkaW5nRGVwcmVjYXRlZCgpIHx8IHBhcmVudCgpLT5pc1JlbmRlckdyaWQoKSkpIHsK
LSAgICAgICAgICAgIGggPSBMZW5ndGgob3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpOwotICAgICAgICB9IGVsc2UgaWYgKHRyZWF0QXNSZXBsYWNlZCkKKyAgICAg
ICAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRGb3JGbGV4T3JHcmlkID0gKHBhcmVu
dCgpLT5pc0ZsZXhpYmxlQm94SW5jbHVkaW5nRGVwcmVjYXRlZCgpIHx8IHBhcmVudCgpLT5pc1Jl
bmRlckdyaWQoKSA/IG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgOiBzdGQ6Om51bGxvcHQpKQor
ICAgICAgICAgICAgaCA9IExlbmd0aCgqb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRGb3JGbGV4T3JH
cmlkLCBMZW5ndGhUeXBlOjpGaXhlZCk7CisgICAgICAgIGVsc2UgaWYgKHRyZWF0QXNSZXBsYWNl
ZCkKICAgICAgICAgICAgIGggPSBMZW5ndGgoY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgp
ICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGggPSBsb2dpY2FsSGVpZ2h0SW5Vc2U7CkBAIC0z
NDUyLDEwICszNDQ4LDEwIEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpj
b21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29uc3QgTGVuZ3RoCiAgICAgICAgICAgICAv
LyBUYWJsZSBjZWxscyB2aW9sYXRlIHdoYXQgdGhlIENTUyBzcGVjIHNheXMgdG8gZG8gd2l0aCBo
ZWlnaHRzLiBCYXNpY2FsbHkgd2UKICAgICAgICAgICAgIC8vIGRvbid0IGNhcmUgaWYgdGhlIGNl
bGwgc3BlY2lmaWVkIGEgaGVpZ2h0IG9yIG5vdC4gV2UganVzdCBhbHdheXMgbWFrZSBvdXJzZWx2
ZXMKICAgICAgICAgICAgIC8vIGJlIGEgcGVyY2VudGFnZSBvZiB0aGUgY2VsbCdzIGN1cnJlbnQg
Y29udGVudCBoZWlnaHQuCi0gICAgICAgICAgICBpZiAoIWNiLT5oYXNPdmVycmlkaW5nTG9naWNh
bEhlaWdodCgpKQorICAgICAgICAgICAgYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdodCA9IGNi
LT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpOworICAgICAgICAgICAgaWYgKCFvdmVycmlkaW5n
TG9naWNhbEhlaWdodCkKICAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVDZWxsU2hvdWxkSGF2
ZVplcm9Jbml0aWFsU2l6ZSgqY2IsICp0aGlzLCBzY3JvbGxzT3ZlcmZsb3dZKCkpID8gc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PigwKSA6IHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICAgICAgYXZh
aWxhYmxlSGVpZ2h0ID0gY2ItPm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBjYi0+Y29tcHV0
ZWRDU1NQYWRkaW5nQmVmb3JlKCkgLSBjYi0+Y29tcHV0ZWRDU1NQYWRkaW5nQWZ0ZXIoKSAtIGNi
LT5ib3JkZXJCZWZvcmUoKSAtIGNiLT5ib3JkZXJBZnRlcigpIC0gY2ItPnNjcm9sbGJhckxvZ2lj
YWxIZWlnaHQoKTsKKyAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9ICpvdmVycmlkaW5nTG9n
aWNhbEhlaWdodCAtIGNiLT5jb21wdXRlZENTU1BhZGRpbmdCZWZvcmUoKSAtIGNiLT5jb21wdXRl
ZENTU1BhZGRpbmdBZnRlcigpIC0gY2ItPmJvcmRlckJlZm9yZSgpIC0gY2ItPmJvcmRlckFmdGVy
KCkgLSBjYi0+c2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpOwogICAgICAgICB9CiAgICAgfSBlbHNl
CiAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGNiLT5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9y
UGVyY2VudGFnZUNvbXB1dGF0aW9uKCk7CkBAIC0zNDcxLDcgKzM0NjcsNyBAQCBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0
KGNvbnN0IExlbmd0aAogICAgIC8vIHRoZW4gd2UgbXVzdCBzdWJ0cmFjdCB0aGUgYm9yZGVyIGFu
ZCBwYWRkaW5nIGZyb20gdGhlIGNlbGwncwogICAgIC8vIHxhdmFpbGFibGVIZWlnaHR8IChnaXZl
biBieSB8b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHR8KSB0byBhcnJpdmUKICAgICAvLyBhdCB0aGUg
Y2hpbGQncyBjb21wdXRlZCBoZWlnaHQuCi0gICAgYm9vbCBzdWJ0cmFjdEJvcmRlckFuZFBhZGRp
bmcgPSBpc1JlbmRlclRhYmxlKCkgfHwgKGlzPFJlbmRlclRhYmxlQ2VsbD4oKmNiKSAmJiAhc2tp
cHBlZEF1dG9IZWlnaHRDb250YWluaW5nQmxvY2sgJiYgY2ItPmhhc092ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0KCkgJiYgc3R5bGUoKS5ib3hTaXppbmcoKSA9PSBCb3hTaXppbmc6OkNvbnRlbnRCb3gp
OworICAgIGJvb2wgc3VidHJhY3RCb3JkZXJBbmRQYWRkaW5nID0gaXNSZW5kZXJUYWJsZSgpIHx8
IChpczxSZW5kZXJUYWJsZUNlbGw+KCpjYikgJiYgIXNraXBwZWRBdXRvSGVpZ2h0Q29udGFpbmlu
Z0Jsb2NrICYmIGNiLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpICYmIHN0eWxlKCkuYm94U2l6
aW5nKCkgPT0gQm94U2l6aW5nOjpDb250ZW50Qm94KTsKICAgICBpZiAoc3VidHJhY3RCb3JkZXJB
bmRQYWRkaW5nKSB7CiAgICAgICAgIHJlc3VsdCAtPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhl
aWdodCgpOwogICAgICAgICByZXR1cm4gc3RkOjptYXgoMF9sdSwgcmVzdWx0KTsKQEAgLTM2NjAs
OCArMzY1Niw4IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2Fs
SGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgTGVuCiAgICAgICAgICAgICBibG9jay0+
YWRkUGVyY2VudEhlaWdodERlc2NlbmRhbnQoKmNvbnN0X2Nhc3Q8UmVuZGVyQm94Kj4odGhpcykp
OwogICAgICAgICAgICAgaWYgKGF1dG8gdXNlZENoaWxkT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHRG
b3JQZXJjZW50YWdlUmVzb2x1dGlvbkZvckZsZXggPSAoYmxvY2stPmlzRmxleEl0ZW0oKSA/IGRv
d25jYXN0PFJlbmRlckZsZXhpYmxlQm94PihibG9jay0+cGFyZW50KCkpLT51c2VkQ2hpbGRPdmVy
cmlkaW5nTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VSZXNvbHV0aW9uKCpibG9jaykgOiBzdGQ6
Om51bGxvcHQpKQogICAgICAgICAgICAgICAgIHN0cmV0Y2hlZEhlaWdodCA9IGJsb2NrLT5vdmVy
cmlkaW5nQ29udGVudExvZ2ljYWxIZWlnaHQoKnVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVp
Z2h0Rm9yUGVyY2VudGFnZVJlc29sdXRpb25Gb3JGbGV4KTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KGJsb2NrLT5pc0dyaWRJdGVtKCkgJiYgYmxvY2stPmhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0
KCkgJiYgIWhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2spCi0gICAgICAgICAgICAgICAg
c3RyZXRjaGVkSGVpZ2h0ID0gYmxvY2stPm92ZXJyaWRpbmdDb250ZW50TG9naWNhbEhlaWdodChi
bG9jay0+b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChh
dXRvIHVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yR3JpZCA9IChibG9jay0+aXNH
cmlkSXRlbSgpICYmICFoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrID8gYmxvY2stPm92
ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgOiBzdGQ6Om51bGxvcHQpKQorICAgICAgICAgICAgICAg
IHN0cmV0Y2hlZEhlaWdodCA9IGJsb2NrLT5vdmVycmlkaW5nQ29udGVudExvZ2ljYWxIZWlnaHQo
KnVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yR3JpZCk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWxjdWxhdGlvbiBpcyBub3QgcGF0Y2hlZCBmb3IgYmxv
Y2stZmxvdyB5ZXQuCkBAIC0zNzIyLDggKzM3MTgsOCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6
YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaCwgQXZhaWxhYmxlTG9n
aQogICAgIC8vIGFydGlmaWNpYWxseS4gIFdlJ3JlIGdvaW5nIHRvIHJlbHkgb24gdGhpcyBjZWxs
IGdldHRpbmcgZXhwYW5kZWQgdG8gc29tZSBuZXcKICAgICAvLyBoZWlnaHQsIGFuZCB0aGVuIHdo
ZW4gd2UgbGF5IG91dCBhZ2FpbiB3ZSdsbCB1c2UgdGhlIGNhbGN1bGF0aW9uIGJlbG93LgogICAg
IGlmIChpc1JlbmRlclRhYmxlQ2VsbCgpICYmIChoLmlzQXV0bygpIHx8IGguaXNQZXJjZW50T3JD
YWxjdWxhdGVkKCkpKSB7Ci0gICAgICAgIGlmIChoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgp
KQotICAgICAgICAgICAgcmV0dXJuIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBjb21wdXRl
ZENTU1BhZGRpbmdCZWZvcmUoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ0FmdGVyKCkgLSBib3JkZXJC
ZWZvcmUoKSAtIGJvcmRlckFmdGVyKCkgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CisgICAg
ICAgIGlmIChhdXRvIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0ID0gdGhpcy0+b3ZlcnJpZGluZ0xv
Z2ljYWxIZWlnaHQoKSkKKyAgICAgICAgICAgIHJldHVybiAqb3ZlcnJpZGluZ0xvZ2ljYWxIZWln
aHQgLSBjb21wdXRlZENTU1BhZGRpbmdCZWZvcmUoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ0FmdGVy
KCkgLSBib3JkZXJCZWZvcmUoKSAtIGJvcmRlckFmdGVyKCkgLSBzY3JvbGxiYXJMb2dpY2FsSGVp
Z2h0KCk7CiAgICAgICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5n
TG9naWNhbEhlaWdodCgpOwogICAgIH0KIApAQCAtNTYwMCw3ICs1NTk2LDcgQEAgYm9vbCBSZW5k
ZXJCb3g6OnNob3VsZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8oKSBjb25zdAog
ICAgIGF1dG8gaXNSZXNvbHZhYmxlUGVyY2VudGFnZUhlaWdodCA9IFsmXSB7CiAgICAgICAgIHJl
dHVybiBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSAmJiAo
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgfHwgcGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29s
dmFibGUoKSk7CiAgICAgfTsKLSAgICByZXR1cm4gaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQo
KSB8fCBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvQW5kSW5zZXRzKCp0
aGlzKSB8fCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0ZpeGVkKCkgfHwgaXNSZXNvbHZhYmxl
UGVyY2VudGFnZUhlaWdodCgpOworICAgIHJldHVybiBvdmVycmlkaW5nTG9naWNhbEhlaWdodCgp
IHx8IHNob3VsZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW9BbmRJbnNldHMoKnRo
aXMpIHx8IHN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzRml4ZWQoKSB8fCBpc1Jlc29sdmFibGVQ
ZXJjZW50YWdlSGVpZ2h0KCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlTG9n
aWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvSW50ZXJuYWwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCmluZGV4IDNmMmJiNzc3ZDUwOC4uOGM2ZjViNjVjZGI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0yODEsOCArMjgxLDcgQEAgcHVibGljOgog
ICAgIExheW91dFVuaXQgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBMYXlvdXRVbml0IG92ZXJyaWRpbmdMb2dpY2FsV2lkdGgoKSBjb25zdDsKLSAgICBM
YXlvdXRVbml0IG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNP
dmVycmlkaW5nTG9naWNhbEhlaWdodCgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSBjb25zdDsKICAgICBib29sIGhhc092ZXJy
aWRpbmdMb2dpY2FsV2lkdGgoKSBjb25zdDsKICAgICB2b2lkIHNldE92ZXJyaWRpbmdMb2dpY2Fs
SGVpZ2h0KExheW91dFVuaXQpOwogICAgIHZvaWQgc2V0T3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aChM
YXlvdXRVbml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXggMjE1MjZlZDI1Y2U0Li40YmZjNzU2OWFj
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC0xNjgsOCArMTY4LDggQEAgc3RhdGljIExheW91dFVu
aXQgd2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogCiBzdGF0aWMgTGF5b3V0VW5pdCBo
ZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQogewotICAgIGlmIChjaGlsZC0+aGFzT3Zl
cnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIGNoaWxkLT5vdmVycmlkaW5n
TG9naWNhbEhlaWdodCgpOworICAgIGlmIChhdXRvIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0ID0g
Y2hpbGQtPm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCisgICAgICAgIHJldHVybiAqb3ZlcnJp
ZGluZ0xvZ2ljYWxIZWlnaHQ7CiAgICAgcmV0dXJuIGNoaWxkLT5sb2dpY2FsSGVpZ2h0KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmlu
ZGV4IDU3MjgzMWY0NWQ1ZC4uMmIwNjg5ZGM5YzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTIxNCw4ICsyMTQsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBTRVRfT1JfQ0xFQVJfT1ZFUlJJRElOR19TSVpFKG1fYm94LCBXaWR0aCwg
c2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGF4aXMgPT0gQXhpczo6Qm90aCB8fCBheGlz
ID09IEF4aXM6OkJsb2NrKSB7Ci0gICAgICAgICAgICBpZiAoYm94Lmhhc092ZXJyaWRpbmdMb2dp
Y2FsSGVpZ2h0KCkpCi0gICAgICAgICAgICAgICAgbV9vdmVycmlkaW5nSGVpZ2h0ID0gYm94Lm92
ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAgICBtX292ZXJyaWRpbmdIZWlnaHQg
PSBib3gub3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgICAgIFNFVF9PUl9DTEVB
Ul9PVkVSUklESU5HX1NJWkUobV9ib3gsIEhlaWdodCwgc2l6ZSk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xNjE5LDEwICsxNjE4LDcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJG
bGV4aWJsZUJveDo6dXNlZENoaWxkT3ZlcnJpZGluZ0Nyb3NzU2l6ZUZvclBlcmMKICAgICBBU1NF
UlQobWFpbkF4aXNJc0NoaWxkSW5saW5lQXhpcyhjaGlsZCkpOwogICAgIGlmIChhbGlnbm1lbnRG
b3JDaGlsZChjaGlsZCkgIT0gSXRlbVBvc2l0aW9uOjpTdHJldGNoKQogICAgICAgICByZXR1cm4g
eyB9OwotCi0gICAgaWYgKGNoaWxkLmhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCi0gICAg
ICAgIHJldHVybiBjaGlsZC5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpOwotICAgIHJldHVybiB7
IH07CisgICAgcmV0dXJuIGNoaWxkLm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCk7CiB9CiAKIC8v
IFRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIHdoZW5ldmVyIGEgZGVzY2VuZGFudCBvZiBhIGZs
ZXggaXRlbSB3YW50cyB0byByZXNvbHZlIGEgcGVyY2VudGFnZSBpbiBpdHMKQEAgLTE2MzYsMTEg
KzE2MzIsOCBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojp1
c2VkQ2hpbGRPdmVycmlkaW5nTWFpblNpemVGb3JQZXJjZQogICAgIEFTU0VSVCghbWFpbkF4aXNJ
c0NoaWxkSW5saW5lQXhpcyhjaGlsZCkpOwogCiAgICAgLy8gVGhlIG1haW4gc2l6ZSBvZiBhIGZ1
bGx5IGluZmxleGlibGUgaXRlbSB3aXRoIGEgZGVmaW5pdGUgZmxleCBiYXNpcyBpcywgYnkgZGVm
aW5pdGlvbiwgZGVmaW5pdGUuCi0gICAgaWYgKGNoaWxkLnN0eWxlKCkuZmxleEdyb3coKSA9PSAw
LjAgJiYgY2hpbGQuc3R5bGUoKS5mbGV4U2hyaW5rKCkgPT0gMC4wICYmIGNoaWxkTWFpblNpemVJ
c0RlZmluaXRlKGNoaWxkLCBmbGV4QmFzaXNGb3JDaGlsZChjaGlsZCkpKSB7Ci0gICAgICAgIGlm
IChjaGlsZC5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQotICAgICAgICAgICAgcmV0dXJu
IGNoaWxkLm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfQorICAgIGlmIChjaGlsZC5zdHlsZSgpLmZsZXhHcm93KCkgPT0gMC4wICYmIGNoaWxkLnN0
eWxlKCkuZmxleFNocmluaygpID09IDAuMCAmJiBjaGlsZE1haW5TaXplSXNEZWZpbml0ZShjaGls
ZCwgZmxleEJhc2lzRm9yQ2hpbGQoY2hpbGQpKSkKKyAgICAgICAgcmV0dXJuIGNoaWxkLm92ZXJy
aWRpbmdMb2dpY2FsSGVpZ2h0KCk7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMg
c2VjdGlvbiA5LjguIERlZmluaXRlIGFuZCBJbmRlZmluaXRlIFNpemVzLCBjYXNlIDIpIG9mIHRo
ZSBmbGV4Ym94IHNwZWMuCiAgICAgLy8gSWYgdGhlIGZsZXggY29udGFpbmVyIGhhcyBhIGRlZmlu
aXRlIG1haW4gc2l6ZSB0aGUgZmxleCBpdGVtIHBvc3QtZmxleGluZyBtYWluIHNpemUgaXMgYWxz
byB0cmVhdGVkCkBAIC0xNjQ4LDkgKzE2NDEsNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlckZsZXhpYmxlQm94Ojp1c2VkQ2hpbGRPdmVycmlkaW5nTWFpblNpemVGb3JQZXJjZQog
ICAgIGlmICghY2FuQ29tcHV0ZVBlcmNlbnRhZ2VGbGV4QmFzaXMoY2hpbGQsIExlbmd0aCgwLCBM
ZW5ndGhUeXBlOjpQZXJjZW50KSwgVXBkYXRlUGVyY2VudGFnZUhlaWdodERlc2NlbmRhbnRzOjpZ
ZXMpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgaWYgKGNoaWxkLmhhc092ZXJyaWRpbmdM
b2dpY2FsSGVpZ2h0KCkpCi0gICAgICAgIHJldHVybiBjaGlsZC5vdmVycmlkaW5nTG9naWNhbEhl
aWdodCgpOwotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIGNoaWxkLm92ZXJyaWRpbmdMb2dp
Y2FsSGVpZ2h0KCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGli
bGVCb3g6OnVzZWRDaGlsZE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZVJlc29s
dXRpb24oY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKQEAgLTI1MzMsNyArMjUyNCw3IEBAIHZvaWQg
UmVuZGVyRmxleGlibGVCb3g6OmFwcGx5U3RyZXRjaEFsaWdubWVudFRvQ2hpbGQoUmVuZGVyQm94
JiBjaGlsZCwgTGF5b3V0VW5pCiAgICAgICAgICAgICAvLyBTbywgcmVkbyBpdCBoZXJlLgogICAg
ICAgICAgICAgY2hpbGROZWVkc1JlbGF5b3V0ID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoY2hpbGROZWVkc1JlbGF5b3V0IHx8ICFjaGlsZC5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdo
dCgpKQorICAgICAgICBpZiAoY2hpbGROZWVkc1JlbGF5b3V0IHx8ICFjaGlsZC5vdmVycmlkaW5n
TG9naWNhbEhlaWdodCgpKQogICAgICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0xvZ2ljYWxI
ZWlnaHQoZGVzaXJlZExvZ2ljYWxIZWlnaHQpOwogICAgICAgICBpZiAoY2hpbGROZWVkc1JlbGF5
b3V0KSB7CiAgICAgICAgICAgICBTZXRGb3JTY29wZSByZXNldENoaWxkTG9naWNhbEhlaWdodCht
X3Nob3VsZFJlc2V0Q2hpbGRMb2dpY2FsSGVpZ2h0QmVmb3JlTGF5b3V0LCB0cnVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCAwNDNmNDhkNjNhMzcuLjQ3MmFi
OTkzOGViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMzA1
LDcgKzMwNSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0R3JpZChib29sIHJlbGF5b3V0Q2hp
bGRyZW4pCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFJlbmRlckJsb2NrOjpoYXNE
ZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKSBvbmx5IGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGZvciBwb3Np
dGlvbmVkIHN0dWZmLgogICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgY2FjaGluZyB0aGUgaGFz
RGVmaW5pdGVMb2dpY2FsSGVpZ2h0IHZhbHVlIHRocm91Z2hvdXQgdGhlIGxheW91dC4KICAgICAg
ICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5lZWQgdG8gY2FjaGUgdGhlIGhhc0RlZmluaXRlTG9naWNh
bEhlaWdodCBpZiB0aGUgY2FsbCBvZiBSZW5kZXJCbG9jazo6aGFzRGVmaW5pdGVMb2dpY2FsSGVp
Z2h0KCkgY2F1c2VzIGEgcmVsZXZhbnQgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KLSAgICAgICAg
Ym9vbCBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQgPSBSZW5kZXJCbG9jazo6aGFzRGVmaW5pdGVM
b2dpY2FsSGVpZ2h0KCkgfHwgaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSB8fCBjb21wdXRl
Q29udGVudExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2Fs
SGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGJvb2wgaGFzRGVmaW5pdGVMb2dpY2Fs
SGVpZ2h0ID0gUmVuZGVyQmxvY2s6Omhhc0RlZmluaXRlTG9naWNhbEhlaWdodCgpIHx8IG92ZXJy
aWRpbmdMb2dpY2FsSGVpZ2h0KCkgfHwgY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1haW5P
clByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxvcHQpOwog
CiAgICAgICAgIGF1dG8gYXNwZWN0UmF0aW9CbG9ja1NpemVEZXBlbmRlbnRHcmlkSXRlbXMgPSBj
b21wdXRlQXNwZWN0UmF0aW9EZXBlbmRlbnRBbmRCYXNlbGluZUl0ZW1zKCk7CiAKQEAgLTM0Miw5
ICszNDIsOSBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWQoYm9vbCByZWxheW91dENoaWxk
cmVuKQogICAgICAgICAgICAgICAgIHNob3VsZFJlY29tcHV0ZUhlaWdodCA9IHRydWU7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhdXRvIGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRGb3JD
b250ZW50Qm94ID0gWyZdIHsKLSAgICAgICAgICAgICAgICBpZiAoIWhhc092ZXJyaWRpbmdMb2dp
Y2FsSGVpZ2h0KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBhdmFpbGFibGVMb2dpY2Fs
SGVpZ2h0KEV4Y2x1ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChvdmVycmlkaW5nTG9n
aWNhbEhlaWdodCgpIC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwgeyB9KTsKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdodCA9IHRoaXMtPm92
ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25z
dHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KCpvdmVycmlkaW5nTG9naWNhbEhl
aWdodCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCksIHsgfSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoRXhjbHVkZU1hcmdpbkJvcmRlclBh
ZGRpbmcpOwogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGNvbXB1dGVUcmFja1NpemVzRm9y
RGVmaW5pdGVTaXplKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbjo6Rm9yUm93cywgYXZhaWxhYmxl
TG9naWNhbEhlaWdodEZvckNvbnRlbnRCb3goKSk7CiAgICAgICAgIH0KQEAgLTQzNCw3ICs0MzQs
NyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dE1hc29ucnkoYm9vbCByZWxheW91dENoaWxkcmVu
KQogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBSZW5kZXJCbG9jazo6aGFzRGVmaW5p
dGVMb2dpY2FsSGVpZ2h0KCkgb25seSBidXQgaXQgZG9lcyBub3Qgd29yayBmb3IgcG9zaXRpb25l
ZCBzdHVmZi4KICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGNhY2hpbmcgdGhlIGhhc0RlZmlu
aXRlTG9naWNhbEhlaWdodCB2YWx1ZSB0aHJvdWdob3V0IHRoZSBsYXlvdXQuCiAgICAgICAgIC8v
IEZJWE1FOiBXZSBtaWdodCBuZWVkIHRvIGNhY2hlIHRoZSBoYXNEZWZpbml0ZUxvZ2ljYWxIZWln
aHQgaWYgdGhlIGNhbGwgb2YgUmVuZGVyQmxvY2s6Omhhc0RlZmluaXRlTG9naWNhbEhlaWdodCgp
IGNhdXNlcyBhIHJlbGV2YW50IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uCi0gICAgICAgIGJvb2wg
aGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0ID0gUmVuZGVyQmxvY2s6Omhhc0RlZmluaXRlTG9naWNh
bEhlaWdodCgpIHx8IGhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgfHwgY29tcHV0ZUNvbnRl
bnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdo
dCgpLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBib29sIGhhc0RlZmluaXRlTG9naWNhbEhlaWdo
dCA9IFJlbmRlckJsb2NrOjpoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKSB8fCBvdmVycmlkaW5n
TG9naWNhbEhlaWdodCgpIHx8IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNYWluT3JQcmVm
ZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwgc3RkOjpudWxsb3B0KTsKIAogICAg
ICAgICBhdXRvIGFzcGVjdFJhdGlvQmxvY2tTaXplRGVwZW5kZW50R3JpZEl0ZW1zID0gY29tcHV0
ZUFzcGVjdFJhdGlvRGVwZW5kZW50QW5kQmFzZWxpbmVJdGVtcygpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBlMzc1MTE1OWY5NzguLmJmZmUy
OWU0MDViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3Bw
CkBAIC02MDcsOCArNjA3LDggQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJl
cGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2gKICAgICAgICAgLy8g
Rm9yIGZsZXggb3IgZ3JpZCBpdGVtcyB3aGVyZSB0aGUgbG9naWNhbCBoZWlnaHQgaGFzIGJlZW4g
b3ZlcnJpZGVuIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGF0IHNpemUgdG8gY29tcHV0ZSB0aGUgcmVw
bGFjZWQgd2lkdGggYXMgbG9uZyBhcyB0aGUgZmxleCBvcgogICAgICAgICAvLyBncmlkIGl0ZW0g
aGFzIGFuIGludHJpbnNpYyBzaXplLiBJdCBpcyBwb3NzaWJsZSAoaW5kZWVkLCBjb21tb24pIGZv
ciBhbiBTVkcgZ3JhcGhpYyB0byBoYXZlIGFuIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gYnV0IG5v
dCB0byBoYXZlIGFuIGludHJpbnNpYwogICAgICAgICAvLyB3aWR0aCBvciBoZWlnaHQuIFRoZXJl
IGFyZSBhbHNvIGVsZW1lbnRzIHdpdGggaW50cmluc2ljIHNpemVzIGJ1dCB3aXRob3V0IGludHJp
bnNpYyByYXRpbyAobGlrZSBhbiBpZnJhbWUpLgotICAgICAgICBpZiAoIWludHJpbnNpY1JhdGlv
LmlzRW1wdHkoKSAmJiAoaXNGbGV4SXRlbSgpIHx8IGlzR3JpZEl0ZW0oKSkgJiYgaGFzT3ZlcnJp
ZGluZ0xvZ2ljYWxIZWlnaHQoKSAmJiBoYXNJbnRyaW5zaWNTaXplKGNvbnRlbnRSZW5kZXJlciwg
aGFzSW50cmluc2ljV2lkdGgsIGhhc0ludHJpbnNpY0hlaWdodCkpCi0gICAgICAgICAgICByZXR1
cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKG92ZXJy
aWRpbmdDb250ZW50TG9naWNhbEhlaWdodChvdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKSAqIGlu
dHJpbnNpY1JhdGlvLmFzcGVjdFJhdGlvRG91YmxlKCksIHNob3VsZENvbXB1dGVQcmVmZXJyZWQp
OworICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdodCA9ICghaW50cmluc2lj
UmF0aW8uaXNFbXB0eSgpICYmIChpc0ZsZXhJdGVtKCkgfHwgaXNHcmlkSXRlbSgpKSAmJiBoYXNJ
bnRyaW5zaWNTaXplKGNvbnRlbnRSZW5kZXJlciwgaGFzSW50cmluc2ljV2lkdGgsIGhhc0ludHJp
bnNpY0hlaWdodCkgPyB0aGlzLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIDogc3RkOjpudWxs
b3B0KSkKKyAgICAgICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNw
ZWN0aW5nTWluTWF4V2lkdGgob3ZlcnJpZGluZ0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCpvdmVycmlk
aW5nTG9naWNhbEhlaWdodCkgKiBpbnRyaW5zaWNSYXRpby5hc3BlY3RSYXRpb0RvdWJsZSgpLCBz
aG91bGRDb21wdXRlUHJlZmVycmVkKTsKIAogICAgICAgICAvLyBJZiAnaGVpZ2h0JyBhbmQgJ3dp
ZHRoJyBib3RoIGhhdmUgY29tcHV0ZWQgdmFsdWVzIG9mICdhdXRvJyBhbmQgdGhlIGVsZW1lbnQg
YWxzbyBoYXMgYW4gaW50cmluc2ljIHdpZHRoLCB0aGVuIHRoYXQgaW50cmluc2ljIHdpZHRoIGlz
IHRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcuCiAgICAgICAgIGlmIChjb21wdXRlZEhlaWdodElz
QXV0byAmJiBoYXNJbnRyaW5zaWNXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwCmluZGV4IGZmZDY1MDI3YjczZi4uYjE2ZjNmOTg3ZWFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTUyNiw4ICs1MjYsOCBAQCB2b2lkIFJl
bmRlclRhYmxlOjpsYXlvdXQoKQogICAgICAgICBpZiAobG9naWNhbEhlaWdodExlbmd0aC5pc0lu
dHJpbnNpYygpIHx8IChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzU3BlY2lmaWVkKCkgJiYgbG9naWNh
bEhlaWdodExlbmd0aC5pc1Bvc2l0aXZlKCkpKQogICAgICAgICAgICAgY29tcHV0ZWRMb2dpY2Fs
SGVpZ2h0ID0gY29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRIZWlnaHQobG9naWNh
bEhlaWdodExlbmd0aCk7CiAKLSAgICAgICAgaWYgKGhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0
KCkpCi0gICAgICAgICAgICBjb21wdXRlZExvZ2ljYWxIZWlnaHQgPSBzdGQ6Om1heChjb21wdXRl
ZExvZ2ljYWxIZWlnaHQsIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRk
aW5nQWZ0ZXIgLSBzdW1DYXB0aW9uc0xvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgIGlmIChhdXRv
IG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0ID0gdGhpcy0+b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQo
KSkKKyAgICAgICAgICAgIGNvbXB1dGVkTG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4KGNvbXB1dGVk
TG9naWNhbEhlaWdodCwgKm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0IC0gYm9yZGVyQW5kUGFkZGlu
Z0FmdGVyIC0gc3VtQ2FwdGlvbnNMb2dpY2FsSGVpZ2h0KCkpOwogCiAgICAgICAgIExlbmd0aCBs
b2dpY2FsTWF4SGVpZ2h0TGVuZ3RoID0gc3R5bGUoKS5sb2dpY2FsTWF4SGVpZ2h0KCk7CiAgICAg
ICAgIGlmIChsb2dpY2FsTWF4SGVpZ2h0TGVuZ3RoLmlzRmlsbEF2YWlsYWJsZSgpIHx8IChsb2dp
Y2FsTWF4SGVpZ2h0TGVuZ3RoLmlzU3BlY2lmaWVkKCkgJiYgIWxvZ2ljYWxNYXhIZWlnaHRMZW5n
dGguaXNOZWdhdGl2ZSgpCkBAIC01NTMsNyArNTUzLDEyIEBAIHZvaWQgUmVuZGVyVGFibGU6Omxh
eW91dCgpCiAgICAgICAgICAgICAvLyBDb21wbGV0ZWx5IGVtcHR5IHRhYmxlcyAod2l0aCBubyBz
ZWN0aW9ucyBvciBhbnl0aGluZykgc2hvdWxkIGF0IGxlYXN0IGhvbm9yIHRoZWlyCiAgICAgICAg
ICAgICAvLyBvdmVycmlkaW5nIG9yIHNwZWNpZmllZCBoZWlnaHQgaW4gc3RyaWN0IG1vZGUsIGJ1
dCB0aGlzIHZhbHVlIHdpbGwgbm90IGJlIGNhY2hlZC4KICAgICAgICAgICAgIHNob3VsZENhY2hl
SW50cmluc2ljQ29udGVudExvZ2ljYWxIZWlnaHRGb3JGbGV4SXRlbSA9IGZhbHNlOwotICAgICAg
ICAgICAgc2V0TG9naWNhbEhlaWdodChoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpID8gb3Zl
cnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmdBZnRlciA6IGxvZ2ljYWxI
ZWlnaHQoKSArIGNvbXB1dGVkTG9naWNhbEhlaWdodCk7CisgICAgICAgICAgICBhdXRvIHRhYmxl
TG9naWNhbEhlaWdodCA9IFsmXSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGlu
Z0xvZ2ljYWxIZWlnaHQgPSB0aGlzLT5vdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0IC0gYm9yZGVyQW5k
UGFkZGluZ0FmdGVyOworICAgICAgICAgICAgICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0KCkgKyBj
b21wdXRlZExvZ2ljYWxIZWlnaHQ7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgc2V0TG9n
aWNhbEhlaWdodCh0YWJsZUxvZ2ljYWxIZWlnaHQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBM
YXlvdXRVbml0IHNlY3Rpb25Mb2dpY2FsTGVmdCA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gYm9yZGVyU3RhcnQoKSA6IGJvcmRlckVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBhNTllODZmMTBhYTkuLjAy
MjE5YjAzNjc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlU2Vj
dGlvbjo6Y2FsY1Jvd0xvZ2ljYWxIZWlnaHQoKQogICAgICAgICAgICAgICAgIC8vIEZvciByb3cg
c3Bhbm5pbmcgY2VsbHMsIHxyfCBpcyB0aGUgbGFzdCByb3cgaW4gdGhlIHNwYW4uCiAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2VsbFN0YXJ0Um93ID0gY2VsbC0+cm93SW5kZXgoKTsKIAotICAg
ICAgICAgICAgICAgIGlmIChjZWxsLT5oYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGNlbGwtPm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgY2VsbC0+Y2xlYXJJbnRyaW5zaWNQYWRkaW5nKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGNlbGwtPmNsZWFyT3ZlcnJpZGluZ0NvbnRlbnRTaXplKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGNlbGwtPnNldENoaWxkTmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>