<?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>142038</bug_id>
          
          <creation_ts>2015-02-25 20:48:06 -0800</creation_ts>
          <short_desc>Expose some of the functionality of extract-localizable-strings.pl as a module</short_desc>
          <delta_ts>2015-03-06 10:47:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1072283</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-02-25 20:48:06 -0800</bug_when>
    <thetext>The functions in extract-localizable-strings.pl that consume (file, line, key, string, comment) tuples and emit a localizable strings file would be useful to another script, so move them into a module.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072285</commentid>
    <comment_count>1</comment_count>
      <attachid>247401</attachid>
    <who name="">mitz</who>
    <bug_when>2015-02-25 20:53:46 -0800</bug_when>
    <thetext>Created attachment 247401
Refactor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075017</commentid>
    <comment_count>2</comment_count>
      <attachid>247401</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-06 10:47:54 -0800</bug_when>
    <thetext>Comment on attachment 247401
Refactor

Clearing flags on attachment: 247401

Committed r181170: &lt;http://trac.webkit.org/changeset/181170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075018</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-06 10:47:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247401</attachid>
            <date>2015-02-25 20:53:46 -0800</date>
            <delta_ts>2015-03-06 10:47:54 -0800</delta_ts>
            <desc>Refactor</desc>
            <filename>bug-142038-20150225205333.patch</filename>
            <type>text/plain</type>
            <size>55407</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDY1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE1LTAyLTI1ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIHNvbWUgb2YgdGhlIGZ1
bmN0aW9uYWxpdHkgb2YgZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsIGFzIGEgbW9kdWxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwMzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIExvY2Fs
aXphYmxlU3RyaW5ncy5wbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZXh0cmFjdC1sb2Nh
bGl6YWJsZS1zdHJpbmdzLnBsLgorICAgICAgICAoc2V0VHJlYXRXYXJuaW5nc0FzRXJyb3JzKTog
QWRkZWQgdGhpcyBzZXR0ZXIgZm9yIHRoZSB2YXJpYWJsZSBtb3ZlZCBoZXJlLgorICAgICAgICAo
c2F3RXJyb3IpOiBBZGRlZCBhIGdldHRlci4KKyAgICAgICAgKGVtaXRFcnJvcik6IEFkZGVkLiBF
bWl0cyB0aGUgZXJyb3IgbWVzc2FnZSBhbmQgc2V0cyAkc2F3RXJyb3IuCisgICAgICAgICh1bmVz
Y2FwZUhleFNlcXVlbmNlKTogTW92ZWQgZnJvbSBleHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3Mu
cGwgYW5kIHJlbmFtZWQgdG8gc3RhcnQgd2l0aAorICAgICAgICBhIGxvd2VyY2FzZSBsZXR0ZXIu
CisgICAgICAgIChrZXlDb2xsaXNpb25Db3VudCk6IEFkZGVkIHRoaXMgZ2V0dGVyLgorICAgICAg
ICAobG9jYWxpemVkQ291bnQpOiBBZGRlZCB0aGlzIGdldHRlci4KKyAgICAgICAgKEhhbmRsZVVJ
U3RyaW5nKTogTW92ZWQgZnJvbSBleHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwgYW5kIG1h
ZGUgaXQgaW5jcmVtZW50IHRoZQorICAgICAgICBsb2NhbGl6ZWQgc3RyaW5nIGNvdW50LgorICAg
ICAgICAod3JpdGVTdHJpbmdzRmlsZSk6IE1vdmVkIGNvZGUgZnJvbSBleHRyYWN0LWxvY2FsaXph
YmxlLXN0cmluZ3MucGwgaW50byB0aGlzIG5ldyBzdWJyb3V0aW5lLgorICAgICAgICAodmVyaWZ5
U3RyaW5nc0ZpbGUpOiBEaXR0by4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogQWRkZWQgTG9jYWxpemFibGVTdHJpbmdzLnBtIHRvIHRoZSBDb3B5IFNjcmlw
dHMgYnVpbGQKKyAgICAgICAgcGhhc2UuCisKKyAgICAgICAgKiBleHRyYWN0LWxvY2FsaXphYmxl
LXN0cmluZ3MucGw6CisgICAgICAgIChlbWl0V2FybmluZyk6IE1vdmVkIHRvIHRoZSBtb2R1bGUu
CisgICAgICAgIChVbmVzY2FwZUhleFNlcXVlbmNlKTogRGl0dG8uCisgICAgICAgIChIYW5kbGVV
SVN0cmluZyk6IERpdHRvLgorCiAyMDE1LTAyLTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVzZSBXRUJDT1JFX0VYUE9SVCBpbnN0ZWFkIG9m
IERlZmluaXRpb24gZmlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvTG9jYWxpemFibGVTdHJpbmdz
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0xvY2FsaXphYmxlU3RyaW5ncy5wbQko
cmV2aXNpb24gMTgwNjUyKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9leHRyYWN0LWxvY2FsaXphYmxl
LXN0cmluZ3MucGw6MTgwNjUyKQorKysgU291cmNlL1dlYkNvcmUvTG9jYWxpemFibGVTdHJpbmdz
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDY3IEBACisjIS91c3IvYmluL3BlcmwgLXcK
KworIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGhpcyBzY3JpcHQg
aXMgbGlrZSB0aGUgZ2Vuc3RyaW5ncyB0b29sIChtaW51cyBtb3N0IG9mIHRoZSBvcHRpb25zKSB3
aXRoIHRoZXNlIGRpZmZlcmVuY2VzLgorIworIyAgICAxKSBJdCB1c2VzIHRoZSBuYW1lcyBVSV9T
VFJJTkcgYW5kIFVJX1NUUklOR19XSVRIX0tFWSBmb3IgdGhlIG1hY3JvcywgcmF0aGVyIHRoYW4g
dGhlIG1hY3JvcworIyAgICAgICBmcm9tIE5TQnVuZGxlLmgsIGFuZCBkb2Vzbid0IHN1cHBvcnQg
dGFibGVzIChhbHRob3VnaCB0aGV5IHdvdWxkIGJlIGVhc3kgdG8gYWRkKS4KKyMgICAgMikgSXQg
c3VwcG9ydHMgVVRGLTggaW4ga2V5IHN0cmluZ3MgKGFuZCBoZW5jZSB1c2VzICIiIHN0cmluZ3Mg
cmF0aGVyIHRoYW4gQCIiIHN0cmluZ3M7CisjICAgICAgIEAiIiBzdHJpbmdzIG9ubHkgcmVsaWFi
bHkgc3VwcG9ydCBBU0NJSSBzaW5jZSB0aGV5IGFyZSBkZWNvZGVkIGJhc2VkIG9uIHRoZSBzeXN0
ZW0gZW5jb2RpbmcKKyMgICAgICAgYXQgcnVudGltZSwgc28gZ2l2ZSBkaWZmZXJlbnQgcmVzdWx0
cyBvbiBVUyBhbmQgSmFwYW5lc2Ugc3lzdGVtcyBmb3IgZXhhbXBsZSkuCisjICAgIDMpIEl0IGxv
b2tzIGZvciBzdHJpbmdzIHRoYXQgYXJlIG5vdCBtYXJrZWQgZm9yIGxvY2FsaXphdGlvbiwgdXNp
bmcgYm90aCBtYWNybyBuYW1lcyB0aGF0IGFyZQorIyAgICAgICBrbm93biB0byBiZSB1c2VkIGZv
ciBkZWJ1Z2dpbmcgaW4gSW50cmlndWUgc291cmNlIGNvZGUgYW5kIGFuIGV4Y2VwdGlvbnMgZmls
ZS4KKyMgICAgNCkgSXQgZmluZHMgdGhlIGZpbGVzIHRvIHdvcmsgb24gcmF0aGVyIHRoYW4gdGFr
aW5nIHRoZW0gYXMgcGFyYW1ldGVycywgYW5kIGFsc28gdXNlcyBhCisjICAgICAgIGhhcmRjb2Rl
ZCBsb2NhdGlvbiBmb3IgYm90aCB0aGUgb3V0cHV0IGZpbGUgYW5kIHRoZSBleGNlcHRpb25zIGZp
bGUuCisjICAgICAgIEl0IHdvdWxkIGhhdmUgYmVlbiBuaWNlIHRvIHVzZSB0aGUgcHJvamVjdCB0
byBmaW5kIHRoZSBzb3VyY2UgZmlsZXMsIGJ1dCBpdCdzIHRvbyBoYXJkIHRvCisjICAgICAgIGxv
Y2F0ZSBzb3VyY2UgZmlsZXMgYWZ0ZXIgcGFyc2luZyBhIC5wYnhwcm9qIGZpbGUuCisKKyMgVGhl
IGV4Y2VwdGlvbnMgZmlsZSBoYXMgYSBsaXN0IG9mIHN0cmluZ3MgaW4gcXVvdGVzLCBmaWxlbmFt
ZXMsIGFuZCBmaWxlbmFtZS9zdHJpbmcgcGFpcnMgc2VwYXJhdGVkIGJ5IDouCisKK3VzZSBzdHJp
Y3Q7Cit1c2UgRmlsZTo6Q29tcGFyZTsKK3VzZSBGaWxlOjpDb3B5OwordXNlIEdldG9wdDo6TG9u
ZzsKK25vIHdhcm5pbmdzICdkZXByZWNhdGVkJzsKKworc3ViIFVuZXNjYXBlSGV4U2VxdWVuY2Uo
JCk7CisKK215ICVpc0RlYnVnTWFjcm8gPSAoIEFTU0VSVF9XSVRIX01FU1NBR0UgPT4gMSwgTE9H
X0VSUk9SID0+IDEsIEVSUk9SID0+IDEsIE5TVVJMX0VSUk9SID0+IDEsIEZBVEFMID0+IDEsIExP
RyA9PiAxLCBMT0dfV0FSTklORyA9PiAxLCBVSV9TVFJJTkdfTE9DQUxJWkVfTEFURVIgPT4gMSwg
VUlfU1RSSU5HX0xPQ0FMSVpFX0xBVEVSX0tFWSA9PiAxLCBMUENUU1RSX1VJX1NUUklOR19MT0NB
TElaRV9MQVRFUiA9PiAxLCBVTkxPQ0FMSVpFRF9TVFJJTkcgPT4gMSwgVU5MT0NBTElaRURfTFBD
VFNUUiA9PiAxLCBkcHJpbnRmID0+IDEsIE5TRXhjZXB0aW9uID0+IDEsIE5TTG9nID0+IDEsIHBy
aW50ZiA9PiAxICk7CisKK215ICR2ZXJpZnk7CitteSAkZXhjZXB0aW9uc0ZpbGU7CitteSBAZGly
ZWN0b3JpZXNUb1NraXAgPSAoKTsKK215ICR0cmVhdFdhcm5pbmdzQXNFcnJvcnM7CisKK215ICVv
cHRpb25zID0gKAorICAgICd2ZXJpZnknID0+IFwkdmVyaWZ5LAorICAgICdleGNlcHRpb25zPXMn
ID0+IFwkZXhjZXB0aW9uc0ZpbGUsCisgICAgJ3NraXA9cycgPT4gXEBkaXJlY3Rvcmllc1RvU2tp
cCwKKyAgICAndHJlYXQtd2FybmluZ3MtYXMtZXJyb3JzJyA9PiBcJHRyZWF0V2FybmluZ3NBc0Vy
cm9ycywKKyk7CisKK0dldE9wdGlvbnMoJW9wdGlvbnMpOworCitAQVJHViA+PSAyIG9yIGRpZSAi
VXNhZ2U6IGV4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncyBbLS12ZXJpZnldIFstLXRyZWF0LXdh
cm5pbmdzLWFzLWVycm9yc10gWy0tZXhjZXB0aW9ucyA8ZXhjZXB0aW9ucyBmaWxlPl0gPGZpbGUg
dG8gdXBkYXRlPiBbLS1za2lwIGRpcmVjdG9yeSB8IGRpcmVjdG9yeV0uLi5cbkRpZCB5b3UgbWVh
biB0byBydW4gdXBkYXRlLXdlYmtpdC1sb2NhbGl6YWJsZS1zdHJpbmdzIGluc3RlYWQ/XG4iOwor
CistZiAkZXhjZXB0aW9uc0ZpbGUgb3IgZGllICJDb3VsZG4ndCBmaW5kIGV4Y2VwdGlvbnMgZmls
ZSAkZXhjZXB0aW9uc0ZpbGVcbiIgdW5sZXNzICFkZWZpbmVkICRleGNlcHRpb25zRmlsZTsKKwor
bXkgJGZpbGVUb1VwZGF0ZSA9IHNoaWZ0IEBBUkdWOworLWYgJGZpbGVUb1VwZGF0ZSBvciBkaWUg
IkNvdWxkbid0IGZpbmQgZmlsZSB0byB1cGRhdGUgJGZpbGVUb1VwZGF0ZVxuIjsKKworbXkgJHdh
cm5BYm91dFVubG9jYWxpemVkU3RyaW5ncyA9IGRlZmluZWQgJGV4Y2VwdGlvbnNGaWxlOworCitt
eSBAZGlyZWN0b3JpZXMgPSAoKTsKK2lmIChAQVJHViA8IDEpIHsKKyAgICBwdXNoKEBkaXJlY3Rv
cmllcywgIi4iKTsKK30gZWxzZSB7CisgICAgZm9yIG15ICRkaXIgKEBBUkdWKSB7CisgICAgICAg
IHB1c2ggQGRpcmVjdG9yaWVzLCAkZGlyOworICAgIH0KK30KKworbXkgJHNhd0Vycm9yID0gMDsK
KworbXkgJGxvY2FsaXplZENvdW50ID0gMDsKK215ICRrZXlDb2xsaXNpb25Db3VudCA9IDA7Citt
eSAkbm90TG9jYWxpemVkQ291bnQgPSAwOworbXkgJE5TTG9jYWxpemVDb3VudCA9IDA7CisKK215
ICVleGNlcHRpb247CitteSAldXNlZEV4Y2VwdGlvbjsKKworc3ViIGVtaXRXYXJuaW5nKCQkJCkK
K3sKKyAgICBteSAoJGZpbGUsICRsaW5lLCAkbWVzc2FnZSkgPSBAXzsKKyAgICBteSAkcHJlZml4
ID0gJHRyZWF0V2FybmluZ3NBc0Vycm9ycyA/ICIiIDogIndhcm5pbmc6ICI7CisgICAgcHJpbnQg
IiRmaWxlOiRsaW5lOiAkcHJlZml4JG1lc3NhZ2VcbiI7CisgICAgJHNhd0Vycm9yID0gMSBpZiAk
dHJlYXRXYXJuaW5nc0FzRXJyb3JzOworfQorCitpZiAoZGVmaW5lZCAkZXhjZXB0aW9uc0ZpbGUg
JiYgb3BlbiBFWENFUFRJT05TLCAkZXhjZXB0aW9uc0ZpbGUpIHsKKyAgICB3aGlsZSAoPEVYQ0VQ
VElPTlM+KSB7CisgICAgICAgIGNob21wOworICAgICAgICBpZiAoL14iKFteXFwiXXxcXC4pKiIk
LyBvciAvXlstX1wvXHdccy5dKy4oaHxtfG1tfGN8Y3BwKSQvIG9yIC9eWy1fXC9cd1xzLl0rLiho
fG18bW18Y3xjcHApOiIoW15cXCJdfFxcLikqIiQvKSB7CisgICAgICAgICAgICBpZiAoJGV4Y2Vw
dGlvbnskX30pIHsKKyAgICAgICAgICAgICAgICBlbWl0V2FybmluZygkZXhjZXB0aW9uc0ZpbGUs
ICQuLCAiZXhjZXB0aW9uIGZvciAkXyBhcHBlYXJzIHR3aWNlIik7CisgICAgICAgICAgICAgICAg
ZW1pdFdhcm5pbmcoJGV4Y2VwdGlvbnNGaWxlLCAkZXhjZXB0aW9ueyRffSwgImZpcnN0IGFwcGVh
cmFuY2UiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJGV4Y2VwdGlv
bnskX30gPSAkLjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGVtaXRXYXJuaW5nKCRleGNlcHRpb25zRmlsZSwgJC4sICJzeW50YXggZXJyb3IiKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBjbG9zZSBFWENFUFRJT05TOworfQorCitteSAkcXVvdGVkRGlyZWN0
b3JpZXNTdHJpbmcgPSAnIicgLiBqb2luKCciICInLCBAZGlyZWN0b3JpZXMpIC4gJyInOworZm9y
IG15ICRkaXIgKEBkaXJlY3Rvcmllc1RvU2tpcCkgeworICAgICRxdW90ZWREaXJlY3Rvcmllc1N0
cmluZyAuPSAnIC1wYXRoICInIC4gJGRpciAuICciIC1wcnVuZSAtbyc7Cit9CisKK215IEBmaWxl
cyA9ICggc3BsaXQgIlxuIiwgYGZpbmQgJHF1b3RlZERpcmVjdG9yaWVzU3RyaW5nIFxcKCAtbmFt
ZSAiKi5oIiAtbyAtbmFtZSAiKi5tIiAtbyAtbmFtZSAiKi5tbSIgLW8gLW5hbWUgIiouYyIgLW8g
LW5hbWUgIiouY3BwIiBcXClgICk7CisKK2ZvciBteSAkZmlsZSAoc29ydCBAZmlsZXMpIHsKKyAg
ICBuZXh0IGlmICRmaWxlID1+IC9cL1x3K0xvY2FsaXphYmxlU3RyaW5nc1x3KlwuaCQvIHx8ICRm
aWxlID1+IC9cL0xvY2FsaXplZFN0cmluZ3NcLmgkLzsKKworICAgICRmaWxlID1+IHMtXi4vLS07
CisKKyAgICBvcGVuIFNPVVJDRSwgJGZpbGUgb3IgZGllICJjYW4ndCBvcGVuICRmaWxlXG4iOwor
ICAgIAorICAgIG15ICRpbkNvbW1lbnQgPSAwOworICAgIAorICAgIG15ICRleHBlY3RlZCA9ICIi
OworICAgIG15ICRtYWNyb0xpbmU7CisgICAgbXkgJG1hY3JvOworICAgIG15ICRVSVN0cmluZzsK
KyAgICBteSAka2V5OworICAgIG15ICRjb21tZW50OworICAgIAorICAgIG15ICRzdHJpbmc7Cisg
ICAgbXkgJHN0cmluZ0xpbmU7CisgICAgbXkgJG5lc3RpbmdMZXZlbDsKKyAgICAKKyAgICBteSAk
cHJldmlvdXNUb2tlbiA9ICIiOworCisgICAgd2hpbGUgKDxTT1VSQ0U+KSB7CisgICAgICAgIGNo
b21wOworICAgICAgICAKKyAgICAgICAgIyBIYW5kbGUgY29udGludWVkIG11bHRpLWxpbmUgY29t
bWVudC4KKyAgICAgICAgaWYgKCRpbkNvbW1lbnQpIHsKKyAgICAgICAgICAgIG5leHQgdW5sZXNz
IHMtLipcKi8tLTsKKyAgICAgICAgICAgICRpbkNvbW1lbnQgPSAwOworICAgICAgICB9CisKKyAg
ICAgICAgbmV4dCB1bmxlc3MgZGVmaW5lZCAkbmVzdGluZ0xldmVsIG9yIC8oXCJ8XC9cKikvOwor
ICAgIAorICAgICAgICAjIEhhbmRsZSBhbGwgdGhlIHRva2VucyBpbiB0aGUgbGluZS4KKyAgICAg
ICAgd2hpbGUgKHMtXlxzKihbI1x3XSt8L1wqfC8vfFteI1x3LyciKClcW1xdLF0rfC4pLS0pIHsK
KyAgICAgICAgICAgIG15ICR0b2tlbiA9ICQxOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoJHRva2VuIGVxICJcIiIpIHsKKyAgICAgICAgICAgICAgICBpZiAoJGV4cGVjdGVkIGFuZCAk
ZXhwZWN0ZWQgbmUgImEgcXVvdGVkIHN0cmluZyIpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJp
bnQgIiRmaWxlOiQuOiBmb3VuZCBhIHF1b3RlZCBzdHJpbmcgYnV0IGV4cGVjdGVkICRleHBlY3Rl
ZFxuIjsKKyAgICAgICAgICAgICAgICAgICAgJHNhd0Vycm9yID0gMTsKKyAgICAgICAgICAgICAg
ICAgICAgJGV4cGVjdGVkID0gIiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmIChzLV4oKFteXFwkdG9rZW5dfFxcLikqPykkdG9rZW4tLSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoIWRlZmluZWQgJHN0cmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgJHN0
cmluZ0xpbmUgPSAkLjsKKyAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpbmcgPSAkMTsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRzdHJp
bmcgLj0gJDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBwcmludCAiJGZpbGU6JC46IG1pc21hdGNoZWQgcXVvdGVz
XG4iOworICAgICAgICAgICAgICAgICAgICAkc2F3RXJyb3IgPSAxOworICAgICAgICAgICAgICAg
ICAgICAkXyA9ICIiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZXh0Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZGVmaW5lZCAkc3Ry
aW5nKSB7CitoYW5kbGVTdHJpbmc6CisgICAgICAgICAgICAgICAgaWYgKCRleHBlY3RlZCkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWRlZmluZWQgJFVJU3RyaW5nKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAjIEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBoZXJlPworICAgICAgICAgICAg
ICAgICAgICAgICAgJFVJU3RyaW5nID0gJHN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICRleHBlY3RlZCA9ICIsIjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoKCRtYWNybyA9
fiAvKFdFQl8pP1VJX1NUUklOR19LRVkoX0lOVEVSTkFMKT8kLykgYW5kICFkZWZpbmVkICRrZXkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFZhbGlkYXRlIFVURi04IGhlcmU/
CisgICAgICAgICAgICAgICAgICAgICAgICAka2V5ID0gJHN0cmluZzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICRleHBlY3RlZCA9ICIsIjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAo
IWRlZmluZWQgJGNvbW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFZh
bGlkYXRlIFVURi04IGhlcmU/CisgICAgICAgICAgICAgICAgICAgICAgICAkY29tbWVudCA9ICRz
dHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiKSI7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoZGVmaW5lZCAkbmVzdGluZ0xldmVsKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAjIEluIGEgZGVidWcgbWFjcm8sIG5vIG5lZWQgdG8gbG9jYWxpemUuCisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzaWYgKCRwcmV2aW91c1Rva2VuIGVxICIjaW5jbHVkZSIgb3IgJHByZXZpb3Vz
VG9rZW4gZXEgIiNpbXBvcnQiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAjIEZpbGUgbmFt
ZSwgbm8gbmVlZCB0byBsb2NhbGl6ZS4KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHBy
ZXZpb3VzVG9rZW4gZXEgImV4dGVybiIgYW5kICRzdHJpbmcgZXEgIkMiKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAjIGV4dGVybiAiQyIsIG5vIG5lZWQgdG8gbG9jYWxpemUuCisgICAgICAg
ICAgICAgICAgICAgIH0gZWxzaWYgKCRzdHJpbmcgZXEgIiIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICMgRW1wdHkgc3RyaW5nIGNhbiBzb21ldGltZXMgYmUgbG9jYWxpemVkLCBidXQgd2Ug
bmVlZCBub3QgY29tcGxhaW4gaWYgbm90LgorICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgk
ZXhjZXB0aW9ueyRmaWxlfSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJHVzZWRFeGNlcHRp
b257JGZpbGV9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGV4Y2VwdGlvbnsi
XCIkc3RyaW5nXCIifSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJHVzZWRFeGNlcHRpb257
IlwiJHN0cmluZ1wiIn0gPSAxOworICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkZXhjZXB0
aW9ueyIkZmlsZTpcIiRzdHJpbmdcIiJ9KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkdXNl
ZEV4Y2VwdGlvbnsiJGZpbGU6XCIkc3RyaW5nXCIifSA9IDE7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0V2FybmluZygkZmlsZSwgJHN0
cmluZ0xpbmUsICJcIiRzdHJpbmdcIiBpcyBub3QgbWFya2VkIGZvciBsb2NhbGl6YXRpb24iKSBp
ZiAkd2FybkFib3V0VW5sb2NhbGl6ZWRTdHJpbmdzOworICAgICAgICAgICAgICAgICAgICAgICAg
JG5vdExvY2FsaXplZENvdW50Kys7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgJHN0cmluZyA9IHVuZGVmOworICAgICAgICAgICAgICAg
IGxhc3QgaWYgIWRlZmluZWQgJHRva2VuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICAkcHJldmlvdXNUb2tlbiA9ICR0b2tlbjsKKworICAgICAgICAgICAgaWYgKCR0
b2tlbiA9fiAvXk5TTG9jYWxpemVkLyAmJiAkdG9rZW4gIX4gL05TTG9jYWxpemVkRGVzY3JpcHRp
b25LZXkvICYmICR0b2tlbiAhfiAvTlNMb2NhbGl6ZWRTdHJpbmdGcm9tVGFibGVJbkJ1bmRsZS8g
JiYgJHRva2VuICF+IC9OU0xvY2FsaXplZEZpbGVTaXplRGVzY3JpcHRpb24vICYmICR0b2tlbiAh
fiAvTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleS8gJiYgJHRva2VuICF+IC9OU0xvY2FsaXplZFJl
Y292ZXJ5U3VnZ2VzdGlvbkVycm9yS2V5LykgeworICAgICAgICAgICAgICAgIHByaW50ICIkZmls
ZTokLjogZm91bmQgYSB1c2Ugb2YgYW4gTlNMb2NhbGl6ZWQgbWFjcm8gKCR0b2tlbik7IG5vdCBz
dXBwb3J0ZWRcbiI7CisgICAgICAgICAgICAgICAgJG5lc3RpbmdMZXZlbCA9IDAgaWYgIWRlZmlu
ZWQgJG5lc3RpbmdMZXZlbDsKKyAgICAgICAgICAgICAgICAkc2F3RXJyb3IgPSAxOworICAgICAg
ICAgICAgICAgICROU0xvY2FsaXplQ291bnQrKzsKKyAgICAgICAgICAgIH0gZWxzaWYgKCR0b2tl
biBlcSAiLyoiKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzLV4uKj9cKi8tLSkgeworICAgICAg
ICAgICAgICAgICAgICAkXyA9ICIiOyAjIElmIHRoZSBjb21tZW50IGRvZXNuJ3QgZW5kLCBkaXNj
YXJkIHRoZSByZXN1bHQgb2YgdGhlIGxpbmUgYW5kIHNldCBmbGFnCisgICAgICAgICAgICAgICAg
ICAgICRpbkNvbW1lbnQgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxz
aWYgKCR0b2tlbiBlcSAiLy8iKSB7CisgICAgICAgICAgICAgICAgJF8gPSAiIjsgIyBEaXNjYXJk
IHRoZSByZXN0IG9mIHRoZSBsaW5lCisgICAgICAgICAgICB9IGVsc2lmICgkdG9rZW4gZXEgIici
KSB7CisgICAgICAgICAgICAgICAgaWYgKCFzLShbXlxcXXxcXC4pJy0tKSB7ICMnIDwtLSB0aGF0
IHNpbmdsZSBxdW90ZSBtYWtlcyB0aGUgUHJvamVjdCBCdWlsZGVyIGVkaXRvciBsZXNzIGNvbmZ1
c2VkCisgICAgICAgICAgICAgICAgICAgIHByaW50ICIkZmlsZTokLjogbWlzbWF0Y2hlZCBzaW5n
bGUgcXVvdGVcbiI7CisgICAgICAgICAgICAgICAgICAgICRzYXdFcnJvciA9IDE7CisgICAgICAg
ICAgICAgICAgICAgICRfID0gIiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoJGV4cGVjdGVkIGFuZCAkZXhwZWN0ZWQgbmUgJHRv
a2VuKSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50ICIkZmlsZTokLjogZm91bmQgJHRva2Vu
IGJ1dCBleHBlY3RlZCAkZXhwZWN0ZWRcbiI7CisgICAgICAgICAgICAgICAgICAgICRzYXdFcnJv
ciA9IDE7CisgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIiOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoJHRva2VuID1+IC8oV0VCXyk/VUlfU1RSSU5HKF9L
RVkpPyhfSU5URVJOQUwpPyQvKSB7CisgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIo
IjsKKyAgICAgICAgICAgICAgICAgICAgJG1hY3JvID0gJHRva2VuOworICAgICAgICAgICAgICAg
ICAgICAkVUlTdHJpbmcgPSB1bmRlZjsKKyAgICAgICAgICAgICAgICAgICAgJGtleSA9IHVuZGVm
OworICAgICAgICAgICAgICAgICAgICAkY29tbWVudCA9IHVuZGVmOworICAgICAgICAgICAgICAg
ICAgICAkbWFjcm9MaW5lID0gJC47CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHRva2VuIGVx
ICIoIiBvciAkdG9rZW4gZXEgIlsiKSB7CisgICAgICAgICAgICAgICAgICAgICsrJG5lc3RpbmdM
ZXZlbCBpZiBkZWZpbmVkICRuZXN0aW5nTGV2ZWw7CisgICAgICAgICAgICAgICAgICAgICRleHBl
Y3RlZCA9ICJhIHF1b3RlZCBzdHJpbmciIGlmICRleHBlY3RlZDsKKyAgICAgICAgICAgICAgICB9
IGVsc2lmICgkdG9rZW4gZXEgIiwiKSB7CisgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9
ICJhIHF1b3RlZCBzdHJpbmciIGlmICRleHBlY3RlZDsKKyAgICAgICAgICAgICAgICB9IGVsc2lm
ICgkdG9rZW4gZXEgIikiIG9yICR0b2tlbiBlcSAiXSIpIHsKKyAgICAgICAgICAgICAgICAgICAg
JG5lc3RpbmdMZXZlbCA9IHVuZGVmIGlmIGRlZmluZWQgJG5lc3RpbmdMZXZlbCAmJiAhLS0kbmVz
dGluZ0xldmVsOworICAgICAgICAgICAgICAgICAgICBpZiAoJGV4cGVjdGVkKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAka2V5ID0gJFVJU3RyaW5nIGlmICFkZWZpbmVkICRrZXk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBIYW5kbGVVSVN0cmluZygkVUlTdHJpbmcsICRrZXksICRjb21t
ZW50LCAkZmlsZSwgJG1hY3JvTGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAkbWFjcm8g
PSAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIiOworICAgICAgICAg
ICAgICAgICAgICAgICAgJGxvY2FsaXplZENvdW50Kys7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9IGVsc2lmICgkaXNEZWJ1Z01hY3JveyR0b2tlbn0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgJG5lc3RpbmdMZXZlbCA9IDAgaWYgIWRlZmluZWQgJG5lc3RpbmdMZXZl
bDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgIH0KKyAgICAKKyAgICBnb3RvIGhhbmRsZVN0cmluZyBpZiBkZWZpbmVkICRzdHJp
bmc7CisgICAgCisgICAgaWYgKCRleHBlY3RlZCkgeworICAgICAgICBwcmludCAiJGZpbGU6IHJl
YWNoZWQgZW5kIG9mIGZpbGUgYnV0IGV4cGVjdGVkICRleHBlY3RlZFxuIjsKKyAgICAgICAgJHNh
d0Vycm9yID0gMTsKKyAgICB9CisgICAgCisgICAgY2xvc2UgU09VUkNFOworfQorCisjIFVuZXNj
YXBlcyBDIGxhbmd1YWdlIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZXMuCitzdWIgVW5lc2Nh
cGVIZXhTZXF1ZW5jZSgkKQoreworICAgIG15ICgkb3JpZ2luYWxTdHIpID0gQF87CisKKyAgICBt
eSAkZXNjYXBlZFN0ciA9ICRvcmlnaW5hbFN0cjsKKyAgICBteSAkdW5lc2NhcGVkU3RyID0gIiI7
CisKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGlmICgkZXNjYXBlZFN0ciA9fiBzLV5cXHgoW1s6
eGRpZ2l0Ol1dKyktLSkgeworICAgICAgICAgICAgaWYgKDI1NiA8PSBoZXgoJDEpKSB7CisgICAg
ICAgICAgICAgICAgcHJpbnQgIkhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZSBvdXQgb2YgcmFu
Z2U6IFxceCQxXG4iOworICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICR1bmVzY2FwZWRTdHIgLj0gcGFjaygiSCoiLCAkMSk7CisgICAgICAg
IH0gZWxzaWYgKCRlc2NhcGVkU3RyID1+IHMtXiguKS0tKSB7CisgICAgICAgICAgICAkdW5lc2Nh
cGVkU3RyIC49ICQxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuICR1bmVz
Y2FwZWRTdHI7CisgICAgICAgIH0KKyAgICB9Cit9CisKK215ICVzdHJpbmdCeUtleTsKK215ICVj
b21tZW50QnlLZXk7CitteSAlZmlsZUJ5S2V5OworbXkgJWxpbmVCeUtleTsKKworc3ViIEhhbmRs
ZVVJU3RyaW5nCit7CisgICAgbXkgKCRzdHJpbmcsICRrZXksICRjb21tZW50LCAkZmlsZSwgJGxp
bmUpID0gQF87CisKKyAgICBteSAkYmFkID0gMDsKKyAgICAkc3RyaW5nID0gVW5lc2NhcGVIZXhT
ZXF1ZW5jZSgkc3RyaW5nKTsKKyAgICBpZiAoIWRlZmluZWQoJHN0cmluZykpIHsKKyAgICAgICAg
cHJpbnQgIiRmaWxlOiRsaW5lOiBzdHJpbmcgaGFzIGFuIGlsbGVnYWwgaGV4YWRlY2ltYWwgZXNj
YXBlIHNlcXVlbmNlXG4iOworICAgICAgICAkYmFkID0gMTsKKyAgICB9CisgICAgJGtleSA9IFVu
ZXNjYXBlSGV4U2VxdWVuY2UoJGtleSk7CisgICAgaWYgKCFkZWZpbmVkKCRrZXkpKSB7CisgICAg
ICAgIHByaW50ICIkZmlsZTokbGluZToga2V5IGhhcyBhbiBpbGxlZ2FsIGhleGFkZWNpbWFsIGVz
Y2FwZSBzZXF1ZW5jZVxuIjsKKyAgICAgICAgJGJhZCA9IDE7CisgICAgfQorICAgICRjb21tZW50
ID0gVW5lc2NhcGVIZXhTZXF1ZW5jZSgkY29tbWVudCk7CisgICAgaWYgKCFkZWZpbmVkKCRjb21t
ZW50KSkgeworICAgICAgICBwcmludCAiJGZpbGU6JGxpbmU6IGNvbW1lbnQgaGFzIGFuIGlsbGVn
YWwgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlXG4iOworICAgICAgICAkYmFkID0gMTsKKyAg
ICB9CisgICAgaWYgKGdyZXAgeyAkXyA9PSAweEZGRkQgfSB1bnBhY2sgIlUqIiwgJHN0cmluZykg
eworICAgICAgICBwcmludCAiJGZpbGU6JGxpbmU6IHN0cmluZyBmb3IgdHJhbnNsYXRpb24gaGFz
IGlsbGVnYWwgVVRGLTggLS0gbW9zdCBsaWtlbHkgYSBwcm9ibGVtIHdpdGggdGhlIFRleHQgRW5j
b2Rpbmcgb2YgdGhlIHNvdXJjZSBmaWxlXG4iOworICAgICAgICAkYmFkID0gMTsKKyAgICB9Cisg
ICAgaWYgKCRzdHJpbmcgbmUgJGtleSAmJiBncmVwIHsgJF8gPT0gMHhGRkZEIH0gdW5wYWNrICJV
KiIsICRrZXkpIHsKKyAgICAgICAgcHJpbnQgIiRmaWxlOiRsaW5lOiBrZXkgaGFzIGlsbGVnYWwg
VVRGLTggLS0gbW9zdCBsaWtlbHkgYSBwcm9ibGVtIHdpdGggdGhlIFRleHQgRW5jb2Rpbmcgb2Yg
dGhlIHNvdXJjZSBmaWxlXG4iOworICAgICAgICAkYmFkID0gMTsKKyAgICB9CisgICAgaWYgKGdy
ZXAgeyAkXyA9PSAweEZGRkQgfSB1bnBhY2sgIlUqIiwgJGNvbW1lbnQpIHsKKyAgICAgICAgcHJp
bnQgIiRmaWxlOiRsaW5lOiBjb21tZW50IGZvciB0cmFuc2xhdGlvbiBoYXMgaWxsZWdhbCBVVEYt
OCAtLSBtb3N0IGxpa2VseSBhIHByb2JsZW0gd2l0aCB0aGUgVGV4dCBFbmNvZGluZyBvZiB0aGUg
c291cmNlIGZpbGVcbiI7CisgICAgICAgICRiYWQgPSAxOworICAgIH0KKyAgICBpZiAoJGJhZCkg
eworICAgICAgICAkc2F3RXJyb3IgPSAxOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGlmICgkc3RyaW5nQnlLZXl7JGtleX0gJiYgJHN0cmluZ0J5S2V5eyRrZXl9IG5lICRzdHJp
bmcpIHsKKyAgICAgICAgZW1pdFdhcm5pbmcoJGZpbGUsICRsaW5lLCAiZW5jb3VudGVyZWQgdGhl
IHNhbWUga2V5LCBcIiRrZXlcIiwgdHdpY2UsIHdpdGggZGlmZmVyZW50IHN0cmluZ3MiKTsKKyAg
ICAgICAgZW1pdFdhcm5pbmcoJGZpbGVCeUtleXska2V5fSwgJGxpbmVCeUtleXska2V5fSwgInBy
ZXZpb3VzIG9jY3VycmVuY2UiKTsKKyAgICAgICAgJGtleUNvbGxpc2lvbkNvdW50Kys7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCRjb21tZW50QnlLZXl7JGtleX0gJiYgJGNvbW1l
bnRCeUtleXska2V5fSBuZSAkY29tbWVudCkgeworICAgICAgICBlbWl0V2FybmluZygkZmlsZSwg
JGxpbmUsICJlbmNvdW50ZXJlZCB0aGUgc2FtZSBrZXksIFwiJGtleVwiLCB0d2ljZSwgd2l0aCBk
aWZmZXJlbnQgY29tbWVudHMiKTsKKyAgICAgICAgZW1pdFdhcm5pbmcoJGZpbGVCeUtleXska2V5
fSwgJGxpbmVCeUtleXska2V5fSwgInByZXZpb3VzIG9jY3VycmVuY2UiKTsKKyAgICAgICAgJGtl
eUNvbGxpc2lvbkNvdW50Kys7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAkZmlsZUJ5
S2V5eyRrZXl9ID0gJGZpbGU7CisgICAgJGxpbmVCeUtleXska2V5fSA9ICRsaW5lOworICAgICRz
dHJpbmdCeUtleXska2V5fSA9ICRzdHJpbmc7CisgICAgJGNvbW1lbnRCeUtleXska2V5fSA9ICRj
b21tZW50OworfQorCitwcmludCAiXG4iIGlmICRzYXdFcnJvciB8fCAkbm90TG9jYWxpemVkQ291
bnQgfHwgJE5TTG9jYWxpemVDb3VudDsKKworbXkgQHVudXNlZEV4Y2VwdGlvbnMgPSBzb3J0IGdy
ZXAgeyAhJHVzZWRFeGNlcHRpb257JF99IH0ga2V5cyAlZXhjZXB0aW9uOworaWYgKEB1bnVzZWRF
eGNlcHRpb25zKSB7CisgICAgZm9yIG15ICR1bnVzZWQgKEB1bnVzZWRFeGNlcHRpb25zKSB7Cisg
ICAgICAgIGVtaXRXYXJuaW5nKCRleGNlcHRpb25zRmlsZSwgJGV4Y2VwdGlvbnskdW51c2VkfSwg
ImV4Y2VwdGlvbiAkdW51c2VkIG5vdCB1c2VkIik7CisgICAgfQorICAgIHByaW50ICJcbiI7Cit9
CisKK3ByaW50ICIkbG9jYWxpemVkQ291bnQgbG9jYWxpemFibGUgc3RyaW5nc1xuIiBpZiAkbG9j
YWxpemVkQ291bnQ7CitwcmludCAiJGtleUNvbGxpc2lvbkNvdW50IGtleSBjb2xsaXNpb25zXG4i
IGlmICRrZXlDb2xsaXNpb25Db3VudDsKK3ByaW50ICIkbm90TG9jYWxpemVkQ291bnQgc3RyaW5n
cyBub3QgbWFya2VkIGZvciBsb2NhbGl6YXRpb25cbiIgaWYgJG5vdExvY2FsaXplZENvdW50Owor
cHJpbnQgIiROU0xvY2FsaXplQ291bnQgdXNlcyBvZiBOU0xvY2FsaXplXG4iIGlmICROU0xvY2Fs
aXplQ291bnQ7CitwcmludCBzY2FsYXIoQHVudXNlZEV4Y2VwdGlvbnMpLCAiIHVudXNlZCBleGNl
cHRpb25zXG4iIGlmIEB1bnVzZWRFeGNlcHRpb25zOworCitpZiAoJHNhd0Vycm9yKSB7CisgICAg
cHJpbnQgIlxuRXJyb3JzIGVuY291bnRlcmVkLiBFeGl0aW5nIHdpdGhvdXQgd3JpdGluZyB0byAk
ZmlsZVRvVXBkYXRlLlxuIjsKKyAgICBleGl0IDE7Cit9CisKK215ICRsb2NhbGl6ZWRTdHJpbmdz
ID0gIiI7CisKK2ZvciBteSAka2V5IChzb3J0IGtleXMgJWNvbW1lbnRCeUtleSkgeworICAgICRs
b2NhbGl6ZWRTdHJpbmdzIC49ICIvKiAkY29tbWVudEJ5S2V5eyRrZXl9ICovXG5cIiRrZXlcIiA9
IFwiJHN0cmluZ0J5S2V5eyRrZXl9XCI7XG5cbiI7Cit9CisKK2lmICgtZSAiJGZpbGVUb1VwZGF0
ZSIpIHsKKyAgICBpZiAoISR2ZXJpZnkpIHsKKyAgICAgICAgIyBXcml0ZSBvdXQgdGhlIHN0cmlu
Z3MgZmlsZSBhcyBVVEYtOAorICAgICAgICBteSAkdGVtcG9yYXJ5RmlsZSA9ICIkZmlsZVRvVXBk
YXRlLnVwZGF0ZWQiOworICAgICAgICBvcGVuIFNUUklOR1MsICI+IiwgJHRlbXBvcmFyeUZpbGUg
b3IgZGllOworICAgICAgICBwcmludCBTVFJJTkdTICRsb2NhbGl6ZWRTdHJpbmdzOworICAgICAg
ICBjbG9zZSBTVFJJTkdTOworCisgICAgICAgICMgQXZvaWQgdXBkYXRpbmcgdGhlIHRhcmdldCBm
aWxlJ3MgbW9kaWZpY2F0aW9uIHRpbWUgaWYgdGhlIGNvbnRlbnRzIGhhdmUgbm90IGNoYW5nZWQu
CisgICAgICAgIGlmIChjb21wYXJlKCR0ZW1wb3JhcnlGaWxlLCAkZmlsZVRvVXBkYXRlKSkgewor
ICAgICAgICAgICAgbW92ZSgkdGVtcG9yYXJ5RmlsZSwgJGZpbGVUb1VwZGF0ZSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB1bmxpbmsgJHRlbXBvcmFyeUZpbGU7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBvcGVuIFNUUklOR1MsICRmaWxlVG9VcGRhdGUgb3IgZGll
OworCisgICAgICAgIG15ICRsYXN0Q29tbWVudDsKKyAgICAgICAgbXkgJGxpbmU7CisKKyAgICAg
ICAgd2hpbGUgKDxTVFJJTkdTPikgeworICAgICAgICAgICAgY2hvbXA7CisKKyAgICAgICAgICAg
IG5leHQgaWYgKC9eXHMqJC8pOworCisgICAgICAgICAgICBpZiAoL15cL1wqICguKikgXCpcLyQv
KSB7CisgICAgICAgICAgICAgICAgJGxhc3RDb21tZW50ID0gJDE7CisgICAgICAgICAgICB9IGVs
c2lmICgvXiIoKD86W15cXF18XFxbXiJdKSopIlxzKj1ccyoiKCg/OlteXFxdfFxcW14iXSkqKSI7
JC8pICMKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBteSAkc3RyaW5nID0gZGVsZXRl
ICRzdHJpbmdCeUtleXskMX07CisgICAgICAgICAgICAgICAgaWYgKCFkZWZpbmVkICRzdHJpbmcp
IHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiRmaWxlVG9VcGRhdGU6JC46IHVudXNlZCBr
ZXkgXCIkMVwiXG4iOworICAgICAgICAgICAgICAgICAgICAkc2F3RXJyb3IgPSAxOworICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghKCRzdHJpbmcgZXEg
JDIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiJGZpbGVUb1VwZGF0ZTokLjog
dW5leHBlY3RlZCB2YWx1ZSBcIiQyXCIgZm9yIGtleSBcIiQxXCJcbiI7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwcmludCAiJGZpbGVCeUtleXskMX06JGxpbmVCeUtleXskMX06IGV4cGVjdGVk
IHZhbHVlIFwiJHN0cmluZ1wiIGRlZmluZWQgaGVyZVxuIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICRzYXdFcnJvciA9IDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCEoJGxhc3RDb21tZW50IGVxICRjb21tZW50QnlLZXl7JDF9KSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcHJpbnQgIiRmaWxlVG9VcGRhdGU6JC46IHVuZXhwZWN0ZWQgY29t
bWVudCAvKiAkbGFzdENvbW1lbnQgKi8gZm9yIGtleSBcIiQxXCJcbiI7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwcmludCAiJGZpbGVCeUtleXskMX06JGxpbmVCeUtleXskMX06IGV4cGVjdGVk
IGNvbW1lbnQgLyogJGNvbW1lbnRCeUtleXskMX0gKi8gZGVmaW5lZCBoZXJlXG4iOworICAgICAg
ICAgICAgICAgICAgICAgICAgJHNhd0Vycm9yID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
cHJpbnQgIiRmaWxlVG9VcGRhdGU6JC46IGxpbmUgd2l0aCB1bmV4cGVjdGVkIGZvcm1hdDogJF9c
biI7CisgICAgICAgICAgICAgICAgJHNhd0Vycm9yID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGZvciBteSAkbWlzc2luZyAoa2V5cyAlc3RyaW5nQnlLZXkpIHsKKyAg
ICAgICAgICAgIHByaW50ICIkZmlsZUJ5S2V5eyRtaXNzaW5nfTokbGluZUJ5S2V5eyRtaXNzaW5n
fTogbWlzc2luZyBrZXkgXCIkbWlzc2luZ1wiXG4iOworICAgICAgICAgICAgJHNhd0Vycm9yID0g
MTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgkc2F3RXJyb3IpIHsKKyAgICAgICAgICAgIHBy
aW50ICJcbiRmaWxlVG9VcGRhdGU6MDogZmlsZSBpcyBub3QgdXAgdG8gZGF0ZS5cbiI7CisgICAg
ICAgICAgICBleGl0IDE7CisgICAgICAgIH0KKyAgICB9Cit9IGVsc2UgeworICAgIHByaW50ICJl
cnJvcjogJGZpbGVUb1VwZGF0ZSBkb2VzIG5vdCBleGlzdFxuIjsKKyAgICBleGl0IDE7Cit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Mb2NhbGl6YWJsZVN0cmluZ3MucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTG9jYWxpemFibGVTdHJpbmdzLnBtCSh3b3JraW5nIGNvcHkpCisrKyBT
b3VyY2UvV2ViQ29yZS9Mb2NhbGl6YWJsZVN0cmluZ3MucG0JKHdvcmtpbmcgY29weSkKQEAgLTEs
OTggKzEsNDggQEAKLSMhL3Vzci9iaW4vcGVybCAtdwotCi0jIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAwOSwgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCwgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKICMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAjCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMgMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgotIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAotIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLSMgVGhpcyBzY3JpcHQgaXMgbGlrZSB0aGUgZ2Vuc3RyaW5ncyB0b29sIChtaW51cyBtb3N0
IG9mIHRoZSBvcHRpb25zKSB3aXRoIHRoZXNlIGRpZmZlcmVuY2VzLgotIwotIyAgICAxKSBJdCB1
c2VzIHRoZSBuYW1lcyBVSV9TVFJJTkcgYW5kIFVJX1NUUklOR19XSVRIX0tFWSBmb3IgdGhlIG1h
Y3JvcywgcmF0aGVyIHRoYW4gdGhlIG1hY3JvcwotIyAgICAgICBmcm9tIE5TQnVuZGxlLmgsIGFu
ZCBkb2Vzbid0IHN1cHBvcnQgdGFibGVzIChhbHRob3VnaCB0aGV5IHdvdWxkIGJlIGVhc3kgdG8g
YWRkKS4KLSMgICAgMikgSXQgc3VwcG9ydHMgVVRGLTggaW4ga2V5IHN0cmluZ3MgKGFuZCBoZW5j
ZSB1c2VzICIiIHN0cmluZ3MgcmF0aGVyIHRoYW4gQCIiIHN0cmluZ3M7Ci0jICAgICAgIEAiIiBz
dHJpbmdzIG9ubHkgcmVsaWFibHkgc3VwcG9ydCBBU0NJSSBzaW5jZSB0aGV5IGFyZSBkZWNvZGVk
IGJhc2VkIG9uIHRoZSBzeXN0ZW0gZW5jb2RpbmcKLSMgICAgICAgYXQgcnVudGltZSwgc28gZ2l2
ZSBkaWZmZXJlbnQgcmVzdWx0cyBvbiBVUyBhbmQgSmFwYW5lc2Ugc3lzdGVtcyBmb3IgZXhhbXBs
ZSkuCi0jICAgIDMpIEl0IGxvb2tzIGZvciBzdHJpbmdzIHRoYXQgYXJlIG5vdCBtYXJrZWQgZm9y
IGxvY2FsaXphdGlvbiwgdXNpbmcgYm90aCBtYWNybyBuYW1lcyB0aGF0IGFyZQotIyAgICAgICBr
bm93biB0byBiZSB1c2VkIGZvciBkZWJ1Z2dpbmcgaW4gSW50cmlndWUgc291cmNlIGNvZGUgYW5k
IGFuIGV4Y2VwdGlvbnMgZmlsZS4KLSMgICAgNCkgSXQgZmluZHMgdGhlIGZpbGVzIHRvIHdvcmsg
b24gcmF0aGVyIHRoYW4gdGFraW5nIHRoZW0gYXMgcGFyYW1ldGVycywgYW5kIGFsc28gdXNlcyBh
Ci0jICAgICAgIGhhcmRjb2RlZCBsb2NhdGlvbiBmb3IgYm90aCB0aGUgb3V0cHV0IGZpbGUgYW5k
IHRoZSBleGNlcHRpb25zIGZpbGUuCi0jICAgICAgIEl0IHdvdWxkIGhhdmUgYmVlbiBuaWNlIHRv
IHVzZSB0aGUgcHJvamVjdCB0byBmaW5kIHRoZSBzb3VyY2UgZmlsZXMsIGJ1dCBpdCdzIHRvbyBo
YXJkIHRvCi0jICAgICAgIGxvY2F0ZSBzb3VyY2UgZmlsZXMgYWZ0ZXIgcGFyc2luZyBhIC5wYnhw
cm9qIGZpbGUuCi0KLSMgVGhlIGV4Y2VwdGlvbnMgZmlsZSBoYXMgYSBsaXN0IG9mIHN0cmluZ3Mg
aW4gcXVvdGVzLCBmaWxlbmFtZXMsIGFuZCBmaWxlbmFtZS9zdHJpbmcgcGFpcnMgc2VwYXJhdGVk
IGJ5IDouCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiB1c2Ugc3RyaWN0
OwotdXNlIEZpbGU6OkNvbXBhcmU7Ci11c2UgRmlsZTo6Q29weTsKLXVzZSBHZXRvcHQ6Okxvbmc7
Ci1ubyB3YXJuaW5ncyAnZGVwcmVjYXRlZCc7Ci0KLXN1YiBVbmVzY2FwZUhleFNlcXVlbmNlKCQp
OwotCi1teSAlaXNEZWJ1Z01hY3JvID0gKCBBU1NFUlRfV0lUSF9NRVNTQUdFID0+IDEsIExPR19F
UlJPUiA9PiAxLCBFUlJPUiA9PiAxLCBOU1VSTF9FUlJPUiA9PiAxLCBGQVRBTCA9PiAxLCBMT0cg
PT4gMSwgTE9HX1dBUk5JTkcgPT4gMSwgVUlfU1RSSU5HX0xPQ0FMSVpFX0xBVEVSID0+IDEsIFVJ
X1NUUklOR19MT0NBTElaRV9MQVRFUl9LRVkgPT4gMSwgTFBDVFNUUl9VSV9TVFJJTkdfTE9DQUxJ
WkVfTEFURVIgPT4gMSwgVU5MT0NBTElaRURfU1RSSU5HID0+IDEsIFVOTE9DQUxJWkVEX0xQQ1RT
VFIgPT4gMSwgZHByaW50ZiA9PiAxLCBOU0V4Y2VwdGlvbiA9PiAxLCBOU0xvZyA9PiAxLCBwcmlu
dGYgPT4gMSApOwotCi1teSAkdmVyaWZ5OwotbXkgJGV4Y2VwdGlvbnNGaWxlOwotbXkgQGRpcmVj
dG9yaWVzVG9Ta2lwID0gKCk7Ci1teSAkdHJlYXRXYXJuaW5nc0FzRXJyb3JzOwotCi1teSAlb3B0
aW9ucyA9ICgKLSAgICAndmVyaWZ5JyA9PiBcJHZlcmlmeSwKLSAgICAnZXhjZXB0aW9ucz1zJyA9
PiBcJGV4Y2VwdGlvbnNGaWxlLAotICAgICdza2lwPXMnID0+IFxAZGlyZWN0b3JpZXNUb1NraXAs
Ci0gICAgJ3RyZWF0LXdhcm5pbmdzLWFzLWVycm9ycycgPT4gXCR0cmVhdFdhcm5pbmdzQXNFcnJv
cnMsCi0pOwotCi1HZXRPcHRpb25zKCVvcHRpb25zKTsKLQotQEFSR1YgPj0gMiBvciBkaWUgIlVz
YWdlOiBleHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MgWy0tdmVyaWZ5XSBbLS10cmVhdC13YXJu
aW5ncy1hcy1lcnJvcnNdIFstLWV4Y2VwdGlvbnMgPGV4Y2VwdGlvbnMgZmlsZT5dIDxmaWxlIHRv
IHVwZGF0ZT4gWy0tc2tpcCBkaXJlY3RvcnkgfCBkaXJlY3RvcnldLi4uXG5EaWQgeW91IG1lYW4g
dG8gcnVuIHVwZGF0ZS13ZWJraXQtbG9jYWxpemFibGUtc3RyaW5ncyBpbnN0ZWFkP1xuIjsKLQot
LWYgJGV4Y2VwdGlvbnNGaWxlIG9yIGRpZSAiQ291bGRuJ3QgZmluZCBleGNlcHRpb25zIGZpbGUg
JGV4Y2VwdGlvbnNGaWxlXG4iIHVubGVzcyAhZGVmaW5lZCAkZXhjZXB0aW9uc0ZpbGU7Ci0KLW15
ICRmaWxlVG9VcGRhdGUgPSBzaGlmdCBAQVJHVjsKLS1mICRmaWxlVG9VcGRhdGUgb3IgZGllICJD
b3VsZG4ndCBmaW5kIGZpbGUgdG8gdXBkYXRlICRmaWxlVG9VcGRhdGVcbiI7CiAKLW15ICR3YXJu
QWJvdXRVbmxvY2FsaXplZFN0cmluZ3MgPSBkZWZpbmVkICRleGNlcHRpb25zRmlsZTsKK215ICR0
cmVhdFdhcm5pbmdzQXNFcnJvcnMgPSAwOwogCi1teSBAZGlyZWN0b3JpZXMgPSAoKTsKLWlmIChA
QVJHViA8IDEpIHsKLSAgICBwdXNoKEBkaXJlY3RvcmllcywgIi4iKTsKLX0gZWxzZSB7Ci0gICAg
Zm9yIG15ICRkaXIgKEBBUkdWKSB7Ci0gICAgICAgIHB1c2ggQGRpcmVjdG9yaWVzLCAkZGlyOwot
ICAgIH0KK3N1YiBzZXRUcmVhdFdhcm5pbmdzQXNFcnJvcnMoJCkKK3sKKyAgICAoJHRyZWF0V2Fy
bmluZ3NBc0Vycm9ycykgPSBAXzsKIH0KIAogbXkgJHNhd0Vycm9yID0gMDsKIAotbXkgJGxvY2Fs
aXplZENvdW50ID0gMDsKLW15ICRrZXlDb2xsaXNpb25Db3VudCA9IDA7Ci1teSAkbm90TG9jYWxp
emVkQ291bnQgPSAwOwotbXkgJE5TTG9jYWxpemVDb3VudCA9IDA7CitzdWIgc2F3RXJyb3IoKQor
eworICAgIHJldHVybiAkc2F3RXJyb3I7Cit9CiAKLW15ICVleGNlcHRpb247Ci1teSAldXNlZEV4
Y2VwdGlvbjsKK3N1YiBlbWl0RXJyb3IoJCQkKQoreworICAgIG15ICgkZmlsZSwgJGxpbmUsICRt
ZXNzYWdlKSA9IEBfOworICAgIHByaW50ICIkZmlsZTokbGluZTogJG1lc3NhZ2VcbiI7CisgICAg
JHNhd0Vycm9yID0gMTsKK30KIAogc3ViIGVtaXRXYXJuaW5nKCQkJCkKIHsKQEAgLTEwMiwxOTUg
KzUyLDggQEAgc3ViIGVtaXRXYXJuaW5nKCQkJCkKICAgICAkc2F3RXJyb3IgPSAxIGlmICR0cmVh
dFdhcm5pbmdzQXNFcnJvcnM7CiB9CiAKLWlmIChkZWZpbmVkICRleGNlcHRpb25zRmlsZSAmJiBv
cGVuIEVYQ0VQVElPTlMsICRleGNlcHRpb25zRmlsZSkgewotICAgIHdoaWxlICg8RVhDRVBUSU9O
Uz4pIHsKLSAgICAgICAgY2hvbXA7Ci0gICAgICAgIGlmICgvXiIoW15cXCJdfFxcLikqIiQvIG9y
IC9eWy1fXC9cd1xzLl0rLihofG18bW18Y3xjcHApJC8gb3IgL15bLV9cL1x3XHMuXSsuKGh8bXxt
bXxjfGNwcCk6IihbXlxcIl18XFwuKSoiJC8pIHsKLSAgICAgICAgICAgIGlmICgkZXhjZXB0aW9u
eyRffSkgewotICAgICAgICAgICAgICAgIGVtaXRXYXJuaW5nKCRleGNlcHRpb25zRmlsZSwgJC4s
ICJleGNlcHRpb24gZm9yICRfIGFwcGVhcnMgdHdpY2UiKTsKLSAgICAgICAgICAgICAgICBlbWl0
V2FybmluZygkZXhjZXB0aW9uc0ZpbGUsICRleGNlcHRpb257JF99LCAiZmlyc3QgYXBwZWFyYW5j
ZSIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAkZXhjZXB0aW9ueyRf
fSA9ICQuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZW1p
dFdhcm5pbmcoJGV4Y2VwdGlvbnNGaWxlLCAkLiwgInN5bnRheCBlcnJvciIpOwotICAgICAgICB9
Ci0gICAgfQotICAgIGNsb3NlIEVYQ0VQVElPTlM7Ci19Ci0KLW15ICRxdW90ZWREaXJlY3Rvcmll
c1N0cmluZyA9ICciJyAuIGpvaW4oJyIgIicsIEBkaXJlY3RvcmllcykgLiAnIic7Ci1mb3IgbXkg
JGRpciAoQGRpcmVjdG9yaWVzVG9Ta2lwKSB7Ci0gICAgJHF1b3RlZERpcmVjdG9yaWVzU3RyaW5n
IC49ICcgLXBhdGggIicgLiAkZGlyIC4gJyIgLXBydW5lIC1vJzsKLX0KLQotbXkgQGZpbGVzID0g
KCBzcGxpdCAiXG4iLCBgZmluZCAkcXVvdGVkRGlyZWN0b3JpZXNTdHJpbmcgXFwoIC1uYW1lICIq
LmgiIC1vIC1uYW1lICIqLm0iIC1vIC1uYW1lICIqLm1tIiAtbyAtbmFtZSAiKi5jIiAtbyAtbmFt
ZSAiKi5jcHAiIFxcKWAgKTsKLQotZm9yIG15ICRmaWxlIChzb3J0IEBmaWxlcykgewotICAgIG5l
eHQgaWYgJGZpbGUgPX4gL1wvXHcrTG9jYWxpemFibGVTdHJpbmdzXHcqXC5oJC8gfHwgJGZpbGUg
PX4gL1wvTG9jYWxpemVkU3RyaW5nc1wuaCQvOwotCi0gICAgJGZpbGUgPX4gcy1eLi8tLTsKLQot
ICAgIG9wZW4gU09VUkNFLCAkZmlsZSBvciBkaWUgImNhbid0IG9wZW4gJGZpbGVcbiI7Ci0gICAg
Ci0gICAgbXkgJGluQ29tbWVudCA9IDA7Ci0gICAgCi0gICAgbXkgJGV4cGVjdGVkID0gIiI7Ci0g
ICAgbXkgJG1hY3JvTGluZTsKLSAgICBteSAkbWFjcm87Ci0gICAgbXkgJFVJU3RyaW5nOwotICAg
IG15ICRrZXk7Ci0gICAgbXkgJGNvbW1lbnQ7Ci0gICAgCi0gICAgbXkgJHN0cmluZzsKLSAgICBt
eSAkc3RyaW5nTGluZTsKLSAgICBteSAkbmVzdGluZ0xldmVsOwotICAgIAotICAgIG15ICRwcmV2
aW91c1Rva2VuID0gIiI7Ci0KLSAgICB3aGlsZSAoPFNPVVJDRT4pIHsKLSAgICAgICAgY2hvbXA7
Ci0gICAgICAgIAotICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQgbXVsdGktbGluZSBjb21tZW50
LgotICAgICAgICBpZiAoJGluQ29tbWVudCkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0u
KlwqLy0tOwotICAgICAgICAgICAgJGluQ29tbWVudCA9IDA7Ci0gICAgICAgIH0KLQotICAgICAg
ICBuZXh0IHVubGVzcyBkZWZpbmVkICRuZXN0aW5nTGV2ZWwgb3IgLyhcInxcL1wqKS87Ci0gICAg
Ci0gICAgICAgICMgSGFuZGxlIGFsbCB0aGUgdG9rZW5zIGluIHRoZSBsaW5lLgotICAgICAgICB3
aGlsZSAocy1eXHMqKFsjXHddK3wvXCp8Ly98W14jXHcvJyIoKVxbXF0sXSt8LiktLSkgewotICAg
ICAgICAgICAgbXkgJHRva2VuID0gJDE7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICgk
dG9rZW4gZXEgIlwiIikgewotICAgICAgICAgICAgICAgIGlmICgkZXhwZWN0ZWQgYW5kICRleHBl
Y3RlZCBuZSAiYSBxdW90ZWQgc3RyaW5nIikgewotICAgICAgICAgICAgICAgICAgICBwcmludCAi
JGZpbGU6JC46IGZvdW5kIGEgcXVvdGVkIHN0cmluZyBidXQgZXhwZWN0ZWQgJGV4cGVjdGVkXG4i
OwotICAgICAgICAgICAgICAgICAgICAkc2F3RXJyb3IgPSAxOwotICAgICAgICAgICAgICAgICAg
ICAkZXhwZWN0ZWQgPSAiIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYg
KHMtXigoW15cXCR0b2tlbl18XFwuKSo/KSR0b2tlbi0tKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghZGVmaW5lZCAkc3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkc3RyaW5n
TGluZSA9ICQuOwotICAgICAgICAgICAgICAgICAgICAgICAgJHN0cmluZyA9ICQxOwotICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgJHN0cmluZyAu
PSAkMTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHByaW50ICIkZmlsZTokLjogbWlzbWF0Y2hlZCBxdW90ZXNcbiI7
Ci0gICAgICAgICAgICAgICAgICAgICRzYXdFcnJvciA9IDE7Ci0gICAgICAgICAgICAgICAgICAg
ICRfID0gIiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChkZWZpbmVkICRzdHJpbmcp
IHsKLWhhbmRsZVN0cmluZzoKLSAgICAgICAgICAgICAgICBpZiAoJGV4cGVjdGVkKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghZGVmaW5lZCAkVUlTdHJpbmcpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICMgRklYTUU6IFZhbGlkYXRlIFVURi04IGhlcmU/Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAkVUlTdHJpbmcgPSAkc3RyaW5nOwotICAgICAgICAgICAgICAgICAgICAgICAgJGV4
cGVjdGVkID0gIiwiOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgoJG1hY3JvID1+IC8o
V0VCXyk/VUlfU1RSSU5HX0tFWShfSU5URVJOQUwpPyQvKSBhbmQgIWRlZmluZWQgJGtleSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVmFsaWRhdGUgVVRGLTggaGVyZT8KLSAg
ICAgICAgICAgICAgICAgICAgICAgICRrZXkgPSAkc3RyaW5nOwotICAgICAgICAgICAgICAgICAg
ICAgICAgJGV4cGVjdGVkID0gIiwiOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICghZGVm
aW5lZCAkY29tbWVudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogVmFsaWRh
dGUgVVRGLTggaGVyZT8KLSAgICAgICAgICAgICAgICAgICAgICAgICRjb21tZW50ID0gJHN0cmlu
ZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIpIjsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChkZWZpbmVkICRuZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICMg
SW4gYSBkZWJ1ZyBtYWNybywgbm8gbmVlZCB0byBsb2NhbGl6ZS4KLSAgICAgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoJHByZXZpb3VzVG9rZW4gZXEgIiNpbmNsdWRlIiBvciAkcHJldmlvdXNUb2tl
biBlcSAiI2ltcG9ydCIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRmlsZSBuYW1lLCBu
byBuZWVkIHRvIGxvY2FsaXplLgotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcHJldmlv
dXNUb2tlbiBlcSAiZXh0ZXJuIiBhbmQgJHN0cmluZyBlcSAiQyIpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICMgZXh0ZXJuICJDIiwgbm8gbmVlZCB0byBsb2NhbGl6ZS4KLSAgICAgICAgICAg
ICAgICAgICAgfSBlbHNpZiAoJHN0cmluZyBlcSAiIikgewotICAgICAgICAgICAgICAgICAgICAg
ICAgIyBFbXB0eSBzdHJpbmcgY2FuIHNvbWV0aW1lcyBiZSBsb2NhbGl6ZWQsIGJ1dCB3ZSBuZWVk
IG5vdCBjb21wbGFpbiBpZiBub3QuCi0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRleGNl
cHRpb257JGZpbGV9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkdXNlZEV4Y2VwdGlvbnsk
ZmlsZX0gPSAxOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkZXhjZXB0aW9ueyJcIiRz
dHJpbmdcIiJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkdXNlZEV4Y2VwdGlvbnsiXCIk
c3RyaW5nXCIifSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRleGNlcHRpb257
IiRmaWxlOlwiJHN0cmluZ1wiIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICR1c2VkRXhj
ZXB0aW9ueyIkZmlsZTpcIiRzdHJpbmdcIiJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVtaXRXYXJuaW5nKCRmaWxlLCAkc3RyaW5n
TGluZSwgIlwiJHN0cmluZ1wiIGlzIG5vdCBtYXJrZWQgZm9yIGxvY2FsaXphdGlvbiIpIGlmICR3
YXJuQWJvdXRVbmxvY2FsaXplZFN0cmluZ3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbm90
TG9jYWxpemVkQ291bnQrKzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAkc3RyaW5nID0gdW5kZWY7Ci0gICAgICAgICAgICAgICAgbGFz
dCBpZiAhZGVmaW5lZCAkdG9rZW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgICRwcmV2aW91c1Rva2VuID0gJHRva2VuOwotCi0gICAgICAgICAgICBpZiAoJHRva2Vu
ID1+IC9eTlNMb2NhbGl6ZWQvICYmICR0b2tlbiAhfiAvTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktl
eS8gJiYgJHRva2VuICF+IC9OU0xvY2FsaXplZFN0cmluZ0Zyb21UYWJsZUluQnVuZGxlLyAmJiAk
dG9rZW4gIX4gL05TTG9jYWxpemVkRmlsZVNpemVEZXNjcmlwdGlvbi8gJiYgJHRva2VuICF+IC9O
U0xvY2FsaXplZERlc2NyaXB0aW9uS2V5LyAmJiAkdG9rZW4gIX4gL05TTG9jYWxpemVkUmVjb3Zl
cnlTdWdnZXN0aW9uRXJyb3JLZXkvKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnQgIiRmaWxlOiQu
OiBmb3VuZCBhIHVzZSBvZiBhbiBOU0xvY2FsaXplZCBtYWNybyAoJHRva2VuKTsgbm90IHN1cHBv
cnRlZFxuIjsKLSAgICAgICAgICAgICAgICAkbmVzdGluZ0xldmVsID0gMCBpZiAhZGVmaW5lZCAk
bmVzdGluZ0xldmVsOwotICAgICAgICAgICAgICAgICRzYXdFcnJvciA9IDE7Ci0gICAgICAgICAg
ICAgICAgJE5TTG9jYWxpemVDb3VudCsrOwotICAgICAgICAgICAgfSBlbHNpZiAoJHRva2VuIGVx
ICIvKiIpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXMtXi4qP1wqLy0tKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICRfID0gIiI7ICMgSWYgdGhlIGNvbW1lbnQgZG9lc24ndCBlbmQsIGRpc2NhcmQg
dGhlIHJlc3VsdCBvZiB0aGUgbGluZSBhbmQgc2V0IGZsYWcKLSAgICAgICAgICAgICAgICAgICAg
JGluQ29tbWVudCA9IDE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNpZiAo
JHRva2VuIGVxICIvLyIpIHsKLSAgICAgICAgICAgICAgICAkXyA9ICIiOyAjIERpc2NhcmQgdGhl
IHJlc3Qgb2YgdGhlIGxpbmUKLSAgICAgICAgICAgIH0gZWxzaWYgKCR0b2tlbiBlcSAiJyIpIHsK
LSAgICAgICAgICAgICAgICBpZiAoIXMtKFteXFxdfFxcLiknLS0pIHsgIycgPC0tIHRoYXQgc2lu
Z2xlIHF1b3RlIG1ha2VzIHRoZSBQcm9qZWN0IEJ1aWxkZXIgZWRpdG9yIGxlc3MgY29uZnVzZWQK
LSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiRmaWxlOiQuOiBtaXNtYXRjaGVkIHNpbmdsZSBx
dW90ZVxuIjsKLSAgICAgICAgICAgICAgICAgICAgJHNhd0Vycm9yID0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgJF8gPSAiIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGlmICgkZXhwZWN0ZWQgYW5kICRleHBlY3RlZCBuZSAkdG9rZW4p
IHsKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiRmaWxlOiQuOiBmb3VuZCAkdG9rZW4gYnV0
IGV4cGVjdGVkICRleHBlY3RlZFxuIjsKLSAgICAgICAgICAgICAgICAgICAgJHNhd0Vycm9yID0g
MTsKLSAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiI7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmICgkdG9rZW4gPX4gLyhXRUJfKT9VSV9TVFJJTkcoX0tFWSk/
KF9JTlRFUk5BTCk/JC8pIHsKLSAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIigiOwot
ICAgICAgICAgICAgICAgICAgICAkbWFjcm8gPSAkdG9rZW47Ci0gICAgICAgICAgICAgICAgICAg
ICRVSVN0cmluZyA9IHVuZGVmOwotICAgICAgICAgICAgICAgICAgICAka2V5ID0gdW5kZWY7Ci0g
ICAgICAgICAgICAgICAgICAgICRjb21tZW50ID0gdW5kZWY7Ci0gICAgICAgICAgICAgICAgICAg
ICRtYWNyb0xpbmUgPSAkLjsKLSAgICAgICAgICAgICAgICB9IGVsc2lmICgkdG9rZW4gZXEgIigi
IG9yICR0b2tlbiBlcSAiWyIpIHsKLSAgICAgICAgICAgICAgICAgICAgKyskbmVzdGluZ0xldmVs
IGlmIGRlZmluZWQgJG5lc3RpbmdMZXZlbDsKLSAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVk
ID0gImEgcXVvdGVkIHN0cmluZyIgaWYgJGV4cGVjdGVkOwotICAgICAgICAgICAgICAgIH0gZWxz
aWYgKCR0b2tlbiBlcSAiLCIpIHsKLSAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gImEg
cXVvdGVkIHN0cmluZyIgaWYgJGV4cGVjdGVkOwotICAgICAgICAgICAgICAgIH0gZWxzaWYgKCR0
b2tlbiBlcSAiKSIgb3IgJHRva2VuIGVxICJdIikgewotICAgICAgICAgICAgICAgICAgICAkbmVz
dGluZ0xldmVsID0gdW5kZWYgaWYgZGVmaW5lZCAkbmVzdGluZ0xldmVsICYmICEtLSRuZXN0aW5n
TGV2ZWw7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkZXhwZWN0ZWQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICRrZXkgPSAkVUlTdHJpbmcgaWYgIWRlZmluZWQgJGtleTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEhhbmRsZVVJU3RyaW5nKCRVSVN0cmluZywgJGtleSwgJGNvbW1lbnQs
ICRmaWxlLCAkbWFjcm9MaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRtYWNybyA9ICIi
OwotICAgICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiI7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAkbG9jYWxpemVkQ291bnQrKzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0gZWxzaWYgKCRpc0RlYnVnTWFjcm97JHRva2VufSkgewotICAgICAgICAg
ICAgICAgICAgICAkbmVzdGluZ0xldmVsID0gMCBpZiAhZGVmaW5lZCAkbmVzdGluZ0xldmVsOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAgICAg
Ci0gICAgfQotICAgIAotICAgIGdvdG8gaGFuZGxlU3RyaW5nIGlmIGRlZmluZWQgJHN0cmluZzsK
LSAgICAKLSAgICBpZiAoJGV4cGVjdGVkKSB7Ci0gICAgICAgIHByaW50ICIkZmlsZTogcmVhY2hl
ZCBlbmQgb2YgZmlsZSBidXQgZXhwZWN0ZWQgJGV4cGVjdGVkXG4iOwotICAgICAgICAkc2F3RXJy
b3IgPSAxOwotICAgIH0KLSAgICAKLSAgICBjbG9zZSBTT1VSQ0U7Ci19Ci0KICMgVW5lc2NhcGVz
IEMgbGFuZ3VhZ2UgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlcy4KLXN1YiBVbmVzY2FwZUhl
eFNlcXVlbmNlKCQpCitzdWIgdW5lc2NhcGVIZXhTZXF1ZW5jZSgkKQogewogICAgIG15ICgkb3Jp
Z2luYWxTdHIpID0gQF87CiAKQEAgLTMxMiw2ICs3NSwyMCBAQCBzdWIgVW5lc2NhcGVIZXhTZXF1
ZW5jZSgkKQogICAgIH0KIH0KIAorbXkgJGtleUNvbGxpc2lvbkNvdW50ID0gMDsKKworc3ViIGtl
eUNvbGxpc2lvbkNvdW50KCkKK3sKKyAgICByZXR1cm4gJGtleUNvbGxpc2lvbkNvdW50OworfQor
CitteSAkbG9jYWxpemVkQ291bnQgPSAwOworCitzdWIgbG9jYWxpemVkQ291bnQoKQoreworICAg
IHJldHVybiAkbG9jYWxpemVkQ291bnQ7Cit9CisKIG15ICVzdHJpbmdCeUtleTsKIG15ICVjb21t
ZW50QnlLZXk7CiBteSAlZmlsZUJ5S2V5OwpAQCAtMzIxLDE4ICs5OCwyMCBAQCBzdWIgSGFuZGxl
VUlTdHJpbmcKIHsKICAgICBteSAoJHN0cmluZywgJGtleSwgJGNvbW1lbnQsICRmaWxlLCAkbGlu
ZSkgPSBAXzsKIAorICAgICRsb2NhbGl6ZWRDb3VudCsrOworCiAgICAgbXkgJGJhZCA9IDA7Ci0g
ICAgJHN0cmluZyA9IFVuZXNjYXBlSGV4U2VxdWVuY2UoJHN0cmluZyk7CisgICAgJHN0cmluZyA9
IHVuZXNjYXBlSGV4U2VxdWVuY2UoJHN0cmluZyk7CiAgICAgaWYgKCFkZWZpbmVkKCRzdHJpbmcp
KSB7CiAgICAgICAgIHByaW50ICIkZmlsZTokbGluZTogc3RyaW5nIGhhcyBhbiBpbGxlZ2FsIGhl
eGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVxuIjsKICAgICAgICAgJGJhZCA9IDE7CiAgICAgfQot
ICAgICRrZXkgPSBVbmVzY2FwZUhleFNlcXVlbmNlKCRrZXkpOworICAgICRrZXkgPSB1bmVzY2Fw
ZUhleFNlcXVlbmNlKCRrZXkpOwogICAgIGlmICghZGVmaW5lZCgka2V5KSkgewogICAgICAgICBw
cmludCAiJGZpbGU6JGxpbmU6IGtleSBoYXMgYW4gaWxsZWdhbCBoZXhhZGVjaW1hbCBlc2NhcGUg
c2VxdWVuY2VcbiI7CiAgICAgICAgICRiYWQgPSAxOwogICAgIH0KLSAgICAkY29tbWVudCA9IFVu
ZXNjYXBlSGV4U2VxdWVuY2UoJGNvbW1lbnQpOworICAgICRjb21tZW50ID0gdW5lc2NhcGVIZXhT
ZXF1ZW5jZSgkY29tbWVudCk7CiAgICAgaWYgKCFkZWZpbmVkKCRjb21tZW50KSkgewogICAgICAg
ICBwcmludCAiJGZpbGU6JGxpbmU6IGNvbW1lbnQgaGFzIGFuIGlsbGVnYWwgaGV4YWRlY2ltYWwg
ZXNjYXBlIHNlcXVlbmNlXG4iOwogICAgICAgICAkYmFkID0gMTsKQEAgLTM3Myw5NSArMTUyLDcy
IEBAIHN1YiBIYW5kbGVVSVN0cmluZwogICAgICRjb21tZW50QnlLZXl7JGtleX0gPSAkY29tbWVu
dDsKIH0KIAotcHJpbnQgIlxuIiBpZiAkc2F3RXJyb3IgfHwgJG5vdExvY2FsaXplZENvdW50IHx8
ICROU0xvY2FsaXplQ291bnQ7CitzdWIgd3JpdGVTdHJpbmdzRmlsZSgkKQoreworICAgIG15ICgk
ZmlsZSkgPSBAXzsKIAotbXkgQHVudXNlZEV4Y2VwdGlvbnMgPSBzb3J0IGdyZXAgeyAhJHVzZWRF
eGNlcHRpb257JF99IH0ga2V5cyAlZXhjZXB0aW9uOwotaWYgKEB1bnVzZWRFeGNlcHRpb25zKSB7
Ci0gICAgZm9yIG15ICR1bnVzZWQgKEB1bnVzZWRFeGNlcHRpb25zKSB7Ci0gICAgICAgIGVtaXRX
YXJuaW5nKCRleGNlcHRpb25zRmlsZSwgJGV4Y2VwdGlvbnskdW51c2VkfSwgImV4Y2VwdGlvbiAk
dW51c2VkIG5vdCB1c2VkIik7CisgICAgbXkgJGxvY2FsaXplZFN0cmluZ3MgPSAiIjsKKworICAg
IGZvciBteSAka2V5IChzb3J0IGtleXMgJWNvbW1lbnRCeUtleSkgeworICAgICAgICAkbG9jYWxp
emVkU3RyaW5ncyAuPSAiLyogJGNvbW1lbnRCeUtleXska2V5fSAqL1xuXCIka2V5XCIgPSBcIiRz
dHJpbmdCeUtleXska2V5fVwiO1xuXG4iOwogICAgIH0KLSAgICBwcmludCAiXG4iOwotfQogCi1w
cmludCAiJGxvY2FsaXplZENvdW50IGxvY2FsaXphYmxlIHN0cmluZ3NcbiIgaWYgJGxvY2FsaXpl
ZENvdW50OwotcHJpbnQgIiRrZXlDb2xsaXNpb25Db3VudCBrZXkgY29sbGlzaW9uc1xuIiBpZiAk
a2V5Q29sbGlzaW9uQ291bnQ7Ci1wcmludCAiJG5vdExvY2FsaXplZENvdW50IHN0cmluZ3Mgbm90
IG1hcmtlZCBmb3IgbG9jYWxpemF0aW9uXG4iIGlmICRub3RMb2NhbGl6ZWRDb3VudDsKLXByaW50
ICIkTlNMb2NhbGl6ZUNvdW50IHVzZXMgb2YgTlNMb2NhbGl6ZVxuIiBpZiAkTlNMb2NhbGl6ZUNv
dW50OwotcHJpbnQgc2NhbGFyKEB1bnVzZWRFeGNlcHRpb25zKSwgIiB1bnVzZWQgZXhjZXB0aW9u
c1xuIiBpZiBAdW51c2VkRXhjZXB0aW9uczsKLQotaWYgKCRzYXdFcnJvcikgewotICAgIHByaW50
ICJcbkVycm9ycyBlbmNvdW50ZXJlZC4gRXhpdGluZyB3aXRob3V0IHdyaXRpbmcgdG8gJGZpbGVU
b1VwZGF0ZS5cbiI7Ci0gICAgZXhpdCAxOworICAgICMgV3JpdGUgb3V0IHRoZSBzdHJpbmdzIGZp
bGUgYXMgVVRGLTgKKyAgICBvcGVuIFNUUklOR1MsICI+IiwgJGZpbGUgb3IgZGllOworICAgIHBy
aW50IFNUUklOR1MgJGxvY2FsaXplZFN0cmluZ3M7CisgICAgY2xvc2UgU1RSSU5HUzsKIH0KIAot
bXkgJGxvY2FsaXplZFN0cmluZ3MgPSAiIjsKK3N1YiB2ZXJpZnlTdHJpbmdzRmlsZSgkKQorewor
ICAgIG15ICgkZmlsZSkgPSBAXzsKIAotZm9yIG15ICRrZXkgKHNvcnQga2V5cyAlY29tbWVudEJ5
S2V5KSB7Ci0gICAgJGxvY2FsaXplZFN0cmluZ3MgLj0gIi8qICRjb21tZW50QnlLZXl7JGtleX0g
Ki9cblwiJGtleVwiID0gXCIkc3RyaW5nQnlLZXl7JGtleX1cIjtcblxuIjsKLX0KKyAgICBvcGVu
IFNUUklOR1MsICRmaWxlIG9yIGRpZTsKIAotaWYgKC1lICIkZmlsZVRvVXBkYXRlIikgewotICAg
IGlmICghJHZlcmlmeSkgewotICAgICAgICAjIFdyaXRlIG91dCB0aGUgc3RyaW5ncyBmaWxlIGFz
IFVURi04Ci0gICAgICAgIG15ICR0ZW1wb3JhcnlGaWxlID0gIiRmaWxlVG9VcGRhdGUudXBkYXRl
ZCI7Ci0gICAgICAgIG9wZW4gU1RSSU5HUywgIj4iLCAkdGVtcG9yYXJ5RmlsZSBvciBkaWU7Ci0g
ICAgICAgIHByaW50IFNUUklOR1MgJGxvY2FsaXplZFN0cmluZ3M7Ci0gICAgICAgIGNsb3NlIFNU
UklOR1M7Ci0KLSAgICAgICAgIyBBdm9pZCB1cGRhdGluZyB0aGUgdGFyZ2V0IGZpbGUncyBtb2Rp
ZmljYXRpb24gdGltZSBpZiB0aGUgY29udGVudHMgaGF2ZSBub3QgY2hhbmdlZC4KLSAgICAgICAg
aWYgKGNvbXBhcmUoJHRlbXBvcmFyeUZpbGUsICRmaWxlVG9VcGRhdGUpKSB7Ci0gICAgICAgICAg
ICBtb3ZlKCR0ZW1wb3JhcnlGaWxlLCAkZmlsZVRvVXBkYXRlKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHVubGluayAkdGVtcG9yYXJ5RmlsZTsKLSAgICAgICAgfQotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG9wZW4gU1RSSU5HUywgJGZpbGVUb1VwZGF0ZSBvciBkaWU7CisgICAgbXkg
JGxhc3RDb21tZW50OworICAgIG15ICRsaW5lOworICAgIG15ICRzYXdFcnJvcjsKIAotICAgICAg
ICBteSAkbGFzdENvbW1lbnQ7Ci0gICAgICAgIG15ICRsaW5lOworICAgIHdoaWxlICg8U1RSSU5H
Uz4pIHsKKyAgICAgICAgY2hvbXA7CiAKLSAgICAgICAgd2hpbGUgKDxTVFJJTkdTPikgewotICAg
ICAgICAgICAgY2hvbXA7CisgICAgICAgIG5leHQgaWYgKC9eXHMqJC8pOwogCi0gICAgICAgICAg
ICBuZXh0IGlmICgvXlxzKiQvKTsKLQotICAgICAgICAgICAgaWYgKC9eXC9cKiAoLiopIFwqXC8k
LykgewotICAgICAgICAgICAgICAgICRsYXN0Q29tbWVudCA9ICQxOwotICAgICAgICAgICAgfSBl
bHNpZiAoL14iKCg/OlteXFxdfFxcW14iXSkqKSJccyo9XHMqIigoPzpbXlxcXXxcXFteIl0pKiki
OyQvKSAjCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbXkgJHN0cmluZyA9IGRlbGV0
ZSAkc3RyaW5nQnlLZXl7JDF9OwotICAgICAgICAgICAgICAgIGlmICghZGVmaW5lZCAkc3RyaW5n
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICIkZmlsZVRvVXBkYXRlOiQuOiB1bnVzZWQg
a2V5IFwiJDFcIlxuIjsKKyAgICAgICAgaWYgKC9eXC9cKiAoLiopIFwqXC8kLykgeworICAgICAg
ICAgICAgJGxhc3RDb21tZW50ID0gJDE7CisgICAgICAgIH0gZWxzaWYgKC9eIigoPzpbXlxcXXxc
XFteIl0pKikiXHMqPVxzKiIoKD86W15cXF18XFxbXiJdKSopIjskLykgIworICAgICAgICB7Cisg
ICAgICAgICAgICBteSAkc3RyaW5nID0gZGVsZXRlICRzdHJpbmdCeUtleXskMX07CisgICAgICAg
ICAgICBpZiAoIWRlZmluZWQgJHN0cmluZykgeworICAgICAgICAgICAgICAgIHByaW50ICIkZmls
ZTokLjogdW51c2VkIGtleSBcIiQxXCJcbiI7CisgICAgICAgICAgICAgICAgJHNhd0Vycm9yID0g
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCEoJHN0cmluZyBl
cSAkMikpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiRmaWxlOiQuOiB1bmV4cGVjdGVk
IHZhbHVlIFwiJDJcIiBmb3Iga2V5IFwiJDFcIlxuIjsKKyAgICAgICAgICAgICAgICAgICAgcHJp
bnQgIiRmaWxlQnlLZXl7JDF9OiRsaW5lQnlLZXl7JDF9OiBleHBlY3RlZCB2YWx1ZSBcIiRzdHJp
bmdcIiBkZWZpbmVkIGhlcmVcbiI7CisgICAgICAgICAgICAgICAgICAgICRzYXdFcnJvciA9IDE7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghKCRsYXN0Q29tbWVudCBl
cSAkY29tbWVudEJ5S2V5eyQxfSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiRmaWxl
OiQuOiB1bmV4cGVjdGVkIGNvbW1lbnQgLyogJGxhc3RDb21tZW50ICovIGZvciBrZXkgXCIkMVwi
XG4iOworICAgICAgICAgICAgICAgICAgICBwcmludCAiJGZpbGVCeUtleXskMX06JGxpbmVCeUtl
eXskMX06IGV4cGVjdGVkIGNvbW1lbnQgLyogJGNvbW1lbnRCeUtleXskMX0gKi8gZGVmaW5lZCBo
ZXJlXG4iOwogICAgICAgICAgICAgICAgICAgICAkc2F3RXJyb3IgPSAxOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKCRzdHJpbmcgZXEgJDIpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiJGZpbGVUb1VwZGF0ZTokLjogdW5leHBl
Y3RlZCB2YWx1ZSBcIiQyXCIgZm9yIGtleSBcIiQxXCJcbiI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBwcmludCAiJGZpbGVCeUtleXskMX06JGxpbmVCeUtleXskMX06IGV4cGVjdGVkIHZhbHVl
IFwiJHN0cmluZ1wiIGRlZmluZWQgaGVyZVxuIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICRz
YXdFcnJvciA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKCEoJGxhc3RDb21tZW50IGVxICRjb21tZW50QnlLZXl7JDF9KSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpbnQgIiRmaWxlVG9VcGRhdGU6JC46IHVuZXhwZWN0ZWQgY29tbWVudCAv
KiAkbGFzdENvbW1lbnQgKi8gZm9yIGtleSBcIiQxXCJcbiI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBwcmludCAiJGZpbGVCeUtleXskMX06JGxpbmVCeUtleXskMX06IGV4cGVjdGVkIGNvbW1l
bnQgLyogJGNvbW1lbnRCeUtleXskMX0gKi8gZGVmaW5lZCBoZXJlXG4iOwotICAgICAgICAgICAg
ICAgICAgICAgICAgJHNhd0Vycm9yID0gMTsKLSAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHJpbnQg
IiRmaWxlVG9VcGRhdGU6JC46IGxpbmUgd2l0aCB1bmV4cGVjdGVkIGZvcm1hdDogJF9cbiI7Ci0g
ICAgICAgICAgICAgICAgJHNhd0Vycm9yID0gMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIGZvciBteSAkbWlzc2luZyAoa2V5cyAlc3RyaW5nQnlLZXkpIHsKLSAgICAgICAg
ICAgIHByaW50ICIkZmlsZUJ5S2V5eyRtaXNzaW5nfTokbGluZUJ5S2V5eyRtaXNzaW5nfTogbWlz
c2luZyBrZXkgXCIkbWlzc2luZ1wiXG4iOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cHJpbnQgIiRmaWxlOiQuOiBsaW5lIHdpdGggdW5leHBlY3RlZCBmb3JtYXQ6ICRfXG4iOwogICAg
ICAgICAgICAgJHNhd0Vycm9yID0gMTsKICAgICAgICAgfQorICAgIH0KIAotICAgICAgICBpZiAo
JHNhd0Vycm9yKSB7Ci0gICAgICAgICAgICBwcmludCAiXG4kZmlsZVRvVXBkYXRlOjA6IGZpbGUg
aXMgbm90IHVwIHRvIGRhdGUuXG4iOwotICAgICAgICAgICAgZXhpdCAxOwotICAgICAgICB9Cisg
ICAgZm9yIG15ICRtaXNzaW5nIChrZXlzICVzdHJpbmdCeUtleSkgeworICAgICAgICBwcmludCAi
JGZpbGVCeUtleXskbWlzc2luZ306JGxpbmVCeUtleXskbWlzc2luZ306IG1pc3Npbmcga2V5IFwi
JG1pc3NpbmdcIlxuIjsKKyAgICAgICAgJHNhd0Vycm9yID0gMTsKKyAgICB9CisKKyAgICBpZiAo
JHNhd0Vycm9yKSB7CisgICAgICAgIHByaW50ICJcbiRmaWxlOjA6IGZpbGUgaXMgbm90IHVwIHRv
IGRhdGUuXG4iOworICAgICAgICBleGl0IDE7CiAgICAgfQotfSBlbHNlIHsKLSAgICBwcmludCAi
ZXJyb3I6ICRmaWxlVG9VcGRhdGUgZG9lcyBub3QgZXhpc3RcbiI7Ci0gICAgZXhpdCAxOwogfQor
CisxOwpJbmRleDogU291cmNlL1dlYkNvcmUvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2V4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5n
cy5wbAkocmV2aXNpb24gMTgwNjUyKQorKysgU291cmNlL1dlYkNvcmUvZXh0cmFjdC1sb2NhbGl6
YWJsZS1zdHJpbmdzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUsMTIgQEAKIHVzZSBz
dHJpY3Q7CiB1c2UgRmlsZTo6Q29tcGFyZTsKIHVzZSBGaWxlOjpDb3B5OwordXNlIEZpbmRCaW47
CiB1c2UgR2V0b3B0OjpMb25nOwordXNlIGxpYiAkRmluZEJpbjo6QmluOwordXNlIExvY2FsaXph
YmxlU3RyaW5nczsKIG5vIHdhcm5pbmdzICdkZXByZWNhdGVkJzsKIAotc3ViIFVuZXNjYXBlSGV4
U2VxdWVuY2UoJCk7Ci0KIG15ICVpc0RlYnVnTWFjcm8gPSAoIEFTU0VSVF9XSVRIX01FU1NBR0Ug
PT4gMSwgTE9HX0VSUk9SID0+IDEsIEVSUk9SID0+IDEsIE5TVVJMX0VSUk9SID0+IDEsIEZBVEFM
ID0+IDEsIExPRyA9PiAxLCBMT0dfV0FSTklORyA9PiAxLCBVSV9TVFJJTkdfTE9DQUxJWkVfTEFU
RVIgPT4gMSwgVUlfU1RSSU5HX0xPQ0FMSVpFX0xBVEVSX0tFWSA9PiAxLCBMUENUU1RSX1VJX1NU
UklOR19MT0NBTElaRV9MQVRFUiA9PiAxLCBVTkxPQ0FMSVpFRF9TVFJJTkcgPT4gMSwgVU5MT0NB
TElaRURfTFBDVFNUUiA9PiAxLCBkcHJpbnRmID0+IDEsIE5TRXhjZXB0aW9uID0+IDEsIE5TTG9n
ID0+IDEsIHByaW50ZiA9PiAxICk7CiAKIG15ICR2ZXJpZnk7CkBAIC02Niw2ICs2Nyw4IEBAIG15
ICVvcHRpb25zID0gKAogCiBHZXRPcHRpb25zKCVvcHRpb25zKTsKIAorc2V0VHJlYXRXYXJuaW5n
c0FzRXJyb3JzKCR0cmVhdFdhcm5pbmdzQXNFcnJvcnMpOworCiBAQVJHViA+PSAyIG9yIGRpZSAi
VXNhZ2U6IGV4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncyBbLS12ZXJpZnldIFstLXRyZWF0LXdh
cm5pbmdzLWFzLWVycm9yc10gWy0tZXhjZXB0aW9ucyA8ZXhjZXB0aW9ucyBmaWxlPl0gPGZpbGUg
dG8gdXBkYXRlPiBbLS1za2lwIGRpcmVjdG9yeSB8IGRpcmVjdG9yeV0uLi5cbkRpZCB5b3UgbWVh
biB0byBydW4gdXBkYXRlLXdlYmtpdC1sb2NhbGl6YWJsZS1zdHJpbmdzIGluc3RlYWQ/XG4iOwog
CiAtZiAkZXhjZXB0aW9uc0ZpbGUgb3IgZGllICJDb3VsZG4ndCBmaW5kIGV4Y2VwdGlvbnMgZmls
ZSAkZXhjZXB0aW9uc0ZpbGVcbiIgdW5sZXNzICFkZWZpbmVkICRleGNlcHRpb25zRmlsZTsKQEAg
LTg0LDI0ICs4NywxMiBAQCBpZiAoQEFSR1YgPCAxKSB7CiAgICAgfQogfQogCi1teSAkc2F3RXJy
b3IgPSAwOwotCi1teSAkbG9jYWxpemVkQ291bnQgPSAwOwotbXkgJGtleUNvbGxpc2lvbkNvdW50
ID0gMDsKIG15ICRub3RMb2NhbGl6ZWRDb3VudCA9IDA7CiBteSAkTlNMb2NhbGl6ZUNvdW50ID0g
MDsKIAogbXkgJWV4Y2VwdGlvbjsKIG15ICV1c2VkRXhjZXB0aW9uOwogCi1zdWIgZW1pdFdhcm5p
bmcoJCQkKQotewotICAgIG15ICgkZmlsZSwgJGxpbmUsICRtZXNzYWdlKSA9IEBfOwotICAgIG15
ICRwcmVmaXggPSAkdHJlYXRXYXJuaW5nc0FzRXJyb3JzID8gIiIgOiAid2FybmluZzogIjsKLSAg
ICBwcmludCAiJGZpbGU6JGxpbmU6ICRwcmVmaXgkbWVzc2FnZVxuIjsKLSAgICAkc2F3RXJyb3Ig
PSAxIGlmICR0cmVhdFdhcm5pbmdzQXNFcnJvcnM7Ci19Ci0KIGlmIChkZWZpbmVkICRleGNlcHRp
b25zRmlsZSAmJiBvcGVuIEVYQ0VQVElPTlMsICRleGNlcHRpb25zRmlsZSkgewogICAgIHdoaWxl
ICg8RVhDRVBUSU9OUz4pIHsKICAgICAgICAgY2hvbXA7CkBAIC0xNjUsOCArMTU2LDcgQEAgZm9y
IG15ICRmaWxlIChzb3J0IEBmaWxlcykgewogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
JHRva2VuIGVxICJcIiIpIHsKICAgICAgICAgICAgICAgICBpZiAoJGV4cGVjdGVkIGFuZCAkZXhw
ZWN0ZWQgbmUgImEgcXVvdGVkIHN0cmluZyIpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQg
IiRmaWxlOiQuOiBmb3VuZCBhIHF1b3RlZCBzdHJpbmcgYnV0IGV4cGVjdGVkICRleHBlY3RlZFxu
IjsKLSAgICAgICAgICAgICAgICAgICAgJHNhd0Vycm9yID0gMTsKKyAgICAgICAgICAgICAgICAg
ICAgZW1pdEVycm9yKCRmaWxlLCAkLiwgImZvdW5kIGEgcXVvdGVkIHN0cmluZyBidXQgZXhwZWN0
ZWQgJGV4cGVjdGVkIik7CiAgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIiOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAocy1eKChbXlxcJHRva2VuXXxcXC4p
Kj8pJHRva2VuLS0pIHsKQEAgLTE3Nyw4ICsxNjcsNyBAQCBmb3IgbXkgJGZpbGUgKHNvcnQgQGZp
bGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAkc3RyaW5nIC49ICQxOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgcHJpbnQgIiRmaWxlOiQuOiBtaXNtYXRjaGVkIHF1b3Rlc1xuIjsKLSAgICAgICAgICAgICAg
ICAgICAgJHNhd0Vycm9yID0gMTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKCRmaWxl
LCAkLiwgIm1pc21hdGNoZWQgcXVvdGVzIik7CiAgICAgICAgICAgICAgICAgICAgICRfID0gIiI7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG5leHQ7CkBAIC0yMjcsOSArMjE2
LDggQEAgaGFuZGxlU3RyaW5nOgogICAgICAgICAgICAgJHByZXZpb3VzVG9rZW4gPSAkdG9rZW47
CiAKICAgICAgICAgICAgIGlmICgkdG9rZW4gPX4gL15OU0xvY2FsaXplZC8gJiYgJHRva2VuICF+
IC9OU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5LyAmJiAkdG9rZW4gIX4gL05TTG9jYWxpemVkU3Ry
aW5nRnJvbVRhYmxlSW5CdW5kbGUvICYmICR0b2tlbiAhfiAvTlNMb2NhbGl6ZWRGaWxlU2l6ZURl
c2NyaXB0aW9uLyAmJiAkdG9rZW4gIX4gL05TTG9jYWxpemVkRGVzY3JpcHRpb25LZXkvICYmICR0
b2tlbiAhfiAvTlNMb2NhbGl6ZWRSZWNvdmVyeVN1Z2dlc3Rpb25FcnJvcktleS8pIHsKLSAgICAg
ICAgICAgICAgICBwcmludCAiJGZpbGU6JC46IGZvdW5kIGEgdXNlIG9mIGFuIE5TTG9jYWxpemVk
IG1hY3JvICgkdG9rZW4pOyBub3Qgc3VwcG9ydGVkXG4iOworICAgICAgICAgICAgICAgIGVtaXRF
cnJvcigkZmlsZSwgJC4sICJmb3VuZCBhIHVzZSBvZiBhbiBOU0xvY2FsaXplZCBtYWNybyAoJHRv
a2VuKTsgbm90IHN1cHBvcnRlZCIpOwogICAgICAgICAgICAgICAgICRuZXN0aW5nTGV2ZWwgPSAw
IGlmICFkZWZpbmVkICRuZXN0aW5nTGV2ZWw7Ci0gICAgICAgICAgICAgICAgJHNhd0Vycm9yID0g
MTsKICAgICAgICAgICAgICAgICAkTlNMb2NhbGl6ZUNvdW50Kys7CiAgICAgICAgICAgICB9IGVs
c2lmICgkdG9rZW4gZXEgIi8qIikgewogICAgICAgICAgICAgICAgIGlmICghcy1eLio/XCovLS0p
IHsKQEAgLTI0MCwxNCArMjI4LDEyIEBAIGhhbmRsZVN0cmluZzoKICAgICAgICAgICAgICAgICAk
XyA9ICIiOyAjIERpc2NhcmQgdGhlIHJlc3Qgb2YgdGhlIGxpbmUKICAgICAgICAgICAgIH0gZWxz
aWYgKCR0b2tlbiBlcSAiJyIpIHsKICAgICAgICAgICAgICAgICBpZiAoIXMtKFteXFxdfFxcLikn
LS0pIHsgIycgPC0tIHRoYXQgc2luZ2xlIHF1b3RlIG1ha2VzIHRoZSBQcm9qZWN0IEJ1aWxkZXIg
ZWRpdG9yIGxlc3MgY29uZnVzZWQKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiRmaWxlOiQu
OiBtaXNtYXRjaGVkIHNpbmdsZSBxdW90ZVxuIjsKLSAgICAgICAgICAgICAgICAgICAgJHNhd0Vy
cm9yID0gMTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEVycm9yKCRmaWxlLCAkLiwgIm1pc21h
dGNoZWQgc2luZ2xlIHF1b3RlIik7CiAgICAgICAgICAgICAgICAgICAgICRfID0gIiI7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAo
JGV4cGVjdGVkIGFuZCAkZXhwZWN0ZWQgbmUgJHRva2VuKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHByaW50ICIkZmlsZTokLjogZm91bmQgJHRva2VuIGJ1dCBleHBlY3RlZCAkZXhwZWN0ZWRcbiI7
Ci0gICAgICAgICAgICAgICAgICAgICRzYXdFcnJvciA9IDE7CisgICAgICAgICAgICAgICAgICAg
IGVtaXRFcnJvcigkZmlsZSwgJC4sICJmb3VuZCAkdG9rZW4gYnV0IGV4cGVjdGVkICRleHBlY3Rl
ZCIpOwogICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAiIjsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbiA9fiAvKFdFQl8pP1VJX1NUUklORyhfS0VZ
KT8oX0lOVEVSTkFMKT8kLykgewpAQCAtMjY5LDcgKzI1NSw2IEBAIGhhbmRsZVN0cmluZzoKICAg
ICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZVVJU3RyaW5nKCRVSVN0cmluZywgJGtleSwgJGNv
bW1lbnQsICRmaWxlLCAkbWFjcm9MaW5lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICRtYWNy
byA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiI7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAkbG9jYWxpemVkQ291bnQrKzsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRpc0RlYnVnTWFjcm97JHRva2VufSkgewogICAg
ICAgICAgICAgICAgICAgICAkbmVzdGluZ0xldmVsID0gMCBpZiAhZGVmaW5lZCAkbmVzdGluZ0xl
dmVsOwpAQCAtMjgyLDk4ICsyNjcsMTMgQEAgaGFuZGxlU3RyaW5nOgogICAgIGdvdG8gaGFuZGxl
U3RyaW5nIGlmIGRlZmluZWQgJHN0cmluZzsKICAgICAKICAgICBpZiAoJGV4cGVjdGVkKSB7Ci0g
ICAgICAgIHByaW50ICIkZmlsZTogcmVhY2hlZCBlbmQgb2YgZmlsZSBidXQgZXhwZWN0ZWQgJGV4
cGVjdGVkXG4iOwotICAgICAgICAkc2F3RXJyb3IgPSAxOworICAgICAgICBlbWl0RXJyb3IoJGZp
bGUsIDAsICJyZWFjaGVkIGVuZCBvZiBmaWxlIGJ1dCBleHBlY3RlZCAkZXhwZWN0ZWQiKTsKICAg
ICB9CiAgICAgCiAgICAgY2xvc2UgU09VUkNFOwogfQogCi0jIFVuZXNjYXBlcyBDIGxhbmd1YWdl
IGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZXMuCi1zdWIgVW5lc2NhcGVIZXhTZXF1ZW5jZSgk
KQotewotICAgIG15ICgkb3JpZ2luYWxTdHIpID0gQF87Ci0KLSAgICBteSAkZXNjYXBlZFN0ciA9
ICRvcmlnaW5hbFN0cjsKLSAgICBteSAkdW5lc2NhcGVkU3RyID0gIiI7Ci0KLSAgICBmb3IgKDs7
KSB7Ci0gICAgICAgIGlmICgkZXNjYXBlZFN0ciA9fiBzLV5cXHgoW1s6eGRpZ2l0Ol1dKyktLSkg
ewotICAgICAgICAgICAgaWYgKDI1NiA8PSBoZXgoJDEpKSB7Ci0gICAgICAgICAgICAgICAgcHJp
bnQgIkhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZSBvdXQgb2YgcmFuZ2U6IFxceCQxXG4iOwot
ICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICR1bmVzY2FwZWRTdHIgLj0gcGFjaygiSCoiLCAkMSk7Ci0gICAgICAgIH0gZWxzaWYgKCRlc2Nh
cGVkU3RyID1+IHMtXiguKS0tKSB7Ci0gICAgICAgICAgICAkdW5lc2NhcGVkU3RyIC49ICQxOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuICR1bmVzY2FwZWRTdHI7Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLW15ICVzdHJpbmdCeUtleTsKLW15ICVjb21tZW50QnlLZXk7Ci1t
eSAlZmlsZUJ5S2V5OwotbXkgJWxpbmVCeUtleTsKLQotc3ViIEhhbmRsZVVJU3RyaW5nCi17Ci0g
ICAgbXkgKCRzdHJpbmcsICRrZXksICRjb21tZW50LCAkZmlsZSwgJGxpbmUpID0gQF87Ci0KLSAg
ICBteSAkYmFkID0gMDsKLSAgICAkc3RyaW5nID0gVW5lc2NhcGVIZXhTZXF1ZW5jZSgkc3RyaW5n
KTsKLSAgICBpZiAoIWRlZmluZWQoJHN0cmluZykpIHsKLSAgICAgICAgcHJpbnQgIiRmaWxlOiRs
aW5lOiBzdHJpbmcgaGFzIGFuIGlsbGVnYWwgaGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlXG4i
OwotICAgICAgICAkYmFkID0gMTsKLSAgICB9Ci0gICAgJGtleSA9IFVuZXNjYXBlSGV4U2VxdWVu
Y2UoJGtleSk7Ci0gICAgaWYgKCFkZWZpbmVkKCRrZXkpKSB7Ci0gICAgICAgIHByaW50ICIkZmls
ZTokbGluZToga2V5IGhhcyBhbiBpbGxlZ2FsIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVxu
IjsKLSAgICAgICAgJGJhZCA9IDE7Ci0gICAgfQotICAgICRjb21tZW50ID0gVW5lc2NhcGVIZXhT
ZXF1ZW5jZSgkY29tbWVudCk7Ci0gICAgaWYgKCFkZWZpbmVkKCRjb21tZW50KSkgewotICAgICAg
ICBwcmludCAiJGZpbGU6JGxpbmU6IGNvbW1lbnQgaGFzIGFuIGlsbGVnYWwgaGV4YWRlY2ltYWwg
ZXNjYXBlIHNlcXVlbmNlXG4iOwotICAgICAgICAkYmFkID0gMTsKLSAgICB9Ci0gICAgaWYgKGdy
ZXAgeyAkXyA9PSAweEZGRkQgfSB1bnBhY2sgIlUqIiwgJHN0cmluZykgewotICAgICAgICBwcmlu
dCAiJGZpbGU6JGxpbmU6IHN0cmluZyBmb3IgdHJhbnNsYXRpb24gaGFzIGlsbGVnYWwgVVRGLTgg
LS0gbW9zdCBsaWtlbHkgYSBwcm9ibGVtIHdpdGggdGhlIFRleHQgRW5jb2Rpbmcgb2YgdGhlIHNv
dXJjZSBmaWxlXG4iOwotICAgICAgICAkYmFkID0gMTsKLSAgICB9Ci0gICAgaWYgKCRzdHJpbmcg
bmUgJGtleSAmJiBncmVwIHsgJF8gPT0gMHhGRkZEIH0gdW5wYWNrICJVKiIsICRrZXkpIHsKLSAg
ICAgICAgcHJpbnQgIiRmaWxlOiRsaW5lOiBrZXkgaGFzIGlsbGVnYWwgVVRGLTggLS0gbW9zdCBs
aWtlbHkgYSBwcm9ibGVtIHdpdGggdGhlIFRleHQgRW5jb2Rpbmcgb2YgdGhlIHNvdXJjZSBmaWxl
XG4iOwotICAgICAgICAkYmFkID0gMTsKLSAgICB9Ci0gICAgaWYgKGdyZXAgeyAkXyA9PSAweEZG
RkQgfSB1bnBhY2sgIlUqIiwgJGNvbW1lbnQpIHsKLSAgICAgICAgcHJpbnQgIiRmaWxlOiRsaW5l
OiBjb21tZW50IGZvciB0cmFuc2xhdGlvbiBoYXMgaWxsZWdhbCBVVEYtOCAtLSBtb3N0IGxpa2Vs
eSBhIHByb2JsZW0gd2l0aCB0aGUgVGV4dCBFbmNvZGluZyBvZiB0aGUgc291cmNlIGZpbGVcbiI7
Ci0gICAgICAgICRiYWQgPSAxOwotICAgIH0KLSAgICBpZiAoJGJhZCkgewotICAgICAgICAkc2F3
RXJyb3IgPSAxOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmICgkc3RyaW5n
QnlLZXl7JGtleX0gJiYgJHN0cmluZ0J5S2V5eyRrZXl9IG5lICRzdHJpbmcpIHsKLSAgICAgICAg
ZW1pdFdhcm5pbmcoJGZpbGUsICRsaW5lLCAiZW5jb3VudGVyZWQgdGhlIHNhbWUga2V5LCBcIiRr
ZXlcIiwgdHdpY2UsIHdpdGggZGlmZmVyZW50IHN0cmluZ3MiKTsKLSAgICAgICAgZW1pdFdhcm5p
bmcoJGZpbGVCeUtleXska2V5fSwgJGxpbmVCeUtleXska2V5fSwgInByZXZpb3VzIG9jY3VycmVu
Y2UiKTsKLSAgICAgICAgJGtleUNvbGxpc2lvbkNvdW50Kys7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgaWYgKCRjb21tZW50QnlLZXl7JGtleX0gJiYgJGNvbW1lbnRCeUtleXska2V5fSBu
ZSAkY29tbWVudCkgewotICAgICAgICBlbWl0V2FybmluZygkZmlsZSwgJGxpbmUsICJlbmNvdW50
ZXJlZCB0aGUgc2FtZSBrZXksIFwiJGtleVwiLCB0d2ljZSwgd2l0aCBkaWZmZXJlbnQgY29tbWVu
dHMiKTsKLSAgICAgICAgZW1pdFdhcm5pbmcoJGZpbGVCeUtleXska2V5fSwgJGxpbmVCeUtleXsk
a2V5fSwgInByZXZpb3VzIG9jY3VycmVuY2UiKTsKLSAgICAgICAgJGtleUNvbGxpc2lvbkNvdW50
Kys7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAkZmlsZUJ5S2V5eyRrZXl9ID0gJGZp
bGU7Ci0gICAgJGxpbmVCeUtleXska2V5fSA9ICRsaW5lOwotICAgICRzdHJpbmdCeUtleXska2V5
fSA9ICRzdHJpbmc7Ci0gICAgJGNvbW1lbnRCeUtleXska2V5fSA9ICRjb21tZW50OwotfQotCi1w
cmludCAiXG4iIGlmICRzYXdFcnJvciB8fCAkbm90TG9jYWxpemVkQ291bnQgfHwgJE5TTG9jYWxp
emVDb3VudDsKK3ByaW50ICJcbiIgaWYgc2F3RXJyb3IoKSB8fCAkbm90TG9jYWxpemVkQ291bnQg
fHwgJE5TTG9jYWxpemVDb3VudDsKIAogbXkgQHVudXNlZEV4Y2VwdGlvbnMgPSBzb3J0IGdyZXAg
eyAhJHVzZWRFeGNlcHRpb257JF99IH0ga2V5cyAlZXhjZXB0aW9uOwogaWYgKEB1bnVzZWRFeGNl
cHRpb25zKSB7CkBAIC0zODMsMzAgKzI4MywyMSBAQCBpZiAoQHVudXNlZEV4Y2VwdGlvbnMpIHsK
ICAgICBwcmludCAiXG4iOwogfQogCi1wcmludCAiJGxvY2FsaXplZENvdW50IGxvY2FsaXphYmxl
IHN0cmluZ3NcbiIgaWYgJGxvY2FsaXplZENvdW50OwotcHJpbnQgIiRrZXlDb2xsaXNpb25Db3Vu
dCBrZXkgY29sbGlzaW9uc1xuIiBpZiAka2V5Q29sbGlzaW9uQ291bnQ7CitwcmludCBsb2NhbGl6
ZWRDb3VudCgpIC4gIiBsb2NhbGl6YWJsZSBzdHJpbmdzXG4iIGlmIGxvY2FsaXplZENvdW50KCk7
CitwcmludCBrZXlDb2xsaXNpb25Db3VudCgpIC4gIiBrZXkgY29sbGlzaW9uc1xuIiBpZiBrZXlD
b2xsaXNpb25Db3VudCgpOwogcHJpbnQgIiRub3RMb2NhbGl6ZWRDb3VudCBzdHJpbmdzIG5vdCBt
YXJrZWQgZm9yIGxvY2FsaXphdGlvblxuIiBpZiAkbm90TG9jYWxpemVkQ291bnQ7CiBwcmludCAi
JE5TTG9jYWxpemVDb3VudCB1c2VzIG9mIE5TTG9jYWxpemVcbiIgaWYgJE5TTG9jYWxpemVDb3Vu
dDsKIHByaW50IHNjYWxhcihAdW51c2VkRXhjZXB0aW9ucyksICIgdW51c2VkIGV4Y2VwdGlvbnNc
biIgaWYgQHVudXNlZEV4Y2VwdGlvbnM7CiAKLWlmICgkc2F3RXJyb3IpIHsKK2lmIChzYXdFcnJv
cigpKSB7CiAgICAgcHJpbnQgIlxuRXJyb3JzIGVuY291bnRlcmVkLiBFeGl0aW5nIHdpdGhvdXQg
d3JpdGluZyB0byAkZmlsZVRvVXBkYXRlLlxuIjsKICAgICBleGl0IDE7CiB9CiAKLW15ICRsb2Nh
bGl6ZWRTdHJpbmdzID0gIiI7Ci0KLWZvciBteSAka2V5IChzb3J0IGtleXMgJWNvbW1lbnRCeUtl
eSkgewotICAgICRsb2NhbGl6ZWRTdHJpbmdzIC49ICIvKiAkY29tbWVudEJ5S2V5eyRrZXl9ICov
XG5cIiRrZXlcIiA9IFwiJHN0cmluZ0J5S2V5eyRrZXl9XCI7XG5cbiI7Ci19Ci0KIGlmICgtZSAi
JGZpbGVUb1VwZGF0ZSIpIHsKICAgICBpZiAoISR2ZXJpZnkpIHsKLSAgICAgICAgIyBXcml0ZSBv
dXQgdGhlIHN0cmluZ3MgZmlsZSBhcyBVVEYtOAogICAgICAgICBteSAkdGVtcG9yYXJ5RmlsZSA9
ICIkZmlsZVRvVXBkYXRlLnVwZGF0ZWQiOwotICAgICAgICBvcGVuIFNUUklOR1MsICI+IiwgJHRl
bXBvcmFyeUZpbGUgb3IgZGllOwotICAgICAgICBwcmludCBTVFJJTkdTICRsb2NhbGl6ZWRTdHJp
bmdzOwotICAgICAgICBjbG9zZSBTVFJJTkdTOworICAgICAgICB3cml0ZVN0cmluZ3NGaWxlKCR0
ZW1wb3JhcnlGaWxlKTsKIAogICAgICAgICAjIEF2b2lkIHVwZGF0aW5nIHRoZSB0YXJnZXQgZmls
ZSdzIG1vZGlmaWNhdGlvbiB0aW1lIGlmIHRoZSBjb250ZW50cyBoYXZlIG5vdCBjaGFuZ2VkLgog
ICAgICAgICBpZiAoY29tcGFyZSgkdGVtcG9yYXJ5RmlsZSwgJGZpbGVUb1VwZGF0ZSkpIHsKQEAg
LTQxNSw1MSArMzA2LDcgQEAgaWYgKC1lICIkZmlsZVRvVXBkYXRlIikgewogICAgICAgICAgICAg
dW5saW5rICR0ZW1wb3JhcnlGaWxlOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
b3BlbiBTVFJJTkdTLCAkZmlsZVRvVXBkYXRlIG9yIGRpZTsKLQotICAgICAgICBteSAkbGFzdENv
bW1lbnQ7Ci0gICAgICAgIG15ICRsaW5lOwotCi0gICAgICAgIHdoaWxlICg8U1RSSU5HUz4pIHsK
LSAgICAgICAgICAgIGNob21wOwotCi0gICAgICAgICAgICBuZXh0IGlmICgvXlxzKiQvKTsKLQot
ICAgICAgICAgICAgaWYgKC9eXC9cKiAoLiopIFwqXC8kLykgewotICAgICAgICAgICAgICAgICRs
YXN0Q29tbWVudCA9ICQxOwotICAgICAgICAgICAgfSBlbHNpZiAoL14iKCg/OlteXFxdfFxcW14i
XSkqKSJccyo9XHMqIigoPzpbXlxcXXxcXFteIl0pKikiOyQvKSAjCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgbXkgJHN0cmluZyA9IGRlbGV0ZSAkc3RyaW5nQnlLZXl7JDF9OwotICAg
ICAgICAgICAgICAgIGlmICghZGVmaW5lZCAkc3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHByaW50ICIkZmlsZVRvVXBkYXRlOiQuOiB1bnVzZWQga2V5IFwiJDFcIlxuIjsKLSAgICAgICAg
ICAgICAgICAgICAgJHNhd0Vycm9yID0gMTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoISgkc3RyaW5nIGVxICQyKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcHJpbnQgIiRmaWxlVG9VcGRhdGU6JC46IHVuZXhwZWN0ZWQgdmFsdWUgXCIkMlwi
IGZvciBrZXkgXCIkMVwiXG4iOwotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiRmaWxl
QnlLZXl7JDF9OiRsaW5lQnlLZXl7JDF9OiBleHBlY3RlZCB2YWx1ZSBcIiRzdHJpbmdcIiBkZWZp
bmVkIGhlcmVcbiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkc2F3RXJyb3IgPSAxOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICghKCRsYXN0Q29tbWVu
dCBlcSAkY29tbWVudEJ5S2V5eyQxfSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50
ICIkZmlsZVRvVXBkYXRlOiQuOiB1bmV4cGVjdGVkIGNvbW1lbnQgLyogJGxhc3RDb21tZW50ICov
IGZvciBrZXkgXCIkMVwiXG4iOwotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiRmaWxl
QnlLZXl7JDF9OiRsaW5lQnlLZXl7JDF9OiBleHBlY3RlZCBjb21tZW50IC8qICRjb21tZW50QnlL
ZXl7JDF9ICovIGRlZmluZWQgaGVyZVxuIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICRzYXdF
cnJvciA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByaW50ICIkZmlsZVRvVXBkYXRlOiQu
OiBsaW5lIHdpdGggdW5leHBlY3RlZCBmb3JtYXQ6ICRfXG4iOwotICAgICAgICAgICAgICAgICRz
YXdFcnJvciA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgbXkg
JG1pc3NpbmcgKGtleXMgJXN0cmluZ0J5S2V5KSB7Ci0gICAgICAgICAgICBwcmludCAiJGZpbGVC
eUtleXskbWlzc2luZ306JGxpbmVCeUtleXskbWlzc2luZ306IG1pc3Npbmcga2V5IFwiJG1pc3Np
bmdcIlxuIjsKLSAgICAgICAgICAgICRzYXdFcnJvciA9IDE7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoJHNhd0Vycm9yKSB7Ci0gICAgICAgICAgICBwcmludCAiXG4kZmlsZVRvVXBkYXRlOjA6
IGZpbGUgaXMgbm90IHVwIHRvIGRhdGUuXG4iOwotICAgICAgICAgICAgZXhpdCAxOwotICAgICAg
ICB9CisgICAgICAgIHZlcmlmeVN0cmluZ3NGaWxlKCRmaWxlVG9VcGRhdGUpOwogICAgIH0KIH0g
ZWxzZSB7CiAgICAgcHJpbnQgImVycm9yOiAkZmlsZVRvVXBkYXRlIGRvZXMgbm90IGV4aXN0XG4i
OwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTgwNjUyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzc2LDYgKzEzNzYsNyBA
QAogCQkzN0MyMzgyMjEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyQ29y
ZVRleHQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
N0MyMzgyMDEwOThDODQyMDBFRjlGNzIgLyogQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQu
bW0gKi87IH07CiAJCTM3QzI4QTY4MTBGNjU5Q0MwMDhDNzgxMyAvKiBUeXBlc2V0dGluZ0ZlYXR1
cmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0My
OEE2NzEwRjY1OUNDMDA4Qzc4MTMgLyogVHlwZXNldHRpbmdGZWF0dXJlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3QzYxRjAxMTIwOTVDODcw
MDdBM0M2NyAvKiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0M2MUYwMDEyMDk1Qzg3MDA3QTNDNjcgLyog
QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oICovOyB9OworCQkzN0Q0NTZGRDFBOUE1MEQ4MDAz
MzMwQTEgLyogTG9jYWxpemFibGVTdHJpbmdzLnBtIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0Q0NTZGQjFBOUE1MEI2MDAzMzMwQTEgLyogTG9j
YWxpemFibGVTdHJpbmdzLnBtICovOyB9OwogCQkzN0REQ0Q5NDEzODQ0RkQ1MDAwOEI3OTMgLyog
TUlNRUhlYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3OTMgLyogTUlNRUhlYWRlci5jcHAgKi87IH07CiAJ
CTM3RERDRDk1MTM4NDRGRDUwMDA4Qjc5MyAvKiBNSU1FSGVhZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0REQ0Q5MzEzODQ0RkQ1MDAwOEI3OTMg
LyogTUlNRUhlYWRlci5oICovOyB9OwogCQkzN0REQ0Q5RTEzODQ0RkZBMDAwOEI3OTMgLyogQXJj
aGl2ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
N0REQ0Q5RDEzODQ0RkZBMDAwOEI3OTMgLyogQXJjaGl2ZS5jcHAgKi87IH07CkBAIC02OTM2LDYg
KzY5MzcsNyBAQAogCQkJZHN0UGF0aCA9IFByaXZhdGVIZWFkZXJzL1NjcmlwdHM7CiAJCQlkc3RT
dWJmb2xkZXJTcGVjID0gMTsKIAkJCWZpbGVzID0gKAorCQkJCTM3RDQ1NkZEMUE5QTUwRDgwMDMz
MzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3MucG0gaW4gQ29weSBTY3JpcHRzICovLAogCQkJCTM3
MTdEN0U4MTdFQ0M1OTEwMDNDMjc2RCAvKiBleHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwg
aW4gQ29weSBTY3JpcHRzICovLAogCQkJKTsKIAkJCW5hbWUgPSAiQ29weSBTY3JpcHRzIjsKQEAg
LTg0NDYsNiArODQ0OCw3IEBACiAJCTM3QzIzODIwMTA5OEM4NDIwMEVGOUY3MiAvKiBDb21wbGV4
VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IENvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5n
Lm9iamNwcDsgfTsKIAkJMzdDMjhBNjcxMEY2NTlDQzAwOEM3ODEzIC8qIFR5cGVzZXR0aW5nRmVh
dHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZXNldHRpbmdGZWF0
dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0M2MUYwMDEyMDk1Qzg3MDA3
QTNDNjcgLyogQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTM3RDQ1NkZCMUE5QTUwQjYwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0
cmluZ3MucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5wZXJsOyBwYXRoID0gTG9jYWxpemFibGVTdHJpbmdzLnBtOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3OTMgLyogTUlNRUhl
YWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNSU1FSGVhZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdERENEOTMxMzg0NEZENTAwMDhC
NzkzIC8qIE1JTUVIZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTUlN
RUhlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0REQ0Q5RDEzODQ0RkZB
MDAwOEI3OTMgLyogQXJjaGl2ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBcmNoaXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NTc3LDYg
KzE1NTgwLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMzcx
N0Q3RTUxN0VDQzNBNjAwM0MyNzZEIC8qIGV4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbCAq
LywKKwkJCQkzN0Q0NTZGQjFBOUE1MEI2MDAzMzMwQTEgLyogTG9jYWxpemFibGVTdHJpbmdzLnBt
ICovLAogCQkJKTsKIAkJCW5hbWUgPSBTY3JpcHRzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>