<?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>154242</bug_id>
          
          <creation_ts>2016-02-15 06:25:27 -0800</creation_ts>
          <short_desc>Optimize style invalidations for attribute selectors</short_desc>
          <delta_ts>2016-02-16 00:21:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kling</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1164733</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-15 06:25:27 -0800</bug_when>
    <thetext>Currently we invalidate the whole element subtree if there are any attribute selectors for the changed attribute. We should only invalidate what is really needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164753</commentid>
    <comment_count>1</comment_count>
      <attachid>271344</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-15 08:45:48 -0800</bug_when>
    <thetext>Created attachment 271344
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164754</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-02-15 08:46:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/24655799&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164761</commentid>
    <comment_count>3</comment_count>
      <attachid>271345</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-15 09:25:35 -0800</bug_when>
    <thetext>Created attachment 271345
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164802</commentid>
    <comment_count>4</comment_count>
      <attachid>271345</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-02-15 12:08:28 -0800</bug_when>
    <thetext>Comment on attachment 271345
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=271345&amp;action=review

r=me
This is a really solid performance hack!

&gt; Source/WebCore/style/AttributeChangeInvalidation.h:47
&gt; +    using ClassChangeVector = Vector&lt;AtomicStringImpl*, 4&gt;;

why</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164828</commentid>
    <comment_count>5</comment_count>
      <attachid>271360</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-15 12:47:48 -0800</bug_when>
    <thetext>Created attachment 271360
for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164832</commentid>
    <comment_count>6</comment_count>
      <attachid>271361</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-15 12:57:08 -0800</bug_when>
    <thetext>Created attachment 271361
for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165077</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-02-16 00:21:33 -0800</bug_when>
    <thetext>https://trac.webkit.org/r196629</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271344</attachid>
            <date>2016-02-15 08:45:48 -0800</date>
            <delta_ts>2016-02-15 09:25:35 -0800</delta_ts>
            <desc>patch</desc>
            <filename>attribute-invalidation-8.patch</filename>
            <type>text/plain</type>
            <size>51050</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjU3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDE2LTAyLTE1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBzdHlsZSBpbnZh
bGlkYXRpb25zIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgd2UgaW52YWxpZGF0ZSB0aGUgd2hv
bGUgZWxlbWVudCBzdWJ0cmVlIGlmIHRoZXJlIGFyZSBhbnkgYXR0cmlidXRlIHNlbGVjdG9ycyBm
b3IgdGhlIGNoYW5nZWQgYXR0cmlidXRlLgorICAgICAgICBUaGlzIGlzIHNsb3cgYXMgZ2VuZXJh
bGx5IGZldyBpZiBhbnkgZWxlbWVudHMgYXJlIHJlYWxseSBhZmZlY3RlZC4gVXNpbmcgYXR0cmli
dXRlIHNlbGVjdG9ycyBmb3IgZHluYW1pYyBzdHlsaW5nCisgICAgICAgIHNob3VsZCBiZSBwZXJm
b3JtYW50LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBvcHRpbWl6YXRpb24gc3Ry
YXRlZ3kgZm9yIGF0dHJpYnV0ZXMgc2ltaWxhciB0byB3aGF0IHdlIGFscmVhZHkgaGF2ZSBmb3Ig
Y2xhc3NlczoKKworICAgICAgICAtIENvbGxlY3QgYSBtYXAgb2YgYWxsIHJ1bGVzIHRoYXQgY29u
dGFpbnMgZGVzY2VuZGFudC1hZmZlY3RpbmcgYXR0cmlidXRlIHNlbGVjdG9ycyBmb3IgYSBnaXZl
biBhdHRyaWJ1dGUuCisgICAgICAgIC0gV2hlbiBhbiBhdHRyaWJ1dGUgdmFsdWUgY2hhbmdlcyBj
aGVjayBpZiB0aGVyZSBhcmUgYW55IHN1Y2ggcnVsZXMgZm9yIGl0CisgICAgICAgIC0gQ2hlY2sg
aWYgdGhlIHZhbHVlIGNoYW5nZSBhZmZlY3RzIHRoZSByZXN1bHRzIG9mIGFueSBvZiB0aGUgc2Vs
ZWN0b3JzCisgICAgICAgIC0gT25seSBpZiBpdCBkb2VzIGludmFsaWRhdGUgdGhlIGV4YWN0IGRl
c2NlbmRhbnQgZWxlbWVudHMgYWZmZWN0ZWQgYnkgdGhlIHJ1bGVzLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRlc2NlbmRhbnRz
Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFJ1bGVTZXRzOjphbmNlc3RvckNsYXNzUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRSdWxlU2V0czo6YW5jZXN0b3JBdHRyaWJ1dGVSdWxlc0ZvckhUTUwpOgorCisgICAgICAg
ICAgICBDcmVhdGUgb3B0aW1pemF0aW9uIFJ1bGVTZXRzIHdoZW4gbmVlZGVkLgorCisgICAgICAg
ICogY3NzL0RvY3VtZW50UnVsZVNldHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVs
ZVNldHM6OnVuY29tbW9uQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVs
ZVNldHM6OmZlYXR1cmVzKToKKyAgICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UnVsZUZlYXR1cmVTZXQ6OnJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJv
bVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VBdHRyaWJ1dGVTZWxlY3RvcktleSk6
CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKwor
ICAgICAgICAgICAgQ29sbGVjdCBydWxlcyB3aXRoIGRlc2NlbmRhbnQgYWZmZWN0aW5nIGF0dHJp
YnV0ZSBzZWxlY3RvcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQp
OgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1cmVTZXQ6OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjpzaHJpbmtUb0ZpdCk6CisgICAgICAgICogY3NzL1J1bGVG
ZWF0dXJlLmg6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphbnlBdHRyaWJ1dGVNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6YXR0cmlidXRlU2VsZWN0b3JNYXRjaGVzKToKKworICAgICAgICAgICAgRXhwb3Nl
IGZ1bmN0aW9uIGZvciBtYXRjaGluZyBzaW5nbGUgYXR0cmlidXRlIHNlbGVjdG9ycy4KKworICAg
ICAgICAoV2ViQ29yZTo6Y2FuTWF0Y2hIb3Zlck9yQWN0aXZlSW5RdWlya3NNb2RlKToKKyAgICAg
ICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXR0cjo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6
Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlSWRGb3JTdHlsZVJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRy
aWJ1dGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphZGRBdHRyaWJ1dGVJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2lsbE1vZGlmeUF0dHJpYnV0ZSk6CisKKyAgICAg
ICAgICAgIEFkZCBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gd2hlcmUgbmVlZGVkLgorCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpuZWVkc1N0eWxlSW52YWxpZGF0aW9uKToKKworICAg
ICAgICAgICAgTW92ZSB0byBFbGVtZW50IGZyb20gQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uCisK
KyAgICAgICAgKiBzdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246Omlu
dmFsaWRhdGVTdHlsZSk6CisKKyAgICAgICAgICAgIEludmFsaWRhdGUgbG9jYWwgc3R5bGUuCisg
ICAgICAgICAgICBDaGVjayBpZiB3ZSBuZWVkIHRvIGludmFsaWRhdGUgZGVzY2VuZGFudHMgYnkg
bG9va2luZyBpbnRvIGFuY2VzdG9yQXR0cmlidXRlUnVsZXMuCisKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVEZXNjZW5kYW50
cyk6CisKKyAgICAgICAgICAgIFVzZSBTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzIHRvIGludmFs
aWRhdGUgdGhlIHN1YnRyZWUgZm9yIHRoZSByZWxldmFudCBydWxlcy4KKworICAgICAgICAqIHN0
eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246Om5lZWRzSW52YWxpZGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246
OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjp+QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9u
KToKKworICAgICAgICAgICAgSWYgbmVlZGVkLCBpbnZhbGlkYXRlIGRlc2NlbmRhbnRzIGJlZm9y
ZSBhbmQgYWZ0ZXIgYXR0cmlidXRlIGNoYW5nZSB0byBjYXRjaCBydWxlcyB0aGF0IHN0YXJ0IGFu
ZCBzdG9wIGFwcGx5aW5nLgorCiAyMDE2LTAyLTE1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHRoZSAhKEVOQUJMRShTVkdfRk9OVFMpIHx8IEVO
QUJMRShTVkdfT1RGX0NPTlZFUlRFUikpIGJ1aWxkIGFmdGVyIHIxOTYzMjIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE5NjU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjYyMyw2ICs2NjIzLDggQEAKIAkJRTRBMDA3ODUx
QjgyMEVEMzAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5jcHAgKi87IH07CiAJCUU0QTgxNEQ0MUM2REVDNDAwMEJGODVBQyAvKiBD
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTRBODE0RDMxQzZERUM0MDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uLmggKi87IH07CiAJCUU0QTgxNEQ2MUM2REVFOEQwMEJGODVBQyAvKiBDbGFzc0No
YW5nZUludmFsaWRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEE4MTRENTFDNkRFRThEMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwICovOyB9OworCQlFNEE4MTREODFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRl
Q2hhbmdlSW52YWxpZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0QTgxNEQ3MUM3MEUxMDUwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJ
bnZhbGlkYXRpb24uY3BwICovOyB9OworCQlFNEE4MTREQTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0
cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hh
bmdlSW52YWxpZGF0aW9uLmggKi87IH07CiAJCUU0QUU3QzE2MTdEMUJCOTUwMDA5RkIzMSAvKiBF
bGVtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0QUU3QzE1MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEFFN0MxQTE3
RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUU3QzE5MTdEMjMyMzUwMDA5RkIz
MSAvKiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0
QmV6aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NEFGQ0ZBNDBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oICovOyB9OwpAQCAtMTQ2MTMs
NiArMTQ2MTUsOCBAQAogCQlFNEEwMDc4NDFCODIwRUQzMDAyQzVBNkUgLyogRGF0YVVSTERlY29k
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YVVSTERlY29k
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEE4MTREMzFDNkRFQzQwMDBC
Rjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTRBODE0RDUxQzZERUU4RDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzQ2hh
bmdlSW52YWxpZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBODE0
RDcxQzcwRTEwNTAwQkY4NUFDIC8qIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE4MTREOTFDNzBFMTBE
MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNEFFN0MxNTE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVu
dEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRJdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEFFN0MxOTE3RDIzMjM1MDAw
OUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pdEJlemllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjMzOTAsNiArMjMzOTQsOCBAQAogCQlFNDc2M0Q0QTE3QjI3MDQ5
MDBEMzUyMDYgLyogc3R5bGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCUU0QTgxNEQ3MUM3MEUxMDUwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwICovLAorCQkJCUU0QTgxNEQ5MUM3MEUxMEQwMEJGODVBQyAvKiBBdHRyaWJ1
dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNEE4MTRENTFDNkRFRThEMDBCRjg1QUMg
LyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovLAogCQkJCUU0QTgxNEQzMUM2REVDNDAw
MEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICovLAogCQkJCTFDMDEwNkZFMTky
NTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwICovLApAQCAtMjU4NjAsNiAr
MjU4NjYsNyBAQAogCQkJCTMxMzEzRjY2MTQ0M0IzNUYwMDZFMkE5MCAvKiBGaWx0ZXJFZmZlY3RS
ZW5kZXJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNkUxNDk5NzkwRDAwQ0REM0E0IC8q
IEZpbHRlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNzAxNDk5NzkwRDAw
Q0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0QTgxNERB
MUM3MEUxMEQwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTM3MkMwMEQ5MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVM
YXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBG
bG9hdENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzAzODIsNiArMzAzODksNyBAQAog
CQkJCUI1OURENkFBMTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJENEU5MTYxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpT
Q3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzYzODBD
RTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlFNEE4MTREODFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OURENjlFMTE5MDJBNDIwMDdFOTY4NCAvKiBKU1NR
TFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEMjMxNkUwQ0Qy
NjlFNzAwQzFGMTk0IC8qIEpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjU5REQ2QTIxMTkwMkE1MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0RvY3Vt
ZW50UnVsZVNldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVu
dFJ1bGVTZXRzLmNwcAkocmV2aXNpb24gMTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0Rv
Y3VtZW50UnVsZVNldHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNCArMTI2LDE4IEBAIFJ1
bGVTZXQqIERvY3VtZW50UnVsZVNldHM6OmFuY2VzdG9yQ2xhc3MKICAgICByZXR1cm4gYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAorY29uc3QgRG9jdW1lbnRSdWxlU2V0czo6
QXR0cmlidXRlUnVsZXMqIERvY3VtZW50UnVsZVNldHM6OmFuY2VzdG9yQXR0cmlidXRlUnVsZXNG
b3JIVE1MKEF0b21pY1N0cmluZ0ltcGwqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Cit7CisgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2FuY2VzdG9yQXR0cmlidXRlUnVsZVNldEZvckhUTUwuYWRkKGF0dHJp
YnV0ZU5hbWUsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAg
ICAgICBpZiAoYXV0byogcnVsZXMgPSBtX2ZlYXR1cmVzLmFuY2VzdG9yQXR0cmlidXRlUnVsZXNG
b3JIVE1MLmdldChhdHRyaWJ1dGVOYW1lKSkgeworICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0cmlidXRlUnVsZXM+KCk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8qIHNlbGVjdG9yIDogcnVsZXMtPnNlbGVjdG9ycy52YWx1ZXMoKSkKKyAg
ICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hdHRyaWJ1dGVTZWxlY3Rv
cnMuYXBwZW5kKHNlbGVjdG9yKTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPnJ1bGVTZXQgPSBtYWtlUnVsZVNldChydWxlcy0+ZmVhdHVyZXMpOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRS
dWxlU2V0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVT
ZXRzLmgJKHJldmlzaW9uIDE5NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1
bGVTZXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEyIEBAIHB1YmxpYzoKICAgICBS
dWxlU2V0KiB1bmNvbW1vbkF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5jb21tb25BdHRy
aWJ1dGVSdWxlU2V0LmdldCgpOyB9CiAgICAgUnVsZVNldCogYW5jZXN0b3JDbGFzc1J1bGVzKEF0
b21pY1N0cmluZ0ltcGwqIGNsYXNzTmFtZSkgY29uc3Q7CiAKKyAgICBzdHJ1Y3QgQXR0cmlidXRl
UnVsZXMgeworICAgICAgICBWZWN0b3I8Y29uc3QgQ1NTU2VsZWN0b3IqPiBhdHRyaWJ1dGVTZWxl
Y3RvcnM7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBydWxlU2V0OworICAgIH07
CisgICAgY29uc3QgQXR0cmlidXRlUnVsZXMqIGFuY2VzdG9yQXR0cmlidXRlUnVsZXNGb3JIVE1M
KEF0b21pY1N0cmluZ0ltcGwqKSBjb25zdDsKKwogICAgIHZvaWQgaW5pdFVzZXJTdHlsZShFeHRl
bnNpb25TdHlsZVNoZWV0cyYsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBTdHlsZVJlc29s
dmVyJik7CiAgICAgdm9pZCByZXNldEF1dGhvclN0eWxlKCk7CiAgICAgdm9pZCBhcHBlbmRBdXRo
b3JTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYsIE1lZGlh
UXVlcnlFdmFsdWF0b3IqLCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiwgU3R5bGVSZXNvbHZlciop
OwpAQCAtNjgsNiArNzQsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRy
PFJ1bGVTZXQ+IG1fc2libGluZ1J1bGVTZXQ7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8
UnVsZVNldD4gbV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQ7CiAgICAgbXV0YWJsZSBIYXNoTWFw
PEF0b21pY1N0cmluZ0ltcGwqLCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4+IG1fYW5jZXN0b3JD
bGFzc1J1bGVTZXQ7CisgICAgbXV0YWJsZSBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBzdGQ6
OnVuaXF1ZV9wdHI8QXR0cmlidXRlUnVsZXM+PiBtX2FuY2VzdG9yQXR0cmlidXRlUnVsZVNldEZv
ckhUTUw7CiB9OwogCiBpbmxpbmUgY29uc3QgUnVsZUZlYXR1cmVTZXQmIERvY3VtZW50UnVsZVNl
dHM6OmZlYXR1cmVzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVy
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAko
cmV2aXNpb24gMTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsMTIgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6cmVj
dXJzaXZlbHlDb2xsZWN0RgogICAgICAgICAgICAgaWYgKG1hdGNoZXNBbmNlc3RvcikKICAgICAg
ICAgICAgICAgICBzZWxlY3RvckZlYXR1cmVzLmNsYXNzZXNNYXRjaGluZ0FuY2VzdG9ycy5hcHBl
bmQoc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rv
ci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKSB7Ci0gICAgICAgICAgICBhdHRyaWJ1dGVDYW5vbmlj
YWxMb2NhbE5hbWVzSW5SdWxlcy5hZGQoc2VsZWN0b3ItPmF0dHJpYnV0ZUNhbm9uaWNhbExvY2Fs
TmFtZSgpLmltcGwoKSk7Ci0gICAgICAgICAgICBhdHRyaWJ1dGVMb2NhbE5hbWVzSW5SdWxlcy5h
ZGQoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgICAg
ICBhdXRvKiBjYW5vbmljYWxMb2NhbE5hbWUgPSBzZWxlY3Rvci0+YXR0cmlidXRlQ2Fub25pY2Fs
TG9jYWxOYW1lKCkuaW1wbCgpOworICAgICAgICAgICAgYXV0byogbG9jYWxOYW1lID0gc2VsZWN0
b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmltcGwoKTsKKyAgICAgICAgICAgIGF0dHJpYnV0
ZUNhbm9uaWNhbExvY2FsTmFtZXNJblJ1bGVzLmFkZChjYW5vbmljYWxMb2NhbE5hbWUpOworICAg
ICAgICAgICAgYXR0cmlidXRlTG9jYWxOYW1lc0luUnVsZXMuYWRkKGxvY2FsTmFtZSk7CisgICAg
ICAgICAgICBpZiAobWF0Y2hlc0FuY2VzdG9yKQorICAgICAgICAgICAgICAgIHNlbGVjdG9yRmVh
dHVyZXMuYXR0cmlidXRlU2VsZWN0b3JzTWF0Y2hpbmdBbmNlc3RvcnMuYXBwZW5kKHNlbGVjdG9y
KTsKICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvRWxlbWVudCkgewogICAgICAgICAgICAgc3dpdGNoIChzZWxlY3Rvci0+cHNldWRvRWxl
bWVudFR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVu
dEZpcnN0TGluZToKQEAgLTc4LDYgKzgyLDEzIEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OnJlY3Vy
c2l2ZWx5Q29sbGVjdEYKICAgICB9IHdoaWxlIChzZWxlY3Rvcik7CiB9CiAKK3N0YXRpYyBzdGQ6
OnBhaXI8QXRvbWljU3RyaW5nSW1wbCosIHVuc2lnbmVkPiBtYWtlQXR0cmlidXRlU2VsZWN0b3JL
ZXkoY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yKQoreworICAgIGJvb2wgY2FzZUluc2Vuc2l0
aXZlID0gc2VsZWN0b3IuYXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2FzZUluc2Vuc2l0aXZlKCk7
CisgICAgdW5zaWduZWQgbWF0Y2hBbmRDYXNlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNlbGVj
dG9yLm1hdGNoKCkpIDw8IDEgfCBjYXNlSW5zZW5zaXRpdmU7CisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHNlbGVjdG9yLmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpLmltcGwoKSwgbWF0
Y2hBbmRDYXNlKTsKK30KKwogdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNv
bnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKIHsKICAgICBTZWxlY3RvckZlYXR1cmVzIHNlbGVjdG9y
RmVhdHVyZXM7CkBAIC05Miw2ICsxMDMsMTYgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVj
dEZlYXR1cmVzKGNvbgogICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVs
ZURhdGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0YS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
KCkpKTsKICAgICB9CisgICAgZm9yIChhdXRvKiBzZWxlY3RvciA6IHNlbGVjdG9yRmVhdHVyZXMu
YXR0cmlidXRlU2VsZWN0b3JzTWF0Y2hpbmdBbmNlc3RvcnMpIHsKKyAgICAgICAgLy8gSGFzaGlu
ZyBieSBhdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUgbWFrZXMgdGhpcyBIVE1MIHNwZWNpZmlj
LgorICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGFuY2VzdG9yQXR0cmlidXRlUnVsZXNGb3JIVE1M
LmFkZChzZWxlY3Rvci0+YXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lKCkuaW1wbCgpLCBudWxs
cHRyKTsKKyAgICAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0cmlidXRlUnVsZXM+
KCk7CisgICAgICAgIGF1dG8mIHJ1bGVzID0gKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgICAgIHJ1bGVzLmZlYXR1cmVzLmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCks
IHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuaGFzRG9jdW1lbnRTZWN1cml0eU9y
aWdpbigpKSk7CisgICAgICAgIC8vIERlZHVwbGljYXRlIHNlbGVjdG9ycy4KKyAgICAgICAgcnVs
ZXMuc2VsZWN0b3JzLmFkZChtYWtlQXR0cmlidXRlU2VsZWN0b3JLZXkoKnNlbGVjdG9yKSwgc2Vs
ZWN0b3IpOworICAgIH0KIH0KIAogdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVG
ZWF0dXJlU2V0JiBvdGhlcikKQEAgLTEwOSw2ICsxMzAsMTUgQEAgdm9pZCBSdWxlRmVhdHVyZVNl
dDo6YWRkKGNvbnN0IFJ1bGVGZWF0dQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAg
ICAgfQorICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIuYW5jZXN0b3JBdHRyaWJ1
dGVSdWxlc0ZvckhUTUwpIHsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBhbmNlc3RvckF0dHJp
YnV0ZVJ1bGVzRm9ySFRNTC5hZGQoa2V5VmFsdWVQYWlyLmtleSwgbnVsbHB0cik7CisgICAgICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEF0dHJpYnV0ZVJ1bGVzPigpOworICAgICAgICBh
dXRvJiBydWxlcyA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBydWxlcy5m
ZWF0dXJlcy5hcHBlbmRWZWN0b3Ioa2V5VmFsdWVQYWlyLnZhbHVlLT5mZWF0dXJlcyk7CisgICAg
ICAgIGZvciAoYXV0byYgc2VsZWN0b3JQYWlyIDoga2V5VmFsdWVQYWlyLnZhbHVlLT5zZWxlY3Rv
cnMpCisgICAgICAgICAgICBydWxlcy5zZWxlY3RvcnMuYWRkKHNlbGVjdG9yUGFpci5rZXksIHNl
bGVjdG9yUGFpci52YWx1ZSk7CisgICAgfQogICAgIHVzZXNGaXJzdExpbmVSdWxlcyA9IHVzZXNG
aXJzdExpbmVSdWxlcyB8fCBvdGhlci51c2VzRmlyc3RMaW5lUnVsZXM7CiAgICAgdXNlc0ZpcnN0
TGV0dGVyUnVsZXMgPSB1c2VzRmlyc3RMZXR0ZXJSdWxlcyB8fCBvdGhlci51c2VzRmlyc3RMZXR0
ZXJSdWxlczsKIH0KQEAgLTEyMiw2ICsxNTIsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjpjbGVh
cigpCiAgICAgc2libGluZ1J1bGVzLmNsZWFyKCk7CiAgICAgdW5jb21tb25BdHRyaWJ1dGVSdWxl
cy5jbGVhcigpOwogICAgIGFuY2VzdG9yQ2xhc3NSdWxlcy5jbGVhcigpOworICAgIGFuY2VzdG9y
QXR0cmlidXRlUnVsZXNGb3JIVE1MLmNsZWFyKCk7CiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVzID0g
ZmFsc2U7CiAgICAgdXNlc0ZpcnN0TGV0dGVyUnVsZXMgPSBmYWxzZTsKIH0KQEAgLTEzMiw2ICsx
NjMsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjpzaHJpbmtUb0ZpdCgpCiAgICAgdW5jb21tb25B
dHRyaWJ1dGVSdWxlcy5zaHJpbmtUb0ZpdCgpOwogICAgIGZvciAoYXV0byYgcnVsZXMgOiBhbmNl
c3RvckNsYXNzUnVsZXMudmFsdWVzKCkpCiAgICAgICAgIHJ1bGVzLT5zaHJpbmtUb0ZpdCgpOwor
ICAgIGZvciAoYXV0byYgcnVsZXMgOiBhbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRNTC52YWx1
ZXMoKSkKKyAgICAgICAgcnVsZXMtPmZlYXR1cmVzLnNocmlua1RvRml0KCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5oCShyZXZpc2lv
biAxOTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBSdWxlRmVhdHVyZV9oCiAjZGVmaW5lIFJ1
bGVGZWF0dXJlX2gKIAorI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CkBAIC0yOSw3ICszMCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NT
U2VsZWN0b3I7CiBjbGFzcyBSdWxlRGF0YTsKIGNsYXNzIFN0eWxlUnVsZTsKIApAQCAtNTgsNiAr
NTgsMTIgQEAgc3RydWN0IFJ1bGVGZWF0dXJlU2V0IHsKICAgICBWZWN0b3I8UnVsZUZlYXR1cmU+
IHNpYmxpbmdSdWxlczsKICAgICBWZWN0b3I8UnVsZUZlYXR1cmU+IHVuY29tbW9uQXR0cmlidXRl
UnVsZXM7CiAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxSdWxlRmVhdHVyZT4+PiBhbmNlc3RvckNsYXNzUnVsZXM7CisKKyAgICBzdHJ1Y3QgQXR0
cmlidXRlUnVsZXMgeworICAgICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxBdG9taWNTdHJpbmdJbXBs
KiwgdW5zaWduZWQ+LCBjb25zdCBDU1NTZWxlY3Rvcio+IHNlbGVjdG9yczsKKyAgICAgICAgVmVj
dG9yPFJ1bGVGZWF0dXJlPiBmZWF0dXJlczsKKyAgICB9OworICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nSW1wbCosIHN0ZDo6dW5pcXVlX3B0cjxBdHRyaWJ1dGVSdWxlcz4+IGFuY2VzdG9yQXR0cmli
dXRlUnVsZXNGb3JIVE1MOwogICAgIGJvb2wgdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsK
ICAgICBib29sIHVzZXNGaXJzdExldHRlclJ1bGVzIHsgZmFsc2UgfTsKIApAQCAtNjUsNiArNzEs
NyBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBTZWxlY3RvckZlYXR1cmVzIHsKICAgICAgICAgYm9v
bCBoYXNTaWJsaW5nU2VsZWN0b3IgeyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8QXRvbWljU3Ry
aW5nSW1wbCo+IGNsYXNzZXNNYXRjaGluZ0FuY2VzdG9yczsKKyAgICAgICAgVmVjdG9yPGNvbnN0
IENTU1NlbGVjdG9yKj4gYXR0cmlidXRlU2VsZWN0b3JzTWF0Y2hpbmdBbmNlc3RvcnM7CiAgICAg
fTsKICAgICB2b2lkIHJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKFNlbGVj
dG9yRmVhdHVyZXMmLCBjb25zdCBDU1NTZWxlY3RvciYsIGJvb2wgbWF0Y2hlc0FuY2VzdG9yID0g
ZmFsc2UpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCShy
ZXZpc2lvbiAxOTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTE4LDYgKzUxOCwyMSBAQCBzdGF0aWMgYm9vbCBhbnlBdHRy
aWJ1dGVNYXRjaGVzKGNvbnN0IEVsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFNlbGVj
dG9yQ2hlY2tlcjo6YXR0cmlidXRlU2VsZWN0b3JNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVmFsdWUsIGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikKK3sKKyAgICBB
U1NFUlQoc2VsZWN0b3IuaXNBdHRyaWJ1dGVTZWxlY3RvcigpKTsKKyAgICBhdXRvJiBzZWxlY3Rv
ckF0dHJpYnV0ZSA9IHNlbGVjdG9yLmF0dHJpYnV0ZSgpOworICAgIGF1dG8mIHNlbGVjdG9yTmFt
ZSA9IGVsZW1lbnQuaXNIVE1MRWxlbWVudCgpID8gc2VsZWN0b3IuYXR0cmlidXRlQ2Fub25pY2Fs
TG9jYWxOYW1lKCkgOiBzZWxlY3RvckF0dHJpYnV0ZS5sb2NhbE5hbWUoKTsKKyAgICBpZiAoIUF0
dHJpYnV0ZTo6bmFtZU1hdGNoZXNGaWx0ZXIoYXR0cmlidXRlTmFtZSwgc2VsZWN0b3JBdHRyaWJ1
dGUucHJlZml4KCksIHNlbGVjdG9yTmFtZSwgc2VsZWN0b3JBdHRyaWJ1dGUubmFtZXNwYWNlVVJJ
KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1
ZTsKKyAgICBpZiAoc2VsZWN0b3IuYXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2FzZUluc2Vuc2l0
aXZlKCkpCisgICAgICAgIGNhc2VTZW5zaXRpdmUgPSBmYWxzZTsKKyAgICBlbHNlIGlmIChlbGVt
ZW50LmRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKSAmJiBlbGVtZW50LmlzSFRNTEVsZW1lbnQo
KSAmJiAhSFRNTERvY3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoc2VsZWN0b3IuYXR0
cmlidXRlKCkpKQorICAgICAgICBjYXNlU2Vuc2l0aXZlID0gZmFsc2U7CisgICAgcmV0dXJuIGF0
dHJpYnV0ZVZhbHVlTWF0Y2hlcyhBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFs
dWUpLCBzZWxlY3Rvci5tYXRjaCgpLCBzZWxlY3Rvci52YWx1ZSgpLCBjYXNlU2Vuc2l0aXZlKTsK
K30KKwogc3RhdGljIGJvb2wgY2FuTWF0Y2hIb3Zlck9yQWN0aXZlSW5RdWlya3NNb2RlKGNvbnN0
IFNlbGVjdG9yQ2hlY2tlcjo6TG9jYWxDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEZvciBx
dWlya3MgbW9kZSwgZm9sbG93IHRoaXM6IGh0dHA6Ly9xdWlya3Muc3BlYy53aGF0d2cub3JnLyN0
aGUtOmFjdGl2ZS1hbmQtOmhvdmVyLXF1aXJrCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5oCShyZXZpc2lvbiAxOTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgYm9vbCBpc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqKTsKICAgICBzdGF0aWMgYm9vbCBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBF
bGVtZW50Jik7CisgICAgc3RhdGljIGJvb2wgYXR0cmlidXRlU2VsZWN0b3JNYXRjaGVzKGNvbnN0
IEVsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRy
aWJ1dGVWYWx1ZSwgY29uc3QgQ1NTU2VsZWN0b3ImKTsKIAogICAgIGVudW0gTGlua01hdGNoTWFz
ayB7IE1hdGNoRGVmYXVsdCA9IDAsIE1hdGNoTGluayA9IDEsIE1hdGNoVmlzaXRlZCA9IDIsIE1h
dGNoQWxsID0gTWF0Y2hMaW5rIHwgTWF0Y2hWaXNpdGVkIH07CiAgICAgc3RhdGljIHVuc2lnbmVk
IGRldGVybWluZUxpbmtNYXRjaFR5cGUoY29uc3QgQ1NTU2VsZWN0b3IqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
QXR0ci5jcHAJKHJldmlzaW9uIDE5NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkF0dHIuaCIKIAorI2luY2x1ZGUgIkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlv
bi5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKQEAgLTEwOCw5ICsxMDksMTAgQEAgdm9pZCBBdHRy
OjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIAogICAgIEV2ZW50UXVldWVTY29wZSBzY29w
ZTsKICAgICBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZCsrOwogICAgIHJlbW92ZUNoaWxkcmVuKCk7
Ci0gICAgaWYgKG1fZWxlbWVudCkKKyAgICBpZiAobV9lbGVtZW50KSB7CisgICAgICAgIFN0eWxl
OjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKm1fZWxlbWVu
dCwgcXVhbGlmaWVkTmFtZSgpLCBlbGVtZW50QXR0cmlidXRlKCkudmFsdWUoKSwgdmFsdWUpOwog
ICAgICAgICBlbGVtZW50QXR0cmlidXRlKCkuc2V0VmFsdWUodmFsdWUpOwotICAgIGVsc2UKKyAg
ICB9IGVsc2UKICAgICAgICAgbV9zdGFuZGFsb25lVmFsdWUgPSB2YWx1ZTsKICAgICBjcmVhdGVU
ZXh0Q2hpbGQoKTsKICAgICBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZC0tOwpAQCAtMTYzLDkgKzE2
NSwxMCBAQCB2b2lkIEF0dHI6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoCiAgICAgaWYg
KG1fZWxlbWVudCkKICAgICAgICAgbV9lbGVtZW50LT53aWxsTW9kaWZ5QXR0cmlidXRlKHF1YWxp
ZmllZE5hbWUoKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKIAotICAgIGlmIChtX2VsZW1lbnQpCisg
ICAgaWYgKG1fZWxlbWVudCkgeworICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCptX2VsZW1lbnQsIHF1YWxpZmllZE5hbWUoKSwgb2xk
VmFsdWUsIG5ld1ZhbHVlKTsKICAgICAgICAgZWxlbWVudEF0dHJpYnV0ZSgpLnNldFZhbHVlKG5l
d1ZhbHVlKTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIG1fc3RhbmRhbG9uZVZhbHVl
ID0gbmV3VmFsdWU7CiAKICAgICBpZiAobV9lbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAkocmV2aXNpb24gMTk2NTYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENh
Y2hlLmgiCiAjaW5jbHVkZSAiQXR0ci5oIgorI2luY2x1ZGUgIkF0dHJpYnV0ZUNoYW5nZUludmFs
aWRhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgog
I2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgpAQCAtMTE3NiwyNiArMTE3NywzMCBAQCBpbmxpbmUg
dm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyAgICBpZiAoaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpIHsKKyAgICAgICAg
ZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5hdHRyaWJ1dGVBdChpbmRleCkuc2V0VmFsdWUobmV3
VmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY29uc3QgQXR0cmlidXRlJiBh
dHRyaWJ1dGUgPSBhdHRyaWJ1dGVBdChpbmRleCk7CisgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1
dGVOYW1lID0gYXR0cmlidXRlLm5hbWUoKTsKICAgICBBdG9taWNTdHJpbmcgb2xkVmFsdWUgPSBh
dHRyaWJ1dGUudmFsdWUoKTsKLSAgICBib29sIHZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlICE9IG9s
ZFZhbHVlOwotICAgIFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZSA9ICghaW5TeW5jaHJvbml6
YXRpb25PZkxhenlBdHRyaWJ1dGUgfHwgdmFsdWVDaGFuZ2VkKSA/IGF0dHJpYnV0ZS5uYW1lKCkg
OiBuYW1lOwogCi0gICAgaWYgKCFpblN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSkKLSAg
ICAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOworICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgb2xkVmFsdWUsIG5l
d1ZhbHVlKTsKIAotICAgIGlmICh2YWx1ZUNoYW5nZWQpIHsKKyAgICBpZiAobmV3VmFsdWUgIT0g
b2xkVmFsdWUpIHsKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYW4gQXR0ciBub2RlIGhvb2tlZCB0
byB0aGlzIGF0dHJpYnV0ZSwgdGhlIEF0dHI6OnNldFZhbHVlKCkgY2FsbCBiZWxvdwogICAgICAg
ICAvLyB3aWxsIHdyaXRlIGludG8gdGhlIEVsZW1lbnREYXRhLgogICAgICAgICAvLyBGSVhNRTog
UmVmYWN0b3IgdGhpcyBzbyBpdCBtYWtlcyBzb21lIHNlbnNlLgotICAgICAgICBpZiAoUmVmUHRy
PEF0dHI+IGF0dHJOb2RlID0gaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUgPyBudWxs
cHRyIDogYXR0cklmRXhpc3RzKGF0dHJpYnV0ZU5hbWUpKQorICAgICAgICBpZiAoUmVmUHRyPEF0
dHI+IGF0dHJOb2RlID0gYXR0cklmRXhpc3RzKGF0dHJpYnV0ZU5hbWUpKQogICAgICAgICAgICAg
YXR0ck5vZGUtPnNldFZhbHVlKG5ld1ZhbHVlKTsKLSAgICAgICAgZWxzZQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIFN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJ
bnZhbGlkYXRpb24oKnRoaXMsIG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAgICAgICAgICAg
ICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLmF0dHJpYnV0ZUF0KGluZGV4KS5zZXRWYWx1ZShu
ZXdWYWx1ZSk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWluU3luY2hyb25pemF0aW9u
T2ZMYXp5QXR0cmlidXRlKQotICAgICAgICBkaWRNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICBkaWRNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKIH0KIAogc3RhdGljIGlubGluZSBBdG9taWNTdHJp
bmcgbWFrZUlkRm9yU3R5bGVSZXNvbHV0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIGJv
b2wgaW5RdWlya3NNb2RlKQpAQCAtMTI2Miw5ICsxMjY3LDYgQEAgdm9pZCBFbGVtZW50OjphdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YQogCiAgICAgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVj
dGlvbkNhY2hlc0luQW5jZXN0b3JzKCZuYW1lLCB0aGlzKTsKIAotICAgIC8vIElmIHRoZXJlIGlz
IGN1cnJlbnRseSBubyBTdHlsZVJlc29sdmVyLCB3ZSBjYW4ndCBiZSBzdXJlIHRoYXQgdGhpcyBh
dHRyaWJ1dGUgY2hhbmdlIHdvbid0IGFmZmVjdCBzdHlsZS4KLSAgICBzaG91bGRJbnZhbGlkYXRl
U3R5bGUgfD0gIXN0eWxlUmVzb2x2ZXI7Ci0KICAgICBpZiAoc2hvdWxkSW52YWxpZGF0ZVN0eWxl
KQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKQEAgLTIwNDQsMjcgKzIwNDYsMzgg
QEAgdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVJbnRlcm5hbCh1bgogICAgIFF1YWxpZmll
ZE5hbWUgbmFtZSA9IGVsZW1lbnREYXRhLmF0dHJpYnV0ZUF0KGluZGV4KS5uYW1lKCk7CiAgICAg
QXRvbWljU3RyaW5nIHZhbHVlQmVpbmdSZW1vdmVkID0gZWxlbWVudERhdGEuYXR0cmlidXRlQXQo
aW5kZXgpLnZhbHVlKCk7CiAKLSAgICBpZiAoIWluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmli
dXRlKSB7Ci0gICAgICAgIGlmICghdmFsdWVCZWluZ1JlbW92ZWQuaXNOdWxsKCkpCi0gICAgICAg
ICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKG5hbWUsIHZhbHVlQmVpbmdSZW1vdmVkLCBudWxsQXRv
bSk7Ci0gICAgfQotCiAgICAgaWYgKFJlZlB0cjxBdHRyPiBhdHRyTm9kZSA9IGF0dHJJZkV4aXN0
cyhuYW1lKSkKICAgICAgICAgZGV0YWNoQXR0ck5vZGVGcm9tRWxlbWVudFdpdGhWYWx1ZShhdHRy
Tm9kZS5nZXQoKSwgZWxlbWVudERhdGEuYXR0cmlidXRlQXQoaW5kZXgpLnZhbHVlKCkpOwogCi0g
ICAgZWxlbWVudERhdGEucmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKKyAgICBpZiAoaW5TeW5jaHJv
bml6YXRpb25PZkxhenlBdHRyaWJ1dGUpIHsKKyAgICAgICAgZWxlbWVudERhdGEucmVtb3ZlQXR0
cmlidXRlKGluZGV4KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWVC
ZWluZ1JlbW92ZWQuaXNOdWxsKCkpCisgICAgICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUobmFtZSwg
dmFsdWVCZWluZ1JlbW92ZWQsIG51bGxBdG9tKTsKIAotICAgIGlmICghaW5TeW5jaHJvbml6YXRp
b25PZkxhenlBdHRyaWJ1dGUpCi0gICAgICAgIGRpZFJlbW92ZUF0dHJpYnV0ZShuYW1lLCB2YWx1
ZUJlaW5nUmVtb3ZlZCk7CisgICAgeworICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52
YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBuYW1lLCB2YWx1ZUJlaW5nUmVtb3Zl
ZCwgbnVsbEF0b20pOworICAgICAgICBlbGVtZW50RGF0YS5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgp
OworICAgIH0KKworICAgIGRpZFJlbW92ZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZUJlaW5nUmVtb3Zl
ZCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6YWRkQXR0cmlidXRlSW50ZXJuYWwoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgU3luY2hyb25pemF0aW9u
T2ZMYXp5QXR0cmlidXRlIGluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKQogewotICAg
IGlmICghaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpCi0gICAgICAgIHdpbGxNb2Rp
ZnlBdHRyaWJ1dGUobmFtZSwgbnVsbEF0b20sIHZhbHVlKTsKLSAgICBlbnN1cmVVbmlxdWVFbGVt
ZW50RGF0YSgpLmFkZEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Ci0gICAgaWYgKCFpblN5bmNocm9u
aXphdGlvbk9mTGF6eUF0dHJpYnV0ZSkKLSAgICAgICAgZGlkQWRkQXR0cmlidXRlKG5hbWUsIHZh
bHVlKTsKKyAgICBpZiAoaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpIHsKKyAgICAg
ICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5hZGRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShuYW1lLCBu
dWxsQXRvbSwgdmFsdWUpOworICAgIHsKKyAgICAgICAgU3R5bGU6OkF0dHJpYnV0ZUNoYW5nZUlu
dmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgbmFtZSwgbnVsbEF0b20sIHZhbHVl
KTsKKyAgICAgICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5hZGRBdHRyaWJ1dGUobmFtZSwg
dmFsdWUpOworICAgIH0KKyAgICBkaWRBZGRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBi
b29sIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCkBA
IC0yNDc5LDYgKzI0OTIsMTggQEAgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUo
UHNldQogICAgIHJldHVybiBzdHlsZTsKIH0KIAorYm9vbCBFbGVtZW50OjpuZWVkc1N0eWxlSW52
YWxpZGF0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIWluUmVuZGVyZWREb2N1bWVudCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHN0eWxlQ2hhbmdlVHlwZSgpID49IEZ1bGxTdHls
ZUNoYW5nZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZG9jdW1lbnQoKS5zdHls
ZVJlc29sdmVySWZFeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHZvaWQgRWxlbWVudDo6c2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoKQogewog
ICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KHRydWUp
OwpAQCAtMzA3NCwxMiArMzA5OSw2IEBAIHZvaWQgRWxlbWVudDo6d2lsbE1vZGlmeUF0dHJpYnV0
ZShjb25zdCAKICAgICAgICAgICAgIHVwZGF0ZUxhYmVsKHRyZWVTY29wZSgpLCBvbGRWYWx1ZSwg
bmV3VmFsdWUpOwogICAgIH0KIAotICAgIGlmIChvbGRWYWx1ZSAhPSBuZXdWYWx1ZSkgewotICAg
ICAgICBhdXRvIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVudCgpLnN0eWxlUmVzb2x2ZXJJZkV4aXN0
cygpOwotICAgICAgICBpZiAoc3R5bGVSZXNvbHZlciAmJiBzdHlsZVJlc29sdmVyLT5oYXNTZWxl
Y3RvckZvckF0dHJpYnV0ZSgqdGhpcywgbmFtZS5sb2NhbE5hbWUoKSkpCi0gICAgICAgICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgfQotCiAgICAgaWYgKHN0ZDo6dW5pcXVlX3B0cjxN
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gcmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2
ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24oKnRoaXMsIG5hbWUp
KQogICAgICAgICByZWNpcGllbnRzLT5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoTXV0YXRpb25SZWNv
cmQ6OmNyZWF0ZUF0dHJpYnV0ZXMoKnRoaXMsIG5hbWUsIG9sZFZhbHVlKSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjc5LDYgKzI3OSw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETykg
b3ZlcnJpZGU7CiAKKyAgICBib29sIG5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSBjb25zdDsKKwog
ICAgIC8vIE1ldGhvZHMgZm9yIGluZGljYXRpbmcgdGhlIHN0eWxlIGlzIGFmZmVjdGVkIGJ5IGR5
bmFtaWMgdXBkYXRlcyAoZS5nLiwgY2hpbGRyZW4gY2hhbmdpbmcsIG91ciBwb3NpdGlvbiBjaGFu
Z2luZyBpbiBvdXIgc2libGluZyBsaXN0LCBldGMuKQogICAgIGJvb2wgc3R5bGVBZmZlY3RlZEJ5
RW1wdHkoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhU3R5bGVBZmZl
Y3RlZEJ5RW1wdHkoKTsgfQogICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSBjb25z
dCB7IHJldHVybiBnZXRGbGFnKENoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyUnVsZXNGbGFnKTsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvQXR0cmli
dXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF0dHJpYnV0ZUNo
YW5nZUludmFsaWRhdGlvbi5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnRSdWxlU2V0cy5oIgorI2lu
Y2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIK
KyNpbmNsdWRlICJTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CisKK3ZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0
aW9uOjppbnZhbGlkYXRlU3R5bGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSkKK3sKKyAgICBpZiAobmV3VmFsdWUgPT0gb2xkVmFsdWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8mIHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygp
OworICAgIGJvb2wgaXNIVE1MID0gbV9lbGVtZW50LmlzSFRNTEVsZW1lbnQoKTsKKworICAgIGF1
dG8mIG5hbWVTZXQgPSBpc0hUTUwgPyBydWxlU2V0cy5mZWF0dXJlcygpLmF0dHJpYnV0ZUNhbm9u
aWNhbExvY2FsTmFtZXNJblJ1bGVzIDogcnVsZVNldHMuZmVhdHVyZXMoKS5hdHRyaWJ1dGVMb2Nh
bE5hbWVzSW5SdWxlczsKKyAgICBib29sIHNob3VsZEludmFsaWRhdGUgPSBuYW1lU2V0LmNvbnRh
aW5zKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICBpZiAoIXNob3VsZElu
dmFsaWRhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghaXNIVE1MKSB7CisgICAgICAg
IG1fZWxlbWVudC5zZXROZWVkc1N0eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9lbGVtZW50LnNoYWRvd1Jvb3QoKSAmJiBydWxl
U2V0cy5hdXRob3JTdHlsZSgpLT5oYXNTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoKSkgeworICAg
ICAgICBtX2VsZW1lbnQuc2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9lbGVtZW50LnNldE5lZWRzU3R5bGVSZWNhbGMo
SW5saW5lU3R5bGVDaGFuZ2UpOworCisgICAgaWYgKCFjaGlsZHJlbk9mVHlwZTxFbGVtZW50Piht
X2VsZW1lbnQpLmZpcnN0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGF0dHJpYnV0
ZVJ1bGVzID0gcnVsZVNldHMuYW5jZXN0b3JBdHRyaWJ1dGVSdWxlc0ZvckhUTUwoYXR0cmlidXRl
TmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgIGlmICghYXR0cmlidXRlUnVsZXMpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIENoZWNrIGlmIGRlc2NlbmRhbnRzIG1heSBiZSBhZmZlY3Rl
ZCBieSB0aGlzIGF0dHJpYnV0ZSBjaGFuZ2UuCisgICAgZm9yIChhdXRvKiBzZWxlY3RvciA6IGF0
dHJpYnV0ZVJ1bGVzLT5hdHRyaWJ1dGVTZWxlY3RvcnMpIHsKKyAgICAgICAgYm9vbCBvbGRNYXRj
aGVzID0gb2xkVmFsdWUuaXNOdWxsKCkgPyBmYWxzZSA6IFNlbGVjdG9yQ2hlY2tlcjo6YXR0cmli
dXRlU2VsZWN0b3JNYXRjaGVzKG1fZWxlbWVudCwgYXR0cmlidXRlTmFtZSwgb2xkVmFsdWUsICpz
ZWxlY3Rvcik7CisgICAgICAgIGJvb2wgbmV3TWF0Y2hlcyA9IG5ld1ZhbHVlLmlzTnVsbCgpID8g
ZmFsc2UgOiBTZWxlY3RvckNoZWNrZXI6OmF0dHJpYnV0ZVNlbGVjdG9yTWF0Y2hlcyhtX2VsZW1l
bnQsIGF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlLCAqc2VsZWN0b3IpOworCisgICAgICAgIGlmIChv
bGRNYXRjaGVzICE9IG5ld01hdGNoZXMpIHsKKyAgICAgICAgICAgIG1fZGVzY2VuZGFudEludmFs
aWRhdGlvblJ1bGVTZXQgPSBhdHRyaWJ1dGVSdWxlcy0+cnVsZVNldC5nZXQoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBBdHRyaWJ1dGVDaGFuZ2VJ
bnZhbGlkYXRpb246OmludmFsaWRhdGVEZXNjZW5kYW50cygpCit7CisgICAgaWYgKCFtX2Rlc2Nl
bmRhbnRJbnZhbGlkYXRpb25SdWxlU2V0KQorICAgICAgICByZXR1cm47CisgICAgU3R5bGVJbnZh
bGlkYXRpb25BbmFseXNpcyBpbnZhbGlkYXRpb25BbmFseXNpcygqbV9kZXNjZW5kYW50SW52YWxp
ZGF0aW9uUnVsZVNldCk7CisgICAgaW52YWxpZGF0aW9uQW5hbHlzaXMuaW52YWxpZGF0ZVN0eWxl
KG1fZWxlbWVudCk7Cit9CisKK30KK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJp
YnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXR0cmlidXRlQ2hhbmdl
SW52YWxpZGF0aW9uX2gKKyNkZWZpbmUgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uX2gKKwor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIlN0
eWxlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRG9jdW1lbnRSdWxlU2V0czsKK2NsYXNzIFNwYWNlU3BsaXRTdHJpbmc7
CisKK25hbWVzcGFjZSBTdHlsZSB7CisKK2NsYXNzIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlv
biB7CitwdWJsaWM6CisgICAgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmLCBj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAgfkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlv
bigpOworCitwcml2YXRlOgorICAgIHVzaW5nIENsYXNzQ2hhbmdlVmVjdG9yID0gVmVjdG9yPEF0
b21pY1N0cmluZ0ltcGwqLCA0PjsKKworICAgIHZvaWQgaW52YWxpZGF0ZVN0eWxlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5ld1ZhbHVlKTsKKyAgICB2b2lkIGludmFsaWRhdGVEZXNjZW5kYW50cygpOworCisg
ICAgY29uc3QgYm9vbCBtX2lzRW5hYmxlZDsKKyAgICBFbGVtZW50JiBtX2VsZW1lbnQ7CisKKyAg
ICBSdWxlU2V0KiBtX2Rlc2NlbmRhbnRJbnZhbGlkYXRpb25SdWxlU2V0IHsgbnVsbHB0ciB9Owor
fTsKKworaW5saW5lIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbjo6QXR0cmlidXRlQ2hhbmdl
SW52YWxpZGF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmV3VmFsdWUpCisgICAgOiBtX2lzRW5hYmxlZChlbGVtZW50Lm5lZWRzU3R5bGVJbnZhbGlk
YXRpb24oKSkKKyAgICAsIG1fZWxlbWVudChlbGVtZW50KQoreworICAgIGlmICghbV9pc0VuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbnZhbGlkYXRlU3R5bGUoYXR0cmlidXRlTmFtZSwg
b2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICBpbnZhbGlkYXRlRGVzY2VuZGFudHMoKTsKK30KKwor
aW5saW5lIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbjo6fkF0dHJpYnV0ZUNoYW5nZUludmFs
aWRhdGlvbigpCit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAg
IGludmFsaWRhdGVEZXNjZW5kYW50cygpOworfQorICAgIAorfQorfQorCisjZW5kaWYKKwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oCShy
ZXZpc2lvbiAxOTY1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdXNpbmcgQ2xhc3NDaGFuZ2VWZWN0b3IgPSBWZWN0b3I8QXRvbWljU3RyaW5nSW1w
bCosIDQ+OwogCi0gICAgc3RhdGljIGJvb2wgbmVlZHNJbnZhbGlkYXRpb24oY29uc3QgRWxlbWVu
dCYpOwogICAgIHZvaWQgY29tcHV0ZUNsYXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcm
IG9sZENsYXNzZXMsIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG5ld0NsYXNzZXMpOwogICAgIHZv
aWQgaW52YWxpZGF0ZVN0eWxlKGNvbnN0IENsYXNzQ2hhbmdlVmVjdG9yJik7CiAKQEAgLTU5LDE5
ICs1OCw4IEBAIHByaXZhdGU6CiAgICAgQ2xhc3NDaGFuZ2VWZWN0b3IgbV9yZW1vdmVkQ2xhc3Nl
czsKIH07CiAKLWlubGluZSBib29sIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpuZWVkc0ludmFs
aWRhdGlvbihjb25zdCBFbGVtZW50JiBlbGVtZW50KQotewotICAgIGlmICghZWxlbWVudC5pblJl
bmRlcmVkRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChlbGVtZW50
LnN0eWxlQ2hhbmdlVHlwZSgpID49IEZ1bGxTdHlsZUNoYW5nZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmICghZWxlbWVudC5kb2N1bWVudCgpLnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGlubGluZSBD
bGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3NlcywgY29uc3QgU3BhY2VT
cGxpdFN0cmluZyYgbmV3Q2xhc3NlcykKLSAgICA6IG1faXNFbmFibGVkKG5lZWRzSW52YWxpZGF0
aW9uKGVsZW1lbnQpKQorICAgIDogbV9pc0VuYWJsZWQoZWxlbWVudC5uZWVkc1N0eWxlSW52YWxp
ZGF0aW9uKCkpCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKIAogewpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTk2NTc1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTYtMDItMTUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIE9wdGltaXplIHN0eWxlIGludmFsaWRhdGlvbnMgZm9yIGF0dHJpYnV0ZSBz
ZWxlY3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NDI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFuZ2UtZGVzY2VuZGFu
dHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZS1pbnZhbGlk
YXRpb24tYXR0cmlidXRlLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sOiBBZGRlZC4KKwogMjAxNi0w
Mi0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRl
c3QgZm9yIGNsYXNzIGNoYW5nZSBzdHlsZSBpbnZhbGlkYXRpb24gb3B0aW1pemF0aW9uCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24tYXR0cmlidXRlLWNoYW5n
ZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFuZ2UtZGVzY2VuZGFudHMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52
YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQ5IEBACitUZXN0IHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUg
ZWxlbWVudCBzdWJ0cmVlIG1pbmltYWxseSBvbiBjbGFzcyBhdHRyaWJ1dGUgY2hhbmdlCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1
ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0
ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQor
UEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRy
dWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlz
IHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAn
bXlhdHRyJyB2YWx1ZSAnJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5
bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hh
bmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiSW5saW5l
U3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0Iiwg
Ik5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQor
U2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ2ZvbycKK1BBU1MgdGVzdFN0eWxlQ2hh
bmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgi
cm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNo
YW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVj
dGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ3ZhbHVl
MicKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUK
K1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIikg
aXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdl
IikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmli
dXRlICdteWF0dHInIHZhbHVlICdmb28nCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3Qi
LCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5l
U3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIs
ICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgi
aW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBp
cyB0cnVlCitSZW1vdmluZyBhdHRyaWJ1dGUgJ215YXR0cicKK1BBU1MgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9v
dCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlw
ZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVD
aGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBl
Y3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdteWF0dHInIHZhbHVlICd2YWx1
ZTMnCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8
IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVl
CitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIp
IGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5n
ZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJp
YnV0ZSAnbXlhdHRyJyB2YWx1ZSAnZHVtbXkgdmFsdWUzJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VU
eXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290
IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRT
dHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAndmFsdWU0LWZv
bycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUK
K1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIikg
aXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdl
IikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmli
dXRlICdteWF0dHInIHZhbHVlICd2YWx1ZTQtZm9vYmFyJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VU
eXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290
IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRT
dHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnZHVtbXkgdmFs
dWU0LWZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdl
IikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlz
IHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hh
bmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxl
Q2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcg
YXR0cmlidXRlICdteWF0dHInIHZhbHVlICd2YWx1ZTVmb28nCitQQVNTIHRlc3RTdHlsZUNoYW5n
ZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJv
b3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5
cGUoInRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxl
Q2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhw
ZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAndmFs
dWU1Zm9vYmFyJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFu
Z2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikg
aXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5n
ZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNo
YW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0
dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnZm9vdmFsdWU1JworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VU
eXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290
IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCJ0YXJnZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNo
YW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVj
dGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ2Zvb3Zh
bHVlNicKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikg
fHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRy
dWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdl
IikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hh
bmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0
cmlidXRlICdteUF0dHInIHZhbHVlICdmb29iYXJ2YWx1ZTYnCitQQVNTIHRlc3RTdHlsZUNoYW5n
ZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJv
b3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5
cGUoInRhcmdldCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFu
Z2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3Rl
ZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdNWUFUVFInIHZhbHVlICd2YWx1ZTZm
b28nCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8
IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVl
CitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIp
IGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5n
ZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJp
YnV0ZSAnbXlhdHRyJyB2YWx1ZSAndmFsdWU3JworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJy
b290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklu
bGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJn
ZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5
cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5
bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ3ZhbHVlN2ZvbycK
K1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BB
U1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVl
CitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0
cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215
QVRUUicgdmFsdWUgJ2Zvb3ZhbHVlN2ZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9v
dCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxp
bmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0
IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImlu
ZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMg
dHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ1ZBTFVFN2ZvbycKK1BBU1Mg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxl
Q2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQor
UEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1
ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdteWF0
dHInIHZhbHVlICdWYWx1ZTgnCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9T
dHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVD
aGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJbmxp
bmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQi
LCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVl
CitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAndmFsdWU4Zm9vJworUEFTUyB0ZXN0
U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFu
Z2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5
bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1Mg
aGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlBVFRSJyB2YWx1
ZSAnRk9PVkFMdWU4Zm9vJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5
bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hh
bmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHls
ZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9T
dHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0
aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnVkFMVUU4Zm9vJworUEFTUyB0ZXN0U3R5bGVD
aGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFu
Z2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxl
Q2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhw
ZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnVkFM
VUUgOGZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdl
IikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlz
IHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hh
bmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxl
Q2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcg
YXR0cmlidXRlICdteWF0dHIyJyB2YWx1ZSAnJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJy
b290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklu
bGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJn
ZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgi
aW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBp
cyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyMicgdmFsdWUgJ2ZvbycKK1BBU1MgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hh
bmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0
eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRl
c3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNT
IGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWlu
dmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFu
Z2UtZGVzY2VuZGFudHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L3N0eWxlLWludmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorKiB7CisgICAgY29sb3I6IGJsYWNrOworfQorW215YXR0cl0gdGFyZ2V0
IHsKKyAgICBjb2xvcjogcmdiKDEsIDAsIDApOworfQorCitbbXlhdHRyPXZhbHVlMl0gPiBpbmVy
dCB0YXJnZXQgeworICAgIGNvbG9yOiByZ2IoMiwgMCwgMCk7Cit9CisKK1tteWF0dHJ+PXZhbHVl
M10gaW5lcnQgKyB0YXJnZXQgeworICAgIGNvbG9yOiByZ2IoMywgMCwgMCk7Cit9CisKK1tNWUFU
VFJ8PXZhbHVlNF0gaW5lcnQgfiB0YXJnZXQgeworICAgIGNvbG9yOiByZ2IoNCwgMCwgMCk7Cit9
CisKK1tteUF0dHJePXZhbHVlNV0gdGFyZ2V0IHsKKyAgICBjb2xvcjogcmdiKDUsIDAsIDApOwor
fQorCitbbXlhdHRyJD12YWx1ZTZdIHRhcmdldCB7CisgICAgY29sb3I6IHJnYig2LCAwLCAwKTsK
K30KKworW215QVRUUio9dmFsdWU3XSB0YXJnZXQgeworICAgIGNvbG9yOiByZ2IoNywgMCwgMCk7
Cit9CisKK1tteWF0dHIqPXZhTFVFOCBpXSB0YXJnZXQgeworICAgIGNvbG9yOiByZ2IoOCwgMCwg
MCk7Cit9CisKK1tteWF0dHIyXSA+IHRhcmdldCB7CisgICAgY29sb3I6IHJnYig5LCAwLCAwKTsK
K30KKworPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxyb290PgorICAgICAgICA8IS0t
IFdpdGggcmVuZGVyZXIgLS0+CisgICAgICAgIDxpbmVydD4KKyAgICAgICAgICAgIDxpbmVydD4K
KyAgICAgICAgICAgICAgICA8aW5lcnQ+PC9pbmVydD4KKyAgICAgICAgICAgICAgICA8dGFyZ2V0
PgorICAgICAgICAgICAgICAgICAgICA8aW5lcnQ+PC9pbmVydD4KKyAgICAgICAgICAgICAgICAg
ICAgPHRhcmdldD48L3RhcmdldD4KKyAgICAgICAgICAgICAgICA8L3RhcmdldD4KKyAgICAgICAg
ICAgIDwvaW5lcnQ+CisgICAgICAgICAgICA8dGFyZ2V0PjwvdGFyZ2V0PgorICAgICAgICAgICAg
PGluZXJ0PjwvaW5lcnQ+CisgICAgICAgIDwvaW5lcnQ+CisgICAgPC9yb290PgorICAgIDxyb290
IHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KKyAgICAgICAgPCEtLSBXaXRob3V0IHJlbmRlcmVyIC0t
PgorICAgICAgICA8aW5lcnQ+CisgICAgICAgICAgICA8aW5lcnQ+CisgICAgICAgICAgICAgICAg
PGluZXJ0PjwvaW5lcnQ+CisgICAgICAgICAgICAgICAgPHRhcmdldD4KKyAgICAgICAgICAgICAg
ICAgICAgPGluZXJ0PjwvaW5lcnQ+CisgICAgICAgICAgICAgICAgICAgIDx0YXJnZXQ+PC90YXJn
ZXQ+CisgICAgICAgICAgICAgICAgPC90YXJnZXQ+CisgICAgICAgICAgICA8L2luZXJ0PgorICAg
ICAgICAgICAgPHRhcmdldD48L3RhcmdldD4KKyAgICAgICAgICAgIDxpbmVydD48L2luZXJ0Pgor
ICAgICAgICA8L2luZXJ0PgorICAgIDwvcm9vdD4KKzwvYm9keT4KKzxzY3JpcHQ+CisKK2Rlc2Ny
aXB0aW9uKCdUZXN0IHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgZWxlbWVudCBzdWJ0cmVlIG1pbmlt
YWxseSBvbiBjbGFzcyBhdHRyaWJ1dGUgY2hhbmdlJyk7CisKK2Z1bmN0aW9uIHRlc3RTdHlsZUNo
YW5nZVR5cGUodGFnLCB0eXBlKQoreworICAgIHZhciBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwodGFnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLnN0eWxlQ2hhbmdlVHlwZShl
bGVtZW50c1tpXSkgIT0gdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHlsZUludmFsaWRhdGlvbihleHBl
Y3RlZERlc2NlbmRhbnRTdHlsZUNoYW5nZSkgeworICAgIC8vIElkZWFsbHkgd2Ugd291bGQndCBp
bnZhbGlkYXRlIHRoZSByb290IGF0IGFsbC4KKyAgICBzaG91bGRCZVRydWUoJ3Rlc3RTdHlsZUNo
YW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUo
InJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKScpOworCisgICAgc2hvdWxkQmVUcnVlKCd0ZXN0
U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiJyArIGV4cGVjdGVkRGVzY2VuZGFudFN0eWxlQ2hh
bmdlICsnIiknKTsKKworICAgIHNob3VsZEJlVHJ1ZSgndGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5l
cnQiLCAiTm9TdHlsZUNoYW5nZSIpJyk7Cit9CisKK2Z1bmN0aW9uIHNldEF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSkgeworICAgIGRlYnVnKCJTZXR0aW5nIGF0dHJpYnV0ZSAnIiArIG5hbWUgKyAiJyB2
YWx1ZSAnIiArIHZhbHVlICsgIiciKTsKKyAgICB2YXIgYWxsUm9vdHMgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCJyb290Iik7CisgICAgYWxsUm9vdHNbMF0uc2V0QXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKKyAgICBhbGxSb290c1sxXS5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworfQor
CitmdW5jdGlvbiByZW1vdmVBdHRyaWJ1dGUobmFtZSkgeworICAgIGRlYnVnKCJSZW1vdmluZyBh
dHRyaWJ1dGUgJyIgKyBuYW1lICsgIiciKTsKKyAgICB2YXIgYWxsUm9vdHMgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCJyb290Iik7CisgICAgYWxsUm9vdHNbMF0ucmVtb3ZlQXR0cmlidXRl
KG5hbWUpOworICAgIGFsbFJvb3RzWzFdLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKK30KKworZnVu
Y3Rpb24gY2hlY2tTdHlsZShuKSB7CisgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgIGhhc0V4cGVjdGVkU3R5bGUgPSB0cnVlOworICAgIGV4cGVjdGVkQ29sb3Ig
PSAncmdiKCcrbisnLCAwLCAwKSc7CisgICAgdmFyIHRhcmdldHMgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCJ0YXJnZXQiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldHMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgaGFzRXhwZWN0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUo
dGFyZ2V0c1tpXSkuY29sb3IgPT0gZXhwZWN0ZWRDb2xvcjsKKyAgICAgICAgaWYgKCFoYXNFeHBl
Y3RlZFN0eWxlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHNob3VsZEJlVHJ1ZSgi
aGFzRXhwZWN0ZWRTdHlsZSIpOworfQorCitjaGVja1N0eWxlKDApOwordGVzdFN0eWxlSW52YWxp
ZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDApOworCitzZXRBdHRyaWJ1dGUo
J215YXR0cicsICcnKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2Ui
KTsKK2NoZWNrU3R5bGUoMSk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ2ZvbycpOwordGVz
dFN0eWxlSW52YWxpZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDEpOworCitz
ZXRBdHRyaWJ1dGUoJ215YXR0cicsICd2YWx1ZTInKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigi
SW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoMik7CisKK3NldEF0dHJpYnV0ZSgnbXlh
dHRyJywgJ2ZvbycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIp
OworY2hlY2tTdHlsZSgxKTsKKworcmVtb3ZlQXR0cmlidXRlKCdteWF0dHInKTsKK3Rlc3RTdHls
ZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoMCk7CisKK3Nl
dEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3ZhbHVlMycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJ
bmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSgzKTsKKworc2V0QXR0cmlidXRlKCdteWF0
dHInLCAnZHVtbXkgdmFsdWUzJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIk5vU3R5bGVDaGFu
Z2UiKTsKK2NoZWNrU3R5bGUoMyk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3ZhbHVlNC1m
b28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNr
U3R5bGUoNCk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3ZhbHVlNC1mb29iYXInKTsKK3Rl
c3RTdHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSg0KTsKKwor
c2V0QXR0cmlidXRlKCdteWF0dHInLCAnZHVtbXkgdmFsdWU0LWZvbycpOwordGVzdFN0eWxlSW52
YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSgxKTsKKworc2V0QXR0
cmlidXRlKCdteWF0dHInLCAndmFsdWU1Zm9vJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIklu
bGluZVN0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDUpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0
cicsICd2YWx1ZTVmb29iYXInKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5n
ZSIpOworY2hlY2tTdHlsZSg1KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAnZm9vdmFsdWU1
Jyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIklubGluZVN0eWxlQ2hhbmdlIik7CitjaGVja1N0
eWxlKDEpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0cicsICdmb292YWx1ZTYnKTsKK3Rlc3RTdHls
ZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoNik7CisKK3Nl
dEF0dHJpYnV0ZSgnbXlBdHRyJywgJ2Zvb2JhcnZhbHVlNicpOwordGVzdFN0eWxlSW52YWxpZGF0
aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDYpOworCitzZXRBdHRyaWJ1dGUoJ01Z
QVRUUicsICd2YWx1ZTZmb28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVD
aGFuZ2UiKTsKK2NoZWNrU3R5bGUoMSk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3ZhbHVl
NycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tT
dHlsZSg3KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAndmFsdWU3Zm9vJyk7Cit0ZXN0U3R5
bGVJbnZhbGlkYXRpb24oIk5vU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoNyk7CisKK3NldEF0
dHJpYnV0ZSgnbXlBVFRSJywgJ2Zvb3ZhbHVlN2ZvbycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9u
KCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDcpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0
cicsICdWQUxVRTdmb28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFu
Z2UiKTsKK2NoZWNrU3R5bGUoMSk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ1ZhbHVlOCcp
OwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tTdHls
ZSg4KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAndmFsdWU4Zm9vJyk7Cit0ZXN0U3R5bGVJ
bnZhbGlkYXRpb24oIk5vU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoOCk7CisKK3NldEF0dHJp
YnV0ZSgnbXlBVFRSJywgJ0ZPT1ZBTHVlOGZvbycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJO
b1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDgpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0cics
ICdWQUxVRThmb28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5nZSIpOwor
Y2hlY2tTdHlsZSg4KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAnVkFMVUUgOGZvbycpOwor
dGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSgx
KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHIyJywgJycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9u
KCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDEpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0
cjInLCAnZm9vJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIk5vU3R5bGVDaGFuZ2UiKTsKK2No
ZWNrU3R5bGUoMSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271345</attachid>
            <date>2016-02-15 09:25:35 -0800</date>
            <delta_ts>2016-02-15 12:47:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>attribute-invalidation-9.patch</filename>
            <type>text/plain</type>
            <size>52703</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjU3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDE2LTAyLTE1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBzdHlsZSBpbnZh
bGlkYXRpb25zIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgd2UgaW52YWxpZGF0ZSB0aGUgd2hv
bGUgZWxlbWVudCBzdWJ0cmVlIGlmIHRoZXJlIGFyZSBhbnkgYXR0cmlidXRlIHNlbGVjdG9ycyBm
b3IgdGhlIGNoYW5nZWQgYXR0cmlidXRlLgorICAgICAgICBUaGlzIGlzIHNsb3cgYXMgZ2VuZXJh
bGx5IGZldyBpZiBhbnkgZWxlbWVudHMgYXJlIHJlYWxseSBhZmZlY3RlZC4gVXNpbmcgYXR0cmli
dXRlIHNlbGVjdG9ycyBmb3IgZHluYW1pYyBzdHlsaW5nCisgICAgICAgIHNob3VsZCBiZSBwZXJm
b3JtYW50LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBvcHRpbWl6YXRpb24gc3Ry
YXRlZ3kgZm9yIGF0dHJpYnV0ZXMgc2ltaWxhciB0byB3aGF0IHdlIGFscmVhZHkgaGF2ZSBmb3Ig
Y2xhc3NlczoKKworICAgICAgICAtIENvbGxlY3QgYSBtYXAgb2YgYWxsIHJ1bGVzIHRoYXQgY29u
dGFpbnMgZGVzY2VuZGFudC1hZmZlY3RpbmcgYXR0cmlidXRlIHNlbGVjdG9ycyBmb3IgYSBnaXZl
biBhdHRyaWJ1dGUuCisgICAgICAgIC0gV2hlbiBhbiBhdHRyaWJ1dGUgdmFsdWUgY2hhbmdlcyBj
aGVjayBpZiB0aGVyZSBhcmUgYW55IHN1Y2ggcnVsZXMgZm9yIGl0CisgICAgICAgIC0gQ2hlY2sg
aWYgdGhlIHZhbHVlIGNoYW5nZSBhZmZlY3RzIHRoZSByZXN1bHRzIG9mIGFueSBvZiB0aGUgc2Vs
ZWN0b3JzCisgICAgICAgIC0gT25seSBpZiBpdCBkb2VzIGludmFsaWRhdGUgdGhlIGV4YWN0IGRl
c2NlbmRhbnQgZWxlbWVudHMgYWZmZWN0ZWQgYnkgdGhlIHJ1bGVzLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRlc2NlbmRhbnRz
Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFJ1bGVTZXRzOjphbmNlc3RvckNsYXNzUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRSdWxlU2V0czo6YW5jZXN0b3JBdHRyaWJ1dGVSdWxlc0ZvckhUTUwpOgorCisgICAgICAg
ICAgICBDcmVhdGUgb3B0aW1pemF0aW9uIFJ1bGVTZXRzIHdoZW4gbmVlZGVkLgorCisgICAgICAg
ICogY3NzL0RvY3VtZW50UnVsZVNldHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVs
ZVNldHM6OnVuY29tbW9uQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVs
ZVNldHM6OmZlYXR1cmVzKToKKyAgICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UnVsZUZlYXR1cmVTZXQ6OnJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJv
bVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VBdHRyaWJ1dGVTZWxlY3RvcktleSk6
CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKToKKwor
ICAgICAgICAgICAgQ29sbGVjdCBydWxlcyB3aXRoIGRlc2NlbmRhbnQgYWZmZWN0aW5nIGF0dHJp
YnV0ZSBzZWxlY3RvcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjphZGQp
OgorICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1cmVTZXQ6OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bGVGZWF0dXJlU2V0OjpzaHJpbmtUb0ZpdCk6CisgICAgICAgICogY3NzL1J1bGVG
ZWF0dXJlLmg6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphbnlBdHRyaWJ1dGVNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6YXR0cmlidXRlU2VsZWN0b3JNYXRjaGVzKToKKworICAgICAgICAgICAgRXhwb3Nl
IGZ1bmN0aW9uIGZvciBtYXRjaGluZyBzaW5nbGUgYXR0cmlidXRlIHNlbGVjdG9ycy4KKworICAg
ICAgICAoV2ViQ29yZTo6Y2FuTWF0Y2hIb3Zlck9yQWN0aXZlSW5RdWlya3NNb2RlKToKKyAgICAg
ICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXR0cjo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6
Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlSWRGb3JTdHlsZVJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRy
aWJ1dGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphZGRBdHRyaWJ1dGVJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2lsbE1vZGlmeUF0dHJpYnV0ZSk6CisKKyAgICAg
ICAgICAgIEFkZCBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gd2hlcmUgbmVlZGVkLgorCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpuZWVkc1N0eWxlSW52YWxpZGF0aW9uKToKKworICAg
ICAgICAgICAgTW92ZSB0byBFbGVtZW50IGZyb20gQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uCisK
KyAgICAgICAgKiBzdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246Omlu
dmFsaWRhdGVTdHlsZSk6CisKKyAgICAgICAgICAgIEludmFsaWRhdGUgbG9jYWwgc3R5bGUuCisg
ICAgICAgICAgICBDaGVjayBpZiB3ZSBuZWVkIHRvIGludmFsaWRhdGUgZGVzY2VuZGFudHMgYnkg
bG9va2luZyBpbnRvIGFuY2VzdG9yQXR0cmlidXRlUnVsZXMuCisKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVEZXNjZW5kYW50
cyk6CisKKyAgICAgICAgICAgIFVzZSBTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzIHRvIGludmFs
aWRhdGUgdGhlIHN1YnRyZWUgZm9yIHRoZSByZWxldmFudCBydWxlcy4KKworICAgICAgICAqIHN0
eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246Om5lZWRzSW52YWxpZGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246
OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjp+QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9u
KToKKworICAgICAgICAgICAgSWYgbmVlZGVkLCBpbnZhbGlkYXRlIGRlc2NlbmRhbnRzIGJlZm9y
ZSBhbmQgYWZ0ZXIgYXR0cmlidXRlIGNoYW5nZSB0byBjYXRjaCBydWxlcyB0aGF0IHN0YXJ0IGFu
ZCBzdG9wIGFwcGx5aW5nLgorCiAyMDE2LTAyLTE1ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHRoZSAhKEVOQUJMRShTVkdfRk9OVFMpIHx8IEVO
QUJMRShTVkdfT1RGX0NPTlZFUlRFUikpIGJ1aWxkIGFmdGVyIHIxOTYzMjIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTY1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjYyNCw2ICsyNjI0LDcgQEAgc2V0KFdlYkNvcmVf
U09VUkNFUwogICAgIHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKICAgICBzdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5jcHAKIAorICAgIHN0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRh
dGlvbi5jcHAKICAgICBzdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKICAgICBzdHls
ZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCiAgICAgc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCShyZXZpc2lvbiAxOTY1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTI1Myw2ICsxOTI1Myw3IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzdG9yYWdlXFN0b3JhZ2VFdmVudERpc3BhdGNoZXIu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3RvcmFnZVxTdG9yYWdlTWFwLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHN0b3JhZ2VcU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHN0eWxlXEF0dHJp
YnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxzdHlsZVxDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxzdHlsZVxJbmxpbmVUZXh0Qm94U3R5bGUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cc3R5bGVcUmVuZGVyVHJlZVBvc2l0aW9uLmNwcCIgLz4KQEAgLTIyODIx
LDYgKzIyODIyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHN0b3JhZ2VcU3RvcmFn
ZU1hcC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3RvcmFnZVxTdG9yYWdlTmFt
ZXNwYWNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxzdG9yYWdlXFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3R5bGVc
QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxzdHlsZVxDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cc3R5bGVcSW5saW5lVGV4dEJveFN0eWxlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxzdHlsZVxSZW5kZXJUcmVlUG9zaXRpb24uaCIgLz4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE5NjU2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjYyMyw2ICs2NjIzLDggQEAKIAkJRTRBMDA3ODUx
QjgyMEVEMzAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBE
YXRhVVJMRGVjb2Rlci5jcHAgKi87IH07CiAJCUU0QTgxNEQ0MUM2REVDNDAwMEJGODVBQyAvKiBD
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTRBODE0RDMxQzZERUM0MDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uLmggKi87IH07CiAJCUU0QTgxNEQ2MUM2REVFOEQwMEJGODVBQyAvKiBDbGFzc0No
YW5nZUludmFsaWRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEE4MTRENTFDNkRFRThEMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwICovOyB9OworCQlFNEE4MTREODFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRl
Q2hhbmdlSW52YWxpZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0QTgxNEQ3MUM3MEUxMDUwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJ
bnZhbGlkYXRpb24uY3BwICovOyB9OworCQlFNEE4MTREQTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0
cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hh
bmdlSW52YWxpZGF0aW9uLmggKi87IH07CiAJCUU0QUU3QzE2MTdEMUJCOTUwMDA5RkIzMSAvKiBF
bGVtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0QUU3QzE1MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEFFN0MxQTE3
RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUU3QzE5MTdEMjMyMzUwMDA5RkIz
MSAvKiBFbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0
QmV6aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NEFGQ0ZBNDBEQUYyOUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oICovOyB9OwpAQCAtMTQ2MTMs
NiArMTQ2MTUsOCBAQAogCQlFNEEwMDc4NDFCODIwRUQzMDAyQzVBNkUgLyogRGF0YVVSTERlY29k
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YVVSTERlY29k
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEE4MTREMzFDNkRFQzQwMDBC
Rjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTRBODE0RDUxQzZERUU4RDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzQ2hh
bmdlSW52YWxpZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBODE0
RDcxQzcwRTEwNTAwQkY4NUFDIC8qIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE4MTREOTFDNzBFMTBE
MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNEFFN0MxNTE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVu
dEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRJdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEFFN0MxOTE3RDIzMjM1MDAw
OUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pdEJlemllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjMzOTAsNiArMjMzOTQsOCBAQAogCQlFNDc2M0Q0QTE3QjI3MDQ5
MDBEMzUyMDYgLyogc3R5bGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCUU0QTgxNEQ3MUM3MEUxMDUwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwICovLAorCQkJCUU0QTgxNEQ5MUM3MEUxMEQwMEJGODVBQyAvKiBBdHRyaWJ1
dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNEE4MTRENTFDNkRFRThEMDBCRjg1QUMg
LyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovLAogCQkJCUU0QTgxNEQzMUM2REVDNDAw
MEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICovLAogCQkJCTFDMDEwNkZFMTky
NTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwICovLApAQCAtMjU4NjAsNiAr
MjU4NjYsNyBAQAogCQkJCTMxMzEzRjY2MTQ0M0IzNUYwMDZFMkE5MCAvKiBGaWx0ZXJFZmZlY3RS
ZW5kZXJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNkUxNDk5NzkwRDAwQ0REM0E0IC8q
IEZpbHRlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNzAxNDk5NzkwRDAw
Q0REM0E0IC8qIEZpbHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0QTgxNERB
MUM3MEUxMEQwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTM3MkMwMEQ5MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVM
YXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBG
bG9hdENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzAzODIsNiArMzAzODksNyBAQAog
CQkJCUI1OURENkFBMTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJENEU5MTYxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpT
Q3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzYzODBD
RTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlFNEE4MTREODFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OURENjlFMTE5MDJBNDIwMDdFOTY4NCAvKiBKU1NR
TFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEMjMxNkUwQ0Qy
NjlFNzAwQzFGMTk0IC8qIEpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjU5REQ2QTIxMTkwMkE1MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0RvY3Vt
ZW50UnVsZVNldHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVu
dFJ1bGVTZXRzLmNwcAkocmV2aXNpb24gMTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0Rv
Y3VtZW50UnVsZVNldHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNCArMTI2LDE4IEBAIFJ1
bGVTZXQqIERvY3VtZW50UnVsZVNldHM6OmFuY2VzdG9yQ2xhc3MKICAgICByZXR1cm4gYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAorY29uc3QgRG9jdW1lbnRSdWxlU2V0czo6
QXR0cmlidXRlUnVsZXMqIERvY3VtZW50UnVsZVNldHM6OmFuY2VzdG9yQXR0cmlidXRlUnVsZXNG
b3JIVE1MKEF0b21pY1N0cmluZ0ltcGwqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Cit7CisgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2FuY2VzdG9yQXR0cmlidXRlUnVsZVNldEZvckhUTUwuYWRkKGF0dHJp
YnV0ZU5hbWUsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAg
ICAgICBpZiAoYXV0byogcnVsZXMgPSBtX2ZlYXR1cmVzLmFuY2VzdG9yQXR0cmlidXRlUnVsZXNG
b3JIVE1MLmdldChhdHRyaWJ1dGVOYW1lKSkgeworICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0cmlidXRlUnVsZXM+KCk7CisgICAgICAg
ICAgICBmb3IgKGF1dG8qIHNlbGVjdG9yIDogcnVsZXMtPnNlbGVjdG9ycy52YWx1ZXMoKSkKKyAg
ICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5hdHRyaWJ1dGVTZWxlY3Rv
cnMuYXBwZW5kKHNlbGVjdG9yKTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUtPnJ1bGVTZXQgPSBtYWtlUnVsZVNldChydWxlcy0+ZmVhdHVyZXMpOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRS
dWxlU2V0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVT
ZXRzLmgJKHJldmlzaW9uIDE5NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1
bGVTZXRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEyIEBAIHB1YmxpYzoKICAgICBS
dWxlU2V0KiB1bmNvbW1vbkF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5jb21tb25BdHRy
aWJ1dGVSdWxlU2V0LmdldCgpOyB9CiAgICAgUnVsZVNldCogYW5jZXN0b3JDbGFzc1J1bGVzKEF0
b21pY1N0cmluZ0ltcGwqIGNsYXNzTmFtZSkgY29uc3Q7CiAKKyAgICBzdHJ1Y3QgQXR0cmlidXRl
UnVsZXMgeworICAgICAgICBWZWN0b3I8Y29uc3QgQ1NTU2VsZWN0b3IqPiBhdHRyaWJ1dGVTZWxl
Y3RvcnM7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBydWxlU2V0OworICAgIH07
CisgICAgY29uc3QgQXR0cmlidXRlUnVsZXMqIGFuY2VzdG9yQXR0cmlidXRlUnVsZXNGb3JIVE1M
KEF0b21pY1N0cmluZ0ltcGwqKSBjb25zdDsKKwogICAgIHZvaWQgaW5pdFVzZXJTdHlsZShFeHRl
bnNpb25TdHlsZVNoZWV0cyYsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBTdHlsZVJlc29s
dmVyJik7CiAgICAgdm9pZCByZXNldEF1dGhvclN0eWxlKCk7CiAgICAgdm9pZCBhcHBlbmRBdXRo
b3JTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYsIE1lZGlh
UXVlcnlFdmFsdWF0b3IqLCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiwgU3R5bGVSZXNvbHZlciop
OwpAQCAtNjgsNiArNzQsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRy
PFJ1bGVTZXQ+IG1fc2libGluZ1J1bGVTZXQ7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8
UnVsZVNldD4gbV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQ7CiAgICAgbXV0YWJsZSBIYXNoTWFw
PEF0b21pY1N0cmluZ0ltcGwqLCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4+IG1fYW5jZXN0b3JD
bGFzc1J1bGVTZXQ7CisgICAgbXV0YWJsZSBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBzdGQ6
OnVuaXF1ZV9wdHI8QXR0cmlidXRlUnVsZXM+PiBtX2FuY2VzdG9yQXR0cmlidXRlUnVsZVNldEZv
ckhUTUw7CiB9OwogCiBpbmxpbmUgY29uc3QgUnVsZUZlYXR1cmVTZXQmIERvY3VtZW50UnVsZVNl
dHM6OmZlYXR1cmVzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVy
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAko
cmV2aXNpb24gMTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsMTIgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6cmVj
dXJzaXZlbHlDb2xsZWN0RgogICAgICAgICAgICAgaWYgKG1hdGNoZXNBbmNlc3RvcikKICAgICAg
ICAgICAgICAgICBzZWxlY3RvckZlYXR1cmVzLmNsYXNzZXNNYXRjaGluZ0FuY2VzdG9ycy5hcHBl
bmQoc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rv
ci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKSB7Ci0gICAgICAgICAgICBhdHRyaWJ1dGVDYW5vbmlj
YWxMb2NhbE5hbWVzSW5SdWxlcy5hZGQoc2VsZWN0b3ItPmF0dHJpYnV0ZUNhbm9uaWNhbExvY2Fs
TmFtZSgpLmltcGwoKSk7Ci0gICAgICAgICAgICBhdHRyaWJ1dGVMb2NhbE5hbWVzSW5SdWxlcy5h
ZGQoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgICAg
ICBhdXRvKiBjYW5vbmljYWxMb2NhbE5hbWUgPSBzZWxlY3Rvci0+YXR0cmlidXRlQ2Fub25pY2Fs
TG9jYWxOYW1lKCkuaW1wbCgpOworICAgICAgICAgICAgYXV0byogbG9jYWxOYW1lID0gc2VsZWN0
b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmltcGwoKTsKKyAgICAgICAgICAgIGF0dHJpYnV0
ZUNhbm9uaWNhbExvY2FsTmFtZXNJblJ1bGVzLmFkZChjYW5vbmljYWxMb2NhbE5hbWUpOworICAg
ICAgICAgICAgYXR0cmlidXRlTG9jYWxOYW1lc0luUnVsZXMuYWRkKGxvY2FsTmFtZSk7CisgICAg
ICAgICAgICBpZiAobWF0Y2hlc0FuY2VzdG9yKQorICAgICAgICAgICAgICAgIHNlbGVjdG9yRmVh
dHVyZXMuYXR0cmlidXRlU2VsZWN0b3JzTWF0Y2hpbmdBbmNlc3RvcnMuYXBwZW5kKHNlbGVjdG9y
KTsKICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvRWxlbWVudCkgewogICAgICAgICAgICAgc3dpdGNoIChzZWxlY3Rvci0+cHNldWRvRWxl
bWVudFR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVu
dEZpcnN0TGluZToKQEAgLTc4LDYgKzgyLDEzIEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OnJlY3Vy
c2l2ZWx5Q29sbGVjdEYKICAgICB9IHdoaWxlIChzZWxlY3Rvcik7CiB9CiAKK3N0YXRpYyBzdGQ6
OnBhaXI8QXRvbWljU3RyaW5nSW1wbCosIHVuc2lnbmVkPiBtYWtlQXR0cmlidXRlU2VsZWN0b3JL
ZXkoY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yKQoreworICAgIGJvb2wgY2FzZUluc2Vuc2l0
aXZlID0gc2VsZWN0b3IuYXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2FzZUluc2Vuc2l0aXZlKCk7
CisgICAgdW5zaWduZWQgbWF0Y2hBbmRDYXNlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNlbGVj
dG9yLm1hdGNoKCkpIDw8IDEgfCBjYXNlSW5zZW5zaXRpdmU7CisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHNlbGVjdG9yLmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpLmltcGwoKSwgbWF0
Y2hBbmRDYXNlKTsKK30KKwogdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNv
bnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKIHsKICAgICBTZWxlY3RvckZlYXR1cmVzIHNlbGVjdG9y
RmVhdHVyZXM7CkBAIC05Miw2ICsxMDMsMTYgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVj
dEZlYXR1cmVzKGNvbgogICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKFJ1bGVGZWF0dXJlKHJ1bGVEYXRhLnJ1bGUoKSwgcnVs
ZURhdGEuc2VsZWN0b3JJbmRleCgpLCBydWxlRGF0YS5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2lu
KCkpKTsKICAgICB9CisgICAgZm9yIChhdXRvKiBzZWxlY3RvciA6IHNlbGVjdG9yRmVhdHVyZXMu
YXR0cmlidXRlU2VsZWN0b3JzTWF0Y2hpbmdBbmNlc3RvcnMpIHsKKyAgICAgICAgLy8gSGFzaGlu
ZyBieSBhdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUgbWFrZXMgdGhpcyBIVE1MIHNwZWNpZmlj
LgorICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IGFuY2VzdG9yQXR0cmlidXRlUnVsZXNGb3JIVE1M
LmFkZChzZWxlY3Rvci0+YXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lKCkuaW1wbCgpLCBudWxs
cHRyKTsKKyAgICAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0cmlidXRlUnVsZXM+
KCk7CisgICAgICAgIGF1dG8mIHJ1bGVzID0gKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgICAgIHJ1bGVzLmZlYXR1cmVzLmFwcGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCks
IHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgoKSwgcnVsZURhdGEuaGFzRG9jdW1lbnRTZWN1cml0eU9y
aWdpbigpKSk7CisgICAgICAgIC8vIERlZHVwbGljYXRlIHNlbGVjdG9ycy4KKyAgICAgICAgcnVs
ZXMuc2VsZWN0b3JzLmFkZChtYWtlQXR0cmlidXRlU2VsZWN0b3JLZXkoKnNlbGVjdG9yKSwgc2Vs
ZWN0b3IpOworICAgIH0KIH0KIAogdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVG
ZWF0dXJlU2V0JiBvdGhlcikKQEAgLTEwOSw2ICsxMzAsMTUgQEAgdm9pZCBSdWxlRmVhdHVyZVNl
dDo6YWRkKGNvbnN0IFJ1bGVGZWF0dQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLT5hcHBlbmRWZWN0b3IoKmtleVZhbHVlUGFpci52YWx1ZSk7CiAg
ICAgfQorICAgIGZvciAoYXV0byYga2V5VmFsdWVQYWlyIDogb3RoZXIuYW5jZXN0b3JBdHRyaWJ1
dGVSdWxlc0ZvckhUTUwpIHsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBhbmNlc3RvckF0dHJp
YnV0ZVJ1bGVzRm9ySFRNTC5hZGQoa2V5VmFsdWVQYWlyLmtleSwgbnVsbHB0cik7CisgICAgICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEF0dHJpYnV0ZVJ1bGVzPigpOworICAgICAgICBh
dXRvJiBydWxlcyA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBydWxlcy5m
ZWF0dXJlcy5hcHBlbmRWZWN0b3Ioa2V5VmFsdWVQYWlyLnZhbHVlLT5mZWF0dXJlcyk7CisgICAg
ICAgIGZvciAoYXV0byYgc2VsZWN0b3JQYWlyIDoga2V5VmFsdWVQYWlyLnZhbHVlLT5zZWxlY3Rv
cnMpCisgICAgICAgICAgICBydWxlcy5zZWxlY3RvcnMuYWRkKHNlbGVjdG9yUGFpci5rZXksIHNl
bGVjdG9yUGFpci52YWx1ZSk7CisgICAgfQogICAgIHVzZXNGaXJzdExpbmVSdWxlcyA9IHVzZXNG
aXJzdExpbmVSdWxlcyB8fCBvdGhlci51c2VzRmlyc3RMaW5lUnVsZXM7CiAgICAgdXNlc0ZpcnN0
TGV0dGVyUnVsZXMgPSB1c2VzRmlyc3RMZXR0ZXJSdWxlcyB8fCBvdGhlci51c2VzRmlyc3RMZXR0
ZXJSdWxlczsKIH0KQEAgLTEyMiw2ICsxNTIsNyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjpjbGVh
cigpCiAgICAgc2libGluZ1J1bGVzLmNsZWFyKCk7CiAgICAgdW5jb21tb25BdHRyaWJ1dGVSdWxl
cy5jbGVhcigpOwogICAgIGFuY2VzdG9yQ2xhc3NSdWxlcy5jbGVhcigpOworICAgIGFuY2VzdG9y
QXR0cmlidXRlUnVsZXNGb3JIVE1MLmNsZWFyKCk7CiAgICAgdXNlc0ZpcnN0TGluZVJ1bGVzID0g
ZmFsc2U7CiAgICAgdXNlc0ZpcnN0TGV0dGVyUnVsZXMgPSBmYWxzZTsKIH0KQEAgLTEzMiw2ICsx
NjMsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjpzaHJpbmtUb0ZpdCgpCiAgICAgdW5jb21tb25B
dHRyaWJ1dGVSdWxlcy5zaHJpbmtUb0ZpdCgpOwogICAgIGZvciAoYXV0byYgcnVsZXMgOiBhbmNl
c3RvckNsYXNzUnVsZXMudmFsdWVzKCkpCiAgICAgICAgIHJ1bGVzLT5zaHJpbmtUb0ZpdCgpOwor
ICAgIGZvciAoYXV0byYgcnVsZXMgOiBhbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRNTC52YWx1
ZXMoKSkKKyAgICAgICAgcnVsZXMtPmZlYXR1cmVzLnNocmlua1RvRml0KCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5oCShyZXZpc2lv
biAxOTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmbmRlZiBSdWxlRmVhdHVyZV9oCiAjZGVmaW5lIFJ1
bGVGZWF0dXJlX2gKIAorI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CkBAIC0yOSw3ICszMCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ1NT
U2VsZWN0b3I7CiBjbGFzcyBSdWxlRGF0YTsKIGNsYXNzIFN0eWxlUnVsZTsKIApAQCAtNTgsNiAr
NTgsMTIgQEAgc3RydWN0IFJ1bGVGZWF0dXJlU2V0IHsKICAgICBWZWN0b3I8UnVsZUZlYXR1cmU+
IHNpYmxpbmdSdWxlczsKICAgICBWZWN0b3I8UnVsZUZlYXR1cmU+IHVuY29tbW9uQXR0cmlidXRl
UnVsZXM7CiAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxSdWxlRmVhdHVyZT4+PiBhbmNlc3RvckNsYXNzUnVsZXM7CisKKyAgICBzdHJ1Y3QgQXR0
cmlidXRlUnVsZXMgeworICAgICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxBdG9taWNTdHJpbmdJbXBs
KiwgdW5zaWduZWQ+LCBjb25zdCBDU1NTZWxlY3Rvcio+IHNlbGVjdG9yczsKKyAgICAgICAgVmVj
dG9yPFJ1bGVGZWF0dXJlPiBmZWF0dXJlczsKKyAgICB9OworICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nSW1wbCosIHN0ZDo6dW5pcXVlX3B0cjxBdHRyaWJ1dGVSdWxlcz4+IGFuY2VzdG9yQXR0cmli
dXRlUnVsZXNGb3JIVE1MOwogICAgIGJvb2wgdXNlc0ZpcnN0TGluZVJ1bGVzIHsgZmFsc2UgfTsK
ICAgICBib29sIHVzZXNGaXJzdExldHRlclJ1bGVzIHsgZmFsc2UgfTsKIApAQCAtNjUsNiArNzEs
NyBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBTZWxlY3RvckZlYXR1cmVzIHsKICAgICAgICAgYm9v
bCBoYXNTaWJsaW5nU2VsZWN0b3IgeyBmYWxzZSB9OwogICAgICAgICBWZWN0b3I8QXRvbWljU3Ry
aW5nSW1wbCo+IGNsYXNzZXNNYXRjaGluZ0FuY2VzdG9yczsKKyAgICAgICAgVmVjdG9yPGNvbnN0
IENTU1NlbGVjdG9yKj4gYXR0cmlidXRlU2VsZWN0b3JzTWF0Y2hpbmdBbmNlc3RvcnM7CiAgICAg
fTsKICAgICB2b2lkIHJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKFNlbGVj
dG9yRmVhdHVyZXMmLCBjb25zdCBDU1NTZWxlY3RvciYsIGJvb2wgbWF0Y2hlc0FuY2VzdG9yID0g
ZmFsc2UpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCShy
ZXZpc2lvbiAxOTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTE4LDYgKzUxOCwyMSBAQCBzdGF0aWMgYm9vbCBhbnlBdHRy
aWJ1dGVNYXRjaGVzKGNvbnN0IEVsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFNlbGVj
dG9yQ2hlY2tlcjo6YXR0cmlidXRlU2VsZWN0b3JNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVmFsdWUsIGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikKK3sKKyAgICBB
U1NFUlQoc2VsZWN0b3IuaXNBdHRyaWJ1dGVTZWxlY3RvcigpKTsKKyAgICBhdXRvJiBzZWxlY3Rv
ckF0dHJpYnV0ZSA9IHNlbGVjdG9yLmF0dHJpYnV0ZSgpOworICAgIGF1dG8mIHNlbGVjdG9yTmFt
ZSA9IGVsZW1lbnQuaXNIVE1MRWxlbWVudCgpID8gc2VsZWN0b3IuYXR0cmlidXRlQ2Fub25pY2Fs
TG9jYWxOYW1lKCkgOiBzZWxlY3RvckF0dHJpYnV0ZS5sb2NhbE5hbWUoKTsKKyAgICBpZiAoIUF0
dHJpYnV0ZTo6bmFtZU1hdGNoZXNGaWx0ZXIoYXR0cmlidXRlTmFtZSwgc2VsZWN0b3JBdHRyaWJ1
dGUucHJlZml4KCksIHNlbGVjdG9yTmFtZSwgc2VsZWN0b3JBdHRyaWJ1dGUubmFtZXNwYWNlVVJJ
KCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1
ZTsKKyAgICBpZiAoc2VsZWN0b3IuYXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2FzZUluc2Vuc2l0
aXZlKCkpCisgICAgICAgIGNhc2VTZW5zaXRpdmUgPSBmYWxzZTsKKyAgICBlbHNlIGlmIChlbGVt
ZW50LmRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKSAmJiBlbGVtZW50LmlzSFRNTEVsZW1lbnQo
KSAmJiAhSFRNTERvY3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoc2VsZWN0b3IuYXR0
cmlidXRlKCkpKQorICAgICAgICBjYXNlU2Vuc2l0aXZlID0gZmFsc2U7CisgICAgcmV0dXJuIGF0
dHJpYnV0ZVZhbHVlTWF0Y2hlcyhBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFs
dWUpLCBzZWxlY3Rvci5tYXRjaCgpLCBzZWxlY3Rvci52YWx1ZSgpLCBjYXNlU2Vuc2l0aXZlKTsK
K30KKwogc3RhdGljIGJvb2wgY2FuTWF0Y2hIb3Zlck9yQWN0aXZlSW5RdWlya3NNb2RlKGNvbnN0
IFNlbGVjdG9yQ2hlY2tlcjo6TG9jYWxDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEZvciBx
dWlya3MgbW9kZSwgZm9sbG93IHRoaXM6IGh0dHA6Ly9xdWlya3Muc3BlYy53aGF0d2cub3JnLyN0
aGUtOmFjdGl2ZS1hbmQtOmhvdmVyLXF1aXJrCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5oCShyZXZpc2lvbiAxOTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgYm9vbCBpc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqKTsKICAgICBzdGF0aWMgYm9vbCBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBF
bGVtZW50Jik7CisgICAgc3RhdGljIGJvb2wgYXR0cmlidXRlU2VsZWN0b3JNYXRjaGVzKGNvbnN0
IEVsZW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRy
aWJ1dGVWYWx1ZSwgY29uc3QgQ1NTU2VsZWN0b3ImKTsKIAogICAgIGVudW0gTGlua01hdGNoTWFz
ayB7IE1hdGNoRGVmYXVsdCA9IDAsIE1hdGNoTGluayA9IDEsIE1hdGNoVmlzaXRlZCA9IDIsIE1h
dGNoQWxsID0gTWF0Y2hMaW5rIHwgTWF0Y2hWaXNpdGVkIH07CiAgICAgc3RhdGljIHVuc2lnbmVk
IGRldGVybWluZUxpbmtNYXRjaFR5cGUoY29uc3QgQ1NTU2VsZWN0b3IqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
QXR0ci5jcHAJKHJldmlzaW9uIDE5NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkF0dHIuaCIKIAorI2luY2x1ZGUgIkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlv
bi5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKQEAgLTEwOCw5ICsxMDksMTAgQEAgdm9pZCBBdHRy
OjpzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIAogICAgIEV2ZW50UXVldWVTY29wZSBzY29w
ZTsKICAgICBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZCsrOwogICAgIHJlbW92ZUNoaWxkcmVuKCk7
Ci0gICAgaWYgKG1fZWxlbWVudCkKKyAgICBpZiAobV9lbGVtZW50KSB7CisgICAgICAgIFN0eWxl
OjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKm1fZWxlbWVu
dCwgcXVhbGlmaWVkTmFtZSgpLCBlbGVtZW50QXR0cmlidXRlKCkudmFsdWUoKSwgdmFsdWUpOwog
ICAgICAgICBlbGVtZW50QXR0cmlidXRlKCkuc2V0VmFsdWUodmFsdWUpOwotICAgIGVsc2UKKyAg
ICB9IGVsc2UKICAgICAgICAgbV9zdGFuZGFsb25lVmFsdWUgPSB2YWx1ZTsKICAgICBjcmVhdGVU
ZXh0Q2hpbGQoKTsKICAgICBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZC0tOwpAQCAtMTYzLDkgKzE2
NSwxMCBAQCB2b2lkIEF0dHI6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoCiAgICAgaWYg
KG1fZWxlbWVudCkKICAgICAgICAgbV9lbGVtZW50LT53aWxsTW9kaWZ5QXR0cmlidXRlKHF1YWxp
ZmllZE5hbWUoKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKIAotICAgIGlmIChtX2VsZW1lbnQpCisg
ICAgaWYgKG1fZWxlbWVudCkgeworICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCptX2VsZW1lbnQsIHF1YWxpZmllZE5hbWUoKSwgb2xk
VmFsdWUsIG5ld1ZhbHVlKTsKICAgICAgICAgZWxlbWVudEF0dHJpYnV0ZSgpLnNldFZhbHVlKG5l
d1ZhbHVlKTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIG1fc3RhbmRhbG9uZVZhbHVl
ID0gbmV3VmFsdWU7CiAKICAgICBpZiAobV9lbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAkocmV2aXNpb24gMTk2NTYwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENh
Y2hlLmgiCiAjaW5jbHVkZSAiQXR0ci5oIgorI2luY2x1ZGUgIkF0dHJpYnV0ZUNoYW5nZUludmFs
aWRhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgog
I2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgpAQCAtMTE3NiwyNiArMTE3NywzMCBAQCBpbmxpbmUg
dm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyAgICBpZiAoaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpIHsKKyAgICAgICAg
ZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5hdHRyaWJ1dGVBdChpbmRleCkuc2V0VmFsdWUobmV3
VmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY29uc3QgQXR0cmlidXRlJiBh
dHRyaWJ1dGUgPSBhdHRyaWJ1dGVBdChpbmRleCk7CisgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1
dGVOYW1lID0gYXR0cmlidXRlLm5hbWUoKTsKICAgICBBdG9taWNTdHJpbmcgb2xkVmFsdWUgPSBh
dHRyaWJ1dGUudmFsdWUoKTsKLSAgICBib29sIHZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlICE9IG9s
ZFZhbHVlOwotICAgIFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZSA9ICghaW5TeW5jaHJvbml6
YXRpb25PZkxhenlBdHRyaWJ1dGUgfHwgdmFsdWVDaGFuZ2VkKSA/IGF0dHJpYnV0ZS5uYW1lKCkg
OiBuYW1lOwogCi0gICAgaWYgKCFpblN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSkKLSAg
ICAgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOworICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgb2xkVmFsdWUsIG5l
d1ZhbHVlKTsKIAotICAgIGlmICh2YWx1ZUNoYW5nZWQpIHsKKyAgICBpZiAobmV3VmFsdWUgIT0g
b2xkVmFsdWUpIHsKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYW4gQXR0ciBub2RlIGhvb2tlZCB0
byB0aGlzIGF0dHJpYnV0ZSwgdGhlIEF0dHI6OnNldFZhbHVlKCkgY2FsbCBiZWxvdwogICAgICAg
ICAvLyB3aWxsIHdyaXRlIGludG8gdGhlIEVsZW1lbnREYXRhLgogICAgICAgICAvLyBGSVhNRTog
UmVmYWN0b3IgdGhpcyBzbyBpdCBtYWtlcyBzb21lIHNlbnNlLgotICAgICAgICBpZiAoUmVmUHRy
PEF0dHI+IGF0dHJOb2RlID0gaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUgPyBudWxs
cHRyIDogYXR0cklmRXhpc3RzKGF0dHJpYnV0ZU5hbWUpKQorICAgICAgICBpZiAoUmVmUHRyPEF0
dHI+IGF0dHJOb2RlID0gYXR0cklmRXhpc3RzKGF0dHJpYnV0ZU5hbWUpKQogICAgICAgICAgICAg
YXR0ck5vZGUtPnNldFZhbHVlKG5ld1ZhbHVlKTsKLSAgICAgICAgZWxzZQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIFN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJ
bnZhbGlkYXRpb24oKnRoaXMsIG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAgICAgICAgICAg
ICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLmF0dHJpYnV0ZUF0KGluZGV4KS5zZXRWYWx1ZShu
ZXdWYWx1ZSk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWluU3luY2hyb25pemF0aW9u
T2ZMYXp5QXR0cmlidXRlKQotICAgICAgICBkaWRNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICBkaWRNb2RpZnlBdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKIH0KIAogc3RhdGljIGlubGluZSBBdG9taWNTdHJp
bmcgbWFrZUlkRm9yU3R5bGVSZXNvbHV0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIGJv
b2wgaW5RdWlya3NNb2RlKQpAQCAtMTI2Miw5ICsxMjY3LDYgQEAgdm9pZCBFbGVtZW50OjphdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YQogCiAgICAgaW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29sbGVj
dGlvbkNhY2hlc0luQW5jZXN0b3JzKCZuYW1lLCB0aGlzKTsKIAotICAgIC8vIElmIHRoZXJlIGlz
IGN1cnJlbnRseSBubyBTdHlsZVJlc29sdmVyLCB3ZSBjYW4ndCBiZSBzdXJlIHRoYXQgdGhpcyBh
dHRyaWJ1dGUgY2hhbmdlIHdvbid0IGFmZmVjdCBzdHlsZS4KLSAgICBzaG91bGRJbnZhbGlkYXRl
U3R5bGUgfD0gIXN0eWxlUmVzb2x2ZXI7Ci0KICAgICBpZiAoc2hvdWxkSW52YWxpZGF0ZVN0eWxl
KQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKQEAgLTIwNDQsMjcgKzIwNDYsMzgg
QEAgdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVJbnRlcm5hbCh1bgogICAgIFF1YWxpZmll
ZE5hbWUgbmFtZSA9IGVsZW1lbnREYXRhLmF0dHJpYnV0ZUF0KGluZGV4KS5uYW1lKCk7CiAgICAg
QXRvbWljU3RyaW5nIHZhbHVlQmVpbmdSZW1vdmVkID0gZWxlbWVudERhdGEuYXR0cmlidXRlQXQo
aW5kZXgpLnZhbHVlKCk7CiAKLSAgICBpZiAoIWluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmli
dXRlKSB7Ci0gICAgICAgIGlmICghdmFsdWVCZWluZ1JlbW92ZWQuaXNOdWxsKCkpCi0gICAgICAg
ICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKG5hbWUsIHZhbHVlQmVpbmdSZW1vdmVkLCBudWxsQXRv
bSk7Ci0gICAgfQotCiAgICAgaWYgKFJlZlB0cjxBdHRyPiBhdHRyTm9kZSA9IGF0dHJJZkV4aXN0
cyhuYW1lKSkKICAgICAgICAgZGV0YWNoQXR0ck5vZGVGcm9tRWxlbWVudFdpdGhWYWx1ZShhdHRy
Tm9kZS5nZXQoKSwgZWxlbWVudERhdGEuYXR0cmlidXRlQXQoaW5kZXgpLnZhbHVlKCkpOwogCi0g
ICAgZWxlbWVudERhdGEucmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKKyAgICBpZiAoaW5TeW5jaHJv
bml6YXRpb25PZkxhenlBdHRyaWJ1dGUpIHsKKyAgICAgICAgZWxlbWVudERhdGEucmVtb3ZlQXR0
cmlidXRlKGluZGV4KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWVC
ZWluZ1JlbW92ZWQuaXNOdWxsKCkpCisgICAgICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUobmFtZSwg
dmFsdWVCZWluZ1JlbW92ZWQsIG51bGxBdG9tKTsKIAotICAgIGlmICghaW5TeW5jaHJvbml6YXRp
b25PZkxhenlBdHRyaWJ1dGUpCi0gICAgICAgIGRpZFJlbW92ZUF0dHJpYnV0ZShuYW1lLCB2YWx1
ZUJlaW5nUmVtb3ZlZCk7CisgICAgeworICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52
YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBuYW1lLCB2YWx1ZUJlaW5nUmVtb3Zl
ZCwgbnVsbEF0b20pOworICAgICAgICBlbGVtZW50RGF0YS5yZW1vdmVBdHRyaWJ1dGUoaW5kZXgp
OworICAgIH0KKworICAgIGRpZFJlbW92ZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZUJlaW5nUmVtb3Zl
ZCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6YWRkQXR0cmlidXRlSW50ZXJuYWwoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgU3luY2hyb25pemF0aW9u
T2ZMYXp5QXR0cmlidXRlIGluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKQogewotICAg
IGlmICghaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpCi0gICAgICAgIHdpbGxNb2Rp
ZnlBdHRyaWJ1dGUobmFtZSwgbnVsbEF0b20sIHZhbHVlKTsKLSAgICBlbnN1cmVVbmlxdWVFbGVt
ZW50RGF0YSgpLmFkZEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Ci0gICAgaWYgKCFpblN5bmNocm9u
aXphdGlvbk9mTGF6eUF0dHJpYnV0ZSkKLSAgICAgICAgZGlkQWRkQXR0cmlidXRlKG5hbWUsIHZh
bHVlKTsKKyAgICBpZiAoaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpIHsKKyAgICAg
ICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5hZGRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2lsbE1vZGlmeUF0dHJpYnV0ZShuYW1lLCBu
dWxsQXRvbSwgdmFsdWUpOworICAgIHsKKyAgICAgICAgU3R5bGU6OkF0dHJpYnV0ZUNoYW5nZUlu
dmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgbmFtZSwgbnVsbEF0b20sIHZhbHVl
KTsKKyAgICAgICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5hZGRBdHRyaWJ1dGUobmFtZSwg
dmFsdWUpOworICAgIH0KKyAgICBkaWRBZGRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBi
b29sIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCkBA
IC0yNDc5LDYgKzI0OTIsMTggQEAgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUo
UHNldQogICAgIHJldHVybiBzdHlsZTsKIH0KIAorYm9vbCBFbGVtZW50OjpuZWVkc1N0eWxlSW52
YWxpZGF0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIWluUmVuZGVyZWREb2N1bWVudCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHN0eWxlQ2hhbmdlVHlwZSgpID49IEZ1bGxTdHls
ZUNoYW5nZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZG9jdW1lbnQoKS5zdHls
ZVJlc29sdmVySWZFeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHZvaWQgRWxlbWVudDo6c2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoKQogewog
ICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KHRydWUp
OwpAQCAtMzA3NCwxMiArMzA5OSw2IEBAIHZvaWQgRWxlbWVudDo6d2lsbE1vZGlmeUF0dHJpYnV0
ZShjb25zdCAKICAgICAgICAgICAgIHVwZGF0ZUxhYmVsKHRyZWVTY29wZSgpLCBvbGRWYWx1ZSwg
bmV3VmFsdWUpOwogICAgIH0KIAotICAgIGlmIChvbGRWYWx1ZSAhPSBuZXdWYWx1ZSkgewotICAg
ICAgICBhdXRvIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVudCgpLnN0eWxlUmVzb2x2ZXJJZkV4aXN0
cygpOwotICAgICAgICBpZiAoc3R5bGVSZXNvbHZlciAmJiBzdHlsZVJlc29sdmVyLT5oYXNTZWxl
Y3RvckZvckF0dHJpYnV0ZSgqdGhpcywgbmFtZS5sb2NhbE5hbWUoKSkpCi0gICAgICAgICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgfQotCiAgICAgaWYgKHN0ZDo6dW5pcXVlX3B0cjxN
dXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cD4gcmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2
ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JBdHRyaWJ1dGVzTXV0YXRpb24oKnRoaXMsIG5hbWUp
KQogICAgICAgICByZWNpcGllbnRzLT5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoTXV0YXRpb25SZWNv
cmQ6OmNyZWF0ZUF0dHJpYnV0ZXMoKnRoaXMsIG5hbWUsIG9sZFZhbHVlKSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjc5LDYgKzI3OSw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoUHNldWRvSWQgPSBOT1BTRVVETykg
b3ZlcnJpZGU7CiAKKyAgICBib29sIG5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSBjb25zdDsKKwog
ICAgIC8vIE1ldGhvZHMgZm9yIGluZGljYXRpbmcgdGhlIHN0eWxlIGlzIGFmZmVjdGVkIGJ5IGR5
bmFtaWMgdXBkYXRlcyAoZS5nLiwgY2hpbGRyZW4gY2hhbmdpbmcsIG91ciBwb3NpdGlvbiBjaGFu
Z2luZyBpbiBvdXIgc2libGluZyBsaXN0LCBldGMuKQogICAgIGJvb2wgc3R5bGVBZmZlY3RlZEJ5
RW1wdHkoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhU3R5bGVBZmZl
Y3RlZEJ5RW1wdHkoKTsgfQogICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSBjb25z
dCB7IHJldHVybiBnZXRGbGFnKENoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyUnVsZXNGbGFnKTsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvQXR0cmli
dXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkF0dHJpYnV0ZUNo
YW5nZUludmFsaWRhdGlvbi5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnRSdWxlU2V0cy5oIgorI2lu
Y2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlNwYWNlU3BsaXRTdHJpbmcuaCIK
KyNpbmNsdWRlICJTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CisKK3ZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0
aW9uOjppbnZhbGlkYXRlU3R5bGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSkKK3sKKyAgICBpZiAobmV3VmFsdWUgPT0gb2xkVmFsdWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8mIHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygp
OworICAgIGJvb2wgaXNIVE1MID0gbV9lbGVtZW50LmlzSFRNTEVsZW1lbnQoKTsKKworICAgIGF1
dG8mIG5hbWVTZXQgPSBpc0hUTUwgPyBydWxlU2V0cy5mZWF0dXJlcygpLmF0dHJpYnV0ZUNhbm9u
aWNhbExvY2FsTmFtZXNJblJ1bGVzIDogcnVsZVNldHMuZmVhdHVyZXMoKS5hdHRyaWJ1dGVMb2Nh
bE5hbWVzSW5SdWxlczsKKyAgICBib29sIHNob3VsZEludmFsaWRhdGUgPSBuYW1lU2V0LmNvbnRh
aW5zKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICBpZiAoIXNob3VsZElu
dmFsaWRhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghaXNIVE1MKSB7CisgICAgICAg
IG1fZWxlbWVudC5zZXROZWVkc1N0eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9lbGVtZW50LnNoYWRvd1Jvb3QoKSAmJiBydWxl
U2V0cy5hdXRob3JTdHlsZSgpLT5oYXNTaGFkb3dQc2V1ZG9FbGVtZW50UnVsZXMoKSkgeworICAg
ICAgICBtX2VsZW1lbnQuc2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9lbGVtZW50LnNldE5lZWRzU3R5bGVSZWNhbGMo
SW5saW5lU3R5bGVDaGFuZ2UpOworCisgICAgaWYgKCFjaGlsZHJlbk9mVHlwZTxFbGVtZW50Piht
X2VsZW1lbnQpLmZpcnN0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGF0dHJpYnV0
ZVJ1bGVzID0gcnVsZVNldHMuYW5jZXN0b3JBdHRyaWJ1dGVSdWxlc0ZvckhUTUwoYXR0cmlidXRl
TmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgIGlmICghYXR0cmlidXRlUnVsZXMpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIENoZWNrIGlmIGRlc2NlbmRhbnRzIG1heSBiZSBhZmZlY3Rl
ZCBieSB0aGlzIGF0dHJpYnV0ZSBjaGFuZ2UuCisgICAgZm9yIChhdXRvKiBzZWxlY3RvciA6IGF0
dHJpYnV0ZVJ1bGVzLT5hdHRyaWJ1dGVTZWxlY3RvcnMpIHsKKyAgICAgICAgYm9vbCBvbGRNYXRj
aGVzID0gb2xkVmFsdWUuaXNOdWxsKCkgPyBmYWxzZSA6IFNlbGVjdG9yQ2hlY2tlcjo6YXR0cmli
dXRlU2VsZWN0b3JNYXRjaGVzKG1fZWxlbWVudCwgYXR0cmlidXRlTmFtZSwgb2xkVmFsdWUsICpz
ZWxlY3Rvcik7CisgICAgICAgIGJvb2wgbmV3TWF0Y2hlcyA9IG5ld1ZhbHVlLmlzTnVsbCgpID8g
ZmFsc2UgOiBTZWxlY3RvckNoZWNrZXI6OmF0dHJpYnV0ZVNlbGVjdG9yTWF0Y2hlcyhtX2VsZW1l
bnQsIGF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlLCAqc2VsZWN0b3IpOworCisgICAgICAgIGlmIChv
bGRNYXRjaGVzICE9IG5ld01hdGNoZXMpIHsKKyAgICAgICAgICAgIG1fZGVzY2VuZGFudEludmFs
aWRhdGlvblJ1bGVTZXQgPSBhdHRyaWJ1dGVSdWxlcy0+cnVsZVNldC5nZXQoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBBdHRyaWJ1dGVDaGFuZ2VJ
bnZhbGlkYXRpb246OmludmFsaWRhdGVEZXNjZW5kYW50cygpCit7CisgICAgaWYgKCFtX2Rlc2Nl
bmRhbnRJbnZhbGlkYXRpb25SdWxlU2V0KQorICAgICAgICByZXR1cm47CisgICAgU3R5bGVJbnZh
bGlkYXRpb25BbmFseXNpcyBpbnZhbGlkYXRpb25BbmFseXNpcygqbV9kZXNjZW5kYW50SW52YWxp
ZGF0aW9uUnVsZVNldCk7CisgICAgaW52YWxpZGF0aW9uQW5hbHlzaXMuaW52YWxpZGF0ZVN0eWxl
KG1fZWxlbWVudCk7Cit9CisKK30KK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJp
YnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQXR0cmlidXRlQ2hhbmdl
SW52YWxpZGF0aW9uX2gKKyNkZWZpbmUgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uX2gKKwor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIlN0
eWxlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRG9jdW1lbnRSdWxlU2V0czsKK2NsYXNzIFNwYWNlU3BsaXRTdHJpbmc7
CisKK25hbWVzcGFjZSBTdHlsZSB7CisKK2NsYXNzIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlv
biB7CitwdWJsaWM6CisgICAgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmLCBj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAgfkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlv
bigpOworCitwcml2YXRlOgorICAgIHVzaW5nIENsYXNzQ2hhbmdlVmVjdG9yID0gVmVjdG9yPEF0
b21pY1N0cmluZ0ltcGwqLCA0PjsKKworICAgIHZvaWQgaW52YWxpZGF0ZVN0eWxlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5ld1ZhbHVlKTsKKyAgICB2b2lkIGludmFsaWRhdGVEZXNjZW5kYW50cygpOworCisg
ICAgY29uc3QgYm9vbCBtX2lzRW5hYmxlZDsKKyAgICBFbGVtZW50JiBtX2VsZW1lbnQ7CisKKyAg
ICBSdWxlU2V0KiBtX2Rlc2NlbmRhbnRJbnZhbGlkYXRpb25SdWxlU2V0IHsgbnVsbHB0ciB9Owor
fTsKKworaW5saW5lIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbjo6QXR0cmlidXRlQ2hhbmdl
SW52YWxpZGF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmV3VmFsdWUpCisgICAgOiBtX2lzRW5hYmxlZChlbGVtZW50Lm5lZWRzU3R5bGVJbnZhbGlk
YXRpb24oKSkKKyAgICAsIG1fZWxlbWVudChlbGVtZW50KQoreworICAgIGlmICghbV9pc0VuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbnZhbGlkYXRlU3R5bGUoYXR0cmlidXRlTmFtZSwg
b2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICBpbnZhbGlkYXRlRGVzY2VuZGFudHMoKTsKK30KKwor
aW5saW5lIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbjo6fkF0dHJpYnV0ZUNoYW5nZUludmFs
aWRhdGlvbigpCit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAg
IGludmFsaWRhdGVEZXNjZW5kYW50cygpOworfQorICAgIAorfQorfQorCisjZW5kaWYKKwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oCShy
ZXZpc2lvbiAxOTY1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdXNpbmcgQ2xhc3NDaGFuZ2VWZWN0b3IgPSBWZWN0b3I8QXRvbWljU3RyaW5nSW1w
bCosIDQ+OwogCi0gICAgc3RhdGljIGJvb2wgbmVlZHNJbnZhbGlkYXRpb24oY29uc3QgRWxlbWVu
dCYpOwogICAgIHZvaWQgY29tcHV0ZUNsYXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcm
IG9sZENsYXNzZXMsIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG5ld0NsYXNzZXMpOwogICAgIHZv
aWQgaW52YWxpZGF0ZVN0eWxlKGNvbnN0IENsYXNzQ2hhbmdlVmVjdG9yJik7CiAKQEAgLTU5LDE5
ICs1OCw4IEBAIHByaXZhdGU6CiAgICAgQ2xhc3NDaGFuZ2VWZWN0b3IgbV9yZW1vdmVkQ2xhc3Nl
czsKIH07CiAKLWlubGluZSBib29sIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpuZWVkc0ludmFs
aWRhdGlvbihjb25zdCBFbGVtZW50JiBlbGVtZW50KQotewotICAgIGlmICghZWxlbWVudC5pblJl
bmRlcmVkRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChlbGVtZW50
LnN0eWxlQ2hhbmdlVHlwZSgpID49IEZ1bGxTdHlsZUNoYW5nZSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmICghZWxlbWVudC5kb2N1bWVudCgpLnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGlubGluZSBD
bGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3NlcywgY29uc3QgU3BhY2VT
cGxpdFN0cmluZyYgbmV3Q2xhc3NlcykKLSAgICA6IG1faXNFbmFibGVkKG5lZWRzSW52YWxpZGF0
aW9uKGVsZW1lbnQpKQorICAgIDogbV9pc0VuYWJsZWQoZWxlbWVudC5uZWVkc1N0eWxlSW52YWxp
ZGF0aW9uKCkpCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKIAogewpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTk2NTc1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTYtMDItMTUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIE9wdGltaXplIHN0eWxlIGludmFsaWRhdGlvbnMgZm9yIGF0dHJpYnV0ZSBz
ZWxlY3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NDI0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFuZ2UtZGVzY2VuZGFu
dHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZS1pbnZhbGlk
YXRpb24tYXR0cmlidXRlLWNoYW5nZS1kZXNjZW5kYW50cy5odG1sOiBBZGRlZC4KKwogMjAxNi0w
Mi0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRl
c3QgZm9yIGNsYXNzIGNoYW5nZSBzdHlsZSBpbnZhbGlkYXRpb24gb3B0aW1pemF0aW9uCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24tYXR0cmlidXRlLWNoYW5n
ZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFuZ2UtZGVzY2VuZGFudHMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52
YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQ5IEBACitUZXN0IHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUg
ZWxlbWVudCBzdWJ0cmVlIG1pbmltYWxseSBvbiBjbGFzcyBhdHRyaWJ1dGUgY2hhbmdlCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1
ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0
ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQor
UEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRy
dWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlz
IHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAn
bXlhdHRyJyB2YWx1ZSAnJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5
bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hh
bmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiSW5saW5l
U3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0Iiwg
Ik5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQor
U2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ2ZvbycKK1BBU1MgdGVzdFN0eWxlQ2hh
bmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgi
cm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNo
YW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVj
dGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ3ZhbHVl
MicKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUK
K1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIikg
aXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdl
IikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmli
dXRlICdteWF0dHInIHZhbHVlICdmb28nCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3Qi
LCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5l
U3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIs
ICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgi
aW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBp
cyB0cnVlCitSZW1vdmluZyBhdHRyaWJ1dGUgJ215YXR0cicKK1BBU1MgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9v
dCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlw
ZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVD
aGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBl
Y3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdteWF0dHInIHZhbHVlICd2YWx1
ZTMnCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8
IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVl
CitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIp
IGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5n
ZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJp
YnV0ZSAnbXlhdHRyJyB2YWx1ZSAnZHVtbXkgdmFsdWUzJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VU
eXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290
IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRT
dHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAndmFsdWU0LWZv
bycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUK
K1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIikg
aXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdl
IikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmli
dXRlICdteWF0dHInIHZhbHVlICd2YWx1ZTQtZm9vYmFyJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VU
eXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290
IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRT
dHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnZHVtbXkgdmFs
dWU0LWZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdl
IikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlz
IHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hh
bmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxl
Q2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcg
YXR0cmlidXRlICdteWF0dHInIHZhbHVlICd2YWx1ZTVmb28nCitQQVNTIHRlc3RTdHlsZUNoYW5n
ZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJv
b3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5
cGUoInRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxl
Q2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhw
ZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAndmFs
dWU1Zm9vYmFyJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFu
Z2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikg
aXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5n
ZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNo
YW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0
dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnZm9vdmFsdWU1JworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VU
eXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290
IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCJ0YXJnZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNo
YW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVj
dGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ2Zvb3Zh
bHVlNicKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikg
fHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRy
dWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdl
IikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hh
bmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0
cmlidXRlICdteUF0dHInIHZhbHVlICdmb29iYXJ2YWx1ZTYnCitQQVNTIHRlc3RTdHlsZUNoYW5n
ZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJv
b3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5
cGUoInRhcmdldCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFu
Z2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3Rl
ZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdNWUFUVFInIHZhbHVlICd2YWx1ZTZm
b28nCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8
IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVl
CitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIp
IGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5n
ZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJp
YnV0ZSAnbXlhdHRyJyB2YWx1ZSAndmFsdWU3JworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJy
b290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklu
bGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJn
ZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5
cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5
bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ3ZhbHVlN2ZvbycK
K1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BB
U1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVl
CitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0
cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215
QVRUUicgdmFsdWUgJ2Zvb3ZhbHVlN2ZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9v
dCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxp
bmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0
IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImlu
ZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMg
dHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ1ZBTFVFN2ZvbycKK1BBU1Mg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxl
Q2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQor
UEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1
ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdteWF0
dHInIHZhbHVlICdWYWx1ZTgnCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9T
dHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVD
aGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJbmxp
bmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQi
LCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVl
CitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAndmFsdWU4Zm9vJworUEFTUyB0ZXN0
U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFu
Z2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5
bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1Mg
aGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlBVFRSJyB2YWx1
ZSAnRk9PVkFMdWU4Zm9vJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5
bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hh
bmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHls
ZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9T
dHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0
aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnVkFMVUU4Zm9vJworUEFTUyB0ZXN0U3R5bGVD
aGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFu
Z2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxl
Q2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhw
ZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnVkFM
VUUgOGZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdl
IikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlz
IHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hh
bmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxl
Q2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcg
YXR0cmlidXRlICdteWF0dHIyJyB2YWx1ZSAnJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJy
b290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklu
bGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJn
ZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgi
aW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBp
cyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyMicgdmFsdWUgJ2ZvbycKK1BBU1MgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hh
bmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0
eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRl
c3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNT
IGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWlu
dmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFu
Z2UtZGVzY2VuZGFudHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Nz
L3N0eWxlLWludmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorKiB7CisgICAgY29sb3I6IGJsYWNrOworfQorW215YXR0cl0gdGFyZ2V0
IHsKKyAgICBjb2xvcjogcmdiKDEsIDAsIDApOworfQorCitbbXlhdHRyPXZhbHVlMl0gPiBpbmVy
dCB0YXJnZXQgeworICAgIGNvbG9yOiByZ2IoMiwgMCwgMCk7Cit9CisKK1tteWF0dHJ+PXZhbHVl
M10gaW5lcnQgKyB0YXJnZXQgeworICAgIGNvbG9yOiByZ2IoMywgMCwgMCk7Cit9CisKK1tNWUFU
VFJ8PXZhbHVlNF0gaW5lcnQgfiB0YXJnZXQgeworICAgIGNvbG9yOiByZ2IoNCwgMCwgMCk7Cit9
CisKK1tteUF0dHJePXZhbHVlNV0gdGFyZ2V0IHsKKyAgICBjb2xvcjogcmdiKDUsIDAsIDApOwor
fQorCitbbXlhdHRyJD12YWx1ZTZdIHRhcmdldCB7CisgICAgY29sb3I6IHJnYig2LCAwLCAwKTsK
K30KKworW215QVRUUio9dmFsdWU3XSB0YXJnZXQgeworICAgIGNvbG9yOiByZ2IoNywgMCwgMCk7
Cit9CisKK1tteWF0dHIqPXZhTFVFOCBpXSB0YXJnZXQgeworICAgIGNvbG9yOiByZ2IoOCwgMCwg
MCk7Cit9CisKK1tteWF0dHIyXSA+IHRhcmdldCB7CisgICAgY29sb3I6IHJnYig5LCAwLCAwKTsK
K30KKworPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxyb290PgorICAgICAgICA8IS0t
IFdpdGggcmVuZGVyZXIgLS0+CisgICAgICAgIDxpbmVydD4KKyAgICAgICAgICAgIDxpbmVydD4K
KyAgICAgICAgICAgICAgICA8aW5lcnQ+PC9pbmVydD4KKyAgICAgICAgICAgICAgICA8dGFyZ2V0
PgorICAgICAgICAgICAgICAgICAgICA8aW5lcnQ+PC9pbmVydD4KKyAgICAgICAgICAgICAgICAg
ICAgPHRhcmdldD48L3RhcmdldD4KKyAgICAgICAgICAgICAgICA8L3RhcmdldD4KKyAgICAgICAg
ICAgIDwvaW5lcnQ+CisgICAgICAgICAgICA8dGFyZ2V0PjwvdGFyZ2V0PgorICAgICAgICAgICAg
PGluZXJ0PjwvaW5lcnQ+CisgICAgICAgIDwvaW5lcnQ+CisgICAgPC9yb290PgorICAgIDxyb290
IHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KKyAgICAgICAgPCEtLSBXaXRob3V0IHJlbmRlcmVyIC0t
PgorICAgICAgICA8aW5lcnQ+CisgICAgICAgICAgICA8aW5lcnQ+CisgICAgICAgICAgICAgICAg
PGluZXJ0PjwvaW5lcnQ+CisgICAgICAgICAgICAgICAgPHRhcmdldD4KKyAgICAgICAgICAgICAg
ICAgICAgPGluZXJ0PjwvaW5lcnQ+CisgICAgICAgICAgICAgICAgICAgIDx0YXJnZXQ+PC90YXJn
ZXQ+CisgICAgICAgICAgICAgICAgPC90YXJnZXQ+CisgICAgICAgICAgICA8L2luZXJ0PgorICAg
ICAgICAgICAgPHRhcmdldD48L3RhcmdldD4KKyAgICAgICAgICAgIDxpbmVydD48L2luZXJ0Pgor
ICAgICAgICA8L2luZXJ0PgorICAgIDwvcm9vdD4KKzwvYm9keT4KKzxzY3JpcHQ+CisKK2Rlc2Ny
aXB0aW9uKCdUZXN0IHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgZWxlbWVudCBzdWJ0cmVlIG1pbmlt
YWxseSBvbiBjbGFzcyBhdHRyaWJ1dGUgY2hhbmdlJyk7CisKK2Z1bmN0aW9uIHRlc3RTdHlsZUNo
YW5nZVR5cGUodGFnLCB0eXBlKQoreworICAgIHZhciBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwodGFnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzLnN0eWxlQ2hhbmdlVHlwZShl
bGVtZW50c1tpXSkgIT0gdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHlsZUludmFsaWRhdGlvbihleHBl
Y3RlZERlc2NlbmRhbnRTdHlsZUNoYW5nZSkgeworICAgIC8vIElkZWFsbHkgd2Ugd291bGQndCBp
bnZhbGlkYXRlIHRoZSByb290IGF0IGFsbC4KKyAgICBzaG91bGRCZVRydWUoJ3Rlc3RTdHlsZUNo
YW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUo
InJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKScpOworCisgICAgc2hvdWxkQmVUcnVlKCd0ZXN0
U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiJyArIGV4cGVjdGVkRGVzY2VuZGFudFN0eWxlQ2hh
bmdlICsnIiknKTsKKworICAgIHNob3VsZEJlVHJ1ZSgndGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5l
cnQiLCAiTm9TdHlsZUNoYW5nZSIpJyk7Cit9CisKK2Z1bmN0aW9uIHNldEF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSkgeworICAgIGRlYnVnKCJTZXR0aW5nIGF0dHJpYnV0ZSAnIiArIG5hbWUgKyAiJyB2
YWx1ZSAnIiArIHZhbHVlICsgIiciKTsKKyAgICB2YXIgYWxsUm9vdHMgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCJyb290Iik7CisgICAgYWxsUm9vdHNbMF0uc2V0QXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKKyAgICBhbGxSb290c1sxXS5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworfQor
CitmdW5jdGlvbiByZW1vdmVBdHRyaWJ1dGUobmFtZSkgeworICAgIGRlYnVnKCJSZW1vdmluZyBh
dHRyaWJ1dGUgJyIgKyBuYW1lICsgIiciKTsKKyAgICB2YXIgYWxsUm9vdHMgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCJyb290Iik7CisgICAgYWxsUm9vdHNbMF0ucmVtb3ZlQXR0cmlidXRl
KG5hbWUpOworICAgIGFsbFJvb3RzWzFdLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKK30KKworZnVu
Y3Rpb24gY2hlY2tTdHlsZShuKSB7CisgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgIGhhc0V4cGVjdGVkU3R5bGUgPSB0cnVlOworICAgIGV4cGVjdGVkQ29sb3Ig
PSAncmdiKCcrbisnLCAwLCAwKSc7CisgICAgdmFyIHRhcmdldHMgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCJ0YXJnZXQiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldHMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgaGFzRXhwZWN0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUo
dGFyZ2V0c1tpXSkuY29sb3IgPT0gZXhwZWN0ZWRDb2xvcjsKKyAgICAgICAgaWYgKCFoYXNFeHBl
Y3RlZFN0eWxlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHNob3VsZEJlVHJ1ZSgi
aGFzRXhwZWN0ZWRTdHlsZSIpOworfQorCitjaGVja1N0eWxlKDApOwordGVzdFN0eWxlSW52YWxp
ZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDApOworCitzZXRBdHRyaWJ1dGUo
J215YXR0cicsICcnKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2Ui
KTsKK2NoZWNrU3R5bGUoMSk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ2ZvbycpOwordGVz
dFN0eWxlSW52YWxpZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDEpOworCitz
ZXRBdHRyaWJ1dGUoJ215YXR0cicsICd2YWx1ZTInKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigi
SW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoMik7CisKK3NldEF0dHJpYnV0ZSgnbXlh
dHRyJywgJ2ZvbycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIp
OworY2hlY2tTdHlsZSgxKTsKKworcmVtb3ZlQXR0cmlidXRlKCdteWF0dHInKTsKK3Rlc3RTdHls
ZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoMCk7CisKK3Nl
dEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3ZhbHVlMycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJ
bmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSgzKTsKKworc2V0QXR0cmlidXRlKCdteWF0
dHInLCAnZHVtbXkgdmFsdWUzJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIk5vU3R5bGVDaGFu
Z2UiKTsKK2NoZWNrU3R5bGUoMyk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3ZhbHVlNC1m
b28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNr
U3R5bGUoNCk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3ZhbHVlNC1mb29iYXInKTsKK3Rl
c3RTdHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSg0KTsKKwor
c2V0QXR0cmlidXRlKCdteWF0dHInLCAnZHVtbXkgdmFsdWU0LWZvbycpOwordGVzdFN0eWxlSW52
YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSgxKTsKKworc2V0QXR0
cmlidXRlKCdteWF0dHInLCAndmFsdWU1Zm9vJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIklu
bGluZVN0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDUpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0
cicsICd2YWx1ZTVmb29iYXInKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5n
ZSIpOworY2hlY2tTdHlsZSg1KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAnZm9vdmFsdWU1
Jyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIklubGluZVN0eWxlQ2hhbmdlIik7CitjaGVja1N0
eWxlKDEpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0cicsICdmb292YWx1ZTYnKTsKK3Rlc3RTdHls
ZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoNik7CisKK3Nl
dEF0dHJpYnV0ZSgnbXlBdHRyJywgJ2Zvb2JhcnZhbHVlNicpOwordGVzdFN0eWxlSW52YWxpZGF0
aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDYpOworCitzZXRBdHRyaWJ1dGUoJ01Z
QVRUUicsICd2YWx1ZTZmb28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVD
aGFuZ2UiKTsKK2NoZWNrU3R5bGUoMSk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3ZhbHVl
NycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tT
dHlsZSg3KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAndmFsdWU3Zm9vJyk7Cit0ZXN0U3R5
bGVJbnZhbGlkYXRpb24oIk5vU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoNyk7CisKK3NldEF0
dHJpYnV0ZSgnbXlBVFRSJywgJ2Zvb3ZhbHVlN2ZvbycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9u
KCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDcpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0
cicsICdWQUxVRTdmb28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFu
Z2UiKTsKK2NoZWNrU3R5bGUoMSk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ1ZhbHVlOCcp
OwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tTdHls
ZSg4KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAndmFsdWU4Zm9vJyk7Cit0ZXN0U3R5bGVJ
bnZhbGlkYXRpb24oIk5vU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoOCk7CisKK3NldEF0dHJp
YnV0ZSgnbXlBVFRSJywgJ0ZPT1ZBTHVlOGZvbycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJO
b1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDgpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0cics
ICdWQUxVRThmb28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5nZSIpOwor
Y2hlY2tTdHlsZSg4KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAnVkFMVUUgOGZvbycpOwor
dGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSgx
KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHIyJywgJycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9u
KCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDEpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0
cjInLCAnZm9vJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIk5vU3R5bGVDaGFuZ2UiKTsKK2No
ZWNrU3R5bGUoMSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="296168"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271360</attachid>
            <date>2016-02-15 12:47:48 -0800</date>
            <delta_ts>2016-02-15 12:57:08 -0800</delta_ts>
            <desc>for landing</desc>
            <filename>attribute-invalidation-10.patch</filename>
            <type>text/plain</type>
            <size>53462</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjU4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE2LTAyLTE1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBzdHlsZSBpbnZh
bGlkYXRpb25zIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgorCisgICAgICAgIEN1cnJlbnRseSB3ZSBpbnZhbGlkYXRlIHRoZSB3aG9s
ZSBlbGVtZW50IHN1YnRyZWUgaWYgdGhlcmUgYXJlIGFueSBhdHRyaWJ1dGUgc2VsZWN0b3JzIGZv
ciB0aGUgY2hhbmdlZCBhdHRyaWJ1dGUuCisgICAgICAgIFRoaXMgaXMgc2xvdyBhcyBnZW5lcmFs
bHkgZmV3IGlmIGFueSBlbGVtZW50cyBhcmUgcmVhbGx5IGFmZmVjdGVkLiBVc2luZyBhdHRyaWJ1
dGUgc2VsZWN0b3JzIGZvciBkeW5hbWljIHN0eWxpbmcKKyAgICAgICAgc2hvdWxkIGJlIHBlcmZv
cm1hbnQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIG9wdGltaXphdGlvbiBzdHJh
dGVneSBmb3IgYXR0cmlidXRlcyBzaW1pbGFyIHRvIHdoYXQgd2UgYWxyZWFkeSBoYXZlIGZvciBj
bGFzc2VzOgorCisgICAgICAgIC0gQ29sbGVjdCBhIG1hcCBvZiBhbGwgcnVsZXMgdGhhdCBjb250
YWlucyBkZXNjZW5kYW50LWFmZmVjdGluZyBhdHRyaWJ1dGUgc2VsZWN0b3JzIGZvciBhIGdpdmVu
IGF0dHJpYnV0ZS4KKyAgICAgICAgLSBXaGVuIGFuIGF0dHJpYnV0ZSB2YWx1ZSBjaGFuZ2VzIGNo
ZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3VjaCBydWxlcyBmb3IgaXQuCisgICAgICAgIC0gQ2hlY2sg
aWYgdGhlIHZhbHVlIGNoYW5nZSBhZmZlY3RzIHRoZSByZXN1bHRzIG9mIGFueSBvZiB0aGUgYXR0
cmlidXRlIHNlbGVjdG9ycy4KKyAgICAgICAgLSBPbmx5IGlmIGl0IGRvZXMgaW52YWxpZGF0ZSB0
aGUgZXhhY3QgZGVzY2VuZGFudCBlbGVtZW50cyBhZmZlY3RlZCBieSB0aGUgcnVsZXMuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFuZ2Ut
ZGVzY2VuZGFudHMuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmFuY2VzdG9yQ2xhc3NSdWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjphbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRNTCk6
CisKKyAgICAgICAgICAgIENyZWF0ZSBvcHRpbWl6YXRpb24gUnVsZVNldHMgd2hlbiBuZWVkZWQu
CisKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5oOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6dW5jb21tb25BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6ZmVhdHVyZXMpOgorICAgICAgICAqIGNzcy9SdWxlRmVhdHVyZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6cmVjdXJzaXZlbHlDb2xsZWN0
RmVhdHVyZXNGcm9tU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUF0dHJpYnV0ZVNl
bGVjdG9yS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVh
dHVyZXMpOgorCisgICAgICAgICAgICBDb2xsZWN0IHJ1bGVzIHdpdGggZGVzY2VuZGFudCBhZmZl
Y3RpbmcgYXR0cmlidXRlIHNlbGVjdG9ycy4KKworICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1
cmVTZXQ6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1cmVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAg
KiBjc3MvUnVsZUZlYXR1cmUuaDoKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFueUF0dHJpYnV0ZU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDaGVja2VyOjphdHRyaWJ1dGVTZWxlY3Rvck1hdGNoZXMpOgorCisgICAgICAg
ICAgICBFeHBvc2UgZnVuY3Rpb24gZm9yIG1hdGNoaW5nIHNpbmdsZSBhdHRyaWJ1dGUgc2VsZWN0
b3JzLgorCisgICAgICAgIChXZWJDb3JlOjpjYW5NYXRjaEhvdmVyT3JBY3RpdmVJblF1aXJrc01v
ZGUpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKiBkb20vQXR0
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBdHRyOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1ha2VJZEZvclN0eWxlUmVzb2x1dGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnJlbW92ZUF0dHJpYnV0ZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFk
ZEF0dHJpYnV0ZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0
dHJpYnV0ZSk6CisKKyAgICAgICAgICAgIEFkZCBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24g
d2hlcmUgbmVlZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpuZWVkc1N0eWxlSW52
YWxpZGF0aW9uKToKKworICAgICAgICAgICAgTW92ZSB0byBFbGVtZW50IGZyb20gQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uCisKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndpbGxNb2RpZnlB
dHRyaWJ1dGUpOgorCisgICAgICAgICAgICBObyBtb3JlIGZ1bGwgc3R5bGUgaW52YWxpZGF0aW9u
IG9uIGF0dHJpYnV0ZSBjaGFuZ2UuCisKKyAgICAgICAgKiBzdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJ
bnZhbGlkYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1
dGVDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZSk6CisKKyAgICAgICAgICAgIElu
dmFsaWRhdGUgbG9jYWwgc3R5bGUuCisgICAgICAgICAgICBDaGVjayBpZiB3ZSBuZWVkIHRvIGlu
dmFsaWRhdGUgZGVzY2VuZGFudHMgYnkgbG9va2luZyBpbnRvIGFuY2VzdG9yQXR0cmlidXRlUnVs
ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRp
b246OmludmFsaWRhdGVEZXNjZW5kYW50cyk6CisKKyAgICAgICAgICAgIFVzZSBTdHlsZUludmFs
aWRhdGlvbkFuYWx5c2lzIHRvIGludmFsaWRhdGUgdGhlIHN1YnRyZWUgZm9yIHRoZSByZWxldmFu
dCBydWxlcy4KKworICAgICAgICAqIHN0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlk
YXRpb246Om5lZWRzSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRy
aWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjp+QXR0
cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uKToKKworICAgICAgICAgICAgSWYgbmVlZGVkLCBpbnZh
bGlkYXRlIGRlc2NlbmRhbnRzIGJlZm9yZSBhbmQgYWZ0ZXIgYXR0cmlidXRlIGNoYW5nZSB0byBj
YXRjaCBydWxlcyB0aGF0IHN0YXJ0IGFuZCBzdG9wIGFwcGx5aW5nLgorCiAyMDE2LTAyLTE1ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihyMTk2
NTYzKTogSXQgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIGNhbGwgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIgd2l0aG91dCBhbiBleHBsaWNpdCAndGhpcycKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxOTY1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMjYyNCw2ICsyNjI0LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKICAgICBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHAKIAorICAgIHN0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKICAg
ICBzdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKICAgICBzdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuY3BwCiAgICAgc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lv
biAxOTY1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTI1Myw2ICsxOTI1Myw3IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxzdG9yYWdlXFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3RvcmFnZVxTdG9yYWdlTWFwLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHN0b3JhZ2VcU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHN0eWxlXEF0dHJpYnV0ZUNoYW5nZUlu
dmFsaWRhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzdHlsZVxDbGFz
c0NoYW5nZUludmFsaWRhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxz
dHlsZVxJbmxpbmVUZXh0Qm94U3R5bGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cc3R5bGVcUmVuZGVyVHJlZVBvc2l0aW9uLmNwcCIgLz4KQEAgLTIyODIxLDYgKzIyODIyLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHN0b3JhZ2VcU3RvcmFnZU1hcC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3RvcmFnZVxTdG9yYWdlTmFtZXNwYWNlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxzdG9yYWdlXFN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3R5bGVcQXR0cmlidXRlQ2hh
bmdlSW52YWxpZGF0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxzdHlsZVxD
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
c3R5bGVcSW5saW5lVGV4dEJveFN0eWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxzdHlsZVxSZW5kZXJUcmVlUG9zaXRpb24uaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5NjU2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNjYyMyw2ICs2NjIzLDggQEAKIAkJRTRBMDA3ODUxQjgyMEVEMzAwMkM1
QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rl
ci5jcHAgKi87IH07CiAJCUU0QTgxNEQ0MUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRBODE0RDMxQzZERUM0MDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgg
Ki87IH07CiAJCUU0QTgxNEQ2MUM2REVFOEQwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NEE4MTRENTFDNkRFRThEMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICov
OyB9OworCQlFNEE4MTREODFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0QTgxNEQ3MUM3MEUxMDUwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24u
Y3BwICovOyB9OworCQlFNEE4MTREQTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdl
SW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0
aW9uLmggKi87IH07CiAJCUU0QUU3QzE2MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUU3
QzE1MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEFFN0MxQTE3RDIzMjM1MDAwOUZC
MzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUU3QzE5MTdEMjMyMzUwMDA5RkIzMSAvKiBFbGVtZW50
QW5jZXN0b3JJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFGQ0ZBNDBEQUYy
OUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oICovOyB9OwpAQCAtMTQ2MTMsNiArMTQ2MTUsOCBA
QAogCQlFNEEwMDc4NDFCODIwRUQzMDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YVVSTERlY29kZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEE4MTREMzFDNkRFQzQwMDBCRjg1QUMgLyogQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTRBODE0RDUxQzZERUU4RDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBODE0RDcxQzcwRTEwNTAw
QkY4NUFDIC8qIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyog
QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNEFFN0MxNTE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVudEl0ZXJhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRJdGVyYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEFFN0MxOTE3RDIzMjM1MDAwOUZCMzEgLyogRWxl
bWVudEFuY2VzdG9ySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVW5pdEJlemllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjMzOTAsNiArMjMzOTQsOCBAQAogCQlFNDc2M0Q0QTE3QjI3MDQ5MDBEMzUyMDYgLyog
c3R5bGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUU0
QTgxNEQ3MUM3MEUxMDUwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3Bw
ICovLAorCQkJCUU0QTgxNEQ5MUM3MEUxMEQwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZh
bGlkYXRpb24uaCAqLywKIAkJCQlFNEE4MTRENTFDNkRFRThEMDBCRjg1QUMgLyogQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwICovLAogCQkJCUU0QTgxNEQzMUM2REVDNDAwMEJGODVBQyAvKiBD
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICovLAogCQkJCTFDMDEwNkZFMTkyNTk0REYwMDhBNDIw
MSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwICovLApAQCAtMjU4NjAsNiArMjU4NjYsNyBAQAog
CQkJCTMxMzEzRjY2MTQ0M0IzNUYwMDZFMkE5MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNkUxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNzAxNDk5NzkwRDAwQ0REM0E0IC8qIEZp
bHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0QTgxNERBMUM3MEUxMEQwMEJG
ODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTM3MkMwMEQ5MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNp
b24uaCBpbiBIZWFkZXJzICovLApAQCAtMzAzODIsNiArMzAzODksNyBAQAogCQkJCUI1OURENkFB
MTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOUJENEU5MTYxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzYzODBDRTkyMjVFMDA3RUYz
Q0QgLyogSlNTUUxUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNEE4MTREODFD
NzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI1OURENjlFMTE5MDJBNDIwMDdFOTY4NCAvKiBKU1NRTFRyYW5zYWN0aW9u
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEMjMxNkUwQ0QyNjlFNzAwQzFGMTk0
IC8qIEpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjU5REQ2
QTIxMTkwMkE1MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNw
cAkocmV2aXNpb24gMTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNl
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBEb2N1bWVudFJ1
bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoKQogCiBSdWxlU2V0KiBEb2N1bWVudFJ1bGVTZXRzOjph
bmNlc3RvckNsYXNzUnVsZXMoQXRvbWljU3RyaW5nSW1wbCogY2xhc3NOYW1lKSBjb25zdAogewot
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hbmNlc3RvckNsYXNzUnVsZVNldC5hZGQoY2xhc3NOYW1l
LCBudWxscHRyKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYW5jZXN0b3JDbGFzc1J1bGVTZXRz
LmFkZChjbGFzc05hbWUsIG51bGxwdHIpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkg
ewogICAgICAgICBpZiAoYXV0byogcnVsZXMgPSBtX2ZlYXR1cmVzLmFuY2VzdG9yQ2xhc3NSdWxl
cy5nZXQoY2xhc3NOYW1lKSkKICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtYWtlUnVsZVNldCgqcnVsZXMpOwpAQCAtMTI2LDQgKzEyNiwyMCBAQCBSdWxlU2V0KiBEb2N1
bWVudFJ1bGVTZXRzOjphbmNlc3RvckNsYXNzCiAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuZ2V0KCk7CiB9CiAKK2NvbnN0IERvY3VtZW50UnVsZVNldHM6OkF0dHJpYnV0ZVJ1
bGVzKiBEb2N1bWVudFJ1bGVTZXRzOjphbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRNTChBdG9t
aWNTdHJpbmdJbXBsKiBhdHRyaWJ1dGVOYW1lKSBjb25zdAoreworICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9hbmNlc3RvckF0dHJpYnV0ZVJ1bGVTZXRzRm9ySFRNTC5hZGQoYXR0cmlidXRlTmFtZSwg
bnVsbHB0cik7CisgICAgYXV0byYgdmFsdWUgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBpZiAoYXV0byogcnVsZXMg
PSBtX2ZlYXR1cmVzLmFuY2VzdG9yQXR0cmlidXRlUnVsZXNGb3JIVE1MLmdldChhdHRyaWJ1dGVO
YW1lKSkgeworICAgICAgICAgICAgdmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEF0dHJpYnV0ZVJ1
bGVzPigpOworICAgICAgICAgICAgdmFsdWUtPmF0dHJpYnV0ZVNlbGVjdG9ycy5yZXNlcnZlQ2Fw
YWNpdHkocnVsZXMtPnNlbGVjdG9ycy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChhdXRvKiBz
ZWxlY3RvciA6IHJ1bGVzLT5zZWxlY3RvcnMudmFsdWVzKCkpCisgICAgICAgICAgICAgICAgdmFs
dWUtPmF0dHJpYnV0ZVNlbGVjdG9ycy51bmNoZWNrZWRBcHBlbmQoc2VsZWN0b3IpOworICAgICAg
ICAgICAgdmFsdWUtPnJ1bGVTZXQgPSBtYWtlUnVsZVNldChydWxlcy0+ZmVhdHVyZXMpOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiB2YWx1ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5oCShyZXZp
c2lvbiAxOTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMiBAQCBwdWJsaWM6CiAgICAgUnVsZVNldCogdW5j
b21tb25BdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNl
dC5nZXQoKTsgfQogICAgIFJ1bGVTZXQqIGFuY2VzdG9yQ2xhc3NSdWxlcyhBdG9taWNTdHJpbmdJ
bXBsKiBjbGFzc05hbWUpIGNvbnN0OwogCisgICAgc3RydWN0IEF0dHJpYnV0ZVJ1bGVzIHsKKyAg
ICAgICAgVmVjdG9yPGNvbnN0IENTU1NlbGVjdG9yKj4gYXR0cmlidXRlU2VsZWN0b3JzOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gcnVsZVNldDsKKyAgICB9OworICAgIGNvbnN0
IEF0dHJpYnV0ZVJ1bGVzKiBhbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRNTChBdG9taWNTdHJp
bmdJbXBsKikgY29uc3Q7CisKICAgICB2b2lkIGluaXRVc2VyU3R5bGUoRXh0ZW5zaW9uU3R5bGVT
aGVldHMmLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5bGVSZXNvbHZlciYpOwogICAg
IHZvaWQgcmVzZXRBdXRob3JTdHlsZSgpOwogICAgIHZvaWQgYXBwZW5kQXV0aG9yU3R5bGVTaGVl
dHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mLCBNZWRpYVF1ZXJ5RXZhbHVh
dG9yKiwgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYsIFN0eWxlUmVzb2x2ZXIqKTsKQEAgLTY3LDcg
KzczLDggQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fZGVmYXVsdFN0eWxlVmVy
c2lvbk9uRmVhdHVyZUNvbGxlY3Rpb24geyAwIH07CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9w
dHI8UnVsZVNldD4gbV9zaWJsaW5nUnVsZVNldDsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxSdWxlU2V0PiBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNldDsKLSAgICBtdXRhYmxlIEhhc2hN
YXA8QXRvbWljU3RyaW5nSW1wbCosIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0Pj4gbV9hbmNlc3Rv
ckNsYXNzUnVsZVNldDsKKyAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIHN0
ZDo6dW5pcXVlX3B0cjxSdWxlU2V0Pj4gbV9hbmNlc3RvckNsYXNzUnVsZVNldHM7CisgICAgbXV0
YWJsZSBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBzdGQ6OnVuaXF1ZV9wdHI8QXR0cmlidXRl
UnVsZXM+PiBtX2FuY2VzdG9yQXR0cmlidXRlUnVsZVNldHNGb3JIVE1MOwogfTsKIAogaW5saW5l
IGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBEb2N1bWVudFJ1bGVTZXRzOjpmZWF0dXJlcygpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAJKHJldmlzaW9uIDE5NjU1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDggKzQ2LDEyIEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OnJlY3Vyc2l2ZWx5Q29sbGVjdEYKICAg
ICAgICAgICAgIGlmIChtYXRjaGVzQW5jZXN0b3IpCiAgICAgICAgICAgICAgICAgc2VsZWN0b3JG
ZWF0dXJlcy5jbGFzc2VzTWF0Y2hpbmdBbmNlc3RvcnMuYXBwZW5kKHNlbGVjdG9yLT52YWx1ZSgp
LmltcGwoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0b3ItPmlzQXR0cmlidXRlU2VsZWN0
b3IoKSkgewotICAgICAgICAgICAgYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXMu
YWRkKHNlbGVjdG9yLT5hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUoKS5pbXBsKCkpOwotICAg
ICAgICAgICAgYXR0cmlidXRlTG9jYWxOYW1lc0luUnVsZXMuYWRkKHNlbGVjdG9yLT5hdHRyaWJ1
dGUoKS5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICAgICAgYXV0byogY2Fub25pY2FsTG9j
YWxOYW1lID0gc2VsZWN0b3ItPmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpLmltcGwoKTsK
KyAgICAgICAgICAgIGF1dG8qIGxvY2FsTmFtZSA9IHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5sb2Nh
bE5hbWUoKS5pbXBsKCk7CisgICAgICAgICAgICBhdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWVz
SW5SdWxlcy5hZGQoY2Fub25pY2FsTG9jYWxOYW1lKTsKKyAgICAgICAgICAgIGF0dHJpYnV0ZUxv
Y2FsTmFtZXNJblJ1bGVzLmFkZChsb2NhbE5hbWUpOworICAgICAgICAgICAgaWYgKG1hdGNoZXNB
bmNlc3RvcikKKyAgICAgICAgICAgICAgICBzZWxlY3RvckZlYXR1cmVzLmF0dHJpYnV0ZVNlbGVj
dG9yc01hdGNoaW5nQW5jZXN0b3JzLmFwcGVuZChzZWxlY3Rvcik7CiAgICAgICAgIH0gZWxzZSBp
ZiAoc2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpIHsKICAg
ICAgICAgICAgIHN3aXRjaCAoc2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBlKCkpIHsKICAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRGaXJzdExpbmU6CkBAIC03OCw2
ICs4MiwxMyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjpyZWN1cnNpdmVseUNvbGxlY3RGCiAgICAg
fSB3aGlsZSAoc2VsZWN0b3IpOwogfQogCitzdGF0aWMgc3RkOjpwYWlyPEF0b21pY1N0cmluZ0lt
cGwqLCB1bnNpZ25lZD4gbWFrZUF0dHJpYnV0ZVNlbGVjdG9yS2V5KGNvbnN0IENTU1NlbGVjdG9y
JiBzZWxlY3RvcikKK3sKKyAgICBib29sIGNhc2VJbnNlbnNpdGl2ZSA9IHNlbGVjdG9yLmF0dHJp
YnV0ZVZhbHVlTWF0Y2hpbmdJc0Nhc2VJbnNlbnNpdGl2ZSgpOworICAgIHVuc2lnbmVkIG1hdGNo
QW5kQ2FzZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzZWxlY3Rvci5tYXRjaCgpKSA8PCAxIHwg
Y2FzZUluc2Vuc2l0aXZlOworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzZWxlY3Rvci5hdHRy
aWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUoKS5pbXBsKCksIG1hdGNoQW5kQ2FzZSk7Cit9CisKIHZv
aWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURh
dGEpCiB7CiAgICAgU2VsZWN0b3JGZWF0dXJlcyBzZWxlY3RvckZlYXR1cmVzOwpAQCAtOTIsNiAr
MTAzLDE2IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb24KICAgICAg
ICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFw
cGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgo
KSwgcnVsZURhdGEuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpKSk7CiAgICAgfQorICAgIGZv
ciAoYXV0byogc2VsZWN0b3IgOiBzZWxlY3RvckZlYXR1cmVzLmF0dHJpYnV0ZVNlbGVjdG9yc01h
dGNoaW5nQW5jZXN0b3JzKSB7CisgICAgICAgIC8vIEhhc2hpbmcgYnkgYXR0cmlidXRlQ2Fub25p
Y2FsTG9jYWxOYW1lIG1ha2VzIHRoaXMgSFRNTCBzcGVjaWZpYy4KKyAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBhbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRNTC5hZGQoc2VsZWN0b3ItPmF0dHJp
YnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpLmltcGwoKSwgbnVsbHB0cik7CisgICAgICAgIGlmIChh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEF0dHJpYnV0ZVJ1bGVzPigpOworICAgICAgICBhdXRvJiBy
dWxlcyA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBydWxlcy5mZWF0dXJl
cy5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3Rvcklu
ZGV4KCksIHJ1bGVEYXRhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICAv
LyBEZWR1cGxpY2F0ZSBzZWxlY3RvcnMuCisgICAgICAgIHJ1bGVzLnNlbGVjdG9ycy5hZGQobWFr
ZUF0dHJpYnV0ZVNlbGVjdG9yS2V5KCpzZWxlY3RvciksIHNlbGVjdG9yKTsKKyAgICB9CiB9CiAK
IHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYgb3RoZXIpCkBA
IC0xMDksNiArMTMwLDE1IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVh
dHUKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0KKyAgICBmb3IgKGF1dG8m
IGtleVZhbHVlUGFpciA6IG90aGVyLmFuY2VzdG9yQXR0cmlidXRlUnVsZXNGb3JIVE1MKSB7Cisg
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gYW5jZXN0b3JBdHRyaWJ1dGVSdWxlc0ZvckhUTUwuYWRk
KGtleVZhbHVlUGFpci5rZXksIG51bGxwdHIpOworICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3
RW50cnkpCisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxBdHRyaWJ1dGVSdWxlcz4oKTsKKyAgICAgICAgYXV0byYgcnVsZXMgPSAqYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgcnVsZXMuZmVhdHVyZXMuYXBwZW5kVmVjdG9y
KGtleVZhbHVlUGFpci52YWx1ZS0+ZmVhdHVyZXMpOworICAgICAgICBmb3IgKGF1dG8mIHNlbGVj
dG9yUGFpciA6IGtleVZhbHVlUGFpci52YWx1ZS0+c2VsZWN0b3JzKQorICAgICAgICAgICAgcnVs
ZXMuc2VsZWN0b3JzLmFkZChzZWxlY3RvclBhaXIua2V5LCBzZWxlY3RvclBhaXIudmFsdWUpOwor
ICAgIH0KICAgICB1c2VzRmlyc3RMaW5lUnVsZXMgPSB1c2VzRmlyc3RMaW5lUnVsZXMgfHwgb3Ro
ZXIudXNlc0ZpcnN0TGluZVJ1bGVzOwogICAgIHVzZXNGaXJzdExldHRlclJ1bGVzID0gdXNlc0Zp
cnN0TGV0dGVyUnVsZXMgfHwgb3RoZXIudXNlc0ZpcnN0TGV0dGVyUnVsZXM7CiB9CkBAIC0xMjIs
NiArMTUyLDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y2xlYXIoKQogICAgIHNpYmxpbmdSdWxl
cy5jbGVhcigpOwogICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuY2xlYXIoKTsKICAgICBhbmNl
c3RvckNsYXNzUnVsZXMuY2xlYXIoKTsKKyAgICBhbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRN
TC5jbGVhcigpOwogICAgIHVzZXNGaXJzdExpbmVSdWxlcyA9IGZhbHNlOwogICAgIHVzZXNGaXJz
dExldHRlclJ1bGVzID0gZmFsc2U7CiB9CkBAIC0xMzIsNiArMTYzLDggQEAgdm9pZCBSdWxlRmVh
dHVyZVNldDo6c2hyaW5rVG9GaXQoKQogICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuc2hyaW5r
VG9GaXQoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGVzIDogYW5jZXN0b3JDbGFzc1J1bGVzLnZhbHVl
cygpKQogICAgICAgICBydWxlcy0+c2hyaW5rVG9GaXQoKTsKKyAgICBmb3IgKGF1dG8mIHJ1bGVz
IDogYW5jZXN0b3JBdHRyaWJ1dGVSdWxlc0ZvckhUTUwudmFsdWVzKCkpCisgICAgICAgIHJ1bGVz
LT5mZWF0dXJlcy5zaHJpbmtUb0ZpdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaAkocmV2aXNpb24gMTk2NTU5KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcg
QEAKICNpZm5kZWYgUnVsZUZlYXR1cmVfaAogI2RlZmluZSBSdWxlRmVhdHVyZV9oCiAKKyNpbmNs
dWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMjksNyArMzAsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENTU1NlbGVjdG9yOwogY2xhc3MgUnVs
ZURhdGE7CiBjbGFzcyBTdHlsZVJ1bGU7CiAKQEAgLTU4LDYgKzU4LDEyIEBAIHN0cnVjdCBSdWxl
RmVhdHVyZVNldCB7CiAgICAgVmVjdG9yPFJ1bGVGZWF0dXJlPiBzaWJsaW5nUnVsZXM7CiAgICAg
VmVjdG9yPFJ1bGVGZWF0dXJlPiB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzOwogICAgIEhhc2hNYXA8
QXRvbWljU3RyaW5nSW1wbCosIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmU+Pj4g
YW5jZXN0b3JDbGFzc1J1bGVzOworCisgICAgc3RydWN0IEF0dHJpYnV0ZVJ1bGVzIHsKKyAgICAg
ICAgSGFzaE1hcDxzdGQ6OnBhaXI8QXRvbWljU3RyaW5nSW1wbCosIHVuc2lnbmVkPiwgY29uc3Qg
Q1NTU2VsZWN0b3IqPiBzZWxlY3RvcnM7CisgICAgICAgIFZlY3RvcjxSdWxlRmVhdHVyZT4gZmVh
dHVyZXM7CisgICAgfTsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBzdGQ6OnVuaXF1
ZV9wdHI8QXR0cmlidXRlUnVsZXM+PiBhbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRNTDsKICAg
ICBib29sIHVzZXNGaXJzdExpbmVSdWxlcyB7IGZhbHNlIH07CiAgICAgYm9vbCB1c2VzRmlyc3RM
ZXR0ZXJSdWxlcyB7IGZhbHNlIH07CiAKQEAgLTY1LDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBz
dHJ1Y3QgU2VsZWN0b3JGZWF0dXJlcyB7CiAgICAgICAgIGJvb2wgaGFzU2libGluZ1NlbGVjdG9y
IHsgZmFsc2UgfTsKICAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZ0ltcGwqPiBjbGFzc2VzTWF0
Y2hpbmdBbmNlc3RvcnM7CisgICAgICAgIFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+IGF0dHJp
YnV0ZVNlbGVjdG9yc01hdGNoaW5nQW5jZXN0b3JzOwogICAgIH07CiAgICAgdm9pZCByZWN1cnNp
dmVseUNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3RvcihTZWxlY3RvckZlYXR1cmVzJiwgY29uc3Qg
Q1NTU2VsZWN0b3ImLCBib29sIG1hdGNoZXNBbmNlc3RvciA9IGZhbHNlKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAkocmV2aXNpb24gMTk2NTU5KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxOCw2ICs1MTgsMjEgQEAgc3RhdGljIGJvb2wgYW55QXR0cmlidXRlTWF0Y2hlcyhjb25zdCBF
bAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBTZWxlY3RvckNoZWNrZXI6OmF0dHJpYnV0
ZVNlbGVjdG9yTWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlLCBj
b25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IpCit7CisgICAgQVNTRVJUKHNlbGVjdG9yLmlzQXR0
cmlidXRlU2VsZWN0b3IoKSk7CisgICAgYXV0byYgc2VsZWN0b3JBdHRyaWJ1dGUgPSBzZWxlY3Rv
ci5hdHRyaWJ1dGUoKTsKKyAgICBhdXRvJiBzZWxlY3Rvck5hbWUgPSBlbGVtZW50LmlzSFRNTEVs
ZW1lbnQoKSA/IHNlbGVjdG9yLmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpIDogc2VsZWN0
b3JBdHRyaWJ1dGUubG9jYWxOYW1lKCk7CisgICAgaWYgKCFBdHRyaWJ1dGU6Om5hbWVNYXRjaGVz
RmlsdGVyKGF0dHJpYnV0ZU5hbWUsIHNlbGVjdG9yQXR0cmlidXRlLnByZWZpeCgpLCBzZWxlY3Rv
ck5hbWUsIHNlbGVjdG9yQXR0cmlidXRlLm5hbWVzcGFjZVVSSSgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWU7CisgICAgaWYgKHNlbGVjdG9y
LmF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmdJc0Nhc2VJbnNlbnNpdGl2ZSgpKQorICAgICAgICBjYXNl
U2Vuc2l0aXZlID0gZmFsc2U7CisgICAgZWxzZSBpZiAoZWxlbWVudC5kb2N1bWVudCgpLmlzSFRN
TERvY3VtZW50KCkgJiYgZWxlbWVudC5pc0hUTUxFbGVtZW50KCkgJiYgIUhUTUxEb2N1bWVudDo6
aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKHNlbGVjdG9yLmF0dHJpYnV0ZSgpKSkKKyAgICAgICAg
Y2FzZVNlbnNpdGl2ZSA9IGZhbHNlOworICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZU1hdGNoZXMo
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKSwgc2VsZWN0b3IubWF0Y2go
KSwgc2VsZWN0b3IudmFsdWUoKSwgY2FzZVNlbnNpdGl2ZSk7Cit9CisKIHN0YXRpYyBib29sIGNh
bk1hdGNoSG92ZXJPckFjdGl2ZUluUXVpcmtzTW9kZShjb25zdCBTZWxlY3RvckNoZWNrZXI6Okxv
Y2FsQ29udGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBGb3IgcXVpcmtzIG1vZGUsIGZvbGxvdyB0
aGlzOiBodHRwOi8vcXVpcmtzLnNwZWMud2hhdHdnLm9yZy8jdGhlLTphY3RpdmUtYW5kLTpob3Zl
ci1xdWlyawpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAkocmV2aXNpb24g
MTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTksNiArMTE5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaXND
b21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKik7CiAgICAgc3RhdGlj
IGJvb2wgbWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCYpOworICAgIHN0YXRp
YyBib29sIGF0dHJpYnV0ZVNlbGVjdG9yTWF0Y2hlcyhjb25zdCBFbGVtZW50JiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUsIGNvbnN0IENT
U1NlbGVjdG9yJik7CiAKICAgICBlbnVtIExpbmtNYXRjaE1hc2sgeyBNYXRjaERlZmF1bHQgPSAw
LCBNYXRjaExpbmsgPSAxLCBNYXRjaFZpc2l0ZWQgPSAyLCBNYXRjaEFsbCA9IE1hdGNoTGluayB8
IE1hdGNoVmlzaXRlZCB9OwogICAgIHN0YXRpYyB1bnNpZ25lZCBkZXRlcm1pbmVMaW5rTWF0Y2hU
eXBlKGNvbnN0IENTU1NlbGVjdG9yKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCShyZXZpc2lvbiAx
OTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdHRyLmgiCiAK
KyNpbmNsdWRlICJBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY29wZWRFdmVudFF1
ZXVlLmgiCkBAIC0xMDgsOSArMTA5LDEwIEBAIHZvaWQgQXR0cjo6c2V0VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiAKICAgICBFdmVudFF1ZXVlU2NvcGUgc2NvcGU7CiAgICAgbV9pZ25vcmVDaGls
ZHJlbkNoYW5nZWQrKzsKICAgICByZW1vdmVDaGlsZHJlbigpOwotICAgIGlmIChtX2VsZW1lbnQp
CisgICAgaWYgKG1fZWxlbWVudCkgeworICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52
YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCptX2VsZW1lbnQsIHF1YWxpZmllZE5hbWUoKSwg
ZWxlbWVudEF0dHJpYnV0ZSgpLnZhbHVlKCksIHZhbHVlKTsKICAgICAgICAgZWxlbWVudEF0dHJp
YnV0ZSgpLnNldFZhbHVlKHZhbHVlKTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIG1f
c3RhbmRhbG9uZVZhbHVlID0gdmFsdWU7CiAgICAgY3JlYXRlVGV4dENoaWxkKCk7CiAgICAgbV9p
Z25vcmVDaGlsZHJlbkNoYW5nZWQtLTsKQEAgLTE2Myw5ICsxNjUsMTAgQEAgdm9pZCBBdHRyOjpj
aGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaAogICAgIGlmIChtX2VsZW1lbnQpCiAgICAgICAg
IG1fZWxlbWVudC0+d2lsbE1vZGlmeUF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKCksIG9sZFZhbHVl
LCBuZXdWYWx1ZSk7CiAKLSAgICBpZiAobV9lbGVtZW50KQorICAgIGlmIChtX2VsZW1lbnQpIHsK
KyAgICAgICAgU3R5bGU6OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRh
dGlvbigqbV9lbGVtZW50LCBxdWFsaWZpZWROYW1lKCksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAg
ICAgICAgIGVsZW1lbnRBdHRyaWJ1dGUoKS5zZXRWYWx1ZShuZXdWYWx1ZSk7Ci0gICAgZWxzZQor
ICAgIH0gZWxzZQogICAgICAgICBtX3N0YW5kYWxvbmVWYWx1ZSA9IG5ld1ZhbHVlOwogCiAgICAg
aWYgKG1fZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5NjU2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkF0
dHIuaCIKKyNpbmNsdWRlICJBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRl
ICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKQEAgLTExNzYsMjYgKzExNzcsMzAgQEAgaW5saW5lIHZvaWQgRWxlbWVudDo6c2V0QXR0
cmlidXRlSW50ZXJuYQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKGluU3luY2hy
b25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKSB7CisgICAgICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnRE
YXRhKCkuYXR0cmlidXRlQXQoaW5kZXgpLnNldFZhbHVlKG5ld1ZhbHVlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlID0gYXR0cmlidXRl
QXQoaW5kZXgpOworICAgIFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZS5u
YW1lKCk7CiAgICAgQXRvbWljU3RyaW5nIG9sZFZhbHVlID0gYXR0cmlidXRlLnZhbHVlKCk7Ci0g
ICAgYm9vbCB2YWx1ZUNoYW5nZWQgPSBuZXdWYWx1ZSAhPSBvbGRWYWx1ZTsKLSAgICBRdWFsaWZp
ZWROYW1lIGF0dHJpYnV0ZU5hbWUgPSAoIWluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRl
IHx8IHZhbHVlQ2hhbmdlZCkgPyBhdHRyaWJ1dGUubmFtZSgpIDogbmFtZTsKIAotICAgIGlmICgh
aW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpCi0gICAgICAgIHdpbGxNb2RpZnlBdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICB3aWxsTW9kaWZ5
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAKLSAgICBpZiAo
dmFsdWVDaGFuZ2VkKSB7CisgICAgaWYgKG5ld1ZhbHVlICE9IG9sZFZhbHVlKSB7CiAgICAgICAg
IC8vIElmIHRoZXJlIGlzIGFuIEF0dHIgbm9kZSBob29rZWQgdG8gdGhpcyBhdHRyaWJ1dGUsIHRo
ZSBBdHRyOjpzZXRWYWx1ZSgpIGNhbGwgYmVsb3cKICAgICAgICAgLy8gd2lsbCB3cml0ZSBpbnRv
IHRoZSBFbGVtZW50RGF0YS4KICAgICAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgc28gaXQg
bWFrZXMgc29tZSBzZW5zZS4KLSAgICAgICAgaWYgKFJlZlB0cjxBdHRyPiBhdHRyTm9kZSA9IGlu
U3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlID8gbnVsbHB0ciA6IGF0dHJJZkV4aXN0cyhh
dHRyaWJ1dGVOYW1lKSkKKyAgICAgICAgaWYgKFJlZlB0cjxBdHRyPiBhdHRyTm9kZSA9IGF0dHJJ
ZkV4aXN0cyhhdHRyaWJ1dGVOYW1lKSkKICAgICAgICAgICAgIGF0dHJOb2RlLT5zZXRWYWx1ZShu
ZXdWYWx1ZSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTdHls
ZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBu
YW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogICAgICAgICAgICAgZW5zdXJlVW5pcXVlRWxlbWVu
dERhdGEoKS5hdHRyaWJ1dGVBdChpbmRleCkuc2V0VmFsdWUobmV3VmFsdWUpOworICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKCFpblN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSkKLSAg
ICAgICAgZGlkTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1
ZSk7CisgICAgZGlkTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCBuZXdW
YWx1ZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIG1ha2VJZEZvclN0eWxlUmVz
b2x1dGlvbihjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBib29sIGluUXVpcmtzTW9kZSkKQEAg
LTEyNjIsOSArMTI2Nyw2IEBAIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWEKIAogICAgIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9y
cygmbmFtZSwgdGhpcyk7CiAKLSAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgbm8gU3R5bGVS
ZXNvbHZlciwgd2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHRoaXMgYXR0cmlidXRlIGNoYW5nZSB3b24n
dCBhZmZlY3Qgc3R5bGUuCi0gICAgc2hvdWxkSW52YWxpZGF0ZVN0eWxlIHw9ICFzdHlsZVJlc29s
dmVyOwotCiAgICAgaWYgKHNob3VsZEludmFsaWRhdGVTdHlsZSkKICAgICAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYygpOwogCkBAIC0yMDQ0LDI3ICsyMDQ2LDM4IEBAIHZvaWQgRWxlbWVudDo6cmVt
b3ZlQXR0cmlidXRlSW50ZXJuYWwodW4KICAgICBRdWFsaWZpZWROYW1lIG5hbWUgPSBlbGVtZW50
RGF0YS5hdHRyaWJ1dGVBdChpbmRleCkubmFtZSgpOwogICAgIEF0b21pY1N0cmluZyB2YWx1ZUJl
aW5nUmVtb3ZlZCA9IGVsZW1lbnREYXRhLmF0dHJpYnV0ZUF0KGluZGV4KS52YWx1ZSgpOwogCi0g
ICAgaWYgKCFpblN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSkgewotICAgICAgICBpZiAo
IXZhbHVlQmVpbmdSZW1vdmVkLmlzTnVsbCgpKQotICAgICAgICAgICAgd2lsbE1vZGlmeUF0dHJp
YnV0ZShuYW1lLCB2YWx1ZUJlaW5nUmVtb3ZlZCwgbnVsbEF0b20pOwotICAgIH0KLQogICAgIGlm
IChSZWZQdHI8QXR0cj4gYXR0ck5vZGUgPSBhdHRySWZFeGlzdHMobmFtZSkpCiAgICAgICAgIGRl
dGFjaEF0dHJOb2RlRnJvbUVsZW1lbnRXaXRoVmFsdWUoYXR0ck5vZGUuZ2V0KCksIGVsZW1lbnRE
YXRhLmF0dHJpYnV0ZUF0KGluZGV4KS52YWx1ZSgpKTsKIAotICAgIGVsZW1lbnREYXRhLnJlbW92
ZUF0dHJpYnV0ZShpbmRleCk7CisgICAgaWYgKGluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmli
dXRlKSB7CisgICAgICAgIGVsZW1lbnREYXRhLnJlbW92ZUF0dHJpYnV0ZShpbmRleCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlQmVpbmdSZW1vdmVkLmlzTnVsbCgp
KQorICAgICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKG5hbWUsIHZhbHVlQmVpbmdSZW1vdmVkLCBu
dWxsQXRvbSk7CiAKLSAgICBpZiAoIWluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKQot
ICAgICAgICBkaWRSZW1vdmVBdHRyaWJ1dGUobmFtZSwgdmFsdWVCZWluZ1JlbW92ZWQpOworICAg
IHsKKyAgICAgICAgU3R5bGU6OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFs
aWRhdGlvbigqdGhpcywgbmFtZSwgdmFsdWVCZWluZ1JlbW92ZWQsIG51bGxBdG9tKTsKKyAgICAg
ICAgZWxlbWVudERhdGEucmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKKyAgICB9CisKKyAgICBkaWRS
ZW1vdmVBdHRyaWJ1dGUobmFtZSwgdmFsdWVCZWluZ1JlbW92ZWQpOwogfQogCiB2b2lkIEVsZW1l
bnQ6OmFkZEF0dHJpYnV0ZUludGVybmFsKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUsIFN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSBpblN5
bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSkKIHsKLSAgICBpZiAoIWluU3luY2hyb25pemF0
aW9uT2ZMYXp5QXR0cmlidXRlKQotICAgICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKG5hbWUsIG51
bGxBdG9tLCB2YWx1ZSk7Ci0gICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5hZGRBdHRyaWJ1
dGUobmFtZSwgdmFsdWUpOwotICAgIGlmICghaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1
dGUpCi0gICAgICAgIGRpZEFkZEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CisgICAgaWYgKGluU3lu
Y2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKSB7CisgICAgICAgIGVuc3VyZVVuaXF1ZUVsZW1l
bnREYXRhKCkuYWRkQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUobmFtZSwgbnVsbEF0b20sIHZhbHVlKTsKKyAg
ICB7CisgICAgICAgIFN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZh
bGlkYXRpb24oKnRoaXMsIG5hbWUsIG51bGxBdG9tLCB2YWx1ZSk7CisgICAgICAgIGVuc3VyZVVu
aXF1ZUVsZW1lbnREYXRhKCkuYWRkQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICB9CisgICAg
ZGlkQWRkQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogYm9vbCBFbGVtZW50OjpyZW1vdmVB
dHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQpAQCAtMjQ3OSw2ICsyNDkyLDE4IEBA
IFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKFBzZXUKICAgICByZXR1cm4gc3R5
bGU7CiB9CiAKK2Jvb2wgRWxlbWVudDo6bmVlZHNTdHlsZUludmFsaWRhdGlvbigpIGNvbnN0Cit7
CisgICAgaWYgKCFpblJlbmRlcmVkRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChzdHlsZUNoYW5nZVR5cGUoKSA+PSBGdWxsU3R5bGVDaGFuZ2UpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWRvY3VtZW50KCkuc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEVs
ZW1lbnQ6OnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkKIHsKICAgICBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKS5zZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSh0cnVlKTsKQEAgLTMwNzQsMTIgKzMwOTks
NiBAQCB2b2lkIEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUoY29uc3QgCiAgICAgICAgICAg
ICB1cGRhdGVMYWJlbCh0cmVlU2NvcGUoKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKICAgICB9CiAK
LSAgICBpZiAob2xkVmFsdWUgIT0gbmV3VmFsdWUpIHsKLSAgICAgICAgYXV0byBzdHlsZVJlc29s
dmVyID0gZG9jdW1lbnQoKS5zdHlsZVJlc29sdmVySWZFeGlzdHMoKTsKLSAgICAgICAgaWYgKHN0
eWxlUmVzb2x2ZXIgJiYgc3R5bGVSZXNvbHZlci0+aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoKnRo
aXMsIG5hbWUubG9jYWxOYW1lKCkpKQotICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygp
OwotICAgIH0KLQogICAgIGlmIChzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXA+IHJlY2lwaWVudHMgPSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3Jl
YXRlRm9yQXR0cmlidXRlc011dGF0aW9uKCp0aGlzLCBuYW1lKSkKICAgICAgICAgcmVjaXBpZW50
cy0+ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKE11dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVz
KCp0aGlzLCBuYW1lLCBvbGRWYWx1ZSkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlz
aW9uIDE5NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3OSw2ICsyNzksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlbmRlclN0eWxl
KiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pIG92ZXJyaWRlOwogCisgICAgYm9v
bCBuZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkgY29uc3Q7CisKICAgICAvLyBNZXRob2RzIGZvciBp
bmRpY2F0aW5nIHRoZSBzdHlsZSBpcyBhZmZlY3RlZCBieSBkeW5hbWljIHVwZGF0ZXMgKGUuZy4s
IGNoaWxkcmVuIGNoYW5naW5nLCBvdXIgcG9zaXRpb24gY2hhbmdpbmcgaW4gb3VyIHNpYmxpbmcg
bGlzdCwgZXRjLikKICAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QgeyByZXR1
cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUVtcHR5KCk7IH0KICAg
ICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhD
aGlsZHJlbkFmZmVjdGVkQnlIb3ZlclJ1bGVzRmxhZyk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCIK
KworI2luY2x1ZGUgIkRvY3VtZW50UnVsZVNldHMuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCisjaW5jbHVkZSAiU3R5bGVJbnZh
bGlkYXRpb25BbmFseXNpcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5
bGUgeworCit2b2lkIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZVN0eWxl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCit7CisgICAgaWYgKG5ld1Zh
bHVlID09IG9sZFZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBydWxlU2V0cyA9
IG1fZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICBib29sIGlzSFRNTCA9
IG1fZWxlbWVudC5pc0hUTUxFbGVtZW50KCk7CisKKyAgICBhdXRvJiBuYW1lU2V0ID0gaXNIVE1M
ID8gcnVsZVNldHMuZmVhdHVyZXMoKS5hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWVzSW5SdWxl
cyA6IHJ1bGVTZXRzLmZlYXR1cmVzKCkuYXR0cmlidXRlTG9jYWxOYW1lc0luUnVsZXM7CisgICAg
Ym9vbCBzaG91bGRJbnZhbGlkYXRlID0gbmFtZVNldC5jb250YWlucyhhdHRyaWJ1dGVOYW1lLmxv
Y2FsTmFtZSgpLmltcGwoKSk7CisgICAgaWYgKCFzaG91bGRJbnZhbGlkYXRlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIWlzSFRNTCkgeworICAgICAgICBtX2VsZW1lbnQuc2V0TmVlZHNT
dHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKG1fZWxlbWVudC5zaGFkb3dSb290KCkgJiYgcnVsZVNldHMuYXV0aG9yU3R5bGUoKS0+
aGFzU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKCkpIHsKKyAgICAgICAgbV9lbGVtZW50LnNldE5l
ZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fZWxlbWVudC5zZXROZWVkc1N0eWxlUmVjYWxjKElubGluZVN0eWxlQ2hhbmdlKTsK
KworICAgIGlmICghY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4obV9lbGVtZW50KS5maXJzdCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBhdHRyaWJ1dGVSdWxlcyA9IHJ1bGVTZXRzLmFu
Y2VzdG9yQXR0cmlidXRlUnVsZXNGb3JIVE1MKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkuaW1w
bCgpKTsKKyAgICBpZiAoIWF0dHJpYnV0ZVJ1bGVzKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBDaGVjayBpZiBkZXNjZW5kYW50cyBtYXkgYmUgYWZmZWN0ZWQgYnkgdGhpcyBhdHRyaWJ1dGUg
Y2hhbmdlLgorICAgIGZvciAoYXV0byogc2VsZWN0b3IgOiBhdHRyaWJ1dGVSdWxlcy0+YXR0cmli
dXRlU2VsZWN0b3JzKSB7CisgICAgICAgIGJvb2wgb2xkTWF0Y2hlcyA9IG9sZFZhbHVlLmlzTnVs
bCgpID8gZmFsc2UgOiBTZWxlY3RvckNoZWNrZXI6OmF0dHJpYnV0ZVNlbGVjdG9yTWF0Y2hlcyht
X2VsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCAqc2VsZWN0b3IpOworICAgICAgICBi
b29sIG5ld01hdGNoZXMgPSBuZXdWYWx1ZS5pc051bGwoKSA/IGZhbHNlIDogU2VsZWN0b3JDaGVj
a2VyOjphdHRyaWJ1dGVTZWxlY3Rvck1hdGNoZXMobV9lbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBu
ZXdWYWx1ZSwgKnNlbGVjdG9yKTsKKworICAgICAgICBpZiAob2xkTWF0Y2hlcyAhPSBuZXdNYXRj
aGVzKSB7CisgICAgICAgICAgICBtX2Rlc2NlbmRhbnRJbnZhbGlkYXRpb25SdWxlU2V0ID0gYXR0
cmlidXRlUnVsZXMtPnJ1bGVTZXQuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3ZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlk
YXRlRGVzY2VuZGFudHMoKQoreworICAgIGlmICghbV9kZXNjZW5kYW50SW52YWxpZGF0aW9uUnVs
ZVNldCkKKyAgICAgICAgcmV0dXJuOworICAgIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMgaW52
YWxpZGF0aW9uQW5hbHlzaXMoKm1fZGVzY2VuZGFudEludmFsaWRhdGlvblJ1bGVTZXQpOworICAg
IGludmFsaWRhdGlvbkFuYWx5c2lzLmludmFsaWRhdGVTdHlsZShtX2VsZW1lbnQpOworfQorCit9
Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJ
bnZhbGlkYXRpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJp
YnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbl9oCisjZGVm
aW5lIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbl9oCisKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3Vt
ZW50UnVsZVNldHM7CitjbGFzcyBTcGFjZVNwbGl0U3RyaW5nOworCituYW1lc3BhY2UgU3R5bGUg
eworCitjbGFzcyBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24geworcHVibGljOgorICAgIEF0
dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbihFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFs
dWUpOworICAgIH5BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24oKTsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIGludmFsaWRhdGVTdHlsZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSk7CisgICAgdm9p
ZCBpbnZhbGlkYXRlRGVzY2VuZGFudHMoKTsKKworICAgIGNvbnN0IGJvb2wgbV9pc0VuYWJsZWQ7
CisgICAgRWxlbWVudCYgbV9lbGVtZW50OworCisgICAgUnVsZVNldCogbV9kZXNjZW5kYW50SW52
YWxpZGF0aW9uUnVsZVNldCB7IG51bGxwdHIgfTsKK307CisKK2lubGluZSBBdHRyaWJ1dGVDaGFu
Z2VJbnZhbGlkYXRpb246OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbihFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQorICAgIDogbV9pc0Vu
YWJsZWQoZWxlbWVudC5uZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkpCisgICAgLCBtX2VsZW1lbnQo
ZWxlbWVudCkKK3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQorICAgICAgICByZXR1cm47CisgICAg
aW52YWxpZGF0ZVN0eWxlKGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CisgICAg
aW52YWxpZGF0ZURlc2NlbmRhbnRzKCk7Cit9CisKK2lubGluZSBBdHRyaWJ1dGVDaGFuZ2VJbnZh
bGlkYXRpb246On5BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24oKQoreworICAgIGlmICghbV9p
c0VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbnZhbGlkYXRlRGVzY2VuZGFudHMoKTsK
K30KKyAgICAKK30KK30KKworI2VuZGlmCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5
bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAkocmV2aXNpb24gMTk2NTYwKQorKysgU291cmNl
L1dlYkNvcmUvc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNyArNDYsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHVzaW5nIENsYXNzQ2hhbmdl
VmVjdG9yID0gVmVjdG9yPEF0b21pY1N0cmluZ0ltcGwqLCA0PjsKIAotICAgIHN0YXRpYyBib29s
IG5lZWRzSW52YWxpZGF0aW9uKGNvbnN0IEVsZW1lbnQmKTsKICAgICB2b2lkIGNvbXB1dGVDbGFz
c0NoYW5nZShjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzLCBjb25zdCBTcGFjZVNw
bGl0U3RyaW5nJiBuZXdDbGFzc2VzKTsKICAgICB2b2lkIGludmFsaWRhdGVTdHlsZShjb25zdCBD
bGFzc0NoYW5nZVZlY3RvciYpOwogCkBAIC01OSwxOSArNTgsOCBAQCBwcml2YXRlOgogICAgIENs
YXNzQ2hhbmdlVmVjdG9yIG1fcmVtb3ZlZENsYXNzZXM7CiB9OwogCi1pbmxpbmUgYm9vbCBDbGFz
c0NoYW5nZUludmFsaWRhdGlvbjo6bmVlZHNJbnZhbGlkYXRpb24oY29uc3QgRWxlbWVudCYgZWxl
bWVudCkKLXsKLSAgICBpZiAoIWVsZW1lbnQuaW5SZW5kZXJlZERvY3VtZW50KCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoZWxlbWVudC5zdHlsZUNoYW5nZVR5cGUoKSA+PSBGdWxs
U3R5bGVDaGFuZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWVsZW1lbnQuZG9j
dW1lbnQoKS5zdHlsZVJlc29sdmVySWZFeGlzdHMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiB0cnVlOwotfQotCiBpbmxpbmUgQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OkNs
YXNzQ2hhbmdlSW52YWxpZGF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFNwYWNlU3BsaXRT
dHJpbmcmIG9sZENsYXNzZXMsIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG5ld0NsYXNzZXMpCi0g
ICAgOiBtX2lzRW5hYmxlZChuZWVkc0ludmFsaWRhdGlvbihlbGVtZW50KSkKKyAgICA6IG1faXNF
bmFibGVkKGVsZW1lbnQubmVlZHNTdHlsZUludmFsaWRhdGlvbigpKQogICAgICwgbV9lbGVtZW50
KGVsZW1lbnQpCiAKIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjU4OSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTAyLTE1ICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBzdHls
ZSBpbnZhbGlkYXRpb25zIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3JzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyNDIKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0
aW9uLWF0dHJpYnV0ZS1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24tYXR0cmlidXRlLWNoYW5nZS1kZXNj
ZW5kYW50cy5odG1sOiBBZGRlZC4KKwogMjAxNi0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjE5NjU2Myk6IEl0IGlzIG5vIGxvbmdl
ciBwb3NzaWJsZSB0byBjYWxsIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyIHdpdGhvdXQgYW4gZXhw
bGljaXQgJ3RoaXMnCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRp
b24tYXR0cmlidXRlLWNoYW5nZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFu
Z2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFuZ2UtZGVzY2VuZGFudHMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQ5IEBACitUZXN0IHRoYXQg
d2UgaW52YWxpZGF0ZSB0aGUgZWxlbWVudCBzdWJ0cmVlIG1pbmltYWxseSBvbiBjbGFzcyBhdHRy
aWJ1dGUgY2hhbmdlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGhhc0V4
cGVjdGVkU3R5bGUgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5v
U3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxl
Q2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9T
dHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAi
Tm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitT
ZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VU
eXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290
IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCJ0YXJnZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNo
YW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVj
dGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ2ZvbycK
K1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BB
U1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVl
CitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0
cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215
YXR0cicgdmFsdWUgJ3ZhbHVlMicKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJO
b1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHls
ZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklu
bGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVy
dCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRy
dWUKK1NldHRpbmcgYXR0cmlidXRlICdteWF0dHInIHZhbHVlICdmb28nCitQQVNTIHRlc3RTdHls
ZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5
cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNo
YW5nZVR5cGUoInRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1Mg
aGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitSZW1vdmluZyBhdHRyaWJ1dGUgJ215YXR0cicKK1BB
U1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0
eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1Mg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1
ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMg
dHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdt
eWF0dHInIHZhbHVlICd2YWx1ZTMnCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAi
Tm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5
bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJ
bmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5l
cnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0
cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnZHVtbXkgdmFsdWUzJworUEFT
UyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5
bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0
ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BB
U1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUK
K1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRy
JyB2YWx1ZSAndmFsdWU0LWZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJO
b1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHls
ZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklu
bGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVy
dCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRy
dWUKK1NldHRpbmcgYXR0cmlidXRlICdteWF0dHInIHZhbHVlICd2YWx1ZTQtZm9vYmFyJworUEFT
UyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5
bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0
ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BB
U1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUK
K1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRy
JyB2YWx1ZSAnZHVtbXkgdmFsdWU0LWZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9v
dCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxp
bmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0
IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxl
IGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdteWF0dHInIHZhbHVlICd2YWx1ZTVmb28nCitQ
QVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RT
dHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNT
IHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRy
dWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlz
IHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAn
bXlhdHRyJyB2YWx1ZSAndmFsdWU1Zm9vYmFyJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJy
b290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklu
bGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJn
ZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgi
aW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBp
cyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnZm9vdmFsdWU1JworUEFT
UyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5
bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0
ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVl
CitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0
cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215
YXR0cicgdmFsdWUgJ2Zvb3ZhbHVlNicKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIs
ICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVT
dHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0Iiwg
IklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJp
bmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlz
IHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdteUF0dHInIHZhbHVlICdmb29iYXJ2YWx1ZTYnCitQ
QVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RT
dHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNT
IHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQor
UEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1
ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdNWUFU
VFInIHZhbHVlICd2YWx1ZTZmb28nCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAi
Tm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5
bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJ
bmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5l
cnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0
cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAndmFsdWU3JworUEFTUyB0ZXN0
U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFu
Z2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5
bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNT
IHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQ
QVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicg
dmFsdWUgJ3ZhbHVlN2ZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0
eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNo
YW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5
bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5v
U3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0
dGluZyBhdHRyaWJ1dGUgJ215QVRUUicgdmFsdWUgJ2Zvb3ZhbHVlN2ZvbycKK1BBU1MgdGVzdFN0
eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxl
Q2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RT
dHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhh
c0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUg
J1ZBTFVFN2ZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hh
bmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIp
IGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxl
Q2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0
eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRp
bmcgYXR0cmlidXRlICdteWF0dHInIHZhbHVlICdWYWx1ZTgnCitQQVNTIHRlc3RTdHlsZUNoYW5n
ZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJv
b3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5
cGUoInRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxl
Q2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhw
ZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAndmFs
dWU4Zm9vJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2Ui
KSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMg
dHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIp
IGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5n
ZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJp
YnV0ZSAnbXlBVFRSJyB2YWx1ZSAnRk9PVkFMdWU4Zm9vJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VU
eXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290
IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRT
dHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnVkFMVUU4Zm9v
JworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0
ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQor
UEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRy
dWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlz
IHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAn
bXlhdHRyJyB2YWx1ZSAnVkFMVUUgOGZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9v
dCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxp
bmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0
IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBl
KCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxl
IGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdteWF0dHIyJyB2YWx1ZSAnJworUEFTUyB0ZXN0
U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFu
Z2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5
bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1Mg
aGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyMicgdmFs
dWUgJ2ZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdl
IikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlz
IHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2Ui
KSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFu
Z2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRlc2NlbmRhbnRz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0
aW9uLWF0dHJpYnV0ZS1jaGFuZ2UtZGVzY2VuZGFudHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRl
c2NlbmRhbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNDIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorKiB7CisgICAgY29sb3I6IGJsYWNrOwor
fQorW215YXR0cl0gdGFyZ2V0IHsKKyAgICBjb2xvcjogcmdiKDEsIDAsIDApOworfQorCitbbXlh
dHRyPXZhbHVlMl0gPiBpbmVydCB0YXJnZXQgeworICAgIGNvbG9yOiByZ2IoMiwgMCwgMCk7Cit9
CisKK1tteWF0dHJ+PXZhbHVlM10gaW5lcnQgKyB0YXJnZXQgeworICAgIGNvbG9yOiByZ2IoMywg
MCwgMCk7Cit9CisKK1tNWUFUVFJ8PXZhbHVlNF0gaW5lcnQgfiB0YXJnZXQgeworICAgIGNvbG9y
OiByZ2IoNCwgMCwgMCk7Cit9CisKK1tteUF0dHJePXZhbHVlNV0gdGFyZ2V0IHsKKyAgICBjb2xv
cjogcmdiKDUsIDAsIDApOworfQorCitbbXlhdHRyJD12YWx1ZTZdIHRhcmdldCB7CisgICAgY29s
b3I6IHJnYig2LCAwLCAwKTsKK30KKworW215QVRUUio9dmFsdWU3XSB0YXJnZXQgeworICAgIGNv
bG9yOiByZ2IoNywgMCwgMCk7Cit9CisKK1tteWF0dHIqPXZhTFVFOCBpXSB0YXJnZXQgeworICAg
IGNvbG9yOiByZ2IoOCwgMCwgMCk7Cit9CisKK1tteWF0dHIyXSA+IHRhcmdldCB7CisgICAgY29s
b3I6IHJnYig5LCAwLCAwKTsKK30KKworPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxy
b290PgorICAgICAgICA8IS0tIFdpdGggcmVuZGVyZXIgLS0+CisgICAgICAgIDxpbmVydD4KKyAg
ICAgICAgICAgIDxpbmVydD4KKyAgICAgICAgICAgICAgICA8aW5lcnQ+PC9pbmVydD4KKyAgICAg
ICAgICAgICAgICA8dGFyZ2V0PgorICAgICAgICAgICAgICAgICAgICA8aW5lcnQ+PC9pbmVydD4K
KyAgICAgICAgICAgICAgICAgICAgPHRhcmdldD48L3RhcmdldD4KKyAgICAgICAgICAgICAgICA8
L3RhcmdldD4KKyAgICAgICAgICAgIDwvaW5lcnQ+CisgICAgICAgICAgICA8dGFyZ2V0PjwvdGFy
Z2V0PgorICAgICAgICAgICAgPGluZXJ0PjwvaW5lcnQ+CisgICAgICAgIDwvaW5lcnQ+CisgICAg
PC9yb290PgorICAgIDxyb290IHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KKyAgICAgICAgPCEtLSBX
aXRob3V0IHJlbmRlcmVyIC0tPgorICAgICAgICA8aW5lcnQ+CisgICAgICAgICAgICA8aW5lcnQ+
CisgICAgICAgICAgICAgICAgPGluZXJ0PjwvaW5lcnQ+CisgICAgICAgICAgICAgICAgPHRhcmdl
dD4KKyAgICAgICAgICAgICAgICAgICAgPGluZXJ0PjwvaW5lcnQ+CisgICAgICAgICAgICAgICAg
ICAgIDx0YXJnZXQ+PC90YXJnZXQ+CisgICAgICAgICAgICAgICAgPC90YXJnZXQ+CisgICAgICAg
ICAgICA8L2luZXJ0PgorICAgICAgICAgICAgPHRhcmdldD48L3RhcmdldD4KKyAgICAgICAgICAg
IDxpbmVydD48L2luZXJ0PgorICAgICAgICA8L2luZXJ0PgorICAgIDwvcm9vdD4KKzwvYm9keT4K
KzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgZWxl
bWVudCBzdWJ0cmVlIG1pbmltYWxseSBvbiBjbGFzcyBhdHRyaWJ1dGUgY2hhbmdlJyk7CisKK2Z1
bmN0aW9uIHRlc3RTdHlsZUNoYW5nZVR5cGUodGFnLCB0eXBlKQoreworICAgIHZhciBlbGVtZW50
cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodGFnKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGVsZW1lbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
LnN0eWxlQ2hhbmdlVHlwZShlbGVtZW50c1tpXSkgIT0gdHlwZSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHRlc3RTdHls
ZUludmFsaWRhdGlvbihleHBlY3RlZERlc2NlbmRhbnRTdHlsZUNoYW5nZSkgeworICAgIC8vIElk
ZWFsbHkgd2Ugd291bGQndCBpbnZhbGlkYXRlIHRoZSByb290IGF0IGFsbC4KKyAgICBzaG91bGRC
ZVRydWUoJ3Rlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRl
c3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKScpOworCisgICAg
c2hvdWxkQmVUcnVlKCd0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiJyArIGV4cGVjdGVk
RGVzY2VuZGFudFN0eWxlQ2hhbmdlICsnIiknKTsKKworICAgIHNob3VsZEJlVHJ1ZSgndGVzdFN0
eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpJyk7Cit9CisKK2Z1bmN0aW9u
IHNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkgeworICAgIGRlYnVnKCJTZXR0aW5nIGF0dHJpYnV0
ZSAnIiArIG5hbWUgKyAiJyB2YWx1ZSAnIiArIHZhbHVlICsgIiciKTsKKyAgICB2YXIgYWxsUm9v
dHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJyb290Iik7CisgICAgYWxsUm9vdHNbMF0u
c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICBhbGxSb290c1sxXS5zZXRBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOworfQorCitmdW5jdGlvbiByZW1vdmVBdHRyaWJ1dGUobmFtZSkgeworICAg
IGRlYnVnKCJSZW1vdmluZyBhdHRyaWJ1dGUgJyIgKyBuYW1lICsgIiciKTsKKyAgICB2YXIgYWxs
Um9vdHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJyb290Iik7CisgICAgYWxsUm9vdHNb
MF0ucmVtb3ZlQXR0cmlidXRlKG5hbWUpOworICAgIGFsbFJvb3RzWzFdLnJlbW92ZUF0dHJpYnV0
ZShuYW1lKTsKK30KKworZnVuY3Rpb24gY2hlY2tTdHlsZShuKSB7CisgICAgZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50Lm9mZnNldFRvcDsKKworICAgIGhhc0V4cGVjdGVkU3R5bGUgPSB0cnVlOwor
ICAgIGV4cGVjdGVkQ29sb3IgPSAncmdiKCcrbisnLCAwLCAwKSc7CisgICAgdmFyIHRhcmdldHMg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJ0YXJnZXQiKTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRhcmdldHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaGFzRXhwZWN0ZWRTdHlsZSA9
IGdldENvbXB1dGVkU3R5bGUodGFyZ2V0c1tpXSkuY29sb3IgPT0gZXhwZWN0ZWRDb2xvcjsKKyAg
ICAgICAgaWYgKCFoYXNFeHBlY3RlZFN0eWxlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIHNob3VsZEJlVHJ1ZSgiaGFzRXhwZWN0ZWRTdHlsZSIpOworfQorCitjaGVja1N0eWxlKDAp
OwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDAp
OworCitzZXRBdHRyaWJ1dGUoJ215YXR0cicsICcnKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigi
SW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoMSk7CisKK3NldEF0dHJpYnV0ZSgnbXlh
dHRyJywgJ2ZvbycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7Citj
aGVja1N0eWxlKDEpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0cicsICd2YWx1ZTInKTsKK3Rlc3RT
dHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoMik7CisK
K3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ2ZvbycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJ
bmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSgxKTsKKworcmVtb3ZlQXR0cmlidXRlKCdt
eWF0dHInKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2No
ZWNrU3R5bGUoMCk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3ZhbHVlMycpOwordGVzdFN0
eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSgzKTsKKwor
c2V0QXR0cmlidXRlKCdteWF0dHInLCAnZHVtbXkgdmFsdWUzJyk7Cit0ZXN0U3R5bGVJbnZhbGlk
YXRpb24oIk5vU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoMyk7CisKK3NldEF0dHJpYnV0ZSgn
bXlhdHRyJywgJ3ZhbHVlNC1mb28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5
bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoNCk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3Zh
bHVlNC1mb29iYXInKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5nZSIpOwor
Y2hlY2tTdHlsZSg0KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAnZHVtbXkgdmFsdWU0LWZv
bycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tT
dHlsZSgxKTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAndmFsdWU1Zm9vJyk7Cit0ZXN0U3R5
bGVJbnZhbGlkYXRpb24oIklubGluZVN0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDUpOworCitz
ZXRBdHRyaWJ1dGUoJ215YXR0cicsICd2YWx1ZTVmb29iYXInKTsKK3Rlc3RTdHlsZUludmFsaWRh
dGlvbigiTm9TdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSg1KTsKKworc2V0QXR0cmlidXRlKCdt
eWF0dHInLCAnZm9vdmFsdWU1Jyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIklubGluZVN0eWxl
Q2hhbmdlIik7CitjaGVja1N0eWxlKDEpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0cicsICdmb292
YWx1ZTYnKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2No
ZWNrU3R5bGUoNik7CisKK3NldEF0dHJpYnV0ZSgnbXlBdHRyJywgJ2Zvb2JhcnZhbHVlNicpOwor
dGVzdFN0eWxlSW52YWxpZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDYpOwor
CitzZXRBdHRyaWJ1dGUoJ01ZQVRUUicsICd2YWx1ZTZmb28nKTsKK3Rlc3RTdHlsZUludmFsaWRh
dGlvbigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoMSk7CisKK3NldEF0dHJpYnV0
ZSgnbXlhdHRyJywgJ3ZhbHVlNycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHls
ZUNoYW5nZSIpOworY2hlY2tTdHlsZSg3KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAndmFs
dWU3Zm9vJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIk5vU3R5bGVDaGFuZ2UiKTsKK2NoZWNr
U3R5bGUoNyk7CisKK3NldEF0dHJpYnV0ZSgnbXlBVFRSJywgJ2Zvb3ZhbHVlN2ZvbycpOwordGVz
dFN0eWxlSW52YWxpZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDcpOworCitz
ZXRBdHRyaWJ1dGUoJ215YXR0cicsICdWQUxVRTdmb28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlv
bigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoMSk7CisKK3NldEF0dHJpYnV0ZSgn
bXlhdHRyJywgJ1ZhbHVlOCcpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNo
YW5nZSIpOworY2hlY2tTdHlsZSg4KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAndmFsdWU4
Zm9vJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIk5vU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5
bGUoOCk7CisKK3NldEF0dHJpYnV0ZSgnbXlBVFRSJywgJ0ZPT1ZBTHVlOGZvbycpOwordGVzdFN0
eWxlSW52YWxpZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDgpOworCitzZXRB
dHRyaWJ1dGUoJ215YXR0cicsICdWQUxVRThmb28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigi
Tm9TdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSg4KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHIn
LCAnVkFMVUUgOGZvbycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5n
ZSIpOworY2hlY2tTdHlsZSgxKTsKKworc2V0QXR0cmlidXRlKCdteWF0dHIyJywgJycpOwordGVz
dFN0eWxlSW52YWxpZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDEpOworCitz
ZXRBdHRyaWJ1dGUoJ215YXR0cjInLCAnZm9vJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIk5v
U3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoMSk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271361</attachid>
            <date>2016-02-15 12:57:08 -0800</date>
            <delta_ts>2016-02-15 12:57:08 -0800</delta_ts>
            <desc>for landing</desc>
            <filename>attribute-invalidation-11.patch</filename>
            <type>text/plain</type>
            <size>53349</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjU4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDE2LTAyLTE1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBzdHlsZSBpbnZh
bGlkYXRpb25zIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyNDIKKworICAgICAgICBSZXZpZXdlZCBieSBB
bmRyZWFzIEtsaW5nLgorCisgICAgICAgIEN1cnJlbnRseSB3ZSBpbnZhbGlkYXRlIHRoZSB3aG9s
ZSBlbGVtZW50IHN1YnRyZWUgaWYgdGhlcmUgYXJlIGFueSBhdHRyaWJ1dGUgc2VsZWN0b3JzIGZv
ciB0aGUgY2hhbmdlZCBhdHRyaWJ1dGUuCisgICAgICAgIFRoaXMgaXMgc2xvdyBhcyBnZW5lcmFs
bHkgZmV3IGlmIGFueSBlbGVtZW50cyBhcmUgcmVhbGx5IGFmZmVjdGVkLiBVc2luZyBhdHRyaWJ1
dGUgc2VsZWN0b3JzIGZvciBkeW5hbWljIHN0eWxpbmcKKyAgICAgICAgc2hvdWxkIGJlIHBlcmZv
cm1hbnQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIG9wdGltaXphdGlvbiBzdHJh
dGVneSBmb3IgYXR0cmlidXRlcyBzaW1pbGFyIHRvIHdoYXQgd2UgYWxyZWFkeSBoYXZlIGZvciBj
bGFzc2VzOgorCisgICAgICAgIC0gQ29sbGVjdCBhIG1hcCBvZiBhbGwgcnVsZXMgdGhhdCBjb250
YWlucyBkZXNjZW5kYW50LWFmZmVjdGluZyBhdHRyaWJ1dGUgc2VsZWN0b3JzIGZvciBhIGdpdmVu
IGF0dHJpYnV0ZS4KKyAgICAgICAgLSBXaGVuIGFuIGF0dHJpYnV0ZSB2YWx1ZSBjaGFuZ2VzIGNo
ZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3VjaCBydWxlcyBmb3IgaXQuCisgICAgICAgIC0gQ2hlY2sg
aWYgdGhlIHZhbHVlIGNoYW5nZSBhZmZlY3RzIHRoZSByZXN1bHRzIG9mIGFueSBvZiB0aGUgYXR0
cmlidXRlIHNlbGVjdG9ycy4KKyAgICAgICAgLSBPbmx5IGlmIGl0IGRvZXMgaW52YWxpZGF0ZSB0
aGUgZXhhY3QgZGVzY2VuZGFudCBlbGVtZW50cyBhZmZlY3RlZCBieSB0aGUgcnVsZXMuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFuZ2Ut
ZGVzY2VuZGFudHMuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmFuY2VzdG9yQ2xhc3NSdWxlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjphbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRNTCk6
CisKKyAgICAgICAgICAgIENyZWF0ZSBvcHRpbWl6YXRpb24gUnVsZVNldHMgd2hlbiBuZWVkZWQu
CisKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5oOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6dW5jb21tb25BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRSdWxlU2V0czo6ZmVhdHVyZXMpOgorICAgICAgICAqIGNzcy9SdWxlRmVhdHVyZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6cmVjdXJzaXZlbHlDb2xsZWN0
RmVhdHVyZXNGcm9tU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUF0dHJpYnV0ZVNl
bGVjdG9yS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVh
dHVyZXMpOgorCisgICAgICAgICAgICBDb2xsZWN0IHJ1bGVzIHdpdGggZGVzY2VuZGFudCBhZmZl
Y3RpbmcgYXR0cmlidXRlIHNlbGVjdG9ycy4KKworICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1
cmVTZXQ6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlRmVhdHVyZVNldDo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1cmVTZXQ6OnNocmlua1RvRml0KToKKyAgICAgICAg
KiBjc3MvUnVsZUZlYXR1cmUuaDoKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFueUF0dHJpYnV0ZU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDaGVja2VyOjphdHRyaWJ1dGVTZWxlY3Rvck1hdGNoZXMpOgorCisgICAgICAg
ICAgICBFeHBvc2UgZnVuY3Rpb24gZm9yIG1hdGNoaW5nIHNpbmdsZSBhdHRyaWJ1dGUgc2VsZWN0
b3JzLgorCisgICAgICAgIChXZWJDb3JlOjpjYW5NYXRjaEhvdmVyT3JBY3RpdmVJblF1aXJrc01v
ZGUpOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKiBkb20vQXR0
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBdHRyOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZUludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1ha2VJZEZvclN0eWxlUmVzb2x1dGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OnJlbW92ZUF0dHJpYnV0ZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFk
ZEF0dHJpYnV0ZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0
dHJpYnV0ZSk6CisKKyAgICAgICAgICAgIEFkZCBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24g
d2hlcmUgbmVlZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpuZWVkc1N0eWxlSW52
YWxpZGF0aW9uKToKKworICAgICAgICAgICAgTW92ZSB0byBFbGVtZW50IGZyb20gQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uCisKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndpbGxNb2RpZnlB
dHRyaWJ1dGUpOgorCisgICAgICAgICAgICBObyBtb3JlIGZ1bGwgc3R5bGUgaW52YWxpZGF0aW9u
IG9uIGF0dHJpYnV0ZSBjaGFuZ2UuCisKKyAgICAgICAgKiBzdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJ
bnZhbGlkYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1
dGVDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZSk6CisKKyAgICAgICAgICAgIElu
dmFsaWRhdGUgbG9jYWwgc3R5bGUuCisgICAgICAgICAgICBDaGVjayBpZiB3ZSBuZWVkIHRvIGlu
dmFsaWRhdGUgZGVzY2VuZGFudHMgYnkgbG9va2luZyBpbnRvIGFuY2VzdG9yQXR0cmlidXRlUnVs
ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRp
b246OmludmFsaWRhdGVEZXNjZW5kYW50cyk6CisKKyAgICAgICAgICAgIFVzZSBTdHlsZUludmFs
aWRhdGlvbkFuYWx5c2lzIHRvIGludmFsaWRhdGUgdGhlIHN1YnRyZWUgZm9yIHRoZSByZWxldmFu
dCBydWxlcy4KKworICAgICAgICAqIHN0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlk
YXRpb246Om5lZWRzSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRy
aWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjp+QXR0
cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uKToKKworICAgICAgICAgICAgSWYgbmVlZGVkLCBpbnZh
bGlkYXRlIGRlc2NlbmRhbnRzIGJlZm9yZSBhbmQgYWZ0ZXIgYXR0cmlidXRlIGNoYW5nZSB0byBj
YXRjaCBydWxlcyB0aGF0IHN0YXJ0IGFuZCBzdG9wIGFwcGx5aW5nLgorCiAyMDE2LTAyLTE1ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbihyMTk2
NTYzKTogSXQgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIGNhbGwgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIgd2l0aG91dCBhbiBleHBsaWNpdCAndGhpcycKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxOTY1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMjYyNCw2ICsyNjI0LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKICAgICBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHAKIAorICAgIHN0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKICAg
ICBzdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKICAgICBzdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuY3BwCiAgICAgc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lv
biAxOTY1NjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTI1Myw2ICsxOTI1Myw3IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxzdG9yYWdlXFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cc3RvcmFnZVxTdG9yYWdlTWFwLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHN0b3JhZ2VcU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHN0eWxlXEF0dHJpYnV0ZUNoYW5nZUlu
dmFsaWRhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxzdHlsZVxDbGFz
c0NoYW5nZUludmFsaWRhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxz
dHlsZVxJbmxpbmVUZXh0Qm94U3R5bGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cc3R5bGVcUmVuZGVyVHJlZVBvc2l0aW9uLmNwcCIgLz4KQEAgLTIyODIxLDYgKzIyODIyLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHN0b3JhZ2VcU3RvcmFnZU1hcC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3RvcmFnZVxTdG9yYWdlTmFtZXNwYWNlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxzdG9yYWdlXFN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cc3R5bGVcQXR0cmlidXRlQ2hh
bmdlSW52YWxpZGF0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxzdHlsZVxD
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
c3R5bGVcSW5saW5lVGV4dEJveFN0eWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxzdHlsZVxSZW5kZXJUcmVlUG9zaXRpb24uaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5NjU2MCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNjYyMyw2ICs2NjIzLDggQEAKIAkJRTRBMDA3ODUxQjgyMEVEMzAwMkM1
QTZFIC8qIERhdGFVUkxEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0QTAwNzg0MUI4MjBFRDMwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rl
ci5jcHAgKi87IH07CiAJCUU0QTgxNEQ0MUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRBODE0RDMxQzZERUM0MDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgg
Ki87IH07CiAJCUU0QTgxNEQ2MUM2REVFOEQwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRh
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NEE4MTRENTFDNkRFRThEMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICov
OyB9OworCQlFNEE4MTREODFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0QTgxNEQ3MUM3MEUxMDUwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24u
Y3BwICovOyB9OworCQlFNEE4MTREQTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdl
SW52YWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0
aW9uLmggKi87IH07CiAJCUU0QUU3QzE2MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUU3
QzE1MTdEMUJCOTUwMDA5RkIzMSAvKiBFbGVtZW50SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEFFN0MxQTE3RDIzMjM1MDAwOUZC
MzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUU3QzE5MTdEMjMyMzUwMDA5RkIzMSAvKiBFbGVtZW50
QW5jZXN0b3JJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUU0QUZDRkE1MERBRjI5QTMwMEY1RjU1QyAvKiBVbml0QmV6aWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFGQ0ZBNDBEQUYy
OUEzMDBGNUY1NUMgLyogVW5pdEJlemllci5oICovOyB9OwpAQCAtMTQ2MTMsNiArMTQ2MTUsOCBA
QAogCQlFNEEwMDc4NDFCODIwRUQzMDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YVVSTERlY29kZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEE4MTREMzFDNkRFQzQwMDBCRjg1QUMgLyogQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTRBODE0RDUxQzZERUU4RDAwQkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTRBODE0RDcxQzcwRTEwNTAw
QkY4NUFDIC8qIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyog
QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNEFFN0MxNTE3RDFCQjk1MDAwOUZCMzEgLyogRWxlbWVudEl0ZXJhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRJdGVyYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEFFN0MxOTE3RDIzMjM1MDAwOUZCMzEgLyogRWxl
bWVudEFuY2VzdG9ySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTRBRkNGQTQwREFGMjlBMzAwRjVGNTVDIC8qIFVuaXRCZXppZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVW5pdEJlemllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjMzOTAsNiArMjMzOTQsOCBAQAogCQlFNDc2M0Q0QTE3QjI3MDQ5MDBEMzUyMDYgLyog
c3R5bGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUU0
QTgxNEQ3MUM3MEUxMDUwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3Bw
ICovLAorCQkJCUU0QTgxNEQ5MUM3MEUxMEQwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZh
bGlkYXRpb24uaCAqLywKIAkJCQlFNEE4MTRENTFDNkRFRThEMDBCRjg1QUMgLyogQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwICovLAogCQkJCUU0QTgxNEQzMUM2REVDNDAwMEJGODVBQyAvKiBD
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICovLAogCQkJCTFDMDEwNkZFMTkyNTk0REYwMDhBNDIw
MSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuY3BwICovLApAQCAtMjU4NjAsNiArMjU4NjYsNyBAQAog
CQkJCTMxMzEzRjY2MTQ0M0IzNUYwMDZFMkE5MCAvKiBGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNkUxNDk5NzkwRDAwQ0REM0E0IC8qIEZpbHRlck9wZXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFQ0VCNzAxNDk5NzkwRDAwQ0REM0E0IC8qIEZp
bHRlck9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0QTgxNERBMUM3MEUxMEQwMEJG
ODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTM3MkMwMEQ5MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNp
b24uaCBpbiBIZWFkZXJzICovLApAQCAtMzAzODIsNiArMzAzODksNyBAQAogCQkJCUI1OURENkFB
MTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOUJENEU5MTYxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzYzODBDRTkyMjVFMDA3RUYz
Q0QgLyogSlNTUUxUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNEE4MTREODFD
NzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI1OURENjlFMTE5MDJBNDIwMDdFOTY4NCAvKiBKU1NRTFRyYW5zYWN0aW9u
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEMjMxNkUwQ0QyNjlFNzAwQzFGMTk0
IC8qIEpTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjU5REQ2
QTIxMTkwMkE1MjAwN0U5Njg0IC8qIEpTU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNw
cAkocmV2aXNpb24gMTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNl
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBEb2N1bWVudFJ1
bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoKQogCiBSdWxlU2V0KiBEb2N1bWVudFJ1bGVTZXRzOjph
bmNlc3RvckNsYXNzUnVsZXMoQXRvbWljU3RyaW5nSW1wbCogY2xhc3NOYW1lKSBjb25zdAogewot
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hbmNlc3RvckNsYXNzUnVsZVNldC5hZGQoY2xhc3NOYW1l
LCBudWxscHRyKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fYW5jZXN0b3JDbGFzc1J1bGVTZXRz
LmFkZChjbGFzc05hbWUsIG51bGxwdHIpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkg
ewogICAgICAgICBpZiAoYXV0byogcnVsZXMgPSBtX2ZlYXR1cmVzLmFuY2VzdG9yQ2xhc3NSdWxl
cy5nZXQoY2xhc3NOYW1lKSkKICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBtYWtlUnVsZVNldCgqcnVsZXMpOwpAQCAtMTI2LDQgKzEyNiwyMCBAQCBSdWxlU2V0KiBEb2N1
bWVudFJ1bGVTZXRzOjphbmNlc3RvckNsYXNzCiAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuZ2V0KCk7CiB9CiAKK2NvbnN0IERvY3VtZW50UnVsZVNldHM6OkF0dHJpYnV0ZVJ1
bGVzKiBEb2N1bWVudFJ1bGVTZXRzOjphbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRNTChBdG9t
aWNTdHJpbmdJbXBsKiBhdHRyaWJ1dGVOYW1lKSBjb25zdAoreworICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9hbmNlc3RvckF0dHJpYnV0ZVJ1bGVTZXRzRm9ySFRNTC5hZGQoYXR0cmlidXRlTmFtZSwg
bnVsbHB0cik7CisgICAgYXV0byYgdmFsdWUgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgeworICAgICAgICBpZiAoYXV0byogcnVsZXMg
PSBtX2ZlYXR1cmVzLmFuY2VzdG9yQXR0cmlidXRlUnVsZXNGb3JIVE1MLmdldChhdHRyaWJ1dGVO
YW1lKSkgeworICAgICAgICAgICAgdmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEF0dHJpYnV0ZVJ1
bGVzPigpOworICAgICAgICAgICAgdmFsdWUtPmF0dHJpYnV0ZVNlbGVjdG9ycy5yZXNlcnZlQ2Fw
YWNpdHkocnVsZXMtPnNlbGVjdG9ycy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChhdXRvKiBz
ZWxlY3RvciA6IHJ1bGVzLT5zZWxlY3RvcnMudmFsdWVzKCkpCisgICAgICAgICAgICAgICAgdmFs
dWUtPmF0dHJpYnV0ZVNlbGVjdG9ycy51bmNoZWNrZWRBcHBlbmQoc2VsZWN0b3IpOworICAgICAg
ICAgICAgdmFsdWUtPnJ1bGVTZXQgPSBtYWtlUnVsZVNldChydWxlcy0+ZmVhdHVyZXMpOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiB2YWx1ZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5oCShyZXZp
c2lvbiAxOTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMiBAQCBwdWJsaWM6CiAgICAgUnVsZVNldCogdW5j
b21tb25BdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNl
dC5nZXQoKTsgfQogICAgIFJ1bGVTZXQqIGFuY2VzdG9yQ2xhc3NSdWxlcyhBdG9taWNTdHJpbmdJ
bXBsKiBjbGFzc05hbWUpIGNvbnN0OwogCisgICAgc3RydWN0IEF0dHJpYnV0ZVJ1bGVzIHsKKyAg
ICAgICAgVmVjdG9yPGNvbnN0IENTU1NlbGVjdG9yKj4gYXR0cmlidXRlU2VsZWN0b3JzOworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4gcnVsZVNldDsKKyAgICB9OworICAgIGNvbnN0
IEF0dHJpYnV0ZVJ1bGVzKiBhbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRNTChBdG9taWNTdHJp
bmdJbXBsKikgY29uc3Q7CisKICAgICB2b2lkIGluaXRVc2VyU3R5bGUoRXh0ZW5zaW9uU3R5bGVT
aGVldHMmLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5bGVSZXNvbHZlciYpOwogICAg
IHZvaWQgcmVzZXRBdXRob3JTdHlsZSgpOwogICAgIHZvaWQgYXBwZW5kQXV0aG9yU3R5bGVTaGVl
dHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mLCBNZWRpYVF1ZXJ5RXZhbHVh
dG9yKiwgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYsIFN0eWxlUmVzb2x2ZXIqKTsKQEAgLTY3LDcg
KzczLDggQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fZGVmYXVsdFN0eWxlVmVy
c2lvbk9uRmVhdHVyZUNvbGxlY3Rpb24geyAwIH07CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9w
dHI8UnVsZVNldD4gbV9zaWJsaW5nUnVsZVNldDsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxSdWxlU2V0PiBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNldDsKLSAgICBtdXRhYmxlIEhhc2hN
YXA8QXRvbWljU3RyaW5nSW1wbCosIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0Pj4gbV9hbmNlc3Rv
ckNsYXNzUnVsZVNldDsKKyAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIHN0
ZDo6dW5pcXVlX3B0cjxSdWxlU2V0Pj4gbV9hbmNlc3RvckNsYXNzUnVsZVNldHM7CisgICAgbXV0
YWJsZSBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBzdGQ6OnVuaXF1ZV9wdHI8QXR0cmlidXRl
UnVsZXM+PiBtX2FuY2VzdG9yQXR0cmlidXRlUnVsZVNldHNGb3JIVE1MOwogfTsKIAogaW5saW5l
IGNvbnN0IFJ1bGVGZWF0dXJlU2V0JiBEb2N1bWVudFJ1bGVTZXRzOjpmZWF0dXJlcygpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAJKHJldmlzaW9uIDE5NjU1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDggKzQ2LDEyIEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OnJlY3Vyc2l2ZWx5Q29sbGVjdEYKICAg
ICAgICAgICAgIGlmIChtYXRjaGVzQW5jZXN0b3IpCiAgICAgICAgICAgICAgICAgc2VsZWN0b3JG
ZWF0dXJlcy5jbGFzc2VzTWF0Y2hpbmdBbmNlc3RvcnMuYXBwZW5kKHNlbGVjdG9yLT52YWx1ZSgp
LmltcGwoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0b3ItPmlzQXR0cmlidXRlU2VsZWN0
b3IoKSkgewotICAgICAgICAgICAgYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXMu
YWRkKHNlbGVjdG9yLT5hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUoKS5pbXBsKCkpOwotICAg
ICAgICAgICAgYXR0cmlidXRlTG9jYWxOYW1lc0luUnVsZXMuYWRkKHNlbGVjdG9yLT5hdHRyaWJ1
dGUoKS5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICAgICAgYXV0byogY2Fub25pY2FsTG9j
YWxOYW1lID0gc2VsZWN0b3ItPmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpLmltcGwoKTsK
KyAgICAgICAgICAgIGF1dG8qIGxvY2FsTmFtZSA9IHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5sb2Nh
bE5hbWUoKS5pbXBsKCk7CisgICAgICAgICAgICBhdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWVz
SW5SdWxlcy5hZGQoY2Fub25pY2FsTG9jYWxOYW1lKTsKKyAgICAgICAgICAgIGF0dHJpYnV0ZUxv
Y2FsTmFtZXNJblJ1bGVzLmFkZChsb2NhbE5hbWUpOworICAgICAgICAgICAgaWYgKG1hdGNoZXNB
bmNlc3RvcikKKyAgICAgICAgICAgICAgICBzZWxlY3RvckZlYXR1cmVzLmF0dHJpYnV0ZVNlbGVj
dG9yc01hdGNoaW5nQW5jZXN0b3JzLmFwcGVuZChzZWxlY3Rvcik7CiAgICAgICAgIH0gZWxzZSBp
ZiAoc2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpIHsKICAg
ICAgICAgICAgIHN3aXRjaCAoc2VsZWN0b3ItPnBzZXVkb0VsZW1lbnRUeXBlKCkpIHsKICAgICAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRGaXJzdExpbmU6CkBAIC03OCw2
ICs4MiwxMyBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjpyZWN1cnNpdmVseUNvbGxlY3RGCiAgICAg
fSB3aGlsZSAoc2VsZWN0b3IpOwogfQogCitzdGF0aWMgc3RkOjpwYWlyPEF0b21pY1N0cmluZ0lt
cGwqLCB1bnNpZ25lZD4gbWFrZUF0dHJpYnV0ZVNlbGVjdG9yS2V5KGNvbnN0IENTU1NlbGVjdG9y
JiBzZWxlY3RvcikKK3sKKyAgICBib29sIGNhc2VJbnNlbnNpdGl2ZSA9IHNlbGVjdG9yLmF0dHJp
YnV0ZVZhbHVlTWF0Y2hpbmdJc0Nhc2VJbnNlbnNpdGl2ZSgpOworICAgIHVuc2lnbmVkIG1hdGNo
QW5kQ2FzZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzZWxlY3Rvci5tYXRjaCgpKSA8PCAxIHwg
Y2FzZUluc2Vuc2l0aXZlOworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzZWxlY3Rvci5hdHRy
aWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUoKS5pbXBsKCksIG1hdGNoQW5kQ2FzZSk7Cit9CisKIHZv
aWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURh
dGEpCiB7CiAgICAgU2VsZWN0b3JGZWF0dXJlcyBzZWxlY3RvckZlYXR1cmVzOwpAQCAtOTIsNiAr
MTAzLDE2IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb24KICAgICAg
ICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rv
cjxSdWxlRmVhdHVyZT4+KCk7CiAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmFw
cGVuZChSdWxlRmVhdHVyZShydWxlRGF0YS5ydWxlKCksIHJ1bGVEYXRhLnNlbGVjdG9ySW5kZXgo
KSwgcnVsZURhdGEuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbigpKSk7CiAgICAgfQorICAgIGZv
ciAoYXV0byogc2VsZWN0b3IgOiBzZWxlY3RvckZlYXR1cmVzLmF0dHJpYnV0ZVNlbGVjdG9yc01h
dGNoaW5nQW5jZXN0b3JzKSB7CisgICAgICAgIC8vIEhhc2hpbmcgYnkgYXR0cmlidXRlQ2Fub25p
Y2FsTG9jYWxOYW1lIG1ha2VzIHRoaXMgSFRNTCBzcGVjaWZpYy4KKyAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBhbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRNTC5hZGQoc2VsZWN0b3ItPmF0dHJp
YnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpLmltcGwoKSwgbnVsbHB0cik7CisgICAgICAgIGlmIChh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEF0dHJpYnV0ZVJ1bGVzPigpOworICAgICAgICBhdXRvJiBy
dWxlcyA9ICphZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBydWxlcy5mZWF0dXJl
cy5hcHBlbmQoUnVsZUZlYXR1cmUocnVsZURhdGEucnVsZSgpLCBydWxlRGF0YS5zZWxlY3Rvcklu
ZGV4KCksIHJ1bGVEYXRhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4oKSkpOworICAgICAgICAv
LyBEZWR1cGxpY2F0ZSBzZWxlY3RvcnMuCisgICAgICAgIHJ1bGVzLnNlbGVjdG9ycy5hZGQobWFr
ZUF0dHJpYnV0ZVNlbGVjdG9yS2V5KCpzZWxlY3RvciksIHNlbGVjdG9yKTsKKyAgICB9CiB9CiAK
IHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYgb3RoZXIpCkBA
IC0xMDksNiArMTMwLDE1IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVh
dHUKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
YXBwZW5kVmVjdG9yKCprZXlWYWx1ZVBhaXIudmFsdWUpOwogICAgIH0KKyAgICBmb3IgKGF1dG8m
IGtleVZhbHVlUGFpciA6IG90aGVyLmFuY2VzdG9yQXR0cmlidXRlUnVsZXNGb3JIVE1MKSB7Cisg
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gYW5jZXN0b3JBdHRyaWJ1dGVSdWxlc0ZvckhUTUwuYWRk
KGtleVZhbHVlUGFpci5rZXksIG51bGxwdHIpOworICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3
RW50cnkpCisgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtl
X3VuaXF1ZTxBdHRyaWJ1dGVSdWxlcz4oKTsKKyAgICAgICAgYXV0byYgcnVsZXMgPSAqYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgcnVsZXMuZmVhdHVyZXMuYXBwZW5kVmVjdG9y
KGtleVZhbHVlUGFpci52YWx1ZS0+ZmVhdHVyZXMpOworICAgICAgICBmb3IgKGF1dG8mIHNlbGVj
dG9yUGFpciA6IGtleVZhbHVlUGFpci52YWx1ZS0+c2VsZWN0b3JzKQorICAgICAgICAgICAgcnVs
ZXMuc2VsZWN0b3JzLmFkZChzZWxlY3RvclBhaXIua2V5LCBzZWxlY3RvclBhaXIudmFsdWUpOwor
ICAgIH0KICAgICB1c2VzRmlyc3RMaW5lUnVsZXMgPSB1c2VzRmlyc3RMaW5lUnVsZXMgfHwgb3Ro
ZXIudXNlc0ZpcnN0TGluZVJ1bGVzOwogICAgIHVzZXNGaXJzdExldHRlclJ1bGVzID0gdXNlc0Zp
cnN0TGV0dGVyUnVsZXMgfHwgb3RoZXIudXNlc0ZpcnN0TGV0dGVyUnVsZXM7CiB9CkBAIC0xMjIs
NiArMTUyLDcgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y2xlYXIoKQogICAgIHNpYmxpbmdSdWxl
cy5jbGVhcigpOwogICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuY2xlYXIoKTsKICAgICBhbmNl
c3RvckNsYXNzUnVsZXMuY2xlYXIoKTsKKyAgICBhbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRN
TC5jbGVhcigpOwogICAgIHVzZXNGaXJzdExpbmVSdWxlcyA9IGZhbHNlOwogICAgIHVzZXNGaXJz
dExldHRlclJ1bGVzID0gZmFsc2U7CiB9CkBAIC0xMzIsNiArMTYzLDggQEAgdm9pZCBSdWxlRmVh
dHVyZVNldDo6c2hyaW5rVG9GaXQoKQogICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuc2hyaW5r
VG9GaXQoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGVzIDogYW5jZXN0b3JDbGFzc1J1bGVzLnZhbHVl
cygpKQogICAgICAgICBydWxlcy0+c2hyaW5rVG9GaXQoKTsKKyAgICBmb3IgKGF1dG8mIHJ1bGVz
IDogYW5jZXN0b3JBdHRyaWJ1dGVSdWxlc0ZvckhUTUwudmFsdWVzKCkpCisgICAgICAgIHJ1bGVz
LT5mZWF0dXJlcy5zaHJpbmtUb0ZpdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaAkocmV2aXNpb24gMTk2NTU5KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcg
QEAKICNpZm5kZWYgUnVsZUZlYXR1cmVfaAogI2RlZmluZSBSdWxlRmVhdHVyZV9oCiAKKyNpbmNs
dWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMjksNyArMzAsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENTU1NlbGVjdG9yOwogY2xhc3MgUnVs
ZURhdGE7CiBjbGFzcyBTdHlsZVJ1bGU7CiAKQEAgLTU4LDYgKzU4LDEyIEBAIHN0cnVjdCBSdWxl
RmVhdHVyZVNldCB7CiAgICAgVmVjdG9yPFJ1bGVGZWF0dXJlPiBzaWJsaW5nUnVsZXM7CiAgICAg
VmVjdG9yPFJ1bGVGZWF0dXJlPiB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzOwogICAgIEhhc2hNYXA8
QXRvbWljU3RyaW5nSW1wbCosIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UnVsZUZlYXR1cmU+Pj4g
YW5jZXN0b3JDbGFzc1J1bGVzOworCisgICAgc3RydWN0IEF0dHJpYnV0ZVJ1bGVzIHsKKyAgICAg
ICAgSGFzaE1hcDxzdGQ6OnBhaXI8QXRvbWljU3RyaW5nSW1wbCosIHVuc2lnbmVkPiwgY29uc3Qg
Q1NTU2VsZWN0b3IqPiBzZWxlY3RvcnM7CisgICAgICAgIFZlY3RvcjxSdWxlRmVhdHVyZT4gZmVh
dHVyZXM7CisgICAgfTsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBzdGQ6OnVuaXF1
ZV9wdHI8QXR0cmlidXRlUnVsZXM+PiBhbmNlc3RvckF0dHJpYnV0ZVJ1bGVzRm9ySFRNTDsKICAg
ICBib29sIHVzZXNGaXJzdExpbmVSdWxlcyB7IGZhbHNlIH07CiAgICAgYm9vbCB1c2VzRmlyc3RM
ZXR0ZXJSdWxlcyB7IGZhbHNlIH07CiAKQEAgLTY1LDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBz
dHJ1Y3QgU2VsZWN0b3JGZWF0dXJlcyB7CiAgICAgICAgIGJvb2wgaGFzU2libGluZ1NlbGVjdG9y
IHsgZmFsc2UgfTsKICAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZ0ltcGwqPiBjbGFzc2VzTWF0
Y2hpbmdBbmNlc3RvcnM7CisgICAgICAgIFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+IGF0dHJp
YnV0ZVNlbGVjdG9yc01hdGNoaW5nQW5jZXN0b3JzOwogICAgIH07CiAgICAgdm9pZCByZWN1cnNp
dmVseUNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3RvcihTZWxlY3RvckZlYXR1cmVzJiwgY29uc3Qg
Q1NTU2VsZWN0b3ImLCBib29sIG1hdGNoZXNBbmNlc3RvciA9IGZhbHNlKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAkocmV2aXNpb24gMTk2NTU5KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxOCw2ICs1MTgsMjEgQEAgc3RhdGljIGJvb2wgYW55QXR0cmlidXRlTWF0Y2hlcyhjb25zdCBF
bAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBTZWxlY3RvckNoZWNrZXI6OmF0dHJpYnV0
ZVNlbGVjdG9yTWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlLCBj
b25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IpCit7CisgICAgQVNTRVJUKHNlbGVjdG9yLmlzQXR0
cmlidXRlU2VsZWN0b3IoKSk7CisgICAgYXV0byYgc2VsZWN0b3JBdHRyaWJ1dGUgPSBzZWxlY3Rv
ci5hdHRyaWJ1dGUoKTsKKyAgICBhdXRvJiBzZWxlY3Rvck5hbWUgPSBlbGVtZW50LmlzSFRNTEVs
ZW1lbnQoKSA/IHNlbGVjdG9yLmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpIDogc2VsZWN0
b3JBdHRyaWJ1dGUubG9jYWxOYW1lKCk7CisgICAgaWYgKCFBdHRyaWJ1dGU6Om5hbWVNYXRjaGVz
RmlsdGVyKGF0dHJpYnV0ZU5hbWUsIHNlbGVjdG9yQXR0cmlidXRlLnByZWZpeCgpLCBzZWxlY3Rv
ck5hbWUsIHNlbGVjdG9yQXR0cmlidXRlLm5hbWVzcGFjZVVSSSgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWU7CisgICAgaWYgKHNlbGVjdG9y
LmF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmdJc0Nhc2VJbnNlbnNpdGl2ZSgpKQorICAgICAgICBjYXNl
U2Vuc2l0aXZlID0gZmFsc2U7CisgICAgZWxzZSBpZiAoZWxlbWVudC5kb2N1bWVudCgpLmlzSFRN
TERvY3VtZW50KCkgJiYgZWxlbWVudC5pc0hUTUxFbGVtZW50KCkgJiYgIUhUTUxEb2N1bWVudDo6
aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKHNlbGVjdG9yLmF0dHJpYnV0ZSgpKSkKKyAgICAgICAg
Y2FzZVNlbnNpdGl2ZSA9IGZhbHNlOworICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZU1hdGNoZXMo
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKSwgc2VsZWN0b3IubWF0Y2go
KSwgc2VsZWN0b3IudmFsdWUoKSwgY2FzZVNlbnNpdGl2ZSk7Cit9CisKIHN0YXRpYyBib29sIGNh
bk1hdGNoSG92ZXJPckFjdGl2ZUluUXVpcmtzTW9kZShjb25zdCBTZWxlY3RvckNoZWNrZXI6Okxv
Y2FsQ29udGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBGb3IgcXVpcmtzIG1vZGUsIGZvbGxvdyB0
aGlzOiBodHRwOi8vcXVpcmtzLnNwZWMud2hhdHdnLm9yZy8jdGhlLTphY3RpdmUtYW5kLTpob3Zl
ci1xdWlyawpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAkocmV2aXNpb24g
MTk2NTU5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTksNiArMTE5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaXND
b21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKik7CiAgICAgc3RhdGlj
IGJvb2wgbWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCYpOworICAgIHN0YXRp
YyBib29sIGF0dHJpYnV0ZVNlbGVjdG9yTWF0Y2hlcyhjb25zdCBFbGVtZW50JiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVmFsdWUsIGNvbnN0IENT
U1NlbGVjdG9yJik7CiAKICAgICBlbnVtIExpbmtNYXRjaE1hc2sgeyBNYXRjaERlZmF1bHQgPSAw
LCBNYXRjaExpbmsgPSAxLCBNYXRjaFZpc2l0ZWQgPSAyLCBNYXRjaEFsbCA9IE1hdGNoTGluayB8
IE1hdGNoVmlzaXRlZCB9OwogICAgIHN0YXRpYyB1bnNpZ25lZCBkZXRlcm1pbmVMaW5rTWF0Y2hU
eXBlKGNvbnN0IENTU1NlbGVjdG9yKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCShyZXZpc2lvbiAx
OTY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdHRyLmgiCiAK
KyNpbmNsdWRlICJBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY29wZWRFdmVudFF1
ZXVlLmgiCkBAIC0xMDgsOSArMTA5LDEwIEBAIHZvaWQgQXR0cjo6c2V0VmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJiAKICAgICBFdmVudFF1ZXVlU2NvcGUgc2NvcGU7CiAgICAgbV9pZ25vcmVDaGls
ZHJlbkNoYW5nZWQrKzsKICAgICByZW1vdmVDaGlsZHJlbigpOwotICAgIGlmIChtX2VsZW1lbnQp
CisgICAgaWYgKG1fZWxlbWVudCkgeworICAgICAgICBTdHlsZTo6QXR0cmlidXRlQ2hhbmdlSW52
YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCptX2VsZW1lbnQsIHF1YWxpZmllZE5hbWUoKSwg
ZWxlbWVudEF0dHJpYnV0ZSgpLnZhbHVlKCksIHZhbHVlKTsKICAgICAgICAgZWxlbWVudEF0dHJp
YnV0ZSgpLnNldFZhbHVlKHZhbHVlKTsKLSAgICBlbHNlCisgICAgfSBlbHNlCiAgICAgICAgIG1f
c3RhbmRhbG9uZVZhbHVlID0gdmFsdWU7CiAgICAgY3JlYXRlVGV4dENoaWxkKCk7CiAgICAgbV9p
Z25vcmVDaGlsZHJlbkNoYW5nZWQtLTsKQEAgLTE2Myw5ICsxNjUsMTAgQEAgdm9pZCBBdHRyOjpj
aGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaAogICAgIGlmIChtX2VsZW1lbnQpCiAgICAgICAg
IG1fZWxlbWVudC0+d2lsbE1vZGlmeUF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKCksIG9sZFZhbHVl
LCBuZXdWYWx1ZSk7CiAKLSAgICBpZiAobV9lbGVtZW50KQorICAgIGlmIChtX2VsZW1lbnQpIHsK
KyAgICAgICAgU3R5bGU6OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRh
dGlvbigqbV9lbGVtZW50LCBxdWFsaWZpZWROYW1lKCksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAg
ICAgICAgIGVsZW1lbnRBdHRyaWJ1dGUoKS5zZXRWYWx1ZShuZXdWYWx1ZSk7Ci0gICAgZWxzZQor
ICAgIH0gZWxzZQogICAgICAgICBtX3N0YW5kYWxvbmVWYWx1ZSA9IG5ld1ZhbHVlOwogCiAgICAg
aWYgKG1fZWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5NjU2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkF0
dHIuaCIKKyNpbmNsdWRlICJBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRl
ICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKQEAgLTExNzYsMjYgKzExNzcsMzAgQEAgaW5saW5lIHZvaWQgRWxlbWVudDo6c2V0QXR0
cmlidXRlSW50ZXJuYQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKGluU3luY2hy
b25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKSB7CisgICAgICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnRE
YXRhKCkuYXR0cmlidXRlQXQoaW5kZXgpLnNldFZhbHVlKG5ld1ZhbHVlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlID0gYXR0cmlidXRl
QXQoaW5kZXgpOworICAgIFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZS5u
YW1lKCk7CiAgICAgQXRvbWljU3RyaW5nIG9sZFZhbHVlID0gYXR0cmlidXRlLnZhbHVlKCk7Ci0g
ICAgYm9vbCB2YWx1ZUNoYW5nZWQgPSBuZXdWYWx1ZSAhPSBvbGRWYWx1ZTsKLSAgICBRdWFsaWZp
ZWROYW1lIGF0dHJpYnV0ZU5hbWUgPSAoIWluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRl
IHx8IHZhbHVlQ2hhbmdlZCkgPyBhdHRyaWJ1dGUubmFtZSgpIDogbmFtZTsKIAotICAgIGlmICgh
aW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1dGUpCi0gICAgICAgIHdpbGxNb2RpZnlBdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICB3aWxsTW9kaWZ5
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAKLSAgICBpZiAo
dmFsdWVDaGFuZ2VkKSB7CisgICAgaWYgKG5ld1ZhbHVlICE9IG9sZFZhbHVlKSB7CiAgICAgICAg
IC8vIElmIHRoZXJlIGlzIGFuIEF0dHIgbm9kZSBob29rZWQgdG8gdGhpcyBhdHRyaWJ1dGUsIHRo
ZSBBdHRyOjpzZXRWYWx1ZSgpIGNhbGwgYmVsb3cKICAgICAgICAgLy8gd2lsbCB3cml0ZSBpbnRv
IHRoZSBFbGVtZW50RGF0YS4KICAgICAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgc28gaXQg
bWFrZXMgc29tZSBzZW5zZS4KLSAgICAgICAgaWYgKFJlZlB0cjxBdHRyPiBhdHRyTm9kZSA9IGlu
U3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlID8gbnVsbHB0ciA6IGF0dHJJZkV4aXN0cyhh
dHRyaWJ1dGVOYW1lKSkKKyAgICAgICAgaWYgKFJlZlB0cjxBdHRyPiBhdHRyTm9kZSA9IGF0dHJJ
ZkV4aXN0cyhhdHRyaWJ1dGVOYW1lKSkKICAgICAgICAgICAgIGF0dHJOb2RlLT5zZXRWYWx1ZShu
ZXdWYWx1ZSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTdHls
ZTo6QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBu
YW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogICAgICAgICAgICAgZW5zdXJlVW5pcXVlRWxlbWVu
dERhdGEoKS5hdHRyaWJ1dGVBdChpbmRleCkuc2V0VmFsdWUobmV3VmFsdWUpOworICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKCFpblN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSkKLSAg
ICAgICAgZGlkTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1
ZSk7CisgICAgZGlkTW9kaWZ5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCBuZXdW
YWx1ZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIG1ha2VJZEZvclN0eWxlUmVz
b2x1dGlvbihjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBib29sIGluUXVpcmtzTW9kZSkKQEAg
LTEyNjIsOSArMTI2Nyw2IEBAIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWEKIAogICAgIGludmFsaWRhdGVOb2RlTGlzdEFuZENvbGxlY3Rpb25DYWNoZXNJbkFuY2VzdG9y
cygmbmFtZSwgdGhpcyk7CiAKLSAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgbm8gU3R5bGVS
ZXNvbHZlciwgd2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHRoaXMgYXR0cmlidXRlIGNoYW5nZSB3b24n
dCBhZmZlY3Qgc3R5bGUuCi0gICAgc2hvdWxkSW52YWxpZGF0ZVN0eWxlIHw9ICFzdHlsZVJlc29s
dmVyOwotCiAgICAgaWYgKHNob3VsZEludmFsaWRhdGVTdHlsZSkKICAgICAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYygpOwogCkBAIC0yMDQ0LDI3ICsyMDQ2LDM4IEBAIHZvaWQgRWxlbWVudDo6cmVt
b3ZlQXR0cmlidXRlSW50ZXJuYWwodW4KICAgICBRdWFsaWZpZWROYW1lIG5hbWUgPSBlbGVtZW50
RGF0YS5hdHRyaWJ1dGVBdChpbmRleCkubmFtZSgpOwogICAgIEF0b21pY1N0cmluZyB2YWx1ZUJl
aW5nUmVtb3ZlZCA9IGVsZW1lbnREYXRhLmF0dHJpYnV0ZUF0KGluZGV4KS52YWx1ZSgpOwogCi0g
ICAgaWYgKCFpblN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSkgewotICAgICAgICBpZiAo
IXZhbHVlQmVpbmdSZW1vdmVkLmlzTnVsbCgpKQotICAgICAgICAgICAgd2lsbE1vZGlmeUF0dHJp
YnV0ZShuYW1lLCB2YWx1ZUJlaW5nUmVtb3ZlZCwgbnVsbEF0b20pOwotICAgIH0KLQogICAgIGlm
IChSZWZQdHI8QXR0cj4gYXR0ck5vZGUgPSBhdHRySWZFeGlzdHMobmFtZSkpCiAgICAgICAgIGRl
dGFjaEF0dHJOb2RlRnJvbUVsZW1lbnRXaXRoVmFsdWUoYXR0ck5vZGUuZ2V0KCksIGVsZW1lbnRE
YXRhLmF0dHJpYnV0ZUF0KGluZGV4KS52YWx1ZSgpKTsKIAotICAgIGVsZW1lbnREYXRhLnJlbW92
ZUF0dHJpYnV0ZShpbmRleCk7CisgICAgaWYgKGluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmli
dXRlKSB7CisgICAgICAgIGVsZW1lbnREYXRhLnJlbW92ZUF0dHJpYnV0ZShpbmRleCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlQmVpbmdSZW1vdmVkLmlzTnVsbCgp
KQorICAgICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKG5hbWUsIHZhbHVlQmVpbmdSZW1vdmVkLCBu
dWxsQXRvbSk7CiAKLSAgICBpZiAoIWluU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKQot
ICAgICAgICBkaWRSZW1vdmVBdHRyaWJ1dGUobmFtZSwgdmFsdWVCZWluZ1JlbW92ZWQpOworICAg
IHsKKyAgICAgICAgU3R5bGU6OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFs
aWRhdGlvbigqdGhpcywgbmFtZSwgdmFsdWVCZWluZ1JlbW92ZWQsIG51bGxBdG9tKTsKKyAgICAg
ICAgZWxlbWVudERhdGEucmVtb3ZlQXR0cmlidXRlKGluZGV4KTsKKyAgICB9CisKKyAgICBkaWRS
ZW1vdmVBdHRyaWJ1dGUobmFtZSwgdmFsdWVCZWluZ1JlbW92ZWQpOwogfQogCiB2b2lkIEVsZW1l
bnQ6OmFkZEF0dHJpYnV0ZUludGVybmFsKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUsIFN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSBpblN5
bmNocm9uaXphdGlvbk9mTGF6eUF0dHJpYnV0ZSkKIHsKLSAgICBpZiAoIWluU3luY2hyb25pemF0
aW9uT2ZMYXp5QXR0cmlidXRlKQotICAgICAgICB3aWxsTW9kaWZ5QXR0cmlidXRlKG5hbWUsIG51
bGxBdG9tLCB2YWx1ZSk7Ci0gICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5hZGRBdHRyaWJ1
dGUobmFtZSwgdmFsdWUpOwotICAgIGlmICghaW5TeW5jaHJvbml6YXRpb25PZkxhenlBdHRyaWJ1
dGUpCi0gICAgICAgIGRpZEFkZEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CisgICAgaWYgKGluU3lu
Y2hyb25pemF0aW9uT2ZMYXp5QXR0cmlidXRlKSB7CisgICAgICAgIGVuc3VyZVVuaXF1ZUVsZW1l
bnREYXRhKCkuYWRkQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHdpbGxNb2RpZnlBdHRyaWJ1dGUobmFtZSwgbnVsbEF0b20sIHZhbHVlKTsKKyAg
ICB7CisgICAgICAgIFN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZh
bGlkYXRpb24oKnRoaXMsIG5hbWUsIG51bGxBdG9tLCB2YWx1ZSk7CisgICAgICAgIGVuc3VyZVVu
aXF1ZUVsZW1lbnREYXRhKCkuYWRkQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICB9CisgICAg
ZGlkQWRkQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogYm9vbCBFbGVtZW50OjpyZW1vdmVB
dHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQpAQCAtMjQ3OSw2ICsyNDkyLDE4IEBA
IFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKFBzZXUKICAgICByZXR1cm4gc3R5
bGU7CiB9CiAKK2Jvb2wgRWxlbWVudDo6bmVlZHNTdHlsZUludmFsaWRhdGlvbigpIGNvbnN0Cit7
CisgICAgaWYgKCFpblJlbmRlcmVkRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChzdHlsZUNoYW5nZVR5cGUoKSA+PSBGdWxsU3R5bGVDaGFuZ2UpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWRvY3VtZW50KCkuc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEVs
ZW1lbnQ6OnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkKIHsKICAgICBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKS5zZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSh0cnVlKTsKQEAgLTMwNzQsMTIgKzMwOTks
NiBAQCB2b2lkIEVsZW1lbnQ6OndpbGxNb2RpZnlBdHRyaWJ1dGUoY29uc3QgCiAgICAgICAgICAg
ICB1cGRhdGVMYWJlbCh0cmVlU2NvcGUoKSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKICAgICB9CiAK
LSAgICBpZiAob2xkVmFsdWUgIT0gbmV3VmFsdWUpIHsKLSAgICAgICAgYXV0byBzdHlsZVJlc29s
dmVyID0gZG9jdW1lbnQoKS5zdHlsZVJlc29sdmVySWZFeGlzdHMoKTsKLSAgICAgICAgaWYgKHN0
eWxlUmVzb2x2ZXIgJiYgc3R5bGVSZXNvbHZlci0+aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoKnRo
aXMsIG5hbWUubG9jYWxOYW1lKCkpKQotICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygp
OwotICAgIH0KLQogICAgIGlmIChzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlckludGVy
ZXN0R3JvdXA+IHJlY2lwaWVudHMgPSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3Jl
YXRlRm9yQXR0cmlidXRlc011dGF0aW9uKCp0aGlzLCBuYW1lKSkKICAgICAgICAgcmVjaXBpZW50
cy0+ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKE11dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVz
KCp0aGlzLCBuYW1lLCBvbGRWYWx1ZSkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlz
aW9uIDE5NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3OSw2ICsyNzksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlbmRlclN0eWxl
KiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pIG92ZXJyaWRlOwogCisgICAgYm9v
bCBuZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkgY29uc3Q7CisKICAgICAvLyBNZXRob2RzIGZvciBp
bmRpY2F0aW5nIHRoZSBzdHlsZSBpcyBhZmZlY3RlZCBieSBkeW5hbWljIHVwZGF0ZXMgKGUuZy4s
IGNoaWxkcmVuIGNoYW5naW5nLCBvdXIgcG9zaXRpb24gY2hhbmdpbmcgaW4gb3VyIHNpYmxpbmcg
bGlzdCwgZXRjLikKICAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QgeyByZXR1
cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YVN0eWxlQWZmZWN0ZWRCeUVtcHR5KCk7IH0KICAg
ICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhD
aGlsZHJlbkFmZmVjdGVkQnlIb3ZlclJ1bGVzRmxhZyk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCIK
KworI2luY2x1ZGUgIkRvY3VtZW50UnVsZVNldHMuaCIKKyNpbmNsdWRlICJFbGVtZW50SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmgiCisjaW5jbHVkZSAi
U3R5bGVSZXNvbHZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5bGUg
eworCit2b2lkIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZVN0eWxlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xk
VmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCit7CisgICAgaWYgKG5ld1ZhbHVl
ID09IG9sZFZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBydWxlU2V0cyA9IG1f
ZWxlbWVudC5zdHlsZVJlc29sdmVyKCkucnVsZVNldHMoKTsKKyAgICBib29sIGlzSFRNTCA9IG1f
ZWxlbWVudC5pc0hUTUxFbGVtZW50KCk7CisKKyAgICBhdXRvJiBuYW1lU2V0ID0gaXNIVE1MID8g
cnVsZVNldHMuZmVhdHVyZXMoKS5hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWVzSW5SdWxlcyA6
IHJ1bGVTZXRzLmZlYXR1cmVzKCkuYXR0cmlidXRlTG9jYWxOYW1lc0luUnVsZXM7CisgICAgYm9v
bCBzaG91bGRJbnZhbGlkYXRlID0gbmFtZVNldC5jb250YWlucyhhdHRyaWJ1dGVOYW1lLmxvY2Fs
TmFtZSgpLmltcGwoKSk7CisgICAgaWYgKCFzaG91bGRJbnZhbGlkYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoIWlzSFRNTCkgeworICAgICAgICBtX2VsZW1lbnQuc2V0TmVlZHNTdHls
ZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKG1fZWxlbWVudC5zaGFkb3dSb290KCkgJiYgcnVsZVNldHMuYXV0aG9yU3R5bGUoKS0+aGFz
U2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKCkpIHsKKyAgICAgICAgbV9lbGVtZW50LnNldE5lZWRz
U3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fZWxlbWVudC5zZXROZWVkc1N0eWxlUmVjYWxjKElubGluZVN0eWxlQ2hhbmdlKTsKKwor
ICAgIGlmICghY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4obV9lbGVtZW50KS5maXJzdCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvKiBhdHRyaWJ1dGVSdWxlcyA9IHJ1bGVTZXRzLmFuY2Vz
dG9yQXR0cmlidXRlUnVsZXNGb3JIVE1MKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkuaW1wbCgp
KTsKKyAgICBpZiAoIWF0dHJpYnV0ZVJ1bGVzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBD
aGVjayBpZiBkZXNjZW5kYW50cyBtYXkgYmUgYWZmZWN0ZWQgYnkgdGhpcyBhdHRyaWJ1dGUgY2hh
bmdlLgorICAgIGZvciAoYXV0byogc2VsZWN0b3IgOiBhdHRyaWJ1dGVSdWxlcy0+YXR0cmlidXRl
U2VsZWN0b3JzKSB7CisgICAgICAgIGJvb2wgb2xkTWF0Y2hlcyA9IG9sZFZhbHVlLmlzTnVsbCgp
ID8gZmFsc2UgOiBTZWxlY3RvckNoZWNrZXI6OmF0dHJpYnV0ZVNlbGVjdG9yTWF0Y2hlcyhtX2Vs
ZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCAqc2VsZWN0b3IpOworICAgICAgICBib29s
IG5ld01hdGNoZXMgPSBuZXdWYWx1ZS5pc051bGwoKSA/IGZhbHNlIDogU2VsZWN0b3JDaGVja2Vy
OjphdHRyaWJ1dGVTZWxlY3Rvck1hdGNoZXMobV9lbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBuZXdW
YWx1ZSwgKnNlbGVjdG9yKTsKKworICAgICAgICBpZiAob2xkTWF0Y2hlcyAhPSBuZXdNYXRjaGVz
KSB7CisgICAgICAgICAgICBtX2Rlc2NlbmRhbnRJbnZhbGlkYXRpb25SdWxlU2V0ID0gYXR0cmli
dXRlUnVsZXMtPnJ1bGVTZXQuZ2V0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRl
RGVzY2VuZGFudHMoKQoreworICAgIGlmICghbV9kZXNjZW5kYW50SW52YWxpZGF0aW9uUnVsZVNl
dCkKKyAgICAgICAgcmV0dXJuOworICAgIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMgaW52YWxp
ZGF0aW9uQW5hbHlzaXMoKm1fZGVzY2VuZGFudEludmFsaWRhdGlvblJ1bGVTZXQpOworICAgIGlu
dmFsaWRhdGlvbkFuYWx5c2lzLmludmFsaWRhdGVTdHlsZShtX2VsZW1lbnQpOworfQorCit9Cit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZh
bGlkYXRpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0
ZUNoYW5nZUludmFsaWRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbl9oCisjZGVmaW5l
IEF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbl9oCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUnVsZVNldDsKKworbmFtZXNwYWNlIFN0eWxl
IHsKKworY2xhc3MgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uIHsKK3B1YmxpYzoKKyAgICBB
dHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYsIGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1Zh
bHVlKTsKKyAgICB+QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uKCk7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBpbnZhbGlkYXRlU3R5bGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOworICAgIHZv
aWQgaW52YWxpZGF0ZURlc2NlbmRhbnRzKCk7CisKKyAgICBjb25zdCBib29sIG1faXNFbmFibGVk
OworICAgIEVsZW1lbnQmIG1fZWxlbWVudDsKKworICAgIFJ1bGVTZXQqIG1fZGVzY2VuZGFudElu
dmFsaWRhdGlvblJ1bGVTZXQgeyBudWxscHRyIH07Cit9OworCitpbmxpbmUgQXR0cmlidXRlQ2hh
bmdlSW52YWxpZGF0aW9uOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKKyAgICA6IG1faXNF
bmFibGVkKGVsZW1lbnQubmVlZHNTdHlsZUludmFsaWRhdGlvbigpKQorICAgICwgbV9lbGVtZW50
KGVsZW1lbnQpCit7CisgICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAg
IGludmFsaWRhdGVTdHlsZShhdHRyaWJ1dGVOYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpOworICAg
IGludmFsaWRhdGVEZXNjZW5kYW50cygpOworfQorCitpbmxpbmUgQXR0cmlidXRlQ2hhbmdlSW52
YWxpZGF0aW9uOjp+QXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uKCkKK3sKKyAgICBpZiAoIW1f
aXNFbmFibGVkKQorICAgICAgICByZXR1cm47CisgICAgaW52YWxpZGF0ZURlc2NlbmRhbnRzKCk7
Cit9CisgICAgCit9Cit9CisKKyNlbmRpZgorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgJKHJldmlzaW9uIDE5NjU2MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB1c2luZyBDbGFzc0NoYW5n
ZVZlY3RvciA9IFZlY3RvcjxBdG9taWNTdHJpbmdJbXBsKiwgND47CiAKLSAgICBzdGF0aWMgYm9v
bCBuZWVkc0ludmFsaWRhdGlvbihjb25zdCBFbGVtZW50Jik7CiAgICAgdm9pZCBjb21wdXRlQ2xh
c3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3NlcywgY29uc3QgU3BhY2VT
cGxpdFN0cmluZyYgbmV3Q2xhc3Nlcyk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGUoY29uc3Qg
Q2xhc3NDaGFuZ2VWZWN0b3ImKTsKIApAQCAtNTksMTkgKzU4LDggQEAgcHJpdmF0ZToKICAgICBD
bGFzc0NoYW5nZVZlY3RvciBtX3JlbW92ZWRDbGFzc2VzOwogfTsKIAotaW5saW5lIGJvb2wgQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb246Om5lZWRzSW52YWxpZGF0aW9uKGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpCi17Ci0gICAgaWYgKCFlbGVtZW50LmluUmVuZGVyZWREb2N1bWVudCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGVsZW1lbnQuc3R5bGVDaGFuZ2VUeXBlKCkgPj0gRnVs
bFN0eWxlQ2hhbmdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFlbGVtZW50LmRv
Y3VtZW50KCkuc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogaW5saW5lIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpD
bGFzc0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTcGFjZVNwbGl0
U3RyaW5nJiBvbGRDbGFzc2VzLCBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBuZXdDbGFzc2VzKQot
ICAgIDogbV9pc0VuYWJsZWQobmVlZHNJbnZhbGlkYXRpb24oZWxlbWVudCkpCisgICAgOiBtX2lz
RW5hYmxlZChlbGVtZW50Lm5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSkKICAgICAsIG1fZWxlbWVu
dChlbGVtZW50KQogCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTY1ODkpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wMi0xNSAg
QW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgc3R5
bGUgaW52YWxpZGF0aW9ucyBmb3IgYXR0cmlidXRlIHNlbGVjdG9ycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MjQyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLWludmFsaWRh
dGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0aW9uLWF0dHJpYnV0ZS1jaGFuZ2UtZGVz
Y2VuZGFudHMuaHRtbDogQWRkZWQuCisKIDIwMTYtMDItMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIxOTY1NjMpOiBJdCBpcyBubyBsb25n
ZXIgcG9zc2libGUgdG8gY2FsbCB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciB3aXRob3V0IGFuIGV4
cGxpY2l0ICd0aGlzJwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtaW52YWxpZGF0
aW9uLWF0dHJpYnV0ZS1jaGFuZ2UtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hh
bmdlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlLWludmFsaWRhdGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRlc2NlbmRhbnRz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0OSBAQAorVGVzdCB0aGF0
IHdlIGludmFsaWRhdGUgdGhlIGVsZW1lbnQgc3VidHJlZSBtaW5pbWFsbHkgb24gY2xhc3MgYXR0
cmlidXRlIGNoYW5nZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBoYXNF
eHBlY3RlZFN0eWxlIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJO
b1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHls
ZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5v
U3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0Iiwg
Ik5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQor
U2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9v
dCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlw
ZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVD
aGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBl
Y3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdteWF0dHInIHZhbHVlICdmb28n
CitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRl
c3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQ
QVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1
ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMg
dHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdt
eWF0dHInIHZhbHVlICd2YWx1ZTInCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAi
Tm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5
bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJ
bmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5l
cnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0
cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnZm9vJworUEFTUyB0ZXN0U3R5
bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VU
eXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVD
aGFuZ2VUeXBlKCJ0YXJnZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRl
c3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNT
IGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorUmVtb3ZpbmcgYXR0cmlidXRlICdteWF0dHInCitQ
QVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RT
dHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNT
IHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRy
dWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlz
IHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAn
bXlhdHRyJyB2YWx1ZSAndmFsdWUzJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290Iiwg
Ik5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0
eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAi
SW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImlu
ZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMg
dHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ2R1bW15IHZhbHVlMycKK1BB
U1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0
eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1Mg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQ
QVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVl
CitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0
cicgdmFsdWUgJ3ZhbHVlNC1mb28nCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAi
Tm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5
bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJ
bmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5l
cnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0
cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAndmFsdWU0LWZvb2JhcicKK1BB
U1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0
eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1Mg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQ
QVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVl
CitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0
cicgdmFsdWUgJ2R1bW15IHZhbHVlNC1mb28nCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJv
b3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5s
aW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdl
dCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlw
ZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHls
ZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAndmFsdWU1Zm9vJwor
UEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0
U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFT
UyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0
cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBp
cyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUg
J215YXR0cicgdmFsdWUgJ3ZhbHVlNWZvb2JhcicKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgi
cm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJ
bmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFy
Z2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUo
ImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUg
aXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ2Zvb3ZhbHVlNScKK1BB
U1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0
eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1Mg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1
ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMg
dHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdt
eWF0dHInIHZhbHVlICdmb292YWx1ZTYnCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3Qi
LCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5l
U3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIs
ICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgi
aW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBp
cyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlBdHRyJyB2YWx1ZSAnZm9vYmFydmFsdWU2Jwor
UEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0
U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFT
UyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUK
K1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRy
dWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnTVlB
VFRSJyB2YWx1ZSAndmFsdWU2Zm9vJworUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290Iiwg
Ik5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0
eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJ0YXJnZXQiLCAi
SW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImlu
ZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMg
dHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ3ZhbHVlNycKK1BBU1MgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hh
bmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0
eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFT
UyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQor
UEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdteWF0dHIn
IHZhbHVlICd2YWx1ZTdmb28nCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9T
dHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVD
aGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJOb1N0
eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJO
b1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1Nl
dHRpbmcgYXR0cmlidXRlICdteUFUVFInIHZhbHVlICdmb292YWx1ZTdmb28nCitQQVNTIHRlc3RT
dHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5n
ZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHls
ZUNoYW5nZVR5cGUoInRhcmdldCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0
U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyBo
YXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1NldHRpbmcgYXR0cmlidXRlICdteWF0dHInIHZhbHVl
ICdWQUxVRTdmb28nCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNo
YW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2Ui
KSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJJbmxpbmVTdHls
ZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgiaW5lcnQiLCAiTm9T
dHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHlsZSBpcyB0cnVlCitTZXR0
aW5nIGF0dHJpYnV0ZSAnbXlhdHRyJyB2YWx1ZSAnVmFsdWU4JworUEFTUyB0ZXN0U3R5bGVDaGFu
Z2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJy
b290IiwgIklubGluZVN0eWxlQ2hhbmdlIikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VU
eXBlKCJ0YXJnZXQiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHls
ZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4
cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ3Zh
bHVlOGZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdl
IikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlz
IHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2Ui
KSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFu
Z2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRy
aWJ1dGUgJ215QVRUUicgdmFsdWUgJ0ZPT1ZBTHVlOGZvbycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdl
VHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9v
dCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlw
ZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5n
ZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIGhhc0V4cGVjdGVk
U3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cicgdmFsdWUgJ1ZBTFVFOGZv
bycKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwg
dGVzdFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUK
K1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0
cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBp
cyB0cnVlCitQQVNTIGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUg
J215YXR0cicgdmFsdWUgJ1ZBTFVFIDhmb28nCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJv
b3QiLCAiTm9TdHlsZUNoYW5nZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5s
aW5lU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdl
dCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0eWxlQ2hhbmdlVHlw
ZSgiaW5lcnQiLCAiTm9TdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgaGFzRXhwZWN0ZWRTdHls
ZSBpcyB0cnVlCitTZXR0aW5nIGF0dHJpYnV0ZSAnbXlhdHRyMicgdmFsdWUgJycKK1BBU1MgdGVz
dFN0eWxlQ2hhbmdlVHlwZSgicm9vdCIsICJOb1N0eWxlQ2hhbmdlIikgfHwgdGVzdFN0eWxlQ2hh
bmdlVHlwZSgicm9vdCIsICJJbmxpbmVTdHlsZUNoYW5nZSIpIGlzIHRydWUKK1BBU1MgdGVzdFN0
eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNTIHRl
c3RTdHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKSBpcyB0cnVlCitQQVNT
IGhhc0V4cGVjdGVkU3R5bGUgaXMgdHJ1ZQorU2V0dGluZyBhdHRyaWJ1dGUgJ215YXR0cjInIHZh
bHVlICdmb28nCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiTm9TdHlsZUNoYW5n
ZSIpIHx8IHRlc3RTdHlsZUNoYW5nZVR5cGUoInJvb3QiLCAiSW5saW5lU3R5bGVDaGFuZ2UiKSBp
cyB0cnVlCitQQVNTIHRlc3RTdHlsZUNoYW5nZVR5cGUoInRhcmdldCIsICJOb1N0eWxlQ2hhbmdl
IikgaXMgdHJ1ZQorUEFTUyB0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJpbmVydCIsICJOb1N0eWxlQ2hh
bmdlIikgaXMgdHJ1ZQorUEFTUyBoYXNFeHBlY3RlZFN0eWxlIGlzIHRydWUKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24tYXR0cmlidXRlLWNoYW5nZS1kZXNjZW5kYW50
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLWludmFsaWRh
dGlvbi1hdHRyaWJ1dGUtY2hhbmdlLWRlc2NlbmRhbnRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1pbnZhbGlkYXRpb24tYXR0cmlidXRlLWNoYW5nZS1k
ZXNjZW5kYW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQyIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyogeworICAgIGNvbG9yOiBibGFjazsK
K30KK1tteWF0dHJdIHRhcmdldCB7CisgICAgY29sb3I6IHJnYigxLCAwLCAwKTsKK30KKworW215
YXR0cj12YWx1ZTJdID4gaW5lcnQgdGFyZ2V0IHsKKyAgICBjb2xvcjogcmdiKDIsIDAsIDApOwor
fQorCitbbXlhdHRyfj12YWx1ZTNdIGluZXJ0ICsgdGFyZ2V0IHsKKyAgICBjb2xvcjogcmdiKDMs
IDAsIDApOworfQorCitbTVlBVFRSfD12YWx1ZTRdIGluZXJ0IH4gdGFyZ2V0IHsKKyAgICBjb2xv
cjogcmdiKDQsIDAsIDApOworfQorCitbbXlBdHRyXj12YWx1ZTVdIHRhcmdldCB7CisgICAgY29s
b3I6IHJnYig1LCAwLCAwKTsKK30KKworW215YXR0ciQ9dmFsdWU2XSB0YXJnZXQgeworICAgIGNv
bG9yOiByZ2IoNiwgMCwgMCk7Cit9CisKK1tteUFUVFIqPXZhbHVlN10gdGFyZ2V0IHsKKyAgICBj
b2xvcjogcmdiKDcsIDAsIDApOworfQorCitbbXlhdHRyKj12YUxVRTggaV0gdGFyZ2V0IHsKKyAg
ICBjb2xvcjogcmdiKDgsIDAsIDApOworfQorCitbbXlhdHRyMl0gPiB0YXJnZXQgeworICAgIGNv
bG9yOiByZ2IoOSwgMCwgMCk7Cit9CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8
cm9vdD4KKyAgICAgICAgPCEtLSBXaXRoIHJlbmRlcmVyIC0tPgorICAgICAgICA8aW5lcnQ+Cisg
ICAgICAgICAgICA8aW5lcnQ+CisgICAgICAgICAgICAgICAgPGluZXJ0PjwvaW5lcnQ+CisgICAg
ICAgICAgICAgICAgPHRhcmdldD4KKyAgICAgICAgICAgICAgICAgICAgPGluZXJ0PjwvaW5lcnQ+
CisgICAgICAgICAgICAgICAgICAgIDx0YXJnZXQ+PC90YXJnZXQ+CisgICAgICAgICAgICAgICAg
PC90YXJnZXQ+CisgICAgICAgICAgICA8L2luZXJ0PgorICAgICAgICAgICAgPHRhcmdldD48L3Rh
cmdldD4KKyAgICAgICAgICAgIDxpbmVydD48L2luZXJ0PgorICAgICAgICA8L2luZXJ0PgorICAg
IDwvcm9vdD4KKyAgICA8cm9vdCBzdHlsZT0iZGlzcGxheTpub25lOyI+CisgICAgICAgIDwhLS0g
V2l0aG91dCByZW5kZXJlciAtLT4KKyAgICAgICAgPGluZXJ0PgorICAgICAgICAgICAgPGluZXJ0
PgorICAgICAgICAgICAgICAgIDxpbmVydD48L2luZXJ0PgorICAgICAgICAgICAgICAgIDx0YXJn
ZXQ+CisgICAgICAgICAgICAgICAgICAgIDxpbmVydD48L2luZXJ0PgorICAgICAgICAgICAgICAg
ICAgICA8dGFyZ2V0PjwvdGFyZ2V0PgorICAgICAgICAgICAgICAgIDwvdGFyZ2V0PgorICAgICAg
ICAgICAgPC9pbmVydD4KKyAgICAgICAgICAgIDx0YXJnZXQ+PC90YXJnZXQ+CisgICAgICAgICAg
ICA8aW5lcnQ+PC9pbmVydD4KKyAgICAgICAgPC9pbmVydD4KKyAgICA8L3Jvb3Q+Cis8L2JvZHk+
Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IHdlIGludmFsaWRhdGUgdGhlIGVs
ZW1lbnQgc3VidHJlZSBtaW5pbWFsbHkgb24gY2xhc3MgYXR0cmlidXRlIGNoYW5nZScpOworCitm
dW5jdGlvbiB0ZXN0U3R5bGVDaGFuZ2VUeXBlKHRhZywgdHlwZSkKK3sKKyAgICB2YXIgZWxlbWVu
dHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHRhZyk7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cy5zdHlsZUNoYW5nZVR5cGUoZWxlbWVudHNbaV0pICE9IHR5cGUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiB0ZXN0U3R5
bGVJbnZhbGlkYXRpb24oZXhwZWN0ZWREZXNjZW5kYW50U3R5bGVDaGFuZ2UpIHsKKyAgICAvLyBJ
ZGVhbGx5IHdlIHdvdWxkJ3QgaW52YWxpZGF0ZSB0aGUgcm9vdCBhdCBhbGwuCisgICAgc2hvdWxk
QmVUcnVlKCd0ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIk5vU3R5bGVDaGFuZ2UiKSB8fCB0
ZXN0U3R5bGVDaGFuZ2VUeXBlKCJyb290IiwgIklubGluZVN0eWxlQ2hhbmdlIiknKTsKKworICAg
IHNob3VsZEJlVHJ1ZSgndGVzdFN0eWxlQ2hhbmdlVHlwZSgidGFyZ2V0IiwgIicgKyBleHBlY3Rl
ZERlc2NlbmRhbnRTdHlsZUNoYW5nZSArJyIpJyk7CisKKyAgICBzaG91bGRCZVRydWUoJ3Rlc3RT
dHlsZUNoYW5nZVR5cGUoImluZXJ0IiwgIk5vU3R5bGVDaGFuZ2UiKScpOworfQorCitmdW5jdGlv
biBzZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpIHsKKyAgICBkZWJ1ZygiU2V0dGluZyBhdHRyaWJ1
dGUgJyIgKyBuYW1lICsgIicgdmFsdWUgJyIgKyB2YWx1ZSArICInIik7CisgICAgdmFyIGFsbFJv
b3RzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgicm9vdCIpOworICAgIGFsbFJvb3RzWzBd
LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CisgICAgYWxsUm9vdHNbMV0uc2V0QXR0cmlidXRl
KG5hbWUsIHZhbHVlKTsKK30KKworZnVuY3Rpb24gcmVtb3ZlQXR0cmlidXRlKG5hbWUpIHsKKyAg
ICBkZWJ1ZygiUmVtb3ZpbmcgYXR0cmlidXRlICciICsgbmFtZSArICInIik7CisgICAgdmFyIGFs
bFJvb3RzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgicm9vdCIpOworICAgIGFsbFJvb3Rz
WzBdLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICBhbGxSb290c1sxXS5yZW1vdmVBdHRyaWJ1
dGUobmFtZSk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrU3R5bGUobikgeworICAgIGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICBoYXNFeHBlY3RlZFN0eWxlID0gdHJ1ZTsK
KyAgICBleHBlY3RlZENvbG9yID0gJ3JnYignK24rJywgMCwgMCknOworICAgIHZhciB0YXJnZXRz
ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgidGFyZ2V0Iik7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0YXJnZXRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGhhc0V4cGVjdGVkU3R5bGUg
PSBnZXRDb21wdXRlZFN0eWxlKHRhcmdldHNbaV0pLmNvbG9yID09IGV4cGVjdGVkQ29sb3I7Cisg
ICAgICAgIGlmICghaGFzRXhwZWN0ZWRTdHlsZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBzaG91bGRCZVRydWUoImhhc0V4cGVjdGVkU3R5bGUiKTsKK30KKworY2hlY2tTdHlsZSgw
KTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSgw
KTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAnJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24o
IklubGluZVN0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDEpOworCitzZXRBdHRyaWJ1dGUoJ215
YXR0cicsICdmb28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5nZSIpOwor
Y2hlY2tTdHlsZSgxKTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAndmFsdWUyJyk7Cit0ZXN0
U3R5bGVJbnZhbGlkYXRpb24oIklubGluZVN0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDIpOwor
CitzZXRBdHRyaWJ1dGUoJ215YXR0cicsICdmb28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigi
SW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoMSk7CisKK3JlbW92ZUF0dHJpYnV0ZSgn
bXlhdHRyJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIklubGluZVN0eWxlQ2hhbmdlIik7Citj
aGVja1N0eWxlKDApOworCitzZXRBdHRyaWJ1dGUoJ215YXR0cicsICd2YWx1ZTMnKTsKK3Rlc3RT
dHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoMyk7CisK
K3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ2R1bW15IHZhbHVlMycpOwordGVzdFN0eWxlSW52YWxp
ZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDMpOworCitzZXRBdHRyaWJ1dGUo
J215YXR0cicsICd2YWx1ZTQtZm9vJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIklubGluZVN0
eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDQpOworCitzZXRBdHRyaWJ1dGUoJ215YXR0cicsICd2
YWx1ZTQtZm9vYmFyJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIk5vU3R5bGVDaGFuZ2UiKTsK
K2NoZWNrU3R5bGUoNCk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ2R1bW15IHZhbHVlNC1m
b28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFuZ2UiKTsKK2NoZWNr
U3R5bGUoMSk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3ZhbHVlNWZvbycpOwordGVzdFN0
eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSg1KTsKKwor
c2V0QXR0cmlidXRlKCdteWF0dHInLCAndmFsdWU1Zm9vYmFyJyk7Cit0ZXN0U3R5bGVJbnZhbGlk
YXRpb24oIk5vU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoNSk7CisKK3NldEF0dHJpYnV0ZSgn
bXlhdHRyJywgJ2Zvb3ZhbHVlNScpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJJbmxpbmVTdHls
ZUNoYW5nZSIpOworY2hlY2tTdHlsZSgxKTsKKworc2V0QXR0cmlidXRlKCdteWF0dHInLCAnZm9v
dmFsdWU2Jyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24oIklubGluZVN0eWxlQ2hhbmdlIik7Citj
aGVja1N0eWxlKDYpOworCitzZXRBdHRyaWJ1dGUoJ215QXR0cicsICdmb29iYXJ2YWx1ZTYnKTsK
K3Rlc3RTdHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSg2KTsK
Kworc2V0QXR0cmlidXRlKCdNWUFUVFInLCAndmFsdWU2Zm9vJyk7Cit0ZXN0U3R5bGVJbnZhbGlk
YXRpb24oIklubGluZVN0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDEpOworCitzZXRBdHRyaWJ1
dGUoJ215YXR0cicsICd2YWx1ZTcnKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5
bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoNyk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3Zh
bHVlN2ZvbycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVj
a1N0eWxlKDcpOworCitzZXRBdHRyaWJ1dGUoJ215QVRUUicsICdmb292YWx1ZTdmb28nKTsKK3Rl
c3RTdHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSg3KTsKKwor
c2V0QXR0cmlidXRlKCdteWF0dHInLCAnVkFMVUU3Zm9vJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRp
b24oIklubGluZVN0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDEpOworCitzZXRBdHRyaWJ1dGUo
J215YXR0cicsICdWYWx1ZTgnKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVD
aGFuZ2UiKTsKK2NoZWNrU3R5bGUoOCk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyJywgJ3ZhbHVl
OGZvbycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJOb1N0eWxlQ2hhbmdlIik7CitjaGVja1N0
eWxlKDgpOworCitzZXRBdHRyaWJ1dGUoJ215QVRUUicsICdGT09WQUx1ZThmb28nKTsKK3Rlc3RT
dHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSg4KTsKKworc2V0
QXR0cmlidXRlKCdteWF0dHInLCAnVkFMVUU4Zm9vJyk7Cit0ZXN0U3R5bGVJbnZhbGlkYXRpb24o
Ik5vU3R5bGVDaGFuZ2UiKTsKK2NoZWNrU3R5bGUoOCk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRy
JywgJ1ZBTFVFIDhmb28nKTsKK3Rlc3RTdHlsZUludmFsaWRhdGlvbigiSW5saW5lU3R5bGVDaGFu
Z2UiKTsKK2NoZWNrU3R5bGUoMSk7CisKK3NldEF0dHJpYnV0ZSgnbXlhdHRyMicsICcnKTsKK3Rl
c3RTdHlsZUludmFsaWRhdGlvbigiTm9TdHlsZUNoYW5nZSIpOworY2hlY2tTdHlsZSgxKTsKKwor
c2V0QXR0cmlidXRlKCdteWF0dHIyJywgJ2ZvbycpOwordGVzdFN0eWxlSW52YWxpZGF0aW9uKCJO
b1N0eWxlQ2hhbmdlIik7CitjaGVja1N0eWxlKDEpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>