<?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>234338</bug_id>
          
          <creation_ts>2021-12-15 01:59:17 -0800</creation_ts>
          <short_desc>[GTK][a11y] Register the wrappers tree when there&apos;s an event listener registered</short_desc>
          <delta_ts>2022-02-10 16:37:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>230253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824287</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-15 01:59:17 -0800</bug_when>
    <thetext>And only emit the signals when there&apos;s a listener registered for the event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824295</commentid>
    <comment_count>1</comment_count>
      <attachid>447212</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-15 02:17:41 -0800</bug_when>
    <thetext>Created attachment 447212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824297</commentid>
    <comment_count>2</comment_count>
      <attachid>447213</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-15 02:19:51 -0800</bug_when>
    <thetext>Created attachment 447213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824330</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-15 05:48:35 -0800</bug_when>
    <thetext>Committed r287070 (245265@trunk): &lt;https://commits.webkit.org/245265@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447212</attachid>
            <date>2021-12-15 02:17:41 -0800</date>
            <delta_ts>2021-12-15 02:51:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-listeners.diff</filename>
            <type>text/plain</type>
            <size>28317</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNDlhNDFkY2Y2MDcuLjZmNTMxNDcxNWQ4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU1IEBACisyMDIxLTEyLTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBSZWdpc3RlciB0aGUgd3JhcHBlcnMg
dHJlZSB3aGVuIHRoZXJlJ3MgYW4gZXZlbiBsaXN0ZW5lciByZWdpc3RlcmVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb25uZWN0IHRvIHRoZSBhdHNw
aSByZWdpc3RyeSB0byBnZXQgdGhlIGxpc3Qgb2YgcmVnaXN0ZXJlZCBldmVudCBsaXN0ZW5lcnMu
IElmIHRoZXJlJ3MgYW55IGxpc3RlbmVyLCB3ZSByZWdpc3RlcgorICAgICAgICB0aGUgdHJlZSB0
byBlbnN1cmUgd2UgY2FuIGVtaXQgc2lnbmFscywgYnV0IHdlIG9ubHkgZW1pdCB0aGUgc2lnbmFs
cyBmb3Igd2hpY2ggdGhlcmUncyBhIGxpc3RlbmVyIHJlZ2lzdGVyZWQsCisgICAgICAgIGV4Y2Vw
dCBmb3IgdGhlIG9uZXMgcmVxdWlyZWQgYnkgdGhlIGF0c3BpIGNhY2hlLgorCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjpBY2Nlc3NpYmlsaXR5QXRzcGkpOiBDb25uZWN0IHRv
IHRoZSByZWdpc3RyeS4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6fkFj
Y2Vzc2liaWxpdHlBdHNwaSk6IERpc2Nvbm5lY3QgcmVnaXN0cnkgc2lnbmFscy4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6cmVnaXN0ZXJUcmVlcyBjb25zdCk6IFJlZ2lz
dGVyIHRoZSB0cmVlcyBvZiBhbGwgcm9vdCBvYmplY3RzLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eUF0c3BpOjppbml0aWFsaXplUmVnaXN0cnkpOiBHZXQgdGhlIGxpc3Qgb2YgbGlz
dGVuZXJzIHJlZ2lzdGVyZWQgYW5kIGNvbm5lY3QgdG8KKyAgICAgICAgRXZlbnRMaXN0ZW5lclJl
Z2lzdGVyZWQgc2lnbmFsLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjph
ZGRFdmVudExpc3RlbmVyKTogQWRkIGFuIGV2ZW50IGxpc3RlbmVyIHRvIHRoZSBsaXN0IGNvbnZl
cnRpbmcgdGhlIGRldGFpbCB0byBub24KKyAgICAgICAgY2FtZWwgY2FzZSB0byBiZSBhYmVsIHRv
IGNvbXBhcmUgaXQgbGF0ZXIgb24gc2lnbmFsIGVtaXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6
ZXZlbnRJc1N1YnR5cGUpOiBIZWxwZXIgdG8gY2hlY2sgaWYgZXZlbnQgdHlwZSBpcyBzdWJ0eXBl
IG9mIGFub3RoZXIuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OnJlbW92
ZUV2ZW50TGlzdGVuZXIpOiBSZW1vdmUgYW5kIGV2ZW50cyBsaXN0ZW5lciBmcm9tIHRoZSBsaXN0
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjpzaG91bGRFbWl0U2lnbmFs
KTogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIHNpZ25hbCBzaG91bGQgYmUgZW1pdHRlZCwgY2hl
Y2tpbmcgdGhlCisgICAgICAgIHJlZ2lzdGVyZWQgZXZlbnQgbGlzdGVuZXJzLgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjpwYXJlbnRDaGFuZ2VkKTogRG8gbm90IGVtaXQg
dGhlIHNpZ25hbCBpZiB0aGUgb2JqZWN0IGhhc24ndCBiZWVuIHJlZ2lzdGVyZWQgeWV0IHRvCisg
ICAgICAgIGF2b2lkIGZsb29kaW5nIGR1cmluZyB0cmVlIGNyZWF0aW9uLiBXZSBqdXN0IHJlZ2lz
dGVyIHRoZSBvYmplY3QgdGhlIG9iamVjdCBpbiB0aGF0IGNhc2Ugd2hpY2ggd2lsbCB1cGRhdGUg
dGhlCisgICAgICAgIGNhY2hlIGJlY2F1c2UgYWRkQWNjZXNzaWJsZSBpcyBhbHdheXMgY2FsbGVk
LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjpzdGF0ZUNoYW5nZWQpOiBS
ZXR1cm4gZWFybHkgaWYgc2lnbmFsIHNob3VsZCBub3QgYmUgZW1pdHRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6dGV4dENoYW5nZWQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6dGV4dEF0dHJpYnV0ZXNDaGFuZ2VkKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OnRleHRDYXJldE1vdmVk
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OnRleHRTZWxl
Y3Rpb25DaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRz
cGk6OnZhbHVlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUF0c3BpOjpzZWxlY3Rpb25DaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlBdHNwaTo6aGFzRXZlbnRMaXN0ZW5lcnMgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Y2hpbGRBZGRlZCk6IFJldHVybiBlYXJseSBp
ZiBvYmplY3QgaXMgYWxyZWFkeSBkZXRhY2hlZCBvciBpZ25vcmVkLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjaGlsZFJlbW92ZWQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c3RhdGVDaGFuZ2VkKTogRG8g
bm90IHJldHVybiBlYXJseSBpZiB0aGUgb2JqZWN0IGlzIG5vdCByZWdpc3RlcmVkIGJlY2F1c2UK
KyAgICAgICAgd2UgbWlnaHQgZW5kIHVwIGVtaXR0aW5nIHRoZSBzaWduYWwuCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0U2VsZWN0aW9uQXRzcGkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzZWxlY3Rpb25D
aGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmls
aXR5T2JqZWN0VGV4dEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6dGV4dEluc2VydGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0QXRzcGk6OnRleHREZWxldGVkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNlbGVjdGlvbkNoYW5nZWQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0
ZXNDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0VmFsdWVBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0QXRzcGk6OnZhbHVlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZCk6IFJlZ2lzdGVyIHRoZSB0cmVlIGlm
IHRoZXJlIGFyZSBldmVudCBsaXN0ZW5lcnMgcmVnaXN0ZXJlZC4KKwogMjAyMS0xMi0xNCAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11b
YTExeV0gUmVnaXN0ZXIgdGhlIHdyYXBwZXJzIHRyZWUgd2hlbiBvcmcuYTExeS5hdHNwaS5DYWNo
ZS5HZXRJdGVtcygpIGlzIGNhbGxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuY3BwCmluZGV4IDE0MzlhOWY0ZDc0
NC4uZTg5OGMxYWNkMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAj
aW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1VVSUQuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsMTEgKzQzLDE2NCBAQCBBY2Nlc3Np
YmlsaXR5QXRzcGk6OkFjY2Vzc2liaWxpdHlBdHNwaShjb25zdCBTdHJpbmcmIGJ1c0FkZHJlc3Mp
CiAgICAgICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0R1JlZihnX2RidXNfY29ubmVjdGlvbl9uZXdf
Zm9yX2FkZHJlc3Nfc3luYyhidXNBZGRyZXNzLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxHREJ1c0Nvbm5lY3Rpb25GbGFncz4oR19EQlVTX0NPTk5FQ1RJT05fRkxBR1Nf
QVVUSEVOVElDQVRJT05fQ0xJRU5UIHwgR19EQlVTX0NPTk5FQ1RJT05fRkxBR1NfTUVTU0FHRV9C
VVNfQ09OTkVDVElPTiksCiAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCAmZXJyb3Iub3V0
UHRyKCkpKTsKLSAgICAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisKKyAgICAgICAgaWYgKG1fY29u
bmVjdGlvbikKKyAgICAgICAgICAgIGluaXRpYWxpemVSZWdpc3RyeSgpOworICAgICAgICBlbHNl
CiAgICAgICAgICAgICBnX3dhcm5pbmcoIkNhbid0IGNvbm5lY3QgdG8gYTExeSBidXM6ICVzIiwg
ZXJyb3ItPm1lc3NhZ2UpOwogICAgIH0pOwogfQogCitBY2Nlc3NpYmlsaXR5QXRzcGk6On5BY2Nl
c3NpYmlsaXR5QXRzcGkoKQoreworICAgIGlmIChtX3JlZ2lzdHJ5KQorICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEobV9yZWdpc3RyeS5nZXQoKSwgdGhpcyk7Cit9
CisKK3ZvaWQgQWNjZXNzaWJpbGl0eUF0c3BpOjpyZWdpc3RlclRyZWVzKCkgY29uc3QKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGZvciAoYXV0byogcm9vdE9i
amVjdCA6IG1fcm9vdE9iamVjdHMua2V5cygpKSB7CisgICAgICAgIGlmICghcm9vdE9iamVjdC0+
aXNUcmVlUmVnaXN0ZXJlZCgpKQorICAgICAgICAgICAgcm9vdE9iamVjdC0+cmVnaXN0ZXJUcmVl
KCk7CisgICAgfQorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6aW5pdGlhbGl6ZVJlZ2lz
dHJ5KCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIFJFTEVB
U0VfQVNTRVJUKG1fY29ubmVjdGlvbik7CisgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OworICAgIG1fcmVnaXN0cnkgPSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X25ld19zeW5jKG1fY29u
bmVjdGlvbi5nZXQoKSwgR19EQlVTX1BST1hZX0ZMQUdTX0RPX05PVF9MT0FEX1BST1BFUlRJRVMs
IG51bGxwdHIsCisgICAgICAgICJvcmcuYTExeS5hdHNwaS5SZWdpc3RyeSIsICIvb3JnL2ExMXkv
YXRzcGkvcmVnaXN0cnkiLCAib3JnLmExMXkuYXRzcGkuUmVnaXN0cnkiLCBudWxscHRyLCAmZXJy
b3Iub3V0UHRyKCkpKTsKKyAgICBpZiAoIW1fcmVnaXN0cnkpIHsKKyAgICAgICAgZ193YXJuaW5n
KCJGYWlsZWQgdG8gY29ubmVjdCB0byBhdHNwaSByZWdpc3RyeTogJXNcbiIsIGVycm9yLT5tZXNz
YWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9y
ZWdpc3RyeS5nZXQoKSwgImctc2lnbmFsIiwgR19DQUxMQkFDSygrW10oR0RCdXNQcm94eSosIGNo
YXIqLCBjaGFyKiBzaWduYWwsIEdWYXJpYW50KiBwYXJhbWV0ZXJzLCBBY2Nlc3NpYmlsaXR5QXRz
cGkqIGF0c3BpKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGRidXNOYW1lOworICAgICAgICBjb25z
dCBjaGFyKiBldmVudE5hbWU7CisgICAgICAgIGlmICghZ19zdHJjbXAwKHNpZ25hbCwgIkV2ZW50
TGlzdGVuZXJSZWdpc3RlcmVkIikpIHsKKyAgICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1l
dGVycywgIigmcyZzQGFzKSIsICZkYnVzTmFtZSwgJmV2ZW50TmFtZSwgbnVsbHB0cik7CisgICAg
ICAgICAgICBhdHNwaS0+YWRkRXZlbnRMaXN0ZW5lcihkYnVzTmFtZSwgZXZlbnROYW1lKTsKKyAg
ICAgICAgICAgIGF0c3BpLT5yZWdpc3RlclRyZWVzKCk7CisgICAgICAgIH0gZWxzZSBpZiAoIWdf
c3RyY21wMChzaWduYWwsICJFdmVudExpc3RlbmVyRGVyZWdpc3RlcmVkIikpIHsKKyAgICAgICAg
ICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIigmcyZzKSIsICZkYnVzTmFtZSwgJmV2ZW50
TmFtZSk7CisgICAgICAgICAgICBhdHNwaS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihkYnVzTmFtZSwg
ZXZlbnROYW1lKTsKKyAgICAgICAgfQorICAgIH0pLCB0aGlzKTsKKworICAgIEdSZWZQdHI8R1Zh
cmlhbnQ+IHJlc3VsdCA9IGFkb3B0R1JlZihnX2RidXNfcHJveHlfY2FsbF9zeW5jKG1fcmVnaXN0
cnkuZ2V0KCksICJHZXRSZWdpc3RlcmVkRXZlbnRzIiwgbnVsbHB0ciwgR19EQlVTX0NBTExfRkxB
R1NfTk9ORSwgLTEsIG51bGxwdHIsICZlcnJvci5vdXRQdHIoKSkpOworICAgIGlmICghcmVzdWx0
KSB7CisgICAgICAgIGdfd2FybmluZygiRmFpbGVkIHRvIGdldCBhdHNwaSByZWdpc3RlcmVkIGV2
ZW50IGxpc3RlbmVyczogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IGV2ZW50czsKKyAgICBnX3ZhcmlhbnRfZ2V0
KHJlc3VsdC5nZXQoKSwgIihAYShzcykpIiwgJmV2ZW50cy5vdXRQdHIoKSk7CisgICAgR1Zhcmlh
bnRJdGVyIGl0ZXI7CisgICAgYXV0byBldmVudENvdW50ID0gZ192YXJpYW50X2l0ZXJfaW5pdCgm
aXRlciwgZXZlbnRzLmdldCgpKTsKKyAgICBjb25zdCBjaGFyKiBkYnVzTmFtZTsKKyAgICBjb25z
dCBjaGFyKiBldmVudE5hbWU7CisgICAgd2hpbGUgKGdfdmFyaWFudF9pdGVyX2xvb3AoJml0ZXIs
ICIoJnMmcykiLCAmZGJ1c05hbWUsICZldmVudE5hbWUpKQorICAgICAgICBhZGRFdmVudExpc3Rl
bmVyKGRidXNOYW1lLCBldmVudE5hbWUpOworCisgICAgaWYgKGV2ZW50Q291bnQpCisgICAgICAg
IHJlZ2lzdGVyVHJlZXMoKTsKK30KKworc3RhdGljIEdVbmlxdWVQdHI8Y2hhcio+IGV2ZW50Q29u
dmVydGluZ0RldGFpbFRvTm9uQ2FtZWxDYXNlKGNvbnN0IGNoYXIqIGV2ZW50TmFtZSkKK3sKKyAg
ICBHVW5pcXVlUHRyPGNoYXIqPiBldmVudChnX3N0cnNwbGl0KGV2ZW50TmFtZSwgIjoiLCAzKSk7
CisgICAgaWYgKCFldmVudC5nZXQoKVswXSB8fCAhZXZlbnQuZ2V0KClbMV0gfHwgIWV2ZW50Lmdl
dCgpWzJdIHx8ICEqZXZlbnQuZ2V0KClbMl0pCisgICAgICAgIHJldHVybiBldmVudDsKKworICAg
IGNoYXIqIGNvbnZlcnRlZCA9IHN0YXRpY19jYXN0PGNoYXIqPihnX21hbGxvYyhzdHJsZW4oZXZl
bnQuZ2V0KClbMl0pICogMiArIDEpKTsKKyAgICBjaGFyKiBjb252ZXJ0ZWRQdHIgPSBjb252ZXJ0
ZWQ7CisgICAgY2hhciogZGV0YWlsUHRyID0gZXZlbnQuZ2V0KClbMl07CisKKyAgICB3aGlsZSAo
KmRldGFpbFB0cikgeworICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKCpkZXRhaWxQdHIpKSB7Cisg
ICAgICAgICAgICBpZiAoY29udmVydGVkUHRyID4gY29udmVydGVkKQorICAgICAgICAgICAgICAg
ICpjb252ZXJ0ZWRQdHIrKyA9ICctJzsKKyAgICAgICAgICAgICpjb252ZXJ0ZWRQdHIrKyA9IHRv
QVNDSUlMb3dlcigqZGV0YWlsUHRyKyspOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICpj
b252ZXJ0ZWRQdHIrKyA9ICpkZXRhaWxQdHIrKzsKKyAgICB9CisgICAgKmNvbnZlcnRlZFB0ciA9
ICdcMCc7CisKKyAgICBnX2ZyZWUoZXZlbnQuZ2V0KClbMl0pOworICAgIGV2ZW50LmdldCgpWzJd
ID0gY29udmVydGVkOworCisgICAgcmV0dXJuIGV2ZW50OworfQorCit2b2lkIEFjY2Vzc2liaWxp
dHlBdHNwaTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBkYnVzTmFtZSwgY29uc3QgY2hh
ciogZXZlbnROYW1lKQoreworICAgIFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cisg
ICAgYXV0byYgbGlzdGVuZXJzID0gbV9ldmVudExpc3RlbmVycy5lbnN1cmUoZGJ1c05hbWUsIFtd
IHsKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxHVW5pcXVlUHRyPGNoYXIqPj4geyB9OworICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBsaXN0ZW5lcnMuYXBwZW5kKGV2ZW50Q29udmVydGluZ0Rl
dGFpbFRvTm9uQ2FtZWxDYXNlKGV2ZW50TmFtZSkpOworfQorCitzdGF0aWMgYm9vbCBldmVudElz
U3VidHlwZShjaGFyKiogbmVlZGxlLCBjaGFyKiogaGF5c3RhY2spCit7CisgICAgd2hpbGUgKCpo
YXlzdGFjayAmJiAqKmhheXN0YWNrKSB7CisgICAgICAgIGlmIChnX3N0cmNtcDAoKm5lZWRsZSwg
KmhheXN0YWNrKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbmVlZGxlKys7
CisgICAgICAgIGhheXN0YWNrKys7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgQWNjZXNzaWJpbGl0eUF0c3BpOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IGNoYXIqIGRi
dXNOYW1lLCBjb25zdCBjaGFyKiBldmVudE5hbWUpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAoIWV2ZW50TmFtZSB8fCAhKmV2ZW50TmFtZSkgeworICAg
ICAgICBtX2V2ZW50TGlzdGVuZXJzLnJlbW92ZShkYnVzTmFtZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIGl0ID0gbV9ldmVudExpc3RlbmVycy5maW5kKGRidXNOYW1lKTsK
KyAgICBpZiAoaXQgPT0gbV9ldmVudExpc3RlbmVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBuZWVkbGUgPSBldmVudENvbnZlcnRpbmdEZXRhaWxUb05vbkNhbWVsQ2FzZShl
dmVudE5hbWUpOworICAgIGl0LT52YWx1ZS5yZW1vdmVBbGxNYXRjaGluZyhbJl0oY29uc3QgR1Vu
aXF1ZVB0cjxjaGFyKj4mIGV2ZW50KSB7CisgICAgICAgIHJldHVybiBldmVudElzU3VidHlwZShu
ZWVkbGUuZ2V0KCksIGV2ZW50LmdldCgpKTsKKyAgICB9KTsKKworICAgIGlmIChpdC0+dmFsdWUu
aXNFbXB0eSgpKQorICAgICAgICBtX2V2ZW50TGlzdGVuZXJzLnJlbW92ZShpdCk7Cit9CisKK2Jv
b2wgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaG91bGRFbWl0U2lnbmFsKGNvbnN0IGNoYXIqIGludGVy
ZmFjZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogZGV0YWlsKQoreworICAgIFJFTEVB
U0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBBbHdheXMgZW1pdCBzaWduYWxz
IGlmIHdlIGNvdWxkbid0IGNvbm5lY3QgdG8gdGhlIHJlZ2lzdHJ5LgorICAgIGlmICghbV9yZWdp
c3RyeSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV9ldmVudExpc3RlbmVycy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IGNoYXIqIG5lZWRs
ZVs0XSA9IHsgaW50ZXJmYWNlLCBuYW1lLCBkZXRhaWwsIG51bGxwdHIgfTsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIGxpc3RlbmVycyA6IG1fZXZlbnRMaXN0ZW5lcnMudmFsdWVzKCkpIHsKKyAgICAg
ICAgYXV0byByZXN1bHQgPSBsaXN0ZW5lcnMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBHVW5pcXVl
UHRyPGNoYXIqPiYgZXZlbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBldmVudElzU3VidHlwZShj
b25zdF9jYXN0PGNoYXIqKj4obmVlZGxlKSwgZXZlbnQuZ2V0KCkpOworICAgICAgICB9KTsKKyAg
ICAgICAgaWYgKHJlc3VsdCAhPSBub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogUnVuTG9vcCYgQWNjZXNzaWJpbGl0eUF0
c3BpOjpydW5Mb29wKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9xdWV1ZS0+cnVuTG9vcCgpOwpA
QCAtMTgwLDkgKzMzMiwxMiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6cGFyZW50Q2hhbmdl
ZChBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkmIGF0c3BpT2JqZWN0KQogICAgICAgICBpZiAoIWF0
c3BpT2JqZWN0LT5yb290KCkuaXNUcmVlUmVnaXN0ZXJlZCgpKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIC8vIFdlIGNhbGwgcGF0aCBoZXJlIHRvIGVuc3VyZSBpdCBoYXBwZW5zIGJl
Zm9yZSBwYXJlbnRSZWZlcmVuY2UoKSBpbiBjYXNlIG9iamVjdHMgYXJlIG5vdCByZWdpc3RlcmVk
IHlldC4KLSAgICAgICAgYXV0byBwYXRoID0gYXRzcGlPYmplY3QtPnBhdGgoKTsKLSAgICAgICAg
Z19kYnVzX2Nvbm5lY3Rpb25fZW1pdF9zaWduYWwobV9jb25uZWN0aW9uLmdldCgpLCBudWxscHRy
LCBwYXRoLnV0ZjgoKS5kYXRhKCksICJvcmcuYTExeS5hdHNwaS5FdmVudC5PYmplY3QiLCAiUHJv
cGVydHlDaGFuZ2UiLAorICAgICAgICAvLyBFbWl0IHBhcmVudENoYW5nZWQgb25seSBpZiB0aGUg
b2JqZWN0IGlzIGFscmVhZHkgcmVnaXN0ZXJlZCwgb3RoZXJ3aXNlIHJlZ2lzdGVyIHRoZSBvYmpl
Y3QsCisgICAgICAgIC8vIHdpdGhvdXQgZW1pdHRpbmcgdGhlIHNpZ25hbCwgYmVjYXVzZSBvcmcu
YTExeS5hdHNwaS5DYWNoZS5BZGRBY2Nlc3NpYmxlKCkgd2lsbCB1cGRhdGUgdGhlIGNhY2hlLgor
ICAgICAgICBpZiAoYXRzcGlPYmplY3QtPnJlZ2lzdGVyT2JqZWN0KCkpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fZW1pdF9zaWduYWwobV9jb25uZWN0
aW9uLmdldCgpLCBudWxscHRyLCBhdHNwaU9iamVjdC0+cGF0aCgpLnV0ZjgoKS5kYXRhKCksICJv
cmcuYTExeS5hdHNwaS5FdmVudC5PYmplY3QiLCAiUHJvcGVydHlDaGFuZ2UiLAogICAgICAgICAg
ICAgZ192YXJpYW50X25ldygiKHNpaXZhe3N2fSkiLCAiYWNjZXNzaWJsZS1wYXJlbnQiLCAwLCAw
LCBhdHNwaU9iamVjdC0+cGFyZW50UmVmZXJlbmNlKCksIG51bGxwdHIpLCBudWxscHRyKTsKICAg
ICB9KTsKIH0KQEAgLTIxMSw2ICszNjYsOSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6c3Rh
dGVDaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSYgYXRzcGlPYmplY3QsIGNvbgogICAg
ICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBp
ZiAoIXNob3VsZEVtaXRTaWduYWwoIk9iamVjdCIsICJTdGF0ZUNoYW5nZWQiLCBuYW1lLmRhdGEo
KSkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fZW1p
dF9zaWduYWwobV9jb25uZWN0aW9uLmdldCgpLCBudWxscHRyLCBhdHNwaU9iamVjdC0+cGF0aCgp
LnV0ZjgoKS5kYXRhKCksICJvcmcuYTExeS5hdHNwaS5FdmVudC5PYmplY3QiLCAiU3RhdGVDaGFu
Z2VkIiwKICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcoIihzaWl2YXtzdn0pIiwgbmFtZS5kYXRh
KCksIHZhbHVlLCAwLCBnX3ZhcmlhbnRfbmV3X3N0cmluZygiMCIpLCBudWxscHRyKSwgbnVsbHB0
cik7CiAgICAgfSk7CkBAIC0yMjMsNiArMzgxLDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5QXRzcGk6
OnRleHRDaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSYgYXRzcGlPYmplY3QsIGNvbnMK
ICAgICAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAg
ICAgaWYgKCFzaG91bGRFbWl0U2lnbmFsKCJPYmplY3QiLCAiVGV4dENoYW5nZWQiLCBjaGFuZ2VU
eXBlLmRhdGEoKSkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgZ19kYnVzX2Nvbm5l
Y3Rpb25fZW1pdF9zaWduYWwobV9jb25uZWN0aW9uLmdldCgpLCBudWxscHRyLCBhdHNwaU9iamVj
dC0+cGF0aCgpLnV0ZjgoKS5kYXRhKCksICJvcmcuYTExeS5hdHNwaS5FdmVudC5PYmplY3QiLCAi
VGV4dENoYW5nZWQiLAogICAgICAgICAgICAgZ192YXJpYW50X25ldygiKHNpaXZhe3N2fSkiLCBj
aGFuZ2VUeXBlLmRhdGEoKSwgb2Zmc2V0LCBsZW5ndGgsIGdfdmFyaWFudF9uZXdfc3RyaW5nKHRl
eHQuZGF0YSgpKSwgbnVsbHB0ciksIG51bGxwdHIpOwogICAgIH0pOwpAQCAtMjM1LDYgKzM5Niw5
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUF0c3BpOjp0ZXh0QXR0cmlidXRlc0NoYW5nZWQoQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpJiBhdHNwaU9iCiAgICAgICAgIGlmICghbV9jb25uZWN0aW9uKQog
ICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGlmICghc2hvdWxkRW1pdFNpZ25hbCgiT2Jq
ZWN0IiwgIlRleHRBdHRyaWJ1dGVzQ2hhbmdlZCIpKQorICAgICAgICAgICAgcmV0dXJuOworCiAg
ICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX2VtaXRfc2lnbmFsKG1fY29ubmVjdGlvbi5nZXQoKSwg
bnVsbHB0ciwgYXRzcGlPYmplY3QtPnBhdGgoKS51dGY4KCkuZGF0YSgpLCAib3JnLmExMXkuYXRz
cGkuRXZlbnQuT2JqZWN0IiwgIlRleHRBdHRyaWJ1dGVzQ2hhbmdlZCIsCiAgICAgICAgICAgICBn
X3ZhcmlhbnRfbmV3KCIoc2lpdmF7c3Z9KSIsICIiLCAwLCAwLCBnX3ZhcmlhbnRfbmV3X3N0cmlu
ZygiIiksIG51bGxwdHIpLCBudWxscHRyKTsKICAgICB9KTsKQEAgLTI0Nyw2ICs0MTEsOSBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6dGV4dENhcmV0TW92ZWQoQWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpJiBhdHNwaU9iamVjdCwgdQogICAgICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAg
ICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAoIXNob3VsZEVtaXRTaWduYWwoIk9iamVjdCIs
ICJUZXh0Q2FyZXRNb3ZlZCIpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGdfZGJ1
c19jb25uZWN0aW9uX2VtaXRfc2lnbmFsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwgYXRz
cGlPYmplY3QtPnBhdGgoKS51dGY4KCkuZGF0YSgpLCAib3JnLmExMXkuYXRzcGkuRXZlbnQuT2Jq
ZWN0IiwgIlRleHRDYXJldE1vdmVkIiwKICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcoIihzaWl2
YXtzdn0pIiwgIiIsIGNhcmV0T2Zmc2V0LCAwLCBnX3ZhcmlhbnRfbmV3X3N0cmluZygiIiksIG51
bGxwdHIpLCBudWxscHRyKTsKICAgICB9KTsKQEAgLTI1OSw2ICs0MjYsOSBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlBdHNwaTo6dGV4dFNlbGVjdGlvbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpJiBhdHNwaU9iagogICAgICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgICAgIHJl
dHVybjsKIAorICAgICAgICBpZiAoIXNob3VsZEVtaXRTaWduYWwoIk9iamVjdCIsICJUZXh0U2Vs
ZWN0aW9uQ2hhbmdlZCIpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGdfZGJ1c19j
b25uZWN0aW9uX2VtaXRfc2lnbmFsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwgYXRzcGlP
YmplY3QtPnBhdGgoKS51dGY4KCkuZGF0YSgpLCAib3JnLmExMXkuYXRzcGkuRXZlbnQuT2JqZWN0
IiwgIlRleHRTZWxlY3Rpb25DaGFuZ2VkIiwKICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcoIihz
aWl2YXtzdn0pIiwgIiIsIDAsIDAsIGdfdmFyaWFudF9uZXdfc3RyaW5nKCIiKSwgbnVsbHB0ciks
IG51bGxwdHIpOwogICAgIH0pOwpAQCAtMjcxLDYgKzQ0MSw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eUF0c3BpOjp2YWx1ZUNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpJiBhdHNwaU9iamVj
dCwgZG91CiAgICAgICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwog
CisgICAgICAgIGlmICghc2hvdWxkRW1pdFNpZ25hbCgiT2JqZWN0IiwgIlByb3BlcnR5Q2hhbmdl
IiwgImFjY2Vzc2libGUtdmFsdWUiKSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBn
X2RidXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbChtX2Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIs
IGF0c3BpT2JqZWN0LT5wYXRoKCkudXRmOCgpLmRhdGEoKSwgIm9yZy5hMTF5LmF0c3BpLkV2ZW50
Lk9iamVjdCIsICJQcm9wZXJ0eUNoYW5nZSIsCiAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3KCIo
c2lpdmF7c3Z9KSIsICJhY2Nlc3NpYmxlLXZhbHVlIiwgMCwgMCwgZ192YXJpYW50X25ld19kb3Vi
bGUodmFsdWUpLCBudWxscHRyKSwgbnVsbHB0cik7CiAgICAgfSk7CkBAIC0yODMsNiArNDU2LDkg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5QXRzcGk6OnNlbGVjdGlvbkNoYW5nZWQoQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpJiBhdHNwaU9iamVjdCkKICAgICAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAg
ICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgaWYgKCFzaG91bGRFbWl0U2lnbmFsKCJPYmpl
Y3QiLCAiU2VsZWN0aW9uQ2hhbmdlZCIpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAg
IGdfZGJ1c19jb25uZWN0aW9uX2VtaXRfc2lnbmFsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0
ciwgYXRzcGlPYmplY3QtPnBhdGgoKS51dGY4KCkuZGF0YSgpLCAib3JnLmExMXkuYXRzcGkuRXZl
bnQuT2JqZWN0IiwgIlNlbGVjdGlvbkNoYW5nZWQiLAogICAgICAgICAgICAgZ192YXJpYW50X25l
dygiKHNpaXZhe3N2fSkiLCAiIiwgMCwgMCwgZ192YXJpYW50X25ld19zdHJpbmcoIiIpLCBudWxs
cHRyKSwgbnVsbHB0cik7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuaAppbmRleCBkZjA0M2JjNjE0MTIu
LjE3MzFmNDE4ZDI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5oCkBAIC0yNiwxMCArMjYsMTIgQEAKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAK
IHR5cGVkZWYgc3RydWN0IF9HREJ1c0Nvbm5lY3Rpb24gR0RCdXNDb25uZWN0aW9uOwogdHlwZWRl
ZiBzdHJ1Y3QgX0dEQnVzSW50ZXJmYWNlSW5mbyBHREJ1c0ludGVyZmFjZUluZm87CiB0eXBlZGVm
IHN0cnVjdCBfR0RCdXNJbnRlcmZhY2VWVGFibGUgR0RCdXNJbnRlcmZhY2VWVGFibGU7Cit0eXBl
ZGVmIHN0cnVjdCBfR0RCdXNQcm94eSBHREJ1c1Byb3h5OwogdHlwZWRlZiBzdHJ1Y3QgX0dWYXJp
YW50IEdWYXJpYW50OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MSwxMiArNDMsMTMgQEAg
Y2xhc3MgQWNjZXNzaWJpbGl0eUF0c3BpIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5QXRzcGkoY29uc3QgU3RyaW5nJik7Ci0gICAgfkFj
Y2Vzc2liaWxpdHlBdHNwaSgpID0gZGVmYXVsdDsKKyAgICB+QWNjZXNzaWJpbGl0eUF0c3BpKCk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSdW5Mb29wJiBydW5Mb29wKCkgY29uc3Q7CiAKICAgICBj
b25zdCBjaGFyKiB1bmlxdWVOYW1lKCkgY29uc3Q7CiAgICAgR1ZhcmlhbnQqIG51bGxSZWZlcmVu
Y2UoKSBjb25zdDsKKyAgICBib29sIGhhc0V2ZW50TGlzdGVuZXJzKCkgY29uc3QgeyByZXR1cm4g
IW1fZXZlbnRMaXN0ZW5lcnMuaXNFbXB0eSgpOyB9CiAKICAgICB2b2lkIHJlZ2lzdGVyUm9vdChB
Y2Nlc3NpYmlsaXR5Um9vdEF0c3BpJiwgVmVjdG9yPHN0ZDo6cGFpcjxHREJ1c0ludGVyZmFjZUlu
Zm8qLCBHREJ1c0ludGVyZmFjZVZUYWJsZSo+PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJSb290KEFjY2Vzc2liaWxpdHlS
b290QXRzcGkmKTsKQEAgLTc0LDEzICs3NywyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRBY2Nl
c3NpYmxlKEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSYpOwogCiBwcml2YXRlOgorICAgIHZvaWQg
cmVnaXN0ZXJUcmVlcygpIGNvbnN0OworICAgIHZvaWQgaW5pdGlhbGl6ZVJlZ2lzdHJ5KCk7Cisg
ICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IGNoYXIqIGRidXNOYW1lLCBjb25zdCBjaGFy
KiBldmVudE5hbWUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBk
YnVzTmFtZSwgY29uc3QgY2hhciogZXZlbnROYW1lKTsKKwogICAgIHZvaWQgZW5zdXJlQ2FjaGUo
KTsKICAgICB2b2lkIHJlbW92ZUFjY2Vzc2libGUoQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpJik7
CiAKKyAgICBib29sIHNob3VsZEVtaXRTaWduYWwoY29uc3QgY2hhciogaW50ZXJmYWNlLCBjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBkZXRhaWwgPSAiIik7CisKICAgICBzdGF0aWMgR0RC
dXNJbnRlcmZhY2VWVGFibGUgc19jYWNoZUZ1bmN0aW9uczsKIAogICAgIFJlZjxXb3JrUXVldWU+
IG1fcXVldWU7CiAgICAgR1JlZlB0cjxHREJ1c0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAg
ICBHUmVmUHRyPEdEQnVzUHJveHk+IG1fcmVnaXN0cnk7CisgICAgSGFzaE1hcDxDU3RyaW5nLCBW
ZWN0b3I8R1VuaXF1ZVB0cjxjaGFyKj4+PiBtX2V2ZW50TGlzdGVuZXJzOwogICAgIEhhc2hNYXA8
QWNjZXNzaWJpbGl0eVJvb3RBdHNwaSosIFZlY3Rvcjx1bnNpZ25lZCwgMj4+IG1fcm9vdE9iamVj
dHM7CiAgICAgSGFzaE1hcDxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqLCBWZWN0b3I8dW5zaWdu
ZWQsIDIwPj4gbV9hdHNwaU9iamVjdHM7CiAgICAgSGFzaE1hcDxBY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGkqLCBWZWN0b3I8dW5zaWduZWQsIDIwPj4gbV9hdHNwaUh5cGVybGlua3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggMGU0Y2NkNzIwZWE4Li4wOGNkOTMxZWQ1NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTEyMTMsNiArMTIxMyw5IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjaGlsZEFkZGVkKEFjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaSYgY2hpbGQpCiAgICAgaWYgKCFtX2lzUmVnaXN0ZXJlZC5sb2FkKCkpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGlmICghbV9jb3JlT2JqZWN0IHx8IG1fY29yZU9iamVjdC0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBtX3Jvb3QuYXRzcGkoKS5j
aGlsZHJlbkNoYW5nZWQoKnRoaXMsIGNoaWxkLCBBY2Nlc3NpYmlsaXR5QXRzcGk6OkNoaWxkcmVu
Q2hhbmdlZDo6QWRkZWQpOwogfQogCkBAIC0xMjIyLDE1ICsxMjI1LDE1IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpOjpjaGlsZFJlbW92ZWQoQWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
JiBjaGlsZCkKICAgICBpZiAoIW1faXNSZWdpc3RlcmVkLmxvYWQoKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgaWYgKCFtX2NvcmVPYmplY3QgfHwgbV9jb3JlT2JqZWN0LT5hY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fcm9vdC5hdHNwaSgpLmNoaWxk
cmVuQ2hhbmdlZCgqdGhpcywgY2hpbGQsIEFjY2Vzc2liaWxpdHlBdHNwaTo6Q2hpbGRyZW5DaGFu
Z2VkOjpSZW1vdmVkKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnN0YXRl
Q2hhbmdlZChjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVlKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoIW1faXNSZWdpc3RlcmVkLmxvYWQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCiAgICAgbV9yb290LmF0c3BpKCkuc3RhdGVDaGFuZ2VkKCp0aGlzLCBu
YW1lLCB2YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFNlbGVjdGlvbkF0c3BpLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFNlbGVjdGlvbkF0
c3BpLmNwcAppbmRleCAwZjZiZTMwNDU2NWYuLjE2NmM5MGFiYzg4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0U2VsZWN0
aW9uQXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdFNlbGVjdGlvbkF0c3BpLmNwcApAQCAtMjI0LDkgKzIyNCw2IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjbGVhclNlbGVjdGlvbigpIGNvbnN0CiB2b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c2VsZWN0aW9uQ2hhbmdlZCgpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbV9pc1JlZ2lzdGVyZWQubG9h
ZCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX3Jvb3QuYXRzcGkoKS5zZWxlY3Rpb25DaGFu
Z2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKaW5k
ZXggMDYzNDUwZGEyYmVkLi45NTM4MjVkMDkwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0
VGV4dEF0c3BpLmNwcApAQCAtMzQ4LDkgKzM0OCw2IEBAIENTdHJpbmcgQWNjZXNzaWJpbGl0eU9i
amVjdEF0c3BpOjp0ZXh0KGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkgY29uc3QKIHZv
aWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0ZXh0SW5zZXJ0ZWQoY29uc3QgU3RyaW5nJiBp
bnNlcnRlZFRleHQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbV9pc1JlZ2lzdGVyZWQubG9h
ZCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoIW1faW50ZXJmYWNlcy5jb250YWlucyhJ
bnRlcmZhY2U6OlRleHQpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM2Nyw5ICszNjQsNiBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEluc2VydGVkKGNvbnN0IFN0cmluZyYg
aW5zZXJ0ZWRUZXh0LCBjb25zdCBWaQogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnRl
eHREZWxldGVkKGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFZpc2libGVQb3NpdGlv
biYgcG9zaXRpb24pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IGlmICghbV9pc1JlZ2lzdGVyZWQubG9hZCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAo
IW1faW50ZXJmYWNlcy5jb250YWlucyhJbnRlcmZhY2U6OlRleHQpKQogICAgICAgICByZXR1cm47
CiAKQEAgLTc1MSw5ICs3NDUsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c2Vs
ZWN0UmFuZ2UoaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQogdm9pZCBBY2Nlc3NpYmls
aXR5T2JqZWN0QXRzcGk6OnNlbGVjdGlvbkNoYW5nZWQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBp
ZiAoIW1faXNSZWdpc3RlcmVkLmxvYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFt
X2ludGVyZmFjZXMuY29udGFpbnMoSW50ZXJmYWNlOjpUZXh0KSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC05NDMsOSArOTM0LDYgQEAgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpUZXh0QXR0cmli
dXRlcyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnRleHRBdHRyaWJ1dGUKIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlc0NoYW5nZWQoKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoIW1faXNSZWdpc3RlcmVkLmxvYWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFtX2ludGVyZmFjZXMuY29udGFpbnMoSW50
ZXJmYWNlOjpUZXh0KSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RWYWx1ZUF0c3BpLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFZhbHVlQXRzcGkuY3BwCmluZGV4IGUzOTg5MjllOThmMy4uNThlZWU1ZjBjMGI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RWYWx1ZUF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RWYWx1ZUF0c3BpLmNwcApAQCAtMTM0LDkgKzEzNCw2IEBAIGRv
dWJsZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6Om1pbmltdW1JbmNyZW1lbnQoKSBjb25zdAog
dm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnZhbHVlQ2hhbmdlZChkb3VibGUgdmFsdWUp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbV9pc1Jl
Z2lzdGVyZWQubG9hZCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX3Jvb3QuYXRzcGkoKS52
YWx1ZUNoYW5nZWQoKnRoaXMsIHZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
aW5kZXggMWFlOGYxN2Y4MjE2Li5iM2I2MGFjNjc5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3Bp
LmNwcApAQCAtMjIzLDYgKzIyMyw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6ZW1i
ZWRkZWQoY29uc3QgY2hhciogcGFyZW50VW5pcXVlTmFtZSwgY29uc3QgY2hhcioKICAgICBSRUxF
QVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBh
cmVudFVuaXF1ZU5hbWU7CiAgICAgbV9wYXJlbnRQYXRoID0gcGFyZW50UGF0aDsKKyAgICBpZiAo
IW1faXNUcmVlUmVnaXN0ZXJlZC5sb2FkKCkgJiYgbV9hdHNwaS5oYXNFdmVudExpc3RlbmVycygp
KQorICAgICAgICByZWdpc3RlclRyZWUoKTsKIH0KIAogR1ZhcmlhbnQqIEFjY2Vzc2liaWxpdHlS
b290QXRzcGk6OmFwcGxpY2F0aW9uUmVmZXJlbmNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhYjhhODNiNjU0N2IuLjNjYjczOTk5
NGU5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDIxLTEyLTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBSZWdpc3RlciB0aGUgd3JhcHBl
cnMgdHJlZSB3aGVuIHRoZXJlJ3MgYW4gZXZlbiBsaXN0ZW5lciByZWdpc3RlcmVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzMzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdW5pdCB0ZXN0IHRv
IGNoZWNrIHRoZSB0cmVlIGlzIGNyZWF0ZWQgd2hlbiB0aGVyZSdzIGEgbGlzdGVuZXIgY29ubmVj
dGVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktp
dEFjY2Vzc2liaWxpdHkuY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVRlc3Q6OmZpbmRUZXN0
QXBwbGljYXRpb24pOiBJdGVyYXRlIHRoZSBhcHBsaWNhdGlvbnMgbGlzdCBiYWNrd2FyZHMgc2lu
Y2UgdGhlIHRlc3QgcHJvZ3JhbSBpcworICAgICAgICB1c3VhbGx5IHRoZSBsYXN0IG9uZSBpbiB0
aGUgbGlzdC4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlUZXN0OjphY2Nlc3NpYmxlQXBwbGljYXRp
b25Jc1Rlc3RQcm9ncmFtKTogSGVscGVyIHRvIGNoZWNrIGlmIGEgZ2l2ZW4gYWNjZXNzaWJsZSBi
ZWxvbmdzIHRvIHRoZQorICAgICAgICB0ZXN0IHByb2dyYW0uCisgICAgICAgIChBY2Nlc3NpYmls
aXR5VGVzdDo6c3RhcnRFdmVudE1vbml0b3IpOiBTdXBwb3J0IGZvciBsaXN0ZW5pbmcgdG8gZXZl
bnRzIGFzc29jaWF0ZWQgdG8gdGhlIHRlc3QgcHJvZ3JhbSwgbm90IHRvIGEKKyAgICAgICAgcGFy
dGljdWxhciBhY2Nlc3NpYmxlLgorICAgICAgICAodGVzdEFjY2Vzc2libGVFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisKIDIwMjEtMTItMTMgIEpvaG4gV2lsYW5kZXIgIDx3
aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUENNOiBSZW1vdmUgb2xkIERCIHVwZGF0ZSBh
bmQgbWlncmF0aW9uIGNvZGUsIGFuZCBhZGQgYSB1bml0IHRlc3QgZm9yIGRlc3RpbmF0aW9uIHRv
a2VuIERCIGNvbHVtbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcAppbmRleCBjOTFhMTU0
YzgzYjIuLmFjZWVlNTU0NDU5MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcApAQCAt
NTcsOSArNTcsMTAgQEAgcHVibGljOgogICAgICAgICBUZXN0OjpyZW1vdmVMb2dGYXRhbEZsYWco
R19MT0dfTEVWRUxfV0FSTklORyk7CiAgICAgICAgIGludCBjaGlsZENvdW50ID0gYXRzcGlfYWNj
ZXNzaWJsZV9nZXRfY2hpbGRfY291bnQoZGVza3RvcC5nZXQoKSwgbnVsbHB0cik7CiAgICAgICAg
IFRlc3Q6OmFkZExvZ0ZhdGFsRmxhZyhHX0xPR19MRVZFTF9XQVJOSU5HKTsKLSAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBjaGlsZENvdW50OyArK2kpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9
IGNoaWxkQ291bnQgLSAxOyBpID49IDA7IC0taSkgIHsKICAgICAgICAgICAgIEdSZWZQdHI8QXRz
cGlBY2Nlc3NpYmxlPiBjdXJyZW50ID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X2No
aWxkX2F0X2luZGV4KGRlc2t0b3AuZ2V0KCksIGksIG51bGxwdHIpKTsKLSAgICAgICAgICAgIGlm
ICghZ19zdHJjbXAwKGF0c3BpX2FjY2Vzc2libGVfZ2V0X25hbWUoY3VycmVudC5nZXQoKSwgbnVs
bHB0ciksICJUZXN0V2ViS2l0QWNjZXNzaWJpbGl0eSIpKQorICAgICAgICAgICAgR1VuaXF1ZVB0
cjxjaGFyPiBuYW1lKGF0c3BpX2FjY2Vzc2libGVfZ2V0X25hbWUoY3VycmVudC5nZXQoKSwgbnVs
bHB0cikpOworICAgICAgICAgICAgaWYgKCFnX3N0cmNtcDAobmFtZS5nZXQoKSwgIlRlc3RXZWJL
aXRBY2Nlc3NpYmlsaXR5IikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiAgICAg
ICAgIH0KIApAQCAtMTA2LDE0ICsxMDcsMjMgQEAgcHVibGljOgogICAgICAgICBtX2V2ZW50U291
cmNlID0gbnVsbHB0cjsKICAgICB9CiAKKyAgICBzdGF0aWMgYm9vbCBhY2Nlc3NpYmxlQXBwbGlj
YXRpb25Jc1Rlc3RQcm9ncmFtKEF0c3BpQWNjZXNzaWJsZSogYWNjZXNzaWJsZSkKKyAgICB7Cisg
ICAgICAgIEdSZWZQdHI8QXRzcGlBY2Nlc3NpYmxlPiBhcHBsaWNhdGlvbiA9IGFkb3B0R1JlZihh
dHNwaV9hY2Nlc3NpYmxlX2dldF9hcHBsaWNhdGlvbihhY2Nlc3NpYmxlLCBudWxscHRyKSk7Cisg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXBwbGljYXRpb25OYW1lKGF0c3BpX2FjY2Vzc2libGVf
Z2V0X25hbWUoYXBwbGljYXRpb24uZ2V0KCksIG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuICFn
X3N0cmNtcDAoYXBwbGljYXRpb25OYW1lLmdldCgpLCAiVGVzdFdlYktpdEFjY2Vzc2liaWxpdHki
KTsKKyAgICB9CisKICAgICB2b2lkIHN0YXJ0RXZlbnRNb25pdG9yKEF0c3BpQWNjZXNzaWJsZSog
c291cmNlLCBWZWN0b3I8Q1N0cmluZz4mJiBldmVudHMpCiAgICAgewogICAgICAgICBtX2V2ZW50
TW9uaXRvci5zb3VyY2UgPSBzb3VyY2U7CiAgICAgICAgIG1fZXZlbnRNb25pdG9yLmV2ZW50VHlw
ZXMgPSBXVEZNb3ZlKGV2ZW50cyk7CiAgICAgICAgIG1fZXZlbnRNb25pdG9yLmxpc3RlbmVyID0g
YWRvcHRHUmVmKGF0c3BpX2V2ZW50X2xpc3RlbmVyX25ldyhbXShBdHNwaUV2ZW50KiBldmVudCwg
Z3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgICAgIGF1dG8qIHRlc3QgPSBzdGF0aWNfY2Fz
dDxBY2Nlc3NpYmlsaXR5VGVzdCo+KHVzZXJEYXRhKTsKLSAgICAgICAgICAgIGlmIChldmVudC0+
c291cmNlID09IHRlc3QtPm1fZXZlbnRNb25pdG9yLnNvdXJjZSkKKyAgICAgICAgICAgIGlmICgo
dGVzdC0+bV9ldmVudE1vbml0b3Iuc291cmNlICYmIGV2ZW50LT5zb3VyY2UgPT0gdGVzdC0+bV9l
dmVudE1vbml0b3Iuc291cmNlKQorICAgICAgICAgICAgICAgIHx8ICghdGVzdC0+bV9ldmVudE1v
bml0b3Iuc291cmNlICYmIGFjY2Vzc2libGVBcHBsaWNhdGlvbklzVGVzdFByb2dyYW0oZXZlbnQt
PnNvdXJjZSkpKSB7CiAgICAgICAgICAgICAgICAgdGVzdC0+bV9ldmVudE1vbml0b3IuZXZlbnRz
LmFwcGVuZChzdGF0aWNfY2FzdDxBdHNwaUV2ZW50Kj4oZ19ib3hlZF9jb3B5KEFUU1BJX1RZUEVf
RVZFTlQsIGV2ZW50KSkpOworICAgICAgICAgICAgfQogICAgICAgICB9LCB0aGlzLCBudWxscHRy
KSk7CiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBldmVudCA6IG1fZXZlbnRNb25pdG9yLmV2
ZW50VHlwZXMpCkBAIC04MTEsNiArODIxLDQ1IEBAIHN0YXRpYyB2b2lkIHRlc3RBY2Nlc3NpYmxl
U3RhdGVDaGFuZ2VkKEFjY2Vzc2liaWxpdHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogI2Vu
ZGlmCiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RBY2Nlc3NpYmxlRXZlbnRMaXN0ZW5lcihBY2Nlc3Np
YmlsaXR5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5zdGFydEV2ZW50
TW9uaXRvcihudWxscHRyLCB7ICJvYmplY3Q6c3RhdGUtY2hhbmdlZDpmb2N1c2VkIiB9KTsKKyAg
ICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKKyAgICB0ZXN0LT5sb2FkSHRtbCgKKyAgICAgICAgIjxo
dG1sPiIKKyAgICAgICAgIiAgPGJvZHk+IgorICAgICAgICAiICAgIDxpbnB1dCBpZD0nZW50cnkn
IHR5cGU9J3RleHQnLz4iCisgICAgICAgICIgIDwvYm9keT4iCisgICAgICAgICI8L2h0bWw+IiwK
KyAgICAgICAgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisK
KyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdlbnRyeScpLmZvY3VzKCk7IiwgbnVsbHB0cik7CisKKyAgICBhdXRvIGV2
ZW50cyA9IHRlc3QtPnN0b3BFdmVudE1vbml0b3IoMSk7CisgICAgZ19hc3NlcnRfY21wdWludChl
dmVudHMuc2l6ZSgpLCA9PSwgMSk7CisgICAgZ19hc3NlcnRfY21wc3RyKGV2ZW50c1swXS0+dHlw
ZSwgPT0sICJvYmplY3Q6c3RhdGUtY2hhbmdlZDpmb2N1c2VkIik7CisgICAgYXV0byogZW50cnkg
PSBldmVudHNbMF0tPnNvdXJjZTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lC
TEUoZW50cnkpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfcm9s
ZShlbnRyeSwgbnVsbHB0ciksID09LCBBVFNQSV9ST0xFX0VOVFJZKTsKKworICAgIGF1dG8gcGFu
ZWwgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfcGFyZW50KGVudHJ5LCBudWxscHRy
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKHBhbmVsLmdldCgpKSk7
CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2FjY2Vzc2libGVfZ2V0X3JvbGUocGFuZWwuZ2V0
KCksIG51bGxwdHIpLCA9PSwgQVRTUElfUk9MRV9QQU5FTCk7CisKKyAgICBhdXRvIGRvY3VtZW50
V2ViID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0X3BhcmVudChwYW5lbC5nZXQoKSwg
bnVsbHB0cikpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShkb2N1bWVu
dFdlYi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9hY2Nlc3NpYmxlX2dldF9y
b2xlKGRvY3VtZW50V2ViLmdldCgpLCBudWxscHRyKSwgPT0sIEFUU1BJX1JPTEVfRE9DVU1FTlRf
V0VCKTsKKworICAgIGF1dG8gc2Nyb2xsVmlldyA9IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxl
X2dldF9wYXJlbnQoZG9jdW1lbnRXZWIuZ2V0KCksIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90
cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoc2Nyb2xsVmlldy5nZXQoKSkpOworICAgIGdfYXNzZXJ0
X2NtcGludChhdHNwaV9hY2Nlc3NpYmxlX2dldF9yb2xlKHNjcm9sbFZpZXcuZ2V0KCksIG51bGxw
dHIpLCA9PSwgQVRTUElfUk9MRV9TQ1JPTExfUEFORSk7CisKKyAgICBhdXRvIHJvb3RPYmplY3Qg
PSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfcGFyZW50KHNjcm9sbFZpZXcuZ2V0KCks
IG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUocm9vdE9i
amVjdC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9hY2Nlc3NpYmxlX2dldF9y
b2xlKHJvb3RPYmplY3QuZ2V0KCksIG51bGxwdHIpLCA9PSwgQVRTUElfUk9MRV9GSUxMRVIpOwor
fQorCiBzdGF0aWMgdm9pZCB0ZXN0Q29tcG9uZW50SGl0VGVzdChBY2Nlc3NpYmlsaXR5VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKQEAgLTI3
NTIsNiArMjgwMSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBBY2Nlc3NpYmlsaXR5VGVzdDo6
YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgImFjY2Vzc2libGUvYXR0cmlidXRlcyIsIHRlc3RB
Y2Nlc3NpYmxlQXR0cmlidXRlcyk7CiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2ViS2l0
QWNjZXNzaWJpbGl0eSIsICJhY2Nlc3NpYmxlL3N0YXRlIiwgdGVzdEFjY2Vzc2libGVTdGF0ZSk7
CiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2ViS2l0QWNjZXNzaWJpbGl0eSIsICJhY2Nl
c3NpYmxlL3N0YXRlLWNoYW5nZWQiLCB0ZXN0QWNjZXNzaWJsZVN0YXRlQ2hhbmdlZCk7CisgICAg
QWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2ViS2l0QWNjZXNzaWJpbGl0eSIsICJhY2Nlc3NpYmxl
L2V2ZW50LWxpc3RlbmVyIiwgdGVzdEFjY2Vzc2libGVFdmVudExpc3RlbmVyKTsKICAgICBBY2Nl
c3NpYmlsaXR5VGVzdDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgImNvbXBvbmVudC9oaXQt
dGVzdCIsIHRlc3RDb21wb25lbnRIaXRUZXN0KTsKICNpZmRlZiBBVFNQSV9TQ1JPTExUWVBFX0NP
VU5UCiAgICAgQWNjZXNzaWJpbGl0eVRlc3Q6OmFkZCgiV2ViS2l0QWNjZXNzaWJpbGl0eSIsICJj
b21wb25lbnQvc2Nyb2xsLXRvIiwgdGVzdENvbXBvbmVudFNjcm9sbFRvKTsK
</data>
<flag name="review"
          id="472786"
          type_id="1"
          status="+"
          setter="jdiggs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447213</attachid>
            <date>2021-12-15 02:19:51 -0800</date>
            <delta_ts>2022-02-10 16:37:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-listeners.diff</filename>
            <type>text/plain</type>
            <size>28319</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNDlhNDFkY2Y2MDcuLjUyZmU1NWY4Y2M4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU1IEBACisyMDIxLTEyLTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBSZWdpc3RlciB0aGUgd3JhcHBlcnMg
dHJlZSB3aGVuIHRoZXJlJ3MgYW4gZXZlbnQgbGlzdGVuZXIgcmVnaXN0ZXJlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzM4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29ubmVjdCB0byB0aGUgYXRz
cGkgcmVnaXN0cnkgdG8gZ2V0IHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgZXZlbnQgbGlzdGVuZXJz
LiBJZiB0aGVyZSdzIGFueSBsaXN0ZW5lciwgd2UgcmVnaXN0ZXIKKyAgICAgICAgdGhlIHRyZWUg
dG8gZW5zdXJlIHdlIGNhbiBlbWl0IHNpZ25hbHMsIGJ1dCB3ZSBvbmx5IGVtaXQgdGhlIHNpZ25h
bHMgZm9yIHdoaWNoIHRoZXJlJ3MgYSBsaXN0ZW5lciByZWdpc3RlcmVkLAorICAgICAgICBleGNl
cHQgZm9yIHRoZSBvbmVzIHJlcXVpcmVkIGJ5IHRoZSBhdHNwaSBjYWNoZS4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6QWNjZXNzaWJpbGl0eUF0c3BpKTogQ29ubmVjdCB0
byB0aGUgcmVnaXN0cnkuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6On5B
Y2Nlc3NpYmlsaXR5QXRzcGkpOiBEaXNjb25uZWN0IHJlZ2lzdHJ5IHNpZ25hbHMuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OnJlZ2lzdGVyVHJlZXMgY29uc3QpOiBSZWdp
c3RlciB0aGUgdHJlZXMgb2YgYWxsIHJvb3Qgb2JqZWN0cy4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlBdHNwaTo6aW5pdGlhbGl6ZVJlZ2lzdHJ5KTogR2V0IHRoZSBsaXN0IG9mIGxp
c3RlbmVycyByZWdpc3RlcmVkIGFuZCBjb25uZWN0IHRvCisgICAgICAgIEV2ZW50TGlzdGVuZXJS
ZWdpc3RlcmVkIHNpZ25hbC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6
YWRkRXZlbnRMaXN0ZW5lcik6IEFkZCBhbiBldmVudCBsaXN0ZW5lciB0byB0aGUgbGlzdCBjb252
ZXJ0aW5nIHRoZSBkZXRhaWwgdG8gbm9uCisgICAgICAgIGNhbWVsIGNhc2UgdG8gYmUgYWJlbCB0
byBjb21wYXJlIGl0IGxhdGVyIG9uIHNpZ25hbCBlbWlzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6
OmV2ZW50SXNTdWJ0eXBlKTogSGVscGVyIHRvIGNoZWNrIGlmIGV2ZW50IHR5cGUgaXMgc3VidHlw
ZSBvZiBhbm90aGVyLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjpyZW1v
dmVFdmVudExpc3RlbmVyKTogUmVtb3ZlIGFuZCBldmVudHMgbGlzdGVuZXIgZnJvbSB0aGUgbGlz
dC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6c2hvdWxkRW1pdFNpZ25h
bCk6IFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBzaWduYWwgc2hvdWxkIGJlIGVtaXR0ZWQsIGNo
ZWNraW5nIHRoZQorICAgICAgICByZWdpc3RlcmVkIGV2ZW50IGxpc3RlbmVycy4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6cGFyZW50Q2hhbmdlZCk6IERvIG5vdCBlbWl0
IHRoZSBzaWduYWwgaWYgdGhlIG9iamVjdCBoYXNuJ3QgYmVlbiByZWdpc3RlcmVkIHlldCB0bwor
ICAgICAgICBhdm9pZCBmbG9vZGluZyBkdXJpbmcgdHJlZSBjcmVhdGlvbi4gV2UganVzdCByZWdp
c3RlciB0aGUgb2JqZWN0IHRoZSBvYmplY3QgaW4gdGhhdCBjYXNlIHdoaWNoIHdpbGwgdXBkYXRl
IHRoZQorICAgICAgICBjYWNoZSBiZWNhdXNlIGFkZEFjY2Vzc2libGUgaXMgYWx3YXlzIGNhbGxl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6c3RhdGVDaGFuZ2VkKTog
UmV0dXJuIGVhcmx5IGlmIHNpZ25hbCBzaG91bGQgbm90IGJlIGVtaXR0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OnRleHRDaGFuZ2VkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OnRleHRBdHRyaWJ1dGVzQ2hhbmdlZCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjp0ZXh0Q2FyZXRNb3Zl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjp0ZXh0U2Vs
ZWN0aW9uQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0
c3BpOjp2YWx1ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlBdHNwaTo6c2VsZWN0aW9uQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QXRzcGk6Omhhc0V2ZW50TGlzdGVuZXJzIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNoaWxkQWRkZWQpOiBSZXR1cm4gZWFybHkg
aWYgb2JqZWN0IGlzIGFscmVhZHkgZGV0YWNoZWQgb3IgaWdub3JlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Y2hpbGRSZW1vdmVkKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnN0YXRlQ2hhbmdlZCk6IERv
IG5vdCByZXR1cm4gZWFybHkgaWYgdGhlIG9iamVjdCBpcyBub3QgcmVnaXN0ZXJlZCBiZWNhdXNl
CisgICAgICAgIHdlIG1pZ2h0IGVuZCB1cCBlbWl0dGluZyB0aGUgc2lnbmFsLgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFNlbGVjdGlvbkF0c3BpLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c2VsZWN0aW9u
Q2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJp
bGl0eU9iamVjdFRleHRBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGk6OnRleHRJbnNlcnRlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0ZXh0RGVsZXRlZCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzZWxlY3Rpb25DaGFuZ2VkKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnRleHRBdHRyaWJ1
dGVzQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdFZhbHVlQXRzcGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjp2YWx1ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6ZW1iZWRkZWQpOiBSZWdpc3RlciB0aGUgdHJlZSBp
ZiB0aGVyZSBhcmUgZXZlbnQgbGlzdGVuZXJzIHJlZ2lzdGVyZWQuCisKIDIwMjEtMTItMTQgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W2ExMXldIFJlZ2lzdGVyIHRoZSB3cmFwcGVycyB0cmVlIHdoZW4gb3JnLmExMXkuYXRzcGkuQ2Fj
aGUuR2V0SXRlbXMoKSBpcyBjYWxsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcAppbmRleCAxNDM5YTlmNGQ3
NDQuLmU4OThjMWFjZDE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcApAQCAtMjksNyArMjksNiBAQAog
I2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDExICs0MywxNjQgQEAgQWNjZXNz
aWJpbGl0eUF0c3BpOjpBY2Nlc3NpYmlsaXR5QXRzcGkoY29uc3QgU3RyaW5nJiBidXNBZGRyZXNz
KQogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBhZG9wdEdSZWYoZ19kYnVzX2Nvbm5lY3Rpb25fbmV3
X2Zvcl9hZGRyZXNzX3N5bmMoYnVzQWRkcmVzcy51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8R0RCdXNDb25uZWN0aW9uRmxhZ3M+KEdfREJVU19DT05ORUNUSU9OX0ZMQUdT
X0FVVEhFTlRJQ0FUSU9OX0NMSUVOVCB8IEdfREJVU19DT05ORUNUSU9OX0ZMQUdTX01FU1NBR0Vf
QlVTX0NPTk5FQ1RJT04pLAogICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgJmVycm9yLm91
dFB0cigpKSk7Ci0gICAgICAgIGlmICghbV9jb25uZWN0aW9uKQorCisgICAgICAgIGlmIChtX2Nv
bm5lY3Rpb24pCisgICAgICAgICAgICBpbml0aWFsaXplUmVnaXN0cnkoKTsKKyAgICAgICAgZWxz
ZQogICAgICAgICAgICAgZ193YXJuaW5nKCJDYW4ndCBjb25uZWN0IHRvIGExMXkgYnVzOiAlcyIs
IGVycm9yLT5tZXNzYWdlKTsKICAgICB9KTsKIH0KIAorQWNjZXNzaWJpbGl0eUF0c3BpOjp+QWNj
ZXNzaWJpbGl0eUF0c3BpKCkKK3sKKyAgICBpZiAobV9yZWdpc3RyeSkKKyAgICAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1fcmVnaXN0cnkuZ2V0KCksIHRoaXMpOwor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6cmVnaXN0ZXJUcmVlcygpIGNvbnN0Cit7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBmb3IgKGF1dG8qIHJvb3RP
YmplY3QgOiBtX3Jvb3RPYmplY3RzLmtleXMoKSkgeworICAgICAgICBpZiAoIXJvb3RPYmplY3Qt
PmlzVHJlZVJlZ2lzdGVyZWQoKSkKKyAgICAgICAgICAgIHJvb3RPYmplY3QtPnJlZ2lzdGVyVHJl
ZSgpOworICAgIH0KK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5QXRzcGk6OmluaXRpYWxpemVSZWdp
c3RyeSgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChtX2Nvbm5lY3Rpb24pOworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJv
cjsKKyAgICBtX3JlZ2lzdHJ5ID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9uZXdfc3luYyhtX2Nv
bm5lY3Rpb24uZ2V0KCksIEdfREJVU19QUk9YWV9GTEFHU19ET19OT1RfTE9BRF9QUk9QRVJUSUVT
LCBudWxscHRyLAorICAgICAgICAib3JnLmExMXkuYXRzcGkuUmVnaXN0cnkiLCAiL29yZy9hMTF5
L2F0c3BpL3JlZ2lzdHJ5IiwgIm9yZy5hMTF5LmF0c3BpLlJlZ2lzdHJ5IiwgbnVsbHB0ciwgJmVy
cm9yLm91dFB0cigpKSk7CisgICAgaWYgKCFtX3JlZ2lzdHJ5KSB7CisgICAgICAgIGdfd2Fybmlu
ZygiRmFpbGVkIHRvIGNvbm5lY3QgdG8gYXRzcGkgcmVnaXN0cnk6ICVzXG4iLCBlcnJvci0+bWVz
c2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1f
cmVnaXN0cnkuZ2V0KCksICJnLXNpZ25hbCIsIEdfQ0FMTEJBQ0soK1tdKEdEQnVzUHJveHkqLCBj
aGFyKiwgY2hhciogc2lnbmFsLCBHVmFyaWFudCogcGFyYW1ldGVycywgQWNjZXNzaWJpbGl0eUF0
c3BpKiBhdHNwaSkgeworICAgICAgICBjb25zdCBjaGFyKiBkYnVzTmFtZTsKKyAgICAgICAgY29u
c3QgY2hhciogZXZlbnROYW1lOworICAgICAgICBpZiAoIWdfc3RyY21wMChzaWduYWwsICJFdmVu
dExpc3RlbmVyUmVnaXN0ZXJlZCIpKSB7CisgICAgICAgICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFt
ZXRlcnMsICIoJnMmc0BhcykiLCAmZGJ1c05hbWUsICZldmVudE5hbWUsIG51bGxwdHIpOworICAg
ICAgICAgICAgYXRzcGktPmFkZEV2ZW50TGlzdGVuZXIoZGJ1c05hbWUsIGV2ZW50TmFtZSk7Cisg
ICAgICAgICAgICBhdHNwaS0+cmVnaXN0ZXJUcmVlcygpOworICAgICAgICB9IGVsc2UgaWYgKCFn
X3N0cmNtcDAoc2lnbmFsLCAiRXZlbnRMaXN0ZW5lckRlcmVnaXN0ZXJlZCIpKSB7CisgICAgICAg
ICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIoJnMmcykiLCAmZGJ1c05hbWUsICZldmVu
dE5hbWUpOworICAgICAgICAgICAgYXRzcGktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZGJ1c05hbWUs
IGV2ZW50TmFtZSk7CisgICAgICAgIH0KKyAgICB9KSwgdGhpcyk7CisKKyAgICBHUmVmUHRyPEdW
YXJpYW50PiByZXN1bHQgPSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X2NhbGxfc3luYyhtX3JlZ2lz
dHJ5LmdldCgpLCAiR2V0UmVnaXN0ZXJlZEV2ZW50cyIsIG51bGxwdHIsIEdfREJVU19DQUxMX0ZM
QUdTX05PTkUsIC0xLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICBpZiAoIXJlc3Vs
dCkgeworICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBnZXQgYXRzcGkgcmVnaXN0ZXJlZCBl
dmVudCBsaXN0ZW5lcnM6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBHUmVmUHRyPEdWYXJpYW50PiBldmVudHM7CisgICAgZ192YXJpYW50X2dl
dChyZXN1bHQuZ2V0KCksICIoQGEoc3MpKSIsICZldmVudHMub3V0UHRyKCkpOworICAgIEdWYXJp
YW50SXRlciBpdGVyOworICAgIGF1dG8gZXZlbnRDb3VudCA9IGdfdmFyaWFudF9pdGVyX2luaXQo
Jml0ZXIsIGV2ZW50cy5nZXQoKSk7CisgICAgY29uc3QgY2hhciogZGJ1c05hbWU7CisgICAgY29u
c3QgY2hhciogZXZlbnROYW1lOworICAgIHdoaWxlIChnX3ZhcmlhbnRfaXRlcl9sb29wKCZpdGVy
LCAiKCZzJnMpIiwgJmRidXNOYW1lLCAmZXZlbnROYW1lKSkKKyAgICAgICAgYWRkRXZlbnRMaXN0
ZW5lcihkYnVzTmFtZSwgZXZlbnROYW1lKTsKKworICAgIGlmIChldmVudENvdW50KQorICAgICAg
ICByZWdpc3RlclRyZWVzKCk7Cit9CisKK3N0YXRpYyBHVW5pcXVlUHRyPGNoYXIqPiBldmVudENv
bnZlcnRpbmdEZXRhaWxUb05vbkNhbWVsQ2FzZShjb25zdCBjaGFyKiBldmVudE5hbWUpCit7Cisg
ICAgR1VuaXF1ZVB0cjxjaGFyKj4gZXZlbnQoZ19zdHJzcGxpdChldmVudE5hbWUsICI6IiwgMykp
OworICAgIGlmICghZXZlbnQuZ2V0KClbMF0gfHwgIWV2ZW50LmdldCgpWzFdIHx8ICFldmVudC5n
ZXQoKVsyXSB8fCAhKmV2ZW50LmdldCgpWzJdKQorICAgICAgICByZXR1cm4gZXZlbnQ7CisKKyAg
ICBjaGFyKiBjb252ZXJ0ZWQgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19tYWxsb2Moc3RybGVuKGV2
ZW50LmdldCgpWzJdKSAqIDIgKyAxKSk7CisgICAgY2hhciogY29udmVydGVkUHRyID0gY29udmVy
dGVkOworICAgIGNoYXIqIGRldGFpbFB0ciA9IGV2ZW50LmdldCgpWzJdOworCisgICAgd2hpbGUg
KCpkZXRhaWxQdHIpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlVcHBlcigqZGV0YWlsUHRyKSkgewor
ICAgICAgICAgICAgaWYgKGNvbnZlcnRlZFB0ciA+IGNvbnZlcnRlZCkKKyAgICAgICAgICAgICAg
ICAqY29udmVydGVkUHRyKysgPSAnLSc7CisgICAgICAgICAgICAqY29udmVydGVkUHRyKysgPSB0
b0FTQ0lJTG93ZXIoKmRldGFpbFB0cisrKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAq
Y29udmVydGVkUHRyKysgPSAqZGV0YWlsUHRyKys7CisgICAgfQorICAgICpjb252ZXJ0ZWRQdHIg
PSAnXDAnOworCisgICAgZ19mcmVlKGV2ZW50LmdldCgpWzJdKTsKKyAgICBldmVudC5nZXQoKVsy
XSA9IGNvbnZlcnRlZDsKKworICAgIHJldHVybiBldmVudDsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5QXRzcGk6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciogZGJ1c05hbWUsIGNvbnN0IGNo
YXIqIGV2ZW50TmFtZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOwor
ICAgIGF1dG8mIGxpc3RlbmVycyA9IG1fZXZlbnRMaXN0ZW5lcnMuZW5zdXJlKGRidXNOYW1lLCBb
XSB7CisgICAgICAgIHJldHVybiBWZWN0b3I8R1VuaXF1ZVB0cjxjaGFyKj4+IHsgfTsKKyAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgbGlzdGVuZXJzLmFwcGVuZChldmVudENvbnZlcnRpbmdE
ZXRhaWxUb05vbkNhbWVsQ2FzZShldmVudE5hbWUpKTsKK30KKworc3RhdGljIGJvb2wgZXZlbnRJ
c1N1YnR5cGUoY2hhcioqIG5lZWRsZSwgY2hhcioqIGhheXN0YWNrKQoreworICAgIHdoaWxlICgq
aGF5c3RhY2sgJiYgKipoYXlzdGFjaykgeworICAgICAgICBpZiAoZ19zdHJjbXAwKCpuZWVkbGUs
ICpoYXlzdGFjaykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG5lZWRsZSsr
OworICAgICAgICBoYXlzdGFjaysrOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBk
YnVzTmFtZSwgY29uc3QgY2hhciogZXZlbnROYW1lKQoreworICAgIFJFTEVBU0VfQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFldmVudE5hbWUgfHwgISpldmVudE5hbWUpIHsKKyAg
ICAgICAgbV9ldmVudExpc3RlbmVycy5yZW1vdmUoZGJ1c05hbWUpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5lcnMuZmluZChkYnVzTmFtZSk7
CisgICAgaWYgKGl0ID09IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gbmVlZGxlID0gZXZlbnRDb252ZXJ0aW5nRGV0YWlsVG9Ob25DYW1lbENhc2Uo
ZXZlbnROYW1lKTsKKyAgICBpdC0+dmFsdWUucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGNvbnN0IEdV
bmlxdWVQdHI8Y2hhcio+JiBldmVudCkgeworICAgICAgICByZXR1cm4gZXZlbnRJc1N1YnR5cGUo
bmVlZGxlLmdldCgpLCBldmVudC5nZXQoKSk7CisgICAgfSk7CisKKyAgICBpZiAoaXQtPnZhbHVl
LmlzRW1wdHkoKSkKKyAgICAgICAgbV9ldmVudExpc3RlbmVycy5yZW1vdmUoaXQpOworfQorCiti
b29sIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2hvdWxkRW1pdFNpZ25hbChjb25zdCBjaGFyKiBpbnRl
cmZhY2UsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIGRldGFpbCkKK3sKKyAgICBSRUxF
QVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gQWx3YXlzIGVtaXQgc2lnbmFs
cyBpZiB3ZSBjb3VsZG4ndCBjb25uZWN0IHRvIHRoZSByZWdpc3RyeS4KKyAgICBpZiAoIW1fcmVn
aXN0cnkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1fZXZlbnRMaXN0ZW5lcnMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBjaGFyKiBuZWVk
bGVbNF0gPSB7IGludGVyZmFjZSwgbmFtZSwgZGV0YWlsLCBudWxscHRyIH07CisgICAgZm9yIChj
b25zdCBhdXRvJiBsaXN0ZW5lcnMgOiBtX2V2ZW50TGlzdGVuZXJzLnZhbHVlcygpKSB7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbGlzdGVuZXJzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgR1VuaXF1
ZVB0cjxjaGFyKj4mIGV2ZW50KSB7CisgICAgICAgICAgICByZXR1cm4gZXZlbnRJc1N1YnR5cGUo
Y29uc3RfY2FzdDxjaGFyKio+KG5lZWRsZSksIGV2ZW50LmdldCgpKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIGlmIChyZXN1bHQgIT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFJ1bkxvb3AmIEFjY2Vzc2liaWxpdHlB
dHNwaTo6cnVuTG9vcCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcXVldWUtPnJ1bkxvb3AoKTsK
QEAgLTE4MCw5ICszMzIsMTIgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5QXRzcGk6OnBhcmVudENoYW5n
ZWQoQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpJiBhdHNwaU9iamVjdCkKICAgICAgICAgaWYgKCFh
dHNwaU9iamVjdC0+cm9vdCgpLmlzVHJlZVJlZ2lzdGVyZWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICAvLyBXZSBjYWxsIHBhdGggaGVyZSB0byBlbnN1cmUgaXQgaGFwcGVucyBi
ZWZvcmUgcGFyZW50UmVmZXJlbmNlKCkgaW4gY2FzZSBvYmplY3RzIGFyZSBub3QgcmVnaXN0ZXJl
ZCB5ZXQuCi0gICAgICAgIGF1dG8gcGF0aCA9IGF0c3BpT2JqZWN0LT5wYXRoKCk7Ci0gICAgICAg
IGdfZGJ1c19jb25uZWN0aW9uX2VtaXRfc2lnbmFsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0
ciwgcGF0aC51dGY4KCkuZGF0YSgpLCAib3JnLmExMXkuYXRzcGkuRXZlbnQuT2JqZWN0IiwgIlBy
b3BlcnR5Q2hhbmdlIiwKKyAgICAgICAgLy8gRW1pdCBwYXJlbnRDaGFuZ2VkIG9ubHkgaWYgdGhl
IG9iamVjdCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQsIG90aGVyd2lzZSByZWdpc3RlciB0aGUgb2Jq
ZWN0LAorICAgICAgICAvLyB3aXRob3V0IGVtaXR0aW5nIHRoZSBzaWduYWwsIGJlY2F1c2Ugb3Jn
LmExMXkuYXRzcGkuQ2FjaGUuQWRkQWNjZXNzaWJsZSgpIHdpbGwgdXBkYXRlIHRoZSBjYWNoZS4K
KyAgICAgICAgaWYgKGF0c3BpT2JqZWN0LT5yZWdpc3Rlck9iamVjdCgpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX2VtaXRfc2lnbmFsKG1fY29ubmVj
dGlvbi5nZXQoKSwgbnVsbHB0ciwgYXRzcGlPYmplY3QtPnBhdGgoKS51dGY4KCkuZGF0YSgpLCAi
b3JnLmExMXkuYXRzcGkuRXZlbnQuT2JqZWN0IiwgIlByb3BlcnR5Q2hhbmdlIiwKICAgICAgICAg
ICAgIGdfdmFyaWFudF9uZXcoIihzaWl2YXtzdn0pIiwgImFjY2Vzc2libGUtcGFyZW50IiwgMCwg
MCwgYXRzcGlPYmplY3QtPnBhcmVudFJlZmVyZW5jZSgpLCBudWxscHRyKSwgbnVsbHB0cik7CiAg
ICAgfSk7CiB9CkBAIC0yMTEsNiArMzY2LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5QXRzcGk6OnN0
YXRlQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkmIGF0c3BpT2JqZWN0LCBjb24KICAg
ICAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAg
aWYgKCFzaG91bGRFbWl0U2lnbmFsKCJPYmplY3QiLCAiU3RhdGVDaGFuZ2VkIiwgbmFtZS5kYXRh
KCkpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX2Vt
aXRfc2lnbmFsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwgYXRzcGlPYmplY3QtPnBhdGgo
KS51dGY4KCkuZGF0YSgpLCAib3JnLmExMXkuYXRzcGkuRXZlbnQuT2JqZWN0IiwgIlN0YXRlQ2hh
bmdlZCIsCiAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3KCIoc2lpdmF7c3Z9KSIsIG5hbWUuZGF0
YSgpLCB2YWx1ZSwgMCwgZ192YXJpYW50X25ld19zdHJpbmcoIjAiKSwgbnVsbHB0ciksIG51bGxw
dHIpOwogICAgIH0pOwpAQCAtMjIzLDYgKzM4MSw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUF0c3Bp
Ojp0ZXh0Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkmIGF0c3BpT2JqZWN0LCBjb25z
CiAgICAgICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAg
ICAgIGlmICghc2hvdWxkRW1pdFNpZ25hbCgiT2JqZWN0IiwgIlRleHRDaGFuZ2VkIiwgY2hhbmdl
VHlwZS5kYXRhKCkpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGdfZGJ1c19jb25u
ZWN0aW9uX2VtaXRfc2lnbmFsKG1fY29ubmVjdGlvbi5nZXQoKSwgbnVsbHB0ciwgYXRzcGlPYmpl
Y3QtPnBhdGgoKS51dGY4KCkuZGF0YSgpLCAib3JnLmExMXkuYXRzcGkuRXZlbnQuT2JqZWN0Iiwg
IlRleHRDaGFuZ2VkIiwKICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcoIihzaWl2YXtzdn0pIiwg
Y2hhbmdlVHlwZS5kYXRhKCksIG9mZnNldCwgbGVuZ3RoLCBnX3ZhcmlhbnRfbmV3X3N0cmluZyh0
ZXh0LmRhdGEoKSksIG51bGxwdHIpLCBudWxscHRyKTsKICAgICB9KTsKQEAgLTIzNSw2ICszOTYs
OSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6dGV4dEF0dHJpYnV0ZXNDaGFuZ2VkKEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaSYgYXRzcGlPYgogICAgICAgICBpZiAoIW1fY29ubmVjdGlvbikK
ICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAoIXNob3VsZEVtaXRTaWduYWwoIk9i
amVjdCIsICJUZXh0QXR0cmlidXRlc0NoYW5nZWQiKSkKKyAgICAgICAgICAgIHJldHVybjsKKwog
ICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbChtX2Nvbm5lY3Rpb24uZ2V0KCks
IG51bGxwdHIsIGF0c3BpT2JqZWN0LT5wYXRoKCkudXRmOCgpLmRhdGEoKSwgIm9yZy5hMTF5LmF0
c3BpLkV2ZW50Lk9iamVjdCIsICJUZXh0QXR0cmlidXRlc0NoYW5nZWQiLAogICAgICAgICAgICAg
Z192YXJpYW50X25ldygiKHNpaXZhe3N2fSkiLCAiIiwgMCwgMCwgZ192YXJpYW50X25ld19zdHJp
bmcoIiIpLCBudWxscHRyKSwgbnVsbHB0cik7CiAgICAgfSk7CkBAIC0yNDcsNiArNDExLDkgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5QXRzcGk6OnRleHRDYXJldE1vdmVkKEFjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaSYgYXRzcGlPYmplY3QsIHUKICAgICAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgaWYgKCFzaG91bGRFbWl0U2lnbmFsKCJPYmplY3Qi
LCAiVGV4dENhcmV0TW92ZWQiKSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBnX2Ri
dXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbChtX2Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIsIGF0
c3BpT2JqZWN0LT5wYXRoKCkudXRmOCgpLmRhdGEoKSwgIm9yZy5hMTF5LmF0c3BpLkV2ZW50Lk9i
amVjdCIsICJUZXh0Q2FyZXRNb3ZlZCIsCiAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3KCIoc2lp
dmF7c3Z9KSIsICIiLCBjYXJldE9mZnNldCwgMCwgZ192YXJpYW50X25ld19zdHJpbmcoIiIpLCBu
dWxscHRyKSwgbnVsbHB0cik7CiAgICAgfSk7CkBAIC0yNTksNiArNDI2LDkgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5QXRzcGk6OnRleHRTZWxlY3Rpb25DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaSYgYXRzcGlPYmoKICAgICAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgICAgICBy
ZXR1cm47CiAKKyAgICAgICAgaWYgKCFzaG91bGRFbWl0U2lnbmFsKCJPYmplY3QiLCAiVGV4dFNl
bGVjdGlvbkNoYW5nZWQiKSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBnX2RidXNf
Y29ubmVjdGlvbl9lbWl0X3NpZ25hbChtX2Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIsIGF0c3Bp
T2JqZWN0LT5wYXRoKCkudXRmOCgpLmRhdGEoKSwgIm9yZy5hMTF5LmF0c3BpLkV2ZW50Lk9iamVj
dCIsICJUZXh0U2VsZWN0aW9uQ2hhbmdlZCIsCiAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3KCIo
c2lpdmF7c3Z9KSIsICIiLCAwLCAwLCBnX3ZhcmlhbnRfbmV3X3N0cmluZygiIiksIG51bGxwdHIp
LCBudWxscHRyKTsKICAgICB9KTsKQEAgLTI3MSw2ICs0NDEsOSBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlBdHNwaTo6dmFsdWVDaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSYgYXRzcGlPYmpl
Y3QsIGRvdQogICAgICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsK
IAorICAgICAgICBpZiAoIXNob3VsZEVtaXRTaWduYWwoIk9iamVjdCIsICJQcm9wZXJ0eUNoYW5n
ZSIsICJhY2Nlc3NpYmxlLXZhbHVlIikpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAg
Z19kYnVzX2Nvbm5lY3Rpb25fZW1pdF9zaWduYWwobV9jb25uZWN0aW9uLmdldCgpLCBudWxscHRy
LCBhdHNwaU9iamVjdC0+cGF0aCgpLnV0ZjgoKS5kYXRhKCksICJvcmcuYTExeS5hdHNwaS5FdmVu
dC5PYmplY3QiLCAiUHJvcGVydHlDaGFuZ2UiLAogICAgICAgICAgICAgZ192YXJpYW50X25ldygi
KHNpaXZhe3N2fSkiLCAiYWNjZXNzaWJsZS12YWx1ZSIsIDAsIDAsIGdfdmFyaWFudF9uZXdfZG91
YmxlKHZhbHVlKSwgbnVsbHB0ciksIG51bGxwdHIpOwogICAgIH0pOwpAQCAtMjgzLDYgKzQ1Niw5
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUF0c3BpOjpzZWxlY3Rpb25DaGFuZ2VkKEFjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaSYgYXRzcGlPYmplY3QpCiAgICAgICAgIGlmICghbV9jb25uZWN0aW9uKQog
ICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGlmICghc2hvdWxkRW1pdFNpZ25hbCgiT2Jq
ZWN0IiwgIlNlbGVjdGlvbkNoYW5nZWQiKSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAg
ICBnX2RidXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbChtX2Nvbm5lY3Rpb24uZ2V0KCksIG51bGxw
dHIsIGF0c3BpT2JqZWN0LT5wYXRoKCkudXRmOCgpLmRhdGEoKSwgIm9yZy5hMTF5LmF0c3BpLkV2
ZW50Lk9iamVjdCIsICJTZWxlY3Rpb25DaGFuZ2VkIiwKICAgICAgICAgICAgIGdfdmFyaWFudF9u
ZXcoIihzaWl2YXtzdn0pIiwgIiIsIDAsIDAsIGdfdmFyaWFudF9uZXdfc3RyaW5nKCIiKSwgbnVs
bHB0ciksIG51bGxwdHIpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmgKaW5kZXggZGYwNDNiYzYxNDEy
Li4xNzMxZjQxOGQyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuaApAQCAtMjYsMTAgKzI2LDEyIEBACiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgog
CiB0eXBlZGVmIHN0cnVjdCBfR0RCdXNDb25uZWN0aW9uIEdEQnVzQ29ubmVjdGlvbjsKIHR5cGVk
ZWYgc3RydWN0IF9HREJ1c0ludGVyZmFjZUluZm8gR0RCdXNJbnRlcmZhY2VJbmZvOwogdHlwZWRl
ZiBzdHJ1Y3QgX0dEQnVzSW50ZXJmYWNlVlRhYmxlIEdEQnVzSW50ZXJmYWNlVlRhYmxlOwordHlw
ZWRlZiBzdHJ1Y3QgX0dEQnVzUHJveHkgR0RCdXNQcm94eTsKIHR5cGVkZWYgc3RydWN0IF9HVmFy
aWFudCBHVmFyaWFudDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsMTIgKzQzLDEzIEBA
IGNsYXNzIEFjY2Vzc2liaWxpdHlBdHNwaSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpKGNvbnN0IFN0cmluZyYpOwotICAgIH5B
Y2Nlc3NpYmlsaXR5QXRzcGkoKSA9IGRlZmF1bHQ7CisgICAgfkFjY2Vzc2liaWxpdHlBdHNwaSgp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0OwogCiAgICAg
Y29uc3QgY2hhciogdW5pcXVlTmFtZSgpIGNvbnN0OwogICAgIEdWYXJpYW50KiBudWxsUmVmZXJl
bmNlKCkgY29uc3Q7CisgICAgYm9vbCBoYXNFdmVudExpc3RlbmVycygpIGNvbnN0IHsgcmV0dXJu
ICFtX2V2ZW50TGlzdGVuZXJzLmlzRW1wdHkoKTsgfQogCiAgICAgdm9pZCByZWdpc3RlclJvb3Qo
QWNjZXNzaWJpbGl0eVJvb3RBdHNwaSYsIFZlY3RvcjxzdGQ6OnBhaXI8R0RCdXNJbnRlcmZhY2VJ
bmZvKiwgR0RCdXNJbnRlcmZhY2VWVGFibGUqPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyUm9vdChBY2Nlc3NpYmlsaXR5
Um9vdEF0c3BpJik7CkBAIC03NCwxMyArNzcsMjIgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQWNj
ZXNzaWJsZShBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkmKTsKIAogcHJpdmF0ZToKKyAgICB2b2lk
IHJlZ2lzdGVyVHJlZXMoKSBjb25zdDsKKyAgICB2b2lkIGluaXRpYWxpemVSZWdpc3RyeSgpOwor
ICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBjaGFyKiBkYnVzTmFtZSwgY29uc3QgY2hh
ciogZXZlbnROYW1lKTsKKyAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgY2hhciog
ZGJ1c05hbWUsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSk7CisKICAgICB2b2lkIGVuc3VyZUNhY2hl
KCk7CiAgICAgdm9pZCByZW1vdmVBY2Nlc3NpYmxlKEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSYp
OwogCisgICAgYm9vbCBzaG91bGRFbWl0U2lnbmFsKGNvbnN0IGNoYXIqIGludGVyZmFjZSwgY29u
c3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogZGV0YWlsID0gIiIpOworCiAgICAgc3RhdGljIEdE
QnVzSW50ZXJmYWNlVlRhYmxlIHNfY2FjaGVGdW5jdGlvbnM7CiAKICAgICBSZWY8V29ya1F1ZXVl
PiBtX3F1ZXVlOwogICAgIEdSZWZQdHI8R0RCdXNDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Cisg
ICAgR1JlZlB0cjxHREJ1c1Byb3h5PiBtX3JlZ2lzdHJ5OworICAgIEhhc2hNYXA8Q1N0cmluZywg
VmVjdG9yPEdVbmlxdWVQdHI8Y2hhcio+Pj4gbV9ldmVudExpc3RlbmVyczsKICAgICBIYXNoTWFw
PEFjY2Vzc2liaWxpdHlSb290QXRzcGkqLCBWZWN0b3I8dW5zaWduZWQsIDI+PiBtX3Jvb3RPYmpl
Y3RzOwogICAgIEhhc2hNYXA8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKiwgVmVjdG9yPHVuc2ln
bmVkLCAyMD4+IG1fYXRzcGlPYmplY3RzOwogICAgIEhhc2hNYXA8QWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpKiwgVmVjdG9yPHVuc2lnbmVkLCAyMD4+IG1fYXRzcGlIeXBlcmxpbmtzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGkuY3BwCmluZGV4IDBlNGNjZDcyMGVhOC4uMDhjZDkzMWVkNTczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNw
aS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCkBAIC0xMjEzLDYgKzEyMTMsOSBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Y2hpbGRBZGRlZChBY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGkmIGNoaWxkKQogICAgIGlmICghbV9pc1JlZ2lzdGVyZWQubG9hZCgpKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBpZiAoIW1fY29yZU9iamVjdCB8fCBtX2NvcmVPYmplY3QtPmFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9yb290LmF0c3BpKCku
Y2hpbGRyZW5DaGFuZ2VkKCp0aGlzLCBjaGlsZCwgQWNjZXNzaWJpbGl0eUF0c3BpOjpDaGlsZHJl
bkNoYW5nZWQ6OkFkZGVkKTsKIH0KIApAQCAtMTIyMiwxNSArMTIyNSwxNSBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6Y2hpbGRSZW1vdmVkKEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aSYgY2hpbGQpCiAgICAgaWYgKCFtX2lzUmVnaXN0ZXJlZC5sb2FkKCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmICghbV9jb3JlT2JqZWN0IHx8IG1fY29yZU9iamVjdC0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBtX3Jvb3QuYXRzcGkoKS5jaGls
ZHJlbkNoYW5nZWQoKnRoaXMsIGNoaWxkLCBBY2Nlc3NpYmlsaXR5QXRzcGk6OkNoaWxkcmVuQ2hh
bmdlZDo6UmVtb3ZlZCk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzdGF0
ZUNoYW5nZWQoY29uc3QgY2hhciogbmFtZSwgYm9vbCB2YWx1ZSkKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCFtX2lzUmVnaXN0ZXJlZC5sb2FkKCkpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIG1fcm9vdC5hdHNwaSgpLnN0YXRlQ2hhbmdlZCgqdGhpcywg
bmFtZSwgdmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RTZWxlY3Rpb25BdHNwaS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RTZWxlY3Rpb25B
dHNwaS5jcHAKaW5kZXggMGY2YmUzMDQ1NjVmLi4xNjZjOTBhYmM4ODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFNlbGVj
dGlvbkF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0Fj
Y2Vzc2liaWxpdHlPYmplY3RTZWxlY3Rpb25BdHNwaS5jcHAKQEAgLTIyNCw5ICsyMjQsNiBAQCBi
b29sIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Y2xlYXJTZWxlY3Rpb24oKSBjb25zdAogdm9p
ZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNlbGVjdGlvbkNoYW5nZWQoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoIW1faXNSZWdpc3RlcmVkLmxv
YWQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9yb290LmF0c3BpKCkuc2VsZWN0aW9uQ2hh
bmdlZCgqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCmlu
ZGV4IDA2MzQ1MGRhMmJlZC4uOTUzODI1ZDA5MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFRleHRBdHNwaS5jcHAKQEAgLTM0OCw5ICszNDgsNiBAQCBDU3RyaW5nIEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6dGV4dChpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpIGNvbnN0CiB2
b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEluc2VydGVkKGNvbnN0IFN0cmluZyYg
aW5zZXJ0ZWRUZXh0LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoIW1faXNSZWdpc3RlcmVkLmxv
YWQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFtX2ludGVyZmFjZXMuY29udGFpbnMo
SW50ZXJmYWNlOjpUZXh0KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNjcsOSArMzY0LDYgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnRleHRJbnNlcnRlZChjb25zdCBTdHJpbmcm
IGluc2VydGVkVGV4dCwgY29uc3QgVmkKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0
ZXh0RGVsZXRlZChjb25zdCBTdHJpbmcmIGRlbGV0ZWRUZXh0LCBjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHBvc2l0aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBpZiAoIW1faXNSZWdpc3RlcmVkLmxvYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYg
KCFtX2ludGVyZmFjZXMuY29udGFpbnMoSW50ZXJmYWNlOjpUZXh0KSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC03NTEsOSArNzQ1LDYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNl
bGVjdFJhbmdlKGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkKIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjpzZWxlY3Rpb25DaGFuZ2VkKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
aWYgKCFtX2lzUmVnaXN0ZXJlZC5sb2FkKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICgh
bV9pbnRlcmZhY2VzLmNvbnRhaW5zKEludGVyZmFjZTo6VGV4dCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtOTQzLDkgKzkzNCw2IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJp
YnV0ZXMgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiB2b2lkIEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZXNDaGFuZ2VkKCkKIHsKICAgICBSRUxF
QVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCFtX2lzUmVnaXN0ZXJlZC5sb2Fk
KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghbV9pbnRlcmZhY2VzLmNvbnRhaW5zKElu
dGVyZmFjZTo6VGV4dCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VmFsdWVBdHNwaS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RWYWx1ZUF0c3BpLmNwcAppbmRleCBlMzk4OTI5ZTk4ZjMuLjU4ZWVlNWYwYzBiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0VmFsdWVBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNw
aS9BY2Nlc3NpYmlsaXR5T2JqZWN0VmFsdWVBdHNwaS5jcHAKQEAgLTEzNCw5ICsxMzQsNiBAQCBk
b3VibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjptaW5pbXVtSW5jcmVtZW50KCkgY29uc3QK
IHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp2YWx1ZUNoYW5nZWQoZG91YmxlIHZhbHVl
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoIW1faXNS
ZWdpc3RlcmVkLmxvYWQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9yb290LmF0c3BpKCku
dmFsdWVDaGFuZ2VkKCp0aGlzLCB2YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3Bw
CmluZGV4IDFhZThmMTdmODIxNi4uYjNiNjBhYzY3OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNw
aS5jcHAKQEAgLTIyMyw2ICsyMjMsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OmVt
YmVkZGVkKGNvbnN0IGNoYXIqIHBhcmVudFVuaXF1ZU5hbWUsIGNvbnN0IGNoYXIqCiAgICAgUkVM
RUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBw
YXJlbnRVbmlxdWVOYW1lOwogICAgIG1fcGFyZW50UGF0aCA9IHBhcmVudFBhdGg7CisgICAgaWYg
KCFtX2lzVHJlZVJlZ2lzdGVyZWQubG9hZCgpICYmIG1fYXRzcGkuaGFzRXZlbnRMaXN0ZW5lcnMo
KSkKKyAgICAgICAgcmVnaXN0ZXJUcmVlKCk7CiB9CiAKIEdWYXJpYW50KiBBY2Nlc3NpYmlsaXR5
Um9vdEF0c3BpOjphcHBsaWNhdGlvblJlZmVyZW5jZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWI4YTgzYjY1NDdiLi5mYTU4YTVj
NmNmM2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAyMS0xMi0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bYTExeV0gUmVnaXN0ZXIgdGhlIHdyYXBw
ZXJzIHRyZWUgd2hlbiB0aGVyZSdzIGFuIGV2ZW50IGxpc3RlbmVyIHJlZ2lzdGVyZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDMzOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB1bml0IHRlc3Qg
dG8gY2hlY2sgdGhlIHRyZWUgaXMgY3JlYXRlZCB3aGVuIHRoZXJlJ3MgYSBsaXN0ZW5lciBjb25u
ZWN0ZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2Vi
S2l0QWNjZXNzaWJpbGl0eS5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VGVzdDo6ZmluZFRl
c3RBcHBsaWNhdGlvbik6IEl0ZXJhdGUgdGhlIGFwcGxpY2F0aW9ucyBsaXN0IGJhY2t3YXJkcyBz
aW5jZSB0aGUgdGVzdCBwcm9ncmFtIGlzCisgICAgICAgIHVzdWFsbHkgdGhlIGxhc3Qgb25lIGlu
IHRoZSBsaXN0LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVRlc3Q6OmFjY2Vzc2libGVBcHBsaWNh
dGlvbklzVGVzdFByb2dyYW0pOiBIZWxwZXIgdG8gY2hlY2sgaWYgYSBnaXZlbiBhY2Nlc3NpYmxl
IGJlbG9uZ3MgdG8gdGhlCisgICAgICAgIHRlc3QgcHJvZ3JhbS4KKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlUZXN0OjpzdGFydEV2ZW50TW9uaXRvcik6IFN1cHBvcnQgZm9yIGxpc3RlbmluZyB0byBl
dmVudHMgYXNzb2NpYXRlZCB0byB0aGUgdGVzdCBwcm9ncmFtLCBub3QgdG8gYQorICAgICAgICBw
YXJ0aWN1bGFyIGFjY2Vzc2libGUuCisgICAgICAgICh0ZXN0QWNjZXNzaWJsZUV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAoYmVmb3JlQWxsKToKKwogMjAyMS0xMi0xMyAgSm9obiBXaWxhbmRlciAg
PHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006IFJlbW92ZSBvbGQgREIgdXBkYXRl
IGFuZCBtaWdyYXRpb24gY29kZSwgYW5kIGFkZCBhIHVuaXQgdGVzdCBmb3IgZGVzdGluYXRpb24g
dG9rZW4gREIgY29sdW1ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwCmluZGV4IGM5MWEx
NTRjODNiMi4uYWNlZWU1NTQ0NTkxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwCkBA
IC01Nyw5ICs1NywxMCBAQCBwdWJsaWM6CiAgICAgICAgIFRlc3Q6OnJlbW92ZUxvZ0ZhdGFsRmxh
ZyhHX0xPR19MRVZFTF9XQVJOSU5HKTsKICAgICAgICAgaW50IGNoaWxkQ291bnQgPSBhdHNwaV9h
Y2Nlc3NpYmxlX2dldF9jaGlsZF9jb3VudChkZXNrdG9wLmdldCgpLCBudWxscHRyKTsKICAgICAg
ICAgVGVzdDo6YWRkTG9nRmF0YWxGbGFnKEdfTE9HX0xFVkVMX1dBUk5JTkcpOwotICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGNoaWxkQ291bnQ7ICsraSkgeworICAgICAgICBmb3IgKGludCBp
ID0gY2hpbGRDb3VudCAtIDE7IGkgPj0gMDsgLS1pKSAgewogICAgICAgICAgICAgR1JlZlB0cjxB
dHNwaUFjY2Vzc2libGU+IGN1cnJlbnQgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRf
Y2hpbGRfYXRfaW5kZXgoZGVza3RvcC5nZXQoKSwgaSwgbnVsbHB0cikpOwotICAgICAgICAgICAg
aWYgKCFnX3N0cmNtcDAoYXRzcGlfYWNjZXNzaWJsZV9nZXRfbmFtZShjdXJyZW50LmdldCgpLCBu
dWxscHRyKSwgIlRlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5IikpCisgICAgICAgICAgICBHVW5pcXVl
UHRyPGNoYXI+IG5hbWUoYXRzcGlfYWNjZXNzaWJsZV9nZXRfbmFtZShjdXJyZW50LmdldCgpLCBu
dWxscHRyKSk7CisgICAgICAgICAgICBpZiAoIWdfc3RyY21wMChuYW1lLmdldCgpLCAiVGVzdFdl
YktpdEFjY2Vzc2liaWxpdHkiKSkKICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudDsKICAg
ICAgICAgfQogCkBAIC0xMDYsMTQgKzEwNywyMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZXZlbnRT
b3VyY2UgPSBudWxscHRyOwogICAgIH0KIAorICAgIHN0YXRpYyBib29sIGFjY2Vzc2libGVBcHBs
aWNhdGlvbklzVGVzdFByb2dyYW0oQXRzcGlBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQorICAgIHsK
KyAgICAgICAgR1JlZlB0cjxBdHNwaUFjY2Vzc2libGU+IGFwcGxpY2F0aW9uID0gYWRvcHRHUmVm
KGF0c3BpX2FjY2Vzc2libGVfZ2V0X2FwcGxpY2F0aW9uKGFjY2Vzc2libGUsIG51bGxwdHIpKTsK
KyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBhcHBsaWNhdGlvbk5hbWUoYXRzcGlfYWNjZXNzaWJs
ZV9nZXRfbmFtZShhcHBsaWNhdGlvbi5nZXQoKSwgbnVsbHB0cikpOworICAgICAgICByZXR1cm4g
IWdfc3RyY21wMChhcHBsaWNhdGlvbk5hbWUuZ2V0KCksICJUZXN0V2ViS2l0QWNjZXNzaWJpbGl0
eSIpOworICAgIH0KKwogICAgIHZvaWQgc3RhcnRFdmVudE1vbml0b3IoQXRzcGlBY2Nlc3NpYmxl
KiBzb3VyY2UsIFZlY3RvcjxDU3RyaW5nPiYmIGV2ZW50cykKICAgICB7CiAgICAgICAgIG1fZXZl
bnRNb25pdG9yLnNvdXJjZSA9IHNvdXJjZTsKICAgICAgICAgbV9ldmVudE1vbml0b3IuZXZlbnRU
eXBlcyA9IFdURk1vdmUoZXZlbnRzKTsKICAgICAgICAgbV9ldmVudE1vbml0b3IubGlzdGVuZXIg
PSBhZG9wdEdSZWYoYXRzcGlfZXZlbnRfbGlzdGVuZXJfbmV3KFtdKEF0c3BpRXZlbnQqIGV2ZW50
LCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19j
YXN0PEFjY2Vzc2liaWxpdHlUZXN0Kj4odXNlckRhdGEpOwotICAgICAgICAgICAgaWYgKGV2ZW50
LT5zb3VyY2UgPT0gdGVzdC0+bV9ldmVudE1vbml0b3Iuc291cmNlKQorICAgICAgICAgICAgaWYg
KCh0ZXN0LT5tX2V2ZW50TW9uaXRvci5zb3VyY2UgJiYgZXZlbnQtPnNvdXJjZSA9PSB0ZXN0LT5t
X2V2ZW50TW9uaXRvci5zb3VyY2UpCisgICAgICAgICAgICAgICAgfHwgKCF0ZXN0LT5tX2V2ZW50
TW9uaXRvci5zb3VyY2UgJiYgYWNjZXNzaWJsZUFwcGxpY2F0aW9uSXNUZXN0UHJvZ3JhbShldmVu
dC0+c291cmNlKSkpIHsKICAgICAgICAgICAgICAgICB0ZXN0LT5tX2V2ZW50TW9uaXRvci5ldmVu
dHMuYXBwZW5kKHN0YXRpY19jYXN0PEF0c3BpRXZlbnQqPihnX2JveGVkX2NvcHkoQVRTUElfVFlQ
RV9FVkVOVCwgZXZlbnQpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0sIHRoaXMsIG51bGxw
dHIpKTsKIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGV2ZW50IDogbV9ldmVudE1vbml0b3Iu
ZXZlbnRUeXBlcykKQEAgLTgxMSw2ICs4MjEsNDUgQEAgc3RhdGljIHZvaWQgdGVzdEFjY2Vzc2li
bGVTdGF0ZUNoYW5nZWQoQWNjZXNzaWJpbGl0eVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAj
ZW5kaWYKIH0KIAorc3RhdGljIHZvaWQgdGVzdEFjY2Vzc2libGVFdmVudExpc3RlbmVyKEFjY2Vz
c2liaWxpdHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPnN0YXJ0RXZl
bnRNb25pdG9yKG51bGxwdHIsIHsgIm9iamVjdDpzdGF0ZS1jaGFuZ2VkOmZvY3VzZWQiIH0pOwor
ICAgIHRlc3QtPnNob3dJbldpbmRvdygpOworICAgIHRlc3QtPmxvYWRIdG1sKAorICAgICAgICAi
PGh0bWw+IgorICAgICAgICAiICA8Ym9keT4iCisgICAgICAgICIgICAgPGlucHV0IGlkPSdlbnRy
eScgdHlwZT0ndGV4dCcvPiIKKyAgICAgICAgIiAgPC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4i
LAorICAgICAgICBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
KworICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2VudHJ5JykuZm9jdXMoKTsiLCBudWxscHRyKTsKKworICAgIGF1dG8g
ZXZlbnRzID0gdGVzdC0+c3RvcEV2ZW50TW9uaXRvcigxKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50
KGV2ZW50cy5zaXplKCksID09LCAxKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIoZXZlbnRzWzBdLT50
eXBlLCA9PSwgIm9iamVjdDpzdGF0ZS1jaGFuZ2VkOmZvY3VzZWQiKTsKKyAgICBhdXRvKiBlbnRy
eSA9IGV2ZW50c1swXS0+c291cmNlOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNT
SUJMRShlbnRyeSkpOworICAgIGdfYXNzZXJ0X2NtcGludChhdHNwaV9hY2Nlc3NpYmxlX2dldF9y
b2xlKGVudHJ5LCBudWxscHRyKSwgPT0sIEFUU1BJX1JPTEVfRU5UUlkpOworCisgICAgYXV0byBw
YW5lbCA9IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9wYXJlbnQoZW50cnksIG51bGxw
dHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUocGFuZWwuZ2V0KCkp
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoYXRzcGlfYWNjZXNzaWJsZV9nZXRfcm9sZShwYW5lbC5n
ZXQoKSwgbnVsbHB0ciksID09LCBBVFNQSV9ST0xFX1BBTkVMKTsKKworICAgIGF1dG8gZG9jdW1l
bnRXZWIgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfcGFyZW50KHBhbmVsLmdldCgp
LCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGRvY3Vt
ZW50V2ViLmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2FjY2Vzc2libGVfZ2V0
X3JvbGUoZG9jdW1lbnRXZWIuZ2V0KCksIG51bGxwdHIpLCA9PSwgQVRTUElfUk9MRV9ET0NVTUVO
VF9XRUIpOworCisgICAgYXV0byBzY3JvbGxWaWV3ID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2li
bGVfZ2V0X3BhcmVudChkb2N1bWVudFdlYi5nZXQoKSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0
X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShzY3JvbGxWaWV3LmdldCgpKSk7CisgICAgZ19hc3Nl
cnRfY21waW50KGF0c3BpX2FjY2Vzc2libGVfZ2V0X3JvbGUoc2Nyb2xsVmlldy5nZXQoKSwgbnVs
bHB0ciksID09LCBBVFNQSV9ST0xFX1NDUk9MTF9QQU5FKTsKKworICAgIGF1dG8gcm9vdE9iamVj
dCA9IGFkb3B0R1JlZihhdHNwaV9hY2Nlc3NpYmxlX2dldF9wYXJlbnQoc2Nyb2xsVmlldy5nZXQo
KSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShyb290
T2JqZWN0LmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21waW50KGF0c3BpX2FjY2Vzc2libGVfZ2V0
X3JvbGUocm9vdE9iamVjdC5nZXQoKSwgbnVsbHB0ciksID09LCBBVFNQSV9ST0xFX0ZJTExFUik7
Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RDb21wb25lbnRIaXRUZXN0KEFjY2Vzc2liaWxpdHlUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHRlc3QtPnNob3dJbldpbmRvdygpOwpAQCAt
Mjc1Miw2ICsyODAxLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIEFjY2Vzc2liaWxpdHlUZXN0
OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAiYWNjZXNzaWJsZS9hdHRyaWJ1dGVzIiwgdGVz
dEFjY2Vzc2libGVBdHRyaWJ1dGVzKTsKICAgICBBY2Nlc3NpYmlsaXR5VGVzdDo6YWRkKCJXZWJL
aXRBY2Nlc3NpYmlsaXR5IiwgImFjY2Vzc2libGUvc3RhdGUiLCB0ZXN0QWNjZXNzaWJsZVN0YXRl
KTsKICAgICBBY2Nlc3NpYmlsaXR5VGVzdDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgImFj
Y2Vzc2libGUvc3RhdGUtY2hhbmdlZCIsIHRlc3RBY2Nlc3NpYmxlU3RhdGVDaGFuZ2VkKTsKKyAg
ICBBY2Nlc3NpYmlsaXR5VGVzdDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5IiwgImFjY2Vzc2li
bGUvZXZlbnQtbGlzdGVuZXIiLCB0ZXN0QWNjZXNzaWJsZUV2ZW50TGlzdGVuZXIpOwogICAgIEFj
Y2Vzc2liaWxpdHlUZXN0OjphZGQoIldlYktpdEFjY2Vzc2liaWxpdHkiLCAiY29tcG9uZW50L2hp
dC10ZXN0IiwgdGVzdENvbXBvbmVudEhpdFRlc3QpOwogI2lmZGVmIEFUU1BJX1NDUk9MTFRZUEVf
Q09VTlQKICAgICBBY2Nlc3NpYmlsaXR5VGVzdDo6YWRkKCJXZWJLaXRBY2Nlc3NpYmlsaXR5Iiwg
ImNvbXBvbmVudC9zY3JvbGwtdG8iLCB0ZXN0Q29tcG9uZW50U2Nyb2xsVG8pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>