<?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>298889</bug_id>
          
          <creation_ts>2025-09-15 12:18:32 -0700</creation_ts>
          <short_desc>[text shaping] Set up shaping boundary for runs.</short_desc>
          <delta_ts>2025-09-17 16:55:06 -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>
          
          <blocked>6148</blocked>
          <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>2143051</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2025-09-15 12:18:32 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2143054</commentid>
    <comment_count>1</comment_count>
      <attachid>476740</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-09-15 12:27:20 -0700</bug_when>
    <thetext>Created attachment 476740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2143346</commentid>
    <comment_count>2</comment_count>
      <attachid>476758</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-09-16 08:47:23 -0700</bug_when>
    <thetext>Created attachment 476758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2143402</commentid>
    <comment_count>3</comment_count>
      <attachid>476762</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-09-16 12:00:32 -0700</bug_when>
    <thetext>Created attachment 476762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2143408</commentid>
    <comment_count>4</comment_count>
      <attachid>476763</attachid>
    <who name="alan">zalan</who>
    <bug_when>2025-09-16 13:10:51 -0700</bug_when>
    <thetext>Created attachment 476763
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2143438</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2025-09-16 15:02:31 -0700</bug_when>
    <thetext>Committed 300053@main (9b5a610a914d): &lt;https://commits.webkit.org/300053@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 476763.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2143440</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-09-16 15:03:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/160724891&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>476740</attachid>
            <date>2025-09-15 12:27:20 -0700</date>
            <delta_ts>2025-09-16 08:47:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-298889-20250915122719.patch</filename>
            <type>text/plain</type>
            <size>21065</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBiMzM2MmU2YjE3NTUxZDU0OTEwZGM0ODdlNzU0NjUyYmUxMDg2ZGZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IE1vbiwgMTUgU2VwIDIwMjUgMTI6MTg6NDIgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbdGV4dCBz
aGFwaW5nXSBTZXQgdXAgc2hhcGluZyBib3VuZGFyeSBmb3IgcnVucy4KIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTg4ODkKClJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgoKVGhpcyBwYXRjaCBpcyBpbiBwcmVwYXJhdGlvbiBmb3Igc3VwcG9ydGluZyB0ZXh0IHNo
YXBpbmcgYWNyb3NzIGlubGluZSBib3ggYm91bmRhcmllcy4KCjEuIENvbXB1dGUgc2hhcGluZyBi
b3VuZGFyaWVzIGFuZCBzZXQgdGhlbSBvbiBjb250aW51b3VzQ29udGVudCdzIHJ1bnMgKGlucHV0
IHRvIGxpbmUgYnJlYWtpbmcpCihzZWUgY29sbGVjdFNoYXBpbmdSYW5nZXMgZm9yIGRldGFpbHMp
CjIuIFNldCBjb21wdXRlZCBzaGFwaW5nIGJvdW5kYXJpZXMgb24gdGhlIGxpbmUgcnVucyBhZnRl
ciBsaW5lIGJyZWFraW5nIChzZWUgY29tbWl0Q2FuZGlkYXRlQ29udGVudCkKCiogU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFr
ZXIuaDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXND
b250ZW50OjpydW5zKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVDYW5k
aWRhdGU6OklubGluZUNvbnRlbnQ6OmNvbnRpbnVvdXNDb250ZW50KToKKFdlYkNvcmU6OkxheW91
dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6aXNTaGFwaW5nQ2FuZGlkYXRlQnlDb250
ZW50IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVu
dDo6YXBwZW5kSW5saW5lSXRlbSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVDYW5kaWRhdGU6Oklu
bGluZUNvbnRlbnQ6OnJlc2V0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbGxl
Y3RTaGFwaW5nUmFuZ2VzIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFw
cGx5U2hhcGluZ0lmTmVlZGVkKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNhbmRp
ZGF0ZUNvbnRlbnRGb3JMaW5lKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbW1p
dENhbmRpZGF0ZUNvbnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6cHJvY2Vz
c0xpbmVCcmVha2luZ1Jlc3VsdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjb21t
aXRDYW5pZGF0ZUNvbnRlbnQpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmg6Ci0tLQogLi4uL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5oICAgICAgICAgICAgIHwgICAzICsKIC4uLi9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwICAgICAgICAgICAgICB8IDE5NyArKysrKysrKysrKysrKysr
Ky0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaCAgICAgICAgICAgICAgICB8ICAgNCAr
LQogMyBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaAppbmRleCBiMGY5YTYyYzc1
NjEuLjE0ZTBjZjMzNjFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJl
YWtlci5oCkBAIC0xMTIsMTIgKzExMiwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGU7CiAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IG9mZnNldCB7
IDAgfTsKICAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgdGV4dFNwYWNpbmdBZGp1c3RtZW50
IHsgMCB9OworICAgICAgICAgICAgZW51bSBjbGFzcyBTaGFwaW5nQm91bmRhcnkgOiBib29sIHsg
U3RhcnQsIEVuZCB9OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxTaGFwaW5nQm91bmRhcnk+
IHNoYXBpbmdCb3VuZGFyeSB7IH07CiAKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbV9jb250ZW50V2lkdGggeyAwIH07CiAgICAgICAgIH07CiAgICAgICAg
IHVzaW5nIFJ1bkxpc3QgPSBWZWN0b3I8UnVuLCAzPjsKICAgICAgICAgY29uc3QgUnVuTGlzdCYg
cnVucygpIGNvbnN0IHsgcmV0dXJuIG1fcnVuczsgfQorICAgICAgICBSdW5MaXN0JiBydW5zKCkg
eyByZXR1cm4gbV9ydW5zOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGFwcGVuZFRv
UnVuTGlzdChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlv
dXRVbml0IG9mZnNldCwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50V2lkdGgsIElubGluZUxheW91
dFVuaXQgdGV4dFNwYWNpbmdBZGp1c3RtZW50ID0gMC5mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCBiYmY1YjRhN2NiOGUuLjEyY2RmOTdlOGRhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMTg3LDYgKzE4Nyw3
IEBAIHN0cnVjdCBMaW5lQ2FuZGlkYXRlIHsKIAogICAgIHN0cnVjdCBJbmxpbmVDb250ZW50IHsK
ICAgICAgICAgY29uc3QgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50JiBj
b250aW51b3VzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGludW91c0NvbnRlbnQ7IH0K
KyAgICAgICAgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50JiBjb250aW51
b3VzQ29udGVudCgpIHsgcmV0dXJuIG1fY29udGludW91c0NvbnRlbnQ7IH0KICAgICAgICAgY29u
c3QgSW5saW5lSXRlbSogdHJhaWxpbmdMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX3RyYWls
aW5nTGluZUJyZWFrOyB9CiAgICAgICAgIGNvbnN0IElubGluZUl0ZW0qIHRyYWlsaW5nV29yZEJy
ZWFrT3Bwb3J0dW5pdHkoKSBjb25zdCB7IHJldHVybiBtX3RyYWlsaW5nV29yZEJyZWFrT3Bwb3J0
dW5pdHk7IH0KIApAQCAtMjA5LDYgKzIxMCw4IEBAIHN0cnVjdCBMaW5lQ2FuZGlkYXRlIHsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpcnN0VGV4dFJ1bkluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9maXJzdFRleHRSdW5JbmRleDsgfQogICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gbGFzdFRleHRSdW5JbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFRleHRSdW5JbmRleDsg
fQogCisgICAgICAgIGJvb2wgaXNTaGFwaW5nQ2FuZGlkYXRlQnlDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXM7IH0KKwogICAgIHByaXZhdGU6CiAg
ICAgICAgIElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudCBtX2NvbnRpbnVv
dXNDb250ZW50OwogICAgICAgICBjb25zdCBJbmxpbmVJdGVtKiBtX3RyYWlsaW5nTGluZUJyZWFr
IHsgbnVsbHB0ciB9OwpAQCAtMjE3LDYgKzIyMCw4IEBAIHN0cnVjdCBMaW5lQ2FuZGlkYXRlIHsK
ICAgICAgICAgYm9vbCBtX2hhc1RyYWlsaW5nU29mdFdyYXBPcHBvcnR1bml0eSB7IGZhbHNlIH07
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2ZpcnN0VGV4dFJ1bkluZGV4IHsgfTsK
ICAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fbGFzdFRleHRSdW5JbmRleCB7IH07Cisg
ICAgICAgIGJvb2wgbV9oYXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXMgeyBmYWxzZSB9OworICAg
ICAgICBib29sIG1faGFzSW5saW5lQm94QWZ0ZXJUZXh0Q29udGVudCB7IGZhbHNlIH07CiAgICAg
fTsKIAogICAgIC8vIENhbmRpZGF0ZSBjb250ZW50IGlzIGEgY29sbGVjdGlvbiBvZiBpbmxpbmUg
Y29udGVudCBvciBhIGZsb2F0IGJveC4KQEAgLTIyNiwxMyArMjMxLDIwIEBAIHN0cnVjdCBMaW5l
Q2FuZGlkYXRlIHsKIAogaW5saW5lIHZvaWQgTGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6
YXBwZW5kSW5saW5lSXRlbShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoLCBJbmxpbmVMYXlv
dXRVbml0IHRleHRTcGFjaW5nQWRqdXN0bWVudCkKIHsKLSAgICBpZiAoaW5saW5lSXRlbS5pc0F0
b21pY0lubGluZUJveCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydE9yRW5kKCkgfHwg
aW5saW5lSXRlbS5pc09wYXF1ZSgpKQorICAgIGlmIChpbmxpbmVJdGVtLmlzQXRvbWljSW5saW5l
Qm94KCkgfHwgaW5saW5lSXRlbS5pc09wYXF1ZSgpKQogICAgICAgICByZXR1cm4gbV9jb250aW51
b3VzQ29udGVudC5hcHBlbmQoaW5saW5lSXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCwgdGV4dFNw
YWNpbmdBZGp1c3RtZW50KTsKIAorICAgIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnRP
ckVuZCgpKSB7CisgICAgICAgIG1faGFzSW5saW5lQm94QWZ0ZXJUZXh0Q29udGVudCA9IG1faGFz
SW5saW5lQm94QWZ0ZXJUZXh0Q29udGVudCB8fCBtX2ZpcnN0VGV4dFJ1bkluZGV4OworICAgICAg
ICBtX2NvbnRpbnVvdXNDb250ZW50LmFwcGVuZChpbmxpbmVJdGVtLCBzdHlsZSwgbG9naWNhbFdp
ZHRoLCB0ZXh0U3BhY2luZ0FkanVzdG1lbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgaWYgKGF1dG8qIGlubGluZVRleHRJdGVtID0gZHluYW1pY0Rvd25jYXN0PElubGluZVRleHRJ
dGVtPihpbmxpbmVJdGVtKSkgewogICAgICAgICBhdXRvIG51bWJlck9mUnVucyA9IG1fY29udGlu
dW91c0NvbnRlbnQucnVucygpLnNpemUoKTsKICAgICAgICAgbV9maXJzdFRleHRSdW5JbmRleCA9
IG1fZmlyc3RUZXh0UnVuSW5kZXgudmFsdWVfb3IobnVtYmVyT2ZSdW5zKTsKICAgICAgICAgbV9s
YXN0VGV4dFJ1bkluZGV4ID0gbnVtYmVyT2ZSdW5zOworICAgICAgICBtX2hhc1RleHRDb250ZW50
U3Bhbm5pbmdCb3hlcyA9IG1faGFzVGV4dENvbnRlbnRTcGFubmluZ0JveGVzIHx8IG1faGFzSW5s
aW5lQm94QWZ0ZXJUZXh0Q29udGVudDsKICAgICAgICAgcmV0dXJuIG1fY29udGludW91c0NvbnRl
bnQuYXBwZW5kVGV4dENvbnRlbnQoKmlubGluZVRleHRJdGVtLCBzdHlsZSwgbG9naWNhbFdpZHRo
KTsKICAgICB9CiAKQEAgLTI1OCw2ICsyNzAsOCBAQCBpbmxpbmUgdm9pZCBMaW5lQ2FuZGlkYXRl
OjpJbmxpbmVDb250ZW50OjpyZXNldCgpCiAgICAgbV9oYXNUcmFpbGluZ1NvZnRXcmFwT3Bwb3J0
dW5pdHkgPSB7IH07CiAgICAgbV9maXJzdFRleHRSdW5JbmRleCA9IHsgfTsKICAgICBtX2xhc3RU
ZXh0UnVuSW5kZXggPSB7IH07CisgICAgbV9oYXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXMgPSB7
IH07CisgICAgbV9oYXNJbmxpbmVCb3hBZnRlclRleHRDb250ZW50ID0geyB9OwogfQogCiBpbmxp
bmUgdm9pZCBMaW5lQ2FuZGlkYXRlOjpyZXNldCgpCkBAIC0yNjYsNyArMjgwLDYgQEAgaW5saW5l
IHZvaWQgTGluZUNhbmRpZGF0ZTo6cmVzZXQoKQogICAgIGlubGluZUNvbnRlbnQucmVzZXQoKTsK
IH0KIAotCiBMaW5lQnVpbGRlcjo6TGluZUJ1aWxkZXIoSW5saW5lRm9ybWF0dGluZ0NvbnRleHQm
IGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBIb3Jpem9udGFsQ29uc3RyYWludHMgcm9vdEhvcml6
b250YWxDb25zdHJhaW50cywgY29uc3QgSW5saW5lSXRlbUxpc3QmIGlubGluZUl0ZW1MaXN0LCBU
ZXh0U3BhY2luZ0NvbnRleHQgdGV4dFNwYWNpbmdDb250ZXh0KQogICAgIDogQWJzdHJhY3RMaW5l
QnVpbGRlcihpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
cm9vdCgpLCByb290SG9yaXpvbnRhbENvbnN0cmFpbnRzLCBpbmxpbmVJdGVtTGlzdCkKICAgICAs
IG1fZmxvYXRpbmdDb250ZXh0KGlubGluZUZvcm1hdHRpbmdDb250ZXh0LmZsb2F0aW5nQ29udGV4
dCgpKQpAQCAtNjc4LDYgKzY5MSwxNDkgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lQnVpbGRlcjo6
dHJhaWxpbmdQdW5jdHVhdGlvbk9yU3RvcE9yQ29tbWFXaWR0aEZvckxpbmVDYW5kaWEKICAgICBy
ZXR1cm4geyB9OwogfQogCitWZWN0b3I8c3RkOjpwYWlyPHNpemVfdCwgc2l6ZV90Pj4gTGluZUJ1
aWxkZXI6OmNvbGxlY3RTaGFwaW5nUmFuZ2VzKGNvbnN0IExpbmVDYW5kaWRhdGUmIGxpbmVDYW5k
aWRhdGUpIGNvbnN0Cit7CisgICAgLy8gTm9ybWFsbHkgY2FuZGlkYXRlIGNvbnRlbnQgaXMgaW5s
aW5lIGl0ZW1zIGJldHdlZW4gMiBzb2Z0IHdyYXBpbmcgb3Bwb3J0dW5pdGllcyBlLmcuCisgICAg
Ly8gPGRpdj5zb21lIHRleHQ8c3Bhbj5tb3JlIHRleHQ8L3NwYW4+PC9kaXY+CisgICAgLy8gd2hl
cmUgY2FuZGlkYXRlIGNvbnRlbnRzIGFyZSBhcyBmb2xsb3dzOiAic29tZSIgInRleHQiIHRleHQ8
c3Bhbj5tb3JlIiAidGV4dDwvc3Bhbj4iCisgICAgLy8gSG93ZXZlciB3aGVuIHdoaXRlIHNwYWNl
IGlzIHByZXNlcnZlZCBhbmQvb3Igbm8gd3JhcHBpbmcgaXMgYWxsb3dlZCB0aGUgZW50aXJlIGNv
bnRlbnQgaXMKKyAgICAvLyBvbmUgY2FuZGlkYXRlIGNvbnRlbnQgd2l0aCBhbGwgc29ydHMgb2Yg
aW5saW5lIGxldmVsIGNvbnRlbnQuCisKKyAgICAvLyBMZXQncyBmaW5kIHNoYXBpbmcgcmFuZ2Vz
IGJ5IGZpbHRlcmluZyBvdXQgY29udGVudCB0aGF0IGFyZSBub3QgcmVsZXZhbnQgdG8gc2hhcGlu
ZywKKyAgICAvLyBmb2xsb3dlZCBieSBwcm9jZXNzaW5nIHRoaXMgY29tcHJlc3NlZCBsaXN0IG9m
IFtjb250ZW50ICwgYnJlYWssIGpvaW50IF0gd2hlcmUKKyAgICAvLyAnY29udGVudCcgbWVhbnMg
c2hhcGFibGUgY29udGVudCAodGV4dCkKKyAgICAvLyAnYnJlYWsnIG1lYW5zIHNoYXBlIGJyZWFr
aW5nIGdhcCAoZS5nLiB3aGl0ZXNwYWNlIGJldHdlZW4gMiB3b3JkcykKKyAgICAvLyAna2VlcCcg
bWVhbnMgYm94IHRoYXQga2VlcHMgYWRqYWNlbnQgaW5saW5lIGl0ZW1zIGluIHRoZSBzYW1lIHNo
YXBpbmcgY29udGV4dCAoInRleHQ8c3Bhbj5tb3JlIiA8LSBpbmxpbmUgYm94IHN0YXJ0KQorICAg
IGF1dG8mIHJ1bnMgPSBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuY29udGludW91c0NvbnRl
bnQoKS5ydW5zKCk7CisKKyAgICBhdXRvIGlzRmlyc3RGb3JtYXR0ZWRMaW5lQ2FuZGlkYXRlID0g
dGhpcy0+aXNGaXJzdEZvcm1hdHRlZExpbmVDYW5kaWRhdGUoKTsKKyAgICBlbnVtIGNsYXNzIFNo
YXBpbmdUeXBlIDogdWludDhfdCB7IENvbnRlbnQsIEJyZWFrLCBLZWVwIH07CisgICAgc3RydWN0
IENvbnRlbnQgeworICAgICAgICBTaGFwaW5nVHlwZSB0eXBlIHsgU2hhcGluZ1R5cGU6OkJyZWFr
IH07CisgICAgICAgIHNpemVfdCBpbmRleCB7IDAgfTsKKyAgICB9OworICAgIFZlY3RvcjxDb250
ZW50PiBjb250ZW50TGlzdDsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgcnVu
cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9IHJ1bnNbaW5k
ZXhdLmlubGluZUl0ZW07CisKKyAgICAgICAgYXV0byB0eXBlID0gc3RkOjpvcHRpb25hbDxTaGFw
aW5nVHlwZT4geyB9OworICAgICAgICBzd2l0Y2ggKGlubGluZUl0ZW0udHlwZSgpKSB7CisgICAg
ICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6VGV4dDoKKyAgICAgICAgICAgIHR5cGUgPSBkb3du
Y2FzdDxJbmxpbmVUZXh0SXRlbT4oaW5saW5lSXRlbSkuaXNXaGl0ZXNwYWNlKCkgPyBTaGFwaW5n
VHlwZTo6QnJlYWsgOiBTaGFwaW5nVHlwZTo6Q29udGVudDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OkF0b21pY0lubGluZUJveDoKKyAgICAgICAg
ICAgIHR5cGUgPSBTaGFwaW5nVHlwZTo6QnJlYWs7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpJbmxpbmVCb3hTdGFydDogeworICAgICAgICAgICAg
YXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGlu
bGluZUl0ZW0ubGF5b3V0Qm94KCkpOworICAgICAgICAgICAgYXV0byBoYXNEZWNvcmF0aW9uID0g
Ym94R2VvbWV0cnkubWFyZ2luU3RhcnQoKSB8fCBib3hHZW9tZXRyeS5ib3JkZXJTdGFydCgpIHx8
IGJveEdlb21ldHJ5LnBhZGRpbmdTdGFydCgpOworICAgICAgICAgICAgdHlwZSA9IGhhc0RlY29y
YXRpb24gPyBTaGFwaW5nVHlwZTo6QnJlYWsgOiBTaGFwaW5nVHlwZTo6S2VlcDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6SW5s
aW5lQm94RW5kOiB7CisgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdD
b250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5lSXRlbS5sYXlvdXRCb3goKSk7CisgICAgICAg
ICAgICBhdXRvIGhhc0RlY29yYXRpb24gPSBib3hHZW9tZXRyeS5tYXJnaW5FbmQoKSB8fCBib3hH
ZW9tZXRyeS5ib3JkZXJFbmQoKSB8fCBib3hHZW9tZXRyeS5wYWRkaW5nRW5kKCk7CisgICAgICAg
ICAgICB0eXBlID0gaGFzRGVjb3JhdGlvbiA/IFNoYXBpbmdUeXBlOjpCcmVhayA6IFNoYXBpbmdU
eXBlOjpLZWVwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJ
bmxpbmVJdGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrOgorICAgICAgICBjYXNlIElubGluZUl0ZW06
OlR5cGU6OlNvZnRMaW5lQnJlYWs6CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6V29y
ZEJyZWFrT3Bwb3J0dW5pdHk6CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6RmxvYXQ6
CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6T3BhcXVlOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc2hvdWxkSWdub3JlID0gWyZdIHsKKyAgICAgICAg
ICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IGlmICgqdHlwZSA9PSBTaGFwaW5nVHlwZTo6Q29udGVudCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gY29udGVudExpc3QuaXNFbXB0eSgpIHx8ICp0
eXBlID09IGNvbnRlbnRMaXN0Lmxhc3QoKS50eXBlOworICAgICAgICB9OworICAgICAgICBpZiAo
IXNob3VsZElnbm9yZSgpKQorICAgICAgICAgICAgY29udGVudExpc3QuYXBwZW5kKENvbnRlbnQg
eyAqdHlwZSwgaW5kZXggfSk7CisgICAgfQorCisgICAgaWYgKGNvbnRlbnRMaXN0LmlzRW1wdHko
KSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9CisKKyAgICBpZiAoY29udGVudExpc3QubGFzdCgpLnR5cGUgIT0gU2hhcGluZ1R5cGU6
OkNvbnRlbnQpCisgICAgICAgIGNvbnRlbnRMaXN0LnJlbW92ZUxhc3QoKTsKKworICAgIEFTU0VS
VChjb250ZW50TGlzdC5maXJzdCgpLnR5cGUgPT0gU2hhcGluZ1R5cGU6OkNvbnRlbnQgJiYgY29u
dGVudExpc3QubGFzdCgpLnR5cGUgPT0gU2hhcGluZ1R5cGU6OkNvbnRlbnQpOworICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+PiByYW5nZXM7CisKKyAgICBDaGVja2VkUHRyIGxh
c3RGb250Q2FzY2FkZSA9ICZyb290U3R5bGUoKS5mb250Q2FzY2FkZSgpOworICAgIGF1dG8gbGVh
ZGluZ0NvbnRlbnRSdW5JbmRleCA9IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7IH07CisgICAgYXV0
byB0cmFpbGluZ0NvbnRlbnRSdW5JbmRleCA9IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7IH07Cisg
ICAgYXV0byBoYXNCb3VuZGFyeUJldHdlZW4gPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8gZW50cnkg
OiBjb250ZW50TGlzdCkgeworICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpIHsKKyAgICAgICAg
Y2FzZSBTaGFwaW5nVHlwZTo6QnJlYWs6CisgICAgICAgICAgICBpZiAobGVhZGluZ0NvbnRlbnRS
dW5JbmRleCAmJiB0cmFpbGluZ0NvbnRlbnRSdW5JbmRleCAmJiBoYXNCb3VuZGFyeUJldHdlZW4p
CisgICAgICAgICAgICAgICAgcmFuZ2VzLmFwcGVuZCh7ICpsZWFkaW5nQ29udGVudFJ1bkluZGV4
LCAqdHJhaWxpbmdDb250ZW50UnVuSW5kZXggfSk7CisgICAgICAgICAgICBsZWFkaW5nQ29udGVu
dFJ1bkluZGV4ID0geyB9OworICAgICAgICAgICAgdHJhaWxpbmdDb250ZW50UnVuSW5kZXggPSB7
IH07CisgICAgICAgICAgICBoYXNCb3VuZGFyeUJldHdlZW4gPSBmYWxzZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFNoYXBpbmdUeXBlOjpLZWVwOgorICAgICAgICAgICAgaWYg
KGhhc0JvdW5kYXJ5QmV0d2VlbikgeworICAgICAgICAgICAgICAgIC8vIE5lc3RlZCBpbmxpbmUg
Ym94ZXMgZS5nLiA8c3Bhbj5jb250ZW50PHNwYW4+bW9yZTxzcGFuPmFuZCBzb21lIG1vcmUKKyAg
ICAgICAgICAgICAgICBBU1NFUlQobGVhZGluZ0NvbnRlbnRSdW5JbmRleCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGVhZGluZ0NvbnRl
bnRSdW5JbmRleCkKKyAgICAgICAgICAgICAgICBoYXNCb3VuZGFyeUJldHdlZW4gPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2hhcGluZ1R5cGU6OkNvbnRlbnQ6Cisg
ICAgICAgICAgICBpZiAoIWxlYWRpbmdDb250ZW50UnVuSW5kZXgpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihydW5zW2Vu
dHJ5LmluZGV4XS5pbmxpbmVJdGVtKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVUZXh0
Qm94ID0gaW5saW5lVGV4dEl0ZW0uaW5saW5lVGV4dEJveCgpOworICAgICAgICAgICAgICAgIGF1
dG8gaXNFbGlnaWJsZVRleHQgPSAhaW5saW5lVGV4dEJveC5jYW5Vc2VTaW1wbGVGb250Q29kZVBh
dGgoKSAmJiAhaW5saW5lVGV4dEJveC5pc0NvbWJpbmVkKCk7CisgICAgICAgICAgICAgICAgaWYg
KGlzRWxpZ2libGVUZXh0KQorICAgICAgICAgICAgICAgICAgICBsZWFkaW5nQ29udGVudFJ1bklu
ZGV4ID0gZW50cnkuaW5kZXg7CisgICAgICAgICAgICAgICAgbGFzdEZvbnRDYXNjYWRlID0gaXNG
aXJzdEZvcm1hdHRlZExpbmVDYW5kaWRhdGUgPyAmaW5saW5lVGV4dEl0ZW0uZmlyc3RMaW5lU3R5
bGUoKS5mb250Q2FzY2FkZSgpIDogJmlubGluZVRleHRJdGVtLnN0eWxlKCkuZm9udENhc2NhZGUo
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQm91bmRhcnlCZXR3ZWVuKSB7CisgICAgICAg
ICAgICAgICAgYXV0byYgaW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4o
cnVuc1tlbnRyeS5pbmRleF0uaW5saW5lSXRlbSk7CisgICAgICAgICAgICAgICAgaWYgKCpsYXN0
Rm9udENhc2NhZGUuZ2V0KCkgPT0gKGlzRmlyc3RGb3JtYXR0ZWRMaW5lQ2FuZGlkYXRlID8gaW5s
aW5lVGV4dEl0ZW0uZmlyc3RMaW5lU3R5bGUoKS5mb250Q2FzY2FkZSgpIDogaW5saW5lVGV4dEl0
ZW0uc3R5bGUoKS5mb250Q2FzY2FkZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdD
b250ZW50UnVuSW5kZXggPSBlbnRyeS5pbmRleDsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgbGVhZGluZ0NvbnRlbnRSdW5JbmRleCA9IHsgfTsKKyAgICAgICAg
ICAgICAgICAgICAgdHJhaWxpbmdDb250ZW50UnVuSW5kZXggPSB7IH07CisgICAgICAgICAgICAg
ICAgICAgIGhhc0JvdW5kYXJ5QmV0d2VlbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChsZWFkaW5nQ29udGVudFJ1
bkluZGV4ICYmIHRyYWlsaW5nQ29udGVudFJ1bkluZGV4ICYmIGhhc0JvdW5kYXJ5QmV0d2VlbikK
KyAgICAgICAgcmFuZ2VzLmFwcGVuZCh7ICpsZWFkaW5nQ29udGVudFJ1bkluZGV4LCAqdHJhaWxp
bmdDb250ZW50UnVuSW5kZXggfSk7CisKKyAgICByZXR1cm4gcmFuZ2VzOworfQorCit2b2lkIExp
bmVCdWlsZGVyOjphcHBseVNoYXBpbmdJZk5lZWRlZChMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlk
YXRlKQoreworICAgIGlmICghbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LmlzU2hhcGluZ0Nh
bmRpZGF0ZUJ5Q29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBydW5zID0g
bGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LmNvbnRpbnVvdXNDb250ZW50KCkucnVucygpOwor
ICAgIGF1dG8gc2hhcGluZ1JhbmdlcyA9IGNvbGxlY3RTaGFwaW5nUmFuZ2VzKGxpbmVDYW5kaWRh
dGUpOworICAgIGZvciAoYXV0byByYW5nZSA6IHNoYXBpbmdSYW5nZXMpIHsKKyAgICAgICAgaWYg
KHJhbmdlLmZpcnN0ID49IHJhbmdlLnNlY29uZCB8fCByYW5nZS5maXJzdCA+PSBydW5zLnNpemUo
KSB8fCByYW5nZS5zZWNvbmQgPj0gcnVucy5zaXplKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
cnVuc1tyYW5nZS5maXJzdF0uc2hhcGluZ0JvdW5kYXJ5ID0gSW5saW5lQ29udGVudEJyZWFrZXI6
OkNvbnRpbnVvdXNDb250ZW50OjpSdW46OlNoYXBpbmdCb3VuZGFyeTo6U3RhcnQ7CisgICAgICAg
IHJ1bnNbcmFuZ2Uuc2Vjb25kXS5zaGFwaW5nQm91bmRhcnkgPSBJbmxpbmVDb250ZW50QnJlYWtl
cjo6Q29udGludW91c0NvbnRlbnQ6OlJ1bjo6U2hhcGluZ0JvdW5kYXJ5OjpFbmQ7CisgICAgfQor
fQorCiB2b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlk
YXRlJiBsaW5lQ2FuZGlkYXRlLCBzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+IHN0YXJ0RW5kSW5k
ZXgsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIElubGluZUxheW91dFVuaXQg
Y3VycmVudExvZ2ljYWxSaWdodCwgU2tpcEZsb2F0cyBza2lwRmxvYXRzKQogewogICAgIEFTU0VS
VChzdGFydEVuZEluZGV4LmZpcnN0IDwgbGF5b3V0UmFuZ2UuZW5kSW5kZXgoKSk7CkBAIC04MDYs
NiArOTYyLDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGlu
ZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc3RkOjpwYWkKICAgICB9OwogICAgIHNldFRyYWls
aW5nU29mdEh5cGhlbldpZHRoKCk7CiAgICAgbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LnNl
dEhhc1RyYWlsaW5nU29mdFdyYXBPcHBvcnR1bml0eShoYXNUcmFpbGluZ1NvZnRXcmFwT3Bwb3J0
dW5pdHkoc3RhcnRFbmRJbmRleC5zZWNvbmQsIGxheW91dFJhbmdlLmVuZEluZGV4KCksIG1faW5s
aW5lSXRlbUxpc3QpKTsKKyAgICBhcHBseVNoYXBpbmdJZk5lZWRlZChsaW5lQ2FuZGlkYXRlKTsK
IH0KIAogc3RhdGljIGlubGluZSBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKGNvbnN0
IExpbmUmIGxpbmUsIElubGluZUxheW91dFVuaXQgbGluZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPElu
dHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQpAQCAtMTIxOCwxNCArMTM3NSwx
NiBAQCBJbmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0IExpbmVCdWlsZGVyOjpoYW5kbGVJbmxp
bmVDb250ZW50V2l0aENsb25lZERlY29yYXRpbwogICAgIHJldHVybiBpbmxpbmVDb250ZW50QnJl
YWtlcigpLnByb2Nlc3NJbmxpbmVDb250ZW50KGNvbnRpbnVvdXNJbmxpbmVDb250ZW50LCBsaW5l
U3RhdHVzKTsKIH0KIAotdm9pZCBMaW5lQnVpbGRlcjo6Y29tbWl0Q2FuaWRhdGVDb250ZW50KGNv
bnN0IExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHN0ZDo6b3B0aW9uYWw8SW5saW5lQ29u
dGVudEJyZWFrZXI6OlJlc3VsdDo6UGFydGlhbFRyYWlsaW5nQ29udGVudD4gcGFydGlhbFRyYWls
aW5nQ29udGVudCkKK3ZvaWQgTGluZUJ1aWxkZXI6OmNvbW1pdENhbmRpZGF0ZUNvbnRlbnQoY29u
c3QgTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc3RkOjpvcHRpb25hbDxJbmxpbmVDb250
ZW50QnJlYWtlcjo6UmVzdWx0OjpQYXJ0aWFsVHJhaWxpbmdDb250ZW50PiBwYXJ0aWFsVHJhaWxp
bmdDb250ZW50KQogewotICAgIGF1dG8mIHJ1bnMgPSBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRl
bnQuY29udGludW91c0NvbnRlbnQoKS5ydW5zKCk7CisgICAgYXV0byYgaW5saW5lQ29udGVudCA9
IGxpbmVDYW5kaWRhdGUuaW5saW5lQ29udGVudDsKKyAgICBhdXRvJiBydW5zID0gaW5saW5lQ29u
dGVudC5jb250aW51b3VzQ29udGVudCgpLnJ1bnMoKTsKICAgICBpZiAocnVucy5pc0VtcHR5KCkp
IHsKICAgICAgICAgQVNTRVJUKCFwYXJ0aWFsVHJhaWxpbmdDb250ZW50KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIGF1dG8gc2hhcGluZ0JvdW5kYXJ5U3RhcnQgPSBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4geyB9OwogICAgIGF1dG8gYXBwZW5kUnVuID0gWyZdKGF1dG8mIGluZGV4KSB7
CiAgICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNbaW5kZXhdOwogICAgICAgICBhdXRvJiBpbmxpbmVJ
dGVtID0gcnVuLmlubGluZUl0ZW07CkBAIC0xMjM0LDcgKzEzOTMsMjkgQEAgdm9pZCBMaW5lQnVp
bGRlcjo6Y29tbWl0Q2FuaWRhdGVDb250ZW50KGNvbnN0IExpbmVDYW5kaWRhdGUmIGxpbmVDYW5k
aWRhdGUsIHN0ZDoKICAgICAgICAgICAgIG1fbGluZS5zZXRDb250ZW50TmVlZHNCaWRpUmVvcmRl
cmluZygpOwogCiAgICAgICAgIGlmIChhdXRvKiBpbmxpbmVUZXh0SXRlbSA9IGR5bmFtaWNEb3du
Y2FzdDxJbmxpbmVUZXh0SXRlbT4oaW5saW5lSXRlbSkpIHsKLSAgICAgICAgICAgIG1fbGluZS5h
cHBlbmRUZXh0KCppbmxpbmVUZXh0SXRlbSwgcnVuLnN0eWxlLCBydW4uY29udGVudFdpZHRoKCks
IHsgfSk7CisgICAgICAgICAgICBhdXRvIHNoYXBpbmdCb3VuZGFyeSA9IFsmXSgpIC0+IHN0ZDo6
b3B0aW9uYWw8TGluZTo6U2hhcGluZ0JvdW5kYXJ5PiB7CisgICAgICAgICAgICAgICAgLy8gU3Bl
Y2lhbCBjYXNlIHRyYWlsaW5nIHBhcnRpYWwgcnVuIGFzIHNoYXBpbmcgZW5kLgorICAgICAgICAg
ICAgICAgIGlmIChzaGFwaW5nQm91bmRhcnlTdGFydCAmJiBwYXJ0aWFsVHJhaWxpbmdDb250ZW50
ICYmIHBhcnRpYWxUcmFpbGluZ0NvbnRlbnQtPnRyYWlsaW5nUnVuSW5kZXggPT0gaW5kZXgpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB7IExpbmU6OlNoYXBpbmdCb3VuZGFyeTo6RW5kIH07
CisKKyAgICAgICAgICAgICAgICBpZiAocnVuLnNoYXBpbmdCb3VuZGFyeSA9PSBJbmxpbmVDb250
ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OlJ1bjo6U2hhcGluZ0JvdW5kYXJ5OjpTdGFy
dCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIXNoYXBpbmdCb3VuZGFyeVN0YXJ0KTsK
KyAgICAgICAgICAgICAgICAgICAgc2hhcGluZ0JvdW5kYXJ5U3RhcnQgPSBpbmRleDsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgTGluZTo6U2hhcGluZ0JvdW5kYXJ5OjpTdGFydCB9Owor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChydW4uc2hhcGluZ0JvdW5k
YXJ5ID09IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuOjpTaGFw
aW5nQm91bmRhcnk6OkVuZCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcGluZ0Jv
dW5kYXJ5U3RhcnQpOworICAgICAgICAgICAgICAgICAgICBzaGFwaW5nQm91bmRhcnlTdGFydCA9
IHsgfTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgTGluZTo6U2hhcGluZ0JvdW5kYXJ5
OjpFbmQgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoc2hhcGlu
Z0JvdW5kYXJ5U3RhcnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IExpbmU6OlNoYXBp
bmdCb3VuZGFyeTo6TWlkZGxlIH07CisKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIG1fbGluZS5hcHBlbmRUZXh0KCppbmxpbmVUZXh0SXRl
bSwgcnVuLnN0eWxlLCBydW4uY29udGVudFdpZHRoKCksIHNoYXBpbmdCb3VuZGFyeSgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMjg4LDcgKzE0NjksNyBAQCB2b2lk
IExpbmVCdWlsZGVyOjpjb21taXRDYW5pZGF0ZUNvbnRlbnQoY29uc3QgTGluZUNhbmRpZGF0ZSYg
bGluZUNhbmRpZGF0ZSwgc3RkOgogICAgICAgICAgICAgLy8gQ3JlYXRlIGFuZCBjb21taXQgcGFy
dGlhbCB0cmFpbGluZyBpdGVtLgogICAgICAgICAgICAgaWYgKGF1dG8qIHRyYWlsaW5nSW5saW5l
VGV4dEl0ZW0gPSBkeW5hbWljRG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bnNbdHJhaWxpbmdS
dW5JbmRleF0uaW5saW5lSXRlbSkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHBhcnRpYWxUcmFp
bGluZ1RleHRJdGVtID0gdHJhaWxpbmdJbmxpbmVUZXh0SXRlbS0+bGVmdChwYXJ0aWFsUnVuLT5s
ZW5ndGgpOwotICAgICAgICAgICAgICAgIG1fbGluZS5hcHBlbmRUZXh0KHBhcnRpYWxUcmFpbGlu
Z1RleHRJdGVtLCB0cmFpbGluZ0lubGluZVRleHRJdGVtLT5zdHlsZSgpLCBwYXJ0aWFsUnVuLT5s
b2dpY2FsV2lkdGgsIHsgfSk7CisgICAgICAgICAgICAgICAgbV9saW5lLmFwcGVuZFRleHQocGFy
dGlhbFRyYWlsaW5nVGV4dEl0ZW0sIHRyYWlsaW5nSW5saW5lVGV4dEl0ZW0tPnN0eWxlKCksIHBh
cnRpYWxSdW4tPmxvZ2ljYWxXaWR0aCwgc2hhcGluZ0JvdW5kYXJ5U3RhcnQgPyBzdGQ6Om1ha2Vf
b3B0aW9uYWwoTGluZTo6U2hhcGluZ0JvdW5kYXJ5OjpFbmQpIDogc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgICAgICAgICBpZiAodHJhaWxpbmdJbmxpbmVUZXh0SXRlbS0+YmlkaUxldmVsKCkgIT0g
VUJJRElfREVGQVVMVF9MVFIpCiAgICAgICAgICAgICAgICAgICAgIG1fbGluZS5zZXRDb250ZW50
TmVlZHNCaWRpUmVvcmRlcmluZygpOwogICAgICAgICAgICAgfSBlbHNlCkBAIC0xMzExLDcgKzE0
OTIsNyBAQCBMaW5lQnVpbGRlcjo6UmVzdWx0IExpbmVCdWlsZGVyOjpwcm9jZXNzTGluZUJyZWFr
aW5nUmVzdWx0KGNvbnN0IExpbmVDYW5kaWRhdGUmCiAgICAgc3dpdGNoIChsaW5lQnJlYWtpbmdS
ZXN1bHQuYWN0aW9uKSB7CiAgICAgY2FzZSBJbmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0OjpB
Y3Rpb246OktlZXA6IHsKICAgICAgICAgLy8gVGhpcyBjb250aW51b3VzIGNvbnRlbnQgY2FuIGJl
IGZ1bGx5IHBsYWNlZCBvbiB0aGUgY3VycmVudCBsaW5lLgotICAgICAgICBjb21taXRDYW5pZGF0
ZUNvbnRlbnQobGluZUNhbmRpZGF0ZSwgbGluZUJyZWFraW5nUmVzdWx0LnBhcnRpYWxUcmFpbGlu
Z0NvbnRlbnQpOworICAgICAgICBjb21taXRDYW5kaWRhdGVDb250ZW50KGxpbmVDYW5kaWRhdGUs
IGxpbmVCcmVha2luZ1Jlc3VsdC5wYXJ0aWFsVHJhaWxpbmdDb250ZW50KTsKICAgICAgICAgLy8g
V2UgYXJlIGtlZXBpbmcgdGhpcyBjb250ZW50IG9uIHRoZSBsaW5lIGJ1dCB3ZSBuZWVkIHRvIGNo
ZWNrIGlmIHdlIGNvdWxkIGhhdmUgd3JhcHBlZCBoZXJlCiAgICAgICAgIC8vIGluIG9yZGVyIHRv
IGJlIGFibGUgdG8gcmV2ZXJ0IGJhY2sgdG8gdGhpcyBwb3NpdGlvbiBpZiBuZWVkZWQuCiAgICAg
ICAgIC8vIExldCdzIGp1c3QgaWdub3JlIGNhc2VzIGxpa2UgY29sbGFwc2VkIGxlYWRpbmcgd2hp
dGVzcGFjZSBmb3Igbm93LgpAQCAtMTM3Miw3ICsxNTUzLDcgQEAgTGluZUJ1aWxkZXI6OlJlc3Vs
dCBMaW5lQnVpbGRlcjo6cHJvY2Vzc0xpbmVCcmVha2luZ1Jlc3VsdChjb25zdCBMaW5lQ2FuZGlk
YXRlJgogICAgICAgICBBU1NFUlQobGluZUJyZWFraW5nUmVzdWx0LmlzRW5kT2ZMaW5lID09IElu
bGluZUNvbnRlbnRCcmVha2VyOjpJc0VuZE9mTGluZTo6WWVzKTsKICAgICAgICAgLy8gQ29tbWl0
IHRoZSBjb21iaW5hdGlvbiBvZiBmdWxsIGFuZCBwYXJ0aWFsIGNvbnRlbnQgb24gdGhlIGN1cnJl
bnQgbGluZS4KICAgICAgICAgQVNTRVJUKGxpbmVCcmVha2luZ1Jlc3VsdC5wYXJ0aWFsVHJhaWxp
bmdDb250ZW50KTsKLSAgICAgICAgY29tbWl0Q2FuaWRhdGVDb250ZW50KGxpbmVDYW5kaWRhdGUs
IGxpbmVCcmVha2luZ1Jlc3VsdC5wYXJ0aWFsVHJhaWxpbmdDb250ZW50KTsKKyAgICAgICAgY29t
bWl0Q2FuZGlkYXRlQ29udGVudChsaW5lQ2FuZGlkYXRlLCBsaW5lQnJlYWtpbmdSZXN1bHQucGFy
dGlhbFRyYWlsaW5nQ29udGVudCk7CiAgICAgICAgIC8vIFdoZW4gYnJlYWtpbmcgbXVsdGlwbGUg
cnVucyA8c3BhbiBzdHlsZT0id29yZC1icmVhazogYnJlYWstYWxsIj50ZXh0PC9zcGFuPjxzcGFu
PmNvbnRlbnQ8L3NwYW4+LCB3ZSBtaWdodCBlbmQgdXAgYnJlYWtpbmcgdGhlbSBhdCBydW4gYm91
bmRhcnkuCiAgICAgICAgIC8vIEl0IHNpbXBseSBtZWFucyB3ZSBkb24ndCByZWFsbHkgaGF2ZSBh
IHBhcnRpYWwgcnVuLiBQYXJ0aWFsIGNvbnRlbnQgeWVzLCBidXQgbm90IHBhcnRpYWwgcnVuLgog
ICAgICAgICBhdXRvIHRyYWlsaW5nUnVuSW5kZXggPSBsaW5lQnJlYWtpbmdSZXN1bHQucGFydGlh
bFRyYWlsaW5nQ29udGVudC0+dHJhaWxpbmdSdW5JbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5oCmluZGV4IDcyNDA5ZTIzMzhlMy4uZWM1NTcyYTQxZGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFNraXBGbG9hdHMgOiBib29sIHsgTm8sIFllcyB9
OwogICAgIHZvaWQgY2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYsIHN0ZDo6
cGFpcjxzaXplX3QsIHNpemVfdD4gc3RhcnRFbmRJbmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdl
JiBuZWVkc0xheW91dFJhbmdlLCBJbmxpbmVMYXlvdXRVbml0IGN1cnJlbnRMb2dpY2FsUmlnaHQs
IFNraXBGbG9hdHMgPSBTa2lwRmxvYXRzOjpObyk7CisgICAgdm9pZCBhcHBseVNoYXBpbmdJZk5l
ZWRlZChMaW5lQ2FuZGlkYXRlJik7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxzaXplX3QsIHNpemVf
dD4+IGNvbGxlY3RTaGFwaW5nUmFuZ2VzKGNvbnN0IExpbmVDYW5kaWRhdGUmKSBjb25zdDsKICAg
ICBJbmxpbmVMYXlvdXRVbml0IGxlYWRpbmdQdW5jdHVhdGlvbldpZHRoRm9yTGluZUNhbmRpYXRl
KGNvbnN0IExpbmVDYW5kaWRhdGUmKSBjb25zdDsKICAgICBJbmxpbmVMYXlvdXRVbml0IHRyYWls
aW5nUHVuY3R1YXRpb25PclN0b3BPckNvbW1hV2lkdGhGb3JMaW5lQ2FuZGlhdGUoc2l6ZV90IGxh
c3RJbmxpbmVUZXh0SXRlbUluZGV4LCBzaXplX3QgbGF5b3V0UmFuZ2VFbmQpIGNvbnN0OwogCkBA
IC02Nyw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBSZWN0QW5kRmxvYXRDb25zdHJh
aW50cyBmbG9hdEF2b2lkaW5nUmVjdChjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3Qs
IElubGluZUxheW91dFVuaXQgbGluZU1hcmdpblN0YXJ0KSBjb25zdDsKICAgICBSZWN0QW5kRmxv
YXRDb25zdHJhaW50cyBhZGp1c3RlZExpbmVSZWN0V2l0aENhbmRpZGF0ZUlubGluZUNvbnRlbnQo
Y29uc3QgTGluZUNhbmRpZGF0ZSYpIGNvbnN0OwotICAgIHZvaWQgY29tbWl0Q2FuaWRhdGVDb250
ZW50KGNvbnN0IExpbmVDYW5kaWRhdGUmLCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVh
a2VyOjpSZXN1bHQ6OlBhcnRpYWxUcmFpbGluZ0NvbnRlbnQ+KTsKKyAgICB2b2lkIGNvbW1pdENh
bmRpZGF0ZUNvbnRlbnQoY29uc3QgTGluZUNhbmRpZGF0ZSYsIHN0ZDo6b3B0aW9uYWw8SW5saW5l
Q29udGVudEJyZWFrZXI6OlJlc3VsdDo6UGFydGlhbFRyYWlsaW5nQ29udGVudD4pOwogICAgIHNp
emVfdCByZWJ1aWxkTGluZVdpdGhJbmxpbmVDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYg
bmVlZHNMYXlvdXRSYW5nZSwgY29uc3QgSW5saW5lSXRlbSYgbGFzdElubGluZUl0ZW1Ub0FkZCk7
CiAgICAgc2l6ZV90IHJlYnVpbGRMaW5lRm9yVHJhaWxpbmdTb2Z0SHlwaGVuKGNvbnN0IElubGlu
ZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UpOwogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBJbmxp
bmVSZWN0JiBpbml0aWFsTGluZUxvZ2ljYWxSZWN0LCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5l
ZWRzTGF5b3V0UmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UHJldmlvdXNMaW5lPiYsIGJvb2wg
aXNGaXJzdEZvcm1hdHRlZExpbmVDYW5kaWRhdGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>476758</attachid>
            <date>2025-09-16 08:47:23 -0700</date>
            <delta_ts>2025-09-16 12:00:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-298889-20250916084722.patch</filename>
            <type>text/plain</type>
            <size>21096</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA2ZWQxNTkyYjM1ZDljZDM4NDMxZTZiYzJkMmRlMDhjMWQyMzljODJkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMTYgU2VwIDIwMjUgMDg6NDU6MjMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbdGV4dCBz
aGFwaW5nXSBTZXQgdXAgc2hhcGluZyBib3VuZGFyeSBmb3IgcnVucy4KIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTg4ODkKClJldmlld2VkIGJ5IEFudHRpIEtvaXZp
c3RvLgoKVGhpcyBwYXRjaCBpcyBpbiBwcmVwYXJhdGlvbiBmb3Igc3VwcG9ydGluZyB0ZXh0IHNo
YXBpbmcgYWNyb3NzIGlubGluZSBib3ggYm91bmRhcmllcy4KCjEuIENvbXB1dGUgc2hhcGluZyBi
b3VuZGFyaWVzIGFuZCBzZXQgdGhlbSBvbiBjb250aW51b3VzQ29udGVudCdzIHJ1bnMgKGlucHV0
IHRvIGxpbmUgYnJlYWtpbmcpCihzZWUgY29sbGVjdFNoYXBpbmdSYW5nZXMgZm9yIGRldGFpbHMp
CjIuIFNldCBjb21wdXRlZCBzaGFwaW5nIGJvdW5kYXJpZXMgb24gdGhlIGxpbmUgcnVucyBhZnRl
ciBsaW5lIGJyZWFraW5nIChzZWUgY29tbWl0Q2FuZGlkYXRlQ29udGVudCkKCiogU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFr
ZXIuaDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXND
b250ZW50OjpydW5zKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVDYW5k
aWRhdGU6OklubGluZUNvbnRlbnQ6OmNvbnRpbnVvdXNDb250ZW50KToKKFdlYkNvcmU6OkxheW91
dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6aXNTaGFwaW5nQ2FuZGlkYXRlQnlDb250
ZW50IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVu
dDo6YXBwZW5kSW5saW5lSXRlbSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVDYW5kaWRhdGU6Oklu
bGluZUNvbnRlbnQ6OnJlc2V0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbGxl
Y3RTaGFwaW5nUmFuZ2VzIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFw
cGx5U2hhcGluZ0lmTmVlZGVkKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNhbmRp
ZGF0ZUNvbnRlbnRGb3JMaW5lKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbW1p
dENhbmRpZGF0ZUNvbnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6cHJvY2Vz
c0xpbmVCcmVha2luZ1Jlc3VsdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjb21t
aXRDYW5pZGF0ZUNvbnRlbnQpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmg6Ci0tLQogLi4uL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5oICAgICAgICAgICAgIHwgICAzICsKIC4uLi9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwICAgICAgICAgICAgICB8IDE5NyArKysrKysrKysrKysrKysr
Ky0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaCAgICAgICAgICAgICAgICB8ICAgNCAr
LQogMyBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaAppbmRleCBiMGY5YTYyYzc1
NjEuLjE0ZTBjZjMzNjFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJl
YWtlci5oCkBAIC0xMTIsMTIgKzExMiwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGU7CiAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IG9mZnNldCB7
IDAgfTsKICAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgdGV4dFNwYWNpbmdBZGp1c3RtZW50
IHsgMCB9OworICAgICAgICAgICAgZW51bSBjbGFzcyBTaGFwaW5nQm91bmRhcnkgOiBib29sIHsg
U3RhcnQsIEVuZCB9OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxTaGFwaW5nQm91bmRhcnk+
IHNoYXBpbmdCb3VuZGFyeSB7IH07CiAKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbV9jb250ZW50V2lkdGggeyAwIH07CiAgICAgICAgIH07CiAgICAgICAg
IHVzaW5nIFJ1bkxpc3QgPSBWZWN0b3I8UnVuLCAzPjsKICAgICAgICAgY29uc3QgUnVuTGlzdCYg
cnVucygpIGNvbnN0IHsgcmV0dXJuIG1fcnVuczsgfQorICAgICAgICBSdW5MaXN0JiBydW5zKCkg
eyByZXR1cm4gbV9ydW5zOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGFwcGVuZFRv
UnVuTGlzdChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlv
dXRVbml0IG9mZnNldCwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50V2lkdGgsIElubGluZUxheW91
dFVuaXQgdGV4dFNwYWNpbmdBZGp1c3RtZW50ID0gMC5mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA4MjUwOTc1ZjkxZjQuLjBhZWYxZDUxZDJiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMTg3LDYgKzE4Nyw3
IEBAIHN0cnVjdCBMaW5lQ2FuZGlkYXRlIHsKIAogICAgIHN0cnVjdCBJbmxpbmVDb250ZW50IHsK
ICAgICAgICAgY29uc3QgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50JiBj
b250aW51b3VzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGludW91c0NvbnRlbnQ7IH0K
KyAgICAgICAgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50JiBjb250aW51
b3VzQ29udGVudCgpIHsgcmV0dXJuIG1fY29udGludW91c0NvbnRlbnQ7IH0KICAgICAgICAgY29u
c3QgSW5saW5lSXRlbSogdHJhaWxpbmdMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX3RyYWls
aW5nTGluZUJyZWFrOyB9CiAgICAgICAgIGNvbnN0IElubGluZUl0ZW0qIHRyYWlsaW5nV29yZEJy
ZWFrT3Bwb3J0dW5pdHkoKSBjb25zdCB7IHJldHVybiBtX3RyYWlsaW5nV29yZEJyZWFrT3Bwb3J0
dW5pdHk7IH0KIApAQCAtMjA5LDYgKzIxMCw4IEBAIHN0cnVjdCBMaW5lQ2FuZGlkYXRlIHsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpcnN0VGV4dFJ1bkluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9maXJzdFRleHRSdW5JbmRleDsgfQogICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gbGFzdFRleHRSdW5JbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFRleHRSdW5JbmRleDsg
fQogCisgICAgICAgIGJvb2wgaXNTaGFwaW5nQ2FuZGlkYXRlQnlDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXM7IH0KKwogICAgIHByaXZhdGU6CiAg
ICAgICAgIElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudCBtX2NvbnRpbnVv
dXNDb250ZW50OwogICAgICAgICBjb25zdCBJbmxpbmVJdGVtKiBtX3RyYWlsaW5nTGluZUJyZWFr
IHsgbnVsbHB0ciB9OwpAQCAtMjE3LDYgKzIyMCw4IEBAIHN0cnVjdCBMaW5lQ2FuZGlkYXRlIHsK
ICAgICAgICAgYm9vbCBtX2hhc1RyYWlsaW5nU29mdFdyYXBPcHBvcnR1bml0eSB7IGZhbHNlIH07
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2ZpcnN0VGV4dFJ1bkluZGV4IHsgfTsK
ICAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fbGFzdFRleHRSdW5JbmRleCB7IH07Cisg
ICAgICAgIGJvb2wgbV9oYXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXMgeyBmYWxzZSB9OworICAg
ICAgICBib29sIG1faGFzSW5saW5lQm94QWZ0ZXJUZXh0Q29udGVudCB7IGZhbHNlIH07CiAgICAg
fTsKIAogICAgIC8vIENhbmRpZGF0ZSBjb250ZW50IGlzIGEgY29sbGVjdGlvbiBvZiBpbmxpbmUg
Y29udGVudCBvciBhIGZsb2F0IGJveC4KQEAgLTIyNiwxMyArMjMxLDIwIEBAIHN0cnVjdCBMaW5l
Q2FuZGlkYXRlIHsKIAogaW5saW5lIHZvaWQgTGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6
YXBwZW5kSW5saW5lSXRlbShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoLCBJbmxpbmVMYXlv
dXRVbml0IHRleHRTcGFjaW5nQWRqdXN0bWVudCkKIHsKLSAgICBpZiAoaW5saW5lSXRlbS5pc0F0
b21pY0lubGluZUJveCgpIHx8IGlubGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydE9yRW5kKCkgfHwg
aW5saW5lSXRlbS5pc09wYXF1ZSgpKQorICAgIGlmIChpbmxpbmVJdGVtLmlzQXRvbWljSW5saW5l
Qm94KCkgfHwgaW5saW5lSXRlbS5pc09wYXF1ZSgpKQogICAgICAgICByZXR1cm4gbV9jb250aW51
b3VzQ29udGVudC5hcHBlbmQoaW5saW5lSXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCwgdGV4dFNw
YWNpbmdBZGp1c3RtZW50KTsKIAorICAgIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnRP
ckVuZCgpKSB7CisgICAgICAgIG1faGFzSW5saW5lQm94QWZ0ZXJUZXh0Q29udGVudCA9IG1faGFz
SW5saW5lQm94QWZ0ZXJUZXh0Q29udGVudCB8fCBtX2ZpcnN0VGV4dFJ1bkluZGV4OworICAgICAg
ICBtX2NvbnRpbnVvdXNDb250ZW50LmFwcGVuZChpbmxpbmVJdGVtLCBzdHlsZSwgbG9naWNhbFdp
ZHRoLCB0ZXh0U3BhY2luZ0FkanVzdG1lbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgaWYgKGF1dG8qIGlubGluZVRleHRJdGVtID0gZHluYW1pY0Rvd25jYXN0PElubGluZVRleHRJ
dGVtPihpbmxpbmVJdGVtKSkgewogICAgICAgICBhdXRvIG51bWJlck9mUnVucyA9IG1fY29udGlu
dW91c0NvbnRlbnQucnVucygpLnNpemUoKTsKICAgICAgICAgbV9maXJzdFRleHRSdW5JbmRleCA9
IG1fZmlyc3RUZXh0UnVuSW5kZXgudmFsdWVfb3IobnVtYmVyT2ZSdW5zKTsKICAgICAgICAgbV9s
YXN0VGV4dFJ1bkluZGV4ID0gbnVtYmVyT2ZSdW5zOworICAgICAgICBtX2hhc1RleHRDb250ZW50
U3Bhbm5pbmdCb3hlcyA9IG1faGFzVGV4dENvbnRlbnRTcGFubmluZ0JveGVzIHx8IG1faGFzSW5s
aW5lQm94QWZ0ZXJUZXh0Q29udGVudDsKICAgICAgICAgcmV0dXJuIG1fY29udGludW91c0NvbnRl
bnQuYXBwZW5kVGV4dENvbnRlbnQoKmlubGluZVRleHRJdGVtLCBzdHlsZSwgbG9naWNhbFdpZHRo
KTsKICAgICB9CiAKQEAgLTI1OCw2ICsyNzAsOCBAQCBpbmxpbmUgdm9pZCBMaW5lQ2FuZGlkYXRl
OjpJbmxpbmVDb250ZW50OjpyZXNldCgpCiAgICAgbV9oYXNUcmFpbGluZ1NvZnRXcmFwT3Bwb3J0
dW5pdHkgPSB7IH07CiAgICAgbV9maXJzdFRleHRSdW5JbmRleCA9IHsgfTsKICAgICBtX2xhc3RU
ZXh0UnVuSW5kZXggPSB7IH07CisgICAgbV9oYXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXMgPSB7
IH07CisgICAgbV9oYXNJbmxpbmVCb3hBZnRlclRleHRDb250ZW50ID0geyB9OwogfQogCiBpbmxp
bmUgdm9pZCBMaW5lQ2FuZGlkYXRlOjpyZXNldCgpCkBAIC0yNjYsNyArMjgwLDYgQEAgaW5saW5l
IHZvaWQgTGluZUNhbmRpZGF0ZTo6cmVzZXQoKQogICAgIGlubGluZUNvbnRlbnQucmVzZXQoKTsK
IH0KIAotCiBMaW5lQnVpbGRlcjo6TGluZUJ1aWxkZXIoSW5saW5lRm9ybWF0dGluZ0NvbnRleHQm
IGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBIb3Jpem9udGFsQ29uc3RyYWludHMgcm9vdEhvcml6
b250YWxDb25zdHJhaW50cywgY29uc3QgSW5saW5lSXRlbUxpc3QmIGlubGluZUl0ZW1MaXN0LCBU
ZXh0U3BhY2luZ0NvbnRleHQgdGV4dFNwYWNpbmdDb250ZXh0KQogICAgIDogQWJzdHJhY3RMaW5l
QnVpbGRlcihpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
cm9vdCgpLCByb290SG9yaXpvbnRhbENvbnN0cmFpbnRzLCBpbmxpbmVJdGVtTGlzdCkKICAgICAs
IG1fZmxvYXRpbmdDb250ZXh0KGlubGluZUZvcm1hdHRpbmdDb250ZXh0LmZsb2F0aW5nQ29udGV4
dCgpKQpAQCAtNjg5LDYgKzcwMiwxNDkgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lQnVpbGRlcjo6
dHJhaWxpbmdQdW5jdHVhdGlvbk9yU3RvcE9yQ29tbWFXaWR0aEZvckxpbmVDYW5kaWEKICAgICBy
ZXR1cm4geyB9OwogfQogCitWZWN0b3I8c3RkOjpwYWlyPHNpemVfdCwgc2l6ZV90Pj4gTGluZUJ1
aWxkZXI6OmNvbGxlY3RTaGFwaW5nUmFuZ2VzKGNvbnN0IExpbmVDYW5kaWRhdGUmIGxpbmVDYW5k
aWRhdGUpIGNvbnN0Cit7CisgICAgLy8gTm9ybWFsbHkgY2FuZGlkYXRlIGNvbnRlbnQgaXMgaW5s
aW5lIGl0ZW1zIGJldHdlZW4gMiBzb2Z0IHdyYXBpbmcgb3Bwb3J0dW5pdGllcyBlLmcuCisgICAg
Ly8gPGRpdj5zb21lIHRleHQ8c3Bhbj5tb3JlIHRleHQ8L3NwYW4+PC9kaXY+CisgICAgLy8gd2hl
cmUgY2FuZGlkYXRlIGNvbnRlbnRzIGFyZSBhcyBmb2xsb3dzOiAic29tZSIgInRleHQiIHRleHQ8
c3Bhbj5tb3JlIiAidGV4dDwvc3Bhbj4iCisgICAgLy8gSG93ZXZlciB3aGVuIHdoaXRlIHNwYWNl
IGlzIHByZXNlcnZlZCBhbmQvb3Igbm8gd3JhcHBpbmcgaXMgYWxsb3dlZCB0aGUgZW50aXJlIGNv
bnRlbnQgaXMKKyAgICAvLyBvbmUgY2FuZGlkYXRlIGNvbnRlbnQgd2l0aCBhbGwgc29ydHMgb2Yg
aW5saW5lIGxldmVsIGNvbnRlbnQuCisKKyAgICAvLyBMZXQncyBmaW5kIHNoYXBpbmcgcmFuZ2Vz
IGJ5IGZpbHRlcmluZyBvdXQgY29udGVudCB0aGF0IGFyZSBub3QgcmVsZXZhbnQgdG8gc2hhcGlu
ZywKKyAgICAvLyBmb2xsb3dlZCBieSBwcm9jZXNzaW5nIHRoaXMgY29tcHJlc3NlZCBsaXN0IG9m
IFtjb250ZW50ICwgYnJlYWssIGpvaW50IF0gd2hlcmUKKyAgICAvLyAnY29udGVudCcgbWVhbnMg
c2hhcGFibGUgY29udGVudCAodGV4dCkKKyAgICAvLyAnYnJlYWsnIG1lYW5zIHNoYXBlIGJyZWFr
aW5nIGdhcCAoZS5nLiB3aGl0ZXNwYWNlIGJldHdlZW4gMiB3b3JkcykKKyAgICAvLyAna2VlcCcg
bWVhbnMgYm94IHRoYXQga2VlcHMgYWRqYWNlbnQgaW5saW5lIGl0ZW1zIGluIHRoZSBzYW1lIHNo
YXBpbmcgY29udGV4dCAoInRleHQ8c3Bhbj5tb3JlIiA8LSBpbmxpbmUgYm94IHN0YXJ0KQorICAg
IGF1dG8mIHJ1bnMgPSBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuY29udGludW91c0NvbnRl
bnQoKS5ydW5zKCk7CisKKyAgICBhdXRvIGlzRmlyc3RGb3JtYXR0ZWRMaW5lQ2FuZGlkYXRlID0g
dGhpcy0+aXNGaXJzdEZvcm1hdHRlZExpbmVDYW5kaWRhdGUoKTsKKyAgICBlbnVtIGNsYXNzIFNo
YXBpbmdUeXBlIDogdWludDhfdCB7IENvbnRlbnQsIEJyZWFrLCBLZWVwIH07CisgICAgc3RydWN0
IENvbnRlbnQgeworICAgICAgICBTaGFwaW5nVHlwZSB0eXBlIHsgU2hhcGluZ1R5cGU6OkJyZWFr
IH07CisgICAgICAgIHNpemVfdCBpbmRleCB7IDAgfTsKKyAgICB9OworICAgIFZlY3RvcjxDb250
ZW50PiBjb250ZW50TGlzdDsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgcnVu
cy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9IHJ1bnNbaW5k
ZXhdLmlubGluZUl0ZW07CisKKyAgICAgICAgYXV0byB0eXBlID0gc3RkOjpvcHRpb25hbDxTaGFw
aW5nVHlwZT4geyB9OworICAgICAgICBzd2l0Y2ggKGlubGluZUl0ZW0udHlwZSgpKSB7CisgICAg
ICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6VGV4dDoKKyAgICAgICAgICAgIHR5cGUgPSBkb3du
Y2FzdDxJbmxpbmVUZXh0SXRlbT4oaW5saW5lSXRlbSkuaXNXaGl0ZXNwYWNlKCkgPyBTaGFwaW5n
VHlwZTo6QnJlYWsgOiBTaGFwaW5nVHlwZTo6Q29udGVudDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OkF0b21pY0lubGluZUJveDoKKyAgICAgICAg
ICAgIHR5cGUgPSBTaGFwaW5nVHlwZTo6QnJlYWs7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpJbmxpbmVCb3hTdGFydDogeworICAgICAgICAgICAg
YXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGlu
bGluZUl0ZW0ubGF5b3V0Qm94KCkpOworICAgICAgICAgICAgYXV0byBoYXNEZWNvcmF0aW9uID0g
Ym94R2VvbWV0cnkubWFyZ2luU3RhcnQoKSB8fCBib3hHZW9tZXRyeS5ib3JkZXJTdGFydCgpIHx8
IGJveEdlb21ldHJ5LnBhZGRpbmdTdGFydCgpOworICAgICAgICAgICAgdHlwZSA9IGhhc0RlY29y
YXRpb24gPyBTaGFwaW5nVHlwZTo6QnJlYWsgOiBTaGFwaW5nVHlwZTo6S2VlcDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6SW5s
aW5lQm94RW5kOiB7CisgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdD
b250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5lSXRlbS5sYXlvdXRCb3goKSk7CisgICAgICAg
ICAgICBhdXRvIGhhc0RlY29yYXRpb24gPSBib3hHZW9tZXRyeS5tYXJnaW5FbmQoKSB8fCBib3hH
ZW9tZXRyeS5ib3JkZXJFbmQoKSB8fCBib3hHZW9tZXRyeS5wYWRkaW5nRW5kKCk7CisgICAgICAg
ICAgICB0eXBlID0gaGFzRGVjb3JhdGlvbiA/IFNoYXBpbmdUeXBlOjpCcmVhayA6IFNoYXBpbmdU
eXBlOjpLZWVwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJ
bmxpbmVJdGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrOgorICAgICAgICBjYXNlIElubGluZUl0ZW06
OlR5cGU6OlNvZnRMaW5lQnJlYWs6CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6V29y
ZEJyZWFrT3Bwb3J0dW5pdHk6CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6RmxvYXQ6
CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6T3BhcXVlOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc2hvdWxkSWdub3JlID0gWyZdIHsKKyAgICAgICAg
ICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IGlmICgqdHlwZSA9PSBTaGFwaW5nVHlwZTo6Q29udGVudCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gY29udGVudExpc3QuaXNFbXB0eSgpIHx8ICp0
eXBlID09IGNvbnRlbnRMaXN0Lmxhc3QoKS50eXBlOworICAgICAgICB9OworICAgICAgICBpZiAo
IXNob3VsZElnbm9yZSgpKQorICAgICAgICAgICAgY29udGVudExpc3QuYXBwZW5kKENvbnRlbnQg
eyAqdHlwZSwgaW5kZXggfSk7CisgICAgfQorCisgICAgaWYgKGNvbnRlbnRMaXN0LmlzRW1wdHko
KSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICB9CisKKyAgICBpZiAoY29udGVudExpc3QubGFzdCgpLnR5cGUgIT0gU2hhcGluZ1R5cGU6
OkNvbnRlbnQpCisgICAgICAgIGNvbnRlbnRMaXN0LnJlbW92ZUxhc3QoKTsKKworICAgIEFTU0VS
VChjb250ZW50TGlzdC5maXJzdCgpLnR5cGUgPT0gU2hhcGluZ1R5cGU6OkNvbnRlbnQgJiYgY29u
dGVudExpc3QubGFzdCgpLnR5cGUgPT0gU2hhcGluZ1R5cGU6OkNvbnRlbnQpOworICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+PiByYW5nZXM7CisKKyAgICBDaGVja2VkUHRyIGxh
c3RGb250Q2FzY2FkZSA9ICZyb290U3R5bGUoKS5mb250Q2FzY2FkZSgpOworICAgIGF1dG8gbGVh
ZGluZ0NvbnRlbnRSdW5JbmRleCA9IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7IH07CisgICAgYXV0
byB0cmFpbGluZ0NvbnRlbnRSdW5JbmRleCA9IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7IH07Cisg
ICAgYXV0byBoYXNCb3VuZGFyeUJldHdlZW4gPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8gZW50cnkg
OiBjb250ZW50TGlzdCkgeworICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpIHsKKyAgICAgICAg
Y2FzZSBTaGFwaW5nVHlwZTo6QnJlYWs6CisgICAgICAgICAgICBpZiAobGVhZGluZ0NvbnRlbnRS
dW5JbmRleCAmJiB0cmFpbGluZ0NvbnRlbnRSdW5JbmRleCAmJiBoYXNCb3VuZGFyeUJldHdlZW4p
CisgICAgICAgICAgICAgICAgcmFuZ2VzLmFwcGVuZCh7ICpsZWFkaW5nQ29udGVudFJ1bkluZGV4
LCAqdHJhaWxpbmdDb250ZW50UnVuSW5kZXggfSk7CisgICAgICAgICAgICBsZWFkaW5nQ29udGVu
dFJ1bkluZGV4ID0geyB9OworICAgICAgICAgICAgdHJhaWxpbmdDb250ZW50UnVuSW5kZXggPSB7
IH07CisgICAgICAgICAgICBoYXNCb3VuZGFyeUJldHdlZW4gPSBmYWxzZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFNoYXBpbmdUeXBlOjpLZWVwOgorICAgICAgICAgICAgaWYg
KGhhc0JvdW5kYXJ5QmV0d2VlbikgeworICAgICAgICAgICAgICAgIC8vIE5lc3RlZCBpbmxpbmUg
Ym94ZXMgZS5nLiA8c3Bhbj5jb250ZW50PHNwYW4+bW9yZTxzcGFuPmFuZCBzb21lIG1vcmUKKyAg
ICAgICAgICAgICAgICBBU1NFUlQobGVhZGluZ0NvbnRlbnRSdW5JbmRleCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGVhZGluZ0NvbnRl
bnRSdW5JbmRleCkKKyAgICAgICAgICAgICAgICBoYXNCb3VuZGFyeUJldHdlZW4gPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2hhcGluZ1R5cGU6OkNvbnRlbnQ6Cisg
ICAgICAgICAgICBpZiAoIWxlYWRpbmdDb250ZW50UnVuSW5kZXgpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihydW5zW2Vu
dHJ5LmluZGV4XS5pbmxpbmVJdGVtKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVUZXh0
Qm94ID0gaW5saW5lVGV4dEl0ZW0uaW5saW5lVGV4dEJveCgpOworICAgICAgICAgICAgICAgIGF1
dG8gaXNFbGlnaWJsZVRleHQgPSAhaW5saW5lVGV4dEJveC5jYW5Vc2VTaW1wbGVGb250Q29kZVBh
dGgoKSAmJiAhaW5saW5lVGV4dEJveC5pc0NvbWJpbmVkKCk7CisgICAgICAgICAgICAgICAgaWYg
KGlzRWxpZ2libGVUZXh0KQorICAgICAgICAgICAgICAgICAgICBsZWFkaW5nQ29udGVudFJ1bklu
ZGV4ID0gZW50cnkuaW5kZXg7CisgICAgICAgICAgICAgICAgbGFzdEZvbnRDYXNjYWRlID0gaXNG
aXJzdEZvcm1hdHRlZExpbmVDYW5kaWRhdGUgPyAmaW5saW5lVGV4dEl0ZW0uZmlyc3RMaW5lU3R5
bGUoKS5mb250Q2FzY2FkZSgpIDogJmlubGluZVRleHRJdGVtLnN0eWxlKCkuZm9udENhc2NhZGUo
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQm91bmRhcnlCZXR3ZWVuKSB7CisgICAgICAg
ICAgICAgICAgYXV0byYgaW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4o
cnVuc1tlbnRyeS5pbmRleF0uaW5saW5lSXRlbSk7CisgICAgICAgICAgICAgICAgaWYgKCpsYXN0
Rm9udENhc2NhZGUuZ2V0KCkgPT0gKGlzRmlyc3RGb3JtYXR0ZWRMaW5lQ2FuZGlkYXRlID8gaW5s
aW5lVGV4dEl0ZW0uZmlyc3RMaW5lU3R5bGUoKS5mb250Q2FzY2FkZSgpIDogaW5saW5lVGV4dEl0
ZW0uc3R5bGUoKS5mb250Q2FzY2FkZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdD
b250ZW50UnVuSW5kZXggPSBlbnRyeS5pbmRleDsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgbGVhZGluZ0NvbnRlbnRSdW5JbmRleCA9IHsgfTsKKyAgICAgICAg
ICAgICAgICAgICAgdHJhaWxpbmdDb250ZW50UnVuSW5kZXggPSB7IH07CisgICAgICAgICAgICAg
ICAgICAgIGhhc0JvdW5kYXJ5QmV0d2VlbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChsZWFkaW5nQ29udGVudFJ1
bkluZGV4ICYmIHRyYWlsaW5nQ29udGVudFJ1bkluZGV4ICYmIGhhc0JvdW5kYXJ5QmV0d2VlbikK
KyAgICAgICAgcmFuZ2VzLmFwcGVuZCh7ICpsZWFkaW5nQ29udGVudFJ1bkluZGV4LCAqdHJhaWxp
bmdDb250ZW50UnVuSW5kZXggfSk7CisKKyAgICByZXR1cm4gcmFuZ2VzOworfQorCit2b2lkIExp
bmVCdWlsZGVyOjphcHBseVNoYXBpbmdJZk5lZWRlZChMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlk
YXRlKQoreworICAgIGlmICghbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LmlzU2hhcGluZ0Nh
bmRpZGF0ZUJ5Q29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBydW5zID0g
bGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LmNvbnRpbnVvdXNDb250ZW50KCkucnVucygpOwor
ICAgIGF1dG8gc2hhcGluZ1JhbmdlcyA9IGNvbGxlY3RTaGFwaW5nUmFuZ2VzKGxpbmVDYW5kaWRh
dGUpOworICAgIGZvciAoYXV0byByYW5nZSA6IHNoYXBpbmdSYW5nZXMpIHsKKyAgICAgICAgaWYg
KHJhbmdlLmZpcnN0ID49IHJhbmdlLnNlY29uZCB8fCByYW5nZS5maXJzdCA+PSBydW5zLnNpemUo
KSB8fCByYW5nZS5zZWNvbmQgPj0gcnVucy5zaXplKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
cnVuc1tyYW5nZS5maXJzdF0uc2hhcGluZ0JvdW5kYXJ5ID0gSW5saW5lQ29udGVudEJyZWFrZXI6
OkNvbnRpbnVvdXNDb250ZW50OjpSdW46OlNoYXBpbmdCb3VuZGFyeTo6U3RhcnQ7CisgICAgICAg
IHJ1bnNbcmFuZ2Uuc2Vjb25kXS5zaGFwaW5nQm91bmRhcnkgPSBJbmxpbmVDb250ZW50QnJlYWtl
cjo6Q29udGludW91c0NvbnRlbnQ6OlJ1bjo6U2hhcGluZ0JvdW5kYXJ5OjpFbmQ7CisgICAgfQor
fQorCiB2b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlk
YXRlJiBsaW5lQ2FuZGlkYXRlLCBzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+IHN0YXJ0RW5kSW5k
ZXgsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIElubGluZUxheW91dFVuaXQg
Y3VycmVudExvZ2ljYWxSaWdodCwgU2tpcEZsb2F0cyBza2lwRmxvYXRzKQogewogICAgIEFTU0VS
VChzdGFydEVuZEluZGV4LmZpcnN0IDwgbGF5b3V0UmFuZ2UuZW5kSW5kZXgoKSk7CkBAIC04MTUs
NiArOTcxLDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGlu
ZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc3RkOjpwYWkKICAgICB9OwogICAgIHNldFRyYWls
aW5nU29mdEh5cGhlbldpZHRoKCk7CiAgICAgbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LnNl
dEhhc1RyYWlsaW5nU29mdFdyYXBPcHBvcnR1bml0eShoYXNUcmFpbGluZ1NvZnRXcmFwT3Bwb3J0
dW5pdHkoc3RhcnRFbmRJbmRleC5zZWNvbmQsIGxheW91dFJhbmdlLmVuZEluZGV4KCksIG1faW5s
aW5lSXRlbUxpc3QpKTsKKyAgICBhcHBseVNoYXBpbmdJZk5lZWRlZChsaW5lQ2FuZGlkYXRlKTsK
IH0KIAogc3RhdGljIGlubGluZSBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKGNvbnN0
IExpbmUmIGxpbmUsIElubGluZUxheW91dFVuaXQgbGluZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPElu
dHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQpAQCAtMTIyNywxNCArMTM4NCwx
NiBAQCBJbmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0IExpbmVCdWlsZGVyOjpoYW5kbGVJbmxp
bmVDb250ZW50V2l0aENsb25lZERlY29yYXRpbwogICAgIHJldHVybiBpbmxpbmVDb250ZW50QnJl
YWtlcigpLnByb2Nlc3NJbmxpbmVDb250ZW50KGNvbnRpbnVvdXNJbmxpbmVDb250ZW50LCBsaW5l
U3RhdHVzKTsKIH0KIAotdm9pZCBMaW5lQnVpbGRlcjo6Y29tbWl0Q2FuaWRhdGVDb250ZW50KGNv
bnN0IExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHN0ZDo6b3B0aW9uYWw8SW5saW5lQ29u
dGVudEJyZWFrZXI6OlJlc3VsdDo6UGFydGlhbFRyYWlsaW5nQ29udGVudD4gcGFydGlhbFRyYWls
aW5nQ29udGVudCkKK3ZvaWQgTGluZUJ1aWxkZXI6OmNvbW1pdENhbmRpZGF0ZUNvbnRlbnQoY29u
c3QgTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc3RkOjpvcHRpb25hbDxJbmxpbmVDb250
ZW50QnJlYWtlcjo6UmVzdWx0OjpQYXJ0aWFsVHJhaWxpbmdDb250ZW50PiBwYXJ0aWFsVHJhaWxp
bmdDb250ZW50KQogewotICAgIGF1dG8mIHJ1bnMgPSBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRl
bnQuY29udGludW91c0NvbnRlbnQoKS5ydW5zKCk7CisgICAgYXV0byYgaW5saW5lQ29udGVudCA9
IGxpbmVDYW5kaWRhdGUuaW5saW5lQ29udGVudDsKKyAgICBhdXRvJiBydW5zID0gaW5saW5lQ29u
dGVudC5jb250aW51b3VzQ29udGVudCgpLnJ1bnMoKTsKICAgICBpZiAocnVucy5pc0VtcHR5KCkp
IHsKICAgICAgICAgQVNTRVJUKCFwYXJ0aWFsVHJhaWxpbmdDb250ZW50KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIGF1dG8gc2hhcGluZ0JvdW5kYXJ5U3RhcnQgPSBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4geyB9OwogICAgIGF1dG8gYXBwZW5kUnVuID0gWyZdKGF1dG8mIGluZGV4KSB7
CiAgICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNbaW5kZXhdOwogICAgICAgICBhdXRvJiBpbmxpbmVJ
dGVtID0gcnVuLmlubGluZUl0ZW07CkBAIC0xMjQzLDcgKzE0MDIsMjkgQEAgdm9pZCBMaW5lQnVp
bGRlcjo6Y29tbWl0Q2FuaWRhdGVDb250ZW50KGNvbnN0IExpbmVDYW5kaWRhdGUmIGxpbmVDYW5k
aWRhdGUsIHN0ZDoKICAgICAgICAgICAgIG1fbGluZS5zZXRDb250ZW50TmVlZHNCaWRpUmVvcmRl
cmluZygpOwogCiAgICAgICAgIGlmIChhdXRvKiBpbmxpbmVUZXh0SXRlbSA9IGR5bmFtaWNEb3du
Y2FzdDxJbmxpbmVUZXh0SXRlbT4oaW5saW5lSXRlbSkpIHsKLSAgICAgICAgICAgIG1fbGluZS5h
cHBlbmRUZXh0KCppbmxpbmVUZXh0SXRlbSwgcnVuLnN0eWxlLCBydW4uY29udGVudFdpZHRoKCks
IHsgfSk7CisgICAgICAgICAgICBhdXRvIHNoYXBpbmdCb3VuZGFyeSA9IFsmXSgpIC0+IHN0ZDo6
b3B0aW9uYWw8TGluZTo6U2hhcGluZ0JvdW5kYXJ5PiB7CisgICAgICAgICAgICAgICAgLy8gU3Bl
Y2lhbCBjYXNlIHRyYWlsaW5nIHBhcnRpYWwgcnVuIGFzIHNoYXBpbmcgZW5kLgorICAgICAgICAg
ICAgICAgIGlmIChzaGFwaW5nQm91bmRhcnlTdGFydCAmJiBwYXJ0aWFsVHJhaWxpbmdDb250ZW50
ICYmIHBhcnRpYWxUcmFpbGluZ0NvbnRlbnQtPnRyYWlsaW5nUnVuSW5kZXggPT0gaW5kZXgpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB7IExpbmU6OlNoYXBpbmdCb3VuZGFyeTo6RW5kIH07
CisKKyAgICAgICAgICAgICAgICBpZiAocnVuLnNoYXBpbmdCb3VuZGFyeSA9PSBJbmxpbmVDb250
ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OlJ1bjo6U2hhcGluZ0JvdW5kYXJ5OjpTdGFy
dCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIXNoYXBpbmdCb3VuZGFyeVN0YXJ0KTsK
KyAgICAgICAgICAgICAgICAgICAgc2hhcGluZ0JvdW5kYXJ5U3RhcnQgPSBpbmRleDsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgTGluZTo6U2hhcGluZ0JvdW5kYXJ5OjpTdGFydCB9Owor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChydW4uc2hhcGluZ0JvdW5k
YXJ5ID09IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuOjpTaGFw
aW5nQm91bmRhcnk6OkVuZCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcGluZ0Jv
dW5kYXJ5U3RhcnQpOworICAgICAgICAgICAgICAgICAgICBzaGFwaW5nQm91bmRhcnlTdGFydCA9
IHsgfTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgTGluZTo6U2hhcGluZ0JvdW5kYXJ5
OjpFbmQgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoc2hhcGlu
Z0JvdW5kYXJ5U3RhcnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IExpbmU6OlNoYXBp
bmdCb3VuZGFyeTo6TWlkZGxlIH07CisKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIG1fbGluZS5hcHBlbmRUZXh0KCppbmxpbmVUZXh0SXRl
bSwgcnVuLnN0eWxlLCBydW4uY29udGVudFdpZHRoKCksIHNoYXBpbmdCb3VuZGFyeSgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMjk3LDcgKzE0NzgsNyBAQCB2b2lk
IExpbmVCdWlsZGVyOjpjb21taXRDYW5pZGF0ZUNvbnRlbnQoY29uc3QgTGluZUNhbmRpZGF0ZSYg
bGluZUNhbmRpZGF0ZSwgc3RkOgogICAgICAgICAgICAgLy8gQ3JlYXRlIGFuZCBjb21taXQgcGFy
dGlhbCB0cmFpbGluZyBpdGVtLgogICAgICAgICAgICAgaWYgKGF1dG8qIHRyYWlsaW5nSW5saW5l
VGV4dEl0ZW0gPSBkeW5hbWljRG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bnNbdHJhaWxpbmdS
dW5JbmRleF0uaW5saW5lSXRlbSkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHBhcnRpYWxUcmFp
bGluZ1RleHRJdGVtID0gdHJhaWxpbmdJbmxpbmVUZXh0SXRlbS0+bGVmdChwYXJ0aWFsUnVuLT5s
ZW5ndGgpOwotICAgICAgICAgICAgICAgIG1fbGluZS5hcHBlbmRUZXh0KHBhcnRpYWxUcmFpbGlu
Z1RleHRJdGVtLCB0cmFpbGluZ0lubGluZVRleHRJdGVtLT5zdHlsZSgpLCBwYXJ0aWFsUnVuLT5s
b2dpY2FsV2lkdGgsIHsgfSk7CisgICAgICAgICAgICAgICAgbV9saW5lLmFwcGVuZFRleHQocGFy
dGlhbFRyYWlsaW5nVGV4dEl0ZW0sIHRyYWlsaW5nSW5saW5lVGV4dEl0ZW0tPnN0eWxlKCksIHBh
cnRpYWxSdW4tPmxvZ2ljYWxXaWR0aCwgc2hhcGluZ0JvdW5kYXJ5U3RhcnQgPyBzdGQ6Om1ha2Vf
b3B0aW9uYWwoTGluZTo6U2hhcGluZ0JvdW5kYXJ5OjpFbmQpIDogc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgICAgICAgICBpZiAodHJhaWxpbmdJbmxpbmVUZXh0SXRlbS0+YmlkaUxldmVsKCkgIT0g
VUJJRElfREVGQVVMVF9MVFIpCiAgICAgICAgICAgICAgICAgICAgIG1fbGluZS5zZXRDb250ZW50
TmVlZHNCaWRpUmVvcmRlcmluZygpOwogICAgICAgICAgICAgfSBlbHNlCkBAIC0xMzIwLDcgKzE1
MDEsNyBAQCBMaW5lQnVpbGRlcjo6UmVzdWx0IExpbmVCdWlsZGVyOjpwcm9jZXNzTGluZUJyZWFr
aW5nUmVzdWx0KGNvbnN0IExpbmVDYW5kaWRhdGUmCiAgICAgc3dpdGNoIChsaW5lQnJlYWtpbmdS
ZXN1bHQuYWN0aW9uKSB7CiAgICAgY2FzZSBJbmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0OjpB
Y3Rpb246OktlZXA6IHsKICAgICAgICAgLy8gVGhpcyBjb250aW51b3VzIGNvbnRlbnQgY2FuIGJl
IGZ1bGx5IHBsYWNlZCBvbiB0aGUgY3VycmVudCBsaW5lLgotICAgICAgICBjb21taXRDYW5pZGF0
ZUNvbnRlbnQobGluZUNhbmRpZGF0ZSwgbGluZUJyZWFraW5nUmVzdWx0LnBhcnRpYWxUcmFpbGlu
Z0NvbnRlbnQpOworICAgICAgICBjb21taXRDYW5kaWRhdGVDb250ZW50KGxpbmVDYW5kaWRhdGUs
IGxpbmVCcmVha2luZ1Jlc3VsdC5wYXJ0aWFsVHJhaWxpbmdDb250ZW50KTsKICAgICAgICAgLy8g
V2UgYXJlIGtlZXBpbmcgdGhpcyBjb250ZW50IG9uIHRoZSBsaW5lIGJ1dCB3ZSBuZWVkIHRvIGNo
ZWNrIGlmIHdlIGNvdWxkIGhhdmUgd3JhcHBlZCBoZXJlCiAgICAgICAgIC8vIGluIG9yZGVyIHRv
IGJlIGFibGUgdG8gcmV2ZXJ0IGJhY2sgdG8gdGhpcyBwb3NpdGlvbiBpZiBuZWVkZWQuCiAgICAg
ICAgIC8vIExldCdzIGp1c3QgaWdub3JlIGNhc2VzIGxpa2UgY29sbGFwc2VkIGxlYWRpbmcgd2hp
dGVzcGFjZSBmb3Igbm93LgpAQCAtMTM4MSw3ICsxNTYyLDcgQEAgTGluZUJ1aWxkZXI6OlJlc3Vs
dCBMaW5lQnVpbGRlcjo6cHJvY2Vzc0xpbmVCcmVha2luZ1Jlc3VsdChjb25zdCBMaW5lQ2FuZGlk
YXRlJgogICAgICAgICBBU1NFUlQobGluZUJyZWFraW5nUmVzdWx0LmlzRW5kT2ZMaW5lID09IElu
bGluZUNvbnRlbnRCcmVha2VyOjpJc0VuZE9mTGluZTo6WWVzKTsKICAgICAgICAgLy8gQ29tbWl0
IHRoZSBjb21iaW5hdGlvbiBvZiBmdWxsIGFuZCBwYXJ0aWFsIGNvbnRlbnQgb24gdGhlIGN1cnJl
bnQgbGluZS4KICAgICAgICAgQVNTRVJUKGxpbmVCcmVha2luZ1Jlc3VsdC5wYXJ0aWFsVHJhaWxp
bmdDb250ZW50KTsKLSAgICAgICAgY29tbWl0Q2FuaWRhdGVDb250ZW50KGxpbmVDYW5kaWRhdGUs
IGxpbmVCcmVha2luZ1Jlc3VsdC5wYXJ0aWFsVHJhaWxpbmdDb250ZW50KTsKKyAgICAgICAgY29t
bWl0Q2FuZGlkYXRlQ29udGVudChsaW5lQ2FuZGlkYXRlLCBsaW5lQnJlYWtpbmdSZXN1bHQucGFy
dGlhbFRyYWlsaW5nQ29udGVudCk7CiAgICAgICAgIC8vIFdoZW4gYnJlYWtpbmcgbXVsdGlwbGUg
cnVucyA8c3BhbiBzdHlsZT0id29yZC1icmVhazogYnJlYWstYWxsIj50ZXh0PC9zcGFuPjxzcGFu
PmNvbnRlbnQ8L3NwYW4+LCB3ZSBtaWdodCBlbmQgdXAgYnJlYWtpbmcgdGhlbSBhdCBydW4gYm91
bmRhcnkuCiAgICAgICAgIC8vIEl0IHNpbXBseSBtZWFucyB3ZSBkb24ndCByZWFsbHkgaGF2ZSBh
IHBhcnRpYWwgcnVuLiBQYXJ0aWFsIGNvbnRlbnQgeWVzLCBidXQgbm90IHBhcnRpYWwgcnVuLgog
ICAgICAgICBhdXRvIHRyYWlsaW5nUnVuSW5kZXggPSBsaW5lQnJlYWtpbmdSZXN1bHQucGFydGlh
bFRyYWlsaW5nQ29udGVudC0+dHJhaWxpbmdSdW5JbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5oCmluZGV4IDllOWFiNDdkZjU4Yy4uMDc3MTEwMGJlZGFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFNraXBGbG9hdHMgOiBib29sIHsgTm8sIFllcyB9
OwogICAgIHZvaWQgY2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYsIHN0ZDo6
cGFpcjxzaXplX3QsIHNpemVfdD4gc3RhcnRFbmRJbmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdl
JiBuZWVkc0xheW91dFJhbmdlLCBJbmxpbmVMYXlvdXRVbml0IGN1cnJlbnRMb2dpY2FsUmlnaHQs
IFNraXBGbG9hdHMgPSBTa2lwRmxvYXRzOjpObyk7CisgICAgdm9pZCBhcHBseVNoYXBpbmdJZk5l
ZWRlZChMaW5lQ2FuZGlkYXRlJik7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxzaXplX3QsIHNpemVf
dD4+IGNvbGxlY3RTaGFwaW5nUmFuZ2VzKGNvbnN0IExpbmVDYW5kaWRhdGUmKSBjb25zdDsKICAg
ICBJbmxpbmVMYXlvdXRVbml0IGxlYWRpbmdQdW5jdHVhdGlvbldpZHRoRm9yTGluZUNhbmRpYXRl
KGNvbnN0IExpbmVDYW5kaWRhdGUmKSBjb25zdDsKICAgICBJbmxpbmVMYXlvdXRVbml0IHRyYWls
aW5nUHVuY3R1YXRpb25PclN0b3BPckNvbW1hV2lkdGhGb3JMaW5lQ2FuZGlhdGUoY29uc3QgTGlu
ZUNhbmRpZGF0ZSYsIHNpemVfdCBzdGFydEluZGV4QWZ0ZXJDYW5kaWRhdGVDb250ZW50LCAgc2l6
ZV90IGxheW91dFJhbmdlRW5kKSBjb25zdDsKIApAQCAtNjcsNyArNjksNyBAQCBwcml2YXRlOgog
ICAgIH07CiAgICAgUmVjdEFuZEZsb2F0Q29uc3RyYWludHMgZmxvYXRBdm9pZGluZ1JlY3QoY29u
c3QgSW5saW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBJbmxpbmVMYXlvdXRVbml0IGxpbmVNYXJn
aW5TdGFydCkgY29uc3Q7CiAgICAgUmVjdEFuZEZsb2F0Q29uc3RyYWludHMgYWRqdXN0ZWRMaW5l
UmVjdFdpdGhDYW5kaWRhdGVJbmxpbmVDb250ZW50KGNvbnN0IExpbmVDYW5kaWRhdGUmKSBjb25z
dDsKLSAgICB2b2lkIGNvbW1pdENhbmlkYXRlQ29udGVudChjb25zdCBMaW5lQ2FuZGlkYXRlJiwg
c3RkOjpvcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0OjpQYXJ0aWFsVHJhaWxp
bmdDb250ZW50Pik7CisgICAgdm9pZCBjb21taXRDYW5kaWRhdGVDb250ZW50KGNvbnN0IExpbmVD
YW5kaWRhdGUmLCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVha2VyOjpSZXN1bHQ6OlBh
cnRpYWxUcmFpbGluZ0NvbnRlbnQ+KTsKICAgICBzaXplX3QgcmVidWlsZExpbmVXaXRoSW5saW5l
Q29udGVudChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIGNvbnN0IElu
bGluZUl0ZW0mIGxhc3RJbmxpbmVJdGVtVG9BZGQpOwogICAgIHNpemVfdCByZWJ1aWxkTGluZUZv
clRyYWlsaW5nU29mdEh5cGhlbihjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlKTsK
ICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgSW5saW5lUmVjdCYgaW5pdGlhbExpbmVMb2dpY2Fs
UmVjdCwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFByZXZpb3VzTGluZT4mLCBib29sIGlzRmlyc3RGb3JtYXR0ZWRMaW5lQ2FuZGlk
YXRlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>476762</attachid>
            <date>2025-09-16 12:00:32 -0700</date>
            <delta_ts>2025-09-16 13:10:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-298889-20250916120031.patch</filename>
            <type>text/plain</type>
            <size>21495</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA4NDZmYTE4ZGVkOTRlOTY1MzVjMGMwNmIwNTMzMzJkMzdhYTI1YTZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMTYgU2VwIDIwMjUgMDg6NDU6MjMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbdGV4dCBz
aGFwaW5nXSBTZXQgdXAgc2hhcGluZyBib3VuZGFyeSBmb3IgcnVucy4KIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTg4ODkKClJldmlld2VkIGJ5IEFudHRpIEtvaXZp
c3RvLgoKVGhpcyBwYXRjaCBpcyBpbiBwcmVwYXJhdGlvbiBmb3Igc3VwcG9ydGluZyB0ZXh0IHNo
YXBpbmcgYWNyb3NzIGlubGluZSBib3ggYm91bmRhcmllcy4KCjEuIENvbXB1dGUgc2hhcGluZyBi
b3VuZGFyaWVzIGFuZCBzZXQgdGhlbSBvbiBjb250aW51b3VzQ29udGVudCdzIHJ1bnMgKGlucHV0
IHRvIGxpbmUgYnJlYWtpbmcpCihzZWUgY29sbGVjdFNoYXBpbmdSYW5nZXMgZm9yIGRldGFpbHMp
CjIuIFNldCBjb21wdXRlZCBzaGFwaW5nIGJvdW5kYXJpZXMgb24gdGhlIGxpbmUgcnVucyBhZnRl
ciBsaW5lIGJyZWFraW5nIChzZWUgY29tbWl0Q2FuZGlkYXRlQ29udGVudCkKCiogU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFr
ZXIuaDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXND
b250ZW50OjpydW5zKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVDYW5k
aWRhdGU6OklubGluZUNvbnRlbnQ6OmNvbnRpbnVvdXNDb250ZW50KToKKFdlYkNvcmU6OkxheW91
dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6aXNTaGFwaW5nQ2FuZGlkYXRlQnlDb250
ZW50IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVu
dDo6YXBwZW5kSW5saW5lSXRlbSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVDYW5kaWRhdGU6Oklu
bGluZUNvbnRlbnQ6OnJlc2V0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbGxl
Y3RTaGFwaW5nUmFuZ2VzIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFw
cGx5U2hhcGluZ0lmTmVlZGVkKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNhbmRp
ZGF0ZUNvbnRlbnRGb3JMaW5lKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbW1p
dENhbmRpZGF0ZUNvbnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6cHJvY2Vz
c0xpbmVCcmVha2luZ1Jlc3VsdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjb21t
aXRDYW5pZGF0ZUNvbnRlbnQpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmg6Ci0tLQogLi4uL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5oICAgICAgICAgICAgIHwgICAzICsKIC4uLi9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwICAgICAgICAgICAgICB8IDIwMyArKysrKysrKysrKysrKysr
Ky0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaCAgICAgICAgICAgICAgICB8ICAgNCAr
LQogMyBmaWxlcyBjaGFuZ2VkLCAyMDEgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaAppbmRleCBiMGY5YTYyYzc1
NjEuLjE0ZTBjZjMzNjFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJl
YWtlci5oCkBAIC0xMTIsMTIgKzExMiwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGU7CiAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IG9mZnNldCB7
IDAgfTsKICAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgdGV4dFNwYWNpbmdBZGp1c3RtZW50
IHsgMCB9OworICAgICAgICAgICAgZW51bSBjbGFzcyBTaGFwaW5nQm91bmRhcnkgOiBib29sIHsg
U3RhcnQsIEVuZCB9OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxTaGFwaW5nQm91bmRhcnk+
IHNoYXBpbmdCb3VuZGFyeSB7IH07CiAKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbV9jb250ZW50V2lkdGggeyAwIH07CiAgICAgICAgIH07CiAgICAgICAg
IHVzaW5nIFJ1bkxpc3QgPSBWZWN0b3I8UnVuLCAzPjsKICAgICAgICAgY29uc3QgUnVuTGlzdCYg
cnVucygpIGNvbnN0IHsgcmV0dXJuIG1fcnVuczsgfQorICAgICAgICBSdW5MaXN0JiBydW5zKCkg
eyByZXR1cm4gbV9ydW5zOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGFwcGVuZFRv
UnVuTGlzdChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlv
dXRVbml0IG9mZnNldCwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50V2lkdGgsIElubGluZUxheW91
dFVuaXQgdGV4dFNwYWNpbmdBZGp1c3RtZW50ID0gMC5mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA4MjUwOTc1ZjkxZjQuLjYxMWRhZTJmMTdlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMTg3LDYgKzE4Nyw3
IEBAIHN0cnVjdCBMaW5lQ2FuZGlkYXRlIHsKIAogICAgIHN0cnVjdCBJbmxpbmVDb250ZW50IHsK
ICAgICAgICAgY29uc3QgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50JiBj
b250aW51b3VzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGludW91c0NvbnRlbnQ7IH0K
KyAgICAgICAgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50JiBjb250aW51
b3VzQ29udGVudCgpIHsgcmV0dXJuIG1fY29udGludW91c0NvbnRlbnQ7IH0KICAgICAgICAgY29u
c3QgSW5saW5lSXRlbSogdHJhaWxpbmdMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX3RyYWls
aW5nTGluZUJyZWFrOyB9CiAgICAgICAgIGNvbnN0IElubGluZUl0ZW0qIHRyYWlsaW5nV29yZEJy
ZWFrT3Bwb3J0dW5pdHkoKSBjb25zdCB7IHJldHVybiBtX3RyYWlsaW5nV29yZEJyZWFrT3Bwb3J0
dW5pdHk7IH0KIApAQCAtMjA5LDYgKzIxMCw4IEBAIHN0cnVjdCBMaW5lQ2FuZGlkYXRlIHsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpcnN0VGV4dFJ1bkluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9maXJzdFRleHRSdW5JbmRleDsgfQogICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gbGFzdFRleHRSdW5JbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFRleHRSdW5JbmRleDsg
fQogCisgICAgICAgIGJvb2wgaXNTaGFwaW5nQ2FuZGlkYXRlQnlDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXM7IH0KKwogICAgIHByaXZhdGU6CiAg
ICAgICAgIElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudCBtX2NvbnRpbnVv
dXNDb250ZW50OwogICAgICAgICBjb25zdCBJbmxpbmVJdGVtKiBtX3RyYWlsaW5nTGluZUJyZWFr
IHsgbnVsbHB0ciB9OwpAQCAtMjE3LDYgKzIyMCw4IEBAIHN0cnVjdCBMaW5lQ2FuZGlkYXRlIHsK
ICAgICAgICAgYm9vbCBtX2hhc1RyYWlsaW5nU29mdFdyYXBPcHBvcnR1bml0eSB7IGZhbHNlIH07
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2ZpcnN0VGV4dFJ1bkluZGV4IHsgfTsK
ICAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fbGFzdFRleHRSdW5JbmRleCB7IH07Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2xhc3RJbmxpbmVCb3hJbmRleCB7IH07Cisg
ICAgICAgIGJvb2wgbV9oYXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXMgeyBmYWxzZSB9OwogICAg
IH07CiAKICAgICAvLyBDYW5kaWRhdGUgY29udGVudCBpcyBhIGNvbGxlY3Rpb24gb2YgaW5saW5l
IGNvbnRlbnQgb3IgYSBmbG9hdCBib3guCkBAIC0yMjYsMTMgKzIzMSwyMiBAQCBzdHJ1Y3QgTGlu
ZUNhbmRpZGF0ZSB7CiAKIGlubGluZSB2b2lkIExpbmVDYW5kaWRhdGU6OklubGluZUNvbnRlbnQ6
OmFwcGVuZElubGluZUl0ZW0oY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgSW5saW5lTGF5
b3V0VW5pdCB0ZXh0U3BhY2luZ0FkanVzdG1lbnQpCiB7Ci0gICAgaWYgKGlubGluZUl0ZW0uaXNB
dG9taWNJbmxpbmVCb3goKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnRPckVuZCgpIHx8
IGlubGluZUl0ZW0uaXNPcGFxdWUoKSkKKyAgICBpZiAoaW5saW5lSXRlbS5pc0F0b21pY0lubGlu
ZUJveCgpIHx8IGlubGluZUl0ZW0uaXNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJuIG1fY29udGlu
dW91c0NvbnRlbnQuYXBwZW5kKGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgsIHRleHRT
cGFjaW5nQWRqdXN0bWVudCk7CiAKKyAgICBpZiAoaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0
T3JFbmQoKSkgeworICAgICAgICBhdXRvIG51bWJlck9mUnVucyA9IG1fY29udGludW91c0NvbnRl
bnQucnVucygpLnNpemUoKTsKKyAgICAgICAgbV9oYXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXMg
PSBtX2hhc1RleHRDb250ZW50U3Bhbm5pbmdCb3hlcyB8fCAobV9sYXN0VGV4dFJ1bkluZGV4ICYm
IG1fbGFzdFRleHRSdW5JbmRleCA9PSBudW1iZXJPZlJ1bnMgLSAxKTsKKyAgICAgICAgbV9sYXN0
SW5saW5lQm94SW5kZXggPSBudW1iZXJPZlJ1bnM7CisgICAgICAgIG1fY29udGludW91c0NvbnRl
bnQuYXBwZW5kKGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgsIHRleHRTcGFjaW5nQWRq
dXN0bWVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoYXV0byogaW5saW5l
VGV4dEl0ZW0gPSBkeW5hbWljRG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pKSB7
CiAgICAgICAgIGF1dG8gbnVtYmVyT2ZSdW5zID0gbV9jb250aW51b3VzQ29udGVudC5ydW5zKCku
c2l6ZSgpOwogICAgICAgICBtX2ZpcnN0VGV4dFJ1bkluZGV4ID0gbV9maXJzdFRleHRSdW5JbmRl
eC52YWx1ZV9vcihudW1iZXJPZlJ1bnMpOwogICAgICAgICBtX2xhc3RUZXh0UnVuSW5kZXggPSBu
dW1iZXJPZlJ1bnM7CisgICAgICAgIG1faGFzVGV4dENvbnRlbnRTcGFubmluZ0JveGVzID0gbV9o
YXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXMgfHwgKG1fbGFzdElubGluZUJveEluZGV4ICYmIG1f
bGFzdElubGluZUJveEluZGV4ID09IG51bWJlck9mUnVucyAtIDEpOwogICAgICAgICByZXR1cm4g
bV9jb250aW51b3VzQ29udGVudC5hcHBlbmRUZXh0Q29udGVudCgqaW5saW5lVGV4dEl0ZW0sIHN0
eWxlLCBsb2dpY2FsV2lkdGgpOwogICAgIH0KIApAQCAtMjU4LDYgKzI3Miw4IEBAIGlubGluZSB2
b2lkIExpbmVDYW5kaWRhdGU6OklubGluZUNvbnRlbnQ6OnJlc2V0KCkKICAgICBtX2hhc1RyYWls
aW5nU29mdFdyYXBPcHBvcnR1bml0eSA9IHsgfTsKICAgICBtX2ZpcnN0VGV4dFJ1bkluZGV4ID0g
eyB9OwogICAgIG1fbGFzdFRleHRSdW5JbmRleCA9IHsgfTsKKyAgICBtX2xhc3RJbmxpbmVCb3hJ
bmRleCA9IHsgfTsKKyAgICBtX2hhc1RleHRDb250ZW50U3Bhbm5pbmdCb3hlcyA9IHsgfTsKIH0K
IAogaW5saW5lIHZvaWQgTGluZUNhbmRpZGF0ZTo6cmVzZXQoKQpAQCAtMjY2LDcgKzI4Miw2IEBA
IGlubGluZSB2b2lkIExpbmVDYW5kaWRhdGU6OnJlc2V0KCkKICAgICBpbmxpbmVDb250ZW50LnJl
c2V0KCk7CiB9CiAKLQogTGluZUJ1aWxkZXI6OkxpbmVCdWlsZGVyKElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHJv
b3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IElubGluZUl0ZW1MaXN0JiBpbmxpbmVJdGVt
TGlzdCwgVGV4dFNwYWNpbmdDb250ZXh0IHRleHRTcGFjaW5nQ29udGV4dCkKICAgICA6IEFic3Ry
YWN0TGluZUJ1aWxkZXIoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGlubGluZUZvcm1hdHRpbmdD
b250ZXh0LnJvb3QoKSwgcm9vdEhvcml6b250YWxDb25zdHJhaW50cywgaW5saW5lSXRlbUxpc3Qp
CiAgICAgLCBtX2Zsb2F0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mbG9hdGlu
Z0NvbnRleHQoKSkKQEAgLTY4OSw2ICs3MDQsMTUzIEBAIElubGluZUxheW91dFVuaXQgTGluZUJ1
aWxkZXI6OnRyYWlsaW5nUHVuY3R1YXRpb25PclN0b3BPckNvbW1hV2lkdGhGb3JMaW5lQ2FuZGlh
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAorVmVjdG9yPHN0ZDo6cGFpcjxzaXplX3QsIHNpemVfdD4+
IExpbmVCdWlsZGVyOjpjb2xsZWN0U2hhcGluZ1Jhbmdlcyhjb25zdCBMaW5lQ2FuZGlkYXRlJiBs
aW5lQ2FuZGlkYXRlKSBjb25zdAoreworICAgIC8vIE5vcm1hbGx5IGNhbmRpZGF0ZSBjb250ZW50
IGlzIGlubGluZSBpdGVtcyBiZXR3ZWVuIDIgc29mdCB3cmFwaW5nIG9wcG9ydHVuaXRpZXMgZS5n
LgorICAgIC8vIDxkaXY+c29tZSB0ZXh0PHNwYW4+bW9yZSB0ZXh0PC9zcGFuPjwvZGl2PgorICAg
IC8vIHdoZXJlIGNhbmRpZGF0ZSBjb250ZW50cyBhcmUgYXMgZm9sbG93czogW3NvbWVdIFsgXSBb
dGV4dDxzcGFuPm1vcmVdIFsgXSBbdGV4dDwvc3Bhbj5dCisgICAgLy8gSG93ZXZlciB3aGVuIHdo
aXRlIHNwYWNlIGlzIHByZXNlcnZlZCBhbmQvb3Igbm8gd3JhcHBpbmcgaXMgYWxsb3dlZCB0aGUg
ZW50aXJlIGNvbnRlbnQgaXMKKyAgICAvLyBvbmUgY2FuZGlkYXRlIGNvbnRlbnQgd2l0aCBhbGwg
c29ydHMgb2YgaW5saW5lIGxldmVsIGNvbnRlbnQuCisKKyAgICAvLyBMZXQncyBmaW5kIHNoYXBp
bmcgcmFuZ2VzIGJ5IGZpbHRlcmluZyBvdXQgY29udGVudCB0aGF0IGFyZSBub3QgcmVsZXZhbnQg
dG8gc2hhcGluZywKKyAgICAvLyBmb2xsb3dlZCBieSBwcm9jZXNzaW5nIHRoaXMgY29tcHJlc3Nl
ZCBsaXN0IG9mIFtjb250ZW50ICwgYnJlYWssIGpvaW50IF0gd2hlcmUKKyAgICAvLyAnY29udGVu
dCcgbWVhbnMgc2hhcGFibGUgY29udGVudCAodGV4dCkKKyAgICAvLyAnYnJlYWsnIG1lYW5zIHNo
YXBlIGJyZWFraW5nIGdhcCAoZS5nLiB3aGl0ZXNwYWNlIGJldHdlZW4gMiB3b3JkcykKKyAgICAv
LyAna2VlcCcgbWVhbnMgYm94IHRoYXQga2VlcHMgYWRqYWNlbnQgaW5saW5lIGl0ZW1zIGluIHRo
ZSBzYW1lIHNoYXBpbmcgY29udGV4dCAoInRleHQ8c3Bhbj5tb3JlIiA8LSBpbmxpbmUgYm94IHN0
YXJ0KQorICAgIGF1dG8mIHJ1bnMgPSBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuY29udGlu
dW91c0NvbnRlbnQoKS5ydW5zKCk7CisKKyAgICBhdXRvIGlzRmlyc3RGb3JtYXR0ZWRMaW5lQ2Fu
ZGlkYXRlID0gdGhpcy0+aXNGaXJzdEZvcm1hdHRlZExpbmVDYW5kaWRhdGUoKTsKKyAgICBlbnVt
IGNsYXNzIFNoYXBpbmdUeXBlIDogdWludDhfdCB7IENvbnRlbnQsIEJyZWFrLCBLZWVwIH07Cisg
ICAgc3RydWN0IENvbnRlbnQgeworICAgICAgICBTaGFwaW5nVHlwZSB0eXBlIHsgU2hhcGluZ1R5
cGU6OkJyZWFrIH07CisgICAgICAgIHNpemVfdCBpbmRleCB7IDAgfTsKKyAgICB9OworICAgIFZl
Y3RvcjxDb250ZW50PiBjb250ZW50TGlzdDsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgcnVucy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9
IHJ1bnNbaW5kZXhdLmlubGluZUl0ZW07CisKKyAgICAgICAgYXV0byB0eXBlID0gc3RkOjpvcHRp
b25hbDxTaGFwaW5nVHlwZT4geyB9OworICAgICAgICBzd2l0Y2ggKGlubGluZUl0ZW0udHlwZSgp
KSB7CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6VGV4dDoKKyAgICAgICAgICAgIHR5
cGUgPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4oaW5saW5lSXRlbSkuaXNXaGl0ZXNwYWNlKCkg
PyBTaGFwaW5nVHlwZTo6QnJlYWsgOiBTaGFwaW5nVHlwZTo6Q29udGVudDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OkF0b21pY0lubGluZUJveDoK
KyAgICAgICAgICAgIHR5cGUgPSBTaGFwaW5nVHlwZTo6QnJlYWs7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpJbmxpbmVCb3hTdGFydDogeworICAg
ICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5
Rm9yQm94KGlubGluZUl0ZW0ubGF5b3V0Qm94KCkpOworICAgICAgICAgICAgYXV0byBoYXNEZWNv
cmF0aW9uID0gYm94R2VvbWV0cnkubWFyZ2luU3RhcnQoKSB8fCBib3hHZW9tZXRyeS5ib3JkZXJT
dGFydCgpIHx8IGJveEdlb21ldHJ5LnBhZGRpbmdTdGFydCgpOworICAgICAgICAgICAgdHlwZSA9
IGhhc0RlY29yYXRpb24gPyBTaGFwaW5nVHlwZTo6QnJlYWsgOiBTaGFwaW5nVHlwZTo6S2VlcDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6
VHlwZTo6SW5saW5lQm94RW5kOiB7CisgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZv
cm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5lSXRlbS5sYXlvdXRCb3goKSk7
CisgICAgICAgICAgICBhdXRvIGhhc0RlY29yYXRpb24gPSBib3hHZW9tZXRyeS5tYXJnaW5FbmQo
KSB8fCBib3hHZW9tZXRyeS5ib3JkZXJFbmQoKSB8fCBib3hHZW9tZXRyeS5wYWRkaW5nRW5kKCk7
CisgICAgICAgICAgICB0eXBlID0gaGFzRGVjb3JhdGlvbiA/IFNoYXBpbmdUeXBlOjpCcmVhayA6
IFNoYXBpbmdUeXBlOjpLZWVwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrOgorICAgICAgICBjYXNlIElu
bGluZUl0ZW06OlR5cGU6OlNvZnRMaW5lQnJlYWs6CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6
VHlwZTo6V29yZEJyZWFrT3Bwb3J0dW5pdHk6CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlw
ZTo6RmxvYXQ6CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6T3BhcXVlOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc2hvdWxkSWdub3JlID0gWyZdIHsK
KyAgICAgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIGlmICgqdHlwZSA9PSBTaGFwaW5nVHlwZTo6Q29udGVudCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gY29udGVudExpc3QuaXNFbXB0
eSgpIHx8ICp0eXBlID09IGNvbnRlbnRMaXN0Lmxhc3QoKS50eXBlOworICAgICAgICB9OworICAg
ICAgICBpZiAoIXNob3VsZElnbm9yZSgpKQorICAgICAgICAgICAgY29udGVudExpc3QuYXBwZW5k
KENvbnRlbnQgeyAqdHlwZSwgaW5kZXggfSk7CisgICAgfQorCisgICAgaWYgKGNvbnRlbnRMaXN0
LmlzRW1wdHkoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9CisKKyAgICAvLyBUcmFpbGluZyBub24tY29udGVudCBlbnRyaWVzIHNo
b3VsZCBqdXN0IGJlIGlnbm9yZWQuCisgICAgd2hpbGUgKCFjb250ZW50TGlzdC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgaWYgKGNvbnRlbnRMaXN0Lmxhc3QoKS50eXBlID09IFNoYXBpbmdUeXBlOjpD
b250ZW50KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNvbnRlbnRMaXN0LnJlbW92ZUxh
c3QoKTsKKyAgICB9CisKKyAgICBBU1NFUlQoY29udGVudExpc3QuZmlyc3QoKS50eXBlID09IFNo
YXBpbmdUeXBlOjpDb250ZW50ICYmIGNvbnRlbnRMaXN0Lmxhc3QoKS50eXBlID09IFNoYXBpbmdU
eXBlOjpDb250ZW50KTsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHNpemVfdCwgc2l6ZV90Pj4gcmFu
Z2VzOworCisgICAgQ2hlY2tlZFB0ciBsYXN0Rm9udENhc2NhZGUgPSAmcm9vdFN0eWxlKCkuZm9u
dENhc2NhZGUoKTsKKyAgICBhdXRvIGxlYWRpbmdDb250ZW50UnVuSW5kZXggPSBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4geyB9OworICAgIGF1dG8gdHJhaWxpbmdDb250ZW50UnVuSW5kZXggPSBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4geyB9OworICAgIGF1dG8gaGFzQm91bmRhcnlCZXR3ZWVuID0gZmFs
c2U7CisgICAgZm9yIChhdXRvIGVudHJ5IDogY29udGVudExpc3QpIHsKKyAgICAgICAgc3dpdGNo
IChlbnRyeS50eXBlKSB7CisgICAgICAgIGNhc2UgU2hhcGluZ1R5cGU6OkJyZWFrOgorICAgICAg
ICAgICAgaWYgKGxlYWRpbmdDb250ZW50UnVuSW5kZXggJiYgdHJhaWxpbmdDb250ZW50UnVuSW5k
ZXggJiYgaGFzQm91bmRhcnlCZXR3ZWVuKQorICAgICAgICAgICAgICAgIHJhbmdlcy5hcHBlbmQo
eyAqbGVhZGluZ0NvbnRlbnRSdW5JbmRleCwgKnRyYWlsaW5nQ29udGVudFJ1bkluZGV4IH0pOwor
ICAgICAgICAgICAgbGVhZGluZ0NvbnRlbnRSdW5JbmRleCA9IHsgfTsKKyAgICAgICAgICAgIHRy
YWlsaW5nQ29udGVudFJ1bkluZGV4ID0geyB9OworICAgICAgICAgICAgaGFzQm91bmRhcnlCZXR3
ZWVuID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTaGFwaW5nVHlw
ZTo6S2VlcDoKKyAgICAgICAgICAgIGlmIChoYXNCb3VuZGFyeUJldHdlZW4pIHsKKyAgICAgICAg
ICAgICAgICAvLyBOZXN0ZWQgaW5saW5lIGJveGVzIGUuZy4gPHNwYW4+Y29udGVudDxzcGFuPm1v
cmU8c3Bhbj5hbmQgc29tZSBtb3JlCisgICAgICAgICAgICAgICAgQVNTRVJUKGxlYWRpbmdDb250
ZW50UnVuSW5kZXgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGxlYWRpbmdDb250ZW50UnVuSW5kZXgpCisgICAgICAgICAgICAgICAgaGFz
Qm91bmRhcnlCZXR3ZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFNoYXBpbmdUeXBlOjpDb250ZW50OgorICAgICAgICAgICAgaWYgKCFsZWFkaW5nQ29udGVudFJ1
bkluZGV4KSB7CisgICAgICAgICAgICAgICAgYXV0byYgaW5saW5lVGV4dEl0ZW0gPSBkb3duY2Fz
dDxJbmxpbmVUZXh0SXRlbT4ocnVuc1tlbnRyeS5pbmRleF0uaW5saW5lSXRlbSk7CisgICAgICAg
ICAgICAgICAgYXV0byYgaW5saW5lVGV4dEJveCA9IGlubGluZVRleHRJdGVtLmlubGluZVRleHRC
b3goKTsKKyAgICAgICAgICAgICAgICBhdXRvIGlzRWxpZ2libGVUZXh0ID0gIWlubGluZVRleHRC
b3guY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkgJiYgIWlubGluZVRleHRCb3guaXNDb21iaW5l
ZCgpICYmIChpbmxpbmVUZXh0SXRlbS5iaWRpTGV2ZWwoKSAhPSBVQklESV9ERUZBVUxUX0xUUiAm
JiAoaW5saW5lVGV4dEl0ZW0uYmlkaUxldmVsKCkgJSAyKSk7CisgICAgICAgICAgICAgICAgaWYg
KGlzRWxpZ2libGVUZXh0KQorICAgICAgICAgICAgICAgICAgICBsZWFkaW5nQ29udGVudFJ1bklu
ZGV4ID0gZW50cnkuaW5kZXg7CisgICAgICAgICAgICAgICAgbGFzdEZvbnRDYXNjYWRlID0gaXNG
aXJzdEZvcm1hdHRlZExpbmVDYW5kaWRhdGUgPyAmaW5saW5lVGV4dEl0ZW0uZmlyc3RMaW5lU3R5
bGUoKS5mb250Q2FzY2FkZSgpIDogJmlubGluZVRleHRJdGVtLnN0eWxlKCkuZm9udENhc2NhZGUo
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQm91bmRhcnlCZXR3ZWVuKSB7CisgICAgICAg
ICAgICAgICAgYXV0byYgaW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4o
cnVuc1tlbnRyeS5pbmRleF0uaW5saW5lSXRlbSk7CisgICAgICAgICAgICAgICAgaWYgKCpsYXN0
Rm9udENhc2NhZGUuZ2V0KCkgPT0gKGlzRmlyc3RGb3JtYXR0ZWRMaW5lQ2FuZGlkYXRlID8gaW5s
aW5lVGV4dEl0ZW0uZmlyc3RMaW5lU3R5bGUoKS5mb250Q2FzY2FkZSgpIDogaW5saW5lVGV4dEl0
ZW0uc3R5bGUoKS5mb250Q2FzY2FkZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdD
b250ZW50UnVuSW5kZXggPSBlbnRyeS5pbmRleDsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgbGVhZGluZ0NvbnRlbnRSdW5JbmRleCA9IHsgfTsKKyAgICAgICAg
ICAgICAgICAgICAgdHJhaWxpbmdDb250ZW50UnVuSW5kZXggPSB7IH07CisgICAgICAgICAgICAg
ICAgICAgIGhhc0JvdW5kYXJ5QmV0d2VlbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChsZWFkaW5nQ29udGVudFJ1
bkluZGV4ICYmIHRyYWlsaW5nQ29udGVudFJ1bkluZGV4ICYmIGhhc0JvdW5kYXJ5QmV0d2VlbikK
KyAgICAgICAgcmFuZ2VzLmFwcGVuZCh7ICpsZWFkaW5nQ29udGVudFJ1bkluZGV4LCAqdHJhaWxp
bmdDb250ZW50UnVuSW5kZXggfSk7CisKKyAgICByZXR1cm4gcmFuZ2VzOworfQorCit2b2lkIExp
bmVCdWlsZGVyOjphcHBseVNoYXBpbmdJZk5lZWRlZChMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlk
YXRlKQoreworICAgIGlmICghbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LmlzU2hhcGluZ0Nh
bmRpZGF0ZUJ5Q29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBydW5zID0g
bGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LmNvbnRpbnVvdXNDb250ZW50KCkucnVucygpOwor
ICAgIGF1dG8gc2hhcGluZ1JhbmdlcyA9IGNvbGxlY3RTaGFwaW5nUmFuZ2VzKGxpbmVDYW5kaWRh
dGUpOworICAgIGZvciAoYXV0byByYW5nZSA6IHNoYXBpbmdSYW5nZXMpIHsKKyAgICAgICAgaWYg
KHJhbmdlLmZpcnN0ID49IHJhbmdlLnNlY29uZCB8fCByYW5nZS5maXJzdCA+PSBydW5zLnNpemUo
KSB8fCByYW5nZS5zZWNvbmQgPj0gcnVucy5zaXplKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
cnVuc1tyYW5nZS5maXJzdF0uc2hhcGluZ0JvdW5kYXJ5ID0gSW5saW5lQ29udGVudEJyZWFrZXI6
OkNvbnRpbnVvdXNDb250ZW50OjpSdW46OlNoYXBpbmdCb3VuZGFyeTo6U3RhcnQ7CisgICAgICAg
IHJ1bnNbcmFuZ2Uuc2Vjb25kXS5zaGFwaW5nQm91bmRhcnkgPSBJbmxpbmVDb250ZW50QnJlYWtl
cjo6Q29udGludW91c0NvbnRlbnQ6OlJ1bjo6U2hhcGluZ0JvdW5kYXJ5OjpFbmQ7CisgICAgfQor
fQorCiB2b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlk
YXRlJiBsaW5lQ2FuZGlkYXRlLCBzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+IHN0YXJ0RW5kSW5k
ZXgsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UsIElubGluZUxheW91dFVuaXQg
Y3VycmVudExvZ2ljYWxSaWdodCwgU2tpcEZsb2F0cyBza2lwRmxvYXRzKQogewogICAgIEFTU0VS
VChzdGFydEVuZEluZGV4LmZpcnN0IDwgbGF5b3V0UmFuZ2UuZW5kSW5kZXgoKSk7CkBAIC04MTUs
NiArOTc3LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGlu
ZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc3RkOjpwYWkKICAgICB9OwogICAgIHNldFRyYWls
aW5nU29mdEh5cGhlbldpZHRoKCk7CiAgICAgbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50LnNl
dEhhc1RyYWlsaW5nU29mdFdyYXBPcHBvcnR1bml0eShoYXNUcmFpbGluZ1NvZnRXcmFwT3Bwb3J0
dW5pdHkoc3RhcnRFbmRJbmRleC5zZWNvbmQsIGxheW91dFJhbmdlLmVuZEluZGV4KCksIG1faW5s
aW5lSXRlbUxpc3QpKTsKKyAgICBhcHBseVNoYXBpbmdJZk5lZWRlZChsaW5lQ2FuZGlkYXRlKTsK
IH0KIAogc3RhdGljIGlubGluZSBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKGNvbnN0
IExpbmUmIGxpbmUsIElubGluZUxheW91dFVuaXQgbGluZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPElu
dHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQpAQCAtMTIyNywxNCArMTM5MCwx
NiBAQCBJbmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0IExpbmVCdWlsZGVyOjpoYW5kbGVJbmxp
bmVDb250ZW50V2l0aENsb25lZERlY29yYXRpbwogICAgIHJldHVybiBpbmxpbmVDb250ZW50QnJl
YWtlcigpLnByb2Nlc3NJbmxpbmVDb250ZW50KGNvbnRpbnVvdXNJbmxpbmVDb250ZW50LCBsaW5l
U3RhdHVzKTsKIH0KIAotdm9pZCBMaW5lQnVpbGRlcjo6Y29tbWl0Q2FuaWRhdGVDb250ZW50KGNv
bnN0IExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHN0ZDo6b3B0aW9uYWw8SW5saW5lQ29u
dGVudEJyZWFrZXI6OlJlc3VsdDo6UGFydGlhbFRyYWlsaW5nQ29udGVudD4gcGFydGlhbFRyYWls
aW5nQ29udGVudCkKK3ZvaWQgTGluZUJ1aWxkZXI6OmNvbW1pdENhbmRpZGF0ZUNvbnRlbnQoY29u
c3QgTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc3RkOjpvcHRpb25hbDxJbmxpbmVDb250
ZW50QnJlYWtlcjo6UmVzdWx0OjpQYXJ0aWFsVHJhaWxpbmdDb250ZW50PiBwYXJ0aWFsVHJhaWxp
bmdDb250ZW50KQogewotICAgIGF1dG8mIHJ1bnMgPSBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRl
bnQuY29udGludW91c0NvbnRlbnQoKS5ydW5zKCk7CisgICAgYXV0byYgaW5saW5lQ29udGVudCA9
IGxpbmVDYW5kaWRhdGUuaW5saW5lQ29udGVudDsKKyAgICBhdXRvJiBydW5zID0gaW5saW5lQ29u
dGVudC5jb250aW51b3VzQ29udGVudCgpLnJ1bnMoKTsKICAgICBpZiAocnVucy5pc0VtcHR5KCkp
IHsKICAgICAgICAgQVNTRVJUKCFwYXJ0aWFsVHJhaWxpbmdDb250ZW50KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIGF1dG8gc2hhcGluZ0JvdW5kYXJ5U3RhcnQgPSBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4geyB9OwogICAgIGF1dG8gYXBwZW5kUnVuID0gWyZdKGF1dG8mIGluZGV4KSB7
CiAgICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNbaW5kZXhdOwogICAgICAgICBhdXRvJiBpbmxpbmVJ
dGVtID0gcnVuLmlubGluZUl0ZW07CkBAIC0xMjQzLDcgKzE0MDgsMjkgQEAgdm9pZCBMaW5lQnVp
bGRlcjo6Y29tbWl0Q2FuaWRhdGVDb250ZW50KGNvbnN0IExpbmVDYW5kaWRhdGUmIGxpbmVDYW5k
aWRhdGUsIHN0ZDoKICAgICAgICAgICAgIG1fbGluZS5zZXRDb250ZW50TmVlZHNCaWRpUmVvcmRl
cmluZygpOwogCiAgICAgICAgIGlmIChhdXRvKiBpbmxpbmVUZXh0SXRlbSA9IGR5bmFtaWNEb3du
Y2FzdDxJbmxpbmVUZXh0SXRlbT4oaW5saW5lSXRlbSkpIHsKLSAgICAgICAgICAgIG1fbGluZS5h
cHBlbmRUZXh0KCppbmxpbmVUZXh0SXRlbSwgcnVuLnN0eWxlLCBydW4uY29udGVudFdpZHRoKCks
IHsgfSk7CisgICAgICAgICAgICBhdXRvIHNoYXBpbmdCb3VuZGFyeSA9IFsmXSgpIC0+IHN0ZDo6
b3B0aW9uYWw8TGluZTo6U2hhcGluZ0JvdW5kYXJ5PiB7CisgICAgICAgICAgICAgICAgLy8gU3Bl
Y2lhbCBjYXNlIHRyYWlsaW5nIHBhcnRpYWwgcnVuIGFzIHNoYXBpbmcgZW5kLgorICAgICAgICAg
ICAgICAgIGlmIChzaGFwaW5nQm91bmRhcnlTdGFydCAmJiBwYXJ0aWFsVHJhaWxpbmdDb250ZW50
ICYmIHBhcnRpYWxUcmFpbGluZ0NvbnRlbnQtPnRyYWlsaW5nUnVuSW5kZXggPT0gaW5kZXgpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB7IExpbmU6OlNoYXBpbmdCb3VuZGFyeTo6RW5kIH07
CisKKyAgICAgICAgICAgICAgICBpZiAocnVuLnNoYXBpbmdCb3VuZGFyeSA9PSBJbmxpbmVDb250
ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OlJ1bjo6U2hhcGluZ0JvdW5kYXJ5OjpTdGFy
dCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIXNoYXBpbmdCb3VuZGFyeVN0YXJ0KTsK
KyAgICAgICAgICAgICAgICAgICAgc2hhcGluZ0JvdW5kYXJ5U3RhcnQgPSBpbmRleDsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgTGluZTo6U2hhcGluZ0JvdW5kYXJ5OjpTdGFydCB9Owor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChydW4uc2hhcGluZ0JvdW5k
YXJ5ID09IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuOjpTaGFw
aW5nQm91bmRhcnk6OkVuZCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcGluZ0Jv
dW5kYXJ5U3RhcnQpOworICAgICAgICAgICAgICAgICAgICBzaGFwaW5nQm91bmRhcnlTdGFydCA9
IHsgfTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgTGluZTo6U2hhcGluZ0JvdW5kYXJ5
OjpFbmQgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoc2hhcGlu
Z0JvdW5kYXJ5U3RhcnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IExpbmU6OlNoYXBp
bmdCb3VuZGFyeTo6TWlkZGxlIH07CisKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIG1fbGluZS5hcHBlbmRUZXh0KCppbmxpbmVUZXh0SXRl
bSwgcnVuLnN0eWxlLCBydW4uY29udGVudFdpZHRoKCksIHNoYXBpbmdCb3VuZGFyeSgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMjk3LDcgKzE0ODQsNyBAQCB2b2lk
IExpbmVCdWlsZGVyOjpjb21taXRDYW5pZGF0ZUNvbnRlbnQoY29uc3QgTGluZUNhbmRpZGF0ZSYg
bGluZUNhbmRpZGF0ZSwgc3RkOgogICAgICAgICAgICAgLy8gQ3JlYXRlIGFuZCBjb21taXQgcGFy
dGlhbCB0cmFpbGluZyBpdGVtLgogICAgICAgICAgICAgaWYgKGF1dG8qIHRyYWlsaW5nSW5saW5l
VGV4dEl0ZW0gPSBkeW5hbWljRG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bnNbdHJhaWxpbmdS
dW5JbmRleF0uaW5saW5lSXRlbSkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHBhcnRpYWxUcmFp
bGluZ1RleHRJdGVtID0gdHJhaWxpbmdJbmxpbmVUZXh0SXRlbS0+bGVmdChwYXJ0aWFsUnVuLT5s
ZW5ndGgpOwotICAgICAgICAgICAgICAgIG1fbGluZS5hcHBlbmRUZXh0KHBhcnRpYWxUcmFpbGlu
Z1RleHRJdGVtLCB0cmFpbGluZ0lubGluZVRleHRJdGVtLT5zdHlsZSgpLCBwYXJ0aWFsUnVuLT5s
b2dpY2FsV2lkdGgsIHsgfSk7CisgICAgICAgICAgICAgICAgbV9saW5lLmFwcGVuZFRleHQocGFy
dGlhbFRyYWlsaW5nVGV4dEl0ZW0sIHRyYWlsaW5nSW5saW5lVGV4dEl0ZW0tPnN0eWxlKCksIHBh
cnRpYWxSdW4tPmxvZ2ljYWxXaWR0aCwgc2hhcGluZ0JvdW5kYXJ5U3RhcnQgPyBzdGQ6Om1ha2Vf
b3B0aW9uYWwoTGluZTo6U2hhcGluZ0JvdW5kYXJ5OjpFbmQpIDogc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgICAgICAgICBpZiAodHJhaWxpbmdJbmxpbmVUZXh0SXRlbS0+YmlkaUxldmVsKCkgIT0g
VUJJRElfREVGQVVMVF9MVFIpCiAgICAgICAgICAgICAgICAgICAgIG1fbGluZS5zZXRDb250ZW50
TmVlZHNCaWRpUmVvcmRlcmluZygpOwogICAgICAgICAgICAgfSBlbHNlCkBAIC0xMzIwLDcgKzE1
MDcsNyBAQCBMaW5lQnVpbGRlcjo6UmVzdWx0IExpbmVCdWlsZGVyOjpwcm9jZXNzTGluZUJyZWFr
aW5nUmVzdWx0KGNvbnN0IExpbmVDYW5kaWRhdGUmCiAgICAgc3dpdGNoIChsaW5lQnJlYWtpbmdS
ZXN1bHQuYWN0aW9uKSB7CiAgICAgY2FzZSBJbmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0OjpB
Y3Rpb246OktlZXA6IHsKICAgICAgICAgLy8gVGhpcyBjb250aW51b3VzIGNvbnRlbnQgY2FuIGJl
IGZ1bGx5IHBsYWNlZCBvbiB0aGUgY3VycmVudCBsaW5lLgotICAgICAgICBjb21taXRDYW5pZGF0
ZUNvbnRlbnQobGluZUNhbmRpZGF0ZSwgbGluZUJyZWFraW5nUmVzdWx0LnBhcnRpYWxUcmFpbGlu
Z0NvbnRlbnQpOworICAgICAgICBjb21taXRDYW5kaWRhdGVDb250ZW50KGxpbmVDYW5kaWRhdGUs
IGxpbmVCcmVha2luZ1Jlc3VsdC5wYXJ0aWFsVHJhaWxpbmdDb250ZW50KTsKICAgICAgICAgLy8g
V2UgYXJlIGtlZXBpbmcgdGhpcyBjb250ZW50IG9uIHRoZSBsaW5lIGJ1dCB3ZSBuZWVkIHRvIGNo
ZWNrIGlmIHdlIGNvdWxkIGhhdmUgd3JhcHBlZCBoZXJlCiAgICAgICAgIC8vIGluIG9yZGVyIHRv
IGJlIGFibGUgdG8gcmV2ZXJ0IGJhY2sgdG8gdGhpcyBwb3NpdGlvbiBpZiBuZWVkZWQuCiAgICAg
ICAgIC8vIExldCdzIGp1c3QgaWdub3JlIGNhc2VzIGxpa2UgY29sbGFwc2VkIGxlYWRpbmcgd2hp
dGVzcGFjZSBmb3Igbm93LgpAQCAtMTM4MSw3ICsxNTY4LDcgQEAgTGluZUJ1aWxkZXI6OlJlc3Vs
dCBMaW5lQnVpbGRlcjo6cHJvY2Vzc0xpbmVCcmVha2luZ1Jlc3VsdChjb25zdCBMaW5lQ2FuZGlk
YXRlJgogICAgICAgICBBU1NFUlQobGluZUJyZWFraW5nUmVzdWx0LmlzRW5kT2ZMaW5lID09IElu
bGluZUNvbnRlbnRCcmVha2VyOjpJc0VuZE9mTGluZTo6WWVzKTsKICAgICAgICAgLy8gQ29tbWl0
IHRoZSBjb21iaW5hdGlvbiBvZiBmdWxsIGFuZCBwYXJ0aWFsIGNvbnRlbnQgb24gdGhlIGN1cnJl
bnQgbGluZS4KICAgICAgICAgQVNTRVJUKGxpbmVCcmVha2luZ1Jlc3VsdC5wYXJ0aWFsVHJhaWxp
bmdDb250ZW50KTsKLSAgICAgICAgY29tbWl0Q2FuaWRhdGVDb250ZW50KGxpbmVDYW5kaWRhdGUs
IGxpbmVCcmVha2luZ1Jlc3VsdC5wYXJ0aWFsVHJhaWxpbmdDb250ZW50KTsKKyAgICAgICAgY29t
bWl0Q2FuZGlkYXRlQ29udGVudChsaW5lQ2FuZGlkYXRlLCBsaW5lQnJlYWtpbmdSZXN1bHQucGFy
dGlhbFRyYWlsaW5nQ29udGVudCk7CiAgICAgICAgIC8vIFdoZW4gYnJlYWtpbmcgbXVsdGlwbGUg
cnVucyA8c3BhbiBzdHlsZT0id29yZC1icmVhazogYnJlYWstYWxsIj50ZXh0PC9zcGFuPjxzcGFu
PmNvbnRlbnQ8L3NwYW4+LCB3ZSBtaWdodCBlbmQgdXAgYnJlYWtpbmcgdGhlbSBhdCBydW4gYm91
bmRhcnkuCiAgICAgICAgIC8vIEl0IHNpbXBseSBtZWFucyB3ZSBkb24ndCByZWFsbHkgaGF2ZSBh
IHBhcnRpYWwgcnVuLiBQYXJ0aWFsIGNvbnRlbnQgeWVzLCBidXQgbm90IHBhcnRpYWwgcnVuLgog
ICAgICAgICBhdXRvIHRyYWlsaW5nUnVuSW5kZXggPSBsaW5lQnJlYWtpbmdSZXN1bHQucGFydGlh
bFRyYWlsaW5nQ29udGVudC0+dHJhaWxpbmdSdW5JbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5oCmluZGV4IDllOWFiNDdkZjU4Yy4uMDc3MTEwMGJlZGFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFNraXBGbG9hdHMgOiBib29sIHsgTm8sIFllcyB9
OwogICAgIHZvaWQgY2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYsIHN0ZDo6
cGFpcjxzaXplX3QsIHNpemVfdD4gc3RhcnRFbmRJbmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdl
JiBuZWVkc0xheW91dFJhbmdlLCBJbmxpbmVMYXlvdXRVbml0IGN1cnJlbnRMb2dpY2FsUmlnaHQs
IFNraXBGbG9hdHMgPSBTa2lwRmxvYXRzOjpObyk7CisgICAgdm9pZCBhcHBseVNoYXBpbmdJZk5l
ZWRlZChMaW5lQ2FuZGlkYXRlJik7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxzaXplX3QsIHNpemVf
dD4+IGNvbGxlY3RTaGFwaW5nUmFuZ2VzKGNvbnN0IExpbmVDYW5kaWRhdGUmKSBjb25zdDsKICAg
ICBJbmxpbmVMYXlvdXRVbml0IGxlYWRpbmdQdW5jdHVhdGlvbldpZHRoRm9yTGluZUNhbmRpYXRl
KGNvbnN0IExpbmVDYW5kaWRhdGUmKSBjb25zdDsKICAgICBJbmxpbmVMYXlvdXRVbml0IHRyYWls
aW5nUHVuY3R1YXRpb25PclN0b3BPckNvbW1hV2lkdGhGb3JMaW5lQ2FuZGlhdGUoY29uc3QgTGlu
ZUNhbmRpZGF0ZSYsIHNpemVfdCBzdGFydEluZGV4QWZ0ZXJDYW5kaWRhdGVDb250ZW50LCAgc2l6
ZV90IGxheW91dFJhbmdlRW5kKSBjb25zdDsKIApAQCAtNjcsNyArNjksNyBAQCBwcml2YXRlOgog
ICAgIH07CiAgICAgUmVjdEFuZEZsb2F0Q29uc3RyYWludHMgZmxvYXRBdm9pZGluZ1JlY3QoY29u
c3QgSW5saW5lUmVjdCYgbGluZUxvZ2ljYWxSZWN0LCBJbmxpbmVMYXlvdXRVbml0IGxpbmVNYXJn
aW5TdGFydCkgY29uc3Q7CiAgICAgUmVjdEFuZEZsb2F0Q29uc3RyYWludHMgYWRqdXN0ZWRMaW5l
UmVjdFdpdGhDYW5kaWRhdGVJbmxpbmVDb250ZW50KGNvbnN0IExpbmVDYW5kaWRhdGUmKSBjb25z
dDsKLSAgICB2b2lkIGNvbW1pdENhbmlkYXRlQ29udGVudChjb25zdCBMaW5lQ2FuZGlkYXRlJiwg
c3RkOjpvcHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0OjpQYXJ0aWFsVHJhaWxp
bmdDb250ZW50Pik7CisgICAgdm9pZCBjb21taXRDYW5kaWRhdGVDb250ZW50KGNvbnN0IExpbmVD
YW5kaWRhdGUmLCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVha2VyOjpSZXN1bHQ6OlBh
cnRpYWxUcmFpbGluZ0NvbnRlbnQ+KTsKICAgICBzaXplX3QgcmVidWlsZExpbmVXaXRoSW5saW5l
Q29udGVudChjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIGNvbnN0IElu
bGluZUl0ZW0mIGxhc3RJbmxpbmVJdGVtVG9BZGQpOwogICAgIHNpemVfdCByZWJ1aWxkTGluZUZv
clRyYWlsaW5nU29mdEh5cGhlbihjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlKTsK
ICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgSW5saW5lUmVjdCYgaW5pdGlhbExpbmVMb2dpY2Fs
UmVjdCwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkc0xheW91dFJhbmdlLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFByZXZpb3VzTGluZT4mLCBib29sIGlzRmlyc3RGb3JtYXR0ZWRMaW5lQ2FuZGlk
YXRlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>476763</attachid>
            <date>2025-09-16 13:10:51 -0700</date>
            <delta_ts>2025-09-16 15:02:32 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-298889-20250916131050.patch</filename>
            <type>text/plain</type>
            <size>21455</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBiZWU3YTU5YjEwYzQyZGI0ZTVjNDBkZDcyZTIxZTNkNDM3YmZiNGViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMTYgU2VwIDIwMjUgMDg6NDU6MjMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbdGV4dCBz
aGFwaW5nXSBTZXQgdXAgc2hhcGluZyBib3VuZGFyeSBmb3IgcnVucy4KIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTg4ODkKClJldmlld2VkIGJ5IEFudHRpIEtvaXZp
c3RvLgoKVGhpcyBwYXRjaCBpcyBpbiBwcmVwYXJhdGlvbiBmb3Igc3VwcG9ydGluZyB0ZXh0IHNo
YXBpbmcgYWNyb3NzIGlubGluZSBib3ggYm91bmRhcmllcy4KCjEuIENvbXB1dGUgc2hhcGluZyBi
b3VuZGFyaWVzIGFuZCBzZXQgdGhlbSBvbiBjb250aW51b3VzQ29udGVudCdzIHJ1bnMgKGlucHV0
IHRvIGxpbmUgYnJlYWtpbmcpCihzZWUgY29sbGVjdFNoYXBpbmdSYW5nZXMgZm9yIGRldGFpbHMp
CjIuIFNldCBjb21wdXRlZCBzaGFwaW5nIGJvdW5kYXJpZXMgb24gdGhlIGxpbmUgcnVucyBhZnRl
ciBsaW5lIGJyZWFraW5nIChzZWUgY29tbWl0Q2FuZGlkYXRlQ29udGVudCkKCiogU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFr
ZXIuaDoKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXND
b250ZW50OjpydW5zKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVDYW5k
aWRhdGU6OklubGluZUNvbnRlbnQ6OmNvbnRpbnVvdXNDb250ZW50KToKKFdlYkNvcmU6OkxheW91
dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVudDo6aXNTaGFwaW5nQ2FuZGlkYXRlQnlDb250
ZW50IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUNhbmRpZGF0ZTo6SW5saW5lQ29udGVu
dDo6YXBwZW5kSW5saW5lSXRlbSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVDYW5kaWRhdGU6Oklu
bGluZUNvbnRlbnQ6OnJlc2V0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbGxl
Y3RTaGFwaW5nUmFuZ2VzIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFw
cGx5U2hhcGluZ0lmTmVlZGVkKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNhbmRp
ZGF0ZUNvbnRlbnRGb3JMaW5lKToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbW1p
dENhbmRpZGF0ZUNvbnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6cHJvY2Vz
c0xpbmVCcmVha2luZ1Jlc3VsdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjb21t
aXRDYW5pZGF0ZUNvbnRlbnQpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmg6Ci0tLQogLi4uL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5oICAgICAgICAgICAgIHwgICAzICsKIC4uLi9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwICAgICAgICAgICAgICB8IDIwMSArKysrKysrKysrKysrKysr
Ky0KIC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaCAgICAgICAgICAgICAgICB8ICAgNCAr
LQogMyBmaWxlcyBjaGFuZ2VkLCAxOTkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaAppbmRleCBiMGY5YTYyYzc1
NjEuLjE0ZTBjZjMzNjFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJl
YWtlci5oCkBAIC0xMTIsMTIgKzExMiwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGU7CiAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IG9mZnNldCB7
IDAgfTsKICAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgdGV4dFNwYWNpbmdBZGp1c3RtZW50
IHsgMCB9OworICAgICAgICAgICAgZW51bSBjbGFzcyBTaGFwaW5nQm91bmRhcnkgOiBib29sIHsg
U3RhcnQsIEVuZCB9OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxTaGFwaW5nQm91bmRhcnk+
IHNoYXBpbmdCb3VuZGFyeSB7IH07CiAKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbV9jb250ZW50V2lkdGggeyAwIH07CiAgICAgICAgIH07CiAgICAgICAg
IHVzaW5nIFJ1bkxpc3QgPSBWZWN0b3I8UnVuLCAzPjsKICAgICAgICAgY29uc3QgUnVuTGlzdCYg
cnVucygpIGNvbnN0IHsgcmV0dXJuIG1fcnVuczsgfQorICAgICAgICBSdW5MaXN0JiBydW5zKCkg
eyByZXR1cm4gbV9ydW5zOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGFwcGVuZFRv
UnVuTGlzdChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlv
dXRVbml0IG9mZnNldCwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50V2lkdGgsIElubGluZUxheW91
dFVuaXQgdGV4dFNwYWNpbmdBZGp1c3RtZW50ID0gMC5mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA4MjUwOTc1ZjkxZjQuLjIwZmNlZGJhNmRlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMTg3LDYgKzE4Nyw3
IEBAIHN0cnVjdCBMaW5lQ2FuZGlkYXRlIHsKIAogICAgIHN0cnVjdCBJbmxpbmVDb250ZW50IHsK
ICAgICAgICAgY29uc3QgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50JiBj
b250aW51b3VzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGludW91c0NvbnRlbnQ7IH0K
KyAgICAgICAgSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXNDb250ZW50JiBjb250aW51
b3VzQ29udGVudCgpIHsgcmV0dXJuIG1fY29udGludW91c0NvbnRlbnQ7IH0KICAgICAgICAgY29u
c3QgSW5saW5lSXRlbSogdHJhaWxpbmdMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX3RyYWls
aW5nTGluZUJyZWFrOyB9CiAgICAgICAgIGNvbnN0IElubGluZUl0ZW0qIHRyYWlsaW5nV29yZEJy
ZWFrT3Bwb3J0dW5pdHkoKSBjb25zdCB7IHJldHVybiBtX3RyYWlsaW5nV29yZEJyZWFrT3Bwb3J0
dW5pdHk7IH0KIApAQCAtMjA5LDYgKzIxMCw4IEBAIHN0cnVjdCBMaW5lQ2FuZGlkYXRlIHsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpcnN0VGV4dFJ1bkluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9maXJzdFRleHRSdW5JbmRleDsgfQogICAgICAgICBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gbGFzdFRleHRSdW5JbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFRleHRSdW5JbmRleDsg
fQogCisgICAgICAgIGJvb2wgaXNTaGFwaW5nQ2FuZGlkYXRlQnlDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXM7IH0KKwogICAgIHByaXZhdGU6CiAg
ICAgICAgIElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudCBtX2NvbnRpbnVv
dXNDb250ZW50OwogICAgICAgICBjb25zdCBJbmxpbmVJdGVtKiBtX3RyYWlsaW5nTGluZUJyZWFr
IHsgbnVsbHB0ciB9OwpAQCAtMjE3LDYgKzIyMCw4IEBAIHN0cnVjdCBMaW5lQ2FuZGlkYXRlIHsK
ICAgICAgICAgYm9vbCBtX2hhc1RyYWlsaW5nU29mdFdyYXBPcHBvcnR1bml0eSB7IGZhbHNlIH07
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2ZpcnN0VGV4dFJ1bkluZGV4IHsgfTsK
ICAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG1fbGFzdFRleHRSdW5JbmRleCB7IH07Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBtX2xhc3RJbmxpbmVCb3hJbmRleCB7IH07Cisg
ICAgICAgIGJvb2wgbV9oYXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXMgeyBmYWxzZSB9OwogICAg
IH07CiAKICAgICAvLyBDYW5kaWRhdGUgY29udGVudCBpcyBhIGNvbGxlY3Rpb24gb2YgaW5saW5l
IGNvbnRlbnQgb3IgYSBmbG9hdCBib3guCkBAIC0yMjYsMTMgKzIzMSwyMiBAQCBzdHJ1Y3QgTGlu
ZUNhbmRpZGF0ZSB7CiAKIGlubGluZSB2b2lkIExpbmVDYW5kaWRhdGU6OklubGluZUNvbnRlbnQ6
OmFwcGVuZElubGluZUl0ZW0oY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCwgSW5saW5lTGF5
b3V0VW5pdCB0ZXh0U3BhY2luZ0FkanVzdG1lbnQpCiB7Ci0gICAgaWYgKGlubGluZUl0ZW0uaXNB
dG9taWNJbmxpbmVCb3goKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnRPckVuZCgpIHx8
IGlubGluZUl0ZW0uaXNPcGFxdWUoKSkKKyAgICBpZiAoaW5saW5lSXRlbS5pc0F0b21pY0lubGlu
ZUJveCgpIHx8IGlubGluZUl0ZW0uaXNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJuIG1fY29udGlu
dW91c0NvbnRlbnQuYXBwZW5kKGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgsIHRleHRT
cGFjaW5nQWRqdXN0bWVudCk7CiAKKyAgICBpZiAoaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0
T3JFbmQoKSkgeworICAgICAgICBhdXRvIG51bWJlck9mUnVucyA9IG1fY29udGludW91c0NvbnRl
bnQucnVucygpLnNpemUoKTsKKyAgICAgICAgbV9oYXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXMg
PSBtX2hhc1RleHRDb250ZW50U3Bhbm5pbmdCb3hlcyB8fCAobV9sYXN0VGV4dFJ1bkluZGV4ICYm
IG1fbGFzdFRleHRSdW5JbmRleCA9PSBudW1iZXJPZlJ1bnMgLSAxKTsKKyAgICAgICAgbV9sYXN0
SW5saW5lQm94SW5kZXggPSBudW1iZXJPZlJ1bnM7CisgICAgICAgIG1fY29udGludW91c0NvbnRl
bnQuYXBwZW5kKGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgsIHRleHRTcGFjaW5nQWRq
dXN0bWVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoYXV0byogaW5saW5l
VGV4dEl0ZW0gPSBkeW5hbWljRG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGlubGluZUl0ZW0pKSB7
CiAgICAgICAgIGF1dG8gbnVtYmVyT2ZSdW5zID0gbV9jb250aW51b3VzQ29udGVudC5ydW5zKCku
c2l6ZSgpOwogICAgICAgICBtX2ZpcnN0VGV4dFJ1bkluZGV4ID0gbV9maXJzdFRleHRSdW5JbmRl
eC52YWx1ZV9vcihudW1iZXJPZlJ1bnMpOwogICAgICAgICBtX2xhc3RUZXh0UnVuSW5kZXggPSBu
dW1iZXJPZlJ1bnM7CisgICAgICAgIG1faGFzVGV4dENvbnRlbnRTcGFubmluZ0JveGVzID0gbV9o
YXNUZXh0Q29udGVudFNwYW5uaW5nQm94ZXMgfHwgKG1fbGFzdElubGluZUJveEluZGV4ICYmIG1f
bGFzdElubGluZUJveEluZGV4ID09IG51bWJlck9mUnVucyAtIDEpOwogICAgICAgICByZXR1cm4g
bV9jb250aW51b3VzQ29udGVudC5hcHBlbmRUZXh0Q29udGVudCgqaW5saW5lVGV4dEl0ZW0sIHN0
eWxlLCBsb2dpY2FsV2lkdGgpOwogICAgIH0KIApAQCAtMjU4LDYgKzI3Miw4IEBAIGlubGluZSB2
b2lkIExpbmVDYW5kaWRhdGU6OklubGluZUNvbnRlbnQ6OnJlc2V0KCkKICAgICBtX2hhc1RyYWls
aW5nU29mdFdyYXBPcHBvcnR1bml0eSA9IHsgfTsKICAgICBtX2ZpcnN0VGV4dFJ1bkluZGV4ID0g
eyB9OwogICAgIG1fbGFzdFRleHRSdW5JbmRleCA9IHsgfTsKKyAgICBtX2xhc3RJbmxpbmVCb3hJ
bmRleCA9IHsgfTsKKyAgICBtX2hhc1RleHRDb250ZW50U3Bhbm5pbmdCb3hlcyA9IHsgfTsKIH0K
IAogaW5saW5lIHZvaWQgTGluZUNhbmRpZGF0ZTo6cmVzZXQoKQpAQCAtMjY2LDcgKzI4Miw2IEBA
IGlubGluZSB2b2lkIExpbmVDYW5kaWRhdGU6OnJlc2V0KCkKICAgICBpbmxpbmVDb250ZW50LnJl
c2V0KCk7CiB9CiAKLQogTGluZUJ1aWxkZXI6OkxpbmVCdWlsZGVyKElubGluZUZvcm1hdHRpbmdD
b250ZXh0JiBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCwgSG9yaXpvbnRhbENvbnN0cmFpbnRzIHJv
b3RIb3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnN0IElubGluZUl0ZW1MaXN0JiBpbmxpbmVJdGVt
TGlzdCwgVGV4dFNwYWNpbmdDb250ZXh0IHRleHRTcGFjaW5nQ29udGV4dCkKICAgICA6IEFic3Ry
YWN0TGluZUJ1aWxkZXIoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGlubGluZUZvcm1hdHRpbmdD
b250ZXh0LnJvb3QoKSwgcm9vdEhvcml6b250YWxDb25zdHJhaW50cywgaW5saW5lSXRlbUxpc3Qp
CiAgICAgLCBtX2Zsb2F0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5mbG9hdGlu
Z0NvbnRleHQoKSkKQEAgLTY4OSw2ICs3MDQsMTUxIEBAIElubGluZUxheW91dFVuaXQgTGluZUJ1
aWxkZXI6OnRyYWlsaW5nUHVuY3R1YXRpb25PclN0b3BPckNvbW1hV2lkdGhGb3JMaW5lQ2FuZGlh
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAorVmVjdG9yPHN0ZDo6cGFpcjxzaXplX3QsIHNpemVfdD4+
IExpbmVCdWlsZGVyOjpjb2xsZWN0U2hhcGluZ1Jhbmdlcyhjb25zdCBMaW5lQ2FuZGlkYXRlJiBs
aW5lQ2FuZGlkYXRlKSBjb25zdAoreworICAgIC8vIE5vcm1hbGx5IGNhbmRpZGF0ZSBjb250ZW50
IGlzIGlubGluZSBpdGVtcyBiZXR3ZWVuIDIgc29mdCB3cmFwaW5nIG9wcG9ydHVuaXRpZXMgZS5n
LgorICAgIC8vIDxkaXY+c29tZSB0ZXh0PHNwYW4+bW9yZSB0ZXh0PC9zcGFuPjwvZGl2PgorICAg
IC8vIHdoZXJlIGNhbmRpZGF0ZSBjb250ZW50cyBhcmUgYXMgZm9sbG93czogW3NvbWVdIFsgXSBb
dGV4dDxzcGFuPm1vcmVdIFsgXSBbdGV4dDwvc3Bhbj5dCisgICAgLy8gSG93ZXZlciB3aGVuIHdo
aXRlIHNwYWNlIGlzIHByZXNlcnZlZCBhbmQvb3Igbm8gd3JhcHBpbmcgaXMgYWxsb3dlZCB0aGUg
ZW50aXJlIGNvbnRlbnQgaXMKKyAgICAvLyBvbmUgY2FuZGlkYXRlIGNvbnRlbnQgd2l0aCBhbGwg
c29ydHMgb2YgaW5saW5lIGxldmVsIGNvbnRlbnQuCisKKyAgICAvLyBMZXQncyBmaW5kIHNoYXBp
bmcgcmFuZ2VzIGJ5IGZpbHRlcmluZyBvdXQgY29udGVudCB0aGF0IGFyZSBub3QgcmVsZXZhbnQg
dG8gc2hhcGluZywKKyAgICAvLyBmb2xsb3dlZCBieSBwcm9jZXNzaW5nIHRoaXMgY29tcHJlc3Nl
ZCBsaXN0IG9mIFtjb250ZW50ICwgYnJlYWssIGpvaW50IF0gd2hlcmUKKyAgICAvLyAnY29udGVu
dCcgbWVhbnMgc2hhcGFibGUgY29udGVudCAodGV4dCkKKyAgICAvLyAnYnJlYWsnIG1lYW5zIHNo
YXBlIGJyZWFraW5nIGdhcCAoZS5nLiB3aGl0ZXNwYWNlIGJldHdlZW4gMiB3b3JkcykKKyAgICAv
LyAna2VlcCcgbWVhbnMgYm94IHRoYXQga2VlcHMgYWRqYWNlbnQgaW5saW5lIGl0ZW1zIGluIHRo
ZSBzYW1lIHNoYXBpbmcgY29udGV4dCAoInRleHQ8c3Bhbj5tb3JlIiA8LSBpbmxpbmUgYm94IHN0
YXJ0KQorICAgIGF1dG8mIHJ1bnMgPSBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuY29udGlu
dW91c0NvbnRlbnQoKS5ydW5zKCk7CisKKyAgICBhdXRvIGlzRmlyc3RGb3JtYXR0ZWRMaW5lQ2Fu
ZGlkYXRlID0gdGhpcy0+aXNGaXJzdEZvcm1hdHRlZExpbmVDYW5kaWRhdGUoKTsKKyAgICBlbnVt
IGNsYXNzIFNoYXBpbmdUeXBlIDogdWludDhfdCB7IENvbnRlbnQsIEJyZWFrLCBLZWVwIH07Cisg
ICAgc3RydWN0IENvbnRlbnQgeworICAgICAgICBTaGFwaW5nVHlwZSB0eXBlIHsgU2hhcGluZ1R5
cGU6OkJyZWFrIH07CisgICAgICAgIHNpemVfdCBpbmRleCB7IDAgfTsKKyAgICB9OworICAgIFZl
Y3RvcjxDb250ZW50PiBjb250ZW50TGlzdDsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgcnVucy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9
IHJ1bnNbaW5kZXhdLmlubGluZUl0ZW07CisKKyAgICAgICAgYXV0byB0eXBlID0gc3RkOjpvcHRp
b25hbDxTaGFwaW5nVHlwZT4geyB9OworICAgICAgICBzd2l0Y2ggKGlubGluZUl0ZW0udHlwZSgp
KSB7CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6VGV4dDoKKyAgICAgICAgICAgIHR5
cGUgPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4oaW5saW5lSXRlbSkuaXNXaGl0ZXNwYWNlKCkg
PyBTaGFwaW5nVHlwZTo6QnJlYWsgOiBTaGFwaW5nVHlwZTo6Q29udGVudDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OkF0b21pY0lubGluZUJveDoK
KyAgICAgICAgICAgIHR5cGUgPSBTaGFwaW5nVHlwZTo6QnJlYWs7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpJbmxpbmVCb3hTdGFydDogeworICAg
ICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5
Rm9yQm94KGlubGluZUl0ZW0ubGF5b3V0Qm94KCkpOworICAgICAgICAgICAgYXV0byBoYXNEZWNv
cmF0aW9uID0gYm94R2VvbWV0cnkubWFyZ2luU3RhcnQoKSB8fCBib3hHZW9tZXRyeS5ib3JkZXJT
dGFydCgpIHx8IGJveEdlb21ldHJ5LnBhZGRpbmdTdGFydCgpOworICAgICAgICAgICAgdHlwZSA9
IGhhc0RlY29yYXRpb24gPyBTaGFwaW5nVHlwZTo6QnJlYWsgOiBTaGFwaW5nVHlwZTo6S2VlcDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6
VHlwZTo6SW5saW5lQm94RW5kOiB7CisgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZv
cm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5lSXRlbS5sYXlvdXRCb3goKSk7
CisgICAgICAgICAgICBhdXRvIGhhc0RlY29yYXRpb24gPSBib3hHZW9tZXRyeS5tYXJnaW5FbmQo
KSB8fCBib3hHZW9tZXRyeS5ib3JkZXJFbmQoKSB8fCBib3hHZW9tZXRyeS5wYWRkaW5nRW5kKCk7
CisgICAgICAgICAgICB0eXBlID0gaGFzRGVjb3JhdGlvbiA/IFNoYXBpbmdUeXBlOjpCcmVhayA6
IFNoYXBpbmdUeXBlOjpLZWVwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrOgorICAgICAgICBjYXNlIElu
bGluZUl0ZW06OlR5cGU6OlNvZnRMaW5lQnJlYWs6CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6
VHlwZTo6V29yZEJyZWFrT3Bwb3J0dW5pdHk6CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlw
ZTo6RmxvYXQ6CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6T3BhcXVlOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc2hvdWxkSWdub3JlID0gWyZdIHsK
KyAgICAgICAgICAgIGlmICghdHlwZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIGlmICgqdHlwZSA9PSBTaGFwaW5nVHlwZTo6Q29udGVudCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gY29udGVudExpc3QuaXNFbXB0
eSgpIHx8ICp0eXBlID09IGNvbnRlbnRMaXN0Lmxhc3QoKS50eXBlOworICAgICAgICB9OworICAg
ICAgICBpZiAoIXNob3VsZElnbm9yZSgpKQorICAgICAgICAgICAgY29udGVudExpc3QuYXBwZW5k
KENvbnRlbnQgeyAqdHlwZSwgaW5kZXggfSk7CisgICAgfQorCisgICAgLy8gVHJhaWxpbmcgbm9u
LWNvbnRlbnQgZW50cmllcyBzaG91bGQganVzdCBiZSBpZ25vcmVkLgorICAgIHdoaWxlICghY29u
dGVudExpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChjb250ZW50TGlzdC5sYXN0KCkudHlw
ZSA9PSBTaGFwaW5nVHlwZTo6Q29udGVudCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
b250ZW50TGlzdC5yZW1vdmVMYXN0KCk7CisgICAgfQorCisgICAgaWYgKGNvbnRlbnRMaXN0Lmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIEFTU0VSVChjb250ZW50TGlzdC5m
aXJzdCgpLnR5cGUgPT0gU2hhcGluZ1R5cGU6OkNvbnRlbnQgJiYgY29udGVudExpc3QubGFzdCgp
LnR5cGUgPT0gU2hhcGluZ1R5cGU6OkNvbnRlbnQpOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8c2l6
ZV90LCBzaXplX3Q+PiByYW5nZXM7CisKKyAgICBDaGVja2VkUHRyIGxhc3RGb250Q2FzY2FkZSA9
ICZyb290U3R5bGUoKS5mb250Q2FzY2FkZSgpOworICAgIGF1dG8gbGVhZGluZ0NvbnRlbnRSdW5J
bmRleCA9IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7IH07CisgICAgYXV0byB0cmFpbGluZ0NvbnRl
bnRSdW5JbmRleCA9IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7IH07CisgICAgYXV0byBoYXNCb3Vu
ZGFyeUJldHdlZW4gPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8gZW50cnkgOiBjb250ZW50TGlzdCkg
eworICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpIHsKKyAgICAgICAgY2FzZSBTaGFwaW5nVHlw
ZTo6QnJlYWs6CisgICAgICAgICAgICBpZiAobGVhZGluZ0NvbnRlbnRSdW5JbmRleCAmJiB0cmFp
bGluZ0NvbnRlbnRSdW5JbmRleCAmJiBoYXNCb3VuZGFyeUJldHdlZW4pCisgICAgICAgICAgICAg
ICAgcmFuZ2VzLmFwcGVuZCh7ICpsZWFkaW5nQ29udGVudFJ1bkluZGV4LCAqdHJhaWxpbmdDb250
ZW50UnVuSW5kZXggfSk7CisgICAgICAgICAgICBsZWFkaW5nQ29udGVudFJ1bkluZGV4ID0geyB9
OworICAgICAgICAgICAgdHJhaWxpbmdDb250ZW50UnVuSW5kZXggPSB7IH07CisgICAgICAgICAg
ICBoYXNCb3VuZGFyeUJldHdlZW4gPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFNoYXBpbmdUeXBlOjpLZWVwOgorICAgICAgICAgICAgaWYgKGhhc0JvdW5kYXJ5QmV0
d2VlbikgeworICAgICAgICAgICAgICAgIC8vIE5lc3RlZCBpbmxpbmUgYm94ZXMgZS5nLiA8c3Bh
bj5jb250ZW50PHNwYW4+bW9yZTxzcGFuPmFuZCBzb21lIG1vcmUKKyAgICAgICAgICAgICAgICBB
U1NFUlQobGVhZGluZ0NvbnRlbnRSdW5JbmRleCk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGVhZGluZ0NvbnRlbnRSdW5JbmRleCkKKyAg
ICAgICAgICAgICAgICBoYXNCb3VuZGFyeUJldHdlZW4gPSB0cnVlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU2hhcGluZ1R5cGU6OkNvbnRlbnQ6CisgICAgICAgICAgICBpZiAo
IWxlYWRpbmdDb250ZW50UnVuSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVU
ZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihydW5zW2VudHJ5LmluZGV4XS5pbmxp
bmVJdGVtKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVUZXh0Qm94ID0gaW5saW5lVGV4
dEl0ZW0uaW5saW5lVGV4dEJveCgpOworICAgICAgICAgICAgICAgIGF1dG8gaXNFbGlnaWJsZVRl
eHQgPSAhaW5saW5lVGV4dEJveC5jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSAmJiAhaW5saW5l
VGV4dEJveC5pc0NvbWJpbmVkKCkgJiYgKGlubGluZVRleHRJdGVtLmJpZGlMZXZlbCgpICE9IFVC
SURJX0RFRkFVTFRfTFRSICYmIChpbmxpbmVUZXh0SXRlbS5iaWRpTGV2ZWwoKSAlIDIpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoaXNFbGlnaWJsZVRleHQpCisgICAgICAgICAgICAgICAgICAgIGxl
YWRpbmdDb250ZW50UnVuSW5kZXggPSBlbnRyeS5pbmRleDsKKyAgICAgICAgICAgICAgICBsYXN0
Rm9udENhc2NhZGUgPSBpc0ZpcnN0Rm9ybWF0dGVkTGluZUNhbmRpZGF0ZSA/ICZpbmxpbmVUZXh0
SXRlbS5maXJzdExpbmVTdHlsZSgpLmZvbnRDYXNjYWRlKCkgOiAmaW5saW5lVGV4dEl0ZW0uc3R5
bGUoKS5mb250Q2FzY2FkZSgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNCb3VuZGFyeUJl
dHdlZW4pIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0
PElubGluZVRleHRJdGVtPihydW5zW2VudHJ5LmluZGV4XS5pbmxpbmVJdGVtKTsKKyAgICAgICAg
ICAgICAgICBpZiAoKmxhc3RGb250Q2FzY2FkZS5nZXQoKSA9PSAoaXNGaXJzdEZvcm1hdHRlZExp
bmVDYW5kaWRhdGUgPyBpbmxpbmVUZXh0SXRlbS5maXJzdExpbmVTdHlsZSgpLmZvbnRDYXNjYWRl
KCkgOiBpbmxpbmVUZXh0SXRlbS5zdHlsZSgpLmZvbnRDYXNjYWRlKCkpKQorICAgICAgICAgICAg
ICAgICAgICB0cmFpbGluZ0NvbnRlbnRSdW5JbmRleCA9IGVudHJ5LmluZGV4OworICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBsZWFkaW5nQ29udGVudFJ1bkluZGV4
ID0geyB9OworICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ0NvbnRlbnRSdW5JbmRleCA9IHsg
fTsKKyAgICAgICAgICAgICAgICAgICAgaGFzQm91bmRhcnlCZXR3ZWVuID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KGxlYWRpbmdDb250ZW50UnVuSW5kZXggJiYgdHJhaWxpbmdDb250ZW50UnVuSW5kZXggJiYgaGFz
Qm91bmRhcnlCZXR3ZWVuKQorICAgICAgICByYW5nZXMuYXBwZW5kKHsgKmxlYWRpbmdDb250ZW50
UnVuSW5kZXgsICp0cmFpbGluZ0NvbnRlbnRSdW5JbmRleCB9KTsKKworICAgIHJldHVybiByYW5n
ZXM7Cit9CisKK3ZvaWQgTGluZUJ1aWxkZXI6OmFwcGx5U2hhcGluZ0lmTmVlZGVkKExpbmVDYW5k
aWRhdGUmIGxpbmVDYW5kaWRhdGUpCit7CisgICAgaWYgKCFsaW5lQ2FuZGlkYXRlLmlubGluZUNv
bnRlbnQuaXNTaGFwaW5nQ2FuZGlkYXRlQnlDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8mIHJ1bnMgPSBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuY29udGludW91c0Nv
bnRlbnQoKS5ydW5zKCk7CisgICAgYXV0byBzaGFwaW5nUmFuZ2VzID0gY29sbGVjdFNoYXBpbmdS
YW5nZXMobGluZUNhbmRpZGF0ZSk7CisgICAgZm9yIChhdXRvIHJhbmdlIDogc2hhcGluZ1Jhbmdl
cykgeworICAgICAgICBpZiAocmFuZ2UuZmlyc3QgPj0gcmFuZ2Uuc2Vjb25kIHx8IHJhbmdlLmZp
cnN0ID49IHJ1bnMuc2l6ZSgpIHx8IHJhbmdlLnNlY29uZCA+PSBydW5zLnNpemUoKSkgeworICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorICAgICAgICBydW5zW3JhbmdlLmZpcnN0XS5zaGFwaW5nQm91bmRhcnkgPSBJbmxp
bmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6OlJ1bjo6U2hhcGluZ0JvdW5kYXJ5
OjpTdGFydDsKKyAgICAgICAgcnVuc1tyYW5nZS5zZWNvbmRdLnNoYXBpbmdCb3VuZGFyeSA9IElu
bGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuOjpTaGFwaW5nQm91bmRh
cnk6OkVuZDsKKyAgICB9Cit9CisKIHZvaWQgTGluZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRG
b3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHN0ZDo6cGFpcjxzaXplX3QsIHNp
emVfdD4gc3RhcnRFbmRJbmRleCwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlvdXRSYW5nZSwg
SW5saW5lTGF5b3V0VW5pdCBjdXJyZW50TG9naWNhbFJpZ2h0LCBTa2lwRmxvYXRzIHNraXBGbG9h
dHMpCiB7CiAgICAgQVNTRVJUKHN0YXJ0RW5kSW5kZXguZmlyc3QgPCBsYXlvdXRSYW5nZS5lbmRJ
bmRleCgpKTsKQEAgLTgxNSw2ICs5NzUsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpjYW5kaWRhdGVD
b250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCBzdGQ6OnBhaQogICAg
IH07CiAgICAgc2V0VHJhaWxpbmdTb2Z0SHlwaGVuV2lkdGgoKTsKICAgICBsaW5lQ2FuZGlkYXRl
LmlubGluZUNvbnRlbnQuc2V0SGFzVHJhaWxpbmdTb2Z0V3JhcE9wcG9ydHVuaXR5KGhhc1RyYWls
aW5nU29mdFdyYXBPcHBvcnR1bml0eShzdGFydEVuZEluZGV4LnNlY29uZCwgbGF5b3V0UmFuZ2Uu
ZW5kSW5kZXgoKSwgbV9pbmxpbmVJdGVtTGlzdCkpOworICAgIGFwcGx5U2hhcGluZ0lmTmVlZGVk
KGxpbmVDYW5kaWRhdGUpOwogfQogCiBzdGF0aWMgaW5saW5lIElubGluZUxheW91dFVuaXQgYXZh
aWxhYmxlV2lkdGgoY29uc3QgTGluZSYgbGluZSwgSW5saW5lTGF5b3V0VW5pdCBsaW5lV2lkdGgs
IHN0ZDo6b3B0aW9uYWw8SW50cmluc2ljV2lkdGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCkBA
IC0xMjI3LDE0ICsxMzg4LDE2IEBAIElubGluZUNvbnRlbnRCcmVha2VyOjpSZXN1bHQgTGluZUJ1
aWxkZXI6OmhhbmRsZUlubGluZUNvbnRlbnRXaXRoQ2xvbmVkRGVjb3JhdGlvCiAgICAgcmV0dXJu
IGlubGluZUNvbnRlbnRCcmVha2VyKCkucHJvY2Vzc0lubGluZUNvbnRlbnQoY29udGludW91c0lu
bGluZUNvbnRlbnQsIGxpbmVTdGF0dXMpOwogfQogCi12b2lkIExpbmVCdWlsZGVyOjpjb21taXRD
YW5pZGF0ZUNvbnRlbnQoY29uc3QgTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc3RkOjpv
cHRpb25hbDxJbmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0OjpQYXJ0aWFsVHJhaWxpbmdDb250
ZW50PiBwYXJ0aWFsVHJhaWxpbmdDb250ZW50KQordm9pZCBMaW5lQnVpbGRlcjo6Y29tbWl0Q2Fu
ZGlkYXRlQ29udGVudChjb25zdCBMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCBzdGQ6Om9w
dGlvbmFsPElubGluZUNvbnRlbnRCcmVha2VyOjpSZXN1bHQ6OlBhcnRpYWxUcmFpbGluZ0NvbnRl
bnQ+IHBhcnRpYWxUcmFpbGluZ0NvbnRlbnQpCiB7Ci0gICAgYXV0byYgcnVucyA9IGxpbmVDYW5k
aWRhdGUuaW5saW5lQ29udGVudC5jb250aW51b3VzQ29udGVudCgpLnJ1bnMoKTsKKyAgICBhdXRv
JiBpbmxpbmVDb250ZW50ID0gbGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50OworICAgIGF1dG8m
IHJ1bnMgPSBpbmxpbmVDb250ZW50LmNvbnRpbnVvdXNDb250ZW50KCkucnVucygpOwogICAgIGlm
IChydW5zLmlzRW1wdHkoKSkgewogICAgICAgICBBU1NFUlQoIXBhcnRpYWxUcmFpbGluZ0NvbnRl
bnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byBzaGFwaW5nQm91bmRhcnlT
dGFydCA9IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7IH07CiAgICAgYXV0byBhcHBlbmRSdW4gPSBb
Jl0oYXV0byYgaW5kZXgpIHsKICAgICAgICAgYXV0byYgcnVuID0gcnVuc1tpbmRleF07CiAgICAg
ICAgIGF1dG8mIGlubGluZUl0ZW0gPSBydW4uaW5saW5lSXRlbTsKQEAgLTEyNDMsNyArMTQwNiwy
OSBAQCB2b2lkIExpbmVCdWlsZGVyOjpjb21taXRDYW5pZGF0ZUNvbnRlbnQoY29uc3QgTGluZUNh
bmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc3RkOgogICAgICAgICAgICAgbV9saW5lLnNldENvbnRl
bnROZWVkc0JpZGlSZW9yZGVyaW5nKCk7CiAKICAgICAgICAgaWYgKGF1dG8qIGlubGluZVRleHRJ
dGVtID0gZHluYW1pY0Rvd25jYXN0PElubGluZVRleHRJdGVtPihpbmxpbmVJdGVtKSkgewotICAg
ICAgICAgICAgbV9saW5lLmFwcGVuZFRleHQoKmlubGluZVRleHRJdGVtLCBydW4uc3R5bGUsIHJ1
bi5jb250ZW50V2lkdGgoKSwgeyB9KTsKKyAgICAgICAgICAgIGF1dG8gc2hhcGluZ0JvdW5kYXJ5
ID0gWyZdKCkgLT4gc3RkOjpvcHRpb25hbDxMaW5lOjpTaGFwaW5nQm91bmRhcnk+IHsKKyAgICAg
ICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgdHJhaWxpbmcgcGFydGlhbCBydW4gYXMgc2hhcGlu
ZyBlbmQuCisgICAgICAgICAgICAgICAgaWYgKHNoYXBpbmdCb3VuZGFyeVN0YXJ0ICYmIHBhcnRp
YWxUcmFpbGluZ0NvbnRlbnQgJiYgcGFydGlhbFRyYWlsaW5nQ29udGVudC0+dHJhaWxpbmdSdW5J
bmRleCA9PSBpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgTGluZTo6U2hhcGlu
Z0JvdW5kYXJ5OjpFbmQgfTsKKworICAgICAgICAgICAgICAgIGlmIChydW4uc2hhcGluZ0JvdW5k
YXJ5ID09IElubGluZUNvbnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuOjpTaGFw
aW5nQm91bmRhcnk6OlN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghc2hhcGlu
Z0JvdW5kYXJ5U3RhcnQpOworICAgICAgICAgICAgICAgICAgICBzaGFwaW5nQm91bmRhcnlTdGFy
dCA9IGluZGV4OworICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBMaW5lOjpTaGFwaW5nQm91
bmRhcnk6OlN0YXJ0IH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KHJ1bi5zaGFwaW5nQm91bmRhcnkgPT0gSW5saW5lQ29udGVudEJyZWFrZXI6OkNvbnRpbnVvdXND
b250ZW50OjpSdW46OlNoYXBpbmdCb3VuZGFyeTo6RW5kKSB7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChzaGFwaW5nQm91bmRhcnlTdGFydCk7CisgICAgICAgICAgICAgICAgICAgIHNoYXBp
bmdCb3VuZGFyeVN0YXJ0ID0geyB9OworICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBMaW5l
OjpTaGFwaW5nQm91bmRhcnk6OkVuZCB9OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGlmIChzaGFwaW5nQm91bmRhcnlTdGFydCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHsgTGluZTo6U2hhcGluZ0JvdW5kYXJ5OjpNaWRkbGUgfTsKKworICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgICAgICB9OworICAgICAgICAgICAgbV9saW5lLmFwcGVuZFRl
eHQoKmlubGluZVRleHRJdGVtLCBydW4uc3R5bGUsIHJ1bi5jb250ZW50V2lkdGgoKSwgc2hhcGlu
Z0JvdW5kYXJ5KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEyOTcs
NyArMTQ4Miw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmNvbW1pdENhbmlkYXRlQ29udGVudChjb25z
dCBMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCBzdGQ6CiAgICAgICAgICAgICAvLyBDcmVh
dGUgYW5kIGNvbW1pdCBwYXJ0aWFsIHRyYWlsaW5nIGl0ZW0uCiAgICAgICAgICAgICBpZiAoYXV0
byogdHJhaWxpbmdJbmxpbmVUZXh0SXRlbSA9IGR5bmFtaWNEb3duY2FzdDxJbmxpbmVUZXh0SXRl
bT4ocnVuc1t0cmFpbGluZ1J1bkluZGV4XS5pbmxpbmVJdGVtKSkgewogICAgICAgICAgICAgICAg
IGF1dG8gcGFydGlhbFRyYWlsaW5nVGV4dEl0ZW0gPSB0cmFpbGluZ0lubGluZVRleHRJdGVtLT5s
ZWZ0KHBhcnRpYWxSdW4tPmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbV9saW5lLmFwcGVuZFRl
eHQocGFydGlhbFRyYWlsaW5nVGV4dEl0ZW0sIHRyYWlsaW5nSW5saW5lVGV4dEl0ZW0tPnN0eWxl
KCksIHBhcnRpYWxSdW4tPmxvZ2ljYWxXaWR0aCwgeyB9KTsKKyAgICAgICAgICAgICAgICBtX2xp
bmUuYXBwZW5kVGV4dChwYXJ0aWFsVHJhaWxpbmdUZXh0SXRlbSwgdHJhaWxpbmdJbmxpbmVUZXh0
SXRlbS0+c3R5bGUoKSwgcGFydGlhbFJ1bi0+bG9naWNhbFdpZHRoLCBzaGFwaW5nQm91bmRhcnlT
dGFydCA/IHN0ZDo6bWFrZV9vcHRpb25hbChMaW5lOjpTaGFwaW5nQm91bmRhcnk6OkVuZCkgOiBz
dGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgICAgIGlmICh0cmFpbGluZ0lubGluZVRleHRJdGVt
LT5iaWRpTGV2ZWwoKSAhPSBVQklESV9ERUZBVUxUX0xUUikKICAgICAgICAgICAgICAgICAgICAg
bV9saW5lLnNldENvbnRlbnROZWVkc0JpZGlSZW9yZGVyaW5nKCk7CiAgICAgICAgICAgICB9IGVs
c2UKQEAgLTEzMjAsNyArMTUwNSw3IEBAIExpbmVCdWlsZGVyOjpSZXN1bHQgTGluZUJ1aWxkZXI6
OnByb2Nlc3NMaW5lQnJlYWtpbmdSZXN1bHQoY29uc3QgTGluZUNhbmRpZGF0ZSYKICAgICBzd2l0
Y2ggKGxpbmVCcmVha2luZ1Jlc3VsdC5hY3Rpb24pIHsKICAgICBjYXNlIElubGluZUNvbnRlbnRC
cmVha2VyOjpSZXN1bHQ6OkFjdGlvbjo6S2VlcDogewogICAgICAgICAvLyBUaGlzIGNvbnRpbnVv
dXMgY29udGVudCBjYW4gYmUgZnVsbHkgcGxhY2VkIG9uIHRoZSBjdXJyZW50IGxpbmUuCi0gICAg
ICAgIGNvbW1pdENhbmlkYXRlQ29udGVudChsaW5lQ2FuZGlkYXRlLCBsaW5lQnJlYWtpbmdSZXN1
bHQucGFydGlhbFRyYWlsaW5nQ29udGVudCk7CisgICAgICAgIGNvbW1pdENhbmRpZGF0ZUNvbnRl
bnQobGluZUNhbmRpZGF0ZSwgbGluZUJyZWFraW5nUmVzdWx0LnBhcnRpYWxUcmFpbGluZ0NvbnRl
bnQpOwogICAgICAgICAvLyBXZSBhcmUga2VlcGluZyB0aGlzIGNvbnRlbnQgb24gdGhlIGxpbmUg
YnV0IHdlIG5lZWQgdG8gY2hlY2sgaWYgd2UgY291bGQgaGF2ZSB3cmFwcGVkIGhlcmUKICAgICAg
ICAgLy8gaW4gb3JkZXIgdG8gYmUgYWJsZSB0byByZXZlcnQgYmFjayB0byB0aGlzIHBvc2l0aW9u
IGlmIG5lZWRlZC4KICAgICAgICAgLy8gTGV0J3MganVzdCBpZ25vcmUgY2FzZXMgbGlrZSBjb2xs
YXBzZWQgbGVhZGluZyB3aGl0ZXNwYWNlIGZvciBub3cuCkBAIC0xMzgxLDcgKzE1NjYsNyBAQCBM
aW5lQnVpbGRlcjo6UmVzdWx0IExpbmVCdWlsZGVyOjpwcm9jZXNzTGluZUJyZWFraW5nUmVzdWx0
KGNvbnN0IExpbmVDYW5kaWRhdGUmCiAgICAgICAgIEFTU0VSVChsaW5lQnJlYWtpbmdSZXN1bHQu
aXNFbmRPZkxpbmUgPT0gSW5saW5lQ29udGVudEJyZWFrZXI6OklzRW5kT2ZMaW5lOjpZZXMpOwog
ICAgICAgICAvLyBDb21taXQgdGhlIGNvbWJpbmF0aW9uIG9mIGZ1bGwgYW5kIHBhcnRpYWwgY29u
dGVudCBvbiB0aGUgY3VycmVudCBsaW5lLgogICAgICAgICBBU1NFUlQobGluZUJyZWFraW5nUmVz
dWx0LnBhcnRpYWxUcmFpbGluZ0NvbnRlbnQpOwotICAgICAgICBjb21taXRDYW5pZGF0ZUNvbnRl
bnQobGluZUNhbmRpZGF0ZSwgbGluZUJyZWFraW5nUmVzdWx0LnBhcnRpYWxUcmFpbGluZ0NvbnRl
bnQpOworICAgICAgICBjb21taXRDYW5kaWRhdGVDb250ZW50KGxpbmVDYW5kaWRhdGUsIGxpbmVC
cmVha2luZ1Jlc3VsdC5wYXJ0aWFsVHJhaWxpbmdDb250ZW50KTsKICAgICAgICAgLy8gV2hlbiBi
cmVha2luZyBtdWx0aXBsZSBydW5zIDxzcGFuIHN0eWxlPSJ3b3JkLWJyZWFrOiBicmVhay1hbGwi
PnRleHQ8L3NwYW4+PHNwYW4+Y29udGVudDwvc3Bhbj4sIHdlIG1pZ2h0IGVuZCB1cCBicmVha2lu
ZyB0aGVtIGF0IHJ1biBib3VuZGFyeS4KICAgICAgICAgLy8gSXQgc2ltcGx5IG1lYW5zIHdlIGRv
bid0IHJlYWxseSBoYXZlIGEgcGFydGlhbCBydW4uIFBhcnRpYWwgY29udGVudCB5ZXMsIGJ1dCBu
b3QgcGFydGlhbCBydW4uCiAgICAgICAgIGF1dG8gdHJhaWxpbmdSdW5JbmRleCA9IGxpbmVCcmVh
a2luZ1Jlc3VsdC5wYXJ0aWFsVHJhaWxpbmdDb250ZW50LT50cmFpbGluZ1J1bkluZGV4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmgKaW5kZXggOWU5YWI0N2RmNThjLi4wNzcx
MTAwYmVkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuaApAQCAtNDQs
NiArNDQsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU2tpcEZsb2F0cyA6
IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5l
Q2FuZGlkYXRlJiwgc3RkOjpwYWlyPHNpemVfdCwgc2l6ZV90PiBzdGFydEVuZEluZGV4LCBjb25z
dCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0UmFuZ2UsIElubGluZUxheW91dFVuaXQgY3Vy
cmVudExvZ2ljYWxSaWdodCwgU2tpcEZsb2F0cyA9IFNraXBGbG9hdHM6Ok5vKTsKKyAgICB2b2lk
IGFwcGx5U2hhcGluZ0lmTmVlZGVkKExpbmVDYW5kaWRhdGUmKTsKKyAgICBWZWN0b3I8c3RkOjpw
YWlyPHNpemVfdCwgc2l6ZV90Pj4gY29sbGVjdFNoYXBpbmdSYW5nZXMoY29uc3QgTGluZUNhbmRp
ZGF0ZSYpIGNvbnN0OwogICAgIElubGluZUxheW91dFVuaXQgbGVhZGluZ1B1bmN0dWF0aW9uV2lk
dGhGb3JMaW5lQ2FuZGlhdGUoY29uc3QgTGluZUNhbmRpZGF0ZSYpIGNvbnN0OwogICAgIElubGlu
ZUxheW91dFVuaXQgdHJhaWxpbmdQdW5jdHVhdGlvbk9yU3RvcE9yQ29tbWFXaWR0aEZvckxpbmVD
YW5kaWF0ZShjb25zdCBMaW5lQ2FuZGlkYXRlJiwgc2l6ZV90IHN0YXJ0SW5kZXhBZnRlckNhbmRp
ZGF0ZUNvbnRlbnQsICBzaXplX3QgbGF5b3V0UmFuZ2VFbmQpIGNvbnN0OwogCkBAIC02Nyw3ICs2
OSw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBSZWN0QW5kRmxvYXRDb25zdHJhaW50cyBmbG9h
dEF2b2lkaW5nUmVjdChjb25zdCBJbmxpbmVSZWN0JiBsaW5lTG9naWNhbFJlY3QsIElubGluZUxh
eW91dFVuaXQgbGluZU1hcmdpblN0YXJ0KSBjb25zdDsKICAgICBSZWN0QW5kRmxvYXRDb25zdHJh
aW50cyBhZGp1c3RlZExpbmVSZWN0V2l0aENhbmRpZGF0ZUlubGluZUNvbnRlbnQoY29uc3QgTGlu
ZUNhbmRpZGF0ZSYpIGNvbnN0OwotICAgIHZvaWQgY29tbWl0Q2FuaWRhdGVDb250ZW50KGNvbnN0
IExpbmVDYW5kaWRhdGUmLCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVha2VyOjpSZXN1
bHQ6OlBhcnRpYWxUcmFpbGluZ0NvbnRlbnQ+KTsKKyAgICB2b2lkIGNvbW1pdENhbmRpZGF0ZUNv
bnRlbnQoY29uc3QgTGluZUNhbmRpZGF0ZSYsIHN0ZDo6b3B0aW9uYWw8SW5saW5lQ29udGVudEJy
ZWFrZXI6OlJlc3VsdDo6UGFydGlhbFRyYWlsaW5nQ29udGVudD4pOwogICAgIHNpemVfdCByZWJ1
aWxkTGluZVdpdGhJbmxpbmVDb250ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHNMYXlv
dXRSYW5nZSwgY29uc3QgSW5saW5lSXRlbSYgbGFzdElubGluZUl0ZW1Ub0FkZCk7CiAgICAgc2l6
ZV90IHJlYnVpbGRMaW5lRm9yVHJhaWxpbmdTb2Z0SHlwaGVuKGNvbnN0IElubGluZUl0ZW1SYW5n
ZSYgbGF5b3V0UmFuZ2UpOwogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBJbmxpbmVSZWN0JiBp
bml0aWFsTGluZUxvZ2ljYWxSZWN0LCBjb25zdCBJbmxpbmVJdGVtUmFuZ2UmIG5lZWRzTGF5b3V0
UmFuZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UHJldmlvdXNMaW5lPiYsIGJvb2wgaXNGaXJzdEZv
cm1hdHRlZExpbmVDYW5kaWRhdGUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>