<?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>68765</bug_id>
          
          <creation_ts>2011-09-24 13:46:33 -0700</creation_ts>
          <short_desc>Remove ENABLE(FTPDIR) and associated code</short_desc>
          <delta_ts>2011-09-24 14:17:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68012</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>472800</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-24 13:46:33 -0700</bug_when>
    <thetext>Remove ENABLE(FTPDIR) and associated code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472801</commentid>
    <comment_count>1</comment_count>
      <attachid>108588</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-24 13:50:14 -0700</bug_when>
    <thetext>Created attachment 108588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472804</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-09-24 13:58:00 -0700</bug_when>
    <thetext>Why is this being removed given that it’s enabled and used by Safari on Windows?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472806</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-24 14:01:59 -0700</bug_when>
    <thetext>&gt; Why is this being removed given that it’s enabled and used by Safari on Windows?

Perhaps I misunderstood Platform.h.  This block of code makes it look like it is enabled only for PLATFORM(IOS):

http://trac.webkit.org/browser/trunk/Source/JavaScriptCore/wtf/Platform.h#L572

Can you show me how to tell it is enabled on PLATFORM(WIN) so that I can avoid this sort of mistake in the future?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472807</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-09-24 14:02:48 -0700</bug_when>
    <thetext>791	#if !defined(ENABLE_FTPDIR)
792	#define ENABLE_FTPDIR 1
793	#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472808</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-24 14:04:04 -0700</bug_when>
    <thetext>Thanks.  To be clear, are you asking for this code to be keep or just asking why I&apos;ve posted this patch to remove it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472809</commentid>
    <comment_count>6</comment_count>
      <attachid>108588</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-09-24 14:05:07 -0700</bug_when>
    <thetext>Comment on attachment 108588
Patch

Please don’t remove code that other ports are actively using.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472810</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-09-24 14:05:18 -0700</bug_when>
    <thetext>Is that clearer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472811</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-24 14:08:39 -0700</bug_when>
    <thetext>&gt; Is that clearer?

Yes.  Thank you.

Please consider replying to this message on webkit-dev if there are other ENABLE macros slated for removal that you believe we should not remove:

http://www.mail-archive.com/webkit-dev@lists.webkit.org/msg16428.html

Alternatively, please feel encouraged to comment on this document, which contains updates based on the webkit-dev discussion:

https://docs.google.com/document/d/1MVbOTYkZxTj071-ZQI7Lsh7CdZJhS2_1OdU4bjYuaKA/edit?hl=en_US</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472812</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-09-24 14:10:29 -0700</bug_when>
    <thetext>Please consider double-checking your work before you propose deleting code that other people are using.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472813</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-24 14:17:16 -0700</bug_when>
    <thetext>&gt; Please consider double-checking your work before you propose deleting code that other people are using.

As part of this process, we are removing code that other folks are using.  For example, there were even folks using WML before we removed it.  That&apos;s why these changes are being discussed on webkit-dev and in these bug threads before they happen.

In any case, my goal here is not to make any controversial changes.  Thanks for providing feedback at this stage of the process.  The earlier in the process that you&apos;re able to provide feedback, the more efficient it is for the project as a whole.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108588</attachid>
            <date>2011-09-24 13:50:14 -0700</date>
            <delta_ts>2011-09-24 14:05:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68765-20110924135013.patch</filename>
            <type>text/plain</type>
            <size>125547</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDk1OTA5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDkt
MjQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgRU5B
QkxFKEZUUERJUikgYW5kIGFzc29jaWF0ZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOgor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV2luQ0UuY21ha2U6CisgICAgICAgICogU291
cmNlL2NtYWtlY29uZmlnLmguY21ha2U6CisKIDIwMTEtMDktMjMgIFl1cWlhbmcgWGlhbiAgPHl1
cWlhbmcueGlhbkBpbnRlbC5jb20+CiAKICAgICAgICAgQWRkIEpTVkFMVUUzMl82NCBzdXBwb3J0
IHRvIERGRyBKSVQKSW5kZXg6IFNvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9jbWFrZWNvbmZpZy5oLmNtYWtlCShyZXZpc2lvbiA5NTkwOCkKKysrIFNvdXJj
ZS9jbWFrZWNvbmZpZy5oLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw3ICsxNiw2IEBACiAj
Y21ha2VkZWZpbmUwMSBFTkFCTEVfRE9NX1NUT1JBR0UKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9G
QVNUX01PQklMRV9TQ1JPTExJTkcKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9GSUxURVJTCi0jY21h
a2VkZWZpbmUwMSBFTkFCTEVfRlRQRElSCiAjY21ha2VkZWZpbmUwMSBFTkFCTEVfRlVMTFNDUkVF
Tl9BUEkKICNjbWFrZWRlZmluZTAxIEVOQUJMRV9HRU9MT0NBVElPTgogI2NtYWtlZGVmaW5lMDEg
RU5BQkxFX0dMSUJfU1VQUE9SVApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biA5NTkwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wOS0yNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJlbW92ZSBFTkFCTEUoRlRQRElSKSBhbmQgYXNzb2NpYXRlZCBj
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODc2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L1BsYXRmb3JtLmg6CisKIDIwMTEtMDktMjMgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBp
bnRlbC5jb20+CiAKICAgICAgICAgQWRkIEpTVkFMVUUzMl82NCBzdXBwb3J0IHRvIERGRyBKSVQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDk1OTA4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NzMsNyArNTczLDYgQEAKICNkZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2RlZmlu
ZSBFTkFCTEVfRFJBR19TVVBQT1JUIDAKICNkZWZpbmUgRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRF
TVMgMAotI2RlZmluZSBFTkFCTEVfRlRQRElSIDEKICNkZWZpbmUgRU5BQkxFX0dFT0xPQ0FUSU9O
IDEKICNkZWZpbmUgRU5BQkxFX0lDT05EQVRBQkFTRSAwCiAjZGVmaW5lIEVOQUJMRV9JTlNQRUNU
T1IgMApAQCAtNzg4LDEwICs3ODcsNiBAQAogI2RlZmluZSBFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUiAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9GVFBESVIpCi0jZGVmaW5lIEVO
QUJMRV9GVFBESVIgMQotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5V
UykKICNkZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMQogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA5NTkwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDExLTA5LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIEVOQUJMRShGVFBESVIpIGFuZCBhc3NvY2lhdGVk
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4
NzY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBjb2RlIGFwcGVhcnMgdG8gYmUgdW51c2VkLCBleGNlcHQgcG9zc2libHkgYnkgRUZMIGFuZCBv
biBpT1MsCisgICAgICAgIGFsdGhvdWdoIGl0J3Mgc29tZXdoYXQgZGlmZmljdWx0IHRvIHRlbGwg
aWYgaU9TIHVzZXMgdGhpcyBjb2RlIGJlY2F1c2UKKyAgICAgICAgaU9TIGlzIG5vdCBmdWxseSB1
cHN0cmVhbS4KKworICAgICAgICBBcyBkaXNjdXNzZWQgb24gd2Via2l0LWRldiwgdGhpcyBwYXRj
aCBpcyBwYXJ0IG9mIGEgbGFyZ2VyIHNlcmllcyB0aGF0CisgICAgICAgIGlzIGF0dGVtcHRpbmcg
dG8gcmVkdWNlIFdlYktpdCdzIGNvbmZpZ3VyYXRpb24gc3BhY2UuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpj
cmVhdGVEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oOiBSZW1vdmVk
LgorICAgICAgICAqIGxvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIGxvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBs
b2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICog
cGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAgICAgLSBUaGlzIHBhdGNoIGFsc28gcmVtb3ZlIHNv
bWUgc2V0dGluZ3MgdGhhdCB3ZXJlIG9ubHkgdXNlZCBieSB0aGlzIGNvZGUuCisgICAgICAgICog
cGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFs
aXplU3VwcG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9U
ZW1wb3JhcnlMaW5rU3R1YnMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZW1wb3JhcnlM
aW5rU3R1YnMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVic1F0
LmNwcDoKKwogMjAxMS0wOS0yNCAgWW91bmcgSGFuIExlZSAgPGpveWJyb0Bjb21wYW55MTAwLm5l
dD4KIAogICAgICAgICBTVkdBbmltYXRpb24gZG9lcyBub3Qgc3VwcG9ydCAndmFsdWVzJyBmb3Ig
ZnJvbS10byBhbmltYXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTU5
MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
Njg3LDcgKzY4Nyw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0RhdGVUaW1lSW5w
dXRUeXBlLmNwcAogICAgIGh0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKICAgICBodG1s
L0VtYWlsSW5wdXRUeXBlLmNwcAotICAgIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCiAg
ICAgaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAogICAgIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50
LmNwcAogICAgIGh0bWwvRm9ybURhdGFMaXN0LmNwcApAQCAtODk1LDcgKzg5NCw2IEBAIFNFVChX
ZWJDb3JlX1NPVVJDRVMKICAgICBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCiAgICAgbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKICAgICBsb2FkZXIvRG9jdW1lbnRXcml0ZXIu
Y3BwCi0gICAgbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAKICAgICBsb2FkZXIvRm9ybVN0
YXRlLmNwcAogICAgIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKICAgICBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDk1
OTA4KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5
KQpAQCAtMTYyNCw4ICsxNjI0LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1EYXRhTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybURhdGFMaXN0Lmgg
XAotCVNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmggXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bGxDb2xsZWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwIFwKQEAgLTIxMzEsOCArMjEyOSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaCBcCi0JU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBh
cnNlci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
cmV2aXNpb24gOTU5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtOTE3LDEyICs5MTcsMTAgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRV
c2VyU3R5bGVTaGVldAogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZkZWZhdWx0TWluRE9NVGltZXJJ
bnRlcnZhbEV2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNnNldERlZmF1bHRUZXh0RW5jb2RpbmdO
YW1lRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZzZXROZWVkc1NpdGVT
cGVjaWZpY1F1aXJrc0ViCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MyN3NldEZUUERpcmVjdG9yeVRl
bXBsYXRlUGF0aEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThTZXR0aW5nczI3c2V0TG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5RWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI3c2V0TG9jYWxT
dG9yYWdlRGF0YWJhc2VQYXRoRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdz
MjdzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjhz
ZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkRWIKLV9fWk43V2ViQ29yZThTZXR0aW5nczI4c2V0
Rm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5nc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyOXNldEFj
Y2VsZXJhdGVkMmRDYW52YXNFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI5c2V0QXV0
aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjlzZXREZWZh
dWx0TWluRE9NVGltZXJJbnRlcnZhbEVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA5
NTkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
Mjc1Miw4ICsyNzUyLDYgQEAKICAgICAgICAgICAgICdsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAn
LAogICAgICAgICAgICAgJ2xvYWRlci9FbXB0eUNsaWVudHMuaCcsCi0gICAgICAgICAgICAnbG9h
ZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAnLAotICAgICAgICAgICAgJ2xvYWRlci9GVFBEaXJl
Y3RvcnlQYXJzZXIuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL0Zvcm1TdGF0ZS5jcHAnLAogICAg
ICAgICAgICAgJ2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAnLAogICAgICAgICAgICAgJ2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAnLApAQCAtNTQ1NSw4ICs1NDUzLDYgQEAKICAgICAgICAgICAgICdo
dG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9FbWFpbElu
cHV0VHlwZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvRW1haWxJbnB1dFR5cGUuaCcsCi0gICAg
ICAgICAgICAnaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAnLAotICAgICAgICAgICAgJ2h0
bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxlSW5wdXRU
eXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxlSW5wdXRUeXBlLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwko
cmV2aXNpb24gOTU5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBj
b3B5KQpAQCAtNjU4LDcgKzY1OCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvRGF0ZVRpbWVJ
bnB1dFR5cGUuY3BwIFwKICAgICBodG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwIFwKICAg
ICBodG1sL0VtYWlsSW5wdXRUeXBlLmNwcCBcCi0gICAgaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAgXAogICAgIGh0bWwvRmlsZUlucHV0VHlwZS5jcHAgXAogICAgIGh0bWwvRm9ybUFzc29j
aWF0ZWRFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9Gb3JtRGF0YUxpc3QuY3BwIFwKQEAgLTg3OCw3
ICs4NzcsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwIFwKICAg
ICBsb2FkZXIvRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwIFwKICAgICBsb2FkZXIvSGlzdG9y
eUNvbnRyb2xsZXIuY3BwIFwKLSAgICBsb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCBcCiAg
ICAgbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwIFwKICAgICBsb2FkZXIvaWNvbi9JY29u
RGF0YWJhc2VCYXNlLmNwcCBcCiAgICAgbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAgXApAQCAt
MTY3MSw3ICsxNjY5LDYgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9ET01VUkwuaCBcCiAgICAg
aHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBcCiAgICAgaHRtbC9Gb3JtRGF0YUxpc3QuaCBc
Ci0gICAgaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oIFwKICAgICBodG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmggXAogICAgIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1M
QXBwbGV0RWxlbWVudC5oIFwKQEAgLTE4NjQsNyArMTg2MSw2IEBAIEhFQURFUlMgKz0gXAogICAg
IGxvYWRlci9Gb3JtU3RhdGUuaCBcCiAgICAgbG9hZGVyL0ZyYW1lTG9hZGVyLmggXAogICAgIGxv
YWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIFwKLSAgICBsb2FkZXIvRlRQRGlyZWN0b3J5
UGFyc2VyLmggXAogICAgIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmggXAogICAgIGxvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5oIFwKICAgICBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNl
LmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oJKHJldmlzaW9uIDk1OTA4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2MDUwLDE0ICsyNjA1MCw2IEBACiAJCQkJ
PgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxGVFBE
aXJlY3RvcnlQYXJzZXIuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVs
YXRpdmVQYXRoPSIuLlxsb2FkZXJcRlRQRGlyZWN0b3J5UGFyc2VyLmgiCi0JCQkJPgotCQkJPC9G
aWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxIaXN0b3J5Q29udHJv
bGxlci5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNTM1MDIsMTQgKzUzNDk0LDYgQEAKIAkJ
CQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxGVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcRlRQRGlyZWN0b3J5RG9jdW1lbnQuaCIKLQkJCQk+Ci0JCQk8
L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIaWRkZW5JbnB1dFR5
cGUuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk1OTA4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDU3LDggKzE0NTcsNiBAQAogCQk1MUJFMzdFMDBEQUVFMDBFMDAxMDg1RkMgLyog
U3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwogCQk1
MUMwQUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAv
KiBDYWNoZWRGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxQzBBQTQxMEYyQUExNUUwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUE0MDBGMkFB
MTVFMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwICovOyB9OwotCQk1MUM4MUI4OTBDNDQyMkY3
MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzgxQjg3MEM0NDIyRjcwMDE5RUNFMyAvKiBGVFBE
aXJlY3RvcnlQYXJzZXIuY3BwICovOyB9OwotCQk1MUM4MUI4QTBDNDQyMkY3MDAxOUVDRTMgLyog
RlRQRGlyZWN0b3J5UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUM4MUI4ODBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2Vy
LmggKi87IH07CiAJCTUxQ0JGQzk5MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRm
b3JtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFDQkZDOTgwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFEMEM1MTYw
REFBOTBCNzAwM0IzODMxIC8qIEpTU3RvcmFnZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwQzUxNTBEQUE5MEI3MDAzQjM4MzEgLyog
SlNTdG9yYWdlQ3VzdG9tLmNwcCAqLzsgfTsKIAkJNTFEQ0U4MDIwQ0FDOUYxQzAwNDg4MzU4IC8q
IEpTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MURDRTgwMTBDQUM5RjFDMDA0ODgzNTggLyogSlNTUUxS
ZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCAqLzsgfTsKQEAgLTMxNzUsOCArMzE3Myw2IEBACiAJ
CTk3MDU5OTc5MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc1MTA3RDk3NTIwMEE1
MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCAqLzsgfTsKIAkJOTcwNTk5N0ExMDdEOTc1MjAwQTUw
QTdDIC8qIFBvbGljeUNoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTcxNDkx
REExMkZENjVFODAwMUJGRUIxIC8qIFVSTFN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcxNDkxRDkxMkZENjVFODAwMUJGRUIxIC8qIFVSTFN0
cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTk3MjA1QUFGMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzIwNUFBRDEyMzky
OENBMDBCMTczODAgLyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwICovOyB9OwotCQk5NzIwNUFC
MDEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1QUFFMTIzOTI4Q0EwMEIxNzM4
MCAvKiBGVFBEaXJlY3RvcnlEb2N1bWVudC5oICovOyB9OwogCQk5NzIwNUFCNTEyMzkyOTEwMDBC
MTczODAgLyogSW1hZ2VEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NzIwNUFCMTEyMzkyOTEwMDBCMTczODAgLyogSW1hZ2VEb2N1bWVu
dC5jcHAgKi87IH07CiAJCTk3MjA1QUI2MTIzOTI5MTAwMEIxNzM4MCAvKiBJbWFnZURvY3VtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzIwNUFC
MjEyMzkyOTEwMDBCMTczODAgLyogSW1hZ2VEb2N1bWVudC5oICovOyB9OwogCQk5NzIwNUFCNzEy
MzkyOTEwMDBCMTczODAgLyogTWVkaWFEb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzIwNUFCMzEyMzkyOTEwMDBCMTczODAgLyogTWVk
aWFEb2N1bWVudC5jcHAgKi87IH07CkBAIC04MTA2LDggKzgxMDIsNiBAQAogCQk1MUJFMzdERTBE
QUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RvcmFnZUFyZWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFD
MEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhY2hlZEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxQzBBQTQwMEYyQUExNUUwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRGcmFtZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUxQzgxQjg3MEM0NDIyRjcwMDE5RUNFMyAvKiBGVFBEaXJlY3Rv
cnlQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZUUERp
cmVjdG9yeVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxQzgxQjg4
MEM0NDIyRjcwMDE5RUNFMyAvKiBGVFBEaXJlY3RvcnlQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZUUERpcmVjdG9yeVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUNCRkM5ODBEMTBFNDgzMDAyREJGNTEgLyogQ2FjaGVkRnJhbWVQbGF0
Zm9ybURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJhbWVQ
bGF0Zm9ybURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMEM1MTUwREFB
OTBCNzAwM0IzODMxIC8qIEpTU3RvcmFnZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1N0b3JhZ2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MURDRTgwMTBDQUM5RjFDMDA0ODgzNTggLyogSlNTUUxSZXN1bHRTZXRSb3dM
aXN0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FM
UmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05ODExLDggKzk4MDUsNiBAQAogCQk5NzA1OTk3NTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5
Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lD
aGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzYxMDdEOTc1
MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUG9saWN5Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzE0
OTFEOTEyRkQ2NUU4MDAxQkZFQjEgLyogVVJMU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVSTFN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5
NzIwNUFBRDEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzIwNUFBRTEyMzkyOENBMDBCMTczODAg
LyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRlRQRGlyZWN0b3J5RG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTcyMDVBQjExMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk3MjA1QUIyMTIzOTI5MTAwMEIxNzM4MCAvKiBJbWFnZURvY3Vt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRG9jdW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcyMDVBQjMxMjM5MjkxMDAwQjE3MzgwIC8q
IE1lZGlhRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWVkaWFEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjIxMSw4
ICsxNjIwMyw2IEBACiAJCQkJNEEwREEyRkQxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lh
dGVkRWxlbWVudC5oICovLAogCQkJCUE4MTM2RDM3MDk3M0E4RTcwMEQ3NDQ2MyAvKiBGb3JtRGF0
YUxpc3QuY3BwICovLAogCQkJCUE4MTM2RDM2MDk3M0E4RTcwMEQ3NDQ2MyAvKiBGb3JtRGF0YUxp
c3QuaCAqLywKLQkJCQk5NzIwNUFBRDEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwICovLAotCQkJCTk3MjA1QUFFMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3Rv
cnlEb2N1bWVudC5oICovLAogCQkJCUY1NUIzRDhCMTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5J
bnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDhDMTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5J
bnB1dFR5cGUuaCAqLywKIAkJCQlCQzk3RTIzOTEwOTE0NDk1MDAxMEQzNjEgLyogSFRNTEFsbENv
bGxlY3Rpb24uY3BwICovLApAQCAtMTkwMDksOCArMTg5OTksNiBAQAogCQkJCTkzQjc3QTM3MEFE
RDc5MjUwMEVBNEI4MSAvKiBGcmFtZUxvYWRlclR5cGVzLmggKi8sCiAJCQkJNjU4NDM2ODUwQUUw
MUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCAqLywKIAkJCQk2MjhEMjE0RDEyMTMx
RUY0MDA1NURDRkMgLyogRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovLAotCQkJCTUxQzgxQjg3
MEM0NDIyRjcwMDE5RUNFMyAvKiBGVFBEaXJlY3RvcnlQYXJzZXIuY3BwICovLAotCQkJCTUxQzgx
Qjg4MEM0NDIyRjcwMDE5RUNFMyAvKiBGVFBEaXJlY3RvcnlQYXJzZXIuaCAqLywKIAkJCQk5N0RD
RTFGRjEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuY3BwICovLAogCQkJCTk3
RENFMjAwMTA4MDdDNzUwMDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5oICovLAogCQkJCTA4
OTU4MjUzMEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5jcHAgKi8sCkBAIC0yMTYwNyw4
ICsyMTU5NSw2IEBACiAJCQkJOTMzMDlFMEUwOTlFNjQ5MjAwNTZFNTgxIC8qIEZyYW1lU2VsZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUEyMTQ4NTA5N0EzRjUzMDBCOTA1MEEgLyogRnJh
bWVUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUNCRkVGQTA5NzRGNjA3MDAxREFDMjUgLyog
RnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLywKLQkJCQk5NzIwNUFCMDEyMzkyOENBMDBCMTczODAg
LyogRlRQRGlyZWN0b3J5RG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxQzgxQjhBMEM0
NDIyRjcwMDE5RUNFMyAvKiBGVFBEaXJlY3RvcnlQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzNUM0Nzc1MDlBQzREOEUwMEE2QUFCNCAvKiBHYXBSZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQzMkU4NDcwQzUxNDkzODAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzBDMDU0Q0MxMTE4QzhFNDAwQ0UyNjM2IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBs
IGluIEhlYWRlcnMgKi8sCkBAIC0yNDU4NSw4ICsyNDU3MSw2IEBACiAJCQkJNEE4Qzk2RUIwQkU2
OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NjVBMjE0ODQwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2NUNCRkVGOTA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTk3MjA1QUFGMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MUM4MUI4OTBDNDQyMkY3MDAxOUVDRTMgLyogRlRQ
RGlyZWN0b3J5UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MzJFODQ5MEM1MTQ5M0Yw
MEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFMDRDOTQw
REFGRjkwMjAwN0EwRjQxIC8qIEdlbmVyYXRlZEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZFODBEN0M1MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAkocmV2aXNp
b24gOTU5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDksMTIgKzMwOSw2IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IERP
TUltcGxlbWVudGF0aW9uOjoKICAgICAgICAgKQogICAgICAgICByZXR1cm4gRG9jdW1lbnQ6OmNy
ZWF0ZVhIVE1MKGZyYW1lLCB1cmwpOwogCi0jaWYgRU5BQkxFKEZUUERJUikKLSAgICAvLyBQbHVn
aW5zIGNhbm5vdCB0YWtlIEZUUCBmcm9tIHVzIGVpdGhlcgotICAgIGlmICh0eXBlID09ICJhcHBs
aWNhdGlvbi94LWZ0cC1kaXJlY3RvcnkiKQotICAgICAgICByZXR1cm4gRlRQRGlyZWN0b3J5RG9j
dW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKLSNlbmRpZgotCiAgICAgUGx1Z2luRGF0YSogcGx1
Z2luRGF0YSA9IDA7CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkgJiYgZnJhbWUtPmxv
YWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRp
YXRlUGx1Z2luKSkKICAgICAgICAgcGx1Z2luRGF0YSA9IGZyYW1lLT5wYWdlKCktPnBsdWdpbkRh
dGEoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiA5NTkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ1MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpZiBFTkFCTEUoRlRQRElSKQotI2luY2x1ZGUgIkZUUERpcmVjdG9yeURv
Y3VtZW50LmgiCi0KLSNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKLSNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiTG9j
YWxpemVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJGVFBEaXJl
Y3RvcnlQYXJzZXIuaCIKLSNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKLSNpbmNsdWRlICJT
ZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlRleHQuaCIK
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+Ci0KLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKLSAgICAKLWNsYXNzIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyIDog
cHVibGljIEhUTUxEb2N1bWVudFBhcnNlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZShIVE1MRG9jdW1lbnQqIGRvY3Vt
ZW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcihkb2N1bWVudCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQo
Y29uc3QgU2VnbWVudGVkU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpOwotCi0g
ICAgdmlydHVhbCBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotCi0gICAgaW5saW5lIHZvaWQgY2hlY2tCdWZmZXIoaW50IGxlbiA9IDEwKQotICAgIHsK
LSAgICAgICAgaWYgKChtX2Rlc3QgLSBtX2J1ZmZlcikgPiBtX3NpemUgLSBsZW4pIHsKLSAgICAg
ICAgICAgIC8vIEVubGFyZ2UgYnVmZmVyCi0gICAgICAgICAgICBpbnQgbmV3U2l6ZSA9IG1heCht
X3NpemUgKiAyLCBtX3NpemUgKyBsZW4pOwotICAgICAgICAgICAgaW50IG9sZE9mZnNldCA9IG1f
ZGVzdCAtIG1fYnVmZmVyOwotICAgICAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxVQ2hh
cio+KGZhc3RSZWFsbG9jKG1fYnVmZmVyLCBuZXdTaXplICogc2l6ZW9mKFVDaGFyKSkpOwotICAg
ICAgICAgICAgbV9kZXN0ID0gbV9idWZmZXIgKyBvbGRPZmZzZXQ7Ci0gICAgICAgICAgICBtX3Np
emUgPSBuZXdTaXplOwotICAgICAgICB9Ci0gICAgfQotICAgICAgICAKLXByaXZhdGU6Ci0gICAg
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50Kik7Ci0KLSAgICAvLyBUaGUg
cGFyc2VyIHdpbGwgYXR0ZW1wdCB0byBsb2FkIHRoZSBkb2N1bWVudCB0ZW1wbGF0ZSBzcGVjaWZp
ZWQgdmlhIHRoZSBwcmVmZXJlbmNlCi0gICAgLy8gRmFpbGluZyB0aGF0LCBpdCB3aWxsIGZhbGwg
YmFjayBhbmQgY3JlYXRlIHRoZSBiYXNpYyBkb2N1bWVudCB3aGljaCB3aWxsIGhhdmUgYSBtaW5p
bWFsCi0gICAgLy8gdGFibGUgZm9yIHByZXNlbnRpbmcgdGhlIEZUUCBkaXJlY3RvcnkgaW4gYSB1
c2VmdWwgbWFubmVyCi0gICAgYm9vbCBsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpOwotICAgIHZvaWQg
Y3JlYXRlQmFzaWNEb2N1bWVudCgpOwotCi0gICAgdm9pZCBwYXJzZUFuZEFwcGVuZE9uZUxpbmUo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBhcHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgc2l6ZSwgY29uc3QgU3RyaW5nJiBkYXRlLCBib29sIGlzRGlyZWN0b3J5
KTsgICAgCi0gICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVUREZvckZpbGVuYW1lKGNvbnN0
IFN0cmluZyYpOwotCi0gICAgUmVmUHRyPEhUTUxUYWJsZUVsZW1lbnQ+IG1fdGFibGVFbGVtZW50
OwotCi0gICAgYm9vbCBtX3NraXBMRjsKLSAgICBib29sIG1fcGFyc2VkVGVtcGxhdGU7Ci0gICAg
Ci0gICAgaW50IG1fc2l6ZTsKLSAgICBVQ2hhciogbV9idWZmZXI7Ci0gICAgVUNoYXIqIG1fZGVz
dDsKLSAgICBTdHJpbmcgbV9jYXJyeU92ZXI7Ci0gICAgCi0gICAgTGlzdFN0YXRlIG1fbGlzdFN0
YXRlOwotfTsKLQotRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OkZUUERpcmVjdG9yeURvY3Vt
ZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1MRG9jdW1lbnRQYXJz
ZXIoZG9jdW1lbnQsIGZhbHNlKQotICAgICwgbV9za2lwTEYoZmFsc2UpCi0gICAgLCBtX3BhcnNl
ZFRlbXBsYXRlKGZhbHNlKQotICAgICwgbV9zaXplKDI1NCkKLSAgICAsIG1fYnVmZmVyKHN0YXRp
Y19jYXN0PFVDaGFyKj4oZmFzdE1hbGxvYyhzaXplb2YoVUNoYXIpICogbV9zaXplKSkpCi0gICAg
LCBtX2Rlc3QobV9idWZmZXIpCi17Ci19Ci0KLXZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJz
ZXI6OmFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgc2l6
ZSwgY29uc3QgU3RyaW5nJiBkYXRlLCBib29sIGlzRGlyZWN0b3J5KQotewotICAgIEV4Y2VwdGlv
bkNvZGUgZWM7Ci0KLSAgICBSZWZQdHI8RWxlbWVudD4gcm93RWxlbWVudCA9IG1fdGFibGVFbGVt
ZW50LT5pbnNlcnRSb3coLTEsIGVjKTsKLSAgICByb3dFbGVtZW50LT5zZXRBdHRyaWJ1dGUoImNs
YXNzIiwgImZ0cERpcmVjdG9yeUVudHJ5Um93IiwgZWMpOwotCi0gICAgUmVmUHRyPEVsZW1lbnQ+
IGVsZW1lbnQgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KHRkVGFnLCBmYWxzZSk7Ci0gICAg
ZWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIFN0cmluZygmbm9C
cmVha1NwYWNlLCAxKSksIGVjKTsKLSAgICBpZiAoaXNEaXJlY3RvcnkpCi0gICAgICAgIGVsZW1l
bnQtPnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAiZnRwRGlyZWN0b3J5SWNvbiBmdHBEaXJlY3RvcnlU
eXBlRGlyZWN0b3J5IiwgZWMpOwotICAgIGVsc2UKLSAgICAgICAgZWxlbWVudC0+c2V0QXR0cmli
dXRlKCJjbGFzcyIsICJmdHBEaXJlY3RvcnlJY29uIGZ0cERpcmVjdG9yeVR5cGVGaWxlIiwgZWMp
OwotICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQsIGVjKTsKLQotICAgIGVsZW1l
bnQgPSBjcmVhdGVUREZvckZpbGVuYW1lKGZpbGVuYW1lKTsKLSAgICBlbGVtZW50LT5zZXRBdHRy
aWJ1dGUoImNsYXNzIiwgImZ0cERpcmVjdG9yeUZpbGVOYW1lIiwgZWMpOwotICAgIHJvd0VsZW1l
bnQtPmFwcGVuZENoaWxkKGVsZW1lbnQsIGVjKTsKLQotICAgIGVsZW1lbnQgPSBkb2N1bWVudCgp
LT5jcmVhdGVFbGVtZW50KHRkVGFnLCBmYWxzZSk7Ci0gICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQo
VGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIGRhdGUpLCBlYyk7Ci0gICAgZWxlbWVudC0+c2V0QXR0
cmlidXRlKCJjbGFzcyIsICJmdHBEaXJlY3RvcnlGaWxlRGF0ZSIsIGVjKTsKLSAgICByb3dFbGVt
ZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LCBlYyk7Ci0KLSAgICBlbGVtZW50ID0gZG9jdW1lbnQo
KS0+Y3JlYXRlRWxlbWVudCh0ZFRhZywgZmFsc2UpOwotICAgIGVsZW1lbnQtPmFwcGVuZENoaWxk
KFRleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBzaXplKSwgZWMpOwotICAgIGVsZW1lbnQtPnNldEF0
dHJpYnV0ZSgiY2xhc3MiLCAiZnRwRGlyZWN0b3J5RmlsZVNpemUiLCBlYyk7Ci0gICAgcm93RWxl
bWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudCwgZWMpOwotfQotCi1QYXNzUmVmUHRyPEVsZW1lbnQ+
IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVhdGVUREZvckZpbGVuYW1lKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLQotICAgIFN0cmluZyBm
dWxsVVJMID0gZG9jdW1lbnQoKS0+YmFzZVVSTCgpLnN0cmluZygpOwotICAgIGlmIChmdWxsVVJM
W2Z1bGxVUkwubGVuZ3RoKCkgLSAxXSA9PSAnLycpCi0gICAgICAgIGZ1bGxVUkwuYXBwZW5kKGZp
bGVuYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGZ1bGxVUkwuYXBwZW5kKCIvIiArIGZpbGVuYW1l
KTsKLQotICAgIFJlZlB0cjxFbGVtZW50PiBhbmNob3JFbGVtZW50ID0gZG9jdW1lbnQoKS0+Y3Jl
YXRlRWxlbWVudChhVGFnLCBmYWxzZSk7Ci0gICAgYW5jaG9yRWxlbWVudC0+c2V0QXR0cmlidXRl
KCJocmVmIiwgZnVsbFVSTCwgZWMpOwotICAgIGFuY2hvckVsZW1lbnQtPmFwcGVuZENoaWxkKFRl
eHQ6OmNyZWF0ZShkb2N1bWVudCgpLCBmaWxlbmFtZSksIGVjKTsKLQotICAgIFJlZlB0cjxFbGVt
ZW50PiB0ZEVsZW1lbnQgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KHRkVGFnLCBmYWxzZSk7
Ci0gICAgdGRFbGVtZW50LT5hcHBlbmRDaGlsZChhbmNob3JFbGVtZW50LCBlYyk7Ci0KLSAgICBy
ZXR1cm4gdGRFbGVtZW50LnJlbGVhc2UoKTsKLX0KLQotc3RhdGljIFN0cmluZyBwcm9jZXNzRmls
ZXNpemVTdHJpbmcoY29uc3QgU3RyaW5nJiBzaXplLCBib29sIGlzRGlyZWN0b3J5KQotewotICAg
IGlmIChpc0RpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuICItLSI7Ci0KLSAgICBib29sIHZhbGlk
OwotICAgIGludDY0X3QgYnl0ZXMgPSBzaXplLnRvVUludDY0KCZ2YWxpZCk7Ci0gICAgaWYgKCF2
YWxpZCkKLSAgICAgICAgcmV0dXJuIHVua25vd25GaWxlU2l6ZVRleHQoKTsKLQotICAgIGlmIChi
eXRlcyA8IDEwMDAwMDApCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJS4yZiBLQiIs
IHN0YXRpY19jYXN0PGZsb2F0PihieXRlcykvMTAwMCk7Ci0KLSAgICBpZiAoYnl0ZXMgPCAxMDAw
MDAwMDAwKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiUuMmYgTUIiLCBzdGF0aWNf
Y2FzdDxmbG9hdD4oYnl0ZXMpLzEwMDAwMDApOwotCi0gICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0
KCIlLjJmIEdCIiwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJ5dGVzKS8xMDAwMDAwMDAwKTsKLX0KLQot
c3RhdGljIGJvb2wgd2FzTGFzdERheU9mTW9udGgoaW50IHllYXIsIGludCBtb250aCwgaW50IGRh
eSkKLXsKLSAgICBzdGF0aWMgaW50IGxhc3REYXlzW10gPSB7IDMxLCAwLCAzMSwgMzAsIDMxLCAz
MCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMSB9OwotICAgIGlmIChtb250aCA8IDAgfHwgbW9udGgg
PiAxMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG1vbnRoID09IDIpIHsKLSAg
ICAgICAgaWYgKHllYXIgJSA0ID09IDAgJiYgKHllYXIgJSAxMDAgfHwgeWVhciAlIDQwMCA9PSAw
KSkgewotICAgICAgICAgICAgaWYgKGRheSA9PSAyOSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChkYXkgPT0gMjgpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIHJldHVybiBsYXN0RGF5c1ttb250aF0gPT0gZGF5OwotfQotCi1z
dGF0aWMgU3RyaW5nIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhjb25zdCBGVFBUaW1lJiBmaWxlVGlt
ZSkKLXsKLSAgICAvLyBGSVhNRTogTmVlZCB0byBsb2NhbGl6ZSB0aGlzIHN0cmluZz8KLQotICAg
IFN0cmluZyB0aW1lT2ZEYXk7Ci0KLSAgICBpZiAoIShmaWxlVGltZS50bV9ob3VyID09IDAgJiYg
ZmlsZVRpbWUudG1fbWluID09IDAgJiYgZmlsZVRpbWUudG1fc2VjID09IDApKSB7Ci0gICAgICAg
IGludCBob3VyID0gZmlsZVRpbWUudG1faG91cjsKLSAgICAgICAgQVNTRVJUKGhvdXIgPj0gMCAm
JiBob3VyIDwgMjQpOwotCi0gICAgICAgIGlmIChob3VyIDwgMTIpIHsKLSAgICAgICAgICAgIGlm
IChob3VyID09IDApCi0gICAgICAgICAgICAgICAgaG91ciA9IDEyOwotICAgICAgICAgICAgdGlt
ZU9mRGF5ID0gU3RyaW5nOjpmb3JtYXQoIiwgJWk6JTAyaSBBTSIsIGhvdXIsIGZpbGVUaW1lLnRt
X21pbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBob3VyID0gaG91ciAtIDEyOwot
ICAgICAgICAgICAgaWYgKGhvdXIgPT0gMCkKLSAgICAgICAgICAgICAgICBob3VyID0gMTI7Ci0g
ICAgICAgICAgICB0aW1lT2ZEYXkgPSBTdHJpbmc6OmZvcm1hdCgiLCAlaTolMDJpIFBNIiwgaG91
ciwgZmlsZVRpbWUudG1fbWluKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIGl0IHdh
cyB0b2RheSBvciB5ZXN0ZXJkYXksIGxldHMganVzdCBkbyB0aGF0IC0gYnV0IHdlIGhhdmUgdG8g
Y29tcGFyZSB0byB0aGUgY3VycmVudCB0aW1lCi0gICAgc3RydWN0IHRtIG5vdzsKLSAgICB0aW1l
X3Qgbm93X3QgPSB0aW1lKE5VTEwpOwotICAgIGdldExvY2FsVGltZSgmbm93X3QsICZub3cpOwot
Ci0gICAgLy8gbG9jYWx0aW1lIGRvZXMgInllYXIgPSBjdXJyZW50IHllYXIgLSAxOTAwIiwgY29t
cGVuc2F0ZSBmb3IgdGhhdCBmb3IgcmVhZGFiaWxpdHkgYW5kIGNvbXBhcmlzb24gcHVycG9zZXMK
LSAgICBub3cudG1feWVhciArPSAxOTAwOwotCi0gICAgaWYgKGZpbGVUaW1lLnRtX3llYXIgPT0g
bm93LnRtX3llYXIpIHsKLSAgICAgICAgaWYgKGZpbGVUaW1lLnRtX21vbiA9PSBub3cudG1fbW9u
KSB7Ci0gICAgICAgICAgICBpZiAoZmlsZVRpbWUudG1fbWRheSA9PSBub3cudG1fbWRheSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gIlRvZGF5IiArIHRpbWVPZkRheTsKLSAgICAgICAgICAgIGlm
IChmaWxlVGltZS50bV9tZGF5ID09IG5vdy50bV9tZGF5IC0gMSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gIlllc3RlcmRheSIgKyB0aW1lT2ZEYXk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGlmIChub3cudG1fbWRheSA9PSAxICYmIChub3cudG1fbW9uID09IGZpbGVUaW1lLnRtX21v
biArIDEgfHwgKG5vdy50bV9tb24gPT0gMCAmJiBmaWxlVGltZS50bV9tb24gPT0gMTEpKSAmJgot
ICAgICAgICAgICAgd2FzTGFzdERheU9mTW9udGgoZmlsZVRpbWUudG1feWVhciwgZmlsZVRpbWUu
dG1fbW9uLCBmaWxlVGltZS50bV9tZGF5KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gIlllc3Rl
cmRheSIgKyB0aW1lT2ZEYXk7Ci0gICAgfQotCi0gICAgaWYgKGZpbGVUaW1lLnRtX3llYXIgPT0g
bm93LnRtX3llYXIgLSAxICYmIGZpbGVUaW1lLnRtX21vbiA9PSAxMiAmJiBmaWxlVGltZS50bV9t
ZGF5ID09IDMxICYmIG5vdy50bV9tb24gPT0gMSAmJiBub3cudG1fbWRheSA9PSAxKQotICAgICAg
ICByZXR1cm4gIlllc3RlcmRheSIgKyB0aW1lT2ZEYXk7Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hh
ciogbW9udGhzW10gPSB7ICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIs
ICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIsICI/Pz8iIH07Ci0KLSAg
ICBpbnQgbW9udGggPSBmaWxlVGltZS50bV9tb247Ci0gICAgaWYgKG1vbnRoIDwgMCB8fCBtb250
aCA+IDExKQotICAgICAgICBtb250aCA9IDEyOwotCi0gICAgU3RyaW5nIGRhdGVTdHJpbmc7Ci0K
LSAgICBpZiAoZmlsZVRpbWUudG1feWVhciA+IC0xKQotICAgICAgICBkYXRlU3RyaW5nID0gbW9u
dGhzW21vbnRoXSArICcgJyArIFN0cmluZzo6bnVtYmVyKGZpbGVUaW1lLnRtX21kYXkpICsgIiwg
IiArIFN0cmluZzo6bnVtYmVyKGZpbGVUaW1lLnRtX3llYXIpOwotICAgIGVsc2UKLSAgICAgICAg
ZGF0ZVN0cmluZyA9IG1vbnRoc1ttb250aF0gKyAnICcgKyBTdHJpbmc6Om51bWJlcihmaWxlVGlt
ZS50bV9tZGF5KSArICIsICIgKyBTdHJpbmc6Om51bWJlcihub3cudG1feWVhcik7Ci0KLSAgICBy
ZXR1cm4gZGF0ZVN0cmluZyArIHRpbWVPZkRheTsKLX0KLQotdm9pZCBGVFBEaXJlY3RvcnlEb2N1
bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRMaW5l
KQotewotICAgIExpc3RSZXN1bHQgcmVzdWx0OwotICAgIENTdHJpbmcgbGF0aW4xSW5wdXQgPSBp
bnB1dExpbmUubGF0aW4xKCk7Ci0KLSAgICBGVFBFbnRyeVR5cGUgdHlwZVJlc3VsdCA9IHBhcnNl
T25lRlRQTGluZShsYXRpbjFJbnB1dC5kYXRhKCksIG1fbGlzdFN0YXRlLCByZXN1bHQpOwotCi0g
ICAgLy8gRlRQTWlzY0VudHJ5IGlzIGEgY29tbWVudCBvciB1c2FnZSBzdGF0aXN0aWMgd2hpY2gg
d2UgZG9uJ3QgY2FyZSBhYm91dCwgYW5kIGp1bmsgaXMgaW52YWxpZCBkYXRhIC0gYmFpbCBpbiB0
aGVzZSAyIGNhc2VzCi0gICAgaWYgKHR5cGVSZXN1bHQgPT0gRlRQTWlzY0VudHJ5IHx8IHR5cGVS
ZXN1bHQgPT0gRlRQSnVua0VudHJ5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgZmls
ZW5hbWUocmVzdWx0LmZpbGVuYW1lLCByZXN1bHQuZmlsZW5hbWVMZW5ndGgpOwotICAgIGlmIChy
ZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSkgewotICAgICAgICBmaWxlbmFtZS5hcHBl
bmQoIi8iKTsKLQotICAgICAgICAvLyBXZSBoYXZlIG5vIGludGVyZXN0IGluIGxpbmtpbmcgdG8g
ImN1cnJlbnQgZGlyZWN0b3J5IgotICAgICAgICBpZiAoZmlsZW5hbWUgPT0gIi4vIikKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBMT0coRlRQLCAiQXBwZW5kaW5nIGVudHJ5IC0g
JXMsICVzIiwgZmlsZW5hbWUuYXNjaWkoKS5kYXRhKCksIHJlc3VsdC5maWxlU2l6ZS5hc2NpaSgp
LmRhdGEoKSk7Ci0KLSAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVzaXplU3Ry
aW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpLCBw
cm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50eXBlID09
IEZUUERpcmVjdG9yeUVudHJ5KTsKLX0KLQotc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoU2V0dGluZ3MqIHNldHRpbmdzKQot
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IDA7Ci0gICAgaWYgKHNldHRpbmdz
KQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShzZXR0aW5ncy0+ZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwotICAgIGlmIChidWZmZXIp
Ci0gICAgICAgIExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3Ro
ICVpXG4iLCBidWZmZXItPnNpemUoKSk7Ci0gICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7Ci19
Ci0gICAgCi1ib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1w
bGF0ZSgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8U2hhcmVkQnVmZmVyPiwg
dGVtcGxhdGVEb2N1bWVudERhdGEsIChjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVu
dCgpLT5zZXR0aW5ncygpKSkpOwotICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhl
IGRhdGEsIHdlJ2QgcmF0aGVyIGFjdHVhbGx5IHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8g
dGhlIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsCi0gICAgLy8gc3RvcmUgdGhhdCBkb2N1bWVudCwg
dGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4g
IFRoZXJlIGFyZSBjb21wbGV4aXRpZXMgd2l0aCB0aGlzIAotICAgIC8vIGFwcHJvYWNoIHRoYXQg
bWFrZSBpdCB3b3J0aCBwdXR0aW5nIHRoaXMgb2ZmLgotICAgIAotICAgIGlmICghdGVtcGxhdGVE
b2N1bWVudERhdGEpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgbG9hZCB0ZW1wbGF0
ZURhdGEiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIEhUTUxEb2N1bWVu
dFBhcnNlcjo6aW5zZXJ0KFN0cmluZyh0ZW1wbGF0ZURvY3VtZW50RGF0YS0+ZGF0YSgpLCB0ZW1w
bGF0ZURvY3VtZW50RGF0YS0+c2l6ZSgpKSk7Ci0KLSAgICBSZWZQdHI8RWxlbWVudD4gdGFibGVF
bGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoImZ0cERpcmVjdG9yeVRhYmxlIik7
Ci0gICAgaWYgKCF0YWJsZUVsZW1lbnQpCi0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGZp
bmQgZWxlbWVudCBieSBpZCBcImZ0cERpcmVjdG9yeVRhYmxlXCIgaW4gdGhlIHRlbXBsYXRlIGRv
Y3VtZW50LiIpOwotICAgIGVsc2UgaWYgKCF0YWJsZUVsZW1lbnQtPmhhc1RhZ05hbWUodGFibGVU
YWcpKQotICAgICAgICBMT0dfRVJST1IoIkVsZW1lbnQgb2YgaWQgXCJmdHBEaXJlY3RvcnlUYWJs
ZVwiIGlzIG5vdCBhIHRhYmxlIGVsZW1lbnQiKTsKLSAgICBlbHNlIAotICAgICAgICBtX3RhYmxl
RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJsZUVsZW1lbnQuZ2V0
KCkpOwotCi0gICAgLy8gQmFpbCBpZiB3ZSBmb3VuZCB0aGUgdGFibGUgZWxlbWVudAotICAgIGlm
IChtX3RhYmxlRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBPdGhlcndp
c2UgY3JlYXRlIG9uZSBtYW51YWxseQotICAgIHRhYmxlRWxlbWVudCA9IGRvY3VtZW50KCktPmNy
ZWF0ZUVsZW1lbnQodGFibGVUYWcsIGZhbHNlKTsKLSAgICBtX3RhYmxlRWxlbWVudCA9IHN0YXRp
Y19jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJsZUVsZW1lbnQuZ2V0KCkpOwotICAgIEV4Y2Vw
dGlvbkNvZGUgZWM7ICAgICAgICAKLSAgICBtX3RhYmxlRWxlbWVudC0+c2V0QXR0cmlidXRlKCJp
ZCIsICJmdHBEaXJlY3RvcnlUYWJsZSIsIGVjKTsKLQotICAgIC8vIElmIHdlIGRpZG4ndCBmaW5k
IHRoZSB0YWJsZSBlbGVtZW50LCBsZXRzIHRyeSB0byBhcHBlbmQgb3VyIG93biB0byB0aGUgYm9k
eQotICAgIC8vIElmIHRoYXQgZmFpbHMgZm9yIHNvbWUgcmVhc29uLCBjcmFtIGl0IG9uIHRoZSBl
bmQgb2YgdGhlIGRvY3VtZW50IGFzIGEgbGFzdAotICAgIC8vIGRpdGNoIGVmZm9ydAotICAgIGlm
IChFbGVtZW50KiBib2R5ID0gZG9jdW1lbnQoKS0+Ym9keSgpKQotICAgICAgICBib2R5LT5hcHBl
bmRDaGlsZChtX3RhYmxlRWxlbWVudCwgZWMpOwotICAgIGVsc2UKLSAgICAgICAgZG9jdW1lbnQo
KS0+YXBwZW5kQ2hpbGQobV90YWJsZUVsZW1lbnQsIGVjKTsKLQotICAgIHJldHVybiB0cnVlOwot
fQotCi12b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpjcmVhdGVCYXNpY0RvY3VtZW50
KCkKLXsKLSAgICBMT0coRlRQLCAiQ3JlYXRpbmcgYSBiYXNpYyBGVFAgZG9jdW1lbnQgc3RydWN0
dXJlIGFzIG5vIHRlbXBsYXRlIHdhcyBsb2FkZWQiKTsKLQotICAgIC8vIEZJWE1FOiBNYWtlIHRo
aXMgImJhc2ljIGRvY3VtZW50IiBtb3JlIGFjY2VwdGFibGUKLQotICAgIFJlZlB0cjxFbGVtZW50
PiBib2R5RWxlbWVudCA9IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoYm9keVRhZywgZmFsc2Up
OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBkb2N1bWVudCgpLT5hcHBlbmRDaGlsZChi
b2R5RWxlbWVudCwgZWMpOwotCi0gICAgUmVmUHRyPEVsZW1lbnQ+IHRhYmxlRWxlbWVudCA9IGRv
Y3VtZW50KCktPmNyZWF0ZUVsZW1lbnQodGFibGVUYWcsIGZhbHNlKTsKLSAgICBtX3RhYmxlRWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJsZUVsZW1lbnQuZ2V0KCkp
OwotICAgIG1fdGFibGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoImlkIiwgImZ0cERpcmVjdG9yeVRh
YmxlIiwgZWMpOwotCi0gICAgYm9keUVsZW1lbnQtPmFwcGVuZENoaWxkKG1fdGFibGVFbGVtZW50
LCBlYyk7Ci19Ci0KLXZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25z
dCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKLXsKLSAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSB0
aGUgdGFibGUgZWxlbWVudCB0byBhcHBlbmQgdG8gYnkgbG9hZGluZyB0aGUgdGVtcGxhdGUgc2V0
IGluIHRoZSBwcmVmLCBvcgotICAgIC8vIGNyZWF0aW5nIGEgdmVyeSBiYXNpYyBkb2N1bWVudCB3
aXRoIHRoZSBhcHByb3ByaWF0ZSB0YWJsZQotICAgIGlmICghbV90YWJsZUVsZW1lbnQpIHsKLSAg
ICAgICAgaWYgKCFsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpKQotICAgICAgICAgICAgY3JlYXRlQmFz
aWNEb2N1bWVudCgpOwotICAgICAgICBBU1NFUlQobV90YWJsZUVsZW1lbnQpOwotICAgIH0KLQot
ICAgIGJvb2wgZm91bmROZXdMaW5lID0gZmFsc2U7Ci0KLSAgICBtX2Rlc3QgPSBtX2J1ZmZlcjsK
LSAgICBTZWdtZW50ZWRTdHJpbmcgc3RyID0gc291cmNlOwotICAgIHdoaWxlICghc3RyLmlzRW1w
dHkoKSkgewotICAgICAgICBVQ2hhciBjID0gKnN0cjsKLQotICAgICAgICBpZiAoYyA9PSAnXHIn
KSB7Ci0gICAgICAgICAgICAqbV9kZXN0KysgPSAnXG4nOwotICAgICAgICAgICAgZm91bmROZXdM
aW5lID0gdHJ1ZTsKLSAgICAgICAgICAgIC8vIHBvc3NpYmx5IHNraXAgYW4gTEYgaW4gdGhlIGNh
c2Ugb2YgYW4gQ1JMRiBzZXF1ZW5jZQotICAgICAgICAgICAgbV9za2lwTEYgPSB0cnVlOwotICAg
ICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xuJykgewotICAgICAgICAgICAgaWYgKCFtX3NraXBMRikK
LSAgICAgICAgICAgICAgICAqbV9kZXN0KysgPSBjOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIG1fc2tpcExGID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAqbV9kZXN0KysgPSBjOwotICAgICAgICAgICAgbV9za2lwTEYgPSBmYWxzZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHN0ci5hZHZhbmNlKCk7Ci0KLSAgICAgICAgLy8gTWF5YmUgZW5sYXJnZSB0
aGUgYnVmZmVyCi0gICAgICAgIGNoZWNrQnVmZmVyKCk7Ci0gICAgfQotCi0gICAgaWYgKCFmb3Vu
ZE5ld0xpbmUpIHsKLSAgICAgICAgbV9kZXN0ID0gbV9idWZmZXI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBVQ2hhciogc3RhcnQgPSBtX2J1ZmZlcjsKLSAgICBVQ2hhciogY3Vyc29y
ID0gc3RhcnQ7Ci0KLSAgICB3aGlsZSAoY3Vyc29yIDwgbV9kZXN0KSB7Ci0gICAgICAgIGlmICgq
Y3Vyc29yID09ICdcbicpIHsKLSAgICAgICAgICAgIG1fY2FycnlPdmVyLmFwcGVuZChTdHJpbmco
c3RhcnQsIGN1cnNvciAtIHN0YXJ0KSk7Ci0gICAgICAgICAgICBMT0coRlRQLCAiJXMiLCBtX2Nh
cnJ5T3Zlci5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBwYXJzZUFuZEFwcGVuZE9uZUxp
bmUobV9jYXJyeU92ZXIpOwotICAgICAgICAgICAgbV9jYXJyeU92ZXIgPSBTdHJpbmcoKTsKLQot
ICAgICAgICAgICAgc3RhcnQgPSArK2N1cnNvcjsKLSAgICAgICAgfSBlbHNlIAotICAgICAgICAg
ICAgY3Vyc29yKys7Ci0gICAgfQotCi0gICAgLy8gQ29weSB0aGUgcGFydGlhbCBsaW5lIHdlIGhh
dmUgbGVmdCB0byB0aGUgY2FycnlvdmVyIGJ1ZmZlcgotICAgIGlmIChjdXJzb3IgLSBzdGFydCA+
IDEpCi0gICAgICAgIG1fY2FycnlPdmVyLmFwcGVuZChTdHJpbmcoc3RhcnQsIGN1cnNvciAtIHN0
YXJ0IC0gMSkpOwotfQotCi12b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpmaW5pc2go
KQotewotICAgIC8vIFBvc3NpYmxlIHRoZSBsYXN0IGxpbmUgaW4gdGhlIGxpc3RpbmcgaGFkIG5v
IG5ld2xpbmUsIHNvIHRyeSB0byBwYXJzZSBpdCBub3cKLSAgICBpZiAoIW1fY2FycnlPdmVyLmlz
RW1wdHkoKSkgewotICAgICAgICBwYXJzZUFuZEFwcGVuZE9uZUxpbmUobV9jYXJyeU92ZXIpOwot
ICAgICAgICBtX2NhcnJ5T3ZlciA9IFN0cmluZygpOwotICAgIH0KLQotICAgIG1fdGFibGVFbGVt
ZW50ID0gMDsKLSAgICBmYXN0RnJlZShtX2J1ZmZlcik7Ci0KLSAgICBIVE1MRG9jdW1lbnRQYXJz
ZXI6OmZpbmlzaCgpOwotfQotCi1GVFBEaXJlY3RvcnlEb2N1bWVudDo6RlRQRGlyZWN0b3J5RG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCi0gICAgOiBIVE1MRG9jdW1lbnQo
ZnJhbWUsIHVybCkKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgTG9nRlRQLnN0YXRlID0gV1RGTG9n
Q2hhbm5lbE9uOwotI2VuZGlmCi19Ci0KLVBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IEZUUERp
cmVjdG9yeURvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQotewotICAgIHJldHVybiBGVFBEaXJlY3Rv
cnlEb2N1bWVudFBhcnNlcjo6Y3JlYXRlKHRoaXMpOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoRlRQRElSKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1l
bnQuaAkocmV2aXNpb24gOTU5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotIAotI2lm
bmRlZiBGVFBEaXJlY3RvcnlEb2N1bWVudF9oCi0jZGVmaW5lIEZUUERpcmVjdG9yeURvY3VtZW50
X2gKLQotI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0g
ICAgCi1jbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKLSAgICAKLWNsYXNzIEZUUERpcmVjdG9yeURv
Y3VtZW50IDogcHVibGljIEhUTUxEb2N1bWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RlRQRGlyZWN0b3J5RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtV
UkwmIHVybCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRlRQRGlyZWN0b3J5
RG9jdW1lbnQoZnJhbWUsIHVybCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGVFBEaXJlY3Rv
cnlEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpOwotfTsKLSAgICAKLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEZUUERpcmVjdG9yeURvY3VtZW50X2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCShyZXZpc2lvbiA5NTkw
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE3MTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMiBD
eXJ1cyBQYXRlbCA8Y3lwQGZiMTQudW5pLW1haW56LmRlPgotICogICAgICAgICAgIChDKSAyMDA3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIDIuMSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqLwotCi0vLyBUaGlzIHdhcyBvcmlnaW5hbGx5IE1vemlsbGEgY29kZSwgdGl0
bGVkIFBhcnNlRlRQTGlzdC5jcHAKLS8vIE9yaWdpbmFsIHZlcnNpb24gb2YgdGhpcyBmaWxlIGNh
biBjdXJyZW50bHkgYmUgZm91bmQgYXQ6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTEu
OC9zb3VyY2UvbmV0d2Vyay9zdHJlYW1jb252L2NvbnZlcnRlcnMvUGFyc2VGVFBMaXN0LmNwcAot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKEZUUERJUikKLSNpbmNsdWRlICJGVFBE
aXJlY3RvcnlQYXJzZXIuaCIKLQotI2lmIFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgPFFEYXRlVGlt
ZT4KLS8vIE9uIFdpbmRvd3MsIHVzZSB0aGUgdGhyZWFkc2FmZSAqX3IgZnVuY3Rpb25zIHByb3Zp
ZGVkIGJ5IHB0aHJlYWQuCi0jZWxpZiBPUyhXSU5ET1dTKSAmJiAoVVNFKFBUSFJFQURTKSB8fCBI
QVZFKFBUSFJFQURfSCkpCi0jaW5jbHVkZSA8cHRocmVhZC5oPgotI2VuZGlmCi0KLSNpbmNsdWRl
IDx3dGYvQVNDSUlDVHlwZS5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXVEY7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSNpZiBQTEFURk9STShRVCkgJiYgZGVmaW5l
ZChRX1dTX1dJTjMyKQotCi0vLyBSZXBsYWNlbWVudCBmb3IgZ210aW1lX3IoKSB3aGljaCBpcyBu
b3QgYXZhaWxhYmxlIG9uIE1pbkdXLgotLy8gV2UgdXNlIHRoaXMgb24gV2luMzIgUXQgcGxhdGZv
cm0gZm9yIHBvcnRhYmlsaXR5Lgotc3RydWN0IHRtIGdtdGltZVF0KGNvbnN0IFFEYXRlVGltZSYg
aW5wdXQpCi17Ci0gICAgdG0gcmVzdWx0OwotCi0gICAgUURhdGUgZGF0ZShpbnB1dC5kYXRlKCkp
OwotICAgIHJlc3VsdC50bV95ZWFyID0gZGF0ZS55ZWFyKCkgLSAxOTAwOwotICAgIHJlc3VsdC50
bV9tb24gPSBkYXRlLm1vbnRoKCk7Ci0gICAgcmVzdWx0LnRtX21kYXkgPSBkYXRlLmRheSgpOwot
ICAgIHJlc3VsdC50bV93ZGF5ID0gZGF0ZS5kYXlPZldlZWsoKTsKLSAgICByZXN1bHQudG1feWRh
eSA9IGRhdGUuZGF5T2ZZZWFyKCk7Ci0KLSAgICBRVGltZSB0aW1lKGlucHV0LnRpbWUoKSk7Ci0g
ICAgcmVzdWx0LnRtX3NlYyA9IHRpbWUuc2Vjb25kKCk7Ci0gICAgcmVzdWx0LnRtX21pbiA9IHRp
bWUubWludXRlKCk7Ci0gICAgcmVzdWx0LnRtX2hvdXIgPSB0aW1lLmhvdXIoKTsKLQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgdG0gKmdtdGltZVF0KGNvbnN0IHRpbWVf
dCAqY29uc3QgdGltZXAsIHN0cnVjdCB0bSAqcmVzdWx0KQotewotICAgIGNvbnN0IFFEYXRlVGlt
ZSBkdChRRGF0ZVRpbWU6OmZyb21UaW1lX3QoKnRpbWVwKSk7Ci0gICAgKnJlc3VsdCA9IFdlYkNv
cmU6OmdtdGltZVF0KGR0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jZGVmaW5lIGdtdGlt
ZV9yKHgsIHkpIGdtdGltZVF0KHgsIHkpCi0jZWxpZiBPUyhXSU5ET1dTKSAmJiAhZGVmaW5lZChn
bXRpbWVfcikKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTQwMCkgCi0j
ZGVmaW5lIGdtdGltZV9yKHgsIHkpIGdtdGltZV9zKCh5KSwgKHgpKQotI2Vsc2UgLyogIV9NU0Nf
VkVSICovIAotI2RlZmluZSBnbXRpbWVfcih4LHkpIChnbXRpbWUoeCk/KCooeSk9KmdtdGltZSh4
KSwoeSkpOjApCi0jZW5kaWYKLSNlbmRpZgotCi1zdGF0aWMgaW5saW5lIEZUUEVudHJ5VHlwZSBQ
YXJzaW5nRmFpbGVkKExpc3RTdGF0ZSYgc3RhdGUpCi17Ci0gIGlmIChzdGF0ZS5wYXJzZWRPbmUg
fHwgc3RhdGUubGlzdFN0eWxlKSAvKiBqdW5rIGlmIHdlIGZhaWwgdG8gcGFyc2UgKi8KLSAgICBy
ZXR1cm4gRlRQSnVua0VudHJ5OyAgICAgIC8qIHRoaXMgdGltZSBidXQgaGFkIHByZXZpb3VzbHkg
cGFyc2VkIHN1Y2Vzc2Z1bGx5ICovCi0gIHJldHVybiBGVFBNaXNjRW50cnk7ICAgICAgICAvKiBp
dHMgcGFydCBvZiBhIGNvbW1lbnQgb3IgZXJyb3IgbWVzc2FnZSAqLwotfQotCi1GVFBFbnRyeVR5
cGUgcGFyc2VPbmVGVFBMaW5lKGNvbnN0IGNoYXIqIGxpbmUsIExpc3RTdGF0ZSYgc3RhdGUsIExp
c3RSZXN1bHQmIHJlc3VsdCkKLXsKLSAgcmVzdWx0LmNsZWFyKCk7Ci0gICAgCi0gIGlmICghbGlu
ZSkKLSAgICByZXR1cm4gRlRQSnVua0VudHJ5OwotCi0gIHN0YXRlLm51bUxpbmVzKys7Ci0KLSAg
LyogY2FycnkgYnVmZmVyIGlzIG9ubHkgdmFsaWQgZnJvbSBvbmUgbGluZSB0byB0aGUgbmV4dCAq
LwotICB1bnNpZ25lZCBpbnQgY2FycnlfYnVmX2xlbiA9IHN0YXRlLmNhcnJ5QnVmZmVyTGVuZ3Ro
OwotICBzdGF0ZS5jYXJyeUJ1ZmZlckxlbmd0aCA9IDA7Ci0KLSAgdW5zaWduZWQgbGluZWxlbiA9
IDA7Ci0KLSAgLyogc3RyaXAgbGVhZGluZyB3aGl0ZXNwYWNlICovCi0gIHdoaWxlICgqbGluZSA9
PSAnICcgfHwgKmxpbmUgPT0gJ1x0JykKLSAgICBsaW5lKys7Ci0gIAotICAvKiBsaW5lIGlzIHRl
cm1pbmF0ZWQgYXQgZmlyc3QgJ1wwJyBvciAnXG4nICovCi0gIGNvbnN0IGNoYXIqIHAgPSBsaW5l
OwotICB3aGlsZSAoKnAgJiYgKnAgIT0gJ1xuJykKLSAgICBwKys7Ci0gIGxpbmVsZW4gPSBwIC0g
bGluZTsKLQotICBpZiAobGluZWxlbiA+IDAgJiYgKnAgPT0gJ1xuJyAmJiAqKHAtMSkgPT0gJ1xy
JykKLSAgICBsaW5lbGVuLS07Ci0KLSAgLyogRE9OJ1Qgc3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFj
ZS4gKi8KLQotICBpZiAobGluZWxlbiA+IDApCi0gIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAq
bW9udGhfbmFtZXMgPSAiSmFuRmViTWFyQXByTWF5SnVuSnVsQXVnU2VwT2N0Tm92RGVjIjsKLSAg
ICBjb25zdCBjaGFyICp0b2tlbnNbMTZdOyAvKiAxNiBpcyBtb3JlIHRoYW4gZW5vdWdoICovCi0g
ICAgdW5zaWduZWQgaW50IHRva2xlbltXVEZfQVJSQVlfTEVOR1RIKHRva2VucyldOwotICAgIHVu
c2lnbmVkIGludCBsaW5lbGVuX3NhbnNfd3NwOyAgLy8gbGluZSBsZW5ndGggc2FucyB3aGl0ZXNw
YWNlCi0gICAgdW5zaWduZWQgaW50IG51bXRva3MgPSAwOwotICAgIHVuc2lnbmVkIGludCB0b2tt
YXJrZXIgPSAwOyAvKiBleHRyYSBpbmZvIGZvciBsc3R5bGUgaGFuZGxlciAqLwotICAgIHVuc2ln
bmVkIGludCBtb250aF9udW0gPSAwOwotICAgIGNoYXIgdGJ1Zls0XTsKLSAgICBpbnQgbHN0eWxl
ID0gMDsKLQotICAgIGlmIChjYXJyeV9idWZfbGVuKSAvKiBWTVMgbG9uZyBmaWxlbmFtZSBjYXJy
eW92ZXIgYnVmZmVyICovCi0gICAgewotICAgICAgdG9rZW5zWzBdID0gc3RhdGUuY2FycnlCdWZm
ZXI7Ci0gICAgICB0b2tsZW5bMF0gPSBjYXJyeV9idWZfbGVuOwotICAgICAgbnVtdG9rcysrOwot
ICAgIH0KLQotICAgIHVuc2lnbmVkIGludCBwb3MgPSAwOwotICAgIHdoaWxlIChwb3MgPCBsaW5l
bGVuICYmIG51bXRva3MgPCBXVEZfQVJSQVlfTEVOR1RIKHRva2VucykpCi0gICAgewotICAgICAg
d2hpbGUgKHBvcyA8IGxpbmVsZW4gJiYgCi0gICAgICAgICAgICAobGluZVtwb3NdID09ICcgJyB8
fCBsaW5lW3Bvc10gPT0gJ1x0JyB8fCBsaW5lW3Bvc10gPT0gJ1xyJykpCi0gICAgICAgIHBvcysr
OwotICAgICAgaWYgKHBvcyA8IGxpbmVsZW4pCi0gICAgICB7Ci0gICAgICAgIHRva2Vuc1tudW10
b2tzXSA9ICZsaW5lW3Bvc107Ci0gICAgICAgIHdoaWxlIChwb3MgPCBsaW5lbGVuICYmIAotICAg
ICAgICAgICAobGluZVtwb3NdICE9ICcgJyAmJiBsaW5lW3Bvc10gIT0gJ1x0JyAmJiBsaW5lW3Bv
c10gIT0gJ1xyJykpCi0gICAgICAgICAgcG9zKys7Ci0gICAgICAgIGlmICh0b2tlbnNbbnVtdG9r
c10gIT0gJmxpbmVbcG9zXSkKLSAgICAgICAgewotICAgICAgICAgIHRva2xlbltudW10b2tzXSA9
ICgmbGluZVtwb3NdIC0gdG9rZW5zW251bXRva3NdKTsKLSAgICAgICAgICBudW10b2tzKys7ICAK
LSAgICAgICAgfQotICAgICAgfQotICAgIH0gICAgCi0KLSAgICBpZiAoIW51bXRva3MpCi0gICAg
ICByZXR1cm4gUGFyc2luZ0ZhaWxlZChzdGF0ZSk7Ci0KLSAgICBsaW5lbGVuX3NhbnNfd3NwID0g
Jih0b2tlbnNbbnVtdG9rcy0xXVt0b2tsZW5bbnVtdG9rcy0xXV0pIC0gdG9rZW5zWzBdOwotICAg
IGlmIChudW10b2tzID09IFdURl9BUlJBWV9MRU5HVEgodG9rZW5zKSkKLSAgICB7Ci0gICAgICBw
b3MgPSBsaW5lbGVuOwotICAgICAgd2hpbGUgKHBvcyA+IDAgJiYgKGxpbmVbcG9zLTFdID09ICcg
JyB8fCBsaW5lW3Bvcy0xXSA9PSAnXHQnKSkKLSAgICAgICAgcG9zLS07Ci0gICAgICBsaW5lbGVu
X3NhbnNfd3NwID0gcG9zOwotICAgIH0KLQotICAgIC8qICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrICovCi0jaWYgZGVmaW5lZChTVVBQ
T1JUX0VQTEYpCi0gICAgLyogRVBMRiBoYW5kbGluZyBtdXN0IGNvbWUgc29tZXdoZXJlIGJlZm9y
ZSAvYmluL2RscyBoYW5kbGluZy4gKi8KLSAgICBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RT
dHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ0UnKSkKLSAgICB7Ci0gICAgICBpZiAoKmxpbmUg
PT0gJysnICYmIGxpbmVsZW4gPiA0ICYmIG51bXRva3MgPj0gMikKLSAgICAgIHsKLSAgICAgICAg
cG9zID0gMTsKLSAgICAgICAgd2hpbGUgKHBvcyA8IChsaW5lbGVuLTEpKQotICAgICAgICB7Ci0g
ICAgICAgICAgcCA9ICZsaW5lW3BvcysrXTsKLSAgICAgICAgICBpZiAoKnAgPT0gJy8nKSAKLSAg
ICAgICAgICAgIHJlc3VsdC50eXBlID0gRlRQRGlyZWN0b3J5RW50cnk7IC8qIGl0cyBhIGRpciAq
LwotICAgICAgICAgIGVsc2UgaWYgKCpwID09ICdyJykKLSAgICAgICAgICAgIHJlc3VsdC50eXBl
ID0gRlRQRmlsZUVudHJ5OyAvKiBpdHMgYSBmaWxlICovCi0gICAgICAgICAgZWxzZSBpZiAoKnAg
PT0gJ20nKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQobGluZVtw
b3NdKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgd2hpbGUgKHBvcyA8IGxpbmVsZW4g
JiYgaXNBU0NJSURpZ2l0KGxpbmVbcG9zXSkpCi0gICAgICAgICAgICAgICAgcG9zKys7Ci0gICAg
ICAgICAgICAgIGlmIChwb3MgPCBsaW5lbGVuICYmIGxpbmVbcG9zXSA9PSAnLCcpCi0gICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2Vjb25kcyA9IDA7
Ci0jaWYgT1MoV0lORE9XUykKLSAgICAgICAgICAgICAgICBzc2NhbmYocCArIDEsICIlSTY0dSIs
ICZzZWNvbmRzKTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgc3NjYW5mKHAgKyAxLCAiJWxsdSIs
ICZzZWNvbmRzKTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIHRpbWVfdCB0ID0gc3RhdGljX2Nh
c3Q8dGltZV90PihzZWNvbmRzKTsKLQotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNv
ZGUgaGFzIHRoZSB5ZWFyIDIwMzggYnVnCi0gICAgICAgICAgICAgICAgZ210aW1lX3IoJnQsICZy
ZXN1bHQubW9kaWZpZWRUaW1lKTsKLSAgICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1l
LnRtX3llYXIgKz0gMTkwMDsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgIH0KLSAgICAgICAgICBlbHNlIGlmICgqcCA9PSAncycpCi0gICAgICAgICAgewotICAgICAg
ICAgICAgaWYgKGlzQVNDSUlEaWdpdChsaW5lW3Bvc10pKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICB3aGlsZSAocG9zIDwgbGluZWxlbiAmJiBpc0FTQ0lJRGlnaXQobGluZVtwb3NdKSkK
LSAgICAgICAgICAgICAgICBwb3MrKzsKLSAgICAgICAgICAgICAgaWYgKHBvcyA8IGxpbmVsZW4g
JiYgbGluZVtwb3NdID09ICcsJykKLSAgICAgICAgICAgICAgICByZXN1bHQuZmlsZVNpemUgPSBT
dHJpbmcocCArIDEsICZsaW5lW3Bvc10gLSBwICsgMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgfQotICAgICAgICAgIGVsc2UgaWYgKGlzQVNDSUlBbHBoYSgqcCkpIC8qICdpJy8ndXAnIG9y
IHVua25vd24gImZhY3QiIChwcm9wZXJ0eSkgKi8KLSAgICAgICAgICB7Ci0gICAgICAgICAgICB3
aGlsZSAocG9zIDwgbGluZWxlbiAmJiAqKytwICE9ICcsJykKLSAgICAgICAgICAgICAgcG9zKys7
Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKCpwICE9ICdcdCcgfHwgKHArMSkgIT0g
dG9rZW5zWzFdKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGJyZWFrOyAvKiBpdHMgbm90IEVQ
TEYgYWZ0ZXIgYWxsICovCi0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0ZS5wYXJzZWRPbmUgPSB0cnVlOwotICAgICAgICAgICAgc3RhdGUu
bGlzdFN0eWxlID0gbHN0eWxlID0gJ0UnOwotCi0gICAgICAgICAgICBwID0gJihsaW5lW2xpbmVs
ZW5fc2Fuc193c3BdKTsKLSAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZSA9IHRva2Vuc1sxXTsK
LSAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9IHAgLSB0b2tlbnNbMV07Ci0KLSAg
ICAgICAgICAgIGlmICghcmVzdWx0LnR5cGUpIC8qIGFjY2VzcyBkZW5pZWQgKi8KLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBGaWxlRW50cnk7IC8qIGlzIGFz
c3VtaW5nICdmJ2lsZSBjb3JyZWN0PyAqLwotICAgICAgICAgICAgICByZXR1cm4gRlRQSnVua0Vu
dHJ5OyAgICAgICAgICAgIC8qIE5PISBqdW5rIGl0LiAqLwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdC50eXBlOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAocG9z
ID49IChsaW5lbGVuLTEpIHx8IGxpbmVbcG9zXSAhPSAnLCcpCi0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICBwb3MrKzsKLSAgICAgICAgfSAvKiB3aGlsZSAocG9zIDwgbGluZWxlbikgKi8K
LSAgICAgICAgcmVzdWx0LmNsZWFyKCk7Ci0gICAgICB9IC8qIGlmICgqbGluZSA9PSAnKycgJiYg
bGluZWxlbiA+IDQgJiYgbnVtdG9rcyA+PSAyKSAqLwotICAgIH0gLyogaWYgKCFsc3R5bGUgJiYg
KCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09ICdFJykpICovCi0jZW5kaWYg
LyogU1VQUE9SVF9FUExGICovCi0KLSAgICAvKiArKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAqLwotCi0jaWYgZGVmaW5lZChTVVBQT1JU
X1ZNUykKLSAgICBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0
U3R5bGUgPT0gJ1YnKSkKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cnkgVk1T
IE11bHRpbmV0L1VDWC9DTVMgc2VydmVyICovCi0gICAgICAvKgotICAgICAgICogTGVnYWwgY2hh
cmFjdGVycyBpbiBhIFZNUyBmaWxlL2RpciBzcGVjIGFyZSBbQS1aMC05JC4tX35dLgotICAgICAg
ICogJyQnIGNhbm5vdCBiZWdpbiBhIGZpbGVuYW1lIGFuZCBgLScgY2Fubm90IGJlIHVzZWQgYXMg
dGhlIGZpcnN0IAotICAgICAgICogb3IgbGFzdCBjaGFyYWN0ZXIuICcuJyBpcyBvbmx5IHZhbGlk
IGFzIGEgZGlyZWN0b3J5IHNlcGFyYXRvciAKLSAgICAgICAqIGFuZCA8ZmlsZT4uPHR5cGU+IHNl
cGFyYXRvci4gQSBjYW5vbmljYWwgZmlsZW5hbWUgc3BlYyBtaWdodCBsb29rIAotICAgICAgICog
bGlrZSB0aGlzOiBESVNLJFZPTDpbRElSMS5ESVIyLkRJUjNdRklMRS5UWVBFOzEyMwotICAgICAg
ICogQWxsIFZNUyBGVFAgc2VydmVycyBMSVNUIGluIHVwcGVyY2FzZS4KLSAgICAgICAqCi0gICAg
ICAgKiBXZSBuZWVkIHRvIGJlIHBpY2t5IGFib3V0IHRoaXMgaW4gb3JkZXIgdG8gc3VwcG9ydAot
ICAgICAgICogbXVsdGktbGluZSBsaXN0aW5ncyBjb3JyZWN0bHkuCi0gICAgICAqLwotICAgICAg
aWYgKCFzdGF0ZS5wYXJzZWRPbmUgJiYKLSAgICAgICAgICAobnVtdG9rcyA9PSAxIHx8IChudW10
b2tzID09IDIgJiYgdG9rbGVuWzBdID09IDkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZW1jbXAodG9rZW5zWzBdLCAiRGlyZWN0b3J5IiwgOSk9PTAgKSkpCi0gICAgICB7Ci0gICAg
ICAgIC8qIElmIG5vIGRpcnN0eWxlIGhhcyBiZWVuIGRldGVjdGVkIHlldCwgYW5kIHRoaXMgbGlu
ZSBpcyBhIAotICAgICAgICAgKiBWTVMgbGlzdCdzIGRpcm5hbWUsIHRoZW4gdHVybiBvbiBWTVMg
ZGlyc3R5bGUuCi0gICAgICAgICAqIGVnICJBQ0E6W0FOT05ZTU9VU10iLCAiRElTSyRGVFA6W0FO
T05ZTU9VU10iLCAiU1lTJEFOT05GVFA6IiAKLSAgICAgICAgKi8KLSAgICAgICAgcCA9IHRva2Vu
c1swXTsKLSAgICAgICAgcG9zID0gdG9rbGVuWzBdOwotICAgICAgICBpZiAobnVtdG9rcyA9PSAy
KQotICAgICAgICB7Ci0gICAgICAgICAgcCA9IHRva2Vuc1sxXTsKLSAgICAgICAgICBwb3MgPSB0
b2tsZW5bMV07Ci0gICAgICAgIH0KLSAgICAgICAgcG9zLS07Ci0gICAgICAgIGlmIChwb3MgPj0g
MykKLSAgICAgICAgewotICAgICAgICAgIHdoaWxlIChwb3MgPiAwICYmIHBbcG9zXSAhPSAnWycp
Ci0gICAgICAgICAgewotICAgICAgICAgICAgcG9zLS07Ci0gICAgICAgICAgICBpZiAocFtwb3Nd
ID09ICctJyB8fCBwW3Bvc10gPT0gJyQnKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBp
ZiAocG9zID09IDAgfHwgcFtwb3MtMV0gPT0gJ1snIHx8IHBbcG9zLTFdID09ICcuJyB8fAotICAg
ICAgICAgICAgICAgICAgKHBbcG9zXSA9PSAnLScgJiYgKHBbcG9zKzFdID09ICddJyB8fCBwW3Bv
cysxXSA9PSAnLicpKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UgaWYgKHBbcG9zXSAhPSAnLicgJiYgcFtwb3NdICE9ICd+JyAmJiAKLSAg
ICAgICAgICAgICAgICAgICAgICFpc0FTQ0lJRGlnaXQocFtwb3NdKSAmJiAhaXNBU0NJSUFscGhh
KHBbcG9zXSkpCi0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxzZSBpZiAoaXNB
U0NJSUFscGhhKHBbcG9zXSkgJiYgcFtwb3NdICE9IHRvQVNDSUlVcHBlcihwW3Bvc10pKQotICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKHBvcyA+IDApCi0g
ICAgICAgICAgewotICAgICAgICAgICAgcG9zLS07Ci0gICAgICAgICAgICBpZiAocFtwb3NdICE9
ICc6JyB8fCBwW3BvcysxXSAhPSAnWycpCi0gICAgICAgICAgICAgIHBvcyA9IDA7Ci0gICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChwb3MgPiAwICYmIHBbcG9zXSA9PSAnOicpCi0g
ICAgICAgIHsKLSAgICAgICAgICB3aGlsZSAocG9zID4gMCkKLSAgICAgICAgICB7Ci0gICAgICAg
ICAgICBwb3MtLTsKLSAgICAgICAgICAgIGlmIChwW3Bvc10gIT0gJyQnICYmIHBbcG9zXSAhPSAn
XycgJiYgcFtwb3NdICE9ICctJyAmJgotICAgICAgICAgICAgICAgIHBbcG9zXSAhPSAnficgJiYg
IWlzQVNDSUlEaWdpdChwW3Bvc10pICYmICFpc0FTQ0lJQWxwaGEocFtwb3NdKSkKLSAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0FTQ0lJQWxwaGEocFtwb3NdKSAm
JiBwW3Bvc10gIT0gdG9BU0NJSVVwcGVyKHBbcG9zXSkpCi0gICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgIH0KLSAgICAgICAgICBpZiAocG9zID09IDApCi0gICAgICAgICAgeyAgCi0gICAg
ICAgICAgICBzdGF0ZS5saXN0U3R5bGUgPSAnVic7Ci0gICAgICAgICAgICByZXR1cm4gRlRQSnVu
a0VudHJ5OyAvKiBpdHMganVuayAqLwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAv
KiBmYWxsdGhyb3VnaCAqLyAKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKCh0b2tlbnNbMF1bdG9r
bGVuWzBdLTFdKSAhPSAnOycpCi0gICAgICB7Ci0gICAgICAgIGlmIChudW10b2tzID09IDEgJiYg
KHN0YXRlLmxpc3RTdHlsZSA9PSAnVicgJiYgIWNhcnJ5X2J1Zl9sZW4pKQotICAgICAgICAgIGxz
dHlsZSA9ICdWJzsKLSAgICAgICAgZWxzZSBpZiAobnVtdG9rcyA8IDQpCi0gICAgICAgICAgOwot
ICAgICAgICBlbHNlIGlmICh0b2tsZW5bMV0gPj0gMTAgJiYgbWVtY21wKHRva2Vuc1sxXSwgIiVS
TVMtRS1QUlYiLCAxMCkgPT0gMCkKLSAgICAgICAgICBsc3R5bGUgPSAnVic7Ci0gICAgICAgIGVs
c2UgaWYgKCgmbGluZVtsaW5lbGVuXSAtIHRva2Vuc1sxXSkgPj0gMjIgJiYKLSAgICAgICAgICAg
ICAgICAgIG1lbWNtcCh0b2tlbnNbMV0sICJpbnN1ZmZpY2llbnQgcHJpdmlsZWdlIiwgMjIpID09
IDApCi0gICAgICAgICAgbHN0eWxlID0gJ1YnOwotICAgICAgICBlbHNlIGlmIChudW10b2tzICE9
IDQgJiYgbnVtdG9rcyAhPSA2KQotICAgICAgICAgIDsKLSAgICAgICAgZWxzZSBpZiAobnVtdG9r
cyA9PSA2ICYmICgKLSAgICAgICAgICAgICAgICAgdG9rbGVuWzVdIDwgNCB8fCAqdG9rZW5zWzVd
ICE9ICcoJyB8fCAgICAgICAgLyogcGVybXMgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICh0b2tlbnNbNV1bdG9rbGVuWzVdLTFdKSAhPSAnKScgICkpCi0gICAgICAgICAgOwotICAgICAg
ICBlbHNlIGlmICggICh0b2tsZW5bMl0gPT0gMTAgfHwgdG9rbGVuWzJdID09IDExKSAmJiAgICAg
IAotICAgICAgICAgICAgICAgICAgICAgICAgKHRva2Vuc1syXVt0b2tsZW5bMl0tNV0pID09ICct
JyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgKHRva2Vuc1syXVt0b2tsZW5bMl0tOV0pID09
ICctJyAmJgotICAgICAgICAoKCh0b2tsZW5bM109PTQgfHwgdG9rbGVuWzNdPT01IHx8IHRva2xl
blszXT09NyB8fCB0b2tsZW5bM109PTgpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAodG9r
ZW5zWzNdW3Rva2xlblszXS0zXSkgPT0gJzonICkgfHwKLSAgICAgICAgICgodG9rbGVuWzNdPT0x
MCB8fCB0b2tsZW5bM109PTExICkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICh0b2tlbnNb
M11bdG9rbGVuWzNdLTNdKSA9PSAnLicgKQotICAgICAgICApICYmICAvKiB0aW1lIGluIFtIXUg6
TU1bOlNTWy5DQ11dIGZvcm1hdCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaXNBU0NJSURpZ2l0KCp0b2tlbnNbMV0pICYmIC8qIHNpemUgKi8KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzQVNDSUlEaWdpdCgqdG9rZW5zWzJdKSAmJiAvKiBkYXRl
ICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FTQ0lJRGlnaXQoKnRv
a2Vuc1szXSkgICAgLyogdGltZSAqLwotICAgICAgICAgICAgICAgICkKLSAgICAgICAgewotICAg
ICAgICAgIGxzdHlsZSA9ICdWJzsKLSAgICAgICAgfQotICAgICAgICBpZiAobHN0eWxlID09ICdW
JykKLSAgICAgICAgewotICAgICAgICAgIC8qIAotICAgICAgICAgICogTXVsdGlOZXQgRlRQOgot
ICAgICAgICAgICogICBMT0dJTi5DT007MiAgICAgICAgICAgICAgICAgMSAgIDQtTk9WLTE5OTQg
MDQ6MDkgW0FOT05ZTU9VU10gKFJXRSxSV0UsLCkKLSAgICAgICAgICAqICAgUFVCLkRJUjsxICAg
ICAgICAgICAgICAgICAgIDEgIDI3LUpBTi0xOTk0IDE0OjQ2IFtBTk9OWU1PVVNdIChSV0UsUldF
LFJFLFJXRSkKLSAgICAgICAgICAqICAgUkVBRE1FLkZUUDsxICAgICAgICAlUk1TLUUtUFJWLCBp
bnN1ZmZpY2llbnQgcHJpdmlsZWdlIG9yIGZpbGUgcHJvdGVjdGlvbiB2aW9sYXRpb24KLSAgICAg
ICAgICAqICAgUk9VU1NPUy5ESVI7MSAgICAgICAgICAgICAgIDEgIDI3LUpBTi0xOTk0IDE0OjQ4
IFtDUyxST1VTU09TXSAoUldFLFJXRSxSRSxSKQotICAgICAgICAgICogICBTNjctNTA5MDMuSlBH
OzEgICAgICAgICAgIDMyOCAgMjItU0VQLTE5OTggMTY6MTkgW0FOT05ZTU9VU10gKFJXRUQsUldF
RCwsKQotICAgICAgICAgICogVUNYIEZUUDogCi0gICAgICAgICAgKiAgIENJSS1NQU5VQUwuVEVY
OzEgIDIxMy8yMTYgIDI5LUpBTi0xOTk2IDAzOjMzOjEyICBbQU5PTllNT1UsQU5PTllNT1VTXSAo
UldFRCxSV0VELCwpCi0gICAgICAgICAgKiBDTVUvVk1TLUlQIEZUUAotICAgICAgICAgICogICBb
Vk1TU0VSVi5GSUxFU11BTEFSTS5ESVI7MSAxLzMgNS1NQVItMTk5MyAxODowOQotICAgICAgICAg
ICogVENQd2FyZSBGVFAKLSAgICAgICAgICAqICAgRk9PLkJBUjsxIDQgNS1NQVItMTk5MyAxODow
OTowMS4xMgotICAgICAgICAgICogTG9uZyBmaWxlbmFtZSBleGFtcGxlOgotICAgICAgICAgICog
ICBUSElTLUlTLUEtTE9ORy1WTVMtRklMRU5BTUUuQU5ELVRISVMtSVMtQS1MT05HLVZNUy1GSUxF
VFlQRVxyXG4KLSAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAyMTNbL25ubl0gIDI5LUpB
Ti0xOTk2IDAzOjMzWzpubl0gIFtBTk9OWU1PVSxBTk9OWU1PVVNdIChSV0VELFJXRUQsLCkKLSAg
ICAgICAgICAqLwotICAgICAgICAgIHRva21hcmtlciA9IDA7Ci0gICAgICAgICAgcCA9IHRva2Vu
c1swXTsKLSAgICAgICAgICBwb3MgPSAwOwotICAgICAgICAgIGlmICgqcCA9PSAnWycgJiYgdG9r
bGVuWzBdID49IDQpIC8qIENNVSBzdHlsZSAqLwotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChwWzFdICE9ICddJykgCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHArKzsKLSAgICAg
ICAgICAgICAgcG9zKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aGlsZSAobHN0eWxl
ICYmIHBvcyA8IHRva2xlblswXSAmJiAqcCAhPSAnXScpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgIGlmICgqcCAhPSAnJCcgJiYgKnAgIT0gJy4nICYmICpwICE9ICdfJyAmJiAqcCAhPSAn
LScgJiYKLSAgICAgICAgICAgICAgICAgICpwICE9ICd+JyAmJiAhaXNBU0NJSURpZ2l0KCpwKSAm
JiAhaXNBU0NJSUFscGhhKCpwKSkgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGxzdHls
ZSA9IDA7Ci0gICAgICAgICAgICAgIHBvcysrOwotICAgICAgICAgICAgICBwKys7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAobHN0eWxlICYmIHBvcyA8ICh0b2tsZW5bMF0tMSkpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIC8qICddJyB3YXMgZm91bmQgYW5kIHRoZXJlIGlz
IGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgYWZ0ZXIgaXQgKi8KLSAgICAgICAgICAgICAgQVNTRVJU
KCpwID09ICddJyk7Ci0gICAgICAgICAgICAgIHBvcysrOwotICAgICAgICAgICAgICBwKys7Ci0g
ICAgICAgICAgICAgIHRva21hcmtlciA9IHBvczsgLyogbGVuZ3RoIG9mIGxlYWRpbmcgIltESVIx
LkRJUjIuZXRjXSIgKi8KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIC8qIG5v
dCBhIENNVSBzdHlsZSBsaXN0aW5nICovCi0gICAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIHdoaWxlIChsc3R5bGUgJiYgcG9zIDwg
dG9rbGVuWzBdICYmICpwICE9ICc7JykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoKnAg
IT0gJyQnICYmICpwICE9ICcuJyAmJiAqcCAhPSAnXycgJiYgKnAgIT0gJy0nICYmCi0gICAgICAg
ICAgICAgICAgKnAgIT0gJ34nICYmICFpc0FTQ0lJRGlnaXQoKnApICYmICFpc0FTQ0lJQWxwaGEo
KnApKQotICAgICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgICAgZWxzZSBpZiAoaXNB
U0NJSUFscGhhKCpwKSAmJiAqcCAhPSB0b0FTQ0lJVXBwZXIoKnApKQotICAgICAgICAgICAgICBs
c3R5bGUgPSAwOwotICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgcG9zKys7Ci0gICAgICAg
ICAgfQotICAgICAgICAgIGlmIChsc3R5bGUgJiYgKnAgPT0gJzsnKQotICAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChwb3MgPT0gMCB8fCBwb3MgPT0gKHRva2xlblswXS0xKSkKLSAgICAgICAg
ICAgICAgbHN0eWxlID0gMDsKLSAgICAgICAgICAgIGZvciAocG9zKys7bHN0eWxlICYmIHBvcyA8
IHRva2xlblswXTtwb3MrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYgKCFpc0FT
Q0lJRGlnaXQodG9rZW5zWzBdW3Bvc10pKQotICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIHBvcyA9IChwIC0gdG9rZW5zWzBd
KTsgLyogPT4gZm5sZW5ndGggc2FucyAiOyMjIyMiICovCi0gICAgICAgICAgcG9zIC09IHRva21h
cmtlcjsgICAgICAvKiA9PiBmbmxlbmd0aCBzYW5zICJbRElSMS5ESVIyLmV0Y10iICovCi0gICAg
ICAgICAgcCA9ICYodG9rZW5zWzBdW3Rva21hcmtlcl0pOyAvKiBvZmZzZXQgb2YgYmFzZW5hbWUg
Ki8KLQotICAgICAgICAgIGlmICghbHN0eWxlIHx8IHBvcyA9PSAwIHx8IHBvcyA+IDgwKSAvKiBW
TVMgZmlsZW5hbWVzIGNhbid0IGJlIGxvbmdlciB0aGFuIHRoYXQgKi8KLSAgICAgICAgICB7Ci0g
ICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChu
dW10b2tzID09IDEpCi0gICAgICAgICAgeyAKLSAgICAgICAgICAgIC8qIGlmIFZNUyBoYXMgYmVl
biBkZXRlY3RlZCBhbmQgdGhlcmUgaXMgb25seSBvbmUgdG9rZW4gYW5kIHRoYXQgCi0gICAgICAg
ICAgICAgKiB0b2tlbiB3YXMgYSBWTVMgZmlsZW5hbWUgdGhlbiB0aGlzIGlzIGEgbXVsdGlsaW5l
IFZNUyBMSVNUIGVudHJ5LgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChwb3MgPj0g
KHNpemVvZihzdGF0ZS5jYXJyeUJ1ZmZlciktMSkpCi0gICAgICAgICAgICAgIHBvcyA9IChzaXpl
b2Yoc3RhdGUuY2FycnlCdWZmZXIpLTEpOyAvKiBzaG91bGRuJ3QgaGFwcGVuICovCi0gICAgICAg
ICAgICBtZW1jcHkoIHN0YXRlLmNhcnJ5QnVmZmVyLCBwLCBwb3MgKTsKLSAgICAgICAgICAgIHN0
YXRlLmNhcnJ5QnVmZmVyTGVuZ3RoID0gcG9zOwotICAgICAgICAgICAgcmV0dXJuIEZUUEp1bmtF
bnRyeTsgLyogdGVsbCBjYWxsZXIgdG8gdHJlYXQgYXMganVuayAqLwotICAgICAgICAgIH0KLSAg
ICAgICAgICBlbHNlIGlmIChpc0FTQ0lJRGlnaXQoKnRva2Vuc1sxXSkpIC8qIG5vdCBuby1wcml2
cyBtZXNzYWdlICovCi0gICAgICAgICAgewotICAgICAgICAgICAgZm9yIChwb3MgPSAwOyBsc3R5
bGUgJiYgcG9zIDwgKHRva2xlblsxXSk7IHBvcysrKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICBpZiAoIWlzQVNDSUlEaWdpdCgodG9rZW5zWzFdW3Bvc10pKSAmJiAodG9rZW5zWzFdW3Bv
c10pICE9ICcvJykKLSAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKGxzdHlsZSAmJiBudW10b2tzID4gNCkgLyogTXVsdGluZXQgb3IgVUNY
IGJ1dCBub3QgQ01VICovCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGZvciAocG9zID0g
MTsgbHN0eWxlICYmIHBvcyA8ICh0b2tsZW5bNV0tMSk7IHBvcysrKQotICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgcCA9ICYodG9rZW5zWzVdW3Bvc10pOwotICAgICAgICAgICAgICAg
IGlmICgqcCE9J1InICYmICpwIT0nVycgJiYgKnAhPSdFJyAmJiAqcCE9J0QnICYmICpwIT0nLCcp
Ci0gICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9IC8qIHBhc3NlZCBpbml0aWFsIHRlc3RzICov
Ci0gICAgICB9IC8qIGVsc2UgaWYgKCh0b2tlbnNbMF1bdG9rbGVuWzBdLTFdKSAhPSAnOycpICov
ICAgIAotCi0gICAgICBpZiAobHN0eWxlID09ICdWJykKLSAgICAgIHsKLSAgICAgICAgc3RhdGUu
cGFyc2VkT25lID0gdHJ1ZTsKLSAgICAgICAgc3RhdGUubGlzdFN0eWxlID0gbHN0eWxlOwotCi0g
ICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoKnRva2Vuc1sxXSkpICAvKiBub3QgcGVybWlzc2lvbiBk
ZW5pZWQgZXRjICovCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBzdHJpcCBsZWFkaW5nIGRpcmVj
dG9yeSBuYW1lICovCi0gICAgICAgICAgaWYgKCp0b2tlbnNbMF0gPT0gJ1snKSAvKiBDTVUgc2Vy
dmVyICovCi0gICAgICAgICAgewotICAgICAgICAgICAgcG9zID0gdG9rbGVuWzBdLTE7Ci0gICAg
ICAgICAgICBwID0gdG9rZW5zWzBdKzE7Ci0gICAgICAgICAgICB3aGlsZSAoKnAgIT0gJ10nKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICBwKys7Ci0gICAgICAgICAgICAgIHBvcy0tOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rbGVuWzBdID0gLS1wb3M7Ci0gICAgICAgICAg
ICB0b2tlbnNbMF0gPSArK3A7Ci0gICAgICAgICAgfQotICAgICAgICAgIHBvcyA9IDA7Ci0gICAg
ICAgICAgd2hpbGUgKHBvcyA8IHRva2xlblswXSAmJiAodG9rZW5zWzBdW3Bvc10pICE9ICc7JykK
LSAgICAgICAgICAgIHBvcysrOwotICAgICAgIAotICAgICAgICAgIHJlc3VsdC5jYXNlU2Vuc2l0
aXZlID0gdHJ1ZTsKLSAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUEZpbGVFbnRyeTsKLSAgICAg
ICAgICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbMF07Ci0gICAgICAgICAgcmVzdWx0LmZpbGVu
YW1lTGVuZ3RoID0gcG9zOwotCi0gICAgICAgICAgaWYgKHBvcyA+IDQpCi0gICAgICAgICAgewot
ICAgICAgICAgICAgcCA9ICYodG9rZW5zWzBdW3Bvcy00XSk7Ci0gICAgICAgICAgICBpZiAocFsw
XSA9PSAnLicgJiYgcFsxXSA9PSAnRCcgJiYgcFsyXSA9PSAnSScgJiYgcFszXSA9PSAnUicpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCAtPSA0Owot
ICAgICAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUERpcmVjdG9yeUVudHJ5OwotICAgICAgICAg
ICAgfQotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChyZXN1bHQudHlwZSAhPSBGVFBEaXJl
Y3RvcnlFbnRyeSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvKiAjIyMjIG9yIHVzZWQvYWxs
b2NhdGVkIGZvcm0uIElmIHVzZWQvYWxsb2NhdGVkIGZvcm0sIHRoZW4KLSAgICAgICAgICAgICAq
ICd1c2VkJyBpcyB0aGUgc2l6ZSBpbiBieXRlcyBpZiBhbmQgb25seSBpZiAndXNlZCc8PWFsbG9j
YXRlZC4KLSAgICAgICAgICAgICAqIElmICd1c2VkJyBpcyBzaXplIGluIGJ5dGVzIHRoZW4gaXQg
Y2FuIGJlID4gMl4zMgotICAgICAgICAgICAgICogSWYgJ3VzZWQnIGlzIG5vdCBzaXplIGluIGJ5
dGVzIHRoZW4gaXQgaXMgc2l6ZSBpbiBibG9ja3MuCi0gICAgICAgICAgICAqLwotICAgICAgICAg
ICAgcG9zID0gMDsKLSAgICAgICAgICAgIHdoaWxlIChwb3MgPCB0b2tsZW5bMV0gJiYgKHRva2Vu
c1sxXVtwb3NdKSAhPSAnLycpCi0gICAgICAgICAgICAgIHBvcysrOwotICAgICAgICAgICAgCi0v
KgotICogSSd2ZSBuZXZlciBzZWVuIHNpemUgY29tZSBiYWNrIGluIGJ5dGVzLCBpdHMgYWx3YXlz
IGluIGJsb2NrcywgYW5kIAotICogdGhlIGZvbGxvd2luZyB0ZXN0IGZhaWxzLiBTbywgYWx3YXlz
IHBlcmZvcm0gdGhlICJzaXplIGluIGJsb2NrcyIuCi0gKiBJJ20gbGVhdmluZyB0aGUgInNpemUg
aW4gYnl0ZXMiIGNvZGUgaWYnZCBvdXQgaW4gY2FzZSB3ZSBldmVyIG5lZWQKLSAqIHRvIHJlLWlu
c3RhdGUgaXQuCi0qLwotI2lmIDAKLSAgICAgICAgICAgIGlmIChwb3MgPCB0b2tsZW5bMV0gJiYg
KCAocG9zPDwxKSA+ICh0b2tsZW5bMV0tMSkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cnRvdWwo
dG9rZW5zWzFdLCAoY2hhciAqKikwLCAxMCkgPiAKLSAgICAgICAgICAgICAgICAgIHN0cnRvdWwo
dG9rZW5zWzFdK3BvcysxLCAoY2hhciAqKikwLCAxMCkpICAgICAgICApKQotICAgICAgICAgICAg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2l6ZSBpcyBpbiBieXRlcyAq
LwotICAgICAgICAgICAgICBpZiAocG9zID4gKHNpemVvZihyZXN1bHQuZmVfc2l6ZSktMSkpCi0g
ICAgICAgICAgICAgICAgcG9zID0gc2l6ZW9mKHJlc3VsdC5mZV9zaXplKS0xOwotICAgICAgICAg
ICAgICBtZW1jcHkoIHJlc3VsdC5mZV9zaXplLCB0b2tlbnNbMV0sIHBvcyApOwotICAgICAgICAg
ICAgICByZXN1bHQuZmVfc2l6ZVtwb3NdID0gJ1wwJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UgLyogc2l6ZSBpcyBpbiBibG9ja3MgKi8KLSNlbmRpZgotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAvKiBzaXplIHJlcXVpcmVzIG11bHRpcGxpY2F0aW9uIGJ5IGJsb2Nrc2l6
ZS4gCi0gICAgICAgICAgICAgICAqCi0gICAgICAgICAgICAgICAqIFdlIGNvdWxkIGFzc3VtZSBi
bG9ja3NpemUgaXMgNTEyIChsaWtlIEx5bnggZG9lcykgYW5kCi0gICAgICAgICAgICAgICAqIHNo
aWZ0IGJ5IDksIGJ1dCB0aGF0IG1pZ2h0IG5vdCBiZSByaWdodC4gRXZlbiBpZiBpdCAKLSAgICAg
ICAgICAgICAgICogd2VyZSwgZG9pbmcgdGhhdCB3b3VsZG4ndCByZWZsZWN0IHdoYXQgdGhlIGZp
bGUncyAKLSAgICAgICAgICAgICAgICogcmVhbCBzaXplIHdhcy4gVGhlIHNhbmVzdCB0aGluZyB0
byBkbyBpcyBub3QgdXNlIHRoZQotICAgICAgICAgICAgICAgKiBMSVNUaW5nJ3MgZmlsZXNpemUs
IHNvIHdlIHdvbid0IChsaWtlIGZ0cG1pcnJvcikuCi0gICAgICAgICAgICAgICAqCi0gICAgICAg
ICAgICAgICAqIHVsbHRvYSgoKHVuc2lnbmVkIGxvbmcgbG9uZylmc3opPDw5LCByZXN1bHQuZmVf
c2l6ZSwgMTApOwotICAgICAgICAgICAgICAgKgotICAgICAgICAgICAgICAgKiBBIGJsb2NrIGlz
IGFsd2F5cyA1MTIgYnl0ZXMgb24gT3BlblZNUywgY29tcHV0ZSBzaXplLgotICAgICAgICAgICAg
ICAgKiBTbyBpdHMgcm91bmRlZCB1cCB0byB0aGUgbmV4dCBibG9jaywgc28gd2hhdCwgaXRzIGJl
dHRlcgotICAgICAgICAgICAgICAgKiB0aGFuIG5vdCBzaG93aW5nIHRoZSBzaXplIGF0IGFsbC4K
LSAgICAgICAgICAgICAgICogQSBibG9jayBpcyBhbHdheXMgNTEyIGJ5dGVzIG9uIE9wZW5WTVMs
IGNvbXB1dGUgc2l6ZS4KLSAgICAgICAgICAgICAgICogU28gaXRzIHJvdW5kZWQgdXAgdG8gdGhl
IG5leHQgYmxvY2ssIHNvIHdoYXQsIGl0cyBiZXR0ZXIKLSAgICAgICAgICAgICAgICogdGhhbiBu
b3Qgc2hvd2luZyB0aGUgc2l6ZSBhdCBhbGwuCi0gICAgICAgICAgICAgICovCi0gICAgICAgICAg
ICAgIHVpbnQ2NF90IHNpemUgPSBzdHJ0b3VsKHRva2Vuc1sxXSwgTlVMTCwgMTApICogNTEyOwot
ICAgICAgICAgICAgICByZXN1bHQuZmlsZVNpemUgPSBTdHJpbmc6Om51bWJlcihzaXplKTsKLSAg
ICAgICAgICAgIH0gCi0KLSAgICAgICAgICB9IC8qIGlmIChyZXN1bHQudHlwZSAhPSBGVFBEaXJl
Y3RvcnlFbnRyeSkgKi8KLQotICAgICAgICAgIHAgPSB0b2tlbnNbMl0gKyAyOwotICAgICAgICAg
IGlmICgqcCA9PSAnLScpCi0gICAgICAgICAgICBwKys7Ci0gICAgICAgICAgdGJ1ZlswXSA9IHBb
MF07Ci0gICAgICAgICAgdGJ1ZlsxXSA9IHRvQVNDSUlMb3dlcihwWzFdKTsKLSAgICAgICAgICB0
YnVmWzJdID0gdG9BU0NJSUxvd2VyKHBbMl0pOwotICAgICAgICAgIG1vbnRoX251bSA9IDA7Ci0g
ICAgICAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCAoMTIqMyk7IHBvcys9MykKLSAgICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAodGJ1ZlswXSA9PSBtb250aF9uYW1lc1twb3MrMF0gJiYgCi0gICAg
ICAgICAgICAgICAgdGJ1ZlsxXSA9PSBtb250aF9uYW1lc1twb3MrMV0gJiYgCi0gICAgICAgICAg
ICAgICAgdGJ1ZlsyXSA9PSBtb250aF9uYW1lc1twb3MrMl0pCi0gICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgbW9udGhfbnVtKys7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmICht
b250aF9udW0gPj0gMTIpCi0gICAgICAgICAgICBtb250aF9udW0gPSAwOwotICAgICAgICAgIHJl
c3VsdC5tb2RpZmllZFRpbWUudG1fbW9uID0gbW9udGhfbnVtOwotICAgICAgICAgIHJlc3VsdC5t
b2RpZmllZFRpbWUudG1fbWRheSA9IGF0b2kodG9rZW5zWzJdKTsKLSAgICAgICAgICByZXN1bHQu
bW9kaWZpZWRUaW1lLnRtX3llYXIgPSBhdG9pKHArNCk7IC8vIE5TUFIgd2FudHMgeWVhciBhcyBY
WFhYCi0KLSAgICAgICAgICBwID0gdG9rZW5zWzNdICsgMjsKLSAgICAgICAgICBpZiAoKnAgPT0g
JzonKQotICAgICAgICAgICAgcCsrOwotICAgICAgICAgIGlmIChwWzJdID09ICc6JykKLSAgICAg
ICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fc2VjID0gYXRvaShwKzMpOwotICAgICAgICAg
IHJlc3VsdC5tb2RpZmllZFRpbWUudG1faG91ciA9IGF0b2kodG9rZW5zWzNdKTsKLSAgICAgICAg
ICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21pbiAgPSBhdG9pKHApOwotICAgICAgCi0gICAgICAg
ICAgcmV0dXJuIHJlc3VsdC50eXBlOwotCi0gICAgICAgIH0gLyogaWYgKGlzQVNDSUlEaWdpdCgq
dG9rZW5zWzFdKSkgKi8KLQotICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5OyAvKiBqdW5rICov
Ci0KLSAgICAgIH0gLyogaWYgKGxzdHlsZSA9PSAnVicpICovCi0gICAgfSAvKiBpZiAoIWxzdHls
ZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ1YnKSkgKi8KLSNl
bmRpZgotCi0gICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysgKi8KLQotI2lmIGRlZmluZWQoU1VQUE9SVF9DTVMpCi0gICAgLyog
VmlydHVhbCBNYWNoaW5lL0NvbnZlcnNhdGlvbmFsIE1vbml0b3IgU3lzdGVtIChJQk0gTWFpbmZy
YW1lKSAqLwotICAgIGlmICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxp
c3RTdHlsZSA9PSAnQycpKSAgLyogVk0vQ01TICovCi0gICAgewotICAgICAgLyogTElTVGluZyBh
Y2NvcmRpbmcgdG8gbWlycm9yLnBsCi0gICAgICAgKiBGaWxlbmFtZSBGaWxlVHlwZSAgRm0gRm9y
bWF0IExyZWNsICBSZWNvcmRzIEJsb2NrcyBEYXRlICAgICAgVGltZQotICAgICAgICogTEFTVElO
RyAgR0xPQkFMViAgIEExIFYgICAgICA0MSAgICAgMjEgICAgIDEgICAgICAgOS8xNi85MSAgIDE1
OjEwOjMyCi0gICAgICAgKiBKNDM0MDEgICBORVRMT0cgICAgQTAgViAgICAgIDc3ICAgICAxICAg
ICAgMSAgICAgICA5LzEyLzkxICAgMTI6MzY6MDQKLSAgICAgICAqIFBST0ZJTEUgIEVYRUMgICAg
ICBBMSBWICAgICAgMTcgICAgIDMgICAgICAxICAgICAgIDkvMTIvOTEgICAxMjozOTowNwotICAg
ICAgICogRElSVU5JWCAgU0NSSVBUICAgIEExIFYgICAgICA3NyAgICAgMTIxNiAgIDE3ICAgICAg
MS8wNC85MyAgIDIwOjMwOjQ3Ci0gICAgICAgKiBNQUlMICAgICBQUk9GSUxFICAgQTIgRiAgICAg
IDgwICAgICAxICAgICAgMSAgICAgICAxMC8xNC85MiAgMTY6MTI6MjcKLSAgICAgICAqIEJBRFky
SyAgIFRFWFQgICAgICBBMCBWICAgICAgMSAgICAgIDEgICAgICAxICAgICAgIDEvMDMvMTAyICAx
MDoxMToxMgotICAgICAgICogQVVUSE9SUyAgICAgICAgICAgIEExIERJUiAgICAtICAgICAgLSAg
ICAgIC0gICAgICAgOS8yMC85OSAgIDEwOjMxOjExCi0gICAgICAgKgotICAgICAgICogTElTVGlu
ZyBmcm9tIHZtLm1hcmlzdC5lZHUgYW5kIHZtLnNjLmVkdQotICAgICAgICogMjIwLUZUUFNFUlZF
IElCTSBWTSBMZXZlbCA0MjAgYXQgVk0uTUFSSVNULkVEVSwgMDQ6NTg6MTIgRURUIFdFRE5FU0RB
WSAyMDAyLTA3LTEwCi0gICAgICAgKiBBVVRIT1JTICAgICAgICAgICBESVIgICAgICAgIC0gICAg
ICAgICAgLSAgICAgICAgICAtIDE5OTktMDktMjAgMTA6MzE6MTEgLQotICAgICAgICogSEFSUklO
R1RPTiAgICAgICAgRElSICAgICAgICAtICAgICAgICAgIC0gICAgICAgICAgLSAxOTk3LTAyLTEy
IDE1OjMzOjI4IC0KLSAgICAgICAqIFBJQ1MgICAgICAgICAgICAgIERJUiAgICAgICAgLSAgICAg
ICAgICAtICAgICAgICAgIC0gMjAwMC0xMC0xMiAxNTo0MzoyMyAtCi0gICAgICAgKiBTWVNGSUxF
ICAgICAgICAgICBESVIgICAgICAgIC0gICAgICAgICAgLSAgICAgICAgICAtIDIwMDAtMDctMjAg
MTc6NDg6MDEgLQotICAgICAgICogV0VMQ05WVCAgRVhFQyAgICAgViAgICAgICAgIDcyICAgICAg
ICAgIDkgICAgICAgICAgMSAxOTk5LTA5LTIwIDE3OjE2OjE4IC0KLSAgICAgICAqIFdFTENPTUUg
IEVSRUFETUUgIEYgICAgICAgICA4MCAgICAgICAgIDIxICAgICAgICAgIDEgMTk5OS0xMi0yNyAx
NjoxOTowMCAtCi0gICAgICAgKiBXRUxDT01FICBSRUFETUUgICBWICAgICAgICAgODIgICAgICAg
ICAyMSAgICAgICAgICAxIDE5OTktMTItMjcgMTY6MTk6MDQgLQotICAgICAgICogUkVBRE1FICAg
QU5PTllNT1UgViAgICAgICAgIDcxICAgICAgICAgMjYgICAgICAgICAgMSAxOTk3LTA0LTAyIDEy
OjMzOjIwIFRDUDI5MQotICAgICAgICogUkVBRE1FICAgQU5PTllPTEQgViAgICAgICAgIDcxICAg
ICAgICAgMTUgICAgICAgICAgMSAxOTk1LTA4LTI1IDE2OjA0OjI3IFRDUDI5MQotICAgICAgKi8K
LSAgICAgIGlmIChudW10b2tzID49IDcgJiYgKHRva2xlblswXSt0b2tsZW5bMV0pIDw9IDE2KQot
ICAgICAgewotICAgICAgICBmb3IgKHBvcyA9IDE7ICFsc3R5bGUgJiYgKHBvcys1KSA8IG51bXRv
a3M7IHBvcysrKQotICAgICAgICB7Ci0gICAgICAgICAgcCA9IHRva2Vuc1twb3NdOwotICAgICAg
ICAgIGlmICgodG9rbGVuW3Bvc10gPT0gMSAmJiAoKnAgPT0gJ0YnIHx8ICpwID09ICdWJykpIHx8
Ci0gICAgICAgICAgICAgICh0b2tsZW5bcG9zXSA9PSAzICYmICpwID09ICdEJyAmJiBwWzFdID09
ICdJJyAmJiBwWzJdID09ICdSJykpCi0gICAgICAgICAgewotICAgICAgICAgICAgaWYgKHRva2xl
bltwb3MrNV0gPT0gOCAmJiAodG9rZW5zW3Bvcys1XVsyXSkgPT0gJzonICYmCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0b2tlbnNbcG9zKzVdWzVdKSA9PSAnOicgICAp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHAgPSB0b2tlbnNbcG9zKzRdOwotICAgICAg
ICAgICAgICBpZiAoKHRva2xlbltwb3MrNF0gPT0gMTAgJiYgcFs0XSA9PSAnLScgJiYgcFs3XSA9
PSAnLScpIHx8Ci0gICAgICAgICAgICAgICAgICAodG9rbGVuW3Bvcys0XSA+PSA3ICYmIHRva2xl
bltwb3MrNF0gPD0gOSAmJiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwWygocFsxXSE9
Jy8nKT8oMik6KDEpKV0gPT0gJy8nICYmIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBb
KChwWzFdIT0nLycpPyg1KTooNCkpXSA9PSAnLycpKQotICAgICAgICAgICAgICAgLyogWTJLIGJ1
Z3MgcG9zc2libGUgKCI3LzA2LzEwMiIgb3IgIjEzLzAyLzEwMSIpICovCi0gICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBpZiAoICgqdG9rZW5zW3BvcysxXSA9PSAnLScgJiYKLSAgICAg
ICAgICAgICAgICAgICAgICAqdG9rZW5zW3BvcysyXSA9PSAnLScgJiYKLSAgICAgICAgICAgICAg
ICAgICAgICAqdG9rZW5zW3BvcyszXSA9PSAnLScpICB8fAotICAgICAgICAgICAgICAgICAgICAg
IChpc0FTQ0lJRGlnaXQoKnRva2Vuc1twb3MrMV0pICYmCi0gICAgICAgICAgICAgICAgICAgICAg
IGlzQVNDSUlEaWdpdCgqdG9rZW5zW3BvcysyXSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAg
aXNBU0NJSURpZ2l0KCp0b2tlbnNbcG9zKzNdKSkgKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgIGxzdHlsZSA9ICdDJzsKLSAgICAgICAgICAgICAgICAgIHRva21hcmtlciA9
IHBvczsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICB9Ci0gICAgICAgIH0gLyogZm9yIChwb3MgPSAxOyAhbHN0eWxlICYmIChwb3Mr
NSkgPCBudW10b2tzOyBwb3MrKykgKi8KLSAgICAgIH0gLyogaWYgKG51bXRva3MgPj0gNykgKi8K
LQotICAgICAgLyogZXh0cmEgY2hlY2tpbmcgaWYgZmlyc3QgcGFzcyAqLwotICAgICAgaWYgKGxz
dHlsZSAmJiAhc3RhdGUubGlzdFN0eWxlKSAKLSAgICAgIHsKLSAgICAgICAgZm9yIChwb3MgPSAw
LCBwID0gdG9rZW5zWzBdOyBsc3R5bGUgJiYgcG9zIDwgdG9rbGVuWzBdOyBwb3MrKywgcCsrKQot
ICAgICAgICB7ICAKLSAgICAgICAgICBpZiAoaXNBU0NJSUFscGhhKCpwKSAmJiB0b0FTQ0lJVXBw
ZXIoKnApICE9ICpwKQotICAgICAgICAgICAgbHN0eWxlID0gMDsKLSAgICAgICAgfSAKLSAgICAg
ICAgZm9yIChwb3MgPSB0b2ttYXJrZXIrMTsgcG9zIDw9IHRva21hcmtlciszOyBwb3MrKykKLSAg
ICAgICAgewotICAgICAgICAgIGlmICghKHRva2xlbltwb3NdID09IDEgJiYgKnRva2Vuc1twb3Nd
ID09ICctJykpCi0gICAgICAgICAgewotICAgICAgICAgICAgZm9yIChwID0gdG9rZW5zW3Bvc107
IGxzdHlsZSAmJiBwPCh0b2tlbnNbcG9zXSt0b2tsZW5bcG9zXSk7IHArKykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKnApKQotICAgICAgICAgICAgICAg
IGxzdHlsZSA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIGZvciAocG9zID0gMCwgcCA9IHRva2Vuc1t0b2ttYXJrZXIrNF07IAotICAgICAgICAgICAg
IGxzdHlsZSAmJiBwb3MgPCB0b2tsZW5bdG9rbWFya2VyKzRdOyBwb3MrKywgcCsrKQotICAgICAg
ICB7Ci0gICAgICAgICAgaWYgKCpwID09ICcvJykKLSAgICAgICAgICB7IAotICAgICAgICAgICAg
LyogVGhlcmUgbWF5IGJlIFkySyBidWdzIGluIHRoZSBkYXRlLiBEb24ndCBzaW1wbGlmeSB0bwot
ICAgICAgICAgICAgICogcG9zICE9IChsZW4tMykgJiYgcG9zICE9IChsZW4tNikgbGlrZSB0aW1l
IGlzIGRvbmUuCi0gICAgICAgICAgICAqLyAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICgo
dG9rZW5zW3Rva21hcmtlcis0XVsxXSkgPT0gJy8nKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICBpZiAocG9zICE9IDEgJiYgcG9zICE9IDQpCi0gICAgICAgICAgICAgICAgbHN0eWxlID0g
MDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHBvcyAhPSAyICYmIHBvcyAh
PSA1KQotICAgICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgIH0KLSAgICAgICAgICBl
bHNlIGlmICgqcCAhPSAnLScgJiYgIWlzQVNDSUlEaWdpdCgqcCkpCi0gICAgICAgICAgICBsc3R5
bGUgPSAwOwotICAgICAgICAgIGVsc2UgaWYgKCpwID09ICctJyAmJiBwb3MgIT0gNCAmJiBwb3Mg
IT0gNykKLSAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChw
b3MgPSAwLCBwID0gdG9rZW5zW3Rva21hcmtlcis1XTsgCi0gICAgICAgICAgICAgbHN0eWxlICYm
IHBvcyA8IHRva2xlblt0b2ttYXJrZXIrNV07IHBvcysrLCBwKyspCi0gICAgICAgIHsKLSAgICAg
ICAgICBpZiAoKnAgIT0gJzonICYmICFpc0FTQ0lJRGlnaXQoKnApKQotICAgICAgICAgICAgbHN0
eWxlID0gMDsKLSAgICAgICAgICBlbHNlIGlmICgqcCA9PSAnOicgJiYgcG9zICE9ICh0b2tsZW5b
dG9rbWFya2VyKzVdLTMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHBvcyAhPSAo
dG9rbGVuW3Rva21hcmtlcis1XS02KSkKLSAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0gICAgICAg
IH0KLSAgICAgIH0gLyogaW5pdGlhbCBpZigpICovCi0KLSAgICAgIGlmIChsc3R5bGUgPT0gJ0Mn
KQotICAgICAgewotICAgICAgICBzdGF0ZS5wYXJzZWRPbmUgPSB0cnVlOwotICAgICAgICBzdGF0
ZS5saXN0U3R5bGUgPSBsc3R5bGU7Ci0KLSAgICAgICAgcCA9IHRva2Vuc1t0b2ttYXJrZXIrNF07
Ci0gICAgICAgIGlmICh0b2tsZW5bdG9rbWFya2VyKzRdID09IDEwKSAvKiBuZXdzdHlsZTogWVlZ
WS1NTS1ERCBmb3JtYXQgKi8KLSAgICAgICAgewotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRp
bWUudG1feWVhciA9IGF0b2kocCswKSAtIDE5MDA7Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVk
VGltZS50bV9tb24gID0gYXRvaShwKzUpIC0gMTsKLSAgICAgICAgICByZXN1bHQubW9kaWZpZWRU
aW1lLnRtX21kYXkgPSBhdG9pKHArOCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSAvKiBvbGRz
dHlsZTogW01dTS9ERC9ZWSBmb3JtYXQgKi8KLSAgICAgICAgewotICAgICAgICAgIHBvcyA9IHRv
a2xlblt0b2ttYXJrZXIrNF07Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24g
ID0gYXRvaShwKSAtIDE7Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0g
YXRvaSgocCtwb3MpLTUpOwotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9
IGF0b2koKHArcG9zKS0yKTsKLSAgICAgICAgICBpZiAocmVzdWx0Lm1vZGlmaWVkVGltZS50bV95
ZWFyIDwgNzApCi0gICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgKz0gMTAw
OwotICAgICAgICB9Ci0KLSAgICAgICAgcCA9IHRva2Vuc1t0b2ttYXJrZXIrNV07Ci0gICAgICAg
IHBvcyA9IHRva2xlblt0b2ttYXJrZXIrNV07Ci0gICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUu
dG1faG91ciAgPSBhdG9pKHApOwotICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21pbiA9
IGF0b2koKHArcG9zKS01KTsKLSAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9zZWMgPSBh
dG9pKChwK3BvcyktMik7Ci0KLSAgICAgICAgcmVzdWx0LmNhc2VTZW5zaXRpdmUgPSB0cnVlOwot
ICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbMF07Ci0gICAgICAgIHJlc3VsdC5maWxl
bmFtZUxlbmd0aCA9IHRva2xlblswXTsKLSAgICAgICAgcmVzdWx0LnR5cGUgID0gRlRQRmlsZUVu
dHJ5OwotCi0gICAgICAgIHAgPSB0b2tlbnNbdG9rbWFya2VyXTsKLSAgICAgICAgaWYgKHRva2xl
blt0b2ttYXJrZXJdID09IDMgJiYgKnA9PSdEJyAmJiBwWzFdPT0nSScgJiYgcFsyXT09J1InKQot
ICAgICAgICAgIHJlc3VsdC50eXBlICA9IEZUUERpcmVjdG9yeUVudHJ5OwotCi0gICAgICAgIGlm
ICgoLypuZXdzdHlsZSovIHRva2xlblt0b2ttYXJrZXIrNF0gPT0gMTAgJiYgdG9rbWFya2VyID4g
MSkgfHwKLSAgICAgICAgICAgICgvKm9sZHN0eWxlKi8gdG9rbGVuW3Rva21hcmtlcis0XSAhPSAx
MCAmJiB0b2ttYXJrZXIgPiAyKSkKLSAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBoYXZlIGEgZmlsZXR5cGUgY29sdW1uICovCi0gICAgICAgICAgY2hhciAqZG90OwotICAg
ICAgICAgIHAgPSAmKHRva2Vuc1swXVt0b2tsZW5bMF1dKTsKLSAgICAgICAgICBtZW1jcHkoICZk
b3QsICZwLCBzaXplb2YoZG90KSApOyAvKiBOQVNUWSEgKi8KLSAgICAgICAgICAqZG90KysgPSAn
Lic7Ci0gICAgICAgICAgcCA9IHRva2Vuc1sxXTsKLSAgICAgICAgICBmb3IgKHBvcyA9IDA7IHBv
cyA8IHRva2xlblsxXTsgcG9zKyspCi0gICAgICAgICAgICAqZG90KysgPSAqcCsrOwotICAgICAg
ICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCArPSAxICsgdG9rbGVuWzFdOwotICAgICAgICB9Ci0K
LSAgICAgICAgLyogb2xkc3R5bGUgTElTVElORzogCi0gICAgICAgICAqIGZpbGVzL2RpcnMgbm90
IG9uIHRoZSAnQScgbWluaWRpc2sgYXJlIG5vdCBSRVRSaWV2YWJsZS9DSERJUmFibGUgCi0gICAg
ICAgIGlmICh0b2tsZW5bdG9rbWFya2VyKzRdICE9IDEwICYmICp0b2tlbnNbdG9rbWFya2VyLTFd
ICE9ICdBJykKLSAgICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5OwotICAgICAgICAqLwotICAg
ICAgICAKLSAgICAgICAgLyogVk0vQ01TIExJU1RpbmdzIGhhdmUgbm8gdXNhYmxlIGZpbGVzaXpl
IGZpZWxkLiAKLSAgICAgICAgICogSGF2ZSB0byB1c2UgdGhlICdTSVpFJyBjb21tYW5kIGZvciB0
aGF0LgotICAgICAgICAqLwotICAgICAgICByZXR1cm4gcmVzdWx0LnR5cGU7Ci0KLSAgICAgIH0g
LyogaWYgKGxzdHlsZSA9PSAnQycgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0
eWxlID09IGxzdHlsZSkpICovCi0gICAgfSAvKiBWTS9DTVMgKi8KLSNlbmRpZgotCi0gICAgLyog
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysgKi8KLQotI2lmIGRlZmluZWQoU1VQUE9SVF9ET1MpIC8qIFdpbk5UIERPUyBkaXJzdHlsZSAq
LwotICAgIGlmICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0eWxlIHx8IHN0YXRlLmxpc3RTdHls
ZSA9PSAnVycpKQotICAgIHsKLSAgICAgIC8qCi0gICAgICAgKiAiMTAtMjMtMDAgIDAxOjI3UE0g
ICAgICAgPERJUj4gICAgICAgICAgdmVyb25pc3QiCi0gICAgICAgKiAiMDYtMTUtMDAgIDA3OjM3
QU0gICAgICAgPERJUj4gICAgICAgICAgem9lIgotICAgICAgICogIjA3LTE0LTAwICAwMTozNVBN
ICAgICAgICAgICAgICAyMDk0OTI2IGNhbnByYW5rZGVzay50aWYiCi0gICAgICAgKiAiMDctMjEt
MDAgIDAxOjE5UE0gICAgICAgICAgICAgICAgOTUwNzcgSm9uIEthdWZmbWFuIEVuam95cyB0aGUg
R29vZCBMaWZlLmpwZyIKLSAgICAgICAqICIwNy0yMS0wMCAgMDE6MTlQTSAgICAgICAgICAgICAg
ICA1MjI3NSBOYW1lIFBsYXRlLmpwZyIKLSAgICAgICAqICIwNy0xNC0wMCAgMDE6MzhQTSAgICAg
ICAgICAgICAgMjI1MDU0MCBWYWxlbnRpbmVvZmZwcmFuay1IaVJlcy5qcGciCi0gICAgICAqLwot
ICAgICAgaWYgKChudW10b2tzID49IDQpICYmIHRva2xlblswXSA9PSA4ICYmIHRva2xlblsxXSA9
PSA3ICYmIAotICAgICAgICAgICgqdG9rZW5zWzJdID09ICc8JyB8fCBpc0FTQ0lJRGlnaXQoKnRv
a2Vuc1syXSkpICkKLSAgICAgIHsKLSAgICAgICAgcCA9IHRva2Vuc1swXTsKLSAgICAgICAgaWYg
KCBpc0FTQ0lJRGlnaXQocFswXSkgJiYgaXNBU0NJSURpZ2l0KHBbMV0pICYmIHBbMl09PSctJyAm
JiAKLSAgICAgICAgICAgICBpc0FTQ0lJRGlnaXQocFszXSkgJiYgaXNBU0NJSURpZ2l0KHBbNF0p
ICYmIHBbNV09PSctJyAmJgotICAgICAgICAgICAgIGlzQVNDSUlEaWdpdChwWzZdKSAmJiBpc0FT
Q0lJRGlnaXQocFs3XSkgKQotICAgICAgICB7Ci0gICAgICAgICAgcCA9IHRva2Vuc1sxXTsKLSAg
ICAgICAgICBpZiAoIGlzQVNDSUlEaWdpdChwWzBdKSAmJiBpc0FTQ0lJRGlnaXQocFsxXSkgJiYg
cFsyXT09JzonICYmIAotICAgICAgICAgICAgICAgaXNBU0NJSURpZ2l0KHBbM10pICYmIGlzQVND
SUlEaWdpdChwWzRdKSAmJiAKLSAgICAgICAgICAgICAgIChwWzVdPT0nQScgfHwgcFs1XT09J1An
KSAmJiBwWzZdPT0nTScpCi0gICAgICAgICAgewotICAgICAgICAgICAgbHN0eWxlID0gJ1cnOwot
ICAgICAgICAgICAgaWYgKCFzdGF0ZS5saXN0U3R5bGUpCi0gICAgICAgICAgICB7ICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgIHAgPSB0b2tlbnNbMl07Ci0gICAgICAgICAgICAgIC8qIDxESVI+
IG9yIDxKVU5DVElPTj4gKi8KLSAgICAgICAgICAgICAgaWYgKCpwICE9ICc8JyB8fCBwW3Rva2xl
blsyXS0xXSAhPSAnPicpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb3IgKHBv
cyA9IDE7IChsc3R5bGUgJiYgcG9zIDwgdG9rbGVuWzJdKTsgcG9zKyspCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKisrcCkpCi0gICAgICAg
ICAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0KLSAg
ICAgIGlmIChsc3R5bGUgPT0gJ1cnKQotICAgICAgewotICAgICAgICBzdGF0ZS5wYXJzZWRPbmUg
PSB0cnVlOwotICAgICAgICBzdGF0ZS5saXN0U3R5bGUgPSBsc3R5bGU7Ci0KLSAgICAgICAgcCA9
ICYobGluZVtsaW5lbGVuXSk7IC8qIGxpbmUgZW5kICovCi0gICAgICAgIHJlc3VsdC5jYXNlU2Vu
c2l0aXZlID0gdHJ1ZTsKLSAgICAgICAgcmVzdWx0LmZpbGVuYW1lID0gdG9rZW5zWzNdOwotICAg
ICAgICByZXN1bHQuZmlsZW5hbWVMZW5ndGggPSBwIC0gdG9rZW5zWzNdOwotICAgICAgICByZXN1
bHQudHlwZSA9IEZUUERpcmVjdG9yeUVudHJ5OwotCi0gICAgICAgIGlmICgqdG9rZW5zWzJdICE9
ICc8JykgLyogbm90IDxESVI+IG9yIDxKVU5DVElPTj4gKi8KLSAgICAgICAgewotICAgICAgICAg
IC8vIHRyeSB0byBoYW5kbGUgY29ycmVjdGx5IHNwYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRo
ZSBmaWxlbmFtZQotICAgICAgICAgIC8vIGZpbGVzaXplICh0b2tlblsyXSkgbXVzdCBlbmQgYXQg
b2Zmc2V0IDM4Ci0gICAgICAgICAgaWYgKHRva2Vuc1syXSArIHRva2xlblsyXSAtIGxpbmUgPT0g
MzgpIHsKLSAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZSA9ICYobGluZVszOV0pOwotICAgICAg
ICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0gcCAtIHJlc3VsdC5maWxlbmFtZTsKLSAgICAg
ICAgICB9Ci0gICAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBGaWxlRW50cnk7Ci0gICAgICAgICAg
cG9zID0gdG9rbGVuWzJdOwotICAgICAgICAgIHJlc3VsdC5maWxlU2l6ZSA9IFN0cmluZyh0b2tl
bnNbMl0sIHBvcyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgLy8gdHJ5
IHRvIGhhbmRsZSBjb3JyZWN0bHkgc3BhY2VzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGVu
YW1lCi0gICAgICAgICAgLy8gdG9rZW5bMl0gbXVzdCBiZWdpbiBhdCBvZmZzZXQgMjQsIHRoZSBs
ZW5ndGggaXMgNSBvciAxMAotICAgICAgICAgIC8vIHRva2VuWzNdIG11c3QgYmVnaW4gYXQgb2Zm
c2V0IDM5IG9yIGhpZ2hlcgotICAgICAgICAgIGlmICh0b2tlbnNbMl0gLSBsaW5lID09IDI0ICYm
ICh0b2tsZW5bMl0gPT0gNSB8fCB0b2tsZW5bMl0gPT0gMTApICYmCi0gICAgICAgICAgICAgIHRv
a2Vuc1szXSAtIGxpbmUgPj0gMzkpIHsKLSAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZSA9ICYo
bGluZVszOV0pOwotICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoID0gcCAtIHJlc3Vs
dC5maWxlbmFtZTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAoKHRva2Vuc1syXVsxXSkg
IT0gJ0QnKSAvKiBub3QgPERJUj4gKi8KLSAgICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQu
dHlwZSA9IEZUUEp1bmtFbnRyeTsgLyogdW5rbm93biB1bnRpbCBqdW5jIGZvciBzdXJlICovCi0g
ICAgICAgICAgICBpZiAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID4gNCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgcCA9IHJlc3VsdC5maWxlbmFtZTsKLSAgICAgICAgICAgICAgZm9yIChw
b3MgPSByZXN1bHQuZmlsZW5hbWVMZW5ndGggLSA0OyBwb3MgPiAwOyBwb3MtLSkKLSAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmIChwWzBdID09ICcgJyAmJiBwWzNdID09ICcgJyAm
JiBwWzJdID09ICc+JyAmJgotICAgICAgICAgICAgICAgICAgICAocFsxXSA9PSAnPScgfHwgcFsx
XSA9PSAnLScpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHJlc3VsdC50
eXBlID0gRlRQTGlua0VudHJ5OwotICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVu
Z3RoID0gcCAtIHJlc3VsdC5maWxlbmFtZTsKLSAgICAgICAgICAgICAgICAgIHJlc3VsdC5saW5r
bmFtZSA9IHAgKyA0OwotICAgICAgICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lTGVuZ3RoID0g
JihsaW5lW2xpbmVsZW5dKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
IHJlc3VsdC5saW5rbmFtZTsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBwKys7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0gICAgCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAKLSAgICAgICAgcmVzdWx0Lm1v
ZGlmaWVkVGltZS50bV9tb24gPSBhdG9pKHRva2Vuc1swXSswKTsKLSAgICAgICAgaWYgKHJlc3Vs
dC5tb2RpZmllZFRpbWUudG1fbW9uICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQu
bW9kaWZpZWRUaW1lLnRtX21vbi0tOwotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1f
bWRheSA9IGF0b2kodG9rZW5zWzBdKzMpOwotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUu
dG1feWVhciA9IGF0b2kodG9rZW5zWzBdKzYpOwotICAgICAgICAgIC8qIGlmIHllYXIgaGFzIG9u
bHkgdHdvIGRpZ2l0cyB0aGVuIGFzc3VtZSB0aGF0Ci0gICAgICAgICAgICAgICAwMC03OSBpcyAy
MDAwLTIwNzkKLSAgICAgICAgICAgICAgIDgwLTk5IGlzIDE5ODAtMTk5OSAqLwotICAgICAgICAg
IGlmIChyZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPCA4MCkKLSAgICAgICAgICAgIHJlc3Vs
dC5tb2RpZmllZFRpbWUudG1feWVhciArPSAyMDAwOwotICAgICAgICAgIGVsc2UgaWYgKHJlc3Vs
dC5tb2RpZmllZFRpbWUudG1feWVhciA8IDEwMCkKLSAgICAgICAgICAgIHJlc3VsdC5tb2RpZmll
ZFRpbWUudG1feWVhciArPSAxOTAwOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzdWx0Lm1vZGlm
aWVkVGltZS50bV9ob3VyID0gYXRvaSh0b2tlbnNbMV0rMCk7Ci0gICAgICAgIHJlc3VsdC5tb2Rp
ZmllZFRpbWUudG1fbWluID0gYXRvaSh0b2tlbnNbMV0rMyk7Ci0gICAgICAgIGlmICgodG9rZW5z
WzFdWzVdKSA9PSAnUCcgJiYgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9ob3VyIDwgMTIpCi0gICAg
ICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9ob3VyICs9IDEyOwotCi0gICAgICAgIC8qIHRo
ZSBjYWxsZXIgc2hvdWxkIGRvIHRoaXMgKGlmIGRyb3BwaW5nICIuIiBhbmQgIi4uIiBpcyBkZXNp
cmVkKQotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkgJiYgcmVz
dWx0LmZpbGVuYW1lWzBdID09ICcuJyAmJgotICAgICAgICAgICAgKHJlc3VsdC5maWxlbmFtZUxl
bmd0aCA9PSAxIHx8IChyZXN1bHQuZmlsZW5hbWVMZW5ndGggPT0gMiAmJgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVbMV0gPT0gJy4nKSkpCi0g
ICAgICAgICAgcmV0dXJuIEZUUEp1bmtFbnRyeTsKLSAgICAgICAgKi8KLQotICAgICAgICByZXR1
cm4gcmVzdWx0LnR5cGU7ICAKLSAgICAgIH0gLyogaWYgKGxzdHlsZSA9PSAnVycgJiYgKCFzdGF0
ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxlID09IGxzdHlsZSkpICovCi0gICAgfSAvKiBp
ZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ1cn
KSkgKi8KLSNlbmRpZgotCi0gICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysgKi8KLQotI2lmIGRlZmluZWQoU1VQUE9SVF9PUzIp
Ci0gICAgaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUgfHwgc3RhdGUubGlzdFN0eWxl
ID09ICdPJykpIC8qIE9TLzIgdGVzdCAqLwotICAgIHsKLSAgICAgIC8qIDIyMCBzZXJ2ZXIgSUJN
IFRDUC9JUCBmb3IgT1MvMiAtIEZUUCBTZXJ2ZXIgdmVyIDIzOjA0OjM2IG9uIEphbiAxNSAxOTk3
IHJlYWR5LgotICAgICAgKiBmaXhlZCBwb3NpdGlvbiwgc3BhY2UgcGFkZGVkIGNvbHVtbnMuIEkg
aGF2ZSBvbmx5IGEgdmFndWUgaWRlYSAKLSAgICAgICogb2Ygd2hhdCB0aGUgY29udGVudHMgYmV0
d2VlbiBjb2wgMTggYW5kIDM0IG1pZ2h0IGJlOiBBbGwgSSBjYW4gaW5mZXIKLSAgICAgICogaXMg
dGhhdCB0aGVyZSBtYXkgYmUgYXR0cmlidXRlIGZsYWdzIGluIHRoZXJlIGFuZCB0aGVyZSBtYXkg
YmUgCi0gICAgICAqIGEgIiBESVIiIGluIHRoZXJlLgotICAgICAgKgotICAgICAgKiAgICAgICAg
ICAxICAgICAgICAgMiAgICAgICAgIDMgICAgICAgICA0ICAgICAgICAgNSAgICAgICAgIDYKLSAg
ICAgICowMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5Ci0gICAgICAqLS0tLS0gc2l6ZSAtLS0tLS0tfD8/Pz8/Pz8/Pz8/
Pz8/PyBNTS1ERC1ZWXwgIEhIOk1NfCBubm5ubm5ubm4uLi4uCi0gICAgICAqICAgICAgICAgICAg
ICAgICAwICBESVIgICAgICAgICAgICAwNC0xMS05NSAgIDE2OjI2ICAuCi0gICAgICAqICAgICAg
ICAgICAgICAgICAwICBESVIgICAgICAgICAgICAwNC0xMS05NSAgIDE2OjI2ICAuLgotICAgICAg
KiAgICAgICAgICAgICAgICAgMCAgRElSICAgICAgICAgICAgMDQtMTEtOTUgICAxNjoyNiAgQURE
UkVTUwotICAgICAgKiAgICAgICAgICAgICAgIDYxMiAgUkhTQSAgICAgICAgICAgMDctMjgtOTUg
ICAxNjo0NSAgYWlyX3RyYTEuYmFnCi0gICAgICAqICAgICAgICAgICAgICAgMTk1ICBBICAgICAg
ICAgICAgICAwOC0wOS05NSAgIDEwOjIzICBBbGZhMS5iYWcKLSAgICAgICogICAgICAgICAgICAg
ICAgIDAgIFJIUyAgIERJUiAgICAgIDA0LTExLTk1ICAgMTY6MjYgIEFUVEFDSAotICAgICAgKiAg
ICAgICAgICAgICAgIDM3MiAgQSAgICAgICAgICAgICAgMDgtMDktOTUgICAxMDoyNiAgQXVzc2ll
XzEuYmFnCi0gICAgICAqICAgICAgICAgICAgMzEwOTkyICAgICAgICAgICAgICAgICAwNi0yOC05
NCAgIDA5OjU2ICBJTlNUQUxMLkVYRQotICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxICAgICAgICAgMiAgICAgICAgIDMgICAgICAgICA0Ci0gICAgICAqICAgICAgICAgICAgICAg
ICAgMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkKLSAg
ICAgICogZGlybGlzdCBmcm9tIHRoZSBtaXJyb3IucGwgcHJvamVjdCwgY29sIHBvc2l0aW9ucyBm
cm9tIE1vemlsbGEuCi0gICAgICAqLwotICAgICAgcCA9ICYobGluZVt0b2tsZW5bMF1dKTsKLSAg
ICAgIC8qIFxzKFxkXGQtXGRcZC1cZFxkKVxzKyhcZFxkOlxkXGQpXHMgKi8KLSAgICAgIGlmIChu
dW10b2tzID49IDQgJiYgdG9rbGVuWzBdIDw9IDE4ICYmIGlzQVNDSUlEaWdpdCgqdG9rZW5zWzBd
KSAmJgotICAgICAgICAgKGxpbmVsZW4gLSB0b2tsZW5bMF0pID49ICg1My0xOCkgICAgICAgICAg
ICAgICAgICAgICAgICAmJgotICAgICAgICAgcFsxOC0xOF0gPT0gJyAnICYmIHBbMzQtMThdID09
ICcgJyAgICAgICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgcFszNy0xOF0gPT0gJy0nICYm
IHBbNDAtMThdID09ICctJyAmJiBwWzQzLTE4XSA9PSAnICcgICAmJgotICAgICAgICAgcFs0NS0x
OF0gPT0gJyAnICYmIHBbNDgtMThdID09ICc6JyAmJiBwWzUxLTE4XSA9PSAnICcgICAmJgotICAg
ICAgICAgaXNBU0NJSURpZ2l0KHBbMzUtMThdKSAmJiBpc0FTQ0lJRGlnaXQocFszNi0xOF0pICAg
ICAgICAmJgotICAgICAgICAgaXNBU0NJSURpZ2l0KHBbMzgtMThdKSAmJiBpc0FTQ0lJRGlnaXQo
cFszOS0xOF0pICAgICAgICAmJgotICAgICAgICAgaXNBU0NJSURpZ2l0KHBbNDEtMThdKSAmJiBp
c0FTQ0lJRGlnaXQocFs0Mi0xOF0pICAgICAgICAmJgotICAgICAgICAgaXNBU0NJSURpZ2l0KHBb
NDYtMThdKSAmJiBpc0FTQ0lJRGlnaXQocFs0Ny0xOF0pICAgICAgICAmJgotICAgICAgICAgaXNB
U0NJSURpZ2l0KHBbNDktMThdKSAmJiBpc0FTQ0lJRGlnaXQocFs1MC0xOF0pCi0gICAgICApCi0g
ICAgICB7Ci0gICAgICAgIGxzdHlsZSA9ICdPJzsgLyogT1MvMiAqLwotICAgICAgICBpZiAoIXN0
YXRlLmxpc3RTdHlsZSkKLSAgICAgICAgeyAgICAgICAgICAgIAotICAgICAgICAgIGZvciAocG9z
ID0gMTsgbHN0eWxlICYmIHBvcyA8IHRva2xlblswXTsgcG9zKyspCi0gICAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQodG9rZW5zWzBdW3Bvc10pKQotICAgICAgICAgICAg
ICBsc3R5bGUgPSAwOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBp
ZiAobHN0eWxlID09ICdPJykKLSAgICAgIHsKLSAgICAgICAgc3RhdGUucGFyc2VkT25lID0gdHJ1
ZTsKLSAgICAgICAgc3RhdGUubGlzdFN0eWxlID0gbHN0eWxlOwotCi0gICAgICAgIHAgPSAmKGxp
bmVbdG9rbGVuWzBdXSk7Ci0KLSAgICAgICAgcmVzdWx0LmNhc2VTZW5zaXRpdmUgPSB0cnVlOwot
ICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSAmcFs1My0xOF07Ci0gICAgICAgIHJlc3VsdC5maWxl
bmFtZUxlbmd0aCA9ICgmKGxpbmVbbGluZWxlbl9zYW5zX3dzcF0pKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLSAocmVzdWx0LmZpbGVuYW1lKTsKLSAgICAgICAgcmVzdWx0LnR5cGUgPSBG
VFBGaWxlRW50cnk7Ci0KLSAgICAgICAgLyogSSBkb24ndCBoYXZlIGEgcmVhbCBsaXN0aW5nIHRv
IGRldGVybWluZSBleGFjdCBwb3MsIHNvIHNjYW4uICovCi0gICAgICAgIGZvciAocG9zID0gKDE4
LTE4KTsgcG9zIDwgKCgzNS0xOCktNCk7IHBvcysrKQotICAgICAgICB7Ci0gICAgICAgICAgaWYg
KHBbcG9zKzBdID09ICcgJyAmJiBwW3BvcysxXSA9PSAnRCcgJiYgCi0gICAgICAgICAgICAgIHBb
cG9zKzJdID09ICdJJyAmJiBwW3BvcyszXSA9PSAnUicpCi0gICAgICAgICAgewotICAgICAgICAg
ICAgcmVzdWx0LnR5cGUgPSBGVFBEaXJlY3RvcnlFbnRyeTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIAotICAgICAgICBpZiAocmVzdWx0LnR5cGUgIT0g
RlRQRGlyZWN0b3J5RW50cnkpCi0gICAgICAgIHsKLSAgICAgICAgICBwb3MgPSB0b2tsZW5bMF07
Ci0gICAgICAgICAgcmVzdWx0LmZpbGVTaXplID0gU3RyaW5nKHRva2Vuc1swXSwgcG9zKTsKLSAg
ICAgICAgfSAgCi0gICAgCi0gICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uID0gYXRv
aSgmcFszNS0xOF0pIC0gMTsKLSAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0g
YXRvaSgmcFszOC0xOF0pOwotICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPSBh
dG9pKCZwWzQxLTE4XSk7Ci0gICAgICAgIGlmIChyZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIg
PCA4MCkKLSAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgKz0gMTAwOwotICAg
ICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX2hvdXIgPSBhdG9pKCZwWzQ2LTE4XSk7Ci0gICAg
ICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWluID0gYXRvaSgmcFs0OS0xOF0pOwotICAgCi0g
ICAgICAgIC8qIHRoZSBjYWxsZXIgc2hvdWxkIGRvIHRoaXMgKGlmIGRyb3BwaW5nICIuIiBhbmQg
Ii4uIiBpcyBkZXNpcmVkKQotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5
RW50cnkgJiYgcmVzdWx0LmZpbGVuYW1lWzBdID09ICcuJyAmJgotICAgICAgICAgICAgKHJlc3Vs
dC5maWxlbmFtZUxlbmd0aCA9PSAxIHx8IChyZXN1bHQuZmlsZW5hbWVMZW5ndGggPT0gMiAmJgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZmlsZW5hbWVbMV0g
PT0gJy4nKSkpCi0gICAgICAgICAgcmV0dXJuIEZUUEp1bmtFbnRyeTsKLSAgICAgICAgKi8KLQot
ICAgICAgICByZXR1cm4gcmVzdWx0LnR5cGU7Ci0gICAgICB9IC8qIGlmIChsc3R5bGUgPT0gJ08n
KSAqLwotCi0gICAgfSAvKiBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0
ZS5saXN0U3R5bGUgPT0gJ08nKSkgKi8KLSNlbmRpZgotCi0gICAgLyogKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysgKi8KLSAgICAKLSNp
ZiBkZWZpbmVkKFNVUFBPUlRfTFNMKQotICAgIGlmICghbHN0eWxlICYmICghc3RhdGUubGlzdFN0
eWxlIHx8IHN0YXRlLmxpc3RTdHlsZSA9PSAnVScpKSAvKiAvYmluL2xzICYgY28uICovCi0gICAg
ewotICAgICAgLyogVU5JWC1zdHlsZSBsaXN0aW5nLCB3aXRob3V0IGludW0gYW5kIHdpdGhvdXQg
YmxvY2tzCi0gICAgICAgKiAiLXJ3LXItLXItLSAgIDEgcm9vdCAgICAgb3RoZXIgICAgICAgIDUz
MSBKYW4gMjkgMDM6MjYgUkVBRE1FIgotICAgICAgICogImRyLXhyLXhyLXggICAyIHJvb3QgICAg
IG90aGVyICAgICAgICA1MTIgQXByICA4ICAxOTk0IGV0YyIKLSAgICAgICAqICJkci14ci14ci14
ICAgMiByb290ICAgICA1MTIgQXByICA4ICAxOTk0IGV0YyIKLSAgICAgICAqICJscnd4cnd4cnd4
ICAgMSByb290ICAgICBvdGhlciAgICAgICAgICA3IEphbiAyNSAwMDoxNyBiaW4gLT4gdXNyL2Jp
biIKLSAgICAgICAqIEFsc28gcHJvZHVjZWQgYnkgTWljcm9zb2Z0J3MgRlRQIHNlcnZlcnMgZm9y
IFdpbmRvd3M6Ci0gICAgICAgKiAiLS0tLS0tLS0tLSAgIDEgb3duZXIgICAgZ3JvdXAgICAgICAg
ICAxODAzMTI4IEp1bCAxMCAxMDoxOCBscy1sUi5aIgotICAgICAgICogImQtLS0tLS0tLS0gICAx
IG93bmVyICAgIGdyb3VwICAgICAgICAgICAgICAgMCBNYXkgIDkgMTk6NDUgU29mdGxpYiIKLSAg
ICAgICAqIEFsc28gV0ZUUEQgZm9yIE1TRE9TOgotICAgICAgICogIi1yd3hyd3hyd3ggICAxIG5v
b25lICAgIG5vZ3JvdXAgICAgICAzMjIgQXVnIDE5ICAxOTk2IG1lc3NhZ2UuZnRwIgotICAgICAg
ICogSGVsbHNvZnQgZm9yIE5ldFdhcmU6Ci0gICAgICAgKiAiZFtSV0NFTUZBXSBzdXBlcnZpc29y
ICAgICAgICAgICAgNTEyICAgICAgIEphbiAxNiAxODo1MyAgICBsb2dpbiIKLSAgICAgICAqICIt
W1JXQ0VNRkFdIHJoZXN1cyAgICAgICAgICAgICAyMTQwNTkgICAgICAgT2N0IDIwIDE1OjI3ICAg
IGN4LmV4ZSIKLSAgICAgICAqIE5ld2VyIEhlbGxzb2Z0IGZvciBOZXRXYXJlOiAobmV0bGFiMi51
c3UuZWR1KQotICAgICAgICogLSBbUldDRUFGTVNdIE5GQVVVc2VyICAgICAgICAgICAgICAgMTky
IEFwciAyNyAxNToyMSBIRUFERVIuaHRtbAotICAgICAgICogZCBbUldDRUFGTVNdIGpyZCAgICAg
ICAgICAgICAgICAgICAgNTEyIEp1bCAxMSAwMzowMSBhbGx1cGRhdGVzCi0gICAgICAgKiBBbHNv
IE5ldFByZXNlbnogZm9yIHRoZSBNYWM6Ci0gICAgICAgKiAiLS0tLS0tLXItLSAgICAgICAgIDMy
NiAgMTM5MTk3MiAgMTM5MjI5OCBOb3YgMjIgIDE5OTUgTWVnYVBob25lLnNpdCIKLSAgICAgICAq
ICJkcnd4cnd4ci14ICAgICAgICAgICAgICAgZm9sZGVyICAgICAgICAyIE1heSAxMCAgMTk5NiBu
ZXR3b3JrIgotICAgICAgICogUHJvdGVjdGVkIGRpcmVjdG9yeToKLSAgICAgICAqICJkcnd4LXd4
LXd0ICAyIHJvb3QgIHdoZWVsICA1MTIgSnVsICAxIDAyOjE1IGluY29taW5nIgotICAgICAgICog
dWlkL2dpZCBpbnN0ZWFkIG9mIHVzZXJuYW1lL2dyb3VwbmFtZToKLSAgICAgICAqICJkcnd4ci14
ci14ICAyIDAgIDAgIDUxMiBNYXkgMjggMjI6MTcgZXRjIgotICAgICAgKi8KLSAgICAKLSAgICAg
IGJvb2wgaXNPbGRIZWxsc29mdCA9IGZhbHNlOwotICAgIAotICAgICAgaWYgKG51bXRva3MgPj0g
NikKLSAgICAgIHsKLSAgICAgICAgLyogdGhlcmUgYXJlIHR3byBwZXJtIGZvcm1hdHMgKEhlbGxz
b2Z0L05ldFdhcmUgYW5kICpJWCBzdHJtb2RlKDMpKS4KLSAgICAgICAgICogU2NhbiBmb3Igc2l6
ZSBjb2x1bW4gb25seSBpZiB0aGUgcGVybSBmb3JtYXQgaXMgb25lIG9yIHRoZSBvdGhlci4KLSAg
ICAgICAgICovCi0gICAgICAgIGlmICh0b2tsZW5bMF0gPT0gMSB8fCAodG9rZW5zWzBdWzFdKSA9
PSAnWycpCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoKnRva2Vuc1swXSA9PSAnZCcgfHwgKnRv
a2Vuc1swXSA9PSAnLScpCi0gICAgICAgICAgewotICAgICAgICAgICAgcG9zID0gdG9rbGVuWzBd
LTE7Ci0gICAgICAgICAgICBwID0gdG9rZW5zWzBdICsgMTsKLSAgICAgICAgICAgIGlmIChwb3Mg
PT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgcCA9IHRva2Vuc1sxXTsKLSAgICAg
ICAgICAgICAgcG9zID0gdG9rbGVuWzFdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KChwb3MgPT0gOSB8fCBwb3MgPT0gMTApICAgICAgICAmJiAKLSAgICAgICAgICAgICAgICAoKnAg
PT0gJ1snICYmIHBbcG9zLTFdID09ICddJykgJiYKLSAgICAgICAgICAgICAgICAocFsxXSA9PSAn
UicgfHwgcFsxXSA9PSAnLScpICAgJiYKLSAgICAgICAgICAgICAgICAocFsyXSA9PSAnVycgfHwg
cFsyXSA9PSAnLScpICAgJiYKLSAgICAgICAgICAgICAgICAocFszXSA9PSAnQycgfHwgcFszXSA9
PSAnLScpICAgJiYKLSAgICAgICAgICAgICAgICAocFs0XSA9PSAnRScgfHwgcFs0XSA9PSAnLScp
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAvKiByZXN0IGlzIEZNQVtTXSBvciBBRk1b
U10gKi8KLSAgICAgICAgICAgICAgbHN0eWxlID0gJ1UnOyAvKiB2ZXJ5IGxpa2VseSBvbmUgb2Yg
dGhlIE5ldFdhcmUgc2VydmVycyAqLwotICAgICAgICAgICAgICBpZiAodG9rbGVuWzBdID09IDEw
KQotICAgICAgICAgICAgICAgIGlzT2xkSGVsbHNvZnQgPSB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICgodG9rbGVuWzBdID09IDEw
IHx8IHRva2xlblswXSA9PSAxMSkgCi0gICAgICAgICAgICAgICAgICAgJiYgc3RyY2hyKCItYmNk
bHBzdz9ERmFtIiwgKnRva2Vuc1swXSkpCi0gICAgICAgIHsKLSAgICAgICAgICBwID0gJih0b2tl
bnNbMF1bMV0pOwotICAgICAgICAgIGlmICgocFswXSA9PSAncicgfHwgcFswXSA9PSAnLScpICYm
Ci0gICAgICAgICAgICAgIChwWzFdID09ICd3JyB8fCBwWzFdID09ICctJykgJiYKLSAgICAgICAg
ICAgICAgKHBbM10gPT0gJ3InIHx8IHBbM10gPT0gJy0nKSAmJgotICAgICAgICAgICAgICAocFs0
XSA9PSAndycgfHwgcFs0XSA9PSAnLScpICYmCi0gICAgICAgICAgICAgIChwWzZdID09ICdyJyB8
fCBwWzZdID09ICctJykgJiYKLSAgICAgICAgICAgICAgKHBbN10gPT0gJ3cnIHx8IHBbN10gPT0g
Jy0nKSkKLSAgICAgICAgICAgIC8qICd4Jy9wWzldIGNhbiBiZSBTfHN8eHwtfFR8dCBvciBpbXBs
ZW1lbnRhdGlvbiBzcGVjaWZpYyAqLwotICAgICAgICAgIHsKLSAgICAgICAgICAgIGxzdHlsZSA9
ICdVJzsgLyogdmVyeSBsaWtlbHkgL2Jpbi9scyAqLwotICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgfQotICAgICAgaWYgKGxzdHlsZSA9PSAnVScpIC8qIGZpcnN0IHRva2VuIGNoZWNrcyBv
dXQgKi8KLSAgICAgIHsKLSAgICAgICAgbHN0eWxlID0gMDsKLSAgICAgICAgZm9yIChwb3MgPSAo
bnVtdG9rcy01KTsgIWxzdHlsZSAmJiBwb3MgPiAxOyBwb3MtLSkKLSAgICAgICAgewotICAgICAg
ICAgIC8qIHNjYW4gZm9yOiAoXGQrKVxzKyhbQS1aXVthLXpdW2Etel0pXHMrCi0gICAgICAgICAg
ICogIChcZFxkXGRcZHxcZFw6XGRcZHxcZFxkXDpcZFxkfFxkXDpcZFxkXDpcZFxkfFxkXGRcOlxk
XGRcOlxkXGQpCi0gICAgICAgICAgICogIFxzKyguKykkCi0gICAgICAgICAgKi8KLSAgICAgICAg
ICBpZiAoaXNBU0NJSURpZ2l0KCp0b2tlbnNbcG9zXSkgLyogc2l6ZSAqLwotICAgICAgICAgICAg
ICAvKiAoXHdcd1x3KSAqLwotICAgICAgICAgICAmJiB0b2tsZW5bcG9zKzFdID09IDMgJiYgaXNB
U0NJSUFscGhhKCp0b2tlbnNbcG9zKzFdKSAmJgotICAgICAgICAgICAgICBpc0FTQ0lJQWxwaGEo
dG9rZW5zW3BvcysxXVsxXSkgJiYgaXNBU0NJSUFscGhhKHRva2Vuc1twb3MrMV1bMl0pCi0gICAg
ICAgICAgICAgIC8qIChcZHxcZFxkKSAqLwotICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQoKnRv
a2Vuc1twb3MrMl0pICYmCi0gICAgICAgICAgICAgICAgKHRva2xlbltwb3MrMl0gPT0gMSB8fCAK
LSAgICAgICAgICAgICAgICAgICh0b2tsZW5bcG9zKzJdID09IDIgJiYgaXNBU0NJSURpZ2l0KHRv
a2Vuc1twb3MrMl1bMV0pKSkKLSAgICAgICAgICAgJiYgdG9rbGVuW3BvcyszXSA+PSA0ICYmIGlz
QVNDSUlEaWdpdCgqdG9rZW5zW3BvcyszXSkgCi0gICAgICAgICAgICAgIC8qIChcZFw6XGRcZFw6
XGRcZHxcZFxkXDpcZFxkXDpcZFxkKSAqLwotICAgICAgICAgICAmJiAodG9rbGVuW3BvcyszXSA8
PSA1IHx8ICgKLSAgICAgICAgICAgICAgICh0b2tsZW5bcG9zKzNdID09IDcgfHwgdG9rbGVuW3Bv
cyszXSA9PSA4KSAmJgotICAgICAgICAgICAgICAgKHRva2Vuc1twb3MrM11bdG9rbGVuW3Bvcysz
XS0zXSkgPT0gJzonKSkKLSAgICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1twb3MrM11b
dG9rbGVuW3BvcyszXS0yXSkKLSAgICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1twb3Mr
M11bdG9rbGVuW3BvcyszXS0xXSkKLSAgICAgICAgICAgJiYgKAotICAgICAgICAgICAgICAvKiAo
XGRcZFxkXGQpICovCi0gICAgICAgICAgICAgICAgICgodG9rbGVuW3BvcyszXSA9PSA0IHx8IHRv
a2xlbltwb3MrM10gPT0gNSkgJiYKLSAgICAgICAgICAgICAgICAgIGlzQVNDSUlEaWdpdCh0b2tl
bnNbcG9zKzNdWzFdKSAmJgotICAgICAgICAgICAgICAgICAgaXNBU0NJSURpZ2l0KHRva2Vuc1tw
b3MrM11bMl0pICApCi0gICAgICAgICAgICAgIC8qIChcZFw6XGRcZHxcZFw6XGRcZFw6XGRcZCkg
Ki8KLSAgICAgICAgICAgICAgfHwgKCh0b2tsZW5bcG9zKzNdID09IDQgfHwgdG9rbGVuW3Bvcysz
XSA9PSA3KSAmJiAKLSAgICAgICAgICAgICAgICAgICh0b2tlbnNbcG9zKzNdWzFdKSA9PSAnOicg
JiYKLSAgICAgICAgICAgICAgICAgIGlzQVNDSUlEaWdpdCh0b2tlbnNbcG9zKzNdWzJdKSAmJiBp
c0FTQ0lJRGlnaXQodG9rZW5zW3BvcyszXVszXSkpCi0gICAgICAgICAgICAgIC8qIChcZFxkXDpc
ZFxkfFxkXGRcOlxkXGRcOlxkXGQpICovCi0gICAgICAgICAgICAgIHx8ICgodG9rbGVuW3Bvcysz
XSA9PSA1IHx8IHRva2xlbltwb3MrM10gPT0gOCkgJiYgCi0gICAgICAgICAgICAgICAgICBpc0FT
Q0lJRGlnaXQodG9rZW5zW3BvcyszXVsxXSkgJiYgKHRva2Vuc1twb3MrM11bMl0pID09ICc6JyAm
JgotICAgICAgICAgICAgICAgICAgaXNBU0NJSURpZ2l0KHRva2Vuc1twb3MrM11bM10pICYmIGlz
QVNDSUlEaWdpdCh0b2tlbnNbcG9zKzNdWzRdKSkgCi0gICAgICAgICAgICAgICkKLSAgICAgICAg
ICAgKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGxzdHlsZSA9ICdVJzsgLyogYXNzdW1lIC9i
aW4vbHMgb3IgdmFyaWFudCBmb3JtYXQgKi8KLSAgICAgICAgICAgIHRva21hcmtlciA9IHBvczsK
LQotICAgICAgICAgICAgLyogY2hlY2sgdGhhdCBzaXplIGlzIG51bWVyaWMgKi8KLSAgICAgICAg
ICAgIHAgPSB0b2tlbnNbdG9rbWFya2VyXTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBsc3R5bGUgJiYgaSA8IHRva2xlblt0b2ttYXJrZXJdOyArK2kpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCpwKyspKQotICAgICAgICAgICAg
ICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobHN0eWxlKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICBtb250aF9udW0gPSAwOwotICAgICAgICAgICAg
ICBwID0gdG9rZW5zW3Rva21hcmtlcisxXTsKLSAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCAoMTIqMyk7IGkrPTMpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBpZiAocFswXSA9PSBtb250aF9uYW1lc1tpKzBdICYmIAotICAgICAgICAgICAgICAgICAg
ICBwWzFdID09IG1vbnRoX25hbWVzW2krMV0gJiYgCi0gICAgICAgICAgICAgICAgICAgIHBbMl0g
PT0gbW9udGhfbmFtZXNbaSsyXSkKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIG1vbnRoX251bSsrOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGlmICht
b250aF9udW0gPj0gMTIpCi0gICAgICAgICAgICAgICAgbHN0eWxlID0gMDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICB9IC8qIHJlbGF0aXZlIHBvc2l0aW9uIHRlc3QgKi8KLSAgICAgICAgfSAv
KiBmb3IgKHBvcyA9IChudW10b2tzLTUpOyAhbHN0eWxlICYmIHBvcyA+IDE7IHBvcy0tKSAqLwot
ICAgICAgfSAvKiBpZiAobHN0eWxlID09ICdVJykgKi8KLQotICAgICAgaWYgKGxzdHlsZSA9PSAn
VScpCi0gICAgICB7Ci0gICAgICAgIHN0YXRlLnBhcnNlZE9uZSA9IHRydWU7Ci0gICAgICAgIHN0
YXRlLmxpc3RTdHlsZSA9IGxzdHlsZTsKLSAgICAKLSAgICAgICAgcmVzdWx0LmNhc2VTZW5zaXRp
dmUgPSBmYWxzZTsKLSAgICAgICAgcmVzdWx0LnR5cGUgPSBGVFBKdW5rRW50cnk7Ci0gICAgICAg
IGlmICgqdG9rZW5zWzBdID09ICdkJyB8fCAqdG9rZW5zWzBdID09ICdEJykKLSAgICAgICAgICBy
ZXN1bHQudHlwZSA9IEZUUERpcmVjdG9yeUVudHJ5OwotICAgICAgICBlbHNlIGlmICgqdG9rZW5z
WzBdID09ICdsJykKLSAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUExpbmtFbnRyeTsKLSAgICAg
ICAgZWxzZSBpZiAoKnRva2Vuc1swXSA9PSAnLScgfHwgKnRva2Vuc1swXSA9PSAnRicpCi0gICAg
ICAgICAgcmVzdWx0LnR5cGUgPSBGVFBGaWxlRW50cnk7IC8qIChob3BlZnVsbHkgYSByZWd1bGFy
IGZpbGUpICovCi0KLSAgICAgICAgaWYgKHJlc3VsdC50eXBlICE9IEZUUERpcmVjdG9yeUVudHJ5
KQotICAgICAgICB7Ci0gICAgICAgICAgcG9zID0gdG9rbGVuW3Rva21hcmtlcl07Ci0gICAgICAg
ICAgcmVzdWx0LmZpbGVTaXplID0gU3RyaW5nKHRva2Vuc1t0b2ttYXJrZXJdLCBwb3MpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24gID0gbW9udGhfbnVt
OwotICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21kYXkgPSBhdG9pKHRva2Vuc1t0b2tt
YXJrZXIrMl0pOwotICAgICAgICBpZiAocmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID09IDAp
Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5Kys7Ci0KLSAgICAgICAgcCA9
IHRva2Vuc1t0b2ttYXJrZXIrM107Ci0gICAgICAgIHBvcyA9ICh1bnNpZ25lZCBpbnQpYXRvaShw
KTsKLSAgICAgICAgaWYgKHBbMV0gPT0gJzonKSAvKiBvbmUgZGlnaXQgaG91ciAqLwotICAgICAg
ICAgIHAtLTsKLSAgICAgICAgaWYgKHBbMl0gIT0gJzonKSAvKiB5ZWFyICovCi0gICAgICAgIHsK
LSAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPSBwb3M7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50
bV9ob3VyID0gcG9zOwotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWluICA9IGF0
b2kocCszKTsKLSAgICAgICAgICBpZiAocFs1XSA9PSAnOicpCi0gICAgICAgICAgICByZXN1bHQu
bW9kaWZpZWRUaW1lLnRtX3NlYyA9IGF0b2kocCs2KTsKLSAgICAgICAKLSAgICAgICAgICBpZiAo
IXN0YXRlLm5vdykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0aW1lX3Qgbm93ID0gdGltZShO
VUxMKTsKLSAgICAgICAgICAgIHN0YXRlLm5vdyA9IG5vdyAqIDEwMDAwMDAuMDsKLQotICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBoYXMgdGhlIHllYXIgMjAzOCBidWcKLSAgICAgICAg
ICAgIGdtdGltZV9yKCZub3csICZzdGF0ZS5ub3dGVFBUaW1lKTsKLSAgICAgICAgICAgIHN0YXRl
Lm5vd0ZUUFRpbWUudG1feWVhciArPSAxOTAwOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHJl
c3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9IHN0YXRlLm5vd0ZUUFRpbWUudG1feWVhcjsKLSAg
ICAgICAgICBpZiAoICgoIHN0YXRlLm5vd0ZUUFRpbWUudG1fbW9uIDw8IDUpICsgc3RhdGUubm93
RlRQVGltZS50bV9tZGF5KSA8Ci0gICAgICAgICAgICAgICAoKHJlc3VsdC5tb2RpZmllZFRpbWUu
dG1fbW9uIDw8IDUpICsgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5KSApCi0gICAgICAgICAg
ICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXItLTsKLSAgICAgICAKLSAgICAgICAgfSAvKiB0
aW1lL3llYXIgKi8KLSAgICAgICAgCi0gICAgICAgIC8vIHRoZXJlIGlzIGV4YWN0bHkgMSBzcGFj
ZSBiZXR3ZWVuIGZpbGVuYW1lIGFuZCBwcmV2aW91cyB0b2tlbiBpbiBhbGwKLSAgICAgICAgLy8g
b3V0cHV0cyBleGNlcHQgb2xkIEhlbGxzb2Z0Ci0gICAgICAgIGlmICghaXNPbGRIZWxsc29mdCkK
LSAgICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNbdG9rbWFya2VyKzNdICsgdG9rbGVu
W3Rva21hcmtlciszXSArIDE7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXN1bHQuZmlsZW5h
bWUgPSB0b2tlbnNbdG9rbWFya2VyKzRdOwotCi0gICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0
aCA9ICgmKGxpbmVbbGluZWxlbl0pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAocmVz
dWx0LmZpbGVuYW1lKTsKLQotICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT0gRlRQTGlua0VudHJ5
ICYmIHJlc3VsdC5maWxlbmFtZUxlbmd0aCA+IDQpCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBG
aXJzdCB0cnkgdG8gdXNlIHJlc3VsdC5mZV9zaXplIHRvIGZpbmQgIiAtPiAiIHNlcXVlbmNlLgot
ICAgICAgICAgICAgIFRoaXMgY2FuIGdpdmUgcHJvcGVyIHJlc3VsdCBmb3IgY2FzZXMgbGlrZSAi
YWFhIC0+IGJiYiAtPiBjY2MiLiAqLwotICAgICAgICAgIHVuc2lnbmVkIGludCBmaWxlU2l6ZSA9
IHJlc3VsdC5maWxlU2l6ZS50b1VJbnQoKTsKLQotICAgICAgICAgIGlmIChyZXN1bHQuZmlsZW5h
bWVMZW5ndGggPiAoZmlsZVNpemUgKyA0KSAmJgotICAgICAgICAgICAgICBzdHJuY21wKHJlc3Vs
dC5maWxlbmFtZSArIHJlc3VsdC5maWxlbmFtZUxlbmd0aCAtIGZpbGVTaXplIC0gNCwgIiAtPiAi
LCA0KSA9PSAwKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5saW5rbmFtZSA9IHJl
c3VsdC5maWxlbmFtZSArIChyZXN1bHQuZmlsZW5hbWVMZW5ndGggLSBmaWxlU2l6ZSk7Ci0gICAg
ICAgICAgICByZXN1bHQubGlua25hbWVMZW5ndGggPSAoJihsaW5lW2xpbmVsZW5dKSkgLSAocmVz
dWx0LmxpbmtuYW1lKTsKLSAgICAgICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCAtPSBmaWxl
U2l6ZSArIDQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICB7Ci0gICAg
ICAgICAgICAvKiBTZWFyY2ggZm9yIHNlcXVlbmNlICIgLT4gIiBmcm9tIHRoZSBlbmQgZm9yIGNh
c2Ugd2hlbiB0aGVyZSBhcmUKLSAgICAgICAgICAgICAgIG1vcmUgb2NjdXJyZW5jZXMuIEYuZS4g
aWYgZnRwZCByZXR1cm5zICJhIC0+IGIgLT4gYyIgYXNzdW1lCi0gICAgICAgICAgICAgICAiYSAt
PiBiIiBhcyBhIG5hbWUuIFBvd2VydXNlcnMgY2FuIHJlbW92ZSB1bm5lY2Vzc2FyeSBwYXJ0cwot
ICAgICAgICAgICAgICAgbWFudWFsbHkgYnV0IHRoZXJlIGlzIG5vIHdheSB0byBmb2xsb3cgdGhl
IGxpbmsgd2hlbiBzb21lCi0gICAgICAgICAgICAgICBlc3NlbnRpYWwgcGFydCBpcyBtaXNzaW5n
LiAqLwotICAgICAgICAgICAgcCA9IHJlc3VsdC5maWxlbmFtZSArIChyZXN1bHQuZmlsZW5hbWVM
ZW5ndGggLSA1KTsKLSAgICAgICAgICAgIGZvciAocG9zID0gKHJlc3VsdC5maWxlbmFtZUxlbmd0
aCAtIDUpOyBwb3MgPiAwOyBwb3MtLSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgaWYg
KHN0cm5jbXAocCwgIiAtPiAiLCA0KSA9PSAwKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0LmxpbmtuYW1lID0gcCArIDQ7Ci0gICAgICAgICAgICAgICAgcmVzdWx0Lmxp
bmtuYW1lTGVuZ3RoID0gKCYobGluZVtsaW5lbGVuXSkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtIChyZXN1bHQubGlua25hbWUpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5m
aWxlbmFtZUxlbmd0aCA9IHBvczsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICBwLS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSNpZiBkZWZpbmVkKFNVUFBPUlRfTFNMRikgLyogc29tZSAodmVyeSByYXJlKSBz
ZXJ2ZXJzIHJldHVybiBscyAtbEYgKi8KLSAgICAgICAgaWYgKHJlc3VsdC5maWxlbmFtZUxlbmd0
aCA+IDEpCi0gICAgICAgIHsKLSAgICAgICAgICBwID0gcmVzdWx0LmZpbGVuYW1lW3Jlc3VsdC5m
aWxlbmFtZUxlbmd0aC0xXTsKLSAgICAgICAgICBwb3MgPSByZXN1bHQudHlwZTsKLSAgICAgICAg
ICBpZiAocG9zID09ICdkJykgeyAKLSAgICAgICAgICAgICBpZiAoKnAgPT0gJy8nKSByZXN1bHQu
ZmlsZW5hbWVMZW5ndGgtLTsgLyogZGlyZWN0b3J5ICovCi0gICAgICAgICAgfSBlbHNlIGlmIChw
b3MgPT0gJ2wnKSB7IAotICAgICAgICAgICAgIGlmICgqcCA9PSAnQCcpIHJlc3VsdC5maWxlbmFt
ZUxlbmd0aC0tOyAvKiBzeW1saW5rICovCi0gICAgICAgICAgfSBlbHNlIGlmIChwb3MgPT0gJ2Yn
KSB7IAotICAgICAgICAgICAgIGlmICgqcCA9PSAnKicpIHJlc3VsdC5maWxlbmFtZUxlbmd0aC0t
OyAvKiBleGVjdXRhYmxlICovCi0gICAgICAgICAgfSBlbHNlIGlmICgqcCA9PSAnPScgfHwgKnAg
PT0gJyUnIHx8ICpwID09ICd8JykgewotICAgICAgICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3Ro
LS07IC8qIHNvY2tldCwgd2hpdGVvdXQsIGZpZm8gKi8KLSAgICAgICAgICB9Ci0gICAgICAgIH0K
LSNlbmRpZgotICAgICAKLSAgICAgICAgLyogdGhlIGNhbGxlciBzaG91bGQgZG8gdGhpcyAoaWYg
ZHJvcHBpbmcgIi4iIGFuZCAiLi4iIGlzIGRlc2lyZWQpCi0gICAgICAgIGlmIChyZXN1bHQudHlw
ZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSAmJiByZXN1bHQuZmlsZW5hbWVbMF0gPT0gJy4nICYmCi0g
ICAgICAgICAgICAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09IDEgfHwgKHJlc3VsdC5maWxlbmFt
ZUxlbmd0aCA9PSAyICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5maWxlbmFtZVsxXSA9PSAnLicpKSkKLSAgICAgICAgICByZXR1cm4gRlRQSnVua0VudHJ5
OwotICAgICAgICAqLwotCi0gICAgICAgIHJldHVybiByZXN1bHQudHlwZTsgIAotCi0gICAgICB9
IC8qIGlmIChsc3R5bGUgPT0gJ1UnKSAqLwotCi0gICAgfSAvKiBpZiAoIWxzdHlsZSAmJiAoIXN0
YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ1UnKSkgKi8KLSNlbmRpZgotCi0g
ICAgLyogKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysgKi8KLQotI2lmIGRlZmluZWQoU1VQUE9SVF9XMTYpIC8qIDE2Yml0IFdpbmRvd3Mg
Ki8KLSAgICBpZiAoIWxzdHlsZSAmJiAoIXN0YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5
bGUgPT0gJ3cnKSkKLSAgICB7ICAgICAgIC8qIG9sZCBTdXBlclRDUCBzdWl0ZSBGVFAgc2VydmVy
IGZvciBXaW4zLjEgKi8KLSAgICAgICAgICAgIC8qIG9sZCBOZXRNYW5hZ2UgQ2hhbWVsZW9uIFRD
UC9JUCBzdWl0ZSBGVFAgc2VydmVyIGZvciBXaW4zLjEgKi8KLSAgICAgIC8qCi0gICAgICAqIFN1
cGVyVENQIGRpcmxpc3QgZnJvbSB0aGUgbWlycm9yLnBsIHByb2plY3QKLSAgICAgICogbW9uL2Rh
eS95ZWFyIHNlcGFyYXRvciBtYXkgYmUgJy8nIG9yICctJy4KLSAgICAgICogLiAgICAgICAgICAg
ICAgIDxESVI+ICAgICAgICAgICAxMS0xNi05NCAgICAgICAgMTc6MTYKLSAgICAgICogLi4gICAg
ICAgICAgICAgIDxESVI+ICAgICAgICAgICAxMS0xNi05NCAgICAgICAgMTc6MTYKLSAgICAgICog
SU5TVEFMTCAgICAgICAgIDxESVI+ICAgICAgICAgICAxMS0xNi05NCAgICAgICAgMTc6MTcKLSAg
ICAgICogQ01UICAgICAgICAgICAgIDxESVI+ICAgICAgICAgICAxMS0yMS05NCAgICAgICAgMTA6
MTcKLSAgICAgICogREVTSUdOMS5ET0MgICAgICAgICAgMTEyNjQgICAgICAwNS0xMS05NSAgICAg
ICAgMTQ6MjAKLSAgICAgICogUkVBRE1FLlRYVCAgICAgICAgICAgIDEwNDUgICAgICAwNS0xMC05
NSAgICAgICAgMTE6MDEKLSAgICAgICogV1BLSVQxLkVYRSAgICAgICAgICA5NjAzMzggICAgICAw
Ni0yMS05NSAgICAgICAgMTc6MDEKLSAgICAgICogQ01ULkNTViAgICAgICAgICAgICAgICAgIDAg
ICAgICAwNy0wNi05NSAgICAgICAgMTQ6NTYKLSAgICAgICoKLSAgICAgICogQ2hhbWVsZW9uIGRp
cmxpc3QgZ3Vlc3NlZCBmcm9tIGx5bngKLSAgICAgICogLiAgICAgICAgICAgICAgIDxESVI+ICAg
ICAgTm92IDE2IDE5OTQgMTc6MTYgICAKLSAgICAgICogLi4gICAgICAgICAgICAgIDxESVI+ICAg
ICAgTm92IDE2IDE5OTQgMTc6MTYgICAKLSAgICAgICogSU5TVEFMTCAgICAgICAgIDxESVI+ICAg
ICAgTm92IDE2IDE5OTQgMTc6MTcKLSAgICAgICogQ01UICAgICAgICAgICAgIDxESVI+ICAgICAg
Tm92IDIxIDE5OTQgMTA6MTcKLSAgICAgICogREVTSUdOMS5ET0MgICAgIDExMjY0ICAgICAgTWF5
IDExIDE5OTUgMTQ6MjAgICBBCi0gICAgICAqIFJFQURNRS5UWFQgICAgICAgMTA0NSAgICAgIE1h
eSAxMCAxOTk1IDExOjAxCi0gICAgICAqIFdQS0lUMS5FWEUgICAgIDk2MDMzOCAgICAgIEp1biAy
MSAxOTk1IDE3OjAxICAgUgotICAgICAgKiBDTVQuQ1NWICAgICAgICAgICAgIDAgICAgICBKdWwg
MDYgMTk5NSAxNDo1NiAgIFJIQQotICAgICAgKi8KLSAgICAgIGlmIChudW10b2tzID49IDQgJiYg
dG9rbGVuWzBdIDwgMTMgJiYgCi0gICAgICAgICAgKCh0b2tsZW5bMV0gPT0gNSAmJiAqdG9rZW5z
WzFdID09ICc8JykgfHwgaXNBU0NJSURpZ2l0KCp0b2tlbnNbMV0pKSApCi0gICAgICB7Ci0gICAg
ICAgIGlmIChudW10b2tzID09IDQKLSAgICAgICAgICYmICh0b2tsZW5bMl0gPT0gOCB8fCB0b2ts
ZW5bMl0gPT0gOSkKLSAgICAgICAgICYmICgoKHRva2Vuc1syXVsyXSkgPT0gJy8nICYmICh0b2tl
bnNbMl1bNV0pID09ICcvJykgfHwKLSAgICAgICAgICAgICAoKHRva2Vuc1syXVsyXSkgPT0gJy0n
ICYmICh0b2tlbnNbMl1bNV0pID09ICctJykpCi0gICAgICAgICAmJiAodG9rbGVuWzNdID09IDQg
fHwgdG9rbGVuWzNdID09IDUpCi0gICAgICAgICAmJiAodG9rZW5zWzNdW3Rva2xlblszXS0zXSkg
PT0gJzonCi0gICAgICAgICAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzJdWzBdKSAmJiBpc0FTQ0lJ
RGlnaXQodG9rZW5zWzJdWzFdKQotICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1syXVsz
XSkgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1syXVs0XSkKLSAgICAgICAgICYmIGlzQVNDSUlEaWdp
dCh0b2tlbnNbMl1bNl0pICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbMl1bN10pCi0gICAgICAgICAm
JiAodG9rbGVuWzJdIDwgOSB8fCBpc0FTQ0lJRGlnaXQodG9rZW5zWzJdWzhdKSkKLSAgICAgICAg
ICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbM11bdG9rbGVuWzNdLTFdKSAmJiBpc0FTQ0lJRGlnaXQo
dG9rZW5zWzNdW3Rva2xlblszXS0yXSkKLSAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNb
M11bdG9rbGVuWzNdLTRdKSAmJiBpc0FTQ0lJRGlnaXQoKnRva2Vuc1szXSkgCi0gICAgICAgICAp
Ci0gICAgICAgIHsKLSAgICAgICAgICBsc3R5bGUgPSAndyc7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSBpZiAoKG51bXRva3MgPT0gNiB8fCBudW10b2tzID09IDcpCi0gICAgICAgICAmJiB0b2ts
ZW5bMl0gPT0gMyAmJiB0b2tsZW5bM10gPT0gMgotICAgICAgICAgJiYgdG9rbGVuWzRdID09IDQg
JiYgdG9rbGVuWzVdID09IDUKLSAgICAgICAgICYmICh0b2tlbnNbNV1bMl0pID09ICc6JwotICAg
ICAgICAgJiYgaXNBU0NJSUFscGhhKHRva2Vuc1syXVswXSkgJiYgaXNBU0NJSUFscGhhKHRva2Vu
c1syXVsxXSkKLSAgICAgICAgICYmICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FTQ0lJQWxw
aGEodG9rZW5zWzJdWzJdKQotICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1szXVswXSkg
JiYgaXNBU0NJSURpZ2l0KHRva2Vuc1szXVsxXSkKLSAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0
b2tlbnNbNF1bMF0pICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbNF1bMV0pCi0gICAgICAgICAmJiBp
c0FTQ0lJRGlnaXQodG9rZW5zWzRdWzJdKSAmJiBpc0FTQ0lJRGlnaXQodG9rZW5zWzRdWzNdKQot
ICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHRva2Vuc1s1XVswXSkgJiYgaXNBU0NJSURpZ2l0KHRv
a2Vuc1s1XVsxXSkKLSAgICAgICAgICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbNV1bM10pICYmIGlz
QVNDSUlEaWdpdCh0b2tlbnNbNV1bNF0pCi0gICAgICAgICAvKiBjb3VsZCBhbHNvIGNoZWNrIHRo
YXQgKCYodG9rZW5zWzVdWzVdKSAtIHRva2Vuc1syXSkgPT0gMTcgKi8KLSAgICAgICAgKQotICAg
ICAgICB7Ci0gICAgICAgICAgbHN0eWxlID0gJ3cnOwotICAgICAgICB9Ci0gICAgICAgIGlmIChs
c3R5bGUgJiYgc3RhdGUubGlzdFN0eWxlICE9IGxzdHlsZSkgLyogZmlyc3QgdGltZSAqLwotICAg
ICAgICB7Ci0gICAgICAgICAgcCA9IHRva2Vuc1sxXTsgICAKLSAgICAgICAgICBpZiAodG9rbGVu
WzFdICE9IDUgfHwgcFswXSAhPSAnPCcgfHwgcFsxXSAhPSAnRCcgfHwgCi0gICAgICAgICAgICAg
ICAgIHBbMl0gIT0gJ0knIHx8IHBbM10gIT0gJ1InIHx8IHBbNF0gIT0gJz4nKQotICAgICAgICAg
IHsKLSAgICAgICAgICAgIGZvciAocG9zID0gMDsgbHN0eWxlICYmIHBvcyA8IHRva2xlblsxXTsg
cG9zKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KCpw
KyspKQotICAgICAgICAgICAgICAgIGxzdHlsZSA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgfSAvKiBub3QgPERJUj4gKi8KLSAgICAgICAgfSAvKiBpZiAoZmlyc3QgdGltZSkgKi8KLSAg
ICAgIH0gLyogaWYgKG51bXRva3MgPT0gLi4uKSAqLwotCi0gICAgICBpZiAobHN0eWxlID09ICd3
JykKLSAgICAgIHsKLSAgICAgICAgc3RhdGUucGFyc2VkT25lID0gdHJ1ZTsKLSAgICAgICAgc3Rh
dGUubGlzdFN0eWxlID0gbHN0eWxlOwotCi0gICAgICAgIHJlc3VsdC5jYXNlU2Vuc2l0aXZlID0g
dHJ1ZTsKLSAgICAgICAgcmVzdWx0LmZpbGVuYW1lID0gdG9rZW5zWzBdOwotICAgICAgICByZXN1
bHQuZmlsZW5hbWVMZW5ndGggPSB0b2tsZW5bMF07Ci0gICAgICAgIHJlc3VsdC50eXBlID0gRlRQ
RGlyZWN0b3J5RW50cnk7Ci0KLSAgICAgICAgcCA9IHRva2Vuc1sxXTsKLSAgICAgICAgaWYgKGlz
QVNDSUlEaWdpdCgqcCkpCi0gICAgICAgIHsKLSAgICAgICAgICByZXN1bHQudHlwZSA9IEZUUEZp
bGVFbnRyeTsKLSAgICAgICAgICBwb3MgPSB0b2tsZW5bMV07Ci0gICAgICAgICAgcmVzdWx0LmZp
bGVTaXplID0gU3RyaW5nKHAsIHBvcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBwID0gdG9rZW5z
WzJdOwotICAgICAgICBpZiAodG9rbGVuWzJdID09IDMpIC8qIENoYW1lbGVvbiAqLwotICAgICAg
ICB7Ci0gICAgICAgICAgdGJ1ZlswXSA9IHRvQVNDSUlVcHBlcihwWzBdKTsKLSAgICAgICAgICB0
YnVmWzFdID0gdG9BU0NJSUxvd2VyKHBbMV0pOwotICAgICAgICAgIHRidWZbMl0gPSB0b0FTQ0lJ
TG93ZXIocFsyXSk7Ci0gICAgICAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCAoMTIqMyk7IHBvcys9
MykKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGJ1ZlswXSA9PSBtb250aF9uYW1lc1tw
b3MrMF0gJiYKLSAgICAgICAgICAgICAgICB0YnVmWzFdID09IG1vbnRoX25hbWVzW3BvcysxXSAm
JiAKLSAgICAgICAgICAgICAgICB0YnVmWzJdID09IG1vbnRoX25hbWVzW3BvcysyXSkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24gPSBwb3Mv
MzsKLSAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0gYXRvaSh0b2tl
bnNbM10pOwotICAgICAgICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgPSBhdG9p
KHRva2Vuc1s0XSkgLSAxOTAwOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICB9ICAgICAgICAgIAotICAgICAgICAgIHBvcyA9IDU7IC8qIENoYW1lbGVvbiB0
b2tudW0gb2YgZGF0ZSBmaWVsZCAqLwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ewotICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbW9uID0gYXRvaShwKzApLTE7Ci0g
ICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tZGF5ID0gYXRvaShwKzMpOwotICAgICAg
ICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9IGF0b2kocCs2KTsKLSAgICAgICAgICBp
ZiAocmVzdWx0Lm1vZGlmaWVkVGltZS50bV95ZWFyIDwgODApIC8qIFN1cGVyVENQICovCi0gICAg
ICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX3llYXIgKz0gMTAwOwotCi0gICAgICAgICAg
cG9zID0gMzsgLyogU3VwZXJUQ1AgdG9rbnVtIG9mIGRhdGUgZmllbGQgKi8KLSAgICAgICAgfQot
Ci0gICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1faG91ciA9IGF0b2kodG9rZW5zW3Bvc10p
OwotICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21pbiA9IGF0b2koJih0b2tlbnNbcG9z
XVt0b2tsZW5bcG9zXS0yXSkpOwotCi0gICAgICAgIC8qIHRoZSBjYWxsZXIgc2hvdWxkIGRvIHRo
aXMgKGlmIGRyb3BwaW5nICIuIiBhbmQgIi4uIiBpcyBkZXNpcmVkKQotICAgICAgICBpZiAocmVz
dWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkgJiYgcmVzdWx0LmZpbGVuYW1lWzBdID09ICcu
JyAmJgotICAgICAgICAgICAgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9PSAxIHx8IChyZXN1bHQu
ZmlsZW5hbWVMZW5ndGggPT0gMiAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuZmlsZW5hbWVbMV0gPT0gJy4nKSkpCi0gICAgICAgICAgcmV0dXJuIEZUUEp1
bmtFbnRyeTsKLSAgICAgICAgKi8KLQotICAgICAgICByZXR1cm4gcmVzdWx0LnR5cGU7Ci0gICAg
ICB9IC8qIChsc3R5bGUgPT0gJ3cnKSAqLwotCi0gICAgfSAvKiBpZiAoIWxzdHlsZSAmJiAoIXN0
YXRlLmxpc3RTdHlsZSB8fCBzdGF0ZS5saXN0U3R5bGUgPT0gJ3cnKSkgICovCi0jZW5kaWYKLQot
ICAgIC8qICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrICovCi0KLSNpZiBkZWZpbmVkKFNVUFBPUlRfRExTKSAvKiBkbHMgLWR0UiAqLwot
ICAgIGlmICghbHN0eWxlICYmIAotICAgICAgIChzdGF0ZS5saXN0U3R5bGUgPT0gJ0QnIHx8ICgh
c3RhdGUubGlzdFN0eWxlICYmIHN0YXRlLm51bUxpbmVzID09IDEpKSkKLSAgICAgICAvKiAvYmlu
L2RscyBsaW5lcyBoYXZlIHRvIGJlIGltbWVkaWF0ZWx5IHJlY29nbml6YWJsZSAoZmlyc3QgbGlu
ZSkgKi8KLSAgICB7Ci0gICAgICAvKiBJIGhhdmVuJ3Qgc2VlbiBhbiBGVFAgc2VydmVyIHRoYXQg
ZGVsaXZlcnMgYSAvYmluL2RscyBsaXN0aW5nLAotICAgICAgICogYnV0IGNhbiBpbmZlciB0aGUg
Zm9ybWF0IGZyb20gdGhlIGx5bnggYW5kIG1pcnJvci5wbCBwcm9qZWN0cy4KLSAgICAgICAqIEJv
dGggZm9ybWF0cyBhcmUgc3VwcG9ydGVkLgotICAgICAgICoKLSAgICAgICAqIEx5bnggc2F5czoK
LSAgICAgICAqIFJFQURNRSAgICAgICAgICAgICAgNzYzICBJbmZvcm1hdGlvbiBhYm91dCB0aGlz
IHNlcnZlclwwCi0gICAgICAgKiBiaW4vICAgICAgICAgICAgICAgICAgLSAgXDAKLSAgICAgICAq
IGV0Yy8gICAgICAgICAgICAgICAgICA9ICBcMAotICAgICAgICogbHMtbFIgICAgICAgICAgICAg
ICAgIDAgIFwwCi0gICAgICAgKiBscy1sUi5aICAgICAgICAgICAgICAgMyAgXDAKLSAgICAgICAq
IHB1Yi8gICAgICAgICAgICAgICAgICA9ICBQdWJsaWMgYXJlYVwwCi0gICAgICAgKiB1c3IvICAg
ICAgICAgICAgICAgICAgLSAgXDAKLSAgICAgICAqIG1vcmdhbiAgICAgICAgICAgICAgIDE0ICAt
PiAuLi9yZWFsL21vcmdhblwwCi0gICAgICAgKiBUSU1JVC5tb3N0bGlrZWx5LlpcMAotICAgICAg
ICogICAgICAgICAgICAgICAgICAgNzkyMTUgIFwwCi0gICAgICAgKgotICAgICAgICogbWlycm9y
LnBsIHNheXM6Ci0gICAgICAgKiBmaWxlbmFtZTogIF4oXFMqKVxzKwotICAgICAgICogc2l6ZTog
ICAgICAoXC18XD18XGQrKVxzKwotICAgICAgICogbW9udGgvZGF5OiAoKFx3XHdcd1xzK1xkK3xc
ZCtccytcd1x3XHcpXHMrCi0gICAgICAgKiB0aW1lL3llYXI6IChcZCs6XGQrfFxkXGRcZFxkKSlc
cysKLSAgICAgICAqIHJlc3Q6ICAgICAgKC4rKSAKLSAgICAgICAqCi0gICAgICAgKiBSRUFETUUg
ICAgICAgICAgICAgIDc2MyAgSnVsIDExIDIxOjA1ICBJbmZvcm1hdGlvbiBhYm91dCB0aGlzIHNl
cnZlcgotICAgICAgICogYmluLyAgICAgICAgICAgICAgICAgIC0gIEFwciAyOCAgMTk5NAotICAg
ICAgICogZXRjLyAgICAgICAgICAgICAgICAgID0gIDExIEp1bCAyMTowNAotICAgICAgICogbHMt
bFIgICAgICAgICAgICAgICAgIDAgICA2IEF1ZyAxNzoxNAotICAgICAgICogbHMtbFIuWiAgICAg
ICAgICAgICAgIDMgIDA1IFNlcCAxOTk0Ci0gICAgICAgKiBwdWIvICAgICAgICAgICAgICAgICAg
PSAgSnVsIDExIDIxOjA0ICBQdWJsaWMgYXJlYQotICAgICAgICogdXNyLyAgICAgICAgICAgICAg
ICAgIC0gIFNlcCAgNyAwOTozOQotICAgICAgICogbW9yZ2FuICAgICAgICAgICAgICAgMTQgIEFw
ciAxOCAwOTozOSAgLT4gLi4vcmVhbC9tb3JnYW4KLSAgICAgICAqIFRJTUlULm1vc3RsaWtlbHku
WgotICAgICAgICogICAgICAgICAgICAgICAgICAgNzkyMTUgIEp1bCAxMSAyMTowNAotICAgICAg
Ki8KLSAgICAgIGlmICghc3RhdGUubGlzdFN0eWxlICYmIGxpbmVbbGluZWxlbi0xXSA9PSAnOicg
JiYgCi0gICAgICAgICAgbGluZWxlbiA+PSAyICYmIHRva2xlbltudW10b2tzLTFdICE9IDEpCi0g
ICAgICB7IAotICAgICAgICAvKiBjb2RlIGluIG1pcnJvci5wbCBzdWdnZXN0cyB0aGF0IGEgbGlz
dGluZyBtYXkgYmUgcHJlY2VkZWQKLSAgICAgICAgICogYnkgYSBQV0QgbGluZSBpbiB0aGUgZm9y
bSAiL3NvbWUvZGlyL25hbWVzL2hlcmU6IgotICAgICAgICAgKiBidXQgZG9lcyBub3QgbmVjZXNz
YXJpbHkgYmVnaW4gd2l0aCAnLycuICpzaWdoKgotICAgICAgICAqLwotICAgICAgICBwb3MgPSAw
OwotICAgICAgICBwID0gbGluZTsKLSAgICAgICAgd2hpbGUgKHBvcyA8IChsaW5lbGVuLTEpKQot
ICAgICAgICB7Ci0gICAgICAgICAgLyogaWxsZWdhbCAob3IgZXh0cmVtZWx5IHVudXN1YWwpIGNo
YXJzIGluIGEgZGlyc3BlYyAqLwotICAgICAgICAgIGlmICgqcCA9PSAnPCcgfHwgKnAgPT0gJ3wn
IHx8ICpwID09ICc+JyB8fAotICAgICAgICAgICAgICAqcCA9PSAnPycgfHwgKnAgPT0gJyonIHx8
ICpwID09ICdcXCcpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBpZiAoKnAgPT0gJy8n
ICYmIHBvcyA8IChsaW5lbGVuLTIpICYmIHBbMV0gPT0gJy8nKQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgcG9zKys7Ci0gICAgICAgICAgcCsrOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChwb3MgPT0gKGxpbmVsZW4tMSkpCi0gICAgICAgIHsKLSAgICAgICAgICBzdGF0ZS5saXN0U3R5
bGUgPSAnRCc7Ci0gICAgICAgICAgcmV0dXJuIEZUUEp1bmtFbnRyeTsKLSAgICAgICAgfQotICAg
ICAgfQotCi0gICAgICBpZiAoIWxzdHlsZSAmJiBudW10b2tzID49IDIpCi0gICAgICB7Ci0gICAg
ICAgIHBvcyA9IDIyOyAvKiBwb3Mgb2YgKFxkK3wtfD0pIGlmIHRoaXMgaXMgbm90IHBhcnQgb2Yg
YSBtdWx0aWxpbmUgKi8KLSAgICAgICAgaWYgKHN0YXRlLmxpc3RTdHlsZSAmJiBjYXJyeV9idWZf
bGVuKSAvKiBmaXJzdCBpcyBmcm9tIHByZXZpb3VzIGxpbmUgKi8KLSAgICAgICAgICBwb3MgPSB0
b2tsZW5bMV0tMTsgLyogYW5kIGlzICdhcy1pcycgKG1heSBjb250YWluIHdoaXRlc3BhY2UpICov
Ci0KLSAgICAgICAgaWYgKGxpbmVsZW4gPiBwb3MpCi0gICAgICAgIHsKLSAgICAgICAgICBwID0g
JmxpbmVbcG9zXTsKLSAgICAgICAgICBpZiAoKCpwID09ICctJyB8fCAqcCA9PSAnPScgfHwgaXNB
U0NJSURpZ2l0KCpwKSkgJiYKLSAgICAgICAgICAgICAgKChsaW5lbGVuID09IChwb3MrMSkpIHx8
IAotICAgICAgICAgICAgICAgKGxpbmVsZW4gPj0gKHBvcyszKSAmJiBwWzFdID09ICcgJyAmJiBw
WzJdID09ICcgJykpICkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0b2ttYXJrZXIgPSAxOwot
ICAgICAgICAgICAgaWYgKCFjYXJyeV9idWZfbGVuKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICBwb3MgPSAxOwotICAgICAgICAgICAgICB3aGlsZSAocG9zIDwgbnVtdG9rcyAmJiAodG9r
ZW5zW3Bvc10rdG9rbGVuW3Bvc10pIDwgKCZsaW5lWzIzXSkpCi0gICAgICAgICAgICAgICAgcG9z
Kys7Ci0gICAgICAgICAgICAgIHRva21hcmtlciA9IDA7Ci0gICAgICAgICAgICAgIGlmICgodG9r
ZW5zW3Bvc10rdG9rbGVuW3Bvc10pID09ICgmbGluZVsyM10pKQotICAgICAgICAgICAgICAgIHRv
a21hcmtlciA9IHBvczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0b2ttYXJrZXIp
ICAKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbHN0eWxlID0gJ0QnOwotICAgICAgICAg
ICAgICBpZiAoKnRva2Vuc1t0b2ttYXJrZXJdID09ICctJyB8fCAqdG9rZW5zW3Rva21hcmtlcl0g
PT0gJz0nKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHRva2xlblt0b2tt
YXJrZXJdICE9IDEgfHwKLSAgICAgICAgICAgICAgICAgICAodG9rZW5zW3Rva21hcmtlci0xXVt0
b2tsZW5bdG9rbWFya2VyLTFdLTFdKSAhPSAnLycpCi0gICAgICAgICAgICAgICAgICBsc3R5bGUg
PSAwOwotICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yIChwb3MgPSAwOyBsc3R5bGUgJiYg
cG9zIDwgdG9rbGVuW3Rva21hcmtlcl07IHBvcysrKSAKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCh0b2tlbnNbdG9rbWFya2VyXVtwb3NdKSkK
LSAgICAgICAgICAgICAgICAgICAgbHN0eWxlID0gMDsgCi0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGlmIChsc3R5bGUgJiYgIXN0YXRlLmxpc3RTdHls
ZSkgLyogZmlyc3QgdGltZSAqLwotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLyog
c2NhbiBmb3IgaWxsZWdhbCAob3IgaW5jcmVkaWJseSB1bnVzdWFsKSBjaGFycyBpbiBmbmFtZSAq
LwotICAgICAgICAgICAgICAgIGZvciAocCA9IHRva2Vuc1swXTsgbHN0eWxlICYmCi0gICAgICAg
ICAgICAgICAgICAgICBwIDwgJih0b2tlbnNbdG9rbWFya2VyLTFdW3Rva2xlblt0b2ttYXJrZXIt
MV1dKTsgcCsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlmICgqcCA9
PSAnPCcgfHwgKnAgPT0gJ3wnIHx8ICpwID09ICc+JyB8fCAKLSAgICAgICAgICAgICAgICAgICAg
ICAqcCA9PSAnPycgfHwgKnAgPT0gJyonIHx8ICpwID09ICcvJyB8fCAqcCA9PSAnXFwnKQotICAg
ICAgICAgICAgICAgICAgICBsc3R5bGUgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICB9IC8qIHNpemUgdG9rZW4gZm91bmQgKi8KLSAgICAgICAg
ICB9IC8qIGV4cGVjdGVkIGNoYXJzIGJlaGluZCBleHBlY3RlZCBzaXplIHRva2VuICovCi0gICAg
ICAgIH0gLyogaWYgKGxpbmVsZW4gPiBwb3MpICovCi0gICAgICB9IC8qIGlmICghbHN0eWxlICYm
IG51bXRva3MgPj0gMikgKi8KLQotICAgICAgaWYgKCFsc3R5bGUgJiYgc3RhdGUubGlzdFN0eWxl
ID09ICdEJyAmJiAhY2FycnlfYnVmX2xlbikKLSAgICAgIHsKLSAgICAgICAgLyogdGhlIGZpbGVu
YW1lIG9mIGEgbXVsdGktbGluZSBlbnRyeSBjYW4gYmUgaWRlbnRpZmllZAotICAgICAgICAgKiBj
b3JyZWN0bHkgb25seSBpZiBkbHMgZm9ybWF0IGhhZCBiZWVuIHByZXZpb3VzbHkgZXN0YWJsaXNo
ZWQuCi0gICAgICAgICAqIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSB0cnVlIGJlY2F1c2UgdGhlcmUg
c2hvdWxkIGJlIGVudHJpZXMKLSAgICAgICAgICogZm9yICcuJyBhbmQvb3IgJy4uJyBhbmQvb3Ig
Q1dEIHRoYXQgcHJlY2VkZSB0aGUgcmVzdCBvZiB0aGUKLSAgICAgICAgICogbGlzdGluZy4KLSAg
ICAgICAgKi8KLSAgICAgICAgcG9zID0gbGluZWxlbjsKLSAgICAgICAgaWYgKHBvcyA+IChzaXpl
b2Yoc3RhdGUuY2FycnlCdWZmZXIpLTEpKQotICAgICAgICAgIHBvcyA9IHNpemVvZihzdGF0ZS5j
YXJyeUJ1ZmZlciktMTsKLSAgICAgICAgbWVtY3B5KCBzdGF0ZS5jYXJyeUJ1ZmZlciwgbGluZSwg
cG9zICk7Ci0gICAgICAgIHN0YXRlLmNhcnJ5QnVmZmVyTGVuZ3RoID0gcG9zOwotICAgICAgICBy
ZXR1cm4gRlRQSnVua0VudHJ5OwotICAgICAgfQotCi0gICAgICBpZiAobHN0eWxlID09ICdEJykK
LSAgICAgIHsKLSAgICAgICAgc3RhdGUucGFyc2VkT25lID0gdHJ1ZTsKLSAgICAgICAgc3RhdGUu
bGlzdFN0eWxlID0gbHN0eWxlOwotCi0gICAgICAgIHAgPSAmKHRva2Vuc1t0b2ttYXJrZXItMV1b
dG9rbGVuW3Rva21hcmtlci0xXV0pOwotICAgICAgICByZXN1bHQuZmlsZW5hbWUgPSB0b2tlbnNb
MF07Ci0gICAgICAgIHJlc3VsdC5maWxlbmFtZUxlbmd0aCA9IHAgLSB0b2tlbnNbMF07Ci0gICAg
ICAgIHJlc3VsdC50eXBlICA9IEZUUEZpbGVFbnRyeTsKLQotICAgICAgICBpZiAocmVzdWx0LmZp
bGVuYW1lW3Jlc3VsdC5maWxlbmFtZUxlbmd0aC0xXSA9PSAnLycpCi0gICAgICAgIHsKLSAgICAg
ICAgICBpZiAocmVzdWx0LmxpbmtuYW1lTGVuZ3RoID09IDEpCi0gICAgICAgICAgICByZXN1bHQu
dHlwZSA9IEZUUEp1bmtFbnRyeTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgewotICAgICAg
ICAgICAgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoLS07Ci0gICAgICAgICAgICByZXN1bHQudHlwZSAg
PSBGVFBEaXJlY3RvcnlFbnRyeTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSBpZiAoaXNBU0NJSURpZ2l0KCp0b2tlbnNbdG9rbWFya2VyXSkpCi0gICAgICAgIHsKLSAgICAg
ICAgICBwb3MgPSB0b2tsZW5bdG9rbWFya2VyXTsKLSAgICAgICAgICByZXN1bHQuZmlsZVNpemUg
PSBTdHJpbmcodG9rZW5zW3Rva21hcmtlcl0sIHBvcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoKHRva21hcmtlciszKSA8IG51bXRva3MgJiYgCi0gICAgICAgICAgICAgICgmKHRva2Vuc1tu
dW10b2tzLTFdW3Rva2xlbltudW10b2tzLTFdXSkgLSAKLSAgICAgICAgICAgICAgIHRva2Vuc1t0
b2ttYXJrZXIrMV0pID49ICgxKzErMysxKzQpICkKLSAgICAgICAgewotICAgICAgICAgIHBvcyA9
ICh0b2ttYXJrZXIrMyk7Ci0gICAgICAgICAgcCA9IHRva2Vuc1twb3NdOwotICAgICAgICAgIHBv
cyA9IHRva2xlbltwb3NdOwotCi0gICAgICAgICAgaWYgKChwb3MgPT0gNCB8fCBwb3MgPT0gNSkK
LSAgICAgICAgICAmJiAgaXNBU0NJSURpZ2l0KCpwKSAmJiBpc0FTQ0lJRGlnaXQocFtwb3MtMV0p
ICYmIGlzQVNDSUlEaWdpdChwW3Bvcy0yXSkKLSAgICAgICAgICAmJiAgKChwb3MgPT0gNSAmJiBw
WzJdID09ICc6JykgfHwgIAotICAgICAgICAgICAgICAgKHBvcyA9PSA0ICYmIChpc0FTQ0lJRGln
aXQocFsxXSkgfHwgcFsxXSA9PSAnOicpKSkKLSAgICAgICAgICAgICApCi0gICAgICAgICAgewot
ICAgICAgICAgICAgbW9udGhfbnVtID0gdG9rbWFya2VyKzE7IC8qIGFzc3VtZWQgcG9zaXRpb24g
b2YgbW9udGggZmllbGQgKi8KLSAgICAgICAgICAgIHBvcyA9IHRva21hcmtlcisyOyAgICAgICAv
KiBhc3N1bWVkIHBvc2l0aW9uIG9mIG1kYXkgZmllbGQgKi8KLSAgICAgICAgICAgIGlmIChpc0FT
Q0lJRGlnaXQoKnRva2Vuc1ttb250aF9udW1dKSkgLyogcG9zaXRpb25zIGFyZSByZXZlcnNlZCAq
LwotICAgICAgICAgICAgewotICAgICAgICAgICAgICBtb250aF9udW0rKzsKLSAgICAgICAgICAg
ICAgcG9zLS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwID0gdG9rZW5zW21vbnRoX251
bV07Ci0gICAgICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KCp0b2tlbnNbcG9zXSkgCi0gICAgICAg
ICAgICAmJiAodG9rbGVuW3Bvc10gPT0gMSB8fCAKLSAgICAgICAgICAgICAgICAgICh0b2tsZW5b
cG9zXSA9PSAyICYmIGlzQVNDSUlEaWdpdCh0b2tlbnNbcG9zXVsxXSkpKQotICAgICAgICAgICAg
JiYgdG9rbGVuW21vbnRoX251bV0gPT0gMwotICAgICAgICAgICAgJiYgaXNBU0NJSUFscGhhKCpw
KSAmJiBpc0FTQ0lJQWxwaGEocFsxXSkgJiYgaXNBU0NJSUFscGhhKHBbMl0pICApCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgIHBvcyA9IGF0b2kodG9rZW5zW3Bvc10pOwotICAgICAgICAg
ICAgICBpZiAocG9zID4gMCAmJiBwb3MgPD0gMzEpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICByZXN1bHQubW9kaWZpZWRUaW1lLnRtX21kYXkgPSBwb3M7Ci0gICAgICAgICAgICAg
ICAgbW9udGhfbnVtID0gMTsKLSAgICAgICAgICAgICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8ICgx
MiozKTsgcG9zKz0zKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGlmIChw
WzBdID09IG1vbnRoX25hbWVzW3BvcyswXSAmJgotICAgICAgICAgICAgICAgICAgICAgIHBbMV0g
PT0gbW9udGhfbmFtZXNbcG9zKzFdICYmCi0gICAgICAgICAgICAgICAgICAgICAgcFsyXSA9PSBt
b250aF9uYW1lc1twb3MrMl0pCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgbW9udGhfbnVtKys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGlmIChtb250aF9udW0gPiAxMikKLSAgICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRp
bWUudG1fbWRheSA9IDA7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
cmVzdWx0Lm1vZGlmaWVkVGltZS50bV9tb24gPSBtb250aF9udW0gLSAxOwotICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocmVzdWx0Lm1vZGlmaWVkVGltZS50
bV9tZGF5KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICB0b2ttYXJrZXIgKz0gMzsgLyog
c2tpcCBtZGF5L21vbi95cnRpbWUgKHRvIGZpbmQgIiAtPiAiKSAqLwotICAgICAgICAgICAgICBw
ID0gdG9rZW5zW3Rva21hcmtlcl07Ci0KLSAgICAgICAgICAgICAgcG9zID0gYXRvaShwKTsKLSAg
ICAgICAgICAgICAgaWYgKHBvcyA+IDI0KQotICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmll
ZFRpbWUudG1feWVhciA9IHBvcy0xOTAwOwotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBpZiAocFsxXSA9PSAnOicpCi0gICAgICAgICAgICAgICAg
ICBwLS07Ci0gICAgICAgICAgICAgICAgcmVzdWx0Lm1vZGlmaWVkVGltZS50bV9ob3VyID0gcG9z
OwotICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWluID0gYXRvaShwKzMp
OwotICAgICAgICAgICAgICAgIGlmICghc3RhdGUubm93KQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgIHRpbWVfdCBub3cgPSB0aW1lKE5VTEwpOwotICAgICAgICAgICAgICAg
ICAgc3RhdGUubm93ID0gbm93ICogMTAwMDAwMC4wOwotICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGhhcyB0aGUgeWVhciAyMDM4IGJ1Zwot
ICAgICAgICAgICAgICAgICAgZ210aW1lX3IoJm5vdywgJnN0YXRlLm5vd0ZUUFRpbWUpOwotICAg
ICAgICAgICAgICAgICAgc3RhdGUubm93RlRQVGltZS50bV95ZWFyICs9IDE5MDA7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllZFRpbWUudG1feWVhciA9
IHN0YXRlLm5vd0ZUUFRpbWUudG1feWVhcjsKLSAgICAgICAgICAgICAgICBpZiAoICgoIHN0YXRl
Lm5vd0ZUUFRpbWUudG1fbW9uICA8PCA0KSArIHN0YXRlLm5vd0ZUUFRpbWUudG1fbWRheSkgPAot
ICAgICAgICAgICAgICAgICAgICAgKChyZXN1bHQubW9kaWZpZWRUaW1lLnRtX21vbiA8PCA0KSAr
IHJlc3VsdC5tb2RpZmllZFRpbWUudG1fbWRheSkgKQotICAgICAgICAgICAgICAgICAgcmVzdWx0
Lm1vZGlmaWVkVGltZS50bV95ZWFyLS07Ci0gICAgICAgICAgICAgIH0gLyogZ290IHllYXIgb3Ig
dGltZSAqLwotICAgICAgICAgICAgfSAvKiBnb3QgbW9udGgvbWRheSAqLwotICAgICAgICAgIH0g
LyogbWF5IGhhdmUgeWVhciBvciB0aW1lICovCi0gICAgICAgIH0gLyogZW5vdWdoIHJlbWFpbmlu
ZyB0byBwb3NzaWJseSBoYXZlIGRhdGUvdGltZSAqLwotCi0gICAgICAgIGlmIChudW10b2tzID4g
KHRva21hcmtlcisyKSkKLSAgICAgICAgewotICAgICAgICAgIHBvcyA9IHRva21hcmtlcisxOwot
ICAgICAgICAgIHAgPSB0b2tlbnNbcG9zXTsKLSAgICAgICAgICBpZiAodG9rbGVuW3Bvc10gPT0g
MiAmJiAqcCA9PSAnLScgJiYgcFsxXSA9PSAnPicpCi0gICAgICAgICAgewotICAgICAgICAgICAg
cCA9ICYodG9rZW5zW251bXRva3MtMV1bdG9rbGVuW251bXRva3MtMV1dKTsKLSAgICAgICAgICAg
IHJlc3VsdC50eXBlICA9IEZUUExpbmtFbnRyeTsKLSAgICAgICAgICAgIHJlc3VsdC5saW5rbmFt
ZSA9IHRva2Vuc1twb3MrMV07Ci0gICAgICAgICAgICByZXN1bHQubGlua25hbWVMZW5ndGggPSBw
IC0gcmVzdWx0LmxpbmtuYW1lOwotICAgICAgICAgICAgaWYgKHJlc3VsdC5saW5rbmFtZUxlbmd0
aCA+IDEgJiYKLSAgICAgICAgICAgICAgICByZXN1bHQubGlua25hbWVbcmVzdWx0LmxpbmtuYW1l
TGVuZ3RoLTFdID09ICcvJykKLSAgICAgICAgICAgICAgcmVzdWx0LmxpbmtuYW1lTGVuZ3RoLS07
Ci0gICAgICAgICAgfQotICAgICAgICB9IC8qIGlmIChudW10b2tzID4gKHRva21hcmtlcisyKSkg
Ki8KLQotICAgICAgICAvKiB0aGUgY2FsbGVyIHNob3VsZCBkbyB0aGlzIChpZiBkcm9wcGluZyAi
LiIgYW5kICIuLiIgaXMgZGVzaXJlZCkKLSAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IEZUUERp
cmVjdG9yeUVudHJ5ICYmIHJlc3VsdC5maWxlbmFtZVswXSA9PSAnLicgJiYKLSAgICAgICAgICAg
IChyZXN1bHQuZmlsZW5hbWVMZW5ndGggPT0gMSB8fCAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID09
IDIgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZpbGVu
YW1lWzFdID09ICcuJykpKQotICAgICAgICAgIHJldHVybiBGVFBKdW5rRW50cnk7Ci0gICAgICAg
ICovCi0KLSAgICAgICAgcmV0dXJuIHJlc3VsdC50eXBlOwotCi0gICAgICB9IC8qIGlmIChsc3R5
bGUgPT0gJ0QnKSAqLwotICAgIH0gLyogaWYgKCFsc3R5bGUgJiYgKCFzdGF0ZS5saXN0U3R5bGUg
fHwgc3RhdGUubGlzdFN0eWxlID09ICdEJykpICovCi0jZW5kaWYKLQotICAgIC8qICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrICovCi0K
LSAgfSAvKiBpZiAobGluZWxlbiA+IDApICovCi0KLSAgcmV0dXJuIFBhcnNpbmdGYWlsZWQoc3Rh
dGUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRlRQ
RElSKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuaAko
cmV2aXNpb24gOTU5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFy
c2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDIgQ3lydXMgUGF0ZWwgPGN5cEBmYjE0LnVuaS1tYWluei5kZT4KLSAqICAgICAgICAg
ICAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSAyLjEgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotLyogUGFyc2VGVFBMaXN0KCkgcGFyc2VzIGxpbmVz
IGZyb20gYW4gRlRQIExJU1QgY29tbWFuZC4KLSoqCi0qKiBXcml0dGVuIEp1bHkgMjAwMiBieSBD
eXJ1cyBQYXRlbCA8Y3lwQGZiMTQudW5pLW1haW56LmRlPgotKiogd2l0aCBhY2tub3dsZWRnZW1l
bnRzIHRvIHNxdWlkLCBseW54LCB3Z2V0IGFuZCBmdHBtaXJyb3IuCi0qKgotKiogQXJndW1lbnRz
OgotKiogICAnbGluZSc6ICAgICAgIGxpbmUgb2YgRlRQIGRhdGEgY29ubmVjdGlvbiBvdXRwdXQu
IFRoZSBsaW5lIGlzIGFzc3VtZWQKLSoqICAgICAgICAgICAgICAgICB0byBlbmQgYXQgdGhlIGZp
cnN0ICdcMCcgb3IgJ1xuJyBvciAnXHJcbicuIAotKiogICAnc3RhdGUnOiAgICAgIGEgc3RydWN0
dXJlIHVzZWQgaW50ZXJuYWxseSB0byB0cmFjayBzdGF0ZSBiZXR3ZWVuIAotKiogICAgICAgICAg
ICAgICAgIGxpbmVzLiBOZWVkcyB0byBiZSBiemVybygpJ2QgYXQgTElTVCBiZWdpbi4KLSoqICAg
J3Jlc3VsdCc6ICAgICB3aGVyZSBQYXJzZUZUUExpc3Qgd2lsbCBzdG9yZSB0aGUgcmVzdWx0cyBv
ZiB0aGUgcGFyc2UKLSoqICAgICAgICAgICAgICAgICBpZiAnbGluZScgaXMgbm90IGEgY29tbWVu
dCBhbmQgaXMgbm90IGp1bmsuCi0qKgotKiogUmV0dXJucyBvbmUgb2YgdGhlIGZvbGxvd2luZzoK
LSoqICAgICdkJyAtIExJU1QgbGluZSBpcyBhIGRpcmVjdG9yeSBlbnRyeSAoJ3Jlc3VsdCcgaXMg
dmFsaWQpCi0qKiAgICAnZicgLSBMSVNUIGxpbmUgaXMgYSBmaWxlJ3MgZW50cnkgKCdyZXN1bHQn
IGlzIHZhbGlkKQotKiogICAgJ2wnIC0gTElTVCBsaW5lIGlzIGEgc3ltbGluaydzIGVudHJ5ICgn
cmVzdWx0JyBpcyB2YWxpZCkKLSoqICAgICc/JyAtIExJU1QgbGluZSBpcyBqdW5rLiAoY3dkLCBu
b24tZmlsZS9kaXIvbGluaywgZXRjKQotKiogICAgJyInIC0gaXRzIG5vdCBhIExJU1QgbGluZSAo
aXRzIGEgImNvbW1lbnQiKQotKioKLSoqIEl0IG1heSBiZSBhZHZpc2FibGUgdG8gbGV0IHRoZSBl
bmQtdXNlciBzZWUgImNvbW1lbnRzIiAocGFydGljdWxhcmx5IHdoZW4gCi0qKiB0aGUgbGlzdGlu
ZyByZXN1bHRzIGluIE9OTFkgc3VjaCBsaW5lcykgYmVjYXVzZSBzdWNoIGEgbGlzdGluZyBtYXkg
YmU6Ci0qKiAtIGFuIHVua25vd24gTElTVCBmb3JtYXQgKE5MU1Qgb3IgImN1c3RvbSIgZm9ybWF0
IGZvciBleGFtcGxlKQotKiogLSBhbiBlcnJvciBtc2cgKEVQRVJNLEVOT0VOVCxFTkZJTEUsRU1G
SUxFLEVOT1RESVIsRU5PVEJMSyxFRVhERVYgZXRjKS4KLSoqIC0gYW4gZW1wdHkgZGlyZWN0b3J5
IGFuZCB0aGUgJ2NvbW1lbnQnIGlzIGEgInRvdGFsIDAiIGxpbmUgb3Igc2ltaWxhci4KLSoqICAg
KHdhcm5pbmc6IGEgInRvdGFsIDAiIGNhbiBhbHNvIG1lYW4gdGhlIHRvdGFsIHNpemUgaXMgdW5r
bm93bikuCi0qKgotKiogUGFyc2VGVFBMaXN0KCkgc3VwcG9ydHMgYWxsIGtub3duIEZUUCBMSVNU
aW5nIGZvcm1hdHM6Ci0qKiAtICcvYmluL2xzIC1sJyBhbmQgYWxsIHZhcmlhbnRzIChpbmNsdWRp
bmcgSGVsbHNvZnQgRlRQIGZvciBOZXRXYXJlKTsgCi0qKiAtIEVQTEYgKEVhc2lseSBQYXJzYWJs
ZSBMaXN0IEZvcm1hdCk7IAotKiogLSBXaW5kb3dzIE5UJ3MgZGVmYXVsdCAiRE9TLWRpcnN0eWxl
IjsKLSoqIC0gT1MvMiBiYXNpYyBzZXJ2ZXIgZm9ybWF0IExJU1QgZm9ybWF0OyAgCi0qKiAtIFZN
UyAoTXVsdGlOZXQsIFVDWCwgYW5kIENNVSkgTElTVCBmb3JtYXQgKGluY2x1ZGluZyBtdWx0aS1s
aW5lIGZvcm1hdCk7Ci0qKiAtIElCTSBWTS9DTVMsIFZNL0VTQSBMSVNUIGZvcm1hdCAodHdvIGtu
b3duIHZhcmlhbnRzKTsgIAotKiogLSBTdXBlclRDUCBGVFAgU2VydmVyIGZvciBXaW4xNiBMSVNU
IGZvcm1hdDsgIAotKiogLSBOZXRNYW5hZ2UgQ2hhbWVsZW9uIChORVdUKSBmb3IgV2luMTYgTElT
VCBmb3JtYXQ7ICAKLSoqIC0gJy9iaW4vZGxzJyAodHdvIGtub3duIHZhcmlhbnRzLCBwbHVzIG11
bHRpLWxpbmUpIExJU1QgZm9ybWF0OwotKiogSWYgdGhlcmUgYXJlIG90aGVycywgdGhlbiBJJ2Qg
bGlrZSB0byBoZWFyIGFib3V0IHRoZW0gKHNlbmQgbWUgYSBzYW1wbGUpLgotKioKLSoqIE5MU1Rp
bmdzIGFyZSBub3Qgc3VwcG9ydGVkIGV4cGxpY2l0ZWx5IGJlY2F1c2UgdGhleSBjYW5ub3QgYmUg
bWFjaGluZSAKLSoqIHBhcnNlZCBjb25zaXN0YW50bHk6IE5MU1RpbmdzIGRvIG5vdCBoYXZlIHVu
aXF1ZSBjaGFyYWN0ZXJpc3RpY3MgLSBldmVuIAotKiogdGhlIGFzc3VtcHRpb24gdGhhdCB0aGVy
ZSB3b24ndCBiZSB3aGl0ZXNwYWNlIG9uIHRoZSBsaW5lIGRvZXMgbm90IGhvbGQKLSoqIGJlY2F1
c2Ugc29tZSBubGlzdGluZ3MgaGF2ZSBtb3JlIHRoYW4gb25lIGZpbGVuYW1lIHBlciBsaW5lIGFu
ZC9vcgotKiogbWF5IGhhdmUgZmlsZW5hbWVzIHRoYXQgaGF2ZSBzcGFjZXMgaW4gdGhlbS4gTW9y
ZW92ZXIsIGRpc3Rpbmd1aXNoaW5nCi0qKiBiZXR3ZWVuIGFuIGVycm9yIG1lc3NhZ2UgYW5kIGFu
IE5MU1QgbGluZSB3b3VsZCByZXF1aXJlIFBhcnNlTGlzdCgpIHRvCi0qKiByZWNvZ25pemUgYWxs
IHRoZSBwb3NzaWJsZSBzdHJlcnJvcigpIG1lc3NhZ2VzIGluIHRoZSB3b3JsZC4KLSovCi0KLS8v
IFRoaXMgd2FzIG9yaWdpbmFsbHkgTW96aWxsYSBjb2RlLCB0aXRsZWQgUGFyc2VGVFBMaXN0LmgK
LS8vIE9yaWdpbmFsIHZlcnNpb24gb2YgdGhpcyBmaWxlIGNhbiBjdXJyZW50bHkgYmUgZm91bmQg
YXQ6IGh0dHA6Ly9teHIubW96aWxsYS5vcmcvbW96aWxsYTEuOC9zb3VyY2UvbmV0d2Vyay9zdHJl
YW1jb252L2NvbnZlcnRlcnMvUGFyc2VGVFBMaXN0LmgKLQotI2lmbmRlZiBGVFBEaXJlY3RvcnlQ
YXJzZXJfaAotI2RlZmluZSBGVFBEaXJlY3RvcnlQYXJzZXJfaAotCi0jaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKLQotI2luY2x1ZGUgPHRpbWUuaD4KLQotI2RlZmluZSBTVVBQT1JUX0xTTCAg
LyogU3VwcG9ydCBmb3IgL2Jpbi9scyAtbCBhbmQgZG96ZW5zIG9mIHZhcmlhdGlvbnMgdGhlcm9m
ICovCi0jZGVmaW5lIFNVUFBPUlRfRExTICAvKiBTdXBwb3J0IGZvciAvYmluL2RscyBmb3JtYXQg
KHZlcnksIFZlcnksIFZFUlkgcmFyZSkgKi8KLSNkZWZpbmUgU1VQUE9SVF9FUExGIC8qIFN1cHBv
cnQgZm9yIEV4dHJhb3JkaW5hcmlseSBQYXRoZXRpYyBMaXN0IEZvcm1hdCAqLwotI2RlZmluZSBT
VVBQT1JUX0RPUyAgLyogU3VwcG9ydCBmb3IgV2luTlQgc2VydmVyIGluICdzaXRlIGRpcnN0eWxl
JyBkb3MgKi8KLSNkZWZpbmUgU1VQUE9SVF9WTVMgIC8qIFN1cHBvcnQgZm9yIFZNUyAoYWxsOiBN
dWx0aU5ldCwgVUNYLCBDTVUtSVApICovCi0jZGVmaW5lIFNVUFBPUlRfQ01TICAvKiBTdXBwb3J0
IGZvciBJQk0gVk0vQ01TLFZNL0VTQSAoei9WTSBhbmQgTElTVElORyBmb3JtcykgKi8KLSNkZWZp
bmUgU1VQUE9SVF9PUzIgIC8qIFN1cHBvcnQgZm9yIElCTSBUQ1AvSVAgZm9yIE9TLzIgLSBGVFAg
U2VydmVyICovCi0jZGVmaW5lIFNVUFBPUlRfVzE2ICAvKiBTdXBwb3J0IGZvciB3aW4xNiBob3N0
czogU3VwZXJUQ1Agb3IgTmV0TWFuYWdlIENoYW1lbGVvbiAqLwotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXR5cGVkZWYgc3RydWN0IHRtIEZUUFRpbWU7Ci0KLXN0cnVjdCBMaXN0U3RhdGUgeyAg
ICAKLSAgICBMaXN0U3RhdGUoKQotICAgICAgICA6IG5vdygwKQotICAgICAgICAsIGxpc3RTdHls
ZSgwKQotICAgICAgICAsIHBhcnNlZE9uZShmYWxzZSkKLSAgICAgICAgLCBjYXJyeUJ1ZmZlckxl
bmd0aCgwKQotICAgICAgICAsIG51bUxpbmVzKDApCi0gICAgeyAKLSAgICAgICAgbWVtc2V0KCZu
b3dGVFBUaW1lLCAwLCBzaXplb2YoRlRQVGltZSkpOwotICAgIH0KLSAgICAKLSAgICBkb3VibGUg
ICAgICBub3c7ICAgICAgICAgICAgICAgLyogbmVlZGVkIGZvciB5ZWFyIGRldGVybWluYXRpb24g
Ki8KLSAgICBGVFBUaW1lICAgICBub3dGVFBUaW1lOwotICAgIGNoYXIgICAgICAgIGxpc3RTdHls
ZTsgICAgICAgICAvKiBMSVNUaW5nIHN0eWxlICovCi0gICAgYm9vbCAgICAgICAgcGFyc2VkT25l
OyAgICAgICAgIC8qIHJldHVybmVkIGFueXRoaW5nIHlldD8gKi8KLSAgICBjaGFyICAgICAgICBj
YXJyeUJ1ZmZlcls4NF07ICAgLyogZm9yIFZNUyBtdWx0aWxpbmUgKi8KLSAgICBpbnQgICAgICAg
ICBjYXJyeUJ1ZmZlckxlbmd0aDsgLyogbGVuZ3RoIG9mIG5hbWUgaW4gY2FycnlfYnVmICovCi0g
ICAgaW50NjRfdCAgICAgbnVtTGluZXM7ICAgICAgICAgIC8qIG51bWJlciBvZiBsaW5lcyBzZWVu
ICovCi19OwotCi1lbnVtIEZUUEVudHJ5VHlwZSB7Ci0gICAgRlRQRGlyZWN0b3J5RW50cnksCi0g
ICAgRlRQRmlsZUVudHJ5LAotICAgIEZUUExpbmtFbnRyeSwKLSAgICBGVFBNaXNjRW50cnksCi0g
ICAgRlRQSnVua0VudHJ5Ci19OwotCi1zdHJ1Y3QgTGlzdFJlc3VsdAotewotICAgIExpc3RSZXN1
bHQoKQotICAgIHsgCi0gICAgICAgIGNsZWFyKCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgY2xl
YXIoKQotICAgIHsKLSAgICAgICAgdmFsaWQgPSBmYWxzZTsKLSAgICAgICAgdHlwZSA9IEZUUEp1
bmtFbnRyeTsKLSAgICAgICAgZmlsZW5hbWUgPSAwOwotICAgICAgICBmaWxlbmFtZUxlbmd0aCA9
IDA7Ci0gICAgICAgIGxpbmtuYW1lID0gMDsKLSAgICAgICAgbGlua25hbWVMZW5ndGggPSAwOwot
ICAgICAgICBmaWxlU2l6ZS50cnVuY2F0ZSgwKTsKLSAgICAgICAgY2FzZVNlbnNpdGl2ZSA9IGZh
bHNlOwotICAgICAgICBtZW1zZXQoJm1vZGlmaWVkVGltZSwgMCwgc2l6ZW9mKEZUUFRpbWUpKTsK
LSAgICB9Ci0gICAgCi0gICAgYm9vbCB2YWxpZDsKLSAgICBGVFBFbnRyeVR5cGUgdHlwZTsgICAg
ICAgIAotICAgIAotICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lOwotICAgIHVpbnQzMl90IGZpbGVu
YW1lTGVuZ3RoOwotICAgIAotICAgIGNvbnN0IGNoYXIqIGxpbmtuYW1lOwotICAgIHVpbnQzMl90
IGxpbmtuYW1lTGVuZ3RoOwotICAgIAotICAgIFN0cmluZyBmaWxlU2l6ZTsgICAgICAKLSAgICBG
VFBUaW1lIG1vZGlmaWVkVGltZTsgCi0gICAgYm9vbCBjYXNlU2Vuc2l0aXZlOyAvLyBmaWxlIHN5
c3RlbSBpcyBkZWZpbml0ZWx5IGNhc2UgaW5zZW5zaXRpdmUKLX07Ci0KLUZUUEVudHJ5VHlwZSBw
YXJzZU9uZUZUUExpbmUoY29uc3QgY2hhciogaW5wdXRMaW5lLCBMaXN0U3RhdGUmLCBMaXN0UmVz
dWx0Jik7Ci0gICAgICAgICAgICAgICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRlRQRGlyZWN0b3J5UGFyc2VyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9N
YWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA5NTkwOCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTcs
MTUgKzQxNyw2IEBAIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG8KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShGVFBESVIpCi0gICAgLy8gUmVzcGVj
dCB0aGUgaGlkZGVuIEZUUCBEaXJlY3RvcnkgTGlzdGluZyBwcmVmIHNvIGl0IGNhbiBiZSB0ZXN0
ZWQgZXZlbiBpZiB0aGUgcG9saWN5IGRlbGVnYXRlIG1pZ2h0IG90aGVyd2lzZSBkaXNhbGxvdyBp
dAotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7Ci0gICAgaWYg
KHNldHRpbmdzICYmIHNldHRpbmdzLT5mb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzKCkgJiYgbV9y
ZXNwb25zZS5taW1lVHlwZSgpID09ICJhcHBsaWNhdGlvbi94LWZ0cC1kaXJlY3RvcnkiKSB7Ci0g
ICAgICAgIGNhbGxDb250aW51ZUFmdGVyQ29udGVudFBvbGljeSh0aGlzLCBQb2xpY3lVc2UpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KICAgICBmcmFtZUxvYWRlcigpLT5wb2xp
Y3lDaGVja2VyKCktPmNoZWNrQ29udGVudFBvbGljeShtX3Jlc3BvbnNlLCBjYWxsQ29udGludWVB
ZnRlckNvbnRlbnRQb2xpY3ksIHRoaXMpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAkocmV2aXNpb24gOTU5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw2IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQ
YWdlKiBwYWdlKQogICAgICwgbV91c2VzUGFnZUNhY2hlKGZhbHNlKQogICAgICwgbV9zaG93c1VS
THNJblRvb2xUaXBzKGZhbHNlKQogICAgICwgbV9zaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4
dChmYWxzZSkKLSAgICAsIG1fZm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5ncyhmYWxzZSkKICAgICAs
IG1fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChmYWxzZSkKICAgICAsIG1fYXV0aG9yQW5kVXNlclN0
eWxlc0VuYWJsZWQodHJ1ZSkKICAgICAsIG1fbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoZmFsc2Up
CkBAIC01NzQsMTYgKzU3Myw2IEBAIHZvaWQgU2V0dGluZ3M6OnNldFNob3dzVG9vbFRpcE92ZXJU
cnVuY2EKICAgICBtX3Nob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0ID0gc2hvd3NUb29sVGlw
Rm9yVHJ1bmNhdGVkVGV4dDsKIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0RlRQRGlyZWN0b3J5VGVt
cGxhdGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBtX2Z0cERpcmVjdG9yeVRlbXBs
YXRlUGF0aCA9IHBhdGg7Ci19Ci0KLXZvaWQgU2V0dGluZ3M6OnNldEZvcmNlRlRQRGlyZWN0b3J5
TGlzdGluZ3MoYm9vbCBmb3JjZSkKLXsKLSAgICBtX2ZvcmNlRlRQRGlyZWN0b3J5TGlzdGluZ3Mg
PSBmb3JjZTsKLX0KLQogdm9pZCBTZXR0aW5nczo6c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChi
b29sIGRldmVsb3BlckV4dHJhc0VuYWJsZWQpCiB7CiAgICAgbV9kZXZlbG9wZXJFeHRyYXNFbmFi
bGVkID0gZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJ
KHJldmlzaW9uIDk1OTA4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDEsMTIgKzI0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBzZXRTaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dChib29sKTsKICAgICAgICAg
Ym9vbCBzaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hv
d3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHQ7IH0KIAotICAgICAgICB2b2lkIHNldEZUUERpcmVj
dG9yeVRlbXBsYXRlUGF0aChjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiBm
dHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Z0cERpcmVjdG9yeVRl
bXBsYXRlUGF0aDsgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzZXRGb3JjZUZUUERpcmVjdG9y
eUxpc3RpbmdzKGJvb2wpOwotICAgICAgICBib29sIGZvcmNlRlRQRGlyZWN0b3J5TGlzdGluZ3Mo
KSBjb25zdCB7IHJldHVybiBtX2ZvcmNlRlRQRGlyZWN0b3J5TGlzdGluZ3M7IH0KLSAgICAgICAg
CiAgICAgICAgIHZvaWQgc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChib29sKTsKICAgICAgICAg
Ym9vbCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZXZlbG9wZXJF
eHRyYXNFbmFibGVkOyB9CiAKQEAgLTUzNiw3ICs1MzAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgbV91c2VzUGFnZUNhY2hlOiAxOwogICAgICAgICBib29sIG1fc2hvd3NV
UkxzSW5Ub29sVGlwcyA6IDE7CiAgICAgICAgIGJvb2wgbV9zaG93c1Rvb2xUaXBPdmVyVHJ1bmNh
dGVkVGV4dCA6IDE7Ci0gICAgICAgIGJvb2wgbV9mb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzIDog
MTsKICAgICAgICAgYm9vbCBtX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgOiAxOwogICAgICAgICBi
b29sIG1fYXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fbmVl
ZHNTaXRlU3BlY2lmaWNRdWlya3MgOiAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAJKHJldmlzaW9uIDk1OTA4KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw5
ICszNDYsNiBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkTm9uSW1hZ2VNCiAjaWYg
RU5BQkxFKFNWRykKICAgICAgICAgImltYWdlL3N2Zyt4bWwiLAogI2VuZGlmCi0jaWYgRU5BQkxF
KEZUUERJUikKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtZnRwLWRpcmVjdG9yeSIsCi0jZW5kaWYK
ICAgICAgICAgIm11bHRpcGFydC94LW1peGVkLXJlcGxhY2UiCiAgICAgICAgIC8vIE5vdGU6IEFE
RElORyBhIG5ldyB0eXBlIGhlcmUgd2lsbCBwcm9iYWJseSByZW5kZXIgaXQgYXMgSFRNTC4gVGhp
cyBjYW4KICAgICAgICAgLy8gcmVzdWx0IGluIGNyb3NzLXNpdGUgc2NyaXB0aW5nLgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1RlbXBvcmFyeUxpbmtTdHVicy5j
cHAJKHJldmlzaW9uIDk1OTA4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1RlbXBv
cmFyeUxpbmtTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZS5oIgogI2luY2x1
ZGUgIkVkaXRvci5oIgotI2luY2x1ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0
dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVGVtcG9y
YXJ5TGlua1N0dWJzLmNwcAkocmV2aXNpb24gOTU5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsNiBAQAogI2luY2x1ZGUgIkROUy5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSA8
ZmxvYXQuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtT
dHVic1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9UZW1w
b3JhcnlMaW5rU3R1YnNRdC5jcHAJKHJldmlzaW9uIDk1OTA4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw2IEBACiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZS5oIgogI2luY2x1ZGUgIkN1cnNv
ci5oIgogI2luY2x1ZGUgIkROUy5oIgotI2luY2x1ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gOTU5MDkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMS0wOS0yNCAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBFTkFCTEUo
RlRQRElSKSBhbmQgYXNzb2NpYXRlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02ODc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXS1ByZWZl
cmVuY2VzU2V0Rm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5ncyk6CisgICAgICAgIChXS1ByZWZlcmVu
Y2VzR2V0Rm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5ncyk6CisgICAgICAgIChXS1ByZWZlcmVuY2Vz
U2V0RlRQRGlyZWN0b3J5VGVtcGxhdGVQYXRoKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNDb3B5
RlRQRGlyZWN0b3J5VGVtcGxhdGVQYXRoKToKKyAgICAgICAgICAgIC0gSSBsZWZ0IHRoZSBwdWJs
aWMgQVBJIGZvciBnZXR0aW5nIGFuZCBzZXR0aW5nIHRoZXNlIHByZWZlcmVuY2VzLAorICAgICAg
ICAgICAgICBidXQgSSBzdHViYmVkIG91dCB0aGUgaW1wbGVtZW50YXRpb24uCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp1cGRhdGVQcmVmZXJlbmNlcyk6CisKIDIwMTEtMDktMjMgIEFkYW0gS2xlaW4gIDxhZGFta0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIEVOQUJMRV9NVVRBVElPTl9PQlNFUlZFUlMgZmVh
dHVyZSBmbGFnCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9y
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0
b3JlLmgJKHJldmlzaW9uIDk1OTA4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZl
cmVuY2VzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNiBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICBtYWNybyhDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlLCBjb21wb3NpdGlu
Z0JvcmRlcnNWaXNpYmxlLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKENvbXBvc2l0
aW5nUmVwYWludENvdW50ZXJzVmlzaWJsZSwgY29tcG9zaXRpbmdSZXBhaW50Q291bnRlcnNWaXNp
YmxlLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKFdlYkdMRW5hYmxlZCwgd2ViR0xF
bmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAotICAgIG1hY3JvKEZvcmNlRlRQRGlyZWN0b3J5
TGlzdGluZ3MsIGZvcmNlRlRQRGlyZWN0b3J5TGlzdGluZ3MsIEJvb2wsIGJvb2wsIGZhbHNlKSBc
CiAgICAgbWFjcm8oVGFic1RvTGlua3MsIHRhYnNUb0xpbmtzLCBCb29sLCBib29sLCBERUZBVUxU
X1dFQktJVF9UQUJTVE9MSU5LU19FTkFCTEVEKSBcCiAgICAgbWFjcm8oRE5TUHJlZmV0Y2hpbmdF
bmFibGVkLCBkbnNQcmVmZXRjaGluZ0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAg
bWFjcm8oV2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWQsIHdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFi
bGVkLCBCb29sLCBib29sLCBmYWxzZSkgXApAQCAtMTYxLDcgKzE2MCw2IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfU1RSSU5HX1BSRUZFUkVOQ0UobWFjcm8p
IFwKICAgICBGT1JfRUFDSF9XRUJLSVRfRk9OVF9GQU1JTFlfUFJFRkVSRU5DRShtYWNybykgXAog
ICAgIG1hY3JvKERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lLCBkZWZhdWx0VGV4dEVuY29kaW5nTmFt
ZSwgU3RyaW5nLCBTdHJpbmcsICJJU08tODg1OS0xIikgXAotICAgIG1hY3JvKEZUUERpcmVjdG9y
eVRlbXBsYXRlUGF0aCwgZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoLCBTdHJpbmcsIFN0cmluZywg
IiIpIFwKICAgICBcCiAKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gOTU5MDgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
MiwyNCArNDAyLDIyIEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dldE5lZWRzU2l0ZVNwZWNpZmljUXUK
ICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+bmVlZHNTaXRlU3BlY2lmaWNRdWly
a3MoKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0Rm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5n
cyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGZsYWcpCit2b2lkIFdLUHJl
ZmVyZW5jZXNTZXRGb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzKFdLUHJlZmVyZW5jZXNSZWYsIGJv
b2wpCiB7Ci0gICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Rm9yY2VGVFBEaXJlY3RvcnlM
aXN0aW5ncyhmbGFnKTsKIH0KIAotYm9vbCBXS1ByZWZlcmVuY2VzR2V0Rm9yY2VGVFBEaXJlY3Rv
cnlMaXN0aW5ncyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQorYm9vbCBXS1ByZWZl
cmVuY2VzR2V0Rm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5ncyhXS1ByZWZlcmVuY2VzUmVmKQogewot
ICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5mb3JjZUZUUERpcmVjdG9yeUxpc3Rp
bmdzKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRGVFBE
aXJlY3RvcnlUZW1wbGF0ZVBhdGgoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tT
dHJpbmdSZWYgcGF0aFJlZikKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldEZUUERpcmVjdG9yeVRlbXBs
YXRlUGF0aChXS1ByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZikKIHsKLSAgICB0b0ltcGwocHJl
ZmVyZW5jZXNSZWYpLT5zZXRGVFBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgodG9XVEZTdHJpbmcocGF0
aFJlZikpOwogfQogCi1XS1N0cmluZ1JlZiBXS1ByZWZlcmVuY2VzQ29weUZUUERpcmVjdG9yeVRl
bXBsYXRlUGF0aChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQorV0tTdHJpbmdSZWYg
V0tQcmVmZXJlbmNlc0NvcHlGVFBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoV0tQcmVmZXJlbmNlc1Jl
ZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+ZnRw
RGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIHJldHVybiB0b0NvcGllZEFQSShTdHJpbmco
KSk7CiB9CiAKIHZvaWQgV0tQcmVmZXJlbmNlc1NldFRhYnNUb0xpbmtzKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgdGFic1RvTGlua3MpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA5NTkwOCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU2NCw3ICsxNTY0LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNl
cyhjb25zdCBXZQogICAgIHNldHRpbmdzLT5zZXRUZXh0QXJlYXNBcmVSZXNpemFibGUoc3RvcmUu
Z2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp0ZXh0QXJlYXNBcmVSZXNpemFi
bGVLZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhzdG9y
ZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6Om5lZWRzU2l0ZVNwZWNpZmlj
UXVpcmtzS2V5KCkpKTsKICAgICBzZXR0aW5ncy0+c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
QXV0b21hdGljYWxseShzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OmphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlLZXkoKSkpOwotICAgIHNldHRp
bmdzLT5zZXRGb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6Zm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5nc0tleSgpKSk7Cisg
ICAgLy8gTm90ZTogZm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5ncyBpcyBpZ25vcmVkIGJlY2F1c2Ug
d2Ugbm8gbG9uZ2VyIHN1cHBvcnQgRlRQIGRpcmVjdG9yeSBsaXN0aW5ncy4KICAgICBzZXR0aW5n
cy0+c2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6ZG5zUHJlZmV0Y2hpbmdFbmFibGVkS2V5KCkpKTsKICNpZiBFTkFCTEUo
V0VCX0FSQ0hJVkUpCiAgICAgc2V0dGluZ3MtPnNldFdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVk
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6d2ViQXJjaGl2ZURl
YnVnTW9kZUVuYWJsZWRLZXkoKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk1OTA5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0wOS0yNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBFTkFCTEUoRlRQRElSKSBhbmQgYXNzb2Np
YXRlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorCiAyMDExLTA5LTIzICBBZGFtIEtsZWluICA8
YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBFTkFCTEVfTVVUQVRJT05fT0JTRVJW
RVJTIGZlYXR1cmUgZmxhZwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxp
emVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
TG9jYWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9uIDk1OTA4KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvTG9jYWxpemVkU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCwx
MiArMjEwLDYgQEAgU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQgbgogICAg
IHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6Ok11bHRpcGxlRmlsZVVwbG9hZFRleHQs
IFN0cmluZzo6bnVtYmVyKG51bWJlck9mRmlsZXMpKTsKIH0KIAotLy8gVXNlZCBpbiBGVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAKLVN0cmluZyB1bmtub3duRmlsZVNpemVUZXh0KCkKLXsKLSAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIC8vIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUg
bm90IGRlY2xhcmVkIGluIExvY2FsaXplZFN0cmluZ3MuaC4KIC8vIFRoZXkgYXJlIHVzZWQgYnkg
dGhlIG1lbnUgZm9yIHRoZSBIVE1MIGtleWdlbiB0YWcuCiBTdHJpbmcga2V5Z2VuTWVudUhpZ2hH
cmFkZUtleVNpemUoKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gOTU5MDkpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxMS0wOS0yNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSBFTkFCTEUoRlRQRElSKSBhbmQgYXNzb2NpYXRlZCBjb2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODc2NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisKIDIwMTEtMDktMjMg
IEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIEVOQUJMRV9N
VVRBVElPTl9PQlNFUlZFUlMgZmVhdHVyZSBmbGFnCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA5NTkwOCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTM5OCw4ICsxMzk4LDggQEAgLSAodm9p
ZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbgogICAgIHNldHRpbmdzLT5zZXRVc2Vz
RW5jb2RpbmdEZXRlY3RvcihbcHJlZmVyZW5jZXMgdXNlc0VuY29kaW5nRGV0ZWN0b3JdKTsKICAg
ICBzZXR0aW5ncy0+c2V0RmFudGFzeUZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIGZhbnRhc3lGb250
RmFtaWx5XSk7CiAgICAgc2V0dGluZ3MtPnNldEZpeGVkRm9udEZhbWlseShbcHJlZmVyZW5jZXMg
Zml4ZWRGb250RmFtaWx5XSk7Ci0gICAgc2V0dGluZ3MtPnNldEZvcmNlRlRQRGlyZWN0b3J5TGlz
dGluZ3MoW3ByZWZlcmVuY2VzIF9mb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzXSk7Ci0gICAgc2V0
dGluZ3MtPnNldEZUUERpcmVjdG9yeVRlbXBsYXRlUGF0aChbcHJlZmVyZW5jZXMgX2Z0cERpcmVj
dG9yeVRlbXBsYXRlUGF0aF0pOworICAgIC8vIE5vdGU6IGZvcmNlRlRQRGlyZWN0b3J5TGlzdGlu
Z3MgYW5kIGZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCBhcmUgaWdub3JlZAorICAgIC8vIG5vdyB0
aGF0IHdlIGRvbid0IHN1cHBvcnQgRlRQIGRpcmVjdG9yeSBsaXN0aW5ncy4KICAgICBzZXR0aW5n
cy0+c2V0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKFtwcmVmZXJlbmNlcyBfbG9jYWxTdG9yYWdl
RGF0YWJhc2VQYXRoXSk7CiAgICAgc2V0dGluZ3MtPnNldEphdmFFbmFibGVkKFtwcmVmZXJlbmNl
cyBpc0phdmFFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldEphdmFTY3JpcHRFbmFibGVkKFtw
cmVmZXJlbmNlcyBpc0phdmFTY3JpcHRFbmFibGVkXSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShy
ZXZpc2lvbiA5NTkwOSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA5LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIEVOQUJMRShGVFBESVIpIGFuZCBhc3NvY2lhdGVk
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4
NzY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmluaXRXaXRoRnJhbWUpOgorICAgICAgICAo
V2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKwogMjAxMS0wOS0yMiAgQWRhbSBS
b2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEZpbmRTYWZhcmkgZnJv
bSBhbGwgb3VyIC5zbG4gZmlsZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA5
NTkwOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNjU2LDE0ICsyNjU2LDYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpp
bml0VwogICAgICAgICBTeXNGcmVlU3RyaW5nKGxvY2FsU3RvcmFnZVBhdGgpOwogICAgIH0KIAot
ICAgIGlmIChtX3VpRGVsZWdhdGUpIHsKLSAgICAgICAgQlNUUiBwYXRoOwotICAgICAgICBpZiAo
U1VDQ0VFREVEKG1fdWlEZWxlZ2F0ZS0+ZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKHRoaXMsICZw
YXRoKSkpIHsKLSAgICAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0RlRQRGlyZWN0b3J5
VGVtcGxhdGVQYXRoKFN0cmluZyhwYXRoLCBTeXNTdHJpbmdMZW4ocGF0aCkpKTsKLSAgICAgICAg
ICAgIFN5c0ZyZWVTdHJpbmcocGF0aCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBXZWJGcmFt
ZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6Y3JlYXRlSW5zdGFuY2UoKTsKICAgICBSZWZQdHI8RnJh
bWU+IGNvcmVGcmFtZSA9IHdlYkZyYW1lLT5pbml0KHRoaXMsIG1fcGFnZSwgMCk7CiAgICAgbV9t
YWluRnJhbWUgPSB3ZWJGcmFtZTsKQEAgLTQ3MTgsOCArNDcxMCw2IEBAIEhSRVNVTFQgV2ViVmll
dzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2UKICAgICAgICAgc2V0Wm9vbU11bHRpcGxpZXIobV96
b29tTXVsdGlwbGllciwgZW5hYmxlZCk7CiAKICAgICBzZXR0aW5ncy0+c2V0U2hvd3NVUkxzSW5U
b29sVGlwcyhmYWxzZSk7Ci0KLSAgICBzZXR0aW5ncy0+c2V0Rm9yY2VGVFBEaXJlY3RvcnlMaXN0
aW5ncyh0cnVlKTsKICAgICBzZXR0aW5ncy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChkZXZl
bG9wZXJFeHRyYXNFbmFibGVkKCkpOwogICAgIHNldHRpbmdzLT5zZXROZWVkc1NpdGVTcGVjaWZp
Y1F1aXJrcyhzX2FsbG93U2l0ZVNwZWNpZmljSGFja3MpOwogCkluZGV4OiBTb3VyY2UvY21ha2Uv
T3B0aW9uc0VmbC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQkocmV2aXNpb24gOTU5MDgpCisrKyBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQko
d29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBXRUJLSVRfRkVBVFVSRShFTkFCTEVfRE9N
X1NUT1JBR0UgIkVuYWJsCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfRkFTVF9NQUxMT0MgIkVuYWJs
ZSBUQ21hbGxvYyBpbnN0ZWFkIG9mIHN5c3RlbSdzIGFsbG9jYXRvciIgREVGQVVMVCBPTikKIFdF
QktJVF9GRUFUVVJFKEVOQUJMRV9GQVNUX01PQklMRV9TQ1JPTExJTkcgIkVuYWJsZSBmYXN0IG1v
YmlsZSBzY3JvbGxpbmciIERFRkFVTFQgT04pCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfRklMVEVS
UyAiRW5hYmxlIFNWRyBmaWx0ZXJzIiBERUZBVUxUIE9OIFNWRykKLVdFQktJVF9GRUFUVVJFKEVO
QUJMRV9GVFBESVIgIkVuYWJsZSBGVFAgZGlyZWN0b3J5IHN1cHBvcnQiIERFRkFVTFQgT04pCiBX
RUJLSVRfRkVBVFVSRShFTkFCTEVfRlVMTFNDUkVFTl9BUEkgIkVuYWJsZSBGdWxsc2NyZWVuIEFQ
SSBzdXBwb3J0IiBERUZBVUxUIE9GRikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9HRU9MT0NBVElP
TiAiRW5hYmxlIGdlb2xvY2F0aW9uIiBERUZBVUxUIE9GRikKIFdFQktJVF9GRUFUVVJFKEVOQUJM
RV9HTElCX1NVUFBPUlQgIkVuYWJsZSBHbGliIHN1cHBvcnQiIERFRkFVTFQgT04pCkluZGV4OiBT
b3VyY2UvY21ha2UvT3B0aW9uc1dpbkNFLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFr
ZS9PcHRpb25zV2luQ0UuY21ha2UJKHJldmlzaW9uIDk1OTA4KQorKysgU291cmNlL2NtYWtlL09w
dGlvbnNXaW5DRS5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQCBXRUJLSVRf
RkVBVFVSRShFTkFCTEVfREFUQV9UUkFOU0ZFUl9JVEVNCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVf
RE9NX1NUT1JBR0UgIkVuYWJsZSBET00gc3RvcmFnZSIgREVGQVVMVCBPRkYpCiBXRUJLSVRfRkVB
VFVSRShFTkFCTEVfRkFTVF9NT0JJTEVfU0NST0xMSU5HICJFbmFibGUgZmFzdCBtb2JpbGUgc2Ny
b2xsaW5nIiBERUZBVUxUIE9OKQogV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX0ZJTFRFUlMgIkVuYWJs
ZSBTVkcgZmlsdGVycyIgREVGQVVMVCBPRkYgU1ZHKQotV0VCS0lUX0ZFQVRVUkUoRU5BQkxFX0ZU
UERJUiAiRW5hYmxlIEZUUCBkaXJlY3Rvcnkgc3VwcG9ydCIgREVGQVVMVCBPRkYpCiBXRUJLSVRf
RkVBVFVSRShFTkFCTEVfR0VPTE9DQVRJT04gIkVuYWJsZSBnZW9sb2NhdGlvbiIgREVGQVVMVCBP
RkYpCiBXRUJLSVRfRkVBVFVSRShFTkFCTEVfR0xJQl9TVVBQT1JUICJFbmFibGUgR2xpYiBzdXBw
b3J0IiBERUZBVUxUIE9GRikKIFdFQktJVF9GRUFUVVJFKEVOQUJMRV9JQ09OREFUQUJBU0UgIkVu
YWJsZSBpY29uIGRhdGFiYXNlIiBERUZBVUxUIE9GRikK
</data>
<flag name="review"
          id="105592"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
      

    </bug>

</bugzilla>