<?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>231704</bug_id>
          
          <creation_ts>2021-10-13 15:43:24 -0700</creation_ts>
          <short_desc>Use JSONValues instead of a JSC::VM to parse WKContentRuleLists</short_desc>
          <delta_ts>2021-10-19 10:02:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1804028</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-13 15:43:24 -0700</bug_when>
    <thetext>Use JSONValues instead of a JSC::VM to parse WKContentRuleLists</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804032</commentid>
    <comment_count>1</comment_count>
      <attachid>441152</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-13 15:47:34 -0700</bug_when>
    <thetext>Created attachment 441152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806103</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-19 10:01:55 -0700</bug_when>
    <thetext>Committed r284465 (243225@main): &lt;https://commits.webkit.org/243225@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441152.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806105</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-19 10:02:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/84419908&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441152</attachid>
            <date>2021-10-13 15:47:34 -0700</date>
            <delta_ts>2021-10-19 10:01:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231704-20211013164732.patch</filename>
            <type>text/plain</type>
            <size>26510</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRkNDU3Njg4Y2UwODlh
MWQzZjc1Y2FmOWYxZTdkNTAyOGQ0ZmQ3Yi4uYjU1OWJiNDdhZjQ3OThlNjkyOTEzMzU3OGI5YmY5
MmE2OWI5ODIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTEwLTEzICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIEpT
T05WYWx1ZXMgaW5zdGVhZCBvZiBhIEpTQzo6Vk0gdG8gcGFyc2UgV0tDb250ZW50UnVsZUxpc3Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE3MDQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG1h
a2VzIHRoZSBwYXJzZXIgbXVjaCBzaW1wbGVyIGFuZCBlYXNpZXIgdG8gc2VlIHdoYXQgaXMgZ29p
bmcgb24uCisgICAgICAgIEl0IHByb2JhYmx5IGFsc28gc2F2ZXMgc29tZSBtZW1vcnkgYmVjYXVz
ZSB3ZSBkb24ndCBuZWVkIHRvIG1ha2UgYSBWTSBqdXN0IHRvIHBhcnNlIEpTT04uCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuICBUaGVyZSBhcmUgZXh0ZW5zaXZlIHRlc3RzIGZv
ciBpbnZhbGlkIGlucHV0LCBhbmQgdGhlcmUgaXMgb25seQorICAgICAgICBvbmUgY2hhbmdlIGlu
IHRoZSBlcnJvciByZXBvcnRlZDogd2UgdXNlZCB0byBzYXkgdGhlIHRvcCBsZXZlbCBoYXMgdG8g
YmUgYW4gb2JqZWN0LCB0aGVuCisgICAgICAgIHdlIHdvdWxkIHNheSB0aGF0IGl0IGhhcyB0byBi
ZSBhbiBhcnJheS4gIEphdmFTY3JpcHQgYXJyYXlzIGFyZSBvYmplY3RzLCBidXQgSlNPTiBhcnJh
eXMgYXJlbid0LgorICAgICAgICBWYWxpZCBpbnB1dCBjb250aW51ZXMgdG8gcGFyc2UgdGhlIHNh
bWUsIGFuZCBpbnZhbGlkIGlucHV0IGNvbnRpbnVlcyB0byBmYWlsIHRvIHBhcnNlLCBidXQgdGhl
CisgICAgICAgIGVycm9yIGlzIG1vcmUgYWNjdXJhdGUgbm93LgorCisgICAgICAgICogY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpjb250ZW50RXh0ZW5zaW9uRXJyb3JDYXRlZ29yeSk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmg6CisgICAgICAg
ICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0U3RyaW5nTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0RG9tYWluTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0VHlwZUZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpsb2FkVHJpZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6bG9hZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6bG9hZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OmxvYWRFbmNvZGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6
OnBhcnNlUnVsZUxpc3QpOgorCiAyMDIxLTEwLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFdURjo6VmFyaWFudCBhbmQgV1RG
OjpnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25FcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwCmluZGV4IDc3OTE1Mjg0ZTRkNzg0ZWE1ZWU1MTU1OTQ4
NTZjNjIwOGU5ZDdjOGMuLjI3Y2ZiZDViYmMxYTFiNjU5YTk2ZjcxN2ZlNTBmY2MxY2M2YTZhMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25FcnJvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkVycm9yLmNwcApAQCAtNDksOCArNDksNiBAQCBjb25zdCBzdGQ6OmVycm9y
X2NhdGVnb3J5JiBjb250ZW50RXh0ZW5zaW9uRXJyb3JDYXRlZ29yeSgpCiAgICAgICAgICAgICBz
d2l0Y2ggKHN0YXRpY19jYXN0PENvbnRlbnRFeHRlbnNpb25FcnJvcj4oZXJyb3JDb2RlKSkgewog
ICAgICAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkOgogICAg
ICAgICAgICAgICAgIHJldHVybiAiRmFpbGVkIHRvIHBhcnNlIHRoZSBKU09OIFN0cmluZy4iOwot
ICAgICAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05Ub3BMZXZlbFN0cnVj
dHVyZU5vdEFuT2JqZWN0OgotICAgICAgICAgICAgICAgIHJldHVybiAiSW52YWxpZCBpbnB1dCwg
dGhlIHRvcCBsZXZlbCBzdHJ1Y3R1cmUgaXMgbm90IGFuIG9iamVjdC4iOwogICAgICAgICAgICAg
Y2FzZSBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05Ub3BMZXZlbFN0cnVjdHVyZU5vdEFuQXJy
YXk6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJJbnZhbGlkIGlucHV0LCB0aGUgdG9wIGxldmVs
IHN0cnVjdHVyZSBpcyBub3QgYW4gYXJyYXkuIjsKICAgICAgICAgICAgIGNhc2UgQ29udGVudEV4
dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZE9iamVjdEluVG9wTGV2ZWxBcnJheToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJv
ci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVy
cm9yLmgKaW5kZXggMTA5Y2Q1Yzk3Nzg4NmFlYjgxYWE0NzM0YzExMjVhODBjNmQzMWRiNy4uMTRh
N2IxNDc5YWMwZjA5ZmQ5MDUwNTYzMGE4MzcxN2UwNDlmMGQ1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmgK
QEAgLTM3LDcgKzM3LDYgQEAgZW51bSBjbGFzcyBDb250ZW50RXh0ZW5zaW9uRXJyb3IgewogICAg
IEpTT05JbnZhbGlkID0gMSwKICAgICAKICAgICAvLyBKU09OIHNlbWFudGljcyBlcnJvcgotICAg
IEpTT05Ub3BMZXZlbFN0cnVjdHVyZU5vdEFuT2JqZWN0LAogICAgIEpTT05Ub3BMZXZlbFN0cnVj
dHVyZU5vdEFuQXJyYXksCiAgICAgSlNPTkludmFsaWRPYmplY3RJblRvcExldmVsQXJyYXksCiAg
ICAgSlNPTkludmFsaWRSdWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCBlZjUyY2JiZThl
ZDU1ZWVkMmM5ODcxNjg0OWYxZDE0MTczN2E4OGYwLi5jNjM0NThmNmVkNzEyYTM3ZmE5MTlmOWM4
N2Y4OWRlZWZiZTZiM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMzQsMTYgKzM0LDEx
IEBACiAjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKICNpbmNsdWRlICJDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uc0RlYnVnZ2lu
Zy5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTT05PYmplY3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTS5oPgogI2luY2x1ZGUg
PHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewotdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKICAgICAKQEAgLTU2
LDM0ICs1MSwyMSBAQCBzdGF0aWMgYm9vbCBjb250YWluc09ubHlBU0NJSVdpdGhOb1VwcGVyY2Fz
ZShjb25zdCBTdHJpbmcmIGRvbWFpbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLXN0YXRp
YyBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgc3RkOjplcnJvcl9jb2RlPiBnZXRTdHJpbmdMaXN0
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU09iamVjdCogYXJy
YXlPYmplY3QpCitzdGF0aWMgRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIHN0ZDo6ZXJyb3JfY29k
ZT4gZ2V0U3RyaW5nTGlzdChjb25zdCBKU09OOjpBcnJheSYgYXJyYXkpCiB7Ci0gICAgc3RhdGlj
IGNvbnN0IENvbnRlbnRFeHRlbnNpb25FcnJvciBlcnJvciA9IENvbnRlbnRFeHRlbnNpb25FcnJv
cjo6SlNPTkludmFsaWRDb25kaXRpb25MaXN0OwotICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxP
YmplY3Qudm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0K
LSAgICBpZiAoIWFycmF5T2JqZWN0IHx8ICFpc0pTQXJyYXkoYXJyYXlPYmplY3QpKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3IpOwotICAgIGNvbnN0IEpTQXJyYXkqIGFycmF5
ID0ganNDYXN0PGNvbnN0IEpTQXJyYXkqPihhcnJheU9iamVjdCk7Ci0gICAgCiAgICAgVmVjdG9y
PFN0cmluZz4gc3RyaW5nczsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGNv
bnN0IEpTVmFsdWUgdmFsdWUgPSBhcnJheS0+Z2V0SW5kZXgoJmxleGljYWxHbG9iYWxPYmplY3Qs
IGkpOwotICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkgfHwgIXZhbHVlLmlzU3RyaW5nKCkp
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3IpOwotICAgICAgICAKLSAg
ICAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcgPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICBmb3IgKGF1dG8mIHZhbHVlIDogYXJyYXkpIHsKKyAgICAg
ICAgU3RyaW5nIHN0cmluZyA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICBpZiAoc3RyaW5n
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvcik7Cisg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpK
U09OSW52YWxpZENvbmRpdGlvbkxpc3QpOwogICAgICAgICBzdHJpbmdzLmFwcGVuZChzdHJpbmcp
OwogICAgIH0KICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotc3RhdGljIEV4cGVjdGVkPFZlY3Rv
cjxTdHJpbmc+LCBzdGQ6OmVycm9yX2NvZGU+IGdldERvbWFpbkxpc3QoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTT2JqZWN0KiBhcnJheU9iamVjdCkKK3N0YXRp
YyBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgc3RkOjplcnJvcl9jb2RlPiBnZXREb21haW5MaXN0
KGNvbnN0IEpTT046OkFycmF5JiBhcnJheU9iamVjdCkKIHsKLSAgICBhdXRvIHN0cmluZ3MgPSBn
ZXRTdHJpbmdMaXN0KGxleGljYWxHbG9iYWxPYmplY3QsIGFycmF5T2JqZWN0KTsKKyAgICBhdXRv
IHN0cmluZ3MgPSBnZXRTdHJpbmdMaXN0KGFycmF5T2JqZWN0KTsKICAgICBpZiAoIXN0cmluZ3Mu
aGFzX3ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBzdHJpbmdzOwogICAgIGZvciAoYXV0byYgZG9t
YWluIDogc3RyaW5ncy52YWx1ZSgpKSB7CkBAIC05NSwyOCArNzcsMTAgQEAgc3RhdGljIEV4cGVj
dGVkPFZlY3RvcjxTdHJpbmc+LCBzdGQ6OmVycm9yX2NvZGU+IGdldERvbWFpbkxpc3QoSlNHbG9i
YWxPYmplY3QmIGwKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0YXRpYyBzdGQ6OmVycm9y
X2NvZGUgZ2V0VHlwZUZsYWdzKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
b25zdCBKU1ZhbHVlJiB0eXBlVmFsdWUsIFJlc291cmNlRmxhZ3MmIGZsYWdzLCBzdGQ6Om9wdGlv
bmFsPE9wdGlvblNldDxUPj4gKCpzdHJpbmdUb1R5cGUpKFN0cmluZ1ZpZXcpKQorc3RhdGljIHN0
ZDo6ZXJyb3JfY29kZSBnZXRUeXBlRmxhZ3MoY29uc3QgSlNPTjo6QXJyYXkmIGFycmF5LCBSZXNv
dXJjZUZsYWdzJiBmbGFncywgc3RkOjpvcHRpb25hbDxPcHRpb25TZXQ8VD4+ICgqc3RyaW5nVG9U
eXBlKShTdHJpbmdWaWV3KSkKIHsKLSAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZt
KCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgaWYg
KCF0eXBlVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGNvbnN0
IEpTT2JqZWN0KiBvYmplY3QgPSB0eXBlVmFsdWUudG9PYmplY3QoJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgaWYgKCFpc0pTQXJyYXko
b2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFs
aWRUcmlnZ2VyRmxhZ3NBcnJheTsKLQotICAgIGNvbnN0IEpTQXJyYXkqIGFycmF5ID0ganNDYXN0
PGNvbnN0IEpTQXJyYXkqPihvYmplY3QpOwotICAgIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFy
cmF5LT5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgY29uc3QgSlNWYWx1ZSB2YWx1ZSA9IGFycmF5LT5nZXRJbmRleCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgaSk7Ci0gICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSB8fCAhdmFs
dWUpCi0gICAgICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxp
ZE9iamVjdEluVHJpZ2dlckZsYWdzQXJyYXk7Ci0gICAgICAgIAotICAgICAgICBTdHJpbmcgbmFt
ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBmb3IgKGF1
dG8mIHZhbHVlIDogYXJyYXkpIHsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSB2YWx1ZS0+YXNTdHJp
bmcoKTsKICAgICAgICAgYXV0byB0eXBlID0gc3RyaW5nVG9UeXBlKFN0cmluZ1ZpZXcobmFtZSkp
OwogICAgICAgICBpZiAoIXR5cGUpCiAgICAgICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lv
bkVycm9yOjpKU09OSW52YWxpZFN0cmluZ0luVHJpZ2dlckZsYWdzQXJyYXk7CkBAIC0xMjcsMTEy
ICs5MSw3OSBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGdldFR5cGVGbGFncyhKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSgogICAgIHJldHVybiB7IH07CiB9CiAg
ICAgCi1zdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBsb2FkVHJpZ2dl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSlNPYmplY3QmIHJ1
bGVPYmplY3QpCitzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBsb2Fk
VHJpZ2dlcihjb25zdCBKU09OOjpPYmplY3QmIHJ1bGVPYmplY3QpCiB7Ci0gICAgVk0mIHZtID0g
bGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKLQotICAgIGNvbnN0IEpTVmFsdWUgdHJpZ2dlck9iamVjdCA9IHJ1bGVPYmpl
Y3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dHJpZ2dlciIpKTsKLSAgICBpZiAoIXRyaWdnZXJPYmplY3QgfHwgc2NvcGUuZXhjZXB0aW9uKCkg
fHwgIXRyaWdnZXJPYmplY3QuaXNPYmplY3QoKSkKKyAgICBhdXRvIHRyaWdnZXJPYmplY3QgPSBy
dWxlT2JqZWN0LmdldE9iamVjdCgidHJpZ2dlciIpOworICAgIGlmICghdHJpZ2dlck9iamVjdCkK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNP
TkludmFsaWRUcmlnZ2VyKTsKLSAgICAKLSAgICBjb25zdCBKU1ZhbHVlIHVybEZpbHRlck9iamVj
dCA9IHRyaWdnZXJPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidXJsLWZpbHRlciIpKTsKLSAgICBpZiAoIXVybEZpbHRlck9iamVjdCB8
fCBzY29wZS5leGNlcHRpb24oKSB8fCAhdXJsRmlsdGVyT2JqZWN0LmlzU3RyaW5nKCkpCi0gICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZh
bGlkVVJMRmlsdGVySW5UcmlnZ2VyKTsKIAotICAgIFN0cmluZyB1cmxGaWx0ZXIgPSBhc1N0cmlu
Zyh1cmxGaWx0ZXJPYmplY3QpLT52YWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgU3Ry
aW5nIHVybEZpbHRlciA9IHRyaWdnZXJPYmplY3QtPmdldFN0cmluZygidXJsLWZpbHRlciIpOwog
ICAgIGlmICh1cmxGaWx0ZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZFVSTEZpbHRlckluVHJpZ2dlcik7
CiAKICAgICBUcmlnZ2VyIHRyaWdnZXI7CiAgICAgdHJpZ2dlci51cmxGaWx0ZXIgPSB1cmxGaWx0
ZXI7CiAKLSAgICBjb25zdCBKU1ZhbHVlIHVybEZpbHRlckNhc2VWYWx1ZSA9IHRyaWdnZXJPYmpl
Y3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
dXJsLWZpbHRlci1pcy1jYXNlLXNlbnNpdGl2ZSIpKTsKLSAgICBpZiAodXJsRmlsdGVyQ2FzZVZh
bHVlICYmICFzY29wZS5leGNlcHRpb24oKSAmJiB1cmxGaWx0ZXJDYXNlVmFsdWUuaXNCb29sZWFu
KCkpCi0gICAgICAgIHRyaWdnZXIudXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlID0gdXJsRmlsdGVy
Q2FzZVZhbHVlLnRvQm9vbGVhbigmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0KLSAgICBjb25zdCBK
U1ZhbHVlIHRvcFVSTEZpbHRlckNhc2VWYWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidG9wLXVybC1maWx0ZXIt
aXMtY2FzZS1zZW5zaXRpdmUiKSk7Ci0gICAgaWYgKHRvcFVSTEZpbHRlckNhc2VWYWx1ZSAmJiAh
c2NvcGUuZXhjZXB0aW9uKCkgJiYgdG9wVVJMRmlsdGVyQ2FzZVZhbHVlLmlzQm9vbGVhbigpKQot
ICAgICAgICB0cmlnZ2VyLnRvcFVSTENvbmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSA9IHRvcFVSTEZp
bHRlckNhc2VWYWx1ZS50b0Jvb2xlYW4oJmxleGljYWxHbG9iYWxPYmplY3QpOwotCi0gICAgY29u
c3QgSlNWYWx1ZSByZXNvdXJjZVR5cGVWYWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicmVzb3VyY2UtdHlwZSIp
KTsKLSAgICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpICYmIHJlc291cmNlVHlwZVZhbHVlLmlzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgYXV0byB0eXBlRmxhZ3NFcnJvciA9IGdldFR5cGVGbGFncyhsZXhp
Y2FsR2xvYmFsT2JqZWN0LCByZXNvdXJjZVR5cGVWYWx1ZSwgdHJpZ2dlci5mbGFncywgcmVhZFJl
c291cmNlVHlwZSk7Ci0gICAgICAgIGlmICh0eXBlRmxhZ3NFcnJvcikKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCh0eXBlRmxhZ3NFcnJvcik7Ci0gICAgfSBlbHNlIGlmICghcmVz
b3VyY2VUeXBlVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRUcmlnZ2VyRmxhZ3NBcnJheSk7
Ci0KLSAgICBjb25zdCBKU1ZhbHVlIGxvYWRUeXBlVmFsdWUgPSB0cmlnZ2VyT2JqZWN0LmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImxvYWQtdHlw
ZSIpKTsKLSAgICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpICYmIGxvYWRUeXBlVmFsdWUuaXNPYmpl
Y3QoKSkgewotICAgICAgICBhdXRvIHR5cGVGbGFnc0Vycm9yID0gZ2V0VHlwZUZsYWdzKGxleGlj
YWxHbG9iYWxPYmplY3QsIGxvYWRUeXBlVmFsdWUsIHRyaWdnZXIuZmxhZ3MsIHJlYWRMb2FkVHlw
ZSk7Ci0gICAgICAgIGlmICh0eXBlRmxhZ3NFcnJvcikKLSAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCh0eXBlRmxhZ3NFcnJvcik7Ci0gICAgfSBlbHNlIGlmICghbG9hZFR5cGVWYWx1
ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4
dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZFRyaWdnZXJGbGFnc0FycmF5KTsKLQotICAgIGNvbnN0
IEpTVmFsdWUgbG9hZENvbnRleHRWYWx1ZSA9IHRyaWdnZXJPYmplY3QuZ2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibG9hZC1jb250ZXh0IikpOwot
ICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkgJiYgbG9hZENvbnRleHRWYWx1ZS5pc09iamVjdCgp
KSB7Ci0gICAgICAgIGF1dG8gdHlwZUZsYWdzRXJyb3IgPSBnZXRUeXBlRmxhZ3MobGV4aWNhbEds
b2JhbE9iamVjdCwgbG9hZENvbnRleHRWYWx1ZSwgdHJpZ2dlci5mbGFncywgcmVhZExvYWRDb250
ZXh0KTsKLSAgICAgICAgaWYgKHR5cGVGbGFnc0Vycm9yKQotICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKHR5cGVGbGFnc0Vycm9yKTsKLSAgICB9IGVsc2UgaWYgKCFsb2FkQ29udGV4
dFZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250
ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkVHJpZ2dlckZsYWdzQXJyYXkpOwotCi0gICAg
Y29uc3QgSlNWYWx1ZSBpZkRvbWFpblZhbHVlID0gdHJpZ2dlck9iamVjdC5nZXQoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJpZi1kb21haW4iKSk7Ci0g
ICAgaWYgKCFzY29wZS5leGNlcHRpb24oKSAmJiBpZkRvbWFpblZhbHVlLmlzT2JqZWN0KCkpIHsK
LSAgICAgICAgYXV0byBpZkRvbWFpbiA9IGdldERvbWFpbkxpc3QobGV4aWNhbEdsb2JhbE9iamVj
dCwgYXNPYmplY3QoaWZEb21haW5WYWx1ZSkpOwotICAgICAgICBpZiAoIWlmRG9tYWluLmhhc192
YWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGlmRG9tYWluLmVycm9y
KCkpOwotICAgICAgICB0cmlnZ2VyLmNvbmRpdGlvbnMgPSBXVEZNb3ZlKGlmRG9tYWluLnZhbHVl
KCkpOwotICAgICAgICBpZiAodHJpZ2dlci5jb25kaXRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZh
bGlkQ29uZGl0aW9uTGlzdCk7Ci0gICAgICAgIEFTU0VSVCh0cmlnZ2VyLmNvbmRpdGlvblR5cGUg
PT0gVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6Tm9uZSk7Ci0gICAgICAgIHRyaWdnZXIuY29uZGl0
aW9uVHlwZSA9IFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6OklmRG9tYWluOwotICAgIH0gZWxzZSBp
ZiAoIWlmRG9tYWluVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDb25kaXRpb25MaXN0KTsK
LQotICAgIGNvbnN0IEpTVmFsdWUgdW5sZXNzRG9tYWluVmFsdWUgPSB0cmlnZ2VyT2JqZWN0Lmdl
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVubGVz
cy1kb21haW4iKSk7Ci0gICAgaWYgKCFzY29wZS5leGNlcHRpb24oKSAmJiB1bmxlc3NEb21haW5W
YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvblR5cGUgIT0g
VHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6Tm9uZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05NdWx0aXBsZUNvbmRpdGlvbnMpOwot
ICAgICAgICBhdXRvIHVubGVzc0RvbWFpbiA9IGdldERvbWFpbkxpc3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgYXNPYmplY3QodW5sZXNzRG9tYWluVmFsdWUpKTsKLSAgICAgICAgaWYgKCF1bmxlc3NE
b21haW4uaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQodW5s
ZXNzRG9tYWluLmVycm9yKCkpOwotICAgICAgICB0cmlnZ2VyLmNvbmRpdGlvbnMgPSBXVEZNb3Zl
KHVubGVzc0RvbWFpbi52YWx1ZSgpKTsKLSAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9ucy5p
c0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVu
c2lvbkVycm9yOjpKU09OSW52YWxpZENvbmRpdGlvbkxpc3QpOwotICAgICAgICB0cmlnZ2VyLmNv
bmRpdGlvblR5cGUgPSBUcmlnZ2VyOjpDb25kaXRpb25UeXBlOjpVbmxlc3NEb21haW47Ci0gICAg
fSBlbHNlIGlmICghdW5sZXNzRG9tYWluVmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDb25k
aXRpb25MaXN0KTsKLQotICAgIGNvbnN0IEpTVmFsdWUgaWZUb3BVUkxWYWx1ZSA9IHRyaWdnZXJP
YmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiaWYtdG9wLXVybCIpKTsKLSAgICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpICYmIGlmVG9wVVJM
VmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICBpZiAodHJpZ2dlci5jb25kaXRpb25UeXBlICE9
IFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Ok5vbmUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25zKTsK
LSAgICAgICAgYXV0byBpZlRvcFVSTCA9IGdldFN0cmluZ0xpc3QobGV4aWNhbEdsb2JhbE9iamVj
dCwgYXNPYmplY3QoaWZUb3BVUkxWYWx1ZSkpOwotICAgICAgICBpZiAoIWlmVG9wVVJMLmhhc192
YWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGlmVG9wVVJMLmVycm9y
KCkpOwotICAgICAgICB0cmlnZ2VyLmNvbmRpdGlvbnMgPSBXVEZNb3ZlKGlmVG9wVVJMLnZhbHVl
KCkpOwotICAgICAgICBpZiAodHJpZ2dlci5jb25kaXRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZh
bGlkQ29uZGl0aW9uTGlzdCk7Ci0gICAgICAgIHRyaWdnZXIuY29uZGl0aW9uVHlwZSA9IFRyaWdn
ZXI6OkNvbmRpdGlvblR5cGU6OklmVG9wVVJMOwotICAgIH0gZWxzZSBpZiAoIWlmVG9wVVJMVmFs
dWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRF
eHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDb25kaXRpb25MaXN0KTsKLQotICAgIGNvbnN0IEpT
VmFsdWUgdW5sZXNzVG9wVVJMVmFsdWUgPSB0cmlnZ2VyT2JqZWN0LmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVubGVzcy10b3AtdXJsIikpOwot
ICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkgJiYgdW5sZXNzVG9wVVJMVmFsdWUuaXNPYmplY3Qo
KSkgewotICAgICAgICBpZiAodHJpZ2dlci5jb25kaXRpb25UeXBlICE9IFRyaWdnZXI6OkNvbmRp
dGlvblR5cGU6Ok5vbmUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVu
dEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25zKTsKLSAgICAgICAgYXV0byB1
bmxlc3NUb3BVUkwgPSBnZXRTdHJpbmdMaXN0KGxleGljYWxHbG9iYWxPYmplY3QsIGFzT2JqZWN0
KHVubGVzc1RvcFVSTFZhbHVlKSk7Ci0gICAgICAgIGlmICghdW5sZXNzVG9wVVJMLmhhc192YWx1
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHVubGVzc1RvcFVSTC5lcnJv
cigpKTsKLSAgICAgICAgdHJpZ2dlci5jb25kaXRpb25zID0gV1RGTW92ZSh1bmxlc3NUb3BVUkwu
dmFsdWUoKSk7Ci0gICAgICAgIGlmICh0cmlnZ2VyLmNvbmRpdGlvbnMuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNP
TkludmFsaWRDb25kaXRpb25MaXN0KTsKLSAgICAgICAgdHJpZ2dlci5jb25kaXRpb25UeXBlID0g
VHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6VW5sZXNzVG9wVVJMOwotICAgIH0gZWxzZSBpZiAoIXVu
bGVzc1RvcFVSTFZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkQ29uZGl0aW9uTGlzdCk7Cisg
ICAgaWYgKHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdXJsRmlsdGVyQ2FzZVNlbnNpdGl2ZVZhbHVlID0g
dHJpZ2dlck9iamVjdC0+Z2V0Qm9vbGVhbigidXJsLWZpbHRlci1pcy1jYXNlLXNlbnNpdGl2ZSIp
KQorICAgICAgICB0cmlnZ2VyLnVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9ICp1cmxGaWx0ZXJD
YXNlU2Vuc2l0aXZlVmFsdWU7CisKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxib29sPiB0b3BVUkxG
aWx0ZXJDYXNlU2Vuc2l0aXZlVmFsdWUgPSB0cmlnZ2VyT2JqZWN0LT5nZXRCb29sZWFuKCJ0b3At
dXJsLWZpbHRlci1pcy1jYXNlLXNlbnNpdGl2ZSIpKQorICAgICAgICB0cmlnZ2VyLnRvcFVSTENv
bmRpdGlvbklzQ2FzZVNlbnNpdGl2ZSA9ICp0b3BVUkxGaWx0ZXJDYXNlU2Vuc2l0aXZlVmFsdWU7
CisKKyAgICBpZiAoYXV0byByZXNvdXJjZVR5cGVWYWx1ZSA9IHRyaWdnZXJPYmplY3QtPmdldFZh
bHVlKCJyZXNvdXJjZS10eXBlIikpIHsKKyAgICAgICAgYXV0byByZXNvdXJjZVR5cGVBcnJheSA9
IHJlc291cmNlVHlwZVZhbHVlLT5hc0FycmF5KCk7CisgICAgICAgIGlmICghcmVzb3VyY2VUeXBl
QXJyYXkpCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lv
bkVycm9yOjpKU09OSW52YWxpZFRyaWdnZXJGbGFnc0FycmF5KTsKKyAgICAgICAgaWYgKGF1dG8g
ZXJyb3IgPSBnZXRUeXBlRmxhZ3MoKnJlc291cmNlVHlwZUFycmF5LCB0cmlnZ2VyLmZsYWdzLCBy
ZWFkUmVzb3VyY2VUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJv
cik7CisgICAgfQorCisgICAgaWYgKGF1dG8gbG9hZFR5cGVWYWx1ZSA9IHRyaWdnZXJPYmplY3Qt
PmdldFZhbHVlKCJsb2FkLXR5cGUiKSkgeworICAgICAgICBhdXRvIGxvYWRUeXBlQXJyYXkgPSBs
b2FkVHlwZVZhbHVlLT5hc0FycmF5KCk7CisgICAgICAgIGlmICghbG9hZFR5cGVBcnJheSkKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpT
T05JbnZhbGlkVHJpZ2dlckZsYWdzQXJyYXkpOworICAgICAgICBpZiAoYXV0byBlcnJvciA9IGdl
dFR5cGVGbGFncygqbG9hZFR5cGVBcnJheSwgdHJpZ2dlci5mbGFncywgcmVhZExvYWRUeXBlKSkK
KyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvcik7CisgICAgfQorCisgICAg
aWYgKGF1dG8gbG9hZENvbnRleHRWYWx1ZSA9IHRyaWdnZXJPYmplY3QtPmdldFZhbHVlKCJsb2Fk
LWNvbnRleHQiKSkgeworICAgICAgICBhdXRvIGxvYWRDb250ZXh0QXJyYXkgPSBsb2FkQ29udGV4
dFZhbHVlLT5hc0FycmF5KCk7CisgICAgICAgIGlmICghbG9hZENvbnRleHRBcnJheSkKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05J
bnZhbGlkVHJpZ2dlckZsYWdzQXJyYXkpOworICAgICAgICBpZiAoYXV0byBlcnJvciA9IGdldFR5
cGVGbGFncygqbG9hZENvbnRleHRBcnJheSwgdHJpZ2dlci5mbGFncywgcmVhZExvYWRDb250ZXh0
KSkKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvcik7CisgICAgfQorCisg
ICAgYXV0byBjaGVja0NvbmRpdGlvbiA9IFsmXSAoQVNDSUlMaXRlcmFsIGtleSwgRXhwZWN0ZWQ8
VmVjdG9yPFN0cmluZz4sIHN0ZDo6ZXJyb3JfY29kZT4gKCpsaXN0UmVhZGVyKShjb25zdCBKU09O
OjpBcnJheSYpLCBUcmlnZ2VyOjpDb25kaXRpb25UeXBlIGNvbmRpdGlvblR5cGUpIC0+IHN0ZDo6
ZXJyb3JfY29kZSB7CisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gdHJpZ2dlck9iamVjdC0+Z2V0
VmFsdWUoa2V5KSkgeworICAgICAgICAgICAgaWYgKHRyaWdnZXIuY29uZGl0aW9uVHlwZSAhPSBU
cmlnZ2VyOjpDb25kaXRpb25UeXBlOjpOb25lKQorICAgICAgICAgICAgICAgIHJldHVybiBDb250
ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05NdWx0aXBsZUNvbmRpdGlvbnM7CisgICAgICAgICAgICBh
dXRvIGFycmF5ID0gdmFsdWUtPmFzQXJyYXkoKTsKKyAgICAgICAgICAgIGlmICghYXJyYXkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRD
b25kaXRpb25MaXN0OworICAgICAgICAgICAgYXV0byBsaXN0ID0gbGlzdFJlYWRlcigqYXJyYXkp
OworICAgICAgICAgICAgaWYgKCFsaXN0Lmhhc192YWx1ZSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBsaXN0LmVycm9yKCk7CisgICAgICAgICAgICB0cmlnZ2VyLmNvbmRpdGlvbnMgPSBXVEZN
b3ZlKGxpc3QudmFsdWUoKSk7CisgICAgICAgICAgICBpZiAodHJpZ2dlci5jb25kaXRpb25zLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpK
U09OSW52YWxpZENvbmRpdGlvbkxpc3Q7CisgICAgICAgICAgICBBU1NFUlQodHJpZ2dlci5jb25k
aXRpb25UeXBlID09IFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6Ok5vbmUpOworICAgICAgICAgICAg
dHJpZ2dlci5jb25kaXRpb25UeXBlID0gY29uZGl0aW9uVHlwZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4geyB9OworICAgIH07CisKKyAgICBpZiAoYXV0byBlcnJvciA9IGNoZWNrQ29uZGl0
aW9uKCJpZi1kb21haW4iX3MsIGdldERvbWFpbkxpc3QsIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6
OklmRG9tYWluKSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKKworICAg
IGlmIChhdXRvIGVycm9yID0gY2hlY2tDb25kaXRpb24oInVubGVzcy1kb21haW4iX3MsIGdldERv
bWFpbkxpc3QsIFRyaWdnZXI6OkNvbmRpdGlvblR5cGU6OlVubGVzc0RvbWFpbikpCisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvcik7CisKKyAgICBpZiAoYXV0byBlcnJvciA9IGNo
ZWNrQ29uZGl0aW9uKCJpZi10b3AtdXJsIl9zLCBnZXRTdHJpbmdMaXN0LCBUcmlnZ2VyOjpDb25k
aXRpb25UeXBlOjpJZlRvcFVSTCkpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJv
cik7CisKKyAgICBpZiAoYXV0byBlcnJvciA9IGNoZWNrQ29uZGl0aW9uKCJ1bmxlc3MtdG9wLXVy
bCJfcywgZ2V0U3RyaW5nTGlzdCwgVHJpZ2dlcjo6Q29uZGl0aW9uVHlwZTo6VW5sZXNzVG9wVVJM
KSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKIAogICAgIHJldHVybiB0
cmlnZ2VyOwogfQpAQCAtMjQ3LDIwICsxNzgsMTMgQEAgYm9vbCBpc1ZhbGlkQ1NTU2VsZWN0b3Io
Y29uc3QgU3RyaW5nJiBzZWxlY3RvcikKICAgICByZXR1cm4gISFwYXJzZXIucGFyc2VTZWxlY3Rv
cihzZWxlY3Rvcik7CiB9CiAKLXN0YXRpYyBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPEFjdGlvbj4s
IHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEFjdGlvbihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgY29uc3QgSlNPYmplY3QmIHJ1bGVPYmplY3QpCitzdGF0aWMgRXhwZWN0ZWQ8c3Rk
OjpvcHRpb25hbDxBY3Rpb24+LCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRBY3Rpb24oY29uc3QgSlNP
Tjo6T2JqZWN0JiBydWxlT2JqZWN0KQogewotICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAg
ICBjb25zdCBKU1ZhbHVlIGFjdGlvbk9iamVjdCA9IHJ1bGVPYmplY3QuZ2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYWN0aW9uIikpOwotICAgIGlm
IChzY29wZS5leGNlcHRpb24oKSB8fCAhYWN0aW9uT2JqZWN0LmlzT2JqZWN0KCkpCisgICAgYXV0
byBhY3Rpb25PYmplY3QgPSBydWxlT2JqZWN0LmdldE9iamVjdCgiYWN0aW9uIik7CisgICAgaWYg
KCFhY3Rpb25PYmplY3QpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0
ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkQWN0aW9uKTsKIAotICAgIGNvbnN0IEpTVmFsdWUgdHlw
ZU9iamVjdCA9IGFjdGlvbk9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIikpOwotICAgIGlmIChzY29wZS5leGNlcHRpb24oKSB8
fCAhdHlwZU9iamVjdC5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZEFjdGlvblR5cGUpOwotCi0gICAgU3Ry
aW5nIGFjdGlvblR5cGUgPSBhc1N0cmluZyh0eXBlT2JqZWN0KS0+dmFsdWUoJmxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIFN0cmluZyBhY3Rpb25UeXBlID0gYWN0aW9uT2JqZWN0LT5nZXRTdHJp
bmcoInR5cGUiKTsKIAogICAgIGlmIChhY3Rpb25UeXBlID09ICJibG9jayIpCiAgICAgICAgIHJl
dHVybiB7IEFjdGlvbihBY3Rpb25UeXBlOjpCbG9ja0xvYWQpIH07CkBAIC0yNjksMzUgKzE5Mywz
MyBAQCBzdGF0aWMgRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxBY3Rpb24+LCBzdGQ6OmVycm9yX2Nv
ZGU+IGxvYWRBY3Rpb24oSlNHbG9iYWxPYmplYwogICAgIGlmIChhY3Rpb25UeXBlID09ICJibG9j
ay1jb29raWVzIikKICAgICAgICAgcmV0dXJuIHsgQWN0aW9uKEFjdGlvblR5cGU6OkJsb2NrQ29v
a2llcykgfTsKICAgICBpZiAoYWN0aW9uVHlwZSA9PSAiY3NzLWRpc3BsYXktbm9uZSIpIHsKLSAg
ICAgICAgSlNWYWx1ZSBzZWxlY3RvciA9IGFjdGlvbk9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzZWxlY3RvciIpKTsKLSAgICAgICAg
aWYgKHNjb3BlLmV4Y2VwdGlvbigpIHx8ICFzZWxlY3Rvci5pc1N0cmluZygpKQorICAgICAgICBT
dHJpbmcgc2VsZWN0b3JTdHJpbmcgPSBhY3Rpb25PYmplY3QtPmdldFN0cmluZygic2VsZWN0b3Ii
KTsKKyAgICAgICAgaWYgKCFzZWxlY3RvclN0cmluZykKICAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkQ1NTRGlzcGxheU5v
bmVBY3Rpb25UeXBlKTsKLQotICAgICAgICBTdHJpbmcgc2VsZWN0b3JTdHJpbmcgPSBhc1N0cmlu
ZyhzZWxlY3RvciktPnZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgaWYgKCFp
c1ZhbGlkQ1NTU2VsZWN0b3Ioc2VsZWN0b3JTdHJpbmcpKSB7CiAgICAgICAgICAgICAvLyBTa2lw
IHJ1bGVzIHdpdGggaW52YWxpZCBzZWxlY3RvcnMgdG8gYmUgYmFja3dhcmRzLWNvbXBhdGlibGUu
CiAgICAgICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQgfTsKICAgICAgICAgfQotICAgICAg
ICByZXR1cm4geyBBY3Rpb24oQWN0aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rvciwgc2Vs
ZWN0b3JTdHJpbmcpIH07CisgICAgICAgIHJldHVybiB7IEFjdGlvbihBY3Rpb25UeXBlOjpDU1NE
aXNwbGF5Tm9uZVNlbGVjdG9yLCBXVEZNb3ZlKHNlbGVjdG9yU3RyaW5nKSkgfTsKICAgICB9CiAg
ICAgaWYgKGFjdGlvblR5cGUgPT0gIm1ha2UtaHR0cHMiKQogICAgICAgICByZXR1cm4geyBBY3Rp
b24oQWN0aW9uVHlwZTo6TWFrZUhUVFBTKSB9OwogICAgIGlmIChhY3Rpb25UeXBlID09ICJub3Rp
ZnkiKSB7Ci0gICAgICAgIEpTVmFsdWUgbm90aWZpY2F0aW9uID0gYWN0aW9uT2JqZWN0LmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5vdGlmaWNh
dGlvbiIpKTsKLSAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpIHx8ICFub3RpZmljYXRpb24u
aXNTdHJpbmcoKSkKKyAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbiA9IGFjdGlvbk9iamVjdC0+
Z2V0U3RyaW5nKCJub3RpZmljYXRpb24iKTsKKyAgICAgICAgaWYgKCFub3RpZmljYXRpb24pCiAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpK
U09OSW52YWxpZE5vdGlmaWNhdGlvbik7Ci0gICAgICAgIHJldHVybiB7IEFjdGlvbihBY3Rpb25U
eXBlOjpOb3RpZnksIGFzU3RyaW5nKG5vdGlmaWNhdGlvbiktPnZhbHVlKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSkgfTsKKyAgICAgICAgcmV0dXJuIHsgQWN0aW9uKEFjdGlvblR5cGU6Ok5vdGlmeSwg
V1RGTW92ZShub3RpZmljYXRpb24pKSB9OwogICAgIH0KICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZEFjdGlvblR5cGUpOwogfQogCi1z
dGF0aWMgRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxDb250ZW50RXh0ZW5zaW9uUnVsZT4sIHN0ZDo6
ZXJyb3JfY29kZT4gbG9hZFJ1bGUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IGNvbnN0IEpTT2JqZWN0JiBydWxlT2JqZWN0KQorc3RhdGljIEV4cGVjdGVkPHN0ZDo6b3B0aW9u
YWw8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRSdWxlKGNvbnN0
IEpTT046Ok9iamVjdCYgcnVsZU9iamVjdCkKIHsKLSAgICBhdXRvIHRyaWdnZXIgPSBsb2FkVHJp
Z2dlcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBydWxlT2JqZWN0KTsKKyAgICBhdXRvIHRyaWdnZXIg
PSBsb2FkVHJpZ2dlcihydWxlT2JqZWN0KTsKICAgICBpZiAoIXRyaWdnZXIuaGFzX3ZhbHVlKCkp
CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCh0cmlnZ2VyLmVycm9yKCkpOwogCi0gICAg
YXV0byBhY3Rpb24gPSBsb2FkQWN0aW9uKGxleGljYWxHbG9iYWxPYmplY3QsIHJ1bGVPYmplY3Qp
OworICAgIGF1dG8gYWN0aW9uID0gbG9hZEFjdGlvbihydWxlT2JqZWN0KTsKICAgICBpZiAoIWFj
dGlvbi5oYXNfdmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGFjdGlvbi5l
cnJvcigpKTsKIApAQCAtMzA3LDQ1ICsyMjksMjggQEAgc3RhdGljIEV4cGVjdGVkPHN0ZDo6b3B0
aW9uYWw8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRSdWxlKEoK
ICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQgfTsKIH0KIAotc3RhdGljIEV4cGVjdGVkPFZlY3Rv
cjxDb250ZW50RXh0ZW5zaW9uUnVsZT4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEVuY29kZWRSdWxl
cyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBydWxl
SlNPTikKK3N0YXRpYyBFeHBlY3RlZDxWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6
OmVycm9yX2NvZGU+IGxvYWRFbmNvZGVkUnVsZXMoY29uc3QgU3RyaW5nJiBydWxlSlNPTikKIHsK
LSAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7Ci0gICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgLy8gRklYTUU6IEpTT05QYXJzZSBzaG91
bGQgcmVxdWlyZSBjYWxsYmFja3MgaW5zdGVhZCBvZiBhbiBFeGVjU3RhdGUuCi0gICAgY29uc3Qg
SlNWYWx1ZSBkZWNvZGVkUnVsZXMgPSBKU09OUGFyc2UoJmxleGljYWxHbG9iYWxPYmplY3QsIHJ1
bGVKU09OKTsKKyAgICBhdXRvIGRlY29kZWRSdWxlcyA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04o
cnVsZUpTT04pOwogCi0gICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpIHx8ICFkZWNvZGVkUnVsZXMp
CisgICAgaWYgKCFkZWNvZGVkUnVsZXMpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChD
b250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkKTsKIAotICAgIGlmICghZGVjb2RlZFJ1
bGVzLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0
ZW5zaW9uRXJyb3I6OkpTT05Ub3BMZXZlbFN0cnVjdHVyZU5vdEFuT2JqZWN0KTsKLQotICAgIGNv
bnN0IEpTT2JqZWN0KiB0b3BMZXZlbE9iamVjdCA9IGRlY29kZWRSdWxlcy50b09iamVjdCgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKCF0b3BMZXZlbE9iamVjdCB8fCBzY29wZS5leGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRlbnRFeHRlbnNpb25F
cnJvcjo6SlNPTlRvcExldmVsU3RydWN0dXJlTm90QW5PYmplY3QpOwotICAgIAotICAgIGlmICgh
aXNKU0FycmF5KHRvcExldmVsT2JqZWN0KSkKKyAgICBhdXRvIHRvcExldmVsQXJyYXkgPSBkZWNv
ZGVkUnVsZXMtPmFzQXJyYXkoKTsKKyAgICBpZiAoIXRvcExldmVsQXJyYXkpCiAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05Ub3BMZXZlbFN0
cnVjdHVyZU5vdEFuQXJyYXkpOwogCi0gICAgY29uc3QgSlNBcnJheSogdG9wTGV2ZWxBcnJheSA9
IGpzQ2FzdDxjb25zdCBKU0FycmF5Kj4odG9wTGV2ZWxPYmplY3QpOwotCiAgICAgVmVjdG9yPENv
bnRlbnRFeHRlbnNpb25SdWxlPiBydWxlTGlzdDsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRv
cExldmVsQXJyYXktPmxlbmd0aCgpOwotICAgIGNvbnN0IHVuc2lnbmVkIG1heFJ1bGVDb3VudCA9
IDE1MDAwMDsKLSAgICBpZiAobGVuZ3RoID4gbWF4UnVsZUNvdW50KQorICAgIGNvbnN0ZXhwciBz
aXplX3QgbWF4UnVsZUNvdW50ID0gMTUwMDAwOworICAgIGlmICh0b3BMZXZlbEFycmF5LT5sZW5n
dGgoKSA+IG1heFJ1bGVDb3VudCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKENvbnRl
bnRFeHRlbnNpb25FcnJvcjo6SlNPTlRvb01hbnlSdWxlcyk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEpTVmFsdWUgdmFsdWUgPSB0
b3BMZXZlbEFycmF5LT5nZXRJbmRleCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgaSk7Ci0gICAgICAg
IGlmIChzY29wZS5leGNlcHRpb24oKSB8fCAhdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZE9iamVjdEluVG9w
TGV2ZWxBcnJheSk7Ci0KLSAgICAgICAgY29uc3QgSlNPYmplY3QqIHJ1bGVPYmplY3QgPSB2YWx1
ZS50b09iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGlmICghcnVsZU9iamVj
dCB8fCBzY29wZS5leGNlcHRpb24oKSkKKyAgICBmb3IgKGF1dG8mIHZhbHVlIDogKnRvcExldmVs
QXJyYXkpIHsKKyAgICAgICAgYXV0byBydWxlT2JqZWN0ID0gdmFsdWUtPmFzT2JqZWN0KCk7Cisg
ICAgICAgIGlmICghcnVsZU9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkUnVsZSk7CiAKLSAgICAgICAgYXV0
byBydWxlID0gbG9hZFJ1bGUobGV4aWNhbEdsb2JhbE9iamVjdCwgKnJ1bGVPYmplY3QpOworICAg
ICAgICBhdXRvIHJ1bGUgPSBsb2FkUnVsZSgqcnVsZU9iamVjdCk7CiAgICAgICAgIGlmICghcnVs
ZS5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChydWxlLmVy
cm9yKCkpOwogICAgICAgICBpZiAocnVsZS52YWx1ZSgpKQpAQCAtMzYwLDE1ICsyNjUsOCBAQCBF
eHBlY3RlZDxWZWN0b3I8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+IHBh
cnNlUnVsZUxpc3QoY29uc3QgU3RyaQogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5D
RV9SRVBPUlRJTkcKICAgICBNb25vdG9uaWNUaW1lIGxvYWRFeHRlbnNpb25TdGFydFRpbWUgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKICNlbmRpZgotICAgIFJlZlB0cjxWTT4gdm0gPSBWTTo6Y3Jl
YXRlKCk7Ci0KLSAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtLmdldCgpKTsKLSAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSgqdm0sIEpTR2xv
YmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnZtLCBqc051bGwoKSkpOwotCi0gICAgSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7Ci0gICAgYXV0byBy
dWxlTGlzdCA9IGxvYWRFbmNvZGVkUnVsZXMoKmxleGljYWxHbG9iYWxPYmplY3QsIHJ1bGVKU09O
KTsKIAotICAgIHZtID0gbnVsbHB0cjsKKyAgICBhdXRvIHJ1bGVMaXN0ID0gbG9hZEVuY29kZWRS
dWxlcyhydWxlSlNPTik7CiAKICAgICBpZiAoIXJ1bGVMaXN0Lmhhc192YWx1ZSgpKQogICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQocnVsZUxpc3QuZXJyb3IoKSk7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2MzYTFlZDcyNGYxMmM4Y2Iw
Y2I3Nzg1MDU5YjAxOWMwY2EyNTgxMS4uMDI1NDU4ZjcxMjIzMDk3ODNhZmI4NWE3OGU1Njc2MGQ1
YmU2YjAzOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEwLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIEpTT05WYWx1ZXMgaW5zdGVhZCBvZiBh
IEpTQzo6Vk0gdG8gcGFyc2UgV0tDb250ZW50UnVsZUxpc3RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE3MDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0Yp
OgorCiAyMDIxLTEwLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmVtb3ZlIFdURjo6VmFyaWFudCBhbmQgV1RGOjpnZXQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMu
Y3BwCmluZGV4IDE2Y2FkNTIxODQ3NjMyMTI2NWFlZTE4YWIwNDc4OTgxNGNhNDZlMzMuLjAxNDZj
ZTQzMDQxZmRiOGE5MWQyNGRlOTFmYWNjNGNjYmYwMTFiYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcApAQCAt
MTQ2Myw3ICsxNDYzLDcgQEAgVEVTVF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBNYXRjaGVzRXZl
cnl0aGluZykKIFRFU1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgSW52YWxpZEpTT04pCiB7CiAg
ICAgY2hlY2tDb21waWxlckVycm9yKCJbIiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRl
bnNpb25FcnJvcjo6SlNPTkludmFsaWQpOwotICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiMTIzIiwg
Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTlRvcExldmVsU3Ry
dWN0dXJlTm90QW5PYmplY3QpOworICAgIGNoZWNrQ29tcGlsZXJFcnJvcigiMTIzIiwgQ29udGVu
dEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTlRvcExldmVsU3RydWN0dXJl
Tm90QW5BcnJheSk7CiAgICAgY2hlY2tDb21waWxlckVycm9yKCJ7fSIsIENvbnRlbnRFeHRlbnNp
b25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05Ub3BMZXZlbFN0cnVjdHVyZU5vdEFuQXJy
YXkpOwogICAgIC8vIEZJWE1FOiBBZGQgdW5pdCB0ZXN0IGZvciBKU09OSW52YWxpZFJ1bGUgaWYg
dGhhdCBpcyBwb3NzaWJsZSB0byBoaXQuCiAgICAgY2hlY2tDb21waWxlckVycm9yKCJbXSIsIENv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05Db250YWluc05vUnVs
ZXMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>