<?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>177919</bug_id>
          
          <creation_ts>2017-10-05 00:22:27 -0700</creation_ts>
          <short_desc>[WinCairo] Add IPC files for wincairo webkit</short_desc>
          <delta_ts>2017-11-15 13:12:44 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174003</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yousuke Kimoto">Yousuke.Kimoto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1356886</commentid>
    <comment_count>0</comment_count>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-05 00:22:27 -0700</bug_when>
    <thetext>Add IPC files for wincairo webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356905</commentid>
    <comment_count>1</comment_count>
      <attachid>322801</attachid>
    <who name="Yousuke Kimoto">Yousuke.Kimoto</who>
    <bug_when>2017-10-05 01:03:15 -0700</bug_when>
    <thetext>Created attachment 322801
[PATCH] Add IPC files for WinCairo WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367507</commentid>
    <comment_count>2</comment_count>
      <attachid>322801</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-02 13:18:34 -0700</bug_when>
    <thetext>Comment on attachment 322801
[PATCH] Add IPC files for WinCairo WebKit

Clearing flags on attachment: 322801

Committed r224351: &lt;https://trac.webkit.org/changeset/224351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367508</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-02 13:18:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372411</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 13:12:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/35569014&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322801</attachid>
            <date>2017-10-05 01:03:15 -0700</date>
            <delta_ts>2017-11-02 13:18:34 -0700</delta_ts>
            <desc>[PATCH] Add IPC files for WinCairo WebKit</desc>
            <filename>bz177919.patch</filename>
            <type>text/plain</type>
            <size>25773</size>
            <attacher name="Yousuke Kimoto">Yousuke.Kimoto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNzhmYmMwNS4uNjZjMWY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAor
MjAxNy0xMC0wNSAgWW91c3VrZSBLaW1vdG8gIDx5b3VzdWtlLmtpbW90b0Bzb255LmNvbT4KKwor
ICAgICAgICBbV2luQ2Fpcm9dIEFkZCBJUEMgZmlsZXMgZm9yIHdpbmNhaXJvIHdlYmtpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3OTE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvQXR0YWNobWVudC5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuaDoK
KyAgICAgICAgKElQQzo6QXR0YWNobWVudDo6QXR0YWNobWVudCk6CisgICAgICAgIChJUEM6OkF0
dGFjaG1lbnQ6OmhhbmRsZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6aWRlbnRpZmllcklzTnVsbCk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OnNlbmRXaXRoUmVwbHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy93
aW4vQXR0YWNobWVudFdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpBdHRhY2htZW50Ojpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoSVBDOjpnZXREdXBsaWNhdGVkSGFuZGxlKToKKyAgICAg
ICAgKElQQzo6QXR0YWNobWVudDo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvd2lu
L0Nvbm5lY3Rpb25XaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6Y3Jl
YXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwbGF0Zm9y
bUludmFsaWRhdGUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpyZWFkRXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d3JpdGVFdmVudEhhbmRsZXIpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cGxh
dGZvcm1DYW5TZW5kT3V0Z29pbmdNZXNzYWdlcyBjb25zdCk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3
aWxsU2VuZFN5bmNNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZVN5bmNSZXBseSk6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisKIDIwMTctMTAtMDMg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTaGFyZWRTdHJpbmdI
YXNoU3RvcmUgc2hvdWxkIHN1cHBvcnQgcmVtb3ZpbmcgaGFzaGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwCmluZGV4IDJjNWNlMGUuLjk1YWU3MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwCkBAIC01MCw2ICs1MCw3IEBAIHZv
aWQgQXR0YWNobWVudDo6cmVsZWFzZSgpCiB9CiAjZW5kaWYKIAorI2lmICFPUyhXSU5ET1dTKQog
dm9pZCBBdHRhY2htZW50OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBl
bmNvZGVyLmFkZEF0dGFjaG1lbnQoV1RGTW92ZSgqY29uc3RfY2FzdDxBdHRhY2htZW50Kj4odGhp
cykpKTsKQEAgLTYxLDUgKzYyLDYgQEAgYm9vbCBBdHRhY2htZW50OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgQXR0YWNobWVudCYgYXR0YWNobWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5oCmluZGV4IGE2ODRjMGQuLjM5MjlkYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmgKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyNCw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBdHRhY2htZW50
X2gKLSNkZWZpbmUgQXR0YWNobWVudF9oCisjIHByYWdtYSBvbmNlCiAKICNpZiBPUyhEQVJXSU4p
ICYmICFVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICNpbmNsdWRlIDxtYWNoL21hY2hfaW5pdC5o
PgpAQCAtNTgsNiArNTgsMTAgQEAgcHVibGljOgogICAgIH5BdHRhY2htZW50KCk7CiAjZWxpZiBP
UyhEQVJXSU4pCiAgICAgQXR0YWNobWVudChtYWNoX3BvcnRfbmFtZV90LCBtYWNoX21zZ190eXBl
X25hbWVfdCBkaXNwb3NpdGlvbik7CisjZWxpZiBPUyhXSU5ET1dTKQorICAgIEF0dGFjaG1lbnQo
SEFORExFIGhhbmRsZSkKKyAgICAgICAgOiBtX2hhbmRsZShoYW5kbGUpCisgICAgeyB9CiAjZW5k
aWYKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtNzMsNiAr
NzcsOCBAQCBwdWJsaWM6CiAgICAgLy8gTWFjaFBvcnRUeXBlCiAgICAgbWFjaF9wb3J0X25hbWVf
dCBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0OyB9CiAgICAgbWFjaF9tc2dfdHlwZV9uYW1l
X3QgZGlzcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rpc3Bvc2l0aW9uOyB9CisjZWxpZiBP
UyhXSU5ET1dTKQorICAgIEhBTkRMRSBoYW5kbGUoKSB7IHJldHVybiBtX2hhbmRsZTsgfQogI2Vu
ZGlmCiAKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC04Nyw5ICs5Myw5IEBA
IHByaXZhdGU6CiAjZWxpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X25hbWVfdCBtX3BvcnQ7
CiAgICAgbWFjaF9tc2dfdHlwZV9uYW1lX3QgbV9kaXNwb3NpdGlvbjsKKyNlbGlmIE9TKFdJTkRP
V1MpCisgICAgSEFORExFIG1faGFuZGxlOwogI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJ
UEMKLQotI2VuZGlmIC8vIEF0dGFjaG1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5oCmluZGV4IDU0YTdmMGEuLjE1OWM0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBQb3J0
aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRl
cnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM1LDYg
KzEzNiwxMCBAQCBwdWJsaWM6CiAgICAgeHBjX2Nvbm5lY3Rpb25fdCB4cGNDb25uZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV94cGNDb25uZWN0aW9uLmdldCgpOyB9CiAgICAgYm9vbCBnZXRBdWRp
dFRva2VuKGF1ZGl0X3Rva2VuX3QmKTsKICAgICBwaWRfdCByZW1vdGVQcm9jZXNzSUQoKSBjb25z
dDsKKyNlbGlmIE9TKFdJTkRPV1MpCisgICAgdHlwZWRlZiBIQU5ETEUgSWRlbnRpZmllcjsKKyAg
ICBzdGF0aWMgYm9vbCBjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhJZGVudGlmaWVy
JiBzZXJ2ZXJJZGVudGlmaWVyLCBJZGVudGlmaWVyJiBjbGllbnRJZGVudGlmaWVyKTsKKyAgICBz
dGF0aWMgYm9vbCBpZGVudGlmaWVySXNOdWxsKElkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1
cm4gIWlkZW50aWZpZXI7IH0KICNlbmRpZgogCiAgICAgc3RhdGljIFJlZjxDb25uZWN0aW9uPiBj
cmVhdGVTZXJ2ZXJDb25uZWN0aW9uKElkZW50aWZpZXIsIENsaWVudCYpOwpAQCAtMTQ0LDcgKzE0
OSw3IEBAIHB1YmxpYzoKICAgICBDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50OyB9CiAKICAgICB2b2lkIHNldE9ubHlTZW5kTWVzc2FnZXNBc0Rpc3BhdGNoV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHlXaGVuUHJvY2Vzc2luZ1N1Y2hBTWVzc2FnZShib29sKTsKLSAgICB2b2lk
IHNldFNob3VsZEV4aXRPblN5bmNNZXNzYWdlU2VuZEZhaWx1cmUoYm9vbCBzaG91bGRFeGl0T25T
eW5jTWVzc2FnZVNlbmRGYWlsdXJlKTsKKyAgICB2b2lkIHNldFNob3VsZEV4aXRPblN5bmNNZXNz
YWdlU2VuZEZhaWx1cmUoYm9vbCk7CiAKICAgICAvLyBUaGUgc2V0IGNhbGxiYWNrIHdpbGwgYmUg
Y2FsbGVkIG9uIHRoZSBjb25uZWN0aW9uIHdvcmsgcXVldWUgd2hlbiB0aGUgY29ubmVjdGlvbiBp
cyBjbG9zZWQsIAogICAgIC8vIGJlZm9yZSBkaWRDYWxsIGlzIGNhbGxlZCBvbiB0aGUgY2xpZW50
IHRocmVhZC4gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIG9wZW5lZC4K
QEAgLTE1Miw3ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgLy8gb24gdGhlIHdvcmsgcXVldWUsIGZv
ciBleGFtcGxlIGlmIHdlIHdhbnQgdG8gaGFuZGxlIHRoZW0gb24gc29tZSBvdGhlciB0aHJlYWQg
d2UgY291bGQgYXZvaWQKICAgICAvLyBoYW5kbGluZyB0aGUgbWVzc2FnZSBvbiB0aGUgY2xpZW50
IHRocmVhZCBmaXJzdC4KICAgICB0eXBlZGVmIHZvaWQgKCpEaWRDbG9zZU9uQ29ubmVjdGlvbldv
cmtRdWV1ZUNhbGxiYWNrKShDb25uZWN0aW9uKik7Ci0gICAgdm9pZCBzZXREaWRDbG9zZU9uQ29u
bmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2Fs
bGJhY2sgY2FsbGJhY2spOworICAgIHZvaWQgc2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVl
dWVDYWxsYmFjayhEaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNrKTsKIAogICAg
IHZvaWQgYWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKFN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBXb3JrUXVldWUmLCBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIqKTsKICAg
ICB2b2lkIHJlbW92ZVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSk7CkBAIC0xNjQsMTIgKzE2OSwxMiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwb3N0Q29ubmVjdGlvbkRpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlKCk7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdlLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5RGlzcGF0Y2hlciwg
RnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1l
IFQ6OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gdm9pZCBzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5RGlzcGF0Y2hlciwgRnVuY3Rpb248dm9pZChz
dGQ6Om9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6UmVwbHk+OjpUeXBl
Pik+JiYgcmVwbHlIYW5kbGVyKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRT
eW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25T
ZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3
YWl0Rm9yT3B0aW9ucyA9IHsgfSk7CiAKICAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zKTsKLSAgICB2
b2lkIHNlbmRNZXNzYWdlV2l0aFJlcGx5KHVpbnQ2NF90IHJlcXVlc3RJRCwgc3RkOjp1bmlxdWVf
cHRyPEVuY29kZXI+LCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5RGlzcGF0Y2hlciwgRnVuY3Rp
b248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+KT4mJiByZXBseUhhbmRsZXIpOworICAg
IHZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHkodWludDY0X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1
ZV9wdHI8RW5jb2Rlcj4sIEZ1bmN0aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5j
dGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPik+JiYgcmVwbHlIYW5kbGVyKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gY3JlYXRlU3luY01lc3NhZ2VFbmNvZGVyKFN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ2NF90JiBzeW5jUmVxdWVzdElEKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gc2VuZFN5bmNNZXNzYWdlKHVpbnQ2NF90IHN5bmNS
ZXF1ZXN0SUQsIHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPiwgU2Vjb25kcyB0aW1lb3V0LCBPcHRp
b25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgYm9vbCBzZW5kU3lu
Y1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7CkBAIC0xOTQsNyArMTk5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0U2hvdWxkQm9vc3RNYWluVGhyZWFkT25TeW5jTWVzc2FnZShib29s
IGIpIHsgbV9zaG91bGRCb29zdE1haW5UaHJlYWRPblN5bmNNZXNzYWdlID0gYjsgfQogI2VuZGlm
CiAKLSAgICB1aW50NjRfdCBpbnN0YWxsSW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrKFdURjo6
RnVuY3Rpb248dm9pZCAoKT4mJik7CisgICAgdWludDY0X3QgaW5zdGFsbEluY29taW5nU3luY01l
c3NhZ2VDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1bmluc3Rh
bGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2sodWludDY0X3QpOwogICAgIGJvb2wgaGFzSW5j
b21pbmdTeW5jTWVzc2FnZSgpOwogCkBAIC0yOTIsNyArMjk3LDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UGVuZGluZ1N5bmNSZXBseT4gbV9wZW5kaW5nU3luY1JlcGxpZXM7CiAKICAgICBMb2Nr
IG1faW5jb21pbmdTeW5jTWVzc2FnZUNhbGxiYWNrTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgV1RGOjpGdW5jdGlvbjx2b2lkICgpPj4gbV9pbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2tz
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCgpPj4gbV9pbmNvbWlu
Z1N5bmNNZXNzYWdlQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxXb3JrUXVldWU+IG1faW5jb21pbmdT
eW5jTWVzc2FnZUNhbGxiYWNrUXVldWU7CiAgICAgdWludDY0X3QgbV9uZXh0SW5jb21pbmdTeW5j
TWVzc2FnZUNhbGxiYWNrSUQgeyAwIH07CiAKQEAgLTMzMCw2ICszMzUsMTYgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWFjaE1lc3NhZ2U+IG1fcGVuZGluZ091dGdvaW5nTWFjaE1l
c3NhZ2U7CiAKICAgICBPU09iamVjdFB0cjx4cGNfY29ubmVjdGlvbl90PiBtX3hwY0Nvbm5lY3Rp
b247CisjZWxpZiBPUyhXSU5ET1dTKQorICAgIC8vIENhbGxlZCBvbiB0aGUgY29ubmVjdGlvbiBx
dWV1ZS4KKyAgICB2b2lkIHJlYWRFdmVudEhhbmRsZXIoKTsKKyAgICB2b2lkIHdyaXRlRXZlbnRI
YW5kbGVyKCk7CisKKyAgICBWZWN0b3I8dWludDhfdD4gbV9yZWFkQnVmZmVyOworICAgIE9WRVJM
QVBQRUQgbV9yZWFkU3RhdGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IG1fcGVuZGlu
Z1dyaXRlRW5jb2RlcjsKKyAgICBPVkVSTEFQUEVEIG1fd3JpdGVTdGF0ZTsKKyAgICBIQU5ETEUg
bV9jb25uZWN0aW9uUGlwZTsKICNlbmRpZgogfTsKIApAQCAtMzQ1LDcgKzM2MCw3IEBAIGJvb2wg
Q29ubmVjdGlvbjo6c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0
aW9uU2V0PFNlbmRPcHRpb24+CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIENvbm5l
Y3Rpb246OnNlbmRXaXRoUmVwbHkoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IEZ1bmN0aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkIChzdGQ6
Om9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6UmVwbHk+OjpUeXBlPik+
JiYgcmVwbHlIYW5kbGVyKQordm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KFQmJiBtZXNz
YWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5RGlz
cGF0Y2hlciwgRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8
dHlwZW5hbWUgVDo6UmVwbHk+OjpUeXBlPik+JiYgcmVwbHlIYW5kbGVyKQogewogICAgIHVpbnQ2
NF90IHJlcXVlc3RJRCA9IDA7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+IGVuY29kZXIg
PSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwg
ZGVzdGluYXRpb25JRCwgcmVxdWVzdElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDM1
NzE2YzguLmI2MzkwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21h
a2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTcsNiArMTcsOSBA
QCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL3dpbi9OZXR3
b3JrUHJvY2Vzc01haW5XaW4uY3BwCiAgICAgTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVByb3h5
V2luLmNwcAogCisgICAgUGxhdGZvcm0vSVBDL3dpbi9BdHRhY2htZW50V2luLmNwcAorICAgIFBs
YXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKwogICAgIFN0b3JhZ2VQcm9jZXNzL3dp
bi9TdG9yYWdlUHJvY2Vzc01haW5XaW4uY3BwCiAKICAgICBXZWJQcm9jZXNzL3dpbi9XZWJQcm9j
ZXNzTWFpbldpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dp
bi9BdHRhY2htZW50V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9BdHRh
Y2htZW50V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGNiNTQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0F0dGFj
aG1lbnRXaW4uY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3IEtv
bnN0YW50aW4gVG9rYXJldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKKworI2luY2x1ZGUgIkRlY29k
ZXIuaCIKKyNpbmNsdWRlICJFbmNvZGVyLmgiCisKKy8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgZHVw
bGljYXRlZCB3aXRoIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGltcGxlbWVudGF0aW9uIGZvciBXaW4K
KworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgQXR0YWNobWVudDo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0Cit7CisgICAgLy8gSGFuZCBvZmYgb3duZXJzaGlwIG9mIG91ciBIQU5ETEUg
dG8gdGhlIHJlY2VpdmluZyBwcm9jZXNzLiBJdCB3aWxsIGNsb3NlIGl0IGZvciB1cy4KKyAgICAv
LyBGSVhNRTogSWYgdGhlIHJlY2VpdmluZyBwcm9jZXNzIGNyYXNoZXMgYmVmb3JlIGl0IHJlY2Vp
dmVzIHRoZSBtZW1vcnksIHRoZSBtZW1vcnkgd2lsbCBiZQorICAgIC8vIGxlYWtlZC4gU2VlIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzQ3NTAyPi4KKyAgICBlbmNvZGVyIDw8IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDY0X3Q+KG1faGFuZGxlKTsKKworICAgIC8vIFNlbmQgYWxvbmcgb3VyIFBJRCBzbyB0
aGF0IHRoZSByZWNlaXZpbmcgcHJvY2VzcyBjYW4gZHVwbGljYXRlIHRoZSBIQU5ETEUgZm9yIGl0
cyBvd24gdXNlLgorICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDo6R2V0Q3Vy
cmVudFByb2Nlc3NJZCgpKTsKK30KKworc3RhdGljIGJvb2wgZ2V0RHVwbGljYXRlZEhhbmRsZShI
QU5ETEUgc291cmNlSGFuZGxlLCBEV09SRCBzb3VyY2VQSUQsIEhBTkRMRSYgZHVwbGljYXRlZEhh
bmRsZSkKK3sKKyAgICBkdXBsaWNhdGVkSGFuZGxlID0gMDsKKyAgICBpZiAoIXNvdXJjZUhhbmRs
ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBIQU5ETEUgc291cmNlUHJvY2VzcyA9IDo6
T3BlblByb2Nlc3MoUFJPQ0VTU19EVVBfSEFORExFLCBGQUxTRSwgc291cmNlUElEKTsKKyAgICBp
ZiAoIXNvdXJjZVByb2Nlc3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENvcHkg
dGhlIGhhbmRsZSBpbnRvIG91ciBwcm9jZXNzIGFuZCBjbG9zZSB0aGUgaGFuZGxlIHRoYXQgdGhl
IHNlbmRpbmcgcHJvY2VzcyBjcmVhdGVkIGZvciB1cy4KKyAgICBCT09MIHN1Y2Nlc3MgPSA6OkR1
cGxpY2F0ZUhhbmRsZShzb3VyY2VQcm9jZXNzLCBzb3VyY2VIYW5kbGUsIDo6R2V0Q3VycmVudFBy
b2Nlc3MoKSwgJmR1cGxpY2F0ZWRIYW5kbGUsIDAsIEZBTFNFLCBEVVBMSUNBVEVfU0FNRV9BQ0NF
U1MgfCBEVVBMSUNBVEVfQ0xPU0VfU09VUkNFKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHN1
Y2Nlc3MsICI6OkR1cGxpY2F0ZUhhbmRsZSBmYWlsZWQgd2l0aCBlcnJvciAlbHUiLCA6OkdldExh
c3RFcnJvcigpKTsKKworICAgIDo6Q2xvc2VIYW5kbGUoc291cmNlUHJvY2Vzcyk7CisKKyAgICBy
ZXR1cm4gc3VjY2VzczsKK30KKworYm9vbCBBdHRhY2htZW50OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgQXR0YWNobWVudCYgYXR0YWNobWVudCkKK3sKKyAgICBBU1NFUlRfQVJHKGF0dGFjaG1l
bnQsICFhdHRhY2htZW50Lm1faGFuZGxlKTsKKworICAgIHVpbnQ2NF90IHNvdXJjZUhhbmRsZTsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZUhhbmRsZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHVpbnQzMl90IHNvdXJjZVBJRDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHNvdXJjZVBJRCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEhBTkRMRSBkdXBsaWNh
dGVkSGFuZGxlOworICAgIGlmICghZ2V0RHVwbGljYXRlZEhhbmRsZShyZWludGVycHJldF9jYXN0
PEhBTkRMRT4oc291cmNlSGFuZGxlKSwgc291cmNlUElELCBkdXBsaWNhdGVkSGFuZGxlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXR0YWNobWVudC5tX2hhbmRsZSA9IGR1cGxpY2F0
ZWRIYW5kbGU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3ZWMyYzcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKQEAgLTAs
MCArMSwzMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
IDx3dGYvUmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBzdGQ7CisKK25hbWVzcGFjZSBJUEMgeworCisvLyBGSVhNRTogUmVuYW1lIHRoaXMgb3IgdXNl
IGEgZGlmZmVyZW50IGNvbnN0YW50IG9uIHdpbmRvd3MuCitzdGF0aWMgY29uc3Qgc2l6ZV90IGlu
bGluZU1lc3NhZ2VNYXhTaXplID0gNDA5NjsKKworYm9vbCBDb25uZWN0aW9uOjpjcmVhdGVTZXJ2
ZXJBbmRDbGllbnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50aWZpZXIsIEhBTkRMRSYg
Y2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBTdHJpbmcgcGlwZU5hbWU7CisKKyAgICBkbyB7Cisg
ICAgICAgIHVuc2lnbmVkIHVuaXF1ZUlEID0gcmFuZG9tTnVtYmVyKCkgKiBzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7CisgICAgICAgIHBpcGVOYW1lID0gU3RyaW5nOjpmb3Jt
YXQoIlxcXFwuXFxwaXBlXFxjb20uYXBwbGUuV2ViS2l0LiV4IiwgdW5pcXVlSUQpOworCisgICAg
ICAgIHNlcnZlcklkZW50aWZpZXIgPSA6OkNyZWF0ZU5hbWVkUGlwZShwaXBlTmFtZS5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwKKyAgICAgICAgICAgIFBJUEVfQUNDRVNT
X0RVUExFWCB8IEZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNFIHwgRklMRV9GTEFHX09WRVJM
QVBQRUQsCisgICAgICAgICAgICBQSVBFX1RZUEVfTUVTU0FHRSB8IFBJUEVfUkVBRE1PREVfTUVT
U0FHRSwgMSwgaW5saW5lTWVzc2FnZU1heFNpemUsIGlubGluZU1lc3NhZ2VNYXhTaXplLAorICAg
ICAgICAgICAgMCwgMCk7CisgICAgfSB3aGlsZSAoIXNlcnZlcklkZW50aWZpZXIgJiYgOjpHZXRM
YXN0RXJyb3IoKSA9PSBFUlJPUl9QSVBFX0JVU1kpOworCisgICAgaWYgKCFzZXJ2ZXJJZGVudGlm
aWVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjbGllbnRJZGVudGlmaWVyID0gOjpD
cmVhdGVGaWxlVyhwaXBlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgT1BFTl9FWElTVElORywgRklM
RV9GTEFHX09WRVJMQVBQRUQsIDApOworICAgIGlmICghY2xpZW50SWRlbnRpZmllcikgeworICAg
ICAgICA6OkNsb3NlSGFuZGxlKHNlcnZlcklkZW50aWZpZXIpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgRFdPUkQgbW9kZSA9IFBJUEVfUkVBRE1PREVfTUVTU0FHRTsKKyAg
ICBpZiAoITo6U2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoY2xpZW50SWRlbnRpZmllciwgJm1vZGUs
IDAsIDApKSB7CisgICAgICAgIDo6Q2xvc2VIYW5kbGUoc2VydmVySWRlbnRpZmllcik7CisgICAg
ICAgIDo6Q2xvc2VIYW5kbGUoY2xpZW50SWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpwbGF0
Zm9ybUluaXRpYWxpemUoSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIG1lbXNldCgmbV9y
ZWFkU3RhdGUsIDAsIHNpemVvZihtX3JlYWRTdGF0ZSkpOworICAgIG1fcmVhZFN0YXRlLmhFdmVu
dCA9IDo6Q3JlYXRlRXZlbnRXKDAsIEZBTFNFLCBGQUxTRSwgMCk7CisKKyAgICBtZW1zZXQoJm1f
d3JpdGVTdGF0ZSwgMCwgc2l6ZW9mKG1fd3JpdGVTdGF0ZSkpOworICAgIG1fd3JpdGVTdGF0ZS5o
RXZlbnQgPSA6OkNyZWF0ZUV2ZW50VygwLCBGQUxTRSwgRkFMU0UsIDApOworCisgICAgbV9jb25u
ZWN0aW9uUGlwZSA9IGlkZW50aWZpZXI7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1J
bnZhbGlkYXRlKCkKK3sKKyAgICBpZiAobV9jb25uZWN0aW9uUGlwZSA9PSBJTlZBTElEX0hBTkRM
RV9WQUxVRSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0Nvbm5lY3RlZCA9IGZhbHNlOwor
CisgICAgbV9jb25uZWN0aW9uUXVldWUtPnVucmVnaXN0ZXJBbmRDbG9zZUhhbmRsZShtX3JlYWRT
dGF0ZS5oRXZlbnQpOworICAgIG1fcmVhZFN0YXRlLmhFdmVudCA9IDA7CisKKyAgICBtX2Nvbm5l
Y3Rpb25RdWV1ZS0+dW5yZWdpc3RlckFuZENsb3NlSGFuZGxlKG1fd3JpdGVTdGF0ZS5oRXZlbnQp
OworICAgIG1fd3JpdGVTdGF0ZS5oRXZlbnQgPSAwOworCisgICAgOjpDbG9zZUhhbmRsZShtX2Nv
bm5lY3Rpb25QaXBlKTsKKyAgICBtX2Nvbm5lY3Rpb25QaXBlID0gSU5WQUxJRF9IQU5ETEVfVkFM
VUU7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6cmVhZEV2ZW50SGFuZGxlcigpCit7CisgICAgaWYg
KG1fY29ubmVjdGlvblBpcGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVy
bjsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIC8vIENoZWNrIGlmIHdlIGdvdCBzb21l
IGRhdGEuCisgICAgICAgIERXT1JEIG51bWJlck9mQnl0ZXNSZWFkID0gMDsKKyAgICAgICAgaWYg
KCE6OkdldE92ZXJsYXBwZWRSZXN1bHQobV9jb25uZWN0aW9uUGlwZSwgJm1fcmVhZFN0YXRlLCAm
bnVtYmVyT2ZCeXRlc1JlYWQsIEZBTFNFKSkgeworICAgICAgICAgICAgRFdPUkQgZXJyb3IgPSA6
OkdldExhc3RFcnJvcigpOworICAgICAgICAgICAgc3dpdGNoIChlcnJvcikgeworICAgICAgICAg
ICAgY2FzZSBFUlJPUl9CUk9LRU5fUElQRToKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uRGlk
Q2xvc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjYXNlIEVSUk9S
X01PUkVfREFUQTogeworICAgICAgICAgICAgICAgIC8vIFJlYWQgdGhlIHJlc3Qgb2YgdGhlIG1l
c3NhZ2Ugb3V0IG9mIHRoZSBwaXBlLgorCisgICAgICAgICAgICAgICAgRFdPUkQgYnl0ZXNUb1Jl
YWQgPSAwOworICAgICAgICAgICAgICAgIGlmICghOjpQZWVrTmFtZWRQaXBlKG1fY29ubmVjdGlv
blBpcGUsIDAsIDAsIDAsIDAsICZieXRlc1RvUmVhZCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
RFdPUkQgZXJyb3IgPSA6OkdldExhc3RFcnJvcigpOworICAgICAgICAgICAgICAgICAgICBpZiAo
ZXJyb3IgPT0gRVJST1JfQlJPS0VOX1BJUEUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb25EaWRDbG9zZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgLy8gOjpHZXRPdmVybGFwcGVkUmVzdWx0IHRvbGQgdXMgdGhlcmUncyBt
b3JlIGRhdGEuIDo6UGVla05hbWVkUGlwZSBzaG91bGRuJ3QKKyAgICAgICAgICAgICAgICAvLyBj
b250cmFkaWN0IGl0IQorICAgICAgICAgICAgICAgIEFTU0VSVChieXRlc1RvUmVhZCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFieXRlc1RvUmVhZCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBtX3JlYWRCdWZmZXIuZ3JvdyhtX3JlYWRCdWZmZXIuc2l6ZSgp
ICsgYnl0ZXNUb1JlYWQpOworICAgICAgICAgICAgICAgIGlmICghOjpSZWFkRmlsZShtX2Nvbm5l
Y3Rpb25QaXBlLCBtX3JlYWRCdWZmZXIuZGF0YSgpICsgbnVtYmVyT2ZCeXRlc1JlYWQsIGJ5dGVz
VG9SZWFkLCAwLCAmbV9yZWFkU3RhdGUpKSB7CisgICAgICAgICAgICAgICAgICAgIERXT1JEIGVy
cm9yID0gOjpHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgZmlndXJlIG91dCB3aHkgd2UncmUgZ2V0dGluZyB0aGlzIGVy
cm9yLgorICAgICAgICAgICAgY2FzZSBFUlJPUl9JT19JTkNPTVBMRVRFOgorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IW1fcmVhZEJ1ZmZlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBtZXNz
YWdlLCBsZXQncyBkaXNwYXRjaCBpdC4KKyAgICAgICAgICAgIFZlY3RvcjxBdHRhY2htZW50PiBh
dHRhY2htZW50cygwKTsKKyAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6bWFrZV91bmlx
dWU8RGVjb2Rlcj4obV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLnNpemUoKSwgbnVs
bHB0ciwgV1RGTW92ZShhdHRhY2htZW50cykpOworICAgICAgICAgICAgcHJvY2Vzc0luY29taW5n
TWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbmQg
b3V0IHRoZSBzaXplIG9mIHRoZSBuZXh0IG1lc3NhZ2UgaW4gdGhlIHBpcGUgKGlmIHRoZXJlIGlz
IG9uZSkgc28gdGhhdCB3ZSBjYW4gcmVhZAorICAgICAgICAvLyBpdCBhbGwgaW4gb25lIG9wZXJh
dGlvbi4gKFRoaXMgaXMganVzdCBhbiBvcHRpbWl6YXRpb24gdG8gYXZvaWQgYW4gZXh0cmEgcGFz
cyB0aHJvdWdoIHRoZQorICAgICAgICAvLyBsb29wIChpZiB3ZSBjaG9zZSBhIGJ1ZmZlciBzaXpl
IHRoYXQgd2FzIHRvbyBzbWFsbCkgb3IgYWxsb2NhdGluZyBleHRyYSBtZW1vcnkgKGlmIHdlCisg
ICAgICAgIC8vIGNob3NlIGEgYnVmZmVyIHNpemUgdGhhdCB3YXMgdG9vIGxhcmdlKS4pCisgICAg
ICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gMDsKKyAgICAgICAgaWYgKCE6OlBlZWtOYW1lZFBpcGUo
bV9jb25uZWN0aW9uUGlwZSwgMCwgMCwgMCwgMCwgJmJ5dGVzVG9SZWFkKSkgeworICAgICAgICAg
ICAgRFdPUkQgZXJyb3IgPSA6OkdldExhc3RFcnJvcigpOworICAgICAgICAgICAgaWYgKGVycm9y
ID09IEVSUk9SX0JST0tFTl9QSVBFKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbkRpZENs
b3NlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFieXRlc1Rv
UmVhZCkgeworICAgICAgICAgICAgLy8gVGhlcmUncyBubyBtZXNzYWdlIHdhaXRpbmcgaW4gdGhl
IHBpcGUuIFNjaGVkdWxlIGEgcmVhZCBvZiB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUKKyAgICAgICAg
ICAgIC8vIG5leHQgbWVzc2FnZS4gV2UnbGwgZmluZCBvdXQgdGhlIG1lc3NhZ2UncyBhY3R1YWwg
c2l6ZSB3aGVuIGl0IGFycml2ZXMuIChJZiB3ZQorICAgICAgICAgICAgLy8gY2hhbmdlIHRoaXMg
dG8gcmVhZCBtb3JlIHRoYW4gYSBzaW5nbGUgYnl0ZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywg
d2UnbGwgaGF2ZSB0bworICAgICAgICAgICAgLy8gZGVhbCB3aXRoIG1fcmVhZEJ1ZmZlciBwb3Rl
bnRpYWxseSBiZWluZyBsYXJnZXIgdGhhbiB0aGUgbWVzc2FnZSB3ZSByZWFkIGFmdGVyCisgICAg
ICAgICAgICAvLyBjYWxsaW5nIDo6R2V0T3ZlcmxhcHBlZFJlc3VsdCBhYm92ZS4pCisgICAgICAg
ICAgICBieXRlc1RvUmVhZCA9IDE7CisgICAgICAgIH0KKworICAgICAgICBtX3JlYWRCdWZmZXIu
cmVzaXplKGJ5dGVzVG9SZWFkKTsKKworICAgICAgICAvLyBFaXRoZXIgcmVhZCB0aGUgbmV4dCBh
dmFpbGFibGUgbWVzc2FnZSAod2hpY2ggc2hvdWxkIG9jY3VyIHN5bmNocm9ub3VzbHkpLCBvciBz
dGFydCBhbgorICAgICAgICAvLyBhc3luY2hyb25vdXMgcmVhZCBvZiB0aGUgbmV4dCBtZXNzYWdl
IHRoYXQgYmVjb21lcyBhdmFpbGFibGUuCisgICAgICAgIEJPT0wgcmVzdWx0ID0gOjpSZWFkRmls
ZShtX2Nvbm5lY3Rpb25QaXBlLCBtX3JlYWRCdWZmZXIuZGF0YSgpLCBtX3JlYWRCdWZmZXIuc2l6
ZSgpLCAwLCAmbV9yZWFkU3RhdGUpOworICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAg
ICAvLyBUaGVyZSB3YXMgYWxyZWFkeSBhIG1lc3NhZ2Ugd2FpdGluZyBpbiB0aGUgcGlwZSwgYW5k
IHdlIHJlYWQgaXQgc3luY2hyb25vdXNseS4KKyAgICAgICAgICAgIC8vIFByb2Nlc3MgaXQuCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIERXT1JEIGVycm9yID0g
OjpHZXRMYXN0RXJyb3IoKTsKKworICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfSU9fUEVORElO
RykgeworICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIG1lc3NhZ2VzIGluIHRoZSBwaXBlIGN1
cnJlbnRseS4gcmVhZEV2ZW50SGFuZGxlciB3aWxsIGJlIGNhbGxlZCBhZ2FpbiBvbmNlIHRoZXJl
IGlzIGEgbWVzc2FnZS4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChlcnJvciA9PSBFUlJPUl9NT1JFX0RBVEEpIHsKKyAgICAgICAgICAgIC8vIEVpdGhlciBh
IG1lc3NhZ2UgaXMgYXZhaWxhYmxlIHdoZW4gd2UgZGlkbid0IHRoaW5rIG9uZSB3YXMsIG9yIHRo
ZSBtZXNzYWdlIGlzIGxhcmdlcgorICAgICAgICAgICAgLy8gdGhhbiA6OlBlZWtOYW1lZFBpcGUg
dG9sZCB1cy4gVGhlIGZvcm1lciBzZWVtcyBmYXIgbW9yZSBsaWtlbHkuIFByb2JhYmx5IHRoZSBt
ZXNzYWdlCisgICAgICAgICAgICAvLyBiZWNhbWUgYXZhaWxhYmxlIGJldHdlZW4gb3VyIGNhbGxz
IHRvIDo6UGVla05hbWVkUGlwZSBhbmQgOjpSZWFkRmlsZSBhYm92ZS4gR28gYmFjaworICAgICAg
ICAgICAgLy8gdG8gdGhlIHRvcCBvZiB0aGUgbG9vcCB0byB1c2UgOjpHZXRPdmVybGFwcGVkUmVz
dWx0IHRvIHJldHJpZXZlIHRoZSBhdmFpbGFibGUgZGF0YS4KKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gaGFuZGxlIG90aGVy
IGVycm9ycyBoZXJlLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisK
K3ZvaWQgQ29ubmVjdGlvbjo6d3JpdGVFdmVudEhhbmRsZXIoKQoreworICAgIGlmIChtX2Nvbm5l
Y3Rpb25QaXBlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm47CisKKyAg
ICBEV09SRCBudW1iZXJPZkJ5dGVzV3JpdHRlbiA9IDA7CisgICAgaWYgKCE6OkdldE92ZXJsYXBw
ZWRSZXN1bHQobV9jb25uZWN0aW9uUGlwZSwgJm1fd3JpdGVTdGF0ZSwgJm51bWJlck9mQnl0ZXNX
cml0dGVuLCBGQUxTRSkpIHsKKyAgICAgICAgRFdPUkQgZXJyb3IgPSA6OkdldExhc3RFcnJvcigp
OworCisgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9JT19JTkNPTVBMRVRFKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGZpZ3VyZSBvdXQgd2h5IHdlJ3JlIGdldHRpbmcgdGhp
cyBlcnJvci4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXJy
b3IgPT0gRVJST1JfQlJPS0VOX1BJUEUpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb25EaWRDbG9z
ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKworICAgIC8vIFRoZSBwZW5kaW5nIHdyaXRlIGhhcyBmaW5pc2hl
ZCwgc28gd2UgYXJlIG5vdyBkb25lIHdpdGggaXRzIGVuY29kZXIuIENsZWFyaW5nIHRoaXMgbWVt
YmVyCisgICAgLy8gd2lsbCBhbGxvdyB1cyB0byBzZW5kIG1lc3NhZ2VzIGFnYWluLgorICAgIG1f
cGVuZGluZ1dyaXRlRW5jb2RlciA9IG51bGxwdHI7CisKKyAgICAvLyBOb3cgdGhhdCB0aGUgcGVu
ZGluZyB3cml0ZSBoYXMgZmluaXNoZWQsIHdlIGNhbiB0cnkgdG8gc2VuZCBhIG5ldyBtZXNzYWdl
LgorICAgIHNlbmRPdXRnb2luZ01lc3NhZ2VzKCk7Cit9CisKK2Jvb2wgQ29ubmVjdGlvbjo6b3Bl
bigpCit7CisgICAgLy8gV2UgY29ubmVjdGVkIHRoZSB0d28gZW5kcyBvZiB0aGUgcGlwZSBpbiBj
cmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycy4KKyAgICBtX2lzQ29ubmVjdGVkID0gdHJ1
ZTsKKworICAgIFJlZlB0cjxDb25uZWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworCisgICAg
Ly8gU3RhcnQgbGlzdGVuaW5nIGZvciByZWFkIGFuZCB3cml0ZSBzdGF0ZSBldmVudHMuCisgICAg
bV9jb25uZWN0aW9uUXVldWUtPnJlZ2lzdGVySGFuZGxlKG1fcmVhZFN0YXRlLmhFdmVudCwgW3By
b3RlY3RlZFRoaXNdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+cmVhZEV2ZW50SGFuZGxlcigp
OworICAgIH0pOworCisgICAgbV9jb25uZWN0aW9uUXVldWUtPnJlZ2lzdGVySGFuZGxlKG1fd3Jp
dGVTdGF0ZS5oRXZlbnQsIFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMt
PndyaXRlRXZlbnRIYW5kbGVyKCk7CisgICAgfSk7CisKKyAgICAvLyBTY2hlZHVsZSBhIHJlYWQu
CisgICAgbV9jb25uZWN0aW9uUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAg
ICAgIHByb3RlY3RlZFRoaXMtPnJlYWRFdmVudEhhbmRsZXIoKTsKKyAgICB9KTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBDb25uZWN0aW9uOjpwbGF0Zm9ybUNhblNlbmRPdXRnb2luZ01l
c3NhZ2VzKCkgY29uc3QKK3sKKyAgICAvLyBXZSBvbmx5IGFsbG93IHNlbmRpbmcgb25lIGFzeW5j
aHJvbm91cyBtZXNzYWdlIGF0IGEgdGltZS4gSWYgd2Ugd2FudGVkIHRvIHNlbmQgbW9yZSB0aGFu
IG9uZQorICAgIC8vIGF0IG9uY2UsIHdlJ2QgaGF2ZSB0byB1c2UgbXVsdGlwbGUgT1ZFUkxBUFBF
RCBzdHJ1Y3R1cmVzIGFuZCBob2xkIG9udG8gbXVsdGlwbGUgcGVuZGluZworICAgIC8vIE1lc3Nh
Z2VFbmNvZGVycyAob25lIG9mIGVhY2ggZm9yIGVhY2ggc2ltdWx0YW5lb3VzIGFzeW5jaHJvbm91
cyBtZXNzYWdlKS4KKyAgICByZXR1cm4gIW1fcGVuZGluZ1dyaXRlRW5jb2RlcjsKK30KKworYm9v
bCBDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVy
PiBlbmNvZGVyKQoreworICAgIEFTU0VSVCghbV9wZW5kaW5nV3JpdGVFbmNvZGVyKTsKKworICAg
IC8vIEp1c3QgYmFpbCBpZiB0aGUgaGFuZGxlIGhhcyBiZWVuIGNsb3NlZC4KKyAgICBpZiAobV9j
b25uZWN0aW9uUGlwZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gV2UgcHV0IHRoZSBtZXNzYWdlIElEIGxhc3QuCisgICAgKmVuY29kZXIg
PDwgMDsKKworICAgIC8vIFdyaXRlIHRoZSBvdXRnb2luZyBtZXNzYWdlLgorCisgICAgaWYgKDo6
V3JpdGVGaWxlKG1fY29ubmVjdGlvblBpcGUsIGVuY29kZXItPmJ1ZmZlcigpLCBlbmNvZGVyLT5i
dWZmZXJTaXplKCksIDAsICZtX3dyaXRlU3RhdGUpKSB7CisgICAgICAgIC8vIFdlIHN1Y2Nlc3Nm
dWxseSBzZW50IHRoaXMgbWVzc2FnZS4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgRFdPUkQgZXJyb3IgPSA6OkdldExhc3RFcnJvcigpOworCisgICAgaWYgKGVycm9yID09IEVS
Uk9SX05PX0RBVEEpIHsKKyAgICAgICAgLy8gVGhlIHBpcGUgaXMgYmVpbmcgY2xvc2VkLgorICAg
ICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmIChlcnJvciAhPSBFUlJPUl9JT19QRU5ESU5HKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gVGhl
IG1lc3NhZ2Ugd2lsbCBiZSBzZW50IHNvb24uIEhvbGQgb250byB0aGUgZW5jb2RlciBzbyB0aGF0
IGl0IHdvbid0IGJlIGRlc3Ryb3llZAorICAgIC8vIGJlZm9yZSB0aGUgd3JpdGUgY29tcGxldGVz
LgorICAgIG1fcGVuZGluZ1dyaXRlRW5jb2RlciA9IFdURk1vdmUoZW5jb2Rlcik7CisKKyAgICAv
LyBXZSBjYW4gb25seSBzZW5kIG9uZSBhc3luY2hyb25vdXMgbWVzc2FnZSBhdCBhIHRpbWUgKHNl
ZSBjb21tZW50IGluIHBsYXRmb3JtQ2FuU2VuZE91dGdvaW5nTWVzc2FnZXMpLgorICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBDb25uZWN0aW9uOjp3aWxsU2VuZFN5bmNNZXNzYWdlKE9wdGlv
blNldDxTZW5kU3luY09wdGlvbj4pCit7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZVN5bmNSZXBseShPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+KQoreworfQorCit9IC8vIG5hbWVz
cGFjZSBJUEMK
</data>

          </attachment>
      

    </bug>

</bugzilla>