<?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>314482</bug_id>
          
          <creation_ts>2026-05-09 08:24:53 -0700</creation_ts>
          <short_desc>[cleanup] Remove virtual computeIntrinsicSize() from RenderReplaced and consolidate logic into a static helper</short_desc>
          <delta_ts>2026-05-10 17:40:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2209346</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2026-05-09 08:24:53 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209350</commentid>
    <comment_count>1</comment_count>
      <attachid>479545</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-09 09:17:39 -0700</bug_when>
    <thetext>Created attachment 479545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209424</commentid>
    <comment_count>2</comment_count>
      <attachid>479563</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-09 18:53:22 -0700</bug_when>
    <thetext>Created attachment 479563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209425</commentid>
    <comment_count>3</comment_count>
      <attachid>479564</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-09 18:55:39 -0700</bug_when>
    <thetext>Created attachment 479564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209477</commentid>
    <comment_count>4</comment_count>
      <attachid>479569</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-10 06:21:07 -0700</bug_when>
    <thetext>Created attachment 479569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209478</commentid>
    <comment_count>5</comment_count>
      <attachid>479570</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-10 06:22:55 -0700</bug_when>
    <thetext>Created attachment 479570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209484</commentid>
    <comment_count>6</comment_count>
      <attachid>479573</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-10 06:38:26 -0700</bug_when>
    <thetext>Created attachment 479573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209529</commentid>
    <comment_count>7</comment_count>
      <attachid>479580</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-10 15:53:32 -0700</bug_when>
    <thetext>Created attachment 479580
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209536</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-05-10 17:39:23 -0700</bug_when>
    <thetext>Committed 312979@main (547513aab5a2): &lt;https://commits.webkit.org/312979@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 479580.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209538</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-05-10 17:40:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/176750654&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479545</attachid>
            <date>2026-05-09 09:17:39 -0700</date>
            <delta_ts>2026-05-09 18:53:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314482-20260509091738.patch</filename>
            <type>text/plain</type>
            <size>11489</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAwYTNhNDdjNzRiMmU3MmI1MThkYmQxNzM2NmI4NzBlNzRlMGNjMjVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBNYXkgMjAyNiAwODoyNzoyNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB2
aXJ0dWFsIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgZnJvbSBSZW5kZXJSZXBsYWNlZCBhbmQKIGNv
bnNvbGlkYXRlIGxvZ2ljIGludG8gYSBzdGF0aWMgaGVscGVyCiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NDgyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgd2FzIGEgY29uZnVzaW5nIEFQSS4gSXQgd2FzIHZpcnR1
YWwgb24gUmVuZGVyUmVwbGFjZWQsCm92ZXJyaWRkZW4gYnkgUmVuZGVySW1hZ2UgYW5kIFJlbmRl
cldpZGdldCwgYnV0IGl0cyBuYW1lIGRpZG4ndCBjbGFyaWZ5IHdoZW4gdG8KY2FsbCBpdCB2cy4g
dGhlIHNpbWlsYXJseS1uYW1lZCBpbnRyaW5zaWNTaXplKCkgKHdoaWNoIHJldHVybnMgdGhlIGNh
Y2hlZAptX2ludHJpbnNpY1NpemUpLiBUaGUgdHdvIHJldHVybmVkIHRoZSBzYW1lIGRhdGEgaW4g
ZGlmZmVyZW50IHR5cGVzIChGbG9hdFNpemUgdnMKTGF5b3V0U2l6ZSksIGFuZCB0aGUgb25seSBt
ZWFuaW5nZnVsIGRpZmZlcmVuY2Ugd2FzIHRoYXQgdGhlIG92ZXJyaWRlcyBxdWVyaWVkCnRoZSBl
bWJlZGRlZCBTVkcgcm9vdCBmb3IgZnJlc2ggdmFsdWVzIHdoaWxlIHRoZSBiYXNlIGp1c3QgcmVh
ZCB0aGUgY2FjaGUuCgpUb2dldGhlciB3aXRoIGNvbXB1dGVBc3BlY3RSYXRpb0FkanVzdGVkSW50
cmluc2ljTG9naWNhbFdpZHRocyAocmVtb3ZlZCBpbiBhCnByaW9yIGNvbW1pdCkgYW5kIGNvbXB1
dGVJbnRyaW5zaWNBc3BlY3RSYXRpbyAoYWxzbyByZW1vdmVkKSwgdGhpcyB3YXMgb25lIG9mCnNl
dmVyYWwgc2ltaWxhcmx5LW5hbWVkICJjb21wdXRlIGludHJpbnNpYyBzb21ldGhpbmciIGZ1bmN0
aW9ucyBvbiBSZW5kZXJSZXBsYWNlZAp3aG9zZSByb2xlcyBhbmQgY2FsbCBvcmRlcmluZyB3ZXJl
IHVuY2xlYXIuCgpJbiBwcmFjdGljZSwgb25seSBvbmUgY2FsbGVyIG5lZWRlZCB0aGUgdmlydHVh
bCBkaXNwYXRjaDoKY29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVk
TWluTWF4U2l6ZXMuIFRoZSBTVkcgcm9vdCByZW5kZXJlcnMKY2FsbGVkIHRoZWlyIG93biB2ZXJz
aW9uIGludGVybmFsbHksIGFuZCBldmVyeW9uZSBlbHNlIHVzZWQgaW50cmluc2ljU2l6ZSgpLgoK
VGhlIGZpeCByZXBsYWNlcyBhbGwgdGhyZWUgb3ZlcnJpZGVzIHdpdGggYSBzaW5nbGUgZmlsZS1s
b2NhbCBzdGF0aWMgaGVscGVyCihjb21wdXRlSW50cmluc2ljU2l6ZUZvclJlbmRlcmVyKSB0aGF0
IGNoZWNrcyBlbWJlZGRlZFNWR1Jvb3QoKSBhbmQgaGFuZGxlcyB0aGUKU1ZHIGNhc2UgaW5saW5l
LiBUaGUgU1ZHIHJvb3RzIGtlZXAgdGhlaXIgb3duIHByaXZhdGUgY29tcHV0ZUludHJpbnNpY1Np
emUoKSBmb3IKaW50ZXJuYWwgdXNlLgotLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAgICAgICB8IDI3IC0tLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oICAgICAgICB8ICAxIC0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHAgICB8IDQwICsrKysrKysrKysrKysrKy0tLS0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oICAgICB8ICAzICstCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCAgICAgfCAxNSAtLS0tLS0tCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmggICAgICAgfCAgMSAtCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCAgfCAgMiArLQogLi4uL3N2Zy9sZWdh
Y3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oICAgICAgICAgIHwgIDIgKy0KIDggZmlsZXMgY2hhbmdl
ZCwgMzUgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZDAyNTYxYjk5ODlhLi42N2QxMzhmNDBlZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtOTM4LDMzICs5Mzgs
NiBAQCB2b2lkIFJlbmRlckltYWdlOjpsYXlvdXQoKQogICAgIH0KIH0KIAotRmxvYXRTaXplIFJl
bmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFz
aG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKLQotICAgIGlmIChDaGVja2VkUHRyIHN2Z1Jv
b3QgPSBlbWJlZGRlZFNWR1Jvb3QoKSkgewotICAgICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBz
dmdSb290LT5jb21wdXRlSW50cmluc2ljU2l6ZSgpOwotICAgICAgICBpbnRyaW5zaWNTaXplLnNj
YWxlKHN0eWxlKCkudXNlZFpvb20oKSk7Ci0gICAgICAgIGludHJpbnNpY1NpemUuc2NhbGUoaW1h
Z2VEZXZpY2VQaXhlbFJhdGlvKCkpOwotICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkpCi0gICAgICAgICAgICBpbnRyaW5zaWNTaXplID0gaW50cmluc2ljU2l6ZS50cmFuc3Bv
c2VkU2l6ZSgpOwotICAgICAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKLSAgICB9Ci0KLSAgICBh
dXRvIGludHJpbnNpY1NpemUgPSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUo
KTsKLQotICAgIC8vIE91ciBpbnRyaW5zaWNTaXplIGlzIGVtcHR5IGlmIHdlJ3JlIHJlbmRlcmlu
ZyBnZW5lcmF0ZWQgaW1hZ2VzIHdpdGggcmVsYXRpdmUgd2lkdGgvaGVpZ2h0LiBGaWd1cmUgb3V0
IHRoZSByaWdodCBpbnRyaW5zaWMgc2l6ZSB0byB1c2UuCi0gICAgaWYgKGludHJpbnNpY1NpemUu
aXNFbXB0eSgpICYmIChpbWFnZVJlc291cmNlKCkuaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgfHwg
aW1hZ2VSZXNvdXJjZSgpLmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkpIHsKLSAgICAgICAgUmVu
ZGVyT2JqZWN0KiBjb250YWluaW5nQmxvY2sgPSBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IGNv
bnRhaW5lcigpIDogdGhpcy0+Y29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAgIGlmIChhdXRvKiBi
b3ggPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyQm94PigqY29udGFpbmluZ0Jsb2NrKSkgewotICAg
ICAgICAgICAgaW50cmluc2ljU2l6ZS5zZXRXaWR0aChib3gtPmNvbnRlbnRCb3hMb2dpY2FsV2lk
dGgoKSk7Ci0gICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldEhlaWdodChib3gtPmF2YWlsYWJs
ZUxvZ2ljYWxIZWlnaHQoQXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGU6OkluY2x1ZGVNYXJnaW5C
b3JkZXJQYWRkaW5nKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gaW50cmluc2lj
U2l6ZTsKLX0KLQogRmxvYXRTaXplIFJlbmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKCFzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggNTJjY2VhNzNkN2JmLi44M2Q1
ZWQ0NzVjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC05Miw3
ICs5Miw2IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZVByZWZlcnJl
ZFdpZHRocygpIGNvbnN0IGZpbmFsOwogICAgIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jv
b3QoKSBjb25zdCBmaW5hbDsKLSAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGZvcmVncm91bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChj
b25zdCBMYXlvdXRSZWN0JiBsb2NhbFJlY3QsIHVuc2lnbmVkIG1heERlcHRoVG9UZXN0KSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlOjpEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggZDZlMTQ5ZDkxYzZlLi4zYTBmZTA2
ZTQ2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVk
ZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94SW5saW5lcy5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFp
bnRlci5oIgorI2luY2x1ZGUgIkxlZ2FjeVJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRlICJMaW5l
U2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZS5oIgogI2luY2x1ZGUgIlBvc2l0aW9u
ZWRMYXlvdXRDb25zdHJhaW50cy5oIgpAQCAtNTYsNiArNTcsNyBAQAogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZStHZXR0ZXJzSW5saW5lcy5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlK1NldHRlcnNJbmxpbmVzLmgiCisjaW5jbHVkZSAiUmVu
ZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VmlkZW8uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC00NjgsMTUgKzQ3MCw0MiBAQCBz
dGF0aWMgYm9vbCBpc1ZpZGVvV2l0aERlZmF1bHRPYmplY3RTaXplKGNvbnN0IFJlbmRlclJlcGxh
Y2VkKiBtYXliZVZpZGVvKQogICAgIFVOVVNFRF9QQVJBTShtYXliZVZpZGVvKTsKICNlbmRpZgog
ICAgIHJldHVybiBmYWxzZTsKLX0gCit9CisKK3N0YXRpYyBGbG9hdFNpemUgY29tcHV0ZUludHJp
bnNpY1NpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJSZXBsYWNlZCYgcmVwbGFjZWRSZW5kZXJl
cikKK3sKKyAgICBpZiAoQ2hlY2tlZFB0ciBzdmdSb290ID0gcmVwbGFjZWRSZW5kZXJlci5lbWJl
ZGRlZFNWR1Jvb3QoKSkgeworICAgICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBbJl0geworICAg
ICAgICAgICAgaWYgKENoZWNrZWRQdHIgcm9vdCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJTVkdS
b290Pigqc3ZnUm9vdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3QtPmNvbXB1dGVJbnRy
aW5zaWNTaXplKCk7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8TGVnYWN5UmVuZGVyU1ZH
Um9vdD4oKnN2Z1Jvb3QpLmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7CisgICAgICAgIH0oKTsKKyAg
ICAgICAgaW50cmluc2ljU2l6ZS5zY2FsZShyZXBsYWNlZFJlbmRlcmVyLnN0eWxlKCkudXNlZFpv
b20oKSk7CisgICAgICAgIGlmIChDaGVja2VkUHRyIGltYWdlID0gZHluYW1pY0Rvd25jYXN0PFJl
bmRlckltYWdlPihyZXBsYWNlZFJlbmRlcmVyKSkKKyAgICAgICAgICAgIGludHJpbnNpY1NpemUu
c2NhbGUoaW1hZ2UtPmltYWdlRGV2aWNlUGl4ZWxSYXRpbygpKTsKKyAgICAgICAgaWYgKCFyZXBs
YWNlZFJlbmRlcmVyLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgICAgICBpbnRy
aW5zaWNTaXplID0gaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworICAgICAgICByZXR1
cm4gaW50cmluc2ljU2l6ZTsKKyAgICB9CisKKyAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9h
dFNpemUgeyByZXBsYWNlZFJlbmRlcmVyLmludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCByZXBsYWNl
ZFJlbmRlcmVyLmludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OworICAgIGlmIChDaGVja2VkUHRy
IGltYWdlID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckltYWdlPihyZXBsYWNlZFJlbmRlcmVyKTsg
aW1hZ2UgJiYgaW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgJiYgKGltYWdlLT5pbWFnZVJlc291cmNl
KCkuaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgfHwgaW1hZ2UtPmltYWdlUmVzb3VyY2UoKS5pbWFn
ZUhhc1JlbGF0aXZlSGVpZ2h0KCkpKSB7CisgICAgICAgIENoZWNrZWRQdHIgY29udGFpbmluZ0Js
b2NrID0gcmVwbGFjZWRSZW5kZXJlci5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IHJlcGxhY2Vk
UmVuZGVyZXIuY29udGFpbmVyKCkgOiByZXBsYWNlZFJlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygp
OworICAgICAgICBpZiAoQ2hlY2tlZFB0ciBib3ggPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyQm94
Pihjb250YWluaW5nQmxvY2spKSB7CisgICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldFdpZHRo
KGJveC0+Y29udGVudEJveExvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAgICAgIGludHJpbnNpY1Np
emUuc2V0SGVpZ2h0KGJveC0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChBdmFpbGFibGVMb2dpY2Fs
SGVpZ2h0VHlwZTo6SW5jbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKK30KIAogdm9pZCBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMo
RmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBjb25z
dAogewogICAgIGlmIChzaG91bGRBcHBseVNpemVPcklubGluZVNpemVDb250YWlubWVudCgpKSB7
Ci0gICAgICAgIGludHJpbnNpY1NpemUgPSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNp
Y1NpemUoKTsKKyAgICAgICAgaW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZSB7IGludHJpbnNpY0xv
Z2ljYWxXaWR0aCgpLCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKICAgICAgICAgaW50cmlu
c2ljUmF0aW8gPSBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKICAgICB9
IGVsc2UgewotICAgICAgICBpbnRyaW5zaWNTaXplID0gY29tcHV0ZUludHJpbnNpY1NpemUoKTsK
KyAgICAgICAgaW50cmluc2ljU2l6ZSA9IGNvbXB1dGVJbnRyaW5zaWNTaXplRm9yUmVuZGVyZXIo
KnRoaXMpOwogICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCk7
CiAKICAgICAgICAgYXV0byBzaXplVG9DYWNoZSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBpbnRyaW5zaWNTaXplIDogaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwpAQCAtNTU4
LDExICs1ODcsNiBAQCBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRS
ZWN0KGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAgICAgcmV0dXJuIGZpbmFsUmVj
dDsKIH0KIAotRmxvYXRTaXplIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHsgaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNp
Y0xvZ2ljYWxIZWlnaHQoKSB9OwotfQotCiBGbG9hdFNpemUgUmVuZGVyUmVwbGFjZWQ6OnByZWZl
cnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKIHsKICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9h
dFNpemUoaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IDcwMTE5YzMx
NGEzZC4uZWI3ZmJmNDBmNjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXBsYWNlZE1pbkxv
Z2ljYWxIZWlnaHRDb21wdXRlc0FzTm9uZSgpIGNvbnN0OwogICAgIGJvb2wgcmVwbGFjZWRNYXhM
b2dpY2FsSGVpZ2h0Q29tcHV0ZXNBc05vbmUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgRmxvYXRT
aXplIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZW5kZXJSZXBs
YWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZp
cnR1YWwgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3Q7CiAKIHByb3RlY3Rl
ZDoKQEAgLTEwMyw3ICsxMDMsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21wdXRlQXNwZWN0
UmF0aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNh
bFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0OwogCi0gICAgdmlydHVh
bCBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3QgeyByZXR1cm4gMDsgfQog
ICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclJlcGxhY2VkIl9zOyB9CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwCmluZGV4IGQ5NTgzZGU2NWJkYy4uODc0M2MxMjQxODM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtNDk4LDIxICs0OTgsNiBAQCBSZW5k
ZXJSZXBsYWNlZCogUmVuZGVyV2lkZ2V0OjplbWJlZGRlZFNWR1Jvb3QoKSBjb25zdAogICAgIHJl
dHVybiBmcmFtZVZpZXcgPyBmcmFtZVZpZXctPmVtYmVkZGVkU1ZHUm9vdCgpIDogbnVsbHB0cjsK
IH0KIAotRmxvYXRTaXplIFJlbmRlcldpZGdldDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25z
dAotewotICAgIENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpOwotICAgIGlm
ICghc3ZnUm9vdCkKLSAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmlu
c2ljU2l6ZSgpOwotCi0gICAgYXV0byBpbnRyaW5zaWNTaXplID0gc3ZnUm9vdC0+Y29tcHV0ZUlu
dHJpbnNpY1NpemUoKTsKLSAgICBpbnRyaW5zaWNTaXplLnNjYWxlKHN0eWxlKCkudXNlZFpvb20o
KSk7Ci0KLSAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIGludHJp
bnNpY1NpemUgPSBpbnRyaW5zaWNTaXplLnRyYW5zcG9zZWRTaXplKCk7Ci0KLSAgICByZXR1cm4g
aW50cmluc2ljU2l6ZTsKLX0KLQogRmxvYXRTaXplIFJlbmRlcldpZGdldDo6cHJlZmVycmVkQXNw
ZWN0UmF0aW8oKSBjb25zdAogewogICAgIENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZH
Um9vdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCmluZGV4IDkyZjI4
MTM4Y2FhZi4uZTkxMTdkOTEyN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5oCkBAIC05Miw3ICs5Miw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZEludmFs
aWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBmaW5hbDsKICAgICBSZW5kZXJSZXBsYWNlZCog
ZW1iZWRkZWRTVkdSb290KCkgY29uc3QgZmluYWw7Ci0gICAgRmxvYXRTaXplIGNvbXB1dGVJbnRy
aW5zaWNTaXplKCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJh
dGlvKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdo
dFN0YXRlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmgKaW5kZXggNjE5N2Y1NGZlZTFlLi5mOWI5ODYwZjQxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzRW1iZWRkZWRUaHJvdWdoU1ZHSW1hZ2UoKSBjb25zdDsKICAgICBib29s
IGlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSBjb25zdDsKIAot
ICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0IGZpbmFsOworICAgIEZs
b2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0OwogICAgIEZsb2F0U2l6ZSBwcmVm
ZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzSW50cmluc2ljQXNw
ZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCmluZGV4IDUzOTc1MDg0
NGM5MS4uZTJjMWZkOWU2NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzRW1iZWRkZWRUaHJvdWdoU1ZHSW1hZ2UoKSBjb25zdDsKICAg
ICBib29sIGlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSBjb25z
dDsKIAotICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0IGZpbmFsOwor
ICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0OwogICAgIEZsb2F0U2l6
ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzSW50cmlu
c2ljQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479563</attachid>
            <date>2026-05-09 18:53:22 -0700</date>
            <delta_ts>2026-05-10 06:21:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314482-20260509185321.patch</filename>
            <type>text/plain</type>
            <size>15048</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBhMDhkNWQ1YTg4NTcyM2E1Y2VlNjk0ODA4MmY3NjMyNDIzYTQ5M2MzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBNYXkgMjAyNiAxODozOTo1OCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB2
aXJ0dWFsIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgZnJvbSBSZW5kZXJSZXBsYWNlZCBhbmQKIGNv
bnNvbGlkYXRlIGxvZ2ljIGludG8gYSBzdGF0aWMgaGVscGVyCiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NDgyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgd2FzIGEgY29uZnVzaW5nIEFQSS4gSXQgd2FzIHZpcnR1
YWwgb24gUmVuZGVyUmVwbGFjZWQsCm92ZXJyaWRkZW4gYnkgUmVuZGVySW1hZ2UgYW5kIFJlbmRl
cldpZGdldCwgYnV0IGl0cyBuYW1lIGRpZG4ndCBjbGFyaWZ5IHdoZW4gdG8KY2FsbCBpdCB2cy4g
dGhlIHNpbWlsYXJseS1uYW1lZCBpbnRyaW5zaWNTaXplKCkgKHdoaWNoIHJldHVybnMgdGhlIGNh
Y2hlZAptX2ludHJpbnNpY1NpemUpLiBUaGUgdHdvIHJldHVybmVkIHRoZSBzYW1lIGRhdGEgaW4g
ZGlmZmVyZW50IHR5cGVzIChGbG9hdFNpemUgdnMKTGF5b3V0U2l6ZSksIGFuZCB0aGUgb25seSBt
ZWFuaW5nZnVsIGRpZmZlcmVuY2Ugd2FzIHRoYXQgdGhlIG92ZXJyaWRlcyBxdWVyaWVkCnRoZSBl
bWJlZGRlZCBTVkcgcm9vdCBmb3IgZnJlc2ggdmFsdWVzIHdoaWxlIHRoZSBiYXNlIGp1c3QgcmVh
ZCB0aGUgY2FjaGUuCgpUb2dldGhlciB3aXRoIGNvbXB1dGVBc3BlY3RSYXRpb0FkanVzdGVkSW50
cmluc2ljTG9naWNhbFdpZHRocyAocmVtb3ZlZCBpbiBhCnByaW9yIGNvbW1pdCkgYW5kIGNvbXB1
dGVJbnRyaW5zaWNBc3BlY3RSYXRpbyAoYWxzbyByZW1vdmVkKSwgdGhpcyB3YXMgb25lIG9mCnNl
dmVyYWwgc2ltaWxhcmx5LW5hbWVkICJjb21wdXRlIGludHJpbnNpYyBzb21ldGhpbmciIGZ1bmN0
aW9ucyBvbiBSZW5kZXJSZXBsYWNlZAp3aG9zZSByb2xlcyBhbmQgY2FsbCBvcmRlcmluZyB3ZXJl
IHVuY2xlYXIuCgpJbiBwcmFjdGljZSwgb25seSBvbmUgY2FsbGVyIG5lZWRlZCB0aGUgdmlydHVh
bCBkaXNwYXRjaDoKY29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVk
TWluTWF4U2l6ZXMuIFRoZSBTVkcgcm9vdCByZW5kZXJlcnMKY2FsbGVkIHRoZWlyIG93biB2ZXJz
aW9uIGludGVybmFsbHksIGFuZCBldmVyeW9uZSBlbHNlIHVzZWQgaW50cmluc2ljU2l6ZSgpLgoK
VGhlIGZpeCByZXBsYWNlcyBhbGwgdGhyZWUgb3ZlcnJpZGVzIHdpdGggYSBzaW5nbGUgZmlsZS1s
b2NhbCBzdGF0aWMgaGVscGVyCihjb21wdXRlSW50cmluc2ljU2l6ZUZvclJlbmRlcmVyKSB0aGF0
IGNoZWNrcyBlbWJlZGRlZFNWR1Jvb3QoKSBhbmQgaGFuZGxlcyB0aGUKU1ZHIGNhc2UgaW5saW5l
LiBUaGUgU1ZHIHJvb3RzIGtlZXAgdGhlaXIgb3duIHByaXZhdGUgY29tcHV0ZUludHJpbnNpY1Np
emUoKSBmb3IKaW50ZXJuYWwgdXNlLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNTaXplIGNv
bnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgooV2ViQ29yZTo6
aXNWaWRlb1dpdGhEZWZhdWx0T2JqZWN0U2l6ZSk6CihXZWJDb3JlOjpjb21wdXRlSW50cmluc2lj
U2l6ZUZvclJlbmRlcmVyKToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmlu
c2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUgY29uc3QpOiBEZWxldGVk
LgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oOgooV2ViQ29yZTo6
UmVuZGVyUmVwbGFjZWQ6OmVtYmVkZGVkU1ZHUm9vdCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CihXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OmNvbXB1
dGVJbnRyaW5zaWNTaXplIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXpl
IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290
LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXpl
IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5k
ZXJTVkdSb290Lmg6Ci0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCAgICAgIHwgMzAgLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oICAgICAgICB8ICAxIC0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5jcHAgICB8IDQxICsrKysrKysrKysrKysrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oICAgICB8ICAzICstCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCAgICAgfCAyMCAtLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCAgICAgICB8ICAxIC0KIC4uLi9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCAgfCAgMiArLQogLi4uL3N2Zy9sZWdhY3kvTGVnYWN5
UmVuZGVyU1ZHUm9vdC5jcHAgICAgICAgIHwgIDIgKy0KIC4uLi9zdmcvbGVnYWN5L0xlZ2FjeVJl
bmRlclNWR1Jvb3QuaCAgICAgICAgICB8ICAyICstCiAxMCBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNl
cnRpb25zKCspLCA2NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAppbmRleCBiOTI5MjA1ZTgxNjIuLmUxNTBhMjBkN2VkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC05MzgsMzYgKzkzOCw2IEBAIHZvaWQg
UmVuZGVySW1hZ2U6OmxheW91dCgpCiAgICAgfQogfQogCi1GbG9hdFNpemUgUmVuZGVySW1hZ2U6
OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKLXsKLSAgICAvLyBTaXplIGNvbnRhaW5tZW50
IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LgotICAgIC8vIFRo
ZSBiYXNlIGNsYXNzIHJldHVybnMgdmFsdWVzIGZyb20gdGhlIGNhY2hlIC8gY29udGFpbi1pbnRy
aW5zaWMtc2l6ZSB3aXRob3V0IHF1ZXJ5aW5nIGltYWdlIGRhdGEuCi0gICAgaWYgKHNob3VsZEFw
cGx5U2l6ZUNvbnRhaW5tZW50KCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y29t
cHV0ZUludHJpbnNpY1NpemUoKTsKLQotICAgIGlmIChDaGVja2VkUHRyIHN2Z1Jvb3QgPSBlbWJl
ZGRlZFNWR1Jvb3QoKSkgewotICAgICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBzdmdSb290LT5j
b21wdXRlSW50cmluc2ljU2l6ZSgpOwotICAgICAgICBpbnRyaW5zaWNTaXplLnNjYWxlKHN0eWxl
KCkudXNlZFpvb20oKSk7Ci0gICAgICAgIGludHJpbnNpY1NpemUuc2NhbGUoaW1hZ2VEZXZpY2VQ
aXhlbFJhdGlvKCkpOwotICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0g
ICAgICAgICAgICBpbnRyaW5zaWNTaXplID0gaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgp
OwotICAgICAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKLSAgICB9Ci0KLSAgICBhdXRvIGludHJp
bnNpY1NpemUgPSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKLQotICAg
IC8vIE91ciBpbnRyaW5zaWNTaXplIGlzIGVtcHR5IGlmIHdlJ3JlIHJlbmRlcmluZyBnZW5lcmF0
ZWQgaW1hZ2VzIHdpdGggcmVsYXRpdmUgd2lkdGgvaGVpZ2h0LiBGaWd1cmUgb3V0IHRoZSByaWdo
dCBpbnRyaW5zaWMgc2l6ZSB0byB1c2UuCi0gICAgaWYgKGludHJpbnNpY1NpemUuaXNFbXB0eSgp
ICYmIChpbWFnZVJlc291cmNlKCkuaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgfHwgaW1hZ2VSZXNv
dXJjZSgpLmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0
KiBjb250YWluaW5nQmxvY2sgPSBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IGNvbnRhaW5lcigp
IDogdGhpcy0+Y29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAgIGlmIChhdXRvKiBib3ggPSBkeW5h
bWljRG93bmNhc3Q8UmVuZGVyQm94PigqY29udGFpbmluZ0Jsb2NrKSkgewotICAgICAgICAgICAg
aW50cmluc2ljU2l6ZS5zZXRXaWR0aChib3gtPmNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoKSk7Ci0g
ICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldEhlaWdodChib3gtPmF2YWlsYWJsZUxvZ2ljYWxI
ZWlnaHQoQXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGU6OkluY2x1ZGVNYXJnaW5Cb3JkZXJQYWRk
aW5nKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKLX0K
LQogRmxvYXRTaXplIFJlbmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiB7
CiAgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25z
IGZyb20gY29udGVudCwgYnV0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
aAppbmRleCA1MmNjZWE3M2Q3YmYuLjgzZDVlZDQ3NWNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmgKQEAgLTkyLDcgKzkyLDYgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9v
bCBzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3QgZmluYWw7CiAgICAgUmVu
ZGVyUmVwbGFjZWQqIGVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0IGZpbmFsOwotICAgIEZsb2F0U2l6
ZSBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZm9yZWdyb3Vu
ZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIGxvY2FsUmVjdCwgdW5z
aWduZWQgbWF4RGVwdGhUb1Rlc3QpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdHlsZVdp
bGxDaGFuZ2UoU3R5bGU6OkRpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApp
bmRleCBkNmUxNDlkOTFjNmUuLmJiNjUzYTZjZjliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSW5s
aW5lSXRlcmF0b3JCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3hJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVwYWludGVyLmgiCisjaW5jbHVkZSAiTGVnYWN5UmVuZGVy
U1ZHUm9vdC5oIgogI2luY2x1ZGUgIkxpbmVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJMb2NhbEZy
YW1lLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25lZExheW91dENvbnN0cmFpbnRzLmgiCkBAIC01Niw2
ICs1Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlJl
bmRlclN0eWxlK0dldHRlcnNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUrU2V0dGVy
c0lubGluZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKQEAgLTQ2OCwxNSArNDcwLDQzIEBAIHN0YXRpYyBib29sIGlzVmlkZW9XaXRoRGVmYXVsdE9i
amVjdFNpemUoY29uc3QgUmVuZGVyUmVwbGFjZWQqIG1heWJlVmlkZW8pCiAgICAgVU5VU0VEX1BB
UkFNKG1heWJlVmlkZW8pOwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwotfSAKK30KKworc3Rh
dGljIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRl
clJlcGxhY2VkJiByZXBsYWNlZFJlbmRlcmVyKQoreworICAgIEFTU0VSVCghcmVwbGFjZWRSZW5k
ZXJlci5zaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKKyAgICBpZiAoQ2hlY2tlZFB0ciBz
dmdSb290ID0gcmVwbGFjZWRSZW5kZXJlci5lbWJlZGRlZFNWR1Jvb3QoKSkgeworICAgICAgICBh
dXRvIGludHJpbnNpY1NpemUgPSBbJl0geworICAgICAgICAgICAgaWYgKENoZWNrZWRQdHIgcm9v
dCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJTVkdSb290Pigqc3ZnUm9vdCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJvb3QtPmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHUm9vdD4oKnN2Z1Jvb3QpLmNvbXB1dGVJbnRy
aW5zaWNTaXplKCk7CisgICAgICAgIH0oKTsKKyAgICAgICAgaW50cmluc2ljU2l6ZS5zY2FsZShy
ZXBsYWNlZFJlbmRlcmVyLnN0eWxlKCkudXNlZFpvb20oKSk7CisgICAgICAgIGlmIChDaGVja2Vk
UHRyIGltYWdlID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckltYWdlPihyZXBsYWNlZFJlbmRlcmVy
KSkKKyAgICAgICAgICAgIGludHJpbnNpY1NpemUuc2NhbGUoaW1hZ2UtPmltYWdlRGV2aWNlUGl4
ZWxSYXRpbygpKTsKKyAgICAgICAgaWYgKCFyZXBsYWNlZFJlbmRlcmVyLmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpCisgICAgICAgICAgICBpbnRyaW5zaWNTaXplID0gaW50cmluc2ljU2l6ZS50
cmFuc3Bvc2VkU2l6ZSgpOworICAgICAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKKyAgICB9CisK
KyAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUgeyByZXBsYWNlZFJlbmRlcmVyLmlu
dHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCByZXBsYWNlZFJlbmRlcmVyLmludHJpbnNpY0xvZ2ljYWxI
ZWlnaHQoKSB9OworICAgIGlmIChDaGVja2VkUHRyIGltYWdlID0gZHluYW1pY0Rvd25jYXN0PFJl
bmRlckltYWdlPihyZXBsYWNlZFJlbmRlcmVyKTsgaW1hZ2UgJiYgaW50cmluc2ljU2l6ZS5pc0Vt
cHR5KCkgJiYgKGltYWdlLT5pbWFnZVJlc291cmNlKCkuaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkg
fHwgaW1hZ2UtPmltYWdlUmVzb3VyY2UoKS5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkpKSB7Cisg
ICAgICAgIENoZWNrZWRQdHIgY29udGFpbmluZ0Jsb2NrID0gcmVwbGFjZWRSZW5kZXJlci5pc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IHJlcGxhY2VkUmVuZGVyZXIuY29udGFpbmVyKCkgOiByZXBs
YWNlZFJlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICBpZiAoQ2hlY2tlZFB0ciBi
b3ggPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyQm94Pihjb250YWluaW5nQmxvY2spKSB7CisgICAg
ICAgICAgICBpbnRyaW5zaWNTaXplLnNldFdpZHRoKGJveC0+Y29udGVudEJveExvZ2ljYWxXaWR0
aCgpKTsKKyAgICAgICAgICAgIGludHJpbnNpY1NpemUuc2V0SGVpZ2h0KGJveC0+YXZhaWxhYmxl
TG9naWNhbEhlaWdodChBdmFpbGFibGVMb2dpY2FsSGVpZ2h0VHlwZTo6SW5jbHVkZU1hcmdpbkJv
cmRlclBhZGRpbmcpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gaW50cmluc2ljU2l6
ZTsKK30KIAogdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3Ry
YWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBG
bG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBjb25zdAogewogICAgIGlmIChzaG91bGRBcHBseVNp
emVPcklubGluZVNpemVDb250YWlubWVudCgpKSB7Ci0gICAgICAgIGludHJpbnNpY1NpemUgPSBS
ZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKKyAgICAgICAgaW50cmluc2lj
U2l6ZSA9IEZsb2F0U2l6ZSB7IGludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBpbnRyaW5zaWNMb2dp
Y2FsSGVpZ2h0KCkgfTsKICAgICAgICAgaW50cmluc2ljUmF0aW8gPSBSZW5kZXJSZXBsYWNlZDo6
cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKICAgICB9IGVsc2UgewotICAgICAgICBpbnRyaW5zaWNT
aXplID0gY29tcHV0ZUludHJpbnNpY1NpemUoKTsKKyAgICAgICAgaW50cmluc2ljU2l6ZSA9IGNv
bXB1dGVJbnRyaW5zaWNTaXplRm9yUmVuZGVyZXIoKnRoaXMpOwogICAgICAgICBpbnRyaW5zaWNS
YXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CiAKICAgICAgICAgYXV0byBzaXplVG9DYWNo
ZSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBpbnRyaW5zaWNTaXplIDogaW50cmluc2lj
U2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwpAQCAtNTU4LDExICs1ODgsNiBAQCBMYXlvdXRSZWN0IFJl
bmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFNpemUmIGludHJp
bnNpY1NpemUpCiAgICAgcmV0dXJuIGZpbmFsUmVjdDsKIH0KIAotRmxvYXRTaXplIFJlbmRlclJl
cGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHsgaW50
cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OwotfQotCiBG
bG9hdFNpemUgUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKIHsK
ICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUoaW50cmluc2ljTG9naWNhbFdpZHRo
KCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5oCmluZGV4IDcwMTE5YzMxNGEzZC4uZWI3ZmJmNDBmNjc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtNTgsNyArNTgsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCByZXBsYWNlZE1pbkxvZ2ljYWxIZWlnaHRDb21wdXRlc0FzTm9uZSgp
IGNvbnN0OwogICAgIGJvb2wgcmVwbGFjZWRNYXhMb2dpY2FsSGVpZ2h0Q29tcHV0ZXNBc05vbmUo
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgRmxvYXRTaXplIHByZWZlcnJlZEFz
cGVjdFJhdGlvKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKQEAgLTEwMyw3ICsxMDMsNiBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBjb21wdXRlQXNwZWN0UmF0aW9BZGp1c3RlZEludHJpbnNpY0xvZ2lj
YWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dp
Y2FsV2lkdGgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRT
VkdSb290KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlcGxhY2VkIl9zOyB9CiAKICAgICBi
b29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IGRmNjc0N2QzYmY4
Yy4uOGYzNGQ5NGY1YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcApAQCAtNDk4LDI2ICs0OTgsNiBAQCBSZW5kZXJSZXBsYWNlZCogUmVuZGVyV2lkZ2V0Ojpl
bWJlZGRlZFNWR1Jvb3QoKSBjb25zdAogICAgIHJldHVybiBmcmFtZVZpZXcgPyBmcmFtZVZpZXct
PmVtYmVkZGVkU1ZHUm9vdCgpIDogbnVsbHB0cjsKIH0KIAotRmxvYXRTaXplIFJlbmRlcldpZGdl
dDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAotewotICAgIC8vIFNpemUgY29udGFpbm1l
bnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQuCi0gICAgLy8g
VGhlIGJhc2UgY2xhc3MgcmV0dXJucyB2YWx1ZXMgZnJvbSB0aGUgY2FjaGUgLyBjb250YWluLWlu
dHJpbnNpYy1zaXplIHdpdGhvdXQgcXVlcnlpbmcgaW1hZ2UgZGF0YS4KLSAgICBpZiAoc2hvdWxk
QXBwbHlTaXplQ29udGFpbm1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpj
b21wdXRlSW50cmluc2ljU2l6ZSgpOwotCi0gICAgQ2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRk
ZWRTVkdSb290KCk7Ci0gICAgaWYgKCFzdmdSb290KQotICAgICAgICByZXR1cm4gUmVuZGVyUmVw
bGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7Ci0KLSAgICBhdXRvIGludHJpbnNpY1NpemUg
PSBzdmdSb290LT5jb21wdXRlSW50cmluc2ljU2l6ZSgpOwotICAgIGludHJpbnNpY1NpemUuc2Nh
bGUoc3R5bGUoKS51c2VkWm9vbSgpKTsKLQotICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkKLSAgICAgICAgaW50cmluc2ljU2l6ZSA9IGludHJpbnNpY1NpemUudHJhbnNwb3NlZFNp
emUoKTsKLQotICAgIHJldHVybiBpbnRyaW5zaWNTaXplOwotfQotCiBGbG9hdFNpemUgUmVuZGVy
V2lkZ2V0OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiB7CiAgICAgLy8gU2l6ZSBjb250
YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0
IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCmluZGV4IDkyZjI4MTM4
Y2FhZi4uZTkxMTdkOTEyN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5oCkBAIC05Miw3ICs5Miw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZEludmFsaWRh
dGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBmaW5hbDsKICAgICBSZW5kZXJSZXBsYWNlZCogZW1i
ZWRkZWRTVkdSb290KCkgY29uc3QgZmluYWw7Ci0gICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5z
aWNTaXplKCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlv
KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0
YXRlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuY3BwCmluZGV4IGVmMzM0MDRiZTYyMy4uNzVmMDJmMThhNmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAg
RmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKICAg
ICAvLyBTaXplIGNvbnRhaW5tZW50IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJv
bSBjb250ZW50LgogICAgIC8vIFRoZSBiYXNlIGNsYXNzIHJldHVybnMgdmFsdWVzIGZyb20gdGhl
IGNhY2hlIC8gY29udGFpbi1pbnRyaW5zaWMtc2l6ZSB3aXRob3V0IHF1ZXJ5aW5nIGltYWdlIGRh
dGEuCiAgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCi0gICAgICAgIHJldHVy
biBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKKyAgICAgICAgcmV0dXJu
IHsgaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9Owog
ICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9TVkcvY29vcmRzLmh0bWwjSW50cmluc2ljU2l6
aW5nCiAgICAgRmxvYXRTaXplIGludHJpbnNpY1NpemUgPSB7IHN2Z1NWR0VsZW1lbnQoKS5pbnRy
aW5zaWNXaWR0aCgpLCBzdmdTVkdFbGVtZW50KCkuaW50cmluc2ljSGVpZ2h0KCkgfTsKICAgICAv
LyBUcmFuc3Bvc2UgZm9yIHZlcnRpY2FsIHdyaXRpbmcgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAppbmRleCA2MTk3ZjU0ZmVlMWUuLmY5Yjk4NjBm
NDEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNFbWJlZGRlZFRocm91Z2hTVkdJ
bWFnZSgpIGNvbnN0OwogICAgIGJvb2wgaXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdT
VkdEb2N1bWVudCgpIGNvbnN0OwogCi0gICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXpl
KCkgY29uc3QgZmluYWw7CisgICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29u
c3Q7CiAgICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdS
b290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRl
clNWR1Jvb3QuY3BwCmluZGV4IGUyYjQ0M2YwZTU4Zi4uZTA4Y2FhZTAzZjNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5k
ZXJTVkdSb290LmNwcApAQCAtODksNyArODksNyBAQCBGbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZH
Um9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAogICAgIC8vIFNpemUgY29udGFpbm1l
bnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQuCiAgICAgLy8g
VGhlIGJhc2UgY2xhc3MgcmV0dXJucyB2YWx1ZXMgZnJvbSB0aGUgY2FjaGUgLyBjb250YWluLWlu
dHJpbnNpYy1zaXplIHdpdGhvdXQgcXVlcnlpbmcgaW1hZ2UgZGF0YS4KICAgICBpZiAoc2hvdWxk
QXBwbHlTaXplQ29udGFpbm1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpj
b21wdXRlSW50cmluc2ljU2l6ZSgpOworICAgICAgICByZXR1cm4geyBpbnRyaW5zaWNMb2dpY2Fs
V2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CiAgICAgRmxvYXRTaXplIGludHJp
bnNpY1NpemUgPSB7IHN2Z1NWR0VsZW1lbnQoKS5pbnRyaW5zaWNXaWR0aCgpLCBzdmdTVkdFbGVt
ZW50KCkuaW50cmluc2ljSGVpZ2h0KCkgfTsKICAgICAvLyBUcmFuc3Bvc2UgZm9yIHZlcnRpY2Fs
IHdyaXRpbmcgbW9kZQogICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNW
R1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRl
clNWR1Jvb3QuaAppbmRleCA1Mzk3NTA4NDRjOTEuLmUyYzFmZDllNjQyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNW
R1Jvb3QuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtYmVkZGVkVGhy
b3VnaFNWR0ltYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtYmVkZGVkVGhyb3VnaEZyYW1lQ29u
dGFpbmluZ1NWR0RvY3VtZW50KCkgY29uc3Q7CiAKLSAgICBGbG9hdFNpemUgY29tcHV0ZUludHJp
bnNpY1NpemUoKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1Np
emUoKSBjb25zdDsKICAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBm
aW5hbDsKICAgICBib29sIGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479564</attachid>
            <date>2026-05-09 18:55:39 -0700</date>
            <delta_ts>2026-05-10 05:31:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314482-20260509185538.patch</filename>
            <type>text/plain</type>
            <size>50096</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBkMTIxYzQ5NmE3MTVlY2I4YjQyNzIzZGI2NmNiZDExODVkNWE5ZTUxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBNYXkgMjAyNiAxODo1Mzo1MSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB2
aXJ0dWFsIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgZnJvbSBSZW5kZXJSZXBsYWNlZCBhbmQKIGNv
bnNvbGlkYXRlIGxvZ2ljIGludG8gYSBzdGF0aWMgaGVscGVyCiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NDgyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CkVXUyAoUFIgd2l0aCBkZXBlbmRlbmNpZXMpLgoKKiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2Fs
RnJhbWVWaWV3LmNwcDoKKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3Ojpmb3JjZUxheW91dFBhcmVu
dFZpZXdJZk5lZWRlZCk6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6ZW1iZWRkZWRTVkdSb290
IGNvbnN0KToKKFdlYkNvcmU6OkxvY2FsRnJhbWVWaWV3OjplbWJlZGRlZENvbnRlbnRCb3ggY29u
c3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaDoKKiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RSYXRpbyBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocyBjb25z
dCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVTaXppbmdLZXl3b3JkTG9naWNhbENvbnRl
bnRIZWlnaHRVc2luZ0dlbmVyaWMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojphc3BlY3RS
YXRpb1ZhbHVlIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZU1pbk1heExvZ2lj
YWxXaWR0aEZyb21Bc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1
dGVNaW5NYXhMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJl
bmRlckJveDo6aXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbyBjb25zdCk6IERlbGV0
ZWQuCihXZWJDb3JlOjpSZW5kZXJCb3g6OnJlc29sdmVBc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0
ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oOgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjppc1NWR1Jvb3RX
aXRoSW50cmluc2ljQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnBy
ZWZlcnJlZEFzcGVjdFJhdGlvRm9yRmxleEl0ZW0gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cHJlZmVycmVk
QXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnNob3VsZEludmFsaWRh
dGVQcmVmZXJyZWRXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmVtYmVkZGVk
U1ZHUm9vdCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNpY1Np
emUgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmVtYmVkZGVkQ29udGVu
dEJveCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKFdl
YkNvcmU6OmlzVmlkZW9XaXRoRGVmYXVsdE9iamVjdFNpemUpOgooV2ViQ29yZTo6Y29tcHV0ZUlu
dHJpbnNpY1NpemVGb3JSZW5kZXJlcik6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0
ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMgY29uc3Qp
OgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToK
KFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0aW9BZGp1c3RlZEludHJp
bnNpY0xvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6aGFzSW50cmluc2ljU2l6ZSk6CihX
ZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoIGNvbnN0
KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0
IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljS2V5d29y
ZExvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVB
c3BlY3RSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVyQm94IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNv
cmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8gY29uc3QpOiBE
ZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplIGNv
bnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjppbnRyaW5zaWNSYXRpbyBj
b25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
Lmg6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6ZW1iZWRkZWRTVkdSb290IGNvbnN0KToKKFdl
YkNvcmU6OlJlbmRlclJlcGxhY2VkOjplbWJlZGRlZENvbnRlbnRCb3ggY29uc3QpOiBEZWxldGVk
LgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgooV2ViQ29yZTo6
UmVuZGVyV2lkZ2V0OjpzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzIGNvbnN0KToKKFdl
YkNvcmU6OlJlbmRlcldpZGdldDo6ZW1iZWRkZWRTVkdSb290IGNvbnN0KToKKFdlYkNvcmU6OlJl
bmRlcldpZGdldDo6cHJlZmVycmVkQXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVy
V2lkZ2V0OjplbWJlZGRlZENvbnRlbnRCb3ggY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgooV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmlu
c2ljQXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUlu
dHJpbnNpY1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNw
ZWN0UmF0aW8gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRl
clNWR1Jvb3QuY3BwOgooV2ViQ29yZTo6TGVnYWN5UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2lj
QXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6TGVnYWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0
ZUludHJpbnNpY1NpemUgY29uc3QpOgooV2ViQ29yZTo6TGVnYWN5UmVuZGVyU1ZHUm9vdDo6cHJl
ZmVycmVkQXNwZWN0UmF0aW8gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
bGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwOgooV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKFdlYkNv
cmU6OlNWR0ltYWdlOjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgooV2ViQ29yZTo6U1ZHSW1hZ2U6
OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmg6Ci0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1l
Vmlldy5jcHAgICAgICAgIHwgIDI4ICsrLS0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFt
ZVZpZXcuaCAgICAgICAgICB8ICAgMyArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAgICAgICAgIHwgIDQyICsrKy0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oICAgICAgICAgIHwgICAzICstCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwICAgfCAgIDYgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAgICAgICB8ICA0MCArKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmggICAgICAgIHwgICA2ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwICAgfCAxMzggKysrKysrLS0tLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCAgICAgfCAgMTUgKy0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwICAgICB8ICAyOCArKystCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmggICAgICAgfCAgIDMgKy0KIC4uLi9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgICB8ICAxMyArLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggIHwgICAyICstCiAuLi4vc3ZnL2xlZ2FjeS9M
ZWdhY3lSZW5kZXJTVkdSb290LmNwcCAgICAgICAgfCAgMTMgKy0KIC4uLi9zdmcvbGVnYWN5L0xl
Z2FjeVJlbmRlclNWR1Jvb3QuaCAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcCAgICAgIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaCAgICAgICAgfCAgIDQgKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDE2
NCBpbnNlcnRpb25zKCspLCAxOTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2Fs
RnJhbWVWaWV3LmNwcAppbmRleCBkZWRlNmI1MDQ1YTYuLmM3YWYyNDhmMDkyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAKQEAgLTEyMTMsMjUgKzEyMTMsMTggQEAgdm9p
ZCBMb2NhbEZyYW1lVmlldzo6Zm9yY2VMYXlvdXRQYXJlbnRWaWV3SWZOZWVkZWQoKQogICAgIGlm
ICghb3duZXJSZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ2hlY2tlZFB0ciBjb250
ZW50Qm94ID0gZW1iZWRkZWRDb250ZW50Qm94KCk7Ci0gICAgaWYgKCFjb250ZW50Qm94KQorICAg
IENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpOworICAgIGlmICghc3ZnUm9v
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8qIHN2Z1Jvb3QgPSBkeW5hbWljRG93
bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHUm9vdD4oY29udGVudEJveC5nZXQoKSkpIHsKLSAgICAgICAg
aWYgKHN2Z1Jvb3QtPmV2ZXJIYWRMYXlvdXQoKSAmJiAhc3ZnUm9vdC0+bmVlZHNMYXlvdXQoKSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byogc3ZnUm9vdCA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJTVkdSb290Pihjb250ZW50Qm94LmdldCgpKSkgewotICAgICAg
ICBpZiAoc3ZnUm9vdC0+ZXZlckhhZExheW91dCgpICYmICFzdmdSb290LT5uZWVkc0xheW91dCgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoc3ZnUm9vdC0+ZXZlckhhZExh
eW91dCgpICYmICFzdmdSb290LT5uZWVkc0xheW91dCgpKQorICAgICAgICByZXR1cm47CiAKICAg
ICBMT0coTGF5b3V0LCAiTG9jYWxGcmFtZVZpZXcgJXAgZm9yY2VMYXlvdXRQYXJlbnRWaWV3SWZO
ZWVkZWQgc2NoZWR1bGluZyBsYXlvdXQgb24gcGFyZW50IExvY2FsRnJhbWVWaWV3ICVwIiwgdGhp
cywgJm93bmVyUmVuZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKSk7CiAKICAgICAvLyBJZiB0aGUg
ZW1iZWRkZWQgU1ZHIGRvY3VtZW50IGFwcGVhcnMgdGhlIGZpcnN0IHRpbWUsIHRoZSBvd25lclJl
bmRlcmVyIGhhcyBhbHJlYWR5IGZpbmlzaGVkCiAgICAgLy8gbGF5b3V0IHdpdGhvdXQga25vd2lu
ZyBhYm91dCB0aGUgZXhpc3RlbmNlIG9mIHRoZSBlbWJlZGRlZCBTVkcgZG9jdW1lbnQsIGJlY2F1
c2UgUmVuZGVyUmVwbGFjZWQKLSAgICAvLyBlbWJlZGRlZENvbnRlbnRCb3goKSByZXR1cm5zIG51
bGxwdHIsIGFzIGxvbmcgYXMgdGhlIGVtYmVkZGVkIGRvY3VtZW50IGlzbid0IGxvYWRlZCB5ZXQu
IEJlZm9yZQorICAgIC8vIGVtYmVkZGVkU1ZHUm9vdCgpIHJldHVybnMgbnVsbHB0ciwgYXMgbG9u
ZyBhcyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgaXNuJ3QgbG9hZGVkIHlldC4gQmVmb3JlCiAgICAg
Ly8gYm90aGVyaW5nIHRvIGxheSBvdXQgdGhlIFNWRyBkb2N1bWVudCwgbWFyayB0aGUgb3duZXJS
ZW5kZXJlciBuZWVkaW5nIGxheW91dCBhbmQgYXNrIGl0cwogICAgIC8vIExvY2FsRnJhbWVWaWV3
IGZvciBhIGxheW91dC4gQWZ0ZXIgdGhhdCB0aGUgUmVuZGVyRW1iZWRkZWRPYmplY3QgKG93bmVy
UmVuZGVyZXIpIGNhcnJpZXMgdGhlCiAgICAgLy8gY29ycmVjdCBzaXplLCB3aGljaCBMZWdhY3lS
ZW5kZXJTVkdSb290Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgvSGVpZ2h0IHJlbHkgb24s
IHdoZW4gbGF5aW5nCkBAIC0xNTIwLDIyICsxNTEzLDE5IEBAIGJvb2wgTG9jYWxGcmFtZVZpZXc6
OnNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpCiAgICAgcmV0
dXJuIChsYXlvdXRDb250ZXh0KCkubGF5b3V0UGhhc2UoKSA8IExvY2FsRnJhbWVWaWV3TGF5b3V0
Q29udGV4dDo6TGF5b3V0UGhhc2U6OkluUG9zdExheW91dCkgJiYgKGxheW91dENvbnRleHQoKS5s
YXlvdXRQaGFzZSgpICE9IExvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6TGF5b3V0UGhhc2U6
Ok91dHNpZGVMYXlvdXQpOwogfQogCi1SZW5kZXJCb3gqIExvY2FsRnJhbWVWaWV3OjplbWJlZGRl
ZENvbnRlbnRCb3goKSBjb25zdAorUmVuZGVyUmVwbGFjZWQqIExvY2FsRnJhbWVWaWV3OjplbWJl
ZGRlZFNWR1Jvb3QoKSBjb25zdAogewogICAgIENoZWNrZWRQdHIgcmVuZGVyVmlldyA9IHRoaXMt
PnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZpZXcpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkID0gcmVuZGVyVmlldy0+Zmlyc3RD
aGlsZCgpOworICAgIGF1dG8qIGZpcnN0Q2hpbGQgPSByZW5kZXJWaWV3LT5maXJzdENoaWxkKCk7
CiAKLSAgICAvLyBDdXJlbnRseSBvbmx5IGVtYmVkZGVkIFNWRyBkb2N1bWVudHMgcGFydGljaXBh
dGUgaW4gdGhlIHNpemUtbmVnb3RpYXRpb24gbG9naWMuCisgICAgLy8gQ3VycmVudGx5IG9ubHkg
ZW1iZWRkZWQgU1ZHIGRvY3VtZW50cyBwYXJ0aWNpcGF0ZSBpbiB0aGUgc2l6ZS1uZWdvdGlhdGlv
biBsb2dpYy4KICAgICBpZiAoYXV0byogc3ZnUm9vdCA9IGR5bmFtaWNEb3duY2FzdDxMZWdhY3lS
ZW5kZXJTVkdSb290PihmaXJzdENoaWxkKSkKICAgICAgICAgcmV0dXJuIHN2Z1Jvb3Q7CiAKLSAg
ICBpZiAoYXV0byogc3ZnUm9vdCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJTVkdSb290PihmaXJz
dENoaWxkKSkKLSAgICAgICAgcmV0dXJuIHN2Z1Jvb3Q7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gZHluYW1pY0Rvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KGZpcnN0Q2hpbGQpOwog
fQogCiB2b2lkIExvY2FsRnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRl
ckVtYmVkZGVkT2JqZWN0JiBlbWJlZGRlZE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFt
ZVZpZXcuaAppbmRleCAxYjFjNzBiY2MyNDkuLjA1OTliYTE2YjM2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYWxGcmFtZVZpZXcuaApAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBSZW5kZXJFbWJlZGRl
ZE9iamVjdDsKIGNsYXNzIFJlbmRlckxheWVyOwogY2xhc3MgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dDsKIGNsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlclJlcGxhY2VkOwogY2xhc3MgUmVu
ZGVyU2Nyb2xsYmFyUGFydDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgUmVuZGVyVmlldzsK
QEAgLTU3OCw3ICs1NzksNyBAQCBwdWJsaWM6CiAKICAgICBib29sIE5PREVMRVRFIHNob3VsZFN1
c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3QgZmluYWw7CiAKLSAgICBSZW5kZXJCb3gqIGVt
YmVkZGVkQ29udGVudEJveCgpIGNvbnN0OworICAgIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNW
R1Jvb3QoKSBjb25zdDsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRyYWNrc1Jl
cGFpbnRzKGJvb2wpOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9pc1RyYWNraW5nUmVwYWludHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKaW5kZXggM2Q0MjQ2ZWM1M2I2Li40MDIxMTUyYzljZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC03MTEsNyArNzExLDcgQEAgdm9pZCBSZW5kZXJCb3g6
OmNvbnN0cmFpbkxvZ2ljYWxNaW5NYXhTaXplc0J5QXNwZWN0UmF0aW8oTGF5b3V0VW5pdCYgY29t
cHV0ZWRNaW4KICAgICAvLyBhIHNpemUgb2YgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jayBh
bmQgdGhlIOKAnHN0cmV0Y2gtZml04oCdIHNpemluZyBvZiBub24tcmVwbGFjZWQgYmxvY2tzIGlm
IHRoZXkgaGF2ZSBkZWZpbml0ZSB2YWx1ZXMuCiAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9jc3Mtc2l6aW5nLTMvI2RlZmluaXRlCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
VG9Vc2UgPSBzdHlsZSgpOwotICAgIEFTU0VSVChzdHlsZVRvVXNlLmFzcGVjdFJhdGlvKCkuaGFz
UmF0aW8oKSB8fCBpc1JlbmRlclJlcGxhY2VkV2l0aEludHJpbnNpY1JhdGlvKCkpOworICAgIEFT
U0VSVChzdHlsZVRvVXNlLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSB8fCAoaXM8UmVuZGVyUmVw
bGFjZWQ+KCp0aGlzKSAmJiBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oKnRoaXMpLnByZWZlcnJl
ZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKSkpOwogICAgIGF1dG8gbG9naWNhbFNp
emUgPSBkaW1lbnNpb24gPT0gQ29uc3RyYWluRGltZW5zaW9uOjpXaWR0aCA/IHN0eWxlVG9Vc2Uu
bG9naWNhbFdpZHRoKCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKTsKICAgICAvLyBodHRw
czovL3d3dy53My5vcmcvVFIvY3NzLXNpemluZy00LyNhc3BlY3QtcmF0aW8tbWluaW11bQogICAg
IGlmIChtaW5pbXVtU2l6ZVR5cGUgPT0gTWluaW11bVNpemVJc0F1dG9tYXRpY0NvbnRlbnRCYXNl
ZDo6WWVzKSB7CkBAIC0yOTM5LDcgKzI5MzksNiBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Zmls
bEF2YWlsYWJsZU1lYXN1cmUoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIExheQog
ICAgIHJldHVybiBhdmFpbGFibGVMb2dpY2FsV2lkdGggLSBtYXJnaW5TdGFydCAtIG1hcmdpbkVu
ZDsKIH0KIAotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXl3b3JkPiB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhzKEtleXdvcmQsIExheW91dFVuaXQgYm9y
ZGVyQW5kUGFkZGluZywgTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBt
YXhMb2dpY2FsV2lkdGgpIGNvbnN0CiB7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OnNhbWVfYXM8
S2V5d29yZCwgQ1NTOjpLZXl3b3JkOjpNaW5JbnRyaW5zaWM+KQpAQCAtMjk1NCwxNCArMjk1Mywx
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXl3b3JkPiB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlu
dHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhzKAogICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxX
aWR0aCA9IHN0ZDo6bWF4KG1pbkxvZ2ljYWxXaWR0aCwgbWluQ2hpbGRyZW5Mb2dpY2FsV2lkdGgp
OwogICAgICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1heExvZ2ljYWxX
aWR0aCwgbWF4Q2hpbGRyZW5Mb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgfQotICAgICAgICB9
IGVsc2UgaWYgKGlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0aW8oKSAmJiBzdHlsZSgp
LmxvZ2ljYWxIZWlnaHQoKS5pc1NwZWNpZmllZCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoQ2hl
Y2tlZFB0ciByZW5kZXJSZXBsYWNlZCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4o
KnRoaXMpKSB7CiAgICAgICAgICAgICAvLyBGb3IgcmVwbGFjZWQgZWxlbWVudHMgd2l0aCBhbiBp
bnRyaW5zaWMgYXNwZWN0IHJhdGlvIChlLmcuIDxpbWc+KSBhbmQgYQogICAgICAgICAgICAgLy8g
c3BlY2lmaWVkIGJsb2NrIHNpemUsIGNvbXB1dGUgdGhlIHRyYW5zZmVycmVkIG1pbi9tYXgtY29u
dGVudCBpbmxpbmUgc2l6ZQogICAgICAgICAgICAgLy8gdGhyb3VnaCB0aGUgaW50cmluc2ljIHJh
dGlvIHJhdGhlciB0aGFuIHVzaW5nIHRoZSByYXcgbmF0dXJhbCB3aWR0aC4KLSAgICAgICAgICAg
IGF1dG8gaW50cmluc2ljUmF0aW8gPSBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oKnRoaXMpLmNv
bXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOwotICAgICAgICAgICAgYXV0byBjb21wdXRlZFZh
bHVlcyA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbFRvcCgp
KTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudEJsb2NrU2l6ZSA9IHN0ZDo6bWF4KDBfbHUsIGNv
bXB1dGVkVmFsdWVzLmV4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwot
ICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gbWF4TG9naWNhbFdpZHRoID0gTGF5b3V0VW5p
dChjb250ZW50QmxvY2tTaXplICogaW50cmluc2ljUmF0aW8pOworICAgICAgICAgICAgYXV0byBw
cmVmZXJyZWRSYXRpbyA9IHJlbmRlclJlcGxhY2VkLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFz
cGVjdFJhdGlvRG91YmxlKCk7CisgICAgICAgICAgICBpZiAocHJlZmVycmVkUmF0aW8gJiYgc3R5
bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQoKSkgeworICAgICAgICAgICAgICAgIGF1
dG8gY29tcHV0ZWRWYWx1ZXMgPSBjb21wdXRlTG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KCks
IGxvZ2ljYWxUb3AoKSk7CisgICAgICAgICAgICAgICAgYXV0byBjb250ZW50QmxvY2tTaXplID0g
c3RkOjptYXgoMF9sdSwgY29tcHV0ZWRWYWx1ZXMuZXh0ZW50IC0gYm9yZGVyQW5kUGFkZGluZ0xv
Z2ljYWxIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gbWF4TG9n
aWNhbFdpZHRoID0gTGF5b3V0VW5pdChjb250ZW50QmxvY2tTaXplICogcHJlZmVycmVkUmF0aW8p
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgY29tcHV0ZUludHJpbnNpY0tl
eXdvcmRMb2dpY2FsV2lkdGhzKG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxX
aWR0aHMobWluTG9naWNhbFdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpOwogICAgIH0KQEAgLTM2Nzcs
MTUgKzM2NzksMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU2l6ZVR5cGU+IHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlU2l6aW5nS2UKICAgICBhdXRvIG1pbk1heENv
bnRlbnQgPSBbJl0gLT4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB7CiAgICAgICAgIC8vIEZJ
WE1FOiBUaGUgQ1NTIHNpemluZyBzcGVjIGlzIGNvbnNpZGVyaW5nIGNoYW5naW5nIHdoYXQgbWlu
LWNvbnRlbnQvbWF4LWNvbnRlbnQgc2hvdWxkIHJlc29sdmUgdG8uCiAgICAgICAgIC8vIElmIHRo
YXQgaGFwcGVucywgdGhpcyBjb2RlIHdpbGwgaGF2ZSB0byBjaGFuZ2UuCi0gICAgICAgIGlmIChh
dXRvKiByZW5kZXJJbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFnZT4odGhpcykpIHsK
KyAgICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVySW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVu
ZGVySW1hZ2U+KHRoaXMpKSB7CiAgICAgICAgICAgICBhdXRvIGNvbXB1dGVkRml4ZWRMb2dpY2Fs
V2lkdGggPSBzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLnRyeUZpeGVkKCk7CiAgICAgICAgICAgICBp
ZiAoY29tcHV0ZWRGaXhlZExvZ2ljYWxXaWR0aCAmJiAhc3R5bGUoKS5hc3BlY3RSYXRpbygpLmhh
c1JhdGlvKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGludHJpbnNpY1JhdGlvID0gcmVuZGVy
SW1hZ2UtPmludHJpbnNpY1JhdGlvKCk7CisgICAgICAgICAgICAgICAgYXV0byBwcmVmZXJyZWRS
YXRpbyA9IHJlbmRlckltYWdlLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpOwogICAgICAgICAgICAg
ICAgIHJldHVybiByZXNvbHZlSGVpZ2h0Rm9yUmF0aW8oCiAgICAgICAgICAgICAgICAgICAgIGJv
cmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgYm9yZGVy
QW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5p
dCB7IGNvbXB1dGVkRml4ZWRMb2dpY2FsV2lkdGgtPnJlc29sdmVab29tKHN0eWxlKCkudXNlZFpv
b21Gb3JMZW5ndGgoKSkgfSwKLSAgICAgICAgICAgICAgICAgICAgaW50cmluc2ljUmF0aW8udHJh
bnNwb3NlZFNpemUoKS5hc3BlY3RSYXRpbygpLAorICAgICAgICAgICAgICAgICAgICBwcmVmZXJy
ZWRSYXRpby50cmFuc3Bvc2VkU2l6ZSgpLmFzcGVjdFJhdGlvKCksCiAgICAgICAgICAgICAgICAg
ICAgIEJveFNpemluZzo6Q29udGVudEJveAogICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAg
ICB9CkBAIC0zNjk1LDggKzM2OTcsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTaXplVHlwZT4gc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVTaXppbmdLZQogICAgICAg
ICAgICAgICAgIC8vIHRoZSBhc3BlY3QgcmF0aW8uCiAgICAgICAgICAgICAgICAgaWYgKCFpc0Zs
ZXhJdGVtKCkgfHwgZG93bmNhc3Q8UmVuZGVyRmxleGlibGVCb3g+KHBhcmVudCgpKS0+aXNIb3Jp
em9udGFsRmxvdygpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAg
ICAgICAgIGlmIChhdXRvIG92ZXJyaWRpbmdXaWR0aCA9IG92ZXJyaWRpbmdCb3JkZXJCb3hMb2dp
Y2FsV2lkdGgoKTsgb3ZlcnJpZGluZ1dpZHRoICYmICFyZW5kZXJJbWFnZS0+aW50cmluc2ljUmF0
aW8oKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlSGVpZ2h0
Rm9yUmF0aW8oYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBib3JkZXJBbmRQYWRkaW5n
TG9naWNhbEhlaWdodCgpLCBjb250ZW50Qm94TG9naWNhbFdpZHRoKCpvdmVycmlkaW5nV2lkdGgp
LCByZW5kZXJJbWFnZS0+aW50cmluc2ljUmF0aW8oKS50cmFuc3Bvc2VkU2l6ZSgpLmFzcGVjdFJh
dGlvKCksIEJveFNpemluZzo6Q29udGVudEJveCk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8g
b3ZlcnJpZGluZ1dpZHRoID0gb3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxXaWR0aCgpOyBvdmVy
cmlkaW5nV2lkdGggJiYgIXJlbmRlckltYWdlLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVIZWlnaHRGb3JSYXRpbyhi
b3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCksIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVp
Z2h0KCksIGNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoKm92ZXJyaWRpbmdXaWR0aCksIHJlbmRlcklt
YWdlLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLnRyYW5zcG9zZWRTaXplKCkuYXNwZWN0UmF0aW8o
KSwgQm94U2l6aW5nOjpDb250ZW50Qm94KTsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGlmIChhdXRvIGhlaWdodCA9IGhlaWdodEZyb21D
cm9zc0F4aXNPdmVycmlkZUFuZEFzcGVjdFJhdGlvKCkpCkBAIC01Mjc0LDE3ICs1Mjc2LDExIEBA
IExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlv
KCkgY29uc3QKICAgICByZXR1cm4gY29uc3RyYWluTG9naWNhbFdpZHRoQnlNaW5NYXgobG9naWNh
bFdpZHRoLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uLCAqY29udGFpbmluZ0Jsb2Nr
KCksIEFsbG93SW50cmluc2ljOjpObyk7CiB9CiAKLWJvb2wgUmVuZGVyQm94Ojppc1JlbmRlclJl
cGxhY2VkV2l0aEludHJpbnNpY1JhdGlvKCkgY29uc3QKLXsKLSAgICBpZiAoYXV0byogcmVwbGFj
ZWQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHRoaXMpKQotICAgICAgICByZXR1
cm4gcmVwbGFjZWQtPmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOwotICAgIHJldHVybiBm
YWxzZTsKLX0KIAotc3RkOjpvcHRpb25hbDxkb3VibGU+IFJlbmRlckJveDo6cmVzb2x2ZUFzcGVj
dFJhdGlvKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBSZW5kZXJCb3g6OmFzcGVjdFJh
dGlvVmFsdWUoKSBjb25zdAogewotICAgIGlmIChhdXRvKiByZXBsYWNlZEVsZW1lbnQgPSBkeW5h
bWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHRoaXMpKSAKLSAgICAgICAgcmV0dXJuIHJlcGxh
Y2VkRWxlbWVudC0+Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCk7CisgICAgaWYgKENoZWNr
ZWRQdHIgcmVwbGFjZWRFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclJlcGxhY2VkPih0
aGlzKSkKKyAgICAgICAgcmV0dXJuIHJlcGxhY2VkRWxlbWVudC0+cHJlZmVycmVkQXNwZWN0UmF0
aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCku
aGFzUmF0aW8oKSkKICAgICAgICAgcmV0dXJuIHN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCk7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01Mjk1LDcgKzUyOTEsNyBAQCBzdGQ6OnBh
aXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNh
bFdpZHRoRnJvbUFzcGVjdAogewogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNaW5TaXplID0g
TGF5b3V0VW5pdCgpOwogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNYXhTaXplID0gTGF5b3V0
VW5pdDo6bWF4KCk7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlvID0gcmVz
b2x2ZUFzcGVjdFJhdGlvKCk7CisgICAgYXV0byBhc3BlY3RSYXRpbyA9IGFzcGVjdFJhdGlvVmFs
dWUoKTsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQogICAgICAgICByZXR1cm4geyB0cmFuc2ZlcnJl
ZE1pblNpemUsIHRyYW5zZmVycmVkTWF4U2l6ZSB9OwogCkBAIC01MzE2LDcgKzUzMTIsNyBAQCBz
dGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTWluTWF4
TG9naWNhbEhlaWdodEZyb21Bc3BlYwogewogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNaW5T
aXplID0gTGF5b3V0VW5pdCgpOwogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNYXhTaXplID0g
TGF5b3V0VW5pdDo6bWF4KCk7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlv
ID0gcmVzb2x2ZUFzcGVjdFJhdGlvKCk7CisgICAgYXV0byBhc3BlY3RSYXRpbyA9IGFzcGVjdFJh
dGlvVmFsdWUoKTsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQogICAgICAgICByZXR1cm4geyB0cmFu
c2ZlcnJlZE1pblNpemUsIHRyYW5zZmVycmVkTWF4U2l6ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgKaW5kZXggMTg3OGM3ZGVmYmVlLi5iZThmODA2Nzk4MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTY4NSw5ICs2ODUsOCBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2b2lkIGluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50SWZOZWVkZWQo
Y29uc3QgSW50U2l6ZSYpOwogCi0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJlc29sdmVBc3Bl
Y3RSYXRpbygpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhc3BlY3RSYXRpb1Zh
bHVlKCkgY29uc3Q7CiAgICAgYm9vbCBOT0RFTEVURSBzaG91bGRJZ25vcmVBc3BlY3RSYXRpbygp
IGNvbnN0OwotICAgIGJvb2wgaXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbygpIGNv
bnN0OwogICAgIGJvb2wgc2hvdWxkQ29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygp
IGNvbnN0OwogICAgIGJvb2wgaXNSZXNvbHZlYWJsZVN0cmV0Y2hTaXplKGNvbnN0IGF1dG8mIHNp
emUpIGNvbnN0IHsgcmV0dXJuIHNpemUuaXNTdHJldGNoKCkgJiYgY29udGFpbmluZ0Jsb2NrSGFz
RGVmaW5pdGVCbG9ja1NpemUoKTsgfQogICAgIGJvb2wgaXNVbnJlc29sdmVhYmxlU3RyZXRjaFNp
emUoY29uc3QgYXV0byYgc2l6ZSkgY29uc3QgeyByZXR1cm4gc2l6ZS5pc1N0cmV0Y2goKSAmJiAh
Y29udGFpbmluZ0Jsb2NrSGFzRGVmaW5pdGVCbG9ja1NpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNzRiM2UwYjhkMmNhLi4x
ZmVkOTZkMzg2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcApAQCAtODc5LDcgKzg3OSw3IEBAIHN0YXRpYyBib29sIGlzU1ZHUm9vdFdpdGhJ
bnRyaW5zaWNBc3BlY3RSYXRpbyhjb25zdCBSZW5kZXJCb3gmIGZsZXhJdGVtKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgLy8gSXQncyBjb21tb24gZm9yIHNvbWUgcmVwbGFjZWQgZWxlbWVu
dHMsIHN1Y2ggYXMgU1ZHcywgdG8gaGF2ZSBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvcyBidXQgbm8g
aW50cmluc2ljIHNpemVzLgogICAgIC8vIFRoYXQncyB3aHkgaXQgaXNuJ3QgZW5vdWdoIGp1c3Qg
dG8gY2hlY2sgZm9yIGludHJpbnNpYyBzaXplcyBpbiB0aG9zZSBjYXNlcy4KLSAgICByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKS5jb21wdXRlSW50cmluc2ljQXNwZWN0
UmF0aW8oKSA+IDA7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRl
bSkucHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpID4gMDsKIH07CiAK
IHN0YXRpYyBib29sIGZsZXhJdGVtSGFzQXNwZWN0UmF0aW8oY29uc3QgUmVuZGVyQm94JiBmbGV4
SXRlbSkKQEAgLTEyNjIsMTEgKzEyNjIsMTEgQEAgZG91YmxlIFJlbmRlckZsZXhpYmxlQm94Ojpw
cmVmZXJyZWRBc3BlY3RSYXRpb0ZvckZsZXhJdGVtKGNvbnN0IFJlbmRlckJveCYgZmxleEkKICAg
ICBhdXRvIGZsZXhJdGVtQXNwZWN0UmF0aW8gPSBbJl0gewogICAgICAgICBhdXRvIGZsZXhJdGVt
SW50cmluc2ljU2l6ZSA9IExheW91dFNpemUgeyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsV2lk
dGgoKSwgZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CiAgICAgICAgIGlmIChm
bGV4SXRlbS5pc1JlbmRlck9yTGVnYWN5UmVuZGVyU1ZHUm9vdCgpKQotICAgICAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkuY29tcHV0ZUludHJpbnNpY0Fz
cGVjdFJhdGlvKCk7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+
KGZsZXhJdGVtKS5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAg
ICAgICAgIGlmIChmbGV4SXRlbS5zdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRpbygpIHx8IChm
bGV4SXRlbS5zdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNBdXRvQW5kUmF0aW8oKSAmJiBmbGV4SXRl
bUludHJpbnNpY1NpemUuaXNFbXB0eSgpKSkKICAgICAgICAgICAgIHJldHVybiBmbGV4SXRlbS5z
dHlsZSgpLmxvZ2ljYWxBc3BlY3RSYXRpbygpOwogICAgICAgICBpZiAoYXV0byogcmVwbGFjZWRF
bGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkpCi0gICAg
ICAgICAgICByZXR1cm4gcmVwbGFjZWRFbGVtZW50LT5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0
aW8oKTsKKyAgICAgICAgICAgIHJldHVybiByZXBsYWNlZEVsZW1lbnQtPnByZWZlcnJlZEFzcGVj
dFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKIAogICAgICAgICBBU1NFUlQoZmxleEl0ZW0u
aW50cmluc2ljTG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLmludHJp
bnNpY0xvZ2ljYWxXaWR0aCgpLnRvRG91YmxlKCkgLyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2Fs
SGVpZ2h0KCkudG9Eb3VibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCmluZGV4IDliMjA5OTViYjNmYi4uZTE1MGEyMGQ3ZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTkzOCwyNiArOTM4LDEzIEBAIHZvaWQgUmVuZGVy
SW1hZ2U6OmxheW91dCgpCiAgICAgfQogfQogCi1GbG9hdFNpemUgUmVuZGVySW1hZ2U6OmNvbXB1
dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIXNob3VsZEFwcGx5U2l6ZUNv
bnRhaW5tZW50KCkpOwotICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IFJlbmRlclJlcGxhY2VkOjpj
b21wdXRlSW50cmluc2ljU2l6ZSgpOwotCi0gICAgLy8gT3VyIGludHJpbnNpY1NpemUgaXMgZW1w
dHkgaWYgd2UncmUgcmVuZGVyaW5nIGdlbmVyYXRlZCBpbWFnZXMgd2l0aCByZWxhdGl2ZSB3aWR0
aC9oZWlnaHQuIEZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGludHJpbnNpYyBzaXplIHRvIHVzZS4KLSAg
ICBpZiAoaW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgJiYgKGltYWdlUmVzb3VyY2UoKS5pbWFnZUhh
c1JlbGF0aXZlV2lkdGgoKSB8fCBpbWFnZVJlc291cmNlKCkuaW1hZ2VIYXNSZWxhdGl2ZUhlaWdo
dCgpKSkgewotICAgICAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdCbG9jayA9IGlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpID8gY29udGFpbmVyKCkgOiB0aGlzLT5jb250YWluaW5nQmxvY2soKTsK
LSAgICAgICAgaWYgKGF1dG8qIGJveCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KCpjb250
YWluaW5nQmxvY2spKSB7Ci0gICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldFdpZHRoKGJveC0+
Y29udGVudEJveExvZ2ljYWxXaWR0aCgpKTsKLSAgICAgICAgICAgIGludHJpbnNpY1NpemUuc2V0
SGVpZ2h0KGJveC0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChBdmFpbGFibGVMb2dpY2FsSGVpZ2h0
VHlwZTo6SW5jbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHJldHVybiBpbnRyaW5zaWNTaXplOwotfQotCiBGbG9hdFNpemUgUmVuZGVySW1hZ2U6OnBy
ZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIXNob3VsZEFwcGx5U2l6
ZUNvbnRhaW5tZW50KCkpOworICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRy
aW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQsIGJ1dCB0aGUKKyAgICAvLyBhc3BlY3QgcmF0
aW8gZnJvbSB0aGUgQ1NTIGFzcGVjdC1yYXRpbyBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFpbGFibGUg
dmlhIHRoZQorICAgIC8vIGJhc2UgY2xhc3MgKHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1hZ2UgZGF0
YSkuCisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisgICAgICAgIHJldHVy
biBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKIAogICAgIC8vIERvbid0
IGNvbXB1dGUgYW4gaW50cmluc2ljIHJhdGlvIHRvIHByZXNlcnZlIGhpc3RvcmljYWwgV2ViS2l0
IGJlaGF2aW9yIGlmIHdlJ3JlIHBhaW50aW5nIGFsdCB0ZXh0IGFuZC9vciBhIGJyb2tlbiBpbWFn
ZS4KICAgICBpZiAoc2hvdWxkRGlzcGxheUJyb2tlbkltYWdlSWNvbigpKSB7CkBAIC05NjYsNiAr
OTUzLDE3IEBAIEZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBj
b25zdAogICAgICAgICByZXR1cm4geyAxLjAsIDEuMCB9OwogICAgIH0KIAorICAgIGlmIChDaGVj
a2VkUHRyIHN2Z1Jvb3QgPSBlbWJlZGRlZFNWR1Jvb3QoKSkgeworICAgICAgICBhdXRvIHJhdGlv
ID0gc3ZnUm9vdC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgaWYgKCFpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpICYmICFyYXRpby5pc0VtcHR5KCkpCisgICAgICAgICAgICByYXRp
byA9IHJhdGlvLnRyYW5zcG9zZWRTaXplKCk7CisKKyAgICAgICAgaWYgKHN0eWxlKCkuYXNwZWN0
UmF0aW8oKS5pc1JhdGlvKCkgfHwgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRp
bygpICYmIHJhdGlvLmlzRW1wdHkoKSkpCisgICAgICAgICAgICByYXRpbyA9IEZsb2F0U2l6ZTo6
bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwg
c3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CisKKyAgICAgICAgcmV0
dXJuIHJhdGlvOworICAgIH0KKwogICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVk
QXNwZWN0UmF0aW8oKTsKIH0KIApAQCAtOTczLDE0ICs5NzEsMTQgQEAgYm9vbCBSZW5kZXJJbWFn
ZTo6c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpIGNvbnN0CiB7CiAgICAgaWYgKFJl
bmRlclJlcGxhY2VkOjpzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIHJldHVybiBlbWJlZGRlZENvbnRlbnRCb3goKTsKKyAgICByZXR1
cm4gZW1iZWRkZWRTVkdSb290KCk7CiB9CiAKLVJlbmRlckJveCogUmVuZGVySW1hZ2U6OmVtYmVk
ZGVkQ29udGVudEJveCgpIGNvbnN0CitSZW5kZXJSZXBsYWNlZCogUmVuZGVySW1hZ2U6OmVtYmVk
ZGVkU1ZHUm9vdCgpIGNvbnN0CiB7CiAgICAgaWYgKFJlZlB0ciBjYWNoZWRJbWFnZSA9IHRoaXMt
PmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0ciBpbWFnZSA9IGR5bmFtaWNEb3du
Y2FzdDxTVkdJbWFnZT4oY2FjaGVkSW1hZ2UtPmltYWdlKCkpKQotICAgICAgICAgICAgcmV0dXJu
IGltYWdlLT5lbWJlZGRlZENvbnRlbnRCb3goKTsKKyAgICAgICAgICAgIHJldHVybiBpbWFnZS0+
ZW1iZWRkZWRTVkdSb290KCk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCAyY2U3NTQ5NTJhZmUuLjgzZDVlZDQ3
NWNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTg0LDE0ICs4
NCwxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc011bHRpUmVwcmVzZW50YXRpb25IRUlDKCkgY29u
c3Q7CiAjZW5kaWYKIAorICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0
IGZpbmFsOworCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVySW1hZ2UoVHlwZSwgRWxlbWVudCYsIFJl
bmRlclN0eWxlJiYsIE9wdGlvblNldDxSZXBsYWNlZEZsYWc+LCBTdHlsZTo6SW1hZ2UqID0gbnVs
bHB0ciwgY29uc3QgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvID0gMS4wZik7CiAgICAgdm9p
ZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0
ZVByZWZlcnJlZFdpZHRocygpIGNvbnN0IGZpbmFsOwotICAgIFJlbmRlckJveCogZW1iZWRkZWRD
b250ZW50Qm94KCkgY29uc3QgZmluYWw7Ci0gICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNT
aXplKCkgY29uc3QgZmluYWw7Ci0gICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkg
Y29uc3QgZmluYWw7CisgICAgUmVuZGVyUmVwbGFjZWQqIGVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0
IGZpbmFsOwogICAgIGJvb2wgZm9yZWdyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0
IExheW91dFJlY3QmIGxvY2FsUmVjdCwgdW5zaWduZWQgbWF4RGVwdGhUb1Rlc3QpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGU6OkRpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBmMDNhMTNmN2ViMTAuLmJiNjUzYTZjZjli
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0z
OCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKICNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvckxpbmVCb3hJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVwYWludGVy
LmgiCisjaW5jbHVkZSAiTGVnYWN5UmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIkxpbmVTZWxl
Y3Rpb24uaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25lZExh
eW91dENvbnN0cmFpbnRzLmgiCkBAIC01Niw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlK0dldHRlcnNJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3R5bGUrU2V0dGVyc0lubGluZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJT
VkdSb290LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRl
by5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTQ2OCw2NiArNDcwLDU1IEBAIHN0YXRp
YyBib29sIGlzVmlkZW9XaXRoRGVmYXVsdE9iamVjdFNpemUoY29uc3QgUmVuZGVyUmVwbGFjZWQq
IG1heWJlVmlkZW8pCiAgICAgVU5VU0VEX1BBUkFNKG1heWJlVmlkZW8pOwogI2VuZGlmCiAgICAg
cmV0dXJuIGZhbHNlOwotfSAKK30KIAotdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVj
dFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goUmVuZGVyQm94KiBjb250ZW50UmVuZGVyZXIs
IEZsb2F0U2l6ZSYgY29uc3RyYWluZWRTaXplLCBGbG9hdFNpemUmIHByZWZlcnJlZEFzcGVjdFJh
dGlvKSBjb25zdAorc3RhdGljIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZUZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlclJlcGxhY2VkJiByZXBsYWNlZFJlbmRlcmVyKQogewotICAgIEZsb2F0
U2l6ZSBpbnRyaW5zaWNTaXplOwotICAgIGlmIChzaG91bGRBcHBseVNpemVPcklubGluZVNpemVD
b250YWlubWVudCgpKSB7Ci0gICAgICAgIGludHJpbnNpY1NpemUgPSBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKLSAgICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8gPSBS
ZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKLSAgICB9IGVsc2UgaWYgKGNv
bnRlbnRSZW5kZXJlcikgewotICAgICAgICBib29sIGNvbnRlbnRJc1JlbmRlclJlcGxhY2VkID0g
ZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJSZXBsYWNlZCA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJSZXBsYWNlZD4oY29udGVudFJlbmRlcmVyKSkgewotICAgICAgICAgICAgaW50cmlu
c2ljU2l6ZSA9IHJlbmRlclJlcGxhY2VkLT5jb21wdXRlSW50cmluc2ljU2l6ZSgpOwotICAgICAg
ICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8gPSByZW5kZXJSZXBsYWNlZC0+cHJlZmVycmVkQXNw
ZWN0UmF0aW8oKTsKLSAgICAgICAgICAgIGNvbnRlbnRJc1JlbmRlclJlcGxhY2VkID0gdHJ1ZTsK
LSAgICAgICAgfQotICAgICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSB8
fCAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzQXV0b0FuZFJhdGlvKCkgJiYgcHJlZmVycmVkQXNw
ZWN0UmF0aW8uaXNFbXB0eSgpKSkKLSAgICAgICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlvID0g
RmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpbygpLndpZHRoKCku
dmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5oZWlnaHQoKS52YWx1ZSk7CisgICAgQVNTRVJU
KCFyZXBsYWNlZFJlbmRlcmVyLnNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpOworICAgIGlm
IChDaGVja2VkUHRyIHN2Z1Jvb3QgPSByZXBsYWNlZFJlbmRlcmVyLmVtYmVkZGVkU1ZHUm9vdCgp
KSB7CisgICAgICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IFsmXSB7CisgICAgICAgICAgICBpZiAo
Q2hlY2tlZFB0ciByb290ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KCpzdmdSb290
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcm9vdC0+Y29tcHV0ZUludHJpbnNpY1NpemUoKTsK
KyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdSb290Pigqc3ZnUm9v
dCkuY29tcHV0ZUludHJpbnNpY1NpemUoKTsKKyAgICAgICAgfSgpOworICAgICAgICBpbnRyaW5z
aWNTaXplLnNjYWxlKHJlcGxhY2VkUmVuZGVyZXIuc3R5bGUoKS51c2VkWm9vbSgpKTsKKyAgICAg
ICAgaWYgKENoZWNrZWRQdHIgaW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+KHJl
cGxhY2VkUmVuZGVyZXIpKQorICAgICAgICAgICAgaW50cmluc2ljU2l6ZS5zY2FsZShpbWFnZS0+
aW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkpOworICAgICAgICBpZiAoIXJlcGxhY2VkUmVuZGVyZXIu
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAgIGludHJpbnNpY1NpemUgPSBp
bnRyaW5zaWNTaXplLnRyYW5zcG9zZWRTaXplKCk7CisgICAgICAgIHJldHVybiBpbnRyaW5zaWNT
aXplOworICAgIH0KIAotICAgICAgICAvLyBIYW5kbGUgem9vbSAmIHZlcnRpY2FsIHdyaXRpbmcg
bW9kZXMgaGVyZSwgYXMgdGhlIGVtYmVkZGVkIGRvY3VtZW50IGRvZXNuJ3Qga25vdyBhYm91dCB0
aGVtLgotICAgICAgICBpbnRyaW5zaWNTaXplLnNjYWxlKHN0eWxlKCkudXNlZFpvb20oKSk7Cisg
ICAgYXV0byBpbnRyaW5zaWNTaXplID0gRmxvYXRTaXplIHsgcmVwbGFjZWRSZW5kZXJlci5pbnRy
aW5zaWNMb2dpY2FsV2lkdGgoKSwgcmVwbGFjZWRSZW5kZXJlci5pbnRyaW5zaWNMb2dpY2FsSGVp
Z2h0KCkgfTsKKyAgICBpZiAoQ2hlY2tlZFB0ciBpbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5k
ZXJJbWFnZT4ocmVwbGFjZWRSZW5kZXJlcik7IGltYWdlICYmIGludHJpbnNpY1NpemUuaXNFbXB0
eSgpICYmIChpbWFnZS0+aW1hZ2VSZXNvdXJjZSgpLmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIHx8
IGltYWdlLT5pbWFnZVJlc291cmNlKCkuaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpKSkgeworICAg
ICAgICBDaGVja2VkUHRyIGNvbnRhaW5pbmdCbG9jayA9IHJlcGxhY2VkUmVuZGVyZXIuaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkgPyByZXBsYWNlZFJlbmRlcmVyLmNvbnRhaW5lcigpIDogcmVwbGFj
ZWRSZW5kZXJlci5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgaWYgKENoZWNrZWRQdHIgYm94
ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oY29udGFpbmluZ0Jsb2NrKSkgeworICAgICAg
ICAgICAgaW50cmluc2ljU2l6ZS5zZXRXaWR0aChib3gtPmNvbnRlbnRCb3hMb2dpY2FsV2lkdGgo
KSk7CisgICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldEhlaWdodChib3gtPmF2YWlsYWJsZUxv
Z2ljYWxIZWlnaHQoQXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGU6OkluY2x1ZGVNYXJnaW5Cb3Jk
ZXJQYWRkaW5nKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGludHJpbnNpY1NpemU7
Cit9CiAKLSAgICAgICAgaWYgKGF1dG8qIGltYWdlID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlcklt
YWdlPigqdGhpcykpCi0gICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNjYWxlKGltYWdlLT5pbWFn
ZURldmljZVBpeGVsUmF0aW8oKSk7Cit2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmlu
c2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhGbG9hdFNpemUmIGlu
dHJpbnNpY1NpemUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0Cit7CisgICAgaWYg
KHNob3VsZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCkpIHsKKyAgICAgICAgaW50
cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZSB7IGludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBpbnRyaW5z
aWNMb2dpY2FsSGVpZ2h0KCkgfTsKKyAgICAgICAgaW50cmluc2ljUmF0aW8gPSBSZW5kZXJSZXBs
YWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnRy
aW5zaWNTaXplID0gY29tcHV0ZUludHJpbnNpY1NpemVGb3JSZW5kZXJlcigqdGhpcyk7CisgICAg
ICAgIGludHJpbnNpY1JhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKIAotICAgICAgICAv
LyBVcGRhdGUgb3VyIGludHJpbnNpYyBzaXplIHRvIG1hdGNoIHdoYXQgdGhlIGNvbnRlbnQgcmVu
ZGVyZXIgaGFzIGNvbXB1dGVkLCBzbyB0aGF0IHdoZW4gd2UKLSAgICAgICAgLy8gY29uc3RyYWlu
IHRoZSBzaXplIGJlbG93LCB0aGUgY29ycmVjdCBpbnRyaW5zaWMgc2l6ZSB3aWxsIGJlIG9idGFp
bmVkIGZvciBjb21wYXJpc29uIGFnYWluc3QKLSAgICAgICAgLy8gbWluIGFuZCBtYXggd2lkdGhz
LgotICAgICAgICBpZiAoY29udGVudElzUmVuZGVyUmVwbGFjZWQgJiYgaXNSZW5kZXJXaWRnZXQo
KSkgewotICAgICAgICAgICAgLy8gRm9yIFJlbmRlcldpZGdldCBjb250ZW50IChlLmcuIDxvYmpl
Y3Q+IGVtYmVkZGluZyBhbiBTVkcgZG9jdW1lbnQpLCBhbHdheXMgdXBkYXRlCi0gICAgICAgICAg
ICAvLyBtX2ludHJpbnNpY1NpemUgdG8gcmVmbGVjdCBjdXJyZW50IGludHJpbnNpYyBkaW1lbnNp
b25zLCBhcHBseWluZyBDU1MgZGVmYXVsdCBmYWxsYmFjawotICAgICAgICAgICAgLy8gdmFsdWVz
ICgzMDB4MTUwKSBmb3IgZGltZW5zaW9ucyB3aXRoIG5vIGludHJpbnNpYyB2YWx1ZSAoZS5nLiBw
ZXJjZW50YWdlLXNpemVkIG9yCi0gICAgICAgICAgICAvLyByZW1vdmVkIGF0dHJpYnV0ZXMpLiBU
aGlzIHByZXZlbnRzIHN0YWxlIGNhY2hlZCBzaXplcyB3aGVuIGF0dHJpYnV0ZXMgbGlrZSB3aWR0
aC9oZWlnaHQKLSAgICAgICAgICAgIC8vIGFyZSByZW1vdmVkLiBOb3RlOiB0aGlzIGRvZXMgbm90
IGFwcGx5IHRvIFJlbmRlckltYWdlICg8aW1nIHNyYz0ic3ZnIj4pLCB3aGljaCBtYW5hZ2VzCi0g
ICAgICAgICAgICAvLyBpdHMgb3duIGludHJpbnNpYyBzaXplIHZpYSBzZXRJbnRyaW5zaWNTaXpl
KCkgZHVyaW5nIGltYWdlIGxvYWQuCi0gICAgICAgICAgICBhdXRvIHNpemVUb0NhY2hlID0gaW50
cmluc2ljU2l6ZTsKKyAgICAgICAgYXV0byBzaXplVG9DYWNoZSA9IGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBpbnRyaW5zaWNTaXplIDogaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgp
OworICAgICAgICBpZiAoZW1iZWRkZWRTVkdSb290KCkgJiYgaXNSZW5kZXJXaWRnZXQoKSkgewog
ICAgICAgICAgICAgaWYgKCFzaXplVG9DYWNoZS53aWR0aCgpKQogICAgICAgICAgICAgICAgIHNp
emVUb0NhY2hlLnNldFdpZHRoKGNEZWZhdWx0V2lkdGgpOwogICAgICAgICAgICAgaWYgKCFzaXpl
VG9DYWNoZS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICBzaXplVG9DYWNoZS5zZXRIZWlnaHQo
Y0RlZmF1bHRIZWlnaHQpOwogICAgICAgICAgICAgbV9pbnRyaW5zaWNTaXplID0gTGF5b3V0U2l6
ZShzaXplVG9DYWNoZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXByZWZlcnJlZEFzcGVjdFJhdGlv
LmlzRW1wdHkoKSAmJiAhaW50cmluc2ljU2l6ZS5pc1plcm8oKSkKLSAgICAgICAgICAgIG1faW50
cmluc2ljU2l6ZSA9IExheW91dFNpemUoaW50cmluc2ljU2l6ZSk7Ci0KLSAgICAgICAgaWYgKCFp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIXByZWZlcnJlZEFz
cGVjdFJhdGlvLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBwcmVmZXJyZWRBc3BlY3RSYXRp
byA9IHByZWZlcnJlZEFzcGVjdFJhdGlvLnRyYW5zcG9zZWRTaXplKCk7Ci0gICAgICAgICAgICBp
bnRyaW5zaWNTaXplID0gaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwotICAgICAgICB9
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaW50cmluc2ljU2l6ZSA9IGNvbXB1dGVJbnRyaW5zaWNT
aXplKCk7Ci0gICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlvID0gdGhpcy0+cHJlZmVycmVkQXNw
ZWN0UmF0aW8oKTsKLSAgICAgICAgaWYgKCFwcmVmZXJyZWRBc3BlY3RSYXRpby5pc0VtcHR5KCkg
JiYgIWludHJpbnNpY1NpemUuaXNaZXJvKCkpCi0gICAgICAgICAgICBtX2ludHJpbnNpY1NpemUg
PSBMYXlvdXRTaXplKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBpbnRyaW5zaWNTaXplIDog
aW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpKTsKKyAgICAgICAgfSBlbHNlIGlmICghaW50
cmluc2ljUmF0aW8uaXNFbXB0eSgpICYmICFpbnRyaW5zaWNTaXplLmlzWmVybygpKQorICAgICAg
ICAgICAgbV9pbnRyaW5zaWNTaXplID0gTGF5b3V0U2l6ZShzaXplVG9DYWNoZSk7CiAgICAgfQot
ICAgIGNvbnN0cmFpbmVkU2l6ZSA9IGludHJpbnNpY1NpemU7Ci19Ci0KLXZvaWQgUmVuZGVyUmVw
bGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1h
eFNpemVzKFJlbmRlckJveCogY29udGVudFJlbmRlcmVyLCBGbG9hdFNpemUmIGludHJpbnNpY1Np
emUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0Ci17Ci0gICAgY29tcHV0ZUFzcGVj
dFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goY29udGVudFJlbmRlcmVyLCBpbnRyaW5zaWNT
aXplLCBpbnRyaW5zaWNSYXRpbyk7CiAKICAgICAvLyBOb3cgY29uc3RyYWluIHRoZSBpbnRyaW5z
aWMgc2l6ZSBhbG9uZyBlYWNoIGF4aXMgYWNjb3JkaW5nIHRvIG1pbmltdW0gYW5kIG1heGltdW0g
d2lkdGgvaGVpZ2h0cyBhbG9uZyB0aGUKICAgICAvLyBvcHBvc2l0ZSBheGlzLiBTbyBmb3IgZXhh
bXBsZSBhIG1heGltdW0gd2lkdGggdGhhdCBzaHJpbmtzIG91ciB3aWR0aCB3aWxsIHJlc3VsdCBp
biB0aGUgaGVpZ2h0IHdlIGNvbXB1dGUgaGVyZQpAQCAtNTk3LDI1ICs1ODgsOCBAQCBMYXlvdXRS
ZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFNpemUm
IGludHJpbnNpY1NpemUpCiAgICAgcmV0dXJuIGZpbmFsUmVjdDsKIH0KIAotZG91YmxlIFJlbmRl
clJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdAotewotICAgIEZs
b2F0U2l6ZSBpbnRyaW5zaWNSYXRpbzsKLSAgICBGbG9hdFNpemUgaW50cmluc2ljU2l6ZTsKLSAg
ICBjb21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChlbWJlZGRlZENvbnRl
bnRCb3goKSwgaW50cmluc2ljU2l6ZSwgaW50cmluc2ljUmF0aW8pOwotICAgIHJldHVybiBpbnRy
aW5zaWNSYXRpby5hc3BlY3RSYXRpb0RvdWJsZSgpOwotfQotCi1GbG9hdFNpemUgUmVuZGVyUmVw
bGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKLXsKLSAgICAvLyBJZiB0aGVyZSdz
IGFuIGVtYmVkZGVkQ29udGVudEJveCgpIG9mIGEgcmVtb3RlLCByZWZlcmVuY2VkIGRvY3VtZW50
IGF2YWlsYWJsZSwgdGhpcyBjb2RlLXBhdGggc2hvdWxkIG5ldmVyIGJlIHVzZWQuCi0gICAgQVNT
RVJUKCFlbWJlZGRlZENvbnRlbnRCb3goKSB8fCBzaG91bGRBcHBseVNpemVPcklubGluZVNpemVD
b250YWlubWVudCgpKTsKLSAgICByZXR1cm4geyBpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50
cmluc2ljTG9naWNhbEhlaWdodCgpIH07Ci19Ci0KIEZsb2F0U2l6ZSBSZW5kZXJSZXBsYWNlZDo6
cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIC8vIElmIHRoZXJlJ3MgYW4gZW1i
ZWRkZWRDb250ZW50Qm94KCkgb2YgYSByZW1vdGUsIHJlZmVyZW5jZWQgZG9jdW1lbnQgYXZhaWxh
YmxlLCB0aGlzIGNvZGUtcGF0aCBzaG91bGQgbmV2ZXIgYmUgdXNlZC4KLSAgICBBU1NFUlQoIWVt
YmVkZGVkQ29udGVudEJveCgpIHx8IHNob3VsZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5t
ZW50KCkpOwogICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZShpbnRyaW5zaWNMb2dp
Y2FsV2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpKTsKICAgICBGbG9hdFNpemUgcHJl
ZmVycmVkQXNwZWN0UmF0aW87CiAKQEAgLTY3NSw3ICs2NDksNyBAQCB2b2lkIFJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlQXNwZWN0UmF0aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5
b3V0VW5pdAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxl
KCk7Ci0gICAgYXV0byBjb21wdXRlZEFzcGVjdFJhdGlvID0gY29tcHV0ZUludHJpbnNpY0FzcGVj
dFJhdGlvKCk7CisgICAgYXV0byBjb21wdXRlZEFzcGVjdFJhdGlvID0gcHJlZmVycmVkQXNwZWN0
UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgIGF1dG8gY29tcHV0ZWRJbnRyaW5zaWNM
b2dpY2FsV2lkdGggPSBtaW5Mb2dpY2FsV2lkdGg7CiAKICAgICBpZiAoYXV0byBmaXhlZExvZ2lj
YWxIZWlnaHQgPSBzdHlsZS5sb2dpY2FsSGVpZ2h0KCkudHJ5Rml4ZWQoKSkKQEAgLTY5OCwxMyAr
NjcyLDkgQEAgc3RhdGljIGlubGluZSBMYXlvdXRVbml0IE5PREVMRVRFIHJlc29sdmVXaWR0aEZv
clJhdGlvKExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGkKICAgICByZXR1cm4gTGF5b3V0VW5pdChs
b2dpY2FsSGVpZ2h0ICogYXNwZWN0UmF0aW8pOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgTk9E
RUxFVEUgaGFzSW50cmluc2ljU2l6ZShSZW5kZXJCb3gqY29udGVudFJlbmRlcmVyLCBib29sIGhh
c0ludHJpbnNpY1dpZHRoLCBib29sIGhhc0ludHJpbnNpY0hlaWdodCApCitzdGF0aWMgaW5saW5l
IGJvb2wgTk9ERUxFVEUgaGFzSW50cmluc2ljU2l6ZShjb25zdCBSZW5kZXJSZXBsYWNlZCogc3Zn
Um9vdCwgYm9vbCBoYXNJbnRyaW5zaWNXaWR0aCwgYm9vbCBoYXNJbnRyaW5zaWNIZWlnaHQpCiB7
Ci0gICAgaWYgKGhhc0ludHJpbnNpY1dpZHRoICYmIGhhc0ludHJpbnNpY0hlaWdodCkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGhhc0ludHJpbnNpY1dpZHRoIHx8IGhhc0ludHJpbnNp
Y0hlaWdodCkKLSAgICAgICAgcmV0dXJuIGNvbnRlbnRSZW5kZXJlciAmJiBjb250ZW50UmVuZGVy
ZXItPmlzUmVuZGVyT3JMZWdhY3lSZW5kZXJTVkdSb290KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiAoaGFzSW50cmluc2ljV2lkdGggJiYgaGFzSW50cmluc2ljSGVpZ2h0KSB8fCAo
KGhhc0ludHJpbnNpY1dpZHRoIHx8IGhhc0ludHJpbnNpY0hlaWdodCkgJiYgc3ZnUm9vdCk7CiB9
CiAKIExheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0
aChTaG91bGRDb21wdXRlUHJlZmVycmVkIHNob3VsZENvbXB1dGVQcmVmZXJyZWQpIGNvbnN0CkBA
IC03MTUsMTIgKzY4NSwxMCBAQCBMYXlvdXRVbml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVw
bGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCBzaAogICAgIGlmIChzdHls
ZS5sb2dpY2FsV2lkdGgoKS5pc0ludHJpbnNpY09yU3RyZXRjaCgpKQogICAgICAgICByZXR1cm4g
Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKGNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKHN0eWxlLmxvZ2ljYWxXaWR0aCgpKSwgc2hvdWxkQ29t
cHV0ZVByZWZlcnJlZCk7CiAKLSAgICBSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVk
ZGVkQ29udGVudEJveCgpOwotCiAgICAgLy8gMTAuMy4yIElubGluZSwgcmVwbGFjZWQgZWxlbWVu
dHM6IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNpbmxpbmUtcmVwbGFj
ZWQtd2lkdGgKICAgICBGbG9hdFNpemUgaW50cmluc2ljUmF0aW87CiAgICAgRmxvYXRTaXplIGNv
bnN0cmFpbmVkU2l6ZTsKLSAgICBjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJh
bnNmZXJyZWRNaW5NYXhTaXplcyhjb250ZW50UmVuZGVyZXIsIGNvbnN0cmFpbmVkU2l6ZSwgaW50
cmluc2ljUmF0aW8pOworICAgIGNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFu
c2ZlcnJlZE1pbk1heFNpemVzKGNvbnN0cmFpbmVkU2l6ZSwgaW50cmluc2ljUmF0aW8pOwogCiAg
ICAgaWYgKHN0eWxlLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpKSB7CiAgICAgICAgIGJvb2wgY29t
cHV0ZWRIZWlnaHRJc0F1dG8gPSBzdHlsZS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCk7CkBAIC03
MzAsNyArNjk4LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2Vk
TG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2gKICAgICAgICAgLy8gRm9yIGZs
ZXggb3IgZ3JpZCBpdGVtcyB3aGVyZSB0aGUgbG9naWNhbCBoZWlnaHQgaGFzIGJlZW4gb3ZlcnJp
ZGVuIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGF0IHNpemUgdG8gY29tcHV0ZSB0aGUgcmVwbGFjZWQg
d2lkdGggYXMgbG9uZyBhcyB0aGUgZmxleCBvcgogICAgICAgICAvLyBncmlkIGl0ZW0gaGFzIGFu
IGludHJpbnNpYyBzaXplLiBJdCBpcyBwb3NzaWJsZSAoaW5kZWVkLCBjb21tb24pIGZvciBhbiBT
VkcgZ3JhcGhpYyB0byBoYXZlIGFuIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gYnV0IG5vdCB0byBo
YXZlIGFuIGludHJpbnNpYwogICAgICAgICAvLyB3aWR0aCBvciBoZWlnaHQuIFRoZXJlIGFyZSBh
bHNvIGVsZW1lbnRzIHdpdGggaW50cmluc2ljIHNpemVzIGJ1dCB3aXRob3V0IGludHJpbnNpYyBy
YXRpbyAobGlrZSBhbiBpZnJhbWUpLgotICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNh
bEhlaWdodCA9ICghaW50cmluc2ljUmF0aW8uaXNFbXB0eSgpICYmIChpc0ZsZXhJdGVtKCkgfHwg
aXNHcmlkSXRlbSgpKSAmJiBoYXNJbnRyaW5zaWNTaXplKGNvbnRlbnRSZW5kZXJlciwgaGFzSW50
cmluc2ljV2lkdGgsIGhhc0ludHJpbnNpY0hlaWdodCkgPyB0aGlzLT5vdmVycmlkaW5nQm9yZGVy
Qm94TG9naWNhbEhlaWdodCgpIDogc3RkOjpudWxsb3B0KSkKKyAgICAgICAgaWYgKGF1dG8gb3Zl
cnJpZGluZ0xvZ2ljYWxIZWlnaHQgPSAoIWludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiAoaXNG
bGV4SXRlbSgpIHx8IGlzR3JpZEl0ZW0oKSkgJiYgaGFzSW50cmluc2ljU2l6ZShlbWJlZGRlZFNW
R1Jvb3QoKSwgaGFzSW50cmluc2ljV2lkdGgsIGhhc0ludHJpbnNpY0hlaWdodCkgPyB0aGlzLT5v
dmVycmlkaW5nQm9yZGVyQm94TG9naWNhbEhlaWdodCgpIDogc3RkOjpudWxsb3B0KSkKICAgICAg
ICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4
V2lkdGgoY29udGVudEJveExvZ2ljYWxIZWlnaHQoKm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KSAq
IGludHJpbnNpY1JhdGlvLmFzcGVjdFJhdGlvRG91YmxlKCksIHNob3VsZENvbXB1dGVQcmVmZXJy
ZWQpOwogCiAgICAgICAgIC8vIElmICdoZWlnaHQnIGFuZCAnd2lkdGgnIGJvdGggaGF2ZSBjb21w
dXRlZCB2YWx1ZXMgb2YgJ2F1dG8nIGFuZCB0aGUgZWxlbWVudCBhbHNvIGhhcyBhbiBpbnRyaW5z
aWMgd2lkdGgsIHRoZW4gdGhhdCBpbnRyaW5zaWMgd2lkdGggaXMgdGhlIHVzZWQgdmFsdWUgb2Yg
J3dpZHRoJy4KQEAgLTgxMywxOSArNzgxLDE3IEBAIExheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6
OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0CiAg
ICAgaWYgKGhhc1JlcGxhY2VkTG9naWNhbEhlaWdodCgpKQogICAgICAgICByZXR1cm4gY29tcHV0
ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJlc3BlY3RpbmdNaW5NYXhIZWlnaHQoY29tcHV0ZVJlcGxh
Y2VkTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCkubG9naWNhbEhlaWdodCgpKSk7CiAKLSAgICBS
ZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVkZGVkQ29udGVudEJveCgpOwotCiAgICAg
Ly8gMTAuNi4yIElubGluZSwgcmVwbGFjZWQgZWxlbWVudHM6IGh0dHA6Ly93d3cudzMub3JnL1RS
L0NTUzIxL3Zpc3VkZXQuaHRtbCNpbmxpbmUtcmVwbGFjZWQtaGVpZ2h0CiAgICAgRmxvYXRTaXpl
IGludHJpbnNpY1JhdGlvOwogICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5lZFNpemU7Ci0gICAgY29t
cHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoY29u
dGVudFJlbmRlcmVyLCBjb25zdHJhaW5lZFNpemUsIGludHJpbnNpY1JhdGlvKTsKKyAgICBjb21w
dXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhjb25z
dHJhaW5lZFNpemUsIGludHJpbnNpY1JhdGlvKTsKIAogICAgIGJvb2wgd2lkdGhJc0F1dG8gPSBz
dHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpOwogICAgIGJvb2wgaGFzSW50cmluc2ljV2lk
dGggPSBjb25zdHJhaW5lZFNpemUud2lkdGgoKSA+IDAgfHwgKCFjb25zdHJhaW5lZFNpemUud2lk
dGgoKSAmJiBzaG91bGRSZXNwZWN0WmVyb0ludHJpbnNpY1dpZHRoKCkpIHx8IHNob3VsZEFwcGx5
U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCk7CiAgICAgYm9vbCBoYXNJbnRyaW5zaWNIZWln
aHQgPSBjb25zdHJhaW5lZFNpemUuaGVpZ2h0KCkgPiAwIHx8IHNob3VsZEFwcGx5U2l6ZUNvbnRh
aW5tZW50KCk7CiAKICAgICAvLyBTZWUgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgpIGZv
ciBhIHNpbWlsYXIgY2hlY2sgZm9yIGhlaWdodHMuCi0gICAgaWYgKGF1dG8gb3ZlcnJpZGluZ2xv
Z2ljYWxXaWR0aCA9ICghaW50cmluc2ljUmF0aW8uaXNFbXB0eSgpICYmIChpc0ZsZXhJdGVtKCkg
fHwgaXNHcmlkSXRlbSgpKSAmJiBoYXNJbnRyaW5zaWNTaXplKGNvbnRlbnRSZW5kZXJlciwgaGFz
SW50cmluc2ljV2lkdGgsIGhhc0ludHJpbnNpY0hlaWdodCkgPyBvdmVycmlkaW5nQm9yZGVyQm94
TG9naWNhbFdpZHRoKCkgOiBzdGQ6Om51bGxvcHQpKQorICAgIGlmIChhdXRvIG92ZXJyaWRpbmds
b2dpY2FsV2lkdGggPSAoIWludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiAoaXNGbGV4SXRlbSgp
IHx8IGlzR3JpZEl0ZW0oKSkgJiYgaGFzSW50cmluc2ljU2l6ZShlbWJlZGRlZFNWR1Jvb3QoKSwg
aGFzSW50cmluc2ljV2lkdGgsIGhhc0ludHJpbnNpY0hlaWdodCkgPyBvdmVycmlkaW5nQm9yZGVy
Qm94TG9naWNhbFdpZHRoKCkgOiBzdGQ6Om51bGxvcHQpKQogICAgICAgICByZXR1cm4gY29tcHV0
ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJlc3BlY3RpbmdNaW5NYXhIZWlnaHQoY29udGVudEJveExv
Z2ljYWxXaWR0aCgqb3ZlcnJpZGluZ2xvZ2ljYWxXaWR0aCkgKiBpbnRyaW5zaWNSYXRpby50cmFu
c3Bvc2VkU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCkpOwogCiAgICAgLy8gSWYgJ2hlaWdodCcg
YW5kICd3aWR0aCcgYm90aCBoYXZlIGNvbXB1dGVkIHZhbHVlcyBvZiAnYXV0bycgYW5kIHRoZSBl
bGVtZW50IGFsc28gaGFzIGFuIGludHJpbnNpYyBoZWlnaHQsIHRoZW4gdGhhdCBpbnRyaW5zaWMg
aGVpZ2h0IGlzIHRoZSB1c2VkIHZhbHVlIG9mICdoZWlnaHQnLgpAQCAtODYwLDcgKzgyNiw3IEBA
IHZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdpZHRo
cyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsCiB7CiAgICAgaWYgKGhhc0ludHJpbnNpY0FzcGVjdFJh
dGlvKCkgJiYgIXN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpKSB7CiAgICAgICAgIGlm
IChhdXRvIGZpeGVkSGVpZ2h0ID0gc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkudHJ5Rml4ZWQoKSkg
ewotICAgICAgICAgICAgYXV0byBoZWlnaHREZXJpdmVkV2lkdGggPSBMYXlvdXRVbml0IHsgZml4
ZWRIZWlnaHQtPnJlc29sdmVab29tKHN0eWxlKCkudXNlZFpvb21Gb3JMZW5ndGgoKSkgKiBjb21w
dXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKSB9OworICAgICAgICAgICAgYXV0byBoZWlnaHREZXJp
dmVkV2lkdGggPSBMYXlvdXRVbml0IHsgZml4ZWRIZWlnaHQtPnJlc29sdmVab29tKHN0eWxlKCku
dXNlZFpvb21Gb3JMZW5ndGgoKSkgKiBwcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlv
RG91YmxlKCkgfTsKICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IGhlaWdodERlcml2ZWRX
aWR0aDsKICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IGhlaWdodERlcml2ZWRXaWR0aDsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNzEsMTQgKzEwMzcsNiBAQCB2b2lkIFJlbmRlclJl
cGxhY2VkOjpsYXlvdXRTaGFkb3dDb250ZW50KGNvbnN0IExheW91dFNpemUmIG9sZFNpemUpCiAg
ICAgY2xlYXJDaGlsZE5lZWRzTGF5b3V0KCk7CiB9CiAKLUZsb2F0U2l6ZSBSZW5kZXJSZXBsYWNl
ZDo6aW50cmluc2ljUmF0aW8oKSBjb25zdAotewotICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNSYXRp
bzsKLSAgICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplOwotICAgIGNvbXB1dGVBc3BlY3RSYXRp
b0luZm9ybWF0aW9uRm9yUmVuZGVyQm94KGVtYmVkZGVkQ29udGVudEJveCgpLCBjb25zdHJhaW5l
ZFNpemUsIGludHJpbnNpY1JhdGlvKTsKLSAgICByZXR1cm4gaW50cmluc2ljUmF0aW87Ci19Ci0K
IHZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZE91dE9mRmxvd1Bvc2l0aW9uZWRM
b2dpY2FsV2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykg
Y29uc3QKIHsKICAgICBQb3NpdGlvbmVkTGF5b3V0Q29uc3RyYWludHMgaW5saW5lQ29uc3RyYWlu
dHMoKnRoaXMsIExvZ2ljYWxCb3hBeGlzOjpJbmxpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuaAppbmRleCBhYjNmNDcxMGFhOTAuLmViN2ZiZjQwZjY3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTQyLDEzICs0Miwx
MCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZXROZWVkc0xheW91dElmTmVlZGVkQWZ0ZXJJbnRyaW5z
aWNTaXplQ2hhbmdlKCk7CiAKICAgICBMYXlvdXRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdCBm
aW5hbDsKLSAgICBGbG9hdFNpemUgaW50cmluc2ljUmF0aW8oKSBjb25zdDsKLSAgICAKKwogICAg
IGJvb2wgaXNDb250ZW50TGlrZWx5VmlzaWJsZUluVmlld3BvcnQoKTsKICAgICBib29sIHNob3Vs
ZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGRvdWJs
ZSBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdDsKLQogICAgIHZpcnR1YWwgYm9v
bCBwYWludHNDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5b3V0VW5p
dCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgU3R5bGU6OlByZWZlcnJl
ZFNpemUmIGxvZ2ljYWxIZWlnaHQpIGNvbnN0OwpAQCAtNjEsNiArNTgsOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCByZXBsYWNlZE1pbkxvZ2ljYWxIZWlnaHRDb21wdXRlc0FzTm9uZSgpIGNvbnN0Owog
ICAgIGJvb2wgcmVwbGFjZWRNYXhMb2dpY2FsSGVpZ2h0Q29tcHV0ZXNBc05vbmUoKSBjb25zdDsK
IAorICAgIHZpcnR1YWwgUmVuZGVyUmVwbGFjZWQqIGVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RS
YXRpbygpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyUmVwbGFjZWQoVHlwZSwgRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxSZXBsYWNlZEZsYWc+ID0geyB9KTsKICAg
ICBSZW5kZXJSZXBsYWNlZChUeXBlLCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3QgTGF5
b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSwgT3B0aW9uU2V0PFJlcGxhY2VkRmxhZz4gPSB7IH0pOwpA
QCAtNzcsOSArNzcsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlOjpEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0OwotCiAgICAg
dm9pZCBzZXRJbnRyaW5zaWNTaXplKGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpIHsg
bV9pbnRyaW5zaWNTaXplID0gaW50cmluc2ljU2l6ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnRy
aW5zaWNTaXplQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxhdGl2ZUludHJpbnNp
Y0xvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMDYsNyArMTAzLDYg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRyaW5z
aWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYg
bWF4TG9naWNhbFdpZHRoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUmVuZGVyQm94KiBlbWJlZGRl
ZENvbnRlbnRCb3goKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgQVNDSUlMaXRlcmFsIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGFjZWQiX3M7IH0KIAog
ICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTEyMSw4ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25M
ZWFmKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5b3V0UmVjdCBz
ZWxlY3Rpb25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgZmluYWw7Ci0g
ICAgdm9pZCBjb21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChSZW5kZXJC
b3gqLCBGbG9hdFNpemUmIGNvbnN0cmFpbmVkU2l6ZSwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRp
bykgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJh
bnNmZXJyZWRNaW5NYXhTaXplcyhSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciwgRmxvYXRTaXpl
JiBjb25zdHJhaW5lZFNpemUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0OworICAg
IHZvaWQgY29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4
U2l6ZXMoRmxvYXRTaXplJiBjb25zdHJhaW5lZFNpemUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0
aW8pIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZERyYXdTZWxlY3Rpb25UaW50KCkg
Y29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmlu
ZGV4IDRkYTUwOGI2YTczYS4uOGYzNGQ5NGY1YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtNDg3LDE1ICs0ODcsMzcgQEAgYm9vbCBSZW5kZXJXaWRn
ZXQ6OnNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdAogewogICAgIGlmIChS
ZW5kZXJSZXBsYWNlZDo6c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZW1iZWRkZWRDb250ZW50Qm94KCk7CisgICAgcmV0
dXJuIGVtYmVkZGVkU1ZHUm9vdCgpOwogfQogCi1SZW5kZXJCb3gqIFJlbmRlcldpZGdldDo6ZW1i
ZWRkZWRDb250ZW50Qm94KCkgY29uc3QKK1JlbmRlclJlcGxhY2VkKiBSZW5kZXJXaWRnZXQ6OmVt
YmVkZGVkU1ZHUm9vdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxSZW5kZXJFbWJlZGRlZE9iamVj
dD4odGhpcykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0ciBmcmFtZVZpZXcg
PSBkeW5hbWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KHdpZGdldCgpKTsKLSAgICByZXR1cm4g
ZnJhbWVWaWV3ID8gZnJhbWVWaWV3LT5lbWJlZGRlZENvbnRlbnRCb3goKSA6IG51bGxwdHI7Cisg
ICAgcmV0dXJuIGZyYW1lVmlldyA/IGZyYW1lVmlldy0+ZW1iZWRkZWRTVkdSb290KCkgOiBudWxs
cHRyOworfQorCitGbG9hdFNpemUgUmVuZGVyV2lkZ2V0OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygp
IGNvbnN0Cit7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBk
aW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0IHRoZQorICAgIC8vIGFzcGVjdCByYXRpbyBmcm9t
IHRoZSBDU1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhl
CisgICAgLy8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KKyAg
ICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRl
clJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOworCisgICAgQ2hlY2tlZFB0ciBzdmdS
b290ID0gZW1iZWRkZWRTVkdSb290KCk7CisgICAgaWYgKCFzdmdSb290KQorICAgICAgICByZXR1
cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisKKyAgICBhdXRvIHJh
dGlvID0gc3ZnUm9vdC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICBpZiAoIWlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgJiYgIXJhdGlvLmlzRW1wdHkoKSkKKyAgICAgICAgcmF0aW8gPSBy
YXRpby50cmFuc3Bvc2VkU2l6ZSgpOworCisgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5p
c1JhdGlvKCkgfHwgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygpICYmIHJh
dGlvLmlzRW1wdHkoKSkpCisgICAgICAgIHJhdGlvID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNp
b24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVj
dFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsKKworICAgIHJldHVybiByYXRpbzsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5oCmluZGV4IGUwMTc4MTYyMDBkZi4uZTkxMTdkOTEyN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5oCkBAIC05MSw3ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKICAgICBib29sIHNob3VsZEludmFsaWRhdGVQ
cmVmZXJyZWRXaWR0aHMoKSBjb25zdCBmaW5hbDsKLSAgICBSZW5kZXJCb3gqIGVtYmVkZGVkQ29u
dGVudEJveCgpIGNvbnN0IGZpbmFsOworICAgIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jv
b3QoKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoSGlnaGxpZ2h0U3RhdGUp
IGZpbmFsOwogICAgIHZvaWQgc2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCBkZTI5
NDM2MjQyOTguLjc1ZjAyZjE4YTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC05MSwxMiArOTEsMTUgQEAgUmVuZGVyU1ZHVmlld3Bv
cnRDb250YWluZXIqIFJlbmRlclNWR1Jvb3Q6OnZpZXdwb3J0Q29udGFpbmVyKCkgY29uc3QKIAog
Ym9vbCBSZW5kZXJTVkdSb290OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAgIHJldHVybiBwcmVm
ZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiB9CiAKIEZsb2F0U2l6ZSBS
ZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
X0lNUExJRVModmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5pc0luUmVuZGVyVHJl
ZUxheW91dCgpLCAhc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSk7CisgICAgLy8gU2l6ZSBj
b250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudC4K
KyAgICAvLyBUaGUgYmFzZSBjbGFzcyByZXR1cm5zIHZhbHVlcyBmcm9tIHRoZSBjYWNoZSAvIGNv
bnRhaW4taW50cmluc2ljLXNpemUgd2l0aG91dCBxdWVyeWluZyBpbWFnZSBkYXRhLgorICAgIGlm
IChzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKQorICAgICAgICByZXR1cm4geyBpbnRyaW5z
aWNMb2dpY2FsV2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CiAgICAgLy8gaHR0
cHM6Ly93d3cudzMub3JnL1RSL1NWRy9jb29yZHMuaHRtbCNJbnRyaW5zaWNTaXppbmcKICAgICBG
bG9hdFNpemUgaW50cmluc2ljU2l6ZSA9IHsgc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY1dpZHRo
KCksIHN2Z1NWR0VsZW1lbnQoKS5pbnRyaW5zaWNIZWlnaHQoKSB9OwogICAgIC8vIFRyYW5zcG9z
ZSBmb3IgdmVydGljYWwgd3JpdGluZyBtb2RlCkBAIC0xMDcsNyArMTEwLDExIEBAIEZsb2F0U2l6
ZSBSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CiAKIEZsb2F0U2l6
ZSBSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKCFzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKKyAgICAvLyBTaXplIGNvbnRhaW5t
ZW50IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LCBidXQgdGhl
CisgICAgLy8gYXNwZWN0IHJhdGlvIGZyb20gdGhlIENTUyBhc3BlY3QtcmF0aW8gcHJvcGVydHkg
aXMgc3RpbGwgYXZhaWxhYmxlIHZpYSB0aGUKKyAgICAvLyBiYXNlIGNsYXNzICh3aGljaCBkb2Vz
bid0IHF1ZXJ5IGltYWdlIGRhdGEpLgorICAgIGlmIChzaG91bGRBcHBseVNpemVDb250YWlubWVu
dCgpKQorICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlv
KCk7CiAKICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSkKICAgICAgICAg
cmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dp
Y2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4
IDYxOTdmNTRmZWUxZS4uZjliOTg2MGY0MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0VtYmVkZGVkVGhyb3VnaFNWR0ltYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtYmVkZGVk
VGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0RvY3VtZW50KCkgY29uc3Q7CiAKLSAgICBGbG9hdFNp
emUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFNpemUgY29t
cHV0ZUludHJpbnNpY1NpemUoKSBjb25zdDsKICAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0
UmF0aW8oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkg
Y29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
bGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMzZkM2UzODU5ZGI2Li5l
MDhjYWFlMDNmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVn
YWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwCkBAIC04MSwxMiArODEsMTUgQEAg
U1ZHU1ZHRWxlbWVudCYgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6c3ZnU1ZHRWxlbWVudCgpIGNvbnN0
CiAKIGJvb2wgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBj
b25zdAogewotICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICBy
ZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogfQogCiBG
bG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25z
dAogewotICAgIEFTU0VSVF9JTVBMSUVTKHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0
KCkuaXNJblJlbmRlclRyZWVMYXlvdXQoKSwgIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkp
OworICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9u
cyBmcm9tIGNvbnRlbnQuCisgICAgLy8gVGhlIGJhc2UgY2xhc3MgcmV0dXJucyB2YWx1ZXMgZnJv
bSB0aGUgY2FjaGUgLyBjb250YWluLWludHJpbnNpYy1zaXplIHdpdGhvdXQgcXVlcnlpbmcgaW1h
Z2UgZGF0YS4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIHsgaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQo
KSB9OwogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNTaXplID0geyBzdmdTVkdFbGVtZW50KCkuaW50
cmluc2ljV2lkdGgoKSwgc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY0hlaWdodCgpIH07CiAgICAg
Ly8gVHJhbnNwb3NlIGZvciB2ZXJ0aWNhbCB3cml0aW5nIG1vZGUKICAgICBpZiAoIWlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkpCkBAIC05Niw3ICs5OSwxMSBAQCBGbG9hdFNpemUgTGVnYWN5UmVu
ZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAogCiBGbG9hdFNpemUgTGVn
YWN5UmVuZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIEFT
U0VSVCghc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSk7CisgICAgLy8gU2l6ZSBjb250YWlu
bWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0IHRo
ZQorICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBDU1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5
IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCisgICAgLy8gYmFzZSBjbGFzcyAod2hpY2ggZG9l
c24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRp
bygpOwogCiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkpCiAgICAgICAg
IHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgpLmFzcGVjdFJhdGlvTG9n
aWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsSGVpZ2h0KCkudmFs
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVn
YWN5UmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kv
TGVnYWN5UmVuZGVyU1ZHUm9vdC5oCmluZGV4IDUzOTc1MDg0NGM5MS4uZTJjMWZkOWU2NDI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5k
ZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVn
YWN5UmVuZGVyU1ZHUm9vdC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
RW1iZWRkZWRUaHJvdWdoU1ZHSW1hZ2UoKSBjb25zdDsKICAgICBib29sIGlzRW1iZWRkZWRUaHJv
dWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSBjb25zdDsKIAotICAgIEZsb2F0U2l6ZSBj
b21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBjb21wdXRl
SW50cmluc2ljU2l6ZSgpIGNvbnN0OwogICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRp
bygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25z
dCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXgg
OWEwZDQ4MjZhNjkwLi44NjI5ZTBlZDIxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcApAQCAtMjc2LDggKzI3Niw4IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZH
SW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRp
CiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gbV9wYWdlLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVk
RHJhd2luZ0VuYWJsZWQoKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZDsKIAogICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cgPSBudWxs
cHRyOwotICAgIGlmIChDaGVja2VkUHRyIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVkZGVkQ29udGVu
dEJveCgpKQotICAgICAgICBob3N0V2luZG93ID0gY29udGVudFJlbmRlcmVyLT5ob3N0V2luZG93
KCk7CisgICAgaWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpKQorICAg
ICAgICBob3N0V2luZG93ID0gc3ZnUm9vdC0+aG9zdFdpbmRvdygpOwogCiAgICAgUmVmUHRyIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBSZW5k
ZXJpbmdQdXJwb3NlOjpET00sIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9z
dFdpbmRvdyk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKQEAgLTM5MiwxMiArMzkyLDEyIEBAIElt
YWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJh
dzsKIH0KIAotUmVuZGVyQm94KiBTVkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QK
K1JlbmRlclJlcGxhY2VkKiBTVkdJbWFnZTo6ZW1iZWRkZWRTVkdSb290KCkgY29uc3QKIHsKICAg
ICBSZWZQdHIgcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9v
dEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBkb3duY2FzdDxS
ZW5kZXJCb3g+KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8
UmVuZGVyUmVwbGFjZWQ+KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKIH0KIAogTG9jYWxGcmFt
ZVZpZXcqIFNWR0ltYWdlOjpmcmFtZVZpZXcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuaAppbmRleCBmNDU3N2Q1Y2YwNDIuLmY3NDNhMzcwMzJhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRWxl
bWVudDsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgTG9jYWxGcmFtZVZpZXc7CiBjbGFzcyBQ
YWdlOwotY2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVuZGVyUmVwbGFjZWQ7CiBjbGFzcyBTVkdT
VkdFbGVtZW50OwogY2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQ7CiBjbGFzcyBTVkdJbWFnZUZv
ckNvbnRhaW5lcjsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIHRyeUNyZWF0ZUZyb21EYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90Piwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U1ZHSW1hZ2U+JiYpPiYmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0RhdGFEZWNvZGFibGUoY29uc3QgU2V0dGluZ3MmLCBz
dGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogCi0gICAgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRl
bnRCb3goKSBjb25zdDsKKyAgICBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29u
c3Q7CiAgICAgTG9jYWxGcmFtZVZpZXcqIE5PREVMRVRFIGZyYW1lVmlldygpIGNvbnN0OwogCiAg
ICAgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQo=
</data>
<flag name="commit-queue"
          id="500760"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479569</attachid>
            <date>2026-05-10 06:21:07 -0700</date>
            <delta_ts>2026-05-10 15:53:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314482-20260510062106.patch</filename>
            <type>text/plain</type>
            <size>15839</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA2NWUyMGMzNTVjN2Q5OTNhZmYxODZmZjk2MWJjODQ5YmE2MDIyYTVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBNYXkgMjAyNiAxODozOTo1OCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB2
aXJ0dWFsIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgZnJvbSBSZW5kZXJSZXBsYWNlZCBhbmQKIGNv
bnNvbGlkYXRlIGxvZ2ljIGludG8gYSBzdGF0aWMgaGVscGVyCiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE0NDgyCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgd2FzIGEgY29uZnVzaW5nIEFQSS4gSXQgd2FzIHZpcnR1
YWwgb24gUmVuZGVyUmVwbGFjZWQsCm92ZXJyaWRkZW4gYnkgUmVuZGVySW1hZ2UgYW5kIFJlbmRl
cldpZGdldCwgYnV0IGl0cyBuYW1lIGRpZG4ndCBjbGFyaWZ5IHdoZW4gdG8KY2FsbCBpdCB2cy4g
dGhlIHNpbWlsYXJseS1uYW1lZCBpbnRyaW5zaWNTaXplKCkgKHdoaWNoIHJldHVybnMgdGhlIGNh
Y2hlZAptX2ludHJpbnNpY1NpemUpLiBUaGUgdHdvIHJldHVybmVkIHRoZSBzYW1lIGRhdGEgaW4g
ZGlmZmVyZW50IHR5cGVzIChGbG9hdFNpemUgdnMKTGF5b3V0U2l6ZSksIGFuZCB0aGUgb25seSBt
ZWFuaW5nZnVsIGRpZmZlcmVuY2Ugd2FzIHRoYXQgdGhlIG92ZXJyaWRlcyBxdWVyaWVkCnRoZSBl
bWJlZGRlZCBTVkcgcm9vdCBmb3IgZnJlc2ggdmFsdWVzIHdoaWxlIHRoZSBiYXNlIGp1c3QgcmVh
ZCB0aGUgY2FjaGUuCgpUb2dldGhlciB3aXRoIGNvbXB1dGVBc3BlY3RSYXRpb0FkanVzdGVkSW50
cmluc2ljTG9naWNhbFdpZHRocyAocmVtb3ZlZCBpbiBhCnByaW9yIGNvbW1pdCkgYW5kIGNvbXB1
dGVJbnRyaW5zaWNBc3BlY3RSYXRpbyAoYWxzbyByZW1vdmVkKSwgdGhpcyB3YXMgb25lIG9mCnNl
dmVyYWwgc2ltaWxhcmx5LW5hbWVkICJjb21wdXRlIGludHJpbnNpYyBzb21ldGhpbmciIGZ1bmN0
aW9ucyBvbiBSZW5kZXJSZXBsYWNlZAp3aG9zZSByb2xlcyBhbmQgY2FsbCBvcmRlcmluZyB3ZXJl
IHVuY2xlYXIuCgpJbiBwcmFjdGljZSwgb25seSBvbmUgY2FsbGVyIG5lZWRlZCB0aGUgdmlydHVh
bCBkaXNwYXRjaDoKY29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVk
TWluTWF4U2l6ZXMuIFRoZSBTVkcgcm9vdCByZW5kZXJlcnMKY2FsbGVkIHRoZWlyIG93biB2ZXJz
aW9uIGludGVybmFsbHksIGFuZCBldmVyeW9uZSBlbHNlIHVzZWQgaW50cmluc2ljU2l6ZSgpLgoK
VGhlIGZpeCByZXBsYWNlcyBhbGwgdGhyZWUgb3ZlcnJpZGVzIHdpdGggYSBzaW5nbGUgZmlsZS1s
b2NhbCBzdGF0aWMgaGVscGVyCihjb21wdXRlSW50cmluc2ljU2l6ZUZvclJlbmRlcmVyKSB0aGF0
IGNoZWNrcyBlbWJlZGRlZFNWR1Jvb3QoKSBhbmQgaGFuZGxlcyB0aGUKU1ZHIGNhc2UgaW5saW5l
LiBUaGUgU1ZHIHJvb3RzIGtlZXAgdGhlaXIgb3duIHByaXZhdGUgY29tcHV0ZUludHJpbnNpY1Np
emUoKSBmb3IKaW50ZXJuYWwgdXNlLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNTaXplIGNv
bnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgooV2ViQ29yZTo6
aXNWaWRlb1dpdGhEZWZhdWx0T2JqZWN0U2l6ZSk6CihXZWJDb3JlOjpjb21wdXRlSW50cmluc2lj
U2l6ZUZvclJlbmRlcmVyKToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmlu
c2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUgY29uc3QpOiBEZWxldGVk
LgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oOgooV2ViQ29yZTo6
UmVuZGVyUmVwbGFjZWQ6OmVtYmVkZGVkU1ZHUm9vdCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CihXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OmNvbXB1
dGVJbnRyaW5zaWNTaXplIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXpl
IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290
LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXpl
IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5k
ZXJTVkdSb290Lmg6Ci0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCAgICAgIHwgMzAgLS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmggICAgICAgIHwgIDEgLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcCAgIHwgNTcgKysrKysrKysrKysrKysrKy0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmggICAgIHwgIDMgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuY3BwICAgICB8IDIwIC0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuaCAgICAgICB8ICAxIC0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5jcHAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuaCAgfCAgMiArLQogLi4uL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVy
U1ZHUm9vdC5jcHAgICAgICAgIHwgIDIgKy0KIC4uLi9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNW
R1Jvb3QuaCAgICAgICAgICB8ICAyICstCiAxMCBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25z
KCspLCA2NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAppbmRleCBiOTI5MjA1ZTgxNjIuLmUxNTBhMjBkN2VkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC05MzgsMzYgKzkzOCw2IEBAIHZvaWQgUmVuZGVy
SW1hZ2U6OmxheW91dCgpCiAgICAgfQogfQogCi1GbG9hdFNpemUgUmVuZGVySW1hZ2U6OmNvbXB1
dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKLXsKLSAgICAvLyBTaXplIGNvbnRhaW5tZW50IHN1cHBy
ZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LgotICAgIC8vIFRoZSBiYXNl
IGNsYXNzIHJldHVybnMgdmFsdWVzIGZyb20gdGhlIGNhY2hlIC8gY29udGFpbi1pbnRyaW5zaWMt
c2l6ZSB3aXRob3V0IHF1ZXJ5aW5nIGltYWdlIGRhdGEuCi0gICAgaWYgKHNob3VsZEFwcGx5U2l6
ZUNvbnRhaW5tZW50KCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUlu
dHJpbnNpY1NpemUoKTsKLQotICAgIGlmIChDaGVja2VkUHRyIHN2Z1Jvb3QgPSBlbWJlZGRlZFNW
R1Jvb3QoKSkgewotICAgICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBzdmdSb290LT5jb21wdXRl
SW50cmluc2ljU2l6ZSgpOwotICAgICAgICBpbnRyaW5zaWNTaXplLnNjYWxlKHN0eWxlKCkudXNl
ZFpvb20oKSk7Ci0gICAgICAgIGludHJpbnNpY1NpemUuc2NhbGUoaW1hZ2VEZXZpY2VQaXhlbFJh
dGlvKCkpOwotICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAg
ICAgICBpbnRyaW5zaWNTaXplID0gaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwotICAg
ICAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKLSAgICB9Ci0KLSAgICBhdXRvIGludHJpbnNpY1Np
emUgPSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKLQotICAgIC8vIE91
ciBpbnRyaW5zaWNTaXplIGlzIGVtcHR5IGlmIHdlJ3JlIHJlbmRlcmluZyBnZW5lcmF0ZWQgaW1h
Z2VzIHdpdGggcmVsYXRpdmUgd2lkdGgvaGVpZ2h0LiBGaWd1cmUgb3V0IHRoZSByaWdodCBpbnRy
aW5zaWMgc2l6ZSB0byB1c2UuCi0gICAgaWYgKGludHJpbnNpY1NpemUuaXNFbXB0eSgpICYmIChp
bWFnZVJlc291cmNlKCkuaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgfHwgaW1hZ2VSZXNvdXJjZSgp
LmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBjb250
YWluaW5nQmxvY2sgPSBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IGNvbnRhaW5lcigpIDogdGhp
cy0+Y29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAgIGlmIChhdXRvKiBib3ggPSBkeW5hbWljRG93
bmNhc3Q8UmVuZGVyQm94PigqY29udGFpbmluZ0Jsb2NrKSkgewotICAgICAgICAgICAgaW50cmlu
c2ljU2l6ZS5zZXRXaWR0aChib3gtPmNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoKSk7Ci0gICAgICAg
ICAgICBpbnRyaW5zaWNTaXplLnNldEhlaWdodChib3gtPmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQo
QXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGU6OkluY2x1ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKLX0KLQogRmxv
YXRTaXplIFJlbmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiB7CiAgICAg
Ly8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20g
Y29udGVudCwgYnV0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRl
eCA1MmNjZWE3M2Q3YmYuLjgzZDVlZDQ3NWNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmgKQEAgLTkyLDcgKzkyLDYgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBzaG91
bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3QgZmluYWw7CiAgICAgUmVuZGVyUmVw
bGFjZWQqIGVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0IGZpbmFsOwotICAgIEZsb2F0U2l6ZSBjb21w
dXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZm9yZWdyb3VuZElzS25v
d25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIGxvY2FsUmVjdCwgdW5zaWduZWQg
bWF4RGVwdGhUb1Rlc3QpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdHlsZVdpbGxDaGFu
Z2UoU3R5bGU6OkRpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBk
NmUxNDlkOTFjNmUuLjU1ZDlmMDVlMDg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSW5saW5lSXRl
cmF0b3JCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckxpbmVCb3hJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTGF5b3V0UmVwYWludGVyLmgiCisjaW5jbHVkZSAiTGVnYWN5UmVuZGVyU1ZHUm9v
dC5oIgogI2luY2x1ZGUgIkxpbmVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lLmgi
CiAjaW5jbHVkZSAiUG9zaXRpb25lZExheW91dENvbnN0cmFpbnRzLmgiCkBAIC01Niw2ICs1Nyw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclN0
eWxlK0dldHRlcnNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUrU2V0dGVyc0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAg
LTQ2OCwxNSArNDcwLDU5IEBAIHN0YXRpYyBib29sIGlzVmlkZW9XaXRoRGVmYXVsdE9iamVjdFNp
emUoY29uc3QgUmVuZGVyUmVwbGFjZWQqIG1heWJlVmlkZW8pCiAgICAgVU5VU0VEX1BBUkFNKG1h
eWJlVmlkZW8pOwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwotfSAKK30KKworc3RhdGljIEZs
b2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlclJlcGxh
Y2VkJiByZXBsYWNlZFJlbmRlcmVyKQoreworICAgIEFTU0VSVCghcmVwbGFjZWRSZW5kZXJlci5z
aG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKKworICAgIGlmIChDaGVja2VkUHRyIHN2Z1Jv
b3QgPSByZXBsYWNlZFJlbmRlcmVyLmVtYmVkZGVkU1ZHUm9vdCgpKSB7CisgICAgICAgIGF1dG8g
aW50cmluc2ljU2l6ZSA9IFsmXSB7CisgICAgICAgICAgICBpZiAoQ2hlY2tlZFB0ciByb290ID0g
ZHluYW1pY0Rvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KCpzdmdSb290KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcm9vdC0+Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKKyAgICAgICAgICAgIHJldHVy
biBkb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdSb290Pigqc3ZnUm9vdCkuY29tcHV0ZUludHJpbnNp
Y1NpemUoKTsKKyAgICAgICAgfSgpOworCisgICAgICAgIGludHJpbnNpY1NpemUuc2NhbGUocmVw
bGFjZWRSZW5kZXJlci5zdHlsZSgpLnVzZWRab29tKCkpOworICAgICAgICBpZiAoQ2hlY2tlZFB0
ciByZW5kZXJJbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFnZT4ocmVwbGFjZWRSZW5k
ZXJlcikpCisgICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNjYWxlKHJlbmRlckltYWdlLT5pbWFn
ZURldmljZVBpeGVsUmF0aW8oKSk7CisgICAgICAgIGlmICghcmVwbGFjZWRSZW5kZXJlci5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICAgICAgaW50cmluc2ljU2l6ZSA9IGludHJp
bnNpY1NpemUudHJhbnNwb3NlZFNpemUoKTsKKyAgICAgICAgcmV0dXJuIGludHJpbnNpY1NpemU7
CisgICAgfQorCisgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVySW1hZ2UgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVySW1hZ2U+KHJlcGxhY2VkUmVuZGVyZXIpKSB7CisgICAgICAgIGF1dG8gaW50cmlu
c2ljU2l6ZSA9IEZsb2F0U2l6ZSB7IHJlbmRlckltYWdlLT5pbnRyaW5zaWNMb2dpY2FsV2lkdGgo
KSwgcmVuZGVySW1hZ2UtPmludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OworICAgICAgICAvLyBP
dXIgaW50cmluc2ljU2l6ZSBpcyBlbXB0eSBpZiB3ZSdyZSByZW5kZXJpbmcgZ2VuZXJhdGVkIGlt
YWdlcyB3aXRoIHJlbGF0aXZlIHdpZHRoL2hlaWdodC4gRmlndXJlIG91dCB0aGUgcmlnaHQgaW50
cmluc2ljIHNpemUgdG8gdXNlLgorICAgICAgICBpZiAoaW50cmluc2ljU2l6ZS5pc0VtcHR5KCkg
JiYgKHJlbmRlckltYWdlLT5pbWFnZVJlc291cmNlKCkuaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkg
fHwgcmVuZGVySW1hZ2UtPmltYWdlUmVzb3VyY2UoKS5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkp
KSB7CisgICAgICAgICAgICBDaGVja2VkUHRyIGNvbnRhaW5pbmdCbG9jayA9IHJlbmRlckltYWdl
LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IHJlbmRlckltYWdlLT5jb250YWluZXIoKSA6IHJl
bmRlckltYWdlLT5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChDaGVja2VkUHRy
IHJlbmRlckJveCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KGNvbnRhaW5pbmdCbG9jaykp
IHsKKyAgICAgICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldFdpZHRoKHJlbmRlckJveC0+Y29u
dGVudEJveExvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNl
dEhlaWdodChyZW5kZXJCb3gtPmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoQXZhaWxhYmxlTG9naWNh
bEhlaWdodFR5cGU6OkluY2x1ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGludHJpbnNpY1NpemU7CisgICAgfQorCisgICAg
aWYgKENoZWNrZWRQdHIgcmVuZGVyV2lkZ2V0ID1keW5hbWljRG93bmNhc3Q8UmVuZGVyV2lkZ2V0
PihyZXBsYWNlZFJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIHsgcmVwbGFjZWRSZW5kZXJlci5p
bnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgcmVwbGFjZWRSZW5kZXJlci5pbnRyaW5zaWNMb2dpY2Fs
SGVpZ2h0KCkgfTsKKworICAgIGlmIChDaGVja2VkUHRyIHN2Z1Jvb3QgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyU1ZHUm9vdD4ocmVwbGFjZWRSZW5kZXJlcikpCisgICAgICAgIHJldHVybiBzdmdS
b290LT5jb21wdXRlSW50cmluc2ljU2l6ZSgpOworCisgICAgaWYgKENoZWNrZWRQdHIgbGVnYWN5
U1ZHUm9vdCA9IGR5bmFtaWNEb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdSb290PihyZXBsYWNlZFJl
bmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIGxlZ2FjeVNWR1Jvb3QtPmNvbXB1dGVJbnRyaW5zaWNT
aXplKCk7CisKKyAgICByZXR1cm4geyByZXBsYWNlZFJlbmRlcmVyLmludHJpbnNpY0xvZ2ljYWxX
aWR0aCgpLCByZXBsYWNlZFJlbmRlcmVyLmludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OworfQog
CiB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5
VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIEZsb2F0U2l6
ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZEFwcGx5U2l6ZU9ySW5s
aW5lU2l6ZUNvbnRhaW5tZW50KCkpIHsKLSAgICAgICAgaW50cmluc2ljU2l6ZSA9IFJlbmRlclJl
cGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpOworICAgICAgICBpbnRyaW5zaWNTaXplID0g
RmxvYXRTaXplIHsgaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWln
aHQoKSB9OwogICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IFJlbmRlclJlcGxhY2VkOjpwcmVmZXJy
ZWRBc3BlY3RSYXRpbygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGludHJpbnNpY1NpemUgPSBj
b21wdXRlSW50cmluc2ljU2l6ZSgpOworICAgICAgICBpbnRyaW5zaWNTaXplID0gY29tcHV0ZUlu
dHJpbnNpY1NpemVGb3JSZW5kZXJlcigqdGhpcyk7CiAgICAgICAgIGludHJpbnNpY1JhdGlvID0g
cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKIAogICAgICAgICBhdXRvIHNpemVUb0NhY2hlID0gaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGludHJpbnNpY1NpemUgOiBpbnRyaW5zaWNTaXplLnRy
YW5zcG9zZWRTaXplKCk7CkBAIC01NTgsMTEgKzYwNCw2IEBAIExheW91dFJlY3QgUmVuZGVyUmVw
bGFjZWQ6OnJlcGxhY2VkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6
ZSkKICAgICByZXR1cm4gZmluYWxSZWN0OwogfQogCi1GbG9hdFNpemUgUmVuZGVyUmVwbGFjZWQ6
OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4geyBpbnRyaW5zaWNM
b2dpY2FsV2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07Ci19Ci0KIEZsb2F0U2l6
ZSBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogewogICAgIGF1
dG8gaW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZShpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50
cmluc2ljTG9naWNhbEhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmgKaW5kZXggNzAxMTljMzE0YTNkLi5lYjdmYmY0MGY2NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHJlcGxhY2VkTWluTG9naWNhbEhlaWdodENvbXB1dGVzQXNOb25lKCkgY29uc3Q7
CiAgICAgYm9vbCByZXBsYWNlZE1heExvZ2ljYWxIZWlnaHRDb21wdXRlc0FzTm9uZSgpIGNvbnN0
OwogCi0gICAgdmlydHVhbCBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBjb25zdCB7IHJl
dHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0
aW8oKSBjb25zdDsKIAogcHJvdGVjdGVkOgpAQCAtMTAzLDcgKzEwMyw2IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGNvbXB1dGVBc3BlY3RSYXRpb0FkanVzdGVkSW50cmluc2ljTG9naWNhbFdpZHRo
cyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0
aCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3Qo
KSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGFjZWQiX3M7IH0KIAogICAgIGJvb2wgY2Fu
SGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggZGY2NzQ3ZDNiZjhjLi44ZjM0
ZDk0ZjViZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRn
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBA
IC00OTgsMjYgKzQ5OCw2IEBAIFJlbmRlclJlcGxhY2VkKiBSZW5kZXJXaWRnZXQ6OmVtYmVkZGVk
U1ZHUm9vdCgpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lVmlldyA/IGZyYW1lVmlldy0+ZW1iZWRk
ZWRTVkdSb290KCkgOiBudWxscHRyOwogfQogCi1GbG9hdFNpemUgUmVuZGVyV2lkZ2V0Ojpjb21w
dXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0Ci17Ci0gICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBw
cmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudC4KLSAgICAvLyBUaGUgYmFz
ZSBjbGFzcyByZXR1cm5zIHZhbHVlcyBmcm9tIHRoZSBjYWNoZSAvIGNvbnRhaW4taW50cmluc2lj
LXNpemUgd2l0aG91dCBxdWVyeWluZyBpbWFnZSBkYXRhLgotICAgIGlmIChzaG91bGRBcHBseVNp
emVDb250YWlubWVudCgpKQotICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJ
bnRyaW5zaWNTaXplKCk7Ci0KLSAgICBDaGVja2VkUHRyIHN2Z1Jvb3QgPSBlbWJlZGRlZFNWR1Jv
b3QoKTsKLSAgICBpZiAoIXN2Z1Jvb3QpCi0gICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKLQotICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IHN2Z1Jv
b3QtPmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7Ci0gICAgaW50cmluc2ljU2l6ZS5zY2FsZShzdHls
ZSgpLnVzZWRab29tKCkpOwotCi0gICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQot
ICAgICAgICBpbnRyaW5zaWNTaXplID0gaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwot
Ci0gICAgcmV0dXJuIGludHJpbnNpY1NpemU7Ci19Ci0KIEZsb2F0U2l6ZSBSZW5kZXJXaWRnZXQ6
OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKIHsKICAgICAvLyBTaXplIGNvbnRhaW5tZW50
IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LCBidXQgdGhlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKaW5kZXggOTJmMjgxMzhjYWFmLi5l
OTExN2Q5MTI3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKQEAg
LTkyLDcgKzkyLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZVByZWZl
cnJlZFdpZHRocygpIGNvbnN0IGZpbmFsOwogICAgIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNW
R1Jvb3QoKSBjb25zdCBmaW5hbDsKLSAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUo
KSBjb25zdCBmaW5hbDsKICAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25z
dCBmaW5hbDsKIAogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoSGlnaGxpZ2h0U3RhdGUpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAK
aW5kZXggZWYzMzQwNGJlNjIzLi43NWYwMmYxOGE2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtOTksNyArOTksNyBAQCBGbG9hdFNp
emUgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAogICAgIC8vIFNp
emUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRl
bnQuCiAgICAgLy8gVGhlIGJhc2UgY2xhc3MgcmV0dXJucyB2YWx1ZXMgZnJvbSB0aGUgY2FjaGUg
LyBjb250YWluLWludHJpbnNpYy1zaXplIHdpdGhvdXQgcXVlcnlpbmcgaW1hZ2UgZGF0YS4KICAg
ICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFJlbmRl
clJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpOworICAgICAgICByZXR1cm4geyBpbnRy
aW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CiAgICAgLy8g
aHR0cHM6Ly93d3cudzMub3JnL1RSL1NWRy9jb29yZHMuaHRtbCNJbnRyaW5zaWNTaXppbmcKICAg
ICBGbG9hdFNpemUgaW50cmluc2ljU2l6ZSA9IHsgc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY1dp
ZHRoKCksIHN2Z1NWR0VsZW1lbnQoKS5pbnRyaW5zaWNIZWlnaHQoKSB9OwogICAgIC8vIFRyYW5z
cG9zZSBmb3IgdmVydGljYWwgd3JpdGluZyBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IDYxOTdmNTRmZWUxZS4uZjliOTg2MGY0MTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtYmVkZGVkVGhyb3VnaFNWR0ltYWdlKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc0VtYmVkZGVkVGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0RvY3Vt
ZW50KCkgY29uc3Q7CiAKLSAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25z
dCBmaW5hbDsKKyAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdDsKICAg
ICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKICAgICBib29s
IGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9v
dC5jcHAKaW5kZXggZTJiNDQzZjBlNThmLi5lMDhjYWFlMDNmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jv
b3QuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEZsb2F0U2l6ZSBMZWdhY3lSZW5kZXJTVkdSb290Ojpj
b21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CiAgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBw
cmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudC4KICAgICAvLyBUaGUgYmFz
ZSBjbGFzcyByZXR1cm5zIHZhbHVlcyBmcm9tIHRoZSBjYWNoZSAvIGNvbnRhaW4taW50cmluc2lj
LXNpemUgd2l0aG91dCBxdWVyeWluZyBpbWFnZSBkYXRhLgogICAgIGlmIChzaG91bGRBcHBseVNp
emVDb250YWlubWVudCgpKQotICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJ
bnRyaW5zaWNTaXplKCk7CisgICAgICAgIHJldHVybiB7IGludHJpbnNpY0xvZ2ljYWxXaWR0aCgp
LCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKICAgICBGbG9hdFNpemUgaW50cmluc2ljU2l6
ZSA9IHsgc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY1dpZHRoKCksIHN2Z1NWR0VsZW1lbnQoKS5p
bnRyaW5zaWNIZWlnaHQoKSB9OwogICAgIC8vIFRyYW5zcG9zZSBmb3IgdmVydGljYWwgd3JpdGlu
ZyBtb2RlCiAgICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9v
dC5oCmluZGV4IDUzOTc1MDg0NGM5MS4uZTJjMWZkOWU2NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5o
CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1iZWRkZWRUaHJvdWdoU1ZH
SW1hZ2UoKSBjb25zdDsKICAgICBib29sIGlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250YWluaW5n
U1ZHRG9jdW1lbnQoKSBjb25zdDsKIAotICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6
ZSgpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNv
bnN0OwogICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479570</attachid>
            <date>2026-05-10 06:22:55 -0700</date>
            <delta_ts>2026-05-10 06:37:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314482-20260510062254.patch</filename>
            <type>text/plain</type>
            <size>38565</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA4NjNiYTZiNWIwNWQ4NTM5ODY2ZGRkNDk5ZWY1MDI3MmQ4ODRhYTZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFN1biwgMTAgTWF5IDIwMjYgMDY6MjE6NDUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBSZW1vdmUg
dmlydHVhbCBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGZyb20gUmVuZGVyUmVwbGFjZWQgYW5kCiBj
b25zb2xpZGF0ZSBsb2dpYyBpbnRvIGEgc3RhdGljIGhlbHBlcgogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDQ4MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CgpFV1MgKFBSIHdpdGggZGVwZW5kZW5jaWVzKS4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHA6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxNaW5N
YXhTaXplc0J5QXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRl
SW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94
Ojpjb21wdXRlU2l6aW5nS2V5d29yZExvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmdHZW5lcmljIGNv
bnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6YXNwZWN0UmF0aW9WYWx1ZSBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8g
Y29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNhbEhlaWdodEZy
b21Bc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmlzUmVuZGVyUmVwbGFj
ZWRXaXRoSW50cmluc2ljUmF0aW8gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyQm94
OjpyZXNvbHZlQXNwZWN0UmF0aW8gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwOgooV2ViQ29yZTo6aXNTVkdSb290V2l0aEludHJpbnNpY0FzcGVjdFJhdGlv
KToKKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0ZvckZs
ZXhJdGVtIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
OgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljU2l6ZSBjb25zdCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKFdlYkNvcmU6OmlzVmlkZW9XaXRoRGVm
YXVsdE9iamVjdFNpemUpOgooV2ViQ29yZTo6Y29tcHV0ZUludHJpbnNpY1NpemVGb3JSZW5kZXJl
cik6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3Ry
YWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVw
bGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlQXNwZWN0UmF0aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMgY29u
c3QpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0
aCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNh
bEhlaWdodCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNp
Y0tleXdvcmRMb2dpY2FsV2lkdGhzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpj
b21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveCBjb25zdCk6IERlbGV0ZWQu
CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvIGNv
bnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2lj
U2l6ZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6aW50cmluc2lj
UmF0aW8gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5oOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmVtYmVkZGVkU1ZHUm9vdCBjb25z
dCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CihXZWJDb3Jl
OjpSZW5kZXJXaWRnZXQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Omhhc0ludHJp
bnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJ
bnRyaW5zaWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFz
cGVjdFJhdGlvIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5k
ZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNp
Y0FzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNvbXB1
dGVJbnRyaW5zaWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OnBy
ZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290Lmg6Ci0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAgICAgICAgIHwgIDQyICsrKy0tLQogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oICAgICAgICAgIHwgICAzICstCiAuLi4vV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwICAgfCAgIDYgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAgICAgICB8ICAzNCArKy0tLQogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmggICAgICAgIHwgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwICAgfCAxMzkgKysrKysrKystLS0tLS0tLS0tCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCAgICAgfCAgMTUgKy0KIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwICAgICB8ICAyMiArKysKIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCAgICAgICB8ICAgMSArCiAuLi4vV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwICAgfCAgMTMgKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oICB8ICAgMiArLQogLi4uL3N2Zy9s
ZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAgICAgICAgIHwgIDEzICstCiAuLi4vc3ZnL2xl
Z2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmggICAgICAgICAgfCAgIDIgKy0KIDEzIGZpbGVzIGNo
YW5nZWQsIDE1MyBpbnNlcnRpb25zKCspLCAxNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAzZDQyNDZlYzUzYjYuLjQwMjExNTJjOWNlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTcxMSw3ICs3MTEsNyBA
QCB2b2lkIFJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RSYXRp
byhMYXlvdXRVbml0JiBjb21wdXRlZE1pbgogICAgIC8vIGEgc2l6ZSBvZiB0aGUgaW5pdGlhbCBj
b250YWluaW5nIGJsb2NrIGFuZCB0aGUg4oCcc3RyZXRjaC1maXTigJ0gc2l6aW5nIG9mIG5vbi1y
ZXBsYWNlZCBibG9ja3MgaWYgdGhleSBoYXZlIGRlZmluaXRlIHZhbHVlcy4KICAgICAvLyBTZWUg
aHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zaXppbmctMy8jZGVmaW5pdGUKICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7Ci0gICAgQVNTRVJUKHN0eWxlVG9Vc2Uu
YXNwZWN0UmF0aW8oKS5oYXNSYXRpbygpIHx8IGlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2lj
UmF0aW8oKSk7CisgICAgQVNTRVJUKHN0eWxlVG9Vc2UuYXNwZWN0UmF0aW8oKS5oYXNSYXRpbygp
IHx8IChpczxSZW5kZXJSZXBsYWNlZD4oKnRoaXMpICYmIGRvd25jYXN0PFJlbmRlclJlcGxhY2Vk
PigqdGhpcykucHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpKSk7CiAg
ICAgYXV0byBsb2dpY2FsU2l6ZSA9IGRpbWVuc2lvbiA9PSBDb25zdHJhaW5EaW1lbnNpb246Oldp
ZHRoID8gc3R5bGVUb1VzZS5sb2dpY2FsV2lkdGgoKSA6IHN0eWxlVG9Vc2UubG9naWNhbEhlaWdo
dCgpOwogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2l6aW5nLTQvI2FzcGVjdC1y
YXRpby1taW5pbXVtCiAgICAgaWYgKG1pbmltdW1TaXplVHlwZSA9PSBNaW5pbXVtU2l6ZUlzQXV0
b21hdGljQ29udGVudEJhc2VkOjpZZXMpIHsKQEAgLTI5MzksNyArMjkzOSw2IEBAIExheW91dFVu
aXQgUmVuZGVyQm94OjpmaWxsQXZhaWxhYmxlTWVhc3VyZShMYXlvdXRVbml0IGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCwgTGF5CiAgICAgcmV0dXJuIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIG1hcmdp
blN0YXJ0IC0gbWFyZ2luRW5kOwogfQogCi0KIHRlbXBsYXRlPHR5cGVuYW1lIEtleXdvcmQ+IHZv
aWQgUmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMoS2V5d29y
ZCwgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nLCBMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lk
dGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QKIHsKICAgICBpZiBjb25zdGV4
cHIgKHN0ZDo6c2FtZV9hczxLZXl3b3JkLCBDU1M6OktleXdvcmQ6Ok1pbkludHJpbnNpYz4pCkBA
IC0yOTU0LDE0ICsyOTUzLDE3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleXdvcmQ+IHZvaWQgUmVu
ZGVyQm94Ojpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMoCiAgICAgICAgICAg
ICAgICAgbWluTG9naWNhbFdpZHRoID0gc3RkOjptYXgobWluTG9naWNhbFdpZHRoLCBtaW5DaGls
ZHJlbkxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoID0gc3Rk
OjptYXgobWF4TG9naWNhbFdpZHRoLCBtYXhDaGlsZHJlbkxvZ2ljYWxXaWR0aCk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNS
YXRpbygpICYmIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzU3BlY2lmaWVkKCkpIHsKKyAgICAg
ICAgfSBlbHNlIGlmIChDaGVja2VkUHRyIHJlbmRlclJlcGxhY2VkID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlclJlcGxhY2VkPigqdGhpcykpIHsKICAgICAgICAgICAgIC8vIEZvciByZXBsYWNlZCBl
bGVtZW50cyB3aXRoIGFuIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGUuZy4gPGltZz4pIGFuZCBh
CiAgICAgICAgICAgICAvLyBzcGVjaWZpZWQgYmxvY2sgc2l6ZSwgY29tcHV0ZSB0aGUgdHJhbnNm
ZXJyZWQgbWluL21heC1jb250ZW50IGlubGluZSBzaXplCiAgICAgICAgICAgICAvLyB0aHJvdWdo
IHRoZSBpbnRyaW5zaWMgcmF0aW8gcmF0aGVyIHRoYW4gdXNpbmcgdGhlIHJhdyBuYXR1cmFsIHdp
ZHRoLgotICAgICAgICAgICAgYXV0byBpbnRyaW5zaWNSYXRpbyA9IGRvd25jYXN0PFJlbmRlclJl
cGxhY2VkPigqdGhpcykuY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCk7Ci0gICAgICAgICAg
ICBhdXRvIGNvbXB1dGVkVmFsdWVzID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdo
dCgpLCBsb2dpY2FsVG9wKCkpOwotICAgICAgICAgICAgYXV0byBjb250ZW50QmxvY2tTaXplID0g
c3RkOjptYXgoMF9sdSwgY29tcHV0ZWRWYWx1ZXMuZXh0ZW50IC0gYm9yZGVyQW5kUGFkZGluZ0xv
Z2ljYWxIZWlnaHQoKSk7Ci0gICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBtYXhMb2dpY2Fs
V2lkdGggPSBMYXlvdXRVbml0KGNvbnRlbnRCbG9ja1NpemUgKiBpbnRyaW5zaWNSYXRpbyk7Cisg
ICAgICAgICAgICBhdXRvIHByZWZlcnJlZFJhdGlvID0gcmVuZGVyUmVwbGFjZWQtPnByZWZlcnJl
ZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKKyAgICAgICAgICAgIGlmIChwcmVm
ZXJyZWRSYXRpbyAmJiBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1NwZWNpZmllZCgpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0
KGxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbFRvcCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNv
bnRlbnRCbG9ja1NpemUgPSBzdGQ6Om1heCgwX2x1LCBjb21wdXRlZFZhbHVlcy5leHRlbnQgLSBi
b3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBtaW5Mb2dp
Y2FsV2lkdGggPSBtYXhMb2dpY2FsV2lkdGggPSBMYXlvdXRVbml0KGNvbnRlbnRCbG9ja1NpemUg
KiBwcmVmZXJyZWRSYXRpbyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBj
b21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMobWluTG9naWNhbFdpZHRoLCBtYXhM
b2dpY2FsV2lkdGgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNvbXB1dGVJbnRyaW5z
aWNLZXl3b3JkTG9naWNhbFdpZHRocyhtaW5Mb2dpY2FsV2lkdGgsIG1heExvZ2ljYWxXaWR0aCk7
CiAgICAgfQpAQCAtMzY3NywxNSArMzY3OSwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTaXplVHlw
ZT4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVTaXppbmdLZQog
ICAgIGF1dG8gbWluTWF4Q29udGVudCA9IFsmXSAtPiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IHsKICAgICAgICAgLy8gRklYTUU6IFRoZSBDU1Mgc2l6aW5nIHNwZWMgaXMgY29uc2lkZXJpbmcg
Y2hhbmdpbmcgd2hhdCBtaW4tY29udGVudC9tYXgtY29udGVudCBzaG91bGQgcmVzb2x2ZSB0by4K
ICAgICAgICAgLy8gSWYgdGhhdCBoYXBwZW5zLCB0aGlzIGNvZGUgd2lsbCBoYXZlIHRvIGNoYW5n
ZS4KLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlckltYWdlID0gZHluYW1pY0Rvd25jYXN0PFJlbmRl
ckltYWdlPih0aGlzKSkgeworICAgICAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJJbWFnZSA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFnZT4odGhpcykpIHsKICAgICAgICAgICAgIGF1dG8gY29t
cHV0ZWRGaXhlZExvZ2ljYWxXaWR0aCA9IHN0eWxlKCkubG9naWNhbFdpZHRoKCkudHJ5Rml4ZWQo
KTsKICAgICAgICAgICAgIGlmIChjb21wdXRlZEZpeGVkTG9naWNhbFdpZHRoICYmICFzdHlsZSgp
LmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSkgewotICAgICAgICAgICAgICAgIGF1dG8gaW50cmlu
c2ljUmF0aW8gPSByZW5kZXJJbWFnZS0+aW50cmluc2ljUmF0aW8oKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIHByZWZlcnJlZFJhdGlvID0gcmVuZGVySW1hZ2UtPnByZWZlcnJlZEFzcGVjdFJhdGlv
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVIZWlnaHRGb3JSYXRpbygKICAgICAg
ICAgICAgICAgICAgICAgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLAogICAgICAgICAg
ICAgICAgICAgICBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpLAogICAgICAgICAgICAg
ICAgICAgICBMYXlvdXRVbml0IHsgY29tcHV0ZWRGaXhlZExvZ2ljYWxXaWR0aC0+cmVzb2x2ZVpv
b20oc3R5bGUoKS51c2VkWm9vbUZvckxlbmd0aCgpKSB9LAotICAgICAgICAgICAgICAgICAgICBp
bnRyaW5zaWNSYXRpby50cmFuc3Bvc2VkU2l6ZSgpLmFzcGVjdFJhdGlvKCksCisgICAgICAgICAg
ICAgICAgICAgIHByZWZlcnJlZFJhdGlvLnRyYW5zcG9zZWRTaXplKCkuYXNwZWN0UmF0aW8oKSwK
ICAgICAgICAgICAgICAgICAgICAgQm94U2l6aW5nOjpDb250ZW50Qm94CiAgICAgICAgICAgICAg
ICAgKTsKICAgICAgICAgICAgIH0KQEAgLTM2OTUsOCArMzY5Nyw4IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFNpemVUeXBlPiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0
ZVNpemluZ0tlCiAgICAgICAgICAgICAgICAgLy8gdGhlIGFzcGVjdCByYXRpby4KICAgICAgICAg
ICAgICAgICBpZiAoIWlzRmxleEl0ZW0oKSB8fCBkb3duY2FzdDxSZW5kZXJGbGV4aWJsZUJveD4o
cGFyZW50KCkpLT5pc0hvcml6b250YWxGbG93KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ1dpZHRoID0gb3ZlcnJp
ZGluZ0JvcmRlckJveExvZ2ljYWxXaWR0aCgpOyBvdmVycmlkaW5nV2lkdGggJiYgIXJlbmRlcklt
YWdlLT5pbnRyaW5zaWNSYXRpbygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc29sdmVIZWlnaHRGb3JSYXRpbyhib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCks
IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCksIGNvbnRlbnRCb3hMb2dpY2FsV2lkdGgo
Km92ZXJyaWRpbmdXaWR0aCksIHJlbmRlckltYWdlLT5pbnRyaW5zaWNSYXRpbygpLnRyYW5zcG9z
ZWRTaXplKCkuYXNwZWN0UmF0aW8oKSwgQm94U2l6aW5nOjpDb250ZW50Qm94KTsKKyAgICAgICAg
ICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nV2lkdGggPSBvdmVycmlkaW5nQm9yZGVyQm94TG9n
aWNhbFdpZHRoKCk7IG92ZXJyaWRpbmdXaWR0aCAmJiAhcmVuZGVySW1hZ2UtPnByZWZlcnJlZEFz
cGVjdFJhdGlvKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2
ZUhlaWdodEZvclJhdGlvKGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgYm9yZGVyQW5k
UGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwgY29udGVudEJveExvZ2ljYWxXaWR0aCgqb3ZlcnJpZGlu
Z1dpZHRoKSwgcmVuZGVySW1hZ2UtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCkudHJhbnNwb3NlZFNp
emUoKS5hc3BlY3RSYXRpbygpLCBCb3hTaXppbmc6OkNvbnRlbnRCb3gpOwogICAgICAgICAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgaWYgKGF1dG8gaGVp
Z2h0ID0gaGVpZ2h0RnJvbUNyb3NzQXhpc092ZXJyaWRlQW5kQXNwZWN0UmF0aW8oKSkKQEAgLTUy
NzQsMTcgKzUyNzYsMTEgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lk
dGhGcm9tQXNwZWN0UmF0aW8oKSBjb25zdAogICAgIHJldHVybiBjb25zdHJhaW5Mb2dpY2FsV2lk
dGhCeU1pbk1heChsb2dpY2FsV2lkdGgsIGNvbnRhaW5lcldpZHRoSW5JbmxpbmVEaXJlY3Rpb24s
ICpjb250YWluaW5nQmxvY2soKSwgQWxsb3dJbnRyaW5zaWM6Ok5vKTsKIH0KIAotYm9vbCBSZW5k
ZXJCb3g6OmlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0aW8oKSBjb25zdAotewotICAg
IGlmIChhdXRvKiByZXBsYWNlZCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4odGhp
cykpCi0gICAgICAgIHJldHVybiByZXBsYWNlZC0+Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlv
KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQogCi1zdGQ6Om9wdGlvbmFsPGRvdWJsZT4gUmVuZGVy
Qm94OjpyZXNvbHZlQXNwZWN0UmF0aW8oKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IFJl
bmRlckJveDo6YXNwZWN0UmF0aW9WYWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIHJlcGxh
Y2VkRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4odGhpcykpIAotICAg
ICAgICByZXR1cm4gcmVwbGFjZWRFbGVtZW50LT5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8o
KTsKKyAgICBpZiAoQ2hlY2tlZFB0ciByZXBsYWNlZEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8
UmVuZGVyUmVwbGFjZWQ+KHRoaXMpKQorICAgICAgICByZXR1cm4gcmVwbGFjZWRFbGVtZW50LT5w
cmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAgICAgaWYgKHN0eWxl
KCkuYXNwZWN0UmF0aW8oKS5oYXNSYXRpbygpKQogICAgICAgICByZXR1cm4gc3R5bGUoKS5sb2dp
Y2FsQXNwZWN0UmF0aW8oKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTUyOTUsNyAr
NTI5MSw3IEBAIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNv
bXB1dGVNaW5NYXhMb2dpY2FsV2lkdGhGcm9tQXNwZWN0CiB7CiAgICAgTGF5b3V0VW5pdCB0cmFu
c2ZlcnJlZE1pblNpemUgPSBMYXlvdXRVbml0KCk7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJl
ZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
YXNwZWN0UmF0aW8gPSByZXNvbHZlQXNwZWN0UmF0aW8oKTsKKyAgICBhdXRvIGFzcGVjdFJhdGlv
ID0gYXNwZWN0UmF0aW9WYWx1ZSgpOwogICAgIGlmICghYXNwZWN0UmF0aW8pCiAgICAgICAgIHJl
dHVybiB7IHRyYW5zZmVycmVkTWluU2l6ZSwgdHJhbnNmZXJyZWRNYXhTaXplIH07CiAKQEAgLTUz
MTYsNyArNTMxMiw3IEBAIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBSZW5kZXJC
b3g6OmNvbXB1dGVNaW5NYXhMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjCiB7CiAgICAgTGF5b3V0VW5p
dCB0cmFuc2ZlcnJlZE1pblNpemUgPSBMYXlvdXRVbml0KCk7CiAgICAgTGF5b3V0VW5pdCB0cmFu
c2ZlcnJlZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gYXNwZWN0UmF0aW8gPSByZXNvbHZlQXNwZWN0UmF0aW8oKTsKKyAgICBhdXRvIGFzcGVj
dFJhdGlvID0gYXNwZWN0UmF0aW9WYWx1ZSgpOwogICAgIGlmICghYXNwZWN0UmF0aW8pCiAgICAg
ICAgIHJldHVybiB7IHRyYW5zZmVycmVkTWluU2l6ZSwgdHJhbnNmZXJyZWRNYXhTaXplIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCAxODc4YzdkZWZiZWUuLmJlOGY4
MDY3OTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNjg1LDkgKzY4
NSw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgaW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBp
eGVsQ291bnRJZk5lZWRlZChjb25zdCBJbnRTaXplJik7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gcmVzb2x2ZUFzcGVjdFJhdGlvKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IGFzcGVjdFJhdGlvVmFsdWUoKSBjb25zdDsKICAgICBib29sIE5PREVMRVRFIHNob3VsZEln
bm9yZUFzcGVjdFJhdGlvKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1JlbmRlclJlcGxhY2VkV2l0aElu
dHJpbnNpY1JhdGlvKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRo
RnJvbUFzcGVjdFJhdGlvKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Jlc29sdmVhYmxlU3RyZXRjaFNp
emUoY29uc3QgYXV0byYgc2l6ZSkgY29uc3QgeyByZXR1cm4gc2l6ZS5pc1N0cmV0Y2goKSAmJiBj
b250YWluaW5nQmxvY2tIYXNEZWZpbml0ZUJsb2NrU2l6ZSgpOyB9CiAgICAgYm9vbCBpc1VucmVz
b2x2ZWFibGVTdHJldGNoU2l6ZShjb25zdCBhdXRvJiBzaXplKSBjb25zdCB7IHJldHVybiBzaXpl
LmlzU3RyZXRjaCgpICYmICFjb250YWluaW5nQmxvY2tIYXNEZWZpbml0ZUJsb2NrU2l6ZSgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRl
eCA3NGIzZTBiOGQyY2EuLjFmZWQ5NmQzODY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC04NzksNyArODc5LDcgQEAgc3RhdGljIGJv
b2wgaXNTVkdSb290V2l0aEludHJpbnNpY0FzcGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYgZmxl
eEl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBJdCdzIGNvbW1vbiBmb3Igc29t
ZSByZXBsYWNlZCBlbGVtZW50cywgc3VjaCBhcyBTVkdzLCB0byBoYXZlIGludHJpbnNpYyBhc3Bl
Y3QgcmF0aW9zIGJ1dCBubyBpbnRyaW5zaWMgc2l6ZXMuCiAgICAgLy8gVGhhdCdzIHdoeSBpdCBp
c24ndCBlbm91Z2gganVzdCB0byBjaGVjayBmb3IgaW50cmluc2ljIHNpemVzIGluIHRob3NlIGNh
c2VzLgotICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oZmxleEl0ZW0pLmNvbXB1
dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpID4gMDsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
UmVwbGFjZWQ+KGZsZXhJdGVtKS5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91
YmxlKCkgPiAwOwogfTsKIAogc3RhdGljIGJvb2wgZmxleEl0ZW1IYXNBc3BlY3RSYXRpbyhjb25z
dCBSZW5kZXJCb3gmIGZsZXhJdGVtKQpAQCAtMTI2MiwxMSArMTI2MiwxMSBAQCBkb3VibGUgUmVu
ZGVyRmxleGlibGVCb3g6OnByZWZlcnJlZEFzcGVjdFJhdGlvRm9yRmxleEl0ZW0oY29uc3QgUmVu
ZGVyQm94JiBmbGV4SQogICAgIGF1dG8gZmxleEl0ZW1Bc3BlY3RSYXRpbyA9IFsmXSB7CiAgICAg
ICAgIGF1dG8gZmxleEl0ZW1JbnRyaW5zaWNTaXplID0gTGF5b3V0U2l6ZSB7IGZsZXhJdGVtLmlu
dHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkg
fTsKICAgICAgICAgaWYgKGZsZXhJdGVtLmlzUmVuZGVyT3JMZWdhY3lSZW5kZXJTVkdSb290KCkp
Ci0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKS5j
b21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2Fz
dDxSZW5kZXJSZXBsYWNlZD4oZmxleEl0ZW0pLnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0
UmF0aW9Eb3VibGUoKTsKICAgICAgICAgaWYgKGZsZXhJdGVtLnN0eWxlKCkuYXNwZWN0UmF0aW8o
KS5pc1JhdGlvKCkgfHwgKGZsZXhJdGVtLnN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRS
YXRpbygpICYmIGZsZXhJdGVtSW50cmluc2ljU2l6ZS5pc0VtcHR5KCkpKQogICAgICAgICAgICAg
cmV0dXJuIGZsZXhJdGVtLnN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCk7CiAgICAgICAgIGlm
IChhdXRvKiByZXBsYWNlZEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+
KGZsZXhJdGVtKSkKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlZEVsZW1lbnQtPmNvbXB1dGVJ
bnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VkRWxlbWVu
dC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogCiAgICAgICAg
IEFTU0VSVChmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICByZXR1
cm4gZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbFdpZHRoKCkudG9Eb3VibGUoKSAvIGZsZXhJdGVt
LmludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKS50b0RvdWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggYTUzMGY0YmQzYjUyLi5lMTUwYTIwZDdlZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtOTM4LDI2ICs5Mzgs
MTMgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0KCkKICAgICB9CiB9CiAKLUZsb2F0U2l6ZSBS
ZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAotewotICAgIEFTU0VSVCgh
c2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSk7Ci0gICAgYXV0byBpbnRyaW5zaWNTaXplID0g
UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7Ci0KLSAgICAvLyBPdXIgaW50
cmluc2ljU2l6ZSBpcyBlbXB0eSBpZiB3ZSdyZSByZW5kZXJpbmcgZ2VuZXJhdGVkIGltYWdlcyB3
aXRoIHJlbGF0aXZlIHdpZHRoL2hlaWdodC4gRmlndXJlIG91dCB0aGUgcmlnaHQgaW50cmluc2lj
IHNpemUgdG8gdXNlLgotICAgIGlmIChpbnRyaW5zaWNTaXplLmlzRW1wdHkoKSAmJiAoaW1hZ2VS
ZXNvdXJjZSgpLmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIHx8IGltYWdlUmVzb3VyY2UoKS5pbWFn
ZUhhc1JlbGF0aXZlSGVpZ2h0KCkpKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY29udGFpbmlu
Z0Jsb2NrID0gaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgPyBjb250YWluZXIoKSA6IHRoaXMtPmNv
bnRhaW5pbmdCbG9jaygpOwotICAgICAgICBpZiAoYXV0byogYm94ID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlckJveD4oKmNvbnRhaW5pbmdCbG9jaykpIHsKLSAgICAgICAgICAgIGludHJpbnNpY1Np
emUuc2V0V2lkdGgoYm94LT5jb250ZW50Qm94TG9naWNhbFdpZHRoKCkpOwotICAgICAgICAgICAg
aW50cmluc2ljU2l6ZS5zZXRIZWlnaHQoYm94LT5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEF2YWls
YWJsZUxvZ2ljYWxIZWlnaHRUeXBlOjpJbmNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZykpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGludHJpbnNpY1NpemU7Ci19Ci0KIEZsb2F0U2l6
ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIEFTU0VS
VCghc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSk7CisgICAgLy8gU2l6ZSBjb250YWlubWVu
dCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0IHRoZQor
ICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBDU1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlz
IHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCisgICAgLy8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24n
dCBxdWVyeSBpbWFnZSBkYXRhKS4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQo
KSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygp
OwogCiAgICAgLy8gRG9uJ3QgY29tcHV0ZSBhbiBpbnRyaW5zaWMgcmF0aW8gdG8gcHJlc2VydmUg
aGlzdG9yaWNhbCBXZWJLaXQgYmVoYXZpb3IgaWYgd2UncmUgcGFpbnRpbmcgYWx0IHRleHQgYW5k
L29yIGEgYnJva2VuIGltYWdlLgogICAgIGlmIChzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29u
KCkpIHsKQEAgLTk2Niw2ICs5NTMsMTcgQEAgRmxvYXRTaXplIFJlbmRlckltYWdlOjpwcmVmZXJy
ZWRBc3BlY3RSYXRpbygpIGNvbnN0CiAgICAgICAgIHJldHVybiB7IDEuMCwgMS4wIH07CiAgICAg
fQogCisgICAgaWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpKSB7Cisg
ICAgICAgIGF1dG8gcmF0aW8gPSBzdmdSb290LT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpOworICAg
ICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgIXJhdGlvLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIHJhdGlvID0gcmF0aW8udHJhbnNwb3NlZFNpemUoKTsKKworICAgICAgICBp
ZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSB8fCAoc3R5bGUoKS5hc3BlY3RSYXRp
bygpLmlzQXV0b0FuZFJhdGlvKCkgJiYgcmF0aW8uaXNFbXB0eSgpKSkKKyAgICAgICAgICAgIHJh
dGlvID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2lj
YWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVl
KTsKKworICAgICAgICByZXR1cm4gcmF0aW87CisgICAgfQorCiAgICAgcmV0dXJuIFJlbmRlclJl
cGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCmluZGV4IDVlYWY5MmE2MTc2ZS4uODNkNWVkNDc1Y2M3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtODQsMTQgKzg0LDE0IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzTXVsdGlSZXByZXNlbnRhdGlvbkhFSUMoKSBjb25zdDsKICNlbmRpZgog
CisgICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CisKIHBy
b3RlY3RlZDoKICAgICBSZW5kZXJJbWFnZShUeXBlLCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwg
T3B0aW9uU2V0PFJlcGxhY2VkRmxhZz4sIFN0eWxlOjpJbWFnZSogPSBudWxscHRyLCBjb25zdCBm
bG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8gPSAxLjBmKTsKICAgICB2b2lkIHdpbGxCZURlc3Ry
b3llZCgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lk
dGhzKCkgY29uc3QgZmluYWw7CiAgICAgUmVuZGVyUmVwbGFjZWQqIGVtYmVkZGVkU1ZHUm9vdCgp
IGNvbnN0IGZpbmFsOwotICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0
IGZpbmFsOwotICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgZm9yZWdyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0IExheW91
dFJlY3QmIGxvY2FsUmVjdCwgdW5zaWduZWQgbWF4RGVwdGhUb1Rlc3QpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGU6OkRpZmZlcmVuY2UsIGNvbnN0IFJl
bmRlclN0eWxlJiBuZXdTdHlsZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBjY2ZlYWFlNTc3ZjMuLjU1ZDlmMDVlMDg0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKICNpbmNsdWRlICJJbmxpbmVJ
dGVyYXRvckxpbmVCb3hJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVwYWludGVyLmgiCisj
aW5jbHVkZSAiTGVnYWN5UmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIkxpbmVTZWxlY3Rpb24u
aCIKICNpbmNsdWRlICJMb2NhbEZyYW1lLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25lZExheW91dENv
bnN0cmFpbnRzLmgiCkBAIC01Niw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0SW5s
aW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlK0dldHRlcnNJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGUrU2V0dGVyc0lubGluZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdSb290
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTQ2OCw2MyArNDcwLDcxIEBAIHN0YXRpYyBib29s
IGlzVmlkZW9XaXRoRGVmYXVsdE9iamVjdFNpemUoY29uc3QgUmVuZGVyUmVwbGFjZWQqIG1heWJl
VmlkZW8pCiAgICAgVU5VU0VEX1BBUkFNKG1heWJlVmlkZW8pOwogI2VuZGlmCiAgICAgcmV0dXJu
IGZhbHNlOwotfSAKK30KKworc3RhdGljIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZUZv
clJlbmRlcmVyKGNvbnN0IFJlbmRlclJlcGxhY2VkJiByZXBsYWNlZFJlbmRlcmVyKQoreworICAg
IEFTU0VSVCghcmVwbGFjZWRSZW5kZXJlci5zaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsK
KworICAgIGlmIChDaGVja2VkUHRyIHN2Z1Jvb3QgPSByZXBsYWNlZFJlbmRlcmVyLmVtYmVkZGVk
U1ZHUm9vdCgpKSB7CisgICAgICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IFsmXSB7CisgICAgICAg
ICAgICBpZiAoQ2hlY2tlZFB0ciByb290ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclNWR1Jvb3Q+
KCpzdmdSb290KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcm9vdC0+Y29tcHV0ZUludHJpbnNp
Y1NpemUoKTsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdSb290
Pigqc3ZnUm9vdCkuY29tcHV0ZUludHJpbnNpY1NpemUoKTsKKyAgICAgICAgfSgpOworCisgICAg
ICAgIGludHJpbnNpY1NpemUuc2NhbGUocmVwbGFjZWRSZW5kZXJlci5zdHlsZSgpLnVzZWRab29t
KCkpOworICAgICAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJJbWFnZSA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJJbWFnZT4ocmVwbGFjZWRSZW5kZXJlcikpCisgICAgICAgICAgICBpbnRyaW5zaWNT
aXplLnNjYWxlKHJlbmRlckltYWdlLT5pbWFnZURldmljZVBpeGVsUmF0aW8oKSk7CisgICAgICAg
IGlmICghcmVwbGFjZWRSZW5kZXJlci5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAg
ICAgICAgaW50cmluc2ljU2l6ZSA9IGludHJpbnNpY1NpemUudHJhbnNwb3NlZFNpemUoKTsKKyAg
ICAgICAgcmV0dXJuIGludHJpbnNpY1NpemU7CisgICAgfQorCisgICAgaWYgKENoZWNrZWRQdHIg
cmVuZGVySW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+KHJlcGxhY2VkUmVuZGVy
ZXIpKSB7CisgICAgICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZSB7IHJlbmRlcklt
YWdlLT5pbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgcmVuZGVySW1hZ2UtPmludHJpbnNpY0xvZ2lj
YWxIZWlnaHQoKSB9OworICAgICAgICAvLyBPdXIgaW50cmluc2ljU2l6ZSBpcyBlbXB0eSBpZiB3
ZSdyZSByZW5kZXJpbmcgZ2VuZXJhdGVkIGltYWdlcyB3aXRoIHJlbGF0aXZlIHdpZHRoL2hlaWdo
dC4gRmlndXJlIG91dCB0aGUgcmlnaHQgaW50cmluc2ljIHNpemUgdG8gdXNlLgorICAgICAgICBp
ZiAoaW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgJiYgKHJlbmRlckltYWdlLT5pbWFnZVJlc291cmNl
KCkuaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgfHwgcmVuZGVySW1hZ2UtPmltYWdlUmVzb3VyY2Uo
KS5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkpKSB7CisgICAgICAgICAgICBDaGVja2VkUHRyIGNv
bnRhaW5pbmdCbG9jayA9IHJlbmRlckltYWdlLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IHJl
bmRlckltYWdlLT5jb250YWluZXIoKSA6IHJlbmRlckltYWdlLT5jb250YWluaW5nQmxvY2soKTsK
KyAgICAgICAgICAgIGlmIChDaGVja2VkUHRyIHJlbmRlckJveCA9IGR5bmFtaWNEb3duY2FzdDxS
ZW5kZXJCb3g+KGNvbnRhaW5pbmdCbG9jaykpIHsKKyAgICAgICAgICAgICAgICBpbnRyaW5zaWNT
aXplLnNldFdpZHRoKHJlbmRlckJveC0+Y29udGVudEJveExvZ2ljYWxXaWR0aCgpKTsKKyAgICAg
ICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldEhlaWdodChyZW5kZXJCb3gtPmF2YWlsYWJsZUxv
Z2ljYWxIZWlnaHQoQXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGU6OkluY2x1ZGVNYXJnaW5Cb3Jk
ZXJQYWRkaW5nKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlu
dHJpbnNpY1NpemU7CisgICAgfQogCi12b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlQXNwZWN0
UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChSZW5kZXJSZXBsYWNlZCogc3ZnUm9vdCwgRmxv
YXRTaXplJiBjb25zdHJhaW5lZFNpemUsIEZsb2F0U2l6ZSYgcHJlZmVycmVkQXNwZWN0UmF0aW8p
IGNvbnN0CisgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyV2lkZ2V0ID1keW5hbWljRG93bmNhc3Q8
UmVuZGVyV2lkZ2V0PihyZXBsYWNlZFJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIHsgcmVwbGFj
ZWRSZW5kZXJlci5pbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgcmVwbGFjZWRSZW5kZXJlci5pbnRy
aW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKKworICAgIGlmIChDaGVja2VkUHRyIHN2Z1Jvb3QgPSBk
eW5hbWljRG93bmNhc3Q8UmVuZGVyU1ZHUm9vdD4ocmVwbGFjZWRSZW5kZXJlcikpCisgICAgICAg
IHJldHVybiBzdmdSb290LT5jb21wdXRlSW50cmluc2ljU2l6ZSgpOworCisgICAgaWYgKENoZWNr
ZWRQdHIgbGVnYWN5U1ZHUm9vdCA9IGR5bmFtaWNEb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdSb290
PihyZXBsYWNlZFJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIGxlZ2FjeVNWR1Jvb3QtPmNvbXB1
dGVJbnRyaW5zaWNTaXplKCk7CisKKyAgICByZXR1cm4geyByZXBsYWNlZFJlbmRlcmVyLmludHJp
bnNpY0xvZ2ljYWxXaWR0aCgpLCByZXBsYWNlZFJlbmRlcmVyLmludHJpbnNpY0xvZ2ljYWxIZWln
aHQoKSB9OworfQorCit2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZXND
b25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhGbG9hdFNpemUmIGludHJpbnNpY1Np
emUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0CiB7Ci0gICAgRmxvYXRTaXplIGlu
dHJpbnNpY1NpemU7CiAgICAgaWYgKHNob3VsZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5t
ZW50KCkpIHsKLSAgICAgICAgaW50cmluc2ljU2l6ZSA9IFJlbmRlclJlcGxhY2VkOjpjb21wdXRl
SW50cmluc2ljU2l6ZSgpOwotICAgICAgICBwcmVmZXJyZWRBc3BlY3RSYXRpbyA9IFJlbmRlclJl
cGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOwotICAgIH0gZWxzZSBpZiAoc3ZnUm9vdCkg
ewotICAgICAgICBpbnRyaW5zaWNTaXplID0gc3ZnUm9vdC0+Y29tcHV0ZUludHJpbnNpY1NpemUo
KTsKLSAgICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8gPSBzdmdSb290LT5wcmVmZXJyZWRBc3Bl
Y3RSYXRpbygpOwotCi0gICAgICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRpbygp
IHx8IChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNBdXRvQW5kUmF0aW8oKSAmJiBwcmVmZXJyZWRB
c3BlY3RSYXRpby5pc0VtcHR5KCkpKQotICAgICAgICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8g
PSBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgpLmFzcGVjdFJhdGlvKCkud2lkdGgo
KS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpbygpLmhlaWdodCgpLnZhbHVlKTsKLQotICAgICAg
ICAvLyBIYW5kbGUgem9vbSAmIHZlcnRpY2FsIHdyaXRpbmcgbW9kZXMgaGVyZSwgYXMgdGhlIGVt
YmVkZGVkIGRvY3VtZW50IGRvZXNuJ3Qga25vdyBhYm91dCB0aGVtLgotICAgICAgICBpbnRyaW5z
aWNTaXplLnNjYWxlKHN0eWxlKCkudXNlZFpvb20oKSk7Ci0KLSAgICAgICAgaWYgKGF1dG8qIGlt
YWdlID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckltYWdlPigqdGhpcykpCi0gICAgICAgICAgICBp
bnRyaW5zaWNTaXplLnNjYWxlKGltYWdlLT5pbWFnZURldmljZVBpeGVsUmF0aW8oKSk7Ci0KLSAg
ICAgICAgLy8gVXBkYXRlIG91ciBpbnRyaW5zaWMgc2l6ZSB0byBtYXRjaCB3aGF0IHRoZSBjb250
ZW50IHJlbmRlcmVyIGhhcyBjb21wdXRlZCwgc28gdGhhdCB3aGVuIHdlCi0gICAgICAgIC8vIGNv
bnN0cmFpbiB0aGUgc2l6ZSBiZWxvdywgdGhlIGNvcnJlY3QgaW50cmluc2ljIHNpemUgd2lsbCBi
ZSBvYnRhaW5lZCBmb3IgY29tcGFyaXNvbiBhZ2FpbnN0Ci0gICAgICAgIC8vIG1pbiBhbmQgbWF4
IHdpZHRocy4KLSAgICAgICAgaWYgKGlzUmVuZGVyV2lkZ2V0KCkpIHsKLSAgICAgICAgICAgIC8v
IEZvciBSZW5kZXJXaWRnZXQgY29udGVudCAoZS5nLiA8b2JqZWN0PiBlbWJlZGRpbmcgYW4gU1ZH
IGRvY3VtZW50KSwgYWx3YXlzIHVwZGF0ZQotICAgICAgICAgICAgLy8gbV9pbnRyaW5zaWNTaXpl
IHRvIHJlZmxlY3QgY3VycmVudCBpbnRyaW5zaWMgZGltZW5zaW9ucywgYXBwbHlpbmcgQ1NTIGRl
ZmF1bHQgZmFsbGJhY2sKLSAgICAgICAgICAgIC8vIHZhbHVlcyAoMzAweDE1MCkgZm9yIGRpbWVu
c2lvbnMgd2l0aCBubyBpbnRyaW5zaWMgdmFsdWUgKGUuZy4gcGVyY2VudGFnZS1zaXplZCBvcgot
ICAgICAgICAgICAgLy8gcmVtb3ZlZCBhdHRyaWJ1dGVzKS4gVGhpcyBwcmV2ZW50cyBzdGFsZSBj
YWNoZWQgc2l6ZXMgd2hlbiBhdHRyaWJ1dGVzIGxpa2Ugd2lkdGgvaGVpZ2h0Ci0gICAgICAgICAg
ICAvLyBhcmUgcmVtb3ZlZC4gTm90ZTogdGhpcyBkb2VzIG5vdCBhcHBseSB0byBSZW5kZXJJbWFn
ZSAoPGltZyBzcmM9InN2ZyI+KSwgd2hpY2ggbWFuYWdlcwotICAgICAgICAgICAgLy8gaXRzIG93
biBpbnRyaW5zaWMgc2l6ZSB2aWEgc2V0SW50cmluc2ljU2l6ZSgpIGR1cmluZyBpbWFnZSBsb2Fk
LgotICAgICAgICAgICAgYXV0byBzaXplVG9DYWNoZSA9IGludHJpbnNpY1NpemU7CisgICAgICAg
IGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUgeyBpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50
cmluc2ljTG9naWNhbEhlaWdodCgpIH07CisgICAgICAgIGludHJpbnNpY1JhdGlvID0gUmVuZGVy
UmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aW50cmluc2ljU2l6ZSA9IGNvbXB1dGVJbnRyaW5zaWNTaXplRm9yUmVuZGVyZXIoKnRoaXMpOwor
ICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisKKyAgICAg
ICAgYXV0byBzaXplVG9DYWNoZSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBpbnRyaW5z
aWNTaXplIDogaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworICAgICAgICBpZiAoZW1i
ZWRkZWRTVkdSb290KCkgJiYgaXNSZW5kZXJXaWRnZXQoKSkgewogICAgICAgICAgICAgaWYgKCFz
aXplVG9DYWNoZS53aWR0aCgpKQogICAgICAgICAgICAgICAgIHNpemVUb0NhY2hlLnNldFdpZHRo
KGNEZWZhdWx0V2lkdGgpOwogICAgICAgICAgICAgaWYgKCFzaXplVG9DYWNoZS5oZWlnaHQoKSkK
ICAgICAgICAgICAgICAgICBzaXplVG9DYWNoZS5zZXRIZWlnaHQoY0RlZmF1bHRIZWlnaHQpOwog
ICAgICAgICAgICAgbV9pbnRyaW5zaWNTaXplID0gTGF5b3V0U2l6ZShzaXplVG9DYWNoZSk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoIXByZWZlcnJlZEFzcGVjdFJhdGlvLmlzRW1wdHkoKSAmJiAhaW50
cmluc2ljU2l6ZS5pc1plcm8oKSkKLSAgICAgICAgICAgIG1faW50cmluc2ljU2l6ZSA9IExheW91
dFNpemUoaW50cmluc2ljU2l6ZSk7Ci0KLSAgICAgICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIXByZWZlcnJlZEFzcGVjdFJhdGlvLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICBwcmVmZXJyZWRBc3BlY3RSYXRpbyA9IHByZWZlcnJlZEFzcGVj
dFJhdGlvLnRyYW5zcG9zZWRTaXplKCk7Ci0gICAgICAgICAgICBpbnRyaW5zaWNTaXplID0gaW50
cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgaW50cmluc2ljU2l6ZSA9IGNvbXB1dGVJbnRyaW5zaWNTaXplKCk7Ci0gICAgICAgIHBy
ZWZlcnJlZEFzcGVjdFJhdGlvID0gdGhpcy0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKLSAgICAg
ICAgaWYgKCFwcmVmZXJyZWRBc3BlY3RSYXRpby5pc0VtcHR5KCkgJiYgIWludHJpbnNpY1NpemUu
aXNaZXJvKCkpCi0gICAgICAgICAgICBtX2ludHJpbnNpY1NpemUgPSBMYXlvdXRTaXplKGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBpbnRyaW5zaWNTaXplIDogaW50cmluc2ljU2l6ZS50cmFu
c3Bvc2VkU2l6ZSgpKTsKKyAgICAgICAgfSBlbHNlIGlmICghaW50cmluc2ljUmF0aW8uaXNFbXB0
eSgpICYmICFpbnRyaW5zaWNTaXplLmlzWmVybygpKQorICAgICAgICAgICAgbV9pbnRyaW5zaWNT
aXplID0gTGF5b3V0U2l6ZShzaXplVG9DYWNoZSk7CiAgICAgfQotICAgIGNvbnN0cmFpbmVkU2l6
ZSA9IGludHJpbnNpY1NpemU7Ci19Ci0KLXZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRy
aW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKFJlbmRlclJlcGxh
Y2VkKiBzdmdSb290LCBGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIEZsb2F0U2l6ZSYgaW50cmlu
c2ljUmF0aW8pIGNvbnN0Ci17Ci0gICAgY29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JS
ZW5kZXJCb3goc3ZnUm9vdCwgaW50cmluc2ljU2l6ZSwgaW50cmluc2ljUmF0aW8pOwogCiAgICAg
Ly8gTm93IGNvbnN0cmFpbiB0aGUgaW50cmluc2ljIHNpemUgYWxvbmcgZWFjaCBheGlzIGFjY29y
ZGluZyB0byBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRoL2hlaWdodHMgYWxvbmcgdGhlCiAgICAg
Ly8gb3Bwb3NpdGUgYXhpcy4gU28gZm9yIGV4YW1wbGUgYSBtYXhpbXVtIHdpZHRoIHRoYXQgc2hy
aW5rcyBvdXIgd2lkdGggd2lsbCByZXN1bHQgaW4gdGhlIGhlaWdodCB3ZSBjb21wdXRlIGhlcmUK
QEAgLTU5NCwyNSArNjA0LDggQEAgTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6cmVwbGFjZWRD
b250ZW50UmVjdChjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQogICAgIHJldHVybiBm
aW5hbFJlY3Q7CiB9CiAKLWRvdWJsZSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0Fz
cGVjdFJhdGlvKCkgY29uc3QKLXsKLSAgICBGbG9hdFNpemUgaW50cmluc2ljUmF0aW87Ci0gICAg
RmxvYXRTaXplIGludHJpbnNpY1NpemU7Ci0gICAgY29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRp
b25Gb3JSZW5kZXJCb3goZW1iZWRkZWRTVkdSb290KCksIGludHJpbnNpY1NpemUsIGludHJpbnNp
Y1JhdGlvKTsKLSAgICByZXR1cm4gaW50cmluc2ljUmF0aW8uYXNwZWN0UmF0aW9Eb3VibGUoKTsK
LX0KLQotRmxvYXRTaXplIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNv
bnN0Ci17Ci0gICAgLy8gSWYgdGhlcmUncyBhbiBlbWJlZGRlZFNWR1Jvb3QoKSBvZiBhIHJlbW90
ZSwgcmVmZXJlbmNlZCBkb2N1bWVudCBhdmFpbGFibGUsIHRoaXMgY29kZS1wYXRoIHNob3VsZCBu
ZXZlciBiZSB1c2VkLgotICAgIEFTU0VSVCghZW1iZWRkZWRTVkdSb290KCkgfHwgc2hvdWxkQXBw
bHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSk7Ci0gICAgcmV0dXJuIHsgaW50cmluc2lj
TG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OwotfQotCiBGbG9hdFNp
emUgUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICAv
LyBJZiB0aGVyZSdzIGFuIGVtYmVkZGVkU1ZHUm9vdCgpIG9mIGEgcmVtb3RlLCByZWZlcmVuY2Vk
IGRvY3VtZW50IGF2YWlsYWJsZSwgdGhpcyBjb2RlLXBhdGggc2hvdWxkIG5ldmVyIGJlIHVzZWQu
Ci0gICAgQVNTRVJUKCFlbWJlZGRlZFNWR1Jvb3QoKSB8fCBzaG91bGRBcHBseVNpemVPcklubGlu
ZVNpemVDb250YWlubWVudCgpKTsKICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUo
aW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7CiAgICAg
RmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvOwogCkBAIC02NzIsNyArNjY1LDcgQEAgdm9p
ZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRyaW5zaWNMb2dp
Y2FsV2lkdGhzKExheW91dFVuaXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3R5bGUg
PSB0aGlzLT5zdHlsZSgpOwotICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RSYXRpbyA9IGNvbXB1dGVJ
bnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RSYXRpbyA9IHBy
ZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICBhdXRvIGNvbXB1
dGVkSW50cmluc2ljTG9naWNhbFdpZHRoID0gbWluTG9naWNhbFdpZHRoOwogCiAgICAgaWYgKGF1
dG8gZml4ZWRMb2dpY2FsSGVpZ2h0ID0gc3R5bGUubG9naWNhbEhlaWdodCgpLnRyeUZpeGVkKCkp
CkBAIC03MTEsNyArNzA0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJl
cGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2gKICAgICAvLyAxMC4z
LjIgSW5saW5lLCByZXBsYWNlZCBlbGVtZW50czogaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEv
dmlzdWRldC5odG1sI2lubGluZS1yZXBsYWNlZC13aWR0aAogICAgIEZsb2F0U2l6ZSBpbnRyaW5z
aWNSYXRpbzsKICAgICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplOwotICAgIGNvbXB1dGVJbnRy
aW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKGVtYmVkZGVkU1ZH
Um9vdCgpLCBjb25zdHJhaW5lZFNpemUsIGludHJpbnNpY1JhdGlvKTsKKyAgICBjb21wdXRlSW50
cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhjb25zdHJhaW5l
ZFNpemUsIGludHJpbnNpY1JhdGlvKTsKIAogICAgIGlmIChzdHlsZS5sb2dpY2FsV2lkdGgoKS5p
c0F1dG8oKSkgewogICAgICAgICBib29sIGNvbXB1dGVkSGVpZ2h0SXNBdXRvID0gc3R5bGUubG9n
aWNhbEhlaWdodCgpLmlzQXV0bygpOwpAQCAtODA3LDcgKzgwMCw3IEBAIExheW91dFVuaXQgUmVu
ZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0CiAgICAgLy8gMTAuNi4yIElubGluZSwgcmVwbGFjZWQgZWxlbWVudHM6IGh0dHA6
Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNpbmxpbmUtcmVwbGFjZWQtaGVpZ2h0
CiAgICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvOwogICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5l
ZFNpemU7Ci0gICAgY29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVk
TWluTWF4U2l6ZXMoZW1iZWRkZWRTVkdSb290KCksIGNvbnN0cmFpbmVkU2l6ZSwgaW50cmluc2lj
UmF0aW8pOworICAgIGNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJl
ZE1pbk1heFNpemVzKGNvbnN0cmFpbmVkU2l6ZSwgaW50cmluc2ljUmF0aW8pOwogCiAgICAgYm9v
bCB3aWR0aElzQXV0byA9IHN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNBdXRvKCk7CiAgICAgYm9v
bCBoYXNJbnRyaW5zaWNXaWR0aCA9IGNvbnN0cmFpbmVkU2l6ZS53aWR0aCgpID4gMCB8fCAoIWNv
bnN0cmFpbmVkU2l6ZS53aWR0aCgpICYmIHNob3VsZFJlc3BlY3RaZXJvSW50cmluc2ljV2lkdGgo
KSkgfHwgc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKTsKQEAgLTg0OSw3
ICs4NDIsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljS2V5d29yZExv
Z2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogewogICAgIGlmIChoYXNJbnRyaW5z
aWNBc3BlY3RSYXRpbygpICYmICFzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKSkgewog
ICAgICAgICBpZiAoYXV0byBmaXhlZEhlaWdodCA9IHN0eWxlKCkubG9naWNhbEhlaWdodCgpLnRy
eUZpeGVkKCkpIHsKLSAgICAgICAgICAgIGF1dG8gaGVpZ2h0RGVyaXZlZFdpZHRoID0gTGF5b3V0
VW5pdCB7IGZpeGVkSGVpZ2h0LT5yZXNvbHZlWm9vbShzdHlsZSgpLnVzZWRab29tRm9yTGVuZ3Ro
KCkpICogY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCkgfTsKKyAgICAgICAgICAgIGF1dG8g
aGVpZ2h0RGVyaXZlZFdpZHRoID0gTGF5b3V0VW5pdCB7IGZpeGVkSGVpZ2h0LT5yZXNvbHZlWm9v
bShzdHlsZSgpLnVzZWRab29tRm9yTGVuZ3RoKCkpICogcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5h
c3BlY3RSYXRpb0RvdWJsZSgpIH07CiAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBoZWln
aHREZXJpdmVkV2lkdGg7CiAgICAgICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBoZWlnaHREZXJp
dmVkV2lkdGg7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDYwLDE0ICsxMDUzLDYgQEAgdm9p
ZCBSZW5kZXJSZXBsYWNlZDo6bGF5b3V0U2hhZG93Q29udGVudChjb25zdCBMYXlvdXRTaXplJiBv
bGRTaXplKQogICAgIGNsZWFyQ2hpbGROZWVkc0xheW91dCgpOwogfQogCi1GbG9hdFNpemUgUmVu
ZGVyUmVwbGFjZWQ6OmludHJpbnNpY1JhdGlvKCkgY29uc3QKLXsKLSAgICBGbG9hdFNpemUgaW50
cmluc2ljUmF0aW87Ci0gICAgRmxvYXRTaXplIGNvbnN0cmFpbmVkU2l6ZTsKLSAgICBjb21wdXRl
QXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChlbWJlZGRlZFNWR1Jvb3QoKSwgY29u
c3RyYWluZWRTaXplLCBpbnRyaW5zaWNSYXRpbyk7Ci0gICAgcmV0dXJuIGludHJpbnNpY1JhdGlv
OwotfQotCiB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRPdXRPZkZsb3dQb3Np
dGlvbmVkTG9naWNhbFdpZHRoKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHV0ZWRW
YWx1ZXMpIGNvbnN0CiB7CiAgICAgUG9zaXRpb25lZExheW91dENvbnN0cmFpbnRzIGlubGluZUNv
bnN0cmFpbnRzKCp0aGlzLCBMb2dpY2FsQm94QXhpczo6SW5saW5lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKaW5kZXggY2FmNzg4OWQ3YTEwLi5lYjdmYmY0MGY2
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC00Miwx
MyArNDIsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc2V0TmVlZHNMYXlvdXRJZk5lZWRlZEFmdGVy
SW50cmluc2ljU2l6ZUNoYW5nZSgpOwogCiAgICAgTGF5b3V0U2l6ZSBpbnRyaW5zaWNTaXplKCkg
Y29uc3QgZmluYWw7Ci0gICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvKCkgY29uc3Q7Ci0gICAg
CisKICAgICBib29sIGlzQ29udGVudExpa2VseVZpc2libGVJblZpZXdwb3J0KCk7CiAgICAgYm9v
bCBzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBkb3VibGUgY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3Q7Ci0KICAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIExh
eW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IFN0eWxlOjpQ
cmVmZXJyZWRTaXplJiBsb2dpY2FsSGVpZ2h0KSBjb25zdDsKQEAgLTYxLDYgKzU4LDkgQEAgcHVi
bGljOgogICAgIGJvb2wgcmVwbGFjZWRNaW5Mb2dpY2FsSGVpZ2h0Q29tcHV0ZXNBc05vbmUoKSBj
b25zdDsKICAgICBib29sIHJlcGxhY2VkTWF4TG9naWNhbEhlaWdodENvbXB1dGVzQXNOb25lKCkg
Y29uc3Q7CiAKKyAgICB2aXJ0dWFsIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlZmVycmVk
QXNwZWN0UmF0aW8oKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlclJlcGxhY2VkKFR5
cGUsIEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8UmVwbGFjZWRGbGFnPiA9IHsg
fSk7CiAgICAgUmVuZGVyUmVwbGFjZWQoVHlwZSwgRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIGNv
bnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUsIE9wdGlvblNldDxSZXBsYWNlZEZsYWc+ID0g
eyB9KTsKQEAgLTc3LDkgKzc3LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZTo6RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdDsK
LQogICAgIHZvaWQgc2V0SW50cmluc2ljU2l6ZShjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNT
aXplKSB7IG1faW50cmluc2ljU2l6ZSA9IGludHJpbnNpY1NpemU7IH0KICAgICB2aXJ0dWFsIHZv
aWQgaW50cmluc2ljU2l6ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVJ
bnRyaW5zaWNMb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTA2LDcg
KzEwMyw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXB1dGVBc3BlY3RSYXRpb0FkanVzdGVk
SW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91
dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclJlcGxh
Y2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgQVNDSUlMaXRl
cmFsIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGFjZWQi
X3M7IH0KIAogICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTEyMSw4ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQmVT
ZWxlY3Rpb25MZWFmKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5
b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkg
ZmluYWw7Ci0gICAgdm9pZCBjb21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJv
eChSZW5kZXJSZXBsYWNlZCosIEZsb2F0U2l6ZSYgY29uc3RyYWluZWRTaXplLCBGbG9hdFNpemUm
IGludHJpbnNpY1JhdGlvKSBjb25zdDsKLSAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNTaXplc0Nv
bnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKFJlbmRlclJlcGxhY2VkKiBzdmdSb290
LCBGbG9hdFNpemUmIGNvbnN0cmFpbmVkU2l6ZSwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykg
Y29uc3Q7CisgICAgdm9pZCBjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNm
ZXJyZWRNaW5NYXhTaXplcyhGbG9hdFNpemUmIGNvbnN0cmFpbmVkU2l6ZSwgRmxvYXRTaXplJiBp
bnRyaW5zaWNSYXRpbykgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhd1NlbGVj
dGlvblRpbnQoKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHAKaW5kZXggZThjYjBhMGU0OWNiLi44ZjM0ZDk0ZjViZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC00OTgsNCArNDk4LDI2IEBAIFJlbmRl
clJlcGxhY2VkKiBSZW5kZXJXaWRnZXQ6OmVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0CiAgICAgcmV0
dXJuIGZyYW1lVmlldyA/IGZyYW1lVmlldy0+ZW1iZWRkZWRTVkdSb290KCkgOiBudWxscHRyOwog
fQogCitGbG9hdFNpemUgUmVuZGVyV2lkZ2V0OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0
Cit7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNp
b25zIGZyb20gY29udGVudCwgYnV0IHRoZQorICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBD
U1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCisgICAg
Ly8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KKyAgICBpZiAo
c2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxh
Y2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOworCisgICAgQ2hlY2tlZFB0ciBzdmdSb290ID0g
ZW1iZWRkZWRTVkdSb290KCk7CisgICAgaWYgKCFzdmdSb290KQorICAgICAgICByZXR1cm4gUmVu
ZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisKKyAgICBhdXRvIHJhdGlvID0g
c3ZnUm9vdC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICBpZiAoIWlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgJiYgIXJhdGlvLmlzRW1wdHkoKSkKKyAgICAgICAgcmF0aW8gPSByYXRpby50
cmFuc3Bvc2VkU2l6ZSgpOworCisgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlv
KCkgfHwgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygpICYmIHJhdGlvLmlz
RW1wdHkoKSkpCisgICAgICAgIHJhdGlvID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5
bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlv
TG9naWNhbEhlaWdodCgpLnZhbHVlKTsKKworICAgIHJldHVybiByYXRpbzsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCmlu
ZGV4IDM5YzQwZTNiYjA3NC4uZTkxMTdkOTEyN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5oCkBAIC05Miw2ICs5Miw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNo
b3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBmaW5hbDsKICAgICBSZW5kZXJS
ZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3QgZmluYWw7CisgICAgRmxvYXRTaXplIHBy
ZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHNldFNlbGVjdGlv
blN0YXRlKEhpZ2hsaWdodFN0YXRlKSBmaW5hbDsKICAgICB2b2lkIHNldE92ZXJsYXBUZXN0UmVz
dWx0KGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5jcHAKaW5kZXggZGUyOTQzNjI0Mjk4Li43NWYwMmYxOGE2ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtOTEsMTIgKzkx
LDE1IEBAIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKiBSZW5kZXJTVkdSb290Ojp2aWV3cG9y
dENvbnRhaW5lcigpIGNvbnN0CiAKIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNw
ZWN0UmF0aW8oKSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0
aW8oKTsKKyAgICByZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJs
ZSgpOwogfQogCiBGbG9hdFNpemUgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUo
KSBjb25zdAogewotICAgIEFTU0VSVF9JTVBMSUVTKHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRD
b250ZXh0KCkuaXNJblJlbmRlclRyZWVMYXlvdXQoKSwgIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5t
ZW50KCkpOworICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGlt
ZW5zaW9ucyBmcm9tIGNvbnRlbnQuCisgICAgLy8gVGhlIGJhc2UgY2xhc3MgcmV0dXJucyB2YWx1
ZXMgZnJvbSB0aGUgY2FjaGUgLyBjb250YWluLWludHJpbnNpYy1zaXplIHdpdGhvdXQgcXVlcnlp
bmcgaW1hZ2UgZGF0YS4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAg
ICAgICAgcmV0dXJuIHsgaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxI
ZWlnaHQoKSB9OwogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9TVkcvY29vcmRzLmh0bWwj
SW50cmluc2ljU2l6aW5nCiAgICAgRmxvYXRTaXplIGludHJpbnNpY1NpemUgPSB7IHN2Z1NWR0Vs
ZW1lbnQoKS5pbnRyaW5zaWNXaWR0aCgpLCBzdmdTVkdFbGVtZW50KCkuaW50cmluc2ljSGVpZ2h0
KCkgfTsKICAgICAvLyBUcmFuc3Bvc2UgZm9yIHZlcnRpY2FsIHdyaXRpbmcgbW9kZQpAQCAtMTA3
LDcgKzExMCwxMSBAQCBGbG9hdFNpemUgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1Np
emUoKSBjb25zdAogCiBGbG9hdFNpemUgUmVuZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0
aW8oKSBjb25zdAogewotICAgIEFTU0VSVCghc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSk7
CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25z
IGZyb20gY29udGVudCwgYnV0IHRoZQorICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBDU1Mg
YXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCisgICAgLy8g
YmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KKyAgICBpZiAoc2hv
dWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2Vk
OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOwogCiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8o
KS5pc1JhdGlvKCkpCiAgICAgICAgIHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihz
dHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0
aW9Mb2dpY2FsSGVpZ2h0KCkudmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuaAppbmRleCA2MTk3ZjU0ZmVlMWUuLmY5Yjk4NjBmNDEwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNFbWJlZGRlZFRocm91Z2hTVkdJbWFnZSgpIGNvbnN0
OwogICAgIGJvb2wgaXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgp
IGNvbnN0OwogCi0gICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QgZmlu
YWw7CisgICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3Q7CiAgICAgRmxv
YXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXNJ
bnRyaW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3Bw
CmluZGV4IDM2ZDNlMzg1OWRiNi4uZTA4Y2FhZTAzZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNw
cApAQCAtODEsMTIgKzgxLDE1IEBAIFNWR1NWR0VsZW1lbnQmIExlZ2FjeVJlbmRlclNWR1Jvb3Q6
OnN2Z1NWR0VsZW1lbnQoKSBjb25zdAogCiBib29sIExlZ2FjeVJlbmRlclNWR1Jvb3Q6Omhhc0lu
dHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29tcHV0ZUludHJpbnNp
Y0FzcGVjdFJhdGlvKCk7CisgICAgcmV0dXJuIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0
UmF0aW9Eb3VibGUoKTsKIH0KIAogRmxvYXRTaXplIExlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNvbXB1
dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKIHsKLSAgICBBU1NFUlRfSU1QTElFUyh2aWV3KCkuZnJh
bWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmlzSW5SZW5kZXJUcmVlTGF5b3V0KCksICFzaG91bGRB
cHBseVNpemVDb250YWlubWVudCgpKTsKKyAgICAvLyBTaXplIGNvbnRhaW5tZW50IHN1cHByZXNz
ZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LgorICAgIC8vIFRoZSBiYXNlIGNs
YXNzIHJldHVybnMgdmFsdWVzIGZyb20gdGhlIGNhY2hlIC8gY29udGFpbi1pbnRyaW5zaWMtc2l6
ZSB3aXRob3V0IHF1ZXJ5aW5nIGltYWdlIGRhdGEuCisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNv
bnRhaW5tZW50KCkpCisgICAgICAgIHJldHVybiB7IGludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBp
bnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKICAgICBGbG9hdFNpemUgaW50cmluc2ljU2l6ZSA9
IHsgc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY1dpZHRoKCksIHN2Z1NWR0VsZW1lbnQoKS5pbnRy
aW5zaWNIZWlnaHQoKSB9OwogICAgIC8vIFRyYW5zcG9zZSBmb3IgdmVydGljYWwgd3JpdGluZyBt
b2RlCiAgICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQpAQCAtOTYsNyArOTksMTEg
QEAgRmxvYXRTaXplIExlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkg
Y29uc3QKIAogRmxvYXRTaXplIExlZ2FjeVJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJh
dGlvKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkp
OworICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9u
cyBmcm9tIGNvbnRlbnQsIGJ1dCB0aGUKKyAgICAvLyBhc3BlY3QgcmF0aW8gZnJvbSB0aGUgQ1NT
IGFzcGVjdC1yYXRpbyBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFpbGFibGUgdmlhIHRoZQorICAgIC8v
IGJhc2UgY2xhc3MgKHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1hZ2UgZGF0YSkuCisgICAgaWYgKHNo
b3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNl
ZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKIAogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlv
KCkuaXNSYXRpbygpKQogICAgICAgICByZXR1cm4gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24o
c3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJh
dGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuaAppbmRleCA1Mzk3NTA4
NDRjOTEuLmUyYzFmZDllNjQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuaApAQCAtNDUsNyArNDUsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtYmVkZGVkVGhyb3VnaFNWR0ltYWdlKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0VtYmVkZGVkVGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0RvY3VtZW50KCkgY29u
c3Q7CiAKLSAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsK
KyAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdDsKICAgICBGbG9hdFNp
emUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0ludHJp
bnNpY0FzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479573</attachid>
            <date>2026-05-10 06:38:26 -0700</date>
            <delta_ts>2026-05-10 14:16:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314482-20260510063825.patch</filename>
            <type>text/plain</type>
            <size>50888</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBjMmIyYmM2ZThlZmE2MDFhYWVjMDNlMmE0NjQzMGM5NDZmZmQ4ZGNhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFN1biwgMTAgTWF5IDIwMjYgMDY6Mzc6NDEgLTA3MDAKU3ViamVjdDogW1BBVENIXSBSZW1vdmUg
dmlydHVhbCBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGZyb20gUmVuZGVyUmVwbGFjZWQgYW5kCiBj
b25zb2xpZGF0ZSBsb2dpYyBpbnRvIGEgc3RhdGljIGhlbHBlcgogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDQ4MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CgpFV1MgKFBSIHdpdGggZGVwZW5kZW5jaWVzKS4KCiogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
bEZyYW1lVmlldy5jcHA6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6Zm9yY2VMYXlvdXRQYXJl
bnRWaWV3SWZOZWVkZWQpOgooV2ViQ29yZTo6TG9jYWxGcmFtZVZpZXc6OmVtYmVkZGVkU1ZHUm9v
dCBjb25zdCk6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmlldzo6ZW1iZWRkZWRDb250ZW50Qm94IGNv
bnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3Lmg6Ciog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CihXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbnN0cmFpbkxvZ2ljYWxNaW5NYXhTaXplc0J5QXNwZWN0UmF0aW8gY29uc3QpOgooV2Vi
Q29yZTo6UmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMgY29u
c3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlU2l6aW5nS2V5d29yZExvZ2ljYWxDb250
ZW50SGVpZ2h0VXNpbmdHZW5lcmljIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6YXNwZWN0
UmF0aW9WYWx1ZSBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dp
Y2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21w
dXRlTWluTWF4TG9naWNhbEhlaWdodEZyb21Bc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpS
ZW5kZXJCb3g6OmlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0aW8gY29uc3QpOiBEZWxl
dGVkLgooV2ViQ29yZTo6UmVuZGVyQm94OjpyZXNvbHZlQXNwZWN0UmF0aW8gY29uc3QpOiBEZWxl
dGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaDoKKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgooV2ViQ29yZTo6aXNTVkdSb290
V2l0aEludHJpbnNpY0FzcGVjdFJhdGlvKToKKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpw
cmVmZXJyZWRBc3BlY3RSYXRpb0ZvckZsZXhJdGVtIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnByZWZlcnJl
ZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckltYWdlOjpzaG91bGRJbnZhbGlk
YXRlUHJlZmVycmVkV2lkdGhzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckltYWdlOjplbWJlZGRl
ZFNWR1Jvb3QgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNT
aXplIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlckltYWdlOjplbWJlZGRlZENvbnRl
bnRCb3ggY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CihX
ZWJDb3JlOjppc1ZpZGVvV2l0aERlZmF1bHRPYmplY3RTaXplKToKKFdlYkNvcmU6OmNvbXB1dGVJ
bnRyaW5zaWNTaXplRm9yUmVuZGVyZXIpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1
dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzIGNvbnN0
KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6
CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRy
aW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KToKKFdlYkNvcmU6Omhhc0ludHJpbnNpY1NpemUpOgoo
V2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aCBjb25z
dCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdo
dCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0tleXdv
cmRMb2dpY2FsV2lkdGhzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRl
QXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveCBjb25zdCk6IERlbGV0ZWQuCihXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvIGNvbnN0KTog
RGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSBj
b25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6aW50cmluc2ljUmF0aW8g
Y29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5oOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmVtYmVkZGVkU1ZHUm9vdCBjb25zdCk6CihX
ZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6ZW1iZWRkZWRDb250ZW50Qm94IGNvbnN0KTogRGVsZXRl
ZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKFdlYkNvcmU6
OlJlbmRlcldpZGdldDo6c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocyBjb25zdCk6CihX
ZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OmVtYmVkZGVkU1ZHUm9vdCBjb25zdCk6CihXZWJDb3JlOjpS
ZW5kZXJXaWRnZXQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRl
cldpZGdldDo6ZW1iZWRkZWRDb250ZW50Qm94IGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Omhhc0ludHJp
bnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJ
bnRyaW5zaWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFz
cGVjdFJhdGlvIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5k
ZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNp
Y0FzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNvbXB1
dGVJbnRyaW5zaWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OnBy
ZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290Lmg6CiogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcDoKKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CihXZWJD
b3JlOjpTVkdJbWFnZTo6ZW1iZWRkZWRTVkdSb290IGNvbnN0KToKKFdlYkNvcmU6OlNWR0ltYWdl
OjplbWJlZGRlZENvbnRlbnRCb3ggY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgotLS0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFt
ZVZpZXcuY3BwICAgICAgICB8ICAyOCArLS0tCiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJh
bWVWaWV3LmggICAgICAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwICAgICAgICB8ICA0MiArKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oICAgICAgICAgIHwgICAzICstCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwICAgfCAgIDYgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAgICAgICB8ICA0MCArKystLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmggICAgICAgIHwgICA2ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwICAgfCAxNTggKysrKysrKystLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCAgICAgfCAgMTUgKy0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwICAgICB8ICAyOCArKystCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmggICAgICAgfCAgIDMgKy0KIC4uLi9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgICB8ICAxMyArLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggIHwgICAyICstCiAuLi4vc3ZnL2xlZ2FjeS9M
ZWdhY3lSZW5kZXJTVkdSb290LmNwcCAgICAgICAgfCAgMTMgKy0KIC4uLi9zdmcvbGVnYWN5L0xl
Z2FjeVJlbmRlclNWR1Jvb3QuaCAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcCAgICAgIHwgICA4ICstCiBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaCAgICAgICAgfCAgIDQgKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDE4
MiBpbnNlcnRpb25zKCspLCAxOTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2Fs
RnJhbWVWaWV3LmNwcAppbmRleCBkZWRlNmI1MDQ1YTYuLmM3YWYyNDhmMDkyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAKQEAgLTEyMTMsMjUgKzEyMTMsMTggQEAgdm9p
ZCBMb2NhbEZyYW1lVmlldzo6Zm9yY2VMYXlvdXRQYXJlbnRWaWV3SWZOZWVkZWQoKQogICAgIGlm
ICghb3duZXJSZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ2hlY2tlZFB0ciBjb250
ZW50Qm94ID0gZW1iZWRkZWRDb250ZW50Qm94KCk7Ci0gICAgaWYgKCFjb250ZW50Qm94KQorICAg
IENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpOworICAgIGlmICghc3ZnUm9v
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1dG8qIHN2Z1Jvb3QgPSBkeW5hbWljRG93
bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHUm9vdD4oY29udGVudEJveC5nZXQoKSkpIHsKLSAgICAgICAg
aWYgKHN2Z1Jvb3QtPmV2ZXJIYWRMYXlvdXQoKSAmJiAhc3ZnUm9vdC0+bmVlZHNMYXlvdXQoKSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byogc3ZnUm9vdCA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJTVkdSb290Pihjb250ZW50Qm94LmdldCgpKSkgewotICAgICAg
ICBpZiAoc3ZnUm9vdC0+ZXZlckhhZExheW91dCgpICYmICFzdmdSb290LT5uZWVkc0xheW91dCgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoc3ZnUm9vdC0+ZXZlckhhZExh
eW91dCgpICYmICFzdmdSb290LT5uZWVkc0xheW91dCgpKQorICAgICAgICByZXR1cm47CiAKICAg
ICBMT0coTGF5b3V0LCAiTG9jYWxGcmFtZVZpZXcgJXAgZm9yY2VMYXlvdXRQYXJlbnRWaWV3SWZO
ZWVkZWQgc2NoZWR1bGluZyBsYXlvdXQgb24gcGFyZW50IExvY2FsRnJhbWVWaWV3ICVwIiwgdGhp
cywgJm93bmVyUmVuZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKSk7CiAKICAgICAvLyBJZiB0aGUg
ZW1iZWRkZWQgU1ZHIGRvY3VtZW50IGFwcGVhcnMgdGhlIGZpcnN0IHRpbWUsIHRoZSBvd25lclJl
bmRlcmVyIGhhcyBhbHJlYWR5IGZpbmlzaGVkCiAgICAgLy8gbGF5b3V0IHdpdGhvdXQga25vd2lu
ZyBhYm91dCB0aGUgZXhpc3RlbmNlIG9mIHRoZSBlbWJlZGRlZCBTVkcgZG9jdW1lbnQsIGJlY2F1
c2UgUmVuZGVyUmVwbGFjZWQKLSAgICAvLyBlbWJlZGRlZENvbnRlbnRCb3goKSByZXR1cm5zIG51
bGxwdHIsIGFzIGxvbmcgYXMgdGhlIGVtYmVkZGVkIGRvY3VtZW50IGlzbid0IGxvYWRlZCB5ZXQu
IEJlZm9yZQorICAgIC8vIGVtYmVkZGVkU1ZHUm9vdCgpIHJldHVybnMgbnVsbHB0ciwgYXMgbG9u
ZyBhcyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgaXNuJ3QgbG9hZGVkIHlldC4gQmVmb3JlCiAgICAg
Ly8gYm90aGVyaW5nIHRvIGxheSBvdXQgdGhlIFNWRyBkb2N1bWVudCwgbWFyayB0aGUgb3duZXJS
ZW5kZXJlciBuZWVkaW5nIGxheW91dCBhbmQgYXNrIGl0cwogICAgIC8vIExvY2FsRnJhbWVWaWV3
IGZvciBhIGxheW91dC4gQWZ0ZXIgdGhhdCB0aGUgUmVuZGVyRW1iZWRkZWRPYmplY3QgKG93bmVy
UmVuZGVyZXIpIGNhcnJpZXMgdGhlCiAgICAgLy8gY29ycmVjdCBzaXplLCB3aGljaCBMZWdhY3lS
ZW5kZXJTVkdSb290Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgvSGVpZ2h0IHJlbHkgb24s
IHdoZW4gbGF5aW5nCkBAIC0xNTIwLDIyICsxNTEzLDE5IEBAIGJvb2wgTG9jYWxGcmFtZVZpZXc6
OnNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250ZW50U2l6ZUNoYW5nZSgpCiAgICAgcmV0
dXJuIChsYXlvdXRDb250ZXh0KCkubGF5b3V0UGhhc2UoKSA8IExvY2FsRnJhbWVWaWV3TGF5b3V0
Q29udGV4dDo6TGF5b3V0UGhhc2U6OkluUG9zdExheW91dCkgJiYgKGxheW91dENvbnRleHQoKS5s
YXlvdXRQaGFzZSgpICE9IExvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6TGF5b3V0UGhhc2U6
Ok91dHNpZGVMYXlvdXQpOwogfQogCi1SZW5kZXJCb3gqIExvY2FsRnJhbWVWaWV3OjplbWJlZGRl
ZENvbnRlbnRCb3goKSBjb25zdAorUmVuZGVyUmVwbGFjZWQqIExvY2FsRnJhbWVWaWV3OjplbWJl
ZGRlZFNWR1Jvb3QoKSBjb25zdAogewogICAgIENoZWNrZWRQdHIgcmVuZGVyVmlldyA9IHRoaXMt
PnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZpZXcpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkID0gcmVuZGVyVmlldy0+Zmlyc3RD
aGlsZCgpOworICAgIGF1dG8qIGZpcnN0Q2hpbGQgPSByZW5kZXJWaWV3LT5maXJzdENoaWxkKCk7
CiAKLSAgICAvLyBDdXJlbnRseSBvbmx5IGVtYmVkZGVkIFNWRyBkb2N1bWVudHMgcGFydGljaXBh
dGUgaW4gdGhlIHNpemUtbmVnb3RpYXRpb24gbG9naWMuCisgICAgLy8gQ3VycmVudGx5IG9ubHkg
ZW1iZWRkZWQgU1ZHIGRvY3VtZW50cyBwYXJ0aWNpcGF0ZSBpbiB0aGUgc2l6ZS1uZWdvdGlhdGlv
biBsb2dpYy4KICAgICBpZiAoYXV0byogc3ZnUm9vdCA9IGR5bmFtaWNEb3duY2FzdDxMZWdhY3lS
ZW5kZXJTVkdSb290PihmaXJzdENoaWxkKSkKICAgICAgICAgcmV0dXJuIHN2Z1Jvb3Q7CiAKLSAg
ICBpZiAoYXV0byogc3ZnUm9vdCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJTVkdSb290PihmaXJz
dENoaWxkKSkKLSAgICAgICAgcmV0dXJuIHN2Z1Jvb3Q7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gZHluYW1pY0Rvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KGZpcnN0Q2hpbGQpOwog
fQogCiB2b2lkIExvY2FsRnJhbWVWaWV3OjphZGRFbWJlZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRl
ckVtYmVkZGVkT2JqZWN0JiBlbWJlZGRlZE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFt
ZVZpZXcuaAppbmRleCAxYjFjNzBiY2MyNDkuLjA1OTliYTE2YjM2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYWxGcmFtZVZpZXcuaApAQCAtNjUsNiArNjUsNyBAQCBjbGFzcyBSZW5kZXJFbWJlZGRl
ZE9iamVjdDsKIGNsYXNzIFJlbmRlckxheWVyOwogY2xhc3MgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dDsKIGNsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlclJlcGxhY2VkOwogY2xhc3MgUmVu
ZGVyU2Nyb2xsYmFyUGFydDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgUmVuZGVyVmlldzsK
QEAgLTU3OCw3ICs1NzksNyBAQCBwdWJsaWM6CiAKICAgICBib29sIE5PREVMRVRFIHNob3VsZFN1
c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3QgZmluYWw7CiAKLSAgICBSZW5kZXJCb3gqIGVt
YmVkZGVkQ29udGVudEJveCgpIGNvbnN0OworICAgIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNW
R1Jvb3QoKSBjb25zdDsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRyYWNrc1Jl
cGFpbnRzKGJvb2wpOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9pc1RyYWNraW5nUmVwYWludHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKaW5kZXggM2Q0MjQ2ZWM1M2I2Li40MDIxMTUyYzljZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC03MTEsNyArNzExLDcgQEAgdm9pZCBSZW5kZXJCb3g6
OmNvbnN0cmFpbkxvZ2ljYWxNaW5NYXhTaXplc0J5QXNwZWN0UmF0aW8oTGF5b3V0VW5pdCYgY29t
cHV0ZWRNaW4KICAgICAvLyBhIHNpemUgb2YgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jayBh
bmQgdGhlIOKAnHN0cmV0Y2gtZml04oCdIHNpemluZyBvZiBub24tcmVwbGFjZWQgYmxvY2tzIGlm
IHRoZXkgaGF2ZSBkZWZpbml0ZSB2YWx1ZXMuCiAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9jc3Mtc2l6aW5nLTMvI2RlZmluaXRlCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
VG9Vc2UgPSBzdHlsZSgpOwotICAgIEFTU0VSVChzdHlsZVRvVXNlLmFzcGVjdFJhdGlvKCkuaGFz
UmF0aW8oKSB8fCBpc1JlbmRlclJlcGxhY2VkV2l0aEludHJpbnNpY1JhdGlvKCkpOworICAgIEFT
U0VSVChzdHlsZVRvVXNlLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSB8fCAoaXM8UmVuZGVyUmVw
bGFjZWQ+KCp0aGlzKSAmJiBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oKnRoaXMpLnByZWZlcnJl
ZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKSkpOwogICAgIGF1dG8gbG9naWNhbFNp
emUgPSBkaW1lbnNpb24gPT0gQ29uc3RyYWluRGltZW5zaW9uOjpXaWR0aCA/IHN0eWxlVG9Vc2Uu
bG9naWNhbFdpZHRoKCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKTsKICAgICAvLyBodHRw
czovL3d3dy53My5vcmcvVFIvY3NzLXNpemluZy00LyNhc3BlY3QtcmF0aW8tbWluaW11bQogICAg
IGlmIChtaW5pbXVtU2l6ZVR5cGUgPT0gTWluaW11bVNpemVJc0F1dG9tYXRpY0NvbnRlbnRCYXNl
ZDo6WWVzKSB7CkBAIC0yOTM5LDcgKzI5MzksNiBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Zmls
bEF2YWlsYWJsZU1lYXN1cmUoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIExheQog
ICAgIHJldHVybiBhdmFpbGFibGVMb2dpY2FsV2lkdGggLSBtYXJnaW5TdGFydCAtIG1hcmdpbkVu
ZDsKIH0KIAotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXl3b3JkPiB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhzKEtleXdvcmQsIExheW91dFVuaXQgYm9y
ZGVyQW5kUGFkZGluZywgTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBt
YXhMb2dpY2FsV2lkdGgpIGNvbnN0CiB7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OnNhbWVfYXM8
S2V5d29yZCwgQ1NTOjpLZXl3b3JkOjpNaW5JbnRyaW5zaWM+KQpAQCAtMjk1NCwxNCArMjk1Mywx
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXl3b3JkPiB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlu
dHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhzKAogICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxX
aWR0aCA9IHN0ZDo6bWF4KG1pbkxvZ2ljYWxXaWR0aCwgbWluQ2hpbGRyZW5Mb2dpY2FsV2lkdGgp
OwogICAgICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1heExvZ2ljYWxX
aWR0aCwgbWF4Q2hpbGRyZW5Mb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgfQotICAgICAgICB9
IGVsc2UgaWYgKGlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0aW8oKSAmJiBzdHlsZSgp
LmxvZ2ljYWxIZWlnaHQoKS5pc1NwZWNpZmllZCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoQ2hl
Y2tlZFB0ciByZW5kZXJSZXBsYWNlZCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4o
KnRoaXMpKSB7CiAgICAgICAgICAgICAvLyBGb3IgcmVwbGFjZWQgZWxlbWVudHMgd2l0aCBhbiBp
bnRyaW5zaWMgYXNwZWN0IHJhdGlvIChlLmcuIDxpbWc+KSBhbmQgYQogICAgICAgICAgICAgLy8g
c3BlY2lmaWVkIGJsb2NrIHNpemUsIGNvbXB1dGUgdGhlIHRyYW5zZmVycmVkIG1pbi9tYXgtY29u
dGVudCBpbmxpbmUgc2l6ZQogICAgICAgICAgICAgLy8gdGhyb3VnaCB0aGUgaW50cmluc2ljIHJh
dGlvIHJhdGhlciB0aGFuIHVzaW5nIHRoZSByYXcgbmF0dXJhbCB3aWR0aC4KLSAgICAgICAgICAg
IGF1dG8gaW50cmluc2ljUmF0aW8gPSBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oKnRoaXMpLmNv
bXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOwotICAgICAgICAgICAgYXV0byBjb21wdXRlZFZh
bHVlcyA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbFRvcCgp
KTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudEJsb2NrU2l6ZSA9IHN0ZDo6bWF4KDBfbHUsIGNv
bXB1dGVkVmFsdWVzLmV4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwot
ICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gbWF4TG9naWNhbFdpZHRoID0gTGF5b3V0VW5p
dChjb250ZW50QmxvY2tTaXplICogaW50cmluc2ljUmF0aW8pOworICAgICAgICAgICAgYXV0byBw
cmVmZXJyZWRSYXRpbyA9IHJlbmRlclJlcGxhY2VkLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFz
cGVjdFJhdGlvRG91YmxlKCk7CisgICAgICAgICAgICBpZiAocHJlZmVycmVkUmF0aW8gJiYgc3R5
bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQoKSkgeworICAgICAgICAgICAgICAgIGF1
dG8gY29tcHV0ZWRWYWx1ZXMgPSBjb21wdXRlTG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KCks
IGxvZ2ljYWxUb3AoKSk7CisgICAgICAgICAgICAgICAgYXV0byBjb250ZW50QmxvY2tTaXplID0g
c3RkOjptYXgoMF9sdSwgY29tcHV0ZWRWYWx1ZXMuZXh0ZW50IC0gYm9yZGVyQW5kUGFkZGluZ0xv
Z2ljYWxIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gbWF4TG9n
aWNhbFdpZHRoID0gTGF5b3V0VW5pdChjb250ZW50QmxvY2tTaXplICogcHJlZmVycmVkUmF0aW8p
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgY29tcHV0ZUludHJpbnNpY0tl
eXdvcmRMb2dpY2FsV2lkdGhzKG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxX
aWR0aHMobWluTG9naWNhbFdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpOwogICAgIH0KQEAgLTM2Nzcs
MTUgKzM2NzksMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU2l6ZVR5cGU+IHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlU2l6aW5nS2UKICAgICBhdXRvIG1pbk1heENv
bnRlbnQgPSBbJl0gLT4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB7CiAgICAgICAgIC8vIEZJ
WE1FOiBUaGUgQ1NTIHNpemluZyBzcGVjIGlzIGNvbnNpZGVyaW5nIGNoYW5naW5nIHdoYXQgbWlu
LWNvbnRlbnQvbWF4LWNvbnRlbnQgc2hvdWxkIHJlc29sdmUgdG8uCiAgICAgICAgIC8vIElmIHRo
YXQgaGFwcGVucywgdGhpcyBjb2RlIHdpbGwgaGF2ZSB0byBjaGFuZ2UuCi0gICAgICAgIGlmIChh
dXRvKiByZW5kZXJJbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFnZT4odGhpcykpIHsK
KyAgICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVySW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVu
ZGVySW1hZ2U+KHRoaXMpKSB7CiAgICAgICAgICAgICBhdXRvIGNvbXB1dGVkRml4ZWRMb2dpY2Fs
V2lkdGggPSBzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLnRyeUZpeGVkKCk7CiAgICAgICAgICAgICBp
ZiAoY29tcHV0ZWRGaXhlZExvZ2ljYWxXaWR0aCAmJiAhc3R5bGUoKS5hc3BlY3RSYXRpbygpLmhh
c1JhdGlvKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGludHJpbnNpY1JhdGlvID0gcmVuZGVy
SW1hZ2UtPmludHJpbnNpY1JhdGlvKCk7CisgICAgICAgICAgICAgICAgYXV0byBwcmVmZXJyZWRS
YXRpbyA9IHJlbmRlckltYWdlLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpOwogICAgICAgICAgICAg
ICAgIHJldHVybiByZXNvbHZlSGVpZ2h0Rm9yUmF0aW8oCiAgICAgICAgICAgICAgICAgICAgIGJv
cmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgYm9yZGVy
QW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5p
dCB7IGNvbXB1dGVkRml4ZWRMb2dpY2FsV2lkdGgtPnJlc29sdmVab29tKHN0eWxlKCkudXNlZFpv
b21Gb3JMZW5ndGgoKSkgfSwKLSAgICAgICAgICAgICAgICAgICAgaW50cmluc2ljUmF0aW8udHJh
bnNwb3NlZFNpemUoKS5hc3BlY3RSYXRpbygpLAorICAgICAgICAgICAgICAgICAgICBwcmVmZXJy
ZWRSYXRpby50cmFuc3Bvc2VkU2l6ZSgpLmFzcGVjdFJhdGlvKCksCiAgICAgICAgICAgICAgICAg
ICAgIEJveFNpemluZzo6Q29udGVudEJveAogICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAg
ICB9CkBAIC0zNjk1LDggKzM2OTcsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTaXplVHlwZT4gc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVTaXppbmdLZQogICAgICAg
ICAgICAgICAgIC8vIHRoZSBhc3BlY3QgcmF0aW8uCiAgICAgICAgICAgICAgICAgaWYgKCFpc0Zs
ZXhJdGVtKCkgfHwgZG93bmNhc3Q8UmVuZGVyRmxleGlibGVCb3g+KHBhcmVudCgpKS0+aXNIb3Jp
em9udGFsRmxvdygpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAg
ICAgICAgIGlmIChhdXRvIG92ZXJyaWRpbmdXaWR0aCA9IG92ZXJyaWRpbmdCb3JkZXJCb3hMb2dp
Y2FsV2lkdGgoKTsgb3ZlcnJpZGluZ1dpZHRoICYmICFyZW5kZXJJbWFnZS0+aW50cmluc2ljUmF0
aW8oKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlSGVpZ2h0
Rm9yUmF0aW8oYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBib3JkZXJBbmRQYWRkaW5n
TG9naWNhbEhlaWdodCgpLCBjb250ZW50Qm94TG9naWNhbFdpZHRoKCpvdmVycmlkaW5nV2lkdGgp
LCByZW5kZXJJbWFnZS0+aW50cmluc2ljUmF0aW8oKS50cmFuc3Bvc2VkU2l6ZSgpLmFzcGVjdFJh
dGlvKCksIEJveFNpemluZzo6Q29udGVudEJveCk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8g
b3ZlcnJpZGluZ1dpZHRoID0gb3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxXaWR0aCgpOyBvdmVy
cmlkaW5nV2lkdGggJiYgIXJlbmRlckltYWdlLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVIZWlnaHRGb3JSYXRpbyhi
b3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCksIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVp
Z2h0KCksIGNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoKm92ZXJyaWRpbmdXaWR0aCksIHJlbmRlcklt
YWdlLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLnRyYW5zcG9zZWRTaXplKCkuYXNwZWN0UmF0aW8o
KSwgQm94U2l6aW5nOjpDb250ZW50Qm94KTsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGlmIChhdXRvIGhlaWdodCA9IGhlaWdodEZyb21D
cm9zc0F4aXNPdmVycmlkZUFuZEFzcGVjdFJhdGlvKCkpCkBAIC01Mjc0LDE3ICs1Mjc2LDExIEBA
IExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlv
KCkgY29uc3QKICAgICByZXR1cm4gY29uc3RyYWluTG9naWNhbFdpZHRoQnlNaW5NYXgobG9naWNh
bFdpZHRoLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0aW9uLCAqY29udGFpbmluZ0Jsb2Nr
KCksIEFsbG93SW50cmluc2ljOjpObyk7CiB9CiAKLWJvb2wgUmVuZGVyQm94Ojppc1JlbmRlclJl
cGxhY2VkV2l0aEludHJpbnNpY1JhdGlvKCkgY29uc3QKLXsKLSAgICBpZiAoYXV0byogcmVwbGFj
ZWQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHRoaXMpKQotICAgICAgICByZXR1
cm4gcmVwbGFjZWQtPmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOwotICAgIHJldHVybiBm
YWxzZTsKLX0KIAotc3RkOjpvcHRpb25hbDxkb3VibGU+IFJlbmRlckJveDo6cmVzb2x2ZUFzcGVj
dFJhdGlvKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBSZW5kZXJCb3g6OmFzcGVjdFJh
dGlvVmFsdWUoKSBjb25zdAogewotICAgIGlmIChhdXRvKiByZXBsYWNlZEVsZW1lbnQgPSBkeW5h
bWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHRoaXMpKSAKLSAgICAgICAgcmV0dXJuIHJlcGxh
Y2VkRWxlbWVudC0+Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCk7CisgICAgaWYgKENoZWNr
ZWRQdHIgcmVwbGFjZWRFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclJlcGxhY2VkPih0
aGlzKSkKKyAgICAgICAgcmV0dXJuIHJlcGxhY2VkRWxlbWVudC0+cHJlZmVycmVkQXNwZWN0UmF0
aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCku
aGFzUmF0aW8oKSkKICAgICAgICAgcmV0dXJuIHN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCk7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01Mjk1LDcgKzUyOTEsNyBAQCBzdGQ6OnBh
aXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNh
bFdpZHRoRnJvbUFzcGVjdAogewogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNaW5TaXplID0g
TGF5b3V0VW5pdCgpOwogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNYXhTaXplID0gTGF5b3V0
VW5pdDo6bWF4KCk7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlvID0gcmVz
b2x2ZUFzcGVjdFJhdGlvKCk7CisgICAgYXV0byBhc3BlY3RSYXRpbyA9IGFzcGVjdFJhdGlvVmFs
dWUoKTsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQogICAgICAgICByZXR1cm4geyB0cmFuc2ZlcnJl
ZE1pblNpemUsIHRyYW5zZmVycmVkTWF4U2l6ZSB9OwogCkBAIC01MzE2LDcgKzUzMTIsNyBAQCBz
dGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTWluTWF4
TG9naWNhbEhlaWdodEZyb21Bc3BlYwogewogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNaW5T
aXplID0gTGF5b3V0VW5pdCgpOwogICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNYXhTaXplID0g
TGF5b3V0VW5pdDo6bWF4KCk7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlv
ID0gcmVzb2x2ZUFzcGVjdFJhdGlvKCk7CisgICAgYXV0byBhc3BlY3RSYXRpbyA9IGFzcGVjdFJh
dGlvVmFsdWUoKTsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQogICAgICAgICByZXR1cm4geyB0cmFu
c2ZlcnJlZE1pblNpemUsIHRyYW5zZmVycmVkTWF4U2l6ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgKaW5kZXggMTg3OGM3ZGVmYmVlLi5iZThmODA2Nzk4MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTY4NSw5ICs2ODUsOCBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2b2lkIGluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50SWZOZWVkZWQo
Y29uc3QgSW50U2l6ZSYpOwogCi0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHJlc29sdmVBc3Bl
Y3RSYXRpbygpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBhc3BlY3RSYXRpb1Zh
bHVlKCkgY29uc3Q7CiAgICAgYm9vbCBOT0RFTEVURSBzaG91bGRJZ25vcmVBc3BlY3RSYXRpbygp
IGNvbnN0OwotICAgIGJvb2wgaXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbygpIGNv
bnN0OwogICAgIGJvb2wgc2hvdWxkQ29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygp
IGNvbnN0OwogICAgIGJvb2wgaXNSZXNvbHZlYWJsZVN0cmV0Y2hTaXplKGNvbnN0IGF1dG8mIHNp
emUpIGNvbnN0IHsgcmV0dXJuIHNpemUuaXNTdHJldGNoKCkgJiYgY29udGFpbmluZ0Jsb2NrSGFz
RGVmaW5pdGVCbG9ja1NpemUoKTsgfQogICAgIGJvb2wgaXNVbnJlc29sdmVhYmxlU3RyZXRjaFNp
emUoY29uc3QgYXV0byYgc2l6ZSkgY29uc3QgeyByZXR1cm4gc2l6ZS5pc1N0cmV0Y2goKSAmJiAh
Y29udGFpbmluZ0Jsb2NrSGFzRGVmaW5pdGVCbG9ja1NpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNzRiM2UwYjhkMmNhLi4x
ZmVkOTZkMzg2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcApAQCAtODc5LDcgKzg3OSw3IEBAIHN0YXRpYyBib29sIGlzU1ZHUm9vdFdpdGhJ
bnRyaW5zaWNBc3BlY3RSYXRpbyhjb25zdCBSZW5kZXJCb3gmIGZsZXhJdGVtKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgLy8gSXQncyBjb21tb24gZm9yIHNvbWUgcmVwbGFjZWQgZWxlbWVu
dHMsIHN1Y2ggYXMgU1ZHcywgdG8gaGF2ZSBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvcyBidXQgbm8g
aW50cmluc2ljIHNpemVzLgogICAgIC8vIFRoYXQncyB3aHkgaXQgaXNuJ3QgZW5vdWdoIGp1c3Qg
dG8gY2hlY2sgZm9yIGludHJpbnNpYyBzaXplcyBpbiB0aG9zZSBjYXNlcy4KLSAgICByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKS5jb21wdXRlSW50cmluc2ljQXNwZWN0
UmF0aW8oKSA+IDA7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRl
bSkucHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpID4gMDsKIH07CiAK
IHN0YXRpYyBib29sIGZsZXhJdGVtSGFzQXNwZWN0UmF0aW8oY29uc3QgUmVuZGVyQm94JiBmbGV4
SXRlbSkKQEAgLTEyNjIsMTEgKzEyNjIsMTEgQEAgZG91YmxlIFJlbmRlckZsZXhpYmxlQm94Ojpw
cmVmZXJyZWRBc3BlY3RSYXRpb0ZvckZsZXhJdGVtKGNvbnN0IFJlbmRlckJveCYgZmxleEkKICAg
ICBhdXRvIGZsZXhJdGVtQXNwZWN0UmF0aW8gPSBbJl0gewogICAgICAgICBhdXRvIGZsZXhJdGVt
SW50cmluc2ljU2l6ZSA9IExheW91dFNpemUgeyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsV2lk
dGgoKSwgZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CiAgICAgICAgIGlmIChm
bGV4SXRlbS5pc1JlbmRlck9yTGVnYWN5UmVuZGVyU1ZHUm9vdCgpKQotICAgICAgICAgICAgcmV0
dXJuIGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkuY29tcHV0ZUludHJpbnNpY0Fz
cGVjdFJhdGlvKCk7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+
KGZsZXhJdGVtKS5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAg
ICAgICAgIGlmIChmbGV4SXRlbS5zdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRpbygpIHx8IChm
bGV4SXRlbS5zdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNBdXRvQW5kUmF0aW8oKSAmJiBmbGV4SXRl
bUludHJpbnNpY1NpemUuaXNFbXB0eSgpKSkKICAgICAgICAgICAgIHJldHVybiBmbGV4SXRlbS5z
dHlsZSgpLmxvZ2ljYWxBc3BlY3RSYXRpbygpOwogICAgICAgICBpZiAoYXV0byogcmVwbGFjZWRF
bGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkpCi0gICAg
ICAgICAgICByZXR1cm4gcmVwbGFjZWRFbGVtZW50LT5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0
aW8oKTsKKyAgICAgICAgICAgIHJldHVybiByZXBsYWNlZEVsZW1lbnQtPnByZWZlcnJlZEFzcGVj
dFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKIAogICAgICAgICBBU1NFUlQoZmxleEl0ZW0u
aW50cmluc2ljTG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLmludHJp
bnNpY0xvZ2ljYWxXaWR0aCgpLnRvRG91YmxlKCkgLyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2Fs
SGVpZ2h0KCkudG9Eb3VibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCmluZGV4IDliMjA5OTViYjNmYi4uZTE1MGEyMGQ3ZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTkzOCwyNiArOTM4LDEzIEBAIHZvaWQgUmVuZGVy
SW1hZ2U6OmxheW91dCgpCiAgICAgfQogfQogCi1GbG9hdFNpemUgUmVuZGVySW1hZ2U6OmNvbXB1
dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIXNob3VsZEFwcGx5U2l6ZUNv
bnRhaW5tZW50KCkpOwotICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IFJlbmRlclJlcGxhY2VkOjpj
b21wdXRlSW50cmluc2ljU2l6ZSgpOwotCi0gICAgLy8gT3VyIGludHJpbnNpY1NpemUgaXMgZW1w
dHkgaWYgd2UncmUgcmVuZGVyaW5nIGdlbmVyYXRlZCBpbWFnZXMgd2l0aCByZWxhdGl2ZSB3aWR0
aC9oZWlnaHQuIEZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGludHJpbnNpYyBzaXplIHRvIHVzZS4KLSAg
ICBpZiAoaW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgJiYgKGltYWdlUmVzb3VyY2UoKS5pbWFnZUhh
c1JlbGF0aXZlV2lkdGgoKSB8fCBpbWFnZVJlc291cmNlKCkuaW1hZ2VIYXNSZWxhdGl2ZUhlaWdo
dCgpKSkgewotICAgICAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdCbG9jayA9IGlzT3V0T2ZG
bG93UG9zaXRpb25lZCgpID8gY29udGFpbmVyKCkgOiB0aGlzLT5jb250YWluaW5nQmxvY2soKTsK
LSAgICAgICAgaWYgKGF1dG8qIGJveCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KCpjb250
YWluaW5nQmxvY2spKSB7Ci0gICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldFdpZHRoKGJveC0+
Y29udGVudEJveExvZ2ljYWxXaWR0aCgpKTsKLSAgICAgICAgICAgIGludHJpbnNpY1NpemUuc2V0
SGVpZ2h0KGJveC0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChBdmFpbGFibGVMb2dpY2FsSGVpZ2h0
VHlwZTo6SW5jbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHJldHVybiBpbnRyaW5zaWNTaXplOwotfQotCiBGbG9hdFNpemUgUmVuZGVySW1hZ2U6OnBy
ZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIXNob3VsZEFwcGx5U2l6
ZUNvbnRhaW5tZW50KCkpOworICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRy
aW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQsIGJ1dCB0aGUKKyAgICAvLyBhc3BlY3QgcmF0
aW8gZnJvbSB0aGUgQ1NTIGFzcGVjdC1yYXRpbyBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFpbGFibGUg
dmlhIHRoZQorICAgIC8vIGJhc2UgY2xhc3MgKHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1hZ2UgZGF0
YSkuCisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisgICAgICAgIHJldHVy
biBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKIAogICAgIC8vIERvbid0
IGNvbXB1dGUgYW4gaW50cmluc2ljIHJhdGlvIHRvIHByZXNlcnZlIGhpc3RvcmljYWwgV2ViS2l0
IGJlaGF2aW9yIGlmIHdlJ3JlIHBhaW50aW5nIGFsdCB0ZXh0IGFuZC9vciBhIGJyb2tlbiBpbWFn
ZS4KICAgICBpZiAoc2hvdWxkRGlzcGxheUJyb2tlbkltYWdlSWNvbigpKSB7CkBAIC05NjYsNiAr
OTUzLDE3IEBAIEZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBj
b25zdAogICAgICAgICByZXR1cm4geyAxLjAsIDEuMCB9OwogICAgIH0KIAorICAgIGlmIChDaGVj
a2VkUHRyIHN2Z1Jvb3QgPSBlbWJlZGRlZFNWR1Jvb3QoKSkgeworICAgICAgICBhdXRvIHJhdGlv
ID0gc3ZnUm9vdC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgaWYgKCFpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpICYmICFyYXRpby5pc0VtcHR5KCkpCisgICAgICAgICAgICByYXRp
byA9IHJhdGlvLnRyYW5zcG9zZWRTaXplKCk7CisKKyAgICAgICAgaWYgKHN0eWxlKCkuYXNwZWN0
UmF0aW8oKS5pc1JhdGlvKCkgfHwgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRp
bygpICYmIHJhdGlvLmlzRW1wdHkoKSkpCisgICAgICAgICAgICByYXRpbyA9IEZsb2F0U2l6ZTo6
bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwg
c3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CisKKyAgICAgICAgcmV0
dXJuIHJhdGlvOworICAgIH0KKwogICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVk
QXNwZWN0UmF0aW8oKTsKIH0KIApAQCAtOTczLDE0ICs5NzEsMTQgQEAgYm9vbCBSZW5kZXJJbWFn
ZTo6c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpIGNvbnN0CiB7CiAgICAgaWYgKFJl
bmRlclJlcGxhY2VkOjpzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIHJldHVybiBlbWJlZGRlZENvbnRlbnRCb3goKTsKKyAgICByZXR1
cm4gZW1iZWRkZWRTVkdSb290KCk7CiB9CiAKLVJlbmRlckJveCogUmVuZGVySW1hZ2U6OmVtYmVk
ZGVkQ29udGVudEJveCgpIGNvbnN0CitSZW5kZXJSZXBsYWNlZCogUmVuZGVySW1hZ2U6OmVtYmVk
ZGVkU1ZHUm9vdCgpIGNvbnN0CiB7CiAgICAgaWYgKFJlZlB0ciBjYWNoZWRJbWFnZSA9IHRoaXMt
PmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgaWYgKFJlZlB0ciBpbWFnZSA9IGR5bmFtaWNEb3du
Y2FzdDxTVkdJbWFnZT4oY2FjaGVkSW1hZ2UtPmltYWdlKCkpKQotICAgICAgICAgICAgcmV0dXJu
IGltYWdlLT5lbWJlZGRlZENvbnRlbnRCb3goKTsKKyAgICAgICAgICAgIHJldHVybiBpbWFnZS0+
ZW1iZWRkZWRTVkdSb290KCk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCAyY2U3NTQ5NTJhZmUuLjgzZDVlZDQ3
NWNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTg0LDE0ICs4
NCwxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc011bHRpUmVwcmVzZW50YXRpb25IRUlDKCkgY29u
c3Q7CiAjZW5kaWYKIAorICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0
IGZpbmFsOworCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVySW1hZ2UoVHlwZSwgRWxlbWVudCYsIFJl
bmRlclN0eWxlJiYsIE9wdGlvblNldDxSZXBsYWNlZEZsYWc+LCBTdHlsZTo6SW1hZ2UqID0gbnVs
bHB0ciwgY29uc3QgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvID0gMS4wZik7CiAgICAgdm9p
ZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0
ZVByZWZlcnJlZFdpZHRocygpIGNvbnN0IGZpbmFsOwotICAgIFJlbmRlckJveCogZW1iZWRkZWRD
b250ZW50Qm94KCkgY29uc3QgZmluYWw7Ci0gICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNT
aXplKCkgY29uc3QgZmluYWw7Ci0gICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkg
Y29uc3QgZmluYWw7CisgICAgUmVuZGVyUmVwbGFjZWQqIGVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0
IGZpbmFsOwogICAgIGJvb2wgZm9yZWdyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0
IExheW91dFJlY3QmIGxvY2FsUmVjdCwgdW5zaWduZWQgbWF4RGVwdGhUb1Rlc3QpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGU6OkRpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBmMDNhMTNmN2ViMTAuLjU1ZDlmMDVlMDg0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0z
OCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JCb3guaCIKICNpbmNsdWRlICJJ
bmxpbmVJdGVyYXRvckxpbmVCb3hJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVwYWludGVy
LmgiCisjaW5jbHVkZSAiTGVnYWN5UmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIkxpbmVTZWxl
Y3Rpb24uaCIKICNpbmNsdWRlICJMb2NhbEZyYW1lLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25lZExh
eW91dENvbnN0cmFpbnRzLmgiCkBAIC01Niw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlK0dldHRlcnNJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3R5bGUrU2V0dGVyc0lubGluZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJT
VkdSb290LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRl
by5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTQ2OCw2NiArNDcwLDcxIEBAIHN0YXRp
YyBib29sIGlzVmlkZW9XaXRoRGVmYXVsdE9iamVjdFNpemUoY29uc3QgUmVuZGVyUmVwbGFjZWQq
IG1heWJlVmlkZW8pCiAgICAgVU5VU0VEX1BBUkFNKG1heWJlVmlkZW8pOwogI2VuZGlmCiAgICAg
cmV0dXJuIGZhbHNlOwotfSAKK30KIAotdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVj
dFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goUmVuZGVyQm94KiBjb250ZW50UmVuZGVyZXIs
IEZsb2F0U2l6ZSYgY29uc3RyYWluZWRTaXplLCBGbG9hdFNpemUmIHByZWZlcnJlZEFzcGVjdFJh
dGlvKSBjb25zdAorc3RhdGljIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZUZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlclJlcGxhY2VkJiByZXBsYWNlZFJlbmRlcmVyKQogewotICAgIEZsb2F0
U2l6ZSBpbnRyaW5zaWNTaXplOwotICAgIGlmIChzaG91bGRBcHBseVNpemVPcklubGluZVNpemVD
b250YWlubWVudCgpKSB7Ci0gICAgICAgIGludHJpbnNpY1NpemUgPSBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKLSAgICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8gPSBS
ZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKLSAgICB9IGVsc2UgaWYgKGNv
bnRlbnRSZW5kZXJlcikgewotICAgICAgICBib29sIGNvbnRlbnRJc1JlbmRlclJlcGxhY2VkID0g
ZmFsc2U7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJSZXBsYWNlZCA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJSZXBsYWNlZD4oY29udGVudFJlbmRlcmVyKSkgewotICAgICAgICAgICAgaW50cmlu
c2ljU2l6ZSA9IHJlbmRlclJlcGxhY2VkLT5jb21wdXRlSW50cmluc2ljU2l6ZSgpOwotICAgICAg
ICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8gPSByZW5kZXJSZXBsYWNlZC0+cHJlZmVycmVkQXNw
ZWN0UmF0aW8oKTsKLSAgICAgICAgICAgIGNvbnRlbnRJc1JlbmRlclJlcGxhY2VkID0gdHJ1ZTsK
KyAgICBBU1NFUlQoIXJlcGxhY2VkUmVuZGVyZXIuc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQo
KSk7CisKKyAgICBpZiAoQ2hlY2tlZFB0ciBzdmdSb290ID0gcmVwbGFjZWRSZW5kZXJlci5lbWJl
ZGRlZFNWR1Jvb3QoKSkgeworICAgICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBbJl0geworICAg
ICAgICAgICAgaWYgKENoZWNrZWRQdHIgcm9vdCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJTVkdS
b290Pigqc3ZnUm9vdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3QtPmNvbXB1dGVJbnRy
aW5zaWNTaXplKCk7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8TGVnYWN5UmVuZGVyU1ZH
Um9vdD4oKnN2Z1Jvb3QpLmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7CisgICAgICAgIH0oKTsKKwor
ICAgICAgICBpbnRyaW5zaWNTaXplLnNjYWxlKHJlcGxhY2VkUmVuZGVyZXIuc3R5bGUoKS51c2Vk
Wm9vbSgpKTsKKyAgICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVySW1hZ2UgPSBkeW5hbWljRG93
bmNhc3Q8UmVuZGVySW1hZ2U+KHJlcGxhY2VkUmVuZGVyZXIpKQorICAgICAgICAgICAgaW50cmlu
c2ljU2l6ZS5zY2FsZShyZW5kZXJJbWFnZS0+aW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkpOworICAg
ICAgICBpZiAoIXJlcGxhY2VkUmVuZGVyZXIuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAg
ICAgICAgICAgIGludHJpbnNpY1NpemUgPSBpbnRyaW5zaWNTaXplLnRyYW5zcG9zZWRTaXplKCk7
CisgICAgICAgIHJldHVybiBpbnRyaW5zaWNTaXplOworICAgIH0KKworICAgIGlmIChDaGVja2Vk
UHRyIHJlbmRlckltYWdlID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckltYWdlPihyZXBsYWNlZFJl
bmRlcmVyKSkgeworICAgICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUgeyByZW5k
ZXJJbWFnZS0+aW50cmluc2ljTG9naWNhbFdpZHRoKCksIHJlbmRlckltYWdlLT5pbnRyaW5zaWNM
b2dpY2FsSGVpZ2h0KCkgfTsKKyAgICAgICAgLy8gT3VyIGludHJpbnNpY1NpemUgaXMgZW1wdHkg
aWYgd2UncmUgcmVuZGVyaW5nIGdlbmVyYXRlZCBpbWFnZXMgd2l0aCByZWxhdGl2ZSB3aWR0aC9o
ZWlnaHQuIEZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGludHJpbnNpYyBzaXplIHRvIHVzZS4KKyAgICAg
ICAgaWYgKGludHJpbnNpY1NpemUuaXNFbXB0eSgpICYmIChyZW5kZXJJbWFnZS0+aW1hZ2VSZXNv
dXJjZSgpLmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIHx8IHJlbmRlckltYWdlLT5pbWFnZVJlc291
cmNlKCkuaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpKSkgeworICAgICAgICAgICAgQ2hlY2tlZFB0
ciBjb250YWluaW5nQmxvY2sgPSByZW5kZXJJbWFnZS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkg
PyByZW5kZXJJbWFnZS0+Y29udGFpbmVyKCkgOiByZW5kZXJJbWFnZS0+Y29udGFpbmluZ0Jsb2Nr
KCk7CisgICAgICAgICAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJCb3ggPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyQm94Pihjb250YWluaW5nQmxvY2spKSB7CisgICAgICAgICAgICAgICAgaW50cmlu
c2ljU2l6ZS5zZXRXaWR0aChyZW5kZXJCb3gtPmNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoKSk7Cisg
ICAgICAgICAgICAgICAgaW50cmluc2ljU2l6ZS5zZXRIZWlnaHQocmVuZGVyQm94LT5hdmFpbGFi
bGVMb2dpY2FsSGVpZ2h0KEF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRUeXBlOjpJbmNsdWRlTWFyZ2lu
Qm9yZGVyUGFkZGluZykpOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChz
dHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRpbygpIHx8IChzdHlsZSgpLmFzcGVjdFJhdGlvKCku
aXNBdXRvQW5kUmF0aW8oKSAmJiBwcmVmZXJyZWRBc3BlY3RSYXRpby5pc0VtcHR5KCkpKQotICAg
ICAgICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8gPSBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lv
bihzdHlsZSgpLmFzcGVjdFJhdGlvKCkud2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRp
bygpLmhlaWdodCgpLnZhbHVlKTsKLQotICAgICAgICAvLyBIYW5kbGUgem9vbSAmIHZlcnRpY2Fs
IHdyaXRpbmcgbW9kZXMgaGVyZSwgYXMgdGhlIGVtYmVkZGVkIGRvY3VtZW50IGRvZXNuJ3Qga25v
dyBhYm91dCB0aGVtLgotICAgICAgICBpbnRyaW5zaWNTaXplLnNjYWxlKHN0eWxlKCkudXNlZFpv
b20oKSk7Ci0KLSAgICAgICAgaWYgKGF1dG8qIGltYWdlID0gZHluYW1pY0Rvd25jYXN0PFJlbmRl
ckltYWdlPigqdGhpcykpCi0gICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNjYWxlKGltYWdlLT5p
bWFnZURldmljZVBpeGVsUmF0aW8oKSk7Ci0KLSAgICAgICAgLy8gVXBkYXRlIG91ciBpbnRyaW5z
aWMgc2l6ZSB0byBtYXRjaCB3aGF0IHRoZSBjb250ZW50IHJlbmRlcmVyIGhhcyBjb21wdXRlZCwg
c28gdGhhdCB3aGVuIHdlCi0gICAgICAgIC8vIGNvbnN0cmFpbiB0aGUgc2l6ZSBiZWxvdywgdGhl
IGNvcnJlY3QgaW50cmluc2ljIHNpemUgd2lsbCBiZSBvYnRhaW5lZCBmb3IgY29tcGFyaXNvbiBh
Z2FpbnN0Ci0gICAgICAgIC8vIG1pbiBhbmQgbWF4IHdpZHRocy4KLSAgICAgICAgaWYgKGNvbnRl
bnRJc1JlbmRlclJlcGxhY2VkICYmIGlzUmVuZGVyV2lkZ2V0KCkpIHsKLSAgICAgICAgICAgIC8v
IEZvciBSZW5kZXJXaWRnZXQgY29udGVudCAoZS5nLiA8b2JqZWN0PiBlbWJlZGRpbmcgYW4gU1ZH
IGRvY3VtZW50KSwgYWx3YXlzIHVwZGF0ZQotICAgICAgICAgICAgLy8gbV9pbnRyaW5zaWNTaXpl
IHRvIHJlZmxlY3QgY3VycmVudCBpbnRyaW5zaWMgZGltZW5zaW9ucywgYXBwbHlpbmcgQ1NTIGRl
ZmF1bHQgZmFsbGJhY2sKLSAgICAgICAgICAgIC8vIHZhbHVlcyAoMzAweDE1MCkgZm9yIGRpbWVu
c2lvbnMgd2l0aCBubyBpbnRyaW5zaWMgdmFsdWUgKGUuZy4gcGVyY2VudGFnZS1zaXplZCBvcgot
ICAgICAgICAgICAgLy8gcmVtb3ZlZCBhdHRyaWJ1dGVzKS4gVGhpcyBwcmV2ZW50cyBzdGFsZSBj
YWNoZWQgc2l6ZXMgd2hlbiBhdHRyaWJ1dGVzIGxpa2Ugd2lkdGgvaGVpZ2h0Ci0gICAgICAgICAg
ICAvLyBhcmUgcmVtb3ZlZC4gTm90ZTogdGhpcyBkb2VzIG5vdCBhcHBseSB0byBSZW5kZXJJbWFn
ZSAoPGltZyBzcmM9InN2ZyI+KSwgd2hpY2ggbWFuYWdlcwotICAgICAgICAgICAgLy8gaXRzIG93
biBpbnRyaW5zaWMgc2l6ZSB2aWEgc2V0SW50cmluc2ljU2l6ZSgpIGR1cmluZyBpbWFnZSBsb2Fk
LgotICAgICAgICAgICAgYXV0byBzaXplVG9DYWNoZSA9IGludHJpbnNpY1NpemU7CisgICAgICAg
IHJldHVybiBpbnRyaW5zaWNTaXplOworICAgIH0KKworICAgIGlmIChDaGVja2VkUHRyIHJlbmRl
cldpZGdldCA9ZHluYW1pY0Rvd25jYXN0PFJlbmRlcldpZGdldD4ocmVwbGFjZWRSZW5kZXJlcikp
CisgICAgICAgIHJldHVybiB7IHJlcGxhY2VkUmVuZGVyZXIuaW50cmluc2ljTG9naWNhbFdpZHRo
KCksIHJlcGxhY2VkUmVuZGVyZXIuaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CisKKyAgICBp
ZiAoQ2hlY2tlZFB0ciBzdmdSb290ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KHJl
cGxhY2VkUmVuZGVyZXIpKQorICAgICAgICByZXR1cm4gc3ZnUm9vdC0+Y29tcHV0ZUludHJpbnNp
Y1NpemUoKTsKKworICAgIGlmIChDaGVja2VkUHRyIGxlZ2FjeVNWR1Jvb3QgPSBkeW5hbWljRG93
bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHUm9vdD4ocmVwbGFjZWRSZW5kZXJlcikpCisgICAgICAgIHJl
dHVybiBsZWdhY3lTVkdSb290LT5jb21wdXRlSW50cmluc2ljU2l6ZSgpOworCisgICAgcmV0dXJu
IHsgcmVwbGFjZWRSZW5kZXJlci5pbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgcmVwbGFjZWRSZW5k
ZXJlci5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKK30KKwordm9pZCBSZW5kZXJSZXBsYWNl
ZDo6Y29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6
ZXMoRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBj
b25zdAoreworICAgIGlmIChzaG91bGRBcHBseVNpemVPcklubGluZVNpemVDb250YWlubWVudCgp
KSB7CisgICAgICAgIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUgeyBpbnRyaW5zaWNMb2dpY2Fs
V2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CisgICAgICAgIGludHJpbnNpY1Jh
dGlvID0gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgaW50cmluc2ljU2l6ZSA9IGNvbXB1dGVJbnRyaW5zaWNTaXplRm9yUmVuZGVy
ZXIoKnRoaXMpOworICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlv
KCk7CisKKyAgICAgICAgYXV0byBzaXplVG9DYWNoZSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBpbnRyaW5zaWNTaXplIDogaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworICAg
ICAgICBpZiAoZW1iZWRkZWRTVkdSb290KCkgJiYgaXNSZW5kZXJXaWRnZXQoKSkgewogICAgICAg
ICAgICAgaWYgKCFzaXplVG9DYWNoZS53aWR0aCgpKQogICAgICAgICAgICAgICAgIHNpemVUb0Nh
Y2hlLnNldFdpZHRoKGNEZWZhdWx0V2lkdGgpOwogICAgICAgICAgICAgaWYgKCFzaXplVG9DYWNo
ZS5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICBzaXplVG9DYWNoZS5zZXRIZWlnaHQoY0RlZmF1
bHRIZWlnaHQpOwogICAgICAgICAgICAgbV9pbnRyaW5zaWNTaXplID0gTGF5b3V0U2l6ZShzaXpl
VG9DYWNoZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXByZWZlcnJlZEFzcGVjdFJhdGlvLmlzRW1w
dHkoKSAmJiAhaW50cmluc2ljU2l6ZS5pc1plcm8oKSkKLSAgICAgICAgICAgIG1faW50cmluc2lj
U2l6ZSA9IExheW91dFNpemUoaW50cmluc2ljU2l6ZSk7Ci0KLSAgICAgICAgaWYgKCFpc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIXByZWZlcnJlZEFzcGVjdFJh
dGlvLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBwcmVmZXJyZWRBc3BlY3RSYXRpbyA9IHBy
ZWZlcnJlZEFzcGVjdFJhdGlvLnRyYW5zcG9zZWRTaXplKCk7Ci0gICAgICAgICAgICBpbnRyaW5z
aWNTaXplID0gaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwotICAgICAgICB9Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgaW50cmluc2ljU2l6ZSA9IGNvbXB1dGVJbnRyaW5zaWNTaXplKCk7
Ci0gICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlvID0gdGhpcy0+cHJlZmVycmVkQXNwZWN0UmF0
aW8oKTsKLSAgICAgICAgaWYgKCFwcmVmZXJyZWRBc3BlY3RSYXRpby5pc0VtcHR5KCkgJiYgIWlu
dHJpbnNpY1NpemUuaXNaZXJvKCkpCi0gICAgICAgICAgICBtX2ludHJpbnNpY1NpemUgPSBMYXlv
dXRTaXplKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBpbnRyaW5zaWNTaXplIDogaW50cmlu
c2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpKTsKKyAgICAgICAgfSBlbHNlIGlmICghaW50cmluc2lj
UmF0aW8uaXNFbXB0eSgpICYmICFpbnRyaW5zaWNTaXplLmlzWmVybygpKQorICAgICAgICAgICAg
bV9pbnRyaW5zaWNTaXplID0gTGF5b3V0U2l6ZShzaXplVG9DYWNoZSk7CiAgICAgfQotICAgIGNv
bnN0cmFpbmVkU2l6ZSA9IGludHJpbnNpY1NpemU7Ci19Ci0KLXZvaWQgUmVuZGVyUmVwbGFjZWQ6
OmNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVz
KFJlbmRlckJveCogY29udGVudFJlbmRlcmVyLCBGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIEZs
b2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0Ci17Ci0gICAgY29tcHV0ZUFzcGVjdFJhdGlv
SW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goY29udGVudFJlbmRlcmVyLCBpbnRyaW5zaWNTaXplLCBp
bnRyaW5zaWNSYXRpbyk7CiAKICAgICAvLyBOb3cgY29uc3RyYWluIHRoZSBpbnRyaW5zaWMgc2l6
ZSBhbG9uZyBlYWNoIGF4aXMgYWNjb3JkaW5nIHRvIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGgv
aGVpZ2h0cyBhbG9uZyB0aGUKICAgICAvLyBvcHBvc2l0ZSBheGlzLiBTbyBmb3IgZXhhbXBsZSBh
IG1heGltdW0gd2lkdGggdGhhdCBzaHJpbmtzIG91ciB3aWR0aCB3aWxsIHJlc3VsdCBpbiB0aGUg
aGVpZ2h0IHdlIGNvbXB1dGUgaGVyZQpAQCAtNTk3LDI1ICs2MDQsOCBAQCBMYXlvdXRSZWN0IFJl
bmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFNpemUmIGludHJp
bnNpY1NpemUpCiAgICAgcmV0dXJuIGZpbmFsUmVjdDsKIH0KIAotZG91YmxlIFJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdAotewotICAgIEZsb2F0U2l6
ZSBpbnRyaW5zaWNSYXRpbzsKLSAgICBGbG9hdFNpemUgaW50cmluc2ljU2l6ZTsKLSAgICBjb21w
dXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChlbWJlZGRlZENvbnRlbnRCb3go
KSwgaW50cmluc2ljU2l6ZSwgaW50cmluc2ljUmF0aW8pOwotICAgIHJldHVybiBpbnRyaW5zaWNS
YXRpby5hc3BlY3RSYXRpb0RvdWJsZSgpOwotfQotCi1GbG9hdFNpemUgUmVuZGVyUmVwbGFjZWQ6
OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKLXsKLSAgICAvLyBJZiB0aGVyZSdzIGFuIGVt
YmVkZGVkQ29udGVudEJveCgpIG9mIGEgcmVtb3RlLCByZWZlcmVuY2VkIGRvY3VtZW50IGF2YWls
YWJsZSwgdGhpcyBjb2RlLXBhdGggc2hvdWxkIG5ldmVyIGJlIHVzZWQuCi0gICAgQVNTRVJUKCFl
bWJlZGRlZENvbnRlbnRCb3goKSB8fCBzaG91bGRBcHBseVNpemVPcklubGluZVNpemVDb250YWlu
bWVudCgpKTsKLSAgICByZXR1cm4geyBpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50cmluc2lj
TG9naWNhbEhlaWdodCgpIH07Ci19Ci0KIEZsb2F0U2l6ZSBSZW5kZXJSZXBsYWNlZDo6cHJlZmVy
cmVkQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIC8vIElmIHRoZXJlJ3MgYW4gZW1iZWRkZWRD
b250ZW50Qm94KCkgb2YgYSByZW1vdGUsIHJlZmVyZW5jZWQgZG9jdW1lbnQgYXZhaWxhYmxlLCB0
aGlzIGNvZGUtcGF0aCBzaG91bGQgbmV2ZXIgYmUgdXNlZC4KLSAgICBBU1NFUlQoIWVtYmVkZGVk
Q29udGVudEJveCgpIHx8IHNob3VsZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCkp
OwogICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZShpbnRyaW5zaWNMb2dpY2FsV2lk
dGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpKTsKICAgICBGbG9hdFNpemUgcHJlZmVycmVk
QXNwZWN0UmF0aW87CiAKQEAgLTY3NSw3ICs2NjUsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpj
b21wdXRlQXNwZWN0UmF0aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5p
dAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0g
ICAgYXV0byBjb21wdXRlZEFzcGVjdFJhdGlvID0gY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlv
KCk7CisgICAgYXV0byBjb21wdXRlZEFzcGVjdFJhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW8o
KS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgIGF1dG8gY29tcHV0ZWRJbnRyaW5zaWNMb2dpY2Fs
V2lkdGggPSBtaW5Mb2dpY2FsV2lkdGg7CiAKICAgICBpZiAoYXV0byBmaXhlZExvZ2ljYWxIZWln
aHQgPSBzdHlsZS5sb2dpY2FsSGVpZ2h0KCkudHJ5Rml4ZWQoKSkKQEAgLTY5OCwxMyArNjg4LDkg
QEAgc3RhdGljIGlubGluZSBMYXlvdXRVbml0IE5PREVMRVRFIHJlc29sdmVXaWR0aEZvclJhdGlv
KExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGkKICAgICByZXR1cm4gTGF5b3V0VW5pdChsb2dpY2Fs
SGVpZ2h0ICogYXNwZWN0UmF0aW8pOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgTk9ERUxFVEUg
aGFzSW50cmluc2ljU2l6ZShSZW5kZXJCb3gqY29udGVudFJlbmRlcmVyLCBib29sIGhhc0ludHJp
bnNpY1dpZHRoLCBib29sIGhhc0ludHJpbnNpY0hlaWdodCApCitzdGF0aWMgaW5saW5lIGJvb2wg
Tk9ERUxFVEUgaGFzSW50cmluc2ljU2l6ZShjb25zdCBSZW5kZXJSZXBsYWNlZCogc3ZnUm9vdCwg
Ym9vbCBoYXNJbnRyaW5zaWNXaWR0aCwgYm9vbCBoYXNJbnRyaW5zaWNIZWlnaHQpCiB7Ci0gICAg
aWYgKGhhc0ludHJpbnNpY1dpZHRoICYmIGhhc0ludHJpbnNpY0hlaWdodCkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKGhhc0ludHJpbnNpY1dpZHRoIHx8IGhhc0ludHJpbnNpY0hlaWdo
dCkKLSAgICAgICAgcmV0dXJuIGNvbnRlbnRSZW5kZXJlciAmJiBjb250ZW50UmVuZGVyZXItPmlz
UmVuZGVyT3JMZWdhY3lSZW5kZXJTVkdSb290KCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiAoaGFzSW50cmluc2ljV2lkdGggJiYgaGFzSW50cmluc2ljSGVpZ2h0KSB8fCAoKGhhc0lu
dHJpbnNpY1dpZHRoIHx8IGhhc0ludHJpbnNpY0hlaWdodCkgJiYgc3ZnUm9vdCk7CiB9CiAKIExh
eW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91
bGRDb21wdXRlUHJlZmVycmVkIHNob3VsZENvbXB1dGVQcmVmZXJyZWQpIGNvbnN0CkBAIC03MTUs
MTIgKzcwMSwxMCBAQCBMYXlvdXRVbml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRM
b2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCBzaAogICAgIGlmIChzdHlsZS5sb2dp
Y2FsV2lkdGgoKS5pc0ludHJpbnNpY09yU3RyZXRjaCgpKQogICAgICAgICByZXR1cm4gY29tcHV0
ZVJlcGxhY2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aFVzaW5nKHN0eWxlLmxvZ2ljYWxXaWR0aCgpKSwgc2hvdWxkQ29tcHV0ZVBy
ZWZlcnJlZCk7CiAKLSAgICBSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVkZGVkQ29u
dGVudEJveCgpOwotCiAgICAgLy8gMTAuMy4yIElubGluZSwgcmVwbGFjZWQgZWxlbWVudHM6IGh0
dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNpbmxpbmUtcmVwbGFjZWQtd2lk
dGgKICAgICBGbG9hdFNpemUgaW50cmluc2ljUmF0aW87CiAgICAgRmxvYXRTaXplIGNvbnN0cmFp
bmVkU2l6ZTsKLSAgICBjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJy
ZWRNaW5NYXhTaXplcyhjb250ZW50UmVuZGVyZXIsIGNvbnN0cmFpbmVkU2l6ZSwgaW50cmluc2lj
UmF0aW8pOworICAgIGNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJl
ZE1pbk1heFNpemVzKGNvbnN0cmFpbmVkU2l6ZSwgaW50cmluc2ljUmF0aW8pOwogCiAgICAgaWYg
KHN0eWxlLmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpKSB7CiAgICAgICAgIGJvb2wgY29tcHV0ZWRI
ZWlnaHRJc0F1dG8gPSBzdHlsZS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCk7CkBAIC03MzAsNyAr
NzE0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNh
bFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2gKICAgICAgICAgLy8gRm9yIGZsZXggb3Ig
Z3JpZCBpdGVtcyB3aGVyZSB0aGUgbG9naWNhbCBoZWlnaHQgaGFzIGJlZW4gb3ZlcnJpZGVuIHRo
ZW4gd2Ugc2hvdWxkIHVzZSB0aGF0IHNpemUgdG8gY29tcHV0ZSB0aGUgcmVwbGFjZWQgd2lkdGgg
YXMgbG9uZyBhcyB0aGUgZmxleCBvcgogICAgICAgICAvLyBncmlkIGl0ZW0gaGFzIGFuIGludHJp
bnNpYyBzaXplLiBJdCBpcyBwb3NzaWJsZSAoaW5kZWVkLCBjb21tb24pIGZvciBhbiBTVkcgZ3Jh
cGhpYyB0byBoYXZlIGFuIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gYnV0IG5vdCB0byBoYXZlIGFu
IGludHJpbnNpYwogICAgICAgICAvLyB3aWR0aCBvciBoZWlnaHQuIFRoZXJlIGFyZSBhbHNvIGVs
ZW1lbnRzIHdpdGggaW50cmluc2ljIHNpemVzIGJ1dCB3aXRob3V0IGludHJpbnNpYyByYXRpbyAo
bGlrZSBhbiBpZnJhbWUpLgotICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdo
dCA9ICghaW50cmluc2ljUmF0aW8uaXNFbXB0eSgpICYmIChpc0ZsZXhJdGVtKCkgfHwgaXNHcmlk
SXRlbSgpKSAmJiBoYXNJbnRyaW5zaWNTaXplKGNvbnRlbnRSZW5kZXJlciwgaGFzSW50cmluc2lj
V2lkdGgsIGhhc0ludHJpbnNpY0hlaWdodCkgPyB0aGlzLT5vdmVycmlkaW5nQm9yZGVyQm94TG9n
aWNhbEhlaWdodCgpIDogc3RkOjpudWxsb3B0KSkKKyAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGlu
Z0xvZ2ljYWxIZWlnaHQgPSAoIWludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiAoaXNGbGV4SXRl
bSgpIHx8IGlzR3JpZEl0ZW0oKSkgJiYgaGFzSW50cmluc2ljU2l6ZShlbWJlZGRlZFNWR1Jvb3Qo
KSwgaGFzSW50cmluc2ljV2lkdGgsIGhhc0ludHJpbnNpY0hlaWdodCkgPyB0aGlzLT5vdmVycmlk
aW5nQm9yZGVyQm94TG9naWNhbEhlaWdodCgpIDogc3RkOjpudWxsb3B0KSkKICAgICAgICAgICAg
IHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lkdGgo
Y29udGVudEJveExvZ2ljYWxIZWlnaHQoKm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KSAqIGludHJp
bnNpY1JhdGlvLmFzcGVjdFJhdGlvRG91YmxlKCksIHNob3VsZENvbXB1dGVQcmVmZXJyZWQpOwog
CiAgICAgICAgIC8vIElmICdoZWlnaHQnIGFuZCAnd2lkdGgnIGJvdGggaGF2ZSBjb21wdXRlZCB2
YWx1ZXMgb2YgJ2F1dG8nIGFuZCB0aGUgZWxlbWVudCBhbHNvIGhhcyBhbiBpbnRyaW5zaWMgd2lk
dGgsIHRoZW4gdGhhdCBpbnRyaW5zaWMgd2lkdGggaXMgdGhlIHVzZWQgdmFsdWUgb2YgJ3dpZHRo
Jy4KQEAgLTgxMywxOSArNzk3LDE3IEBAIExheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0CiAgICAgaWYg
KGhhc1JlcGxhY2VkTG9naWNhbEhlaWdodCgpKQogICAgICAgICByZXR1cm4gY29tcHV0ZVJlcGxh
Y2VkTG9naWNhbEhlaWdodFJlc3BlY3RpbmdNaW5NYXhIZWlnaHQoY29tcHV0ZVJlcGxhY2VkTG9n
aWNhbEhlaWdodFVzaW5nKHN0eWxlKCkubG9naWNhbEhlaWdodCgpKSk7CiAKLSAgICBSZW5kZXJC
b3gqIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVkZGVkQ29udGVudEJveCgpOwotCiAgICAgLy8gMTAu
Ni4yIElubGluZSwgcmVwbGFjZWQgZWxlbWVudHM6IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIx
L3Zpc3VkZXQuaHRtbCNpbmxpbmUtcmVwbGFjZWQtaGVpZ2h0CiAgICAgRmxvYXRTaXplIGludHJp
bnNpY1JhdGlvOwogICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5lZFNpemU7Ci0gICAgY29tcHV0ZUlu
dHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoY29udGVudFJl
bmRlcmVyLCBjb25zdHJhaW5lZFNpemUsIGludHJpbnNpY1JhdGlvKTsKKyAgICBjb21wdXRlSW50
cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhjb25zdHJhaW5l
ZFNpemUsIGludHJpbnNpY1JhdGlvKTsKIAogICAgIGJvb2wgd2lkdGhJc0F1dG8gPSBzdHlsZSgp
LmxvZ2ljYWxXaWR0aCgpLmlzQXV0bygpOwogICAgIGJvb2wgaGFzSW50cmluc2ljV2lkdGggPSBj
b25zdHJhaW5lZFNpemUud2lkdGgoKSA+IDAgfHwgKCFjb25zdHJhaW5lZFNpemUud2lkdGgoKSAm
JiBzaG91bGRSZXNwZWN0WmVyb0ludHJpbnNpY1dpZHRoKCkpIHx8IHNob3VsZEFwcGx5U2l6ZU9y
SW5saW5lU2l6ZUNvbnRhaW5tZW50KCk7CiAgICAgYm9vbCBoYXNJbnRyaW5zaWNIZWlnaHQgPSBj
b25zdHJhaW5lZFNpemUuaGVpZ2h0KCkgPiAwIHx8IHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50
KCk7CiAKICAgICAvLyBTZWUgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgpIGZvciBhIHNp
bWlsYXIgY2hlY2sgZm9yIGhlaWdodHMuCi0gICAgaWYgKGF1dG8gb3ZlcnJpZGluZ2xvZ2ljYWxX
aWR0aCA9ICghaW50cmluc2ljUmF0aW8uaXNFbXB0eSgpICYmIChpc0ZsZXhJdGVtKCkgfHwgaXNH
cmlkSXRlbSgpKSAmJiBoYXNJbnRyaW5zaWNTaXplKGNvbnRlbnRSZW5kZXJlciwgaGFzSW50cmlu
c2ljV2lkdGgsIGhhc0ludHJpbnNpY0hlaWdodCkgPyBvdmVycmlkaW5nQm9yZGVyQm94TG9naWNh
bFdpZHRoKCkgOiBzdGQ6Om51bGxvcHQpKQorICAgIGlmIChhdXRvIG92ZXJyaWRpbmdsb2dpY2Fs
V2lkdGggPSAoIWludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiAoaXNGbGV4SXRlbSgpIHx8IGlz
R3JpZEl0ZW0oKSkgJiYgaGFzSW50cmluc2ljU2l6ZShlbWJlZGRlZFNWR1Jvb3QoKSwgaGFzSW50
cmluc2ljV2lkdGgsIGhhc0ludHJpbnNpY0hlaWdodCkgPyBvdmVycmlkaW5nQm9yZGVyQm94TG9n
aWNhbFdpZHRoKCkgOiBzdGQ6Om51bGxvcHQpKQogICAgICAgICByZXR1cm4gY29tcHV0ZVJlcGxh
Y2VkTG9naWNhbEhlaWdodFJlc3BlY3RpbmdNaW5NYXhIZWlnaHQoY29udGVudEJveExvZ2ljYWxX
aWR0aCgqb3ZlcnJpZGluZ2xvZ2ljYWxXaWR0aCkgKiBpbnRyaW5zaWNSYXRpby50cmFuc3Bvc2Vk
U2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCkpOwogCiAgICAgLy8gSWYgJ2hlaWdodCcgYW5kICd3
aWR0aCcgYm90aCBoYXZlIGNvbXB1dGVkIHZhbHVlcyBvZiAnYXV0bycgYW5kIHRoZSBlbGVtZW50
IGFsc28gaGFzIGFuIGludHJpbnNpYyBoZWlnaHQsIHRoZW4gdGhhdCBpbnRyaW5zaWMgaGVpZ2h0
IGlzIHRoZSB1c2VkIHZhbHVlIG9mICdoZWlnaHQnLgpAQCAtODYwLDcgKzg0Miw3IEBAIHZvaWQg
UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsCiB7CiAgICAgaWYgKGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkg
JiYgIXN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpKSB7CiAgICAgICAgIGlmIChhdXRv
IGZpeGVkSGVpZ2h0ID0gc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkudHJ5Rml4ZWQoKSkgewotICAg
ICAgICAgICAgYXV0byBoZWlnaHREZXJpdmVkV2lkdGggPSBMYXlvdXRVbml0IHsgZml4ZWRIZWln
aHQtPnJlc29sdmVab29tKHN0eWxlKCkudXNlZFpvb21Gb3JMZW5ndGgoKSkgKiBjb21wdXRlSW50
cmluc2ljQXNwZWN0UmF0aW8oKSB9OworICAgICAgICAgICAgYXV0byBoZWlnaHREZXJpdmVkV2lk
dGggPSBMYXlvdXRVbml0IHsgZml4ZWRIZWlnaHQtPnJlc29sdmVab29tKHN0eWxlKCkudXNlZFpv
b21Gb3JMZW5ndGgoKSkgKiBwcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91Ymxl
KCkgfTsKICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IGhlaWdodERlcml2ZWRXaWR0aDsK
ICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IGhlaWdodERlcml2ZWRXaWR0aDsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTEwNzEsMTQgKzEwNTMsNiBAQCB2b2lkIFJlbmRlclJlcGxhY2Vk
OjpsYXlvdXRTaGFkb3dDb250ZW50KGNvbnN0IExheW91dFNpemUmIG9sZFNpemUpCiAgICAgY2xl
YXJDaGlsZE5lZWRzTGF5b3V0KCk7CiB9CiAKLUZsb2F0U2l6ZSBSZW5kZXJSZXBsYWNlZDo6aW50
cmluc2ljUmF0aW8oKSBjb25zdAotewotICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNSYXRpbzsKLSAg
ICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplOwotICAgIGNvbXB1dGVBc3BlY3RSYXRpb0luZm9y
bWF0aW9uRm9yUmVuZGVyQm94KGVtYmVkZGVkQ29udGVudEJveCgpLCBjb25zdHJhaW5lZFNpemUs
IGludHJpbnNpY1JhdGlvKTsKLSAgICByZXR1cm4gaW50cmluc2ljUmF0aW87Ci19Ci0KIHZvaWQg
UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZE91dE9mRmxvd1Bvc2l0aW9uZWRMb2dpY2Fs
V2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QK
IHsKICAgICBQb3NpdGlvbmVkTGF5b3V0Q29uc3RyYWludHMgaW5saW5lQ29uc3RyYWludHMoKnRo
aXMsIExvZ2ljYWxCb3hBeGlzOjpJbmxpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuaAppbmRleCBhYjNmNDcxMGFhOTAuLmViN2ZiZjQwZjY3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTQyLDEzICs0MiwxMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzZXROZWVkc0xheW91dElmTmVlZGVkQWZ0ZXJJbnRyaW5zaWNTaXpl
Q2hhbmdlKCk7CiAKICAgICBMYXlvdXRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsK
LSAgICBGbG9hdFNpemUgaW50cmluc2ljUmF0aW8oKSBjb25zdDsKLSAgICAKKwogICAgIGJvb2wg
aXNDb250ZW50TGlrZWx5VmlzaWJsZUluVmlld3BvcnQoKTsKICAgICBib29sIHNob3VsZEludmFs
aWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGRvdWJsZSBjb21w
dXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdDsKLQogICAgIHZpcnR1YWwgYm9vbCBwYWlu
dHNDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5b3V0VW5pdCBjb21w
dXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgU3R5bGU6OlByZWZlcnJlZFNpemUm
IGxvZ2ljYWxIZWlnaHQpIGNvbnN0OwpAQCAtNjEsNiArNTgsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCByZXBsYWNlZE1pbkxvZ2ljYWxIZWlnaHRDb21wdXRlc0FzTm9uZSgpIGNvbnN0OwogICAgIGJv
b2wgcmVwbGFjZWRNYXhMb2dpY2FsSGVpZ2h0Q29tcHV0ZXNBc05vbmUoKSBjb25zdDsKIAorICAg
IHZpcnR1YWwgUmVuZGVyUmVwbGFjZWQqIGVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygp
IGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyUmVwbGFjZWQoVHlwZSwgRWxlbWVudCYs
IFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxSZXBsYWNlZEZsYWc+ID0geyB9KTsKICAgICBSZW5k
ZXJSZXBsYWNlZChUeXBlLCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3QgTGF5b3V0U2l6
ZSYgaW50cmluc2ljU2l6ZSwgT3B0aW9uU2V0PFJlcGxhY2VkRmxhZz4gPSB7IH0pOwpAQCAtNzcs
OSArNzcsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlOjpE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0OwotCiAgICAgdm9pZCBz
ZXRJbnRyaW5zaWNTaXplKGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpIHsgbV9pbnRy
aW5zaWNTaXplID0gaW50cmluc2ljU2l6ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNT
aXplQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxhdGl2ZUludHJpbnNpY0xvZ2lj
YWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMDYsNyArMTAzLDYgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgY29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRyaW5zaWNMb2dp
Y2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9n
aWNhbFdpZHRoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRl
bnRCb3goKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGFjZWQiX3M7IH0KIAogICAgIGJv
b2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAg
LTEyMSw4ICsxMTcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rp
b25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgZmluYWw7Ci0gICAgdm9p
ZCBjb21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChSZW5kZXJCb3gqLCBG
bG9hdFNpemUmIGNvbnN0cmFpbmVkU2l6ZSwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgY29u
c3Q7Ci0gICAgdm9pZCBjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJy
ZWRNaW5NYXhTaXplcyhSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciwgRmxvYXRTaXplJiBjb25z
dHJhaW5lZFNpemUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0OworICAgIHZvaWQg
Y29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMo
RmxvYXRTaXplJiBjb25zdHJhaW5lZFNpemUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNv
bnN0OwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZERyYXdTZWxlY3Rpb25UaW50KCkgY29uc3Q7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDRk
YTUwOGI2YTczYS4uOGYzNGQ5NGY1YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcApAQCAtNDg3LDE1ICs0ODcsMzcgQEAgYm9vbCBSZW5kZXJXaWRnZXQ6OnNo
b3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdAogewogICAgIGlmIChSZW5kZXJS
ZXBsYWNlZDo6c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICByZXR1cm4gZW1iZWRkZWRDb250ZW50Qm94KCk7CisgICAgcmV0dXJuIGVt
YmVkZGVkU1ZHUm9vdCgpOwogfQogCi1SZW5kZXJCb3gqIFJlbmRlcldpZGdldDo6ZW1iZWRkZWRD
b250ZW50Qm94KCkgY29uc3QKK1JlbmRlclJlcGxhY2VkKiBSZW5kZXJXaWRnZXQ6OmVtYmVkZGVk
U1ZHUm9vdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxSZW5kZXJFbWJlZGRlZE9iamVjdD4odGhp
cykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBkeW5h
bWljRG93bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KHdpZGdldCgpKTsKLSAgICByZXR1cm4gZnJhbWVW
aWV3ID8gZnJhbWVWaWV3LT5lbWJlZGRlZENvbnRlbnRCb3goKSA6IG51bGxwdHI7CisgICAgcmV0
dXJuIGZyYW1lVmlldyA/IGZyYW1lVmlldy0+ZW1iZWRkZWRTVkdSb290KCkgOiBudWxscHRyOwor
fQorCitGbG9hdFNpemUgUmVuZGVyV2lkZ2V0OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0
Cit7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNp
b25zIGZyb20gY29udGVudCwgYnV0IHRoZQorICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBD
U1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCisgICAg
Ly8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KKyAgICBpZiAo
c2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxh
Y2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOworCisgICAgQ2hlY2tlZFB0ciBzdmdSb290ID0g
ZW1iZWRkZWRTVkdSb290KCk7CisgICAgaWYgKCFzdmdSb290KQorICAgICAgICByZXR1cm4gUmVu
ZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisKKyAgICBhdXRvIHJhdGlvID0g
c3ZnUm9vdC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICBpZiAoIWlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgJiYgIXJhdGlvLmlzRW1wdHkoKSkKKyAgICAgICAgcmF0aW8gPSByYXRpby50
cmFuc3Bvc2VkU2l6ZSgpOworCisgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlv
KCkgfHwgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygpICYmIHJhdGlvLmlz
RW1wdHkoKSkpCisgICAgICAgIHJhdGlvID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5
bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlv
TG9naWNhbEhlaWdodCgpLnZhbHVlKTsKKworICAgIHJldHVybiByYXRpbzsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCmlu
ZGV4IGUwMTc4MTYyMDBkZi4uZTkxMTdkOTEyN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5oCkBAIC05MSw3ICs5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbGVt
ZW50KCkgY29uc3QgPSBkZWxldGU7CiAKICAgICBib29sIHNob3VsZEludmFsaWRhdGVQcmVmZXJy
ZWRXaWR0aHMoKSBjb25zdCBmaW5hbDsKLSAgICBSZW5kZXJCb3gqIGVtYmVkZGVkQ29udGVudEJv
eCgpIGNvbnN0IGZpbmFsOworICAgIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBj
b25zdCBmaW5hbDsKKyAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBm
aW5hbDsKIAogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoSGlnaGxpZ2h0U3RhdGUpIGZpbmFs
OwogICAgIHZvaWQgc2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCBkZTI5NDM2MjQy
OTguLjc1ZjAyZjE4YTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCkBAIC05MSwxMiArOTEsMTUgQEAgUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXIqIFJlbmRlclNWR1Jvb3Q6OnZpZXdwb3J0Q29udGFpbmVyKCkgY29uc3QKIAogYm9vbCBS
ZW5kZXJTVkdSb290OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAgIHJldHVybiBwcmVmZXJyZWRB
c3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiB9CiAKIEZsb2F0U2l6ZSBSZW5kZXJT
VkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUX0lNUExJ
RVModmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5pc0luUmVuZGVyVHJlZUxheW91
dCgpLCAhc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSk7CisgICAgLy8gU2l6ZSBjb250YWlu
bWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudC4KKyAgICAv
LyBUaGUgYmFzZSBjbGFzcyByZXR1cm5zIHZhbHVlcyBmcm9tIHRoZSBjYWNoZSAvIGNvbnRhaW4t
aW50cmluc2ljLXNpemUgd2l0aG91dCBxdWVyeWluZyBpbWFnZSBkYXRhLgorICAgIGlmIChzaG91
bGRBcHBseVNpemVDb250YWlubWVudCgpKQorICAgICAgICByZXR1cm4geyBpbnRyaW5zaWNMb2dp
Y2FsV2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CiAgICAgLy8gaHR0cHM6Ly93
d3cudzMub3JnL1RSL1NWRy9jb29yZHMuaHRtbCNJbnRyaW5zaWNTaXppbmcKICAgICBGbG9hdFNp
emUgaW50cmluc2ljU2l6ZSA9IHsgc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY1dpZHRoKCksIHN2
Z1NWR0VsZW1lbnQoKS5pbnRyaW5zaWNIZWlnaHQoKSB9OwogICAgIC8vIFRyYW5zcG9zZSBmb3Ig
dmVydGljYWwgd3JpdGluZyBtb2RlCkBAIC0xMDcsNyArMTEwLDExIEBAIEZsb2F0U2l6ZSBSZW5k
ZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CiAKIEZsb2F0U2l6ZSBSZW5k
ZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFz
aG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKKyAgICAvLyBTaXplIGNvbnRhaW5tZW50IHN1
cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LCBidXQgdGhlCisgICAg
Ly8gYXNwZWN0IHJhdGlvIGZyb20gdGhlIENTUyBhc3BlY3QtcmF0aW8gcHJvcGVydHkgaXMgc3Rp
bGwgYXZhaWxhYmxlIHZpYSB0aGUKKyAgICAvLyBiYXNlIGNsYXNzICh3aGljaCBkb2Vzbid0IHF1
ZXJ5IGltYWdlIGRhdGEpLgorICAgIGlmIChzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKQor
ICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CiAK
ICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSkKICAgICAgICAgcmV0dXJu
IEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lk
dGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IDYxOTdm
NTRmZWUxZS4uZjliOTg2MGY0MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Vt
YmVkZGVkVGhyb3VnaFNWR0ltYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtYmVkZGVkVGhyb3Vn
aEZyYW1lQ29udGFpbmluZ1NWR0RvY3VtZW50KCkgY29uc3Q7CiAKLSAgICBGbG9hdFNpemUgY29t
cHV0ZUludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFNpemUgY29tcHV0ZUlu
dHJpbnNpY1NpemUoKSBjb25zdDsKICAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8o
KSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3Qg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5
L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9s
ZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMzZkM2UzODU5ZGI2Li5lMDhjYWFl
MDNmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xl
Z2FjeVJlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
bGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwCkBAIC04MSwxMiArODEsMTUgQEAgU1ZHU1ZH
RWxlbWVudCYgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6c3ZnU1ZHRWxlbWVudCgpIGNvbnN0CiAKIGJv
b2wgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdAog
ewotICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICByZXR1cm4g
cHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogfQogCiBGbG9hdFNp
emUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAogewot
ICAgIEFTU0VSVF9JTVBMSUVTKHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkuaXNJ
blJlbmRlclRyZWVMYXlvdXQoKSwgIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpOworICAg
IC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9t
IGNvbnRlbnQuCisgICAgLy8gVGhlIGJhc2UgY2xhc3MgcmV0dXJucyB2YWx1ZXMgZnJvbSB0aGUg
Y2FjaGUgLyBjb250YWluLWludHJpbnNpYy1zaXplIHdpdGhvdXQgcXVlcnlpbmcgaW1hZ2UgZGF0
YS4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IHsgaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9Owog
ICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNTaXplID0geyBzdmdTVkdFbGVtZW50KCkuaW50cmluc2lj
V2lkdGgoKSwgc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY0hlaWdodCgpIH07CiAgICAgLy8gVHJh
bnNwb3NlIGZvciB2ZXJ0aWNhbCB3cml0aW5nIG1vZGUKICAgICBpZiAoIWlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpCkBAIC05Niw3ICs5OSwxMSBAQCBGbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZH
Um9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAogCiBGbG9hdFNpemUgTGVnYWN5UmVu
ZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIEFTU0VSVCgh
c2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSk7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBz
dXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0IHRoZQorICAg
IC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBDU1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0
aWxsIGF2YWlsYWJsZSB2aWEgdGhlCisgICAgLy8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBx
dWVyeSBpbWFnZSBkYXRhKS4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkK
KyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOwog
CiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkpCiAgICAgICAgIHJldHVy
biBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbFdp
ZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsSGVpZ2h0KCkudmFsdWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVu
ZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5
UmVuZGVyU1ZHUm9vdC5oCmluZGV4IDUzOTc1MDg0NGM5MS4uZTJjMWZkOWU2NDI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdS
b290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVu
ZGVyU1ZHUm9vdC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1iZWRk
ZWRUaHJvdWdoU1ZHSW1hZ2UoKSBjb25zdDsKICAgICBib29sIGlzRW1iZWRkZWRUaHJvdWdoRnJh
bWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSBjb25zdDsKIAotICAgIEZsb2F0U2l6ZSBjb21wdXRl
SW50cmluc2ljU2l6ZSgpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmlu
c2ljU2l6ZSgpIGNvbnN0OwogICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggOWEwZDQ4
MjZhNjkwLi44NjI5ZTBlZDIxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcApAQCAtMjc2LDggKzI3Niw4IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6
Om5hdGl2ZUltYWdlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpCiAgICAg
YXV0byByZW5kZXJpbmdNb2RlID0gbV9wYWdlLT5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRHJhd2lu
Z0VuYWJsZWQoKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZDsKIAogICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cgPSBudWxscHRyOwot
ICAgIGlmIChDaGVja2VkUHRyIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVkZGVkQ29udGVudEJveCgp
KQotICAgICAgICBob3N0V2luZG93ID0gY29udGVudFJlbmRlcmVyLT5ob3N0V2luZG93KCk7Cisg
ICAgaWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpKQorICAgICAgICBo
b3N0V2luZG93ID0gc3ZnUm9vdC0+aG9zdFdpbmRvdygpOwogCiAgICAgUmVmUHRyIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQ
dXJwb3NlOjpET00sIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRv
dyk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKQEAgLTM5MiwxMiArMzkyLDEyIEBAIEltYWdlRHJh
d1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjCiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKIH0K
IAotUmVuZGVyQm94KiBTVkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKK1JlbmRl
clJlcGxhY2VkKiBTVkdJbWFnZTo6ZW1iZWRkZWRTVkdSb290KCkgY29uc3QKIHsKICAgICBSZWZQ
dHIgcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwogICAgIGlmICghcm9vdEVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJC
b3g+KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
UmVwbGFjZWQ+KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKIH0KIAogTG9jYWxGcmFtZVZpZXcq
IFNWR0ltYWdlOjpmcmFtZVZpZXcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAppbmRleCBmNDU3N2Q1Y2YwNDIuLmY3NDNhMzcwMzJhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRWxlbWVudDsK
IGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgTG9jYWxGcmFtZVZpZXc7CiBjbGFzcyBQYWdlOwot
Y2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVuZGVyUmVwbGFjZWQ7CiBjbGFzcyBTVkdTVkdFbGVt
ZW50OwogY2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQ7CiBjbGFzcyBTVkdJbWFnZUZvckNvbnRh
aW5lcjsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIHRyeUNyZWF0ZUZyb21EYXRhKHN0ZDo6c3Bhbjxjb25zdCB1aW50OF90PiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U1ZHSW1hZ2U+JiYpPiYmKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBpc0RhdGFEZWNvZGFibGUoY29uc3QgU2V0dGluZ3MmLCBzdGQ6OnNw
YW48Y29uc3QgdWludDhfdD4pOwogCi0gICAgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3go
KSBjb25zdDsKKyAgICBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3Q7CiAg
ICAgTG9jYWxGcmFtZVZpZXcqIE5PREVMRVRFIGZyYW1lVmlldygpIGNvbnN0OwogCiAgICAgYm9v
bCBpc1NWR0ltYWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479580</attachid>
            <date>2026-05-10 15:53:32 -0700</date>
            <delta_ts>2026-05-10 17:39:24 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-314482-20260510155331.patch</filename>
            <type>text/plain</type>
            <size>15900</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBmYTA5NjNlNTk4NjM2MTQ2NWM3NjEwOGUwNjM1MjVmNTZmYmUxNjJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFN1biwgMTAgTWF5IDIwMjYgMTU6NTE6NDYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBSZW1vdmUg
dmlydHVhbCBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGZyb20gUmVuZGVyUmVwbGFjZWQgYW5kCiBj
b25zb2xpZGF0ZSBsb2dpYyBpbnRvIGEgc3RhdGljIGhlbHBlcgogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDQ4MgoKUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8u
Cgpjb21wdXRlSW50cmluc2ljU2l6ZSgpIHdhcyBhIGNvbmZ1c2luZyBBUEkuIEl0IHdhcyB2aXJ0
dWFsIG9uIFJlbmRlclJlcGxhY2VkLApvdmVycmlkZGVuIGJ5IFJlbmRlckltYWdlIGFuZCBSZW5k
ZXJXaWRnZXQsIGJ1dCBpdHMgbmFtZSBkaWRuJ3QgY2xhcmlmeSB3aGVuIHRvCmNhbGwgaXQgdnMu
IHRoZSBzaW1pbGFybHktbmFtZWQgaW50cmluc2ljU2l6ZSgpICh3aGljaCByZXR1cm5zIHRoZSBj
YWNoZWQKbV9pbnRyaW5zaWNTaXplKS4gVGhlIHR3byByZXR1cm5lZCB0aGUgc2FtZSBkYXRhIGlu
IGRpZmZlcmVudCB0eXBlcyAoRmxvYXRTaXplIHZzCkxheW91dFNpemUpLCBhbmQgdGhlIG9ubHkg
bWVhbmluZ2Z1bCBkaWZmZXJlbmNlIHdhcyB0aGF0IHRoZSBvdmVycmlkZXMgcXVlcmllZAp0aGUg
ZW1iZWRkZWQgU1ZHIHJvb3QgZm9yIGZyZXNoIHZhbHVlcyB3aGlsZSB0aGUgYmFzZSBqdXN0IHJl
YWQgdGhlIGNhY2hlLgoKVG9nZXRoZXIgd2l0aCBjb21wdXRlQXNwZWN0UmF0aW9BZGp1c3RlZElu
dHJpbnNpY0xvZ2ljYWxXaWR0aHMgKHJlbW92ZWQgaW4gYQpwcmlvciBjb21taXQpIGFuZCBjb21w
dXRlSW50cmluc2ljQXNwZWN0UmF0aW8gKGFsc28gcmVtb3ZlZCksIHRoaXMgd2FzIG9uZSBvZgpz
ZXZlcmFsIHNpbWlsYXJseS1uYW1lZCAiY29tcHV0ZSBpbnRyaW5zaWMgc29tZXRoaW5nIiBmdW5j
dGlvbnMgb24gUmVuZGVyUmVwbGFjZWQKd2hvc2Ugcm9sZXMgYW5kIGNhbGwgb3JkZXJpbmcgd2Vy
ZSB1bmNsZWFyLgoKSW4gcHJhY3RpY2UsIG9ubHkgb25lIGNhbGxlciBuZWVkZWQgdGhlIHZpcnR1
YWwgZGlzcGF0Y2g6CmNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJl
ZE1pbk1heFNpemVzLiBUaGUgU1ZHIHJvb3QgcmVuZGVyZXJzCmNhbGxlZCB0aGVpciBvd24gdmVy
c2lvbiBpbnRlcm5hbGx5LCBhbmQgZXZlcnlvbmUgZWxzZSB1c2VkIGludHJpbnNpY1NpemUoKS4K
ClRoZSBmaXggcmVwbGFjZXMgYWxsIHRocmVlIG92ZXJyaWRlcyB3aXRoIGEgc2luZ2xlIGZpbGUt
bG9jYWwgc3RhdGljIGhlbHBlcgooY29tcHV0ZUludHJpbnNpY1NpemVGb3JSZW5kZXJlcikgdGhh
dCBjaGVja3MgZW1iZWRkZWRTVkdSb290KCkgYW5kIGhhbmRsZXMgdGhlClNWRyBjYXNlIGlubGlu
ZS4gVGhlIFNWRyByb290cyBrZWVwIHRoZWlyIG93biBwcml2YXRlIGNvbXB1dGVJbnRyaW5zaWNT
aXplKCkgZm9yCmludGVybmFsIHVzZS4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcDoKKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljU2l6ZSBj
b25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKFdlYkNvcmU6
OmlzVmlkZW9XaXRoRGVmYXVsdE9iamVjdFNpemUpOgooV2ViQ29yZTo6Y29tcHV0ZUludHJpbnNp
Y1NpemVGb3JSZW5kZXJlcik6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJp
bnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMgY29uc3QpOgooV2Vi
Q29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplIGNvbnN0KTogRGVsZXRl
ZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaDoKKFdlYkNvcmU6
OlJlbmRlclJlcGxhY2VkOjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgooV2ViQ29yZTo6UmVuZGVyV2lkZ2V0Ojpjb21w
dXRlSW50cmluc2ljU2l6ZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5jcHA6CihXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6
ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9v
dC5jcHA6CihXZWJDb3JlOjpMZWdhY3lSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6
ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVu
ZGVyU1ZHUm9vdC5oOgotLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAgICAgICB8IDMwIC0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oICAgICAgICB8ICAxIC0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAgICB8IDU3ICsrKysrKysrKysrKysrKystLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5oICAgICB8ICAzICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcCAgICAgfCAyMCAtLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmggICAgICAgfCAgMSAtCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmggIHwgIDIgKy0KIC4uLi9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRl
clNWR1Jvb3QuY3BwICAgICAgICB8ICAyICstCiAuLi4vc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJT
VkdSb290LmggICAgICAgICAgfCAgMiArLQogMTAgZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9u
cygrKSwgNjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKaW5kZXggZTA2NWM4NWEzZWExLi44NzBkMGQ3ZmRlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtOTM4LDM2ICs5MzgsNiBAQCB2b2lkIFJlbmRl
ckltYWdlOjpsYXlvdXQoKQogICAgIH0KIH0KIAotRmxvYXRTaXplIFJlbmRlckltYWdlOjpjb21w
dXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0Ci17Ci0gICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBw
cmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudC4KLSAgICAvLyBUaGUgYmFz
ZSBjbGFzcyByZXR1cm5zIHZhbHVlcyBmcm9tIHRoZSBjYWNoZSAvIGNvbnRhaW4taW50cmluc2lj
LXNpemUgd2l0aG91dCBxdWVyeWluZyBpbWFnZSBkYXRhLgotICAgIGlmIChzaG91bGRBcHBseVNp
emVPcklubGluZVNpemVDb250YWlubWVudCgpKQotICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFj
ZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7Ci0KLSAgICBpZiAoQ2hlY2tlZFB0ciBzdmdSb290
ID0gZW1iZWRkZWRTVkdSb290KCkpIHsKLSAgICAgICAgYXV0byBpbnRyaW5zaWNTaXplID0gc3Zn
Um9vdC0+Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKLSAgICAgICAgaW50cmluc2ljU2l6ZS5zY2Fs
ZShzdHlsZSgpLnVzZWRab29tKCkpOwotICAgICAgICBpbnRyaW5zaWNTaXplLnNjYWxlKGltYWdl
RGV2aWNlUGl4ZWxSYXRpbygpKTsKLSAgICAgICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKQotICAgICAgICAgICAgaW50cmluc2ljU2l6ZSA9IGludHJpbnNpY1NpemUudHJhbnNwb3Nl
ZFNpemUoKTsKLSAgICAgICAgcmV0dXJuIGludHJpbnNpY1NpemU7Ci0gICAgfQotCi0gICAgYXV0
byBpbnRyaW5zaWNTaXplID0gUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7
Ci0KLSAgICAvLyBPdXIgaW50cmluc2ljU2l6ZSBpcyBlbXB0eSBpZiB3ZSdyZSByZW5kZXJpbmcg
Z2VuZXJhdGVkIGltYWdlcyB3aXRoIHJlbGF0aXZlIHdpZHRoL2hlaWdodC4gRmlndXJlIG91dCB0
aGUgcmlnaHQgaW50cmluc2ljIHNpemUgdG8gdXNlLgotICAgIGlmIChpbnRyaW5zaWNTaXplLmlz
RW1wdHkoKSAmJiAoaW1hZ2VSZXNvdXJjZSgpLmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIHx8IGlt
YWdlUmVzb3VyY2UoKS5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkpKSB7Ci0gICAgICAgIFJlbmRl
ck9iamVjdCogY29udGFpbmluZ0Jsb2NrID0gaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgPyBjb250
YWluZXIoKSA6IHRoaXMtPmNvbnRhaW5pbmdCbG9jaygpOwotICAgICAgICBpZiAoYXV0byogYm94
ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oKmNvbnRhaW5pbmdCbG9jaykpIHsKLSAgICAg
ICAgICAgIGludHJpbnNpY1NpemUuc2V0V2lkdGgoYm94LT5jb250ZW50Qm94TG9naWNhbFdpZHRo
KCkpOwotICAgICAgICAgICAgaW50cmluc2ljU2l6ZS5zZXRIZWlnaHQoYm94LT5hdmFpbGFibGVM
b2dpY2FsSGVpZ2h0KEF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRUeXBlOjpJbmNsdWRlTWFyZ2luQm9y
ZGVyUGFkZGluZykpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGludHJpbnNpY1Np
emU7Ci19Ci0KIEZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBj
b25zdAogewogICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGlt
ZW5zaW9ucyBmcm9tIGNvbnRlbnQsIGJ1dCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmgKaW5kZXggNTJjY2VhNzNkN2JmLi44M2Q1ZWQ0NzVjYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC05Miw3ICs5Miw2IEBAIHByb3RlY3RlZDoKIAog
ICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpIGNvbnN0IGZpbmFsOwog
ICAgIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBjb25zdCBmaW5hbDsKLSAgICBG
bG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGZv
cmVncm91bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJl
Y3QsIHVuc2lnbmVkIG1heERlcHRoVG9UZXN0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQg
c3R5bGVXaWxsQ2hhbmdlKFN0eWxlOjpEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3
U3R5bGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAKaW5kZXggZDZlMTQ5ZDkxYzZlLi40YTYxZDkxOWYxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3JMaW5lQm94
SW5saW5lcy5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgorI2luY2x1ZGUgIkxlZ2Fj
eVJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRlICJMaW5lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
TG9jYWxGcmFtZS5oIgogI2luY2x1ZGUgIlBvc2l0aW9uZWRMYXlvdXRDb25zdHJhaW50cy5oIgpA
QCAtNTYsNiArNTcsNyBAQAogI2luY2x1ZGUgIlJlbmRlck9iamVjdElubGluZXMuaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZStHZXR0ZXJzSW5saW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxl
K1NldHRlcnNJbmxpbmVzLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUg
IlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCkBAIC00NjgsMTUgKzQ3MCw1OSBAQCBzdGF0aWMgYm9vbCBpc1ZpZGVvV2l0aERl
ZmF1bHRPYmplY3RTaXplKGNvbnN0IFJlbmRlclJlcGxhY2VkKiBtYXliZVZpZGVvKQogICAgIFVO
VVNFRF9QQVJBTShtYXliZVZpZGVvKTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKLX0gCit9
CisKK3N0YXRpYyBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemVGb3JSZW5kZXJlcihjb25z
dCBSZW5kZXJSZXBsYWNlZCYgcmVwbGFjZWRSZW5kZXJlcikKK3sKKyAgICBBU1NFUlQoIXJlcGxh
Y2VkUmVuZGVyZXIuc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSk7CisK
KyAgICBpZiAoQ2hlY2tlZFB0ciBzdmdSb290ID0gcmVwbGFjZWRSZW5kZXJlci5lbWJlZGRlZFNW
R1Jvb3QoKSkgeworICAgICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBbJl0geworICAgICAgICAg
ICAgaWYgKENoZWNrZWRQdHIgcm9vdCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJTVkdSb290Pigq
c3ZnUm9vdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3QtPmNvbXB1dGVJbnRyaW5zaWNT
aXplKCk7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHUm9vdD4o
KnN2Z1Jvb3QpLmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7CisgICAgICAgIH0oKTsKKworICAgICAg
ICBpbnRyaW5zaWNTaXplLnNjYWxlKHJlcGxhY2VkUmVuZGVyZXIuc3R5bGUoKS51c2VkWm9vbSgp
KTsKKyAgICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVySW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8
UmVuZGVySW1hZ2U+KHJlcGxhY2VkUmVuZGVyZXIpKQorICAgICAgICAgICAgaW50cmluc2ljU2l6
ZS5zY2FsZShyZW5kZXJJbWFnZS0+aW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkpOworICAgICAgICBp
ZiAoIXJlcGxhY2VkUmVuZGVyZXIuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICAgICAg
ICAgIGludHJpbnNpY1NpemUgPSBpbnRyaW5zaWNTaXplLnRyYW5zcG9zZWRTaXplKCk7CisgICAg
ICAgIHJldHVybiBpbnRyaW5zaWNTaXplOworICAgIH0KKworICAgIGlmIChDaGVja2VkUHRyIHJl
bmRlckltYWdlID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckltYWdlPihyZXBsYWNlZFJlbmRlcmVy
KSkgeworICAgICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUgeyByZW5kZXJJbWFn
ZS0+aW50cmluc2ljTG9naWNhbFdpZHRoKCksIHJlbmRlckltYWdlLT5pbnRyaW5zaWNMb2dpY2Fs
SGVpZ2h0KCkgfTsKKyAgICAgICAgLy8gT3VyIGludHJpbnNpY1NpemUgaXMgZW1wdHkgaWYgd2Un
cmUgcmVuZGVyaW5nIGdlbmVyYXRlZCBpbWFnZXMgd2l0aCByZWxhdGl2ZSB3aWR0aC9oZWlnaHQu
IEZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGludHJpbnNpYyBzaXplIHRvIHVzZS4KKyAgICAgICAgaWYg
KGludHJpbnNpY1NpemUuaXNFbXB0eSgpICYmIChyZW5kZXJJbWFnZS0+aW1hZ2VSZXNvdXJjZSgp
LmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIHx8IHJlbmRlckltYWdlLT5pbWFnZVJlc291cmNlKCku
aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpKSkgeworICAgICAgICAgICAgQ2hlY2tlZFB0ciBjb250
YWluaW5nQmxvY2sgPSByZW5kZXJJbWFnZS0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgPyByZW5k
ZXJJbWFnZS0+Y29udGFpbmVyKCkgOiByZW5kZXJJbWFnZS0+Y29udGFpbmluZ0Jsb2NrKCk7Cisg
ICAgICAgICAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJCb3ggPSBkeW5hbWljRG93bmNhc3Q8UmVu
ZGVyQm94Pihjb250YWluaW5nQmxvY2spKSB7CisgICAgICAgICAgICAgICAgaW50cmluc2ljU2l6
ZS5zZXRXaWR0aChyZW5kZXJCb3gtPmNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoKSk7CisgICAgICAg
ICAgICAgICAgaW50cmluc2ljU2l6ZS5zZXRIZWlnaHQocmVuZGVyQm94LT5hdmFpbGFibGVMb2dp
Y2FsSGVpZ2h0KEF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRUeXBlOjpJbmNsdWRlTWFyZ2luQm9yZGVy
UGFkZGluZykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBpbnRy
aW5zaWNTaXplOworICAgIH0KKworICAgIGlmIChDaGVja2VkUHRyIHJlbmRlcldpZGdldCA9ZHlu
YW1pY0Rvd25jYXN0PFJlbmRlcldpZGdldD4ocmVwbGFjZWRSZW5kZXJlcikpCisgICAgICAgIHJl
dHVybiB7IHJlcGxhY2VkUmVuZGVyZXIuaW50cmluc2ljTG9naWNhbFdpZHRoKCksIHJlcGxhY2Vk
UmVuZGVyZXIuaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CisKKyAgICBpZiAoQ2hlY2tlZFB0
ciBzdmdSb290ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KHJlcGxhY2VkUmVuZGVy
ZXIpKQorICAgICAgICByZXR1cm4gc3ZnUm9vdC0+Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKKwor
ICAgIGlmIChDaGVja2VkUHRyIGxlZ2FjeVNWR1Jvb3QgPSBkeW5hbWljRG93bmNhc3Q8TGVnYWN5
UmVuZGVyU1ZHUm9vdD4ocmVwbGFjZWRSZW5kZXJlcikpCisgICAgICAgIHJldHVybiBsZWdhY3lT
VkdSb290LT5jb21wdXRlSW50cmluc2ljU2l6ZSgpOworCisgICAgcmV0dXJuIHsgcmVwbGFjZWRS
ZW5kZXJlci5pbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgcmVwbGFjZWRSZW5kZXJlci5pbnRyaW5z
aWNMb2dpY2FsSGVpZ2h0KCkgfTsKK30KIAogdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUlu
dHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoRmxvYXRTaXpl
JiBpbnRyaW5zaWNTaXplLCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBjb25zdAogewogICAg
IGlmIChzaG91bGRBcHBseVNpemVPcklubGluZVNpemVDb250YWlubWVudCgpKSB7Ci0gICAgICAg
IGludHJpbnNpY1NpemUgPSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKTsK
KyAgICAgICAgaW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZSB7IGludHJpbnNpY0xvZ2ljYWxXaWR0
aCgpLCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKICAgICAgICAgaW50cmluc2ljUmF0aW8g
PSBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBpbnRyaW5zaWNTaXplID0gY29tcHV0ZUludHJpbnNpY1NpemUoKTsKKyAgICAgICAg
aW50cmluc2ljU2l6ZSA9IGNvbXB1dGVJbnRyaW5zaWNTaXplRm9yUmVuZGVyZXIoKnRoaXMpOwog
ICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CiAKICAgICAg
ICAgYXV0byBzaXplVG9DYWNoZSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBpbnRyaW5z
aWNTaXplIDogaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwpAQCAtNTU4LDExICs2MDQs
NiBAQCBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0KGNvbnN0
IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAgICAgcmV0dXJuIGZpbmFsUmVjdDsKIH0KIAot
RmxvYXRTaXplIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHsgaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxI
ZWlnaHQoKSB9OwotfQotCiBGbG9hdFNpemUgUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVj
dFJhdGlvKCkgY29uc3QKIHsKICAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUoaW50
cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IDcwMTE5YzMxNGEzZC4uZWI3
ZmJmNDBmNjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApA
QCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXBsYWNlZE1pbkxvZ2ljYWxIZWln
aHRDb21wdXRlc0FzTm9uZSgpIGNvbnN0OwogICAgIGJvb2wgcmVwbGFjZWRNYXhMb2dpY2FsSGVp
Z2h0Q29tcHV0ZXNBc05vbmUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgRmxvYXRTaXplIGNvbXB1
dGVJbnRyaW5zaWNTaXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBSZW5kZXJSZXBsYWNlZCogZW1i
ZWRkZWRTVkdSb290KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgRmxv
YXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKQEAgLTEw
Myw3ICsxMDMsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21wdXRlQXNwZWN0UmF0aW9BZGp1
c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBM
YXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBSZW5kZXJS
ZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIEFTQ0lJ
TGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlcGxh
Y2VkIl9zOyB9CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
CmluZGV4IDIwMzliYmJlNDVjMS4uYmU1ODczNWI2MGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtNDk4LDI2ICs0OTgsNiBAQCBSZW5kZXJSZXBsYWNl
ZCogUmVuZGVyV2lkZ2V0OjplbWJlZGRlZFNWR1Jvb3QoKSBjb25zdAogICAgIHJldHVybiBmcmFt
ZVZpZXcgPyBmcmFtZVZpZXctPmVtYmVkZGVkU1ZHUm9vdCgpIDogbnVsbHB0cjsKIH0KIAotRmxv
YXRTaXplIFJlbmRlcldpZGdldDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAotewotICAg
IC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9t
IGNvbnRlbnQuCi0gICAgLy8gVGhlIGJhc2UgY2xhc3MgcmV0dXJucyB2YWx1ZXMgZnJvbSB0aGUg
Y2FjaGUgLyBjb250YWluLWludHJpbnNpYy1zaXplIHdpdGhvdXQgcXVlcnlpbmcgaW1hZ2UgZGF0
YS4KLSAgICBpZiAoc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSkKLSAg
ICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpOwotCi0g
ICAgQ2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRkZWRTVkdSb290KCk7Ci0gICAgaWYgKCFzdmdS
b290KQotICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXpl
KCk7Ci0KLSAgICBhdXRvIGludHJpbnNpY1NpemUgPSBzdmdSb290LT5jb21wdXRlSW50cmluc2lj
U2l6ZSgpOwotICAgIGludHJpbnNpY1NpemUuc2NhbGUoc3R5bGUoKS51c2VkWm9vbSgpKTsKLQot
ICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgaW50cmluc2ljU2l6
ZSA9IGludHJpbnNpY1NpemUudHJhbnNwb3NlZFNpemUoKTsKLQotICAgIHJldHVybiBpbnRyaW5z
aWNTaXplOwotfQotCiBGbG9hdFNpemUgUmVuZGVyV2lkZ2V0OjpwcmVmZXJyZWRBc3BlY3RSYXRp
bygpIGNvbnN0CiB7CiAgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNp
YyBkaW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5oCmluZGV4IDkyZjI4MTM4Y2FhZi4uZTkxMTdkOTEyN2JhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCkBAIC05Miw3ICs5Miw2IEBAIHByaXZh
dGU6CiAKICAgICBib29sIHNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBm
aW5hbDsKICAgICBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3QgZmluYWw7
Ci0gICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QgZmluYWw7CiAgICAg
RmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lk
IHNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0YXRlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDQzMjcwNWQyMzI3NC4u
NzY2N2M3YjAyMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgRmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6OmNv
bXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKICAgICAvLyBTaXplIGNvbnRhaW5tZW50IHN1cHBy
ZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LgogICAgIC8vIFRoZSBiYXNl
IGNsYXNzIHJldHVybnMgdmFsdWVzIGZyb20gdGhlIGNhY2hlIC8gY29udGFpbi1pbnRyaW5zaWMt
c2l6ZSB3aXRob3V0IHF1ZXJ5aW5nIGltYWdlIGRhdGEuCiAgICAgaWYgKHNob3VsZEFwcGx5U2l6
ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNl
ZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKKyAgICAgICAgcmV0dXJuIHsgaW50cmluc2ljTG9n
aWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OwogICAgIC8vIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi9TVkcvY29vcmRzLmh0bWwjSW50cmluc2ljU2l6aW5nCiAgICAgRmxvYXRT
aXplIGludHJpbnNpY1NpemUgPSB7IHN2Z1NWR0VsZW1lbnQoKS5pbnRyaW5zaWNXaWR0aCgpLCBz
dmdTVkdFbGVtZW50KCkuaW50cmluc2ljSGVpZ2h0KCkgfTsKICAgICAvLyBUcmFuc3Bvc2UgZm9y
IHZlcnRpY2FsIHdyaXRpbmcgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuaAppbmRleCA2MTk3ZjU0ZmVlMWUuLmY5Yjk4NjBmNDEwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNFbWJlZGRlZFRocm91Z2hTVkdJbWFnZSgpIGNvbnN0Owog
ICAgIGJvb2wgaXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpIGNv
bnN0OwogCi0gICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QgZmluYWw7
CisgICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3Q7CiAgICAgRmxvYXRT
aXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXNJbnRy
aW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwCmlu
ZGV4IGYyZDQ3ZjcwZDhmZC4uNzZjODRmNTFkN2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcApA
QCAtODksNyArODksNyBAQCBGbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUlu
dHJpbnNpY1NpemUoKSBjb25zdAogICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBp
bnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQuCiAgICAgLy8gVGhlIGJhc2UgY2xhc3Mg
cmV0dXJucyB2YWx1ZXMgZnJvbSB0aGUgY2FjaGUgLyBjb250YWluLWludHJpbnNpYy1zaXplIHdp
dGhvdXQgcXVlcnlpbmcgaW1hZ2UgZGF0YS4KICAgICBpZiAoc2hvdWxkQXBwbHlTaXplT3JJbmxp
bmVTaXplQ29udGFpbm1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjb21w
dXRlSW50cmluc2ljU2l6ZSgpOworICAgICAgICByZXR1cm4geyBpbnRyaW5zaWNMb2dpY2FsV2lk
dGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CiAgICAgRmxvYXRTaXplIGludHJpbnNp
Y1NpemUgPSB7IHN2Z1NWR0VsZW1lbnQoKS5pbnRyaW5zaWNXaWR0aCgpLCBzdmdTVkdFbGVtZW50
KCkuaW50cmluc2ljSGVpZ2h0KCkgfTsKICAgICAvLyBUcmFuc3Bvc2UgZm9yIHZlcnRpY2FsIHdy
aXRpbmcgbW9kZQogICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jv
b3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNW
R1Jvb3QuaAppbmRleCA1Mzk3NTA4NDRjOTEuLmUyYzFmZDllNjQyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jv
b3QuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtYmVkZGVkVGhyb3Vn
aFNWR0ltYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtYmVkZGVkVGhyb3VnaEZyYW1lQ29udGFp
bmluZ1NWR0RvY3VtZW50KCkgY29uc3Q7CiAKLSAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNp
Y1NpemUoKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUo
KSBjb25zdDsKICAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>