<?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>208418</bug_id>
          
          <creation_ts>2020-02-29 16:17:10 -0800</creation_ts>
          <short_desc>Slim down some CSS parsing code</short_desc>
          <delta_ts>2020-03-01 16:44:15 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1624340</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-29 16:17:10 -0800</bug_when>
    <thetext>Slim down some CSS parsing code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624347</commentid>
    <comment_count>1</comment_count>
      <attachid>392082</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-29 17:21:54 -0800</bug_when>
    <thetext>Created attachment 392082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624439</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-01 16:43:33 -0800</bug_when>
    <thetext>Committed r257698: &lt;https://trac.webkit.org/changeset/257698&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624440</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-01 16:44:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/59934113&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392082</attachid>
            <date>2020-02-29 17:21:54 -0800</date>
            <delta_ts>2020-03-01 10:59:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208418-20200229172150.patch</filename>
            <type>text/plain</type>
            <size>36240</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ5MmFlNzliOGZkMDU2
NWZlYzg4MzFiY2YzZGEzYTNkOGM4ZDkyMC4uMTUxN2YzZWFhMzIwZGNjMGMzNDljM2IzNDY0NTA2
ZWI3ZDliMzNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIwLTAyLTI5ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTbGltIGRvd24gc29tZSBDU1Mg
cGFyc2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDg0MTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOiBSZW1vdmUgdW51c2VkIGNyZWF0ZUFsbG93
aW5nTWFyZ2luUXVpcmsgZnVuY3Rpb24KKyAgICAgICAgYW5kIHRoZSBGSVhNRS1ORVdQQVJTRVIg
dGhhdCBzYWlkIHdlIHdvdWxkbid0IG5lZWQgaXQgYW55IG1vcmUgYW5kIHRoZQorICAgICAgICBu
by1sb25nZXItbmVlZGVkIGlzUXVpcmtWYWx1ZSBmdW5jdGlvbi4KKworICAgICAgICAqIGNzcy9D
U1NWYWx1ZS5oOiBSZW1vdmUgbV9pc1F1aXJrVmFsdWUuCisKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2VsZWN0
b3IpOiBDYWxsIHBhcnNlQ1NTU2VsZWN0b3IgaW5zdGVhZCBvZgorICAgICAgICBDU1NTZWxlY3Rv
clBhcnNlcjo6cGFyc2VTZWxlY3RvciwgYmVjYXVzZSB0aGF0J3MgdGhlIHB1YmxpYyBmdW5jdGlv
biBub3cuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1bWVTdHlsZVJ1bGUpOiBEaXR0by4KKworICAg
ICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmg6IFJlbW92ZWQgYSBG
SVhNRS1ORVdQQVJTRVIgdGhhdCBpcworICAgICAgICBub3cgb2Jzb2xldGUuCisKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcDogTW92ZWQgdGhlIGVudGlyZSBDU1NT
ZWxlY3RvclBhcnNlciBjbGFzcyBoZXJlIGZyb20KKyAgICAgICAgdGhlIGhlYWRlciwgYmVjYXVz
ZSB0aGUgb25seSB0aGluZyB1c2VkIG91dHNpZGUgdGhpcyBmaWxlIGlzIHRoZSBlbnRyeSBwb2lu
dCwgdGhlCisgICAgICAgIG5vdyByZW5hbWVkIHBhcnNlQ1NTU2VsZWN0b3IgZnVuY3Rpb24uCisg
ICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3RvclBhcnNlcjo6RGlzYWxsb3dQc2V1ZG9FbGVtZW50
c1Njb3BlOjpEaXNhbGxvd1BzZXVkb0VsZW1lbnRzU2NvcGUpOgorICAgICAgICBDaGFuZ2VkIHRo
aXMgY2xhc3MgdG8gdXNlIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyLgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VDU1NTZWxlY3Rvcik6IFJlbmFtZWQgQ1NTU2VsZWN0b3JQYXJzZXI6
OnBhcnNlU2VsZWN0b3IgdG8gdGhpcy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFy
c2VyOjpjb25zdW1lQ29tcGxleFNlbGVjdG9yTGlzdCk6IFVzZSBhdXRvIHRvIG1ha2Ugc29tZQor
ICAgICAgICB1bmlxdWVfcHRyIGNvZGUgbGVzcyB2ZXJib3NlLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVDb21wb3VuZFNlbGVjdG9yTGlzdCk6IERpdHRvLiBS
ZW1vdmVkIHRoZSBjaGVjayBvZgorICAgICAgICBtX2ZhaWxlZC4gT25seSB0aGUgcGFyc2VyIGVu
dHJ5IHBvaW50IGZ1bmN0aW9uIG5lZWRzIHRoYXQgY2hlY2ssIGFuZCB0aGF0IGlzIHRoZQorICAg
ICAgICBjb25zdW1lQ29tcGxleFNlbGVjdG9yTGlzdCBmdW5jdGlvbiBhYm92ZS4KKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RDb21wb3VuZEZsYWdzKTogVXNlIHN0YXRpYyBpbnN0ZWFkIG9mIGFu
b255bW91cyBuYW1lc3BhY2UuIFVzZSBlbnVtCisgICAgICAgIGNsYXNzIGluc3RlYWQgb2YgZW51
bSwgYW5kIHVzZSBPcHRpb25TZXQgaW5zdGVhZCBvZiB1bnNpZ25lZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lQ29tcGxleFNlbGVjdG9yKTogVXBkYXRlZCBm
b3IgdGhlIGFib3ZlLiBUaGlzCisgICAgICAgIHJlZmFjdG9yaW5nIGV4cG9zZWQgYSBzdHJhbmdl
bmVzcyBpbiB0aGUgc2ltcGxlIHNlbGVjdG9yIGxvb3A7IGZvciBub3cgbWFpbnRhaW5lZAorICAg
ICAgICBiZWhhdmlvciByYXRoZXIgdGhhbiBjaGFuZ2luZyBpdCB0byBkbyBzb21ldGhpbmcgbW9y
ZSBsb2dpY2FsLgorICAgICAgICAoV2ViQ29yZTo6aXNTY3JvbGxiYXJQc2V1ZG9DbGFzcyk6IFVz
ZSBzdGF0aWMgaW5zdGVhZCBvZiBhbm9ueW1vdXMgbmFtZXNwYWNlLgorICAgICAgICAoV2ViQ29y
ZTo6aXNVc2VyQWN0aW9uUHNldWRvQ2xhc3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Omlz
UHNldWRvQ2xhc3NWYWxpZEFmdGVyUHNldWRvRWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6aXNTaW1wbGVTZWxlY3RvclZhbGlkQWZ0ZXJQc2V1ZG9FbGVtZW50KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZUNvbXBvdW5kU2VsZWN0
b3IpOiBVc2UgYXV0byB0byBtYWtlIHVuaXF1ZV9wdHIKKyAgICAgICAgY29kZSBsZXNzIHZlcmJv
c2UuIEFsc28gaW5saW5lZCB0aGUgb25lIGxpbmUgYXBwbHlTaW1wbGVTZWxlY3RvclRvQ29tcG91
bmQgZnVuY3Rpb24sCisgICAgICAgIGJlY2F1c2UgdGhhdCBuYW1lIGRpZG4ndCBkb2N1bWVudCBt
dWNoIHRodXMgaGF2aW5nIGEgZnVuY3Rpb24gb2JzY3VyZWQgcmF0aGVyIHRoYW4KKyAgICAgICAg
Y2xhcmlmeWluZyB3aGF0IHdhcyBnb2luZyBvbi4gQWxzbyB1c2UgbWFrZVVuaXF1ZSBpbnN0ZWFk
IG9mIG5ldy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lSWQp
OiBVc2UgbWFrZVVuaXF1ZSBpbnN0ZWFkIG9mIG5ldy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yUGFyc2VyOjpjb25zdW1lQ2xhc3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lQXR0cmlidXRlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjppc09ubHlQc2V1ZG9FbGVtZW50RnVuY3Rpb24pOiBUd2Vha2VkIGEgY29tbWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKTogVXBkYXRl
IHVzZSBvZiBEaXNhbGxvd1BzZXVkb0VsZW1lbnRzU2NvcGUKKyAgICAgICAgdG8gdXNlIGEgcmVm
ZXJlbmNlLCB1c2UgYXV0byB0byBtYWtlIHVuaXF1ZV9wdHIgY29kZSBsZXNzIHZlcmJvc2UsIHVz
ZSBtYWtlVW5pcXVlCisgICAgICAgIGluc3RlYWQgb2YgbmV3LgorICAgICAgICAoV2ViQ29yZTo6
Y29uc3VtZUFOUGx1c0IpOiBDb252ZXJ0ZWQgdG8gYSBmaWxlLWxldmVsIHN0YXRpYyBmdW5jdGlv
biByYXRoZXIgdGhhbgorICAgICAgICBhIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24uCisgICAgICAg
IChXZWJDb3JlOjpDU1NTZWxlY3RvclBhcnNlcjo6cHJlcGVuZFR5cGVTZWxlY3RvcklmTmVlZGVk
KTogQ2hhbmdlZCB0eXBlIGZyb20KKyAgICAgICAgcG9pbnRlciB0byByZWZlcmVuY2UKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yUGFyc2VyOjphZGRTaW1wbGVTZWxlY3RvclRvQ29tcG91
bmQpOiBEZWxldGVkLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5o
OiBSZW1vdmVkIG1vc3Qgb2YgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSwgbGVhdmluZworICAg
ICAgICBvbmx5IHRoZSBmdW5jdGlvbiB0aGF0IGlzIHRoZSBwYXJzZXIgZW50cnkgcG9pbnQuCisK
KyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKTogVGhpcyBzaSB0aGUg
b25lIHBsYWNlIHRoYXQgc2V0cworICAgICAgICB0aGUgcXVpcmsgb24gYSBMZW5ndGggdmFsdWUu
IEl0IG5vdyBjaGVja3MgZm9yIENTU19RVUlSS1lfRU1TIGRpcmVjdGx5IHJhdGhlciB0aGFuCisg
ICAgICAgIHVzaW5nIGEgaGVscGVyIGZ1bmN0aW9uLgorCiAyMDIwLTAyLTI5ICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bQkZDXSBDb25zb2xpZGF0ZSBw
cmVjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckFuY2VzdG9ycyBhbmQgcHJlY29tcHV0ZVZlcnRp
Y2FsUG9zaXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggMGYz
YmZjMDcyYmQzMzBmYmM2MGUxZDczYWZhZmI2YjRjYTlkYmNhOS4uYzI5ODkyYzJkZGM1Nzg1ZTVh
ZjZjZTE1ZjAwYjljMTA4MmEwNzU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmgKQEAgLTEyNywxMiArMTI3LDYgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKFQmJik7CiAKLSAgICAv
LyBUaGlzIHZhbHVlIGlzIHVzZWQgdG8gaGFuZGxlIHF1aXJreSBtYXJnaW5zIGluIHJlZmxvdyBy
b290cyAoYm9keSwgdGQsIGFuZCB0aCkgbGlrZSBXaW5JRS4KLSAgICAvLyBUaGUgYmFzaWMgaWRl
YSBpcyB0aGF0IGEgc3R5bGVzaGVldCBjYW4gdXNlIHRoZSB2YWx1ZSBfX3FlbSAoZm9yIHF1aXJr
eSBlbSkgaW5zdGVhZCBvZiBlbS4KLSAgICAvLyBXaGVuIHRoZSBxdWlya3kgdmFsdWUgaXMgdXNl
ZCwgaWYgeW91J3JlIGluIHF1aXJrcyBtb2RlLCB0aGUgbWFyZ2luIHdpbGwgY29sbGFwc2UgYXdh
eQotICAgIC8vIGluc2lkZSBhIHRhYmxlIGNlbGwuCi0gICAgc3RhdGljIFJlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gY3JlYXRlQWxsb3dpbmdNYXJnaW5RdWlyayhkb3VibGUgdmFsdWUsIENTU1VuaXRU
eXBlKTsKLQogICAgIH5DU1NQcmltaXRpdmVWYWx1ZSgpOwogCiAgICAgdm9pZCBjbGVhbnVwKCk7
CkBAIC0xODgsOSArMTgyLDYgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQo
KSBjb25zdDsKIAotICAgIC8vIEZJWE1FLU5FV1BBUlNFUjogQ2FuIGRpdGNoIHRoZSBib29sZWFu
IGFuZCBqdXN0IHVzZSB0aGUgdW5pdCB0eXBlIG9uY2Ugb2xkIHBhcnNlciBpcyBnb25lLgotICAg
IGJvb2wgaXNRdWlya1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pc1F1aXJrVmFsdWUgfHwgcHJp
bWl0aXZlVHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfUVVJUktZX0VNUzsgfQotCiAgICAgYm9v
bCBlcXVhbHMoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKSBjb25zdDsKIAogICAgIHN0YXRpYyBk
b3VibGUgY29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3RvcihDU1NVbml0VHlwZSk7
CkBAIC0yOTQsMTMgKzI4NSw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBSZWY8Q1NT
UHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoVCYmCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkp
OwogfQogCi1pbmxpbmUgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlQWxsb3dpbmdNYXJnaW5RdWlyayhkb3VibGUgdmFsdWUsIENTU1VuaXRUeXBlIHR5cGUp
Ci17Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZh
bHVlLCB0eXBlKSk7Ci0gICAgcmVzdWx0LT5tX2lzUXVpcmtWYWx1ZSA9IHRydWU7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OlRpbWVVbml0IHRpbWVVbml0PiBpbmxpbmUgVCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVRp
bWUoKSBjb25zdAogewogICAgIGlmICh0aW1lVW5pdCA9PSBTZWNvbmRzICYmIHByaW1pdGl2ZVR5
cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDRjNTU5
NDIwMzAyY2FiMWJkMDFiMTExM2EwYmU1YTJjNjU2M2ZkMTguLmNmY2VkZjRmMzFiOGNmZDUxOWU2
YjEwZmIxOGZkZTJmZTk1MjY2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0yMzcsNyArMjM3
LDYgQEAgcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENTU1ZhbHVlKENsYXNzVHlwZSBjbGFzc1R5
cGUpCiAgICAgICAgIDogbV9wcmltaXRpdmVVbml0VHlwZSgwKQogICAgICAgICAsIG1faGFzQ2Fj
aGVkQ1NTVGV4dChmYWxzZSkKLSAgICAgICAgLCBtX2lzUXVpcmtWYWx1ZShmYWxzZSkKICAgICAg
ICAgLCBtX3ZhbHVlTGlzdFNlcGFyYXRvcihTcGFjZVNlcGFyYXRvcikKICAgICAgICAgLCBtX2Ns
YXNzVHlwZShjbGFzc1R5cGUpCiAgICAgewpAQCAtMjYzLDcgKzI2Miw2IEBAIHByb3RlY3RlZDoK
ICAgICAvLyBDU1NQcmltaXRpdmVWYWx1ZSBiaXRzOgogICAgIHVuc2lnbmVkIG1fcHJpbWl0aXZl
VW5pdFR5cGUgOiA3OyAvLyBDU1NVbml0VHlwZQogICAgIG11dGFibGUgdW5zaWduZWQgbV9oYXND
YWNoZWRDU1NUZXh0IDogMTsKLSAgICB1bnNpZ25lZCBtX2lzUXVpcmtWYWx1ZSA6IDE7CiAKICAg
ICB1bnNpZ25lZCBtX3ZhbHVlTGlzdFNlcGFyYXRvciA6IFZhbHVlTGlzdFNlcGFyYXRvckJpdHM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAppbmRleCAxNjQ0MzAzMWE5
MjM2MGNiNTAyYzRhZTlmM2M2MTlkOWUyMGUxZjY5Li5kYWE0ZDc3YzVhMmRmZDZjZTUyODViNDQ2
ZDdkNDBmN2I0YTE0NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3Bw
CkBAIC0xODIsOCArMTgyLDcgQEAgQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdCBDU1NQYXJzZXI6OnBh
cnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgZGVjbGFyYXRpb24KIAogdm9pZCBDU1NQ
YXJzZXI6OnBhcnNlU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1NlbGVjdG9yTGlz
dCYgc2VsZWN0b3JMaXN0KQogewotICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIoc3RyaW5nKTsK
LSAgICBzZWxlY3Rvckxpc3QgPSBDU1NTZWxlY3RvclBhcnNlcjo6cGFyc2VTZWxlY3Rvcih0b2tl
bml6ZXIudG9rZW5SYW5nZSgpLCBtX2NvbnRleHQsIG51bGxwdHIpOworICAgIHNlbGVjdG9yTGlz
dCA9IHBhcnNlQ1NTU2VsZWN0b3IoQ1NTVG9rZW5pemVyKHN0cmluZykudG9rZW5SYW5nZSgpLCBt
X2NvbnRleHQsIG51bGxwdHIpOwogfQogCiBSZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBD
U1NQYXJzZXI6OnBhcnNlSW5saW5lU3R5bGVEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0cmlu
ZywgY29uc3QgRWxlbWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckltcGwuY3BwCmluZGV4IGZmYWQ0OTc1YzUwNDQwMjVhZjE3NmQzODEyMWUxMDQ0ZjY0
MzkzNWIuLjQ0MmJjOGEwZDRlYjEyNjMxZTliZGMyMzMzZTY0ZDY1NGU3YjUzYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcApAQCAtNjg5LDcgKzY4OSw3
IEBAIHN0YXRpYyB2b2lkIG9ic2VydmVTZWxlY3RvcnMoQ1NTUGFyc2VyT2JzZXJ2ZXJXcmFwcGVy
JiB3cmFwcGVyLCBDU1NQYXJzZXJUb2tlblJhCiAKIFJlZlB0cjxTdHlsZVJ1bGU+IENTU1BhcnNl
ckltcGw6OmNvbnN1bWVTdHlsZVJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSBwcmVsdWRlLCBDU1NQ
YXJzZXJUb2tlblJhbmdlIGJsb2NrKQogewotICAgIENTU1NlbGVjdG9yTGlzdCBzZWxlY3Rvckxp
c3QgPSBDU1NTZWxlY3RvclBhcnNlcjo6cGFyc2VTZWxlY3RvcihwcmVsdWRlLCBtX2NvbnRleHQs
IG1fc3R5bGVTaGVldC5nZXQoKSk7CisgICAgQ1NTU2VsZWN0b3JMaXN0IHNlbGVjdG9yTGlzdCA9
IHBhcnNlQ1NTU2VsZWN0b3IocHJlbHVkZSwgbV9jb250ZXh0LCBtX3N0eWxlU2hlZXQuZ2V0KCkp
OwogICAgIGlmICghc2VsZWN0b3JMaXN0LmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7IC8vIFBhcnNlIGVycm9yLCBpbnZhbGlkIHNlbGVjdG9yIGxpc3QKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgKaW5kZXgg
YzAzM2IxMmU3MTdhNDk4MmMwZTZiNWM5YTJlYWMzMmY2NzM3OGNkZS4uZTQ0MjRmYzhiYjRhMGRm
OGFmNjNjMTA3MWI5ZmNlOGZkYWZmMDRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCkBAIC0xMTUsNyArMTE1LDYgQEAg
dGVtcGxhdGU8Q1NTVmFsdWVJRCBoZWFkLCBDU1NWYWx1ZUlELi4uIHRhaWw+IGlubGluZSBib29s
IGlkZW50TWF0Y2hlcyhDU1NWYWx1ZUkKICAgICByZXR1cm4gaWQgPT0gaGVhZCB8fCBpZGVudE1h
dGNoZXM8dGFpbC4uLj4oaWQpOwogfQogCi0vLyBGSVhNRS1ORVdQQVJTRVIgLSBjb252ZXJ0ZWQg
dG8gYSBSZWZQdHIgcmV0dXJuIHR5cGUgZnJvbSBhIHJhdyBwdHIuCiB0ZW1wbGF0ZTxDU1NWYWx1
ZUlELi4uIG5hbWVzPiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJZGVudChDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAh
PSBJZGVudFRva2VuIHx8ICFpZGVudE1hdGNoZXM8bmFtZXMuLi4+KHJhbmdlLnBlZWsoKS5pZCgp
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAK
aW5kZXggNjJmMjBjNjg0NzBiNDA4NzU5NGM4ZDBkNzM2OGRmYTcyMWFlOTAxMS4uMDZhZGRmODNh
N2VlZThiZDM3OGJkY2Q4ODQ1OTRmMWQ3NTQ0ODkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5
cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAv
LwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMSwxMyArMzEsNzQgQEAKICNp
bmNsdWRlICJDU1NTZWxlY3RvclBhcnNlci5oIgogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyQ29udGV4
dC5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0
b3JMaXN0LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAjaW5jbHVkZSA8bWVt
b3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNTU1NlbGVjdG9yTGlzdCBDU1NTZWxlY3Rv
clBhcnNlcjo6cGFyc2VTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQp
CitjbGFzcyBDU1NTZWxlY3RvclBhcnNlciB7CitwdWJsaWM6CisgICAgQ1NTU2VsZWN0b3JQYXJz
ZXIoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsIFN0eWxlU2hlZXRDb250ZW50cyopOworCisgICAg
Q1NTU2VsZWN0b3JMaXN0IGNvbnN1bWVDb21wbGV4U2VsZWN0b3JMaXN0KENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKKworcHJpdmF0ZToKKyAgICBDU1NTZWxlY3Rvckxpc3QgY29uc3VtZUNvbXBvdW5k
U2VsZWN0b3JMaXN0KENTU1BhcnNlclRva2VuUmFuZ2UmKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gY29uc3VtZUNvbXBsZXhTZWxlY3RvcihDU1NQYXJzZXJUb2tl
blJhbmdlJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBjb25zdW1l
Q29tcG91bmRTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlJik7CisKKyAgICAvLyBUaGlzIGRv
ZXNuJ3QgaW5jbHVkZSBlbGVtZW50IG5hbWVzLCBzaW5jZSB0aGV5J3JlIGhhbmRsZWQgc3BlY2lh
bGx5LgorICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gY29uc3VtZVNpbXBs
ZVNlbGVjdG9yKENTU1BhcnNlclRva2VuUmFuZ2UmKTsKKworICAgIGJvb2wgY29uc3VtZU5hbWUo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYsIEF0b21TdHJpbmcmIG5hbWUsIEF0b21TdHJpbmcmIG5hbWVz
cGFjZVByZWZpeCk7CisKKyAgICAvLyBUaGVzZSB3aWxsIHJldHVybiBudWxscHRyIHdoZW4gdGhl
IHNlbGVjdG9yIGlzIGludmFsaWQuCisgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVj
dG9yPiBjb25zdW1lSWQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gY29uc3VtZUNsYXNzKENTU1BhcnNlclRva2VuUmFuZ2UmKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IGNvbnN1bWVQc2V1ZG8oQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gY29uc3VtZUF0dHJpYnV0ZShDU1NQYXJzZXJUb2tlblJhbmdlJik7CisKKyAgICBDU1NTZWxl
Y3Rvcjo6UmVsYXRpb25UeXBlIGNvbnN1bWVDb21iaW5hdG9yKENTU1BhcnNlclRva2VuUmFuZ2Um
KTsKKyAgICBDU1NTZWxlY3Rvcjo6TWF0Y2ggY29uc3VtZUF0dHJpYnV0ZU1hdGNoKENTU1BhcnNl
clRva2VuUmFuZ2UmKTsKKyAgICBDU1NTZWxlY3Rvcjo6QXR0cmlidXRlTWF0Y2hUeXBlIGNvbnN1
bWVBdHRyaWJ1dGVGbGFncyhDU1NQYXJzZXJUb2tlblJhbmdlJik7CisKKyAgICBjb25zdCBBdG9t
U3RyaW5nJiBkZWZhdWx0TmFtZXNwYWNlKCkgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYg
ZGV0ZXJtaW5lTmFtZXNwYWNlKGNvbnN0IEF0b21TdHJpbmcmIHByZWZpeCk7CisgICAgdm9pZCBw
cmVwZW5kVHlwZVNlbGVjdG9ySWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlUHJl
Zml4LCBjb25zdCBBdG9tU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3ImKTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzcGxpdENvbXBv
dW5kQXRJbXBsaWNpdFNoYWRvd0Nyb3NzaW5nQ29tYmluYXRvcihzdGQ6OnVuaXF1ZV9wdHI8Q1NT
UGFyc2VyU2VsZWN0b3I+IGNvbXBvdW5kU2VsZWN0b3IsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
KTsKKworICAgIGNsYXNzIERpc2FsbG93UHNldWRvRWxlbWVudHNTY29wZTsKKworICAgIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIG1fY29udGV4dDsKKyAgICBjb25zdCBSZWZQdHI8U3R5bGVTaGVl
dENvbnRlbnRzPiBtX3N0eWxlU2hlZXQ7CisgICAgYm9vbCBtX2ZhaWxlZFBhcnNpbmcgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9kaXNhbGxvd1BzZXVkb0VsZW1lbnRzIHsgZmFsc2UgfTsKK307CisK
K2NsYXNzIENTU1NlbGVjdG9yUGFyc2VyOjpEaXNhbGxvd1BzZXVkb0VsZW1lbnRzU2NvcGUgewor
cHVibGljOgorICAgIGV4cGxpY2l0IERpc2FsbG93UHNldWRvRWxlbWVudHNTY29wZShDU1NTZWxl
Y3RvclBhcnNlciYgcGFyc2VyKQorICAgICAgICA6IG1fcGFyc2VyKHBhcnNlcikKKyAgICAgICAg
LCBtX3dhc0Rpc2FsbG93ZWQoc3RkOjpleGNoYW5nZShtX3BhcnNlci5tX2Rpc2FsbG93UHNldWRv
RWxlbWVudHMsIHRydWUpKQorICAgIHsKKyAgICB9CisKKyAgICB+RGlzYWxsb3dQc2V1ZG9FbGVt
ZW50c1Njb3BlKCkKKyAgICB7CisgICAgICAgIG1fcGFyc2VyLm1fZGlzYWxsb3dQc2V1ZG9FbGVt
ZW50cyA9IG1fd2FzRGlzYWxsb3dlZDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ1NTU2VsZWN0
b3JQYXJzZXImIG1fcGFyc2VyOworICAgIGJvb2wgbV93YXNEaXNhbGxvd2VkOworfTsKKworc3Rh
dGljIGJvb2wgY29uc3VtZUFOUGx1c0IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIHN0ZDo6cGFpcjxp
bnQsIGludD4mKTsKKworQ1NTU2VsZWN0b3JMaXN0IHBhcnNlQ1NTU2VsZWN0b3IoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgU3R5bGVT
aGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KQogewogICAgIENTU1NlbGVjdG9yUGFyc2VyIHBhcnNl
cihjb250ZXh0LCBzdHlsZVNoZWV0KTsKICAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwpA
QCAtNTYsNyArMTE3LDcgQEAgQ1NTU2VsZWN0b3JQYXJzZXI6OkNTU1NlbGVjdG9yUGFyc2VyKGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFN0eWxlU2hlZXQKIENTU1NlbGVjdG9yTGlz
dCBDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZUNvbXBsZXhTZWxlY3Rvckxpc3QoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJz
ZXJTZWxlY3Rvcj4+IHNlbGVjdG9yTGlzdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+IHNlbGVjdG9yID0gY29uc3VtZUNvbXBsZXhTZWxlY3RvcihyYW5nZSk7CisgICAg
YXV0byBzZWxlY3RvciA9IGNvbnN1bWVDb21wbGV4U2VsZWN0b3IocmFuZ2UpOwogICAgIGlmICgh
c2VsZWN0b3IpCiAgICAgICAgIHJldHVybiBDU1NTZWxlY3Rvckxpc3QoKTsKICAgICBzZWxlY3Rv
ckxpc3QuYXBwZW5kKFdURk1vdmUoc2VsZWN0b3IpKTsKQEAgLTY3LDcgKzEyOCw2IEBAIENTU1Nl
bGVjdG9yTGlzdCBDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZUNvbXBsZXhTZWxlY3Rvckxpc3Qo
Q1NTUGFyc2VyVG9rZW5SYW5nCiAgICAgICAgICAgICByZXR1cm4gQ1NTU2VsZWN0b3JMaXN0KCk7
CiAgICAgICAgIHNlbGVjdG9yTGlzdC5hcHBlbmQoV1RGTW92ZShzZWxlY3RvcikpOwogICAgIH0K
LQogICAgIGlmIChtX2ZhaWxlZFBhcnNpbmcpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0
dXJuIENTU1NlbGVjdG9yTGlzdCB7IFdURk1vdmUoc2VsZWN0b3JMaXN0KSB9OwpAQCAtNzYsNyAr
MTM2LDcgQEAgQ1NTU2VsZWN0b3JMaXN0IENTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lQ29tcGxl
eFNlbGVjdG9yTGlzdChDU1NQYXJzZXJUb2tlblJhbmcKIENTU1NlbGVjdG9yTGlzdCBDU1NTZWxl
Y3RvclBhcnNlcjo6Y29uc3VtZUNvbXBvdW5kU2VsZWN0b3JMaXN0KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQogewogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+PiBzZWxlY3Rvckxpc3Q7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9y
PiBzZWxlY3RvciA9IGNvbnN1bWVDb21wb3VuZFNlbGVjdG9yKHJhbmdlKTsKKyAgICBhdXRvIHNl
bGVjdG9yID0gY29uc3VtZUNvbXBvdW5kU2VsZWN0b3IocmFuZ2UpOwogICAgIHJhbmdlLmNvbnN1
bWVXaGl0ZXNwYWNlKCk7CiAgICAgaWYgKCFzZWxlY3RvcikKICAgICAgICAgcmV0dXJuIENTU1Nl
bGVjdG9yTGlzdCgpOwpAQCAtODksOSArMTQ5LDYgQEAgQ1NTU2VsZWN0b3JMaXN0IENTU1NlbGVj
dG9yUGFyc2VyOjpjb25zdW1lQ29tcG91bmRTZWxlY3Rvckxpc3QoQ1NTUGFyc2VyVG9rZW5SYW4K
ICAgICAgICAgICAgIHJldHVybiBDU1NTZWxlY3Rvckxpc3QoKTsKICAgICAgICAgc2VsZWN0b3JM
aXN0LmFwcGVuZChXVEZNb3ZlKHNlbGVjdG9yKSk7CiAgICAgfQotCi0gICAgaWYgKG1fZmFpbGVk
UGFyc2luZykKLSAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gQ1NTU2VsZWN0b3JMaXN0
IHsgV1RGTW92ZShzZWxlY3Rvckxpc3QpIH07CiB9CiAKQEAgLTExNywyNyArMTc0LDIzIEBAIHN0
YXRpYyBib29sIGNvbnN1bWVMYW5nQXJndW1lbnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
QXRvbVN0cmluZz4+JiBhcmd1bWVuCiAgICAgcmV0dXJuIHJhbmdlLmF0RW5kKCk7CiB9CiAKLW5h
bWVzcGFjZSB7Ci0KLWVudW0gQ29tcG91bmRTZWxlY3RvckZsYWdzIHsKK2VudW0gY2xhc3MgQ29t
cG91bmRTZWxlY3RvckZsYWcgewogICAgIEhhc1BzZXVkb0VsZW1lbnRGb3JSaWdodG1vc3RDb21w
b3VuZCA9IDEgPDwgMCwKLSAgICBIYXNDb250ZW50UHNldWRvRWxlbWVudCA9IDEgPDwgMQogfTsK
IAotdW5zaWduZWQgZXh0cmFjdENvbXBvdW5kRmxhZ3MoY29uc3QgQ1NTUGFyc2VyU2VsZWN0b3Im
IHNpbXBsZVNlbGVjdG9yLCBDU1NQYXJzZXJNb2RlIHBhcnNlck1vZGUpCitzdGF0aWMgT3B0aW9u
U2V0PENvbXBvdW5kU2VsZWN0b3JGbGFnPiBleHRyYWN0Q29tcG91bmRGbGFncyhjb25zdCBDU1NQ
YXJzZXJTZWxlY3RvciYgc2ltcGxlU2VsZWN0b3IsIENTU1BhcnNlck1vZGUgcGFyc2VyTW9kZSkK
IHsKICAgICBpZiAoc2ltcGxlU2VsZWN0b3IubWF0Y2goKSAhPSBDU1NTZWxlY3Rvcjo6UHNldWRv
RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgCiAg
ICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3
NDcKICAgICAvLyBUaGUgVUFTaGVldE1vZGUgY2hlY2sgaXMgYSB3b3JrLWFyb3VuZCB0byBhbGxv
dyB0aGlzIHNlbGVjdG9yIGluIG1lZGlhQ29udHJvbHMoTmV3KS5jc3M6CiAgICAgLy8gaW5wdXRb
dHlwZT0icmFuZ2UiIGldOjotd2Via2l0LW1lZGlhLXNsaWRlci1jb250YWluZXIgPiBkaXYgewog
ICAgIGlmIChwYXJzZXJNb2RlID09IFVBU2hlZXRNb2RlICYmIHNpbXBsZVNlbGVjdG9yLnBzZXVk
b0VsZW1lbnRUeXBlKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRXZWJLaXRDdXN0b20p
Ci0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBIYXNQc2V1ZG9FbGVtZW50Rm9yUmlnaHRt
b3N0Q29tcG91bmQ7Ci19CisgICAgICAgIHJldHVybiB7IH07CiAKLX0gLy8gbmFtZXNwYWNlCisg
ICAgcmV0dXJuIENvbXBvdW5kU2VsZWN0b3JGbGFnOjpIYXNQc2V1ZG9FbGVtZW50Rm9yUmlnaHRt
b3N0Q29tcG91bmQ7Cit9CiAKIHN0YXRpYyBib29sIGlzRGVzY2VuZGFudENvbWJpbmF0b3IoQ1NT
U2VsZWN0b3I6OlJlbGF0aW9uVHlwZSByZWxhdGlvbikKIHsKQEAgLTE0NiwyNiArMTk5LDI2IEBA
IHN0YXRpYyBib29sIGlzRGVzY2VuZGFudENvbWJpbmF0b3IoQ1NTU2VsZWN0b3I6OlJlbGF0aW9u
VHlwZSByZWxhdGlvbikKIAogc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NT
ZWxlY3RvclBhcnNlcjo6Y29uc3VtZUNvbXBsZXhTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNlbGVj
dG9yID0gY29uc3VtZUNvbXBvdW5kU2VsZWN0b3IocmFuZ2UpOworICAgIGF1dG8gc2VsZWN0b3Ig
PSBjb25zdW1lQ29tcG91bmRTZWxlY3RvcihyYW5nZSk7CiAgICAgaWYgKCFzZWxlY3RvcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICB1bnNpZ25lZCBwcmV2aW91c0NvbXBvdW5kRmxh
Z3MgPSAwOworICAgIE9wdGlvblNldDxDb21wb3VuZFNlbGVjdG9yRmxhZz4gcHJldmlvdXNDb21w
b3VuZEZsYWdzOwogCiAgICAgZm9yIChDU1NQYXJzZXJTZWxlY3Rvciogc2ltcGxlID0gc2VsZWN0
b3IuZ2V0KCk7IHNpbXBsZSAmJiAhcHJldmlvdXNDb21wb3VuZEZsYWdzOyBzaW1wbGUgPSBzaW1w
bGUtPnRhZ0hpc3RvcnkoKSkKLSAgICAgICAgcHJldmlvdXNDb21wb3VuZEZsYWdzIHw9IGV4dHJh
Y3RDb21wb3VuZEZsYWdzKCpzaW1wbGUsIG1fY29udGV4dC5tb2RlKTsKKyAgICAgICAgcHJldmlv
dXNDb21wb3VuZEZsYWdzID0gZXh0cmFjdENvbXBvdW5kRmxhZ3MoKnNpbXBsZSwgbV9jb250ZXh0
Lm1vZGUpOwogCiAgICAgd2hpbGUgKGF1dG8gY29tYmluYXRvciA9IGNvbnN1bWVDb21iaW5hdG9y
KHJhbmdlKSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IG5l
eHRTZWxlY3RvciA9IGNvbnN1bWVDb21wb3VuZFNlbGVjdG9yKHJhbmdlKTsKKyAgICAgICAgYXV0
byBuZXh0U2VsZWN0b3IgPSBjb25zdW1lQ29tcG91bmRTZWxlY3RvcihyYW5nZSk7CiAgICAgICAg
IGlmICghbmV4dFNlbGVjdG9yKQogICAgICAgICAgICAgcmV0dXJuIGlzRGVzY2VuZGFudENvbWJp
bmF0b3IoY29tYmluYXRvcikgPyBXVEZNb3ZlKHNlbGVjdG9yKSA6IG51bGxwdHI7Ci0gICAgICAg
IGlmIChwcmV2aW91c0NvbXBvdW5kRmxhZ3MgJiBIYXNQc2V1ZG9FbGVtZW50Rm9yUmlnaHRtb3N0
Q29tcG91bmQpCisgICAgICAgIGlmIChwcmV2aW91c0NvbXBvdW5kRmxhZ3MuY29udGFpbnMoQ29t
cG91bmRTZWxlY3RvckZsYWc6Okhhc1BzZXVkb0VsZW1lbnRGb3JSaWdodG1vc3RDb21wb3VuZCkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3Iq
IGVuZCA9IG5leHRTZWxlY3Rvci5nZXQoKTsKLSAgICAgICAgdW5zaWduZWQgY29tcG91bmRGbGFn
cyA9IGV4dHJhY3RDb21wb3VuZEZsYWdzKCplbmQsIG1fY29udGV4dC5tb2RlKTsKKyAgICAgICAg
YXV0byBjb21wb3VuZEZsYWdzID0gZXh0cmFjdENvbXBvdW5kRmxhZ3MoKmVuZCwgbV9jb250ZXh0
Lm1vZGUpOwogICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpIHsKICAgICAgICAgICAg
IGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOwotICAgICAgICAgICAgY29tcG91bmRGbGFncyB8PSBl
eHRyYWN0Q29tcG91bmRGbGFncygqZW5kLCBtX2NvbnRleHQubW9kZSk7CisgICAgICAgICAgICBj
b21wb3VuZEZsYWdzLmFkZChleHRyYWN0Q29tcG91bmRGbGFncygqZW5kLCBtX2NvbnRleHQubW9k
ZSkpOwogICAgICAgICB9CiAgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oY29tYmluYXRvcik7CiAg
ICAgICAgIHByZXZpb3VzQ29tcG91bmRGbGFncyA9IGNvbXBvdW5kRmxhZ3M7CkBAIC0xNzcsOSAr
MjMwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZWxlY3RvclBh
cnNlcjo6Y29uc3VtZUNvbXBsZXhTZWxlY3RvcihDU1MKICAgICByZXR1cm4gc2VsZWN0b3I7CiB9
CiAKLW5hbWVzcGFjZSB7Ci0KLWJvb2wgaXNTY3JvbGxiYXJQc2V1ZG9DbGFzcyhDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkbykKK3N0YXRpYyBib29sIGlzU2Nyb2xsYmFyUHNldWRv
Q2xhc3MoQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG8pCiB7CiAgICAgc3dpdGNo
IChwc2V1ZG8pIHsKICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0VuYWJsZWQ6CkBA
IC0yMDMsNyArMjU0LDcgQEAgYm9vbCBpc1Njcm9sbGJhclBzZXVkb0NsYXNzKENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvKQogICAgIH0KIH0KIAotYm9vbCBpc1VzZXJBY3Rpb25Q
c2V1ZG9DbGFzcyhDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkbykKK3N0YXRpYyBi
b29sIGlzVXNlckFjdGlvblBzZXVkb0NsYXNzKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUg
cHNldWRvKQogewogICAgIHN3aXRjaCAocHNldWRvKSB7CiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NIb3ZlcjoKQEAgLTIxNiw3ICsyNjcsNyBAQCBib29sIGlzVXNlckFjdGlvblBz
ZXVkb0NsYXNzKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvKQogICAgIH0KIH0K
IAotYm9vbCBpc1BzZXVkb0NsYXNzVmFsaWRBZnRlclBzZXVkb0VsZW1lbnQoQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzcywgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRU
eXBlIGNvbXBvdW5kUHNldWRvRWxlbWVudCkKK3N0YXRpYyBib29sIGlzUHNldWRvQ2xhc3NWYWxp
ZEFmdGVyUHNldWRvRWxlbWVudChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0Ns
YXNzLCBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFR5cGUgY29tcG91bmRQc2V1ZG9FbGVtZW50
KQogewogICAgIHN3aXRjaCAoY29tcG91bmRQc2V1ZG9FbGVtZW50KSB7CiAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvRWxlbWVudFBhcnQ6CkBAIC0yMzksNyArMjkwLDcgQEAgYm9vbCBpc1Bz
ZXVkb0NsYXNzVmFsaWRBZnRlclBzZXVkb0VsZW1lbnQoQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
VHlwZSBwc2V1ZG9DbGEKICAgICB9CiB9CiAKLWJvb2wgaXNTaW1wbGVTZWxlY3RvclZhbGlkQWZ0
ZXJQc2V1ZG9FbGVtZW50KGNvbnN0IENTU1BhcnNlclNlbGVjdG9yJiBzaW1wbGVTZWxlY3Rvciwg
Q1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRUeXBlIGNvbXBvdW5kUHNldWRvRWxlbWVudCkKK3N0
YXRpYyBib29sIGlzU2ltcGxlU2VsZWN0b3JWYWxpZEFmdGVyUHNldWRvRWxlbWVudChjb25zdCBD
U1NQYXJzZXJTZWxlY3RvciYgc2ltcGxlU2VsZWN0b3IsIENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVt
ZW50VHlwZSBjb21wb3VuZFBzZXVkb0VsZW1lbnQpCiB7CiAgICAgaWYgKGNvbXBvdW5kUHNldWRv
RWxlbWVudCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFVua25vd24pCiAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMjU4LDggKzMwOSw2IEBAIGJvb2wgaXNTaW1wbGVTZWxlY3RvclZhbGlk
QWZ0ZXJQc2V1ZG9FbGVtZW50KGNvbnN0IENTU1BhcnNlclNlbGVjdG9yJiBzaW1wbGVTZWxlCiAg
ICAgcmV0dXJuIGlzUHNldWRvQ2xhc3NWYWxpZEFmdGVyUHNldWRvRWxlbWVudChwc2V1ZG8sIGNv
bXBvdW5kUHNldWRvRWxlbWVudCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlCi0KIHN0ZDo6dW5pcXVl
X3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1bWVDb21wb3Vu
ZFNlbGVjdG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIHN0ZDo6dW5pcXVl
X3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gY29tcG91bmRTZWxlY3RvcjsKQEAgLTI3NSw3ICszMjQs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2Vy
Ojpjb25zdW1lQ29tcG91bmRTZWxlY3RvcihDUwogICAgICAgICAgICAgY29tcG91bmRQc2V1ZG9F
bGVtZW50ID0gY29tcG91bmRTZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5cGUoKTsKICAgICB9CiAK
LSAgICB3aGlsZSAoc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzaW1wbGVTZWxl
Y3RvciA9IGNvbnN1bWVTaW1wbGVTZWxlY3RvcihyYW5nZSkpIHsKKyAgICB3aGlsZSAoYXV0byBz
aW1wbGVTZWxlY3RvciA9IGNvbnN1bWVTaW1wbGVTZWxlY3RvcihyYW5nZSkpIHsKICAgICAgICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3NDcK
ICAgICAgICAgLy8gVGhlIFVBU2hlZXRNb2RlIGNoZWNrIGlzIGEgd29yay1hcm91bmQgdG8gYWxs
b3cgdGhpcyBzZWxlY3RvciBpbiBtZWRpYUNvbnRyb2xzKE5ldykuY3NzOgogICAgICAgICAvLyB2
aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLXJlZ2lvbi1jb250YWluZXIuc2Nyb2xsaW5n
CkBAIC0yODcsNyArMzM2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBD
U1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZUNvbXBvdW5kU2VsZWN0b3IoQ1MKICAgICAgICAgICAg
IGNvbXBvdW5kUHNldWRvRWxlbWVudCA9IHNpbXBsZVNlbGVjdG9yLT5wc2V1ZG9FbGVtZW50VHlw
ZSgpOwogCiAgICAgICAgIGlmIChjb21wb3VuZFNlbGVjdG9yKQotICAgICAgICAgICAgY29tcG91
bmRTZWxlY3RvciA9IGFkZFNpbXBsZVNlbGVjdG9yVG9Db21wb3VuZChXVEZNb3ZlKGNvbXBvdW5k
U2VsZWN0b3IpLCBXVEZNb3ZlKHNpbXBsZVNlbGVjdG9yKSk7CisgICAgICAgICAgICBjb21wb3Vu
ZFNlbGVjdG9yLT5hcHBlbmRUYWdIaXN0b3J5KENTU1NlbGVjdG9yOjpTdWJzZWxlY3RvciwgV1RG
TW92ZShzaW1wbGVTZWxlY3RvcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21wb3Vu
ZFNlbGVjdG9yID0gV1RGTW92ZShzaW1wbGVTZWxlY3Rvcik7CiAgICAgfQpAQCAtMzAxLDExICsz
NTAsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFy
c2VyOjpjb25zdW1lQ29tcG91bmRTZWxlY3RvcihDUwogICAgICAgICBpZiAobmFtZXNwYWNlVVJJ
ID09IGRlZmF1bHROYW1lc3BhY2UoKSkKICAgICAgICAgICAgIG5hbWVzcGFjZVByZWZpeCA9IG51
bGxBdG9tKCk7CiAgICAgICAgIAotICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogcmF3U2VsZWN0
b3IgPSBuZXcgQ1NTUGFyc2VyU2VsZWN0b3IoUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgs
IGVsZW1lbnROYW1lLCBuYW1lc3BhY2VVUkkpKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENT
U1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvciA9IHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxl
Y3Rvcj4ocmF3U2VsZWN0b3IpOwotICAgICAgICByZXR1cm4gc2VsZWN0b3I7CisgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPihRdWFsaWZpZWROYW1lKG5hbWVzcGFj
ZVByZWZpeCwgZWxlbWVudE5hbWUsIG5hbWVzcGFjZVVSSSkpOwogICAgIH0KLSAgICBwcmVwZW5k
VHlwZVNlbGVjdG9ySWZOZWVkZWQobmFtZXNwYWNlUHJlZml4LCBlbGVtZW50TmFtZSwgY29tcG91
bmRTZWxlY3Rvci5nZXQoKSk7CisgICAgcHJlcGVuZFR5cGVTZWxlY3RvcklmTmVlZGVkKG5hbWVz
cGFjZVByZWZpeCwgZWxlbWVudE5hbWUsICpjb21wb3VuZFNlbGVjdG9yKTsKICAgICByZXR1cm4g
c3BsaXRDb21wb3VuZEF0SW1wbGljaXRTaGFkb3dDcm9zc2luZ0NvbWJpbmF0b3IoV1RGTW92ZShj
b21wb3VuZFNlbGVjdG9yKSwgbV9jb250ZXh0KTsKIH0KIApAQCAtMzcwLDcgKzQxNyw4IEBAIHN0
ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTU2VsZWN0b3JQYXJzZXI6OmNvbnN1
bWVJZChDU1NQYXJzZXJUb2tlblJhCiAgICAgQVNTRVJUKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0g
SGFzaFRva2VuKTsKICAgICBpZiAocmFuZ2UucGVlaygpLmdldEhhc2hUb2tlblR5cGUoKSAhPSBI
YXNoVG9rZW5JZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvciA9IHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4obmV3IENTU1BhcnNlclNlbGVjdG9yKCkpOworCisgICAgYXV0byBzZWxlY3RvciA9
IG1ha2VVbmlxdWU8Q1NTUGFyc2VyU2VsZWN0b3I+KCk7CiAgICAgc2VsZWN0b3ItPnNldE1hdGNo
KENTU1NlbGVjdG9yOjpJZCk7CiAgICAgCiAgICAgLy8gRklYTUUtTkVXUEFSU0VSOiBBdm9pZCBo
YXZpbmcgdG8gZG8gdGhpcywgYnV0IHRoZSBvbGQgcGFyc2VyIGRvZXMgYW5kIHdlIG5lZWQKQEAg
LTM4Nyw3ICs0MzUsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1Nl
bGVjdG9yUGFyc2VyOjpjb25zdW1lQ2xhc3MoQ1NTUGFyc2VyVG9rZQogICAgIHJhbmdlLmNvbnN1
bWUoKTsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
IHNlbGVjdG9yID0gc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPihuZXcgQ1NTUGFy
c2VyU2VsZWN0b3IoKSk7CisKKyAgICBhdXRvIHNlbGVjdG9yID0gbWFrZVVuaXF1ZTxDU1NQYXJz
ZXJTZWxlY3Rvcj4oKTsKICAgICBzZWxlY3Rvci0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OkNsYXNz
KTsKICAgICAKICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IEF2b2lkIGhhdmluZyB0byBkbyB0aGlz
LCBidXQgdGhlIG9sZCBwYXJzZXIgZG9lcyBhbmQgd2UgbmVlZApAQCAtNDE4LDcgKzQ2Nyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTU2VsZWN0b3JQYXJzZXI6OmNv
bnN1bWVBdHRyaWJ1dGUoQ1NTUGFyc2VyCiAgICAgICAgID8gUXVhbGlmaWVkTmFtZShudWxsQXRv
bSgpLCBhdHRyaWJ1dGVOYW1lLCBudWxsQXRvbSgpKQogICAgICAgICA6IFF1YWxpZmllZE5hbWUo
bmFtZXNwYWNlUHJlZml4LCBhdHRyaWJ1dGVOYW1lLCBuYW1lc3BhY2VVUkkpOwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvciA9IHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4obmV3IENTU1BhcnNlclNlbGVjdG9yKCkpOworICAgIGF1dG8g
c2VsZWN0b3IgPSBtYWtlVW5pcXVlPENTU1BhcnNlclNlbGVjdG9yPigpOwogCiAgICAgaWYgKGJs
b2NrLmF0RW5kKCkpIHsKICAgICAgICAgc2VsZWN0b3ItPnNldEF0dHJpYnV0ZShxdWFsaWZpZWRO
YW1lLCBtX2NvbnRleHQuaXNIVE1MRG9jdW1lbnQsIENTU1NlbGVjdG9yOjpDYXNlU2Vuc2l0aXZl
KTsKQEAgLTQ2NCw3ICs1MTMsNyBAQCBzdGF0aWMgYm9vbCBpc09ubHlQc2V1ZG9DbGFzc0Z1bmN0
aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3NUeQogICAgIAogc3Rh
dGljIGJvb2wgaXNPbmx5UHNldWRvRWxlbWVudEZ1bmN0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9F
bGVtZW50VHlwZSBwc2V1ZG9FbGVtZW50VHlwZSkKIHsKLSAgICAvLyBOb3RlIHRoYXQgd2Ugb21p
dCBjdWUgc2luY2UgaXQgY2FuIGJlIGJvdGggYW4gaWRlbnQgb3IgYSBmdW5jdGlvbi4KKyAgICAv
LyBOb3RlIHRoYXQgd2Ugb21pdCBjdWUgc2luY2UgaXQgY2FuIGJlIGVpdGhlciBhbiBpZGVudCBv
ciBhIGZ1bmN0aW9uLgogICAgIHN3aXRjaCAocHNldWRvRWxlbWVudFR5cGUpIHsKICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50UGFydDoKICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9FbGVtZW50U2xvdHRlZDoKQEAgLTUzNCw4ICs1ODMsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKENTU1Bh
cnNlclRvawogICAgIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3MpIHsKICAgICAgICAgc3dpdGNoIChzZWxlY3Rvci0+cHNldWRvQ2xhc3NUeXBlKCkpIHsK
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NOb3Q6IHsKLSAgICAgICAgICAg
IERpc2FsbG93UHNldWRvRWxlbWVudHNTY29wZSBzY29wZSh0aGlzKTsKLSAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxDU1NTZWxlY3Rvckxpc3Q+IHNlbGVjdG9yTGlzdCA9IHN0ZDo6dW5pcXVl
X3B0cjxDU1NTZWxlY3Rvckxpc3Q+KG5ldyBDU1NTZWxlY3Rvckxpc3QoKSk7CisgICAgICAgICAg
ICBEaXNhbGxvd1BzZXVkb0VsZW1lbnRzU2NvcGUgc2NvcGUoKnRoaXMpOworICAgICAgICAgICAg
YXV0byBzZWxlY3Rvckxpc3QgPSBtYWtlVW5pcXVlPENTU1NlbGVjdG9yTGlzdD4oKTsKICAgICAg
ICAgICAgICpzZWxlY3Rvckxpc3QgPSBjb25zdW1lQ29tcGxleFNlbGVjdG9yTGlzdChibG9jayk7
CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yTGlzdC0+Zmlyc3QoKSB8fCAhYmxvY2suYXRFbmQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU2Miw5ICs2MTEsOSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpjb25z
dW1lUHNldWRvKENTU1BhcnNlclRvawogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2sucGVlaygpLnR5cGUoKSAhPSBXaGl0ZXNwYWNl
VG9rZW4pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAg
ICAgIERpc2FsbG93UHNldWRvRWxlbWVudHNTY29wZSBzY29wZSh0aGlzKTsKKyAgICAgICAgICAg
ICAgICBEaXNhbGxvd1BzZXVkb0VsZW1lbnRzU2NvcGUgc2NvcGUoKnRoaXMpOwogICAgICAgICAg
ICAgICAgIGJsb2NrLmNvbnN1bWVXaGl0ZXNwYWNlKCk7Ci0gICAgICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPENTU1NlbGVjdG9yTGlzdD4gc2VsZWN0b3JMaXN0ID0gc3RkOjp1bmlxdWVfcHRy
PENTU1NlbGVjdG9yTGlzdD4obmV3IENTU1NlbGVjdG9yTGlzdCgpKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIHNlbGVjdG9yTGlzdCA9IG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3JMaXN0PigpOwogICAg
ICAgICAgICAgICAgICpzZWxlY3Rvckxpc3QgPSBjb25zdW1lQ29tcGxleFNlbGVjdG9yTGlzdChi
bG9jayk7CiAgICAgICAgICAgICAgICAgaWYgKCFzZWxlY3Rvckxpc3QtPmZpcnN0KCkgfHwgIWJs
b2NrLmF0RW5kKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTgy
LDcgKzYzMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTU2VsZWN0
b3JQYXJzZXI6OmNvbnN1bWVQc2V1ZG8oQ1NTUGFyc2VyVG9rCiAgICAgICAgICAgICByZXR1cm4g
c2VsZWN0b3I7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NNYXRjaGVzOiB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTU2VsZWN0b3JMaXN0
PiBzZWxlY3Rvckxpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8Q1NTU2VsZWN0b3JMaXN0PihuZXcgQ1NT
U2VsZWN0b3JMaXN0KCkpOworICAgICAgICAgICAgYXV0byBzZWxlY3Rvckxpc3QgPSBtYWtlVW5p
cXVlPENTU1NlbGVjdG9yTGlzdD4oKTsKICAgICAgICAgICAgICpzZWxlY3Rvckxpc3QgPSBjb25z
dW1lQ29tcGxleFNlbGVjdG9yTGlzdChibG9jayk7CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9y
TGlzdC0+Zmlyc3QoKSB8fCAhYmxvY2suYXRFbmQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTU5MSw3ICs2NDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpjb25zdW1lUHNldWRvKENTU1BhcnNlclRvawogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzQW55OgogICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hvc3Q6IHsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxDU1NTZWxlY3Rvckxpc3Q+IHNlbGVjdG9yTGlzdCA9IHN0ZDo6dW5pcXVlX3B0
cjxDU1NTZWxlY3Rvckxpc3Q+KG5ldyBDU1NTZWxlY3Rvckxpc3QoKSk7CisgICAgICAgICAgICBh
dXRvIHNlbGVjdG9yTGlzdCA9IG1ha2VVbmlxdWU8Q1NTU2VsZWN0b3JMaXN0PigpOwogICAgICAg
ICAgICAgKnNlbGVjdG9yTGlzdCA9IGNvbnN1bWVDb21wb3VuZFNlbGVjdG9yTGlzdChibG9jayk7
CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yTGlzdC0+Zmlyc3QoKSB8fCAhYmxvY2suYXRFbmQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxNyw4ICs2NjYsOCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpjb25z
dW1lUHNldWRvKENTU1BhcnNlclRvawogICAgICAgICBzd2l0Y2ggKHNlbGVjdG9yLT5wc2V1ZG9F
bGVtZW50VHlwZSgpKSB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50Q3VlOiB7Ci0gICAgICAgICAgICBEaXNhbGxvd1BzZXVk
b0VsZW1lbnRzU2NvcGUgc2NvcGUodGhpcyk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q1NTU2VsZWN0b3JMaXN0PiBzZWxlY3Rvckxpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8Q1NTU2VsZWN0
b3JMaXN0PihuZXcgQ1NTU2VsZWN0b3JMaXN0KCkpOworICAgICAgICAgICAgRGlzYWxsb3dQc2V1
ZG9FbGVtZW50c1Njb3BlIHNjb3BlKCp0aGlzKTsKKyAgICAgICAgICAgIGF1dG8gc2VsZWN0b3JM
aXN0ID0gbWFrZVVuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KCk7CiAgICAgICAgICAgICAqc2VsZWN0
b3JMaXN0ID0gY29uc3VtZUNvbXBvdW5kU2VsZWN0b3JMaXN0KGJsb2NrKTsKICAgICAgICAgICAg
IGlmICghc2VsZWN0b3JMaXN0LT5pc1ZhbGlkKCkgfHwgIWJsb2NrLmF0RW5kKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02MjcsNyArNjc2LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZWxlY3RvclBhcnNlcjo6Y29uc3VtZVBzZXVkbyhD
U1NQYXJzZXJUb2sKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0VsZW1lbnRIaWdobGlnaHQ6IHsKLSAgICAgICAgICAgIERpc2FsbG93UHNldWRvRWxl
bWVudHNTY29wZSBzY29wZSh0aGlzKTsKKyAgICAgICAgICAgIERpc2FsbG93UHNldWRvRWxlbWVu
dHNTY29wZSBzY29wZSgqdGhpcyk7CiAKICAgICAgICAgICAgIGF1dG8mIGlkZW50ID0gYmxvY2su
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKTsKICAgICAgICAgICAgIGlmIChpZGVudC50eXBl
KCkgIT0gSWRlbnRUb2tlbiB8fCAhYmxvY2suYXRFbmQoKSkKQEAgLTY1Miw5ICs3MDEsOSBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjpjb25z
dW1lUHNldWRvKENTU1BhcnNlclRvawogICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRTbG90dGVkOiB7
Ci0gICAgICAgICAgICBEaXNhbGxvd1BzZXVkb0VsZW1lbnRzU2NvcGUgc2NvcGUodGhpcyk7Cisg
ICAgICAgICAgICBEaXNhbGxvd1BzZXVkb0VsZW1lbnRzU2NvcGUgc2NvcGUoKnRoaXMpOwogCi0g
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IGlubmVyU2VsZWN0
b3IgPSBjb25zdW1lQ29tcG91bmRTZWxlY3RvcihibG9jayk7CisgICAgICAgICAgICBhdXRvIGlu
bmVyU2VsZWN0b3IgPSBjb25zdW1lQ29tcG91bmRTZWxlY3RvcihibG9jayk7CiAgICAgICAgICAg
ICBibG9jay5jb25zdW1lV2hpdGVzcGFjZSgpOwogICAgICAgICAgICAgaWYgKCFpbm5lclNlbGVj
dG9yIHx8ICFibG9jay5hdEVuZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtNzI5LDcgKzc3OCw3IEBAIENTU1NlbGVjdG9yOjpBdHRyaWJ1dGVNYXRjaFR5cGUgQ1NTU2Vs
ZWN0b3JQYXJzZXI6OmNvbnN1bWVBdHRyaWJ1dGVGbGFncyhDU1NQYXJzCiAgICAgcmV0dXJuIENT
U1NlbGVjdG9yOjpDYXNlU2Vuc2l0aXZlOwogfQogCi1ib29sIENTU1NlbGVjdG9yUGFyc2VyOjpj
b25zdW1lQU5QbHVzQihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgc3RkOjpwYWlyPGludCwg
aW50PiYgcmVzdWx0KQorc3RhdGljIGJvb2wgY29uc3VtZUFOUGx1c0IoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIHN0ZDo6cGFpcjxpbnQsIGludD4mIHJlc3VsdCkKIHsKICAgICBjb25zdCBD
U1NQYXJzZXJUb2tlbiYgdG9rZW4gPSByYW5nZS5jb25zdW1lKCk7CiAgICAgaWYgKHRva2VuLnR5
cGUoKSA9PSBOdW1iZXJUb2tlbiAmJiB0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgPT0gSW50ZWdl
clZhbHVlVHlwZSkgewpAQCAtODI3LDkgKzg3Niw5IEBAIGNvbnN0IEF0b21TdHJpbmcmIENTU1Nl
bGVjdG9yUGFyc2VyOjpkZXRlcm1pbmVOYW1lc3BhY2UoY29uc3QgQXRvbVN0cmluZyYgcHJlZml4
CiAgICAgcmV0dXJuIG1fc3R5bGVTaGVldC0+bmFtZXNwYWNlVVJJRnJvbVByZWZpeChwcmVmaXgp
OwogfQogCi12b2lkIENTU1NlbGVjdG9yUGFyc2VyOjpwcmVwZW5kVHlwZVNlbGVjdG9ySWZOZWVk
ZWQoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9tU3RyaW5nJiBl
bGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqIGNvbXBvdW5kU2VsZWN0b3IpCit2b2lkIENT
U1NlbGVjdG9yUGFyc2VyOjpwcmVwZW5kVHlwZVNlbGVjdG9ySWZOZWVkZWQoY29uc3QgQXRvbVN0
cmluZyYgbmFtZXNwYWNlUHJlZml4LCBjb25zdCBBdG9tU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NT
UGFyc2VyU2VsZWN0b3ImIGNvbXBvdW5kU2VsZWN0b3IpCiB7Ci0gICAgYm9vbCBpc1NoYWRvd0RP
TSA9IGNvbXBvdW5kU2VsZWN0b3ItPm5lZWRzSW1wbGljaXRTaGFkb3dDb21iaW5hdG9yRm9yTWF0
Y2hpbmcoKTsKKyAgICBib29sIGlzU2hhZG93RE9NID0gY29tcG91bmRTZWxlY3Rvci5uZWVkc0lt
cGxpY2l0U2hhZG93Q29tYmluYXRvckZvck1hdGNoaW5nKCk7CiAgICAgCiAgICAgaWYgKGVsZW1l
bnROYW1lLmlzTnVsbCgpICYmIGRlZmF1bHROYW1lc3BhY2UoKSA9PSBzdGFyQXRvbSgpICYmICFp
c1NoYWRvd0RPTSkKICAgICAgICAgcmV0dXJuOwpAQCAtODQzLDcgKzg5Miw3IEBAIHZvaWQgQ1NT
U2VsZWN0b3JQYXJzZXI6OnByZXBlbmRUeXBlU2VsZWN0b3JJZk5lZWRlZChjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lc3BhY2VQCiAgICAgQXRvbVN0cmluZyBkZXRlcm1pbmVkUHJlZml4ID0gbmFtZXNw
YWNlUHJlZml4OwogICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gZGVmYXVsdE5hbWVzcGFjZSgpKQog
ICAgICAgICBkZXRlcm1pbmVkUHJlZml4ID0gbnVsbEF0b20oKTsKLSAgICBRdWFsaWZpZWROYW1l
IHRhZyA9IFF1YWxpZmllZE5hbWUoZGV0ZXJtaW5lZFByZWZpeCwgZGV0ZXJtaW5lZEVsZW1lbnRO
YW1lLCBuYW1lc3BhY2VVUkkpOworICAgIFF1YWxpZmllZE5hbWUgdGFnKGRldGVybWluZWRQcmVm
aXgsIGRldGVybWluZWRFbGVtZW50TmFtZSwgbmFtZXNwYWNlVVJJKTsKIAogICAgIC8vICo6aG9z
dCBuZXZlciBtYXRjaGVzLCBzbyB3ZSBjYW4ndCBkaXNjYXJkIHRoZSAqLAogICAgIC8vIG90aGVy
d2lzZSB3ZSBjYW4ndCB0ZWxsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gKjpob3N0IGFuZCBqdXN0
IDpob3N0LgpAQCAtODUzLDE1ICs5MDIsOSBAQCB2b2lkIENTU1NlbGVjdG9yUGFyc2VyOjpwcmVw
ZW5kVHlwZVNlbGVjdG9ySWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlUAogICAg
IC8vIDo6Y3VlKSwgd2UgbmVlZCBhIHVuaXZlcnNhbCBzZWxlY3RvciB0byBzZXQgdGhlIGNvbWJp
bmF0b3IKICAgICAvLyAocmVsYXRpb24pIG9uIGluIHRoZSBjYXNlcyB3aGVyZSB0aGVyZSBhcmUg
bm8gc2ltcGxlIHNlbGVjdG9ycyBwcmVjZWRpbmcKICAgICAvLyB0aGUgcHNldWRvIGVsZW1lbnQu
Ci0gICAgYm9vbCBleHBsaWNpdEZvckhvc3QgPSBjb21wb3VuZFNlbGVjdG9yLT5pc0hvc3RQc2V1
ZG9TZWxlY3RvcigpICYmICFlbGVtZW50TmFtZS5pc051bGwoKTsKKyAgICBib29sIGV4cGxpY2l0
Rm9ySG9zdCA9IGNvbXBvdW5kU2VsZWN0b3IuaXNIb3N0UHNldWRvU2VsZWN0b3IoKSAmJiAhZWxl
bWVudE5hbWUuaXNOdWxsKCk7CiAgICAgaWYgKHRhZyAhPSBhbnlRTmFtZSgpIHx8IGV4cGxpY2l0
Rm9ySG9zdCB8fCBpc1NoYWRvd0RPTSkKLSAgICAgICAgY29tcG91bmRTZWxlY3Rvci0+cHJlcGVu
ZFRhZ1NlbGVjdG9yKHRhZywgZGV0ZXJtaW5lZFByZWZpeCA9PSBudWxsQXRvbSgpICYmIGRldGVy
bWluZWRFbGVtZW50TmFtZSA9PSBzdGFyQXRvbSgpICYmICFleHBsaWNpdEZvckhvc3QpOwotfQot
Ci1zdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2VyOjph
ZGRTaW1wbGVTZWxlY3RvclRvQ29tcG91bmQoc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVj
dG9yPiBjb21wb3VuZFNlbGVjdG9yLCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
IHNpbXBsZVNlbGVjdG9yKQotewotICAgIGNvbXBvdW5kU2VsZWN0b3ItPmFwcGVuZFRhZ0hpc3Rv
cnkoQ1NTU2VsZWN0b3I6OlN1YnNlbGVjdG9yLCBXVEZNb3ZlKHNpbXBsZVNlbGVjdG9yKSk7Ci0g
ICAgcmV0dXJuIGNvbXBvdW5kU2VsZWN0b3I7CisgICAgICAgIGNvbXBvdW5kU2VsZWN0b3IucHJl
cGVuZFRhZ1NlbGVjdG9yKHRhZywgZGV0ZXJtaW5lZFByZWZpeCA9PSBudWxsQXRvbSgpICYmIGRl
dGVybWluZWRFbGVtZW50TmFtZSA9PSBzdGFyQXRvbSgpICYmICFleHBsaWNpdEZvckhvc3QpOwog
fQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IENTU1NlbGVjdG9yUGFyc2Vy
OjpzcGxpdENvbXBvdW5kQXRJbXBsaWNpdFNoYWRvd0Nyb3NzaW5nQ29tYmluYXRvcihzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IGNvbXBvdW5kU2VsZWN0b3IsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGNvbnRleHQpCkBAIC04ODIsNyArOTI1LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PENTU1BhcnNlclNlbGVjdG9yPiBDU1NTZWxlY3RvclBhcnNlcjo6c3BsaXRDb21wb3VuZEF0SW1w
bGljaXRTaGEKICAgICBDU1NQYXJzZXJTZWxlY3Rvciogc3BsaXRBZnRlciA9IGNvbXBvdW5kU2Vs
ZWN0b3IuZ2V0KCk7CiAgICAgd2hpbGUgKHNwbGl0QWZ0ZXItPnRhZ0hpc3RvcnkoKSAmJiAhc3Bs
aXRBZnRlci0+dGFnSGlzdG9yeSgpLT5uZWVkc0ltcGxpY2l0U2hhZG93Q29tYmluYXRvckZvck1h
dGNoaW5nKCkpCiAgICAgICAgIHNwbGl0QWZ0ZXIgPSBzcGxpdEFmdGVyLT50YWdIaXN0b3J5KCk7
Ci0gICAgCisKICAgICBpZiAoIXNwbGl0QWZ0ZXIgfHwgIXNwbGl0QWZ0ZXItPnRhZ0hpc3Rvcnko
KSkKICAgICAgICAgcmV0dXJuIGNvbXBvdW5kU2VsZWN0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuaAppbmRleCA1MjFlMWRhOGUyYTg5MGU4M2Fm
YmQwYzZkMmNkZGUyYzYwZjFmZDQ3Li44ZTc2NjE5M2I1NjM0MjgyMThmMmI2YjQ4Mzg5MjQ5MzM5
YTlkZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9y
UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNl
ci5oCkBAIC0xLDUgKzEsNSBAQAogLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8KIC8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMjksODAgKzI5LDEzIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ1NT
UGFyc2VyU2VsZWN0b3IuaCIKLSNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdlLmgiCi0jaW5j
bHVkZSA8bWVtb3J5PgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBDU1NQYXJzZXJD
b250ZXh0OwotY2xhc3MgQ1NTU2VsZWN0b3JMaXN0OworY2xhc3MgQ1NTUGFyc2VyVG9rZW5SYW5n
ZTsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIAotLy8gRklYTUU6IFdlIHNob3VsZCBjb25z
aWRlciBidWlsZGluZyBDU1NTZWxlY3RvcnMgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZwotLy8g
dGhlIGludGVybWVkaWF0ZSBDU1NQYXJzZXJTZWxlY3Rvci4KLWNsYXNzIENTU1NlbGVjdG9yUGFy
c2VyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgQ1NTU2VsZWN0b3JMaXN0IHBhcnNlU2VsZWN0b3Io
Q1NTUGFyc2VyVG9rZW5SYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsIFN0eWxlU2hlZXRD
b250ZW50cyopOwotCi0gICAgc3RhdGljIGJvb2wgY29uc3VtZUFOUGx1c0IoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYsIHN0ZDo6cGFpcjxpbnQsIGludD4mKTsKLQotcHJpdmF0ZToKLSAgICBDU1NTZWxl
Y3RvclBhcnNlcihjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgU3R5bGVTaGVldENvbnRlbnRzKik7
Ci0KLSAgICAvLyBUaGVzZSB3aWxsIGFsbCBjb25zdW1lIHRyYWlsaW5nIGNvbW1lbnRzIGlmIHN1
Y2Nlc3NmdWwKLQotICAgIENTU1NlbGVjdG9yTGlzdCBjb25zdW1lQ29tcGxleFNlbGVjdG9yTGlz
dChDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0gICAgQ1NTU2VsZWN0b3JMaXN0IGNvbnN1bWVDb21w
b3VuZFNlbGVjdG9yTGlzdChDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0KLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IGNvbnN1bWVDb21wbGV4U2VsZWN0b3IoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gY29u
c3VtZUNvbXBvdW5kU2VsZWN0b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotICAgIC8vIFRoaXMg
ZG9lc24ndCBpbmNsdWRlIGVsZW1lbnQgbmFtZXMsIHNpbmNlIHRoZXkncmUgaGFuZGxlZCBzcGVj
aWFsbHkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IGNvbnN1bWVTaW1w
bGVTZWxlY3RvcihDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0KLSAgICBib29sIGNvbnN1bWVOYW1l
KENTU1BhcnNlclRva2VuUmFuZ2UmLCBBdG9tU3RyaW5nJiBuYW1lLCBBdG9tU3RyaW5nJiBuYW1l
c3BhY2VQcmVmaXgpOwotCi0gICAgLy8gVGhlc2Ugd2lsbCByZXR1cm4gbnVsbHB0ciB3aGVuIHRo
ZSBzZWxlY3RvciBpcyBpbnZhbGlkCi0gICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVj
dG9yPiBjb25zdW1lSWQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYpOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJTZWxlY3Rvcj4gY29uc3VtZUNsYXNzKENTU1BhcnNlclRva2VuUmFuZ2UmKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IGNvbnN1bWVQc2V1ZG8oQ1NT
UGFyc2VyVG9rZW5SYW5nZSYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4gY29uc3VtZUF0dHJpYnV0ZShDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0KLSAgICBDU1NTZWxl
Y3Rvcjo6UmVsYXRpb25UeXBlIGNvbnN1bWVDb21iaW5hdG9yKENTU1BhcnNlclRva2VuUmFuZ2Um
KTsKLSAgICBDU1NTZWxlY3Rvcjo6TWF0Y2ggY29uc3VtZUF0dHJpYnV0ZU1hdGNoKENTU1BhcnNl
clRva2VuUmFuZ2UmKTsKLSAgICBDU1NTZWxlY3Rvcjo6QXR0cmlidXRlTWF0Y2hUeXBlIGNvbnN1
bWVBdHRyaWJ1dGVGbGFncyhDU1NQYXJzZXJUb2tlblJhbmdlJik7Ci0KLSAgICBjb25zdCBBdG9t
U3RyaW5nJiBkZWZhdWx0TmFtZXNwYWNlKCkgY29uc3Q7Ci0gICAgY29uc3QgQXRvbVN0cmluZyYg
ZGV0ZXJtaW5lTmFtZXNwYWNlKGNvbnN0IEF0b21TdHJpbmcmIHByZWZpeCk7Ci0gICAgdm9pZCBw
cmVwZW5kVHlwZVNlbGVjdG9ySWZOZWVkZWQoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlUHJl
Zml4LCBjb25zdCBBdG9tU3RyaW5nJiBlbGVtZW50TmFtZSwgQ1NTUGFyc2VyU2VsZWN0b3IqKTsK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBhZGRTaW1wbGVT
ZWxlY3RvclRvQ29tcG91bmQoc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBjb21w
b3VuZFNlbGVjdG9yLCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNpbXBsZVNl
bGVjdG9yKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBz
cGxpdENvbXBvdW5kQXRJbXBsaWNpdFNoYWRvd0Nyb3NzaW5nQ29tYmluYXRvcihzdGQ6OnVuaXF1
ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IGNvbXBvdW5kU2VsZWN0b3IsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmKTsKLQotICAgIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIG1fY29udGV4dDsKLSAg
ICBSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiBtX3N0eWxlU2hlZXQ7IC8vIEZJWE1FOiBTaG91
bGQgYmUgY29uc3QKLQotICAgIGJvb2wgbV9mYWlsZWRQYXJzaW5nID0gZmFsc2U7Ci0gICAgYm9v
bCBtX2Rpc2FsbG93UHNldWRvRWxlbWVudHMgPSBmYWxzZTsKLQotICAgIGNsYXNzIERpc2FsbG93
UHNldWRvRWxlbWVudHNTY29wZSB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2Fs
bG93UHNldWRvRWxlbWVudHNTY29wZSk7Ci0gICAgcHVibGljOgotICAgICAgICBEaXNhbGxvd1Bz
ZXVkb0VsZW1lbnRzU2NvcGUoQ1NTU2VsZWN0b3JQYXJzZXIqIHBhcnNlcikKLSAgICAgICAgICAg
IDogbV9wYXJzZXIocGFyc2VyKSwgbV93YXNEaXNhbGxvd2VkKG1fcGFyc2VyLT5tX2Rpc2FsbG93
UHNldWRvRWxlbWVudHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fcGFyc2VyLT5tX2Rpc2Fs
bG93UHNldWRvRWxlbWVudHMgPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgfkRpc2FsbG93
UHNldWRvRWxlbWVudHNTY29wZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fcGFyc2VyLT5t
X2Rpc2FsbG93UHNldWRvRWxlbWVudHMgPSBtX3dhc0Rpc2FsbG93ZWQ7Ci0gICAgICAgIH0KK3N0
cnVjdCBDU1NQYXJzZXJDb250ZXh0OwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQ1NTU2VsZWN0
b3JQYXJzZXIqIG1fcGFyc2VyOwotICAgICAgICBib29sIG1fd2FzRGlzYWxsb3dlZDsKLSAgICB9
OwotfTsKK0NTU1NlbGVjdG9yTGlzdCBwYXJzZUNTU1NlbGVjdG9yKENTU1BhcnNlclRva2VuUmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBTdHlsZVNoZWV0Q29udGVudHMqKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRl
ckNvbnZlcnRlci5oCmluZGV4IDc1YTFiMjNmZDNlYTZjMTkwYzg3MmMxNjcwZjYzZTkxZGNiNjVj
ZjcuLjc5NmJmMDdmNjc2YTFkNmEwNTU2NDNjZmFmMGRmYmM3NTQ2MTFlNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0yMDMsNyArMjAzLDcg
QEAgaW5saW5lIExlbmd0aCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKGNvbnN0IEJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLAogCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTGVu
Z3RoKCkpIHsKICAgICAgICAgTGVuZ3RoIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVM
ZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7Ci0gICAgICAgIGxlbmd0aC5zZXRIYXNRdWly
ayhwcmltaXRpdmVWYWx1ZS5pc1F1aXJrVmFsdWUoKSk7CisgICAgICAgIGxlbmd0aC5zZXRIYXNR
dWlyayhwcmltaXRpdmVWYWx1ZS5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19R
VUlSS1lfRU1TKTsKICAgICAgICAgcmV0dXJuIGxlbmd0aDsKICAgICB9CiAK
</data>
<flag name="review"
          id="407570"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>