<?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>232498</bug_id>
          
          <creation_ts>2021-10-29 10:37:52 -0700</creation_ts>
          <short_desc>[LFC][IFC] Move InlineTextItem construction to InlineItemsBuilder</short_desc>
          <delta_ts>2021-10-29 22:27:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1810154</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-10-29 10:37:52 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810156</commentid>
    <comment_count>1</comment_count>
      <attachid>442844</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-10-29 10:39:43 -0700</bug_when>
    <thetext>Created attachment 442844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810389</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-29 22:26:05 -0700</bug_when>
    <thetext>Committed r285076 (243718@main): &lt;https://commits.webkit.org/243718@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442844.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810390</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-29 22:27:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/84833839&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442844</attachid>
            <date>2021-10-29 10:39:43 -0700</date>
            <delta_ts>2021-10-29 22:26:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232498-20211029103942.patch</filename>
            <type>text/plain</type>
            <size>24398</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTMzNTUzN2ZhYWY3ZWU5
ZDA0YWQyOTllOTRhNDYzMWIzMDVmNWNjYi4uNjk5ZWE3NGY0YTlmZWMwNDY2OTNhNTk1ZDE3MDMy
ZTE0NTQ2MDViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTEwLTI5ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUgSW5s
aW5lVGV4dEl0ZW0gY29uc3RydWN0aW9uIHRvIElubGluZUl0ZW1zQnVpbGRlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJh
dGlvbiBmb3IgYWRkaW5nIGJpZGkgc3VwcG9ydC4KKworICAgICAgICAqIGxheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6Om1vdmVUb05leHROb25XaGl0ZXNwYWNlUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0Ojptb3ZlVG9OZXh0QnJlYWthYmxlUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmJ1aWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lSXRlbXNCdWlsZGVyOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRl
bXMpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0
ZW1zQnVpbGRlci5oOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZVRleHRJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4
dEl0ZW06OklubGluZVRleHRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
VGV4dEl0ZW06OmxlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVU
ZXh0SXRlbTo6cmlnaHQgY29uc3QpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6bW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om1vdmVUb05leHRCcmVha2FibGVQb3NpdGlvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpjcmVh
dGVBbmRBcHBlbmRUZXh0SXRlbXMpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZVRleHRJdGVtOjpJbmxpbmVUZXh0SXRlbSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVRleHRJdGVtOjpsZWZ0IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OnJpZ2h0IGNvbnN0KTog
RGVsZXRlZC4KKwogMjAyMS0xMC0yOSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0xGQ11bSUZDXSBJbnRyb2R1Y2UgSW5saW5lSXRlbXNCdWlsZGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVJdGVtc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcAppbmRleCA0ZGZmNGYxM2RkMTQwYTY0
OTZkMmFiZDg4NTBiY2M1ZjQxZDVmYjlhLi42YzU1Y2EwMGJiNzY2ODdhODNiMmYyY2I1ODNiNzc4
ZmMxOTNmYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAK
QEAgLTI4LDkgKzI4LDQ5IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKIAorI2luY2x1ZGUgIklubGluZVNvZnRMaW5lQnJlYWtJdGVtLmgiCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCitzdHJ1Y3QgV2hpdGVzcGFjZUNvbnRlbnQg
eworICAgIHNpemVfdCBsZW5ndGggeyAwIH07CisgICAgYm9vbCBpc1dvcmRTZXBhcmF0b3IgeyB0
cnVlIH07Cit9Oworc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2hpdGVzcGFjZUNvbnRlbnQ+IG1vdmVU
b05leHROb25XaGl0ZXNwYWNlUG9zaXRpb24oU3RyaW5nVmlldyB0ZXh0Q29udGVudCwgc2l6ZV90
IHN0YXJ0UG9zaXRpb24sIGJvb2wgcHJlc2VydmVOZXdsaW5lLCBib29sIHByZXNlcnZlVGFiLCBi
b29sIHRyZWF0Tm9uQnJlYWtpbmdTcGFjZUFzUmVndWxhclNwYWNlLCBib29sIHN0b3BBdFdvcmRT
ZXBhcmF0b3JCb3VuZGFyeSkKK3sKKyAgICBhdXRvIGhhc1dvcmRTZXBhcmF0b3JDaGFyYWN0ZXIg
PSBmYWxzZTsKKyAgICBhdXRvIGlzV29yZFNlcGFyYXRvckNoYXJhY3RlciA9IGZhbHNlOworICAg
IGF1dG8gaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyID0gWyZdKGF1dG8gY2hhcmFjdGVyKSB7CisgICAg
ICAgIC8vIHdoaXRlIHNwYWNlIHByb2Nlc3NpbmcgaW4gQ1NTIGFmZmVjdHMgb25seSB0aGUgZG9j
dW1lbnQgd2hpdGUgc3BhY2UgY2hhcmFjdGVyczogc3BhY2VzIChVKzAwMjApLCB0YWJzIChVKzAw
MDkpLCBhbmQgc2VnbWVudCBicmVha3MuCisgICAgICAgIGF1dG8gaXNUcmVhdGVkQXNTcGFjZUNo
YXJhY3RlciA9IGNoYXJhY3RlciA9PSBzcGFjZSB8fCAoY2hhcmFjdGVyID09IG5ld2xpbmVDaGFy
YWN0ZXIgJiYgIXByZXNlcnZlTmV3bGluZSkgfHwgKGNoYXJhY3RlciA9PSB0YWJDaGFyYWN0ZXIg
JiYgIXByZXNlcnZlVGFiKSB8fCAoY2hhcmFjdGVyID09IG5vQnJlYWtTcGFjZSAmJiB0cmVhdE5v
bkJyZWFraW5nU3BhY2VBc1JlZ3VsYXJTcGFjZSk7CisgICAgICAgIGlzV29yZFNlcGFyYXRvckNo
YXJhY3RlciA9IGlzVHJlYXRlZEFzU3BhY2VDaGFyYWN0ZXI7CisgICAgICAgIGhhc1dvcmRTZXBh
cmF0b3JDaGFyYWN0ZXIgPSBoYXNXb3JkU2VwYXJhdG9yQ2hhcmFjdGVyIHx8IGlzV29yZFNlcGFy
YXRvckNoYXJhY3RlcjsKKyAgICAgICAgcmV0dXJuIGlzVHJlYXRlZEFzU3BhY2VDaGFyYWN0ZXIg
fHwgY2hhcmFjdGVyID09IHRhYkNoYXJhY3RlcjsKKyAgICB9OworICAgIGF1dG8gbmV4dE5vbldo
aXRlU3BhY2VQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247CisgICAgd2hpbGUgKG5leHROb25XaGl0
ZVNwYWNlUG9zaXRpb24gPCB0ZXh0Q29udGVudC5sZW5ndGgoKSAmJiBpc1doaXRlc3BhY2VDaGFy
YWN0ZXIodGV4dENvbnRlbnRbbmV4dE5vbldoaXRlU3BhY2VQb3NpdGlvbl0pKSB7CisgICAgICAg
IGlmIChVTkxJS0VMWShzdG9wQXRXb3JkU2VwYXJhdG9yQm91bmRhcnkgJiYgaGFzV29yZFNlcGFy
YXRvckNoYXJhY3RlciAmJiAhaXNXb3JkU2VwYXJhdG9yQ2hhcmFjdGVyKSkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICArK25leHROb25XaGl0ZVNwYWNlUG9zaXRpb247CisgICAgfQorICAg
IHJldHVybiBuZXh0Tm9uV2hpdGVTcGFjZVBvc2l0aW9uID09IHN0YXJ0UG9zaXRpb24gPyBzdGQ6
Om51bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0aW9uYWwoV2hpdGVzcGFjZUNvbnRlbnQgeyBuZXh0Tm9u
V2hpdGVTcGFjZVBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbiwgaGFzV29yZFNlcGFyYXRvckNoYXJh
Y3RlciB9KTsKK30KKworc3RhdGljIHVuc2lnbmVkIG1vdmVUb05leHRCcmVha2FibGVQb3NpdGlv
bih1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCBMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxpbmVCcmVh
a0l0ZXJhdG9yLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCit7CisgICAgYXV0byB0ZXh0TGVu
Z3RoID0gbGluZUJyZWFrSXRlcmF0b3Iuc3RyaW5nVmlldygpLmxlbmd0aCgpOworICAgIGF1dG8g
c3RhcnRQb3NpdGlvbkZvck5leHRCcmVha2FibGVQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247Cisg
ICAgd2hpbGUgKHN0YXJ0UG9zaXRpb25Gb3JOZXh0QnJlYWthYmxlUG9zaXRpb24gPCB0ZXh0TGVu
Z3RoKSB7CisgICAgICAgIGF1dG8gbmV4dEJyZWFrYWJsZVBvc2l0aW9uID0gVGV4dFV0aWw6OmZp
bmROZXh0QnJlYWthYmxlUG9zaXRpb24obGluZUJyZWFrSXRlcmF0b3IsIHN0YXJ0UG9zaXRpb25G
b3JOZXh0QnJlYWthYmxlUG9zaXRpb24sIHN0eWxlKTsKKyAgICAgICAgLy8gT2Z0ZW50aW1lcyB0
aGUgbmV4dCBicmVha2FibGUgcG9zaXRpb24gY29tZXMgYmFjayBhcyB0aGUgc3RhcnQgcG9zaXRp
b24gKG1vc3Qgbm90YWJseSBoeXBoZW5zKS4KKyAgICAgICAgaWYgKG5leHRCcmVha2FibGVQb3Np
dGlvbiAhPSBzdGFydFBvc2l0aW9uKQorICAgICAgICAgICAgcmV0dXJuIG5leHRCcmVha2FibGVQ
b3NpdGlvbiAtIHN0YXJ0UG9zaXRpb247CisgICAgICAgICsrc3RhcnRQb3NpdGlvbkZvck5leHRC
cmVha2FibGVQb3NpdGlvbjsKKyAgICB9CisgICAgcmV0dXJuIHRleHRMZW5ndGggLSBzdGFydFBv
c2l0aW9uOworfQorCiBJbmxpbmVJdGVtc0J1aWxkZXI6OklubGluZUl0ZW1zQnVpbGRlcihjb25z
dCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgSW5saW5lRm9ybWF0dGluZ1N0
YXRlJiBmb3JtYXR0aW5nU3RhdGUpCiAgICAgOiBtX3Jvb3QoZm9ybWF0dGluZ0NvbnRleHRSb290
KQogICAgICwgbV9mb3JtYXR0aW5nU3RhdGUoZm9ybWF0dGluZ1N0YXRlKQpAQCAtNzQsNyArMTE0
LDcgQEAgdm9pZCBJbmxpbmVJdGVtc0J1aWxkZXI6OmJ1aWxkKCkKICAgICAgICAgICAgIGVsc2Ug
aWYgKGxheW91dEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkpCiAgICAgICAgICAgICAgICAg
Zm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oeyBsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5
cGU6OkJveCB9KTsKICAgICAgICAgICAgIGVsc2UgaWYgKGxheW91dEJveC5pc0lubGluZVRleHRC
b3goKSkgewotICAgICAgICAgICAgICAgIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRU
ZXh0SXRlbXMoZm9ybWF0dGluZ1N0YXRlLmlubGluZUl0ZW1zKCksIGRvd25jYXN0PElubGluZVRl
eHRCb3g+KGxheW91dEJveCkpOworICAgICAgICAgICAgICAgIGNyZWF0ZUFuZEFwcGVuZFRleHRJ
dGVtcyhkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3gpKTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobGF5b3V0Qm94LmlzSW5saW5lQm94KCkpCiAgICAgICAgICAgICAgICAgZm9ybWF0
dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oeyBsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6Oklu
bGluZUJveEVuZCB9KTsKICAgICAgICAgICAgIGVsc2UKQEAgLTg4LDYgKzEyOCw4OCBAQCB2b2lk
IElubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQoKQogICAgIH0KIH0KIAordm9pZCBJbmxpbmVJdGVt
c0J1aWxkZXI6OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhjb25zdCBJbmxpbmVUZXh0Qm94JiBp
bmxpbmVUZXh0Qm94KQoreworICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmZvcm1h
dHRpbmdTdGF0ZSgpOworCisgICAgYXV0byB0ZXh0ID0gaW5saW5lVGV4dEJveC5jb250ZW50KCk7
CisgICAgaWYgKCF0ZXh0Lmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gZm9ybWF0dGluZ1N0YXRl
LmFkZElubGluZUl0ZW0oSW5saW5lVGV4dEl0ZW06OmNyZWF0ZUVtcHR5SXRlbShpbmxpbmVUZXh0
Qm94KSk7CisKKyAgICBhdXRvJiBzdHlsZSA9IGlubGluZVRleHRCb3guc3R5bGUoKTsKKyAgICBh
dXRvJiBmb250Q2FzY2FkZSA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CisgICAgYXV0byBzaG91bGRQ
cmVzZXJ2ZVNwYWNlc0FuZFRhYnMgPSBUZXh0VXRpbDo6c2hvdWxkUHJlc2VydmVTcGFjZXNBbmRU
YWJzKGlubGluZVRleHRCb3gpOworICAgIGF1dG8gd2hpdGVzcGFjZUNvbnRlbnRJc1RyZWF0ZWRB
c1NpbmdsZVNwYWNlID0gIXNob3VsZFByZXNlcnZlU3BhY2VzQW5kVGFiczsKKyAgICBhdXRvIHNo
b3VsZFByZXNlcnZlTmV3bGluZSA9IFRleHRVdGlsOjpzaG91bGRQcmVzZXJ2ZU5ld2xpbmUoaW5s
aW5lVGV4dEJveCk7CisgICAgYXV0byBzaG91bGRUcmVhdE5vbkJyZWFraW5nU3BhY2VBc1JlZ3Vs
YXJTcGFjZSA9IHN0eWxlLm5ic3BNb2RlKCkgPT0gTkJTUE1vZGU6OlNwYWNlOworICAgIGF1dG8g
bGluZUJyZWFrSXRlcmF0b3IgPSBMYXp5TGluZUJyZWFrSXRlcmF0b3IgeyB0ZXh0LCBzdHlsZS5j
b21wdXRlZExvY2FsZSgpLCBUZXh0VXRpbDo6bGluZUJyZWFrSXRlcmF0b3JNb2RlKHN0eWxlLmxp
bmVCcmVhaygpKSB9OworICAgIHVuc2lnbmVkIGN1cnJlbnRQb3NpdGlvbiA9IDA7CisKKyAgICBh
dXRvIGlubGluZUl0ZW1XaWR0aCA9IFsmXShhdXRvIHN0YXJ0UG9zaXRpb24sIGF1dG8gbGVuZ3Ro
KSAtPiBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsKKyAgICAgICAgaWYgKCFpbmxp
bmVUZXh0Qm94LmNhblVzZVNpbXBsaWZpZWRDb250ZW50TWVhc3VyaW5nKCkKKyAgICAgICAgICAg
IHx8ICFUZXh0VXRpbDo6Y2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmdGb3JGaXJzdExpbmUo
aW5saW5lVGV4dEJveC5zdHlsZSgpLCBpbmxpbmVUZXh0Qm94LmZpcnN0TGluZVN0eWxlKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIFRleHRVdGlsOjp3aWR0aChp
bmxpbmVUZXh0Qm94LCBmb250Q2FzY2FkZSwgc3RhcnRQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbiAr
IGxlbmd0aCwgeyB9KTsKKyAgICB9OworCisgICAgd2hpbGUgKGN1cnJlbnRQb3NpdGlvbiA8IHRl
eHQubGVuZ3RoKCkpIHsKKyAgICAgICAgYXV0byBpc1NlZ21lbnRCcmVha0NhbmRpZGF0ZSA9IFtd
KGF1dG8gY2hhcmFjdGVyKSB7CisgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyID09ICdcbic7
CisgICAgICAgIH07CisKKyAgICAgICAgLy8gU2VnbWVudCBicmVha3Mgd2l0aCBwcmVzZXJ2ZSBu
ZXcgbGluZSBzdHlsZSAod2hpdGUtc3BhY2U6IHByZSwgcHJlLXdyYXAsIGJyZWFrLXNwYWNlcyBh
bmQgcHJlLWxpbmUpIGNvbXB1dGUgdG8gZm9yY2VkIGxpbmUgYnJlYWsuCisgICAgICAgIGlmIChp
c1NlZ21lbnRCcmVha0NhbmRpZGF0ZSh0ZXh0W2N1cnJlbnRQb3NpdGlvbl0pICYmIHNob3VsZFBy
ZXNlcnZlTmV3bGluZSkgeworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0
ZW0oSW5saW5lU29mdExpbmVCcmVha0l0ZW06OmNyZWF0ZVNvZnRMaW5lQnJlYWtJdGVtKGlubGlu
ZVRleHRCb3gsIGN1cnJlbnRQb3NpdGlvbikpOworICAgICAgICAgICAgKytjdXJyZW50UG9zaXRp
b247CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc3Rv
cEF0V29yZFNlcGFyYXRvckJvdW5kYXJ5ID0gc2hvdWxkUHJlc2VydmVTcGFjZXNBbmRUYWJzICYm
IGZvbnRDYXNjYWRlLndvcmRTcGFjaW5nKCk7CisgICAgICAgIGlmIChhdXRvIHdoaXRlc3BhY2VD
b250ZW50ID0gbW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbih0ZXh0LCBjdXJyZW50UG9z
aXRpb24sIHNob3VsZFByZXNlcnZlTmV3bGluZSwgc2hvdWxkUHJlc2VydmVTcGFjZXNBbmRUYWJz
LCBzaG91bGRUcmVhdE5vbkJyZWFraW5nU3BhY2VBc1JlZ3VsYXJTcGFjZSwgc3RvcEF0V29yZFNl
cGFyYXRvckJvdW5kYXJ5KSkgeworICAgICAgICAgICAgQVNTRVJUKHdoaXRlc3BhY2VDb250ZW50
LT5sZW5ndGgpOworICAgICAgICAgICAgYXV0byBhcHBlbmRXaGl0ZXNwYWNlSXRlbSA9IFsmXSAo
YXV0byBzdGFydFBvc2l0aW9uLCBhdXRvIGl0ZW1MZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIHNpbXBsZVNpbmdsZVdoaXRlc3BhY2VDb250ZW50ID0gaW5saW5lVGV4dEJveC5jYW5Vc2VT
aW1wbGlmaWVkQ29udGVudE1lYXN1cmluZygpICYmIChpdGVtTGVuZ3RoID09IDEgfHwgd2hpdGVz
cGFjZUNvbnRlbnRJc1RyZWF0ZWRBc1NpbmdsZVNwYWNlKTsKKyAgICAgICAgICAgICAgICBhdXRv
IHdpZHRoID0gc2ltcGxlU2luZ2xlV2hpdGVzcGFjZUNvbnRlbnQgPyBzdGQ6Om1ha2Vfb3B0aW9u
YWwoSW5saW5lTGF5b3V0VW5pdCB7IGZvbnRDYXNjYWRlLnNwYWNlV2lkdGgoKSB9KSA6IGlubGlu
ZUl0ZW1XaWR0aChzdGFydFBvc2l0aW9uLCBpdGVtTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBm
b3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbShJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlV2hpdGVz
cGFjZUl0ZW0oaW5saW5lVGV4dEJveCwgc3RhcnRQb3NpdGlvbiwgaXRlbUxlbmd0aCwgd2hpdGVz
cGFjZUNvbnRlbnQtPmlzV29yZFNlcGFyYXRvciwgd2lkdGgpKTsKKyAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICBpZiAoc3R5bGUud2hpdGVTcGFjZSgpID09IFdoaXRlU3BhY2U6OkJyZWFrU3Bh
Y2VzKSB7CisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10ZXh0
LTMvI3doaXRlLXNwYWNlLXBoYXNlLTEKKyAgICAgICAgICAgICAgICAvLyBGb3IgYnJlYWstc3Bh
Y2VzLCBhIHNvZnQgd3JhcCBvcHBvcnR1bml0eSBleGlzdHMgYWZ0ZXIgZXZlcnkgc3BhY2UgYW5k
IGV2ZXJ5IHRhYi4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogaWYgdGhpcyB0dXJucyBvdXQg
dG8gYmUgYSBwZXJmIGhpdCB3aXRoIHRvbyBtYW55IGluZGl2aWR1YWwgd2hpdGVzcGFjZSBpbmxp
bmUgaXRlbXMsIHdlIHNob3VsZCB0cmFuc2l0aW9uIHRoaXMgbG9naWMgdG8gbGluZSBicmVha2lu
Zy4KKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdoaXRlc3BhY2VDb250
ZW50LT5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kV2hpdGVzcGFjZUl0
ZW0oY3VycmVudFBvc2l0aW9uICsgaSwgMSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICBhcHBlbmRXaGl0ZXNwYWNlSXRlbShjdXJyZW50UG9zaXRpb24sIHdoaXRlc3BhY2VD
b250ZW50LT5sZW5ndGgpOworICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IHdoaXRlc3Bh
Y2VDb250ZW50LT5sZW5ndGg7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGF1dG8gaGFzVHJhaWxpbmdTb2Z0SHlwaGVuID0gZmFsc2U7CisgICAgICAgIGF1dG8g
aW5pdGlhbE5vbldoaXRlc3BhY2VQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsKKyAgICAgICAg
YXV0byBpc0F0U29mdEh5cGhlbiA9IFsmXShhdXRvIHBvc2l0aW9uKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGV4dFtwb3NpdGlvbl0gPT0gc29mdEh5cGhlbjsKKyAgICAgICAgfTsKKyAgICAgICAg
aWYgKHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpOb25lKSB7CisgICAgICAgICAgICAvLyBM
ZXQncyBtZXJnZSBjYW5kaWRhdGUgSW5saW5lVGV4dEl0ZW1zIHNlcGFyYXRlZCBieSBzb2Z0IGh5
cGhlbiB3aGVuIHRoZSBzdHlsZSBzYXlzIHNvLgorICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRQ
b3NpdGlvbiA8IHRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIG5vbldoaXRl
U3BhY2VMZW5ndGggPSBtb3ZlVG9OZXh0QnJlYWthYmxlUG9zaXRpb24oY3VycmVudFBvc2l0aW9u
LCBsaW5lQnJlYWtJdGVyYXRvciwgc3R5bGUpOworICAgICAgICAgICAgICAgIEFTU0VSVChub25X
aGl0ZVNwYWNlTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0gbm9u
V2hpdGVTcGFjZUxlbmd0aDsKKyAgICAgICAgICAgICAgICBpZiAoIWlzQXRTb2Z0SHlwaGVuKGN1
cnJlbnRQb3NpdGlvbiAtIDEpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gbm9uV2hpdGVTcGFjZUxl
bmd0aCA9IG1vdmVUb05leHRCcmVha2FibGVQb3NpdGlvbihpbml0aWFsTm9uV2hpdGVzcGFjZVBv
c2l0aW9uLCBsaW5lQnJlYWtJdGVyYXRvciwgc3R5bGUpOworICAgICAgICAgICAgQVNTRVJUKG5v
bldoaXRlU3BhY2VMZW5ndGgpOworICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IG5vbldo
aXRlU3BhY2VMZW5ndGg7CisgICAgICAgICAgICBoYXNUcmFpbGluZ1NvZnRIeXBoZW4gPSBpc0F0
U29mdEh5cGhlbihjdXJyZW50UG9zaXRpb24gLSAxKTsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlQoaW5pdGlhbE5vbldoaXRlc3BhY2VQb3NpdGlvbiA8IGN1cnJlbnRQb3NpdGlvbik7CisgICAg
ICAgIEFTU0VSVF9JTVBMSUVTKHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpOb25lLCAhaGFz
VHJhaWxpbmdTb2Z0SHlwaGVuKTsKKyAgICAgICAgYXV0byBsZW5ndGggPSBjdXJyZW50UG9zaXRp
b24gLSBpbml0aWFsTm9uV2hpdGVzcGFjZVBvc2l0aW9uOworICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkSW5saW5lSXRlbShJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlTm9uV2hpdGVzcGFjZUl0ZW0o
aW5saW5lVGV4dEJveCwgaW5pdGlhbE5vbldoaXRlc3BhY2VQb3NpdGlvbiwgbGVuZ3RoLCBoYXNU
cmFpbGluZ1NvZnRIeXBoZW4sIGlubGluZUl0ZW1XaWR0aChpbml0aWFsTm9uV2hpdGVzcGFjZVBv
c2l0aW9uLCBsZW5ndGgpKSk7CisgICAgfQorfQogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUl0ZW1zQnVpbGRlci5oCmluZGV4IGE3OWY3MGFhYTY1MzhlYTIzOTA4MDMzZjg0NTRmM2Mz
OGQ5Y2U2NGYuLmRkZDhlNmFjMjQ5NjM4NmIyYWI5ZjRmZmQ2MzkzMzBiNDNhZDIyNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUl0ZW1zQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5oCkBAIC0zMiw2ICszMiw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgeworY2xhc3MgSW5saW5lVGV4
dEJveDsKIAogY2xhc3MgSW5saW5lSXRlbXNCdWlsZGVyIHsKIHB1YmxpYzoKQEAgLTM5LDYgKzQw
LDggQEAgcHVibGljOgogICAgIHZvaWQgYnVpbGQoKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGNy
ZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhjb25zdCBJbmxpbmVUZXh0Qm94Jik7CisKICAgICBjb25z
dCBDb250YWluZXJCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KICAgICBJbmxp
bmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9y
bWF0dGluZ1N0YXRlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcAppbmRl
eCAxMWUwYzhiODA2ZDEzMzhkNzc0NTdjZTFkZGJhYTMxMGZiZDJiNGFjLi42MjEzNTI2NGFlODNj
OWUzNzI1YmMxNWQ0YzY4NDU2ZTA2ZjI4MDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4
dEl0ZW0uY3BwCkBAIC0zOCwxMjMgKzM4LDM3IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBzdGF0
aWNfYXNzZXJ0KHNpemVvZihJbmxpbmVJdGVtKSA9PSBzaXplb2YoSW5saW5lVGV4dEl0ZW0pLCAi
Iik7CiAKLXN0cnVjdCBXaGl0ZXNwYWNlQ29udGVudCB7Ci0gICAgc2l6ZV90IGxlbmd0aCB7IDAg
fTsKLSAgICBib29sIGlzV29yZFNlcGFyYXRvciB7IHRydWUgfTsKLX07Ci1zdGF0aWMgc3RkOjpv
cHRpb25hbDxXaGl0ZXNwYWNlQ29udGVudD4gbW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlv
bihTdHJpbmdWaWV3IHRleHRDb250ZW50LCBzaXplX3Qgc3RhcnRQb3NpdGlvbiwgYm9vbCBwcmVz
ZXJ2ZU5ld2xpbmUsIGJvb2wgcHJlc2VydmVUYWIsIGJvb2wgdHJlYXROb25CcmVha2luZ1NwYWNl
QXNSZWd1bGFyU3BhY2UsIGJvb2wgc3RvcEF0V29yZFNlcGFyYXRvckJvdW5kYXJ5KQorSW5saW5l
VGV4dEl0ZW06OklubGluZVRleHRJdGVtKGNvbnN0IElubGluZVRleHRCb3gmIGlubGluZVRleHRC
b3gsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaGFzVHJhaWxpbmdTb2Z0
SHlwaGVuLCBib29sIGlzV29yZFNlcGFyYXRvciwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRV
bml0PiB3aWR0aCwgVGV4dEl0ZW1UeXBlIHRleHRJdGVtVHlwZSkKKyAgICA6IElubGluZUl0ZW0o
aW5saW5lVGV4dEJveCwgVHlwZTo6VGV4dCkKIHsKLSAgICBhdXRvIGhhc1dvcmRTZXBhcmF0b3JD
aGFyYWN0ZXIgPSBmYWxzZTsKLSAgICBhdXRvIGlzV29yZFNlcGFyYXRvckNoYXJhY3RlciA9IGZh
bHNlOwotICAgIGF1dG8gaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyID0gWyZdKGF1dG8gY2hhcmFjdGVy
KSB7Ci0gICAgICAgIC8vIHdoaXRlIHNwYWNlIHByb2Nlc3NpbmcgaW4gQ1NTIGFmZmVjdHMgb25s
eSB0aGUgZG9jdW1lbnQgd2hpdGUgc3BhY2UgY2hhcmFjdGVyczogc3BhY2VzIChVKzAwMjApLCB0
YWJzIChVKzAwMDkpLCBhbmQgc2VnbWVudCBicmVha3MuCi0gICAgICAgIGF1dG8gaXNUcmVhdGVk
QXNTcGFjZUNoYXJhY3RlciA9IGNoYXJhY3RlciA9PSBzcGFjZSB8fCAoY2hhcmFjdGVyID09IG5l
d2xpbmVDaGFyYWN0ZXIgJiYgIXByZXNlcnZlTmV3bGluZSkgfHwgKGNoYXJhY3RlciA9PSB0YWJD
aGFyYWN0ZXIgJiYgIXByZXNlcnZlVGFiKSB8fCAoY2hhcmFjdGVyID09IG5vQnJlYWtTcGFjZSAm
JiB0cmVhdE5vbkJyZWFraW5nU3BhY2VBc1JlZ3VsYXJTcGFjZSk7Ci0gICAgICAgIGlzV29yZFNl
cGFyYXRvckNoYXJhY3RlciA9IGlzVHJlYXRlZEFzU3BhY2VDaGFyYWN0ZXI7Ci0gICAgICAgIGhh
c1dvcmRTZXBhcmF0b3JDaGFyYWN0ZXIgPSBoYXNXb3JkU2VwYXJhdG9yQ2hhcmFjdGVyIHx8IGlz
V29yZFNlcGFyYXRvckNoYXJhY3RlcjsKLSAgICAgICAgcmV0dXJuIGlzVHJlYXRlZEFzU3BhY2VD
aGFyYWN0ZXIgfHwgY2hhcmFjdGVyID09IHRhYkNoYXJhY3RlcjsKLSAgICB9OwotICAgIGF1dG8g
bmV4dE5vbldoaXRlU3BhY2VQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247Ci0gICAgd2hpbGUgKG5l
eHROb25XaGl0ZVNwYWNlUG9zaXRpb24gPCB0ZXh0Q29udGVudC5sZW5ndGgoKSAmJiBpc1doaXRl
c3BhY2VDaGFyYWN0ZXIodGV4dENvbnRlbnRbbmV4dE5vbldoaXRlU3BhY2VQb3NpdGlvbl0pKSB7
Ci0gICAgICAgIGlmIChVTkxJS0VMWShzdG9wQXRXb3JkU2VwYXJhdG9yQm91bmRhcnkgJiYgaGFz
V29yZFNlcGFyYXRvckNoYXJhY3RlciAmJiAhaXNXb3JkU2VwYXJhdG9yQ2hhcmFjdGVyKSkKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICArK25leHROb25XaGl0ZVNwYWNlUG9zaXRpb247Ci0g
ICAgfQotICAgIHJldHVybiBuZXh0Tm9uV2hpdGVTcGFjZVBvc2l0aW9uID09IHN0YXJ0UG9zaXRp
b24gPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0aW9uYWwoV2hpdGVzcGFjZUNvbnRlbnQg
eyBuZXh0Tm9uV2hpdGVTcGFjZVBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbiwgaGFzV29yZFNlcGFy
YXRvckNoYXJhY3RlciB9KTsKKyAgICBtX3N0YXJ0T3JQb3NpdGlvbiA9IHN0YXJ0OworICAgIG1f
bGVuZ3RoID0gbGVuZ3RoOworICAgIG1faGFzV2lkdGggPSAhIXdpZHRoOworICAgIG1faGFzVHJh
aWxpbmdTb2Z0SHlwaGVuID0gaGFzVHJhaWxpbmdTb2Z0SHlwaGVuOworICAgIG1faXNXb3JkU2Vw
YXJhdG9yID0gaXNXb3JkU2VwYXJhdG9yOworICAgIG1fd2lkdGggPSB3aWR0aC52YWx1ZV9vcigw
KTsKKyAgICBtX3RleHRJdGVtVHlwZSA9IHRleHRJdGVtVHlwZTsKIH0KIAotc3RhdGljIHVuc2ln
bmVkIG1vdmVUb05leHRCcmVha2FibGVQb3NpdGlvbih1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCBM
YXp5TGluZUJyZWFrSXRlcmF0b3ImIGxpbmVCcmVha0l0ZXJhdG9yLCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpCitJbmxpbmVUZXh0SXRlbTo6SW5saW5lVGV4dEl0ZW0oY29uc3QgSW5saW5lVGV4
dEJveCYgaW5saW5lVGV4dEJveCkKKyAgICA6IElubGluZUl0ZW0oaW5saW5lVGV4dEJveCwgVHlw
ZTo6VGV4dCkKIHsKLSAgICBhdXRvIHRleHRMZW5ndGggPSBsaW5lQnJlYWtJdGVyYXRvci5zdHJp
bmdWaWV3KCkubGVuZ3RoKCk7Ci0gICAgYXV0byBzdGFydFBvc2l0aW9uRm9yTmV4dEJyZWFrYWJs
ZVBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKLSAgICB3aGlsZSAoc3RhcnRQb3NpdGlvbkZvck5l
eHRCcmVha2FibGVQb3NpdGlvbiA8IHRleHRMZW5ndGgpIHsKLSAgICAgICAgYXV0byBuZXh0QnJl
YWthYmxlUG9zaXRpb24gPSBUZXh0VXRpbDo6ZmluZE5leHRCcmVha2FibGVQb3NpdGlvbihsaW5l
QnJlYWtJdGVyYXRvciwgc3RhcnRQb3NpdGlvbkZvck5leHRCcmVha2FibGVQb3NpdGlvbiwgc3R5
bGUpOwotICAgICAgICAvLyBPZnRlbnRpbWVzIHRoZSBuZXh0IGJyZWFrYWJsZSBwb3NpdGlvbiBj
b21lcyBiYWNrIGFzIHRoZSBzdGFydCBwb3NpdGlvbiAobW9zdCBub3RhYmx5IGh5cGhlbnMpLgot
ICAgICAgICBpZiAobmV4dEJyZWFrYWJsZVBvc2l0aW9uICE9IHN0YXJ0UG9zaXRpb24pCi0gICAg
ICAgICAgICByZXR1cm4gbmV4dEJyZWFrYWJsZVBvc2l0aW9uIC0gc3RhcnRQb3NpdGlvbjsKLSAg
ICAgICAgKytzdGFydFBvc2l0aW9uRm9yTmV4dEJyZWFrYWJsZVBvc2l0aW9uOwotICAgIH0KLSAg
ICByZXR1cm4gdGV4dExlbmd0aCAtIHN0YXJ0UG9zaXRpb247CiB9CiAKLXZvaWQgSW5saW5lVGV4
dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lQ29udGVu
dCwgY29uc3QgSW5saW5lVGV4dEJveCYgaW5saW5lVGV4dEJveCkKK0lubGluZVRleHRJdGVtIElu
bGluZVRleHRJdGVtOjpsZWZ0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKLSAgICBhdXRvIHRl
eHQgPSBpbmxpbmVUZXh0Qm94LmNvbnRlbnQoKTsKLSAgICBpZiAoIXRleHQubGVuZ3RoKCkpCi0g
ICAgICAgIHJldHVybiBpbmxpbmVDb250ZW50LmFwcGVuZChJbmxpbmVUZXh0SXRlbTo6Y3JlYXRl
RW1wdHlJdGVtKGlubGluZVRleHRCb3gpKTsKLQotICAgIGF1dG8mIHN0eWxlID0gaW5saW5lVGV4
dEJveC5zdHlsZSgpOwotICAgIGF1dG8mIGZvbnRDYXNjYWRlID0gc3R5bGUuZm9udENhc2NhZGUo
KTsKLSAgICBhdXRvIHNob3VsZFByZXNlcnZlU3BhY2VzQW5kVGFicyA9IFRleHRVdGlsOjpzaG91
bGRQcmVzZXJ2ZVNwYWNlc0FuZFRhYnMoaW5saW5lVGV4dEJveCk7Ci0gICAgYXV0byB3aGl0ZXNw
YWNlQ29udGVudElzVHJlYXRlZEFzU2luZ2xlU3BhY2UgPSAhc2hvdWxkUHJlc2VydmVTcGFjZXNB
bmRUYWJzOwotICAgIGF1dG8gc2hvdWxkUHJlc2VydmVOZXdsaW5lID0gVGV4dFV0aWw6OnNob3Vs
ZFByZXNlcnZlTmV3bGluZShpbmxpbmVUZXh0Qm94KTsKLSAgICBhdXRvIHNob3VsZFRyZWF0Tm9u
QnJlYWtpbmdTcGFjZUFzUmVndWxhclNwYWNlID0gc3R5bGUubmJzcE1vZGUoKSA9PSBOQlNQTW9k
ZTo6U3BhY2U7Ci0gICAgYXV0byBsaW5lQnJlYWtJdGVyYXRvciA9IExhenlMaW5lQnJlYWtJdGVy
YXRvciB7IHRleHQsIHN0eWxlLmNvbXB1dGVkTG9jYWxlKCksIFRleHRVdGlsOjpsaW5lQnJlYWtJ
dGVyYXRvck1vZGUoc3R5bGUubGluZUJyZWFrKCkpIH07Ci0gICAgdW5zaWduZWQgY3VycmVudFBv
c2l0aW9uID0gMDsKLQotICAgIGF1dG8gaW5saW5lSXRlbVdpZHRoID0gWyZdKGF1dG8gc3RhcnRQ
b3NpdGlvbiwgYXV0byBsZW5ndGgpIC0+IHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4g
ewotICAgICAgICBpZiAoIWlubGluZVRleHRCb3guY2FuVXNlU2ltcGxpZmllZENvbnRlbnRNZWFz
dXJpbmcoKQotICAgICAgICAgICAgfHwgIVRleHRVdGlsOjpjYW5Vc2VTaW1wbGlmaWVkVGV4dE1l
YXN1cmluZ0ZvckZpcnN0TGluZShpbmxpbmVUZXh0Qm94LnN0eWxlKCksIGlubGluZVRleHRCb3gu
Zmlyc3RMaW5lU3R5bGUoKSkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICByZXR1
cm4gVGV4dFV0aWw6OndpZHRoKGlubGluZVRleHRCb3gsIGZvbnRDYXNjYWRlLCBzdGFydFBvc2l0
aW9uLCBzdGFydFBvc2l0aW9uICsgbGVuZ3RoLCB7IH0pOwotICAgIH07Ci0KLSAgICB3aGlsZSAo
Y3VycmVudFBvc2l0aW9uIDwgdGV4dC5sZW5ndGgoKSkgewotICAgICAgICBhdXRvIGlzU2VnbWVu
dEJyZWFrQ2FuZGlkYXRlID0gW10oYXV0byBjaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIHJldHVy
biBjaGFyYWN0ZXIgPT0gJ1xuJzsKLSAgICAgICAgfTsKLQotICAgICAgICAvLyBTZWdtZW50IGJy
ZWFrcyB3aXRoIHByZXNlcnZlIG5ldyBsaW5lIHN0eWxlICh3aGl0ZS1zcGFjZTogcHJlLCBwcmUt
d3JhcCwgYnJlYWstc3BhY2VzIGFuZCBwcmUtbGluZSkgY29tcHV0ZSB0byBmb3JjZWQgbGluZSBi
cmVhay4KLSAgICAgICAgaWYgKGlzU2VnbWVudEJyZWFrQ2FuZGlkYXRlKHRleHRbY3VycmVudFBv
c2l0aW9uXSkgJiYgc2hvdWxkUHJlc2VydmVOZXdsaW5lKSB7Ci0gICAgICAgICAgICBpbmxpbmVD
b250ZW50LmFwcGVuZChJbmxpbmVTb2Z0TGluZUJyZWFrSXRlbTo6Y3JlYXRlU29mdExpbmVCcmVh
a0l0ZW0oaW5saW5lVGV4dEJveCwgY3VycmVudFBvc2l0aW9uKSk7Ci0gICAgICAgICAgICArK2N1
cnJlbnRQb3NpdGlvbjsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgYXV0byBzdG9wQXRXb3JkU2VwYXJhdG9yQm91bmRhcnkgPSBzaG91bGRQcmVzZXJ2ZVNwYWNl
c0FuZFRhYnMgJiYgZm9udENhc2NhZGUud29yZFNwYWNpbmcoKTsKLSAgICAgICAgaWYgKGF1dG8g
d2hpdGVzcGFjZUNvbnRlbnQgPSBtb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHRleHQs
IGN1cnJlbnRQb3NpdGlvbiwgc2hvdWxkUHJlc2VydmVOZXdsaW5lLCBzaG91bGRQcmVzZXJ2ZVNw
YWNlc0FuZFRhYnMsIHNob3VsZFRyZWF0Tm9uQnJlYWtpbmdTcGFjZUFzUmVndWxhclNwYWNlLCBz
dG9wQXRXb3JkU2VwYXJhdG9yQm91bmRhcnkpKSB7Ci0gICAgICAgICAgICBBU1NFUlQod2hpdGVz
cGFjZUNvbnRlbnQtPmxlbmd0aCk7Ci0gICAgICAgICAgICBhdXRvIGFwcGVuZFdoaXRlc3BhY2VJ
dGVtID0gWyZdIChhdXRvIHN0YXJ0UG9zaXRpb24sIGF1dG8gaXRlbUxlbmd0aCkgewotICAgICAg
ICAgICAgICAgIGF1dG8gc2ltcGxlU2luZ2xlV2hpdGVzcGFjZUNvbnRlbnQgPSBpbmxpbmVUZXh0
Qm94LmNhblVzZVNpbXBsaWZpZWRDb250ZW50TWVhc3VyaW5nKCkgJiYgKGl0ZW1MZW5ndGggPT0g
MSB8fCB3aGl0ZXNwYWNlQ29udGVudElzVHJlYXRlZEFzU2luZ2xlU3BhY2UpOwotICAgICAgICAg
ICAgICAgIGF1dG8gd2lkdGggPSBzaW1wbGVTaW5nbGVXaGl0ZXNwYWNlQ29udGVudCA/IHN0ZDo6
bWFrZV9vcHRpb25hbChJbmxpbmVMYXlvdXRVbml0IHsgZm9udENhc2NhZGUuc3BhY2VXaWR0aCgp
IH0pIDogaW5saW5lSXRlbVdpZHRoKHN0YXJ0UG9zaXRpb24sIGl0ZW1MZW5ndGgpOwotICAgICAg
ICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKElubGluZVRleHRJdGVtOjpjcmVhdGVXaGl0
ZXNwYWNlSXRlbShpbmxpbmVUZXh0Qm94LCBzdGFydFBvc2l0aW9uLCBpdGVtTGVuZ3RoLCB3aGl0
ZXNwYWNlQ29udGVudC0+aXNXb3JkU2VwYXJhdG9yLCB3aWR0aCkpOwotICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgIGlmIChzdHlsZS53aGl0ZVNwYWNlKCkgPT0gV2hpdGVTcGFjZTo6QnJlYWtT
cGFjZXMpIHsKLSAgICAgICAgICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRl
eHQtMy8jd2hpdGUtc3BhY2UtcGhhc2UtMQotICAgICAgICAgICAgICAgIC8vIEZvciBicmVhay1z
cGFjZXMsIGEgc29mdCB3cmFwIG9wcG9ydHVuaXR5IGV4aXN0cyBhZnRlciBldmVyeSBzcGFjZSBh
bmQgZXZlcnkgdGFiLgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBpZiB0aGlzIHR1cm5zIG91
dCB0byBiZSBhIHBlcmYgaGl0IHdpdGggdG9vIG1hbnkgaW5kaXZpZHVhbCB3aGl0ZXNwYWNlIGlu
bGluZSBpdGVtcywgd2Ugc2hvdWxkIHRyYW5zaXRpb24gdGhpcyBsb2dpYyB0byBsaW5lIGJyZWFr
aW5nLgotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2hpdGVzcGFjZUNv
bnRlbnQtPmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgICAgICBhcHBlbmRXaGl0ZXNwYWNl
SXRlbShjdXJyZW50UG9zaXRpb24gKyBpLCAxKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgIGFwcGVuZFdoaXRlc3BhY2VJdGVtKGN1cnJlbnRQb3NpdGlvbiwgd2hpdGVzcGFj
ZUNvbnRlbnQtPmxlbmd0aCk7Ci0gICAgICAgICAgICBjdXJyZW50UG9zaXRpb24gKz0gd2hpdGVz
cGFjZUNvbnRlbnQtPmxlbmd0aDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Cisg
ICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDw9IHRoaXMtPmxlbmd0aCgpKTsKKyAgICBBU1NFUlQo
bV90ZXh0SXRlbVR5cGUgIT0gVGV4dEl0ZW1UeXBlOjpVbmRlZmluZWQpOworICAgIEFTU0VSVChs
ZW5ndGgpOworICAgIHJldHVybiB7IGlubGluZVRleHRCb3goKSwgc3RhcnQoKSwgbGVuZ3RoLCBm
YWxzZSwgaXNXb3JkU2VwYXJhdG9yKCksIHN0ZDo6bnVsbG9wdCwgbV90ZXh0SXRlbVR5cGUgfTsK
K30KIAotICAgICAgICBhdXRvIGhhc1RyYWlsaW5nU29mdEh5cGhlbiA9IGZhbHNlOwotICAgICAg
ICBhdXRvIGluaXRpYWxOb25XaGl0ZXNwYWNlUG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb247Ci0g
ICAgICAgIGF1dG8gaXNBdFNvZnRIeXBoZW4gPSBbJl0oYXV0byBwb3NpdGlvbikgewotICAgICAg
ICAgICAgcmV0dXJuIHRleHRbcG9zaXRpb25dID09IHNvZnRIeXBoZW47Ci0gICAgICAgIH07Ci0g
ICAgICAgIGlmIChzdHlsZS5oeXBoZW5zKCkgPT0gSHlwaGVuczo6Tm9uZSkgewotICAgICAgICAg
ICAgLy8gTGV0J3MgbWVyZ2UgY2FuZGlkYXRlIElubGluZVRleHRJdGVtcyBzZXBhcmF0ZWQgYnkg
c29mdCBoeXBoZW4gd2hlbiB0aGUgc3R5bGUgc2F5cyBzby4KLSAgICAgICAgICAgIHdoaWxlIChj
dXJyZW50UG9zaXRpb24gPCB0ZXh0Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBu
b25XaGl0ZVNwYWNlTGVuZ3RoID0gbW92ZVRvTmV4dEJyZWFrYWJsZVBvc2l0aW9uKGN1cnJlbnRQ
b3NpdGlvbiwgbGluZUJyZWFrSXRlcmF0b3IsIHN0eWxlKTsKLSAgICAgICAgICAgICAgICBBU1NF
UlQobm9uV2hpdGVTcGFjZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgY3VycmVudFBvc2l0aW9u
ICs9IG5vbldoaXRlU3BhY2VMZW5ndGg7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0F0U29mdEh5
cGhlbihjdXJyZW50UG9zaXRpb24gLSAxKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIG5vbldoaXRl
U3BhY2VMZW5ndGggPSBtb3ZlVG9OZXh0QnJlYWthYmxlUG9zaXRpb24oaW5pdGlhbE5vbldoaXRl
c3BhY2VQb3NpdGlvbiwgbGluZUJyZWFrSXRlcmF0b3IsIHN0eWxlKTsKLSAgICAgICAgICAgIEFT
U0VSVChub25XaGl0ZVNwYWNlTGVuZ3RoKTsKLSAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiAr
PSBub25XaGl0ZVNwYWNlTGVuZ3RoOwotICAgICAgICAgICAgaGFzVHJhaWxpbmdTb2Z0SHlwaGVu
ID0gaXNBdFNvZnRIeXBoZW4oY3VycmVudFBvc2l0aW9uIC0gMSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgQVNTRVJUKGluaXRpYWxOb25XaGl0ZXNwYWNlUG9zaXRpb24gPCBjdXJyZW50UG9zaXRpb24p
OwotICAgICAgICBBU1NFUlRfSU1QTElFUyhzdHlsZS5oeXBoZW5zKCkgPT0gSHlwaGVuczo6Tm9u
ZSwgIWhhc1RyYWlsaW5nU29mdEh5cGhlbik7Ci0gICAgICAgIGF1dG8gbGVuZ3RoID0gY3VycmVu
dFBvc2l0aW9uIC0gaW5pdGlhbE5vbldoaXRlc3BhY2VQb3NpdGlvbjsKLSAgICAgICAgaW5saW5l
Q29udGVudC5hcHBlbmQoSW5saW5lVGV4dEl0ZW06OmNyZWF0ZU5vbldoaXRlc3BhY2VJdGVtKGlu
bGluZVRleHRCb3gsIGluaXRpYWxOb25XaGl0ZXNwYWNlUG9zaXRpb24sIGxlbmd0aCwgaGFzVHJh
aWxpbmdTb2Z0SHlwaGVuLCBpbmxpbmVJdGVtV2lkdGgoaW5pdGlhbE5vbldoaXRlc3BhY2VQb3Np
dGlvbiwgbGVuZ3RoKSkpOwotICAgIH0KK0lubGluZVRleHRJdGVtIElubGluZVRleHRJdGVtOjpy
aWdodCh1bnNpZ25lZCBsZW5ndGgsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gd2lk
dGgpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDw9IHRoaXMtPmxlbmd0aCgp
KTsKKyAgICBBU1NFUlQobV90ZXh0SXRlbVR5cGUgIT0gVGV4dEl0ZW1UeXBlOjpVbmRlZmluZWQp
OworICAgIEFTU0VSVChsZW5ndGgpOworICAgIHJldHVybiB7IGlubGluZVRleHRCb3goKSwgZW5k
KCkgLSBsZW5ndGgsIGxlbmd0aCwgaGFzVHJhaWxpbmdTb2Z0SHlwaGVuKCksIGlzV29yZFNlcGFy
YXRvcigpLCB3aWR0aCwgbV90ZXh0SXRlbVR5cGUgfTsKIH0KIAogYm9vbCBJbmxpbmVUZXh0SXRl
bTo6aXNaZXJvV2lkdGhTcGFjZVNlcGFyYXRvcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
VGV4dEl0ZW0uaAppbmRleCA5NzhlNTFmM2FjNjcxODM3MTkxYmE3N2RiYTc5NjY1NWJmYWYyNmU5
Li4xZjgwZjc3Yzk5M2QxODMxNDMyYTkwNWUxYzRlODI2OWQyMGZiYTY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZVRleHRJdGVtLmgKQEAgLTM3LDcgKzM3LDkgQEAgdXNpbmcgSW5saW5lSXRlbXMg
PSBWZWN0b3I8SW5saW5lSXRlbT47CiAKIGNsYXNzIElubGluZVRleHRJdGVtIDogcHVibGljIElu
bGluZUl0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUFuZEFwcGVuZFRleHRJ
dGVtcyhJbmxpbmVJdGVtcyYsIGNvbnN0IElubGluZVRleHRCb3gmKTsKKyAgICBzdGF0aWMgSW5s
aW5lVGV4dEl0ZW0gY3JlYXRlV2hpdGVzcGFjZUl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYsIHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaXNXb3JkU2VwYXJhdG9yLCBzdGQ6
Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKTsKKyAgICBzdGF0aWMgSW5saW5lVGV4
dEl0ZW0gY3JlYXRlTm9uV2hpdGVzcGFjZUl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYsIHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaGFzVHJhaWxpbmdTb2Z0SHlwaGVuLCBz
dGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKTsKKyAgICBzdGF0aWMgSW5saW5l
VGV4dEl0ZW0gY3JlYXRlRW1wdHlJdGVtKGNvbnN0IElubGluZVRleHRCb3gmKTsKIAogICAgIHVu
c2lnbmVkIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9yUG9zaXRpb247IH0KICAgICB1
bnNpZ25lZCBlbmQoKSBjb25zdCB7IHJldHVybiBzdGFydCgpICsgbGVuZ3RoKCk7IH0KQEAgLTYx
LDEwICs2Myw2IEBAIHByaXZhdGU6CiAKICAgICBJbmxpbmVUZXh0SXRlbShjb25zdCBJbmxpbmVU
ZXh0Qm94JiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBoYXNUcmFpbGlu
Z1NvZnRIeXBoZW4sIGJvb2wgaXNXb3JkU2VwYXJhdG9yLCBzdGQ6Om9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IHdpZHRoLCBUZXh0SXRlbVR5cGUpOwogICAgIGV4cGxpY2l0IElubGluZVRleHRJ
dGVtKGNvbnN0IElubGluZVRleHRCb3gmKTsKLQotICAgIHN0YXRpYyBJbmxpbmVUZXh0SXRlbSBj
cmVhdGVXaGl0ZXNwYWNlSXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiwgdW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGxlbmd0aCwgYm9vbCBpc1dvcmRTZXBhcmF0b3IsIHN0ZDo6b3B0aW9uYWw8SW5s
aW5lTGF5b3V0VW5pdD4gd2lkdGgpOwotICAgIHN0YXRpYyBJbmxpbmVUZXh0SXRlbSBjcmVhdGVO
b25XaGl0ZXNwYWNlSXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGxlbmd0aCwgYm9vbCBoYXNUcmFpbGluZ1NvZnRIeXBoZW4sIHN0ZDo6b3B0aW9uYWw8
SW5saW5lTGF5b3V0VW5pdD4gd2lkdGgpOwotICAgIHN0YXRpYyBJbmxpbmVUZXh0SXRlbSBjcmVh
dGVFbXB0eUl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYpOwogfTsKIAogaW5saW5lIElubGluZVRl
eHRJdGVtIElubGluZVRleHRJdGVtOjpjcmVhdGVXaGl0ZXNwYWNlSXRlbShjb25zdCBJbmxpbmVU
ZXh0Qm94JiBpbmxpbmVUZXh0Qm94LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBi
b29sIGlzV29yZFNlcGFyYXRvciwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0
aCkKQEAgLTgzLDM5ICs4MSw2IEBAIGlubGluZSBJbmxpbmVUZXh0SXRlbSBJbmxpbmVUZXh0SXRl
bTo6Y3JlYXRlRW1wdHlJdGVtKGNvbnN0IElubGluZVRleHRCb3gmIGlubGluCiAgICAgcmV0dXJu
IElubGluZVRleHRJdGVtIHsgaW5saW5lVGV4dEJveCB9OwogfQogCi1pbmxpbmUgSW5saW5lVGV4
dEl0ZW06OklubGluZVRleHRJdGVtKGNvbnN0IElubGluZVRleHRCb3gmIGlubGluZVRleHRCb3gs
IHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaGFzVHJhaWxpbmdTb2Z0SHlw
aGVuLCBib29sIGlzV29yZFNlcGFyYXRvciwgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0
PiB3aWR0aCwgVGV4dEl0ZW1UeXBlIHRleHRJdGVtVHlwZSkKLSAgICA6IElubGluZUl0ZW0oaW5s
aW5lVGV4dEJveCwgVHlwZTo6VGV4dCkKLXsKLSAgICBtX3N0YXJ0T3JQb3NpdGlvbiA9IHN0YXJ0
OwotICAgIG1fbGVuZ3RoID0gbGVuZ3RoOwotICAgIG1faGFzV2lkdGggPSAhIXdpZHRoOwotICAg
IG1faGFzVHJhaWxpbmdTb2Z0SHlwaGVuID0gaGFzVHJhaWxpbmdTb2Z0SHlwaGVuOwotICAgIG1f
aXNXb3JkU2VwYXJhdG9yID0gaXNXb3JkU2VwYXJhdG9yOwotICAgIG1fd2lkdGggPSB3aWR0aC52
YWx1ZV9vcigwKTsKLSAgICBtX3RleHRJdGVtVHlwZSA9IHRleHRJdGVtVHlwZTsKLX0KLQotaW5s
aW5lIElubGluZVRleHRJdGVtOjpJbmxpbmVUZXh0SXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBp
bmxpbmVUZXh0Qm94KQotICAgIDogSW5saW5lSXRlbShpbmxpbmVUZXh0Qm94LCBUeXBlOjpUZXh0
KQotewotfQotCi1pbmxpbmUgSW5saW5lVGV4dEl0ZW0gSW5saW5lVGV4dEl0ZW06OmxlZnQodW5z
aWduZWQgbGVuZ3RoKSBjb25zdAotewotICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSB0aGlz
LT5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUKG1fdGV4dEl0ZW1UeXBlICE9IFRleHRJdGVtVHlwZTo6
VW5kZWZpbmVkKTsKLSAgICBBU1NFUlQobGVuZ3RoKTsKLSAgICByZXR1cm4geyBpbmxpbmVUZXh0
Qm94KCksIHN0YXJ0KCksIGxlbmd0aCwgZmFsc2UsIGlzV29yZFNlcGFyYXRvcigpLCBzdGQ6Om51
bGxvcHQsIG1fdGV4dEl0ZW1UeXBlIH07Ci19Ci0KLWlubGluZSBJbmxpbmVUZXh0SXRlbSBJbmxp
bmVUZXh0SXRlbTo6cmlnaHQodW5zaWduZWQgbGVuZ3RoLCBzdGQ6Om9wdGlvbmFsPElubGluZUxh
eW91dFVuaXQ+IHdpZHRoKSBjb25zdAotewotICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSB0
aGlzLT5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUKG1fdGV4dEl0ZW1UeXBlICE9IFRleHRJdGVtVHlw
ZTo6VW5kZWZpbmVkKTsKLSAgICBBU1NFUlQobGVuZ3RoKTsKLSAgICByZXR1cm4geyBpbmxpbmVU
ZXh0Qm94KCksIGVuZCgpIC0gbGVuZ3RoLCBsZW5ndGgsIGhhc1RyYWlsaW5nU29mdEh5cGhlbigp
LCBpc1dvcmRTZXBhcmF0b3IoKSwgd2lkdGgsIG1fdGV4dEl0ZW1UeXBlIH07Ci19Ci0KIH0KIH0K
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>