<?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>226278</bug_id>
          
          <creation_ts>2021-05-26 10:10:25 -0700</creation_ts>
          <short_desc>Use UncheckedLock even less in JavaScriptCore</short_desc>
          <delta_ts>2021-05-26 11:36:20 -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>JavaScriptCore</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1763953</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 10:10:25 -0700</bug_when>
    <thetext>Use UncheckedLock even less in JavaScriptCore as it is being phased out in favor of Lock, which supports Clang thread safety analysis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763958</commentid>
    <comment_count>1</comment_count>
      <attachid>429769</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 10:18:56 -0700</bug_when>
    <thetext>Created attachment 429769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763988</commentid>
    <comment_count>2</comment_count>
      <attachid>429769</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 11:35:13 -0700</bug_when>
    <thetext>Comment on attachment 429769
Patch

Clearing flags on attachment: 429769

Committed r278093 (238168@main): &lt;https://commits.webkit.org/238168@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763989</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 11:35:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763990</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-26 11:36:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/78524061&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429769</attachid>
            <date>2021-05-26 10:18:56 -0700</date>
            <delta_ts>2021-05-26 11:35:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226278-20210526101855.patch</filename>
            <type>text/plain</type>
            <size>42017</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OWRjMDVkMjMyMWM4YmQzYzU0MDM3NGU4NTQ3ZGI0ODkxZWNmNmNlLi5kMDgxZDQ1YmY4ZTA4NTBl
NGRmYWZmMWM1OTEwODlkYzVkZWYzOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFVzZSBVbmNoZWNrZWRMb2NrIGV2ZW4gbGVzcyBpbiBKYXZhU2NyaXB0Q29yZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Mjc4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFVuY2hl
Y2tlZExvY2sgZXZlbiBsZXNzIGluIEphdmFTY3JpcHRDb3JlIGFzIGl0IGlzIGJlaW5nIHBoYXNl
ZCBvdXQgaW4KKyAgICAgICAgZmF2b3Igb2YgTG9jaywgd2hpY2ggc3VwcG9ydHMgQ2xhbmcgdGhy
ZWFkIHNhZmV0eSBhbmFseXNpcy4KKworICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnkuaDoK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OldURl9SRVRVUk5TX0xPQ0spOgorICAgICAg
ICAqIGhlYXAvQ29kZUJsb2NrU2V0Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja1NldDo6V1RG
X1JFVFVSTlNfTE9DSyk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogaGVhcC9N
YXJrZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZGlyZWN0b3J5TG9jayk6
CisgICAgICAgICogaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZlci5oOgorICAgICAgICAqIGhl
YXAvU2xvdFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZG9uYXRlS25v
d25QYXJhbGxlbCk6CisgICAgICAgICogaGVhcC9TbG90VmlzaXRvci5oOgorICAgICAgICAqIGpp
dC9KSVRXb3JrbGlzdC5jcHA6CisgICAgICAgICogaml0L0pJVFdvcmtsaXN0Lmg6CisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmg6CisgICAg
ICAgICogcnVudGltZS9EZWZlcnJlZFdvcmtUaW1lci5oOgorICAgICAgICAqIHJ1bnRpbWUvVk1U
cmFwcy5jcHA6CisgICAgICAgIChKU0M6OlZNVHJhcHM6OmludmFsaWRhdGVDb2RlQmxvY2tzT25T
dGFjayk6CisgICAgICAgICogcnVudGltZS9WTVRyYXBzLmg6CisgICAgICAgICogdG9vbHMvRnVu
Y3Rpb25PdmVycmlkZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk92ZXJyaWRlczo6RnVu
Y3Rpb25PdmVycmlkZXMpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk92ZXJyaWRlczo6cmVpbnN0
YWxsT3ZlcnJpZGVzKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25PdmVycmlkZXM6OnBhcnNlT3Zl
cnJpZGVzSW5GaWxlKToKKyAgICAgICAgKiB0b29scy9GdW5jdGlvbk92ZXJyaWRlcy5oOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbk92ZXJyaWRlczo6V1RGX1JFUVVJUkVTX0xPQ0spOgorICAgICAg
ICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6ZW5zdXJlSXNTYWZlVG9M
b2NrKToKKyAgICAgICAgKEpTQzo6Vk1JbnNwZWN0b3I6OmNvZGVCbG9ja0Zvck1hY2hpbmVQQyk6
CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJC
UVBsYW46OndvcmspOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9u
KToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmg6CisgICAgICAgICogd2FzbS9XYXNtRW50
cnlQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RW50cnlQbGFuOjpwYXJzZUFuZFZhbGlk
YXRlTW9kdWxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RW50cnlQbGFuOjpwcmVwYXJlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6RW50cnlQbGFuOjpUaHJlYWRDb3VudEhvbGRlcjo6flRocmVhZENv
dW50SG9sZGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RW50cnlQbGFuOjpjb21wbGV0ZSk6Cisg
ICAgICAgICogd2FzbS9XYXNtRW50cnlQbGFuLmg6CisgICAgICAgIChKU0M6Oldhc206OkVudHJ5
UGxhbjo6dHJ5UmVzZXJ2ZUNhcGFjaXR5KToKKyAgICAgICAgKiB3YXNtL1dhc21MTEludFBsYW4u
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludFBsYW46OmNvbXBpbGVGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6Oldhc206OkxMSW50UGxhbjo6ZGlkQ29tcGxldGVDb21waWxhdGlvbik6Cisg
ICAgICAgIChKU0M6Oldhc206OkxMSW50UGxhbjo6Y29tcGxldGVJblN0cmVhbWluZyk6CisgICAg
ICAgIChKU0M6Oldhc206OkxMSW50UGxhbjo6ZGlkRmFpbEluU3RyZWFtaW5nKToKKyAgICAgICAg
KiB3YXNtL1dhc21MTEludFBsYW4uaDoKKyAgICAgICAgKiB3YXNtL1dhc21PTUdGb3JPU1JFbnRy
eVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdGb3JPU1JFbnRyeVBsYW46Ondvcmsp
OgorICAgICAgICAqIHdhc20vV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oOgorICAgICAgICAqIHdh
c20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjp3b3JrKToK
KyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmg6CisgICAgICAgICogd2FzbS9XYXNtUGxhbi5j
cHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OnJ1bkNvbXBsZXRpb25UYXNrcyk6CisgICAg
ICAgIChKU0M6Oldhc206OlBsYW46OnRyeVJlbW92ZUNvbnRleHRBbmRDYW5jZWxJZkxhc3QpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjpmYWlsKToKKyAgICAgICAgKiB3YXNtL1dhc21QbGFu
Lmg6CisgICAgICAgICogd2FzbS9XYXNtU3RyZWFtaW5nQ29tcGlsZXIuY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpTdHJlYW1pbmdDb21waWxlcjo6ZGlkQ29tcGlsZUZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nQ29tcGlsZXI6OmNvbXBsZXRlSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdDb21waWxlcjo6ZGlkQ29tcGxldGUpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdDb21waWxlcjo6ZmluYWxpemUpOgorICAgICAgICAq
IHdhc20vV2FzbVN0cmVhbWluZ0NvbXBpbGVyLmg6CisgICAgICAgICogd2FzbS9XYXNtU3RyZWFt
aW5nUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlN0cmVhbWluZ1BsYW46OndvcmspOgor
ICAgICAgICAqIHdhc20vV2FzbVN0cmVhbWluZ1BsYW4uaDoKKyAgICAgICAgKiB3YXNtL1dhc21U
aHVua3MuaDoKKwogMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFN0b3AgdXNpbmcgVW5jaGVja2VkTG9jayBpbiBXVEY6OkF1dG9tYXRpY1RocmVh
ZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rvcnku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKaW5kZXggOTAx
NTg4Yzk0MzljMzVkZmM4MDRhMGI3NTdjNWU1YjU2M2Y0NGE0ZS4uN2IwOTgyNGJmYjg3N2MyNzRk
ZDMxNDRmZDNiMDkzMDk0MTRiZjExNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQmxvY2tEaXJlY3RvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9C
bG9ja0RpcmVjdG9yeS5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBk
YXRlUGVyY2VudGFnZU9mUGFnZWRPdXRQYWdlcyhXVEY6OlNpbXBsZVN0YXRzJik7CiAgICAgCi0g
ICAgVW5jaGVja2VkTG9jayYgYml0dmVjdG9yTG9jaygpIHsgcmV0dXJuIG1fYml0dmVjdG9yTG9j
azsgfQorICAgIExvY2smIGJpdHZlY3RvckxvY2soKSBXVEZfUkVUVVJOU19MT0NLKG1fYml0dmVj
dG9yTG9jaykgeyByZXR1cm4gbV9iaXR2ZWN0b3JMb2NrOyB9CiAKICNkZWZpbmUgQkxPQ0tfRElS
RUNUT1JZX0JJVF9BQ0NFU1NPUlMobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwK
ICAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6
ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXMgIyMgY2FwaXRhbEJpdE5hbWUoaW5k
ZXgpOyB9IFwKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgogICAgIC8vIE11dGF0b3IgdXNl
cyB0aGlzIHRvIGd1YXJkIHJlc2l6aW5nIHRoZSBiaXR2ZWN0b3JzLiBUaG9zZSB0aGluZ3MgaW4g
dGhlIEdDIHRoYXQgbWF5IHJ1bgogICAgIC8vIGNvbmN1cnJlbnRseSB0byB0aGUgbXV0YXRvciBt
dXN0IGxvY2sgdGhpcyB3aGVuIGFjY2Vzc2luZyB0aGUgYml0dmVjdG9ycy4KICAgICBCbG9ja0Rp
cmVjdG9yeUJpdHMgbV9iaXRzOwotICAgIFVuY2hlY2tlZExvY2sgbV9iaXR2ZWN0b3JMb2NrOwor
ICAgIExvY2sgbV9iaXR2ZWN0b3JMb2NrOwogICAgIExvY2sgbV9sb2NhbEFsbG9jYXRvcnNMb2Nr
OwogICAgIENlbGxBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db2RlQmxvY2tTZXQuaAppbmRleCA4NTZjYzFiYmY4YmQyZDE3Y2RjZGNhN2QzYjQ0
YzcxZjJmYTcwYjE4Li5hYmRiMTk3MjRhMDI1MjY5OTIwNGFjMGJmMGM3NGJjZWI0Mjc4NjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaApAQCAtNTQsNyArNTQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckN1cnJlbnRseUV4ZWN1dGluZygpOwogCiAgICAg
Ym9vbCBjb250YWlucyhjb25zdCBBYnN0cmFjdExvY2tlciYsIHZvaWQqIGNhbmRpZGF0ZUNvZGVC
bG9jayk7Ci0gICAgVW5jaGVja2VkTG9jayYgZ2V0TG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQor
ICAgIExvY2smIGdldExvY2soKSBXVEZfUkVUVVJOU19MT0NLKG1fbG9jaykgeyByZXR1cm4gbV9s
b2NrOyB9CiAKICAgICAvLyBUaGlzIGlzIGV4cGVjdGVkIHRvIHJ1biBvbmx5IHdoZW4gd2UncmUg
bm90IGFkZGluZyB0byB0aGUgc2V0IGZvciBub3cuIElmCiAgICAgLy8gdGhpcyBuZWVkcyB0byBy
dW4gY29uY3VycmVudGx5IGluIHRoZSBmdXR1cmUsIHdlJ2xsIG5lZWQgdG8gbG9jayBhcm91bmQg
dGhpcy4KQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIYXNoU2V0PENv
ZGVCbG9jayo+IG1fY29kZUJsb2NrczsKICAgICBIYXNoU2V0PENvZGVCbG9jayo+IG1fY3VycmVu
dGx5RXhlY3V0aW5nOwotICAgIFVuY2hlY2tlZExvY2sgbV9sb2NrOworICAgIExvY2sgbV9sb2Nr
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5k
ZXggYzJiZWM3NzkyYjk1ZWJhMWZhMmQxZmIwZmVjYzExZWQyNzM5MWE1My4uZTk5NzcyM2QxZmM3
ZjU0NzVkYWQ5YmFhOTY1ODJlM2QzNjdhN2RjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aApAQCAtNzE2LDggKzcxNiw4IEBAIHByaXZhdGU6CiAgICAgQXRvbWljPHVuc2lnbmVkPiBtX3dv
cmxkU3RhdGU7CiAgICAgYm9vbCBtX3dvcmxkSXNTdG9wcGVkIHsgZmFsc2UgfTsKICAgICBMb2Nr
IG1fdmlzaXRSYWNlTG9jazsKLSAgICBVbmNoZWNrZWRMb2NrIG1fbWFya2luZ011dGV4OwotICAg
IFVuY2hlY2tlZENvbmRpdGlvbiBtX21hcmtpbmdDb25kaXRpb25WYXJpYWJsZTsKKyAgICBMb2Nr
IG1fbWFya2luZ011dGV4OworICAgIENvbmRpdGlvbiBtX21hcmtpbmdDb25kaXRpb25WYXJpYWJs
ZTsKIAogICAgIE1vbm90b25pY1RpbWUgbV9iZWZvcmVHQzsKICAgICBNb25vdG9uaWNUaW1lIG1f
YWZ0ZXJHQzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCmluZGV4IDI2
OGI5NzBhNTk4YjQyNWI5ZmNlMzY3ZGIyZWJhZWE3MWViY2MzMWIuLjViZTUxZGU3ZTRjZjk5YjNk
NmY0Nzc3N2YwMGI2ZDJhOTdhYjgwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaApAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBCbG9ja0Rp
cmVjdG9yeSogZmlyc3REaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdG9yaWVzLmZp
cnN0KCk7IH0KICAgICAKLSAgICBVbmNoZWNrZWRMb2NrJiBkaXJlY3RvcnlMb2NrKCkgeyByZXR1
cm4gbV9kaXJlY3RvcnlMb2NrOyB9CisgICAgTG9jayYgZGlyZWN0b3J5TG9jaygpIHsgcmV0dXJu
IG1fZGlyZWN0b3J5TG9jazsgfQogICAgIHZvaWQgYWRkQmxvY2tEaXJlY3RvcnkoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBCbG9ja0RpcmVjdG9yeSopOwogICAgIAogICAgIC8vIFdoZW4gdGhpcyBp
cyB0cnVlIGl0IG1lYW5zIHRoYXQgd2UgaGF2ZSBmbGlwcGVkIGJ1dCB0aGUgbWFyayBiaXRzIGhh
dmVuJ3QgY29udmVyZ2VkIHlldC4KQEAgLTIxNCw3ICsyMTQsNyBAQCBwcml2YXRlOgogICAgIEhl
YXBWZXJzaW9uIG1fbmV3bHlBbGxvY2F0ZWRWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24gfTsKICAg
ICBib29sIG1faXNJdGVyYXRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc01hcmtpbmcgeyBm
YWxzZSB9OwotICAgIFVuY2hlY2tlZExvY2sgbV9kaXJlY3RvcnlMb2NrOworICAgIExvY2sgbV9k
aXJlY3RvcnlMb2NrOwogICAgIE1hcmtlZEJsb2NrU2V0IG1fYmxvY2tzOwogICAgIAogICAgIFNl
bnRpbmVsTGlua2VkTGlzdDxXZWFrU2V0LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0Pj4g
bV9hY3RpdmVXZWFrU2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtpbmdDb25zdHJhaW50U29sdmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJraW5nQ29uc3RyYWludFNvbHZlci5oCmluZGV4IDM1MGU1NTY2MjQyODRkYWJlNDczMTdmYzgw
ZDJmZGQ2YjlhNTg3N2UuLjhlNGYyZjRkZGYzMWNmYzgwNzFjZjNiZWNiNmU1ZTI3OGFlY2IwMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50
U29sdmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFp
bnRTb2x2ZXIuaApAQCAtOTUsOCArOTUsOCBAQCBwcml2YXRlOgogICAgIEJpdFZlY3RvciBtX2V4
ZWN1dGVkOwogICAgIERlcXVlPFRhc2tXaXRoQ29uc3RyYWludCwgMzI+IG1fdG9FeGVjdXRlSW5Q
YXJhbGxlbDsKICAgICBWZWN0b3I8dW5zaWduZWQsIDMyPiBtX3RvRXhlY3V0ZVNlcXVlbnRpYWxs
eTsKLSAgICBVbmNoZWNrZWRMb2NrIG1fbG9jazsKLSAgICBVbmNoZWNrZWRDb25kaXRpb24gbV9j
b25kaXRpb247CisgICAgTG9jayBtX2xvY2s7CisgICAgQ29uZGl0aW9uIG1fY29uZGl0aW9uOwog
ICAgIGJvb2wgbV9waWNrTmV4dElzU3RpbGxBY3RpdmUgeyB0cnVlIH07CiAgICAgdW5zaWduZWQg
bV9udW1UaHJlYWRzVGhhdE1heVByb2R1Y2VXb3JrIHsgMCB9OwogICAgIFZlY3RvcjxWaXNpdENv
dW50ZXIsIDE2PiBtX3Zpc2l0Q291bnRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5jcHAKaW5kZXggYWI3MzJjMjRlYzUwZTg5MDliNDkxZWM5YjE2OWFmMzBmZWM4
OTMzNS4uYzVmMzdkYTVlNzZlYjUzZTJkYjg5YWRhNDYxOTQ4ZDFlNzk4MDlkZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcApAQCAtNDM2LDkgKzQzNiw5IEBA
IHZvaWQgU2xvdFZpc2l0b3I6OmRvbmF0ZUtub3duUGFyYWxsZWwoTWFya1N0YWNrQXJyYXkmIGZy
b20sIE1hcmtTdGFja0FycmF5JiB0bykKIAogICAgIC8vIElmIHdlJ3JlIGNvbnRlbmRpbmcgb24g
dGhlIGxvY2ssIGJlIGNvbnNlcnZhdGl2ZSBhbmQgYXNzdW1lIHRoYXQgYW5vdGhlcgogICAgIC8v
IHRocmVhZCBpcyBhbHJlYWR5IGRvbmF0aW5nLgotICAgIHN0ZDo6dW5pcXVlX2xvY2s8VW5jaGVj
a2VkTG9jaz4gbG9jayhtX2hlYXAubV9tYXJraW5nTXV0ZXgsIHN0ZDo6dHJ5X3RvX2xvY2spOwot
ICAgIGlmICghbG9jay5vd25zX2xvY2soKSkKKyAgICBpZiAoIW1faGVhcC5tX21hcmtpbmdNdXRl
eC50cnlMb2NrKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBMb2NrZXIgbG9ja2VyIHsgQWRvcHRM
b2NrLCBtX2hlYXAubV9tYXJraW5nTXV0ZXggfTsKIAogICAgIC8vIE90aGVyd2lzZSwgYXNzdW1l
IHRoYXQgYSB0aHJlYWQgd2lsbCBnbyBpZGxlIHNvb24sIGFuZCBkb25hdGUuCiAgICAgZnJvbS5k
b25hdGVTb21lQ2VsbHNUbyh0byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0
b3IuaAppbmRleCBkNTVkYjYwMTdkZTczY2Y2YzJmMWNjY2Y0Y2YzY2Q1NDM4Mzk2NTM5Li41MDM2
MzY5Mzg0Mjk2NDM1MmMwZDAyMGJiZWI5OTBiZTIxZDdhODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIG11dGF0b3JJc1N0b3BwZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX211dGF0b3JJ
c1N0b3BwZWQ7IH0KICAgICAKLSAgICBVbmNoZWNrZWRMb2NrJiByaWdodFRvUnVuKCkgeyByZXR1
cm4gbV9yaWdodFRvUnVuOyB9CisgICAgTG9jayYgcmlnaHRUb1J1bigpIFdURl9SRVRVUk5TX0xP
Q0sobV9yaWdodFRvUnVuKSB7IHJldHVybiBtX3JpZ2h0VG9SdW47IH0KICAgICAKICAgICB2b2lk
IHVwZGF0ZU11dGF0b3JJc1N0b3BwZWQoY29uc3QgQWJzdHJhY3RMb2NrZXImKTsKICAgICB2b2lk
IHVwZGF0ZU11dGF0b3JJc1N0b3BwZWQoKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9tdXRhdG9ySXNTdG9wcGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fY2FuT3B0
aW1pemVGb3JTdG9wcGVkTXV0YXRvciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzSW5QYXJhbGxl
bE1vZGUgeyBmYWxzZSB9OwotICAgIFVuY2hlY2tlZExvY2sgbV9yaWdodFRvUnVuOworICAgIExv
Y2sgbV9yaWdodFRvUnVuOwogICAgIAogICAgIC8vIFB1dCBwYWRkaW5nIGhlcmUgdG8gbWl0aWdh
dGUgZmFsc2Ugc2hhcmluZyBiZXR3ZWVuIG11bHRpcGxlIFNsb3RWaXNpdG9ycy4KICAgICBjaGFy
IHBhZGRpbmdbNjRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRX
b3JrbGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdvcmtsaXN0LmNwcApp
bmRleCAyYWE0ZWQ0MWE2MTM3ZmZiYjc3OGY2Y2NlNDIwZTM4ZGZkYjJjNTQwLi43NTgzOGI0MDA2
ZWU4ZTMwYTc3ZjQ5YTJkNzlmODJiMWRiZGEzZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFdvcmtsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFdvcmtsaXN0LmNwcApAQCAtMTA5LDE0ICsxMDksMTQgQEAgc2l6ZV90IEpJVFdvcmts
aXN0OjpxdWV1ZUxlbmd0aChjb25zdCBBYnN0cmFjdExvY2tlciYpIGNvbnN0CiAgICAgcmV0dXJu
IHF1ZXVlTGVuZ3RoOwogfQogCi12b2lkIEpJVFdvcmtsaXN0OjpzdXNwZW5kQWxsVGhyZWFkcygp
Cit2b2lkIEpJVFdvcmtsaXN0OjpzdXNwZW5kQWxsVGhyZWFkcygpIFdURl9JR05PUkVTX1RIUkVB
RF9TQUZFVFlfQU5BTFlTSVMKIHsKICAgICBtX3N1c3BlbnNpb25Mb2NrLmxvY2soKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX3RocmVhZHMuc2l6ZSgpOyBpLS07KQogICAgICAgICBtX3RocmVh
ZHNbaV0tPm1fcmlnaHRUb1J1bi5sb2NrKCk7CiB9CiAKLXZvaWQgSklUV29ya2xpc3Q6OnJlc3Vt
ZUFsbFRocmVhZHMoKQordm9pZCBKSVRXb3JrbGlzdDo6cmVzdW1lQWxsVGhyZWFkcygpIFdURl9J
R05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X3RocmVhZHMuc2l6ZSgpOyBpLS07KQogICAgICAgICBtX3RocmVhZHNbaV0tPm1fcmlnaHRUb1J1
bi51bmxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29y
a2xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29ya2xpc3QuaAppbmRleCBm
NGE2MjlkY2I2MTUxNGM1NWNiNTAyNDM3ZDY3ZGZiZGUzZDBjYTVmLi5kZGM2MmJkMThmZmFmNDYz
MWM2M2RlYjAyY2I4YTJkZTNmY2JkODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFdvcmtsaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRX
b3JrbGlzdC5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBiZSBjb21wbGV0
ZWQuCiAgICAgVmVjdG9yPFJlZlB0cjxKSVRQbGFuPiwgMTY+IG1fcmVhZHlQbGFuczsKIAotICAg
IFVuY2hlY2tlZExvY2sgbV9zdXNwZW5zaW9uTG9jazsKKyAgICBMb2NrIG1fc3VzcGVuc2lvbkxv
Y2s7CiAgICAgQm94PExvY2s+IG1fbG9jazsKIAogICAgIFJlZjxBdXRvbWF0aWNUaHJlYWRDb25k
aXRpb24+IG1fcGxhbkVucXVldWVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA2MGNkYWUzMmFl
MzRhMzc5OGRiMDc5ZjcwM2ViYTlhZWRmNDQ3NTA5Li5iYTg2OGZiOTc5ZDJkNjY1MzgxNGM5ODg1
ODZkMTk5ZjcxNWZmYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjU3LDggKzI1Nyw4IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdvcmtlcjsKICAgICAKLSAgICBV
bmNoZWNrZWRMb2NrIG1fbG9jazsKLSAgICBVbmNoZWNrZWRDb25kaXRpb24gbV9jb25kaXRpb247
CisgICAgTG9jayBtX2xvY2s7CisgICAgQ29uZGl0aW9uIG1fY29uZGl0aW9uOwogICAgIFNlbnRp
bmVsTGlua2VkTGlzdDxXb3JrZXIsIEJhc2ljUmF3U2VudGluZWxOb2RlPFdvcmtlcj4+IG1fd29y
a2VyczsKICAgICBEZXF1ZTxTdHJpbmc+IG1fcmVwb3J0czsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaAppbmRleCAyYTg3OGM5NDZi
NjUzNDBlNzkxMzliZTIyMzc1YzUwNjE2YTliMmUyLi5hZTc4NWU0ZTNkY2I3YzNlMDgwMjg3YmI0
NTk5N2ExMzJjMjg1ZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckRhdGFiYXNlLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fc2hvdWxkU2F2ZUF0RXhpdDsKICAgICBDU3RyaW5nIG1fYXRFeGl0U2F2ZUZpbGVuYW1lOwog
ICAgIERhdGFiYXNlKiBtX25leHRSZWdpc3RlcmVkRGF0YWJhc2U7Ci0gICAgVW5jaGVja2VkTG9j
ayBtX2xvY2s7CisgICAgTG9jayBtX2xvY2s7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
UHJvZmlsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVy
cmVkV29ya1RpbWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZlcnJlZFdv
cmtUaW1lci5oCmluZGV4IGVmMGVhYzczMGI0MjJmNzBjMjBhNjhiNWM5ZTk2NDg2ODc2YTAxM2Yu
LjNkYzBiODM0NDI1ZDQyYjM0M2Y2MTNkNjQzNTA5ZjNjNDViNDg1MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmVycmVkV29ya1RpbWVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmZXJyZWRXb3JrVGltZXIuaApAQCAtNzIsMTEg
KzcyLDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRGVmZXJyZWRXb3JrVGltZXIoVk0mKTsK
IAotICAgIFVuY2hlY2tlZExvY2sgbV90YXNrTG9jazsKKyAgICBMb2NrIG1fdGFza0xvY2s7CiAg
ICAgYm9vbCBtX3J1blRhc2tzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zaG91bGRTdG9wUnVuTG9v
cFdoZW5BbGxUaWNrZXRzRmluaXNoIHsgZmFsc2UgfTsKICAgICBib29sIG1fY3VycmVudGx5UnVu
bmluZ1Rhc2sgeyBmYWxzZSB9OwotICAgIERlcXVlPHN0ZDo6dHVwbGU8VGlja2V0LCBUYXNrPj4g
bV90YXNrczsKKyAgICBEZXF1ZTxzdGQ6OnR1cGxlPFRpY2tldCwgVGFzaz4+IG1fdGFza3MgV1RG
X0dVQVJERURfQllfTE9DSyhtX3Rhc2tMb2NrKTsKICAgICBIYXNoTWFwPFRpY2tldCwgVGlja2V0
RGF0YT4gbV9wZW5kaW5nVGlja2V0czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk1UcmFwcy5jcHAKaW5kZXggMGRjN2UzYjc3M2EzNGY0NTU1OWQxOWVhODMwMjgyNTQ5Y2Y3
Y2ZiNC4uOWI0NDA2YjExNTYzZGFmNTczOWViMzM4YWY4MjU5YTVlMThhNDE1OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2
b2lkIFZNVHJhcHM6OmludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjayhDYWxsRnJhbWUqIHRvcENh
bGxGcmFtZSkKICAgICBpbnZhbGlkYXRlQ29kZUJsb2Nrc09uU3RhY2soY29kZUJsb2NrU2V0TG9j
a2VyLCB0b3BDYWxsRnJhbWUpOwogfQogICAgIAotdm9pZCBWTVRyYXBzOjppbnZhbGlkYXRlQ29k
ZUJsb2Nrc09uU3RhY2soTG9ja2VyPFVuY2hlY2tlZExvY2s+JiwgQ2FsbEZyYW1lKiB0b3BDYWxs
RnJhbWUpCit2b2lkIFZNVHJhcHM6OmludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjayhMb2NrZXI8
TG9jaz4mLCBDYWxsRnJhbWUqIHRvcENhbGxGcmFtZSkKIHsKICAgICBpZiAoIW1fbmVlZFRvSW52
YWxpZGF0ZWRDb2RlQmxvY2tzKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTVRyYXBzLmgKaW5kZXggZDk0YzgwNmIxYmU4ZDc0MzRlMDNlMzJjZTAwYmIyNDMx
ZDg0YmFlNy4uMGFmNTliYzk1YzE2ZjkyZDM0ZTU0YTYyMmIyNDJiODdjNTg0ZmQ2NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuaApAQCAtMjM2LDcgKzIzNiw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjaygpOwogICAgIHZv
aWQgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKENhbGxGcmFtZSogdG9wQ2FsbEZyYW1lKTsK
LSAgICB2b2lkIGludmFsaWRhdGVDb2RlQmxvY2tzT25TdGFjayhMb2NrZXI8VW5jaGVja2VkTG9j
az4mIGNvZGVCbG9ja1NldExvY2tlciwgQ2FsbEZyYW1lKiB0b3BDYWxsRnJhbWUpOworICAgIHZv
aWQgaW52YWxpZGF0ZUNvZGVCbG9ja3NPblN0YWNrKExvY2tlcjxMb2NrPiYgY29kZUJsb2NrU2V0
TG9ja2VyLCBDYWxsRnJhbWUqIHRvcENhbGxGcmFtZSk7CiAKICAgICB2b2lkIGFkZFNpZ25hbFNl
bmRlcihTaWduYWxTZW5kZXIqKTsKICAgICB2b2lkIHJlbW92ZVNpZ25hbFNlbmRlcihTaWduYWxT
ZW5kZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlv
bk92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVy
cmlkZXMuY3BwCmluZGV4IGQ5ZmUxZWYyYzdhOGYzMzJkM2UxNzc5Y2I0NTdjMWU0ODU2MDJjNWIu
LmNlOTRlMmJkY2IxODBmMzMyMjlkNGRjYjZlOGExYThlNTlhYzdmYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcApAQCAtMTEwLDcg
KzExMCw4IEBAIEZ1bmN0aW9uT3ZlcnJpZGVzJiBGdW5jdGlvbk92ZXJyaWRlczo6b3ZlcnJpZGVz
KCkKIEZ1bmN0aW9uT3ZlcnJpZGVzOjpGdW5jdGlvbk92ZXJyaWRlcyhjb25zdCBjaGFyKiBvdmVy
cmlkZXNGaWxlTmFtZSkKIHsKICAgICBGdW5jdGlvbk92ZXJyaWRlc0Fzc2VydFNjb3BlIGFzc2Vy
dFNjb3BlOwotICAgIHBhcnNlT3ZlcnJpZGVzSW5GaWxlKExvY2tlciB7IG1fbG9jayB9LCBvdmVy
cmlkZXNGaWxlTmFtZSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIHBhcnNl
T3ZlcnJpZGVzSW5GaWxlKG92ZXJyaWRlc0ZpbGVOYW1lKTsKIH0KIAogdm9pZCBGdW5jdGlvbk92
ZXJyaWRlczo6cmVpbnN0YWxsT3ZlcnJpZGVzKCkKQEAgLTExOSw4ICsxMjAsOCBAQCB2b2lkIEZ1
bmN0aW9uT3ZlcnJpZGVzOjpyZWluc3RhbGxPdmVycmlkZXMoKQogICAgIEZ1bmN0aW9uT3ZlcnJp
ZGVzJiBvdmVycmlkZXMgPSBGdW5jdGlvbk92ZXJyaWRlczo6b3ZlcnJpZGVzKCk7CiAgICAgTG9j
a2VyIGxvY2tlciB7IG92ZXJyaWRlcy5tX2xvY2sgfTsKICAgICBjb25zdCBjaGFyKiBvdmVycmlk
ZXNGaWxlTmFtZSA9IE9wdGlvbnM6OmZ1bmN0aW9uT3ZlcnJpZGVzKCk7Ci0gICAgb3ZlcnJpZGVz
LmNsZWFyKGxvY2tlcik7Ci0gICAgb3ZlcnJpZGVzLnBhcnNlT3ZlcnJpZGVzSW5GaWxlKGxvY2tl
ciwgb3ZlcnJpZGVzRmlsZU5hbWUpOworICAgIG92ZXJyaWRlcy5jbGVhcigpOworICAgIG92ZXJy
aWRlcy5wYXJzZU92ZXJyaWRlc0luRmlsZShvdmVycmlkZXNGaWxlTmFtZSk7CiB9CiAKIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVPdmVycmlkZUluZm8oY29uc3QgU291cmNlQ29kZSYgb3JpZ0NvZGUs
IGNvbnN0IFN0cmluZyYgbmV3Qm9keSwgRnVuY3Rpb25PdmVycmlkZXM6Ok92ZXJyaWRlSW5mbyYg
aW5mbykKQEAgLTI0OCw3ICsyNDksNyBAQCBzdGF0aWMgU3RyaW5nIHBhcnNlQ2xhdXNlKGNvbnN0
IGNoYXIqIGtleXdvcmQsIHNpemVfdCBrZXl3b3JkTGVuZ3RoLCBGSUxFKiBmaWxlLAogICAgIEZB
SUxfV0lUSF9FUlJPUihTWU5UQVhfRVJST1IsICgiJyIsIGtleXdvcmQsICInIGNsYXVzZSBlbmQg
ZGVsaW1pdGVyICciLCBkZWxpbWl0ZXIsICInIG5vdCBmb3VuZDpcbiIsIGJ1aWxkZXIudG9TdHJp
bmcoKSwgIlxuIiwgIkFyZSB5b3UgbWlzc2luZyBhICd9JyBiZWZvcmUgdGhlIGRlbGltaXRlcj9c
biIpKTsKIH0KIAotdm9pZCBGdW5jdGlvbk92ZXJyaWRlczo6cGFyc2VPdmVycmlkZXNJbkZpbGUo
Y29uc3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBjaGFyKiBmaWxlTmFtZSkKK3ZvaWQgRnVuY3Rp
b25PdmVycmlkZXM6OnBhcnNlT3ZlcnJpZGVzSW5GaWxlKGNvbnN0IGNoYXIqIGZpbGVOYW1lKQog
ewogICAgIEZ1bmN0aW9uT3ZlcnJpZGVzQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgaWYg
KCFmaWxlTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3Zl
cnJpZGVzLmgKaW5kZXggNzZhODEzZDQ4YjNkNDUzNTg4ZDU0M2FmODM2MDMzMWM5ODJiZjQ0MC4u
ZmM1ODU0MmRiNGRhYWEwMDk2ZjQxMGQzNGE1NzNkOTkxZGM2ZTlmMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmgKQEAgLTU3LDExICs1Nywx
MSBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcmVpbnN0YWxs
T3ZlcnJpZGVzKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYXJzZU92ZXJyaWRlc0luRmlsZShj
b25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IGNoYXIqIGZpbGVOYW1lKTsKLSAgICB2b2lkIGNs
ZWFyKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgeyBtX2VudHJpZXMuY2xlYXIoKTsgfQorICAgIHZv
aWQgcGFyc2VPdmVycmlkZXNJbkZpbGUoY29uc3QgY2hhciogZmlsZU5hbWUpIFdURl9SRVFVSVJF
U19MT0NLKG1fbG9jayk7CisgICAgdm9pZCBjbGVhcigpIFdURl9SRVFVSVJFU19MT0NLKG1fbG9j
aykgeyBtX2VudHJpZXMuY2xlYXIoKTsgfQogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
bV9lbnRyaWVzOwotICAgIFVuY2hlY2tlZExvY2sgbV9sb2NrOworICAgIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+IG1fZW50cmllcyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CisgICAgTG9j
ayBtX2xvY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCmluZGV4IDFmZjcyZDQ2ZDk2NDM5NDRhNzk0YmE0M2Y0
YjYwYjhiMTE0NDhhODcuLjczM2Y1MjMwZmVlNGY2YWEwZTM4ZDhkOGZmOWNjOWI2ZTAyMjJiN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcApAQCAtODks
NyArODksOCBAQCBhdXRvIFZNSW5zcGVjdG9yOjpsb2NrKFNlY29uZHMgdGltZW91dCkgLT4gRXhw
ZWN0ZWQ8TG9ja2VyLCBFcnJvcj4KIH0KIAogI2lmIEVOQUJMRShKSVQpCi1zdGF0aWMgYm9vbCBl
bnN1cmVJc1NhZmVUb0xvY2soVW5jaGVja2VkTG9jayYgbG9jaykKK3RlbXBsYXRlPHR5cGVuYW1l
IExvY2tUeXBlPgorc3RhdGljIGJvb2wgZW5zdXJlSXNTYWZlVG9Mb2NrKExvY2tUeXBlJiBsb2Nr
KQogewogICAgIHVuc2lnbmVkIG1heFJldHJpZXMgPSAyOwogICAgIHVuc2lnbmVkIHRyeUNvdW50
ID0gMDsKQEAgLTEwMiw3ICsxMDMsNyBAQCBzdGF0aWMgYm9vbCBlbnN1cmVJc1NhZmVUb0xvY2so
VW5jaGVja2VkTG9jayYgbG9jaykKICAgICAgICAgdHJ5Q291bnQrKzsKICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwotfTsKK30KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiB2b2lkIFZNSW5zcGVj
dG9yOjpmb3JFYWNoVk0oRnVuY3Rpb248RnVuY3RvclN0YXR1cyhWTSYpPiYmIGZ1bmMpCkBAIC0x
NzEsNyArMTcyLDcgQEAgYXV0byBWTUluc3BlY3Rvcjo6Y29kZUJsb2NrRm9yTWFjaGluZVBDKGNv
bnN0IFZNSW5zcGVjdG9yOjpMb2NrZXImLCB2b2lkKiBtYWNoaW4KICAgICAgICAgICAgIHJldHVy
biBGdW5jdG9yU3RhdHVzOjpDb250aW51ZTsgLy8gU2tpcCB0aGlzIFZNLgogICAgICAgICB9CiAK
LSAgICAgICAgTG9ja2VyIGxvY2tlciB7IGNvZGVCbG9ja1NldExvY2sgfTsKKyAgICAgICAgV1RG
OjpMb2NrZXIgbG9ja2VyIHsgY29kZUJsb2NrU2V0TG9jayB9OwogICAgICAgICB2bS5oZWFwLmZv
ckVhY2hDb2RlQmxvY2tJZ25vcmluZ0pJVFBsYW5zKGxvY2tlciwgWyZdIChDb2RlQmxvY2sqIGNi
KSB7CiAgICAgICAgICAgICBKSVRDb2RlKiBqaXRDb2RlID0gY2ItPmppdENvZGUoKS5nZXQoKTsK
ICAgICAgICAgICAgIGlmICghaml0Q29kZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJCUVBsYW4uY3BwCmluZGV4IGY3OGVkMjU1NDY0MTQzMzk1N2FiZGJjOGFiYTcwZGMzOWE2
YWI1M2YuLmFmMmZjNzJiYWNiYjM0YzhiMzM1NzhkOTA3YjM3YzYwMjQwZmI5ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTgwLDcgKzgwLDggQEAg
dm9pZCBCQlFQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAgICAgICAg
IHBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKTsKICAgICAgICAgICAgIGlmICghaGFzV29yaygpKSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlZhbGlkYXRlZCk7Ci0g
ICAgICAgICAgICAgICAgY29tcGxldGUoTG9ja2VyIHsgbV9sb2NrIH0pOworICAgICAgICAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZSgp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgRkFM
TFRIUk9VR0g7CkBAIC0xMDMsNyArMTA0LDggQEAgdm9pZCBCQlFQbGFuOjp3b3JrKENvbXBpbGF0
aW9uRWZmb3J0IGVmZm9ydCkKIAogICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcigqY29udGV4dC53
YXNtRW50cnlwb2ludEpJVCwgbnVsbHB0ciwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6V2FzbSwgSklU
Q29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAoVU5MSUtFTFkobGlua0J1ZmZlci5kaWRGYWls
VG9BbGxvY2F0ZSgpKSkgewotICAgICAgICBCYXNlOjpmYWlsKExvY2tlciB7IG1fbG9jayB9LCBt
YWtlU3RyaW5nKCJPdXQgb2YgZXhlY3V0YWJsZSBtZW1vcnkgd2hpbGUgdGllcmluZyB1cCBmdW5j
dGlvbiBhdCBpbmRleCAiLCBTdHJpbmc6Om51bWJlcihtX2Z1bmN0aW9uSW5kZXgpKSk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICAgICAgQmFzZTo6ZmFpbChtYWtlU3Ry
aW5nKCJPdXQgb2YgZXhlY3V0YWJsZSBtZW1vcnkgd2hpbGUgdGllcmluZyB1cCBmdW5jdGlvbiBh
dCBpbmRleCAiLCBTdHJpbmc6Om51bWJlcihtX2Z1bmN0aW9uSW5kZXgpKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE1Myw3ICsxNTUsNyBAQCB2b2lkIEJCUVBsYW46OndvcmsoQ29t
cGlsYXRpb25FZmZvcnQgZWZmb3J0KQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owog
ICAgIG1vdmVUb1N0YXRlKFN0YXRlOjpDb21wbGV0ZWQpOwotICAgIHJ1bkNvbXBsZXRpb25UYXNr
cyhsb2NrZXIpOworICAgIHJ1bkNvbXBsZXRpb25UYXNrcygpOwogfQogCiB2b2lkIEJCUVBsYW46
OmNvbXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbkluZGV4KQpAQCAtMjAyLDcgKzIwNCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBCQlFQbGFuOjpjb21waWxlRnVu
Y3Rpb24odWludDMyX3QgZnVuY3Rpb25JbmRlCiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKICAgICAgICAgaWYgKCFtX2Vycm9yTWVzc2FnZSkgewogICAgICAgICAgICAgLy8gTXVs
dGlwbGUgY29tcGlsZXMgY291bGQgZmFpbCBzaW11bHRhbmVvdXNseS4gV2UgYXJiaXRyYXJpbHkg
Y2hvb3NlIHRoZSBmaXJzdC4KLSAgICAgICAgICAgIGZhaWwobG9ja2VyLCBtYWtlU3RyaW5nKHBh
cnNlQW5kQ29tcGlsZVJlc3VsdC5lcnJvcigpLCAiLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAiLCBT
dHJpbmc6Om51bWJlcihmdW5jdGlvbkluZGV4KSkpOyAvLyBGSVhNRSBtYWtlIHRoaXMgYW4gRXhw
ZWN0ZWQuCisgICAgICAgICAgICBmYWlsKG1ha2VTdHJpbmcocGFyc2VBbmRDb21waWxlUmVzdWx0
LmVycm9yKCksICIsIGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0
aW9uSW5kZXgpKSk7IC8vIEZJWE1FIG1ha2UgdGhpcyBhbiBFeHBlY3RlZC4KICAgICAgICAgfQog
ICAgICAgICBtX2N1cnJlbnRJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9ucy5z
aXplKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjExLDcgKzIxMyw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb24odWlu
dDMyX3QgZnVuY3Rpb25JbmRlCiAgICAgcmV0dXJuIFdURk1vdmUoKnBhcnNlQW5kQ29tcGlsZVJl
c3VsdCk7CiB9CiAKLXZvaWQgQkJRUGxhbjo6ZGlkQ29tcGxldGVDb21waWxhdGlvbihjb25zdCBB
YnN0cmFjdExvY2tlciYgbG9ja2VyKQordm9pZCBCQlFQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0
aW9uKCkKIHsKICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSAwOyBmdW5jdGlvbklu
ZGV4IDwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25zLnNpemUoKTsgZnVuY3Rpb25JbmRl
eCsrKSB7CiAgICAgICAgIENvbXBpbGF0aW9uQ29udGV4dCYgY29udGV4dCA9IG1fY29tcGlsYXRp
b25Db250ZXh0c1tmdW5jdGlvbkluZGV4XTsKQEAgLTIyMiw3ICsyMjQsNyBAQCB2b2lkIEJCUVBs
YW46OmRpZENvbXBsZXRlQ29tcGlsYXRpb24oY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikK
ICAgICAgICAgewogICAgICAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKCpjb250ZXh0Lndh
c21FbnRyeXBvaW50SklULCBudWxscHRyLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpXYXNtLCBKSVRD
b21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKGxpbmtCdWZmZXIu
ZGlkRmFpbFRvQWxsb2NhdGUoKSkpIHsKLSAgICAgICAgICAgICAgICBCYXNlOjpmYWlsKGxvY2tl
ciwgbWFrZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5IGluIGZ1bmN0aW9uIGF0IGlu
ZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7CisgICAgICAgICAgICAgICAg
QmFzZTo6ZmFpbChtYWtlU3RyaW5nKCJPdXQgb2YgZXhlY3V0YWJsZSBtZW1vcnkgaW4gZnVuY3Rp
b24gYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rpb25JbmRleCkpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTIzNCw3ICsyMzYsNyBAQCB2b2lk
IEJCUVBsYW46OmRpZENvbXBsZXRlQ29tcGlsYXRpb24oY29uc3QgQWJzdHJhY3RMb2NrZXImIGxv
Y2tlcikKICAgICAgICAgaWYgKGNvbnN0IGF1dG8mIGVtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5j
dGlvbiA9IG1fZW1iZWRkZXJUb1dhc21JbnRlcm5hbEZ1bmN0aW9ucy5nZXQoZnVuY3Rpb25JbmRl
eCkpIHsKICAgICAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcigqY29udGV4dC5lbWJlZGRl
ckVudHJ5cG9pbnRKSVQsIG51bGxwdHIsIExpbmtCdWZmZXI6OlByb2ZpbGU6Oldhc20sIEpJVENv
bXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobGlua0J1ZmZlci5k
aWRGYWlsVG9BbGxvY2F0ZSgpKSkgewotICAgICAgICAgICAgICAgIEJhc2U6OmZhaWwobG9ja2Vy
LCBtYWtlU3RyaW5nKCJPdXQgb2YgZXhlY3V0YWJsZSBtZW1vcnkgaW4gZnVuY3Rpb24gZW50cnlw
b2ludCBhdCBpbmRleCAiLCBTdHJpbmc6Om51bWJlcihmdW5jdGlvbkluZGV4KSkpOworICAgICAg
ICAgICAgICAgIEJhc2U6OmZhaWwobWFrZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5
IGluIGZ1bmN0aW9uIGVudHJ5cG9pbnQgYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rp
b25JbmRleCkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5oCmluZGV4IDYyMDYxNDQzYzdhZDA2
MTIwNDU2YWVhYjYzODFjMzhkZmMyMDY2ZTAuLmRiZWZjNTRhZDc1MDA1YTcwZDFlMWFmOTYwMDAx
NzRmOGVjYmRiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
QlFQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uaApA
QCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgcHJlcGFyZUltcGwo
KSBmaW5hbDsKICAgICB2b2lkIGNvbXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbkluZGV4
KSBmaW5hbDsKLSAgICB2b2lkIGRpZENvbXBsZXRlQ29tcGlsYXRpb24oY29uc3QgQWJzdHJhY3RM
b2NrZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENvbXBsZXRlQ29tcGlsYXRpb24oKSBXVEZfUkVR
VUlSRVNfTE9DSyhtX2xvY2spIGZpbmFsOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFs
RnVuY3Rpb24+IGNvbXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBDb21waWxh
dGlvbkNvbnRleHQmLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mLCBUaWVyVXBDb3Vu
dCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQ
bGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCmlu
ZGV4IDZmZWIxNTc3MzRkZmM5ZmJiOGIyYWY0Y2E2M2M3ZWFjMGYwNDNhYmEuLjJhNTNkN2U2ZWQy
MzZhZmZiZmMwMzMyNmYzNzEzZDdmZjlkN2JkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21FbnRyeVBsYW4uY3BwCkBAIC05NSw3ICs5NSw4IEBAIGJvb2wgRW50cnlQbGFu
OjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IHNv
dXJjZUxlbmd0CiAgICAgfQogCiAgICAgaWYgKG1fc3RyZWFtaW5nUGFyc2VyLmZpbmFsaXplKCkg
IT0gU3RyZWFtaW5nUGFyc2VyOjpTdGF0ZTo6RmluaXNoZWQpIHsKLSAgICAgICAgZmFpbChMb2Nr
ZXIgeyBtX2xvY2sgfSwgbV9zdHJlYW1pbmdQYXJzZXIuZXJyb3JNZXNzYWdlKCkpOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgICAgIGZhaWwobV9zdHJlYW1pbmdQYXJz
ZXIuZXJyb3JNZXNzYWdlKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0x
MjgsOCArMTI5LDEwIEBAIHZvaWQgRW50cnlQbGFuOjpwcmVwYXJlKCkKICAgICAgICAgYXV0byBi
aW5kaW5nID0gd2FzbVRvV2FzbShpbXBvcnRGdW5jdGlvbkluZGV4KTsKICAgICAgICAgaWYgKFVO
TElLRUxZKCFiaW5kaW5nKSkgewogICAgICAgICAgICAgc3dpdGNoIChiaW5kaW5nLmVycm9yKCkp
IHsKLSAgICAgICAgICAgIGNhc2UgQmluZGluZ0ZhaWx1cmU6Ok91dE9mTWVtb3J5OgotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWlsKExvY2tlciB7IG1fbG9jayB9LCBtYWtlU3RyaW5nKCJPdXQg
b2YgZXhlY3V0YWJsZSBtZW1vcnkgYXQgaW1wb3J0ICIsIFN0cmluZzo6bnVtYmVyKGltcG9ydElu
ZGV4KSkpOworICAgICAgICAgICAgY2FzZSBCaW5kaW5nRmFpbHVyZTo6T3V0T2ZNZW1vcnk6IHsK
KyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhaWwobWFrZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5IGF0IGlt
cG9ydCAiLCBTdHJpbmc6Om51bWJlcihpbXBvcnRJbmRleCkpKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIH0KQEAgLTE3NCw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcGxhbi5tX251
bWJlck9mQWN0aXZlVGhyZWFkcy0tOwogCiAgICAgICAgIGlmICghbV9wbGFuLm1fbnVtYmVyT2ZB
Y3RpdmVUaHJlYWRzICYmICFtX3BsYW4uaGFzV29yaygpKQotICAgICAgICAgICAgbV9wbGFuLmNv
bXBsZXRlKGxvY2tlcik7CisgICAgICAgICAgICBtX3BsYW4uY29tcGxldGUoKTsKICAgICB9CiAK
ICAgICBFbnRyeVBsYW4mIG1fcGxhbjsKQEAgLTIxNiwxNyArMjE5LDE3IEBAIHZvaWQgRW50cnlQ
bGFuOjpjb21waWxlRnVuY3Rpb25zKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICB9CiB9
CiAKLXZvaWQgRW50cnlQbGFuOjpjb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2Vy
KQordm9pZCBFbnRyeVBsYW46OmNvbXBsZXRlKCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBT
dGF0ZTo6Q29tcGlsZWQgfHwgbV9jdXJyZW50SW5kZXggPj0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+
ZnVuY3Rpb25zLnNpemUoKSk7CiAgICAgZGF0YUxvZ0xuSWYoV2FzbUVudHJ5UGxhbkludGVybmFs
Ojp2ZXJib3NlLCAiU3RhcnRpbmcgQ29tcGxldGlvbiIpOwogCiAgICAgaWYgKCFmYWlsZWQoKSAm
JiBtX3N0YXRlID09IFN0YXRlOjpDb21waWxlZCkKLSAgICAgICAgZGlkQ29tcGxldGVDb21waWxh
dGlvbihsb2NrZXIpOworICAgICAgICBkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKCk7CiAKICAgICBp
ZiAoIWlzQ29tcGxldGUoKSkgewogICAgICAgICBtb3ZlVG9TdGF0ZShTdGF0ZTo6Q29tcGxldGVk
KTsKLSAgICAgICAgcnVuQ29tcGxldGlvblRhc2tzKGxvY2tlcik7CisgICAgICAgIHJ1bkNvbXBs
ZXRpb25UYXNrcygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUVudHJ5UGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUVudHJ5UGxhbi5oCmluZGV4IGUxMTIyNGNmMTFhOTFhMTg2NzVhYjc2MDVlMGU5NDNjNWE5OTE3
ODQuLmE2OGFjOTU3ODY0YmYxMmZiMWE1OGY2MTU1NjU5ZWMzODhlYmY0ZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21FbnRyeVBsYW4uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRW50cnlQbGFuLmgKQEAgLTk2LDE3ICs5NiwxOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgY29uc3QgY2hhciogc3RhdGVTdHJpbmcoU3RhdGUpOwogICAgIHZvaWQg
bW92ZVRvU3RhdGUoU3RhdGUpOwogICAgIGJvb2wgaXNDb21wbGV0ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZDsgfQotICAgIHZvaWQgY29tcGxl
dGUoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlKCkg
V1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NrKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBw
cmVwYXJlSW1wbCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZUZ1bmN0aW9uKHVpbnQz
Ml90IGZ1bmN0aW9uSW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVDb21w
aWxhdGlvbihjb25zdCBBYnN0cmFjdExvY2tlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tcGxldGVDb21waWxhdGlvbigpIFdURl9SRVFVSVJFU19MT0NLKG1fbG9jaykgPSAwOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBib29sIHRyeVJlc2VydmVDYXBhY2l0eShWZWN0
b3I8VD4mIHZlY3Rvciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHdoYXQpCiAgICAgewogICAg
ICAgICBpZiAoVU5MSUtFTFkoIXZlY3Rvci50cnlSZXNlcnZlQ2FwYWNpdHkoc2l6ZSkpKSB7Ci0g
ICAgICAgICAgICBmYWlsKExvY2tlciB7IG1fbG9jayB9LCBXVEY6Om1ha2VTdHJpbmcoIkZhaWxl
ZCBhbGxvY2F0aW5nIGVub3VnaCBzcGFjZSBmb3IgIiwgc2l6ZSwgd2hhdCkpOworICAgICAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgICAgICAgICAgZmFpbChXVEY6Om1ha2VT
dHJpbmcoIkZhaWxlZCBhbGxvY2F0aW5nIGVub3VnaCBzcGFjZSBmb3IgIiwgc2l6ZSwgd2hhdCkp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxh
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRQbGFuLmNwcAppbmRl
eCAxNWI4OTNkODFmNTZlODBlNjE2NDEwZDhlZjgxNDI4M2FmZDJhNzBiLi41YjE2N2MwMDRjMDJi
MTBhMDkwNzU4YTUyZTMyOGFiMjY2ZDQ0MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTExJbnRQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTExJbnRQbGFuLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIExMSW50UGxhbjo6
Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCiAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgaWYgKCFtX2Vycm9yTWVzc2FnZSkgewogICAgICAg
ICAgICAgLy8gTXVsdGlwbGUgY29tcGlsZXMgY291bGQgZmFpbCBzaW11bHRhbmVvdXNseS4gV2Ug
YXJiaXRyYXJpbHkgY2hvb3NlIHRoZSBmaXJzdC4KLSAgICAgICAgICAgIGZhaWwobG9ja2VyLCBt
YWtlU3RyaW5nKHBhcnNlQW5kQ29tcGlsZVJlc3VsdC5lcnJvcigpLCAiLCBpbiBmdW5jdGlvbiBh
dCBpbmRleCAiLCBTdHJpbmc6Om51bWJlcihmdW5jdGlvbkluZGV4KSkpOyAvLyBGSVhNRSBtYWtl
IHRoaXMgYW4gRXhwZWN0ZWQuCisgICAgICAgICAgICBmYWlsKG1ha2VTdHJpbmcocGFyc2VBbmRD
b21waWxlUmVzdWx0LmVycm9yKCksICIsIGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6
bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7IC8vIEZJWE1FIG1ha2UgdGhpcyBhbiBFeHBlY3RlZC4K
ICAgICAgICAgfQogICAgICAgICBtX2N1cnJlbnRJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24t
PmZ1bmN0aW9ucy5zaXplKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTk5LDcgKzk5LDcgQEAgdm9p
ZCBMTEludFBsYW46OmNvbXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbkluZGV4KQogICAg
IG1fd2FzbUludGVybmFsRnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdID0gV1RGTW92ZSgqcGFyc2VB
bmRDb21waWxlUmVzdWx0KTsKIH0KIAotdm9pZCBMTEludFBsYW46OmRpZENvbXBsZXRlQ29tcGls
YXRpb24oY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKK3ZvaWQgTExJbnRQbGFuOjpkaWRD
b21wbGV0ZUNvbXBpbGF0aW9uKCkKIHsKICAgICB1bnNpZ25lZCBmdW5jdGlvbkNvdW50ID0gbV93
YXNtSW50ZXJuYWxGdW5jdGlvbnMuc2l6ZSgpOwogICAgIGlmICghbV9jYWxsZWVzICYmIGZ1bmN0
aW9uQ291bnQpIHsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIExMSW50UGxhbjo6ZGlkQ29tcGxl
dGVDb21waWxhdGlvbihjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQogCiAgICAgICAgIExp
bmtCdWZmZXIgbGlua0J1ZmZlcihqaXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJv
ZmlsZTo6V2FzbSwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAgaWYgKFVOTElLRUxZ
KGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkpIHsKLSAgICAgICAgICAgIEJhc2U6OmZh
aWwobG9ja2VyLCAiT3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5IGluIFdhc20gTExJbnQgZW50cnkg
dGh1bmtzIik7CisgICAgICAgICAgICBCYXNlOjpmYWlsKCJPdXQgb2YgZXhlY3V0YWJsZSBtZW1v
cnkgaW4gV2FzbSBMTEludCBlbnRyeSB0aHVua3MiKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBMTEludFBsYW46OmRpZENvbXBsZXRl
Q29tcGlsYXRpb24oY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKIAogICAgICAgICAgICAg
TGlua0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgbnVsbHB0ciwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6
V2FzbSwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShs
aW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpKSB7Ci0gICAgICAgICAgICAgICAgQmFzZTo6
ZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcoIk91dCBvZiBleGVjdXRhYmxlIG1lbW9yeSBpbiBmdW5j
dGlvbiBlbnRyeXBvaW50IGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgp
KSk7CisgICAgICAgICAgICAgICAgQmFzZTo6ZmFpbChtYWtlU3RyaW5nKCJPdXQgb2YgZXhlY3V0
YWJsZSBtZW1vcnkgaW4gZnVuY3Rpb24gZW50cnlwb2ludCBhdCBpbmRleCAiLCBTdHJpbmc6Om51
bWJlcihmdW5jdGlvbkluZGV4KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIApAQCAtMTkxLDcgKzE5MSw4IEBAIHZvaWQgTExJbnRQbGFuOjpkaWRDb21wbGV0ZUNv
bXBpbGF0aW9uKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAKIHZvaWQgTExJbnRQbGFu
Ojpjb21wbGV0ZUluU3RyZWFtaW5nKCkKIHsKLSAgICBjb21wbGV0ZShMb2NrZXIgeyBtX2xvY2sg
fSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGNvbXBsZXRlKCk7CiB9CiAK
IHZvaWQgTExJbnRQbGFuOjpkaWRDb21waWxlRnVuY3Rpb25JblN0cmVhbWluZygpCkBAIC0yMDQs
NyArMjA1LDcgQEAgdm9pZCBMTEludFBsYW46OmRpZEZhaWxJblN0cmVhbWluZyhTdHJpbmcmJiBt
ZXNzYWdlKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBpZiAoIW1fZXJy
b3JNZXNzYWdlKQotICAgICAgICBmYWlsKGxvY2tlciwgV1RGTW92ZShtZXNzYWdlKSk7CisgICAg
ICAgIGZhaWwoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIHZvaWQgTExJbnRQbGFuOjp3b3JrKENv
bXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21MTEludFBsYW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21M
TEludFBsYW4uaAppbmRleCAxNjYxMDMyNmVlNDNhOGFjNWJiMTE3Yzg2Njc4NGMzNmNjODI1MTQ5
Li45NGRkOWYyZmMxYTAwZWQwYzZhZDU4ZjRkNzYyODZkY2M4MDdhOTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRQbGFuLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5oCkBAIC04NSw3ICs4NSw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBib29sIHByZXBhcmVJbXBsKCkgZmluYWw7Ci0gICAgdm9pZCBk
aWRDb21wbGV0ZUNvbXBpbGF0aW9uKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgZmluYWw7CisgICAg
dm9pZCBkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2NrKSBm
aW5hbDsKIAogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Db2RlQmxvY2s+PiBt
X3dhc21JbnRlcm5hbEZ1bmN0aW9uczsKICAgICBjb25zdCBSZWY8TExJbnRDYWxsZWU+KiBtX2Nh
bGxlZXMgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwCmluZGV4IGEyOGJlNzE1Yjc5MGI5ODZiOTJkYzE2
ZmI2ZTIxMGQ0MDEzMjhhYzIuLmU4N2UyMWI1OWY2NmFlYWY5NzY3OTlmNGM4ZWZjZTU3ZDlhNDc5
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdGb3JPU1JF
bnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdGb3JP
U1JFbnRyeVBsYW4uY3BwCkBAIC03OCwxNCArNzgsMTYgQEAgdm9pZCBPTUdGb3JPU1JFbnRyeVBs
YW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgYXV0byBwYXJzZUFuZENvbXBpbGVSZXN1
bHQgPSBwYXJzZUFuZENvbXBpbGUoY29udGV4dCwgZnVuY3Rpb24sIHNpZ25hdHVyZSwgdW5saW5r
ZWRDYWxscywgb3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5n
ZXQoKSwgbV9tb2RlLCBDb21waWxhdGlvbk1vZGU6Ok9NR0Zvck9TUkVudHJ5TW9kZSwgbV9mdW5j
dGlvbkluZGV4LCBtX2xvb3BJbmRleCk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXBhcnNlQW5kQ29t
cGlsZVJlc3VsdCkpIHsKLSAgICAgICAgZmFpbChMb2NrZXIgeyBtX2xvY2sgfSwgbWFrZVN0cmlu
ZyhwYXJzZUFuZENvbXBpbGVSZXN1bHQuZXJyb3IoKSwgIndoZW4gdHJ5aW5nIHRvIHRpZXIgdXAg
IiwgU3RyaW5nOjpudW1iZXIobV9mdW5jdGlvbkluZGV4KSkpOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CisgICAgICAgIGZhaWwobWFrZVN0cmluZyhwYXJzZUFuZENvbXBpbGVS
ZXN1bHQuZXJyb3IoKSwgIndoZW4gdHJ5aW5nIHRvIHRpZXIgdXAgIiwgU3RyaW5nOjpudW1iZXIo
bV9mdW5jdGlvbkluZGV4KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgRW50cnlw
b2ludCBvbWdFbnRyeXBvaW50OwogICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcigqY29udGV4dC53
YXNtRW50cnlwb2ludEpJVCwgbnVsbHB0ciwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6V2FzbSwgSklU
Q29tcGlsYXRpb25DYW5GYWlsKTsKICAgICBpZiAoVU5MSUtFTFkobGlua0J1ZmZlci5kaWRGYWls
VG9BbGxvY2F0ZSgpKSkgewotICAgICAgICBCYXNlOjpmYWlsKExvY2tlciB7IG1fbG9jayB9LCBt
YWtlU3RyaW5nKCJPdXQgb2YgZXhlY3V0YWJsZSBtZW1vcnkgd2hpbGUgdGllcmluZyB1cCBmdW5j
dGlvbiBhdCBpbmRleCAiLCBTdHJpbmc6Om51bWJlcihtX2Z1bmN0aW9uSW5kZXgpKSk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICAgICAgQmFzZTo6ZmFpbChtYWtlU3Ry
aW5nKCJPdXQgb2YgZXhlY3V0YWJsZSBtZW1vcnkgd2hpbGUgdGllcmluZyB1cCBmdW5jdGlvbiBh
dCBpbmRleCAiLCBTdHJpbmc6Om51bWJlcihtX2Z1bmN0aW9uSW5kZXgpKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTEzNyw3ICsxMzksOCBAQCB2b2lkIE9NR0Zvck9TUkVudHJ5UGxh
bjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICAgICAgfQogICAgIH0KICAgICBkYXRhTG9n
TG5JZihXYXNtT01HRm9yT1NSRW50cnlQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJGaW5pc2hlZCBP
TUdGb3JPU1JFbnRyeSAiLCBtX2Z1bmN0aW9uSW5kZXgpOwotICAgIGNvbXBsZXRlKExvY2tlciB7
IG1fbG9jayB9KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CisgICAgY29tcGxldGUo
KTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uaAppbmRleCAzZjYxODQ5ODUz
MTFhM2E0ZWE3YjA1MDUxMGEyNGJkODU1MDBjM2E2Li4yYzUzMzY0NmY5YzUzZTI1ZTNjN2IzM2E1
NjIwNmFkZmNhNWJjZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT01HRm9yT1NSRW50cnlQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oCkBAIC01NSwxMCArNTUsMTAgQEAgcHJpdmF0ZToKICAg
ICB1c2luZyBCYXNlOjptX2xvY2s7CiAKICAgICBib29sIGlzQ29tcGxldGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2NvbXBsZXRlZDsgfQotICAgIHZvaWQgY29tcGxldGUoY29uc3QgQWJzdHJh
Y3RMb2NrZXImIGxvY2tlcikgZmluYWwKKyAgICB2b2lkIGNvbXBsZXRlKCkgV1RGX1JFUVVJUkVT
X0xPQ0sobV9sb2NrKSBmaW5hbAogICAgIHsKICAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwot
ICAgICAgICBydW5Db21wbGV0aW9uVGFza3MobG9ja2VyKTsKKyAgICAgICAgcnVuQ29tcGxldGlv
blRhc2tzKCk7CiAgICAgfQogCiAgICAgUmVmPE1vZHVsZT4gbV9tb2R1bGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKaW5kZXggZWRmZDY4YWZjNGE2NmRmZTA2
MDMwNzZkZjFlYTM5ZmZmOTVkNWUwYy4uNGM4ZDRjNDMyMTIzNzFkNTIxNzZkOWM1MTkwZGE0MzBi
NzBiMjRkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1Bs
YW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcApA
QCAtNzUsMTQgKzc1LDE2IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkK
ICAgICBhdXRvIHBhcnNlQW5kQ29tcGlsZVJlc3VsdCA9IHBhcnNlQW5kQ29tcGlsZShjb250ZXh0
LCBmdW5jdGlvbiwgc2lnbmF0dXJlLCB1bmxpbmtlZENhbGxzLCBvc3JFbnRyeVNjcmF0Y2hCdWZm
ZXJTaXplLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpLCBtX21vZGUsIENvbXBpbGF0aW9uTW9k
ZTo6T01HTW9kZSwgbV9mdW5jdGlvbkluZGV4LCBVSU5UMzJfTUFYKTsKIAogICAgIGlmIChVTkxJ
S0VMWSghcGFyc2VBbmRDb21waWxlUmVzdWx0KSkgewotICAgICAgICBmYWlsKExvY2tlciB7IG1f
bG9jayB9LCBtYWtlU3RyaW5nKHBhcnNlQW5kQ29tcGlsZVJlc3VsdC5lcnJvcigpLCAid2hlbiB0
cnlpbmcgdG8gdGllciB1cCAiLCBTdHJpbmc6Om51bWJlcihtX2Z1bmN0aW9uSW5kZXgpKSk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKKyAgICAgICAgZmFpbChtYWtlU3RyaW5n
KHBhcnNlQW5kQ29tcGlsZVJlc3VsdC5lcnJvcigpLCAid2hlbiB0cnlpbmcgdG8gdGllciB1cCAi
LCBTdHJpbmc6Om51bWJlcihtX2Z1bmN0aW9uSW5kZXgpKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBFbnRyeXBvaW50IG9tZ0VudHJ5cG9pbnQ7CiAgICAgTGlua0J1ZmZlciBsaW5r
QnVmZmVyKCpjb250ZXh0Lndhc21FbnRyeXBvaW50SklULCBudWxscHRyLCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpXYXNtLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChVTkxJS0VMWShs
aW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpKSB7Ci0gICAgICAgIEJhc2U6OmZhaWwoTG9j
a2VyIHsgbV9sb2NrIH0sIG1ha2VTdHJpbmcoIk91dCBvZiBleGVjdXRhYmxlIG1lbW9yeSB3aGls
ZSB0aWVyaW5nIHVwIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKG1fZnVuY3Rp
b25JbmRleCkpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgICAgICBC
YXNlOjpmYWlsKG1ha2VTdHJpbmcoIk91dCBvZiBleGVjdXRhYmxlIG1lbW9yeSB3aGlsZSB0aWVy
aW5nIHVwIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKG1fZnVuY3Rpb25JbmRl
eCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM2LDcgKzEzOCw4IEBAIHZvaWQg
T01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICB9CiAKICAgICBkYXRhTG9nTG5J
ZihXYXNtT01HUGxhbkludGVybmFsOjp2ZXJib3NlLCAiRmluaXNoZWQgT01HICIsIG1fZnVuY3Rp
b25JbmRleCk7Ci0gICAgY29tcGxldGUoTG9ja2VyIHsgbV9sb2NrIH0pOworICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKKyAgICBjb21wbGV0ZSgpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6V2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9N
R1BsYW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmgKaW5kZXgg
MTE1ZjVkOTNkN2I2NzkzNGY1N2E2NGEzNjVmYWU0NjFkZDBiNTdiZS4uMGIwZDllNDc3N2Y2NTU2
NzljNmVlOGJhM2M5NjE4YzJiYWMxZTliYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9NR1BsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT01HUGxhbi5oCkBAIC01MywxMCArNTMsMTAgQEAgcHJpdmF0ZToKICAgICB1c2luZyBCYXNl
OjptX2xvY2s7CiAKICAgICBib29sIGlzQ29tcGxldGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2NvbXBsZXRlZDsgfQotICAgIHZvaWQgY29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxv
Y2tlcikgZmluYWwKKyAgICB2b2lkIGNvbXBsZXRlKCkgV1RGX1JFUVVJUkVTX0xPQ0sobV9sb2Nr
KSBmaW5hbAogICAgIHsKICAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwotICAgICAgICBydW5D
b21wbGV0aW9uVGFza3MobG9ja2VyKTsKKyAgICAgICAgcnVuQ29tcGxldGlvblRhc2tzKCk7CiAg
ICAgfQogICAgIAogICAgIFJlZjxNb2R1bGU+IG1fbW9kdWxlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBsYW4uY3BwCmluZGV4IGY3MzViNDA5MmRjZjc4Zjc4NjYzNjNiODBlMmMyZDY1
YjI4OTA2MTMuLmRjMDA3ZTQ2MzA2ZTY4NDIxOGIyODNmY2QwZWRlODViYzNmZDZlZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgUGxh
bjo6UGxhbihDb250ZXh0KiBjb250ZXh0LCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgbV9j
b21wbGV0aW9uVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvbnRleHQsIFdURk1vdmUodGFz
aykpKTsKIH0KIAotdm9pZCBQbGFuOjpydW5Db21wbGV0aW9uVGFza3MoY29uc3QgQWJzdHJhY3RM
b2NrZXImKQordm9pZCBQbGFuOjpydW5Db21wbGV0aW9uVGFza3MoKQogewogICAgIEFTU0VSVChp
c0NvbXBsZXRlKCkgJiYgIWhhc1dvcmsoKSk7CiAKQEAgLTEwNiwyMSArMTA2LDIxIEBAIGJvb2wg
UGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFuZENhbmNlbElmTGFzdChDb250ZXh0JiBjb250ZXh0KQog
CiAgICAgLy8gRklYTUU6IE1ha2UgMCBpbmRleCBub3Qgc28gbWFnaWNhbDogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTM5NQogICAgIGlmIChtX2NvbXBsZXRpb25U
YXNrcy5pc0VtcHR5KCkgfHwgKG1fY29tcGxldGlvblRhc2tzLnNpemUoKSA9PSAxICYmICFtX2Nv
bXBsZXRpb25UYXNrc1swXS5maXJzdCkpIHsKLSAgICAgICAgZmFpbChsb2NrZXIsICJXZWJBc3Nl
bWJseSBQbGFuIHdhcyBjYW5jZWxsZWQuIElmIHlvdSBzZWUgdGhpcyBlcnJvciBtZXNzYWdlIHBs
ZWFzZSBmaWxlIGEgYnVnIGF0IGJ1Z3Mud2Via2l0Lm9yZyEiX3MpOworICAgICAgICBmYWlsKCJX
ZWJBc3NlbWJseSBQbGFuIHdhcyBjYW5jZWxsZWQuIElmIHlvdSBzZWUgdGhpcyBlcnJvciBtZXNz
YWdlIHBsZWFzZSBmaWxlIGEgYnVnIGF0IGJ1Z3Mud2Via2l0Lm9yZyEiX3MpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUGxhbjo6
ZmFpbChjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBTdHJpbmcmJiBlcnJvck1lc3NhZ2Up
Cit2b2lkIFBsYW46OmZhaWwoU3RyaW5nJiYgZXJyb3JNZXNzYWdlKQogewogICAgIGlmIChmYWls
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChlcnJvck1lc3NhZ2UpOwogICAgIGRh
dGFMb2dMbklmKFdhc21QbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJmYWlsaW5nIHdpdGggbWVzc2Fn
ZTogIiwgZXJyb3JNZXNzYWdlKTsKICAgICBtX2Vycm9yTWVzc2FnZSA9IFdURk1vdmUoZXJyb3JN
ZXNzYWdlKTsKLSAgICBjb21wbGV0ZShsb2NrZXIpOworICAgIGNvbXBsZXRlKCk7CiB9CiAKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFlfQjNKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBs
YW4uaAppbmRleCBjODFmM2E2YzlmNTg2YjkxYzE3YjU5NjQ3NTAxOGVjY2EyM2ZhZDFlLi5iM2Rl
MGNhNTUwYjQ4OWRiNDkyMGViMTJiNTExZDMzYTVhZWI1Yjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21QbGFuLmgKQEAgLTc4LDExICs3OCwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCB0
cnlSZW1vdmVDb250ZXh0QW5kQ2FuY2VsSWZMYXN0KENvbnRleHQmKTsKIAogcHJvdGVjdGVkOgot
ICAgIHZvaWQgcnVuQ29tcGxldGlvblRhc2tzKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7Ci0gICAg
dm9pZCBmYWlsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgU3RyaW5nJiYgZXJyb3JNZXNzYWdlKTsK
KyAgICB2b2lkIHJ1bkNvbXBsZXRpb25UYXNrcygpIFdURl9SRVFVSVJFU19MT0NLKG1fbG9jayk7
CisgICAgdm9pZCBmYWlsKFN0cmluZyYmIGVycm9yTWVzc2FnZSkgV1RGX1JFUVVJUkVTX0xPQ0so
bV9sb2NrKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0NvbXBsZXRlKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tcGxldGUoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spID0gMDsKIAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWV9CM0pJVCkKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVDYWxs
U2l0ZXNUb0NhbGxVcyhDb2RlQmxvY2smLCBDb2RlTG9jYXRpb25MYWJlbDxXYXNtRW50cnlQdHJU
YWc+IGVudHJ5cG9pbnQsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIHVpbnQzMl90IGZ1bmN0aW9u
SW5kZXhTcGFjZSk7CkBAIC05NCw4ICs5NCw4IEBAIHByb3RlY3RlZDoKIAogICAgIFN0cmluZyBt
X2Vycm9yTWVzc2FnZTsKICAgICBNZW1vcnlNb2RlIG1fbW9kZSB7IE1lbW9yeU1vZGU6OkJvdW5k
c0NoZWNraW5nIH07Ci0gICAgVW5jaGVja2VkTG9jayBtX2xvY2s7Ci0gICAgVW5jaGVja2VkQ29u
ZGl0aW9uIG1fY29tcGxldGVkOworICAgIExvY2sgbV9sb2NrOworICAgIENvbmRpdGlvbiBtX2Nv
bXBsZXRlZDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVN0cmVhbWluZ0NvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TdHJlYW1pbmdDb21waWxlci5jcHAKaW5kZXggODU5NmMwN2RmZGViNmE2NTM2NzEyNDk1OGUz
ZWYzMmRjZjA5MGRhYy4uY2FlMzBkZWY2YjdlOTQ4ZWU3MTgwMWM5OTExYTViYmVlYzI0NDRlMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ0NvbXBp
bGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nQ29t
cGlsZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTdHJlYW1pbmdDb21waWxlcjo6ZGlk
Q29tcGlsZUZ1bmN0aW9uKFN0cmVhbWluZ1BsYW4mIHBsYW4pCiAgICAgbV9yZW1haW5pbmdDb21w
aWxhdGlvblJlcXVlc3RzLS07CiAgICAgaWYgKCFtX3JlbWFpbmluZ0NvbXBpbGF0aW9uUmVxdWVz
dHMpCiAgICAgICAgIG1fcGxhbi0+ZGlkQ29tcGlsZUZ1bmN0aW9uSW5TdHJlYW1pbmcoKTsKLSAg
ICBjb21wbGV0ZUlmTmVjZXNzYXJ5KGxvY2tlcik7CisgICAgY29tcGxldGVJZk5lY2Vzc2FyeSgp
OwogfQogCiB2b2lkIFN0cmVhbWluZ0NvbXBpbGVyOjpkaWRGaW5pc2hQYXJzaW5nKCkKQEAgLTEx
NSwxOCArMTE1LDE4IEBAIHZvaWQgU3RyZWFtaW5nQ29tcGlsZXI6OmRpZEZpbmlzaFBhcnNpbmco
KQogICAgIH0KIH0KIAotdm9pZCBTdHJlYW1pbmdDb21waWxlcjo6Y29tcGxldGVJZk5lY2Vzc2Fy
eShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKQordm9pZCBTdHJlYW1pbmdDb21waWxlcjo6
Y29tcGxldGVJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1fZWFnZXJGYWlsZWQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghbV9yZW1haW5pbmdDb21waWxhdGlvblJlcXVlc3RzICYmIG1f
ZmluYWxpemVkKSB7CiAgICAgICAgIG1fcGxhbi0+Y29tcGxldGVJblN0cmVhbWluZygpOwotICAg
ICAgICBkaWRDb21wbGV0ZShsb2NrZXIpOworICAgICAgICBkaWRDb21wbGV0ZSgpOwogICAgIH0K
IH0KIAotdm9pZCBTdHJlYW1pbmdDb21waWxlcjo6ZGlkQ29tcGxldGUoY29uc3QgQWJzdHJhY3RM
b2NrZXImKQordm9pZCBTdHJlYW1pbmdDb21waWxlcjo6ZGlkQ29tcGxldGUoKQogewogCiAgICAg
YXV0byBtYWtlVmFsaWRhdGlvblJlc3VsdCA9IFtdKEpTQzo6V2FzbTo6TExJbnRQbGFuJiBwbGFu
KSAtPiBNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQgewpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQg
U3RyZWFtaW5nQ29tcGlsZXI6OmZpbmFsaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIG1fZmlu
YWxpemVkID0gdHJ1ZTsKLSAgICAgICAgY29tcGxldGVJZk5lY2Vzc2FyeShsb2NrZXIpOworICAg
ICAgICBjb21wbGV0ZUlmTmVjZXNzYXJ5KCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nQ29tcGlsZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdDb21waWxlci5oCmluZGV4IDk1N2Y3NWZm
ZmZmMGMwZjNiZWEwNDQwZGVmYTlkYzg4ZTBhMjM5NGIuLjRmYmI4ZWM5MDVmZmY1ZmM3MzlhOWNj
OTBlZjc5NTkzNTFlNzJmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TdHJlYW1pbmdDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TdHJlYW1pbmdDb21waWxlci5oCkBAIC02MiwxNSArNjIsMTUgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgZGlkUmVjZWl2ZUZ1bmN0aW9uRGF0YSh1bnNpZ25lZCwgY29uc3QgRnVuY3Rpb25E
YXRhJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nKCkgZmluYWw7Ci0gICAgdm9p
ZCBkaWRDb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYpOwotICAgIHZvaWQgY29tcGxldGVJ
Zk5lY2Vzc2FyeShjb25zdCBBYnN0cmFjdExvY2tlciYpOworICAgIHZvaWQgZGlkQ29tcGxldGUo
KSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spOworICAgIHZvaWQgY29tcGxldGVJZk5lY2Vzc2Fy
eSgpIFdURl9SRVFVSVJFU19MT0NLKG1fbG9jayk7CiAKICAgICBWTSYgbV92bTsKICAgICBDb21w
aWxlck1vZGUgbV9jb21waWxlck1vZGU7Ci0gICAgYm9vbCBtX2VhZ2VyRmFpbGVkIHsgZmFsc2Ug
fTsKLSAgICBib29sIG1fZmluYWxpemVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZWFnZXJGYWls
ZWQgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZmlu
YWxpemVkIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKSB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3RocmVhZGVkQ29tcGlsYXRpb25TdGFydGVkIHsgZmFsc2UgfTsKLSAgICBVbmNoZWNrZWRMb2Nr
IG1fbG9jazsKKyAgICBMb2NrIG1fbG9jazsKICAgICB1bnNpZ25lZCBtX3JlbWFpbmluZ0NvbXBp
bGF0aW9uUmVxdWVzdHMgeyAwIH07CiAgICAgSlNQcm9taXNlKiBtX3Byb21pc2U7IC8vIFJhdyBw
b2ludGVyLCBidXQgaGVsZCBieSBEZWZlcnJlZFdvcmtUaW1lci4KICAgICBSZWY8V2FzbTo6TW9k
dWxlSW5mb3JtYXRpb24+IG1faW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21TdHJlYW1pbmdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TdHJlYW1pbmdQbGFuLmNwcAppbmRleCA2MTNhY2JhMThmMzY5MTM5YWQ4ZjI3YjgxOWQx
MzA4NjNlMWZkZDA1Li44MTM1YTExYmI4NTVhNGFkYzFlN2JiMjU0YWZmNjljOTEwMjIxMDlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGxhbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BsYW4uY3Bw
CkBAIC01NCw3ICs1NCw4IEBAIHZvaWQgU3RyZWFtaW5nUGxhbjo6d29yayhDb21waWxhdGlvbkVm
Zm9ydCkKIHsKICAgICBtX3BsYW4tPmNvbXBpbGVGdW5jdGlvbihtX2Z1bmN0aW9uSW5kZXgpOwog
ICAgIGRhdGFMb2dMbklmKFdhc21TdHJlYW1pbmdQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJGaW5p
c2hlZCBTdHJlYW1pbmcgIiwgbV9mdW5jdGlvbkluZGV4KTsKLSAgICBjb21wbGV0ZShMb2NrZXIg
eyBtX2xvY2sgfSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OworICAgIGNvbXBsZXRl
KCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGxhbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BsYW4uaAppbmRleCAwYjFjZWE5MGQ4ZDZkYmM5OWQy
ZTU5MDcyMTRhOGEwODUyM2FmOGU5Li43YTFmNWMwZmZiNjQwZjk5MTE2YWI4NThjNmY2ZTQ1NTI4
ZjUxODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFt
aW5nUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQ
bGFuLmgKQEAgLTU0LDEwICs1NCwxMCBAQCBwcml2YXRlOgogICAgIHVzaW5nIEJhc2U6Om1fbG9j
azsKIAogICAgIGJvb2wgaXNDb21wbGV0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29tcGxl
dGVkOyB9Ci0gICAgdm9pZCBjb21wbGV0ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyKSBm
aW5hbAorICAgIHZvaWQgY29tcGxldGUoKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2xvY2spIGZpbmFs
CiAgICAgewogICAgICAgICBtX2NvbXBsZXRlZCA9IHRydWU7Ci0gICAgICAgIHJ1bkNvbXBsZXRp
b25UYXNrcyhsb2NrZXIpOworICAgICAgICBydW5Db21wbGV0aW9uVGFza3MoKTsKICAgICB9CiAK
ICAgICBSZWY8TExJbnRQbGFuPiBtX3BsYW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtVGh1bmtzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VGh1bmtzLmgKaW5kZXggZGU0Y2EzY2NmMGFiZTU0ZGQxMGRlMTgyMjZmNzgxN2MwNDc4MWYzYy4u
YzIzNWNmZTYyOTVlNjY5YWU1YTgwZWU4ZjI1MmVhNmNhMjQzMWI4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21UaHVua3MuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAg
IFRodW5rcygpID0gZGVmYXVsdDsKIAogICAgIEhhc2hNYXA8VGh1bmtHZW5lcmF0b3IsIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4+IG1fc3R1YnM7Ci0gICAgVW5jaGVja2Vk
TG9jayBtX2xvY2s7CisgICAgTG9jayBtX2xvY2s7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6V2FzbQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>