<?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>221174</bug_id>
          
          <creation_ts>2021-01-29 20:10:26 -0800</creation_ts>
          <short_desc>Additional cleanup of CSSPropertyParserHelpers</short_desc>
          <delta_ts>2021-01-30 14:34:13 -0800</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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=221164</see_also>
          <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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1724003</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-29 20:10:26 -0800</bug_when>
    <thetext>Additional cleanup of CSSPropertyParserHelpers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724004</commentid>
    <comment_count>1</comment_count>
      <attachid>418805</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-29 20:13:49 -0800</bug_when>
    <thetext>Created attachment 418805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724064</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-30 14:33:06 -0800</bug_when>
    <thetext>Committed r272121: &lt;https://trac.webkit.org/changeset/272121&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418805.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724065</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-30 14:34:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/73796435&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418805</attachid>
            <date>2021-01-29 20:13:49 -0800</date>
            <delta_ts>2021-01-30 14:33:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221174-20210129201348.patch</filename>
            <type>text/plain</type>
            <size>37274</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjA5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAxLTI5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRpdGlvbmFsIGNsZWFudXAgb2Yg
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjExNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAtIEFkZGVkICJyYXciIHZlcnNpb25zIG9mIGNvbnN1bWVJbnRlZ2Vy
IGFuZCBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyLgorICAgICAgICAtIENvbnZlcnRlZCBjb25zdW1l
UG9zaXRpb24gYW5kIGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uIHRvIHVzZSAKKyAgICAg
ICAgICBhbiBPcHRpb25hbCByZXR1cm4gdmFsdWUgcmF0aGVyIHRoYW4gb3V0IHBhcmFtZXRlcnMs
IHVzaW5nIGEgbmV3CisgICAgICAgICAgUG9zaXRpb25Db29yZGluYXRlcyBoZWxwZXIgc3RydWN0
LgorICAgICAgICAtIEFkZGVkIGNvbnN1bWVOdW1iZXJPclBlcmNlbnREaXZpZGVkQnkxMDBSYXcg
aGVscGVyIGZvciBjb21tb24gcGF0dGVyCisgICAgICAgICAgb2Ygc3VwcG9ydGluZyBlaXRlciBh
IG51bWJlciwgb3IgYSBwZXJjZW50YWdlIG5vcm1hbGl6ZWQgYnkgZGl2aWRpbmcKKyAgICAgICAg
ICBpdCBieSAxMDAuCisKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV4cHJlc3Npb24uY3BwOgor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oOgorCiAyMDIxLTAxLTI5ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERldmlydHVhbGl6ZSBzb21l
IGZ1bmN0aW9ucyBvbiBJbnB1dFR5cGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5RXhwcmVzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlFeHByZXNzaW9uLmNwcAkocmV2aXNpb24gMjcyMDk1KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFeHByZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDEzICsy
MjAsMTIgQEAgTWVkaWFRdWVyeUV4cHJlc3Npb246Ok1lZGlhUXVlcnlFeHByZXNzaQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoIUNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29u
c3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGVub21pbmF0b3JWYWx1ZSA9IENT
U1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVBvc2l0aXZlSW50ZWdlcihyYW5nZSk7Cisg
ICAgICAgIGF1dG8gZGVub21pbmF0b3JWYWx1ZSA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6
Y29uc3VtZVBvc2l0aXZlSW50ZWdlclJhdyhyYW5nZSk7CiAgICAgICAgIGlmICghZGVub21pbmF0
b3JWYWx1ZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB1bnNpZ25lZCBudW1lcmF0
b3IgPSBjbGFtcFRvPHVuc2lnbmVkPihmaXJzdFZhbHVlLT5kb3VibGVWYWx1ZSgpKTsKLSAgICAg
ICAgdW5zaWduZWQgZGVub21pbmF0b3IgPSBjbGFtcFRvPHVuc2lnbmVkPihkZW5vbWluYXRvclZh
bHVlLT5kb3VibGVWYWx1ZSgpKTsKLSAgICAgICAgbV92YWx1ZSA9IENTU0FzcGVjdFJhdGlvVmFs
dWU6OmNyZWF0ZShudW1lcmF0b3IsIGRlbm9taW5hdG9yKTsKKyAgICAgICAgbV92YWx1ZSA9IENT
U0FzcGVjdFJhdGlvVmFsdWU6OmNyZWF0ZShudW1lcmF0b3IsICpkZW5vbWluYXRvclZhbHVlKTsK
ICAgICAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCShy
ZXZpc2lvbiAyNzIwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcwLDE3ICszNzAsMTUgQEAgYm9vbCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUNTU1dpZGVLZQogCiBib29sIENTU1Byb3BlcnR5UGFyc2Vy
Ojpjb25zdW1lVHJhbnNmb3JtT3JpZ2luKGJvb2wgaW1wb3J0YW50KQogewotICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0WDsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHJlc3VsdFk7Ci0gICAgaWYgKGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uKG1fcmFuZ2Us
IG1fY29udGV4dC5tb2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIHJlc3VsdFgsIHJlc3VsdFkp
KSB7CisgICAgaWYgKGF1dG8gcmVzdWx0WFkgPSBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlv
bkNvb3JkaW5hdGVzKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBVbml0bGVzc1F1aXJrOjpGb3Ji
aWQpKSB7CiAgICAgICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKICAgICAgICAgYm9v
bCBhdEVuZCA9IG1fcmFuZ2UuYXRFbmQoKTsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiByZXN1bHRaID0gY29uc3VtZUxlbmd0aChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSwgVmFs
dWVSYW5nZUFsbCk7CisgICAgICAgIGF1dG8gcmVzdWx0WiA9IGNvbnN1bWVMZW5ndGgobV9yYW5n
ZSwgbV9jb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2VBbGwpOwogICAgICAgICBib29sIGhhc1ogPSBy
ZXN1bHRaOwogICAgICAgICBpZiAoIWhhc1ogJiYgIWF0RW5kKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblgs
IENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luLCByZXN1bHRYLnJlbGVhc2VOb25OdWxsKCksIGlt
cG9ydGFudCk7Ci0gICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2lu
WSwgQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW4sIHJlc3VsdFkucmVsZWFzZU5vbk51bGwoKSwg
aW1wb3J0YW50KTsKKyAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm1Pcmln
aW5YLCBDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpbiwgV1RGTW92ZShyZXN1bHRYWS0+eCksIGlt
cG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2lu
WSwgQ1NTUHJvcGVydHlUcmFuc2Zvcm1PcmlnaW4sIFdURk1vdmUocmVzdWx0WFktPnkpLCBpbXBv
cnRhbnQpOwogICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpblos
IENTU1Byb3BlcnR5VHJhbnNmb3JtT3JpZ2luLCByZXN1bHRaID8gcmVzdWx0Wi5yZWxlYXNlTm9u
TnVsbCgpIDogQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSgwLCBDU1NVbml0
VHlwZTo6Q1NTX1BYKSwgaW1wb3J0YW50LCAhaGFzWik7CiAgICAgICAgIAogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTM5MCwxMSArMzg4LDkgQEAgYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29u
c3VtZVRyYW5zZm9ybQogCiBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lUGVyc3BlY3Rp
dmVPcmlnaW4oYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiByZXN1bHRYOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0WTsKLSAgICBp
ZiAoY29uc3VtZVBvc2l0aW9uKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBVbml0bGVzc1F1aXJr
OjpGb3JiaWQsIFBvc2l0aW9uU3ludGF4OjpQb3NpdGlvbiwgcmVzdWx0WCwgcmVzdWx0WSkpIHsK
LSAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpblgsIENTU1By
b3BlcnR5UGVyc3BlY3RpdmVPcmlnaW4sIHJlc3VsdFgucmVsZWFzZU5vbk51bGwoKSwgaW1wb3J0
YW50KTsKLSAgICAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlQZXJzcGVjdGl2ZU9yaWdpblks
IENTU1Byb3BlcnR5UGVyc3BlY3RpdmVPcmlnaW4sIHJlc3VsdFkucmVsZWFzZU5vbk51bGwoKSwg
aW1wb3J0YW50KTsKKyAgICBpZiAoYXV0byByZXN1bHQgPSBjb25zdW1lUG9zaXRpb25Db29yZGlu
YXRlcyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBQb3Np
dGlvblN5bnRheDo6UG9zaXRpb24pKSB7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
UGVyc3BlY3RpdmVPcmlnaW5YLCBDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luLCBXVEZNb3Zl
KHJlc3VsdC0+eCksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
UGVyc3BlY3RpdmVPcmlnaW5ZLCBDU1NQcm9wZXJ0eVBlcnNwZWN0aXZlT3JpZ2luLCBXVEZNb3Zl
KHJlc3VsdC0+eSksIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00NzQsOCArNDcwLDggQEAgc3RhdGljIFJlZlB0cjxDU1NGb250
RmVhdHVyZVZhbHVlPiBjb25zdQogICAgIGludCB0YWdWYWx1ZSA9IDE7CiAgICAgaWYgKCFyYW5n
ZS5hdEVuZCgpICYmIHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gQ29tbWFUb2tlbikgewogICAgICAg
ICAvLyBGZWF0dXJlIHRhZyB2YWx1ZXMgY291bGQgZm9sbG93OiA8aW50ZWdlcj4gfCBvbiB8IG9m
ZgotICAgICAgICBpZiAoYXV0byBwcmltaXRpdmVWYWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdl
LCAwKSkKLSAgICAgICAgICAgIHRhZ1ZhbHVlID0gcHJpbWl0aXZlVmFsdWUtPmludFZhbHVlKCk7
CisgICAgICAgIGlmIChhdXRvIGludGVnZXIgPSBjb25zdW1lSW50ZWdlclJhdyhyYW5nZSwgMCkp
CisgICAgICAgICAgICB0YWdWYWx1ZSA9ICppbnRlZ2VyOwogICAgICAgICBlbHNlIGlmIChyYW5n
ZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZU9uIHx8IHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1Zh
bHVlT2ZmKQogICAgICAgICAgICAgdGFnVmFsdWUgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLmlkKCkgPT0gQ1NTVmFsdWVPbjsKICAgICAgICAgZWxzZQpAQCAtMTE0OCw4ICsx
MTQ0LDggQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvdW50ZXIoQwogICAgICAg
ICBpZiAoIWNvdW50ZXJOYW1lKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IGludCBpID0gZGVmYXVsdFZhbHVlOwotICAgICAgICBpZiAoUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBjb3VudGVyVmFsdWUgPSBjb25zdW1lSW50ZWdlcihyYW5nZSkpCi0gICAgICAgICAgICBp
ID0gY291bnRlclZhbHVlLT5pbnRWYWx1ZSgpOworICAgICAgICBpZiAoYXV0byBjb3VudGVyVmFs
dWUgPSBjb25zdW1lSW50ZWdlclJhdyhyYW5nZSkpCisgICAgICAgICAgICBpID0gKmNvdW50ZXJW
YWx1ZTsKICAgICAgICAgbGlzdC0+YXBwZW5kKGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihjb3Vu
dGVyTmFtZS5yZWxlYXNlTm9uTnVsbCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGksIENT
U1VuaXRUeXBlOjpDU1NfTlVNQkVSKSwgUGFpcjo6SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6Q29h
bGVzY2UpKTsKICAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CiAgICAgcmV0dXJuIGxpc3Q7
CkBAIC0xMzMyLDggKzEzMjgsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lVG91
Y2hBY3RpCiAKIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVMaW5lQ2xh
bXAoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBjbGFtcFZhbHVlID0gY29uc3VtZVBlcmNlbnQocmFuZ2UsIFZhbHVlUmFuZ2VOb25O
ZWdhdGl2ZSk7Ci0gICAgaWYgKGNsYW1wVmFsdWUpCisgICAgaWYgKGF1dG8gY2xhbXBWYWx1ZSA9
IGNvbnN1bWVQZXJjZW50KHJhbmdlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpKQogICAgICAgICBy
ZXR1cm4gY2xhbXBWYWx1ZTsKICAgICAvLyBXaGVuIHNwZWNpZnlpbmcgbnVtYmVyIG9mIGxpbmVz
LCBkb24ndCBhbGxvdyAwIGFzIGEgdmFsaWQgdmFsdWUuCiAgICAgcmV0dXJuIGNvbnN1bWVQb3Np
dGl2ZUludGVnZXIocmFuZ2UpOwpAQCAtMTQ1NCw3ICsxNDQ5LDcgQEAgc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZVN0ZXBzKENTUwogICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2VD
b3B5ID0gcmFuZ2U7CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0
aW9uKHJhbmdlQ29weSk7CiAgICAgCi0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzdGVw
c1ZhbHVlID0gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihhcmdzKTsKKyAgICBhdXRvIHN0ZXBzVmFs
dWUgPSBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyUmF3KGFyZ3MpOwogICAgIGlmICghc3RlcHNWYWx1
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCkBAIC0xNDkzLDEyICsxNDg4LDExIEBA
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVTdGVwcyhDU1MKICAgICBpZiAoIWFyZ3Mu
YXRFbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN0ZXBzID0gc3Rl
cHNWYWx1ZS0+aW50VmFsdWUoKTsKLSAgICBpZiAoc3RlcHMgPD0gMSAmJiBzdGVwUG9zaXRpb24g
PT0gU3RlcHNUaW1pbmdGdW5jdGlvbjo6U3RlcFBvc2l0aW9uOjpKdW1wTm9uZSkKKyAgICBpZiAo
KnN0ZXBzVmFsdWUgPT0gMSAmJiBzdGVwUG9zaXRpb24gPT0gU3RlcHNUaW1pbmdGdW5jdGlvbjo6
U3RlcFBvc2l0aW9uOjpKdW1wTm9uZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisK
ICAgICByYW5nZSA9IHJhbmdlQ29weTsKLSAgICByZXR1cm4gQ1NTU3RlcHNUaW1pbmdGdW5jdGlv
blZhbHVlOjpjcmVhdGUoc3RlcHMsIHN0ZXBQb3NpdGlvbik7CisgICAgcmV0dXJuIENTU1N0ZXBz
VGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKCpzdGVwc1ZhbHVlLCBzdGVwUG9zaXRpb24pOwog
fQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ3ViaWNCZXppZXIoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC0yNjA1LDEyICsyNTk5LDExIEBAIHN0YXRpYyBSZWZQdHI8
Q1NTQmFzaWNTaGFwZUNpcmNsZT4gY29uc3UKICAgICBpZiAoUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiByYWRpdXMgPSBjb25zdW1lU2hhcGVSYWRpdXMoYXJncywgY29udGV4dC5tb2RlKSkKICAg
ICAgICAgc2hhcGUtPnNldFJhZGl1cyhyYWRpdXMucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgaWYg
KGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF0PihhcmdzKSkgewotICAgICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNlbnRlclg7Ci0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y2VudGVyWTsKLSAgICAgICAgaWYgKCFjb25zdW1lUG9zaXRpb24oYXJncywgY29udGV4dC5tb2Rl
LCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIFBvc2l0aW9uU3ludGF4OjpQb3NpdGlvbiwgY2VudGVy
WCwgY2VudGVyWSkpCisgICAgICAgIGF1dG8gY2VudGVyQ29vcmRpbmF0ZXMgPSBjb25zdW1lUG9z
aXRpb25Db29yZGluYXRlcyhhcmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCwgUG9zaXRpb25TeW50YXg6OlBvc2l0aW9uKTsKKyAgICAgICAgaWYgKCFjZW50ZXJDb29yZGlu
YXRlcykKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBzaGFwZS0+c2V0Q2Vu
dGVyWChjZW50ZXJYLnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICBzaGFwZS0+c2V0Q2VudGVy
WShjZW50ZXJZLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBzaGFwZS0+c2V0Q2VudGVyWChX
VEZNb3ZlKGNlbnRlckNvb3JkaW5hdGVzLT54KSk7CisgICAgICAgIHNoYXBlLT5zZXRDZW50ZXJZ
KFdURk1vdmUoY2VudGVyQ29vcmRpbmF0ZXMtPnkpKTsKICAgICB9CiAgICAgcmV0dXJuIHNoYXBl
OwogfQpAQCAtMjYyOCwxMiArMjYyMSwxMSBAQCBzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hhcGVF
bGxpcHNlPiBjb25zCiAgICAgICAgIHNoYXBlLT5zZXRSYWRpdXNZKHJhZGl1c1kucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgfQogICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdD4oYXJncykp
IHsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjZW50ZXJYOwotICAgICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRlclk7Ci0gICAgICAgIGlmICghY29uc3VtZVBv
c2l0aW9uKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBQb3NpdGlv
blN5bnRheDo6UG9zaXRpb24sIGNlbnRlclgsIGNlbnRlclkpKQorICAgICAgICBhdXRvIGNlbnRl
ckNvb3JkaW5hdGVzID0gY29uc3VtZVBvc2l0aW9uQ29vcmRpbmF0ZXMoYXJncywgY29udGV4dC5t
b2RlLCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIFBvc2l0aW9uU3ludGF4OjpQb3NpdGlvbik7Cisg
ICAgICAgIGlmICghY2VudGVyQ29vcmRpbmF0ZXMpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgc2hhcGUtPnNldENlbnRlclgoY2VudGVyWC5yZWxlYXNlTm9uTnVsbCgpKTsK
LSAgICAgICAgc2hhcGUtPnNldENlbnRlclkoY2VudGVyWS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICAgICAgc2hhcGUtPnNldENlbnRlclgoV1RGTW92ZShjZW50ZXJDb29yZGluYXRlcy0+eCkpOwor
ICAgICAgICBzaGFwZS0+c2V0Q2VudGVyWShXVEZNb3ZlKGNlbnRlckNvb3JkaW5hdGVzLT55KSk7
CiAgICAgfQogICAgIHJldHVybiBzaGFwZTsKIH0KQEAgLTM2MDIsMTEgKzM1OTQsMTAgQEAgc3Rh
dGljIGJvb2wgY29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0aQogICAgIGlmIChpc0F1dG9SZXBl
YXQpCiAgICAgICAgIHJlcGVhdGVkVmFsdWVzID0gQ1NTR3JpZEF1dG9SZXBlYXRWYWx1ZTo6Y3Jl
YXRlKGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpKTsKICAgICBlbHNlIHsK
LSAgICAgICAgLy8gRklYTUU6IGEgY29uc3VtZUludGVnZXJSYXcgd291bGQgYmUgbW9yZSBlZmZp
Y2llbnQgaGVyZS4KLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXBldGl0aW9u
ID0gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihhcmdzKTsKKyAgICAgICAgYXV0byByZXBldGl0aW9u
ID0gY29uc3VtZVBvc2l0aXZlSW50ZWdlclJhdyhhcmdzKTsKICAgICAgICAgaWYgKCFyZXBldGl0
aW9uKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXBldGl0aW9ucyA9IGNs
YW1wVG88c2l6ZV90PihyZXBldGl0aW9uLT5kb3VibGVWYWx1ZSgpLCAwLCBHcmlkUG9zaXRpb246
Om1heCgpKTsKKyAgICAgICAgcmVwZXRpdGlvbnMgPSBjbGFtcFRvPHNpemVfdD4oc3RhdGljX2Nh
c3Q8c2l6ZV90PigqcmVwZXRpdGlvbiksIDAsIEdyaWRQb3NpdGlvbjo6bWF4KCkpOwogICAgICAg
ICByZXBlYXRlZFZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
ICAgICB9CiAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQpA
QCAtNDM2MywxMiArNDM1NCw5IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6
OnBhcnMKICAgICBjYXNlIENTU1Byb3BlcnR5U3RvcE9wYWNpdHk6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUZsb29kT3BhY2l0eToKICAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0eToKLSAgICB7Ci0g
ICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWUgPSBjb25zdW1lTnVtYmVyKG1fcmFu
Z2UsIFZhbHVlUmFuZ2VBbGwpOwotICAgICAgICBpZiAocGFyc2VkVmFsdWUpCisgICAgICAgIGlm
IChhdXRvIHBhcnNlZFZhbHVlID0gY29uc3VtZU51bWJlcihtX3JhbmdlLCBWYWx1ZVJhbmdlQWxs
KSkKICAgICAgICAgICAgIHJldHVybiBwYXJzZWRWYWx1ZTsKICAgICAgICAgcmV0dXJuIGNvbnN1
bWVQZXJjZW50KG1fcmFuZ2UsIFZhbHVlUmFuZ2VBbGwpOwotICAgIH0KICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm94RmxleDoKICAgICAgICAgcmV0dXJuIGNvbnN1bWVOdW1iZXIobV9yYW5n
ZSwgVmFsdWVSYW5nZUFsbCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhc2VsaW5lU2hpZnQ6CkBA
IC01MDM1LDE0ICs1MDIzLDE0IEBAIGJvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVGbGV4
KGJvb2wKICAgICB9IGVsc2UgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgICAg
IHdoaWxlICghbV9yYW5nZS5hdEVuZCgpICYmIGluZGV4KysgPCAzKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byBudW0gPSBjb25zdW1lTnVtYmVyUmF3KG1fcmFuZ2UpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCpudW0gPCAwKQorICAgICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gY29uc3VtZU51
bWJlclJhdyhtX3JhbmdlKSkgeworICAgICAgICAgICAgICAgIGlmICgqbnVtYmVyIDwgMCkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGlmIChmbGV4
R3JvdyA9PSB1bnNldFZhbHVlKQotICAgICAgICAgICAgICAgICAgICBmbGV4R3JvdyA9ICpudW07
CisgICAgICAgICAgICAgICAgICAgIGZsZXhHcm93ID0gKm51bWJlcjsKICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChmbGV4U2hyaW5rID09IHVuc2V0VmFsdWUpCi0gICAgICAgICAgICAgICAgICAg
IGZsZXhTaHJpbmsgPSAqbnVtOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCEqbnVtKSAvLyBm
bGV4IG9ubHkgYWxsb3dzIGEgYmFzaXMgb2YgMCAoc2FucyB1bml0cykgaWYgZmxleC1ncm93IGFu
ZCBmbGV4LXNocmluayB2YWx1ZXMgaGF2ZSBhbHJlYWR5IGJlZW4gc2V0LgorICAgICAgICAgICAg
ICAgICAgICBmbGV4U2hyaW5rID0gKm51bWJlcjsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICgh
Km51bWJlcikgLy8gZmxleCBvbmx5IGFsbG93cyBhIGJhc2lzIG9mIDAgKHNhbnMgdW5pdHMpIGlm
IGZsZXgtZ3JvdyBhbmQgZmxleC1zaHJpbmsgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuIHNldC4K
ICAgICAgICAgICAgICAgICAgICAgZmxleEJhc2lzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSgwLCBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUyODMsMTIgKzUyNzEsMTEgQEAgYm9vbCBD
U1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUxlZ2FjeUJyZQogc3RhdGljIGJvb2wgY29uc3VtZUJh
Y2tncm91bmRQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgUmVmUHRyPENTU1Zh
bHVlPiYgcmVzdWx0WCwgUmVmUHRyPENTU1ZhbHVlPiYgcmVzdWx0WSkKIHsKICAgICBkbyB7Ci0g
ICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcG9zaXRpb25YOwotICAgICAgICBSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBvc2l0aW9uWTsKLSAgICAgICAgaWYgKCFjb25zdW1lUG9z
aXRpb24ocmFuZ2UsIGNvbnRleHQubW9kZSwgdW5pdGxlc3MsIFBvc2l0aW9uU3ludGF4OjpCYWNr
Z3JvdW5kUG9zaXRpb24sIHBvc2l0aW9uWCwgcG9zaXRpb25ZKSkKKyAgICAgICAgYXV0byBwb3Np
dGlvbiA9IGNvbnN1bWVQb3NpdGlvbkNvb3JkaW5hdGVzKHJhbmdlLCBjb250ZXh0Lm1vZGUsIHVu
aXRsZXNzLCBQb3NpdGlvblN5bnRheDo6QmFja2dyb3VuZFBvc2l0aW9uKTsKKyAgICAgICAgaWYg
KCFwb3NpdGlvbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYWRkQmFja2dy
b3VuZFZhbHVlKHJlc3VsdFgsIHBvc2l0aW9uWC5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAg
YWRkQmFja2dyb3VuZFZhbHVlKHJlc3VsdFksIHBvc2l0aW9uWS5yZWxlYXNlTm9uTnVsbCgpKTsK
KyAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKHJlc3VsdFgsIFdURk1vdmUocG9zaXRpb24tPngp
KTsKKyAgICAgICAgYWRkQmFja2dyb3VuZFZhbHVlKHJlc3VsdFksIFdURk1vdmUocG9zaXRpb24t
PnkpKTsKICAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdl
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MzYxLDEyICs1MzQ4LDExIEBAIGJvb2wgQ1NT
UHJvcGVydHlQYXJzZXI6OmNvbnN1bWVCYWNrZ3JvdW4KICAgICAgICAgICAgICAgICAgICAgdmFs
dWVZID0gcHJpbWl0aXZlVmFsdWVZOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YIHx8IHByb3BlcnR5ID09IENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCkgewogICAgICAgICAgICAgICAgICAgICBDU1NQYXJz
ZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IG1fcmFuZ2U7Ci0gICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcHJpbWl0aXZlVmFsdWU7Ci0gICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcHJpbWl0aXZlVmFsdWVZOwotICAgICAgICAg
ICAgICAgICAgICBpZiAoIWNvbnN1bWVQb3NpdGlvbihyYW5nZUNvcHksIG1fY29udGV4dC5tb2Rl
LCBVbml0bGVzc1F1aXJrOjpGb3JiaWQsIFBvc2l0aW9uU3ludGF4OjpCYWNrZ3JvdW5kUG9zaXRp
b24sIHByaW1pdGl2ZVZhbHVlLCBwcmltaXRpdmVWYWx1ZVkpKQorICAgICAgICAgICAgICAgICAg
ICBhdXRvIHBvc2l0aW9uID0gY29uc3VtZVBvc2l0aW9uQ29vcmRpbmF0ZXMocmFuZ2VDb3B5LCBt
X2NvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBQb3NpdGlvblN5bnRheDo6QmFj
a2dyb3VuZFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwb3NpdGlvbikKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB2YWx1
ZSA9IHByaW1pdGl2ZVZhbHVlOwotICAgICAgICAgICAgICAgICAgICB2YWx1ZVkgPSBwcmltaXRp
dmVWYWx1ZVk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gV1RGTW92ZShwb3NpdGlvbi0+
eCk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlWSA9IFdURk1vdmUocG9zaXRpb24tPnkpOwog
ICAgICAgICAgICAgICAgICAgICBtX3JhbmdlID0gcmFuZ2VDb3B5OwogICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB8fCBwcm9w
ZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmICghY29uc3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShtX3JhbmdlKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVs
cGVycy5jcHAJKHJldmlzaW9uIDI3MjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMs
MTUgQEAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBjb25zdW1lRnVuY3Rpb24oQ1NTUAogICAgIHJldHVy
biBjb250ZW50czsKIH0KIAorc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU51bWJlck9y
UGVyY2VudERpdmlkZWRCeTEwMFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVS
YW5nZSB2YWx1ZVJhbmdlID0gVmFsdWVSYW5nZUFsbCkKK3sKKyAgICBpZiAoYXV0byBwZXJjZW50
ID0gY29uc3VtZVBlcmNlbnRSYXcocmFuZ2UsIHZhbHVlUmFuZ2UpKQorICAgICAgICByZXR1cm4g
KnBlcmNlbnQgLyAxMDAuMDsKKyAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3
KHJhbmdlLCB2YWx1ZVJhbmdlKSkKKyAgICAgICAgcmV0dXJuICpudW1iZXI7CisgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKK30KKwogLy8gRklYTUU6IGNvbnNpZGVyIHB1bGxpbmcgaW4gdGhlIHBh
cnNpbmcgbG9naWMgZnJvbSBDU1NDYWxjdWxhdGlvblZhbHVlLmNwcC4KIGNsYXNzIENhbGNQYXJz
ZXIgewogcHVibGljOgpAQCAtMTExLDkgKzEyMCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgh
bV9jYWxjVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgbV9zb3Vy
Y2VSYW5nZSA9IG1fcmFuZ2U7Ci0gICAgICAgIGRvdWJsZSB2YWx1ZSA9IHN0ZDo6bWF4KG1fY2Fs
Y1ZhbHVlLT5kb3VibGVWYWx1ZSgpLCBtaW5pbXVtVmFsdWUpOwotICAgICAgICB2YWx1ZSA9IHN0
ZDo6cm91bmQodmFsdWUpOwotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVWYWx1ZSh2YWx1ZSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOworICAgICAgICBy
ZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShzdGQ6OnJvdW5kKHN0
ZDo6bWF4KG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpLCBtaW5pbXVtVmFsdWUpKSwgQ1NTVW5p
dFR5cGU6OkNTU19OVU1CRVIpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludFR5
cGU+IE9wdGlvbmFsPEludFR5cGU+IGNvbnN1bWVJbnRlZ2VyVHlwZVJhdyhkb3VibGUgbWluaW11
bVZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3JhbmdlOworICAg
ICAgICByZXR1cm4gY2xhbXBUbzxJbnRUeXBlPihzdGQ6OnJvdW5kKHN0ZDo6bWF4KG1fY2FsY1Zh
bHVlLT5kb3VibGVWYWx1ZSgpLCBtaW5pbXVtVmFsdWUpKSk7CiAgICAgfQogCiAgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTnVtYmVyKCkKQEAgLTE4NCwzMSArMTk5LDUwIEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPENTU0NhbGNWYWx1ZT4gbV9jYWxjVmFsdWU7CiB9OwogCi1S
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJbnRlZ2VyKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgSW50VHlw
ZT4gT3B0aW9uYWw8SW50VHlwZT4gY29uc3VtZUludGVnZXJUeXBlUmF3KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQogewogICAgIGNvbnN0IENTU1BhcnNl
clRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IE51
bWJlclRva2VuKSB7CiAgICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgPT0gTnVt
YmVyVmFsdWVUeXBlIHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgbWluaW11bVZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZVZhbHVlKHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
bnVtZXJpY1ZhbHVlKCksIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBjbGFtcFRvPEludFR5cGU+KHJhbmdl
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCkpOwogICAgIH0KIAog
ICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVuY3Rpb25Ub2tlbikKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBDYWxjUGFyc2VyIGNh
bGNQYXJzZXIocmFuZ2UsIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlcik7CiAgICAgaWYgKGNv
bnN0IENTU0NhbGNWYWx1ZSogY2FsY3VsYXRpb24gPSBjYWxjUGFyc2VyLnZhbHVlKCkpIHsKICAg
ICAgICAgaWYgKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgpICE9IENhbGN1bGF0aW9uQ2F0ZWdvcnk6
Ok51bWJlcikKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gY2Fs
Y1BhcnNlci5jb25zdW1lSW50ZWdlcihtaW5pbXVtVmFsdWUpOworICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZUludGVnZXJU
eXBlUmF3PEludFR5cGU+KG1pbmltdW1WYWx1ZSk7CiAgICAgfQogCisgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKK30KKworT3B0aW9uYWw8aW50PiBjb25zdW1lSW50ZWdlclJhdyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgZG91YmxlIG1pbmltdW1WYWx1ZSkKK3sKKyAgICByZXR1cm4gY29u
c3VtZUludGVnZXJUeXBlUmF3PGludD4ocmFuZ2UsIG1pbmltdW1WYWx1ZSk7Cit9CisKK1JlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUludGVnZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIGRvdWJsZSBtaW5pbXVtVmFsdWUpCit7CisgICAgaWYgKGF1dG8gaW50ZWdlciA9IGNv
bnN1bWVJbnRlZ2VyUmF3KHJhbmdlLCBtaW5pbXVtVmFsdWUpKQorICAgICAgICByZXR1cm4gQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSgqaW50ZWdlciwgQ1NTVW5pdFR5cGU6
OkNTU19OVU1CRVIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCitPcHRpb25hbDx1bnNpZ25l
ZD4gY29uc3VtZVBvc2l0aXZlSW50ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
K3sKKyAgICByZXR1cm4gY29uc3VtZUludGVnZXJUeXBlUmF3PHVuc2lnbmVkPihyYW5nZSwgMSk7
Cit9CisKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKLSAgICByZXR1cm4gY29uc3VtZUludGVnZXIo
cmFuZ2UsIDEpOworICAgIGlmIChhdXRvIGludGVnZXIgPSBjb25zdW1lUG9zaXRpdmVJbnRlZ2Vy
UmF3KHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlVmFsdWUoKmludGVnZXIsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lTnVtYmVyUmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmFuZ2UpCkBAIC03MjMsMTMgKzc1
NywxMSBAQCBzdGF0aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlCiAKICAgICB1
aW50OF90IGFscGhhQ29tcG9uZW50ID0gMjU1OwogICAgIGlmIChjb25zdW1lQWxwaGFTZXBhcmF0
b3IoKSkgewotICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3Mp
KQotICAgICAgICAgICAgYWxwaGFDb21wb25lbnQgPSBjb252ZXJ0RmxvYXRBbHBoYVRvPHVpbnQ4
X3Q+KCpudW1iZXIpOwotICAgICAgICBlbHNlIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVy
Y2VudFJhdyhhcmdzKSkKLSAgICAgICAgICAgIGFscGhhQ29tcG9uZW50ID0gY29udmVydEZsb2F0
QWxwaGFUbzx1aW50OF90PigqcGVyY2VudCAvIDEwMC4wKTsKLSAgICAgICAgZWxzZQorICAgICAg
ICBhdXRvIGFscGhhID0gY29uc3VtZU51bWJlck9yUGVyY2VudERpdmlkZWRCeTEwMFJhdyhhcmdz
KTsKKyAgICAgICAgaWYgKCFhbHBoYSkKICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgfTsK
KyAgICAgICAgYWxwaGFDb21wb25lbnQgPSBjb252ZXJ0RmxvYXRBbHBoYVRvPHVpbnQ4X3Q+KCph
bHBoYSk7CisgICAgfQogCiAgICAgaWYgKCFhcmdzLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiB7
IH07CkBAIC03NzQsMTIgKzgwNiwxMCBAQCBzdGF0aWMgQ29sb3IgcGFyc2VIU0xQYXJhbWV0ZXJz
KENTU1BhcnNlCiAKICAgICBkb3VibGUgYWxwaGEgPSAxLjA7CiAgICAgaWYgKGNvbW1hQ29uc3Vt
ZWQgfHwgc2xhc2hDb25zdW1lZCkgewotICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1l
TnVtYmVyUmF3KGFyZ3MpKQotICAgICAgICAgICAgYWxwaGEgPSBjbGFtcFRvPGRvdWJsZT4oKm51
bWJlciwgMC4wLCAxLjApOwotICAgICAgICBlbHNlIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1l
UGVyY2VudFJhdyhhcmdzKSkKLSAgICAgICAgICAgIGFscGhhID0gY2xhbXBUbzxkb3VibGU+KCpw
ZXJjZW50IC8gMTAwLjBmLCAwLjAsIDEuMCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgYXV0byBh
bHBoYVBhcmFtZXRlciA9IGNvbnN1bWVOdW1iZXJPclBlcmNlbnREaXZpZGVkQnkxMDBSYXcoYXJn
cyk7CisgICAgICAgIGlmICghYWxwaGFQYXJhbWV0ZXIpCiAgICAgICAgICAgICByZXR1cm4geyB9
OworICAgICAgICBhbHBoYSA9IGNsYW1wVG88ZG91YmxlPigqYWxwaGFQYXJhbWV0ZXIsIDAuMCwg
MS4wKTsKICAgICB9CiAKICAgICBpZiAoIWFyZ3MuYXRFbmQoKSkKQEAgLTc5MywxMCArODIzLDcg
QEAgc3RhdGljIE9wdGlvbmFsPGZsb2F0PiBwYXJzZU9wdGlvbmFsQWxwaAogICAgIGlmICghY29u
c3VtZVNsYXNoSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpCiAgICAgICAgIHJldHVybiAxLjBm
OwogCi0gICAgaWYgKGF1dG8gYWxwaGFQYXJhbWV0ZXIgPSBjb25zdW1lUGVyY2VudFJhdyhyYW5n
ZSwgVmFsdWVSYW5nZUFsbCkpCi0gICAgICAgIHJldHVybiBjbGFtcFRvPGZsb2F0PigqYWxwaGFQ
YXJhbWV0ZXIgLyAxMDAuMCwgMC4wLCAxLjApOwotCi0gICAgaWYgKGF1dG8gYWxwaGFQYXJhbWV0
ZXIgPSBjb25zdW1lTnVtYmVyUmF3KHJhbmdlLCBWYWx1ZVJhbmdlQWxsKSkKKyAgICBpZiAoYXV0
byBhbHBoYVBhcmFtZXRlciA9IGNvbnN1bWVOdW1iZXJPclBlcmNlbnREaXZpZGVkQnkxMDBSYXco
cmFuZ2UpKQogICAgICAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oKmFscGhhUGFyYW1ldGVyLCAw
LjAsIDEuMCk7CiAKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtODcyLDEyICs4OTksMTAg
QEAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3JGdW5jdGlvbkZvclJHQlR5cAogCiAgICAgZG91Ymxl
IGNoYW5uZWxzWzNdID0geyAwLCAwLCAwIH07CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyAr
K2kpIHsKLSAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gY29uc3VtZU51bWJlclJhdyhhcmdzKSkK
LSAgICAgICAgICAgIGNoYW5uZWxzW2ldID0gKm51bWJlcjsKLSAgICAgICAgZWxzZSBpZiAoYXV0
byBwZXJjZW50ID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncykpCi0gICAgICAgICAgICBjaGFubmVs
c1tpXSA9ICpwZXJjZW50IC8gMTAwLjA7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgYXV0byB2YWx1
ZSA9IGNvbnN1bWVOdW1iZXJPclBlcmNlbnREaXZpZGVkQnkxMDBSYXcoYXJncyk7CisgICAgICAg
IGlmICghdmFsdWUpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2hhbm5lbHNbaV0gPSAq
dmFsdWU7CiAgICAgfQogCiAgICAgYXV0byBhbHBoYSA9IHBhcnNlT3B0aW9uYWxBbHBoYShhcmdz
KTsKQEAgLTEwODEsMjggKzExMDYsMjMgQEAgc3RhdGljIGJvb2wgaXNWZXJ0aWNhbFBvc2l0aW9u
S2V5d29yZE9ubAogICAgIHJldHVybiB2YWx1ZS5pc1ZhbHVlSUQoKSAmJiAodmFsdWUudmFsdWVJ
RCgpID09IENTU1ZhbHVlVG9wIHx8IHZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSk7
CiB9CiAKLXN0YXRpYyB2b2lkIHBvc2l0aW9uRnJvbU9uZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
JiB2YWx1ZSwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WCwgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkKK3N0YXRpYyBQb3NpdGlvbkNvb3JkaW5hdGVzIHBvc2l0
aW9uRnJvbU9uZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKIHsKICAgICBib29sIHZh
bHVlQXBwbGllc1RvWUF4aXNPbmx5ID0gaXNWZXJ0aWNhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFs
dWUpOwotICAgIHJlc3VsdFggPSAmdmFsdWU7Ci0gICAgcmVzdWx0WSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVlQ2VudGVyKTsKICAgICBpZiAodmFsdWVBcHBs
aWVzVG9ZQXhpc09ubHkpCi0gICAgICAgIHN0ZDo6c3dhcChyZXN1bHRYLCByZXN1bHRZKTsKKyAg
ICAgICAgcmV0dXJuIHsgQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFs
dWVDZW50ZXIpLCB2YWx1ZSB9OworICAgIHJldHVybiB7IHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUNlbnRlcikgfTsKIH0KIAotc3RhdGljIGJvb2wg
cG9zaXRpb25Gcm9tVHdvVmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZTEsIENTU1ByaW1p
dGl2ZVZhbHVlJiB2YWx1ZTIsCi0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0
WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkKK3N0YXRpYyBPcHRpb25hbDxQ
b3NpdGlvbkNvb3JkaW5hdGVzPiBwb3NpdGlvbkZyb21Ud29WYWx1ZXMoQ1NTUHJpbWl0aXZlVmFs
dWUmIHZhbHVlMSwgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlMikKIHsKLSAgICBib29sIG11c3RP
cmRlckFzWFkgPSBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KHZhbHVlMSkgfHwgaXNW
ZXJ0aWNhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUyKQotICAgICAgICB8fCAhdmFsdWUxLmlz
VmFsdWVJRCgpIHx8ICF2YWx1ZTIuaXNWYWx1ZUlEKCk7CisgICAgYm9vbCBtdXN0T3JkZXJBc1hZ
ID0gaXNIb3Jpem9udGFsUG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZTEpIHx8IGlzVmVydGljYWxQ
b3NpdGlvbktleXdvcmRPbmx5KHZhbHVlMikgfHwgIXZhbHVlMS5pc1ZhbHVlSUQoKSB8fCAhdmFs
dWUyLmlzVmFsdWVJRCgpOwogICAgIGJvb2wgbXVzdE9yZGVyQXNZWCA9IGlzVmVydGljYWxQb3Np
dGlvbktleXdvcmRPbmx5KHZhbHVlMSkgfHwgaXNIb3Jpem9udGFsUG9zaXRpb25LZXl3b3JkT25s
eSh2YWx1ZTIpOwogICAgIGlmIChtdXN0T3JkZXJBc1hZICYmIG11c3RPcmRlckFzWVgpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHRYID0gJnZhbHVlMTsKLSAgICByZXN1bHRZID0g
JnZhbHVlMjsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAobXVzdE9yZGVy
QXNZWCkKLSAgICAgICAgc3RkOjpzd2FwKHJlc3VsdFgsIHJlc3VsdFkpOwotICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gUG9zaXRpb25Db29yZGluYXRlcyB7IHZhbHVlMiwgdmFsdWUx
IH07CisgICAgcmV0dXJuIFBvc2l0aW9uQ29vcmRpbmF0ZXMgeyB2YWx1ZTEsIHZhbHVlMiB9Owog
fQogCiBuYW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzSW50ZXJuYWwgewpAQCAtMTEy
MywxOCArMTE0MywyMSBAQCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVQcmlt
CiAvLyAgIFsgY2VudGVyIHwgWyBsZWZ0IHwgcmlnaHQgXSA8bGVuZ3RoLXBlcmNlbnRhZ2U+PyBd
ICYmCiAvLyAgIFsgY2VudGVyIHwgWyB0b3AgfCBib3R0b20gXSA8bGVuZ3RoLXBlcmNlbnRhZ2U+
PyBdCiAvLwotc3RhdGljIGJvb2wgYmFja2dyb3VuZFBvc2l0aW9uRnJvbVRocmVlVmFsdWVzKGNv
bnN0IHN0ZDo6YXJyYXk8Q1NTUHJpbWl0aXZlVmFsdWUqLCA1PiYgdmFsdWVzLCBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+JiByZXN1bHRYLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiByZXN1
bHRZKQorc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3Np
dGlvbkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQ6OmFycmF5PENTU1ByaW1pdGl2ZVZhbHVlKiwg
NT4mIHZhbHVlcykKIHsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdFg7Cisg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHRZOworCiAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGNlbnRlciA9IG51bGxwdHI7CiAgICAgZm9yIChpbnQgaSA9IDA7IHZhbHVlc1tpXTsg
aSsrKSB7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjdXJyZW50VmFsdWUgPSB2YWx1ZXNb
aV07CiAgICAgICAgIGlmICghY3VycmVudFZhbHVlLT5pc1ZhbHVlSUQoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAg
ICAgQ1NTVmFsdWVJRCBpZCA9IGN1cnJlbnRWYWx1ZS0+dmFsdWVJRCgpOwogICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVDZW50ZXIpIHsKICAgICAgICAgICAgIGlmIChjZW50ZXIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAgICAgICAgICAgICBjZW50ZXIgPSBjdXJyZW50VmFsdWU7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQpAQCAtMTE0NywxMiArMTE3MCwxMiBAQCBzdGF0aWMgYm9vbCBiYWNr
Z3JvdW5kUG9zaXRpb25Gcm9tVGhyZWVWCiAKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVm
dCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0KSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0WCkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICAgICAgICAgIHJlc3VsdFggPSByZXN1bHQ7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVC
b3R0b20pOwogICAgICAgICAgICAgaWYgKHJlc3VsdFkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAg
ICByZXN1bHRZID0gcmVzdWx0OwogICAgICAgICB9CiAgICAgfQpAQCAtMTE2MCw3ICsxMTgzLDcg
QEAgc3RhdGljIGJvb2wgYmFja2dyb3VuZFBvc2l0aW9uRnJvbVRocmVlVgogICAgIGlmIChjZW50
ZXIpIHsKICAgICAgICAgQVNTRVJUKHJlc3VsdFggfHwgcmVzdWx0WSk7CiAgICAgICAgIGlmIChy
ZXN1bHRYICYmIHJlc3VsdFkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICBpZiAoIXJlc3VsdFgpCiAgICAgICAgICAg
ICByZXN1bHRYID0gY2VudGVyOwogICAgICAgICBlbHNlCkBAIC0xMTY4LDcgKzExOTEsNyBAQCBz
dGF0aWMgYm9vbCBiYWNrZ3JvdW5kUG9zaXRpb25Gcm9tVGhyZWVWCiAgICAgfQogCiAgICAgQVNT
RVJUKHJlc3VsdFggJiYgcmVzdWx0WSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFBv
c2l0aW9uQ29vcmRpbmF0ZXMgeyByZXN1bHRYLnJlbGVhc2VOb25OdWxsKCksIHJlc3VsdFkucmVs
ZWFzZU5vbk51bGwoKSB9OwogfQogCiAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZh
bHVlcy00LyN0eXBlZGVmLXBvc2l0aW9uCkBAIC0xMTgxLDE2ICsxMjA0LDE5IEBAIHN0YXRpYyBi
b29sIGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJlZVYKIC8vICAgWyBbIGxlZnQgfCByaWdodCBd
IDxsZW5ndGgtcGVyY2VudGFnZT4gXSAmJgogLy8gICBbIFsgdG9wIHwgYm90dG9tIF0gPGxlbmd0
aC1wZXJjZW50YWdlPiBdCiAvLwotc3RhdGljIGJvb2wgcG9zaXRpb25Gcm9tRm91clZhbHVlcyhj
b25zdCBzdGQ6OmFycmF5PENTU1ByaW1pdGl2ZVZhbHVlKiwgNT4mIHZhbHVlcywgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVz
dWx0WSkKK3N0YXRpYyBPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBwb3NpdGlvbkZyb21G
b3VyVmFsdWVzKGNvbnN0IHN0ZDo6YXJyYXk8Q1NTUHJpbWl0aXZlVmFsdWUqLCA1PiYgdmFsdWVz
KQogeworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVzdWx0WDsKKyAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHJlc3VsdFk7CisKICAgICBmb3IgKGludCBpID0gMDsgdmFsdWVz
W2ldOyBpKyspIHsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IHZh
bHVlc1tpXTsKICAgICAgICAgaWYgKCFjdXJyZW50VmFsdWUtPmlzVmFsdWVJRCgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAog
ICAgICAgICBDU1NWYWx1ZUlEIGlkID0gY3VycmVudFZhbHVlLT52YWx1ZUlEKCk7CiAgICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZUNlbnRlcikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiByZXN1bHQ7CiAgICAgICAgIGlmICh2YWx1ZXNbaSArIDFdICYmICF2YWx1ZXNb
aSArIDFdLT5pc1ZhbHVlSUQoKSkKQEAgLTEyMDAsNzYgKzEyMjYsNzEgQEAgc3RhdGljIGJvb2wg
cG9zaXRpb25Gcm9tRm91clZhbHVlcyhjb25zdAogCiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZUxlZnQgfHwgaWQgPT0gQ1NTVmFsdWVSaWdodCkgewogICAgICAgICAgICAgaWYgKHJlc3VsdFgp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXN1bHRYID0gcmVzdWx0OwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgQVNTRVJUKGlkID09IENTU1ZhbHVlVG9wIHx8IGlkID09IENTU1Zh
bHVlQm90dG9tKTsKICAgICAgICAgICAgIGlmIChyZXN1bHRZKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAg
ICAgICAgcmVzdWx0WSA9IHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KIAogICAgIEFTU0VSVChy
ZXN1bHRYICYmIHJlc3VsdFkpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBQb3NpdGlv
bkNvb3JkaW5hdGVzIHsgcmVzdWx0WC5yZWxlYXNlTm9uTnVsbCgpLCByZXN1bHRZLnJlbGVhc2VO
b25OdWxsKCkgfTsKIH0KIAogLy8gRklYTUU6IFRoaXMgbWF5IGNvbnN1bWUgZnJvbSB0aGUgcmFu
Z2UgdXBvbiBmYWlsdXJlLiBUaGUgYmFja2dyb3VuZAogLy8gc2hvcnRoYW5kIHdvcmtzIGFyb3Vu
ZCBpdCwgYnV0IHdlIHNob3VsZCBqdXN0IGZpeCBpdCBoZXJlLgotYm9vbCBjb25zdW1lUG9zaXRp
b24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcywgUG9zaXRpb25TeW50YXggcG9zaXRpb25TeW50YXgs
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFgsIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4mIHJlc3VsdFkpCitPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBjb25zdW1lUG9z
aXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBQb3NpdGlvblN5bnRheCBw
b3NpdGlvblN5bnRheCkKIHsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlMSA9
IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3Mp
OworICAgIGF1dG8gdmFsdWUxID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgaWYgKCF2YWx1ZTEpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gdmFsdWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQ
YXJzZXJNb2RlLCB1bml0bGVzcyk7Ci0gICAgaWYgKCF2YWx1ZTIpIHsKLSAgICAgICAgcG9zaXRp
b25Gcm9tT25lVmFsdWUoKnZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KKyAgICBhdXRvIHZhbHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVu
dChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIGlmICghdmFsdWUyKQorICAg
ICAgICByZXR1cm4gcG9zaXRpb25Gcm9tT25lVmFsdWUoKnZhbHVlMSk7CiAKLSAgICBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlMyA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5n
ZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOworICAgIGF1dG8gdmFsdWUzID0gY29uc3VtZVBv
c2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgaWYg
KCF2YWx1ZTMpCi0gICAgICAgIHJldHVybiBwb3NpdGlvbkZyb21Ud29WYWx1ZXMoKnZhbHVlMSwg
KnZhbHVlMiwgcmVzdWx0WCwgcmVzdWx0WSk7CisgICAgICAgIHJldHVybiBwb3NpdGlvbkZyb21U
d29WYWx1ZXMoKnZhbHVlMSwgKnZhbHVlMik7CiAKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHZhbHVlNCA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9k
ZSwgdW5pdGxlc3MpOworICAgIGF1dG8gdmFsdWU0ID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50
KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgCi0gICAgc3RkOjphcnJheTxD
U1NQcmltaXRpdmVWYWx1ZSosIDU+IHZhbHVlczsKLSAgICB2YWx1ZXNbMF0gPSB2YWx1ZTEuZ2V0
KCk7Ci0gICAgdmFsdWVzWzFdID0gdmFsdWUyLmdldCgpOwotICAgIHZhbHVlc1syXSA9IHZhbHVl
My5nZXQoKTsKLSAgICB2YWx1ZXNbM10gPSB2YWx1ZTQuZ2V0KCk7Ci0gICAgdmFsdWVzWzRdID0g
bnVsbHB0cjsKKyAgICBzdGQ6OmFycmF5PENTU1ByaW1pdGl2ZVZhbHVlKiwgNT4gdmFsdWVzIHsK
KyAgICAgICAgdmFsdWUxLmdldCgpLAorICAgICAgICB2YWx1ZTIuZ2V0KCksCisgICAgICAgIHZh
bHVlMy5nZXQoKSwKKyAgICAgICAgdmFsdWU0LmdldCgpLAorICAgICAgICBudWxscHRyCisgICAg
fTsKICAgICAKICAgICBpZiAodmFsdWU0KQotICAgICAgICByZXR1cm4gcG9zaXRpb25Gcm9tRm91
clZhbHVlcyh2YWx1ZXMsIHJlc3VsdFgsIHJlc3VsdFkpOworICAgICAgICByZXR1cm4gcG9zaXRp
b25Gcm9tRm91clZhbHVlcyh2YWx1ZXMpOwogICAgIAogICAgIGlmIChwb3NpdGlvblN5bnRheCAh
PSBQb3NpdGlvblN5bnRheDo6QmFja2dyb3VuZFBvc2l0aW9uKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIGJhY2tn
cm91bmRQb3NpdGlvbkZyb21UaHJlZVZhbHVlcyh2YWx1ZXMsIHJlc3VsdFgsIHJlc3VsdFkpOwor
ICAgIHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Gcm9tVGhyZWVWYWx1ZXModmFsdWVzKTsKIH0K
IAogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRpb24oQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWly
ayB1bml0bGVzcywgUG9zaXRpb25TeW50YXggcG9zaXRpb25TeW50YXgpCiB7Ci0gICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHRYOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gcmVzdWx0WTsKLSAgICBpZiAoY29uc3VtZVBvc2l0aW9uKHJhbmdlLCBjc3NQYXJzZXJNb2Rl
LCB1bml0bGVzcywgcG9zaXRpb25TeW50YXgsIHJlc3VsdFgsIHJlc3VsdFkpKQotICAgICAgICBy
ZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzSW50ZXJuYWw6OmNyZWF0ZVByaW1pdGl2ZVZh
bHVlUGFpcihyZXN1bHRYLnJlbGVhc2VOb25OdWxsKCksIHJlc3VsdFkucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgaWYgKGF1dG8gY29vcmRpbmF0ZXMgPSBjb25zdW1lUG9zaXRpb25Db29yZGluYXRl
cyhyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MsIHBvc2l0aW9uU3ludGF4KSkKKyAgICAg
ICAgcmV0dXJuIENTU1Byb3BlcnR5UGFyc2VySGVscGVyc0ludGVybmFsOjpjcmVhdGVQcmltaXRp
dmVWYWx1ZVBhaXIoV1RGTW92ZShjb29yZGluYXRlcy0+eCksIFdURk1vdmUoY29vcmRpbmF0ZXMt
PnkpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBjb25zdW1lT25lT3JUd29WYWx1
ZWRQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+JiByZXN1bHRYLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiByZXN1bHRZKQorT3B0aW9u
YWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb25Db29y
ZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJz
ZXJNb2RlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQogewotICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gdmFsdWUxID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCB1bml0bGVzcyk7CisgICAgYXV0byB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21w
b25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFs
dWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0
bGVzcyk7Ci0gICAgaWYgKCF2YWx1ZTIpIHsKLSAgICAgICAgcG9zaXRpb25Gcm9tT25lVmFsdWUo
KnZhbHVlMSwgcmVzdWx0WCwgcmVzdWx0WSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKCp2YWx1ZTEsICp2YWx1ZTIsIHJlc3Vs
dFgsIHJlc3VsdFkpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gdmFs
dWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0
bGVzcyk7CisgICAgaWYgKCF2YWx1ZTIpCisgICAgICAgIHJldHVybiBwb3NpdGlvbkZyb21PbmVW
YWx1ZSgqdmFsdWUxKTsKKyAgICByZXR1cm4gcG9zaXRpb25Gcm9tVHdvVmFsdWVzKCp2YWx1ZTEs
ICp2YWx1ZTIpOwogfQogCiAvLyBUaGlzIHNob3VsZCBnbyBhd2F5IG9uY2Ugd2UgZHJvcCBzdXBw
b3J0IGZvciAtd2Via2l0LWdyYWRpZW50CkBAIC0xMzEwLDEyICsxMzMxLDEwIEBAIHN0YXRpYyBi
b29sIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRDb2wKICAgICAgICAgcG9zaXRpb24gPSAoaWQg
PT0gQ1NTVmFsdWVGcm9tKSA/IDAgOiAxOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChp
ZCA9PSBDU1NWYWx1ZUNvbG9yU3RvcCk7Ci0gICAgICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25z
dW1lUGVyY2VudFJhdyhhcmdzLCBWYWx1ZVJhbmdlQWxsKSkKLSAgICAgICAgICAgIHBvc2l0aW9u
ID0gKnBlcmNlbnQgLyAxMDAuMDsKLSAgICAgICAgZWxzZSBpZiAoYXV0byBudW1iZXIgPSBjb25z
dW1lTnVtYmVyUmF3KGFyZ3MpKQotICAgICAgICAgICAgcG9zaXRpb24gPSAqbnVtYmVyOwotICAg
ICAgICBlbHNlCisgICAgICAgIGF1dG8gdmFsdWUgPSBjb25zdW1lTnVtYmVyT3JQZXJjZW50RGl2
aWRlZEJ5MTAwUmF3KGFyZ3MpOworICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBwb3NpdGlvbiA9ICp2YWx1ZTsKIAogICAgICAgICBpZiAoIWNv
bnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xNDM2LDEwICsxNDU1LDggQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29u
c3VtZURlcHJlY2F0ZQogewogICAgIGF1dG8gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCk7CiAKLSAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNlbnRlclg7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBjZW50ZXJZOwotICAgIGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uKGFyZ3Ms
IGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgY2VudGVyWCwgY2VudGVyWSk7
Ci0gICAgaWYgKChjZW50ZXJYIHx8IGNlbnRlclkpICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdX
aGl0ZXNwYWNlKGFyZ3MpKQorICAgIGF1dG8gY2VudGVyQ29vcmRpbmF0ZSA9IGNvbnN1bWVPbmVP
clR3b1ZhbHVlZFBvc2l0aW9uQ29vcmRpbmF0ZXMoYXJncywgY3NzUGFyc2VyTW9kZSwgVW5pdGxl
c3NRdWlyazo6Rm9yYmlkKTsKKyAgICBpZiAoY2VudGVyQ29vcmRpbmF0ZSAmJiAhY29uc3VtZUNv
bW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBhdXRvIHNoYXBlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQ2lyY2xlLCBDU1NWYWx1ZUVs
bGlwc2U+KGFyZ3MpOwpAQCAtMTQ2NiwxMCArMTQ4MywxMiBAQCBzdGF0aWMgUmVmUHRyPENTU1Zh
bHVlPiBjb25zdW1lRGVwcmVjYXRlCiAgICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3Bz
KGFyZ3MsIGNzc1BhcnNlck1vZGUsIHJlc3VsdCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmVzdWx0LT5zZXRGaXJzdFgoY2VudGVyWC5jb3B5UmVmKCkpOwotICAgIHJlc3VsdC0+
c2V0Rmlyc3RZKGNlbnRlclkuY29weVJlZigpKTsKLSAgICByZXN1bHQtPnNldFNlY29uZFgoV1RG
TW92ZShjZW50ZXJYKSk7Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRZKFdURk1vdmUoY2VudGVyWSkp
OworICAgIGlmIChjZW50ZXJDb29yZGluYXRlKSB7CisgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RY
KGNlbnRlckNvb3JkaW5hdGUtPnguY29weVJlZigpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRGaXJz
dFkoY2VudGVyQ29vcmRpbmF0ZS0+eS5jb3B5UmVmKCkpOworICAgICAgICByZXN1bHQtPnNldFNl
Y29uZFgoV1RGTW92ZShjZW50ZXJDb29yZGluYXRlLT54KSk7CisgICAgICAgIHJlc3VsdC0+c2V0
U2Vjb25kWShXVEZNb3ZlKGNlbnRlckNvb3JkaW5hdGUtPnkpKTsKKyAgICB9CiAgICAgcmVzdWx0
LT5zZXRTaGFwZShXVEZNb3ZlKHNoYXBlKSk7CiAgICAgcmVzdWx0LT5zZXRTaXppbmdCZWhhdmlv
cihXVEZNb3ZlKHNpemVLZXl3b3JkKSk7CiAKQEAgLTE1MzgsMTAgKzE1NTcsMTQgQEAgc3RhdGlj
IFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJhZGlhbEdyYQogICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY2VudGVyWTsKICAgICBpZiAoYXJncy5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF0
KSB7CiAgICAgICAgIGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKLSAgICAgICAg
Y29uc3VtZVBvc2l0aW9uKGFyZ3MsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCwgUG9zaXRpb25TeW50YXg6OlBvc2l0aW9uLCBjZW50ZXJYLCBjZW50ZXJZKTsKLSAgICAgICAg
aWYgKCEoY2VudGVyWCAmJiBjZW50ZXJZKSkKKyAgICAgICAgCisgICAgICAgIGF1dG8gY2VudGVy
Q29vcmRpbmF0ZSA9IGNvbnN1bWVQb3NpdGlvbkNvb3JkaW5hdGVzKGFyZ3MsIGNzc1BhcnNlck1v
ZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgUG9zaXRpb25TeW50YXg6OlBvc2l0aW9uKTsKKyAg
ICAgICAgaWYgKCFjZW50ZXJDb29yZGluYXRlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIAorICAgICAgICBjZW50ZXJYID0gV1RGTW92ZShjZW50ZXJDb29yZGluYXRlLT54
KTsKKyAgICAgICAgY2VudGVyWSA9IFdURk1vdmUoY2VudGVyQ29vcmRpbmF0ZS0+eSk7CisgICAg
ICAgIAogICAgICAgICByZXN1bHQtPnNldEZpcnN0WChjZW50ZXJYLmNvcHlSZWYoKSk7CiAgICAg
ICAgIHJlc3VsdC0+c2V0Rmlyc3RZKGNlbnRlclkuY29weVJlZigpKTsKICAgICAgICAgCkBAIC0x
NjEzLDE4ICsxNjM2LDE2IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb25pY0dy
YWQKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdD4oYXJn
cykpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWDsKLSAg
ICAgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2VudGVyWTsKLSAgICAgICAgICAg
IGNvbnN1bWVQb3NpdGlvbihhcmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJp
ZCwgUG9zaXRpb25TeW50YXg6OlBvc2l0aW9uLCBjZW50ZXJYLCBjZW50ZXJZKTsKLSAgICAgICAg
ICAgIGlmICghKGNlbnRlclggJiYgY2VudGVyWSkpCisgICAgICAgICAgICBhdXRvIGNlbnRlckNv
b3JkaW5hdGUgPSBjb25zdW1lUG9zaXRpb25Db29yZGluYXRlcyhhcmdzLCBjb250ZXh0Lm1vZGUs
IFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgUG9zaXRpb25TeW50YXg6OlBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGlmICghY2VudGVyQ29vcmRpbmF0ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgICAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoY2VudGVyWC5jb3B5UmVmKCkp
OwotICAgICAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFkoY2VudGVyWS5jb3B5UmVmKCkpOworICAg
ICAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgoY2VudGVyQ29vcmRpbmF0ZS0+eC5jb3B5UmVmKCkp
OworICAgICAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFkoY2VudGVyQ29vcmRpbmF0ZS0+eS5jb3B5
UmVmKCkpOwogCiAgICAgICAgICAgICAvLyBSaWdodCBub3csIGNvbmljIGdyYWRpZW50cyBoYXZl
IHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgY2VudGVycy4KLSAgICAgICAgICAgIHJlc3VsdC0+c2V0
U2Vjb25kWChXVEZNb3ZlKGNlbnRlclgpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25k
WShXVEZNb3ZlKGNlbnRlclkpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25kWChXVEZN
b3ZlKGNlbnRlckNvb3JkaW5hdGUtPngpKTsKKyAgICAgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25k
WShXVEZNb3ZlKGNlbnRlckNvb3JkaW5hdGUtPnkpKTsKIAogICAgICAgICAgICAgZXhwZWN0Q29t
bWEgPSB0cnVlOwogICAgICAgICB9CkBAIC0xNjUyLDIyICsxNjczLDE4IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gY29uc3VtZUltYWdlT3JOb25lKENTU1AKIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4g
Y29uc3VtZUNyb3NzRmFkZShDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJDb250
ZXh0IGNvbnRleHQsIGJvb2wgcHJlZml4ZWQpCiB7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBmcm9t
SW1hZ2VWYWx1ZSA9IGNvbnN1bWVJbWFnZU9yTm9uZShhcmdzLCBjb250ZXh0KTsKKyAgICBhdXRv
IGZyb21JbWFnZVZhbHVlID0gY29uc3VtZUltYWdlT3JOb25lKGFyZ3MsIGNvbnRleHQpOwogICAg
IGlmICghZnJvbUltYWdlVmFsdWUgfHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2Uo
YXJncykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdG9J
bWFnZVZhbHVlID0gY29uc3VtZUltYWdlT3JOb25lKGFyZ3MsIGNvbnRleHQpOworICAgIGF1dG8g
dG9JbWFnZVZhbHVlID0gY29uc3VtZUltYWdlT3JOb25lKGFyZ3MsIGNvbnRleHQpOwogICAgIGlm
ICghdG9JbWFnZVZhbHVlIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3Mp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gcGVyY2VudGFnZTsKLSAgICBpZiAoYXV0byBwZXJjZW50VmFsdWUgPSBjb25zdW1lUGVyY2Vu
dChhcmdzLCBWYWx1ZVJhbmdlQWxsKSkKLSAgICAgICAgcGVyY2VudGFnZSA9IENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoY2xhbXBUbzxkb3VibGU+KHBlcmNlbnRWYWx1ZS0+
ZG91YmxlVmFsdWUoKSAvIDEwMC4wLCAwLCAxKSwgQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwot
ICAgIGVsc2UgaWYgKGF1dG8gbnVtYmVyVmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVl
UmFuZ2VBbGwpKQotICAgICAgICBwZXJjZW50YWdlID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVWYWx1ZShjbGFtcFRvPGRvdWJsZT4obnVtYmVyVmFsdWUtPmRvdWJsZVZhbHVlKCks
IDAsIDEpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7Ci0KKyAgICBhdXRvIHBlcmNlbnRhZ2Ug
PSBjb25zdW1lTnVtYmVyT3JQZXJjZW50RGl2aWRlZEJ5MTAwUmF3KGFyZ3MpOwogICAgIGlmICgh
cGVyY2VudGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENTU0Nyb3Nz
ZmFkZVZhbHVlOjpjcmVhdGUoZnJvbUltYWdlVmFsdWUucmVsZWFzZU5vbk51bGwoKSwgdG9JbWFn
ZVZhbHVlLnJlbGVhc2VOb25OdWxsKCksIHBlcmNlbnRhZ2UucmVsZWFzZU5vbk51bGwoKSwgcHJl
Zml4ZWQpOworICAgIGF1dG8gcGVyY2VudGFnZVZhbHVlID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVWYWx1ZShjbGFtcFRvPGRvdWJsZT4oKnBlcmNlbnRhZ2UsIDAsIDEpLCBDU1NV
bml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgcmV0dXJuIENTU0Nyb3NzZmFkZVZhbHVlOjpjcmVh
dGUoZnJvbUltYWdlVmFsdWUucmVsZWFzZU5vbk51bGwoKSwgdG9JbWFnZVZhbHVlLnJlbGVhc2VO
b25OdWxsKCksIFdURk1vdmUocGVyY2VudGFnZVZhbHVlKSwgcHJlZml4ZWQpOwogfQogCiBzdGF0
aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lV2Via2l0Q2FudmFzKENTU1BhcnNlclRva2VuUmFu
Z2UmIGFyZ3MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzLmgJKHJldmlzaW9uIDI3MjA5NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcwLDcgKzcwLDkgQEAgc3RydWN0IExlbmd0aFJhdyB7CiAKIHVzaW5nIExlbmd0aE9yUGVy
Y2VudFJhdyA9IFZhcmlhbnQ8TGVuZ3RoUmF3LCBkb3VibGU+OwogCitPcHRpb25hbDxpbnQ+IGNv
bnN1bWVJbnRlZ2VyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmLCBkb3VibGUgbWluaW11bVZhbHVl
ID0gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOwogUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBjb25zdW1lSW50ZWdlcihDU1NQYXJzZXJUb2tlblJhbmdlJiwgZG91YmxlIG1p
bmltdW1WYWx1ZSA9IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKK09wdGlv
bmFsPHVuc2lnbmVkPiBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyUmF3KENTU1BhcnNlclRva2VuUmFu
Z2UmKTsKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihD
U1NQYXJzZXJUb2tlblJhbmdlJik7CiBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVOdW1iZXJSYXco
Q1NTUGFyc2VyVG9rZW5SYW5nZSYsIFZhbHVlUmFuZ2UgPSBWYWx1ZVJhbmdlQWxsKTsKIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZU51bWJlcihDU1NQYXJzZXJUb2tlblJhbmdlJiwg
VmFsdWVSYW5nZSk7CkBAIC0xMDgsOSArMTEwLDE0IEBAIGVudW0gY2xhc3MgUG9zaXRpb25TeW50
YXggewogICAgIEJhY2tncm91bmRQb3NpdGlvbiAvLyA8YmctcG9zaXRpb24+CiB9OwogCitzdHJ1
Y3QgUG9zaXRpb25Db29yZGluYXRlcyB7CisgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB4Owor
ICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4geTsKK307CisKIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gY29uc3VtZVBvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmLCBDU1NQYXJzZXJNb2Rl
LCBVbml0bGVzc1F1aXJrLCBQb3NpdGlvblN5bnRheCk7Ci1ib29sIGNvbnN1bWVQb3NpdGlvbihD
U1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywgUG9zaXRp
b25TeW50YXgsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFgsIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4mIHJlc3VsdFkpOwotYm9vbCBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3Np
dGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyaywg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiYgcmVzdWx0WSk7CitPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBjb25zdW1lUG9z
aXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5p
dGxlc3NRdWlyaywgUG9zaXRpb25TeW50YXgpOworT3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRl
cz4gY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tl
blJhbmdlJiwgQ1NTUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyayk7CiAKIGVudW0gY2xhc3MgQWxs
b3dlZEltYWdlVHlwZSA6IHVpbnQ4X3QgewogICAgIFVSTEZ1bmN0aW9uID0gMSA8PCAwLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>