39 lines
295 KiB
JSON
39 lines
295 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"channel": "homelab-runtime",
|
|
"command_id": "SUPPORT-261005-SNIKKET-VM150-BACKUP-PIPELINE-RCA-99593R1",
|
|
"status": "OK",
|
|
"rc": 0,
|
|
"host": "pve01",
|
|
"mode": "read-only",
|
|
"component": "snikket-vm150-backup-pipeline-rca",
|
|
"started_at_utc": "2026-10-05T09:01:30Z",
|
|
"finished_at_utc": "2026-10-05T09:01:36Z",
|
|
"reference_register_checked": true,
|
|
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
|
|
"error_register_checked": true,
|
|
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
|
|
"command_sha256": "fa63ff895da7ac1a4849b7dfe5ef876de998332951253b342bd18a20683391ab",
|
|
"duplicate_failed_command_blocked": false,
|
|
"block_reason": null,
|
|
"execution_started": true,
|
|
"change_declared": false,
|
|
"result_contract_valid": true,
|
|
"result_contract_status": null,
|
|
"result_contract_error": null,
|
|
"command_rc": 0,
|
|
"changes_made": false,
|
|
"rollback_started": false,
|
|
"rollback_restored": null,
|
|
"mutation_outcome": "NO_MUTATION",
|
|
"sanitized": true,
|
|
"secrets_included": false,
|
|
"private_addresses_included": false,
|
|
"raw_evidence_retained_locally": true,
|
|
"raw_evidence_sha256": "dd3644f0d18f852c97cab7c2519a22789989cbe57ec7b30661b53cacb78363ac",
|
|
"sanitized_output_sha256": "bb1a4159fb966baac410cfc19986b6c53a847a83e0d9e74a555313dbe760148c",
|
|
"output_truncated_in_json": true,
|
|
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
|
|
"output": "SNIKKET_VM150_BACKUP_PIPELINE_RCA=V1\nMODE=read-only\nNO_VM_MUTATION=true\nNO_BACKUP_EXECUTION=true\nNO_REMOTE_MUTATION=true\nNO_STATE_MUTATION=true\nNO_SOURCE_MUTATION=true\nNO_DNS_MUTATION=true\nHOST_PVE01=true\nINGRESS_HOSTKEY_SELF_BOUND=true\nVM150_RUNNING=true\nVM150_QGA=true\nHOMELAB_BACKUP_V2_SERVICE_PRESENT=true\nHOMELAB_BACKUP_V2_SERVICE_CAT_SHA256=6f88c0f9382c6f7ab8cc58211d06858059d915a72eb8be4e28d7bef78c9eae4d\nHOMELAB_BACKUP_V2_SERVICE_ACTIVE=inactive\nHOMELAB_BACKUP_V2_SERVICE_ENABLED=static\nHOMELAB_BACKUP_V2_TIMER_PRESENT=true\nHOMELAB_BACKUP_V2_TIMER_CAT_SHA256=11e196a0353983e6ccf0d1c683a7c581cf4eb6ed8afc778324ae9c279ba23c93\nHOMELAB_BACKUP_V2_TIMER_ACTIVE=active\nHOMELAB_BACKUP_V2_TIMER_ENABLED=enabled\nHOMELAB_BACKUP_AUDIT_SERVICE_PRESENT=true\nHOMELAB_BACKUP_AUDIT_SERVICE_CAT_SHA256=d7ca901a0238e10361a07403729e5b4768821af34f18e624032ab8ff1a6e8846\nHOMELAB_BACKUP_AUDIT_SERVICE_ACTIVE=inactive\nHOMELAB_BACKUP_AUDIT_SERVICE_ENABLED=static\nHOMELAB_BACKUP_AUDIT_TIMER_PRESENT=true\nHOMELAB_BACKUP_AUDIT_TIMER_CAT_SHA256=88e5b100a8e480dfb69141caf9776b9d9da274933ee32f464208d0aff7264d63\nHOMELAB_BACKUP_AUDIT_TIMER_ACTIVE=active\nHOMELAB_BACKUP_AUDIT_TIMER_ENABLED=enabled\nBACKUP_V2_UNIT_SHOW_SHA256=93dda19ac5b7e586443dd6505828caef8c62df1cb0b4b3eaf2eb63fa47775fc1\nBACKUP_V2_UNIT_SHOW_B64=RXhlY1N0YXJ0PXsgcGF0aD0vdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi1iYWNrdXAtdjIgOyBhcmd2W109L3Vzci9sb2NhbC9zYmluL2hvbWVsYWItYmFja3VwLXYyIHNjaGVkdWxlZCA7IGlnbm9yZV9lcnJvcnM9bm8gOyBzdGFydF90aW1lPVtNb24gMjAyNi0xMC0wNSAxMTo0MDo1MiBNU0tdIDsgc3RvcF90aW1lPVtNb24gMjAyNi0xMC0wNSAxMTo0ODoyNyBNU0tdIDsgcGlkPTMxNTU5NjUgOyBjb2RlPWV4aXRlZCA7IHN0YXR1cz0wIH0KRW52aXJvbm1lbnQ9\nBACKUP_V2_COMMAND_PRESENT=true\nBACKUP_V2_FILETYPE_SHA256=75e59f7a9c20f8ef3feb350d7a6bae401bae921d9830a4d5907f01e23b038da5\nBACKUP_V2_SIZE_BYTES=1656\nBACKUP_V2_SHA256=894f8ea346b53a3d7846dbd6eeb5b89333957eb6d7a4f2f64fd4557cae176e1c\nBKV2_TEXT_BYTES=1656\nBKV2_SHEBANG=#!/usr/bin/python3\nBKV2_SCHEDULE_TARGET_COUNT=0\nBKV2_QEMU_EXECUTION_DIAG_COUNT=0\nBKV2_SELFTEST_COUNT=0\nBKV2_VZDUMP_COUNT=0\nBKV2_RCLONE_COUNT=0\nBKV2_CLOUD_COUNT=0\nBKV2_SEAL_COUNT=0\nBKV2_TRANSPORT_COUNT=0\nBKV2_RESTORE_COUNT=0\nBKV2_PYTHON_COUNT=1\nBKV2_EXEC_COUNT=0\nBKV2_USR_LOCAL_COUNT=0\nBKV2_OPT_PATH_COUNT=1\nBKV2_RELEVANT_LINE_COUNT=5\nBKV2_RELEVANT_B64=MTojIS91c3IvYmluL3B5dGhvbjMKMjpmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFubm90YXRpb25zCjM6aW1wb3J0IGhhc2hsaWIsIGltcG9ydGxpYiwgb3MsIHBhdGhsaWIsIHN0YXQsIHN5cwo1OkVYUEVDVEVEPXsnZnJlc2hfbHhjX2hlbHBlci5weSc6ICc0ZTM5NDA0YjFkZGI5NzM5MjY0NWFkY2U2MjgwZjY5NzE4MmNjYTAzNzE0ZDNhNDYyZDM2M2VlYmNlOWIxODYwJywgJ3Byb2R1Y2VyX2V4ZWNfaGVscGVyLnB5JzogJ2IzYjk3MDk5YmNkNzEyNjY3MGY4NjZlODFmYWFlNmE0MmE5NmQ4NjlkOTk4OWU2YTY3ZjZlYTZjODcxYzkwYjMnLCAnbHhjX2FkYXB0ZXIucHknOiAnM2ZhN2QxOTQwMTBkNzZmN2M4YmM5NTAzNWFlODg3NjI2MmU5MzM3OTAzZTMxMGY0NWY0NWRmODhjMjY2ZGM4ZCcsICdxZW11X2FkYXB0ZXIucHknOiAnMTkwNmRiNDJiZDM0YmJlODVlYjQ2ZmQ5Nzk3YjM1NzJkNDZlMGE0MWMyOWQxYzI5YmU1ZjlkZjVlNDQ4ZjE1YicsICdzY2hlZHVsZXJfYWRhcHRlci5weSc6ICdhNmY2NzE1OWE2NDA2Nzc3MzMyM2YwMjgxMjZlMzEwOWUxNWNmMTdhODE0MmNlYTVlNjEyOTk3MGYxZDRkYTk2JywgJ2VudHJ5NTA0LnB5JzogJ2NhNjg3NmZhOWMzYjE0NjViMDQ1MzQ0YThhZDQ2OTYyZGUxNjk3MmM3ZGFkYzRhYzYyNTdjN2QyMjUwNDc3OTMnfQoyNDogZT1pbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnZW50cnk1MDQnKQ==\nBKV2_ABS_PATH_COUNT=1\nBKV2_PATH_1_BASENAME=backup-v2-overlay-505r1-4e39404b1ddb\nBKV2_PATH_1_SHA256=50a47e615a0781a486100f5d6723e32a263337608d003f678b4b582f74434cee\nPIPELINE_HELPER_CANDIDATE_COUNT=149\nPIPE_1_SCORE=5\nPIPE_1_BASENAME=homelab-backup-audit\nPIPE_1_PATH_SHA256=92769ab05a0e3e5bd466bc9d92157c75162ede4803289c63689289f751eebbef\nPIPE_1_FILE_SHA256=1c2cd8a00859492c010ed35baf5eb67f4278544809de8c2563421a6f3e356ed3\nPIPE_1_SCHEDULE_TARGET_COUNT=0\nPIPE_1_QEMU_EXECUTION_DIAG_COUNT=0\nPIPE_1_SELFTEST_REPLACEMENT486_COUNT=0\nPIPE_1_VZDUMP_QEMU_COUNT=0\nPIPE_1_RCLONE_COUNT=5\nPIPE_1_CLOUD_QUORUM_COUNT=2\nPIPE_1_SEAL_WRITTEN_COUNT=2\nPIPE_1_PAYLOAD_PARTS_COUNT=1\nPIPE_1_TRANSPORT_COUNT=1\nPIPE_1_RESTORE_VALIDATION_COUNT=0\nPIPE_1_SCHEDULE_RESULT_COUNT=0\nPIPE_1_RELEVANT_LINE_COUNT=114\nPIPE_1_RELEVANT_B64=MzpNT0RFPXN5cy5hcmd2WzFdIGlmIGxlbihzeXMuYXJndik+MSBlbHNlICJhbGwiCjQ6aWYgTU9ERSBub3QgaW4gKCJhbGwiLCJ3cml0ZS1oZWFsdGgiLCJzY2hlZHVsZWQiLCJjb250cmFjdCIpOgo1OiAgICBwcmludCgiQVVESVRfRVJST1I9VVNBR0VfYWxsX3dyaXRlLWhlYWx0aF9zY2hlZHVsZWRfY29udHJhY3QiLGZpbGU9c3lzLnN0ZGVycik7IHN5cy5leGl0KDY0KQo3OiAgICBwcmludCgiQVVESVRfQ09OVFJBQ1Q9djItcGx1cy1zZWFsZWQtcXVvcnVtIikKODogICAgcHJpbnQoIkFVRElUX1NDSEVNQT1ob21lbGFiLWJhY2t1cC1hdWRpdC12MyIpCjExOlJFRz1wYXRobGliLlBhdGgoIi9ldGMvaG9tZWxhYi1iYWNrdXAvdGFyZ2V0cy5qc29uIikKMTI6U1RBVEU9cGF0aGxpYi5QYXRoKCIvdmFyL2xpYi9ob21lbGFiLWJhY2t1cC12Mi9zdGF0ZSIpCjEzOlFST09UPXBhdGhsaWIuUGF0aCgiL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAvY2xvdWQtcXVvcnVtIikKMTQ6Vk1SRVNUPXBhdGhsaWIuUGF0aCgiL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAvdm0tcmVzdG9yZS12YWxpZGF0aW9uIikKMTU6QVBQUkVTVD1wYXRobGliLlBhdGgoIi92YXIvbGliL2hvbWVsYWItYmFja3VwL2FwcC1yZXN0b3JlLXZhbGlkYXRpb24iKQoxNjpSRUdIPSIvdXNyL2xvY2FsL2xpYmV4ZWMvaG9tZWxhYi1iYWNrdXAtdGFyZ2V0LXJlZ2lzdHJ5IgoxNzpBUFBRPSIvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi1hcHAtY2xvdWQtcXVvcnVtLXF1ZXVlIgoxODpHRlNIPSIvdXNyL2xvY2FsL2xpYmV4ZWMvaG9tZWxhYi1iYWNrdXAtZ2ZzLXBvbGljeSIKMTk6R0ZTUD0iL2V0Yy9ob21lbGFiLWJhY2t1cC9nZnMtcmV0ZW50aW9uLmpzb24iCjIwOlJFVD0iL3Vzci9sb2NhbC9zYmluL2hvbWVsYWItYmFja3VwLXJldGVudGlvbi1nYyIKMjI6QlJBTkNIPSJjci0yMDI2LTEwMDUtYmFja3VwLXYyLWhlYWx0aC1hbGVydGluZy1yZW1lZGlhdGlvbiIKMjM6RFJTRUFMPXBhdGhsaWIuUGF0aCgiL3Zhci9saWIvaG9tZWxhYi1hZG1pbi9zZWFscy9zaXRlLWRyLWZpbmFsLWFjY2VwdGFuY2UtdjEuanNvbiIpCjI0OkNMT1VEQl9IRUFMVEg9cGF0aGxpYi5QYXRoKCIvdmFyL2xpYi9za2xhZGNoaWstcmVwb3J0cy1tb25pdG9yLWJhY2t1cC9yZXN0b3JlLWNoZWNrLWhlYWx0aC50eHQiKQoyNTpIRUFMVEhTPVtwYXRobGliLlBhdGgoIi92YXIvbGliL2hvbWVsYWItaGVhbHRoL2JhY2t1cC1hdWRpdC12Mi5qc29uIikscGF0aGxpYi5QYXRoKCIvdmFyL2xpYi9ob21lbGFiLWhlYWx0aC9iYWNrdXAtYXVkaXQuanNvbiIpXQo0MjogICAgZm9yIGsgaW4gKCJzZWFsZWRfZXBvY2giLCJsYXN0X3N1Y2Nlc3NfZXBvY2giLCJ1cGRhdGVkX2Vwb2NoIik6CjQ1OiAgICBmb3IgayBpbiAoInNlYWxlZF9hdF91dGMiLCJ1cGRhdGVkX2F0X3V0YyIsImNvbXBsZXRlZF9hdF91dGMiKToKNTM6ZGVmIGxhdGVzdF9sZWdhY3kobG9naWNhbCxraW5kKToKNjY6ICAgIGdlbj1vYmouZ2V0KCJnZW5lcmF0aW9uIikKNjc6ICAgIHN0cmljdD0ob2JqLmdldCgic3RhdHVzIik9PSJTRUFMRUQiIGFuZCBvYmouZ2V0KCJjbG91ZF9xdW9ydW0iKT09MiBhbmQgb2JqLmdldCgiY2xvdWRfYV92ZXJpZmllZCIpIGlzIFRydWUgYW5kIG9iai5nZXQoImNsb3VkX2JfdmVyaWZpZWQiKSBpcyBUcnVlIGFuZCBvYmouZ2V0KCJwYXJ0X2hhc2hlc192ZXJpZmllZCIpIGlzIFRydWUgYW5kIG9iai5nZXQoInNlYWxfd3JpdHRlbiIpIGlzIFRydWUgYW5kIG9iai5nZXQoImxvY2FsX3BheWxvYWRfcHJlc2VudCIpIGlzIEZhbHNlIGFuZCBvYmouZ2V0KCJsb2NhbF9jbGVhbnVwIik9PSJPSyIpCjcwOiAgICByZXN0b3JlPUZhbHNlCjc0OiAgICAgICAgICAgIHJlc3RvcmU9KHJqLmdldCgicmVzdWx0Iik9PSJPSyIpCjc3OiAgICByZXR1cm4geyJnZW5lcmF0aW9uIjpnZW4sInN0cmljdCI6c3RyaWN0LCJyZXN0b3JlX29rIjpyZXN0b3JlLCJhZ2Vfc2Vjb25kcyI6YWdlLCJzdGF0ZV9maWxlIjpzdHIocCksIm9iaiI6b2JqfQo5NTppc3N1ZXM9W107IHRhcmdldHM9W107IG5vdz1pbnQodGltZS50aW1lKCkpCjExNTogICAgICAgIGZvciB4IGluIGpzb24ubG9hZHMocm91dCk6IHJlc291cmNlc1tzdHIoeC5nZXQoInZtaWQiKSldPXgKMTIzOiAgICBraW5kPXJbImtpbmQiXTsgaWRlbnQ9clsiaWQiXTsgcmVjPXsibG9naWNhbF9pZCI6bGlkLCJraW5kIjpraW5kLCJzdGF0ZSI6IlVOVkVSSUZJRUQifQoxMjg6ICAgICAgICB0cnk6IHYyPWpzb24ubG9hZHMoKFNUQVRFLyhzaWQrIi5qc29uIikpLnJlYWRfdGV4dChlbmNvZGluZz0idXRmLTgiKSkKMTM5OiAgICAgICAgbGVnYWN5PWxhdGVzdF9sZWdhY3kobGlkLCJWTSIpCjE0MDogICAgICAgIGxlZ2FjeV9vaz1ib29sKGxlZ2FjeSBhbmQgbGVnYWN5WyJzdHJpY3QiXSBhbmQgbGVnYWN5WyJyZXN0b3JlX29rIl0gYW5kIGxlZ2FjeVsiYWdlX3NlY29uZHMiXSBpcyBub3QgTm9uZSBhbmQgbGVnYWN5WyJhZ2Vfc2Vjb25kcyJdPHZtX3NsYSkKMTQyOiAgICAgICAgc291cmNlPSgiVjIiIGlmIHYyX29rIGVsc2UgKCJTRUFMRURfUVVPUlVNIiBpZiBsZWdhY3lfb2sgZWxzZSAiTk9ORSIpKQoxNDM6ICAgICAgICByZWMudXBkYXRlKHsic3RhdGUiOiJGUkVTSCIgaWYgZnJlc2ggZWxzZSAiU1RBTEUiLCJzb3VyY2UiOnNvdXJjZSwidjJfYWdlX3NlY29uZHMiOnYyX2FnZSwibGVnYWN5X2FnZV9zZWNvbmRzIjpsZWdhY3lbImFnZV9zZWNvbmRzIl0gaWYgbGVnYWN5IGVsc2UgTm9uZSwicmVwbGljYV9jb3VudCI6cmVwY291bnQsInN0YXRlX2lkIjpzaWQsImdlbmVyYXRpb24iOih2Mi5nZXQoImdlbmVyYXRpb24iKSBpZiB2Ml9vayBhbmQgaXNpbnN0YW5jZSh2MixkaWN0KSBlbHNlIChsZWdhY3lbImdlbmVyYXRpb24iXSBpZiBsZWdhY3kgZWxzZSBOb25lKSl9KQoxNDQ6ICAgICAgICBpZiBub3QgZnJlc2g6IGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkhJR0giLCJjb2RlIjoiUlBPX0JSRUFDSCIsImxvZ2ljYWxfaWQiOmxpZCwicm9vdF9jYXVzZSI6Ik5PX0ZSRVNIX1YyX09SX1NFQUxFRF9RVU9SVU0ifSkKMTQ4OiAgICAgICAgICAgICAgICBpc3N1ZXMuYXBwZW5kKHsic2V2ZXJpdHkiOiJDUklUSUNBTCIsImNvZGUiOiJMT0NBTF9QQVlMT0FEX0xFQUsiLCJsb2dpY2FsX2lkIjpsaWQsInJvb3RfY2F1c2UiOiJMQVRFU1RfU1RBVEVfTE9DQUxfUEFZTE9BRF9QUkVTRU5UIn0pCjE0OTogICAgICAgICAgICBpZiBvYmouZ2V0KCJzdGF0dXMiKSE9IlNFQUxFRCIgYW5kIGxlZ2FjeVsiYWdlX3NlY29uZHMiXSBpcyBub3QgTm9uZSBhbmQgbGVnYWN5WyJhZ2Vfc2Vjb25kcyJdPDE3MjgwMDoKMTUwOiAgICAgICAgICAgICAgICBpc3N1ZXMuYXBwZW5kKHsic2V2ZXJpdHkiOiJISUdIIiwiY29kZSI6IklOQ09NUExFVEVfR0VORVJBVElPTiIsImxvZ2ljYWxfaWQiOmxpZCwicm9vdF9jYXVzZSI6IkxBVEVTVF9SRUNFTlRfU1RBVEVfTk9UX1NFQUxFRCJ9KQoxNTM6ICAgICAgICBmcmVzaD0oZGVjIGluICgiU0tJUF9GUkVTSCIsIkJBQ0tVUF9GUkVTSCIpKQoxNTQ6ICAgICAgICBsZWdhY3k9bGF0ZXN0X2xlZ2FjeShsaWQsIkFQUCIpCjE1NTogICAgICAgIGlmIGxlZ2FjeSBhbmQgbGVnYWN5WyJhZ2Vfc2Vjb25kcyJdIGlzIG5vdCBOb25lIGFuZCBsZWdhY3lbImFnZV9zZWNvbmRzIl08YXBwX3NsYSBhbmQgbGVnYWN5WyJzdHJpY3QiXSBhbmQgbGVnYWN5WyJyZXN0b3JlX29rIl06CjE1NzogICAgICAgIHJlYy51cGRhdGUoeyJzdGF0ZSI6IkZSRVNIIiBpZiBmcmVzaCBlbHNlICJTVEFMRSIsImRlY2lzaW9uIjpkZWMsImxlZ2FjeV9hZ2Vfc2Vjb25kcyI6bGVnYWN5WyJhZ2Vfc2Vjb25kcyJdIGlmIGxlZ2FjeSBlbHNlIE5vbmUsImdlbmVyYXRpb24iOmxlZ2FjeVsiZ2VuZXJhdGlvbiJdIGlmIGxlZ2FjeSBlbHNlIE5vbmV9KQoxNjI6ICAgICAgICAgICAgICAgIGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkNSSVRJQ0FMIiwiY29kZSI6IkxPQ0FMX1BBWUxPQURfTEVBSyIsImxvZ2ljYWxfaWQiOmxpZCwicm9vdF9jYXVzZSI6IkxBVEVTVF9TVEFURV9MT0NBTF9QQVlMT0FEX1BSRVNFTlQifSkKMTYzOiAgICAgICAgICAgIGlmIG9iai5nZXQoInN0YXR1cyIpIT0iU0VBTEVEIiBhbmQgbGVnYWN5WyJhZ2Vfc2Vjb25kcyJdIGlzIG5vdCBOb25lIGFuZCBsZWdhY3lbImFnZV9zZWNvbmRzIl08MTcyODAwOgoxNjQ6ICAgICAgICAgICAgICAgIGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkhJR0giLCJjb2RlIjoiSU5DT01QTEVURV9HRU5FUkFUSU9OIiwibG9naWNhbF9pZCI6bGlkLCJyb290X2NhdXNlIjoiTEFURVNUX1JFQ0VOVF9TVEFURV9OT1RfU0VBTEVEIn0pCjE2NjogICAgICAgIHRyeTogb2JqPWpzb24ubG9hZHMoKFNUQVRFLyhsaWQrIi5qc29uIikpLnJlYWRfdGV4dChlbmNvZGluZz0idXRmLTgiKSkKMTcyOiAgICAgICAgcmVjLnVwZGF0ZSh7InN0YXRlIjoiRlJFU0giIGlmIGZyZXNoIGVsc2UgIlNUQUxFIiwiYWdlX3NlY29uZHMiOmFnZSwiZ2VuZXJhdGlvbiI6b2JqLmdldCgiZ2VuZXJhdGlvbiIpIGlmIGlzaW5zdGFuY2Uob2JqLGRpY3QpIGVsc2UgTm9uZX0pCjE3MzogICAgICAgIGlmIG5vdCBmcmVzaDogaXNzdWVzLmFwcGVuZCh7InNldmVyaXR5IjoiSElHSCIsImNvZGUiOiJSUE9fQlJFQUNIIiwibG9naWNhbF9pZCI6bGlkLCJyb290X2NhdXNlIjoiQ09OVFJPTF9TVEFURV9OT1RfRlJFU0gifSkKMTc0OiAgICB0YXJnZXRzLmFwcGVuZChyZWMpCjE3NjppZiBsZW4odGFyZ2V0cykhPWxlbihhY3RpdmUpOgoxNzc6ICAgIGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkNSSVRJQ0FMIiwiY29kZSI6IkxJRkVDWUNMRV9DT1ZFUkFHRV9HQVAiLCJsb2dpY2FsX2lkIjoiLSIsInJvb3RfY2F1c2UiOiJBQ1RJVkVfVEFSR0VUX0NPVU5UX01JU01BVENIIn0pCjE4MDogICAgKCJob21lbGFiLWJhY2t1cC12Mi50aW1lciIsIlYyX1RJTUVSX0JBRCIpLAoxODE6ICAgICgiaG9tZWxhYi1hcHAtY2xvdWQtcXVvcnVtLXF1ZXVlLnRpbWVyIiwiQVBQX1RJTUVSX0JBRCIpLAoxODI6ICAgICgiaG9tZWxhYi1iYWNrdXAtcmV0ZW50aW9uLWdjLnRpbWVyIiwiUkVURU5USU9OX1RJTUVSX0JBRCIpLAoxODM6ICAgICgiaG9tZWxhYi1hbGVydG1hbmFnZXItYmFja3VwLWhlYWx0aC50aW1lciIsIkFMRVJUX1RJTUVSX0JBRCIpLAoxODg6ZGVmIGV4cGVjdGVkX3YyX2hlYXZ5X2xvY2tfb3duZXIoKToKMTg5OiAgICBhcmMsYSxfPXJ1bihbInN5c3RlbWN0bCIsInNob3ciLCJob21lbGFiLWJhY2t1cC12Mi5zZXJ2aWNlIiwiLXAiLCJBY3RpdmVTdGF0ZSIsIi0tdmFsdWUiXSwxMCkKMTkwOiAgICBwcmMscGlkX3RleHQsXz1ydW4oWyJzeXN0ZW1jdGwiLCJzaG93IiwiaG9tZWxhYi1iYWNrdXAtdjIuc2VydmljZSIsIi1wIiwiTWFpblBJRCIsIi0tdmFsdWUiXSwxMCkKMTk2OiAgICBmcmMsZm8sZmU9cnVuKFsiZnVzZXIiLCIvcnVuL2hvbWVsYWItYmFja3VwLWhlYXZ5LmxvY2siXSwxMCkKMjAyOmZvciBsb2NrIGluIFsiL3J1bi9ob21lbGFiLWJhY2t1cC1oZWF2eS5sb2NrIiwiL3J1bi9sb2NrL2hvbWVsYWItYXBwLWNsb3VkLXF1b3J1bS1xdWV1ZS5sb2NrIiwiL3J1bi9sb2NrL2hvbWVsYWItdm0tY2xvdWQtcXVvcnVtLXF1ZXVlLmxvY2siLCIvcnVuL2xvY2svaG9tZWxhYi1iYWNrdXAtZGlzcGF0Y2hlci5sb2NrIl06CjIwMzogICAgcD1wYXRobGliLlBhdGgobG9jaykKMjA1OiAgICAgICAgbHJjLF8sXz1ydW4oWyJmbG9jayIsIi1uIixzdHIocCksIi1jIiwidHJ1ZSJdLDUpCjIwNzogICAgICAgICAgICBpZiBsb2NrPT0iL3J1bi9ob21lbGFiLWJhY2t1cC1oZWF2eS5sb2NrIiBhbmQgZXhwZWN0ZWRfdjJfaGVhdnlfbG9ja19vd25lcigpOgoyMTA6ICAgICAgICAgICAgICAgIGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkhJR0giLCJjb2RlIjoiTE9DS19CVVNZIiwibG9naWNhbF9pZCI6bG9jaywicm9vdF9jYXVzZSI6IkFDVElWRV9PUl9PUlBIQU5fTE9DSyJ9KQoyMTI6ZW52PW9zLmVudmlyb24uY29weSgpOyBlbnZbIkhPTUVMQUJfQkFDS1VQX0dGU19QT0xJQ1kiXT1HRlNQOyBlbnZbIkhPTUVMQUJfQkFDS1VQX1RBUkdFVF9SRUdJU1RSWSJdPXN0cihSRUcpCjIxODpyaHA9cGF0aGxpYi5QYXRoKCIvdmFyL2xpYi9ob21lbGFiLWhlYWx0aC9iYWNrdXAtcmV0ZW50aW9uLXNhZmUtZ2MuanNvbiIpCjIyNzpjbG91ZD17fQoyMjg6Zm9yIGxhYmVsLHJlbW90ZSBpbiBbKCJBIiwicHZlMDEtbWFpbC0wMS1jcnlwdDpob21lbGFiLWJhY2t1cHMiKSwoIkIiLCJwdmUwMS1tYWlsLTAyLWNyeXB0OmhvbWVsYWItYmFja3VwcyIpXToKMjI5OiAgICBscmMsbG8sXz1ydW4oWyJyY2xvbmUiLCJsc2YiLHJlbW90ZSwiLS1tYXgtZGVwdGgiLCIxIiwiLS1kaXJzLW9ubHkiXSw2MCkKMjMwOiAgICBhcmMsYW8sXz1ydW4oWyJyY2xvbmUiLCJhYm91dCIscmVtb3RlLCItLWpzb24iXSw2MCkKMjM3OiAgICAgICAgICAgICAgICBpZiBmcmFjPDAuMTU6IGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkhJR0giLCJjb2RlIjoiQ0FQQUNJVFlfTE9XIiwibG9naWNhbF9pZCI6ImNsb3VkLSIrbGFiZWwsInJvb3RfY2F1c2UiOiJGUkVFX0xUXzE1X1BFUkNFTlQifSkKMjM5OiAgICBpZiBscmMhPTA6IGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkNSSVRJQ0FMIiwiY29kZSI6IkNMT1VEX1VOUkVBREFCTEUiLCJsb2dpY2FsX2lkIjoiY2xvdWQtIitsYWJlbCwicm9vdF9jYXVzZSI6IlJDTE9ORV9MU0ZfRkFJTEVEIn0pCjI0MDogICAgY2xvdWRbbGFiZWxdPXJlYwoyNDI6dHJ5OiBkcj1qc29uLmxvYWRzKERSU0VBTC5yZWFkX3RleHQoZW5jb2Rpbmc9InV0Zi04IikpCjI0NDppZiBub3QgaXNpbnN0YW5jZShkcixkaWN0KSBvciBkci5nZXQoInN0YXR1cyIpIT0iU0VBTEVEIjoKMjQ1OiAgICBpc3N1ZXMuYXBwZW5kKHsic2V2ZXJpdHkiOiJDUklUSUNBTCIsImNvZGUiOiJEUl9TRUFMX01JU1NJTkciLCJsb2dpY2FsX2lkIjoiLSIsInJvb3RfY2F1c2UiOiJTSVRFX0RSX0ZJTkFMX1NFQUxfTk9UX1NFQUxFRCJ9KQoyNDc6Y2xvdWRiX29rPUZhbHNlCjI1MDogICAgX3N0YXRlX3Jvb3Q9X3BhdGhsaWIuUGF0aCgiL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAvY2xvdWQtcXVvcnVtL2FwcC1za2xhZGNoaWstcmVwb3J0cy1tb25pdG9yIikKMjUxOiAgICBfcmVzdG9yZV9yb290PV9wYXRobGliLlBhdGgoIi92YXIvbGliL2hvbWVsYWItYmFja3VwL2FwcC1yZXN0b3JlLXZhbGlkYXRpb24vYXBwLXNrbGFkY2hpay1yZXBvcnRzLW1vbml0b3IiKQoyNTI6ICAgIF9zdGF0ZXM9c29ydGVkKFtwIGZvciBwIGluIF9zdGF0ZV9yb290Lmdsb2IoIiouanNvbiIpIGlmIHAuaXNfZmlsZSgpIGFuZCBub3QgcC5pc19zeW1saW5rKCldLGtleT1sYW1iZGEgcDpwLnN0YXQoKS5zdF9tdGltZSxyZXZlcnNlPVRydWUpCjI1MzogICAgZm9yIF9zcCBpbiBfc3RhdGVzOgoyNTc6ICAgICAgICAgICAgX3N0LmdldCgic2NoZW1hIik9PSJob21lbGFiLWNsb3VkLXF1b3J1bS1wYXlsb2FkLXYxIiBhbmQKMjU5OiAgICAgICAgICAgIF9zdC5nZXQoInN0YXR1cyIpPT0iU0VBTEVEIiBhbmQgX3N0LmdldCgiY2xvdWRfcXVvcnVtIik9PTIgYW5kCjI2MDogICAgICAgICAgICBfc3QuZ2V0KCJjbG91ZF9hX3ZlcmlmaWVkIikgaXMgVHJ1ZSBhbmQgX3N0LmdldCgiY2xvdWRfYl92ZXJpZmllZCIpIGlzIFRydWUgYW5kCjI2MTogICAgICAgICAgICBfc3QuZ2V0KCJwYXJ0X2hhc2hlc192ZXJpZmllZCIpIGlzIFRydWUgYW5kIF9zdC5nZXQoInNlYWxfd3JpdHRlbiIpIGlzIFRydWUgYW5kCjI2MjogICAgICAgICAgICBfc3QuZ2V0KCJjbG91ZF9hX3NlYWxfdmVyaWZpZWQiKSBpcyBUcnVlIGFuZCBfc3QuZ2V0KCJjbG91ZF9iX3NlYWxfdmVyaWZpZWQiKSBpcyBUcnVlIGFuZAoyNjU6ICAgICAgICBfZ2VuPV9zdC5nZXQoImdlbmVyYXRpb24iKTsgX2FyY2hpdmVfc2hhPV9zdC5nZXQoImFyY2hpdmVfc2hhMjU2IikKMjY2OiAgICAgICAgX21hbmlmZXN0X3NoYT1fc3QuZ2V0KCJwYXJ0c19tYW5pZmVzdF9zaGEyNTYiKTsgX3BhcnRfY291bnQ9X3N0LmdldCgicGFydF9jb3VudCIpCjI2NzogICAgICAgIF9hcmNoaXZlX3NpemU9X3N0LmdldCgiYXJjaGl2ZV9zaXplX2J5dGVzIik7IF9yZW1vdGVfYj1fc3QuZ2V0KCJyZW1vdGVfYl9iYXNlIikKMjY5OiAgICAgICAgICAgICAgICBpc2luc3RhbmNlKF9tYW5pZmVzdF9zaGEsc3RyKSBhbmQgbGVuKF9tYW5pZmVzdF9zaGEpPT02NCBhbmQgaXNpbnN0YW5jZShfcGFydF9jb3VudCxpbnQpIGFuZAoyNzA6ICAgICAgICAgICAgICAgIF9wYXJ0X2NvdW50PjAgYW5kIGlzaW5zdGFuY2UoX2FyY2hpdmVfc2l6ZSxpbnQpIGFuZCBfYXJjaGl2ZV9zaXplPjAgYW5kIGlzaW5zdGFuY2UoX3JlbW90ZV9iLHN0cikpOgoyNzI6ICAgICAgICBfZXZwPV9yZXN0b3JlX3Jvb3QvKF9nZW4rIi5qc29uIikKMjc2OiAgICAgICAgICAgIF9ldi5nZXQoInNjaGVtYSIpPT0iaG9tZWxhYi1hcHAtcmVzdG9yZS12YWxpZGF0aW9uLXYxIiBhbmQKMjc4OiAgICAgICAgICAgIF9ldi5nZXQoImdlbmVyYXRpb24iKT09X2dlbiBhbmQgX2V2LmdldCgidHJhbnNwb3J0X3N0YXRlIik9PSJTRUFMRUQiIGFuZAoyNzk6ICAgICAgICAgICAgX2V2LmdldCgicmVzdG9yZV9zb3VyY2UiKT09IkNsb3VkIEEiIGFuZCBfZXYuZ2V0KCJwYXlsb2FkX3NoYTI1NiIpPT1fYXJjaGl2ZV9zaGEgYW5kCjI4MjogICAgICAgIF9tcD1fc3VicHJvY2Vzcy5ydW4oWyJyY2xvbmUiLCJjYXQiLF9yZW1vdGVfYi5yc3RyaXAoIi8iKSsiL1BBUlRTLnRzdiJdLHN0ZG91dD1fc3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1fc3VicHJvY2Vzcy5QSVBFLHRpbWVvdXQ9NjApCjI4MzogICAgICAgIGlmIF9tcC5yZXR1cm5jb2RlIT0wIG9yIF9oYXNobGliLnNoYTI1NihfbXAuc3Rkb3V0KS5oZXhkaWdlc3QoKSE9X21hbmlmZXN0X3NoYTogY29udGludWUKMjk0OiAgICAgICAgICAgICAgICBfcHA9X3N1YnByb2Nlc3MucnVuKFsicmNsb25lIiwiY2F0IixfcmVtb3RlX2IucnN0cmlwKCIvIikrIi9wYXlsb2FkLnBhcnRzLyIrX25hbWVdLHN0ZG91dD1fc3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1fc3VicHJvY2Vzcy5QSVBFLHRpbWVvdXQ9MTIwKQozMDM6ICAgICAgICBjbG91ZGJfb2s9VHJ1ZQozMDY6ICAgIGNsb3VkYl9vaz1GYWxzZQozMDc6aWYgbm90IGNsb3VkYl9vazoKMzA4OiAgICBpc3N1ZXMuYXBwZW5kKHsic2V2ZXJpdHkiOiJDUklUSUNBTCIsImNvZGUiOiJDTE9VRF9CX1JFU1RPUkVfRFJJTExfQkFEIiwibG9naWNhbF9pZCI6ImFwcC1za2xhZGNoaWstcmVwb3J0cy1tb25pdG9yIiwicm9vdF9jYXVzZSI6IkNBTk9OSUNBTF9DTE9VRF9CX1BBWUxPQURfT1JfUkVTVE9SRV9FVklERU5DRV9OT1RfT0sifSkKMzEwOnNvdXJjZT17ImxvY2FsX2hlYWQiOk5vbmUsInJlbW90ZV9oZWFkIjpOb25lLCJwdXNodXJsX2Rpc2FibGVkIjpGYWxzZX0KMzEzOmZyYyxmbyxfPXJ1bihbImdpdCIsIi1DIixXVCwiY29uZmlnIiwiLS1nZXQiLCJyZW1vdGUub3JpZ2luLnVybCJdLDEwKQozMTQ6cHJjLHBvLF89cnVuKFsiZ2l0IiwiLUMiLFdULCJjb25maWciLCItLWdldCIsInJlbW90ZS5vcmlnaW4ucHVzaHVybCJdLDEwKQozMjE6ICAgIGxyYyxsbyxfPXJ1bihbImdpdCIsImxzLXJlbW90ZSIsZm8uc3RyaXAoKSwicmVmcy9oZWFkcy8iK0JSQU5DSF0sMzAsZ2VudikKMzIyOiAgICBpZiBscmM9PTAgYW5kIGxvLnN0cmlwKCk6IHNvdXJjZVsicmVtb3RlX2hlYWQiXT1sby5zcGxpdCgpWzBdCjMyMzppZiBzb3VyY2VbInJlbW90ZV9oZWFkIl0hPXNvdXJjZVsibG9jYWxfaGVhZCJdOgozMjc6Zm9yIHQgaW4gdGFyZ2V0czoKMzI4OiAgICBwcmludCgiVEFSR0VUfCIrInwiLmpvaW4oZiJ7a309e3Z9IiBmb3Igayx2IGluIHQuaXRlbXMoKSBpZiB2IGlzIG5vdCBOb25lKSkKMzMxOnByaW50KGYiU1VNTUFSWXxBVURJVF9TVEFUVVM9T0t8QkFDS1VQX1NUQVRVUz17c3RhdHVzfXxBQ1RJVkVfQ09VTlQ9e2xlbihhY3RpdmUpfXxJU1NVRV9DT1VOVD17bGVuKGlzc3Vlcyl9fENMT1VEX0E9eydPSycgaWYgY2xvdWQuZ2V0KCdBJyx7fSkuZ2V0KCdyZWFkYWJsZScpIGVsc2UgJ0JBRCd9fENMT1VEX0I9eydPSycgaWYgY2xvdWQuZ2V0KCdCJyx7fSkuZ2V0KCdyZWFkYWJsZScpIGVsc2UgJ0JBRCd9fENMT1VEX0JfRFJJTEw9eydPSycgaWYgY2xvdWRiX29rIGVsc2UgJ0JBRCd9fERSX1BST1ZFTj17J1lFUycgaWYgaXNpbnN0YW5jZShkcixkaWN0KSBhbmQgZHIuZ2V0KCdzdGF0dXMnKT09J1NFQUxFRCcgZWxzZSAnTk8nfXxTT1VSQ0VfT0ZGSE9TVD17J09LJyBpZiBzb3VyY2VbJ3JlbW90ZV9oZWFkJ109PXNvdXJjZVsnbG9jYWxfaGVhZCddIGVsc2UgJ1BFTkRJTkcnfSIpCjMzMjpoZWFsdGg9eyJzY2hlbWEiOiJob21lbGFiLWJhY2t1cC1hdWRpdC12MyIsInN0YXR1cyI6c3RhdHVzLCJnZW5lcmF0ZWRfYXRfZXBvY2giOm5vdywidGFyZ2V0cyI6dGFyZ2V0cywiaXNzdWVzIjppc3N1ZXMsImNsb3VkIjpjbG91ZCwic291cmNlIjpzb3VyY2UsImNsb3VkX2JfcmVzdG9yZV9kcmlsbCI6Y2xvdWRiX29rLCJkcl9wcm92ZW4iOmJvb2woaXNpbnN0YW5jZShkcixkaWN0KSBhbmQgZHIuZ2V0KCJzdGF0dXMiKT09IlNFQUxFRCIpfQozMzM6aWYgTU9ERSBpbiAoIndyaXRlLWhlYWx0aCIsInNjaGVkdWxlZCIpOg==\nPIPE_2_SCORE=5\nPIPE_2_BASENAME=homelab-cloud-quorum-payload\nPIPE_2_PATH_SHA256=68de12f3737cfc95291752929a5ac96d6ab3078d9f540969437fd463cc238756\nPIPE_2_FILE_SHA256=df9e19485e5d87112bf58bf77bdddf3b9b896418dd85ff945a31cd5b6817f352\nPIPE_2_SCHEDULE_TARGET_COUNT=0\nPIPE_2_QEMU_EXECUTION_DIAG_COUNT=0\nPIPE_2_SELFTEST_REPLACEMENT486_COUNT=0\nPIPE_2_VZDUMP_QEMU_COUNT=0\nPIPE_2_RCLONE_COUNT=26\nPIPE_2_CLOUD_QUORUM_COUNT=15\nPIPE_2_SEAL_WRITTEN_COUNT=6\nPIPE_2_PAYLOAD_PARTS_COUNT=1\nPIPE_2_TRANSPORT_COUNT=1\nPIPE_2_RESTORE_VALIDATION_COUNT=0\nPIPE_2_SCHEDULE_RESULT_COUNT=0\nPIPE_2_RELEVANT_LINE_COUNT=448\nPIPE_2_RELEVANT_B64=NTpTQ0hFTUE9ImhvbWVsYWItY2xvdWQtcXVvcnVtLXBheWxvYWQtdjEiCjE5OlRNUF9CQVNFPSIke0hPTUVMQUJfUVVPUlVNX1RNUF9CQVNFOi0vbW50L3N0YWdpbmcvaG9tZWxhYi1jbG91ZC1xdW9ydW0tdG1wfSIKMjU6ICBwcmludGYgJ1JPT1RfQ0FVU0U9VU5FWFBFQ1RFRF9UUkFOU1BPUlRfRVJST1JcblJPT1RfQ0FVU0VfQ09VTlQ9MVxuREVUQUlMPWxpbmU6JXMgcmM6JXNcbicgIiR7MTotMH0iICIkcmMiID4mMgo0MTpmb3IgdG9vbCBpbiBqcSByY2xvbmUgc2hhMjU2c3VtIGRkIHN0YXQgc29ydCBta3RlbXAgZmxvY2sgYXdrIGNtcCBkYXRlOyBkbwo0Njp1c2FnZSgpewo0NzogIHByaW50ZiAndXNhZ2U6ICVzIGJhY2t1cC1kZWxldGUgTE9HSUNBTF9JRCBHRU5FUkFUSU9OIFBBWUxPQUQgUkVNT1RFX0FfUk9PVCBSRU1PVEVfQl9ST09UIFNUQVRFX1JPT1RcbicgIiQwIiA+JjIKNDg6ICBwcmludGYgJyAgICAgICAlcyB2ZXJpZnktc2VhbGVkIExPR0lDQUxfSUQgR0VORVJBVElPTiBSRU1PVEVfQV9ST09UIFJFTU9URV9CX1JPT1QgU1RBVEVfUk9PVFxuJyAiJDAiID4mMgo1MDp2YWxpZF9yZW1vdGVfcm9vdCgpeyBbWyAiJDEiID1+IF5bQS1aYS16MC05XVtBLVphLXowLTkuXy1dKjpbQS1aYS16MC05Ll8vLV0rJCBdXTsgfQo1NDogIGJhY2t1cC1kZWxldGUpCjU1OiAgICBbWyAiJCMiIC1lcSA3IF1dIHx8IHsgdXNhZ2U7IGRpZSAiQVJHVU1FTlRfQ09VTlRfSU5WQUxJRCIgNjQ7IH0KNTc6ICAgIEdFTkVSQVRJT049IiQzIgo1OTogICAgUkVNT1RFX0FfUk9PVD0iJDUiCjYwOiAgICBSRU1PVEVfQl9ST09UPSIkNiIKNjE6ICAgIFNUQVRFX1JPT1Q9IiQ3Igo2MzogIHZlcmlmeS1zZWFsZWQpCjY0OiAgICBbWyAiJCMiIC1lcSA2IF1dIHx8IHsgdXNhZ2U7IGRpZSAiQVJHVU1FTlRfQ09VTlRfSU5WQUxJRCIgNjQ7IH0KNjY6ICAgIEdFTkVSQVRJT049IiQzIgo2ODogICAgUkVNT1RFX0FfUk9PVD0iJDQiCjY5OiAgICBSRU1PVEVfQl9ST09UPSIkNSIKNzA6ICAgIFNUQVRFX1JPT1Q9IiQ2Igo3MzogICAgdXNhZ2UKNzk6dmFsaWRfdG9rZW4gIiRHRU5FUkFUSU9OIiB8fCBkaWUgIkdFTkVSQVRJT05fSU5WQUxJRCIgNjQKODA6dmFsaWRfcmVtb3RlX3Jvb3QgIiRSRU1PVEVfQV9ST09UIiB8fCBkaWUgIlJFTU9URV9BX1JPT1RfSU5WQUxJRCIgNjQKODE6dmFsaWRfcmVtb3RlX3Jvb3QgIiRSRU1PVEVfQl9ST09UIiB8fCBkaWUgIlJFTU9URV9CX1JPT1RfSU5WQUxJRCIgNjQKODI6W1sgIiRSRU1PVEVfQV9ST09UIiAhPSAiJFJFTU9URV9CX1JPT1QiIF1dIHx8IGRpZSAiUkVNT1RFX0ZBSUxVUkVfRE9NQUlOU19OT1RfRElTVElOQ1QiIDY0CjgzOltbICIkU1RBVEVfUk9PVCIgPT0gLyogXV0gfHwgZGllICJTVEFURV9ST09UX05PVF9BQlNPTFVURSIgNjQKODQ6aWYgW1sgIiRURVNUX01PREUiICE9ICIxIiAmJiAiJFNUQVRFX1JPT1QiICE9ICIvdmFyL2xpYi9ob21lbGFiLWJhY2t1cC9jbG91ZC1xdW9ydW0iIF1dOyB0aGVuCjg1OiAgZGllICJQUk9EVUNUSU9OX1NUQVRFX1JPT1RfSU5WQUxJRCIgNjQKODg6U1RBVEVfRElSPSIkU1RBVEVfUk9PVC8kTE9HSUNBTF9JRCIKODk6U1RBVEVfRklMRT0iJFNUQVRFX0RJUi8kR0VORVJBVElPTi5qc29uIgo5MDpSRU1PVEVfQV9CQVNFPSIke1JFTU9URV9BX1JPT1QlL30vJExPR0lDQUxfSUQvJEdFTkVSQVRJT04iCjkxOlJFTU9URV9CX0JBU0U9IiR7UkVNT1RFX0JfUk9PVCUvfS8kTE9HSUNBTF9JRC8kR0VORVJBVElPTiIKMTAyOiAgU1RBVEVfUk9PVD0iJChyZWFscGF0aCAtbSAtLSAiJFNUQVRFX1JPT1QiKSIKMTA0OiAgY2FzZSAiJFNUQVRFX1JPT1QiIGluICIkUlVOX1JFQUwiLyopIDs7ICopIGRpZSAiVEVTVF9TVEFURV9ST09UX09VVFNJREVfUlVOX0RJUiIgNjQ7OyBlc2FjCjEwNTogIFNUQVRFX0RJUj0iJFNUQVRFX1JPT1QvJExPR0lDQUxfSUQiCjEwNjogIFNUQVRFX0ZJTEU9IiRTVEFURV9ESVIvJEdFTkVSQVRJT04uanNvbiIKMTA5OltbICEgLUwgIiRTVEFURV9ST09UIiBdXSB8fCBkaWUgIlNUQVRFX1JPT1RfU1lNTElOS19GT1JCSURERU4iIDY0CjExMDppZiBbWyAtZSAiJFNUQVRFX0RJUiIgfHwgLUwgIiRTVEFURV9ESVIiIF1dOyB0aGVuIFtbIC1kICIkU1RBVEVfRElSIiAmJiAhIC1MICIkU1RBVEVfRElSIiBdXSB8fCBkaWUgIlNUQVRFX0RJUl9VTlNBRkUiIDY0OyBmaQoxMTE6bWtkaXIgLXAgIiRTVEFURV9ESVIiCjExMjpbWyAhIC1MICIkU1RBVEVfRElSIiAmJiAhIC1MICIkU1RBVEVfRklMRSIgXV0gfHwgZGllICJTVEFURV9QQVRIX1NZTUxJTktfRk9SQklEREVOIiA2NAoxMTM6Y2htb2QgMDcwMCAiJFNUQVRFX1JPT1QiICIkU1RBVEVfRElSIgoxMTQ6TE9DS19GSUxFPSIkU1RBVEVfRElSLy5sb2NrIgoxMTU6ZXhlYyA5PiIkTE9DS19GSUxFIgoxMTY6ZmxvY2sgLW4gOSB8fCBkaWUgIkdFTkVSQVRJT05fTE9DS19CVVNZIiA3NQoxNDM6aWYgW1sgIiRBQ1RJT04iID09ICJiYWNrdXAtZGVsZXRlIiBdXTsgdGhlbgoxNDg6IyBTRUNUSU9OX1NUQVRFX0lERU5USVRZX1YxCjE0OTpzdGF0ZV9pZGVudGl0eV9vaygpewoxNTA6ICBbWyAtcyAiJFNUQVRFX0ZJTEUiICYmICEgLUwgIiRTVEFURV9GSUxFIiBdXSB8fCByZXR1cm4gMQoxNTQ6ICAgIC0tYXJnIGdlbmVyYXRpb24gIiRHRU5FUkFUSU9OIiBcCjE1NTogICAgLS1hcmcgcmVtb3RlX2EgIiRSRU1PVEVfQV9ST09UIiBcCjE1NjogICAgLS1hcmcgcmVtb3RlX2IgIiRSRU1PVEVfQl9ST09UIiBcCjE2MDogICAgIC5nZW5lcmF0aW9uPT0kZ2VuZXJhdGlvbiBhbmQKMTYxOiAgICAgLnJlbW90ZV9hX3Jvb3Q9PSRyZW1vdGVfYSBhbmQKMTYyOiAgICAgLnJlbW90ZV9iX3Jvb3Q9PSRyZW1vdGVfYiBhbmQKMTY4OiAgICAgIC5zdGF0dXM9PSJTRUFMRUQiKScgXAoxNjk6ICAgICIkU1RBVEVfRklMRSIgPi9kZXYvbnVsbAoxNzI6c3RhdGVfc3RhdHVzKCl7CjE3MzogIGlmIFtbICEgLWUgIiRTVEFURV9GSUxFIiBdXTsgdGhlbgoxNzc6ICBbWyAtcyAiJFNUQVRFX0ZJTEUiICYmICEgLUwgIiRTVEFURV9GSUxFIiBdXSB8fCBkaWUgIlNUQVRFX0ZJTEVfVU5TQUZFIiA2NQoxNzg6ICBzdGF0ZV9pZGVudGl0eV9vayB8fCBkaWUgIlNUQVRFX0lERU5USVRZX01JU01BVENIIiA2NQoxNzk6ICBqcSAtciAnLnN0YXR1cycgIiRTVEFURV9GSUxFIgoxODI6IyBTRUNUSU9OX1NUQVRFX0lOSVRJQUxfVjEKMTgzOndyaXRlX2luaXRpYWxfc3RhdGUoKXsKMTg0OiAgbG9jYWwgbm93PSIkMSIgdG1wPSIke1NUQVRFX0ZJTEV9Lm5ldy4kJCIKMTkwOiAgICAtLWFyZyBnZW5lcmF0aW9uICIkR0VORVJBVElPTiIgXAoxOTU6ICAgIC0tYXJnIHJlbW90ZV9hX3Jvb3QgIiRSRU1PVEVfQV9ST09UIiBcCjE5NjogICAgLS1hcmcgcmVtb3RlX2Jfcm9vdCAiJFJFTU9URV9CX1JPT1QiIFwKMTk3OiAgICAtLWFyZyByZW1vdGVfYV9iYXNlICIkUkVNT1RFX0FfQkFTRSIgXAoxOTg6ICAgIC0tYXJnIHJlbW90ZV9iX2Jhc2UgIiRSRU1PVEVfQl9CQVNFIiBcCjIwMjogICAgJ3tzY2hlbWE6JHNjaGVtYSxzdGF0dXM6JHN0YXR1cyxsb2dpY2FsX2lkOiRsb2dpY2FsX2lkLGdlbmVyYXRpb246JGdlbmVyYXRpb24sCjIwNzogICAgICByZW1vdGVfYV9yb290OiRyZW1vdGVfYV9yb290LHJlbW90ZV9iX3Jvb3Q6JHJlbW90ZV9iX3Jvb3QsCjIwODogICAgICByZW1vdGVfYV9iYXNlOiRyZW1vdGVfYV9iYXNlLHJlbW90ZV9iX2Jhc2U6JHJlbW90ZV9iX2Jhc2UsCjIwOTogICAgICBjbG91ZF9hX3ZlcmlmaWVkOmZhbHNlLGNsb3VkX2JfdmVyaWZpZWQ6ZmFsc2UsCjIxMDogICAgICBjbG91ZF9hX3JlY29uc3RydWN0ZWRfc2hhMjU2Om51bGwsY2xvdWRfYl9yZWNvbnN0cnVjdGVkX3NoYTI1NjpudWxsLAoyMTE6ICAgICAgY2xvdWRfYV92ZXJpZmllZF9hdF91dGM6bnVsbCxjbG91ZF9iX3ZlcmlmaWVkX2F0X3V0YzpudWxsLAoyMTI6ICAgICAgY2xvdWRfcXVvcnVtOjAscGFydF9oYXNoZXNfdmVyaWZpZWQ6ZmFsc2UscGFydHNfbWFuaWZlc3Rfc2hhMjU2Om51bGwsCjIxNTogICAgICBzZWFsX3dyaXR0ZW46ZmFsc2Usc2VhbGVkX2F0X3V0YzpudWxsfScgPiIkdG1wIgoyMjE6ICBtdiAtZiAtLSAiJHRtcCIgIiRTVEFURV9GSUxFIgoyMjQ6c3RhdGVfcGF5bG9hZF9pZGVudGl0eV9vaygpewoyMjk6ICAgIC0tYXJnIHJlbW90ZV9hX2Jhc2UgIiRSRU1PVEVfQV9CQVNFIiBcCjIzMDogICAtLWFyZyByZW1vdGVfYl9iYXNlICIkUkVNT1RFX0JfQkFTRSIgXAoyMzg6ICAgICAucmVtb3RlX2FfYmFzZT09JHJlbW90ZV9hX2Jhc2UgYW5kCjIzOTogICAgIC5yZW1vdGVfYl9iYXNlPT0kcmVtb3RlX2JfYmFzZScgXAoyNDA6ICAgICIkU1RBVEVfRklMRSIgPi9kZXYvbnVsbAoyNDM6IyBTRUNUSU9OX1NUQVRFX1JFU1VNRV9IRUxQRVJTX1YxCjI0NDpsb2FkX3N0YXRlX3BheWxvYWRfaWRlbnRpdHkoKXsKMjQ1OiAgUEFZTE9BRF9SRUFMPSIkKGpxIC1lciAnLnBheWxvYWRfcGF0aCB8IHN0cmluZ3MgfCBzZWxlY3QobGVuZ3RoPjApJyAiJFNUQVRFX0ZJTEUiKSIgfHwgZGllICJTVEFURV9QQVlMT0FEX1BBVEhfSU5WQUxJRCIgNjUKMjQ2OiAgUEFZTE9BRF9OQU1FPSIkKGpxIC1lciAnLnBheWxvYWRfbmFtZSB8IHN0cmluZ3MgfCBzZWxlY3QobGVuZ3RoPjApJyAiJFNUQVRFX0ZJTEUiKSIgfHwgZGllICJTVEFURV9QQVlMT0FEX05BTUVfSU5WQUxJRCIgNjUKMjQ3OiAgUEFZTE9BRF9TSEE9IiQoanEgLWVyICcuYXJjaGl2ZV9zaGEyNTYgfCBzdHJpbmdzIHwgc2VsZWN0KHRlc3QoIl5bMC05YS1mXXs2NH0kIikpJyAiJFNUQVRFX0ZJTEUiKSIgfHwgZGllICJTVEFURV9QQVlMT0FEX1NIQV9JTlZBTElEIiA2NQoyNDg6ICBQQVlMT0FEX1NJWkU9IiQoanEgLWVyICcuYXJjaGl2ZV9zaXplX2J5dGVzIHwgbnVtYmVycyB8IHNlbGVjdCguPjAgYW5kIGZsb29yPT0uKScgIiRTVEFURV9GSUxFIikiIHx8IGRpZSAiU1RBVEVfUEFZTE9BRF9TSVpFX0lOVkFMSUQiIDY1CjI0OTogIFBBUlRfQ09VTlQ9IiQoanEgLWVyICcucGFydF9jb3VudCB8IG51bWJlcnMgfCBzZWxlY3QoLj4wIGFuZCBmbG9vcj09LiknICIkU1RBVEVfRklMRSIpIiB8fCBkaWUgIlNUQVRFX1BBUlRfQ09VTlRfSU5WQUxJRCIgNjUKMjY1OmFzc2VydF9pbnB1dF9tYXRjaGVzX3N0YXRlX3BhdGgoKXsKMjY2OiAgbG9jYWwgaW5wdXRfcmVhbD0iJDEiIGlucHV0X25hbWU9IiQyIiBzdGF0ZV9yZWFsIHN0YXRlX25hbWUKMjY3OiAgc3RhdGVfcmVhbD0iJChqcSAtZXIgJy5wYXlsb2FkX3BhdGggfCBzdHJpbmdzIHwgc2VsZWN0KGxlbmd0aD4wKScgIiRTVEFURV9GSUxFIikiIHx8IGRpZSAiU1RBVEVfUEFZTE9BRF9QQVRIX0lOVkFMSUQiIDY1CjI2ODogIHN0YXRlX25hbWU9IiQoanEgLWVyICcucGF5bG9hZF9uYW1lIHwgc3RyaW5ncyB8IHNlbGVjdChsZW5ndGg+MCknICIkU1RBVEVfRklMRSIpIiB8fCBkaWUgIlNUQVRFX1BBWUxPQURfTkFNRV9JTlZBTElEIiA2NQoyNjk6ICBbWyAiJGlucHV0X3JlYWwiID09ICIkc3RhdGVfcmVhbCIgJiYgIiRpbnB1dF9uYW1lIiA9PSAiJHN0YXRlX25hbWUiIF1dIHx8IGRpZSAiU1RBVEVfUEFZTE9BRF9QQVRIX01JU01BVENIIiA2NQoyNzI6IyBTRUNUSU9OX1NUQVRFX1BIQVNFX0lOVkFSSUFOVFNfVjEKMjczOnN0YXRlX3BoYXNlX2NvcmVfaW52YXJpYW50c19vaygpewoyNzc6ICAgICAgLmNsb3VkX2FfdmVyaWZpZWQ9PWZhbHNlIGFuZAoyNzg6ICAgICAgLmNsb3VkX2JfdmVyaWZpZWQ9PWZhbHNlIGFuZAoyNzk6ICAgICAgLmNsb3VkX3F1b3J1bT09MCBhbmQKMjgzOiAgICAgIC5jbG91ZF9hX3ZlcmlmaWVkPT10cnVlIGFuZAoyODQ6ICAgICAgLmNsb3VkX2JfdmVyaWZpZWQ9PWZhbHNlIGFuZAoyODU6ICAgICAgLmNsb3VkX2FfcmVjb25zdHJ1Y3RlZF9zaGEyNTY9PSRzaGEgYW5kCjI4NjogICAgICAuY2xvdWRfcXVvcnVtPT0xIGFuZAoyOTA6ICAgICAgLmNsb3VkX2FfdmVyaWZpZWQ9PXRydWUgYW5kCjI5MTogICAgICAuY2xvdWRfYl92ZXJpZmllZD09dHJ1ZSBhbmQKMjkyOiAgICAgIC5jbG91ZF9hX3JlY29uc3RydWN0ZWRfc2hhMjU2PT0kc2hhIGFuZAoyOTM6ICAgICAgLmNsb3VkX2JfcmVjb25zdHJ1Y3RlZF9zaGEyNTY9PSRzaGEgYW5kCjI5NDogICAgICAuY2xvdWRfcXVvcnVtPT0yIGFuZAoyOTk6ICAgICAgLmNsb3VkX2FfdmVyaWZpZWQ9PXRydWUgYW5kCjMwMDogICAgICAuY2xvdWRfYl92ZXJpZmllZD09dHJ1ZSBhbmQKMzAxOiAgICAgIC5jbG91ZF9hX3JlY29uc3RydWN0ZWRfc2hhMjU2PT0kc2hhIGFuZAozMDI6ICAgICAgLmNsb3VkX2JfcmVjb25zdHJ1Y3RlZF9zaGEyNTY9PSRzaGEgYW5kCjMwMzogICAgICAuY2xvdWRfcXVvcnVtPT0yIGFuZAozMDg6ICAgIGVsaWYgLnN0YXR1cz09IlNFQUxFRCIgdGhlbgozMDk6ICAgICAgLmNsb3VkX2FfdmVyaWZpZWQ9PXRydWUgYW5kCjMxMDogICAgICAuY2xvdWRfYl92ZXJpZmllZD09dHJ1ZSBhbmQKMzExOiAgICAgIC5jbG91ZF9hX3JlY29uc3RydWN0ZWRfc2hhMjU2PT0kc2hhIGFuZAozMTI6ICAgICAgLmNsb3VkX2JfcmVjb25zdHJ1Y3RlZF9zaGEyNTY9PSRzaGEgYW5kCjMxMzogICAgICAuY2xvdWRfcXVvcnVtPT0yIGFuZAozMTg6ICAgICAgLnNlYWxfd3JpdHRlbj09dHJ1ZQozMjI6ICAnICIkU1RBVEVfRklMRSIgPi9kZXYvbnVsbAozMjU6IyBTRUNUSU9OX1NUQVRFX1JFU1VNRV9ESVNQQVRDSF9WMQozMjY6cHJlcGFyZV9iYWNrdXBfc3RhdGUoKXsKMzMwOiAgc3RhdHVzPSIkKHN0YXRlX3N0YXR1cykiCjMzNTogICAgICBhc3NlcnRfbmV3X3JlbW90ZV9nZW5lcmF0aW9uX2Fic2VudAozMzY6ICAgICAgd3JpdGVfaW5pdGlhbF9zdGF0ZSAiJG5vdyIKMzM3OiAgICAgIHN0YXRlX2lkZW50aXR5X29rIHx8IGRpZSAiSU5JVElBTF9TVEFURV9JREVOVElUWV9JTlZBTElEIiA2NQozMzg6ICAgICAgc3RhdGVfcGF5bG9hZF9pZGVudGl0eV9vayB8fCBkaWUgIklOSVRJQUxfU1RBVEVfUEFZTE9BRF9JREVOVElUWV9JTlZBTElEIiA2NQozMzk6ICAgICAgc3RhdGVfcGhhc2VfaW52YXJpYW50c19vayB8fCBkaWUgIklOSVRJQUxfU1RBVEVfUEhBU0VfSU5WQVJJQU5UX0lOVkFMSUQiIDY1CjM0MjogICAgICBhc3NlcnRfaW5wdXRfbWF0Y2hlc19zdGF0ZV9wYXRoICIkaW5wdXRfcGF5bG9hZF9yZWFsIiAiJGlucHV0X3BheWxvYWRfbmFtZSIKMzQ0OiAgICAgIHN0YXRlX3BheWxvYWRfaWRlbnRpdHlfb2sgfHwgZGllICJSRVNVTUVfUEFZTE9BRF9JREVOVElUWV9NSVNNQVRDSCIgNjUKMzQ1OiAgICAgIHN0YXRlX3BoYXNlX2ludmFyaWFudHNfb2sgfHwgZGllICJSRVNVTUVfU1RBVEVfUEhBU0VfSU5WQVJJQU5UX0lOVkFMSUQiIDY1CjM0ODogICAgICBhc3NlcnRfaW5wdXRfbWF0Y2hlc19zdGF0ZV9wYXRoICIkaW5wdXRfcGF5bG9hZF9yZWFsIiAiJGlucHV0X3BheWxvYWRfbmFtZSIKMzUyOiAgICAgICAgc3RhdGVfcGF5bG9hZF9pZGVudGl0eV9vayB8fCBkaWUgIkRFTEVURV9BVVRIT1JJWkVEX1BBWUxPQURfSURFTlRJVFlfTUlTTUFUQ0giIDY1CjM1NDogICAgICAgIGxvYWRfc3RhdGVfcGF5bG9hZF9pZGVudGl0eQozNTU6ICAgICAgICBzdGF0ZV9wYXlsb2FkX2lkZW50aXR5X29rIHx8IGRpZSAiREVMRVRFX0FVVEhPUklaRURfU1RBVEVfUEFZTE9BRF9JREVOVElUWV9JTlZBTElEIiA2NQozNTc6ICAgICAgc3RhdGVfcGhhc2VfaW52YXJpYW50c19vayB8fCBkaWUgIkRFTEVURV9BVVRIT1JJWkVEX1NUQVRFX1BIQVNFX0lOVkFSSUFOVF9JTlZBTElEIiA2NQozNTk6ICAgIFNFQUxFRCkKMzYwOiAgICAgIGFzc2VydF9pbnB1dF9tYXRjaGVzX3N0YXRlX3BhdGggIiRpbnB1dF9wYXlsb2FkX3JlYWwiICIkaW5wdXRfcGF5bG9hZF9uYW1lIgozNjE6ICAgICAgW1sgISAtZSAiJGlucHV0X3BheWxvYWRfcmVhbCIgJiYgISAtTCAiJGlucHV0X3BheWxvYWRfcmVhbCIgXV0gfHwgZGllICJTRUFMRURfTE9DQUxfUEFZTE9BRF9QUkVTRU5UIiA2NgozNjI6ICAgICAgbG9hZF9zdGF0ZV9wYXlsb2FkX2lkZW50aXR5CjM2MzogICAgICBzdGF0ZV9wYXlsb2FkX2lkZW50aXR5X29rIHx8IGRpZSAiU0VBTEVEX1NUQVRFX1BBWUxPQURfSURFTlRJVFlfSU5WQUxJRCIgNjUKMzY0OiAgICAgIHN0YXRlX3BoYXNlX2ludmFyaWFudHNfb2sgfHwgZGllICJTRUFMRURfU1RBVEVfUEhBU0VfSU5WQVJJQU5UX0lOVkFMSUQiIDY1CjM2NzogICAgICBkaWUgIlNUQVRFX1NUQVRVU19VTlNVUFBPUlRFRF8ke3N0YXR1c30iIDY1CjM3MDogIEJBQ0tVUF9TVEFURV9TVEFUVVM9IiRzdGF0dXMiCjM3MjogICAgQkFDS1VQX1NUQVRFX1NUQVRVUz0iUFJFUEFSSU5HIgozNzU6IyBTRUNUSU9OX1JFTU9URV9QT0xJQ1lfVjEKMzc3OiAgW1sgIiRSRU1PVEVfQV9ST09UIiA9PSAicHZlMDEtbWFpbC0wMS1jcnlwdDpob21lbGFiLWJhY2t1cHMiIF1dIHx8IGRpZSAiUFJPRFVDVElPTl9SRU1PVEVfQV9JTlZBTElEIiA2NAozNzg6ICBbWyAiJFJFTU9URV9CX1JPT1QiID09ICJwdmUwMS1tYWlsLTAyLWNyeXB0OmhvbWVsYWItYmFja3VwcyIgXV0gfHwgZGllICJQUk9EVUNUSU9OX1JFTU9URV9CX0lOVkFMSUQiIDY0CjM3OTogIFtbIC16ICIke0hPTUVMQUJfVEVTVF9SQ0xPTkVfQklOOi19IiBdXSB8fCBkaWUgIlBST0RVQ1RJT05fUkNMT05FX09WRVJSSURFX0ZPUkJJRERFTiIgNjQKMzgwOiAgUkNMT05FX0JJTj0iJChjb21tYW5kIC12IHJjbG9uZSkiIHx8IGRpZSAiUkNMT05FX01JU1NJTkciIDY5CjM4MjogIFJDTE9ORV9CSU49IiR7SE9NRUxBQl9URVNUX1JDTE9ORV9CSU46LX0iCjM4MzogIGlmIFtbIC16ICIkUkNMT05FX0JJTiIgXV07IHRoZW4KMzg0OiAgICBSQ0xPTkVfQklOPSIkKGNvbW1hbmQgLXYgcmNsb25lKSIgfHwgZGllICJSQ0xPTkVfTUlTU0lORyIgNjkKMzg2OiAgW1sgIiRSQ0xPTkVfQklOIiA9PSAvKiAmJiAteCAiJFJDTE9ORV9CSU4iICYmICEgLUwgIiRSQ0xPTkVfQklOIiBdXSB8fCBkaWUgIlRFU1RfUkNMT05FX0JJTl9VTlNBRkUiIDY0CjM4OTpydW5fcmNsb25lKCl7CjM5MDogICIkUkNMT05FX0JJTiIgIiRAIgozOTM6IyBTRUNUSU9OX1JFTU9URV9HRU5FUkFUSU9OX0dVQVJEX1YxCjM5NDpyZW1vdGVfZ2VuZXJhdGlvbl9wcm9iZSgpewozOTY6ICBbWyAiJGxhYmVsIiA9PSAiQSIgfHwgIiRsYWJlbCIgPT0gIkIiIF1dIHx8IGRpZSAiUkVNT1RFX1BST0JFX0xBQkVMX0lOVkFMSUQiIDY0CjM5NzogIHJvb3RfbGlzdGluZz0iJFdPUksvcmVtb3RlLSR7bGFiZWx9LXJvb3QubHNmIgozOTg6ICBsb2dpY2FsX2xpc3Rpbmc9IiRXT1JLL3JlbW90ZS0ke2xhYmVsfS1sb2dpY2FsLmxzZiIKNDAwOiAgaWYgISBydW5fcmNsb25lIGxzZiAiJHJvb3QiIC0tZGlycy1vbmx5IC0tbWF4LWRlcHRoIDEgPiIkcm9vdF9saXN0aW5nIjsgdGhlbgo0MDE6ICAgIGRpZSAiUkVNT1RFXyR7bGFiZWx9X1JPT1RfUFJPQkVfRkFJTEVEIiA3NAo0MDM6ICBpZiAhIGF3ayAtdiB0YXJnZXQ9IiRMT0dJQ0FMX0lELyIgJyQwPT10YXJnZXR7Zm91bmQ9MX0gRU5Ee2V4aXQgIWZvdW5kfScgIiRyb290X2xpc3RpbmciOyB0aGVuCjQwNzogIGlmICEgcnVuX3JjbG9uZSBsc2YgIiR7cm9vdCUvfS8kTE9HSUNBTF9JRCIgLS1kaXJzLW9ubHkgLS1tYXgtZGVwdGggMSA+IiRsb2dpY2FsX2xpc3RpbmciOyB0aGVuCjQwODogICAgZGllICJSRU1PVEVfJHtsYWJlbH1fTE9HSUNBTF9QUk9CRV9GQUlMRUQiIDc0CjQxMDogIGlmIGF3ayAtdiB0YXJnZXQ9IiRHRU5FUkFUSU9OLyIgJyQwPT10YXJnZXR7Zm91bmQ9MX0gRU5Ee2V4aXQgIWZvdW5kfScgIiRsb2dpY2FsX2xpc3RpbmciOyB0aGVuCjQxNzphc3NlcnRfbmV3X3JlbW90ZV9nZW5lcmF0aW9uX2Fic2VudCgpewo0MTg6ICBsb2NhbCBhX3N0YXRlIGJfc3RhdGUKNDE5OiAgYV9zdGF0ZT0iJChyZW1vdGVfZ2VuZXJhdGlvbl9wcm9iZSBBICIkUkVNT1RFX0FfUk9PVCIpIgo0MjA6ICBiX3N0YXRlPSIkKHJlbW90ZV9nZW5lcmF0aW9uX3Byb2JlIEIgIiRSRU1PVEVfQl9ST09UIikiCjQyMTogIFtbICIkYV9zdGF0ZSIgPT0gIkFCU0VOVCIgXV0gfHwgZGllICJSRU1PVEVfQV9HRU5FUkFUSU9OX0FMUkVBRFlfRVhJU1RTIiA2NQo0MjI6ICBbWyAiJGJfc3RhdGUiID09ICJBQlNFTlQiIF1dIHx8IGRpZSAiUkVNT1RFX0JfR0VORVJBVElPTl9BTFJFQURZX0VYSVNUUyIgNjUKNDI1OiMgU0VDVElPTl9TVEFURV9UUkFOU0lUSU9OU19DTE9VRF9WMQo0MjY6YXNzZXJ0X3N0YXRlX3RyYW5zaXRpb25fc291cmNlKCl7CjQyODogIHN0YXRlX2lkZW50aXR5X29rIHx8IGRpZSAiVFJBTlNJVElPTl9TVEFURV9JREVOVElUWV9JTlZBTElEIiA2NQo0Mjk6ICBzdGF0ZV9wYXlsb2FkX2lkZW50aXR5X29rIHx8IGRpZSAiVFJBTlNJVElPTl9QQVlMT0FEX0lERU5USVRZX0lOVkFMSUQiIDY1CjQzMDogIHN0YXRlX3BoYXNlX2ludmFyaWFudHNfb2sgfHwgZGllICJUUkFOU0lUSU9OX1NPVVJDRV9JTlZBUklBTlRfSU5WQUxJRCIgNjUKNDMxOiAgYWN0dWFsPSIkKGpxIC1lciAnLnN0YXR1cyB8IHN0cmluZ3MnICIkU1RBVEVfRklMRSIpIiB8fCBkaWUgIlRSQU5TSVRJT05fU1RBVFVTX0lOVkFMSUQiIDY1CjQzNjogIGxvY2FsIG1hbmlmZXN0X3NoYT0iJDEiIG5vdyB0bXAKNDM3OiAgW1sgIiRtYW5pZmVzdF9zaGEiID1+IF5bMC05YS1mXXs2NH0kIF1dIHx8IGRpZSAiUEFSVFNfTUFOSUZFU1RfU0hBX0lOVkFMSUQiIDY1CjQzODogIGFzc2VydF9zdGF0ZV90cmFuc2l0aW9uX3NvdXJjZSAiUFJFUEFSSU5HIgo0NDA6ICB0bXA9IiR7U1RBVEVfRklMRX0ubmV3LiQkIgo0NDU6ICAgIC0tYXJnIG1hbmlmZXN0X3NoYSAiJG1hbmlmZXN0X3NoYSIgXAo0NDg6ICAgICAuY2xvdWRfYV92ZXJpZmllZD10cnVlIHwKNDQ5OiAgICAgLmNsb3VkX2FfcmVjb25zdHJ1Y3RlZF9zaGEyNTY9JGFyY2hpdmVfc2hhIHwKNDUwOiAgICAgLmNsb3VkX2FfdmVyaWZpZWRfYXRfdXRjPSRub3cgfAo0NTE6ICAgICAuY2xvdWRfcXVvcnVtPTEgfAo0NTI6ICAgICAucGFydHNfbWFuaWZlc3Rfc2hhMjU2PSRtYW5pZmVzdF9zaGEnIFwKNDUzOiAgICAiJFNUQVRFX0ZJTEUiID4iJHRtcCIKNDU1OiAgbXYgLWYgLS0gIiR0bXAiICIkU1RBVEVfRklMRSIKNDU2OiAgc3RhdGVfcGhhc2VfaW52YXJpYW50c19vayB8fCBkaWUgIkFfVkVSSUZJRURfU1RBVEVfSU5WQVJJQU5UX0lOVkFMSUQiIDY1CjQ2MDogIGxvY2FsIG1hbmlmZXN0X3NoYT0iJDEiIG5vdyB0bXAgc2F2ZWRfbWFuaWZlc3QKNDYxOiAgW1sgIiRtYW5pZmVzdF9zaGEiID1+IF5bMC05YS1mXXs2NH0kIF1dIHx8IGRpZSAiUEFSVFNfTUFOSUZFU1RfU0hBX0lOVkFMSUQiIDY1CjQ2MjogIGFzc2VydF9zdGF0ZV90cmFuc2l0aW9uX3NvdXJjZSAiQV9WRVJJRklFRCIKNDYzOiAgc2F2ZWRfbWFuaWZlc3Q9IiQoanEgLWVyICcucGFydHNfbWFuaWZlc3Rfc2hhMjU2IHwgc3RyaW5ncyB8IHNlbGVjdCh0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKScgIiRTVEFURV9GSUxFIikiIHx8IGRpZSAiU1RBVEVfUEFSVFNfTUFOSUZFU1RfU0hBX0lOVkFMSUQiIDY1CjQ2NDogIFtbICIkc2F2ZWRfbWFuaWZlc3QiID09ICIkbWFuaWZlc3Rfc2hhIiBdXSB8fCBkaWUgIlBBUlRTX01BTklGRVNUX1NIQV9DSEFOR0VEIiA2NQo0NjY6ICB0bXA9IiR7U1RBVEVfRklMRX0ubmV3LiQkIgo0NzM6ICAgICAuY2xvdWRfYl92ZXJpZmllZD10cnVlIHwKNDc0OiAgICAgLmNsb3VkX2JfcmVjb25zdHJ1Y3RlZF9zaGEyNTY9JGFyY2hpdmVfc2hhIHwKNDc1OiAgICAgLmNsb3VkX2JfdmVyaWZpZWRfYXRfdXRjPSRub3cgfAo0NzY6ICAgICAuY2xvdWRfcXVvcnVtPTIgfAo0Nzg6ICAgICIkU1RBVEVfRklMRSIgPiIkdG1wIgo0ODA6ICBtdiAtZiAtLSAiJHRtcCIgIiRTVEFURV9GSUxFIgo0ODE6ICBzdGF0ZV9waGFzZV9pbnZhcmlhbnRzX29rIHx8IGRpZSAiUFJFUEFSRURfU1RBVEVfSU5WQVJJQU5UX0lOVkFMSUQiIDY1CjQ4NDojIFNFQ1RJT05fU1RBVEVfVFJBTlNJVElPTlNfREVMRVRFX1YxCjQ4ODogIGFzc2VydF9zdGF0ZV90cmFuc2l0aW9uX3NvdXJjZSAiUFJFUEFSRUQiCjQ5MDogIHRtcD0iJHtTVEFURV9GSUxFfS5uZXcuJCQiCjUwMDogICAgIC5zZWFsX3dyaXR0ZW49ZmFsc2UnIFwKNTAxOiAgICAiJFNUQVRFX0ZJTEUiID4iJHRtcCIKNTAzOiAgbXYgLWYgLS0gIiR0bXAiICIkU1RBVEVfRklMRSIKNTA0OiAgc3RhdGVfcGhhc2VfaW52YXJpYW50c19vayB8fCBkaWUgIkRFTEVURV9BVVRIT1JJWkVEX1NUQVRFX0lOVkFSSUFOVF9JTlZBTElEIiA2NQo1MDU6ICBqcSAtZSAnLmRlbGV0ZV9hdXRob3JpemVkX2F0X3V0YyB8IHN0cmluZ3MgfCBzZWxlY3QobGVuZ3RoPjApJyAiJFNUQVRFX0ZJTEUiID4vZGV2L251bGwgfHwgZGllICJERUxFVEVfQVVUSE9SSVpFRF9USU1FU1RBTVBfSU5WQUxJRCIgNjUKNTEwOiAgYXNzZXJ0X3N0YXRlX3RyYW5zaXRpb25fc291cmNlICJERUxFVEVfQVVUSE9SSVpFRCIKNTEyOiAgaWYganEgLWUgJy5sb2NhbF9wYXlsb2FkX3ByZXNlbnQ9PWZhbHNlIGFuZCAubG9jYWxfY2xlYW51cD09Ik9LIicgIiRTVEFURV9GSUxFIiA+L2Rldi9udWxsOyB0aGVuCjUxNjogIHRtcD0iJHtTVEFURV9GSUxFfS5uZXcuJCQiCjUyNDogICAgIiRTVEFURV9GSUxFIiA+IiR0bXAiCjUyNjogIG12IC1mIC0tICIkdG1wIiAiJFNUQVRFX0ZJTEUiCjUyNzogIHN0YXRlX3BoYXNlX2ludmFyaWFudHNfb2sgfHwgZGllICJMT0NBTF9ERUxFVEVEX1NUQVRFX0lOVkFSSUFOVF9JTlZBTElEIiA2NQo1Mjg6ICBqcSAtZSAnLmxvY2FsX2RlbGV0ZWRfYXRfdXRjIHwgc3RyaW5ncyB8IHNlbGVjdChsZW5ndGg+MCknICIkU1RBVEVfRklMRSIgPi9kZXYvbnVsbCB8fCBkaWUgIkxPQ0FMX0RFTEVURURfVElNRVNUQU1QX0lOVkFMSUQiIDY1CjUzMTojIFNFQ1RJT05fU1RBVEVfTUFOSUZFU1RfSU5WQVJJQU5UU19WMQo1MzI6c3RhdGVfbWFuaWZlc3RfaW52YXJpYW50X29rKCl7CjUzNTogICAgICAucGFydHNfbWFuaWZlc3Rfc2hhMjU2PT1udWxsCjUzOTogICAgICAgICAgLnN0YXR1cz09IlNFQUxFRCIpIHRoZW4KNTQwOiAgICAgICgucGFydHNfbWFuaWZlc3Rfc2hhMjU2IHwKNTQ2OiAgJyAiJFNUQVRFX0ZJTEUiID4vZGV2L251bGwKNTQ5OnN0YXRlX3BoYXNlX2ludmFyaWFudHNfb2soKXsKNTUwOiAgc3RhdGVfcGhhc2VfY29yZV9pbnZhcmlhbnRzX29rICYmCjU1MTogICAgc3RhdGVfbWFuaWZlc3RfaW52YXJpYW50X29rICYmCjU1MjogICAgc3RhdGVfc2VhbF9pbnZhcmlhbnRfb2sKNTYwOlBBUlRTX01BTklGRVNUPSIkV09SSy9QQVJUUy50c3YiCjU4OTogIGRkIGlmPSIkUEFZTE9BRF9SRUFMIiBvZj0iJFBBUlRfRklMRSIgYnM9MTA0ODU3NiBza2lwPSIkKCggaWR4ICogQ0hVTktfTUlCICkpIiBjb3VudD0iJENIVU5LX01JQiIgaWZsYWc9ZnVsbGJsb2NrIHN0YXR1cz1ub25lCjU5NzptYW5pZmVzdF9yZXNldCgpewo1OTg6ICA6ID4iJFBBUlRTX01BTklGRVNUIgo1OTk6ICBjaG1vZCAwNjAwICIkUEFSVFNfTUFOSUZFU1QiCjYwMjptYW5pZmVzdF9hcHBlbmRfY3VycmVudCgpewo2MDQ6ICBbWyAiJENVUlJFTlRfUEFSVF9OQU1FIiA9PSAiJChwYXJ0X25hbWUgIiRpZHgiKSIgXV0gfHwgZGllICJQQVJUX05BTUVfU1RBVEVfTUlTTUFUQ0giIDY1CjYwNTogIFtbICIkQ1VSUkVOVF9QQVJUX1NJWkUiID09ICIkKGV4cGVjdGVkX3BhcnRfc2l6ZSAiJGlkeCIpIiBdXSB8fCBkaWUgIlBBUlRfU0laRV9TVEFURV9NSVNNQVRDSCIgNjUKNjA2OiAgW1sgIiRDVVJSRU5UX1BBUlRfU0hBIiA9fiBeWzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgIlBBUlRfU0hBX1NUQVRFX0lOVkFMSUQiIDY1CjYwNzogIHByaW50ZiAnJTA4ZFx0JXNcdCVzXHQlc1xuJyAiJGlkeCIgIiRDVVJSRU5UX1BBUlRfTkFNRSIgIiRDVVJSRU5UX1BBUlRfU0laRSIgIiRDVVJSRU5UX1BBUlRfU0hBIiA+PiIkUEFSVFNfTUFOSUZFU1QiCjYxMDptYW5pZmVzdF9maW5hbGl6ZSgpewo2MjE6ICAnICIkUEFSVFNfTUFOSUZFU1QiIHx8IGRpZSAiUEFSVFNfTUFOSUZFU1RfSU5WQUxJRCIgNjUKNjIyOiAgUEFSVFNfTUFOSUZFU1RfU0hBPSIkKHNoYTI1NnN1bSAtLSAiJFBBUlRTX01BTklGRVNUIiB8IGF3ayAne3ByaW50ICQxfScpIgo2MjM6ICBbWyAiJFBBUlRTX01BTklGRVNUX1NIQSIgPX4gXlswLTlhLWZdezY0fSQgXV0gfHwgZGllICJQQVJUU19NQU5JRkVTVF9TSEFfSU5WQUxJRCIgNjUKNjI2OiMgU0VDVElPTl9SRU1PVEVfVVBMT0FEX1BSSU1JVElWRVNfVjEKNjI3OnJlbW90ZV9wYXJ0c19iYXNlKCl7CjYyOTogIFtbICIkYmFzZSIgPT0gIiRSRU1PVEVfQV9CQVNFIiB8fCAiJGJhc2UiID09ICIkUkVNT1RFX0JfQkFTRSIgXV0gfHwgZGllICJSRU1PVEVfQkFTRV9OT1RfQVBQUk9WRUQiIDY0CjYzMzpyZW1vdGVfbWFuaWZlc3RfcGF0aCgpewo2MzU6ICBbWyAiJGJhc2UiID09ICIkUkVNT1RFX0FfQkFTRSIgfHwgIiRiYXNlIiA9PSAiJFJFTU9URV9CX0JBU0UiIF1dIHx8IGRpZSAiUkVNT1RFX0JBU0VfTk9UX0FQUFJPVkVEIiA2NAo2NDM6ICBkZXN0aW5hdGlvbj0iJChyZW1vdGVfcGFydHNfYmFzZSAiJGJhc2UiKS8kQ1VSUkVOVF9QQVJUX05BTUUiCjY0NDogIHJ1bl9yY2xvbmUgY29weXRvICIkUEFSVF9GSUxFIiAiJGRlc3RpbmF0aW9uIiAtLWltbXV0YWJsZSAtLXNpemUtb25seQo2NDc6dXBsb2FkX21hbmlmZXN0X2ltbXV0YWJsZSgpewo2NDk6ICBbWyAtcyAiJFBBUlRTX01BTklGRVNUIiAmJiAhIC1MICIkUEFSVFNfTUFOSUZFU1QiIF1dIHx8IGRpZSAiTE9DQUxfUEFSVFNfTUFOSUZFU1RfTk9UX1JFQURZIiA2NQo2NTA6ICBbWyAiJHtQQVJUU19NQU5JRkVTVF9TSEE6LX0iID1+IF5bMC05YS1mXXs2NH0kIF1dIHx8IGRpZSAiTE9DQUxfUEFSVFNfTUFOSUZFU1RfU0hBX05PVF9SRUFEWSIgNjUKNjUxOiAgZGVzdGluYXRpb249IiQocmVtb3RlX21hbmlmZXN0X3BhdGggIiRiYXNlIikiCjY1MjogIHJ1bl9yY2xvbmUgY29weXRvICIkUEFSVFNfTUFOSUZFU1QiICIkZGVzdGluYXRpb24iIC0taW1tdXRhYmxlIC0tc2l6ZS1vbmx5CjY1NTojIFNFQ1RJT05fQ0xPVURfQV9VUExPQURfUEFTU19WMQ==\nPIPE_3_SCORE=5\nPIPE_3_BASENAME=vm150-runtime.py\nPIPE_3_PATH_SHA256=1f2b9620938f600855ee9172ae67b59709d740fe981c64c0d2b78b8298192b4f\nPIPE_3_FILE_SHA256=af1fcb7b519b60b203c940bfb6c6373fd012b691f1479f7e42a4c8b54bc17b2a\nPIPE_3_SCHEDULE_TARGET_COUNT=0\nPIPE_3_QEMU_EXECUTION_DIAG_COUNT=0\nPIPE_3_SELFTEST_REPLACEMENT486_COUNT=0\nPIPE_3_VZDUMP_QEMU_COUNT=1\nPIPE_3_RCLONE_COUNT=7\nPIPE_3_CLOUD_QUORUM_COUNT=2\nPIPE_3_SEAL_WRITTEN_COUNT=2\nPIPE_3_PAYLOAD_PARTS_COUNT=1\nPIPE_3_TRANSPORT_COUNT=0\nPIPE_3_RESTORE_VALIDATION_COUNT=0\nPIPE_3_SCHEDULE_RESULT_COUNT=0\nPIPE_3_RELEVANT_LINE_COUNT=175\nPIPE_3_RELEVANT_B64=MjE6Vk1JRD0xNTAKMjk6T0xEX1NUQVRFPXBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAvY2xvdWQtcXVvcnVtL3ZtMTUwJykvKE9MRF9HRU4rJy5qc29uJykKMzA6T0xEX1NUQVRFX1NIQT0nNjgwZGVjZDkwZWMwNmFmMTE5ZDRhNjUwN2RiOTRjMDA4N2E4YTIzNzM5NmFhNDhkZTBmMWFmYWM4NWJiYTY4OCcKMzE6T0xEX1JFU1RPUkU9cGF0aGxpYi5QYXRoKCcvdmFyL2xpYi9ob21lbGFiLWJhY2t1cC92bS1yZXN0b3JlLXZhbGlkYXRpb24vdm0xNTAnKS8oT0xEX0dFTisnLmpzb24nKQozMjpPTERfUkVTVE9SRV9TSEE9J2JiYTQ4Y2MzNWZhNjFmZjQ0MDc5ZGE5ZGZkNWI2NWI5N2U4NTZmNjM5Yjg5M2Y3ZGI4NTEwMGIyOGE1ODE2ZTAnCjM0OlNFQUw9cGF0aGxpYi5QYXRoKCcvdmFyL2xpYi9ob21lbGFiLWFkbWluL3NlYWxzJykvKFRBU0tfSUQrJy5qc29uJykKMzU6U0VFRF9UQVJHRVQ9cGF0aGxpYi5QYXRoKCcvdmFyL2xpYi92ei90ZW1wbGF0ZS9pc28vc25pa2tldC12bTE1MC1zZWVkLmlzbycpCjUyOlFNUkVTVE9SRT0nL3Vzci9zYmluL3FtcmVzdG9yZScKNTQ6UkNMT05FPScvdXNyL2Jpbi9yY2xvbmUnCjU3OlFVRVVFPScvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi12bS1jbG91ZC1xdW9ydW0tcXVldWUnCjU4OldPUktFUj0nL3Vzci9sb2NhbC9saWJleGVjL2hvbWVsYWItdm0tY2xvdWQtcXVvcnVtLW5vZGUtd29ya2VyJwo2MDpCQUNLVVBfTE9DS1M9WycvcnVuL2xvY2svaG9tZWxhYi1iYWNrdXAtZGlzcGF0Y2hlci5sb2NrJywnL3J1bi9sb2NrL2hvbWVsYWItdm0tY2xvdWQtcXVvcnVtLXF1ZXVlLmxvY2snLCcvcnVuL2hvbWVsYWItYmFja3VwLWhlYXZ5LmxvY2snXQo3NzpkZWYgcnVuKGFyZ3YsY2hlY2s9VHJ1ZSxpbnB1dF9ieXRlcz1Ob25lLHRpbWVvdXQ9Tm9uZSxlbnY9Tm9uZSk6Cjc4OiAgICBhcmdzPVtzdHIoeCkgZm9yIHggaW4gYXJndl0KODg6ZGVmIHRleHQoYXJndixjaGVjaz1UcnVlLHRpbWVvdXQ9Tm9uZSk6IHJldHVybiBydW4oYXJndixjaGVjaz1jaGVjayx0aW1lb3V0PXRpbWVvdXQpLnN0ZG91dC5kZWNvZGUoZXJyb3JzPSdyZXBsYWNlJykKODk6ZGVmIHJ1bl90dHkoYXJndixjaGVjaz1UcnVlLHRpbWVvdXQ9Tm9uZSk6CjkwOiAgICBhcmdzPVtzdHIoeCkgZm9yIHggaW4gYXJndl0KMTY0OmRlZiB0YXJnZXRfc2hhcGUoY2ZnKToKMTgxOiAgICBpZiB0YXJnZXRfc2hhcGUoY2ZnKTogcmV0dXJuICdUQVJHRVQnCjE4NTogICAgcm93cz1beCBmb3IgeCBpbiBkYXRhIGlmIGludCh4LmdldCgndm1pZCcsLTEpKT09MTUwXQoyMDE6ZGVmIGFzc2VydF9vbGRfcmVjb3ZlcnkocmVhZF9yZW1vdGU9VHJ1ZSk6CjIwMjogICAgaWYgbm90IE9MRF9TVEFURS5pc19maWxlKCkgb3Igc2hhKE9MRF9TVEFURSkhPU9MRF9TVEFURV9TSEE6IGRpZSgnT0xEX1NUQVRFX1NIQV9NSVNNQVRDSCcsNjYpCjIwMzogICAgaWYgbm90IE9MRF9SRVNUT1JFLmlzX2ZpbGUoKSBvciBzaGEoT0xEX1JFU1RPUkUpIT1PTERfUkVTVE9SRV9TSEE6IGRpZSgnT0xEX1JFU1RPUkVfU0hBX01JU01BVENIJyw2NikKMjA0OiAgICBzdD1qc29uLmxvYWRzKE9MRF9TVEFURS5yZWFkX3RleHQoKSk7IHJ2PWpzb24ubG9hZHMoT0xEX1JFU1RPUkUucmVhZF90ZXh0KCkpCjIwNTogICAgY2hlY2tzPVtzdC5nZXQoJ3N0YXR1cycpPT0nU0VBTEVEJyxzdC5nZXQoJ2Nsb3VkX3F1b3J1bScpPT0yLHN0LmdldCgnY2xvdWRfYV92ZXJpZmllZCcpIGlzIFRydWUsc3QuZ2V0KCdjbG91ZF9iX3ZlcmlmaWVkJykgaXMgVHJ1ZSxzdC5nZXQoJ3BhcnRfaGFzaGVzX3ZlcmlmaWVkJykgaXMgVHJ1ZSxzdC5nZXQoJ3NlYWxfd3JpdHRlbicpIGlzIFRydWUsc3QuZ2V0KCdjbG91ZF9hX3NlYWxfdmVyaWZpZWQnKSBpcyBUcnVlLHN0LmdldCgnY2xvdWRfYl9zZWFsX3ZlcmlmaWVkJykgaXMgVHJ1ZSxzdC5nZXQoJ2xvY2FsX2NsZWFudXAnKT09J09LJyxzdC5nZXQoJ2xvY2FsX3BheWxvYWRfcHJlc2VudCcpIGlzIEZhbHNlLHJ2LmdldCgncmVzdWx0Jyk9PSdPSycscnYuZ2V0KCdwYXlsb2FkX3NoYTI1Nl92ZXJpZmllZCcpIGlzIFRydWUscnYuZ2V0KCdhcmNoaXZlX3JlY292ZXJ5X3JlYWRiYWNrX3ZlcmlmaWVkJykgaXMgVHJ1ZSxydi5nZXQoJ3Byb3htb3hfY29uZmlnX2V4dHJhY3RfdmVyaWZpZWQnKSBpcyBUcnVlXQoyMDc6ICAgIGlmIHJlYWRfcmVtb3RlOgoyMDg6ICAgICAgICBiYXNlPXN0LmdldCgncmVtb3RlX2FfYmFzZScpOyBtc2hhPXN0LmdldCgncGFydHNfbWFuaWZlc3Rfc2hhMjU2JykKMjA5OiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYmFzZSxzdHIpIG9yIG5vdCBiYXNlLmVuZHN3aXRoKCcvdm0xNTAvJytPTERfR0VOKTogZGllKCdPTERfUkVNT1RFX0FfQkFTRV9JTlZBTElEJyw2NikKMjEwOiAgICAgICAgc2VhbGI9cnVuKFtSQ0xPTkUsJ2NhdCcsYmFzZS5yc3RyaXAoJy8nKSsnL3NlYWwuanNvbiddLHRpbWVvdXQ9NjApLnN0ZG91dAoyMTE6ICAgICAgICBtYW49cnVuKFtSQ0xPTkUsJ2NhdCcsYmFzZS5yc3RyaXAoJy8nKSsnL1BBUlRTLnRzdiddLHRpbWVvdXQ9NjApLnN0ZG91dAoyMTI6ICAgICAgICB0cnk6IHJzPWpzb24ubG9hZHMoc2VhbGIpCjIxMzogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246IGRpZSgnT0xEX1JFTU9URV9TRUFMX0pTT05fSU5WQUxJRCcsNjYpCjIxNDogICAgICAgIGlmIHJzLmdldCgnc3RhdHVzJykhPSdTRUFMRUQnIG9yIHJzLmdldCgnZ2VuZXJhdGlvbicpIT1PTERfR0VOIG9yIHJzLmdldCgnYXJjaGl2ZV9zaGEyNTYnKSE9c3QuZ2V0KCdhcmNoaXZlX3NoYTI1NicpOiBkaWUoJ09MRF9SRU1PVEVfU0VBTF9NSVNNQVRDSCcsNjYpCjIxNTogICAgICAgIGlmIHNoYV9ieXRlcyhtYW4pIT1tc2hhOiBkaWUoJ09MRF9SRU1PVEVfTUFOSUZFU1RfU0hBX01JU01BVENIJyw2NikKMjE4OmRlZiBiYWNrdXBfYnVzeSgpOgoyMTk6ICAgIHA9cnVuKFsnL3Vzci9iaW4vcGdyZXAnLCctYWYnLCcoXnwvKSh2emR1bXB8cW1yZXN0b3JlfHBjdHJlc3RvcmV8dm1hfHpzdGR8cmNsb25lKShbWzpzcGFjZTpdXXwkKXxob21lbGFiLXZtLWNsb3VkLXF1b3J1bS1ub2RlLXdvcmtlciBiYWNrdXAnXSxjaGVjaz1GYWxzZSx0aW1lb3V0PTE1KQoyMzA6ICAgIGlmIG5vdCBwYXRobGliLlBhdGgoV09SS0VSKS5pc19maWxlKCkgb3Igc2hhKFdPUktFUikhPUNGR1sndm1fd29ya2VyX3NoYTI1NiddOiBkaWUoJ1ZNX1dPUktFUl9TT1VSQ0VfRFJJRlQnLDY2KQoyNTI6ICAgIGZyZWU9c2h1dGlsLmRpc2tfdXNhZ2UoJy9tbnQvc3RhZ2luZycpLmZyZWUKMjU3OiAgICBpZiBTRUFMLmV4aXN0cygpOiBkaWUoJ1RBU0tfQUxSRUFEWV9TRUFMRUQnLDY2KQoyNTk6ICAgIHN0YXRlPWNsYXNzaWZ5X3ZtKCk7IG93bmVyPWNsdXN0ZXJfb3duZXIoKQoyNjA6ICAgIGlmIHN0YXRlPT0nT0xEJzoKMjYyOiAgICBlbGlmIHN0YXRlPT0nVEFSR0VUJzoKMjYzOiAgICAgICAgaWYgb3duZXIhPSdwdmUwMScgb3IgcW1fc3RhdHVzKCkhPSdydW5uaW5nJzogZGllKCdWTTE1MF9UQVJHRVRfSURFTlRJVFlfSU5WQUxJRCcsNjYpCjI2NDogICAgZWxzZTogZGllKCdWTTE1MF9TVEFURV8nK3N0YXRlLDY2KQoyNjU6ICAgIGlmIGJhY2t1cF9idXN5KCk6IGRpZSgnQUNUSVZFX0JBQ0tVUF9SRVNUT1JFX1BSRVNFTlQnLDc1KQoyNjc6ICAgIG9iaj17J3NjaGVtYSc6J3NuaWtrZXQtdm0xNTAtcHJlZmxpZ2h0LXYyJywnc3RhdHVzJzonT0snLCdhdF91dGMnOm5vdygpLCd2bV9zdGF0ZSc6c3RhdGUsJ293bmVyJzpvd25lciwnb2xkX2dlbmVyYXRpb24nOk9MRF9HRU4sJ29sZF9yZWNvdmVyeSc6J1NFQUxFRF9SRVNUT1JFX1BST1ZFTicsJ2ltYWdlX3NoYTI1Nic6Q0ZHWydpbWFnZV9zaGEyNTYnXSwncXVldWVfc2hhMjU2JzpDRkdbJ3ZtX3F1ZXVlX3NoYTI1NiddLCd3b3JrZXJfc2hhMjU2JzpDRkdbJ3ZtX3dvcmtlcl9zaGEyNTYnXSwnZWRnZV9yZWFkb25seV9zaGEyNTYnOnNoYV9ieXRlcyhlZGdlLmVuY29kZSgpKSwnc291cmNlX2hlYWQnOnNvdXJjZV9oZWFkLCdzdGFnaW5nX2ZyZWVfYnl0ZXMnOmZyZWUsJ3JvbGxiYWNrX21pbl9mcmVlX2J5dGVzJzpuZWVkLCdwcm9kdWN0aW9uX2NoYW5nZWQnOkZhbHNlfQoyNjk6ICAgIHByaW50KGYnUFJFRkxJR0hUX1NUQVRVUz1PS3xWTTE1MD17c3RhdGV9fE9XTkVSPXtvd25lcn18T0xEX1JFQ09WRVJZPVNFQUxFRF9SRVNUT1JFX1BST1ZFTnxJTUFHRT1QSU5ORUR8U09VUkNFPXtzb3VyY2VfaGVhZH18U1RBR0lOR19ST0xMQkFDS19DQVBBQ0lUWT1PS3xFREdFX05QTVBMVVM9UkVBRF9PTkxZX09LfFBST0RVQ1RJT05fQ0hBTkdFRD1OTycpCjI3MTpkZWYgcGFyc2VfcGFydHMoc3QsbWFuaWZlc3RfYnl0ZXMpOgoyNzM6ICAgIGZvciBpLGxpbmUgaW4gZW51bWVyYXRlKG1hbmlmZXN0X2J5dGVzLmRlY29kZSgpLnNwbGl0bGluZXMoKSk6CjI3NTogICAgICAgIGlmIGxlbihmaWVsZHMpIT00OiBkaWUoJ1JPTExCQUNLX01BTklGRVNUX1JPV19JTlZBTElEJyw3MCkKMjc3OiAgICAgICAgaWYgaWR4IT1mJ3tpOjA4ZH0nIG9yIG5hbWUhPWYncGFydC17aTowOGR9LmJpbicgb3Igbm90IHNpemVfcy5pc2RpZ2l0KCkgb3Igbm90IHJlLmZ1bGxtYXRjaChyJ1swLTlhLWZdezY0fScscHNoYSk6IGRpZSgnUk9MTEJBQ0tfTUFOSUZFU1RfUk9XX0lOVkFMSUQnLDcwKQoyODE6ICAgIGlmIGxlbihyb3dzKSE9aW50KHN0LmdldCgncGFydF9jb3VudCcsLTEpKSBvciB0b3RhbCE9aW50KHN0LmdldCgnYXJjaGl2ZV9zaXplX2J5dGVzJywtMSkpOiBkaWUoJ1JPTExCQUNLX01BTklGRVNUX1RPVEFMX0lOVkFMSUQnLDcwKQoyODY6ICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsc3RyKSBvciBwYXRobGliLlBhdGgobmFtZSkubmFtZSE9bmFtZSBvciBub3QgbmFtZS5zdGFydHN3aXRoKCd2emR1bXAtcWVtdS0xNTAtJykgb3Igbm90IG5hbWUuZW5kc3dpdGgoJy52bWEuenN0Jyk6IGRpZSgnUk9MTEJBQ0tfQVJDSElWRV9OQU1FX0lOVkFMSUQnLDY2KQozMDE6ICAgIGJhc2U9c3RbJ3JlbW90ZV9hX2Jhc2UnXS5yc3RyaXAoJy8nKQozMDI6ICAgIG1hbmlmZXN0PXJ1bihbUkNMT05FLCdjYXQnLGJhc2UrJy9QQVJUUy50c3YnXSx0aW1lb3V0PTYwKS5zdGRvdXQKMzAzOiAgICBpZiBzaGFfYnl0ZXMobWFuaWZlc3QpIT1zdC5nZXQoJ3BhcnRzX21hbmlmZXN0X3NoYTI1NicpOiBkaWUoJ1JPTExCQUNLX01BTklGRVNUX1NIQV9NSVNNQVRDSCcsNzApCjMwNDogICAgcm93cz1wYXJzZV9wYXJ0cyhzdCxtYW5pZmVzdCk7IG5hbWU9c2FmZV9hcmNoaXZlX25hbWUoc3QpCjMyODogICAgICAgICAgICBwPXN1YnByb2Nlc3MucnVuKFtSQ0xPTkUsJ2NhdCcsYmFzZSsnL3BheWxvYWQucGFydHMvJytuYW1lX2ldLHN0ZG91dD1wZixzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLHRpbWVvdXQ9MTgwMCkKMzY5OiAgICAgICAgJyNjbG91ZC1jb25maWcnLCd1c2VyczonLCcgIC0gbmFtZTogZGViaWFuJywnICAgIGdlY29zOiBEZWJpYW4nLCcgICAgZ3JvdXBzOiBbc3Vkb10nLCcgICAgc3VkbzogIkFMTD0oQUxMKSBOT1BBU1NXRDpBTEwiJywnICAgIHNoZWxsOiAvYmluL2Jhc2gnLCcgICAgbG9ja19wYXNzd2Q6IHRydWUnLCcgICAgc3NoX2F1dGhvcml6ZWRfa2V5czonLCpbJyAgICAgIC0gJyt4IGZvciB4IGluIGtleXNdLAozODM6ICAgICMgUnVuIGluIHRoZSBzZWVkIGRpcmVjdG9yeSBzbyB0aGUgSVNPIGNvbnRhaW5zIHRoZSBjYW5vbmljYWwgTm9DbG91ZCBmaWxlbmFtZXMgYXQgaXRzIHJvb3QuCjQwMDogICAgaWYgeC5nZXQoJ3NjaGVtYScpIT0nc25pa2tldC12bTE1MC1zdGFnZS12Micgb3IgeC5nZXQoJ29sZF9nZW5lcmF0aW9uJykhPU9MRF9HRU4gb3IgeC5nZXQoJ29sZF9jb25maWdfc2hhMjU2JykhPU9MRF9DT05GSUdfU0hBOiBkaWUoJ1NUQUdFX01FVEFEQVRBX0lOVkFMSUQnLDY2KQo0MTM6ICAgIGlmIFNFQUwuZXhpc3RzKCk6IGRpZSgnVEFTS19BTFJFQURZX1NFQUxFRCcsNjYpCjQxNjogICAgaWYgYmFja3VwX2J1c3koKTogZGllKCdBQ1RJVkVfQkFDS1VQX1JFU1RPUkVfUFJFU0VOVCcsNzUpCjQyNjogICAgd2l0aCBleGNsdXNpdmVfbG9ja3MoQkFDS1VQX0xPQ0tTKToKNDI3OiAgICAgICAgaWYgYmFja3VwX2J1c3koKTogZGllKCdBQ1RJVkVfQkFDS1VQX1JFU1RPUkVfUFJFU0VOVCcsNzUpCjQyOTogICAgb2JqPXsnc2NoZW1hJzonc25pa2tldC12bTE1MC1zdGFnZS12MicsJ2NvbXBsZXRlJzpUcnVlLCdjcmVhdGVkX29yX3JlZnJlc2hlZF9hdF91dGMnOm5vdygpLCdvbGRfZ2VuZXJhdGlvbic6T0xEX0dFTiwnb2xkX3N0YXRlX3NoYTI1Nic6T0xEX1NUQVRFX1NIQSwnb2xkX3Jlc3RvcmVfc2hhMjU2JzpPTERfUkVTVE9SRV9TSEEsJ29sZF9jb25maWdfc2hhMjU2JzpPTERfQ09ORklHX1NIQSwnaW1hZ2Vfc2hhMjU2JzpDRkdbJ2ltYWdlX3NoYTI1NiddLCdvcGVyYXRvcl9rZXlzX3NoYTI1Nic6c2hhKGtleXMpLCdzZWVkX3NoYTI1Nic6c2hhKHNlZWQpLCdyb2xsYmFja19hcmNoaXZlX25hbWUnOmFyY2hpdmUubmFtZSwncm9sbGJhY2tfYXJjaGl2ZV9ieXRlcyc6YXJjaGl2ZS5zdGF0KCkuc3Rfc2l6ZSwncm9sbGJhY2tfYXJjaGl2ZV9zaGEyNTYnOnN0WydhcmNoaXZlX3NoYTI1NiddLCdtdXRhdGlvbl9zdGF0ZSc6J1BSRVBBUkVEJ30KNDMxOiAgICBwaGFzZV9qc29uKCdwcmVwYXJlJyx7J3NjaGVtYSc6J3NuaWtrZXQtdm0xNTAtcHJlcGFyZS12MicsJ3N0YXR1cyc6J09LJywnYXRfdXRjJzpub3coKSwnc3RhZ2UnOnN0cihTVEFHRSksJ29sZF9nZW5lcmF0aW9uJzpPTERfR0VOLCdyb2xsYmFja19hcmNoaXZlJzonTE9DQUxfUFJFU1RBR0VEX1ZFUklGSUVEJywncm9sbGJhY2tfYXJjaGl2ZV9zaGEyNTYnOm9ialsncm9sbGJhY2tfYXJjaGl2ZV9zaGEyNTYnXSwnc2VlZF9zaGEyNTYnOm9ialsnc2VlZF9zaGEyNTYnXSwncHJpdmF0ZV9tYXRlcmlhbF9sb2dnZWQnOkZhbHNlLCdwcm9kdWN0aW9uX2NoYW5nZWQnOkZhbHNlfSkKNDMyOiAgICBwcmludChmJ1BSRVBBUkVfU1RBVFVTPU9LfE9MRF9HRU5FUkFUSU9OPXtPTERfR0VOfXxST0xMQkFDS19BUkNISVZFPUxPQ0FMX1BSRVNUQUdFRF9WRVJJRklFRHxTRUVEPU5PX0NMT1VEX0NJREFUQXxQUklWQVRFX01BVEVSSUFMX0xPR0dFRD1OT3xQUk9EVUNUSU9OX0NIQU5HRUQ9Tk8nKQo0NjI6ZGVmIGd1ZXN0X2V4ZWMoYXJndix0aW1lb3V0PTEyMCxjaGVjaz1UcnVlLHJlcXVpcmVfcGlkPUZhbHNlKToKNDYzOiAgICBwPXJ1bihbUU0sJ2d1ZXN0JywnZXhlYycsJzE1MCcsJy0tJ10rbGlzdChhcmd2KSx0aW1lb3V0PW1pbih0aW1lb3V0LDEyMCkpCjQ4MDogICAgaWYgYmFja3VwX2J1c3koKTogZGllKCdBQ1RJVkVfQkFDS1VQX1JFU1RPUkVfUFJFU0VOVCcsNzUpCjQ5MDogICAgaWYgbm90IGlkZV9jb250cmFjdCBvciBub3QgaXBjb25maWdfY29udHJhY3Q6IGRpZSgnUU1fU0VUX0NMT1VESU5JVF9DT05UUkFDVF9VTlBST1ZFTicsNjYpCjQ5NDogICAgb2JqPXsnc2NoZW1hJzonc25pa2tldC12bTE1MC1kcnktcnVuLXYyJywnc3RhdHVzJzonT0snLCdhdF91dGMnOm5vdygpLCdvbGRfZ2VuZXJhdGlvbic6T0xEX0dFTiwncm9sbGJhY2tfYXJjaGl2ZSc6J0xPQ0FMX1BSRVNUQUdFRF9WRVJJRklFRCcsJ3FnYV9hc3luY19jb250cmFjdCc6J1BST1ZFTl9PTl9DVVJSRU5UX1ZNMTUwJywndGFyZ2V0Jzp7J25hbWUnOidzbmlra2V0Jywndm1pZCc6MTUwLCdjb3Jlcyc6NCwnbWVtb3J5X21pYic6ODE5MiwnZGlza19naWInOjY0LCdpcCc6SVAsJ2dhdGV3YXknOkdXLCdtYWMnOk1BQywnZG5zJzpbR1csJ1tQUklWQVRFX0lQXSddfSwncHJveG1veF9zZXF1ZW5jZSc6WydzaHV0ZG93biBvbGQgVk0xNTAnLCdkZXN0cm95IGV4YWN0IG9sZCBWTTE1MCcsJ2NyZWF0ZSBWTTE1MCcsJ2ltcG9ydCBwaW5uZWQgRGViaWFuIDEzIGdlbmVyaWMgaW1hZ2UnLCdhdHRhY2grcmVzaXplIDY0RycsJ2F0dGFjaCB0YXNrLW93bmVkIE5vQ2xvdWQgY2lkYXRhIElTTycsJ3N0YXJ0IGFuZCB3YWl0IGZvciBndWVzdC1wcm92aXNpb24gdmlhIFFHQScsJ3N0b3AgYW5kIGRldGFjaCBzZWVkIElTTycsJ3Jlc3RhcnQgYW5kIHJldmVyaWZ5IGxvY2FsIFNuaWtrZXQgaGVhbHRoJywnY3JlYXRlIHJvb3Qtb25seSBhZG1pbiBpbnZpdGUnLCdjcmVhdGUgZnJlc2ggY2Fub25pY2FsIHJlc3RvcmUtcHJvdmVuIFZNMTUwIGJhY2t1cCddLCdyb2xsYmFjayc6J3ByZS1zdGFnZWQgZXhhY3Qgb2xkIGFyY2hpdmUgKyBxbXJlc3RvcmUgMTUwJywncHJvZHVjdGlvbl9jaGFuZ2VkJzpGYWxzZX0KNDk2OiAgICBwcmludCgnRFJZX1JVTl9TVEFUVVM9T0t8UFJPRFVDVElPTl9DSEFOR0VEPU5PfFJPTExCQUNLPUxPQ0FMX1BSRVNUQUdFRF9RTVJFU1RPUkV8UUdBX0FTWU5DX0NPTlRSQUNUPVBST1ZFTnxUQVJHRVQ9Vk0xNTBfU05JS0tFVCcpCjQ5OTpkZWYgZXhjbHVzaXZlX2xvY2tzKHBhdGhzKToKNTA0OiAgICAgICAgICAgIHRyeTogZmNudGwuZmxvY2soZi5maWxlbm8oKSxmY250bC5MT0NLX0VYfGZjbnRsLkxPQ0tfTkIpCjUwNTogICAgICAgICAgICBleGNlcHQgQmxvY2tpbmdJT0Vycm9yOgo1MDY6ICAgICAgICAgICAgICAgIGYuY2xvc2UoKTsgZGllKCdMT0NLX0JVU1lfJytwYXRobGliLlBhdGgocSkubmFtZSw3NSkKNTExOiAgICAgICAgICAgIHRyeTogZmNudGwuZmxvY2soZi5maWxlbm8oKSxmY250bC5MT0NLX1VOKTsgZi5jbG9zZSgpCjUzMjogICAgaWYgU0VFRF9UQVJHRVQuZXhpc3RzKCk6CjUzMzogICAgICAgIGlmIHNoYShTRUVEX1RBUkdFVCkhPXN4LmdldCgnc2VlZF9zaGEyNTYnKTogZGllKCdTRUVEX1RBUkdFVF9QUkVFWElTVFNfRElGRkVSRU5UJyw2NikKNTM1OiAgICB0bXA9U0VFRF9UQVJHRVQud2l0aF9uYW1lKFNFRURfVEFSR0VULm5hbWUrJy5uZXcuJytzdHIob3MuZ2V0cGlkKCkpKQo1MzY6ICAgIHNodXRpbC5jb3B5ZmlsZShzcmMsdG1wKTsgb3MuY2htb2QodG1wLDBvNjAwKTsgb3MucmVwbGFjZSh0bXAsU0VFRF9UQVJHRVQpCjUzNzpkZWYgY3JlYXRlX3RhcmdldCgpOgo1NTA6ICAgIGlmIG5vdCB0YXJnZXRfc2hhcGUocW1fY29uZmlnKCkpOiBkaWUoJ1RBUkdFVF9DT05GSUdfU0hBUEVfSU5WQUxJRCcsNzApCjU3MDogICAgaWYgY2xhc3NpZnlfdm0oKSE9J1RBUkdFVCcgb3IgcW1fc3RhdHVzKCkhPSdydW5uaW5nJzogZGllKCdUQVJHRVRfVk1fTk9UX1JVTk5JTkcnLDcwKQo1ODQ6ICAgICAgICBpZiBTRUVEX1RBUkdFVC5leGlzdHMoKToKNTg2OiAgICAgICAgICAgIGlmIHNoYShTRUVEX1RBUkdFVCkhPXN4LmdldCgnc2VlZF9zaGEyNTYnKTogZGllKCdTRUVEX1RBUkdFVF9TSEFfRFJJRlQnLDcwKQo1ODc6ICAgICAgICAgICAgU0VFRF9UQVJHRVQudW5saW5rKCkKNTk0OiAgICBlbGlmIFNFRURfVEFSR0VULmV4aXN0cygpOgo1OTU6ICAgICAgICBkaWUoJ1VOUkVGRVJFTkNFRF9TRUVEX1RBUkdFVF9QUkVTRU5UJyw3MCkKNjA1OmRlZiBzdHJpY3RfYmFja3VwX2V2aWRlbmNlKGdlbik6CjYwNjogICAgc2Y9cGF0aGxpYi5QYXRoKCcvdmFyL2xpYi9ob21lbGFiLWJhY2t1cC9jbG91ZC1xdW9ydW0vdm0xNTAnKS8oZ2VuKycuanNvbicpOyByZj1wYXRobGliLlBhdGgoJy92YXIvbGliL2hvbWVsYWItYmFja3VwL3ZtLXJlc3RvcmUtdmFsaWRhdGlvbi92bTE1MCcpLyhnZW4rJy5qc29uJykKNjA3OiAgICBpZiBub3Qgc2YuaXNfZmlsZSgpIG9yIG5vdCByZi5pc19maWxlKCk6IGRpZSgnTkVXX0JBQ0tVUF9FVklERU5DRV9NSVNTSU5HJyw3MCkKNjA5OiAgICBvaz1zLmdldCgnc3RhdHVzJyk9PSdTRUFMRUQnIGFuZCBzLmdldCgnY2xvdWRfcXVvcnVtJyk9PTIgYW5kIHMuZ2V0KCdjbG91ZF9hX3ZlcmlmaWVkJykgaXMgVHJ1ZSBhbmQgcy5nZXQoJ2Nsb3VkX2JfdmVyaWZpZWQnKSBpcyBUcnVlIGFuZCBzLmdldCgnY2xvdWRfYV9zZWFsX3ZlcmlmaWVkJykgaXMgVHJ1ZSBhbmQgcy5nZXQoJ2Nsb3VkX2Jfc2VhbF92ZXJpZmllZCcpIGlzIFRydWUgYW5kIHMuZ2V0KCdwYXJ0X2hhc2hlc192ZXJpZmllZCcpIGlzIFRydWUgYW5kIHMuZ2V0KCdzZWFsX3dyaXR0ZW4nKSBpcyBUcnVlIGFuZCBzLmdldCgnbG9jYWxfcGF5bG9hZF9wcmVzZW50JykgaXMgRmFsc2UgYW5kIHMuZ2V0KCdsb2NhbF9jbGVhbnVwJyk9PSdPSycgYW5kIHIuZ2V0KCdyZXN1bHQnKT09J09LJyBhbmQgci5nZXQoJ3BheWxvYWRfc2hhMjU2X3ZlcmlmaWVkJykgaXMgVHJ1ZSBhbmQgci5nZXQoJ2FyY2hpdmVfcmVjb3ZlcnlfcmVhZGJhY2tfdmVyaWZpZWQnKSBpcyBUcnVlIGFuZCByLmdldCgncHJveG1veF9jb25maWdfZXh0cmFjdF92ZXJpZmllZCcpIGlzIFRydWUKNjEwOiAgICBpZiBub3Qgb2s6IGRpZSgnTkVXX0JBQ0tVUF9OT1RfU1RSSUNUTFlfUFJPVkVOJyw3MCkKNjEyOmRlZiBmb3JjZV9iYWNrdXAoKToKNjEzOiAgICBlbnY9b3MuZW52aXJvbi5jb3B5KCk7IGVudlsnSE9NRUxBQl9CQUNLVVBfRElTUEFUQ0hFUiddPScxJwo2MTQ6ICAgIHA9cnVuKFtXT1JLRVIsJ2JhY2t1cCcsJzE1MCddLHRpbWVvdXQ9NTQwMCxlbnY9ZW52KQo2MTY6ICAgIG09cmUuc2VhcmNoKHInKD9tKV5HRU5FUkFUSU9OPSh2bTE1MC1wdmUwMS1bMC05VFpdKykkJyxvdXQpCjYxNzogICAgaWYgbm90IG06IGRpZSgnTkVXX0JBQ0tVUF9HRU5FUkFUSU9OX01JU1NJTkcnLDcwKQo2MTk6ICAgIGlmIGdlbj09T0xEX0dFTjogZGllKCdORVdfQkFDS1VQX1JFVVNFRF9PTERfR0VORVJBVElPTicsNzApCjYyMDogICAgc3RyaWN0X2JhY2t1cF9ldmlkZW5jZShnZW4pCjYyMzpkZWYgcmVzdG9yZV9vbGRfbG9ja2VkKCk6CjYyNjogICAgcnVuX3R0eShbUU1SRVNUT1JFLHN0cihhcmNoaXZlKSwnMTUwJywnLS1zdG9yYWdlJywnbG9jYWwtbHZtJ10sdGltZW91dD0yNDAwKQo2Mjc6ICAgIGlmIG5vdCBvbGRfY2ZnX21hdGNoKHFtX2NvbmZpZygpKTogZGllKCdST0xMQkFDS19SRVNUT1JFRF9DT05GSUdfU0hBX01JU01BVENIJyw3MCkKNjI4OiAgICBpZiBTRUVEX1RBUkdFVC5leGlzdHMoKToKNjMwOiAgICAgICAgaWYgc2hhKFNFRURfVEFSR0VUKSE9c3guZ2V0KCdzZWVkX3NoYTI1NicpOiBkaWUoJ1JPTExCQUNLX1NFRURfVEFSR0VUX1NIQV9EUklGVCcsNzApCjYzMTogICAgICAgIFNFRURfVEFSR0VULnVubGluaygpCjY0MDogICAgaWYgU0VBTC5leGlzdHMoKTogZGllKCdUQVNLX0FMUkVBRFlfU0VBTEVEJyw2NikKNjQzOiAgICBzdGF0ZT1jbGFzc2lmeV92bSgpCjY0NDogICAgaWYgc3RhdGUgbm90IGluICgnT0xEJywnVEFSR0VUJyk6IGRpZSgnQVBQTFlfVk1fU1RBVEVfJytzdGF0ZSw2NikKNjQ1OiAgICBzeD1zdGFnZV9vYmooVHJ1ZSk7IG11dGF0aW9uX3N0YXRlPXN4LmdldCgnbXV0YXRpb25fc3RhdGUnKQo2NDY6ICAgIGlmIHN0YXRlPT0nVEFSR0VUJyBhbmQgbXV0YXRpb25fc3RhdGU9PSdGSU5BTF9BRE1JTl9CQUNLVVBfUFJPVkVOJzogZGllKCdBUFBMWV9SRUZVU0VTX0ZJTkFMX0FETUlOX0JBQ0tVUF9QUk9WRU5fVVNFX1NFQUwnLDY2KQo2NDc6ICAgIGlmIHN0YXRlPT0nVEFSR0VUJyBhbmQgbXV0YXRpb25fc3RhdGU9PSdUQVJHRVRfQkFDS1VQX1BST1ZFTic6CjY0ODogICAgICAgIGdlbj1zeC5nZXQoJ25ld19nZW5lcmF0aW9uJykKNjQ5OiAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZ2VuLHN0cik6IGRpZSgnQVBQTFlfUkVVU0VfR0VORVJBVElPTl9NSVNTSU5HJyw2NikKNjUwOiAgICAgICAgc3RyaWN0X2JhY2t1cF9ldmlkZW5jZShnZW4pOyBsb2NhbF9oZWFsdGgoKQo2NTE6ICAgICAgICBwaGFzZV9qc29uKCdhcHBseScseydzY2hlbWEnOidzbmlra2V0LXZtMTUwLWFwcGx5LXYyJywnc3RhdHVzJzonT0snLCdhdF91dGMnOm5vdygpLCd2bV9zdGF0ZSc6J1RBUkdFVCcsJ2xvY2FsX2hlYWx0aCc6J09LJywnc2VlZF9kZXRhY2hlZCc6VHJ1ZSwnbmV3X2dlbmVyYXRpb24nOmdlbiwnbmV3X2JhY2t1cF9yZXN0b3JlX3Byb3Zlbic6VHJ1ZSwnb2xkX2dlbmVyYXRpb25fcHJlc2VydmVkJzpPTERfR0VOLCdvcGVyYXRvcl9pbmdyZXNzX3JlYWR5X2F0dGVzdGVkJzpUcnVlLCdhZG1pbl9pbnZpdGVfZmlsZSc6c3RyKElOVklURV9GSUxFKSwnYWRtaW5faW52aXRlX2xvZ2dlZCc6RmFsc2UsJ3JldXNlZF9wcm92ZW5fYXBwbHlfc3RhdGUnOlRydWV9KQo2NTI6ICAgICAgICBwcmludChmJ0FQUExZX1NUQVRVUz1PS3xSRVNVTFQ9UkVVU0VEX1BST1ZFTl9UQVJHRVR8Vk0xNTA9U05JS0tFVHxORVdfQkFDS1VQPXtnZW59fE5FV19CQUNLVVBfUkVTVE9SRT1QUk9WRU58T0xEX0dFTkVSQVRJT05fUFJFU0VSVkVEPXtPTERfR0VOfXxJTkdSRVNTX0FUVEVTVEVEPVlFU3xJTlZJVEVfTE9HR0VEPU5PJykKNjU0OiAgICBtdXRhdGlvbl9zdGFydGVkPShzdGF0ZT09J1RBUkdFVCcpOyB0YXJnZXRfZ3JlZW49bXV0YXRpb25fc3RhdGUgaW4gKCdUQVJHRVRfTE9DQUxfR1JFRU4nLCdUQVJHRVRfQkFDS1VQX1BST1ZFTicsJ0ZJTkFMX0FETUlOX0JBQ0tVUF9QUk9WRU4nKQo2NTU6ICAgIHdpdGggZXhjbHVzaXZlX2xvY2tzKFsnL3J1bi9sb2NrLycrVEFTS19JRCsnLmxvY2snXSk6CjY1NjogICAgICAgIHdpdGggZXhjbHVzaXZlX2xvY2tzKEJBQ0tVUF9MT0NLUyk6CjY1ODogICAgICAgICAgICAgICAgaWYgYmFja3VwX2J1c3koKTogZGllKCdBQ1RJVkVfQkFDS1VQX1JFU1RPUkVfUFJFU0VOVCcsNzUpCjY1OTogICAgICAgICAgICAgICAgaWYgc3RhdGU9PSdPTEQnOgo2NjA6ICAgICAgICAgICAgICAgICAgICBkZXN0cm95X3ZtKCk7IG11dGF0aW9uX3N0YXJ0ZWQ9VHJ1ZTsgdXBkYXRlX3N0YWdlKG11dGF0aW9uX3N0YXRlPSdPTERfUkVNT1ZFRCcpCjY2MTogICAgICAgICAgICAgICAgICAgIGNyZWF0ZV90YXJnZXQoKTsgdXBkYXRlX3N0YWdlKG11dGF0aW9uX3N0YXRlPSdUQVJHRVRfQ1JFQVRFRCcpCjY2MzogICAgICAgICAgICAgICAgcHJvdmlzaW9uX2hhc2g9d2FpdF9ndWVzdF9wcm92aXNpb24oKTsgdXBkYXRlX3N0YWdlKG11dGF0aW9uX3N0YXRlPSdUQVJHRVRfUFJPVklTSU9ORUQnLGd1ZXN0X3Byb3Zpc2lvbl9zdGF0dXNfc2hhMjU2PXByb3Zpc2lvbl9oYXNoKQo2NjU6ICAgICAgICAgICAgICAgIHRhcmdldF9ncmVlbj1UcnVlOyB1cGRhdGVfc3RhZ2UobXV0YXRpb25fc3RhdGU9J1RBUkdFVF9MT0NBTF9HUkVFTicsbG9jYWxfaGVhbHRoX2JlZm9yZV9zZWVkX2RldGFjaF9zaGEyNTY9aGVhbHRoMSxsb2NhbF9oZWFsdGhfYWZ0ZXJfc2VlZF9kZXRhY2hfc2hhMjU2PWhlYWx0aDIpCjY2NjogICAgICAgICAgICAgICAgaW52aXRlX3N0YXRlPWdlbmVyYXRlX2ludml0ZSgpOyB1cGRhdGVfc3RhZ2UoYWRtaW5faW52aXRlPWludml0ZV9zdGF0ZSkKNjY3OiAgICAgICAgICAgICAgICBnZW4sYmhhc2g9Zm9yY2VfYmFja3VwKCk7IHVwZGF0ZV9zdGFnZShtdXRhdGlvbl9zdGF0ZT0nVEFSR0VUX0JBQ0tVUF9QUk9WRU4nLG5ld19nZW5lcmF0aW9uPWdlbixiYWNrdXBfb3V0cHV0X3NoYTI1Nj1iaGFzaCkKNjY5OiAgICAgICAgICAgICAgICBpZiBtdXRhdGlvbl9zdGFydGVkIGFuZCBub3QgdGFyZ2V0X2dyZWVuOgo2NzE6ICAgICAgICAgICAgICAgICAgICAgICAgc3RvcF92bSgpOyByZXN0b3JlX29sZF9sb2NrZWQoKTsgdXBkYXRlX3N0YWdlKG11dGF0aW9uX3N0YXRlPSdBVVRPX1JPTExFRF9CQUNLX09MRCcpCjY3MjogICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnQVVUT19ST0xMQkFDS19TVEFUVVM9T0t8UkVTVE9SRUQ9U05JS0tFVF9CQVNFTElORV9WTTE1MCcsZmlsZT1zeXMuc3RkZXJyKQo2NzU6ICAgICAgICAgICAgICAgIGVsaWYgbXV0YXRpb25fc3RhcnRlZCBhbmQgdGFyZ2V0X2dyZWVuOgo2NzY6ICAgICAgICAgICAgICAgICAgICBwcmludCgnUkVTVU1FX1NBRkVfVEFSR0VUX1BSRVNFUlZFRD1ZRVMnLGZpbGU9c3lzLnN0ZGVycikKNjc4OiAgICBwaGFzZV9qc29uKCdhcHBseScseydzY2hlbWEnOidzbmlra2V0LXZtMTUwLWFwcGx5LXYyJywnc3RhdHVzJzonT0snLCdhdF91dGMnOm5vdygpLCd2bV9zdGF0ZSc6J1RBUkdFVCcsJ2xvY2FsX2hlYWx0aCc6J09LJywnc2VlZF9kZXRhY2hlZCc6VHJ1ZSwnbmV3X2dlbmVyYXRpb24nOmdlbiwnbmV3X2JhY2t1cF9yZXN0b3JlX3Byb3Zlbic6VHJ1ZSwnb2xkX2dlbmVyYXRpb25fcHJlc2VydmVkJzpPTERfR0VOLCdvcGVyYXRvcl9pbmdyZXNzX3JlYWR5X2F0dGVzdGVkJzpUcnVlLCdhZG1pbl9pbnZpdGVfZmlsZSc6c3RyKElOVklURV9GSUxFKSwnYWRtaW5faW52aXRlX2xvZ2dlZCc6RmFsc2V9KQo2Nzk6ICAgIHByaW50KGYnQVBQTFlfU1RBVFVTPU9LfFZNMTUwPVNOSUtLRVR8TE9DQUxfSEVBTFRIPU9LfFNFRURfREVUQUNIRUQ9WUVTfE5FV19CQUNLVVA9e2dlbn18TkVXX0JBQ0tVUF9SRVNUT1JFPVBST1ZFTnxPTERfR0VORVJBVElPTl9QUkVTRVJWRUQ9e09MRF9HRU59fElOR1JFU1NfQVRURVNURUQ9WUVTfEFETUlOX0lOVklURT1ST09UX09OTFlfRklMRXxJTlZJVEVfTE9HR0VEPU5PJykKNjk2OiAgICBpZiBjbGFzc2lmeV92bSgpIT0nVEFSR0VUJyBvciBxbV9zdGF0dXMoKSE9J3J1bm5pbmcnOiBkaWUoJ1ZFUklGWV9UQVJHRVRfVk1fSU5WQUxJRCcsNjYpCjY5NzogICAgaGVhbHRoPWxvY2FsX2hlYWx0aCgpOyBzeD1zdGFnZV9vYmooVHJ1ZSk7IGdlbj1zeC5nZXQoJ25ld19nZW5lcmF0aW9uJykKNjk4OiAgICBpZiBub3QgaXNpbnN0YW5jZShnZW4sc3RyKTogZGllKCdWRVJJRllfTkVXX0JBQ0tVUF9HRU5FUkFUSU9OX01JU1NJTkcnLDY2KQo2OTk6ICAgIHN0cmljdF9iYWNrdXBfZXZpZGVuY2UoZ2VuKQo3MTI6ICAgIHBoYXNlX2pzb24oJ3ZlcmlmeScseydzY2hlbWEnOidzbmlra2V0LXZtMTUwLXZlcmlmeS12MicsJ3N0YXR1cyc6J09LJywnYXRfdXRjJzpub3coKSwnbG9jYWxfaGVhbHRoX3NoYTI1Nic6aGVhbHRoLCdwdWJsaWNfZG5zJzpkbnMsJ2xvY2FsX3NwbGl0X2Rucyc6bG9jYWwsJ2VkZ2VfaHR0cHMnOmVkZ2VfaHR0cHMsJ3dlbGxfa25vd24nOidPSycsJ25ld19nZW5lcmF0aW9uJzpnZW4sJ25ld19iYWNrdXBfcmVzdG9yZSc6J1BST1ZFTicsJ2ZlZGVyYXRpb25fNTI2OV93YW4nOidPUEVSQVRPUl9OT19GT1JXQVJEX0FUVEVTVEFUSU9OX1JFUVVJUkVEJywnbW9iaWxlX2F2JzonT1BFUkFUT1JfRlVOQ1RJT05BTF9URVNUX1JFUVVJUkVEJywnbGltaXRlZF9yb2xlcyc6J1JFQ09NTUVOREVEX0ZPUl9GQU1JTFlfVVNFUlMnfSkKNzEzOiAgICBwcmludChmJ1ZFUklGWV9TVEFUVVM9T0t8UFVCTElDX0ROUz1PS3xMT0NBTF9TUExJVF9ETlM9RElSRUNUX1ZNMTUwfEVER0VfSFRUUFM9T0t8V0VMTF9LTk9XTj1PS3xORVdfQkFDS1VQPXtnZW59fE5FV19CQUNLVVBfUkVTVE9SRT1QUk9WRU58UkVRVUlSRVNfT1BFUkFUT1JfQVRURVNUQVRJT049Tk9fV0FOXzUyNjlfQU5EX01PQklMRV9BVl9BTkRfQURNSU4nKQo3MTY6ICAgIGlmIFNFQUwuZXhpc3RzKCk6IGRpZSgnUk9MTEJBQ0tfUkVGVVNFU19TRUFMRUQnLDY2KQo3MjE6ICAgIHdpdGggZXhjbHVzaXZlX2xvY2tzKFsnL3J1bi9sb2NrLycrVEFTS19JRCsnLmxvY2snXSk6CjcyMjogICAgICAgIHdpdGggZXhjbHVzaXZlX2xvY2tzKEJBQ0tVUF9MT0NLUyk6CjcyMzogICAgICAgICAgICBpZiBiYWNrdXBfYnVzeSgpOiBkaWUoJ0FDVElWRV9CQUNLVVBfUkVTVE9SRV9QUkVTRU5UJyw3NSkKNzI0OiAgICAgICAgICAgIHN0b3Bfdm0oKTsgcmVzdG9yZV9vbGRfbG9ja2VkKCk7IHVwZGF0ZV9zdGFnZShtdXRhdGlvbl9zdGF0ZT0nUk9MTEVEX0JBQ0tfT0xEJykKNzI1OiAgICBwaGFzZV9qc29uKCdyb2xsYmFjaycseydzY2hlbWEnOidzbmlra2V0LXZtMTUwLXJvbGxiYWNrLXYyJywnc3RhdHVzJzonT0snLCdhdF91dGMnOm5vdygpLCdyZXN1bHQnOidSRVNUT1JFRF9PTEQnLCdvbGRfZ2VuZXJhdGlvbic6T0xEX0dFTn0pCjcyNjogICAgcHJpbnQoZidST0xMQkFDS19TVEFUVVM9T0t8UkVTVUxUPVJFU1RPUkVEX05FWFRDTE9VRHxPTERfR0VORVJBVElPTj17T0xEX0dFTn0nKQo3Mjg6ZGVmIHNlYWwoKToKNzI5OiAgICBpZiBTRUFMLmV4aXN0cygpOgo3MzA6ICAgICAgICB4PWpzb24ubG9hZHMoU0VBTC5yZWFkX3RleHQoKSkKNzMxOiAgICAgICAgaWYgeC5nZXQoJ3N0YXR1cycpPT0nU0VBTEVEJyBhbmQgeC5nZXQoJ3Rhc2tfaWQnKT09VEFTS19JRDoKNzMyOiAgICAgICAgICAgIHBoYXNlX2pzb24oJ3NlYWwnLHgpOyBwcmludCgnU0VBTF9TVEFUVVM9T0t8UkVTVUxUPUFMUkVBRFlfU0VBTEVEJyk7IHJldHVybgo3MzM6ICAgICAgICBkaWUoJ0VYSVNUSU5HX1NFQUxfSU5WQUxJRCcsNjYpCjczNDogICAgc3g9c3RhZ2Vfb2JqKFRydWUpOyBtdXRhdGlvbl9zdGF0ZT1zeC5nZXQoJ211dGF0aW9uX3N0YXRlJyk7IGdlbj1zeC5nZXQoJ25ld19nZW5lcmF0aW9uJykKNzM1OiAgICBpZiBtdXRhdGlvbl9zdGF0ZSBub3QgaW4gKCdUQVJHRVRfQkFDS1VQX1BST1ZFTicsJ0ZJTkFMX0FETUlOX0JBQ0tVUF9QUk9WRU4nKSBvciBub3QgaXNpbnN0YW5jZShnZW4sc3RyKTogZGllKCdTRUFMX1RBUkdFVF9CQUNLVVBfTk9UX1BST1ZFTicsNjYpCjczNjogICAgaWYgY2xhc3NpZnlfdm0oKSE9J1RBUkdFVCcgb3IgcW1fc3RhdHVzKCkhPSdydW5uaW5nJzogZGllKCdTRUFMX1RBUkdFVF9JTlZBTElEJyw2NikKNzM3OiAgICBzdHJpY3RfYmFja3VwX2V2aWRlbmNlKGdlbik7IGxvY2FsX2hlYWx0aCgpCjc0MjogICAgcHJlX2FkbWluX2dlbj1zeC5nZXQoJ3ByZV9hZG1pbl9nZW5lcmF0aW9uJykgaWYgbXV0YXRpb25fc3RhdGU9PSdGSU5BTF9BRE1JTl9CQUNLVVBfUFJPVkVOJyBlbHNlIGdlbgo3NDM6ICAgIGlmIG11dGF0aW9uX3N0YXRlIT0nRklOQUxfQURNSU5fQkFDS1VQX1BST1ZFTic6Cjc0NDogICAgICAgIHdpdGggZXhjbHVzaXZlX2xvY2tzKFsnL3J1bi9sb2NrLycrVEFTS19JRCsnLmxvY2snXSk6Cjc0NTogICAgICAgICAgICB3aXRoIGV4Y2x1c2l2ZV9sb2NrcyhCQUNLVVBfTE9DS1MpOgo3NDY6ICAgICAgICAgICAgICAgIGlmIGJhY2t1cF9idXN5KCk6IGRpZSgnQUNUSVZFX0JBQ0tVUF9SRVNUT1JFX1BSRVNFTlQnLDc1KQo3NDc6ICAgICAgICAgICAgICAgIGZpbmFsX2dlbixmaW5hbF9oYXNoPWZvcmNlX2JhY2t1cCgpCjc0ODogICAgICAgIHVwZGF0ZV9zdGFnZShtdXRhdGlvbl9zdGF0ZT0nRklOQUxfQURNSU5fQkFDS1VQX1BST1ZFTicscHJlX2FkbWluX2dlbmVyYXRpb249cHJlX2FkbWluX2dlbixuZXdfZ2VuZXJhdGlvbj1maW5hbF9nZW4sZmluYWxfYmFja3VwX291dHB1dF9zaGEyNTY9ZmluYWxfaGFzaCkKNzUxOiAgICAgICAgc3RyaWN0X2JhY2t1cF9ldmlkZW5jZShnZW4pCjc1MjogICAgb2JqPXsnc2NoZW1hJzonc25pa2tldC12bTE1MC1zZWFsLXYyJywnc3RhdHVzJzonU0VBTEVEJywndGFza19pZCc6VEFTS19JRCwnY2hhbmdlX2lkJzpDRkdbJ2NoYW5nZV9pZCddLCdzb3VyY2VfaGVhZCc6c291cmNlX2hlYWQsJ3NlYWxlZF9hdF91dGMnOm5vdygpLCd2bWlkJzoxNTAsJ2RvbWFpbic6J2NoYXQuZ3JhbTEucnUnLCdwcmVfYWRtaW5fZ2VuZXJhdGlvbic6cHJlX2FkbWluX2dlbiwnbmV3X2dlbmVyYXRpb24nOmdlbiwnbmV3X2JhY2t1cF9yZXN0b3JlX3Byb3Zlbic6VHJ1ZSwnZmluYWxfcG9zdF9hZG1pbl9iYWNrdXAnOlRydWUsJ29sZF9nZW5lcmF0aW9uX3ByZXNlcnZlZCc6T0xEX0dFTiwnbW9iaWxlX2F2X3Rlc3QnOidQQVNTJywnd2FuXzUyNjlfZm9yd2FyZGVkJzpGYWxzZSwnYWRtaW5fYWNjb3VudF9jcmVhdGVkJzpUcnVlLCdmYW1pbHlfdXNlcl9yb2xlJzonTElNSVRFRF9SRUNPTU1FTkRFRCcsJ2ludml0ZV9sb2dnZWQnOkZhbHNlfQo3NTc6ICAgIGF0b21pY19qc29uKFNFQUwsb2JqKQo3NTg6ICAgIHBoYXNlX2pzb24oJ3NlYWwnLG9iaikKNzU5OiAgICBwcmludChmJ1NFQUxfU1RBVFVTPU9LfFRBU0s9e1RBU0tfSUR9fEZJTkFMX1BPU1RfQURNSU5fQkFDS1VQPXtnZW59fE1PQklMRV9BVj1QQVNTfFdBTl81MjY5PU5PVF9GT1JXQVJERUR8QURNSU5fQUNDT1VOVD1DUkVBVEVEfElOVklURV9MT0dHRUQ9Tk98Uk9MTEJBQ0tfU1RBR0VfUkVUQUlORUQ9WUVTJykKNzYyOiAgICBhY3Rpb249c3lzLmFyZ3ZbMV0gaWYgbGVuKHN5cy5hcmd2KT09MiBlbHNlICcnCjc2NDogICAgICAgIGFjdGlvbnM9eydwcmVmbGlnaHQnOnByZWZsaWdodCwncHJlcGFyZSc6cHJlcGFyZSwnZHJ5LXJ1bic6ZHJ5cnVuLCdhcHBseSc6YXBwbHksJ3ZlcmlmeSc6dmVyaWZ5LCdyb2xsYmFjayc6cm9sbGJhY2ssJ3NlYWwnOnNlYWx9\nPIPE_4_SCORE=5\nPIPE_4_BASENAME=homelab-backup-audit\nPIPE_4_PATH_SHA256=8625af1e2ff2eda46e03d400dced040d3506b25fd94cde5318eca74aa3a80888\nPIPE_4_FILE_SHA256=1c2cd8a00859492c010ed35baf5eb67f4278544809de8c2563421a6f3e356ed3\nPIPE_4_SCHEDULE_TARGET_COUNT=0\nPIPE_4_QEMU_EXECUTION_DIAG_COUNT=0\nPIPE_4_SELFTEST_REPLACEMENT486_COUNT=0\nPIPE_4_VZDUMP_QEMU_COUNT=0\nPIPE_4_RCLONE_COUNT=5\nPIPE_4_CLOUD_QUORUM_COUNT=2\nPIPE_4_SEAL_WRITTEN_COUNT=2\nPIPE_4_PAYLOAD_PARTS_COUNT=1\nPIPE_4_TRANSPORT_COUNT=1\nPIPE_4_RESTORE_VALIDATION_COUNT=0\nPIPE_4_SCHEDULE_RESULT_COUNT=0\nPIPE_4_RELEVANT_LINE_COUNT=114\nPIPE_4_RELEVANT_B64=MzpNT0RFPXN5cy5hcmd2WzFdIGlmIGxlbihzeXMuYXJndik+MSBlbHNlICJhbGwiCjQ6aWYgTU9ERSBub3QgaW4gKCJhbGwiLCJ3cml0ZS1oZWFsdGgiLCJzY2hlZHVsZWQiLCJjb250cmFjdCIpOgo1OiAgICBwcmludCgiQVVESVRfRVJST1I9VVNBR0VfYWxsX3dyaXRlLWhlYWx0aF9zY2hlZHVsZWRfY29udHJhY3QiLGZpbGU9c3lzLnN0ZGVycik7IHN5cy5leGl0KDY0KQo3OiAgICBwcmludCgiQVVESVRfQ09OVFJBQ1Q9djItcGx1cy1zZWFsZWQtcXVvcnVtIikKODogICAgcHJpbnQoIkFVRElUX1NDSEVNQT1ob21lbGFiLWJhY2t1cC1hdWRpdC12MyIpCjExOlJFRz1wYXRobGliLlBhdGgoIi9ldGMvaG9tZWxhYi1iYWNrdXAvdGFyZ2V0cy5qc29uIikKMTI6U1RBVEU9cGF0aGxpYi5QYXRoKCIvdmFyL2xpYi9ob21lbGFiLWJhY2t1cC12Mi9zdGF0ZSIpCjEzOlFST09UPXBhdGhsaWIuUGF0aCgiL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAvY2xvdWQtcXVvcnVtIikKMTQ6Vk1SRVNUPXBhdGhsaWIuUGF0aCgiL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAvdm0tcmVzdG9yZS12YWxpZGF0aW9uIikKMTU6QVBQUkVTVD1wYXRobGliLlBhdGgoIi92YXIvbGliL2hvbWVsYWItYmFja3VwL2FwcC1yZXN0b3JlLXZhbGlkYXRpb24iKQoxNjpSRUdIPSIvdXNyL2xvY2FsL2xpYmV4ZWMvaG9tZWxhYi1iYWNrdXAtdGFyZ2V0LXJlZ2lzdHJ5IgoxNzpBUFBRPSIvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi1hcHAtY2xvdWQtcXVvcnVtLXF1ZXVlIgoxODpHRlNIPSIvdXNyL2xvY2FsL2xpYmV4ZWMvaG9tZWxhYi1iYWNrdXAtZ2ZzLXBvbGljeSIKMTk6R0ZTUD0iL2V0Yy9ob21lbGFiLWJhY2t1cC9nZnMtcmV0ZW50aW9uLmpzb24iCjIwOlJFVD0iL3Vzci9sb2NhbC9zYmluL2hvbWVsYWItYmFja3VwLXJldGVudGlvbi1nYyIKMjI6QlJBTkNIPSJjci0yMDI2LTEwMDUtYmFja3VwLXYyLWhlYWx0aC1hbGVydGluZy1yZW1lZGlhdGlvbiIKMjM6RFJTRUFMPXBhdGhsaWIuUGF0aCgiL3Zhci9saWIvaG9tZWxhYi1hZG1pbi9zZWFscy9zaXRlLWRyLWZpbmFsLWFjY2VwdGFuY2UtdjEuanNvbiIpCjI0OkNMT1VEQl9IRUFMVEg9cGF0aGxpYi5QYXRoKCIvdmFyL2xpYi9za2xhZGNoaWstcmVwb3J0cy1tb25pdG9yLWJhY2t1cC9yZXN0b3JlLWNoZWNrLWhlYWx0aC50eHQiKQoyNTpIRUFMVEhTPVtwYXRobGliLlBhdGgoIi92YXIvbGliL2hvbWVsYWItaGVhbHRoL2JhY2t1cC1hdWRpdC12Mi5qc29uIikscGF0aGxpYi5QYXRoKCIvdmFyL2xpYi9ob21lbGFiLWhlYWx0aC9iYWNrdXAtYXVkaXQuanNvbiIpXQo0MjogICAgZm9yIGsgaW4gKCJzZWFsZWRfZXBvY2giLCJsYXN0X3N1Y2Nlc3NfZXBvY2giLCJ1cGRhdGVkX2Vwb2NoIik6CjQ1OiAgICBmb3IgayBpbiAoInNlYWxlZF9hdF91dGMiLCJ1cGRhdGVkX2F0X3V0YyIsImNvbXBsZXRlZF9hdF91dGMiKToKNTM6ZGVmIGxhdGVzdF9sZWdhY3kobG9naWNhbCxraW5kKToKNjY6ICAgIGdlbj1vYmouZ2V0KCJnZW5lcmF0aW9uIikKNjc6ICAgIHN0cmljdD0ob2JqLmdldCgic3RhdHVzIik9PSJTRUFMRUQiIGFuZCBvYmouZ2V0KCJjbG91ZF9xdW9ydW0iKT09MiBhbmQgb2JqLmdldCgiY2xvdWRfYV92ZXJpZmllZCIpIGlzIFRydWUgYW5kIG9iai5nZXQoImNsb3VkX2JfdmVyaWZpZWQiKSBpcyBUcnVlIGFuZCBvYmouZ2V0KCJwYXJ0X2hhc2hlc192ZXJpZmllZCIpIGlzIFRydWUgYW5kIG9iai5nZXQoInNlYWxfd3JpdHRlbiIpIGlzIFRydWUgYW5kIG9iai5nZXQoImxvY2FsX3BheWxvYWRfcHJlc2VudCIpIGlzIEZhbHNlIGFuZCBvYmouZ2V0KCJsb2NhbF9jbGVhbnVwIik9PSJPSyIpCjcwOiAgICByZXN0b3JlPUZhbHNlCjc0OiAgICAgICAgICAgIHJlc3RvcmU9KHJqLmdldCgicmVzdWx0Iik9PSJPSyIpCjc3OiAgICByZXR1cm4geyJnZW5lcmF0aW9uIjpnZW4sInN0cmljdCI6c3RyaWN0LCJyZXN0b3JlX29rIjpyZXN0b3JlLCJhZ2Vfc2Vjb25kcyI6YWdlLCJzdGF0ZV9maWxlIjpzdHIocCksIm9iaiI6b2JqfQo5NTppc3N1ZXM9W107IHRhcmdldHM9W107IG5vdz1pbnQodGltZS50aW1lKCkpCjExNTogICAgICAgIGZvciB4IGluIGpzb24ubG9hZHMocm91dCk6IHJlc291cmNlc1tzdHIoeC5nZXQoInZtaWQiKSldPXgKMTIzOiAgICBraW5kPXJbImtpbmQiXTsgaWRlbnQ9clsiaWQiXTsgcmVjPXsibG9naWNhbF9pZCI6bGlkLCJraW5kIjpraW5kLCJzdGF0ZSI6IlVOVkVSSUZJRUQifQoxMjg6ICAgICAgICB0cnk6IHYyPWpzb24ubG9hZHMoKFNUQVRFLyhzaWQrIi5qc29uIikpLnJlYWRfdGV4dChlbmNvZGluZz0idXRmLTgiKSkKMTM5OiAgICAgICAgbGVnYWN5PWxhdGVzdF9sZWdhY3kobGlkLCJWTSIpCjE0MDogICAgICAgIGxlZ2FjeV9vaz1ib29sKGxlZ2FjeSBhbmQgbGVnYWN5WyJzdHJpY3QiXSBhbmQgbGVnYWN5WyJyZXN0b3JlX29rIl0gYW5kIGxlZ2FjeVsiYWdlX3NlY29uZHMiXSBpcyBub3QgTm9uZSBhbmQgbGVnYWN5WyJhZ2Vfc2Vjb25kcyJdPHZtX3NsYSkKMTQyOiAgICAgICAgc291cmNlPSgiVjIiIGlmIHYyX29rIGVsc2UgKCJTRUFMRURfUVVPUlVNIiBpZiBsZWdhY3lfb2sgZWxzZSAiTk9ORSIpKQoxNDM6ICAgICAgICByZWMudXBkYXRlKHsic3RhdGUiOiJGUkVTSCIgaWYgZnJlc2ggZWxzZSAiU1RBTEUiLCJzb3VyY2UiOnNvdXJjZSwidjJfYWdlX3NlY29uZHMiOnYyX2FnZSwibGVnYWN5X2FnZV9zZWNvbmRzIjpsZWdhY3lbImFnZV9zZWNvbmRzIl0gaWYgbGVnYWN5IGVsc2UgTm9uZSwicmVwbGljYV9jb3VudCI6cmVwY291bnQsInN0YXRlX2lkIjpzaWQsImdlbmVyYXRpb24iOih2Mi5nZXQoImdlbmVyYXRpb24iKSBpZiB2Ml9vayBhbmQgaXNpbnN0YW5jZSh2MixkaWN0KSBlbHNlIChsZWdhY3lbImdlbmVyYXRpb24iXSBpZiBsZWdhY3kgZWxzZSBOb25lKSl9KQoxNDQ6ICAgICAgICBpZiBub3QgZnJlc2g6IGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkhJR0giLCJjb2RlIjoiUlBPX0JSRUFDSCIsImxvZ2ljYWxfaWQiOmxpZCwicm9vdF9jYXVzZSI6Ik5PX0ZSRVNIX1YyX09SX1NFQUxFRF9RVU9SVU0ifSkKMTQ4OiAgICAgICAgICAgICAgICBpc3N1ZXMuYXBwZW5kKHsic2V2ZXJpdHkiOiJDUklUSUNBTCIsImNvZGUiOiJMT0NBTF9QQVlMT0FEX0xFQUsiLCJsb2dpY2FsX2lkIjpsaWQsInJvb3RfY2F1c2UiOiJMQVRFU1RfU1RBVEVfTE9DQUxfUEFZTE9BRF9QUkVTRU5UIn0pCjE0OTogICAgICAgICAgICBpZiBvYmouZ2V0KCJzdGF0dXMiKSE9IlNFQUxFRCIgYW5kIGxlZ2FjeVsiYWdlX3NlY29uZHMiXSBpcyBub3QgTm9uZSBhbmQgbGVnYWN5WyJhZ2Vfc2Vjb25kcyJdPDE3MjgwMDoKMTUwOiAgICAgICAgICAgICAgICBpc3N1ZXMuYXBwZW5kKHsic2V2ZXJpdHkiOiJISUdIIiwiY29kZSI6IklOQ09NUExFVEVfR0VORVJBVElPTiIsImxvZ2ljYWxfaWQiOmxpZCwicm9vdF9jYXVzZSI6IkxBVEVTVF9SRUNFTlRfU1RBVEVfTk9UX1NFQUxFRCJ9KQoxNTM6ICAgICAgICBmcmVzaD0oZGVjIGluICgiU0tJUF9GUkVTSCIsIkJBQ0tVUF9GUkVTSCIpKQoxNTQ6ICAgICAgICBsZWdhY3k9bGF0ZXN0X2xlZ2FjeShsaWQsIkFQUCIpCjE1NTogICAgICAgIGlmIGxlZ2FjeSBhbmQgbGVnYWN5WyJhZ2Vfc2Vjb25kcyJdIGlzIG5vdCBOb25lIGFuZCBsZWdhY3lbImFnZV9zZWNvbmRzIl08YXBwX3NsYSBhbmQgbGVnYWN5WyJzdHJpY3QiXSBhbmQgbGVnYWN5WyJyZXN0b3JlX29rIl06CjE1NzogICAgICAgIHJlYy51cGRhdGUoeyJzdGF0ZSI6IkZSRVNIIiBpZiBmcmVzaCBlbHNlICJTVEFMRSIsImRlY2lzaW9uIjpkZWMsImxlZ2FjeV9hZ2Vfc2Vjb25kcyI6bGVnYWN5WyJhZ2Vfc2Vjb25kcyJdIGlmIGxlZ2FjeSBlbHNlIE5vbmUsImdlbmVyYXRpb24iOmxlZ2FjeVsiZ2VuZXJhdGlvbiJdIGlmIGxlZ2FjeSBlbHNlIE5vbmV9KQoxNjI6ICAgICAgICAgICAgICAgIGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkNSSVRJQ0FMIiwiY29kZSI6IkxPQ0FMX1BBWUxPQURfTEVBSyIsImxvZ2ljYWxfaWQiOmxpZCwicm9vdF9jYXVzZSI6IkxBVEVTVF9TVEFURV9MT0NBTF9QQVlMT0FEX1BSRVNFTlQifSkKMTYzOiAgICAgICAgICAgIGlmIG9iai5nZXQoInN0YXR1cyIpIT0iU0VBTEVEIiBhbmQgbGVnYWN5WyJhZ2Vfc2Vjb25kcyJdIGlzIG5vdCBOb25lIGFuZCBsZWdhY3lbImFnZV9zZWNvbmRzIl08MTcyODAwOgoxNjQ6ICAgICAgICAgICAgICAgIGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkhJR0giLCJjb2RlIjoiSU5DT01QTEVURV9HRU5FUkFUSU9OIiwibG9naWNhbF9pZCI6bGlkLCJyb290X2NhdXNlIjoiTEFURVNUX1JFQ0VOVF9TVEFURV9OT1RfU0VBTEVEIn0pCjE2NjogICAgICAgIHRyeTogb2JqPWpzb24ubG9hZHMoKFNUQVRFLyhsaWQrIi5qc29uIikpLnJlYWRfdGV4dChlbmNvZGluZz0idXRmLTgiKSkKMTcyOiAgICAgICAgcmVjLnVwZGF0ZSh7InN0YXRlIjoiRlJFU0giIGlmIGZyZXNoIGVsc2UgIlNUQUxFIiwiYWdlX3NlY29uZHMiOmFnZSwiZ2VuZXJhdGlvbiI6b2JqLmdldCgiZ2VuZXJhdGlvbiIpIGlmIGlzaW5zdGFuY2Uob2JqLGRpY3QpIGVsc2UgTm9uZX0pCjE3MzogICAgICAgIGlmIG5vdCBmcmVzaDogaXNzdWVzLmFwcGVuZCh7InNldmVyaXR5IjoiSElHSCIsImNvZGUiOiJSUE9fQlJFQUNIIiwibG9naWNhbF9pZCI6bGlkLCJyb290X2NhdXNlIjoiQ09OVFJPTF9TVEFURV9OT1RfRlJFU0gifSkKMTc0OiAgICB0YXJnZXRzLmFwcGVuZChyZWMpCjE3NjppZiBsZW4odGFyZ2V0cykhPWxlbihhY3RpdmUpOgoxNzc6ICAgIGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkNSSVRJQ0FMIiwiY29kZSI6IkxJRkVDWUNMRV9DT1ZFUkFHRV9HQVAiLCJsb2dpY2FsX2lkIjoiLSIsInJvb3RfY2F1c2UiOiJBQ1RJVkVfVEFSR0VUX0NPVU5UX01JU01BVENIIn0pCjE4MDogICAgKCJob21lbGFiLWJhY2t1cC12Mi50aW1lciIsIlYyX1RJTUVSX0JBRCIpLAoxODE6ICAgICgiaG9tZWxhYi1hcHAtY2xvdWQtcXVvcnVtLXF1ZXVlLnRpbWVyIiwiQVBQX1RJTUVSX0JBRCIpLAoxODI6ICAgICgiaG9tZWxhYi1iYWNrdXAtcmV0ZW50aW9uLWdjLnRpbWVyIiwiUkVURU5USU9OX1RJTUVSX0JBRCIpLAoxODM6ICAgICgiaG9tZWxhYi1hbGVydG1hbmFnZXItYmFja3VwLWhlYWx0aC50aW1lciIsIkFMRVJUX1RJTUVSX0JBRCIpLAoxODg6ZGVmIGV4cGVjdGVkX3YyX2hlYXZ5X2xvY2tfb3duZXIoKToKMTg5OiAgICBhcmMsYSxfPXJ1bihbInN5c3RlbWN0bCIsInNob3ciLCJob21lbGFiLWJhY2t1cC12Mi5zZXJ2aWNlIiwiLXAiLCJBY3RpdmVTdGF0ZSIsIi0tdmFsdWUiXSwxMCkKMTkwOiAgICBwcmMscGlkX3RleHQsXz1ydW4oWyJzeXN0ZW1jdGwiLCJzaG93IiwiaG9tZWxhYi1iYWNrdXAtdjIuc2VydmljZSIsIi1wIiwiTWFpblBJRCIsIi0tdmFsdWUiXSwxMCkKMTk2OiAgICBmcmMsZm8sZmU9cnVuKFsiZnVzZXIiLCIvcnVuL2hvbWVsYWItYmFja3VwLWhlYXZ5LmxvY2siXSwxMCkKMjAyOmZvciBsb2NrIGluIFsiL3J1bi9ob21lbGFiLWJhY2t1cC1oZWF2eS5sb2NrIiwiL3J1bi9sb2NrL2hvbWVsYWItYXBwLWNsb3VkLXF1b3J1bS1xdWV1ZS5sb2NrIiwiL3J1bi9sb2NrL2hvbWVsYWItdm0tY2xvdWQtcXVvcnVtLXF1ZXVlLmxvY2siLCIvcnVuL2xvY2svaG9tZWxhYi1iYWNrdXAtZGlzcGF0Y2hlci5sb2NrIl06CjIwMzogICAgcD1wYXRobGliLlBhdGgobG9jaykKMjA1OiAgICAgICAgbHJjLF8sXz1ydW4oWyJmbG9jayIsIi1uIixzdHIocCksIi1jIiwidHJ1ZSJdLDUpCjIwNzogICAgICAgICAgICBpZiBsb2NrPT0iL3J1bi9ob21lbGFiLWJhY2t1cC1oZWF2eS5sb2NrIiBhbmQgZXhwZWN0ZWRfdjJfaGVhdnlfbG9ja19vd25lcigpOgoyMTA6ICAgICAgICAgICAgICAgIGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkhJR0giLCJjb2RlIjoiTE9DS19CVVNZIiwibG9naWNhbF9pZCI6bG9jaywicm9vdF9jYXVzZSI6IkFDVElWRV9PUl9PUlBIQU5fTE9DSyJ9KQoyMTI6ZW52PW9zLmVudmlyb24uY29weSgpOyBlbnZbIkhPTUVMQUJfQkFDS1VQX0dGU19QT0xJQ1kiXT1HRlNQOyBlbnZbIkhPTUVMQUJfQkFDS1VQX1RBUkdFVF9SRUdJU1RSWSJdPXN0cihSRUcpCjIxODpyaHA9cGF0aGxpYi5QYXRoKCIvdmFyL2xpYi9ob21lbGFiLWhlYWx0aC9iYWNrdXAtcmV0ZW50aW9uLXNhZmUtZ2MuanNvbiIpCjIyNzpjbG91ZD17fQoyMjg6Zm9yIGxhYmVsLHJlbW90ZSBpbiBbKCJBIiwicHZlMDEtbWFpbC0wMS1jcnlwdDpob21lbGFiLWJhY2t1cHMiKSwoIkIiLCJwdmUwMS1tYWlsLTAyLWNyeXB0OmhvbWVsYWItYmFja3VwcyIpXToKMjI5OiAgICBscmMsbG8sXz1ydW4oWyJyY2xvbmUiLCJsc2YiLHJlbW90ZSwiLS1tYXgtZGVwdGgiLCIxIiwiLS1kaXJzLW9ubHkiXSw2MCkKMjMwOiAgICBhcmMsYW8sXz1ydW4oWyJyY2xvbmUiLCJhYm91dCIscmVtb3RlLCItLWpzb24iXSw2MCkKMjM3OiAgICAgICAgICAgICAgICBpZiBmcmFjPDAuMTU6IGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkhJR0giLCJjb2RlIjoiQ0FQQUNJVFlfTE9XIiwibG9naWNhbF9pZCI6ImNsb3VkLSIrbGFiZWwsInJvb3RfY2F1c2UiOiJGUkVFX0xUXzE1X1BFUkNFTlQifSkKMjM5OiAgICBpZiBscmMhPTA6IGlzc3Vlcy5hcHBlbmQoeyJzZXZlcml0eSI6IkNSSVRJQ0FMIiwiY29kZSI6IkNMT1VEX1VOUkVBREFCTEUiLCJsb2dpY2FsX2lkIjoiY2xvdWQtIitsYWJlbCwicm9vdF9jYXVzZSI6IlJDTE9ORV9MU0ZfRkFJTEVEIn0pCjI0MDogICAgY2xvdWRbbGFiZWxdPXJlYwoyNDI6dHJ5OiBkcj1qc29uLmxvYWRzKERSU0VBTC5yZWFkX3RleHQoZW5jb2Rpbmc9InV0Zi04IikpCjI0NDppZiBub3QgaXNpbnN0YW5jZShkcixkaWN0KSBvciBkci5nZXQoInN0YXR1cyIpIT0iU0VBTEVEIjoKMjQ1OiAgICBpc3N1ZXMuYXBwZW5kKHsic2V2ZXJpdHkiOiJDUklUSUNBTCIsImNvZGUiOiJEUl9TRUFMX01JU1NJTkciLCJsb2dpY2FsX2lkIjoiLSIsInJvb3RfY2F1c2UiOiJTSVRFX0RSX0ZJTkFMX1NFQUxfTk9UX1NFQUxFRCJ9KQoyNDc6Y2xvdWRiX29rPUZhbHNlCjI1MDogICAgX3N0YXRlX3Jvb3Q9X3BhdGhsaWIuUGF0aCgiL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAvY2xvdWQtcXVvcnVtL2FwcC1za2xhZGNoaWstcmVwb3J0cy1tb25pdG9yIikKMjUxOiAgICBfcmVzdG9yZV9yb290PV9wYXRobGliLlBhdGgoIi92YXIvbGliL2hvbWVsYWItYmFja3VwL2FwcC1yZXN0b3JlLXZhbGlkYXRpb24vYXBwLXNrbGFkY2hpay1yZXBvcnRzLW1vbml0b3IiKQoyNTI6ICAgIF9zdGF0ZXM9c29ydGVkKFtwIGZvciBwIGluIF9zdGF0ZV9yb290Lmdsb2IoIiouanNvbiIpIGlmIHAuaXNfZmlsZSgpIGFuZCBub3QgcC5pc19zeW1saW5rKCldLGtleT1sYW1iZGEgcDpwLnN0YXQoKS5zdF9tdGltZSxyZXZlcnNlPVRydWUpCjI1MzogICAgZm9yIF9zcCBpbiBfc3RhdGVzOgoyNTc6ICAgICAgICAgICAgX3N0LmdldCgic2NoZW1hIik9PSJob21lbGFiLWNsb3VkLXF1b3J1bS1wYXlsb2FkLXYxIiBhbmQKMjU5OiAgICAgICAgICAgIF9zdC5nZXQoInN0YXR1cyIpPT0iU0VBTEVEIiBhbmQgX3N0LmdldCgiY2xvdWRfcXVvcnVtIik9PTIgYW5kCjI2MDogICAgICAgICAgICBfc3QuZ2V0KCJjbG91ZF9hX3ZlcmlmaWVkIikgaXMgVHJ1ZSBhbmQgX3N0LmdldCgiY2xvdWRfYl92ZXJpZmllZCIpIGlzIFRydWUgYW5kCjI2MTogICAgICAgICAgICBfc3QuZ2V0KCJwYXJ0X2hhc2hlc192ZXJpZmllZCIpIGlzIFRydWUgYW5kIF9zdC5nZXQoInNlYWxfd3JpdHRlbiIpIGlzIFRydWUgYW5kCjI2MjogICAgICAgICAgICBfc3QuZ2V0KCJjbG91ZF9hX3NlYWxfdmVyaWZpZWQiKSBpcyBUcnVlIGFuZCBfc3QuZ2V0KCJjbG91ZF9iX3NlYWxfdmVyaWZpZWQiKSBpcyBUcnVlIGFuZAoyNjU6ICAgICAgICBfZ2VuPV9zdC5nZXQoImdlbmVyYXRpb24iKTsgX2FyY2hpdmVfc2hhPV9zdC5nZXQoImFyY2hpdmVfc2hhMjU2IikKMjY2OiAgICAgICAgX21hbmlmZXN0X3NoYT1fc3QuZ2V0KCJwYXJ0c19tYW5pZmVzdF9zaGEyNTYiKTsgX3BhcnRfY291bnQ9X3N0LmdldCgicGFydF9jb3VudCIpCjI2NzogICAgICAgIF9hcmNoaXZlX3NpemU9X3N0LmdldCgiYXJjaGl2ZV9zaXplX2J5dGVzIik7IF9yZW1vdGVfYj1fc3QuZ2V0KCJyZW1vdGVfYl9iYXNlIikKMjY5OiAgICAgICAgICAgICAgICBpc2luc3RhbmNlKF9tYW5pZmVzdF9zaGEsc3RyKSBhbmQgbGVuKF9tYW5pZmVzdF9zaGEpPT02NCBhbmQgaXNpbnN0YW5jZShfcGFydF9jb3VudCxpbnQpIGFuZAoyNzA6ICAgICAgICAgICAgICAgIF9wYXJ0X2NvdW50PjAgYW5kIGlzaW5zdGFuY2UoX2FyY2hpdmVfc2l6ZSxpbnQpIGFuZCBfYXJjaGl2ZV9zaXplPjAgYW5kIGlzaW5zdGFuY2UoX3JlbW90ZV9iLHN0cikpOgoyNzI6ICAgICAgICBfZXZwPV9yZXN0b3JlX3Jvb3QvKF9nZW4rIi5qc29uIikKMjc2OiAgICAgICAgICAgIF9ldi5nZXQoInNjaGVtYSIpPT0iaG9tZWxhYi1hcHAtcmVzdG9yZS12YWxpZGF0aW9uLXYxIiBhbmQKMjc4OiAgICAgICAgICAgIF9ldi5nZXQoImdlbmVyYXRpb24iKT09X2dlbiBhbmQgX2V2LmdldCgidHJhbnNwb3J0X3N0YXRlIik9PSJTRUFMRUQiIGFuZAoyNzk6ICAgICAgICAgICAgX2V2LmdldCgicmVzdG9yZV9zb3VyY2UiKT09IkNsb3VkIEEiIGFuZCBfZXYuZ2V0KCJwYXlsb2FkX3NoYTI1NiIpPT1fYXJjaGl2ZV9zaGEgYW5kCjI4MjogICAgICAgIF9tcD1fc3VicHJvY2Vzcy5ydW4oWyJyY2xvbmUiLCJjYXQiLF9yZW1vdGVfYi5yc3RyaXAoIi8iKSsiL1BBUlRTLnRzdiJdLHN0ZG91dD1fc3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1fc3VicHJvY2Vzcy5QSVBFLHRpbWVvdXQ9NjApCjI4MzogICAgICAgIGlmIF9tcC5yZXR1cm5jb2RlIT0wIG9yIF9oYXNobGliLnNoYTI1NihfbXAuc3Rkb3V0KS5oZXhkaWdlc3QoKSE9X21hbmlmZXN0X3NoYTogY29udGludWUKMjk0OiAgICAgICAgICAgICAgICBfcHA9X3N1YnByb2Nlc3MucnVuKFsicmNsb25lIiwiY2F0IixfcmVtb3RlX2IucnN0cmlwKCIvIikrIi9wYXlsb2FkLnBhcnRzLyIrX25hbWVdLHN0ZG91dD1fc3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1fc3VicHJvY2Vzcy5QSVBFLHRpbWVvdXQ9MTIwKQozMDM6ICAgICAgICBjbG91ZGJfb2s9VHJ1ZQozMDY6ICAgIGNsb3VkYl9vaz1GYWxzZQozMDc6aWYgbm90IGNsb3VkYl9vazoKMzA4OiAgICBpc3N1ZXMuYXBwZW5kKHsic2V2ZXJpdHkiOiJDUklUSUNBTCIsImNvZGUiOiJDTE9VRF9CX1JFU1RPUkVfRFJJTExfQkFEIiwibG9naWNhbF9pZCI6ImFwcC1za2xhZGNoaWstcmVwb3J0cy1tb25pdG9yIiwicm9vdF9jYXVzZSI6IkNBTk9OSUNBTF9DTE9VRF9CX1BBWUxPQURfT1JfUkVTVE9SRV9FVklERU5DRV9OT1RfT0sifSkKMzEwOnNvdXJjZT17ImxvY2FsX2hlYWQiOk5vbmUsInJlbW90ZV9oZWFkIjpOb25lLCJwdXNodXJsX2Rpc2FibGVkIjpGYWxzZX0KMzEzOmZyYyxmbyxfPXJ1bihbImdpdCIsIi1DIixXVCwiY29uZmlnIiwiLS1nZXQiLCJyZW1vdGUub3JpZ2luLnVybCJdLDEwKQozMTQ6cHJjLHBvLF89cnVuKFsiZ2l0IiwiLUMiLFdULCJjb25maWciLCItLWdldCIsInJlbW90ZS5vcmlnaW4ucHVzaHVybCJdLDEwKQozMjE6ICAgIGxyYyxsbyxfPXJ1bihbImdpdCIsImxzLXJlbW90ZSIsZm8uc3RyaXAoKSwicmVmcy9oZWFkcy8iK0JSQU5DSF0sMzAsZ2VudikKMzIyOiAgICBpZiBscmM9PTAgYW5kIGxvLnN0cmlwKCk6IHNvdXJjZVsicmVtb3RlX2hlYWQiXT1sby5zcGxpdCgpWzBdCjMyMzppZiBzb3VyY2VbInJlbW90ZV9oZWFkIl0hPXNvdXJjZVsibG9jYWxfaGVhZCJdOgozMjc6Zm9yIHQgaW4gdGFyZ2V0czoKMzI4OiAgICBwcmludCgiVEFSR0VUfCIrInwiLmpvaW4oZiJ7a309e3Z9IiBmb3Igayx2IGluIHQuaXRlbXMoKSBpZiB2IGlzIG5vdCBOb25lKSkKMzMxOnByaW50KGYiU1VNTUFSWXxBVURJVF9TVEFUVVM9T0t8QkFDS1VQX1NUQVRVUz17c3RhdHVzfXxBQ1RJVkVfQ09VTlQ9e2xlbihhY3RpdmUpfXxJU1NVRV9DT1VOVD17bGVuKGlzc3Vlcyl9fENMT1VEX0E9eydPSycgaWYgY2xvdWQuZ2V0KCdBJyx7fSkuZ2V0KCdyZWFkYWJsZScpIGVsc2UgJ0JBRCd9fENMT1VEX0I9eydPSycgaWYgY2xvdWQuZ2V0KCdCJyx7fSkuZ2V0KCdyZWFkYWJsZScpIGVsc2UgJ0JBRCd9fENMT1VEX0JfRFJJTEw9eydPSycgaWYgY2xvdWRiX29rIGVsc2UgJ0JBRCd9fERSX1BST1ZFTj17J1lFUycgaWYgaXNpbnN0YW5jZShkcixkaWN0KSBhbmQgZHIuZ2V0KCdzdGF0dXMnKT09J1NFQUxFRCcgZWxzZSAnTk8nfXxTT1VSQ0VfT0ZGSE9TVD17J09LJyBpZiBzb3VyY2VbJ3JlbW90ZV9oZWFkJ109PXNvdXJjZVsnbG9jYWxfaGVhZCddIGVsc2UgJ1BFTkRJTkcnfSIpCjMzMjpoZWFsdGg9eyJzY2hlbWEiOiJob21lbGFiLWJhY2t1cC1hdWRpdC12MyIsInN0YXR1cyI6c3RhdHVzLCJnZW5lcmF0ZWRfYXRfZXBvY2giOm5vdywidGFyZ2V0cyI6dGFyZ2V0cywiaXNzdWVzIjppc3N1ZXMsImNsb3VkIjpjbG91ZCwic291cmNlIjpzb3VyY2UsImNsb3VkX2JfcmVzdG9yZV9kcmlsbCI6Y2xvdWRiX29rLCJkcl9wcm92ZW4iOmJvb2woaXNpbnN0YW5jZShkcixkaWN0KSBhbmQgZHIuZ2V0KCJzdGF0dXMiKT09IlNFQUxFRCIpfQozMzM6aWYgTU9ERSBpbiAoIndyaXRlLWhlYWx0aCIsInNjaGVkdWxlZCIpOg==\nPIPE_5_SCORE=4\nPIPE_5_BASENAME=legacy_engine.py\nPIPE_5_PATH_SHA256=e4ceeb7671a8cdc119c5427c862109ecbbefb90b06c59ce1dcb68b03b8e96c95\nPIPE_5_FILE_SHA256=5715651655da32530df84a5a095b772d21dc0d1f92789465e9e6b5b1ff8a16e3\nPIPE_5_SCHEDULE_TARGET_COUNT=1\nPIPE_5_QEMU_EXECUTION_DIAG_COUNT=0\nPIPE_5_SELFTEST_REPLACEMENT486_COUNT=0\nPIPE_5_VZDUMP_QEMU_COUNT=0\nPIPE_5_RCLONE_COUNT=31\nPIPE_5_CLOUD_QUORUM_COUNT=0\nPIPE_5_SEAL_WRITTEN_COUNT=0\nPIPE_5_PAYLOAD_PARTS_COUNT=0\nPIPE_5_TRANSPORT_COUNT=3\nPIPE_5_RESTORE_VALIDATION_COUNT=0\nPIPE_5_SCHEDULE_RESULT_COUNT=2\nPIPE_5_RELEVANT_LINE_COUNT=350\nPIPE_5_RELEVANT_B64=NjpTVEFURV9ST09UPXBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKQo3OkNPTkZJR19ST09UPXBhdGhsaWIuUGF0aCgnL2V0Yy9ob21lbGFiLWJhY2t1cC12MicpCjg6VEFSR0VUU19QQVRIPUNPTkZJR19ST09ULyd0YXJnZXRzLmpzb24nCjk6V09SS19ST09UPXBhdGhsaWIuUGF0aCgnL21udC9zdGFnaW5nL2hvbWVsYWItYmFja3VwLXYyJykKMTA6RU5HSU5FX1BBVEg9cGF0aGxpYi5QYXRoKCcvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi1iYWNrdXAtdjInKQoxMTpSQ0xPTkU9c2h1dGlsLndoaWNoKCdyY2xvbmUnKSBvciAnL3Vzci9iaW4vcmNsb25lJwoxOTpST1VURVJfTEVHQUNZX1NDUklQVD1wYXRobGliLlBhdGgoJy91c3IvbG9jYWwvc2Jpbi9ob21lbGFiLXJvdXRlci1ydW5uaW5nLWNvbmZpZy1tYWlsLWNsb3VkJykKMjE6Uk9VVEVSX1RBUkdFVF9TSEE9JzRmOWRhMTI4MzE2NmExZTlmNGU2YmM3ZGQyNDBjNzZhZWY4NTc3MjE3N2Y3MTdmOTJhYmI2ZThlMmJiOGRlOTAnCjI1OkdVRVNUMjY2PXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jdC1iYWNrdXAtMjgycjEvZ3Vlc3QyNjYucHknKQoyNzpQMjcwPXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjcwcjEvcHZlMjcwLnB5JykKMjk6UDI4Mj1wYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvY3QtYmFja3VwLTI4MnIxL3B2ZTI4Mi5weScpCjMxOlAyNjU9cGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMS9wdmUyNjUucHknKQozNTogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxL3YyY29yZS5weScpLCdlMjg1YmY5YTU2NzhkMDdkY2JiOTAyNjFmOWY5M2U3ODI2ZmY1MjRlMDRjZmVjNzgwYmY1YTNjNGIwZGMyOWYyJyksCjM2OiAocGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMS90cmFuc3BvcnQyNjEucHknKSwnYjliOTJmOTU3YmY0NDFjYjVkMTcwMmY0ODgxODk3MzI4ZTZjMDMzOGY4YzNmNmQ0MWQyN2Q5YTM0OWIzNzY4OCcpLAozNzogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9zdHJlYW0tMjYzcjEvc3RyZWFtMjYzLnB5JyksJ2E4M2QwM2E4NmI5M2E4NTU3MTY2NTg2NTJkZDA3M2ZjYjI4MWNkMzg3ZmM2MjAwZmU0YmMyYTkyMmYzOWVhMTYnKSwKMzg6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvc3RyZWFtLTI2M3IxL25vZGVwbGFuMjYzLnB5JyksJ2RiNWMxNmVlMjRkMjVhYTE2OTQ1MzAzMzJkMzE5MGFiN2NjNWQ0ZjhlYjY5MDY3ZDAyNWUyN2FkNWM5OTUwNjAnKSwKMzk6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvbGFyZ2UtY2xvdWQtMjY0cjEvbGFyZ2UyNjQucHknKSwnNWNjNDY0MWZjMzVlNGRkNTU0NDk1YTM2MTQ2ZGE3ZGJiYjdmMTQyZDE0NTBlMDRjYzVkM2M4OTY3OGI4NDk3YScpLAo0NjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL2N0LWJhY2t1cC0yODJyMScpLAo0NzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1yZXRyeS0yNzByMScpLAo0ODogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMScpLAo0OTogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1ydW4tMjY2cjEnKSwKNTA6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjY4cjEnKSwKNTE6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9sYXJnZS1jbG91ZC0yNjRyMScpLAo1MjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3N0cmVhbS0yNjNyMScpLAo1MzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMScpLAo1NDogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3Jlc3RvcmUtMjYycjEnKSwKNTU6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxJyksCjU2OiBwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvdm0tYmFja3VwLTI4M3IxJyksCjU5Om1vZGU9c3lzLmFyZ3ZbMV0KNjU6ZWxpZiBtb2RlPT0nZHVtcF9hcmd2JzoKNjY6IHNvdXJjZT1wYXRobGliLlBhdGgoc3lzLmFyZ3ZbMl0pLnJlc29sdmUoKQo3MTogYXJndj1tb2QuZHVtcF9hcmd2KHJlcVsnam9iJ10scmVxWyd2emR1bXAnXSxwYXRobGliLlBhdGgocmVxWydzY3JhdGNoJ10pLGludChyZXFbJ25vdyddKSkKNzI6IHByaW50KGpzb24uZHVtcHMoYXJndixzZXBhcmF0b3JzPSgnLCcsJzonKSkpCjc3OlJFTU9URVM9Wwo4MjpjbGFzcyBCYWNrdXBFcnJvcihSdW50aW1lRXJyb3IpOgoxMDU6ICAgIGlmIGxlbmd0aCBpcyBub3QgTm9uZSBhbmQgbiE9bGVuZ3RoOiByYWlzZSBCYWNrdXBFcnJvcignTE9DQUxfUEFSVF9TSE9SVF9SRUFEJykKMTA5OiAgICBpZiBub3QgaXNpbnN0YW5jZShuLGludCkgb3Igbjw9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1BBWUxPQURfU0laRV9JTlZBTElEJykKMTI5OiAgICBpZiBsZW4ob3V0KSE9MjogcmFpc2UgQmFja3VwRXJyb3IoJ0FMTE9DQVRPUl9UV09fRElTVElOQ1RfQUNDT1VOVFNfVU5BVkFJTEFCTEUnKQoxMzI6ZGVmIHJlbW90ZV9nZW5lcmF0aW9uX3BhdGgoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM0OiAgICBmb3IgeCBpbiAoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM1OiAgICAgICAgaWYgbm90IHNhZmUuZnVsbG1hdGNoKHgpOiByYWlzZSBCYWNrdXBFcnJvcignVU5TQUZFX0NMT1VEX0NPTVBPTkVOVCcpCjEzNjogICAgcmV0dXJuIGYnaG9tZWxhYi1iYWNrdXBzL3YyL3tzY29wZX0ve2xvZ2ljYWxfaWR9L2dlbmVyYXRpb25zL3tnZW5lcmF0aW9ufScKMTM4OmRlZiBtYWtlX21hbmlmZXN0KHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbixwYXlsb2FkX2J5dGVzLHBheWxvYWRfc2hhMjU2LHBhcnRzLHJlcGxpY2FzLHNvdXJjZV9tZXRhKToKMTM5OiAgICBpZiBsZW4ocmVwbGljYXMpIT0yIG9yIGxlbih7clsncGh5c2ljYWwnXSBmb3IgciBpbiByZXBsaWNhc30pIT0yOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUkVQTElDQV9QSFlTSUNBTF9EVVBMSUNBVEUnKQoxNDA6ICAgIGlmIG5vdCByZS5mdWxsbWF0Y2gocidbMC05YS1mXXs2NH0nLHBheWxvYWRfc2hhMjU2KTogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1BBWUxPQURfU0hBX0lOVkFMSUQnKQoxNDE6ICAgIGlmIHN1bShpbnQocFsnYnl0ZXMnXSkgZm9yIHAgaW4gcGFydHMpIT1wYXlsb2FkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUEFSVF9UT1RBTF9NSVNNQVRDSCcpCjE0MjogICAgcmV0dXJuIHsnc2NoZW1hJzoyLCdzY29wZSc6c2NvcGUsJ2xvZ2ljYWxfaWQnOmxvZ2ljYWxfaWQsJ2dlbmVyYXRpb24nOmdlbmVyYXRpb24sJ2NyZWF0ZWRfYXRfdXRjJzp1dGNub3coKSwKMTQ5OmRlZiBkZWZhdWx0X3RhcmdldHMoKToKMTUzOiAgICBmb3Igdm1pZCx0eXAgaW4gWygxMTAsJ2x4YycpLCgxMTEsJ2x4YycpLCgxMTIsJ2x4YycpLCgxMTMsJ2x4YycpLCgxMzAsJ3FlbXUnKSwoMTUwLCdxZW11JyksKDE2MCwncWVtdScpLCgxNzAsJ3FlbXUnKSwoMTcxLCdxZW11JyksKDE5MCwncWVtdScpLCgyMTAsJ3FlbXUnKSwoMjExLCdxZW11JyksKDkxMzAsJ3FlbXUnKV06CjE1NDogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzooJ2N0JyBpZiB0eXA9PSdseGMnIGVsc2UgJ3ZtJykrc3RyKHZtaWQpLCdzY29wZSc6J3B2ZScsJ3R5cGUnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnZtaWQ9PTExMn0pCjE2ODogICAgICAoJ2dhbWV2aXBlJywxNjAsJ3B2ZTAyJywnL3Zhci93d3cvZm9ydW1zL2dhbWV2aXBlL3B1YmxpYycsJ3hmX2dhbWV2aXBlJywnZ2xvYmFsX3JlYWRfbG9jaycpLAoxNjk6ICAgICAgKCdoa21vZHMnLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvaGttb2RzL3B1YmxpYycsJ3hmX2hrbW9kcycsJ2dsb2JhbF9yZWFkX2xvY2snKSwKMTcwOiAgICAgICgnemFrcnV0aW0nLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvemFrcnV0aW0vcHVibGljJywneGZfemFrcnV0aW0nLCdnbG9iYWxfcmVhZF9sb2NrJyldCjE3MTogICAgZm9yIHNsdWcsdm1pZCxub2RlLHJvb3QsZGIsc3RyYXRlZ3kgaW4gc2l0ZXM6CjE3MjogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzoneGYtJytzbHVnLCdzY29wZSc6J3hlbmZvcm8nLCd0eXBlJzoneGVuZm9ybycsJ3NsdWcnOnNsdWcsJ3ZtaWQnOnZtaWQsJ25vZGUnOm5vZGUsJ2FwcF9yb290Jzpyb290LCdkYl9uYW1lJzpkYiwnZHVtcF9zdHJhdGVneSc6c3RyYXRlZ3ksJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnNsdWcgaW4gKCdjb2RldmlwZScsJ3pha3J1dGltJyl9KQoxNzY6ZGVmIGNob29zZV9kdWVfdGFyZ2V0KHRhcmdldHMsc3RhdGUsbm93PU5vbmUpOgoxNzk6ICAgIGZvciB0IGluIHRhcmdldHM6CjE4MjogICAgICAgIGxhc3Q9aW50KHN0YXRlLmdldCh0Wydsb2dpY2FsX2lkJ10se30pLmdldCgnbGFzdF9zdWNjZXNzX2Vwb2NoJywwKSkKMTg5OmRlZiBydW4oYXJndiwgKiwgaW5wdXQ9Tm9uZSwgdGltZW91dD0zMDAsIGNoZWNrPVRydWUsIGVudj1Ob25lKToKMTkxOiAgICAgICAgcD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSx0aW1lb3V0PXRpbWVvdXQsZW52PWVudikKMTkyOiAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfVElNRU9VVCcpCjE5MzogICAgaWYgY2hlY2sgYW5kIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfRkFJTEVEJyxzdHIocC5yZXR1cm5jb2RlKSkKMTk2OmRlZiBzdHJlYW1fcHJvY2Vzc190b19maWxlKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoxOTk6ICAgICAgICB0cnk6cD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1mLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsdGltZW91dD10aW1lb3V0KQoyMDA6ICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX1RJTUVPVVQnKQoyMDE6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjIwMzpkZWYgcGlwZV90b196c3RkKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoyMDY6ICAgICAgICBzcmM9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSBpZiBpbnB1dCBpcyBub3QgTm9uZSBlbHNlIE5vbmUsc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQoyMTQ6ICAgICAgICAgICAgc3JjLmtpbGwoKTsgc3JjLndhaXQoKTsgcmFpc2UgQmFja3VwRXJyb3IoJ1BJUEVfU09VUkNFX1RJTUVPVVQnKQoyMjA6ICAgICAgICByYWlzZSBCYWNrdXBFcnJvcignUElQRV9USU1FT1VUJykKMjIxOiAgICBpZiBzcmMucmV0dXJuY29kZSE9MCBvciB6LnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdQSVBFX0ZBSUxFRCcsZid7c3JjLnJldHVybmNvZGV9X3t6LnJldHVybmNvZGV9JykKMjM2OmRlZiBsb2FkX3RhcmdldHMoKToKMjM3OiAgICBqPWpzb24ubG9hZHMoVEFSR0VUU19QQVRILnJlYWRfdGV4dCgpKQoyMzg6ICAgIGlmIGouZ2V0KCdzY2hlbWEnKSE9MSBvciBub3QgaXNpbnN0YW5jZShqLmdldCgndGFyZ2V0cycpLGxpc3QpOiByYWlzZSBCYWNrdXBFcnJvcignVEFSR0VUX01BTklGRVNUX1NDSEVNQScpCjIzOTogICAgaWRzPVt4LmdldCgnbG9naWNhbF9pZCcpIGZvciB4IGluIGpbJ3RhcmdldHMnXV0KMjQwOiAgICBpZiBsZW4oaWRzKSE9bGVuKHNldChpZHMpKTogcmFpc2UgQmFja3VwRXJyb3IoJ1RBUkdFVF9NQU5JRkVTVF9EVVBMSUNBVEUnKQoyNDE6ICAgIHJldHVybiBqWyd0YXJnZXRzJ10KMjQzOmRlZiBsb2FkX3N0YXRlX2FsbCgpOgoyNDU6ICAgIHJvb3Q9U1RBVEVfUk9PVC8nc3RhdGUnCjI1MzpkZWYgd3JpdGVfc3RhdGUobG9naWNhbF9pZCxyZXN1bHQsKiprdyk6CjI1NDogICAgaWYgcmVzdWx0IG5vdCBpbiBSRVNVTFRfQ0xBU1NFUzogcmFpc2UgQmFja3VwRXJyb3IoJ1JFU1VMVF9DTEFTU19JTlZBTElEJykKMjU3OiAgICBhdG9taWNfd3JpdGUoU1RBVEVfUk9PVC8nc3RhdGUnLyhsb2dpY2FsX2lkKycuanNvbicpLGNhbm9uaWNhbF9qc29uKGopK2InXG4nLDBvNjAwKQoyNjA6ZGVmIHJjbG9uZV9iYXNlX2FyZ3MoKToKMjYxOiAgICByZXR1cm4gW1JDTE9ORV0KMjYzOmRlZiByY2xvbmVfYWJvdXQocmVtb3RlKToKMjY0OiAgICBwPXJ1bihyY2xvbmVfYmFzZV9hcmdzKCkrWydhYm91dCcscmVtb3RlKyc6JywnLS1qc29uJywnLS1jb250aW1lb3V0JywnMTVzJywnLS10aW1lb3V0JywnNDVzJ10sdGltZW91dD02MCkKMjY2OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0FCT1VUX0pTT04nKQoyNjg6ICAgIGlmIG5vdCBpc2luc3RhbmNlKGZyZWUsaW50KTogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9GUkVFX1VOS05PV04nKQoyNzM6ICAgIGZvciBjcnlwdCxwaHlzaWNhbCBpbiBSRU1PVEVTOgoyNzQ6ICAgICAgICB0cnk6IGZyZWU9cmNsb25lX2Fib3V0KGNyeXB0KQoyNzU6ICAgICAgICBleGNlcHQgQmFja3VwRXJyb3I6IGJhZCs9MTsgY29udGludWUKMjgwOmRlZiByZW1vdGVfZXhpc3RzX2FueShzY29wZSxsb2dpY2FsX2lkLGdlbmVyYXRpb24pOgoyODE6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbikKMjgyOiAgICBmb3IgY3J5cHQsX3BoeXNpY2FsIGluIFJFTU9URVM6CjI4MzogICAgICAgIHA9cnVuKHJjbG9uZV9iYXNlX2FyZ3MoKStbJ2xzZicsY3J5cHQrJzonK3JlbCwnLS1tYXgtZGVwdGgnLCcxJ10sdGltZW91dD00NSxjaGVjaz1GYWxzZSkKMjg3OmRlZiByY2xvbmVfcmNhdChyZW1vdGVfcGF0aCwgc291cmNlX3BhdGg9Tm9uZSwgb2Zmc2V0PTAsIGxlbmd0aD1Ob25lLCBkYXRhPU5vbmUsIHRpbWVvdXQ9MzYwMCk6CjI4ODogICAgYXJndj1yY2xvbmVfYmFzZV9hcmdzKCkrWydyY2F0JyxyZW1vdGVfcGF0aCwnLS1yZXRyaWVzJywnMycsJy0tbG93LWxldmVsLXJldHJpZXMnLCc1JywnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNW0nXQoyODk6ICAgIHA9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSxzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCjI5OTogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBiOiByYWlzZSBCYWNrdXBFcnJvcignVVBMT0FEX0xPQ0FMX1NIT1JUX1JFQUQnKQozMDc6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9SQ0FUX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjMwOTpkZWYgcmNsb25lX2NhdF9oYXNoKHJlbW90ZV9wYXRoLCBleHBlY3RlZF9ieXRlcz1Ob25lLCB0aW1lb3V0PTM2MDApOgozMTE6ICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihyY2xvbmVfYmFzZV9hcmdzKCkrWydjYXQnLHJlbW90ZV9wYXRoLCctLWNvbnRpbWVvdXQnLCcyMHMnLCctLXRpbWVvdXQnLCc1bSddLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkgYXMgcDoKMzE0OiAgICAgICAgICAgICAgICBwLmtpbGwoKTsgcC53YWl0KCk7IHJhaXNlIEJhY2t1cEVycm9yKCdSQ0xPTkVfQ0FUX1RJTUVPVVQnKQozMTk6ICAgIGlmIHJjIT0wOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9GQUlMRUQnLHN0cihyYykpCjMyMDogICAgaWYgZXhwZWN0ZWRfYnl0ZXMgaXMgbm90IE5vbmUgYW5kIG4hPWV4cGVjdGVkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9TSVpFX01JU01BVENIJykKMzIzOmRlZiByY2xvbmVfY2F0X2J5dGVzKHJlbW90ZV9wYXRoLG1heF9ieXRlcz00KjEwMjQqMTAyNCk6CjMyNDogICAgcD1ydW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxyZW1vdGVfcGF0aCwnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNjBzJ10sdGltZW91dD05MCkKMzI1OiAgICBpZiBsZW4ocC5zdGRvdXQpPm1heF9ieXRlczogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9TTUFMTF9PQkpFQ1RfVE9PX0xBUkdFJykKMzI4OmRlZiBnZW5lcmF0aW9uX2lkKGxvZ2ljYWxfaWQpOgozMzI6ZGVmIHVwbG9hZF9hbmRfc2VhbCh0LHBheWxvYWRfcGF0aCxzb3VyY2VfbWV0YSk6CjMzNTogICAgZ2VuPXNvdXJjZV9tZXRhWydnZW5lcmF0aW9uJ107IHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHRbJ3Njb3BlJ10sdFsnbG9naWNhbF9pZCddLGdlbikKMzM2OiAgICBpZiByZW1vdGVfZXhpc3RzX2FueSh0WydzY29wZSddLHRbJ2xvZ2ljYWxfaWQnXSxnZW4pOiByYWlzZSBCYWNrdXBFcnJvcignR0VORVJBVElPTl9DT0xMSVNJT04nKQozMzk6ICAgIG1hbmlmZXN0PW1ha2VfbWFuaWZlc3QodFsnc2NvcGUnXSx0Wydsb2dpY2FsX2lkJ10sZ2VuLG4scHNoYSxwYXJ0cyxyZXBzLHNvdXJjZV9tZXRhKQozNDA6ICAgIG1iPWNhbm9uaWNhbF9qc29uKG1hbmlmZXN0KStiJ1xuJzsgbXNoYT1zaGEyNTZfYnl0ZXMobWIpCjM0NTogICAgICAgICAgICByY2xvbmVfcmNhdChycCxzb3VyY2VfcGF0aD1wYXlsb2FkX3BhdGgsb2Zmc2V0PXBhcnRbJ29mZnNldCddLGxlbmd0aD1wYXJ0WydieXRlcyddKQozNDY6ICAgICAgICAgICAgZ290LGdvdG49cmNsb25lX2NhdF9oYXNoKHJwLHBhcnRbJ2J5dGVzJ10pCjM0NzogICAgICAgICAgICBpZiBnb3QhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUEFSVF9SRUFEQkFDS19TSEFfTUlTTUFUQ0gnKQozNDg6ICAgICAgICByY2xvbmVfcmNhdChiYXNlKycvbWFuaWZlc3QuanNvbicsZGF0YT1tYikKMzQ5OiAgICAgICAgaWYgcmNsb25lX2NhdF9ieXRlcyhiYXNlKycvbWFuaWZlc3QuanNvbicpIT1tYjogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1JFQURCQUNLX01JU01BVENIJykKMzUwOiAgICBzZWFsPXsnc2NoZW1hJzoxLCdnZW5lcmF0aW9uJzpnZW4sJ2xvZ2ljYWxfaWQnOnRbJ2xvZ2ljYWxfaWQnXSwnbWFuaWZlc3Rfc2hhMjU2Jzptc2hhLCdwYXlsb2FkX3NoYTI1Nic6cHNoYSwnc3RhdHVzJzonU0VBTEVEJywnc2VhbGVkX2F0X3V0Yyc6dXRjbm93KCl9CjM1MTogICAgc2I9Y2Fub25pY2FsX2pzb24oc2VhbCkrYidcbicKMzU0OiAgICAgICAgcmNsb25lX3JjYXQoYmFzZSsnL1NFQUxFRC5qc29uJyxkYXRhPXNiKQozNTU6ICAgICAgICBpZiByY2xvbmVfY2F0X2J5dGVzKGJhc2UrJy9TRUFMRUQuanNvbicpIT1zYjogcmFpc2UgQmFja3VwRXJyb3IoJ1NFQUxfUkVBREJBQ0tfTUlTTUFUQ0gnKQozNTY6ICAgIHJldHVybiBtYW5pZmVzdCxtc2hhLHsndW5oZWFsdGh5JzpiYWQsJ2hlYWx0aHknOmhlYWx0aHl9CjM1ODpkZWYgcmVjb25zdHJ1Y3RfcmVwbGljYShtYW5pZmVzdCxyZXAsb3V0X3BhdGgpOgozNTk6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKG1hbmlmZXN0WydzY29wZSddLG1hbmlmZXN0Wydsb2dpY2FsX2lkJ10sbWFuaWZlc3RbJ2dlbmVyYXRpb24nXSkKMzYzOiAgICAgICAgZm9yIHBhcnQgaW4gbWFuaWZlc3RbJ3BhcnRzJ106CjM2NTogICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxiYXNlKycvcGFydHMvJytwYXJ0WyduYW1lJ10sJy0tY29udGltZW91dCcsJzIwcycsJy0tdGltZW91dCcsJzVtJ10sc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKSBhcyBwOgozNzE6ICAgICAgICAgICAgaWYgcmMhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9DQVRfRkFJTEVEJykKMzcyOiAgICAgICAgICAgIGlmIG4hPXBhcnRbJ2J5dGVzJ10gb3IgcGguaGV4ZGlnZXN0KCkhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUkVDT05TVFJVQ1RfUEFSVF9NSVNNQVRDSCcpCjM3MzogICAgaWYgdG90YWwhPW1hbmlmZXN0WydwYXlsb2FkX2J5dGVzJ10gb3IgaC5oZXhkaWdlc3QoKSE9bWFuaWZlc3RbJ3BheWxvYWRfc2hhMjU2J106IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9QQVlMT0FEX01JU01BVENIJykKMzgyOiAgICBpZiByMSE9MCBvciBwMi5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9MSVNUX0ZBSUxFRCcpCjM4NDogICAgaWYgbm90IG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9FTVBUWScpCjM4NTogICAgaWYgcmVxdWlyZWRfbWVtYmVyIGFuZCByZXF1aXJlZF9tZW1iZXIgbm90IGluIG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignUkVRVUlSRURfTUVNQkVSX01JU1NJTkcnKQozOTQ6ICAgICAgICAgICAgIyBHcmVlbiBzZXQgaXMgaW50ZW50aW9uYWxseSBDVC1vbmx5LiBTY2hlZHVsZWQgUUVNVSBiYWNrdXBzIHN0aWxsIGdldCBkdWFsIHJlbW90ZSBieXRlIHJlYWRiYWNrLgo0MDI6ICAgICAgICBpZiBwMi5yZXR1cm5jb2RlIT0wIG9yIGxlbihkYXRhKTwxMjg6IHJhaXNlIEJhY2t1cEVycm9yKCdYRU5GT1JPX0RCX0RVTVBfSU5WQUxJRCcpCjQwMzogICAgZWxzZTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZBTElEQVRPUl9VTktOT1dOX1RZUEUnKQo0MDg6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfSU5WRU5UT1JZX0pTT04nKQo0MTA6ZGVmIHNzaF9yZW1vdGUobm9kZSxhcmd2LGlucHV0PU5vbmUsdGltZW91dD0xODAwLGNoZWNrPVRydWUpOgo0MTE6ICAgIGNtZD0nUEFUSD0vdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjsgZXhwb3J0IFBBVEg7IGV4ZWMgJytzaGxleC5qb2luKFtzdHIoeCkgZm9yIHggaW4gYXJndl0pCjQxMjogICAgaWYgbm9kZT09J3B2ZTAxJzogcmV0dXJuIHJ1bihbc3RyKHgpIGZvciB4IGluIGFyZ3ZdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNDE4OiAgICByYWlzZSBCYWNrdXBFcnJvcignUFZFX0dVRVNUX1RZUEVfRFJJRlQnKQo0MjE6ICAgIGlmIG5vdCBwYXRoLmlzX2ZpbGUoKSBvciBwYXRoLmlzX3N5bWxpbmsoKSBvciBzaGEyNTZfZmlsZShwYXRoKSE9ZXhwZWN0ZWQ6IHJhaXNlIEJhY2t1cEVycm9yKGNvZGUpCjQzMTogICAgaWYgcC5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignSElTVE9SSUNBTF9HUkFQSF9JTVBPUlRfRkFJTEVEJyxmJ3JjX3twLnJldHVybmNvZGV9X3N0ZGVycl9zaGEyNTZfe2hhc2hsaWIuc2hhMjU2KHAuc3RkZXJyKS5oZXhkaWdlc3QoKX0nKQo0MzM6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9KU09OJykKNDM2OiAgICAgICAgaWYgc3RyKHBhdGhsaWIuUGF0aChvdXQuZ2V0KGssJycpKS5yZXNvbHZlKCkpIT1zdHIocGF0aGxpYi5QYXRoKHYpLnJlc29sdmUoKSk6IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9QQVRIJyxrKQo0Mzk6ZGVmIF9pc29sYXRlZF9ndWVzdDI2Nl9kdW1wX2FyZ3Yoam9iLHZ6ZHVtcCxzY3JhdGNoLG5vdyk6CjQ0MDogICAgaGVscGVyPVBhdGgoX19maWxlX18pLnJlc29sdmUoKS5wYXJlbnQvJ3B2ZTI2NV9hcmd2X2hlbHBlci5weScKNDQxOiAgICByZXE9eydqb2InOmpvYiwndnpkdW1wJzpzdHIodnpkdW1wKSwnc2NyYXRjaCc6c3RyKHNjcmF0Y2gpLCdub3cnOmludChub3cpfQo0NDM6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRTI2NV9TVUJQUk9DRVNTX0ZBSUxFRCcpCjQ0NDogICAgaWYgcC5zdGRlcnIgb3IgbGVuKHAuc3Rkb3V0KT42NTUzNjogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRTI2NV9TVUJQUk9DRVNTX09VVFBVVCcpCjQ0NTogICAgdHJ5OiBhcmd2PWpzb24ubG9hZHMocC5zdGRvdXQuZGVjb2RlKCd1dGYtOCcsJ3N0cmljdCcpKQo0NDY6ICAgIGV4Y2VwdCAoVW5pY29kZURlY29kZUVycm9yLGpzb24uSlNPTkRlY29kZUVycm9yKTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRTI2NV9TVUJQUk9DRVNTX09VVFBVVCcpIGZyb20gTm9uZQo0NDc6ICAgIGlmIHR5cGUoYXJndikgaXMgbm90IGxpc3Qgb3Igbm90IGFyZ3Ygb3IgYW55KHR5cGUoeCkgaXMgbm90IHN0ciBvciBub3QgeCBmb3IgeCBpbiBhcmd2KTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRTI2NV9TVUJQUk9DRVNTX09VVFBVVCcpCjQ0ODogICAgcmV0dXJuIGFyZ3YKNDUzOiAgICByZXR1cm4geyd2bWlkJzppbnQodFsndm1pZCddKSwnaWQnOmludCh0Wyd2bWlkJ10pLCd0eXBlJzonbHhjJywna2luZCc6J2x4YycsJ2d1ZXN0X3R5cGUnOidseGMnLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpLCduYW1lJzpyb3cuZ2V0KCduYW1lJywnJyksCjQ1NzogICAgICAgICAgICAnYmxvY2tlcnMnOltdLCdkaXNrcyc6W10sJ3RlbXBsYXRlJzpib29sKHJvdy5nZXQoJ3RlbXBsYXRlJywwKSksJ2hvb2tzY3JpcHRfcHJlc2VudCc6RmFsc2UsJ2xvY2tfcHJlc2VudCc6RmFsc2UsCjQ1ODogICAgICAgICAgICAnc25hcHNob3RfaGlzdG9yeV9pbmNsdWRlZCc6RmFsc2UsJ3VudXNlZF92b2x1bWVfY291bnQnOjAsJ2Nkcm9tX2NvdW50JzowLCdjZHJvbV9tZWRpYV9pbmNsdWRlZCc6RmFsc2UsJ2d1ZXN0X3Jlc3RvcmVfdmVyaWZpZWQnOkZhbHNlLAo0NjE6ZGVmIHByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCk6CjQ2MjogICAgam9iPV9seGNfam9iKHQscm93LG5vZGUpOyB2emR1bXA9c2h1dGlsLndoaWNoKCd2emR1bXAnKSBvciAnL3Vzci9iaW4vdnpkdW1wJwo0NjM6ICAgIHRyeTogYXJndj1faXNvbGF0ZWRfZ3Vlc3QyNjZfZHVtcF9hcmd2KGpvYix2emR1bXAscGF0aGxpYi5QYXRoKHNjcmF0Y2gpLGludCh0aW1lLnRpbWUoKSkpCjQ2NDogICAgZXhjZXB0IEJhY2t1cEVycm9yOiByYWlzZQo0NjU6ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTogcmFpc2UgQmFja3VwRXJyb3IoJ1BST1ZFTl9EVU1QX0FSR1ZfRkFJTEVEJyx0eXBlKGUpLl9fbmFtZV9fKQo0NjY6ICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3YsKGxpc3QsdHVwbGUpKSBvciBub3QgYXJndiBvciBub3QgYWxsKGlzaW5zdGFuY2UoeCxzdHIpIGZvciB4IGluIGFyZ3YpOiByYWlzZSBCYWNrdXBFcnJvcignUFJPVkVOX0RVTVBfQVJHVl9TSEFQRScpCjQ2NzogICAgYXJndj1saXN0KGFyZ3YpCjQ2ODogICAgaWYgcGF0aGxpYi5QYXRoKGFyZ3ZbMF0pLm5hbWUhPSd2emR1bXAnIG9yIHN0cihpbnQodFsndm1pZCddKSkgbm90IGluIGFyZ3Y6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX1RBUkdFVCcpCjQ2OTogICAgaWYgJy0tZHVtcGRpcicgaW4gYXJndiBvciBhbnkoeC5zdGFydHN3aXRoKCctLWR1bXBkaXI9JykgZm9yIHggaW4gYXJndik6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX1VORVhQRUNURURfRFVNUERJUicpCjQ3MDogICAgaWYgbm90IGFueSh4PT0nLS1zdGRvdXQnIG9yIHguc3RhcnRzd2l0aCgnLS1zdGRvdXQ9JykgZm9yIHggaW4gYXJndik6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX05PX1NURE9VVCcpCjQ3MTogICAgaWYgc3RyKHNjcmF0Y2gpIG5vdCBpbiBhcmd2IGFuZCBub3QgYW55KHg9PSctLXRtcGRpcj0nK3N0cihzY3JhdGNoKSBmb3IgeCBpbiBhcmd2KTogcmFpc2UgQmFja3VwRXJyb3IoJ1BST1ZFTl9EVU1QX0FSR1ZfTk9fU0NSQVRDSCcpCjQ3MjogICAgIyBBY2NlcHRlZCAyNzAvMjgyIGltcGxlbWVudGF0aW9uIHBhc3NlZCBtYXBwZWQgc2NyYXRjaCB0byB2emR1bXAgYXMgdG1wZGlyLgo0NzM6ICAgIGlmICctLXRtcGRpcicgaW4gYXJndjoKNDc0OiAgICAgICAgaT1hcmd2LmluZGV4KCctLXRtcGRpcicpCjQ3NTogICAgICAgIGlmIGkrMT49bGVuKGFyZ3YpIG9yIGFyZ3ZbaSsxXSE9c3RyKHNjcmF0Y2gpOiByYWlzZSBCYWNrdXBFcnJvcignUFJPVkVOX0RVTVBfQVJHVl9UTVBESVJfQklORElORycpCjQ3NjogICAgZWxpZiAnLS10bXBkaXI9JytzdHIoc2NyYXRjaCkgbm90IGluIGFyZ3Y6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX05PX1RNUERJUicpCjQ3NzogICAgcmV0dXJuIGFyZ3Ysam9iCjQ3OTpkZWYgX2RlZmF1bHRfdW5wcml2aWxlZ2VkX2x4Yyhub2RlLHZtaWQpOgo0ODA6ICAgIHE9c3NoX3JlbW90ZShub2RlLFsncGN0JywnY29uZmlnJyxzdHIodm1pZCldLHRpbWVvdXQ9MzApCjQ4MjogICAgaWYgJ3VucHJpdmlsZWdlZDogMScgbm90IGluIGxpbmVzOiByYWlzZSBCYWNrdXBFcnJvcignTFhDX05PVF9VTlBSSVZJTEVHRUQnKQo0ODM6ICAgIGlmIGFueSh4LnN0YXJ0c3dpdGgoJ2x4Yy5pZG1hcDonKSBvciB4LnN0YXJ0c3dpdGgoJ2x4Yy5pZG1hcCA9JykgZm9yIHggaW4gbGluZXMpOiByYWlzZSBCYWNrdXBFcnJvcignTFhDX0NVU1RPTV9JRE1BUF9VTlNVUFBPUlRFRCcpCjQ4ODogICAgcT1zc2hfcmVtb3RlKG5vZGUscG9zLHRpbWVvdXQ9MzAsY2hlY2s9RmFsc2UpCjQ4OTogICAgaWYgcS5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignTUFQUEVEX1VJRF9BQ0NFU1NfUFJPQkVfRkFJTEVEJykKNDkxOmRlZiBfc3RyZWFtX2FyZ3ZfdG9fbG9jYWwobm9kZSxhcmd2LGRlc3QsdGltZW91dD03MjAwKToKNDkzOiAgICBpZiBub2RlPT0ncHZlMDEnOiBjbWQ9YXJndgo0OTU6ICAgICAgICByZW1vdGU9J1BBVEg9L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW47IGV4cG9ydCBQQVRIOyBleGVjICcrc2hsZXguam9pbihhcmd2KQo0OTY6ICAgICAgICBjbWQ9W1NTSCwnLW8nLCdCYXRjaE1vZGU9eWVzJywnLW8nLCdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9eWVzJywncm9vdEAnK25vZGUscmVtb3RlXQo1MDI6ICAgICAgICAgICAgcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9TVFJFQU1fVElNRU9VVCcpCjUwNjogICAgICAgIHJhaXNlIEJhY2t1cEVycm9yKCdDT01NQU5EX0ZBSUxFRCcsZid2emR1bXBfcmNfe3AucmV0dXJuY29kZX1fc3RkZXJyX3NoYTI1Nl97aGFzaGxpYi5zaGEyNTYocC5zdGRlcnIpLmhleGRpZ2VzdCgpfScpCjUwNzogICAgaWYgbm90IGRlc3QuaXNfZmlsZSgpIG9yIGRlc3Quc3RhdCgpLnN0X3NpemU8PTA6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfUEFZTE9BRF9NSVNTSU5HJykKNTEwOiAgICB2bWlkPWludCh0Wyd2bWlkJ10pOyByb3dzPVtyIGZvciByIGluIGNsdXN0ZXJfaW52ZW50b3J5KCkgaWYgaW50KHIuZ2V0KCd2bWlkJywtMSkpPT12bWlkXQo1MTE6ICAgIGlmIGxlbihyb3dzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRV9HVUVTVF9OT1RfVU5JUVVFJykKNTEzOiAgICBpZiB0eXAhPXRbJ2d1ZXN0X3R5cGUnXTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRV9HVUVTVF9UWVBFX0RSSUZUJykKNTE2OiAgICAgICAgX2RlZmF1bHRfdW5wcml2aWxlZ2VkX2x4Yyhub2RlLHZtaWQpCjUxNzogICAgICAgIHNjcmF0Y2g9ZicvdmFyL3RtcC9ob21lbGFiLXZ6ZHVtcC12Mi17Z2VufScKNTE4OiAgICAgICAgc3NoX3JlbW90ZShub2RlLFsnaW5zdGFsbCcsJy1kJywnLW0nLCc3MTAnLCctbycsJzAnLCctZycsJzEwMDAwMCcsc2NyYXRjaF0sdGltZW91dD0zMCkKNTE5OiAgICAgICAgcT1zc2hfcmVtb3RlKG5vZGUsWydzdGF0JywnLWMnLCclYToldTolZycsc2NyYXRjaF0sdGltZW91dD0zMCkKNTIwOiAgICAgICAgaWYgcS5zdGRvdXQuZGVjb2RlKCkuc3RyaXAoKSE9JzcxMDowOjEwMDAwMCc6IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfTUFQUEVEX1NDUkFUQ0hfQUNDRVNTX0NPTlRSQUNUJykKNTIzOiAgICAgICAgICAgIGFyZ3Ysam9iPXByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCkKNTI1OiAgICAgICAgICAgIF9zdHJlYW1fYXJndl90b19sb2NhbChub2RlLGFyZ3YsbG9jYWwsdGltZW91dD03MjAwKQo1MjY6ICAgICAgICAgICAgaWYgbG9jYWwuc3RhdCgpLnN0X3NpemU+aW50KGpvYlsnYXJjaGl2ZV9jYXBfYnl0ZXMnXSk6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfQVJDSElWRV9DQVBfRVhDRUVERUQnKQo1Mjg6ICAgICAgICAgICAgc3NoX3JlbW90ZShub2RlLFsncm0nLCctcmYnLCctLScsc2NyYXRjaF0sdGltZW91dD02MCxjaGVjaz1GYWxzZSk7cmFpc2UKNTMwOiAgICAgICAgcmV0dXJuIGxvY2FsLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ25vZGUnOm5vZGUsJ3N0YXR1cyc6cm93LmdldCgnc3RhdHVzJyksJ3Byb2R1Y2VyX2NvbnRyYWN0JzoncHJvdmVuLTI3MC0yODItc3RyZWFtJ30sY2xlYW51cAo1MzE6ICAgICMgUUVNVSBwYXRoIHJlbWFpbnMgdW5jaGFuZ2VkOiBib3VuZGVkIGRlZGljYXRlZCBkdW1wZGlyIHdpdGggbGF0ZXIgY2xvdWQgcmVhZGJhY2svcmVjb25zdHJ1Y3Rpb24uCjUzMjogICAgc3JjZGlyPWYnL3Zhci90bXAvaG9tZWxhYi12emR1bXAtdjIte2dlbn0nCjUzMzogICAgc3NoX3JlbW90ZShub2RlLFsnaW5zdGFsbCcsJy1kJywnLW0nLCc3MDAnLCctbycsJzAnLCctZycsJzAnLHNyY2Rpcl0sdGltZW91dD0zMCkKNTM1OiAgICAgICAgc3NoX3JlbW90ZShub2RlLFsndnpkdW1wJyxzdHIodm1pZCksJy0tbW9kZScsJ3NuYXBzaG90JywnLS1jb21wcmVzcycsJ3pzdGQnLCctLWR1bXBkaXInLHNyY2Rpcl0sdGltZW91dD03MjAwKQo1MzY6ICAgICAgICBwPXNzaF9yZW1vdGUobm9kZSxbJ2ZpbmQnLHNyY2RpciwnLW1heGRlcHRoJywnMScsJy10eXBlJywnZicsJy1wcmludGYnLCclcFxuJ10sdGltZW91dD0zMCkKNTM4OiAgICAgICAgaWYgbGVuKGZpbGVzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9PVVRQVVRfTk9UX1VOSVFVRScpCjU0MjogICAgICAgIGlmIG5vdCBwYXRobGliLlBhdGgobG9jYWwpLmlzX2ZpbGUoKSBvciBwYXRobGliLlBhdGgobG9jYWwpLnN0YXQoKS5zdF9zaXplPD0wOiByYWlzZSBCYWNrdXBFcnJvcignVlpEVU1QX1BBWUxPQURfTUlTU0lORycpCjU0NDogICAgICAgIHNzaF9yZW1vdGUobm9kZSxbJ3JtJywnLXJmJywnLS0nLHNyY2Rpcl0sdGltZW91dD02MCxjaGVjaz1GYWxzZSk7cmFpc2UKNTQ1OiAgICByZXR1cm4gcGF0aGxpYi5QYXRoKGxvY2FsKSx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzoncHZlX2d1ZXN0Jywndm1pZCc6dm1pZCwnZ3Vlc3RfdHlwZSc6dHlwLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpfSx7J2tpbmQnOidwdmVfc291cmNlX2RpcicsJ25vZGUnOm5vZGUsJ3BhdGgnOnNyY2Rpcn0KNTQ4OiAgICBpZiBub3QgT1BFUkFUT1JfS0VZLmlzX2ZpbGUoKSBvciBPUEVSQVRPUl9LRVkuaXNfc3ltbGluaygpOiByYWlzZSBCYWNrdXBFcnJvcignT1BFUkFUT1JfS0VZX01JU1NJTkcnKQo1NTI6ICAgIGlmIG5vdCBtIG9yIG0uZ3JvdXAoMSkhPU9QRVJBVE9SX0tFWV9GSU5HRVJQUklOVDogcmFpc2UgQmFja3VwRXJyb3IoJ09QRVJBVE9SX0tFWV9GSU5HRVJQUklOVF9NSVNNQVRDSCcpCjU2NjogICAgaWYgbGVuKGdvb2QpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignSE9TVEtFWV9QSU5fTUlTTUFUQ0gnKQo1Njk6ZGVmIGVuc3VyZV92cHNfa25vd25faG9zdHModGFyZ2V0cyk6CjU3MTogICAgZm9yIHQgaW4gdGFyZ2V0czoKNTc2OmRlZiB2cHNfc3NoX2FyZ3YodCwgKiwgdXNlX2FnZW50PUZhbHNlKToKNTg1OmRlZiB2cHNfcnVuKHQsIHJlbW90ZV9hcmd2LCAqLCBpbnB1dD1Ob25lLCB0aW1lb3V0PTMwMCwgdXNlX2FnZW50PUZhbHNlLCBjaGVjaz1UcnVlKToKNTg2OiAgICByZW1vdGU9c2hsZXguam9pbihbc3RyKHgpIGZvciB4IGluIHJlbW90ZV9hcmd2XSkKNTg3OiAgICByZXR1cm4gcnVuKHZwc19zc2hfYXJndih0LHVzZV9hZ2VudD11c2VfYWdlbnQpK1tyZW1vdGVdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNTg5OmRlZiBib290c3RyYXBfdnBzX2tleXModGFyZ2V0cyk6CjU5MTogICAgZW5zdXJlX3Zwc19rbm93bl9ob3N0cyh0YXJnZXRzKQo1OTQ6ICAgIGZvciB0IGluIHRhcmdldHM6CjU5OTogICAgICAgIGlmIG5vdCBvcy5lbnZpcm9uLmdldCgnU1NIX0FVVEhfU09DSycpOiByYWlzZSBCYWNrdXBFcnJvcignRk9SV0FSREVEX0FHRU5UX1JFUVVJUkVEX0ZPUl9CT09UU1RSQVAnKQo2MDM6ICAgICAgICBpZiB0YWcgbm90IGluICgnQURERUQnLCdBTFJFQURZJyk6IHJhaXNlIEJhY2t1cEVycm9yKCdWUFNfQVVUSE9SSVpFRF9LRVlfQk9PVFNUUkFQX1JFU1VMVCcpCjYwNzogICAgdXM9W3ggZm9yIHggaW4gdGFyZ2V0cyBpZiB4Wyd0eXBlJ109PSd2cHNfdXMnXVswXQo2MTI6ZGVmIHJlbW90ZV9oYXNoc2V0KHQsY29tbWFuZCk6CjYxNzogICAgZmlsZXM9WydldGMvbmV0YmlyZC9pbnN0YWxsLmNvbmYnLCd2YXIvbGliL25ldGJpcmQvc3RhdGUuanNvbicsJ3Zhci9saWIvbmV0YmlyZC9zZXJ2aWNlLmpzb24nLCd2YXIvbGliL25ldGJpcmQvYWN0aXZlX3Byb2ZpbGUuanNvbicsJ3Zhci9saWIvbmV0YmlyZC9kZWZhdWx0Lmpzb24nXQo2MTk6ICAgIHByZT1yZW1vdGVfaGFzaHNldCh0LGNtZCkKNjIwOiAgICByZW1vdGU9c2hsZXguam9pbihbJ3N1ZG8nLCctbicsJ3RhcicsJy0tbnVtZXJpYy1vd25lcicsJy1DJywnLycsJy1jZicsJy0nXStmaWxlcykKNjIxOiAgICBhcmd2PXZwc19zc2hfYXJndih0LHVzZV9hZ2VudD1GYWxzZSkrW3JlbW90ZV0KNjIyOiAgICBwYXlsb2FkPXdvcmsvJ3BheWxvYWQudGFyLnpzdCc7IHBpcGVfdG9fenN0ZChhcmd2LHBheWxvYWQsdGltZW91dD02MDApCjYyMzogICAgcG9zdD1yZW1vdGVfaGFzaHNldCh0LGNtZCkKNjI0OiAgICBpZiBwcmUhPXBvc3Q6IHJhaXNlIEJhY2t1cEVycm9yKCdNRF9TT1VSQ0VfQ0hBTkdFRF9EVVJJTkdfQ0FQVFVSRScpCjYyNTogICAgcmV0dXJuIHBheWxvYWQseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3Zwc19tZCcsJ2NvbnNpc3RlbmN5JzonRklMRVNFVF9QUkVfUE9TVF9IQVNIX1NUQUJJTElUWScsJ2hhc2hzZXRfc2hhMjU2JzpwcmV9LE5vbmUKNjI5OiAgICBwcmU9cmVtb3RlX2hhc2hzZXQodCxoY21kKQo2MzA6ICAgIHJlbW90ZT1zaGxleC5qb2luKFsndGFyJywnLS1udW1lcmljLW93bmVyJywnLUMnLCcvJywnLWNmJywnLScsJ2V0Yy9uZ2lueCddKQo2MzE6ICAgIGFyZ3Y9dnBzX3NzaF9hcmd2KHQsdXNlX2FnZW50PUZhbHNlKStbcmVtb3RlXQo2MzI6ICAgIHBheWxvYWQ9d29yay8ncGF5bG9hZC50YXIuenN0JzsgcGlwZV90b196c3RkKGFyZ3YscGF5bG9hZCx0aW1lb3V0PTkwMCkKNjMzOiAgICBwb3N0PXJlbW90ZV9oYXNoc2V0KHQsaGNtZCkKNjM0OiAgICBpZiBwcmUhPXBvc3Q6IHJhaXNlIEJhY2t1cEVycm9yKCdTUEJfU09VUkNFX0NIQU5HRURfRFVSSU5HX0NBUFRVUkUnKQo2MzU6ICAgIHJldHVybiBwYXlsb2FkLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOid2cHNfc3BiJywnY29uc2lzdGVuY3knOidTVEFUSUNfQ09ORklHX0ZJTEVTRVRfUFJFX1BPU1RfSEFTSF9TVEFCSUxJVFknLCd0bHNfcmVjb3ZlcnknOidSRUlTU1VFX1RMU19PTl9SRVNUT1JFJywnaGFzaHNldF9zaGEyNTYnOnByZX0sTm9uZQo2Mzc6VVNfUkVNT1RFX1NDUklQVD1yJycnaW1wb3J0IGlvLG9zLHNxbGl0ZTMsc3lzLHRhcmZpbGUsdGltZSxqc29uLGhhc2hsaWIKNjYwOiAgICBkc3Q9c3FsaXRlMy5jb25uZWN0KCc6bWVtb3J5OicpOyBzcmMuYmFja3VwKGRzdCkKNjYzOiAgICB0aT10YXJmaWxlLlRhckluZm8obmFtZT0oJ3NxbGl0ZS1iYWNrdXBzLycrbmFtZSkpOyB0aS5zaXplPWxlbihiKTsgdGkubW9kZT0wbzYwMDsgdGkubXRpbWU9aW50KHRpbWUudGltZSgpKTsgdGYuYWRkZmlsZSh0aSxpby5CeXRlc0lPKGIpKQo2Njc6ICAgIHJlbW90ZT1zaGxleC5qb2luKFsncHl0aG9uMycsJy1JJywnLUInLCctYycsVVNfUkVNT1RFX1NDUklQVF0pCjY2ODogICAgYXJndj12cHNfc3NoX2FyZ3YodCx1c2VfYWdlbnQ9RmFsc2UpK1tyZW1vdGVdCjY2OTogICAgcGF5bG9hZD13b3JrLydwYXlsb2FkLnRhci56c3QnOyBwaXBlX3RvX3pzdGQoYXJndixwYXlsb2FkLHRpbWVvdXQ9MTIwMCkKNjcwOiAgICByZXR1cm4gcGF5bG9hZCx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzondnBzX3VzJywnY29uc2lzdGVuY3knOidTUUxJVEVfT05MSU5FX0JBQ0tVUF9QTFVTX05PTkRCX0ZJTEVTJywnc3FsaXRlX2NvdW50Jzo0fSxOb25lCjc0MzogICAgaWYgbm90IFJPVVRFUl9MRUdBQ1lfU0NSSVBULmlzX2ZpbGUoKSBvciBST1VURVJfTEVHQUNZX1NDUklQVC5pc19zeW1saW5rKCkgb3Igc2hhMjU2X2ZpbGUoUk9VVEVSX0xFR0FDWV9TQ1JJUFQpIT1ST1VURVJfTEVHQUNZX1NIQTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9MRUdBQ1lfU0NSSVBUX0lERU5USVRZJykKNzQ2OiAgICBoaXRzPVtpcCBmb3IgaXAgaW4gaXBzIGlmIHNoYTI1Nl9ieXRlcyhpcC5lbmNvZGUoKSk9PVJPVVRFUl9UQVJHRVRfU0hBXQo3NDc6ICAgIGlmIGxlbihoaXRzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9UQVJHRVRfUEFSU0UnKQo3NDg6ICAgIHRhcmdldD1oaXRzWzBdCjc1NjogICAgaWYgbGVuKHNhZmUpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignUk9VVEVSX1BBU1NGSUxFX1BBUlNFJykKNzU3OiAgICByZXR1cm4gdGFyZ2V0LHNhZmVbMF0KNzYwOiAgICByb290cz1bcGF0aGxpYi5QYXRoKCcvZXRjJykscGF0aGxpYi5QYXRoKCcvcm9vdC8uc3NoJykscGF0aGxpYi5QYXRoKCcvdmFyL2xpYi9ob21lbGFiLWJhY2t1cCcpLHBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKV0KNzc1OiAgICBpZiBsZW4odW5pcSkhPTE6IHJhaXNlIEJhY2t1cEVycm9yKCdFWEFDVF9TSEFfRklMRV9OT1RfVU5JUVVFJykKNzgzOiAgICBpZiBzaGEyNTZfYnl0ZXMoYikhPVJPVVRFUl9LTk9XTl9IT1NUU19TSEE6IHJhaXNlIEJhY2t1cEVycm9yKCdST1VURVJfS05PV05fSE9TVFNfSURFTlRJVFknKQo3ODc6ICAgIHRhcmdldCxwZj1wYXJzZV9yb3V0ZXJfbGVnYWN5KCkKNzkwOiAgICBhcmd2PVtTU0hQQVNTLCctZicsc3RyKHBmKSxTU0gsJy1wJywnMjIyMicsJy1vJywnQmF0Y2hNb2RlPW5vJywnLW8nLCdOdW1iZXJPZlBhc3N3b3JkUHJvbXB0cz0xJywnLW8nLCdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9eWVzJywnLW8nLCdVc2VyS25vd25Ib3N0c0ZpbGU9JytzdHIoUk9VVEVSX0tOT1dOX0hPU1RTKSwnLW8nLCdDb25uZWN0VGltZW91dD0xNScsJ3JvdXRlcmJhY2t1cEAnK3RhcmdldCwnc2hvdyBydW5uaW5nLWNvbmZpZyddCjc5MTogICAgcD1ydW4oYXJndix0aW1lb3V0PTYwKTsgcmV0dXJuIHAuc3Rkb3V0\nPIPE_6_SCORE=4\nPIPE_6_BASENAME=legacy_engine.py\nPIPE_6_PATH_SHA256=b08598c199b979909827472414e9d774eed12f00ff61eb1534b9cf9ff4333d05\nPIPE_6_FILE_SHA256=a5f1b1701a39eb22cf2f061d7daa7afa92789320c30b108371c3ee47d57f817c\nPIPE_6_SCHEDULE_TARGET_COUNT=1\nPIPE_6_QEMU_EXECUTION_DIAG_COUNT=0\nPIPE_6_SELFTEST_REPLACEMENT486_COUNT=0\nPIPE_6_VZDUMP_QEMU_COUNT=0\nPIPE_6_RCLONE_COUNT=31\nPIPE_6_CLOUD_QUORUM_COUNT=0\nPIPE_6_SEAL_WRITTEN_COUNT=0\nPIPE_6_PAYLOAD_PARTS_COUNT=0\nPIPE_6_TRANSPORT_COUNT=3\nPIPE_6_RESTORE_VALIDATION_COUNT=0\nPIPE_6_SCHEDULE_RESULT_COUNT=2\nPIPE_6_RELEVANT_LINE_COUNT=340\nPIPE_6_RELEVANT_B64=NjpTVEFURV9ST09UPXBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKQo3OkNPTkZJR19ST09UPXBhdGhsaWIuUGF0aCgnL2V0Yy9ob21lbGFiLWJhY2t1cC12MicpCjg6VEFSR0VUU19QQVRIPUNPTkZJR19ST09ULyd0YXJnZXRzLmpzb24nCjk6V09SS19ST09UPXBhdGhsaWIuUGF0aCgnL21udC9zdGFnaW5nL2hvbWVsYWItYmFja3VwLXYyJykKMTA6RU5HSU5FX1BBVEg9cGF0aGxpYi5QYXRoKCcvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi1iYWNrdXAtdjInKQoxMTpSQ0xPTkU9c2h1dGlsLndoaWNoKCdyY2xvbmUnKSBvciAnL3Vzci9iaW4vcmNsb25lJwoxOTpST1VURVJfTEVHQUNZX1NDUklQVD1wYXRobGliLlBhdGgoJy91c3IvbG9jYWwvc2Jpbi9ob21lbGFiLXJvdXRlci1ydW5uaW5nLWNvbmZpZy1tYWlsLWNsb3VkJykKMjE6Uk9VVEVSX1RBUkdFVF9TSEE9JzRmOWRhMTI4MzE2NmExZTlmNGU2YmM3ZGQyNDBjNzZhZWY4NTc3MjE3N2Y3MTdmOTJhYmI2ZThlMmJiOGRlOTAnCjI1OkdVRVNUMjY2PXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jdC1iYWNrdXAtMjgycjEvZ3Vlc3QyNjYucHknKQoyNzpQMjcwPXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjcwcjEvcHZlMjcwLnB5JykKMjk6UDI4Mj1wYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvY3QtYmFja3VwLTI4MnIxL3B2ZTI4Mi5weScpCjMxOlAyNjU9cGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMS9wdmUyNjUucHknKQozNTogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxL3YyY29yZS5weScpLCdlMjg1YmY5YTU2NzhkMDdkY2JiOTAyNjFmOWY5M2U3ODI2ZmY1MjRlMDRjZmVjNzgwYmY1YTNjNGIwZGMyOWYyJyksCjM2OiAocGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMS90cmFuc3BvcnQyNjEucHknKSwnYjliOTJmOTU3YmY0NDFjYjVkMTcwMmY0ODgxODk3MzI4ZTZjMDMzOGY4YzNmNmQ0MWQyN2Q5YTM0OWIzNzY4OCcpLAozNzogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9zdHJlYW0tMjYzcjEvc3RyZWFtMjYzLnB5JyksJ2E4M2QwM2E4NmI5M2E4NTU3MTY2NTg2NTJkZDA3M2ZjYjI4MWNkMzg3ZmM2MjAwZmU0YmMyYTkyMmYzOWVhMTYnKSwKMzg6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvc3RyZWFtLTI2M3IxL25vZGVwbGFuMjYzLnB5JyksJ2RiNWMxNmVlMjRkMjVhYTE2OTQ1MzAzMzJkMzE5MGFiN2NjNWQ0ZjhlYjY5MDY3ZDAyNWUyN2FkNWM5OTUwNjAnKSwKMzk6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvbGFyZ2UtY2xvdWQtMjY0cjEvbGFyZ2UyNjQucHknKSwnNWNjNDY0MWZjMzVlNGRkNTU0NDk1YTM2MTQ2ZGE3ZGJiYjdmMTQyZDE0NTBlMDRjYzVkM2M4OTY3OGI4NDk3YScpLAo0NjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL2N0LWJhY2t1cC0yODJyMScpLAo0NzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1yZXRyeS0yNzByMScpLAo0ODogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMScpLAo0OTogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1ydW4tMjY2cjEnKSwKNTA6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjY4cjEnKSwKNTE6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9sYXJnZS1jbG91ZC0yNjRyMScpLAo1MjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3N0cmVhbS0yNjNyMScpLAo1MzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMScpLAo1NDogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3Jlc3RvcmUtMjYycjEnKSwKNTU6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxJyksCjU2OiBwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvdm0tYmFja3VwLTI4M3IxJyksCjU5Om1vZGU9c3lzLmFyZ3ZbMV0KNjU6ZWxpZiBtb2RlPT0nZHVtcF9hcmd2JzoKNjY6IHNvdXJjZT1wYXRobGliLlBhdGgoc3lzLmFyZ3ZbMl0pLnJlc29sdmUoKQo3MTogYXJndj1tb2QuZHVtcF9hcmd2KHJlcVsnam9iJ10scmVxWyd2emR1bXAnXSxwYXRobGliLlBhdGgocmVxWydzY3JhdGNoJ10pLGludChyZXFbJ25vdyddKSkKNzI6IHByaW50KGpzb24uZHVtcHMoYXJndixzZXBhcmF0b3JzPSgnLCcsJzonKSkpCjc3OlJFTU9URVM9Wwo4MjpjbGFzcyBCYWNrdXBFcnJvcihSdW50aW1lRXJyb3IpOgoxMDU6ICAgIGlmIGxlbmd0aCBpcyBub3QgTm9uZSBhbmQgbiE9bGVuZ3RoOiByYWlzZSBCYWNrdXBFcnJvcignTE9DQUxfUEFSVF9TSE9SVF9SRUFEJykKMTA5OiAgICBpZiBub3QgaXNpbnN0YW5jZShuLGludCkgb3Igbjw9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1BBWUxPQURfU0laRV9JTlZBTElEJykKMTI5OiAgICBpZiBsZW4ob3V0KSE9MjogcmFpc2UgQmFja3VwRXJyb3IoJ0FMTE9DQVRPUl9UV09fRElTVElOQ1RfQUNDT1VOVFNfVU5BVkFJTEFCTEUnKQoxMzI6ZGVmIHJlbW90ZV9nZW5lcmF0aW9uX3BhdGgoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM0OiAgICBmb3IgeCBpbiAoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM1OiAgICAgICAgaWYgbm90IHNhZmUuZnVsbG1hdGNoKHgpOiByYWlzZSBCYWNrdXBFcnJvcignVU5TQUZFX0NMT1VEX0NPTVBPTkVOVCcpCjEzNjogICAgcmV0dXJuIGYnaG9tZWxhYi1iYWNrdXBzL3YyL3tzY29wZX0ve2xvZ2ljYWxfaWR9L2dlbmVyYXRpb25zL3tnZW5lcmF0aW9ufScKMTM4OmRlZiBtYWtlX21hbmlmZXN0KHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbixwYXlsb2FkX2J5dGVzLHBheWxvYWRfc2hhMjU2LHBhcnRzLHJlcGxpY2FzLHNvdXJjZV9tZXRhKToKMTM5OiAgICBpZiBsZW4ocmVwbGljYXMpIT0yIG9yIGxlbih7clsncGh5c2ljYWwnXSBmb3IgciBpbiByZXBsaWNhc30pIT0yOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUkVQTElDQV9QSFlTSUNBTF9EVVBMSUNBVEUnKQoxNDA6ICAgIGlmIG5vdCByZS5mdWxsbWF0Y2gocidbMC05YS1mXXs2NH0nLHBheWxvYWRfc2hhMjU2KTogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1BBWUxPQURfU0hBX0lOVkFMSUQnKQoxNDE6ICAgIGlmIHN1bShpbnQocFsnYnl0ZXMnXSkgZm9yIHAgaW4gcGFydHMpIT1wYXlsb2FkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUEFSVF9UT1RBTF9NSVNNQVRDSCcpCjE0MjogICAgcmV0dXJuIHsnc2NoZW1hJzoyLCdzY29wZSc6c2NvcGUsJ2xvZ2ljYWxfaWQnOmxvZ2ljYWxfaWQsJ2dlbmVyYXRpb24nOmdlbmVyYXRpb24sJ2NyZWF0ZWRfYXRfdXRjJzp1dGNub3coKSwKMTQ5OmRlZiBkZWZhdWx0X3RhcmdldHMoKToKMTUzOiAgICBmb3Igdm1pZCx0eXAgaW4gWygxMTAsJ2x4YycpLCgxMTEsJ2x4YycpLCgxMTIsJ2x4YycpLCgxMTMsJ2x4YycpLCgxMzAsJ3FlbXUnKSwoMTUwLCdxZW11JyksKDE2MCwncWVtdScpLCgxNzAsJ3FlbXUnKSwoMTcxLCdxZW11JyksKDE5MCwncWVtdScpLCgyMTAsJ3FlbXUnKSwoMjExLCdxZW11JyksKDkxMzAsJ3FlbXUnKV06CjE1NDogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzooJ2N0JyBpZiB0eXA9PSdseGMnIGVsc2UgJ3ZtJykrc3RyKHZtaWQpLCdzY29wZSc6J3B2ZScsJ3R5cGUnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnZtaWQ9PTExMn0pCjE2ODogICAgICAoJ2dhbWV2aXBlJywxNjAsJ3B2ZTAyJywnL3Zhci93d3cvZm9ydW1zL2dhbWV2aXBlL3B1YmxpYycsJ3hmX2dhbWV2aXBlJywnZ2xvYmFsX3JlYWRfbG9jaycpLAoxNjk6ICAgICAgKCdoa21vZHMnLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvaGttb2RzL3B1YmxpYycsJ3hmX2hrbW9kcycsJ2dsb2JhbF9yZWFkX2xvY2snKSwKMTcwOiAgICAgICgnemFrcnV0aW0nLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvemFrcnV0aW0vcHVibGljJywneGZfemFrcnV0aW0nLCdnbG9iYWxfcmVhZF9sb2NrJyldCjE3MTogICAgZm9yIHNsdWcsdm1pZCxub2RlLHJvb3QsZGIsc3RyYXRlZ3kgaW4gc2l0ZXM6CjE3MjogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzoneGYtJytzbHVnLCdzY29wZSc6J3hlbmZvcm8nLCd0eXBlJzoneGVuZm9ybycsJ3NsdWcnOnNsdWcsJ3ZtaWQnOnZtaWQsJ25vZGUnOm5vZGUsJ2FwcF9yb290Jzpyb290LCdkYl9uYW1lJzpkYiwnZHVtcF9zdHJhdGVneSc6c3RyYXRlZ3ksJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnNsdWcgaW4gKCdjb2RldmlwZScsJ3pha3J1dGltJyl9KQoxNzY6ZGVmIGNob29zZV9kdWVfdGFyZ2V0KHRhcmdldHMsc3RhdGUsbm93PU5vbmUpOgoxNzk6ICAgIGZvciB0IGluIHRhcmdldHM6CjE4MjogICAgICAgIGxhc3Q9aW50KHN0YXRlLmdldCh0Wydsb2dpY2FsX2lkJ10se30pLmdldCgnbGFzdF9zdWNjZXNzX2Vwb2NoJywwKSkKMTg5OmRlZiBydW4oYXJndiwgKiwgaW5wdXQ9Tm9uZSwgdGltZW91dD0zMDAsIGNoZWNrPVRydWUsIGVudj1Ob25lKToKMTkxOiAgICAgICAgcD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSx0aW1lb3V0PXRpbWVvdXQsZW52PWVudikKMTkyOiAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfVElNRU9VVCcpCjE5MzogICAgaWYgY2hlY2sgYW5kIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfRkFJTEVEJyxzdHIocC5yZXR1cm5jb2RlKSkKMTk2OmRlZiBzdHJlYW1fcHJvY2Vzc190b19maWxlKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoxOTk6ICAgICAgICB0cnk6cD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1mLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsdGltZW91dD10aW1lb3V0KQoyMDA6ICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX1RJTUVPVVQnKQoyMDE6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjIwMzpkZWYgcGlwZV90b196c3RkKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoyMDY6ICAgICAgICBzcmM9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSBpZiBpbnB1dCBpcyBub3QgTm9uZSBlbHNlIE5vbmUsc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQoyMTQ6ICAgICAgICAgICAgc3JjLmtpbGwoKTsgc3JjLndhaXQoKTsgcmFpc2UgQmFja3VwRXJyb3IoJ1BJUEVfU09VUkNFX1RJTUVPVVQnKQoyMjA6ICAgICAgICByYWlzZSBCYWNrdXBFcnJvcignUElQRV9USU1FT1VUJykKMjIxOiAgICBpZiBzcmMucmV0dXJuY29kZSE9MCBvciB6LnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdQSVBFX0ZBSUxFRCcsZid7c3JjLnJldHVybmNvZGV9X3t6LnJldHVybmNvZGV9JykKMjM2OmRlZiBsb2FkX3RhcmdldHMoKToKMjM3OiAgICBqPWpzb24ubG9hZHMoVEFSR0VUU19QQVRILnJlYWRfdGV4dCgpKQoyMzg6ICAgIGlmIGouZ2V0KCdzY2hlbWEnKSE9MSBvciBub3QgaXNpbnN0YW5jZShqLmdldCgndGFyZ2V0cycpLGxpc3QpOiByYWlzZSBCYWNrdXBFcnJvcignVEFSR0VUX01BTklGRVNUX1NDSEVNQScpCjIzOTogICAgaWRzPVt4LmdldCgnbG9naWNhbF9pZCcpIGZvciB4IGluIGpbJ3RhcmdldHMnXV0KMjQwOiAgICBpZiBsZW4oaWRzKSE9bGVuKHNldChpZHMpKTogcmFpc2UgQmFja3VwRXJyb3IoJ1RBUkdFVF9NQU5JRkVTVF9EVVBMSUNBVEUnKQoyNDE6ICAgIHJldHVybiBqWyd0YXJnZXRzJ10KMjQzOmRlZiBsb2FkX3N0YXRlX2FsbCgpOgoyNDU6ICAgIHJvb3Q9U1RBVEVfUk9PVC8nc3RhdGUnCjI1MzpkZWYgd3JpdGVfc3RhdGUobG9naWNhbF9pZCxyZXN1bHQsKiprdyk6CjI1NDogICAgaWYgcmVzdWx0IG5vdCBpbiBSRVNVTFRfQ0xBU1NFUzogcmFpc2UgQmFja3VwRXJyb3IoJ1JFU1VMVF9DTEFTU19JTlZBTElEJykKMjU3OiAgICBhdG9taWNfd3JpdGUoU1RBVEVfUk9PVC8nc3RhdGUnLyhsb2dpY2FsX2lkKycuanNvbicpLGNhbm9uaWNhbF9qc29uKGopK2InXG4nLDBvNjAwKQoyNjA6ZGVmIHJjbG9uZV9iYXNlX2FyZ3MoKToKMjYxOiAgICByZXR1cm4gW1JDTE9ORV0KMjYzOmRlZiByY2xvbmVfYWJvdXQocmVtb3RlKToKMjY0OiAgICBwPXJ1bihyY2xvbmVfYmFzZV9hcmdzKCkrWydhYm91dCcscmVtb3RlKyc6JywnLS1qc29uJywnLS1jb250aW1lb3V0JywnMTVzJywnLS10aW1lb3V0JywnNDVzJ10sdGltZW91dD02MCkKMjY2OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0FCT1VUX0pTT04nKQoyNjg6ICAgIGlmIG5vdCBpc2luc3RhbmNlKGZyZWUsaW50KTogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9GUkVFX1VOS05PV04nKQoyNzM6ICAgIGZvciBjcnlwdCxwaHlzaWNhbCBpbiBSRU1PVEVTOgoyNzQ6ICAgICAgICB0cnk6IGZyZWU9cmNsb25lX2Fib3V0KGNyeXB0KQoyNzU6ICAgICAgICBleGNlcHQgQmFja3VwRXJyb3I6IGJhZCs9MTsgY29udGludWUKMjgwOmRlZiByZW1vdGVfZXhpc3RzX2FueShzY29wZSxsb2dpY2FsX2lkLGdlbmVyYXRpb24pOgoyODE6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbikKMjgyOiAgICBmb3IgY3J5cHQsX3BoeXNpY2FsIGluIFJFTU9URVM6CjI4MzogICAgICAgIHA9cnVuKHJjbG9uZV9iYXNlX2FyZ3MoKStbJ2xzZicsY3J5cHQrJzonK3JlbCwnLS1tYXgtZGVwdGgnLCcxJ10sdGltZW91dD00NSxjaGVjaz1GYWxzZSkKMjg3OmRlZiByY2xvbmVfcmNhdChyZW1vdGVfcGF0aCwgc291cmNlX3BhdGg9Tm9uZSwgb2Zmc2V0PTAsIGxlbmd0aD1Ob25lLCBkYXRhPU5vbmUsIHRpbWVvdXQ9MzYwMCk6CjI4ODogICAgYXJndj1yY2xvbmVfYmFzZV9hcmdzKCkrWydyY2F0JyxyZW1vdGVfcGF0aCwnLS1yZXRyaWVzJywnMycsJy0tbG93LWxldmVsLXJldHJpZXMnLCc1JywnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNW0nXQoyODk6ICAgIHA9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSxzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCjI5OTogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBiOiByYWlzZSBCYWNrdXBFcnJvcignVVBMT0FEX0xPQ0FMX1NIT1JUX1JFQUQnKQozMDc6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9SQ0FUX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjMwOTpkZWYgcmNsb25lX2NhdF9oYXNoKHJlbW90ZV9wYXRoLCBleHBlY3RlZF9ieXRlcz1Ob25lLCB0aW1lb3V0PTM2MDApOgozMTE6ICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihyY2xvbmVfYmFzZV9hcmdzKCkrWydjYXQnLHJlbW90ZV9wYXRoLCctLWNvbnRpbWVvdXQnLCcyMHMnLCctLXRpbWVvdXQnLCc1bSddLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkgYXMgcDoKMzE0OiAgICAgICAgICAgICAgICBwLmtpbGwoKTsgcC53YWl0KCk7IHJhaXNlIEJhY2t1cEVycm9yKCdSQ0xPTkVfQ0FUX1RJTUVPVVQnKQozMTk6ICAgIGlmIHJjIT0wOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9GQUlMRUQnLHN0cihyYykpCjMyMDogICAgaWYgZXhwZWN0ZWRfYnl0ZXMgaXMgbm90IE5vbmUgYW5kIG4hPWV4cGVjdGVkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9TSVpFX01JU01BVENIJykKMzIzOmRlZiByY2xvbmVfY2F0X2J5dGVzKHJlbW90ZV9wYXRoLG1heF9ieXRlcz00KjEwMjQqMTAyNCk6CjMyNDogICAgcD1ydW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxyZW1vdGVfcGF0aCwnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNjBzJ10sdGltZW91dD05MCkKMzI1OiAgICBpZiBsZW4ocC5zdGRvdXQpPm1heF9ieXRlczogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9TTUFMTF9PQkpFQ1RfVE9PX0xBUkdFJykKMzI4OmRlZiBnZW5lcmF0aW9uX2lkKGxvZ2ljYWxfaWQpOgozMzI6ZGVmIHVwbG9hZF9hbmRfc2VhbCh0LHBheWxvYWRfcGF0aCxzb3VyY2VfbWV0YSk6CjMzNTogICAgZ2VuPXNvdXJjZV9tZXRhWydnZW5lcmF0aW9uJ107IHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHRbJ3Njb3BlJ10sdFsnbG9naWNhbF9pZCddLGdlbikKMzM2OiAgICBpZiByZW1vdGVfZXhpc3RzX2FueSh0WydzY29wZSddLHRbJ2xvZ2ljYWxfaWQnXSxnZW4pOiByYWlzZSBCYWNrdXBFcnJvcignR0VORVJBVElPTl9DT0xMSVNJT04nKQozMzk6ICAgIG1hbmlmZXN0PW1ha2VfbWFuaWZlc3QodFsnc2NvcGUnXSx0Wydsb2dpY2FsX2lkJ10sZ2VuLG4scHNoYSxwYXJ0cyxyZXBzLHNvdXJjZV9tZXRhKQozNDA6ICAgIG1iPWNhbm9uaWNhbF9qc29uKG1hbmlmZXN0KStiJ1xuJzsgbXNoYT1zaGEyNTZfYnl0ZXMobWIpCjM0NTogICAgICAgICAgICByY2xvbmVfcmNhdChycCxzb3VyY2VfcGF0aD1wYXlsb2FkX3BhdGgsb2Zmc2V0PXBhcnRbJ29mZnNldCddLGxlbmd0aD1wYXJ0WydieXRlcyddKQozNDY6ICAgICAgICAgICAgZ290LGdvdG49cmNsb25lX2NhdF9oYXNoKHJwLHBhcnRbJ2J5dGVzJ10pCjM0NzogICAgICAgICAgICBpZiBnb3QhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUEFSVF9SRUFEQkFDS19TSEFfTUlTTUFUQ0gnKQozNDg6ICAgICAgICByY2xvbmVfcmNhdChiYXNlKycvbWFuaWZlc3QuanNvbicsZGF0YT1tYikKMzQ5OiAgICAgICAgaWYgcmNsb25lX2NhdF9ieXRlcyhiYXNlKycvbWFuaWZlc3QuanNvbicpIT1tYjogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1JFQURCQUNLX01JU01BVENIJykKMzUwOiAgICBzZWFsPXsnc2NoZW1hJzoxLCdnZW5lcmF0aW9uJzpnZW4sJ2xvZ2ljYWxfaWQnOnRbJ2xvZ2ljYWxfaWQnXSwnbWFuaWZlc3Rfc2hhMjU2Jzptc2hhLCdwYXlsb2FkX3NoYTI1Nic6cHNoYSwnc3RhdHVzJzonU0VBTEVEJywnc2VhbGVkX2F0X3V0Yyc6dXRjbm93KCl9CjM1MTogICAgc2I9Y2Fub25pY2FsX2pzb24oc2VhbCkrYidcbicKMzU0OiAgICAgICAgcmNsb25lX3JjYXQoYmFzZSsnL1NFQUxFRC5qc29uJyxkYXRhPXNiKQozNTU6ICAgICAgICBpZiByY2xvbmVfY2F0X2J5dGVzKGJhc2UrJy9TRUFMRUQuanNvbicpIT1zYjogcmFpc2UgQmFja3VwRXJyb3IoJ1NFQUxfUkVBREJBQ0tfTUlTTUFUQ0gnKQozNTY6ICAgIHJldHVybiBtYW5pZmVzdCxtc2hhLHsndW5oZWFsdGh5JzpiYWQsJ2hlYWx0aHknOmhlYWx0aHl9CjM1ODpkZWYgcmVjb25zdHJ1Y3RfcmVwbGljYShtYW5pZmVzdCxyZXAsb3V0X3BhdGgpOgozNTk6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKG1hbmlmZXN0WydzY29wZSddLG1hbmlmZXN0Wydsb2dpY2FsX2lkJ10sbWFuaWZlc3RbJ2dlbmVyYXRpb24nXSkKMzYzOiAgICAgICAgZm9yIHBhcnQgaW4gbWFuaWZlc3RbJ3BhcnRzJ106CjM2NTogICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxiYXNlKycvcGFydHMvJytwYXJ0WyduYW1lJ10sJy0tY29udGltZW91dCcsJzIwcycsJy0tdGltZW91dCcsJzVtJ10sc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKSBhcyBwOgozNzE6ICAgICAgICAgICAgaWYgcmMhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9DQVRfRkFJTEVEJykKMzcyOiAgICAgICAgICAgIGlmIG4hPXBhcnRbJ2J5dGVzJ10gb3IgcGguaGV4ZGlnZXN0KCkhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUkVDT05TVFJVQ1RfUEFSVF9NSVNNQVRDSCcpCjM3MzogICAgaWYgdG90YWwhPW1hbmlmZXN0WydwYXlsb2FkX2J5dGVzJ10gb3IgaC5oZXhkaWdlc3QoKSE9bWFuaWZlc3RbJ3BheWxvYWRfc2hhMjU2J106IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9QQVlMT0FEX01JU01BVENIJykKMzgyOiAgICBpZiByMSE9MCBvciBwMi5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9MSVNUX0ZBSUxFRCcpCjM4NDogICAgaWYgbm90IG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9FTVBUWScpCjM4NTogICAgaWYgcmVxdWlyZWRfbWVtYmVyIGFuZCByZXF1aXJlZF9tZW1iZXIgbm90IGluIG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignUkVRVUlSRURfTUVNQkVSX01JU1NJTkcnKQozOTQ6ICAgICAgICAgICAgIyBHcmVlbiBzZXQgaXMgaW50ZW50aW9uYWxseSBDVC1vbmx5LiBTY2hlZHVsZWQgUUVNVSBiYWNrdXBzIHN0aWxsIGdldCBkdWFsIHJlbW90ZSBieXRlIHJlYWRiYWNrLgo0MDI6ICAgICAgICBpZiBwMi5yZXR1cm5jb2RlIT0wIG9yIGxlbihkYXRhKTwxMjg6IHJhaXNlIEJhY2t1cEVycm9yKCdYRU5GT1JPX0RCX0RVTVBfSU5WQUxJRCcpCjQwMzogICAgZWxzZTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZBTElEQVRPUl9VTktOT1dOX1RZUEUnKQo0MDg6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfSU5WRU5UT1JZX0pTT04nKQo0MTA6ZGVmIHNzaF9yZW1vdGUobm9kZSxhcmd2LGlucHV0PU5vbmUsdGltZW91dD0xODAwLGNoZWNrPVRydWUpOgo0MTE6ICAgIGNtZD0nUEFUSD0vdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjsgZXhwb3J0IFBBVEg7IGV4ZWMgJytzaGxleC5qb2luKFtzdHIoeCkgZm9yIHggaW4gYXJndl0pCjQxMjogICAgaWYgbm9kZT09J3B2ZTAxJzogcmV0dXJuIHJ1bihbc3RyKHgpIGZvciB4IGluIGFyZ3ZdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNDE4OiAgICByYWlzZSBCYWNrdXBFcnJvcignUFZFX0dVRVNUX1RZUEVfRFJJRlQnKQo0MjE6ICAgIGlmIG5vdCBwYXRoLmlzX2ZpbGUoKSBvciBwYXRoLmlzX3N5bWxpbmsoKSBvciBzaGEyNTZfZmlsZShwYXRoKSE9ZXhwZWN0ZWQ6IHJhaXNlIEJhY2t1cEVycm9yKGNvZGUpCjQzMTogICAgaWYgcC5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignSElTVE9SSUNBTF9HUkFQSF9JTVBPUlRfRkFJTEVEJyxmJ3JjX3twLnJldHVybmNvZGV9X3N0ZGVycl9zaGEyNTZfe2hhc2hsaWIuc2hhMjU2KHAuc3RkZXJyKS5oZXhkaWdlc3QoKX0nKQo0MzM6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9KU09OJykKNDM2OiAgICAgICAgaWYgc3RyKHBhdGhsaWIuUGF0aChvdXQuZ2V0KGssJycpKS5yZXNvbHZlKCkpIT1zdHIocGF0aGxpYi5QYXRoKHYpLnJlc29sdmUoKSk6IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9QQVRIJyxrKQo0Mzk6ZGVmIF9pc29sYXRlZF9ndWVzdDI2Nl9kdW1wX2FyZ3Yoam9iLHZ6ZHVtcCxzY3JhdGNoLG5vdyk6CjQ0MDogICAgZW52PV9oaXN0b3JpY2FsX2dyYXBoX2VudigpO3JlcT17J2pvYic6am9iLCd2emR1bXAnOnN0cih2emR1bXApLCdzY3JhdGNoJzpzdHIoc2NyYXRjaCksJ25vdyc6aW50KG5vdyl9CjQ0MTogICAgcD1zdWJwcm9jZXNzLnJ1bihbc3lzLmV4ZWN1dGFibGUsJy1CJywnLWMnLF9ISVNUT1JJQ0FMX0hFTFBFUiwnZHVtcF9hcmd2JyxzdHIoR1VFU1QyNjYpXSxpbnB1dD1jYW5vbmljYWxfanNvbihyZXEpLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSxlbnY9ZW52LGN3ZD0nLycsdGltZW91dD0zMCkKNDQyOiAgICBpZiBwLnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdHVUVTVDI2Nl9TVUJQUk9DRVNTX0ZBSUxFRCcsZidyY197cC5yZXR1cm5jb2RlfV9zdGRlcnJfc2hhMjU2X3toYXNobGliLnNoYTI1NihwLnN0ZGVycikuaGV4ZGlnZXN0KCl9JykKNDQ0OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignR1VFU1QyNjZfU1VCUFJPQ0VTU19KU09OJykKNDQ5OiAgICByZXR1cm4geyd2bWlkJzppbnQodFsndm1pZCddKSwnaWQnOmludCh0Wyd2bWlkJ10pLCd0eXBlJzonbHhjJywna2luZCc6J2x4YycsJ2d1ZXN0X3R5cGUnOidseGMnLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpLCduYW1lJzpyb3cuZ2V0KCduYW1lJywnJyksCjQ1MzogICAgICAgICAgICAnYmxvY2tlcnMnOltdLCdkaXNrcyc6W10sJ3RlbXBsYXRlJzpib29sKHJvdy5nZXQoJ3RlbXBsYXRlJywwKSksJ2hvb2tzY3JpcHRfcHJlc2VudCc6RmFsc2UsJ2xvY2tfcHJlc2VudCc6RmFsc2UsCjQ1NDogICAgICAgICAgICAnc25hcHNob3RfaGlzdG9yeV9pbmNsdWRlZCc6RmFsc2UsJ3VudXNlZF92b2x1bWVfY291bnQnOjAsJ2Nkcm9tX2NvdW50JzowLCdjZHJvbV9tZWRpYV9pbmNsdWRlZCc6RmFsc2UsJ2d1ZXN0X3Jlc3RvcmVfdmVyaWZpZWQnOkZhbHNlLAo0NTc6ZGVmIHByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCk6CjQ1OTogICAgcmVxPXsndm1pZCc6aW50KHRbJ3ZtaWQnXSksJ25vZGUnOnN0cihub2RlKSwnc2NyYXRjaCc6c3RyKHNjcmF0Y2gpfQo0NjE6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRTI2NV9GUkVTSF9QTEFOX1NVQlBST0NFU1NfRkFJTEVEJykKNDYyOiAgICBpZiBwLnN0ZGVyciBvciBsZW4ocC5zdGRvdXQpPjEwNDg1NzY6IHJhaXNlIEJhY2t1cEVycm9yKCdQVkUyNjVfRlJFU0hfUExBTl9TVUJQUk9DRVNTX09VVFBVVCcpCjQ2NDogICAgZXhjZXB0IChVbmljb2RlRGVjb2RlRXJyb3IsanNvbi5KU09ORGVjb2RlRXJyb3IpOiByYWlzZSBCYWNrdXBFcnJvcignUFZFMjY1X0ZSRVNIX1BMQU5fU1VCUFJPQ0VTU19PVVRQVVQnKSBmcm9tIE5vbmUKNDY1OiAgICBpZiB0eXBlKGQpIGlzIG5vdCBkaWN0IG9yIHNldChkKSE9eydhcmd2Jywnam9iJ306IHJhaXNlIEJhY2t1cEVycm9yKCdQVkUyNjVfRlJFU0hfUExBTl9TVUJQUk9DRVNTX09VVFBVVCcpCjQ2NjogICAgYXJndj1kWydhcmd2J107am9iPWRbJ2pvYiddO3ZtaWQ9aW50KHRbJ3ZtaWQnXSkKNDY3OiAgICBpZiB0eXBlKGFyZ3YpIGlzIG5vdCBsaXN0IG9yIG5vdCBhcmd2IG9yIGFueSh0eXBlKHgpIGlzIG5vdCBzdHIgb3Igbm90IHggZm9yIHggaW4gYXJndik6IHJhaXNlIEJhY2t1cEVycm9yKCdQVkUyNjVfRlJFU0hfUExBTl9TVUJQUk9DRVNTX09VVFBVVCcpCjQ2ODogICAgaWYgdHlwZShqb2IpIGlzIG5vdCBkaWN0IG9yIGpvYi5nZXQoJ3ZtaWQnKSE9dm1pZCBvciBqb2IuZ2V0KCdub2RlJykhPXN0cihub2RlKSBvciBqb2IuZ2V0KCd0eXBlJykhPSdseGMnIG9yIGpvYi5nZXQoJ2NvdmVyYWdlX2VsaWdpYmxlJykgaXMgbm90IFRydWUgb3Igam9iLmdldCgnYmxvY2tlcnMnKSE9W106IHJhaXNlIEJhY2t1cEVycm9yKCdQVkUyNjVfRlJFU0hfUExBTl9KT0InKQo0Njk6ICAgIGlmIGFyZ3ZbMF0hPScvdXNyL2Jpbi92emR1bXAnIG9yIGxlbihhcmd2KTwyIG9yIGFyZ3ZbMV0hPXN0cih2bWlkKSBvciAnLS1zdGRvdXQnIG5vdCBpbiBhcmd2IG9yICctLXRtcGRpcicgbm90IGluIGFyZ3Ygb3Igc3RyKHNjcmF0Y2gpIG5vdCBpbiBhcmd2OiByYWlzZSBCYWNrdXBFcnJvcignUFZFMjY1X0ZSRVNIX1BMQU5fQVJHVicpCjQ3MDogICAgcmV0dXJuIGFyZ3Ysam9iCjQ3MjpkZWYgX2RlZmF1bHRfdW5wcml2aWxlZ2VkX2x4Yyhub2RlLHZtaWQpOgo0NzM6ICAgIHE9c3NoX3JlbW90ZShub2RlLFsncGN0JywnY29uZmlnJyxzdHIodm1pZCldLHRpbWVvdXQ9MzApCjQ3NTogICAgaWYgJ3VucHJpdmlsZWdlZDogMScgbm90IGluIGxpbmVzOiByYWlzZSBCYWNrdXBFcnJvcignTFhDX05PVF9VTlBSSVZJTEVHRUQnKQo0NzY6ICAgIGlmIGFueSh4LnN0YXJ0c3dpdGgoJ2x4Yy5pZG1hcDonKSBvciB4LnN0YXJ0c3dpdGgoJ2x4Yy5pZG1hcCA9JykgZm9yIHggaW4gbGluZXMpOiByYWlzZSBCYWNrdXBFcnJvcignTFhDX0NVU1RPTV9JRE1BUF9VTlNVUFBPUlRFRCcpCjQ4MTogICAgcT1zc2hfcmVtb3RlKG5vZGUscG9zLHRpbWVvdXQ9MzAsY2hlY2s9RmFsc2UpCjQ4MjogICAgaWYgcS5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignTUFQUEVEX1VJRF9BQ0NFU1NfUFJPQkVfRkFJTEVEJykKNDg0OmRlZiBfc3RyZWFtX2FyZ3ZfdG9fbG9jYWwobm9kZSxhcmd2LGRlc3QsdGltZW91dD03MjAwKToKNDg2OiAgICBpZiBub2RlPT0ncHZlMDEnOiBjbWQ9YXJndgo0ODg6ICAgICAgICByZW1vdGU9J1BBVEg9L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW47IGV4cG9ydCBQQVRIOyBleGVjICcrc2hsZXguam9pbihhcmd2KQo0ODk6ICAgICAgICBjbWQ9W1NTSCwnLW8nLCdCYXRjaE1vZGU9eWVzJywnLW8nLCdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9eWVzJywncm9vdEAnK25vZGUscmVtb3RlXQo0OTU6ICAgICAgICAgICAgcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9TVFJFQU1fVElNRU9VVCcpCjQ5OTogICAgICAgIHJhaXNlIEJhY2t1cEVycm9yKCdDT01NQU5EX0ZBSUxFRCcsZid2emR1bXBfcmNfe3AucmV0dXJuY29kZX1fc3RkZXJyX3NoYTI1Nl97aGFzaGxpYi5zaGEyNTYocC5zdGRlcnIpLmhleGRpZ2VzdCgpfScpCjUwMDogICAgaWYgbm90IGRlc3QuaXNfZmlsZSgpIG9yIGRlc3Quc3RhdCgpLnN0X3NpemU8PTA6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfUEFZTE9BRF9NSVNTSU5HJykKNTAzOiAgICB2bWlkPWludCh0Wyd2bWlkJ10pOyByb3dzPVtyIGZvciByIGluIGNsdXN0ZXJfaW52ZW50b3J5KCkgaWYgaW50KHIuZ2V0KCd2bWlkJywtMSkpPT12bWlkXQo1MDQ6ICAgIGlmIGxlbihyb3dzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRV9HVUVTVF9OT1RfVU5JUVVFJykKNTA2OiAgICBpZiB0eXAhPXRbJ2d1ZXN0X3R5cGUnXTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRV9HVUVTVF9UWVBFX0RSSUZUJykKNTA5OiAgICAgICAgX2RlZmF1bHRfdW5wcml2aWxlZ2VkX2x4Yyhub2RlLHZtaWQpCjUxMDogICAgICAgIHNjcmF0Y2g9ZicvdmFyL3RtcC9ob21lbGFiLXZ6ZHVtcC12Mi17Z2VufScKNTExOiAgICAgICAgc3NoX3JlbW90ZShub2RlLFsnaW5zdGFsbCcsJy1kJywnLW0nLCc3MTAnLCctbycsJzAnLCctZycsJzEwMDAwMCcsc2NyYXRjaF0sdGltZW91dD0zMCkKNTEyOiAgICAgICAgcT1zc2hfcmVtb3RlKG5vZGUsWydzdGF0JywnLWMnLCclYToldTolZycsc2NyYXRjaF0sdGltZW91dD0zMCkKNTEzOiAgICAgICAgaWYgcS5zdGRvdXQuZGVjb2RlKCkuc3RyaXAoKSE9JzcxMDowOjEwMDAwMCc6IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfTUFQUEVEX1NDUkFUQ0hfQUNDRVNTX0NPTlRSQUNUJykKNTE2OiAgICAgICAgICAgIGFyZ3Ysam9iPXByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCkKNTE4OiAgICAgICAgICAgIF9zdHJlYW1fYXJndl90b19sb2NhbChub2RlLGFyZ3YsbG9jYWwsdGltZW91dD03MjAwKQo1MTk6ICAgICAgICAgICAgaWYgbG9jYWwuc3RhdCgpLnN0X3NpemU+aW50KGpvYlsnYXJjaGl2ZV9jYXBfYnl0ZXMnXSk6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfQVJDSElWRV9DQVBfRVhDRUVERUQnKQo1MjE6ICAgICAgICAgICAgc3NoX3JlbW90ZShub2RlLFsncm0nLCctcmYnLCctLScsc2NyYXRjaF0sdGltZW91dD02MCxjaGVjaz1GYWxzZSk7cmFpc2UKNTIzOiAgICAgICAgcmV0dXJuIGxvY2FsLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ25vZGUnOm5vZGUsJ3N0YXR1cyc6cm93LmdldCgnc3RhdHVzJyksJ3Byb2R1Y2VyX2NvbnRyYWN0JzoncHJvdmVuLTI3MC0yODItc3RyZWFtJ30sY2xlYW51cAo1MjQ6ICAgICMgUUVNVSBwYXRoIHJlbWFpbnMgdW5jaGFuZ2VkOiBib3VuZGVkIGRlZGljYXRlZCBkdW1wZGlyIHdpdGggbGF0ZXIgY2xvdWQgcmVhZGJhY2svcmVjb25zdHJ1Y3Rpb24uCjUyNTogICAgc3JjZGlyPWYnL3Zhci90bXAvaG9tZWxhYi12emR1bXAtdjIte2dlbn0nCjUyNjogICAgc3NoX3JlbW90ZShub2RlLFsnaW5zdGFsbCcsJy1kJywnLW0nLCc3MDAnLCctbycsJzAnLCctZycsJzAnLHNyY2Rpcl0sdGltZW91dD0zMCkKNTI4OiAgICAgICAgc3NoX3JlbW90ZShub2RlLFsndnpkdW1wJyxzdHIodm1pZCksJy0tbW9kZScsJ3NuYXBzaG90JywnLS1jb21wcmVzcycsJ3pzdGQnLCctLWR1bXBkaXInLHNyY2Rpcl0sdGltZW91dD03MjAwKQo1Mjk6ICAgICAgICBwPXNzaF9yZW1vdGUobm9kZSxbJ2ZpbmQnLHNyY2RpciwnLW1heGRlcHRoJywnMScsJy10eXBlJywnZicsJy1wcmludGYnLCclcFxuJ10sdGltZW91dD0zMCkKNTMxOiAgICAgICAgaWYgbGVuKGZpbGVzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9PVVRQVVRfTk9UX1VOSVFVRScpCjUzNTogICAgICAgIGlmIG5vdCBwYXRobGliLlBhdGgobG9jYWwpLmlzX2ZpbGUoKSBvciBwYXRobGliLlBhdGgobG9jYWwpLnN0YXQoKS5zdF9zaXplPD0wOiByYWlzZSBCYWNrdXBFcnJvcignVlpEVU1QX1BBWUxPQURfTUlTU0lORycpCjUzNzogICAgICAgIHNzaF9yZW1vdGUobm9kZSxbJ3JtJywnLXJmJywnLS0nLHNyY2Rpcl0sdGltZW91dD02MCxjaGVjaz1GYWxzZSk7cmFpc2UKNTM4OiAgICByZXR1cm4gcGF0aGxpYi5QYXRoKGxvY2FsKSx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzoncHZlX2d1ZXN0Jywndm1pZCc6dm1pZCwnZ3Vlc3RfdHlwZSc6dHlwLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpfSx7J2tpbmQnOidwdmVfc291cmNlX2RpcicsJ25vZGUnOm5vZGUsJ3BhdGgnOnNyY2Rpcn0KNTQxOiAgICBpZiBub3QgT1BFUkFUT1JfS0VZLmlzX2ZpbGUoKSBvciBPUEVSQVRPUl9LRVkuaXNfc3ltbGluaygpOiByYWlzZSBCYWNrdXBFcnJvcignT1BFUkFUT1JfS0VZX01JU1NJTkcnKQo1NDU6ICAgIGlmIG5vdCBtIG9yIG0uZ3JvdXAoMSkhPU9QRVJBVE9SX0tFWV9GSU5HRVJQUklOVDogcmFpc2UgQmFja3VwRXJyb3IoJ09QRVJBVE9SX0tFWV9GSU5HRVJQUklOVF9NSVNNQVRDSCcpCjU1OTogICAgaWYgbGVuKGdvb2QpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignSE9TVEtFWV9QSU5fTUlTTUFUQ0gnKQo1NjI6ZGVmIGVuc3VyZV92cHNfa25vd25faG9zdHModGFyZ2V0cyk6CjU2NDogICAgZm9yIHQgaW4gdGFyZ2V0czoKNTY5OmRlZiB2cHNfc3NoX2FyZ3YodCwgKiwgdXNlX2FnZW50PUZhbHNlKToKNTc4OmRlZiB2cHNfcnVuKHQsIHJlbW90ZV9hcmd2LCAqLCBpbnB1dD1Ob25lLCB0aW1lb3V0PTMwMCwgdXNlX2FnZW50PUZhbHNlLCBjaGVjaz1UcnVlKToKNTc5OiAgICByZW1vdGU9c2hsZXguam9pbihbc3RyKHgpIGZvciB4IGluIHJlbW90ZV9hcmd2XSkKNTgwOiAgICByZXR1cm4gcnVuKHZwc19zc2hfYXJndih0LHVzZV9hZ2VudD11c2VfYWdlbnQpK1tyZW1vdGVdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNTgyOmRlZiBib290c3RyYXBfdnBzX2tleXModGFyZ2V0cyk6CjU4NDogICAgZW5zdXJlX3Zwc19rbm93bl9ob3N0cyh0YXJnZXRzKQo1ODc6ICAgIGZvciB0IGluIHRhcmdldHM6CjU5MjogICAgICAgIGlmIG5vdCBvcy5lbnZpcm9uLmdldCgnU1NIX0FVVEhfU09DSycpOiByYWlzZSBCYWNrdXBFcnJvcignRk9SV0FSREVEX0FHRU5UX1JFUVVJUkVEX0ZPUl9CT09UU1RSQVAnKQo1OTY6ICAgICAgICBpZiB0YWcgbm90IGluICgnQURERUQnLCdBTFJFQURZJyk6IHJhaXNlIEJhY2t1cEVycm9yKCdWUFNfQVVUSE9SSVpFRF9LRVlfQk9PVFNUUkFQX1JFU1VMVCcpCjYwMDogICAgdXM9W3ggZm9yIHggaW4gdGFyZ2V0cyBpZiB4Wyd0eXBlJ109PSd2cHNfdXMnXVswXQo2MDU6ZGVmIHJlbW90ZV9oYXNoc2V0KHQsY29tbWFuZCk6CjYxMDogICAgZmlsZXM9WydldGMvbmV0YmlyZC9pbnN0YWxsLmNvbmYnLCd2YXIvbGliL25ldGJpcmQvc3RhdGUuanNvbicsJ3Zhci9saWIvbmV0YmlyZC9zZXJ2aWNlLmpzb24nLCd2YXIvbGliL25ldGJpcmQvYWN0aXZlX3Byb2ZpbGUuanNvbicsJ3Zhci9saWIvbmV0YmlyZC9kZWZhdWx0Lmpzb24nXQo2MTI6ICAgIHByZT1yZW1vdGVfaGFzaHNldCh0LGNtZCkKNjEzOiAgICByZW1vdGU9c2hsZXguam9pbihbJ3N1ZG8nLCctbicsJ3RhcicsJy0tbnVtZXJpYy1vd25lcicsJy1DJywnLycsJy1jZicsJy0nXStmaWxlcykKNjE0OiAgICBhcmd2PXZwc19zc2hfYXJndih0LHVzZV9hZ2VudD1GYWxzZSkrW3JlbW90ZV0KNjE1OiAgICBwYXlsb2FkPXdvcmsvJ3BheWxvYWQudGFyLnpzdCc7IHBpcGVfdG9fenN0ZChhcmd2LHBheWxvYWQsdGltZW91dD02MDApCjYxNjogICAgcG9zdD1yZW1vdGVfaGFzaHNldCh0LGNtZCkKNjE3OiAgICBpZiBwcmUhPXBvc3Q6IHJhaXNlIEJhY2t1cEVycm9yKCdNRF9TT1VSQ0VfQ0hBTkdFRF9EVVJJTkdfQ0FQVFVSRScpCjYxODogICAgcmV0dXJuIHBheWxvYWQseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3Zwc19tZCcsJ2NvbnNpc3RlbmN5JzonRklMRVNFVF9QUkVfUE9TVF9IQVNIX1NUQUJJTElUWScsJ2hhc2hzZXRfc2hhMjU2JzpwcmV9LE5vbmUKNjIyOiAgICBwcmU9cmVtb3RlX2hhc2hzZXQodCxoY21kKQo2MjM6ICAgIHJlbW90ZT1zaGxleC5qb2luKFsndGFyJywnLS1udW1lcmljLW93bmVyJywnLUMnLCcvJywnLWNmJywnLScsJ2V0Yy9uZ2lueCddKQo2MjQ6ICAgIGFyZ3Y9dnBzX3NzaF9hcmd2KHQsdXNlX2FnZW50PUZhbHNlKStbcmVtb3RlXQo2MjU6ICAgIHBheWxvYWQ9d29yay8ncGF5bG9hZC50YXIuenN0JzsgcGlwZV90b196c3RkKGFyZ3YscGF5bG9hZCx0aW1lb3V0PTkwMCkKNjI2OiAgICBwb3N0PXJlbW90ZV9oYXNoc2V0KHQsaGNtZCkKNjI3OiAgICBpZiBwcmUhPXBvc3Q6IHJhaXNlIEJhY2t1cEVycm9yKCdTUEJfU09VUkNFX0NIQU5HRURfRFVSSU5HX0NBUFRVUkUnKQo2Mjg6ICAgIHJldHVybiBwYXlsb2FkLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOid2cHNfc3BiJywnY29uc2lzdGVuY3knOidTVEFUSUNfQ09ORklHX0ZJTEVTRVRfUFJFX1BPU1RfSEFTSF9TVEFCSUxJVFknLCd0bHNfcmVjb3ZlcnknOidSRUlTU1VFX1RMU19PTl9SRVNUT1JFJywnaGFzaHNldF9zaGEyNTYnOnByZX0sTm9uZQo2MzA6VVNfUkVNT1RFX1NDUklQVD1yJycnaW1wb3J0IGlvLG9zLHNxbGl0ZTMsc3lzLHRhcmZpbGUsdGltZSxqc29uLGhhc2hsaWIKNjUzOiAgICBkc3Q9c3FsaXRlMy5jb25uZWN0KCc6bWVtb3J5OicpOyBzcmMuYmFja3VwKGRzdCkKNjU2OiAgICB0aT10YXJmaWxlLlRhckluZm8obmFtZT0oJ3NxbGl0ZS1iYWNrdXBzLycrbmFtZSkpOyB0aS5zaXplPWxlbihiKTsgdGkubW9kZT0wbzYwMDsgdGkubXRpbWU9aW50KHRpbWUudGltZSgpKTsgdGYuYWRkZmlsZSh0aSxpby5CeXRlc0lPKGIpKQo2NjA6ICAgIHJlbW90ZT1zaGxleC5qb2luKFsncHl0aG9uMycsJy1JJywnLUInLCctYycsVVNfUkVNT1RFX1NDUklQVF0pCjY2MTogICAgYXJndj12cHNfc3NoX2FyZ3YodCx1c2VfYWdlbnQ9RmFsc2UpK1tyZW1vdGVdCjY2MjogICAgcGF5bG9hZD13b3JrLydwYXlsb2FkLnRhci56c3QnOyBwaXBlX3RvX3pzdGQoYXJndixwYXlsb2FkLHRpbWVvdXQ9MTIwMCkKNjYzOiAgICByZXR1cm4gcGF5bG9hZCx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzondnBzX3VzJywnY29uc2lzdGVuY3knOidTUUxJVEVfT05MSU5FX0JBQ0tVUF9QTFVTX05PTkRCX0ZJTEVTJywnc3FsaXRlX2NvdW50Jzo0fSxOb25lCjczNjogICAgaWYgbm90IFJPVVRFUl9MRUdBQ1lfU0NSSVBULmlzX2ZpbGUoKSBvciBST1VURVJfTEVHQUNZX1NDUklQVC5pc19zeW1saW5rKCkgb3Igc2hhMjU2X2ZpbGUoUk9VVEVSX0xFR0FDWV9TQ1JJUFQpIT1ST1VURVJfTEVHQUNZX1NIQTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9MRUdBQ1lfU0NSSVBUX0lERU5USVRZJykKNzM5OiAgICBoaXRzPVtpcCBmb3IgaXAgaW4gaXBzIGlmIHNoYTI1Nl9ieXRlcyhpcC5lbmNvZGUoKSk9PVJPVVRFUl9UQVJHRVRfU0hBXQo3NDA6ICAgIGlmIGxlbihoaXRzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9UQVJHRVRfUEFSU0UnKQo3NDE6ICAgIHRhcmdldD1oaXRzWzBdCjc0OTogICAgaWYgbGVuKHNhZmUpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignUk9VVEVSX1BBU1NGSUxFX1BBUlNFJykKNzUwOiAgICByZXR1cm4gdGFyZ2V0LHNhZmVbMF0KNzUzOiAgICByb290cz1bcGF0aGxpYi5QYXRoKCcvZXRjJykscGF0aGxpYi5QYXRoKCcvcm9vdC8uc3NoJykscGF0aGxpYi5QYXRoKCcvdmFyL2xpYi9ob21lbGFiLWJhY2t1cCcpLHBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKV0KNzY4OiAgICBpZiBsZW4odW5pcSkhPTE6IHJhaXNlIEJhY2t1cEVycm9yKCdFWEFDVF9TSEFfRklMRV9OT1RfVU5JUVVFJykKNzc2OiAgICBpZiBzaGEyNTZfYnl0ZXMoYikhPVJPVVRFUl9LTk9XTl9IT1NUU19TSEE6IHJhaXNlIEJhY2t1cEVycm9yKCdST1VURVJfS05PV05fSE9TVFNfSURFTlRJVFknKQo3ODA6ICAgIHRhcmdldCxwZj1wYXJzZV9yb3V0ZXJfbGVnYWN5KCkKNzgzOiAgICBhcmd2PVtTU0hQQVNTLCctZicsc3RyKHBmKSxTU0gsJy1wJywnMjIyMicsJy1vJywnQmF0Y2hNb2RlPW5vJywnLW8nLCdOdW1iZXJPZlBhc3N3b3JkUHJvbXB0cz0xJywnLW8nLCdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9eWVzJywnLW8nLCdVc2VyS25vd25Ib3N0c0ZpbGU9JytzdHIoUk9VVEVSX0tOT1dOX0hPU1RTKSwnLW8nLCdDb25uZWN0VGltZW91dD0xNScsJ3JvdXRlcmJhY2t1cEAnK3RhcmdldCwnc2hvdyBydW5uaW5nLWNvbmZpZyddCjc4NDogICAgcD1ydW4oYXJndix0aW1lb3V0PTYwKTsgcmV0dXJuIHAuc3Rkb3V0Cjc5NTogICAgaWYgbm90IGEgb3IgYSE9YjogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9SRUFEX05PVF9CWVRFX1NUQUJMRScpCjc5NzogICAgcmV0dXJuIHBheWxvYWQseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3JvdXRlcicsJ2NvbmZpZ19zaGEyNTYnOnNoYTI1Nl9ieXRlcyhhKSwncmVhZF9jb3VudCc6MiwncmVjb3ZlcnlfcG9saWN5JzonSU1QT1JUX1BBQ0tBR0VfT1JfU0FGRV9DTElfTk9UX0JMSU5EX0NPTkZJR19SRVBMQUNFJ30sTm9uZQo3OTk6ZGVmIHFnYV9leGVjKG5vZGUsdm1pZCxndWVzdF9hcmd2LGlucHV0X2J5dGVzPU5vbmUsdGltZW91dD02MDApOgo4MDA6ICAgIGFyZ3M9WydxbScsJ2d1ZXN0JywnZXhlYycsc3RyKHZtaWQpLCctLXN5bmNocm9ub3VzJywnMScsJy0tdGltZW91dCcsc3RyKGludCh0aW1lb3V0KSldCjgwMjogICAgYXJncyArPSBbJy0tJ10rW3N0cih4KSBmb3IgeCBpbiBndWVzdF9hcmd2XQo4MDM6ICAgIHA9c3NoX3JlbW90ZShub2RlLGFyZ3MsaW5wdXQ9aW5wdXRfYnl0ZXMsdGltZW91dD10aW1lb3V0KzYwKQo4MDU6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdRR0FfSlNPTicpCjgwODogICAgaWYgcmMgbm90IGluICgwLE5vbmUpOiByYWlzZSBCYWNrdXBFcnJvcignUUdBX0dVRVNUX0NPTU1BTkRfRkFJTEVEJyxzdHIocmMpKQo4MTU6ICAgIHJldHVybiBmJycnaW1wb3J0IGhhc2hsaWIsanNvbixvcyxwYXRobGliLHNlbGVjdCxzaHV0aWwsc3VicHJvY2Vzcyx0ZW1wZmlsZSx0aW1lXG5yb290PXtyb290IXJ9OyBkYj17ZGIhcn07IHN0cmF0ZWd5PXtzdHJhdGVneSFyfTsgdG9rZW49W1JFREFDVEVEXSBub3Qgcm9vdC5zdGFydHN3aXRoKCcvdmFyL3d3dy9mb3J1bXMvJykgb3Igbm90IGRiLnN0YXJ0c3dpdGgoJ3hmXycpOiByYWlzZSBTeXN0ZW1FeGl0KDIwKVxudG1wPXBhdGhsaWIuUGF0aCgnL3RtcC9ob21lbGFiLXYyLXhmLScrdG9rZW4pOyB0bXAubWtkaXIobW9kZT0wbzcwMCxleGlzdF9vaz1GYWxzZSlcbmR1bXA9dG1wLydkYi5zcWwnOyBvdXQ9cGF0aGxpYi5QYXRoKCcvdG1wL2hvbWVsYWItdjIteGYtJyt0b2tlbisnLnRhci56c3QnKVxubG9jaz1Ob25lXG50cnk6XG4gIGlmIHN0cmF0ZWd5PT0nZ2xvYmFsX3JlYWRfbG9jayc6XG4gICAgbG9jaz1zdWJwcm9jZXNzLlBvcGVuKFsnbWFyaWFkYicsJy0tdXNlcj1yb290JywnLS1iYXRjaCcsJy0tc2tpcC1jb2x1bW4tbmFtZXMnLCctLXVuYnVmZmVyZWQnXSxzdGRpbj1zdWJwcm9jZXNzLlBJUEUsc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLHRleHQ9VHJ1ZSxidWZzaXplPTEpXG4gICAgbG9jay5zdGRpbi53cml0ZSgiRkxVU0ggVEFCTEVTIFdJVEggUkVBRCBMT0NLOyBTRUxFQ1QgJ0xPQ0tFRCc7XFxuIik7IGxvY2suc3RkaW4uZmx1c2goKVxuICAgIHJyLF8sXz1zZWxlY3Quc2VsZWN0KFtsb2NrLnN0ZG91dF0sW10sW10sNSlcbiAgICBpZiBub3QgcnIgb3IgbG9jay5zdGRvdXQucmVhZGxpbmUoKS5zdHJpcCgpIT0nTE9DS0VEJzogcmFpc2UgUnVudGltZUVycm9yKCdMT0NLX0FDUVVJUkUnKVxuICAgIGR1bXBfdGltZW91dD0xNVxuICBlbHNlOiBkdW1wX3RpbWVvdXQ9MTgwXG4gIHdpdGggb3BlbihkdW1wLCd3YicpIGFzIGY6XG4gICAgYXJndj1bJ21hcmlhZGItZHVtcCcsJy0tdXNlcj1yb290JywnLS1xdWljaycsJy0tc2tpcC1sb2NrLXRhYmxlcycsJy0taGV4LWJsb2InLCctLXJvdXRpbmVzJywnLS1ldmVudHMnLCctLXRyaWdnZXJzJ11cbiAgICBpZiBzdHJhdGVneT09J3NpbmdsZV90cmFuc2FjdGlvbic6IGFyZ3YuYXBwZW5kKCctLXNpbmdsZS10cmFuc2FjdGlvbicpXG4gICAgYXJndi5hcHBlbmQoZGIpXG4gICAgcT1zdWJwcm9jZXNzLnJ1bihhcmd2LHN0ZG91dD1mLHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsdGltZW91dD1kdW1wX3RpbWVvdXQpXG4gICAgaWYgcS5yZXR1cm5jb2RlIT0wOiByYWlzZSBSdW50aW1lRXJyb3IoJ0RVTVAnKVxuICBpZiBsb2NrIGlzIG5vdCBOb25lOlxuICAgIGxvY2suc3RkaW4ud3JpdGUoIlVOTE9DSyBUQUJMRVM7IFNFTEVDVCAnVU5MT0NLRUQnO1xcbiIpOyBsb2NrLnN0ZGluLmZsdXNoKClcbiAgICBycixfLF89c2VsZWN0LnNlbGVjdChbbG9jay5zdGRvdXRdLFtdLFtdLDUpXG4gICAgaWYgbm90IHJyIG9yIGxvY2suc3Rkb3V0LnJlYWRsaW5lKCkuc3RyaXAoKSE9J1VOTE9DS0VEJzogcmFpc2UgUnVudGltZUVycm9yKCdVTkxPQ0snKVxuICAgIGxvY2suc3RkaW4uY2xvc2UoKTsgbG9jay53YWl0KHRpbWVvdXQ9NSk7IGxvY2s9Tm9uZVxuICByZWw9cm9vdC5sc3RyaXAoJy8nKVxuICB0YXI9c3VicHJvY2Vzcy5Qb3BlbihbJ3RhcicsJy0tbnVtZXJpYy1vd25lcicsJy0teGF0dHJzJywnLS1hY2xzJywnLUMnLCcvJywnLWNmJywnLScscmVsLCctQycsc3RyKHRtcCksJ2RiLnNxbCddLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTClcbiAgej1zdWJwcm9jZXNzLlBvcGVuKFsnenN0ZCcsJy1UMCcsJy0zJywnLXEnLCctbycsc3RyKG91dCldLHN0ZGluPXRhci5zdGRvdXQsc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCxzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMKTsgdGFyLnN0ZG91dC5jbG9zZSgpXG4gIHpyPXoud2FpdCh0aW1lb3V0PTYwMCk7IHRyPXRhci53YWl0KHRpbWVvdXQ9NjApXG4gIGlmIHpyIT0wIG9yIHRyIT0wOiByYWlzZSBSdW50aW1lRXJyb3IoJ0FSQ0hJVkUnKVxuICBoPWhhc2hsaWIuc2hhMjU2KCk7IG49MFxuICB3aXRoIG9wZW4ob3V0LCdyYicpIGFzIGY6XG4gICAgZm9yIGIgaW4gaXRlcihsYW1iZGE6Zi5yZWFkKDEwNDg1NzYpLGInJyk6IGgudXBkYXRlKGIpOyBuKz1sZW4oYilcbiAgcHJpbnQoanNvbi5kdW1wcyh7eydwYXRoJzpzdHIob3V0KSwnYnl0ZXMnOm4sJ3NoYTI1Nic6aC5oZXhkaWdlc3QoKSwnZGJfYnl0ZXMnOmR1bXAuc3RhdCgpLnN0X3NpemUsJ3N0cmF0ZWd5JzpzdHJhdGVneX19LHNvcnRfa2V5cz1UcnVlLHNlcGFyYXRvcnM9KCcsJywnOicpKSlcbmZpbmFsbHk6XG4gIGlmIGxvY2sgaXMgbm90IE5vbmU6XG4gICAgdHJ5OiBsb2NrLmtpbGwoKTsgbG9jay53YWl0KHRpbWVvdXQ9MylcbiAgICBleGNlcHQgRXhjZXB0aW9uOiBwYXNzXG4gIHRyeTogc2h1dGlsLnJtdHJlZSh0bXApXG4gIGV4Y2VwdCBFeGNlcHRpb246IHBhc3NcbicnJwo4MTg6ICAgIG91dD1xZ2FfZXhlYyh0Wydub2RlJ10sdFsndm1pZCddLFsnL3Vzci9iaW4vcHl0aG9uMycsJy1JJywnLUInLCctJ10seGZfZ3Vlc3RfYnVpbGRlcih0LGdlbikuZW5jb2RlKCksdGltZW91dD05MDAp\nPIPE_7_SCORE=4\nPIPE_7_BASENAME=legacy_engine.py\nPIPE_7_PATH_SHA256=d01be8c91a53c39ac6295a389b40b6b216db5f0cce27d2482e8f29523278d1d9\nPIPE_7_FILE_SHA256=ff4fbf84638ab55a8a1858558b759b3fc9d979ef5feb279132a558bcef583598\nPIPE_7_SCHEDULE_TARGET_COUNT=1\nPIPE_7_QEMU_EXECUTION_DIAG_COUNT=0\nPIPE_7_SELFTEST_REPLACEMENT486_COUNT=0\nPIPE_7_VZDUMP_QEMU_COUNT=0\nPIPE_7_RCLONE_COUNT=31\nPIPE_7_CLOUD_QUORUM_COUNT=0\nPIPE_7_SEAL_WRITTEN_COUNT=0\nPIPE_7_PAYLOAD_PARTS_COUNT=0\nPIPE_7_TRANSPORT_COUNT=3\nPIPE_7_RESTORE_VALIDATION_COUNT=0\nPIPE_7_SCHEDULE_RESULT_COUNT=2\nPIPE_7_RELEVANT_LINE_COUNT=340\nPIPE_7_RELEVANT_B64=NjpTVEFURV9ST09UPXBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKQo3OkNPTkZJR19ST09UPXBhdGhsaWIuUGF0aCgnL2V0Yy9ob21lbGFiLWJhY2t1cC12MicpCjg6VEFSR0VUU19QQVRIPUNPTkZJR19ST09ULyd0YXJnZXRzLmpzb24nCjk6V09SS19ST09UPXBhdGhsaWIuUGF0aCgnL21udC9zdGFnaW5nL2hvbWVsYWItYmFja3VwLXYyJykKMTA6RU5HSU5FX1BBVEg9cGF0aGxpYi5QYXRoKCcvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi1iYWNrdXAtdjInKQoxMTpSQ0xPTkU9c2h1dGlsLndoaWNoKCdyY2xvbmUnKSBvciAnL3Vzci9iaW4vcmNsb25lJwoxOTpST1VURVJfTEVHQUNZX1NDUklQVD1wYXRobGliLlBhdGgoJy91c3IvbG9jYWwvc2Jpbi9ob21lbGFiLXJvdXRlci1ydW5uaW5nLWNvbmZpZy1tYWlsLWNsb3VkJykKMjE6Uk9VVEVSX1RBUkdFVF9TSEE9JzRmOWRhMTI4MzE2NmExZTlmNGU2YmM3ZGQyNDBjNzZhZWY4NTc3MjE3N2Y3MTdmOTJhYmI2ZThlMmJiOGRlOTAnCjI1OkdVRVNUMjY2PXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jdC1iYWNrdXAtMjgycjEvZ3Vlc3QyNjYucHknKQoyNzpQMjcwPXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjcwcjEvcHZlMjcwLnB5JykKMjk6UDI4Mj1wYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvY3QtYmFja3VwLTI4MnIxL3B2ZTI4Mi5weScpCjMxOlAyNjU9cGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMS9wdmUyNjUucHknKQozNTogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxL3YyY29yZS5weScpLCdlMjg1YmY5YTU2NzhkMDdkY2JiOTAyNjFmOWY5M2U3ODI2ZmY1MjRlMDRjZmVjNzgwYmY1YTNjNGIwZGMyOWYyJyksCjM2OiAocGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMS90cmFuc3BvcnQyNjEucHknKSwnYjliOTJmOTU3YmY0NDFjYjVkMTcwMmY0ODgxODk3MzI4ZTZjMDMzOGY4YzNmNmQ0MWQyN2Q5YTM0OWIzNzY4OCcpLAozNzogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9zdHJlYW0tMjYzcjEvc3RyZWFtMjYzLnB5JyksJ2E4M2QwM2E4NmI5M2E4NTU3MTY2NTg2NTJkZDA3M2ZjYjI4MWNkMzg3ZmM2MjAwZmU0YmMyYTkyMmYzOWVhMTYnKSwKMzg6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvc3RyZWFtLTI2M3IxL25vZGVwbGFuMjYzLnB5JyksJ2RiNWMxNmVlMjRkMjVhYTE2OTQ1MzAzMzJkMzE5MGFiN2NjNWQ0ZjhlYjY5MDY3ZDAyNWUyN2FkNWM5OTUwNjAnKSwKMzk6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvbGFyZ2UtY2xvdWQtMjY0cjEvbGFyZ2UyNjQucHknKSwnNWNjNDY0MWZjMzVlNGRkNTU0NDk1YTM2MTQ2ZGE3ZGJiYjdmMTQyZDE0NTBlMDRjYzVkM2M4OTY3OGI4NDk3YScpLAo0NjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL2N0LWJhY2t1cC0yODJyMScpLAo0NzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1yZXRyeS0yNzByMScpLAo0ODogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMScpLAo0OTogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1ydW4tMjY2cjEnKSwKNTA6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjY4cjEnKSwKNTE6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9sYXJnZS1jbG91ZC0yNjRyMScpLAo1MjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3N0cmVhbS0yNjNyMScpLAo1MzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMScpLAo1NDogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3Jlc3RvcmUtMjYycjEnKSwKNTU6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxJyksCjU2OiBwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvdm0tYmFja3VwLTI4M3IxJyksCjU5Om1vZGU9c3lzLmFyZ3ZbMV0KNjU6ZWxpZiBtb2RlPT0nZHVtcF9hcmd2JzoKNjY6IHNvdXJjZT1wYXRobGliLlBhdGgoc3lzLmFyZ3ZbMl0pLnJlc29sdmUoKQo3MTogYXJndj1tb2QuZHVtcF9hcmd2KHJlcVsnam9iJ10scmVxWyd2emR1bXAnXSxwYXRobGliLlBhdGgocmVxWydzY3JhdGNoJ10pLGludChyZXFbJ25vdyddKSkKNzI6IHByaW50KGpzb24uZHVtcHMoYXJndixzZXBhcmF0b3JzPSgnLCcsJzonKSkpCjc3OlJFTU9URVM9Wwo4MjpjbGFzcyBCYWNrdXBFcnJvcihSdW50aW1lRXJyb3IpOgoxMDU6ICAgIGlmIGxlbmd0aCBpcyBub3QgTm9uZSBhbmQgbiE9bGVuZ3RoOiByYWlzZSBCYWNrdXBFcnJvcignTE9DQUxfUEFSVF9TSE9SVF9SRUFEJykKMTA5OiAgICBpZiBub3QgaXNpbnN0YW5jZShuLGludCkgb3Igbjw9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1BBWUxPQURfU0laRV9JTlZBTElEJykKMTI5OiAgICBpZiBsZW4ob3V0KSE9MjogcmFpc2UgQmFja3VwRXJyb3IoJ0FMTE9DQVRPUl9UV09fRElTVElOQ1RfQUNDT1VOVFNfVU5BVkFJTEFCTEUnKQoxMzI6ZGVmIHJlbW90ZV9nZW5lcmF0aW9uX3BhdGgoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM0OiAgICBmb3IgeCBpbiAoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM1OiAgICAgICAgaWYgbm90IHNhZmUuZnVsbG1hdGNoKHgpOiByYWlzZSBCYWNrdXBFcnJvcignVU5TQUZFX0NMT1VEX0NPTVBPTkVOVCcpCjEzNjogICAgcmV0dXJuIGYnaG9tZWxhYi1iYWNrdXBzL3YyL3tzY29wZX0ve2xvZ2ljYWxfaWR9L2dlbmVyYXRpb25zL3tnZW5lcmF0aW9ufScKMTM4OmRlZiBtYWtlX21hbmlmZXN0KHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbixwYXlsb2FkX2J5dGVzLHBheWxvYWRfc2hhMjU2LHBhcnRzLHJlcGxpY2FzLHNvdXJjZV9tZXRhKToKMTM5OiAgICBpZiBsZW4ocmVwbGljYXMpIT0yIG9yIGxlbih7clsncGh5c2ljYWwnXSBmb3IgciBpbiByZXBsaWNhc30pIT0yOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUkVQTElDQV9QSFlTSUNBTF9EVVBMSUNBVEUnKQoxNDA6ICAgIGlmIG5vdCByZS5mdWxsbWF0Y2gocidbMC05YS1mXXs2NH0nLHBheWxvYWRfc2hhMjU2KTogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1BBWUxPQURfU0hBX0lOVkFMSUQnKQoxNDE6ICAgIGlmIHN1bShpbnQocFsnYnl0ZXMnXSkgZm9yIHAgaW4gcGFydHMpIT1wYXlsb2FkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUEFSVF9UT1RBTF9NSVNNQVRDSCcpCjE0MjogICAgcmV0dXJuIHsnc2NoZW1hJzoyLCdzY29wZSc6c2NvcGUsJ2xvZ2ljYWxfaWQnOmxvZ2ljYWxfaWQsJ2dlbmVyYXRpb24nOmdlbmVyYXRpb24sJ2NyZWF0ZWRfYXRfdXRjJzp1dGNub3coKSwKMTQ5OmRlZiBkZWZhdWx0X3RhcmdldHMoKToKMTUzOiAgICBmb3Igdm1pZCx0eXAgaW4gWygxMTAsJ2x4YycpLCgxMTEsJ2x4YycpLCgxMTIsJ2x4YycpLCgxMTMsJ2x4YycpLCgxMzAsJ3FlbXUnKSwoMTUwLCdxZW11JyksKDE2MCwncWVtdScpLCgxNzAsJ3FlbXUnKSwoMTcxLCdxZW11JyksKDE5MCwncWVtdScpLCgyMTAsJ3FlbXUnKSwoMjExLCdxZW11JyksKDkxMzAsJ3FlbXUnKV06CjE1NDogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzooJ2N0JyBpZiB0eXA9PSdseGMnIGVsc2UgJ3ZtJykrc3RyKHZtaWQpLCdzY29wZSc6J3B2ZScsJ3R5cGUnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnZtaWQ9PTExMn0pCjE2ODogICAgICAoJ2dhbWV2aXBlJywxNjAsJ3B2ZTAyJywnL3Zhci93d3cvZm9ydW1zL2dhbWV2aXBlL3B1YmxpYycsJ3hmX2dhbWV2aXBlJywnZ2xvYmFsX3JlYWRfbG9jaycpLAoxNjk6ICAgICAgKCdoa21vZHMnLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvaGttb2RzL3B1YmxpYycsJ3hmX2hrbW9kcycsJ2dsb2JhbF9yZWFkX2xvY2snKSwKMTcwOiAgICAgICgnemFrcnV0aW0nLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvemFrcnV0aW0vcHVibGljJywneGZfemFrcnV0aW0nLCdnbG9iYWxfcmVhZF9sb2NrJyldCjE3MTogICAgZm9yIHNsdWcsdm1pZCxub2RlLHJvb3QsZGIsc3RyYXRlZ3kgaW4gc2l0ZXM6CjE3MjogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzoneGYtJytzbHVnLCdzY29wZSc6J3hlbmZvcm8nLCd0eXBlJzoneGVuZm9ybycsJ3NsdWcnOnNsdWcsJ3ZtaWQnOnZtaWQsJ25vZGUnOm5vZGUsJ2FwcF9yb290Jzpyb290LCdkYl9uYW1lJzpkYiwnZHVtcF9zdHJhdGVneSc6c3RyYXRlZ3ksJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnNsdWcgaW4gKCdjb2RldmlwZScsJ3pha3J1dGltJyl9KQoxNzY6ZGVmIGNob29zZV9kdWVfdGFyZ2V0KHRhcmdldHMsc3RhdGUsbm93PU5vbmUpOgoxNzk6ICAgIGZvciB0IGluIHRhcmdldHM6CjE4MjogICAgICAgIGxhc3Q9aW50KHN0YXRlLmdldCh0Wydsb2dpY2FsX2lkJ10se30pLmdldCgnbGFzdF9zdWNjZXNzX2Vwb2NoJywwKSkKMTg5OmRlZiBydW4oYXJndiwgKiwgaW5wdXQ9Tm9uZSwgdGltZW91dD0zMDAsIGNoZWNrPVRydWUsIGVudj1Ob25lKToKMTkxOiAgICAgICAgcD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSx0aW1lb3V0PXRpbWVvdXQsZW52PWVudikKMTkyOiAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfVElNRU9VVCcpCjE5MzogICAgaWYgY2hlY2sgYW5kIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfRkFJTEVEJyxzdHIocC5yZXR1cm5jb2RlKSkKMTk2OmRlZiBzdHJlYW1fcHJvY2Vzc190b19maWxlKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoxOTk6ICAgICAgICB0cnk6cD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1mLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsdGltZW91dD10aW1lb3V0KQoyMDA6ICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX1RJTUVPVVQnKQoyMDE6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjIwMzpkZWYgcGlwZV90b196c3RkKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoyMDY6ICAgICAgICBzcmM9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSBpZiBpbnB1dCBpcyBub3QgTm9uZSBlbHNlIE5vbmUsc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQoyMTQ6ICAgICAgICAgICAgc3JjLmtpbGwoKTsgc3JjLndhaXQoKTsgcmFpc2UgQmFja3VwRXJyb3IoJ1BJUEVfU09VUkNFX1RJTUVPVVQnKQoyMjA6ICAgICAgICByYWlzZSBCYWNrdXBFcnJvcignUElQRV9USU1FT1VUJykKMjIxOiAgICBpZiBzcmMucmV0dXJuY29kZSE9MCBvciB6LnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdQSVBFX0ZBSUxFRCcsZid7c3JjLnJldHVybmNvZGV9X3t6LnJldHVybmNvZGV9JykKMjM2OmRlZiBsb2FkX3RhcmdldHMoKToKMjM3OiAgICBqPWpzb24ubG9hZHMoVEFSR0VUU19QQVRILnJlYWRfdGV4dCgpKQoyMzg6ICAgIGlmIGouZ2V0KCdzY2hlbWEnKSE9MSBvciBub3QgaXNpbnN0YW5jZShqLmdldCgndGFyZ2V0cycpLGxpc3QpOiByYWlzZSBCYWNrdXBFcnJvcignVEFSR0VUX01BTklGRVNUX1NDSEVNQScpCjIzOTogICAgaWRzPVt4LmdldCgnbG9naWNhbF9pZCcpIGZvciB4IGluIGpbJ3RhcmdldHMnXV0KMjQwOiAgICBpZiBsZW4oaWRzKSE9bGVuKHNldChpZHMpKTogcmFpc2UgQmFja3VwRXJyb3IoJ1RBUkdFVF9NQU5JRkVTVF9EVVBMSUNBVEUnKQoyNDE6ICAgIHJldHVybiBqWyd0YXJnZXRzJ10KMjQzOmRlZiBsb2FkX3N0YXRlX2FsbCgpOgoyNDU6ICAgIHJvb3Q9U1RBVEVfUk9PVC8nc3RhdGUnCjI1MzpkZWYgd3JpdGVfc3RhdGUobG9naWNhbF9pZCxyZXN1bHQsKiprdyk6CjI1NDogICAgaWYgcmVzdWx0IG5vdCBpbiBSRVNVTFRfQ0xBU1NFUzogcmFpc2UgQmFja3VwRXJyb3IoJ1JFU1VMVF9DTEFTU19JTlZBTElEJykKMjU3OiAgICBhdG9taWNfd3JpdGUoU1RBVEVfUk9PVC8nc3RhdGUnLyhsb2dpY2FsX2lkKycuanNvbicpLGNhbm9uaWNhbF9qc29uKGopK2InXG4nLDBvNjAwKQoyNjA6ZGVmIHJjbG9uZV9iYXNlX2FyZ3MoKToKMjYxOiAgICByZXR1cm4gW1JDTE9ORV0KMjYzOmRlZiByY2xvbmVfYWJvdXQocmVtb3RlKToKMjY0OiAgICBwPXJ1bihyY2xvbmVfYmFzZV9hcmdzKCkrWydhYm91dCcscmVtb3RlKyc6JywnLS1qc29uJywnLS1jb250aW1lb3V0JywnMTVzJywnLS10aW1lb3V0JywnNDVzJ10sdGltZW91dD02MCkKMjY2OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0FCT1VUX0pTT04nKQoyNjg6ICAgIGlmIG5vdCBpc2luc3RhbmNlKGZyZWUsaW50KTogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9GUkVFX1VOS05PV04nKQoyNzM6ICAgIGZvciBjcnlwdCxwaHlzaWNhbCBpbiBSRU1PVEVTOgoyNzQ6ICAgICAgICB0cnk6IGZyZWU9cmNsb25lX2Fib3V0KGNyeXB0KQoyNzU6ICAgICAgICBleGNlcHQgQmFja3VwRXJyb3I6IGJhZCs9MTsgY29udGludWUKMjgwOmRlZiByZW1vdGVfZXhpc3RzX2FueShzY29wZSxsb2dpY2FsX2lkLGdlbmVyYXRpb24pOgoyODE6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbikKMjgyOiAgICBmb3IgY3J5cHQsX3BoeXNpY2FsIGluIFJFTU9URVM6CjI4MzogICAgICAgIHA9cnVuKHJjbG9uZV9iYXNlX2FyZ3MoKStbJ2xzZicsY3J5cHQrJzonK3JlbCwnLS1tYXgtZGVwdGgnLCcxJ10sdGltZW91dD00NSxjaGVjaz1GYWxzZSkKMjg3OmRlZiByY2xvbmVfcmNhdChyZW1vdGVfcGF0aCwgc291cmNlX3BhdGg9Tm9uZSwgb2Zmc2V0PTAsIGxlbmd0aD1Ob25lLCBkYXRhPU5vbmUsIHRpbWVvdXQ9MzYwMCk6CjI4ODogICAgYXJndj1yY2xvbmVfYmFzZV9hcmdzKCkrWydyY2F0JyxyZW1vdGVfcGF0aCwnLS1yZXRyaWVzJywnMycsJy0tbG93LWxldmVsLXJldHJpZXMnLCc1JywnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNW0nXQoyODk6ICAgIHA9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSxzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCjI5OTogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBiOiByYWlzZSBCYWNrdXBFcnJvcignVVBMT0FEX0xPQ0FMX1NIT1JUX1JFQUQnKQozMDc6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9SQ0FUX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjMwOTpkZWYgcmNsb25lX2NhdF9oYXNoKHJlbW90ZV9wYXRoLCBleHBlY3RlZF9ieXRlcz1Ob25lLCB0aW1lb3V0PTM2MDApOgozMTE6ICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihyY2xvbmVfYmFzZV9hcmdzKCkrWydjYXQnLHJlbW90ZV9wYXRoLCctLWNvbnRpbWVvdXQnLCcyMHMnLCctLXRpbWVvdXQnLCc1bSddLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkgYXMgcDoKMzE0OiAgICAgICAgICAgICAgICBwLmtpbGwoKTsgcC53YWl0KCk7IHJhaXNlIEJhY2t1cEVycm9yKCdSQ0xPTkVfQ0FUX1RJTUVPVVQnKQozMTk6ICAgIGlmIHJjIT0wOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9GQUlMRUQnLHN0cihyYykpCjMyMDogICAgaWYgZXhwZWN0ZWRfYnl0ZXMgaXMgbm90IE5vbmUgYW5kIG4hPWV4cGVjdGVkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9TSVpFX01JU01BVENIJykKMzIzOmRlZiByY2xvbmVfY2F0X2J5dGVzKHJlbW90ZV9wYXRoLG1heF9ieXRlcz00KjEwMjQqMTAyNCk6CjMyNDogICAgcD1ydW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxyZW1vdGVfcGF0aCwnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNjBzJ10sdGltZW91dD05MCkKMzI1OiAgICBpZiBsZW4ocC5zdGRvdXQpPm1heF9ieXRlczogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9TTUFMTF9PQkpFQ1RfVE9PX0xBUkdFJykKMzI4OmRlZiBnZW5lcmF0aW9uX2lkKGxvZ2ljYWxfaWQpOgozMzI6ZGVmIHVwbG9hZF9hbmRfc2VhbCh0LHBheWxvYWRfcGF0aCxzb3VyY2VfbWV0YSk6CjMzNTogICAgZ2VuPXNvdXJjZV9tZXRhWydnZW5lcmF0aW9uJ107IHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHRbJ3Njb3BlJ10sdFsnbG9naWNhbF9pZCddLGdlbikKMzM2OiAgICBpZiByZW1vdGVfZXhpc3RzX2FueSh0WydzY29wZSddLHRbJ2xvZ2ljYWxfaWQnXSxnZW4pOiByYWlzZSBCYWNrdXBFcnJvcignR0VORVJBVElPTl9DT0xMSVNJT04nKQozMzk6ICAgIG1hbmlmZXN0PW1ha2VfbWFuaWZlc3QodFsnc2NvcGUnXSx0Wydsb2dpY2FsX2lkJ10sZ2VuLG4scHNoYSxwYXJ0cyxyZXBzLHNvdXJjZV9tZXRhKQozNDA6ICAgIG1iPWNhbm9uaWNhbF9qc29uKG1hbmlmZXN0KStiJ1xuJzsgbXNoYT1zaGEyNTZfYnl0ZXMobWIpCjM0NTogICAgICAgICAgICByY2xvbmVfcmNhdChycCxzb3VyY2VfcGF0aD1wYXlsb2FkX3BhdGgsb2Zmc2V0PXBhcnRbJ29mZnNldCddLGxlbmd0aD1wYXJ0WydieXRlcyddKQozNDY6ICAgICAgICAgICAgZ290LGdvdG49cmNsb25lX2NhdF9oYXNoKHJwLHBhcnRbJ2J5dGVzJ10pCjM0NzogICAgICAgICAgICBpZiBnb3QhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUEFSVF9SRUFEQkFDS19TSEFfTUlTTUFUQ0gnKQozNDg6ICAgICAgICByY2xvbmVfcmNhdChiYXNlKycvbWFuaWZlc3QuanNvbicsZGF0YT1tYikKMzQ5OiAgICAgICAgaWYgcmNsb25lX2NhdF9ieXRlcyhiYXNlKycvbWFuaWZlc3QuanNvbicpIT1tYjogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1JFQURCQUNLX01JU01BVENIJykKMzUwOiAgICBzZWFsPXsnc2NoZW1hJzoxLCdnZW5lcmF0aW9uJzpnZW4sJ2xvZ2ljYWxfaWQnOnRbJ2xvZ2ljYWxfaWQnXSwnbWFuaWZlc3Rfc2hhMjU2Jzptc2hhLCdwYXlsb2FkX3NoYTI1Nic6cHNoYSwnc3RhdHVzJzonU0VBTEVEJywnc2VhbGVkX2F0X3V0Yyc6dXRjbm93KCl9CjM1MTogICAgc2I9Y2Fub25pY2FsX2pzb24oc2VhbCkrYidcbicKMzU0OiAgICAgICAgcmNsb25lX3JjYXQoYmFzZSsnL1NFQUxFRC5qc29uJyxkYXRhPXNiKQozNTU6ICAgICAgICBpZiByY2xvbmVfY2F0X2J5dGVzKGJhc2UrJy9TRUFMRUQuanNvbicpIT1zYjogcmFpc2UgQmFja3VwRXJyb3IoJ1NFQUxfUkVBREJBQ0tfTUlTTUFUQ0gnKQozNTY6ICAgIHJldHVybiBtYW5pZmVzdCxtc2hhLHsndW5oZWFsdGh5JzpiYWQsJ2hlYWx0aHknOmhlYWx0aHl9CjM1ODpkZWYgcmVjb25zdHJ1Y3RfcmVwbGljYShtYW5pZmVzdCxyZXAsb3V0X3BhdGgpOgozNTk6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKG1hbmlmZXN0WydzY29wZSddLG1hbmlmZXN0Wydsb2dpY2FsX2lkJ10sbWFuaWZlc3RbJ2dlbmVyYXRpb24nXSkKMzYzOiAgICAgICAgZm9yIHBhcnQgaW4gbWFuaWZlc3RbJ3BhcnRzJ106CjM2NTogICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxiYXNlKycvcGFydHMvJytwYXJ0WyduYW1lJ10sJy0tY29udGltZW91dCcsJzIwcycsJy0tdGltZW91dCcsJzVtJ10sc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKSBhcyBwOgozNzE6ICAgICAgICAgICAgaWYgcmMhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9DQVRfRkFJTEVEJykKMzcyOiAgICAgICAgICAgIGlmIG4hPXBhcnRbJ2J5dGVzJ10gb3IgcGguaGV4ZGlnZXN0KCkhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUkVDT05TVFJVQ1RfUEFSVF9NSVNNQVRDSCcpCjM3MzogICAgaWYgdG90YWwhPW1hbmlmZXN0WydwYXlsb2FkX2J5dGVzJ10gb3IgaC5oZXhkaWdlc3QoKSE9bWFuaWZlc3RbJ3BheWxvYWRfc2hhMjU2J106IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9QQVlMT0FEX01JU01BVENIJykKMzgyOiAgICBpZiByMSE9MCBvciBwMi5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9MSVNUX0ZBSUxFRCcpCjM4NDogICAgaWYgbm90IG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9FTVBUWScpCjM4NTogICAgaWYgcmVxdWlyZWRfbWVtYmVyIGFuZCByZXF1aXJlZF9tZW1iZXIgbm90IGluIG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignUkVRVUlSRURfTUVNQkVSX01JU1NJTkcnKQozOTQ6ICAgICAgICAgICAgIyBHcmVlbiBzZXQgaXMgaW50ZW50aW9uYWxseSBDVC1vbmx5LiBTY2hlZHVsZWQgUUVNVSBiYWNrdXBzIHN0aWxsIGdldCBkdWFsIHJlbW90ZSBieXRlIHJlYWRiYWNrLgo0MDI6ICAgICAgICBpZiBwMi5yZXR1cm5jb2RlIT0wIG9yIGxlbihkYXRhKTwxMjg6IHJhaXNlIEJhY2t1cEVycm9yKCdYRU5GT1JPX0RCX0RVTVBfSU5WQUxJRCcpCjQwMzogICAgZWxzZTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZBTElEQVRPUl9VTktOT1dOX1RZUEUnKQo0MDg6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfSU5WRU5UT1JZX0pTT04nKQo0MTA6ZGVmIHNzaF9yZW1vdGUobm9kZSxhcmd2LGlucHV0PU5vbmUsdGltZW91dD0xODAwLGNoZWNrPVRydWUpOgo0MTE6ICAgIGNtZD0nUEFUSD0vdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjsgZXhwb3J0IFBBVEg7IGV4ZWMgJytzaGxleC5qb2luKFtzdHIoeCkgZm9yIHggaW4gYXJndl0pCjQxMjogICAgaWYgbm9kZT09J3B2ZTAxJzogcmV0dXJuIHJ1bihbc3RyKHgpIGZvciB4IGluIGFyZ3ZdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNDE4OiAgICByYWlzZSBCYWNrdXBFcnJvcignUFZFX0dVRVNUX1RZUEVfRFJJRlQnKQo0MjE6ICAgIGlmIG5vdCBwYXRoLmlzX2ZpbGUoKSBvciBwYXRoLmlzX3N5bWxpbmsoKSBvciBzaGEyNTZfZmlsZShwYXRoKSE9ZXhwZWN0ZWQ6IHJhaXNlIEJhY2t1cEVycm9yKGNvZGUpCjQzMTogICAgaWYgcC5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignSElTVE9SSUNBTF9HUkFQSF9JTVBPUlRfRkFJTEVEJyxmJ3JjX3twLnJldHVybmNvZGV9X3N0ZGVycl9zaGEyNTZfe2hhc2hsaWIuc2hhMjU2KHAuc3RkZXJyKS5oZXhkaWdlc3QoKX0nKQo0MzM6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9KU09OJykKNDM2OiAgICAgICAgaWYgc3RyKHBhdGhsaWIuUGF0aChvdXQuZ2V0KGssJycpKS5yZXNvbHZlKCkpIT1zdHIocGF0aGxpYi5QYXRoKHYpLnJlc29sdmUoKSk6IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9QQVRIJyxrKQo0Mzk6ZGVmIF9pc29sYXRlZF9ndWVzdDI2Nl9kdW1wX2FyZ3Yoam9iLHZ6ZHVtcCxzY3JhdGNoLG5vdyk6CjQ0MDogICAgZW52PV9oaXN0b3JpY2FsX2dyYXBoX2VudigpO3JlcT17J2pvYic6am9iLCd2emR1bXAnOnN0cih2emR1bXApLCdzY3JhdGNoJzpzdHIoc2NyYXRjaCksJ25vdyc6aW50KG5vdyl9CjQ0MTogICAgcD1zdWJwcm9jZXNzLnJ1bihbc3lzLmV4ZWN1dGFibGUsJy1CJywnLWMnLF9ISVNUT1JJQ0FMX0hFTFBFUiwnZHVtcF9hcmd2JyxzdHIoR1VFU1QyNjYpXSxpbnB1dD1jYW5vbmljYWxfanNvbihyZXEpLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSxlbnY9ZW52LGN3ZD0nLycsdGltZW91dD0zMCkKNDQyOiAgICBpZiBwLnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdHVUVTVDI2Nl9TVUJQUk9DRVNTX0ZBSUxFRCcsZidyY197cC5yZXR1cm5jb2RlfV9zdGRlcnJfc2hhMjU2X3toYXNobGliLnNoYTI1NihwLnN0ZGVycikuaGV4ZGlnZXN0KCl9JykKNDQ0OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignR1VFU1QyNjZfU1VCUFJPQ0VTU19KU09OJykKNDQ5OiAgICByZXR1cm4geyd2bWlkJzppbnQodFsndm1pZCddKSwnaWQnOmludCh0Wyd2bWlkJ10pLCd0eXBlJzonbHhjJywna2luZCc6J2x4YycsJ2d1ZXN0X3R5cGUnOidseGMnLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpLCduYW1lJzpyb3cuZ2V0KCduYW1lJywnJyksCjQ1MzogICAgICAgICAgICAnYmxvY2tlcnMnOltdLCdkaXNrcyc6W10sJ3RlbXBsYXRlJzpib29sKHJvdy5nZXQoJ3RlbXBsYXRlJywwKSksJ2hvb2tzY3JpcHRfcHJlc2VudCc6RmFsc2UsJ2xvY2tfcHJlc2VudCc6RmFsc2UsCjQ1NDogICAgICAgICAgICAnc25hcHNob3RfaGlzdG9yeV9pbmNsdWRlZCc6RmFsc2UsJ3VudXNlZF92b2x1bWVfY291bnQnOjAsJ2Nkcm9tX2NvdW50JzowLCdjZHJvbV9tZWRpYV9pbmNsdWRlZCc6RmFsc2UsJ2d1ZXN0X3Jlc3RvcmVfdmVyaWZpZWQnOkZhbHNlLAo0NTc6ZGVmIHByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCk6CjQ1OTogICAgdm1pZD1pbnQodFsndm1pZCddKQo0NjA6ICAgIHJlcT17J3ZtaWQnOnZtaWQsJ25vZGUnOnN0cihub2RlKSwnc2NyYXRjaCc6c3RyKHNjcmF0Y2gpfQo0NjY6ICAgICAgICByYWlzZSBCYWNrdXBFcnJvcignUFZFMjY1X0ZSRVNIX1BMQU5fJytjb2RlKQo0Njc6ICAgIGlmIHAuc3RkZXJyIG9yIGxlbihwLnN0ZG91dCk+MTA0ODU3NjogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRTI2NV9GUkVTSF9QTEFOX09VVFBVVCcpCjQ2OTogICAgZXhjZXB0IChVbmljb2RlRGVjb2RlRXJyb3IsanNvbi5KU09ORGVjb2RlRXJyb3IpOiByYWlzZSBCYWNrdXBFcnJvcignUFZFMjY1X0ZSRVNIX1BMQU5fT1VUUFVUJykgZnJvbSBOb25lCjQ3MDogICAgaWYgdHlwZShkKSBpcyBub3QgZGljdCBvciBzZXQoZCkhPXsnYXJndicsJ2pvYid9OiByYWlzZSBCYWNrdXBFcnJvcignUFZFMjY1X0ZSRVNIX1BMQU5fT1VUUFVUJykKNDcxOiAgICBhcmd2PWRbJ2FyZ3YnXTtqb2I9ZFsnam9iJ10KNDcyOiAgICBpZiB0eXBlKGpvYikgaXMgbm90IGRpY3Qgb3Igam9iLmdldCgndm1pZCcpIT12bWlkIG9yIGpvYi5nZXQoJ25vZGUnKSE9bm9kZSBvciBqb2IuZ2V0KCd0eXBlJykhPSdseGMnOiByYWlzZSBCYWNrdXBFcnJvcignUFZFMjY1X0ZSRVNIX1BMQU5fT1VUUFVUJykKNDczOiAgICBpZiB0eXBlKGFyZ3YpIGlzIG5vdCBsaXN0IG9yIG5vdCBhcmd2IG9yIGFueSh0eXBlKHgpIGlzIG5vdCBzdHIgb3Igbm90IHggZm9yIHggaW4gYXJndik6IHJhaXNlIEJhY2t1cEVycm9yKCdQVkUyNjVfRlJFU0hfUExBTl9PVVRQVVQnKQo0NzQ6ICAgIHJldHVybiBhcmd2LGpvYgo0NzY6ZGVmIF9kZWZhdWx0X3VucHJpdmlsZWdlZF9seGMobm9kZSx2bWlkKToKNDc3OiAgICBxPXNzaF9yZW1vdGUobm9kZSxbJ3BjdCcsJ2NvbmZpZycsc3RyKHZtaWQpXSx0aW1lb3V0PTMwKQo0Nzk6ICAgIGlmICd1bnByaXZpbGVnZWQ6IDEnIG5vdCBpbiBsaW5lczogcmFpc2UgQmFja3VwRXJyb3IoJ0xYQ19OT1RfVU5QUklWSUxFR0VEJykKNDgwOiAgICBpZiBhbnkoeC5zdGFydHN3aXRoKCdseGMuaWRtYXA6Jykgb3IgeC5zdGFydHN3aXRoKCdseGMuaWRtYXAgPScpIGZvciB4IGluIGxpbmVzKTogcmFpc2UgQmFja3VwRXJyb3IoJ0xYQ19DVVNUT01fSURNQVBfVU5TVVBQT1JURUQnKQo0ODU6ICAgIHE9c3NoX3JlbW90ZShub2RlLHBvcyx0aW1lb3V0PTMwLGNoZWNrPUZhbHNlKQo0ODY6ICAgIGlmIHEucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ01BUFBFRF9VSURfQUNDRVNTX1BST0JFX0ZBSUxFRCcpCjQ4ODpkZWYgX3N0cmVhbV9hcmd2X3RvX2xvY2FsKG5vZGUsYXJndixkZXN0LHRpbWVvdXQ9NzIwMCk6CjQ5MDogICAgaWYgbm9kZT09J3B2ZTAxJzogY21kPWFyZ3YKNDkyOiAgICAgICAgcmVtb3RlPSdQQVRIPS91c3Ivc2JpbjovdXNyL2Jpbjovc2JpbjovYmluOyBleHBvcnQgUEFUSDsgZXhlYyAnK3NobGV4LmpvaW4oYXJndikKNDkzOiAgICAgICAgY21kPVtTU0gsJy1vJywnQmF0Y2hNb2RlPXllcycsJy1vJywnU3RyaWN0SG9zdEtleUNoZWNraW5nPXllcycsJ3Jvb3RAJytub2RlLHJlbW90ZV0KNDk5OiAgICAgICAgICAgIHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfU1RSRUFNX1RJTUVPVVQnKQo1MDM6ICAgICAgICByYWlzZSBCYWNrdXBFcnJvcignQ09NTUFORF9GQUlMRUQnLGYndnpkdW1wX3JjX3twLnJldHVybmNvZGV9X3N0ZGVycl9zaGEyNTZfe2hhc2hsaWIuc2hhMjU2KHAuc3RkZXJyKS5oZXhkaWdlc3QoKX0nKQo1MDQ6ICAgIGlmIG5vdCBkZXN0LmlzX2ZpbGUoKSBvciBkZXN0LnN0YXQoKS5zdF9zaXplPD0wOiByYWlzZSBCYWNrdXBFcnJvcignVlpEVU1QX1BBWUxPQURfTUlTU0lORycpCjUwNzogICAgdm1pZD1pbnQodFsndm1pZCddKTsgcm93cz1bciBmb3IgciBpbiBjbHVzdGVyX2ludmVudG9yeSgpIGlmIGludChyLmdldCgndm1pZCcsLTEpKT09dm1pZF0KNTA4OiAgICBpZiBsZW4ocm93cykhPTE6IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfR1VFU1RfTk9UX1VOSVFVRScpCjUxMDogICAgaWYgdHlwIT10WydndWVzdF90eXBlJ106IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfR1VFU1RfVFlQRV9EUklGVCcpCjUxMzogICAgICAgIF9kZWZhdWx0X3VucHJpdmlsZWdlZF9seGMobm9kZSx2bWlkKQo1MTQ6ICAgICAgICBzY3JhdGNoPWYnL3Zhci90bXAvaG9tZWxhYi12emR1bXAtdjIte2dlbn0nCjUxNTogICAgICAgIHNzaF9yZW1vdGUobm9kZSxbJ2luc3RhbGwnLCctZCcsJy1tJywnNzEwJywnLW8nLCcwJywnLWcnLCcxMDAwMDAnLHNjcmF0Y2hdLHRpbWVvdXQ9MzApCjUxNjogICAgICAgIHE9c3NoX3JlbW90ZShub2RlLFsnc3RhdCcsJy1jJywnJWE6JXU6JWcnLHNjcmF0Y2hdLHRpbWVvdXQ9MzApCjUxNzogICAgICAgIGlmIHEuc3Rkb3V0LmRlY29kZSgpLnN0cmlwKCkhPSc3MTA6MDoxMDAwMDAnOiByYWlzZSBCYWNrdXBFcnJvcignUFZFX01BUFBFRF9TQ1JBVENIX0FDQ0VTU19DT05UUkFDVCcpCjUyMDogICAgICAgICAgICBhcmd2LGpvYj1wcm92ZW5fbHhjX2R1bXBfYXJndih0LHJvdyxub2RlLHNjcmF0Y2gpCjUyMjogICAgICAgICAgICBfc3RyZWFtX2FyZ3ZfdG9fbG9jYWwobm9kZSxhcmd2LGxvY2FsLHRpbWVvdXQ9NzIwMCkKNTIzOiAgICAgICAgICAgIGlmIGxvY2FsLnN0YXQoKS5zdF9zaXplPmludChqb2JbJ2FyY2hpdmVfY2FwX2J5dGVzJ10pOiByYWlzZSBCYWNrdXBFcnJvcignVlpEVU1QX0FSQ0hJVkVfQ0FQX0VYQ0VFREVEJykKNTI1OiAgICAgICAgICAgIHNzaF9yZW1vdGUobm9kZSxbJ3JtJywnLXJmJywnLS0nLHNjcmF0Y2hdLHRpbWVvdXQ9NjAsY2hlY2s9RmFsc2UpO3JhaXNlCjUyNzogICAgICAgIHJldHVybiBsb2NhbCx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzoncHZlX2d1ZXN0Jywndm1pZCc6dm1pZCwnZ3Vlc3RfdHlwZSc6dHlwLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpLCdwcm9kdWNlcl9jb250cmFjdCc6J3Byb3Zlbi0yNzAtMjgyLXN0cmVhbSd9LGNsZWFudXAKNTI4OiAgICAjIFFFTVUgcGF0aCByZW1haW5zIHVuY2hhbmdlZDogYm91bmRlZCBkZWRpY2F0ZWQgZHVtcGRpciB3aXRoIGxhdGVyIGNsb3VkIHJlYWRiYWNrL3JlY29uc3RydWN0aW9uLgo1Mjk6ICAgIHNyY2Rpcj1mJy92YXIvdG1wL2hvbWVsYWItdnpkdW1wLXYyLXtnZW59Jwo1MzA6ICAgIHNzaF9yZW1vdGUobm9kZSxbJ2luc3RhbGwnLCctZCcsJy1tJywnNzAwJywnLW8nLCcwJywnLWcnLCcwJyxzcmNkaXJdLHRpbWVvdXQ9MzApCjUzMjogICAgICAgIHNzaF9yZW1vdGUobm9kZSxbJ3Z6ZHVtcCcsc3RyKHZtaWQpLCctLW1vZGUnLCdzbmFwc2hvdCcsJy0tY29tcHJlc3MnLCd6c3RkJywnLS1kdW1wZGlyJyxzcmNkaXJdLHRpbWVvdXQ9NzIwMCkKNTMzOiAgICAgICAgcD1zc2hfcmVtb3RlKG5vZGUsWydmaW5kJyxzcmNkaXIsJy1tYXhkZXB0aCcsJzEnLCctdHlwZScsJ2YnLCctcHJpbnRmJywnJXBcbiddLHRpbWVvdXQ9MzApCjUzNTogICAgICAgIGlmIGxlbihmaWxlcykhPTE6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfT1VUUFVUX05PVF9VTklRVUUnKQo1Mzk6ICAgICAgICBpZiBub3QgcGF0aGxpYi5QYXRoKGxvY2FsKS5pc19maWxlKCkgb3IgcGF0aGxpYi5QYXRoKGxvY2FsKS5zdGF0KCkuc3Rfc2l6ZTw9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9QQVlMT0FEX01JU1NJTkcnKQo1NDE6ICAgICAgICBzc2hfcmVtb3RlKG5vZGUsWydybScsJy1yZicsJy0tJyxzcmNkaXJdLHRpbWVvdXQ9NjAsY2hlY2s9RmFsc2UpO3JhaXNlCjU0MjogICAgcmV0dXJuIHBhdGhsaWIuUGF0aChsb2NhbCkseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3B2ZV9ndWVzdCcsJ3ZtaWQnOnZtaWQsJ2d1ZXN0X3R5cGUnOnR5cCwnbm9kZSc6bm9kZSwnc3RhdHVzJzpyb3cuZ2V0KCdzdGF0dXMnKX0seydraW5kJzoncHZlX3NvdXJjZV9kaXInLCdub2RlJzpub2RlLCdwYXRoJzpzcmNkaXJ9CjU0NTogICAgaWYgbm90IE9QRVJBVE9SX0tFWS5pc19maWxlKCkgb3IgT1BFUkFUT1JfS0VZLmlzX3N5bWxpbmsoKTogcmFpc2UgQmFja3VwRXJyb3IoJ09QRVJBVE9SX0tFWV9NSVNTSU5HJykKNTQ5OiAgICBpZiBub3QgbSBvciBtLmdyb3VwKDEpIT1PUEVSQVRPUl9LRVlfRklOR0VSUFJJTlQ6IHJhaXNlIEJhY2t1cEVycm9yKCdPUEVSQVRPUl9LRVlfRklOR0VSUFJJTlRfTUlTTUFUQ0gnKQo1NjM6ICAgIGlmIGxlbihnb29kKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ0hPU1RLRVlfUElOX01JU01BVENIJykKNTY2OmRlZiBlbnN1cmVfdnBzX2tub3duX2hvc3RzKHRhcmdldHMpOgo1Njg6ICAgIGZvciB0IGluIHRhcmdldHM6CjU3MzpkZWYgdnBzX3NzaF9hcmd2KHQsICosIHVzZV9hZ2VudD1GYWxzZSk6CjU4MjpkZWYgdnBzX3J1bih0LCByZW1vdGVfYXJndiwgKiwgaW5wdXQ9Tm9uZSwgdGltZW91dD0zMDAsIHVzZV9hZ2VudD1GYWxzZSwgY2hlY2s9VHJ1ZSk6CjU4MzogICAgcmVtb3RlPXNobGV4LmpvaW4oW3N0cih4KSBmb3IgeCBpbiByZW1vdGVfYXJndl0pCjU4NDogICAgcmV0dXJuIHJ1bih2cHNfc3NoX2FyZ3YodCx1c2VfYWdlbnQ9dXNlX2FnZW50KStbcmVtb3RlXSxpbnB1dD1pbnB1dCx0aW1lb3V0PXRpbWVvdXQsY2hlY2s9Y2hlY2spCjU4NjpkZWYgYm9vdHN0cmFwX3Zwc19rZXlzKHRhcmdldHMpOgo1ODg6ICAgIGVuc3VyZV92cHNfa25vd25faG9zdHModGFyZ2V0cykKNTkxOiAgICBmb3IgdCBpbiB0YXJnZXRzOgo1OTY6ICAgICAgICBpZiBub3Qgb3MuZW52aXJvbi5nZXQoJ1NTSF9BVVRIX1NPQ0snKTogcmFpc2UgQmFja3VwRXJyb3IoJ0ZPUldBUkRFRF9BR0VOVF9SRVFVSVJFRF9GT1JfQk9PVFNUUkFQJykKNjAwOiAgICAgICAgaWYgdGFnIG5vdCBpbiAoJ0FEREVEJywnQUxSRUFEWScpOiByYWlzZSBCYWNrdXBFcnJvcignVlBTX0FVVEhPUklaRURfS0VZX0JPT1RTVFJBUF9SRVNVTFQnKQo2MDQ6ICAgIHVzPVt4IGZvciB4IGluIHRhcmdldHMgaWYgeFsndHlwZSddPT0ndnBzX3VzJ11bMF0KNjA5OmRlZiByZW1vdGVfaGFzaHNldCh0LGNvbW1hbmQpOgo2MTQ6ICAgIGZpbGVzPVsnZXRjL25ldGJpcmQvaW5zdGFsbC5jb25mJywndmFyL2xpYi9uZXRiaXJkL3N0YXRlLmpzb24nLCd2YXIvbGliL25ldGJpcmQvc2VydmljZS5qc29uJywndmFyL2xpYi9uZXRiaXJkL2FjdGl2ZV9wcm9maWxlLmpzb24nLCd2YXIvbGliL25ldGJpcmQvZGVmYXVsdC5qc29uJ10KNjE2OiAgICBwcmU9cmVtb3RlX2hhc2hzZXQodCxjbWQpCjYxNzogICAgcmVtb3RlPXNobGV4LmpvaW4oWydzdWRvJywnLW4nLCd0YXInLCctLW51bWVyaWMtb3duZXInLCctQycsJy8nLCctY2YnLCctJ10rZmlsZXMpCjYxODogICAgYXJndj12cHNfc3NoX2FyZ3YodCx1c2VfYWdlbnQ9RmFsc2UpK1tyZW1vdGVdCjYxOTogICAgcGF5bG9hZD13b3JrLydwYXlsb2FkLnRhci56c3QnOyBwaXBlX3RvX3pzdGQoYXJndixwYXlsb2FkLHRpbWVvdXQ9NjAwKQo2MjA6ICAgIHBvc3Q9cmVtb3RlX2hhc2hzZXQodCxjbWQpCjYyMTogICAgaWYgcHJlIT1wb3N0OiByYWlzZSBCYWNrdXBFcnJvcignTURfU09VUkNFX0NIQU5HRURfRFVSSU5HX0NBUFRVUkUnKQo2MjI6ICAgIHJldHVybiBwYXlsb2FkLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOid2cHNfbWQnLCdjb25zaXN0ZW5jeSc6J0ZJTEVTRVRfUFJFX1BPU1RfSEFTSF9TVEFCSUxJVFknLCdoYXNoc2V0X3NoYTI1Nic6cHJlfSxOb25lCjYyNjogICAgcHJlPXJlbW90ZV9oYXNoc2V0KHQsaGNtZCkKNjI3OiAgICByZW1vdGU9c2hsZXguam9pbihbJ3RhcicsJy0tbnVtZXJpYy1vd25lcicsJy1DJywnLycsJy1jZicsJy0nLCdldGMvbmdpbngnXSkKNjI4OiAgICBhcmd2PXZwc19zc2hfYXJndih0LHVzZV9hZ2VudD1GYWxzZSkrW3JlbW90ZV0KNjI5OiAgICBwYXlsb2FkPXdvcmsvJ3BheWxvYWQudGFyLnpzdCc7IHBpcGVfdG9fenN0ZChhcmd2LHBheWxvYWQsdGltZW91dD05MDApCjYzMDogICAgcG9zdD1yZW1vdGVfaGFzaHNldCh0LGhjbWQpCjYzMTogICAgaWYgcHJlIT1wb3N0OiByYWlzZSBCYWNrdXBFcnJvcignU1BCX1NPVVJDRV9DSEFOR0VEX0RVUklOR19DQVBUVVJFJykKNjMyOiAgICByZXR1cm4gcGF5bG9hZCx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzondnBzX3NwYicsJ2NvbnNpc3RlbmN5JzonU1RBVElDX0NPTkZJR19GSUxFU0VUX1BSRV9QT1NUX0hBU0hfU1RBQklMSVRZJywndGxzX3JlY292ZXJ5JzonUkVJU1NVRV9UTFNfT05fUkVTVE9SRScsJ2hhc2hzZXRfc2hhMjU2JzpwcmV9LE5vbmUKNjM0OlVTX1JFTU9URV9TQ1JJUFQ9cicnJ2ltcG9ydCBpbyxvcyxzcWxpdGUzLHN5cyx0YXJmaWxlLHRpbWUsanNvbixoYXNobGliCjY1NzogICAgZHN0PXNxbGl0ZTMuY29ubmVjdCgnOm1lbW9yeTonKTsgc3JjLmJhY2t1cChkc3QpCjY2MDogICAgdGk9dGFyZmlsZS5UYXJJbmZvKG5hbWU9KCdzcWxpdGUtYmFja3Vwcy8nK25hbWUpKTsgdGkuc2l6ZT1sZW4oYik7IHRpLm1vZGU9MG82MDA7IHRpLm10aW1lPWludCh0aW1lLnRpbWUoKSk7IHRmLmFkZGZpbGUodGksaW8uQnl0ZXNJTyhiKSkKNjY0OiAgICByZW1vdGU9c2hsZXguam9pbihbJ3B5dGhvbjMnLCctSScsJy1CJywnLWMnLFVTX1JFTU9URV9TQ1JJUFRdKQo2NjU6ICAgIGFyZ3Y9dnBzX3NzaF9hcmd2KHQsdXNlX2FnZW50PUZhbHNlKStbcmVtb3RlXQo2NjY6ICAgIHBheWxvYWQ9d29yay8ncGF5bG9hZC50YXIuenN0JzsgcGlwZV90b196c3RkKGFyZ3YscGF5bG9hZCx0aW1lb3V0PTEyMDApCjY2NzogICAgcmV0dXJuIHBheWxvYWQseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3Zwc191cycsJ2NvbnNpc3RlbmN5JzonU1FMSVRFX09OTElORV9CQUNLVVBfUExVU19OT05EQl9GSUxFUycsJ3NxbGl0ZV9jb3VudCc6NH0sTm9uZQo3NDA6ICAgIGlmIG5vdCBST1VURVJfTEVHQUNZX1NDUklQVC5pc19maWxlKCkgb3IgUk9VVEVSX0xFR0FDWV9TQ1JJUFQuaXNfc3ltbGluaygpIG9yIHNoYTI1Nl9maWxlKFJPVVRFUl9MRUdBQ1lfU0NSSVBUKSE9Uk9VVEVSX0xFR0FDWV9TSEE6IHJhaXNlIEJhY2t1cEVycm9yKCdST1VURVJfTEVHQUNZX1NDUklQVF9JREVOVElUWScpCjc0MzogICAgaGl0cz1baXAgZm9yIGlwIGluIGlwcyBpZiBzaGEyNTZfYnl0ZXMoaXAuZW5jb2RlKCkpPT1ST1VURVJfVEFSR0VUX1NIQV0KNzQ0OiAgICBpZiBsZW4oaGl0cykhPTE6IHJhaXNlIEJhY2t1cEVycm9yKCdST1VURVJfVEFSR0VUX1BBUlNFJykKNzQ1OiAgICB0YXJnZXQ9aGl0c1swXQo3NTM6ICAgIGlmIGxlbihzYWZlKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9QQVNTRklMRV9QQVJTRScpCjc1NDogICAgcmV0dXJuIHRhcmdldCxzYWZlWzBdCjc1NzogICAgcm9vdHM9W3BhdGhsaWIuUGF0aCgnL2V0YycpLHBhdGhsaWIuUGF0aCgnL3Jvb3QvLnNzaCcpLHBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAnKSxwYXRobGliLlBhdGgoJy92YXIvbGliL2hvbWVsYWItYmFja3VwLXYyJyldCjc3MjogICAgaWYgbGVuKHVuaXEpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignRVhBQ1RfU0hBX0ZJTEVfTk9UX1VOSVFVRScpCjc4MDogICAgaWYgc2hhMjU2X2J5dGVzKGIpIT1ST1VURVJfS05PV05fSE9TVFNfU0hBOiByYWlzZSBCYWNrdXBFcnJvcignUk9VVEVSX0tOT1dOX0hPU1RTX0lERU5USVRZJykKNzg0OiAgICB0YXJnZXQscGY9cGFyc2Vfcm91dGVyX2xlZ2FjeSgpCjc4NzogICAgYXJndj1bU1NIUEFTUywnLWYnLHN0cihwZiksU1NILCctcCcsJzIyMjInLCctbycsJ0JhdGNoTW9kZT1ubycsJy1vJywnTnVtYmVyT2ZQYXNzd29yZFByb21wdHM9MScsJy1vJywnU3RyaWN0SG9zdEtleUNoZWNraW5nPXllcycsJy1vJywnVXNlcktub3duSG9zdHNGaWxlPScrc3RyKFJPVVRFUl9LTk9XTl9IT1NUUyksJy1vJywnQ29ubmVjdFRpbWVvdXQ9MTUnLCdyb3V0ZXJiYWNrdXBAJyt0YXJnZXQsJ3Nob3cgcnVubmluZy1jb25maWcnXQo3ODg6ICAgIHA9cnVuKGFyZ3YsdGltZW91dD02MCk7IHJldHVybiBwLnN0ZG91dAo3OTk6ICAgIGlmIG5vdCBhIG9yIGEhPWI6IHJhaXNlIEJhY2t1cEVycm9yKCdST1VURVJfUkVBRF9OT1RfQllURV9TVEFCTEUnKQo4MDE6ICAgIHJldHVybiBwYXlsb2FkLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOidyb3V0ZXInLCdjb25maWdfc2hhMjU2JzpzaGEyNTZfYnl0ZXMoYSksJ3JlYWRfY291bnQnOjIsJ3JlY292ZXJ5X3BvbGljeSc6J0lNUE9SVF9QQUNLQUdFX09SX1NBRkVfQ0xJX05PVF9CTElORF9DT05GSUdfUkVQTEFDRSd9LE5vbmUKODAzOmRlZiBxZ2FfZXhlYyhub2RlLHZtaWQsZ3Vlc3RfYXJndixpbnB1dF9ieXRlcz1Ob25lLHRpbWVvdXQ9NjAwKToKODA0OiAgICBhcmdzPVsncW0nLCdndWVzdCcsJ2V4ZWMnLHN0cih2bWlkKSwnLS1zeW5jaHJvbm91cycsJzEnLCctLXRpbWVvdXQnLHN0cihpbnQodGltZW91dCkpXQo4MDY6ICAgIGFyZ3MgKz0gWyctLSddK1tzdHIoeCkgZm9yIHggaW4gZ3Vlc3RfYXJndl0KODA3OiAgICBwPXNzaF9yZW1vdGUobm9kZSxhcmdzLGlucHV0PWlucHV0X2J5dGVzLHRpbWVvdXQ9dGltZW91dCs2MCkKODA5OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignUUdBX0pTT04nKQo4MTI6ICAgIGlmIHJjIG5vdCBpbiAoMCxOb25lKTogcmFpc2UgQmFja3VwRXJyb3IoJ1FHQV9HVUVTVF9DT01NQU5EX0ZBSUxFRCcsc3RyKHJjKSkKODE5OiAgICByZXR1cm4gZicnJ2ltcG9ydCBoYXNobGliLGpzb24sb3MscGF0aGxpYixzZWxlY3Qsc2h1dGlsLHN1YnByb2Nlc3MsdGVtcGZpbGUsdGltZVxucm9vdD17cm9vdCFyfTsgZGI9e2RiIXJ9OyBzdHJhdGVneT17c3RyYXRlZ3khcn07IHRva2VuPVtSRURBQ1RFRF0gbm90IHJvb3Quc3RhcnRzd2l0aCgnL3Zhci93d3cvZm9ydW1zLycpIG9yIG5vdCBkYi5zdGFydHN3aXRoKCd4Zl8nKTogcmFpc2UgU3lzdGVtRXhpdCgyMClcbnRtcD1wYXRobGliLlBhdGgoJy90bXAvaG9tZWxhYi12Mi14Zi0nK3Rva2VuKTsgdG1wLm1rZGlyKG1vZGU9MG83MDAsZXhpc3Rfb2s9RmFsc2UpXG5kdW1wPXRtcC8nZGIuc3FsJzsgb3V0PXBhdGhsaWIuUGF0aCgnL3RtcC9ob21lbGFiLXYyLXhmLScrdG9rZW4rJy50YXIuenN0JylcbmxvY2s9Tm9uZVxudHJ5OlxuICBpZiBzdHJhdGVneT09J2dsb2JhbF9yZWFkX2xvY2snOlxuICAgIGxvY2s9c3VicHJvY2Vzcy5Qb3BlbihbJ21hcmlhZGInLCctLXVzZXI9cm9vdCcsJy0tYmF0Y2gnLCctLXNraXAtY29sdW1uLW5hbWVzJywnLS11bmJ1ZmZlcmVkJ10sc3RkaW49c3VicHJvY2Vzcy5QSVBFLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCx0ZXh0PVRydWUsYnVmc2l6ZT0xKVxuICAgIGxvY2suc3RkaW4ud3JpdGUoIkZMVVNIIFRBQkxFUyBXSVRIIFJFQUQgTE9DSzsgU0VMRUNUICdMT0NLRUQnO1xcbiIpOyBsb2NrLnN0ZGluLmZsdXNoKClcbiAgICBycixfLF89c2VsZWN0LnNlbGVjdChbbG9jay5zdGRvdXRdLFtdLFtdLDUpXG4gICAgaWYgbm90IHJyIG9yIGxvY2suc3Rkb3V0LnJlYWRsaW5lKCkuc3RyaXAoKSE9J0xPQ0tFRCc6IHJhaXNlIFJ1bnRpbWVFcnJvcignTE9DS19BQ1FVSVJFJylcbiAgICBkdW1wX3RpbWVvdXQ9MTVcbiAgZWxzZTogZHVtcF90aW1lb3V0PTE4MFxuICB3aXRoIG9wZW4oZHVtcCwnd2InKSBhcyBmOlxuICAgIGFyZ3Y9WydtYXJpYWRiLWR1bXAnLCctLXVzZXI9cm9vdCcsJy0tcXVpY2snLCctLXNraXAtbG9jay10YWJsZXMnLCctLWhleC1ibG9iJywnLS1yb3V0aW5lcycsJy0tZXZlbnRzJywnLS10cmlnZ2VycyddXG4gICAgaWYgc3RyYXRlZ3k9PSdzaW5nbGVfdHJhbnNhY3Rpb24nOiBhcmd2LmFwcGVuZCgnLS1zaW5nbGUtdHJhbnNhY3Rpb24nKVxuICAgIGFyZ3YuYXBwZW5kKGRiKVxuICAgIHE9c3VicHJvY2Vzcy5ydW4oYXJndixzdGRvdXQ9ZixzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLHRpbWVvdXQ9ZHVtcF90aW1lb3V0KVxuICAgIGlmIHEucmV0dXJuY29kZSE9MDogcmFpc2UgUnVudGltZUVycm9yKCdEVU1QJylcbiAgaWYgbG9jayBpcyBub3QgTm9uZTpcbiAgICBsb2NrLnN0ZGluLndyaXRlKCJVTkxPQ0sgVEFCTEVTOyBTRUxFQ1QgJ1VOTE9DS0VEJztcXG4iKTsgbG9jay5zdGRpbi5mbHVzaCgpXG4gICAgcnIsXyxfPXNlbGVjdC5zZWxlY3QoW2xvY2suc3Rkb3V0XSxbXSxbXSw1KVxuICAgIGlmIG5vdCByciBvciBsb2NrLnN0ZG91dC5yZWFkbGluZSgpLnN0cmlwKCkhPSdVTkxPQ0tFRCc6IHJhaXNlIFJ1bnRpbWVFcnJvcignVU5MT0NLJylcbiAgICBsb2NrLnN0ZGluLmNsb3NlKCk7IGxvY2sud2FpdCh0aW1lb3V0PTUpOyBsb2NrPU5vbmVcbiAgcmVsPXJvb3QubHN0cmlwKCcvJylcbiAgdGFyPXN1YnByb2Nlc3MuUG9wZW4oWyd0YXInLCctLW51bWVyaWMtb3duZXInLCctLXhhdHRycycsJy0tYWNscycsJy1DJywnLycsJy1jZicsJy0nLHJlbCwnLUMnLHN0cih0bXApLCdkYi5zcWwnXSxzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpXG4gIHo9c3VicHJvY2Vzcy5Qb3BlbihbJ3pzdGQnLCctVDAnLCctMycsJy1xJywnLW8nLHN0cihvdXQpXSxzdGRpbj10YXIuc3Rkb3V0LHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCk7IHRhci5zdGRvdXQuY2xvc2UoKVxuICB6cj16LndhaXQodGltZW91dD02MDApOyB0cj10YXIud2FpdCh0aW1lb3V0PTYwKVxuICBpZiB6ciE9MCBvciB0ciE9MDogcmFpc2UgUnVudGltZUVycm9yKCdBUkNISVZFJylcbiAgaD1oYXNobGliLnNoYTI1NigpOyBuPTBcbiAgd2l0aCBvcGVuKG91dCwncmInKSBhcyBmOlxuICAgIGZvciBiIGluIGl0ZXIobGFtYmRhOmYucmVhZCgxMDQ4NTc2KSxiJycpOiBoLnVwZGF0ZShiKTsgbis9bGVuKGIpXG4gIHByaW50KGpzb24uZHVtcHMoe3sncGF0aCc6c3RyKG91dCksJ2J5dGVzJzpuLCdzaGEyNTYnOmguaGV4ZGlnZXN0KCksJ2RiX2J5dGVzJzpkdW1wLnN0YXQoKS5zdF9zaXplLCdzdHJhdGVneSc6c3RyYXRlZ3l9fSxzb3J0X2tleXM9VHJ1ZSxzZXBhcmF0b3JzPSgnLCcsJzonKSkpXG5maW5hbGx5OlxuICBpZiBsb2NrIGlzIG5vdCBOb25lOlxuICAgIHRyeTogbG9jay5raWxsKCk7IGxvY2sud2FpdCh0aW1lb3V0PTMpXG4gICAgZXhjZXB0IEV4Y2VwdGlvbjogcGFzc1xuICB0cnk6IHNodXRpbC5ybXRyZWUodG1wKVxuICBleGNlcHQgRXhjZXB0aW9uOiBwYXNzXG4nJycKODIyOiAgICBvdXQ9cWdhX2V4ZWModFsnbm9kZSddLHRbJ3ZtaWQnXSxbJy91c3IvYmluL3B5dGhvbjMnLCctSScsJy1CJywnLSddLHhmX2d1ZXN0X2J1aWxkZXIodCxnZW4pLmVuY29kZSgpLHRpbWVvdXQ9OTAwKQ==\nPIPE_8_SCORE=4\nPIPE_8_BASENAME=legacy_engine.py\nPIPE_8_PATH_SHA256=be1f17db553b39644125195e460037d3e9426d0910681ba67d8e0ac2de00bea3\nPIPE_8_FILE_SHA256=b6e79f087b9f1d21dac4f77a7b46b743299bbb85bc716e80d2ea67c2e038bcd7\nPIPE_8_SCHEDULE_TARGET_COUNT=1\nPIPE_8_QEMU_EXECUTION_DIAG_COUNT=0\nPIPE_8_SELFTEST_REPLACEMENT486_COUNT=0\nPIPE_8_VZDUMP_QEMU_COUNT=0\nPIPE_8_RCLONE_COUNT=31\nPIPE_8_CLOUD_QUORUM_COUNT=0\nPIPE_8_SEAL_WRITTEN_COUNT=0\nPIPE_8_PAYLOAD_PARTS_COUNT=0\nPIPE_8_TRANSPORT_COUNT=3\nPIPE_8_RESTORE_VALIDATION_COUNT=0\nPIPE_8_SCHEDULE_RESULT_COUNT=2\nPIPE_8_RELEVANT_LINE_COUNT=346\nPIPE_8_RELEVANT_B64=NjpTVEFURV9ST09UPXBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKQo3OkNPTkZJR19ST09UPXBhdGhsaWIuUGF0aCgnL2V0Yy9ob21lbGFiLWJhY2t1cC12MicpCjg6VEFSR0VUU19QQVRIPUNPTkZJR19ST09ULyd0YXJnZXRzLmpzb24nCjk6V09SS19ST09UPXBhdGhsaWIuUGF0aCgnL21udC9zdGFnaW5nL2hvbWVsYWItYmFja3VwLXYyJykKMTA6RU5HSU5FX1BBVEg9cGF0aGxpYi5QYXRoKCcvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi1iYWNrdXAtdjInKQoxMTpSQ0xPTkU9c2h1dGlsLndoaWNoKCdyY2xvbmUnKSBvciAnL3Vzci9iaW4vcmNsb25lJwoxOTpST1VURVJfTEVHQUNZX1NDUklQVD1wYXRobGliLlBhdGgoJy91c3IvbG9jYWwvc2Jpbi9ob21lbGFiLXJvdXRlci1ydW5uaW5nLWNvbmZpZy1tYWlsLWNsb3VkJykKMjE6Uk9VVEVSX1RBUkdFVF9TSEE9JzRmOWRhMTI4MzE2NmExZTlmNGU2YmM3ZGQyNDBjNzZhZWY4NTc3MjE3N2Y3MTdmOTJhYmI2ZThlMmJiOGRlOTAnCjI1OkdVRVNUMjY2PXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jdC1iYWNrdXAtMjgycjEvZ3Vlc3QyNjYucHknKQoyNzpQMjcwPXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjcwcjEvcHZlMjcwLnB5JykKMjk6UDI4Mj1wYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvY3QtYmFja3VwLTI4MnIxL3B2ZTI4Mi5weScpCjMxOlAyNjU9cGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMS9wdmUyNjUucHknKQozNTogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxL3YyY29yZS5weScpLCdlMjg1YmY5YTU2NzhkMDdkY2JiOTAyNjFmOWY5M2U3ODI2ZmY1MjRlMDRjZmVjNzgwYmY1YTNjNGIwZGMyOWYyJyksCjM2OiAocGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMS90cmFuc3BvcnQyNjEucHknKSwnYjliOTJmOTU3YmY0NDFjYjVkMTcwMmY0ODgxODk3MzI4ZTZjMDMzOGY4YzNmNmQ0MWQyN2Q5YTM0OWIzNzY4OCcpLAozNzogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9zdHJlYW0tMjYzcjEvc3RyZWFtMjYzLnB5JyksJ2E4M2QwM2E4NmI5M2E4NTU3MTY2NTg2NTJkZDA3M2ZjYjI4MWNkMzg3ZmM2MjAwZmU0YmMyYTkyMmYzOWVhMTYnKSwKMzg6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvc3RyZWFtLTI2M3IxL25vZGVwbGFuMjYzLnB5JyksJ2RiNWMxNmVlMjRkMjVhYTE2OTQ1MzAzMzJkMzE5MGFiN2NjNWQ0ZjhlYjY5MDY3ZDAyNWUyN2FkNWM5OTUwNjAnKSwKMzk6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvbGFyZ2UtY2xvdWQtMjY0cjEvbGFyZ2UyNjQucHknKSwnNWNjNDY0MWZjMzVlNGRkNTU0NDk1YTM2MTQ2ZGE3ZGJiYjdmMTQyZDE0NTBlMDRjYzVkM2M4OTY3OGI4NDk3YScpLAo0NjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL2N0LWJhY2t1cC0yODJyMScpLAo0NzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1yZXRyeS0yNzByMScpLAo0ODogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMScpLAo0OTogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1ydW4tMjY2cjEnKSwKNTA6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjY4cjEnKSwKNTE6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9sYXJnZS1jbG91ZC0yNjRyMScpLAo1MjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3N0cmVhbS0yNjNyMScpLAo1MzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMScpLAo1NDogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3Jlc3RvcmUtMjYycjEnKSwKNTU6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxJyksCjU2OiBwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvdm0tYmFja3VwLTI4M3IxJyksCjU5Om1vZGU9c3lzLmFyZ3ZbMV0KNjU6ZWxpZiBtb2RlPT0nZHVtcF9hcmd2JzoKNjY6IHNvdXJjZT1wYXRobGliLlBhdGgoc3lzLmFyZ3ZbMl0pLnJlc29sdmUoKQo3MTogYXJndj1tb2QuZHVtcF9hcmd2KHJlcVsnam9iJ10scmVxWyd2emR1bXAnXSxwYXRobGliLlBhdGgocmVxWydzY3JhdGNoJ10pLGludChyZXFbJ25vdyddKSkKNzI6IHByaW50KGpzb24uZHVtcHMoYXJndixzZXBhcmF0b3JzPSgnLCcsJzonKSkpCjc3OlJFTU9URVM9Wwo4MjpjbGFzcyBCYWNrdXBFcnJvcihSdW50aW1lRXJyb3IpOgoxMDU6ICAgIGlmIGxlbmd0aCBpcyBub3QgTm9uZSBhbmQgbiE9bGVuZ3RoOiByYWlzZSBCYWNrdXBFcnJvcignTE9DQUxfUEFSVF9TSE9SVF9SRUFEJykKMTA5OiAgICBpZiBub3QgaXNpbnN0YW5jZShuLGludCkgb3Igbjw9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1BBWUxPQURfU0laRV9JTlZBTElEJykKMTI5OiAgICBpZiBsZW4ob3V0KSE9MjogcmFpc2UgQmFja3VwRXJyb3IoJ0FMTE9DQVRPUl9UV09fRElTVElOQ1RfQUNDT1VOVFNfVU5BVkFJTEFCTEUnKQoxMzI6ZGVmIHJlbW90ZV9nZW5lcmF0aW9uX3BhdGgoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM0OiAgICBmb3IgeCBpbiAoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM1OiAgICAgICAgaWYgbm90IHNhZmUuZnVsbG1hdGNoKHgpOiByYWlzZSBCYWNrdXBFcnJvcignVU5TQUZFX0NMT1VEX0NPTVBPTkVOVCcpCjEzNjogICAgcmV0dXJuIGYnaG9tZWxhYi1iYWNrdXBzL3YyL3tzY29wZX0ve2xvZ2ljYWxfaWR9L2dlbmVyYXRpb25zL3tnZW5lcmF0aW9ufScKMTM4OmRlZiBtYWtlX21hbmlmZXN0KHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbixwYXlsb2FkX2J5dGVzLHBheWxvYWRfc2hhMjU2LHBhcnRzLHJlcGxpY2FzLHNvdXJjZV9tZXRhKToKMTM5OiAgICBpZiBsZW4ocmVwbGljYXMpIT0yIG9yIGxlbih7clsncGh5c2ljYWwnXSBmb3IgciBpbiByZXBsaWNhc30pIT0yOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUkVQTElDQV9QSFlTSUNBTF9EVVBMSUNBVEUnKQoxNDA6ICAgIGlmIG5vdCByZS5mdWxsbWF0Y2gocidbMC05YS1mXXs2NH0nLHBheWxvYWRfc2hhMjU2KTogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1BBWUxPQURfU0hBX0lOVkFMSUQnKQoxNDE6ICAgIGlmIHN1bShpbnQocFsnYnl0ZXMnXSkgZm9yIHAgaW4gcGFydHMpIT1wYXlsb2FkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUEFSVF9UT1RBTF9NSVNNQVRDSCcpCjE0MjogICAgcmV0dXJuIHsnc2NoZW1hJzoyLCdzY29wZSc6c2NvcGUsJ2xvZ2ljYWxfaWQnOmxvZ2ljYWxfaWQsJ2dlbmVyYXRpb24nOmdlbmVyYXRpb24sJ2NyZWF0ZWRfYXRfdXRjJzp1dGNub3coKSwKMTQ5OmRlZiBkZWZhdWx0X3RhcmdldHMoKToKMTUzOiAgICBmb3Igdm1pZCx0eXAgaW4gWygxMTAsJ2x4YycpLCgxMTEsJ2x4YycpLCgxMTIsJ2x4YycpLCgxMTMsJ2x4YycpLCgxMzAsJ3FlbXUnKSwoMTUwLCdxZW11JyksKDE2MCwncWVtdScpLCgxNzAsJ3FlbXUnKSwoMTcxLCdxZW11JyksKDE5MCwncWVtdScpLCgyMTAsJ3FlbXUnKSwoMjExLCdxZW11JyksKDkxMzAsJ3FlbXUnKV06CjE1NDogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzooJ2N0JyBpZiB0eXA9PSdseGMnIGVsc2UgJ3ZtJykrc3RyKHZtaWQpLCdzY29wZSc6J3B2ZScsJ3R5cGUnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnZtaWQ9PTExMn0pCjE2ODogICAgICAoJ2dhbWV2aXBlJywxNjAsJ3B2ZTAyJywnL3Zhci93d3cvZm9ydW1zL2dhbWV2aXBlL3B1YmxpYycsJ3hmX2dhbWV2aXBlJywnZ2xvYmFsX3JlYWRfbG9jaycpLAoxNjk6ICAgICAgKCdoa21vZHMnLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvaGttb2RzL3B1YmxpYycsJ3hmX2hrbW9kcycsJ2dsb2JhbF9yZWFkX2xvY2snKSwKMTcwOiAgICAgICgnemFrcnV0aW0nLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvemFrcnV0aW0vcHVibGljJywneGZfemFrcnV0aW0nLCdnbG9iYWxfcmVhZF9sb2NrJyldCjE3MTogICAgZm9yIHNsdWcsdm1pZCxub2RlLHJvb3QsZGIsc3RyYXRlZ3kgaW4gc2l0ZXM6CjE3MjogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzoneGYtJytzbHVnLCdzY29wZSc6J3hlbmZvcm8nLCd0eXBlJzoneGVuZm9ybycsJ3NsdWcnOnNsdWcsJ3ZtaWQnOnZtaWQsJ25vZGUnOm5vZGUsJ2FwcF9yb290Jzpyb290LCdkYl9uYW1lJzpkYiwnZHVtcF9zdHJhdGVneSc6c3RyYXRlZ3ksJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnNsdWcgaW4gKCdjb2RldmlwZScsJ3pha3J1dGltJyl9KQoxNzY6ZGVmIGNob29zZV9kdWVfdGFyZ2V0KHRhcmdldHMsc3RhdGUsbm93PU5vbmUpOgoxNzk6ICAgIGZvciB0IGluIHRhcmdldHM6CjE4MjogICAgICAgIGxhc3Q9aW50KHN0YXRlLmdldCh0Wydsb2dpY2FsX2lkJ10se30pLmdldCgnbGFzdF9zdWNjZXNzX2Vwb2NoJywwKSkKMTg5OmRlZiBydW4oYXJndiwgKiwgaW5wdXQ9Tm9uZSwgdGltZW91dD0zMDAsIGNoZWNrPVRydWUsIGVudj1Ob25lKToKMTkxOiAgICAgICAgcD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSx0aW1lb3V0PXRpbWVvdXQsZW52PWVudikKMTkyOiAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfVElNRU9VVCcpCjE5MzogICAgaWYgY2hlY2sgYW5kIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfRkFJTEVEJyxzdHIocC5yZXR1cm5jb2RlKSkKMTk2OmRlZiBzdHJlYW1fcHJvY2Vzc190b19maWxlKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoxOTk6ICAgICAgICB0cnk6cD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1mLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsdGltZW91dD10aW1lb3V0KQoyMDA6ICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX1RJTUVPVVQnKQoyMDE6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjIwMzpkZWYgcGlwZV90b196c3RkKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoyMDY6ICAgICAgICBzcmM9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSBpZiBpbnB1dCBpcyBub3QgTm9uZSBlbHNlIE5vbmUsc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQoyMTQ6ICAgICAgICAgICAgc3JjLmtpbGwoKTsgc3JjLndhaXQoKTsgcmFpc2UgQmFja3VwRXJyb3IoJ1BJUEVfU09VUkNFX1RJTUVPVVQnKQoyMjA6ICAgICAgICByYWlzZSBCYWNrdXBFcnJvcignUElQRV9USU1FT1VUJykKMjIxOiAgICBpZiBzcmMucmV0dXJuY29kZSE9MCBvciB6LnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdQSVBFX0ZBSUxFRCcsZid7c3JjLnJldHVybmNvZGV9X3t6LnJldHVybmNvZGV9JykKMjM2OmRlZiBsb2FkX3RhcmdldHMoKToKMjM3OiAgICBqPWpzb24ubG9hZHMoVEFSR0VUU19QQVRILnJlYWRfdGV4dCgpKQoyMzg6ICAgIGlmIGouZ2V0KCdzY2hlbWEnKSE9MSBvciBub3QgaXNpbnN0YW5jZShqLmdldCgndGFyZ2V0cycpLGxpc3QpOiByYWlzZSBCYWNrdXBFcnJvcignVEFSR0VUX01BTklGRVNUX1NDSEVNQScpCjIzOTogICAgaWRzPVt4LmdldCgnbG9naWNhbF9pZCcpIGZvciB4IGluIGpbJ3RhcmdldHMnXV0KMjQwOiAgICBpZiBsZW4oaWRzKSE9bGVuKHNldChpZHMpKTogcmFpc2UgQmFja3VwRXJyb3IoJ1RBUkdFVF9NQU5JRkVTVF9EVVBMSUNBVEUnKQoyNDE6ICAgIHJldHVybiBqWyd0YXJnZXRzJ10KMjQzOmRlZiBsb2FkX3N0YXRlX2FsbCgpOgoyNDU6ICAgIHJvb3Q9U1RBVEVfUk9PVC8nc3RhdGUnCjI1MzpkZWYgd3JpdGVfc3RhdGUobG9naWNhbF9pZCxyZXN1bHQsKiprdyk6CjI1NDogICAgaWYgcmVzdWx0IG5vdCBpbiBSRVNVTFRfQ0xBU1NFUzogcmFpc2UgQmFja3VwRXJyb3IoJ1JFU1VMVF9DTEFTU19JTlZBTElEJykKMjU3OiAgICBhdG9taWNfd3JpdGUoU1RBVEVfUk9PVC8nc3RhdGUnLyhsb2dpY2FsX2lkKycuanNvbicpLGNhbm9uaWNhbF9qc29uKGopK2InXG4nLDBvNjAwKQoyNjA6ZGVmIHJjbG9uZV9iYXNlX2FyZ3MoKToKMjYxOiAgICByZXR1cm4gW1JDTE9ORV0KMjYzOmRlZiByY2xvbmVfYWJvdXQocmVtb3RlKToKMjY0OiAgICBwPXJ1bihyY2xvbmVfYmFzZV9hcmdzKCkrWydhYm91dCcscmVtb3RlKyc6JywnLS1qc29uJywnLS1jb250aW1lb3V0JywnMTVzJywnLS10aW1lb3V0JywnNDVzJ10sdGltZW91dD02MCkKMjY2OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0FCT1VUX0pTT04nKQoyNjg6ICAgIGlmIG5vdCBpc2luc3RhbmNlKGZyZWUsaW50KTogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9GUkVFX1VOS05PV04nKQoyNzM6ICAgIGZvciBjcnlwdCxwaHlzaWNhbCBpbiBSRU1PVEVTOgoyNzQ6ICAgICAgICB0cnk6IGZyZWU9cmNsb25lX2Fib3V0KGNyeXB0KQoyNzU6ICAgICAgICBleGNlcHQgQmFja3VwRXJyb3I6IGJhZCs9MTsgY29udGludWUKMjgwOmRlZiByZW1vdGVfZXhpc3RzX2FueShzY29wZSxsb2dpY2FsX2lkLGdlbmVyYXRpb24pOgoyODE6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbikKMjgyOiAgICBmb3IgY3J5cHQsX3BoeXNpY2FsIGluIFJFTU9URVM6CjI4MzogICAgICAgIHA9cnVuKHJjbG9uZV9iYXNlX2FyZ3MoKStbJ2xzZicsY3J5cHQrJzonK3JlbCwnLS1tYXgtZGVwdGgnLCcxJ10sdGltZW91dD00NSxjaGVjaz1GYWxzZSkKMjg3OmRlZiByY2xvbmVfcmNhdChyZW1vdGVfcGF0aCwgc291cmNlX3BhdGg9Tm9uZSwgb2Zmc2V0PTAsIGxlbmd0aD1Ob25lLCBkYXRhPU5vbmUsIHRpbWVvdXQ9MzYwMCk6CjI4ODogICAgYXJndj1yY2xvbmVfYmFzZV9hcmdzKCkrWydyY2F0JyxyZW1vdGVfcGF0aCwnLS1yZXRyaWVzJywnMycsJy0tbG93LWxldmVsLXJldHJpZXMnLCc1JywnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNW0nXQoyODk6ICAgIHA9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSxzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCjI5OTogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBiOiByYWlzZSBCYWNrdXBFcnJvcignVVBMT0FEX0xPQ0FMX1NIT1JUX1JFQUQnKQozMDc6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9SQ0FUX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjMwOTpkZWYgcmNsb25lX2NhdF9oYXNoKHJlbW90ZV9wYXRoLCBleHBlY3RlZF9ieXRlcz1Ob25lLCB0aW1lb3V0PTM2MDApOgozMTE6ICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihyY2xvbmVfYmFzZV9hcmdzKCkrWydjYXQnLHJlbW90ZV9wYXRoLCctLWNvbnRpbWVvdXQnLCcyMHMnLCctLXRpbWVvdXQnLCc1bSddLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkgYXMgcDoKMzE0OiAgICAgICAgICAgICAgICBwLmtpbGwoKTsgcC53YWl0KCk7IHJhaXNlIEJhY2t1cEVycm9yKCdSQ0xPTkVfQ0FUX1RJTUVPVVQnKQozMTk6ICAgIGlmIHJjIT0wOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9GQUlMRUQnLHN0cihyYykpCjMyMDogICAgaWYgZXhwZWN0ZWRfYnl0ZXMgaXMgbm90IE5vbmUgYW5kIG4hPWV4cGVjdGVkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9TSVpFX01JU01BVENIJykKMzIzOmRlZiByY2xvbmVfY2F0X2J5dGVzKHJlbW90ZV9wYXRoLG1heF9ieXRlcz00KjEwMjQqMTAyNCk6CjMyNDogICAgcD1ydW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxyZW1vdGVfcGF0aCwnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNjBzJ10sdGltZW91dD05MCkKMzI1OiAgICBpZiBsZW4ocC5zdGRvdXQpPm1heF9ieXRlczogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9TTUFMTF9PQkpFQ1RfVE9PX0xBUkdFJykKMzI4OmRlZiBnZW5lcmF0aW9uX2lkKGxvZ2ljYWxfaWQpOgozMzI6ZGVmIHVwbG9hZF9hbmRfc2VhbCh0LHBheWxvYWRfcGF0aCxzb3VyY2VfbWV0YSk6CjMzNTogICAgZ2VuPXNvdXJjZV9tZXRhWydnZW5lcmF0aW9uJ107IHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHRbJ3Njb3BlJ10sdFsnbG9naWNhbF9pZCddLGdlbikKMzM2OiAgICBpZiByZW1vdGVfZXhpc3RzX2FueSh0WydzY29wZSddLHRbJ2xvZ2ljYWxfaWQnXSxnZW4pOiByYWlzZSBCYWNrdXBFcnJvcignR0VORVJBVElPTl9DT0xMSVNJT04nKQozMzk6ICAgIG1hbmlmZXN0PW1ha2VfbWFuaWZlc3QodFsnc2NvcGUnXSx0Wydsb2dpY2FsX2lkJ10sZ2VuLG4scHNoYSxwYXJ0cyxyZXBzLHNvdXJjZV9tZXRhKQozNDA6ICAgIG1iPWNhbm9uaWNhbF9qc29uKG1hbmlmZXN0KStiJ1xuJzsgbXNoYT1zaGEyNTZfYnl0ZXMobWIpCjM0NTogICAgICAgICAgICByY2xvbmVfcmNhdChycCxzb3VyY2VfcGF0aD1wYXlsb2FkX3BhdGgsb2Zmc2V0PXBhcnRbJ29mZnNldCddLGxlbmd0aD1wYXJ0WydieXRlcyddKQozNDY6ICAgICAgICAgICAgZ290LGdvdG49cmNsb25lX2NhdF9oYXNoKHJwLHBhcnRbJ2J5dGVzJ10pCjM0NzogICAgICAgICAgICBpZiBnb3QhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUEFSVF9SRUFEQkFDS19TSEFfTUlTTUFUQ0gnKQozNDg6ICAgICAgICByY2xvbmVfcmNhdChiYXNlKycvbWFuaWZlc3QuanNvbicsZGF0YT1tYikKMzQ5OiAgICAgICAgaWYgcmNsb25lX2NhdF9ieXRlcyhiYXNlKycvbWFuaWZlc3QuanNvbicpIT1tYjogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1JFQURCQUNLX01JU01BVENIJykKMzUwOiAgICBzZWFsPXsnc2NoZW1hJzoxLCdnZW5lcmF0aW9uJzpnZW4sJ2xvZ2ljYWxfaWQnOnRbJ2xvZ2ljYWxfaWQnXSwnbWFuaWZlc3Rfc2hhMjU2Jzptc2hhLCdwYXlsb2FkX3NoYTI1Nic6cHNoYSwnc3RhdHVzJzonU0VBTEVEJywnc2VhbGVkX2F0X3V0Yyc6dXRjbm93KCl9CjM1MTogICAgc2I9Y2Fub25pY2FsX2pzb24oc2VhbCkrYidcbicKMzU0OiAgICAgICAgcmNsb25lX3JjYXQoYmFzZSsnL1NFQUxFRC5qc29uJyxkYXRhPXNiKQozNTU6ICAgICAgICBpZiByY2xvbmVfY2F0X2J5dGVzKGJhc2UrJy9TRUFMRUQuanNvbicpIT1zYjogcmFpc2UgQmFja3VwRXJyb3IoJ1NFQUxfUkVBREJBQ0tfTUlTTUFUQ0gnKQozNTY6ICAgIHJldHVybiBtYW5pZmVzdCxtc2hhLHsndW5oZWFsdGh5JzpiYWQsJ2hlYWx0aHknOmhlYWx0aHl9CjM1ODpkZWYgcmVjb25zdHJ1Y3RfcmVwbGljYShtYW5pZmVzdCxyZXAsb3V0X3BhdGgpOgozNTk6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKG1hbmlmZXN0WydzY29wZSddLG1hbmlmZXN0Wydsb2dpY2FsX2lkJ10sbWFuaWZlc3RbJ2dlbmVyYXRpb24nXSkKMzYzOiAgICAgICAgZm9yIHBhcnQgaW4gbWFuaWZlc3RbJ3BhcnRzJ106CjM2NTogICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxiYXNlKycvcGFydHMvJytwYXJ0WyduYW1lJ10sJy0tY29udGltZW91dCcsJzIwcycsJy0tdGltZW91dCcsJzVtJ10sc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKSBhcyBwOgozNzE6ICAgICAgICAgICAgaWYgcmMhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9DQVRfRkFJTEVEJykKMzcyOiAgICAgICAgICAgIGlmIG4hPXBhcnRbJ2J5dGVzJ10gb3IgcGguaGV4ZGlnZXN0KCkhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUkVDT05TVFJVQ1RfUEFSVF9NSVNNQVRDSCcpCjM3MzogICAgaWYgdG90YWwhPW1hbmlmZXN0WydwYXlsb2FkX2J5dGVzJ10gb3IgaC5oZXhkaWdlc3QoKSE9bWFuaWZlc3RbJ3BheWxvYWRfc2hhMjU2J106IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9QQVlMT0FEX01JU01BVENIJykKMzgyOiAgICBpZiByMSE9MCBvciBwMi5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9MSVNUX0ZBSUxFRCcpCjM4NDogICAgaWYgbm90IG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9FTVBUWScpCjM4NTogICAgaWYgcmVxdWlyZWRfbWVtYmVyIGFuZCByZXF1aXJlZF9tZW1iZXIgbm90IGluIG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignUkVRVUlSRURfTUVNQkVSX01JU1NJTkcnKQozOTQ6ICAgICAgICAgICAgIyBHcmVlbiBzZXQgaXMgaW50ZW50aW9uYWxseSBDVC1vbmx5LiBTY2hlZHVsZWQgUUVNVSBiYWNrdXBzIHN0aWxsIGdldCBkdWFsIHJlbW90ZSBieXRlIHJlYWRiYWNrLgo0MDI6ICAgICAgICBpZiBwMi5yZXR1cm5jb2RlIT0wIG9yIGxlbihkYXRhKTwxMjg6IHJhaXNlIEJhY2t1cEVycm9yKCdYRU5GT1JPX0RCX0RVTVBfSU5WQUxJRCcpCjQwMzogICAgZWxzZTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZBTElEQVRPUl9VTktOT1dOX1RZUEUnKQo0MDg6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfSU5WRU5UT1JZX0pTT04nKQo0MTA6ZGVmIHNzaF9yZW1vdGUobm9kZSxhcmd2LGlucHV0PU5vbmUsdGltZW91dD0xODAwLGNoZWNrPVRydWUpOgo0MTE6ICAgIGNtZD0nUEFUSD0vdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjsgZXhwb3J0IFBBVEg7IGV4ZWMgJytzaGxleC5qb2luKFtzdHIoeCkgZm9yIHggaW4gYXJndl0pCjQxMjogICAgaWYgbm9kZT09J3B2ZTAxJzogcmV0dXJuIHJ1bihbc3RyKHgpIGZvciB4IGluIGFyZ3ZdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNDE4OiAgICByYWlzZSBCYWNrdXBFcnJvcignUFZFX0dVRVNUX1RZUEVfRFJJRlQnKQo0MjE6ICAgIGlmIG5vdCBwYXRoLmlzX2ZpbGUoKSBvciBwYXRoLmlzX3N5bWxpbmsoKSBvciBzaGEyNTZfZmlsZShwYXRoKSE9ZXhwZWN0ZWQ6IHJhaXNlIEJhY2t1cEVycm9yKGNvZGUpCjQzMTogICAgaWYgcC5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignSElTVE9SSUNBTF9HUkFQSF9JTVBPUlRfRkFJTEVEJyxmJ3JjX3twLnJldHVybmNvZGV9X3N0ZGVycl9zaGEyNTZfe2hhc2hsaWIuc2hhMjU2KHAuc3RkZXJyKS5oZXhkaWdlc3QoKX0nKQo0MzM6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9KU09OJykKNDM2OiAgICAgICAgaWYgc3RyKHBhdGhsaWIuUGF0aChvdXQuZ2V0KGssJycpKS5yZXNvbHZlKCkpIT1zdHIocGF0aGxpYi5QYXRoKHYpLnJlc29sdmUoKSk6IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9QQVRIJyxrKQo0Mzk6ZGVmIF9pc29sYXRlZF9ndWVzdDI2Nl9kdW1wX2FyZ3Yoam9iLHZ6ZHVtcCxzY3JhdGNoLG5vdyk6CjQ0MDogICAgZW52PV9oaXN0b3JpY2FsX2dyYXBoX2VudigpO3JlcT17J2pvYic6am9iLCd2emR1bXAnOnN0cih2emR1bXApLCdzY3JhdGNoJzpzdHIoc2NyYXRjaCksJ25vdyc6aW50KG5vdyl9CjQ0MTogICAgcD1zdWJwcm9jZXNzLnJ1bihbc3lzLmV4ZWN1dGFibGUsJy1CJywnLWMnLF9ISVNUT1JJQ0FMX0hFTFBFUiwnZHVtcF9hcmd2JyxzdHIoR1VFU1QyNjYpXSxpbnB1dD1jYW5vbmljYWxfanNvbihyZXEpLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSxlbnY9ZW52LGN3ZD0nLycsdGltZW91dD0zMCkKNDQyOiAgICBpZiBwLnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdHVUVTVDI2Nl9TVUJQUk9DRVNTX0ZBSUxFRCcsZidyY197cC5yZXR1cm5jb2RlfV9zdGRlcnJfc2hhMjU2X3toYXNobGliLnNoYTI1NihwLnN0ZGVycikuaGV4ZGlnZXN0KCl9JykKNDQ0OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignR1VFU1QyNjZfU1VCUFJPQ0VTU19KU09OJykKNDQ5OiAgICByZXR1cm4geyd2bWlkJzppbnQodFsndm1pZCddKSwnaWQnOmludCh0Wyd2bWlkJ10pLCd0eXBlJzonbHhjJywna2luZCc6J2x4YycsJ2d1ZXN0X3R5cGUnOidseGMnLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpLCduYW1lJzpyb3cuZ2V0KCduYW1lJywnJyksCjQ1MzogICAgICAgICAgICAnYmxvY2tlcnMnOltdLCdkaXNrcyc6W10sJ3RlbXBsYXRlJzpib29sKHJvdy5nZXQoJ3RlbXBsYXRlJywwKSksJ2hvb2tzY3JpcHRfcHJlc2VudCc6RmFsc2UsJ2xvY2tfcHJlc2VudCc6RmFsc2UsCjQ1NDogICAgICAgICAgICAnc25hcHNob3RfaGlzdG9yeV9pbmNsdWRlZCc6RmFsc2UsJ3VudXNlZF92b2x1bWVfY291bnQnOjAsJ2Nkcm9tX2NvdW50JzowLCdjZHJvbV9tZWRpYV9pbmNsdWRlZCc6RmFsc2UsJ2d1ZXN0X3Jlc3RvcmVfdmVyaWZpZWQnOkZhbHNlLAo0NTc6ZGVmIHByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCk6CjQ1ODogICAgam9iPV9seGNfam9iKHQscm93LG5vZGUpOyB2emR1bXA9c2h1dGlsLndoaWNoKCd2emR1bXAnKSBvciAnL3Vzci9iaW4vdnpkdW1wJwo0NTk6ICAgIHRyeTogYXJndj1faXNvbGF0ZWRfZ3Vlc3QyNjZfZHVtcF9hcmd2KGpvYix2emR1bXAscGF0aGxpYi5QYXRoKHNjcmF0Y2gpLGludCh0aW1lLnRpbWUoKSkpCjQ2MDogICAgZXhjZXB0IEJhY2t1cEVycm9yOiByYWlzZQo0NjE6ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTogcmFpc2UgQmFja3VwRXJyb3IoJ1BST1ZFTl9EVU1QX0FSR1ZfRkFJTEVEJyx0eXBlKGUpLl9fbmFtZV9fKQo0NjI6ICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3YsKGxpc3QsdHVwbGUpKSBvciBub3QgYXJndiBvciBub3QgYWxsKGlzaW5zdGFuY2UoeCxzdHIpIGZvciB4IGluIGFyZ3YpOiByYWlzZSBCYWNrdXBFcnJvcignUFJPVkVOX0RVTVBfQVJHVl9TSEFQRScpCjQ2MzogICAgYXJndj1saXN0KGFyZ3YpCjQ2NDogICAgaWYgcGF0aGxpYi5QYXRoKGFyZ3ZbMF0pLm5hbWUhPSd2emR1bXAnIG9yIHN0cihpbnQodFsndm1pZCddKSkgbm90IGluIGFyZ3Y6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX1RBUkdFVCcpCjQ2NTogICAgaWYgJy0tZHVtcGRpcicgaW4gYXJndiBvciBhbnkoeC5zdGFydHN3aXRoKCctLWR1bXBkaXI9JykgZm9yIHggaW4gYXJndik6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX1VORVhQRUNURURfRFVNUERJUicpCjQ2NjogICAgaWYgbm90IGFueSh4PT0nLS1zdGRvdXQnIG9yIHguc3RhcnRzd2l0aCgnLS1zdGRvdXQ9JykgZm9yIHggaW4gYXJndik6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX05PX1NURE9VVCcpCjQ2NzogICAgaWYgc3RyKHNjcmF0Y2gpIG5vdCBpbiBhcmd2IGFuZCBub3QgYW55KHg9PSctLXRtcGRpcj0nK3N0cihzY3JhdGNoKSBmb3IgeCBpbiBhcmd2KTogcmFpc2UgQmFja3VwRXJyb3IoJ1BST1ZFTl9EVU1QX0FSR1ZfTk9fU0NSQVRDSCcpCjQ2ODogICAgIyBBY2NlcHRlZCAyNzAvMjgyIGltcGxlbWVudGF0aW9uIHBhc3NlZCBtYXBwZWQgc2NyYXRjaCB0byB2emR1bXAgYXMgdG1wZGlyLgo0Njk6ICAgIGlmICctLXRtcGRpcicgaW4gYXJndjoKNDcwOiAgICAgICAgaT1hcmd2LmluZGV4KCctLXRtcGRpcicpCjQ3MTogICAgICAgIGlmIGkrMT49bGVuKGFyZ3YpIG9yIGFyZ3ZbaSsxXSE9c3RyKHNjcmF0Y2gpOiByYWlzZSBCYWNrdXBFcnJvcignUFJPVkVOX0RVTVBfQVJHVl9UTVBESVJfQklORElORycpCjQ3MjogICAgZWxpZiAnLS10bXBkaXI9JytzdHIoc2NyYXRjaCkgbm90IGluIGFyZ3Y6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX05PX1RNUERJUicpCjQ3MzogICAgcmV0dXJuIGFyZ3Ysam9iCjQ3NTpkZWYgX2RlZmF1bHRfdW5wcml2aWxlZ2VkX2x4Yyhub2RlLHZtaWQpOgo0NzY6ICAgIHE9c3NoX3JlbW90ZShub2RlLFsncGN0JywnY29uZmlnJyxzdHIodm1pZCldLHRpbWVvdXQ9MzApCjQ3ODogICAgaWYgJ3VucHJpdmlsZWdlZDogMScgbm90IGluIGxpbmVzOiByYWlzZSBCYWNrdXBFcnJvcignTFhDX05PVF9VTlBSSVZJTEVHRUQnKQo0Nzk6ICAgIGlmIGFueSh4LnN0YXJ0c3dpdGgoJ2x4Yy5pZG1hcDonKSBvciB4LnN0YXJ0c3dpdGgoJ2x4Yy5pZG1hcCA9JykgZm9yIHggaW4gbGluZXMpOiByYWlzZSBCYWNrdXBFcnJvcignTFhDX0NVU1RPTV9JRE1BUF9VTlNVUFBPUlRFRCcpCjQ4NDogICAgcT1zc2hfcmVtb3RlKG5vZGUscG9zLHRpbWVvdXQ9MzAsY2hlY2s9RmFsc2UpCjQ4NTogICAgaWYgcS5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignTUFQUEVEX1VJRF9BQ0NFU1NfUFJPQkVfRkFJTEVEJykKNDg3OmRlZiBfc3RyZWFtX2FyZ3ZfdG9fbG9jYWwobm9kZSxhcmd2LGRlc3QsdGltZW91dD03MjAwKToKNDg5OiAgICBpZiBub2RlPT0ncHZlMDEnOiBjbWQ9YXJndgo0OTE6ICAgICAgICByZW1vdGU9J1BBVEg9L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW47IGV4cG9ydCBQQVRIOyBleGVjICcrc2hsZXguam9pbihhcmd2KQo0OTI6ICAgICAgICBjbWQ9W1NTSCwnLW8nLCdCYXRjaE1vZGU9eWVzJywnLW8nLCdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9eWVzJywncm9vdEAnK25vZGUscmVtb3RlXQo0OTg6ICAgICAgICAgICAgcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9TVFJFQU1fVElNRU9VVCcpCjUwMjogICAgICAgIHJhaXNlIEJhY2t1cEVycm9yKCdDT01NQU5EX0ZBSUxFRCcsZid2emR1bXBfcmNfe3AucmV0dXJuY29kZX1fc3RkZXJyX3NoYTI1Nl97aGFzaGxpYi5zaGEyNTYocC5zdGRlcnIpLmhleGRpZ2VzdCgpfScpCjUwMzogICAgaWYgbm90IGRlc3QuaXNfZmlsZSgpIG9yIGRlc3Quc3RhdCgpLnN0X3NpemU8PTA6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfUEFZTE9BRF9NSVNTSU5HJykKNTA2OiAgICB2bWlkPWludCh0Wyd2bWlkJ10pOyByb3dzPVtyIGZvciByIGluIGNsdXN0ZXJfaW52ZW50b3J5KCkgaWYgaW50KHIuZ2V0KCd2bWlkJywtMSkpPT12bWlkXQo1MDc6ICAgIGlmIGxlbihyb3dzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRV9HVUVTVF9OT1RfVU5JUVVFJykKNTA5OiAgICBpZiB0eXAhPXRbJ2d1ZXN0X3R5cGUnXTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRV9HVUVTVF9UWVBFX0RSSUZUJykKNTEyOiAgICAgICAgX2RlZmF1bHRfdW5wcml2aWxlZ2VkX2x4Yyhub2RlLHZtaWQpCjUxMzogICAgICAgIHNjcmF0Y2g9ZicvdmFyL3RtcC9ob21lbGFiLXZ6ZHVtcC12Mi17Z2VufScKNTE0OiAgICAgICAgc3NoX3JlbW90ZShub2RlLFsnaW5zdGFsbCcsJy1kJywnLW0nLCc3MTAnLCctbycsJzAnLCctZycsJzEwMDAwMCcsc2NyYXRjaF0sdGltZW91dD0zMCkKNTE1OiAgICAgICAgcT1zc2hfcmVtb3RlKG5vZGUsWydzdGF0JywnLWMnLCclYToldTolZycsc2NyYXRjaF0sdGltZW91dD0zMCkKNTE2OiAgICAgICAgaWYgcS5zdGRvdXQuZGVjb2RlKCkuc3RyaXAoKSE9JzcxMDowOjEwMDAwMCc6IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfTUFQUEVEX1NDUkFUQ0hfQUNDRVNTX0NPTlRSQUNUJykKNTE5OiAgICAgICAgICAgIGFyZ3Ysam9iPXByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCkKNTIxOiAgICAgICAgICAgIF9zdHJlYW1fYXJndl90b19sb2NhbChub2RlLGFyZ3YsbG9jYWwsdGltZW91dD03MjAwKQo1MjI6ICAgICAgICAgICAgaWYgbG9jYWwuc3RhdCgpLnN0X3NpemU+aW50KGpvYlsnYXJjaGl2ZV9jYXBfYnl0ZXMnXSk6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfQVJDSElWRV9DQVBfRVhDRUVERUQnKQo1MjQ6ICAgICAgICAgICAgc3NoX3JlbW90ZShub2RlLFsncm0nLCctcmYnLCctLScsc2NyYXRjaF0sdGltZW91dD02MCxjaGVjaz1GYWxzZSk7cmFpc2UKNTI2OiAgICAgICAgcmV0dXJuIGxvY2FsLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ25vZGUnOm5vZGUsJ3N0YXR1cyc6cm93LmdldCgnc3RhdHVzJyksJ3Byb2R1Y2VyX2NvbnRyYWN0JzoncHJvdmVuLTI3MC0yODItc3RyZWFtJ30sY2xlYW51cAo1Mjc6ICAgICMgUUVNVSBwYXRoIHJlbWFpbnMgdW5jaGFuZ2VkOiBib3VuZGVkIGRlZGljYXRlZCBkdW1wZGlyIHdpdGggbGF0ZXIgY2xvdWQgcmVhZGJhY2svcmVjb25zdHJ1Y3Rpb24uCjUyODogICAgc3JjZGlyPWYnL3Zhci90bXAvaG9tZWxhYi12emR1bXAtdjIte2dlbn0nCjUyOTogICAgc3NoX3JlbW90ZShub2RlLFsnaW5zdGFsbCcsJy1kJywnLW0nLCc3MDAnLCctbycsJzAnLCctZycsJzAnLHNyY2Rpcl0sdGltZW91dD0zMCkKNTMxOiAgICAgICAgc3NoX3JlbW90ZShub2RlLFsndnpkdW1wJyxzdHIodm1pZCksJy0tbW9kZScsJ3NuYXBzaG90JywnLS1jb21wcmVzcycsJ3pzdGQnLCctLWR1bXBkaXInLHNyY2Rpcl0sdGltZW91dD03MjAwKQo1MzI6ICAgICAgICBwPXNzaF9yZW1vdGUobm9kZSxbJ2ZpbmQnLHNyY2RpciwnLW1heGRlcHRoJywnMScsJy10eXBlJywnZicsJy1wcmludGYnLCclcFxuJ10sdGltZW91dD0zMCkKNTM0OiAgICAgICAgaWYgbGVuKGZpbGVzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9PVVRQVVRfTk9UX1VOSVFVRScpCjUzODogICAgICAgIGlmIG5vdCBwYXRobGliLlBhdGgobG9jYWwpLmlzX2ZpbGUoKSBvciBwYXRobGliLlBhdGgobG9jYWwpLnN0YXQoKS5zdF9zaXplPD0wOiByYWlzZSBCYWNrdXBFcnJvcignVlpEVU1QX1BBWUxPQURfTUlTU0lORycpCjU0MDogICAgICAgIHNzaF9yZW1vdGUobm9kZSxbJ3JtJywnLXJmJywnLS0nLHNyY2Rpcl0sdGltZW91dD02MCxjaGVjaz1GYWxzZSk7cmFpc2UKNTQxOiAgICByZXR1cm4gcGF0aGxpYi5QYXRoKGxvY2FsKSx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzoncHZlX2d1ZXN0Jywndm1pZCc6dm1pZCwnZ3Vlc3RfdHlwZSc6dHlwLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpfSx7J2tpbmQnOidwdmVfc291cmNlX2RpcicsJ25vZGUnOm5vZGUsJ3BhdGgnOnNyY2Rpcn0KNTQ0OiAgICBpZiBub3QgT1BFUkFUT1JfS0VZLmlzX2ZpbGUoKSBvciBPUEVSQVRPUl9LRVkuaXNfc3ltbGluaygpOiByYWlzZSBCYWNrdXBFcnJvcignT1BFUkFUT1JfS0VZX01JU1NJTkcnKQo1NDg6ICAgIGlmIG5vdCBtIG9yIG0uZ3JvdXAoMSkhPU9QRVJBVE9SX0tFWV9GSU5HRVJQUklOVDogcmFpc2UgQmFja3VwRXJyb3IoJ09QRVJBVE9SX0tFWV9GSU5HRVJQUklOVF9NSVNNQVRDSCcpCjU2MjogICAgaWYgbGVuKGdvb2QpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignSE9TVEtFWV9QSU5fTUlTTUFUQ0gnKQo1NjU6ZGVmIGVuc3VyZV92cHNfa25vd25faG9zdHModGFyZ2V0cyk6CjU2NzogICAgZm9yIHQgaW4gdGFyZ2V0czoKNTcyOmRlZiB2cHNfc3NoX2FyZ3YodCwgKiwgdXNlX2FnZW50PUZhbHNlKToKNTgxOmRlZiB2cHNfcnVuKHQsIHJlbW90ZV9hcmd2LCAqLCBpbnB1dD1Ob25lLCB0aW1lb3V0PTMwMCwgdXNlX2FnZW50PUZhbHNlLCBjaGVjaz1UcnVlKToKNTgyOiAgICByZW1vdGU9c2hsZXguam9pbihbc3RyKHgpIGZvciB4IGluIHJlbW90ZV9hcmd2XSkKNTgzOiAgICByZXR1cm4gcnVuKHZwc19zc2hfYXJndih0LHVzZV9hZ2VudD11c2VfYWdlbnQpK1tyZW1vdGVdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNTg1OmRlZiBib290c3RyYXBfdnBzX2tleXModGFyZ2V0cyk6CjU4NzogICAgZW5zdXJlX3Zwc19rbm93bl9ob3N0cyh0YXJnZXRzKQo1OTA6ICAgIGZvciB0IGluIHRhcmdldHM6CjU5NTogICAgICAgIGlmIG5vdCBvcy5lbnZpcm9uLmdldCgnU1NIX0FVVEhfU09DSycpOiByYWlzZSBCYWNrdXBFcnJvcignRk9SV0FSREVEX0FHRU5UX1JFUVVJUkVEX0ZPUl9CT09UU1RSQVAnKQo1OTk6ICAgICAgICBpZiB0YWcgbm90IGluICgnQURERUQnLCdBTFJFQURZJyk6IHJhaXNlIEJhY2t1cEVycm9yKCdWUFNfQVVUSE9SSVpFRF9LRVlfQk9PVFNUUkFQX1JFU1VMVCcpCjYwMzogICAgdXM9W3ggZm9yIHggaW4gdGFyZ2V0cyBpZiB4Wyd0eXBlJ109PSd2cHNfdXMnXVswXQo2MDg6ZGVmIHJlbW90ZV9oYXNoc2V0KHQsY29tbWFuZCk6CjYxMzogICAgZmlsZXM9WydldGMvbmV0YmlyZC9pbnN0YWxsLmNvbmYnLCd2YXIvbGliL25ldGJpcmQvc3RhdGUuanNvbicsJ3Zhci9saWIvbmV0YmlyZC9zZXJ2aWNlLmpzb24nLCd2YXIvbGliL25ldGJpcmQvYWN0aXZlX3Byb2ZpbGUuanNvbicsJ3Zhci9saWIvbmV0YmlyZC9kZWZhdWx0Lmpzb24nXQo2MTU6ICAgIHByZT1yZW1vdGVfaGFzaHNldCh0LGNtZCkKNjE2OiAgICByZW1vdGU9c2hsZXguam9pbihbJ3N1ZG8nLCctbicsJ3RhcicsJy0tbnVtZXJpYy1vd25lcicsJy1DJywnLycsJy1jZicsJy0nXStmaWxlcykKNjE3OiAgICBhcmd2PXZwc19zc2hfYXJndih0LHVzZV9hZ2VudD1GYWxzZSkrW3JlbW90ZV0KNjE4OiAgICBwYXlsb2FkPXdvcmsvJ3BheWxvYWQudGFyLnpzdCc7IHBpcGVfdG9fenN0ZChhcmd2LHBheWxvYWQsdGltZW91dD02MDApCjYxOTogICAgcG9zdD1yZW1vdGVfaGFzaHNldCh0LGNtZCkKNjIwOiAgICBpZiBwcmUhPXBvc3Q6IHJhaXNlIEJhY2t1cEVycm9yKCdNRF9TT1VSQ0VfQ0hBTkdFRF9EVVJJTkdfQ0FQVFVSRScpCjYyMTogICAgcmV0dXJuIHBheWxvYWQseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3Zwc19tZCcsJ2NvbnNpc3RlbmN5JzonRklMRVNFVF9QUkVfUE9TVF9IQVNIX1NUQUJJTElUWScsJ2hhc2hzZXRfc2hhMjU2JzpwcmV9LE5vbmUKNjI1OiAgICBwcmU9cmVtb3RlX2hhc2hzZXQodCxoY21kKQo2MjY6ICAgIHJlbW90ZT1zaGxleC5qb2luKFsndGFyJywnLS1udW1lcmljLW93bmVyJywnLUMnLCcvJywnLWNmJywnLScsJ2V0Yy9uZ2lueCddKQo2Mjc6ICAgIGFyZ3Y9dnBzX3NzaF9hcmd2KHQsdXNlX2FnZW50PUZhbHNlKStbcmVtb3RlXQo2Mjg6ICAgIHBheWxvYWQ9d29yay8ncGF5bG9hZC50YXIuenN0JzsgcGlwZV90b196c3RkKGFyZ3YscGF5bG9hZCx0aW1lb3V0PTkwMCkKNjI5OiAgICBwb3N0PXJlbW90ZV9oYXNoc2V0KHQsaGNtZCkKNjMwOiAgICBpZiBwcmUhPXBvc3Q6IHJhaXNlIEJhY2t1cEVycm9yKCdTUEJfU09VUkNFX0NIQU5HRURfRFVSSU5HX0NBUFRVUkUnKQo2MzE6ICAgIHJldHVybiBwYXlsb2FkLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOid2cHNfc3BiJywnY29uc2lzdGVuY3knOidTVEFUSUNfQ09ORklHX0ZJTEVTRVRfUFJFX1BPU1RfSEFTSF9TVEFCSUxJVFknLCd0bHNfcmVjb3ZlcnknOidSRUlTU1VFX1RMU19PTl9SRVNUT1JFJywnaGFzaHNldF9zaGEyNTYnOnByZX0sTm9uZQo2MzM6VVNfUkVNT1RFX1NDUklQVD1yJycnaW1wb3J0IGlvLG9zLHNxbGl0ZTMsc3lzLHRhcmZpbGUsdGltZSxqc29uLGhhc2hsaWIKNjU2OiAgICBkc3Q9c3FsaXRlMy5jb25uZWN0KCc6bWVtb3J5OicpOyBzcmMuYmFja3VwKGRzdCkKNjU5OiAgICB0aT10YXJmaWxlLlRhckluZm8obmFtZT0oJ3NxbGl0ZS1iYWNrdXBzLycrbmFtZSkpOyB0aS5zaXplPWxlbihiKTsgdGkubW9kZT0wbzYwMDsgdGkubXRpbWU9aW50KHRpbWUudGltZSgpKTsgdGYuYWRkZmlsZSh0aSxpby5CeXRlc0lPKGIpKQo2NjM6ICAgIHJlbW90ZT1zaGxleC5qb2luKFsncHl0aG9uMycsJy1JJywnLUInLCctYycsVVNfUkVNT1RFX1NDUklQVF0pCjY2NDogICAgYXJndj12cHNfc3NoX2FyZ3YodCx1c2VfYWdlbnQ9RmFsc2UpK1tyZW1vdGVdCjY2NTogICAgcGF5bG9hZD13b3JrLydwYXlsb2FkLnRhci56c3QnOyBwaXBlX3RvX3pzdGQoYXJndixwYXlsb2FkLHRpbWVvdXQ9MTIwMCkKNjY2OiAgICByZXR1cm4gcGF5bG9hZCx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzondnBzX3VzJywnY29uc2lzdGVuY3knOidTUUxJVEVfT05MSU5FX0JBQ0tVUF9QTFVTX05PTkRCX0ZJTEVTJywnc3FsaXRlX2NvdW50Jzo0fSxOb25lCjczOTogICAgaWYgbm90IFJPVVRFUl9MRUdBQ1lfU0NSSVBULmlzX2ZpbGUoKSBvciBST1VURVJfTEVHQUNZX1NDUklQVC5pc19zeW1saW5rKCkgb3Igc2hhMjU2X2ZpbGUoUk9VVEVSX0xFR0FDWV9TQ1JJUFQpIT1ST1VURVJfTEVHQUNZX1NIQTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9MRUdBQ1lfU0NSSVBUX0lERU5USVRZJykKNzQyOiAgICBoaXRzPVtpcCBmb3IgaXAgaW4gaXBzIGlmIHNoYTI1Nl9ieXRlcyhpcC5lbmNvZGUoKSk9PVJPVVRFUl9UQVJHRVRfU0hBXQo3NDM6ICAgIGlmIGxlbihoaXRzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9UQVJHRVRfUEFSU0UnKQo3NDQ6ICAgIHRhcmdldD1oaXRzWzBdCjc1MjogICAgaWYgbGVuKHNhZmUpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignUk9VVEVSX1BBU1NGSUxFX1BBUlNFJykKNzUzOiAgICByZXR1cm4gdGFyZ2V0LHNhZmVbMF0KNzU2OiAgICByb290cz1bcGF0aGxpYi5QYXRoKCcvZXRjJykscGF0aGxpYi5QYXRoKCcvcm9vdC8uc3NoJykscGF0aGxpYi5QYXRoKCcvdmFyL2xpYi9ob21lbGFiLWJhY2t1cCcpLHBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKV0KNzcxOiAgICBpZiBsZW4odW5pcSkhPTE6IHJhaXNlIEJhY2t1cEVycm9yKCdFWEFDVF9TSEFfRklMRV9OT1RfVU5JUVVFJykKNzc5OiAgICBpZiBzaGEyNTZfYnl0ZXMoYikhPVJPVVRFUl9LTk9XTl9IT1NUU19TSEE6IHJhaXNlIEJhY2t1cEVycm9yKCdST1VURVJfS05PV05fSE9TVFNfSURFTlRJVFknKQo3ODM6ICAgIHRhcmdldCxwZj1wYXJzZV9yb3V0ZXJfbGVnYWN5KCkKNzg2OiAgICBhcmd2PVtTU0hQQVNTLCctZicsc3RyKHBmKSxTU0gsJy1wJywnMjIyMicsJy1vJywnQmF0Y2hNb2RlPW5vJywnLW8nLCdOdW1iZXJPZlBhc3N3b3JkUHJvbXB0cz0xJywnLW8nLCdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9eWVzJywnLW8nLCdVc2VyS25vd25Ib3N0c0ZpbGU9JytzdHIoUk9VVEVSX0tOT1dOX0hPU1RTKSwnLW8nLCdDb25uZWN0VGltZW91dD0xNScsJ3JvdXRlcmJhY2t1cEAnK3RhcmdldCwnc2hvdyBydW5uaW5nLWNvbmZpZyddCjc4NzogICAgcD1ydW4oYXJndix0aW1lb3V0PTYwKTsgcmV0dXJuIHAuc3Rkb3V0Cjc5ODogICAgaWYgbm90IGEgb3IgYSE9YjogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9SRUFEX05PVF9CWVRFX1NUQUJMRScpCjgwMDogICAgcmV0dXJuIHBheWxvYWQseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3JvdXRlcicsJ2NvbmZpZ19zaGEyNTYnOnNoYTI1Nl9ieXRlcyhhKSwncmVhZF9jb3VudCc6MiwncmVjb3ZlcnlfcG9saWN5JzonSU1QT1JUX1BBQ0tBR0VfT1JfU0FGRV9DTElfTk9UX0JMSU5EX0NPTkZJR19SRVBMQUNFJ30sTm9uZQo4MDI6ZGVmIHFnYV9leGVjKG5vZGUsdm1pZCxndWVzdF9hcmd2LGlucHV0X2J5dGVzPU5vbmUsdGltZW91dD02MDApOgo4MDM6ICAgIGFyZ3M9WydxbScsJ2d1ZXN0JywnZXhlYycsc3RyKHZtaWQpLCctLXN5bmNocm9ub3VzJywnMScsJy0tdGltZW91dCcsc3RyKGludCh0aW1lb3V0KSld\nPIPE_9_SCORE=4\nPIPE_9_BASENAME=legacy_engine.py\nPIPE_9_PATH_SHA256=9a8b05902c8db1d56dc8303ffbd6fef278b3b69b41dd4eda89a767f2a3d6bd25\nPIPE_9_FILE_SHA256=b6e79f087b9f1d21dac4f77a7b46b743299bbb85bc716e80d2ea67c2e038bcd7\nPIPE_9_SCHEDULE_TARGET_COUNT=1\nPIPE_9_QEMU_EXECUTION_DIAG_COUNT=0\nPIPE_9_SELFTEST_REPLACEMENT486_COUNT=0\nPIPE_9_VZDUMP_QEMU_COUNT=0\nPIPE_9_RCLONE_COUNT=31\nPIPE_9_CLOUD_QUORUM_COUNT=0\nPIPE_9_SEAL_WRITTEN_COUNT=0\nPIPE_9_PAYLOAD_PARTS_COUNT=0\nPIPE_9_TRANSPORT_COUNT=3\nPIPE_9_RESTORE_VALIDATION_COUNT=0\nPIPE_9_SCHEDULE_RESULT_COUNT=2\nPIPE_9_RELEVANT_LINE_COUNT=346\nPIPE_9_RELEVANT_B64=NjpTVEFURV9ST09UPXBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKQo3OkNPTkZJR19ST09UPXBhdGhsaWIuUGF0aCgnL2V0Yy9ob21lbGFiLWJhY2t1cC12MicpCjg6VEFSR0VUU19QQVRIPUNPTkZJR19ST09ULyd0YXJnZXRzLmpzb24nCjk6V09SS19ST09UPXBhdGhsaWIuUGF0aCgnL21udC9zdGFnaW5nL2hvbWVsYWItYmFja3VwLXYyJykKMTA6RU5HSU5FX1BBVEg9cGF0aGxpYi5QYXRoKCcvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi1iYWNrdXAtdjInKQoxMTpSQ0xPTkU9c2h1dGlsLndoaWNoKCdyY2xvbmUnKSBvciAnL3Vzci9iaW4vcmNsb25lJwoxOTpST1VURVJfTEVHQUNZX1NDUklQVD1wYXRobGliLlBhdGgoJy91c3IvbG9jYWwvc2Jpbi9ob21lbGFiLXJvdXRlci1ydW5uaW5nLWNvbmZpZy1tYWlsLWNsb3VkJykKMjE6Uk9VVEVSX1RBUkdFVF9TSEE9JzRmOWRhMTI4MzE2NmExZTlmNGU2YmM3ZGQyNDBjNzZhZWY4NTc3MjE3N2Y3MTdmOTJhYmI2ZThlMmJiOGRlOTAnCjI1OkdVRVNUMjY2PXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jdC1iYWNrdXAtMjgycjEvZ3Vlc3QyNjYucHknKQoyNzpQMjcwPXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjcwcjEvcHZlMjcwLnB5JykKMjk6UDI4Mj1wYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvY3QtYmFja3VwLTI4MnIxL3B2ZTI4Mi5weScpCjMxOlAyNjU9cGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMS9wdmUyNjUucHknKQozNTogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxL3YyY29yZS5weScpLCdlMjg1YmY5YTU2NzhkMDdkY2JiOTAyNjFmOWY5M2U3ODI2ZmY1MjRlMDRjZmVjNzgwYmY1YTNjNGIwZGMyOWYyJyksCjM2OiAocGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMS90cmFuc3BvcnQyNjEucHknKSwnYjliOTJmOTU3YmY0NDFjYjVkMTcwMmY0ODgxODk3MzI4ZTZjMDMzOGY4YzNmNmQ0MWQyN2Q5YTM0OWIzNzY4OCcpLAozNzogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9zdHJlYW0tMjYzcjEvc3RyZWFtMjYzLnB5JyksJ2E4M2QwM2E4NmI5M2E4NTU3MTY2NTg2NTJkZDA3M2ZjYjI4MWNkMzg3ZmM2MjAwZmU0YmMyYTkyMmYzOWVhMTYnKSwKMzg6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvc3RyZWFtLTI2M3IxL25vZGVwbGFuMjYzLnB5JyksJ2RiNWMxNmVlMjRkMjVhYTE2OTQ1MzAzMzJkMzE5MGFiN2NjNWQ0ZjhlYjY5MDY3ZDAyNWUyN2FkNWM5OTUwNjAnKSwKMzk6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvbGFyZ2UtY2xvdWQtMjY0cjEvbGFyZ2UyNjQucHknKSwnNWNjNDY0MWZjMzVlNGRkNTU0NDk1YTM2MTQ2ZGE3ZGJiYjdmMTQyZDE0NTBlMDRjYzVkM2M4OTY3OGI4NDk3YScpLAo0NjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL2N0LWJhY2t1cC0yODJyMScpLAo0NzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1yZXRyeS0yNzByMScpLAo0ODogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMScpLAo0OTogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1ydW4tMjY2cjEnKSwKNTA6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjY4cjEnKSwKNTE6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9sYXJnZS1jbG91ZC0yNjRyMScpLAo1MjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3N0cmVhbS0yNjNyMScpLAo1MzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMScpLAo1NDogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3Jlc3RvcmUtMjYycjEnKSwKNTU6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxJyksCjU2OiBwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvdm0tYmFja3VwLTI4M3IxJyksCjU5Om1vZGU9c3lzLmFyZ3ZbMV0KNjU6ZWxpZiBtb2RlPT0nZHVtcF9hcmd2JzoKNjY6IHNvdXJjZT1wYXRobGliLlBhdGgoc3lzLmFyZ3ZbMl0pLnJlc29sdmUoKQo3MTogYXJndj1tb2QuZHVtcF9hcmd2KHJlcVsnam9iJ10scmVxWyd2emR1bXAnXSxwYXRobGliLlBhdGgocmVxWydzY3JhdGNoJ10pLGludChyZXFbJ25vdyddKSkKNzI6IHByaW50KGpzb24uZHVtcHMoYXJndixzZXBhcmF0b3JzPSgnLCcsJzonKSkpCjc3OlJFTU9URVM9Wwo4MjpjbGFzcyBCYWNrdXBFcnJvcihSdW50aW1lRXJyb3IpOgoxMDU6ICAgIGlmIGxlbmd0aCBpcyBub3QgTm9uZSBhbmQgbiE9bGVuZ3RoOiByYWlzZSBCYWNrdXBFcnJvcignTE9DQUxfUEFSVF9TSE9SVF9SRUFEJykKMTA5OiAgICBpZiBub3QgaXNpbnN0YW5jZShuLGludCkgb3Igbjw9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1BBWUxPQURfU0laRV9JTlZBTElEJykKMTI5OiAgICBpZiBsZW4ob3V0KSE9MjogcmFpc2UgQmFja3VwRXJyb3IoJ0FMTE9DQVRPUl9UV09fRElTVElOQ1RfQUNDT1VOVFNfVU5BVkFJTEFCTEUnKQoxMzI6ZGVmIHJlbW90ZV9nZW5lcmF0aW9uX3BhdGgoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM0OiAgICBmb3IgeCBpbiAoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM1OiAgICAgICAgaWYgbm90IHNhZmUuZnVsbG1hdGNoKHgpOiByYWlzZSBCYWNrdXBFcnJvcignVU5TQUZFX0NMT1VEX0NPTVBPTkVOVCcpCjEzNjogICAgcmV0dXJuIGYnaG9tZWxhYi1iYWNrdXBzL3YyL3tzY29wZX0ve2xvZ2ljYWxfaWR9L2dlbmVyYXRpb25zL3tnZW5lcmF0aW9ufScKMTM4OmRlZiBtYWtlX21hbmlmZXN0KHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbixwYXlsb2FkX2J5dGVzLHBheWxvYWRfc2hhMjU2LHBhcnRzLHJlcGxpY2FzLHNvdXJjZV9tZXRhKToKMTM5OiAgICBpZiBsZW4ocmVwbGljYXMpIT0yIG9yIGxlbih7clsncGh5c2ljYWwnXSBmb3IgciBpbiByZXBsaWNhc30pIT0yOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUkVQTElDQV9QSFlTSUNBTF9EVVBMSUNBVEUnKQoxNDA6ICAgIGlmIG5vdCByZS5mdWxsbWF0Y2gocidbMC05YS1mXXs2NH0nLHBheWxvYWRfc2hhMjU2KTogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1BBWUxPQURfU0hBX0lOVkFMSUQnKQoxNDE6ICAgIGlmIHN1bShpbnQocFsnYnl0ZXMnXSkgZm9yIHAgaW4gcGFydHMpIT1wYXlsb2FkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUEFSVF9UT1RBTF9NSVNNQVRDSCcpCjE0MjogICAgcmV0dXJuIHsnc2NoZW1hJzoyLCdzY29wZSc6c2NvcGUsJ2xvZ2ljYWxfaWQnOmxvZ2ljYWxfaWQsJ2dlbmVyYXRpb24nOmdlbmVyYXRpb24sJ2NyZWF0ZWRfYXRfdXRjJzp1dGNub3coKSwKMTQ5OmRlZiBkZWZhdWx0X3RhcmdldHMoKToKMTUzOiAgICBmb3Igdm1pZCx0eXAgaW4gWygxMTAsJ2x4YycpLCgxMTEsJ2x4YycpLCgxMTIsJ2x4YycpLCgxMTMsJ2x4YycpLCgxMzAsJ3FlbXUnKSwoMTUwLCdxZW11JyksKDE2MCwncWVtdScpLCgxNzAsJ3FlbXUnKSwoMTcxLCdxZW11JyksKDE5MCwncWVtdScpLCgyMTAsJ3FlbXUnKSwoMjExLCdxZW11JyksKDkxMzAsJ3FlbXUnKV06CjE1NDogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzooJ2N0JyBpZiB0eXA9PSdseGMnIGVsc2UgJ3ZtJykrc3RyKHZtaWQpLCdzY29wZSc6J3B2ZScsJ3R5cGUnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnZtaWQ9PTExMn0pCjE2ODogICAgICAoJ2dhbWV2aXBlJywxNjAsJ3B2ZTAyJywnL3Zhci93d3cvZm9ydW1zL2dhbWV2aXBlL3B1YmxpYycsJ3hmX2dhbWV2aXBlJywnZ2xvYmFsX3JlYWRfbG9jaycpLAoxNjk6ICAgICAgKCdoa21vZHMnLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvaGttb2RzL3B1YmxpYycsJ3hmX2hrbW9kcycsJ2dsb2JhbF9yZWFkX2xvY2snKSwKMTcwOiAgICAgICgnemFrcnV0aW0nLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvemFrcnV0aW0vcHVibGljJywneGZfemFrcnV0aW0nLCdnbG9iYWxfcmVhZF9sb2NrJyldCjE3MTogICAgZm9yIHNsdWcsdm1pZCxub2RlLHJvb3QsZGIsc3RyYXRlZ3kgaW4gc2l0ZXM6CjE3MjogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzoneGYtJytzbHVnLCdzY29wZSc6J3hlbmZvcm8nLCd0eXBlJzoneGVuZm9ybycsJ3NsdWcnOnNsdWcsJ3ZtaWQnOnZtaWQsJ25vZGUnOm5vZGUsJ2FwcF9yb290Jzpyb290LCdkYl9uYW1lJzpkYiwnZHVtcF9zdHJhdGVneSc6c3RyYXRlZ3ksJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnNsdWcgaW4gKCdjb2RldmlwZScsJ3pha3J1dGltJyl9KQoxNzY6ZGVmIGNob29zZV9kdWVfdGFyZ2V0KHRhcmdldHMsc3RhdGUsbm93PU5vbmUpOgoxNzk6ICAgIGZvciB0IGluIHRhcmdldHM6CjE4MjogICAgICAgIGxhc3Q9aW50KHN0YXRlLmdldCh0Wydsb2dpY2FsX2lkJ10se30pLmdldCgnbGFzdF9zdWNjZXNzX2Vwb2NoJywwKSkKMTg5OmRlZiBydW4oYXJndiwgKiwgaW5wdXQ9Tm9uZSwgdGltZW91dD0zMDAsIGNoZWNrPVRydWUsIGVudj1Ob25lKToKMTkxOiAgICAgICAgcD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSx0aW1lb3V0PXRpbWVvdXQsZW52PWVudikKMTkyOiAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfVElNRU9VVCcpCjE5MzogICAgaWYgY2hlY2sgYW5kIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfRkFJTEVEJyxzdHIocC5yZXR1cm5jb2RlKSkKMTk2OmRlZiBzdHJlYW1fcHJvY2Vzc190b19maWxlKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoxOTk6ICAgICAgICB0cnk6cD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1mLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsdGltZW91dD10aW1lb3V0KQoyMDA6ICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX1RJTUVPVVQnKQoyMDE6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjIwMzpkZWYgcGlwZV90b196c3RkKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoyMDY6ICAgICAgICBzcmM9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSBpZiBpbnB1dCBpcyBub3QgTm9uZSBlbHNlIE5vbmUsc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQoyMTQ6ICAgICAgICAgICAgc3JjLmtpbGwoKTsgc3JjLndhaXQoKTsgcmFpc2UgQmFja3VwRXJyb3IoJ1BJUEVfU09VUkNFX1RJTUVPVVQnKQoyMjA6ICAgICAgICByYWlzZSBCYWNrdXBFcnJvcignUElQRV9USU1FT1VUJykKMjIxOiAgICBpZiBzcmMucmV0dXJuY29kZSE9MCBvciB6LnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdQSVBFX0ZBSUxFRCcsZid7c3JjLnJldHVybmNvZGV9X3t6LnJldHVybmNvZGV9JykKMjM2OmRlZiBsb2FkX3RhcmdldHMoKToKMjM3OiAgICBqPWpzb24ubG9hZHMoVEFSR0VUU19QQVRILnJlYWRfdGV4dCgpKQoyMzg6ICAgIGlmIGouZ2V0KCdzY2hlbWEnKSE9MSBvciBub3QgaXNpbnN0YW5jZShqLmdldCgndGFyZ2V0cycpLGxpc3QpOiByYWlzZSBCYWNrdXBFcnJvcignVEFSR0VUX01BTklGRVNUX1NDSEVNQScpCjIzOTogICAgaWRzPVt4LmdldCgnbG9naWNhbF9pZCcpIGZvciB4IGluIGpbJ3RhcmdldHMnXV0KMjQwOiAgICBpZiBsZW4oaWRzKSE9bGVuKHNldChpZHMpKTogcmFpc2UgQmFja3VwRXJyb3IoJ1RBUkdFVF9NQU5JRkVTVF9EVVBMSUNBVEUnKQoyNDE6ICAgIHJldHVybiBqWyd0YXJnZXRzJ10KMjQzOmRlZiBsb2FkX3N0YXRlX2FsbCgpOgoyNDU6ICAgIHJvb3Q9U1RBVEVfUk9PVC8nc3RhdGUnCjI1MzpkZWYgd3JpdGVfc3RhdGUobG9naWNhbF9pZCxyZXN1bHQsKiprdyk6CjI1NDogICAgaWYgcmVzdWx0IG5vdCBpbiBSRVNVTFRfQ0xBU1NFUzogcmFpc2UgQmFja3VwRXJyb3IoJ1JFU1VMVF9DTEFTU19JTlZBTElEJykKMjU3OiAgICBhdG9taWNfd3JpdGUoU1RBVEVfUk9PVC8nc3RhdGUnLyhsb2dpY2FsX2lkKycuanNvbicpLGNhbm9uaWNhbF9qc29uKGopK2InXG4nLDBvNjAwKQoyNjA6ZGVmIHJjbG9uZV9iYXNlX2FyZ3MoKToKMjYxOiAgICByZXR1cm4gW1JDTE9ORV0KMjYzOmRlZiByY2xvbmVfYWJvdXQocmVtb3RlKToKMjY0OiAgICBwPXJ1bihyY2xvbmVfYmFzZV9hcmdzKCkrWydhYm91dCcscmVtb3RlKyc6JywnLS1qc29uJywnLS1jb250aW1lb3V0JywnMTVzJywnLS10aW1lb3V0JywnNDVzJ10sdGltZW91dD02MCkKMjY2OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0FCT1VUX0pTT04nKQoyNjg6ICAgIGlmIG5vdCBpc2luc3RhbmNlKGZyZWUsaW50KTogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9GUkVFX1VOS05PV04nKQoyNzM6ICAgIGZvciBjcnlwdCxwaHlzaWNhbCBpbiBSRU1PVEVTOgoyNzQ6ICAgICAgICB0cnk6IGZyZWU9cmNsb25lX2Fib3V0KGNyeXB0KQoyNzU6ICAgICAgICBleGNlcHQgQmFja3VwRXJyb3I6IGJhZCs9MTsgY29udGludWUKMjgwOmRlZiByZW1vdGVfZXhpc3RzX2FueShzY29wZSxsb2dpY2FsX2lkLGdlbmVyYXRpb24pOgoyODE6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbikKMjgyOiAgICBmb3IgY3J5cHQsX3BoeXNpY2FsIGluIFJFTU9URVM6CjI4MzogICAgICAgIHA9cnVuKHJjbG9uZV9iYXNlX2FyZ3MoKStbJ2xzZicsY3J5cHQrJzonK3JlbCwnLS1tYXgtZGVwdGgnLCcxJ10sdGltZW91dD00NSxjaGVjaz1GYWxzZSkKMjg3OmRlZiByY2xvbmVfcmNhdChyZW1vdGVfcGF0aCwgc291cmNlX3BhdGg9Tm9uZSwgb2Zmc2V0PTAsIGxlbmd0aD1Ob25lLCBkYXRhPU5vbmUsIHRpbWVvdXQ9MzYwMCk6CjI4ODogICAgYXJndj1yY2xvbmVfYmFzZV9hcmdzKCkrWydyY2F0JyxyZW1vdGVfcGF0aCwnLS1yZXRyaWVzJywnMycsJy0tbG93LWxldmVsLXJldHJpZXMnLCc1JywnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNW0nXQoyODk6ICAgIHA9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSxzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCjI5OTogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBiOiByYWlzZSBCYWNrdXBFcnJvcignVVBMT0FEX0xPQ0FMX1NIT1JUX1JFQUQnKQozMDc6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9SQ0FUX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjMwOTpkZWYgcmNsb25lX2NhdF9oYXNoKHJlbW90ZV9wYXRoLCBleHBlY3RlZF9ieXRlcz1Ob25lLCB0aW1lb3V0PTM2MDApOgozMTE6ICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihyY2xvbmVfYmFzZV9hcmdzKCkrWydjYXQnLHJlbW90ZV9wYXRoLCctLWNvbnRpbWVvdXQnLCcyMHMnLCctLXRpbWVvdXQnLCc1bSddLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkgYXMgcDoKMzE0OiAgICAgICAgICAgICAgICBwLmtpbGwoKTsgcC53YWl0KCk7IHJhaXNlIEJhY2t1cEVycm9yKCdSQ0xPTkVfQ0FUX1RJTUVPVVQnKQozMTk6ICAgIGlmIHJjIT0wOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9GQUlMRUQnLHN0cihyYykpCjMyMDogICAgaWYgZXhwZWN0ZWRfYnl0ZXMgaXMgbm90IE5vbmUgYW5kIG4hPWV4cGVjdGVkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9TSVpFX01JU01BVENIJykKMzIzOmRlZiByY2xvbmVfY2F0X2J5dGVzKHJlbW90ZV9wYXRoLG1heF9ieXRlcz00KjEwMjQqMTAyNCk6CjMyNDogICAgcD1ydW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxyZW1vdGVfcGF0aCwnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNjBzJ10sdGltZW91dD05MCkKMzI1OiAgICBpZiBsZW4ocC5zdGRvdXQpPm1heF9ieXRlczogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9TTUFMTF9PQkpFQ1RfVE9PX0xBUkdFJykKMzI4OmRlZiBnZW5lcmF0aW9uX2lkKGxvZ2ljYWxfaWQpOgozMzI6ZGVmIHVwbG9hZF9hbmRfc2VhbCh0LHBheWxvYWRfcGF0aCxzb3VyY2VfbWV0YSk6CjMzNTogICAgZ2VuPXNvdXJjZV9tZXRhWydnZW5lcmF0aW9uJ107IHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHRbJ3Njb3BlJ10sdFsnbG9naWNhbF9pZCddLGdlbikKMzM2OiAgICBpZiByZW1vdGVfZXhpc3RzX2FueSh0WydzY29wZSddLHRbJ2xvZ2ljYWxfaWQnXSxnZW4pOiByYWlzZSBCYWNrdXBFcnJvcignR0VORVJBVElPTl9DT0xMSVNJT04nKQozMzk6ICAgIG1hbmlmZXN0PW1ha2VfbWFuaWZlc3QodFsnc2NvcGUnXSx0Wydsb2dpY2FsX2lkJ10sZ2VuLG4scHNoYSxwYXJ0cyxyZXBzLHNvdXJjZV9tZXRhKQozNDA6ICAgIG1iPWNhbm9uaWNhbF9qc29uKG1hbmlmZXN0KStiJ1xuJzsgbXNoYT1zaGEyNTZfYnl0ZXMobWIpCjM0NTogICAgICAgICAgICByY2xvbmVfcmNhdChycCxzb3VyY2VfcGF0aD1wYXlsb2FkX3BhdGgsb2Zmc2V0PXBhcnRbJ29mZnNldCddLGxlbmd0aD1wYXJ0WydieXRlcyddKQozNDY6ICAgICAgICAgICAgZ290LGdvdG49cmNsb25lX2NhdF9oYXNoKHJwLHBhcnRbJ2J5dGVzJ10pCjM0NzogICAgICAgICAgICBpZiBnb3QhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUEFSVF9SRUFEQkFDS19TSEFfTUlTTUFUQ0gnKQozNDg6ICAgICAgICByY2xvbmVfcmNhdChiYXNlKycvbWFuaWZlc3QuanNvbicsZGF0YT1tYikKMzQ5OiAgICAgICAgaWYgcmNsb25lX2NhdF9ieXRlcyhiYXNlKycvbWFuaWZlc3QuanNvbicpIT1tYjogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1JFQURCQUNLX01JU01BVENIJykKMzUwOiAgICBzZWFsPXsnc2NoZW1hJzoxLCdnZW5lcmF0aW9uJzpnZW4sJ2xvZ2ljYWxfaWQnOnRbJ2xvZ2ljYWxfaWQnXSwnbWFuaWZlc3Rfc2hhMjU2Jzptc2hhLCdwYXlsb2FkX3NoYTI1Nic6cHNoYSwnc3RhdHVzJzonU0VBTEVEJywnc2VhbGVkX2F0X3V0Yyc6dXRjbm93KCl9CjM1MTogICAgc2I9Y2Fub25pY2FsX2pzb24oc2VhbCkrYidcbicKMzU0OiAgICAgICAgcmNsb25lX3JjYXQoYmFzZSsnL1NFQUxFRC5qc29uJyxkYXRhPXNiKQozNTU6ICAgICAgICBpZiByY2xvbmVfY2F0X2J5dGVzKGJhc2UrJy9TRUFMRUQuanNvbicpIT1zYjogcmFpc2UgQmFja3VwRXJyb3IoJ1NFQUxfUkVBREJBQ0tfTUlTTUFUQ0gnKQozNTY6ICAgIHJldHVybiBtYW5pZmVzdCxtc2hhLHsndW5oZWFsdGh5JzpiYWQsJ2hlYWx0aHknOmhlYWx0aHl9CjM1ODpkZWYgcmVjb25zdHJ1Y3RfcmVwbGljYShtYW5pZmVzdCxyZXAsb3V0X3BhdGgpOgozNTk6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKG1hbmlmZXN0WydzY29wZSddLG1hbmlmZXN0Wydsb2dpY2FsX2lkJ10sbWFuaWZlc3RbJ2dlbmVyYXRpb24nXSkKMzYzOiAgICAgICAgZm9yIHBhcnQgaW4gbWFuaWZlc3RbJ3BhcnRzJ106CjM2NTogICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxiYXNlKycvcGFydHMvJytwYXJ0WyduYW1lJ10sJy0tY29udGltZW91dCcsJzIwcycsJy0tdGltZW91dCcsJzVtJ10sc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKSBhcyBwOgozNzE6ICAgICAgICAgICAgaWYgcmMhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9DQVRfRkFJTEVEJykKMzcyOiAgICAgICAgICAgIGlmIG4hPXBhcnRbJ2J5dGVzJ10gb3IgcGguaGV4ZGlnZXN0KCkhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUkVDT05TVFJVQ1RfUEFSVF9NSVNNQVRDSCcpCjM3MzogICAgaWYgdG90YWwhPW1hbmlmZXN0WydwYXlsb2FkX2J5dGVzJ10gb3IgaC5oZXhkaWdlc3QoKSE9bWFuaWZlc3RbJ3BheWxvYWRfc2hhMjU2J106IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9QQVlMT0FEX01JU01BVENIJykKMzgyOiAgICBpZiByMSE9MCBvciBwMi5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9MSVNUX0ZBSUxFRCcpCjM4NDogICAgaWYgbm90IG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9FTVBUWScpCjM4NTogICAgaWYgcmVxdWlyZWRfbWVtYmVyIGFuZCByZXF1aXJlZF9tZW1iZXIgbm90IGluIG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignUkVRVUlSRURfTUVNQkVSX01JU1NJTkcnKQozOTQ6ICAgICAgICAgICAgIyBHcmVlbiBzZXQgaXMgaW50ZW50aW9uYWxseSBDVC1vbmx5LiBTY2hlZHVsZWQgUUVNVSBiYWNrdXBzIHN0aWxsIGdldCBkdWFsIHJlbW90ZSBieXRlIHJlYWRiYWNrLgo0MDI6ICAgICAgICBpZiBwMi5yZXR1cm5jb2RlIT0wIG9yIGxlbihkYXRhKTwxMjg6IHJhaXNlIEJhY2t1cEVycm9yKCdYRU5GT1JPX0RCX0RVTVBfSU5WQUxJRCcpCjQwMzogICAgZWxzZTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZBTElEQVRPUl9VTktOT1dOX1RZUEUnKQo0MDg6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfSU5WRU5UT1JZX0pTT04nKQo0MTA6ZGVmIHNzaF9yZW1vdGUobm9kZSxhcmd2LGlucHV0PU5vbmUsdGltZW91dD0xODAwLGNoZWNrPVRydWUpOgo0MTE6ICAgIGNtZD0nUEFUSD0vdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjsgZXhwb3J0IFBBVEg7IGV4ZWMgJytzaGxleC5qb2luKFtzdHIoeCkgZm9yIHggaW4gYXJndl0pCjQxMjogICAgaWYgbm9kZT09J3B2ZTAxJzogcmV0dXJuIHJ1bihbc3RyKHgpIGZvciB4IGluIGFyZ3ZdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNDE4OiAgICByYWlzZSBCYWNrdXBFcnJvcignUFZFX0dVRVNUX1RZUEVfRFJJRlQnKQo0MjE6ICAgIGlmIG5vdCBwYXRoLmlzX2ZpbGUoKSBvciBwYXRoLmlzX3N5bWxpbmsoKSBvciBzaGEyNTZfZmlsZShwYXRoKSE9ZXhwZWN0ZWQ6IHJhaXNlIEJhY2t1cEVycm9yKGNvZGUpCjQzMTogICAgaWYgcC5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignSElTVE9SSUNBTF9HUkFQSF9JTVBPUlRfRkFJTEVEJyxmJ3JjX3twLnJldHVybmNvZGV9X3N0ZGVycl9zaGEyNTZfe2hhc2hsaWIuc2hhMjU2KHAuc3RkZXJyKS5oZXhkaWdlc3QoKX0nKQo0MzM6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9KU09OJykKNDM2OiAgICAgICAgaWYgc3RyKHBhdGhsaWIuUGF0aChvdXQuZ2V0KGssJycpKS5yZXNvbHZlKCkpIT1zdHIocGF0aGxpYi5QYXRoKHYpLnJlc29sdmUoKSk6IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9QQVRIJyxrKQo0Mzk6ZGVmIF9pc29sYXRlZF9ndWVzdDI2Nl9kdW1wX2FyZ3Yoam9iLHZ6ZHVtcCxzY3JhdGNoLG5vdyk6CjQ0MDogICAgZW52PV9oaXN0b3JpY2FsX2dyYXBoX2VudigpO3JlcT17J2pvYic6am9iLCd2emR1bXAnOnN0cih2emR1bXApLCdzY3JhdGNoJzpzdHIoc2NyYXRjaCksJ25vdyc6aW50KG5vdyl9CjQ0MTogICAgcD1zdWJwcm9jZXNzLnJ1bihbc3lzLmV4ZWN1dGFibGUsJy1CJywnLWMnLF9ISVNUT1JJQ0FMX0hFTFBFUiwnZHVtcF9hcmd2JyxzdHIoR1VFU1QyNjYpXSxpbnB1dD1jYW5vbmljYWxfanNvbihyZXEpLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSxlbnY9ZW52LGN3ZD0nLycsdGltZW91dD0zMCkKNDQyOiAgICBpZiBwLnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdHVUVTVDI2Nl9TVUJQUk9DRVNTX0ZBSUxFRCcsZidyY197cC5yZXR1cm5jb2RlfV9zdGRlcnJfc2hhMjU2X3toYXNobGliLnNoYTI1NihwLnN0ZGVycikuaGV4ZGlnZXN0KCl9JykKNDQ0OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignR1VFU1QyNjZfU1VCUFJPQ0VTU19KU09OJykKNDQ5OiAgICByZXR1cm4geyd2bWlkJzppbnQodFsndm1pZCddKSwnaWQnOmludCh0Wyd2bWlkJ10pLCd0eXBlJzonbHhjJywna2luZCc6J2x4YycsJ2d1ZXN0X3R5cGUnOidseGMnLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpLCduYW1lJzpyb3cuZ2V0KCduYW1lJywnJyksCjQ1MzogICAgICAgICAgICAnYmxvY2tlcnMnOltdLCdkaXNrcyc6W10sJ3RlbXBsYXRlJzpib29sKHJvdy5nZXQoJ3RlbXBsYXRlJywwKSksJ2hvb2tzY3JpcHRfcHJlc2VudCc6RmFsc2UsJ2xvY2tfcHJlc2VudCc6RmFsc2UsCjQ1NDogICAgICAgICAgICAnc25hcHNob3RfaGlzdG9yeV9pbmNsdWRlZCc6RmFsc2UsJ3VudXNlZF92b2x1bWVfY291bnQnOjAsJ2Nkcm9tX2NvdW50JzowLCdjZHJvbV9tZWRpYV9pbmNsdWRlZCc6RmFsc2UsJ2d1ZXN0X3Jlc3RvcmVfdmVyaWZpZWQnOkZhbHNlLAo0NTc6ZGVmIHByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCk6CjQ1ODogICAgam9iPV9seGNfam9iKHQscm93LG5vZGUpOyB2emR1bXA9c2h1dGlsLndoaWNoKCd2emR1bXAnKSBvciAnL3Vzci9iaW4vdnpkdW1wJwo0NTk6ICAgIHRyeTogYXJndj1faXNvbGF0ZWRfZ3Vlc3QyNjZfZHVtcF9hcmd2KGpvYix2emR1bXAscGF0aGxpYi5QYXRoKHNjcmF0Y2gpLGludCh0aW1lLnRpbWUoKSkpCjQ2MDogICAgZXhjZXB0IEJhY2t1cEVycm9yOiByYWlzZQo0NjE6ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTogcmFpc2UgQmFja3VwRXJyb3IoJ1BST1ZFTl9EVU1QX0FSR1ZfRkFJTEVEJyx0eXBlKGUpLl9fbmFtZV9fKQo0NjI6ICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3YsKGxpc3QsdHVwbGUpKSBvciBub3QgYXJndiBvciBub3QgYWxsKGlzaW5zdGFuY2UoeCxzdHIpIGZvciB4IGluIGFyZ3YpOiByYWlzZSBCYWNrdXBFcnJvcignUFJPVkVOX0RVTVBfQVJHVl9TSEFQRScpCjQ2MzogICAgYXJndj1saXN0KGFyZ3YpCjQ2NDogICAgaWYgcGF0aGxpYi5QYXRoKGFyZ3ZbMF0pLm5hbWUhPSd2emR1bXAnIG9yIHN0cihpbnQodFsndm1pZCddKSkgbm90IGluIGFyZ3Y6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX1RBUkdFVCcpCjQ2NTogICAgaWYgJy0tZHVtcGRpcicgaW4gYXJndiBvciBhbnkoeC5zdGFydHN3aXRoKCctLWR1bXBkaXI9JykgZm9yIHggaW4gYXJndik6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX1VORVhQRUNURURfRFVNUERJUicpCjQ2NjogICAgaWYgbm90IGFueSh4PT0nLS1zdGRvdXQnIG9yIHguc3RhcnRzd2l0aCgnLS1zdGRvdXQ9JykgZm9yIHggaW4gYXJndik6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX05PX1NURE9VVCcpCjQ2NzogICAgaWYgc3RyKHNjcmF0Y2gpIG5vdCBpbiBhcmd2IGFuZCBub3QgYW55KHg9PSctLXRtcGRpcj0nK3N0cihzY3JhdGNoKSBmb3IgeCBpbiBhcmd2KTogcmFpc2UgQmFja3VwRXJyb3IoJ1BST1ZFTl9EVU1QX0FSR1ZfTk9fU0NSQVRDSCcpCjQ2ODogICAgIyBBY2NlcHRlZCAyNzAvMjgyIGltcGxlbWVudGF0aW9uIHBhc3NlZCBtYXBwZWQgc2NyYXRjaCB0byB2emR1bXAgYXMgdG1wZGlyLgo0Njk6ICAgIGlmICctLXRtcGRpcicgaW4gYXJndjoKNDcwOiAgICAgICAgaT1hcmd2LmluZGV4KCctLXRtcGRpcicpCjQ3MTogICAgICAgIGlmIGkrMT49bGVuKGFyZ3YpIG9yIGFyZ3ZbaSsxXSE9c3RyKHNjcmF0Y2gpOiByYWlzZSBCYWNrdXBFcnJvcignUFJPVkVOX0RVTVBfQVJHVl9UTVBESVJfQklORElORycpCjQ3MjogICAgZWxpZiAnLS10bXBkaXI9JytzdHIoc2NyYXRjaCkgbm90IGluIGFyZ3Y6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX05PX1RNUERJUicpCjQ3MzogICAgcmV0dXJuIGFyZ3Ysam9iCjQ3NTpkZWYgX2RlZmF1bHRfdW5wcml2aWxlZ2VkX2x4Yyhub2RlLHZtaWQpOgo0NzY6ICAgIHE9c3NoX3JlbW90ZShub2RlLFsncGN0JywnY29uZmlnJyxzdHIodm1pZCldLHRpbWVvdXQ9MzApCjQ3ODogICAgaWYgJ3VucHJpdmlsZWdlZDogMScgbm90IGluIGxpbmVzOiByYWlzZSBCYWNrdXBFcnJvcignTFhDX05PVF9VTlBSSVZJTEVHRUQnKQo0Nzk6ICAgIGlmIGFueSh4LnN0YXJ0c3dpdGgoJ2x4Yy5pZG1hcDonKSBvciB4LnN0YXJ0c3dpdGgoJ2x4Yy5pZG1hcCA9JykgZm9yIHggaW4gbGluZXMpOiByYWlzZSBCYWNrdXBFcnJvcignTFhDX0NVU1RPTV9JRE1BUF9VTlNVUFBPUlRFRCcpCjQ4NDogICAgcT1zc2hfcmVtb3RlKG5vZGUscG9zLHRpbWVvdXQ9MzAsY2hlY2s9RmFsc2UpCjQ4NTogICAgaWYgcS5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignTUFQUEVEX1VJRF9BQ0NFU1NfUFJPQkVfRkFJTEVEJykKNDg3OmRlZiBfc3RyZWFtX2FyZ3ZfdG9fbG9jYWwobm9kZSxhcmd2LGRlc3QsdGltZW91dD03MjAwKToKNDg5OiAgICBpZiBub2RlPT0ncHZlMDEnOiBjbWQ9YXJndgo0OTE6ICAgICAgICByZW1vdGU9J1BBVEg9L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW47IGV4cG9ydCBQQVRIOyBleGVjICcrc2hsZXguam9pbihhcmd2KQo0OTI6ICAgICAgICBjbWQ9W1NTSCwnLW8nLCdCYXRjaE1vZGU9eWVzJywnLW8nLCdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9eWVzJywncm9vdEAnK25vZGUscmVtb3RlXQo0OTg6ICAgICAgICAgICAgcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9TVFJFQU1fVElNRU9VVCcpCjUwMjogICAgICAgIHJhaXNlIEJhY2t1cEVycm9yKCdDT01NQU5EX0ZBSUxFRCcsZid2emR1bXBfcmNfe3AucmV0dXJuY29kZX1fc3RkZXJyX3NoYTI1Nl97aGFzaGxpYi5zaGEyNTYocC5zdGRlcnIpLmhleGRpZ2VzdCgpfScpCjUwMzogICAgaWYgbm90IGRlc3QuaXNfZmlsZSgpIG9yIGRlc3Quc3RhdCgpLnN0X3NpemU8PTA6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfUEFZTE9BRF9NSVNTSU5HJykKNTA2OiAgICB2bWlkPWludCh0Wyd2bWlkJ10pOyByb3dzPVtyIGZvciByIGluIGNsdXN0ZXJfaW52ZW50b3J5KCkgaWYgaW50KHIuZ2V0KCd2bWlkJywtMSkpPT12bWlkXQo1MDc6ICAgIGlmIGxlbihyb3dzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRV9HVUVTVF9OT1RfVU5JUVVFJykKNTA5OiAgICBpZiB0eXAhPXRbJ2d1ZXN0X3R5cGUnXTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRV9HVUVTVF9UWVBFX0RSSUZUJykKNTEyOiAgICAgICAgX2RlZmF1bHRfdW5wcml2aWxlZ2VkX2x4Yyhub2RlLHZtaWQpCjUxMzogICAgICAgIHNjcmF0Y2g9ZicvdmFyL3RtcC9ob21lbGFiLXZ6ZHVtcC12Mi17Z2VufScKNTE0OiAgICAgICAgc3NoX3JlbW90ZShub2RlLFsnaW5zdGFsbCcsJy1kJywnLW0nLCc3MTAnLCctbycsJzAnLCctZycsJzEwMDAwMCcsc2NyYXRjaF0sdGltZW91dD0zMCkKNTE1OiAgICAgICAgcT1zc2hfcmVtb3RlKG5vZGUsWydzdGF0JywnLWMnLCclYToldTolZycsc2NyYXRjaF0sdGltZW91dD0zMCkKNTE2OiAgICAgICAgaWYgcS5zdGRvdXQuZGVjb2RlKCkuc3RyaXAoKSE9JzcxMDowOjEwMDAwMCc6IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfTUFQUEVEX1NDUkFUQ0hfQUNDRVNTX0NPTlRSQUNUJykKNTE5OiAgICAgICAgICAgIGFyZ3Ysam9iPXByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCkKNTIxOiAgICAgICAgICAgIF9zdHJlYW1fYXJndl90b19sb2NhbChub2RlLGFyZ3YsbG9jYWwsdGltZW91dD03MjAwKQo1MjI6ICAgICAgICAgICAgaWYgbG9jYWwuc3RhdCgpLnN0X3NpemU+aW50KGpvYlsnYXJjaGl2ZV9jYXBfYnl0ZXMnXSk6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfQVJDSElWRV9DQVBfRVhDRUVERUQnKQo1MjQ6ICAgICAgICAgICAgc3NoX3JlbW90ZShub2RlLFsncm0nLCctcmYnLCctLScsc2NyYXRjaF0sdGltZW91dD02MCxjaGVjaz1GYWxzZSk7cmFpc2UKNTI2OiAgICAgICAgcmV0dXJuIGxvY2FsLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ25vZGUnOm5vZGUsJ3N0YXR1cyc6cm93LmdldCgnc3RhdHVzJyksJ3Byb2R1Y2VyX2NvbnRyYWN0JzoncHJvdmVuLTI3MC0yODItc3RyZWFtJ30sY2xlYW51cAo1Mjc6ICAgICMgUUVNVSBwYXRoIHJlbWFpbnMgdW5jaGFuZ2VkOiBib3VuZGVkIGRlZGljYXRlZCBkdW1wZGlyIHdpdGggbGF0ZXIgY2xvdWQgcmVhZGJhY2svcmVjb25zdHJ1Y3Rpb24uCjUyODogICAgc3JjZGlyPWYnL3Zhci90bXAvaG9tZWxhYi12emR1bXAtdjIte2dlbn0nCjUyOTogICAgc3NoX3JlbW90ZShub2RlLFsnaW5zdGFsbCcsJy1kJywnLW0nLCc3MDAnLCctbycsJzAnLCctZycsJzAnLHNyY2Rpcl0sdGltZW91dD0zMCkKNTMxOiAgICAgICAgc3NoX3JlbW90ZShub2RlLFsndnpkdW1wJyxzdHIodm1pZCksJy0tbW9kZScsJ3NuYXBzaG90JywnLS1jb21wcmVzcycsJ3pzdGQnLCctLWR1bXBkaXInLHNyY2Rpcl0sdGltZW91dD03MjAwKQo1MzI6ICAgICAgICBwPXNzaF9yZW1vdGUobm9kZSxbJ2ZpbmQnLHNyY2RpciwnLW1heGRlcHRoJywnMScsJy10eXBlJywnZicsJy1wcmludGYnLCclcFxuJ10sdGltZW91dD0zMCkKNTM0OiAgICAgICAgaWYgbGVuKGZpbGVzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9PVVRQVVRfTk9UX1VOSVFVRScpCjUzODogICAgICAgIGlmIG5vdCBwYXRobGliLlBhdGgobG9jYWwpLmlzX2ZpbGUoKSBvciBwYXRobGliLlBhdGgobG9jYWwpLnN0YXQoKS5zdF9zaXplPD0wOiByYWlzZSBCYWNrdXBFcnJvcignVlpEVU1QX1BBWUxPQURfTUlTU0lORycpCjU0MDogICAgICAgIHNzaF9yZW1vdGUobm9kZSxbJ3JtJywnLXJmJywnLS0nLHNyY2Rpcl0sdGltZW91dD02MCxjaGVjaz1GYWxzZSk7cmFpc2UKNTQxOiAgICByZXR1cm4gcGF0aGxpYi5QYXRoKGxvY2FsKSx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzoncHZlX2d1ZXN0Jywndm1pZCc6dm1pZCwnZ3Vlc3RfdHlwZSc6dHlwLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpfSx7J2tpbmQnOidwdmVfc291cmNlX2RpcicsJ25vZGUnOm5vZGUsJ3BhdGgnOnNyY2Rpcn0KNTQ0OiAgICBpZiBub3QgT1BFUkFUT1JfS0VZLmlzX2ZpbGUoKSBvciBPUEVSQVRPUl9LRVkuaXNfc3ltbGluaygpOiByYWlzZSBCYWNrdXBFcnJvcignT1BFUkFUT1JfS0VZX01JU1NJTkcnKQo1NDg6ICAgIGlmIG5vdCBtIG9yIG0uZ3JvdXAoMSkhPU9QRVJBVE9SX0tFWV9GSU5HRVJQUklOVDogcmFpc2UgQmFja3VwRXJyb3IoJ09QRVJBVE9SX0tFWV9GSU5HRVJQUklOVF9NSVNNQVRDSCcpCjU2MjogICAgaWYgbGVuKGdvb2QpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignSE9TVEtFWV9QSU5fTUlTTUFUQ0gnKQo1NjU6ZGVmIGVuc3VyZV92cHNfa25vd25faG9zdHModGFyZ2V0cyk6CjU2NzogICAgZm9yIHQgaW4gdGFyZ2V0czoKNTcyOmRlZiB2cHNfc3NoX2FyZ3YodCwgKiwgdXNlX2FnZW50PUZhbHNlKToKNTgxOmRlZiB2cHNfcnVuKHQsIHJlbW90ZV9hcmd2LCAqLCBpbnB1dD1Ob25lLCB0aW1lb3V0PTMwMCwgdXNlX2FnZW50PUZhbHNlLCBjaGVjaz1UcnVlKToKNTgyOiAgICByZW1vdGU9c2hsZXguam9pbihbc3RyKHgpIGZvciB4IGluIHJlbW90ZV9hcmd2XSkKNTgzOiAgICByZXR1cm4gcnVuKHZwc19zc2hfYXJndih0LHVzZV9hZ2VudD11c2VfYWdlbnQpK1tyZW1vdGVdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNTg1OmRlZiBib290c3RyYXBfdnBzX2tleXModGFyZ2V0cyk6CjU4NzogICAgZW5zdXJlX3Zwc19rbm93bl9ob3N0cyh0YXJnZXRzKQo1OTA6ICAgIGZvciB0IGluIHRhcmdldHM6CjU5NTogICAgICAgIGlmIG5vdCBvcy5lbnZpcm9uLmdldCgnU1NIX0FVVEhfU09DSycpOiByYWlzZSBCYWNrdXBFcnJvcignRk9SV0FSREVEX0FHRU5UX1JFUVVJUkVEX0ZPUl9CT09UU1RSQVAnKQo1OTk6ICAgICAgICBpZiB0YWcgbm90IGluICgnQURERUQnLCdBTFJFQURZJyk6IHJhaXNlIEJhY2t1cEVycm9yKCdWUFNfQVVUSE9SSVpFRF9LRVlfQk9PVFNUUkFQX1JFU1VMVCcpCjYwMzogICAgdXM9W3ggZm9yIHggaW4gdGFyZ2V0cyBpZiB4Wyd0eXBlJ109PSd2cHNfdXMnXVswXQo2MDg6ZGVmIHJlbW90ZV9oYXNoc2V0KHQsY29tbWFuZCk6CjYxMzogICAgZmlsZXM9WydldGMvbmV0YmlyZC9pbnN0YWxsLmNvbmYnLCd2YXIvbGliL25ldGJpcmQvc3RhdGUuanNvbicsJ3Zhci9saWIvbmV0YmlyZC9zZXJ2aWNlLmpzb24nLCd2YXIvbGliL25ldGJpcmQvYWN0aXZlX3Byb2ZpbGUuanNvbicsJ3Zhci9saWIvbmV0YmlyZC9kZWZhdWx0Lmpzb24nXQo2MTU6ICAgIHByZT1yZW1vdGVfaGFzaHNldCh0LGNtZCkKNjE2OiAgICByZW1vdGU9c2hsZXguam9pbihbJ3N1ZG8nLCctbicsJ3RhcicsJy0tbnVtZXJpYy1vd25lcicsJy1DJywnLycsJy1jZicsJy0nXStmaWxlcykKNjE3OiAgICBhcmd2PXZwc19zc2hfYXJndih0LHVzZV9hZ2VudD1GYWxzZSkrW3JlbW90ZV0KNjE4OiAgICBwYXlsb2FkPXdvcmsvJ3BheWxvYWQudGFyLnpzdCc7IHBpcGVfdG9fenN0ZChhcmd2LHBheWxvYWQsdGltZW91dD02MDApCjYxOTogICAgcG9zdD1yZW1vdGVfaGFzaHNldCh0LGNtZCkKNjIwOiAgICBpZiBwcmUhPXBvc3Q6IHJhaXNlIEJhY2t1cEVycm9yKCdNRF9TT1VSQ0VfQ0hBTkdFRF9EVVJJTkdfQ0FQVFVSRScpCjYyMTogICAgcmV0dXJuIHBheWxvYWQseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3Zwc19tZCcsJ2NvbnNpc3RlbmN5JzonRklMRVNFVF9QUkVfUE9TVF9IQVNIX1NUQUJJTElUWScsJ2hhc2hzZXRfc2hhMjU2JzpwcmV9LE5vbmUKNjI1OiAgICBwcmU9cmVtb3RlX2hhc2hzZXQodCxoY21kKQo2MjY6ICAgIHJlbW90ZT1zaGxleC5qb2luKFsndGFyJywnLS1udW1lcmljLW93bmVyJywnLUMnLCcvJywnLWNmJywnLScsJ2V0Yy9uZ2lueCddKQo2Mjc6ICAgIGFyZ3Y9dnBzX3NzaF9hcmd2KHQsdXNlX2FnZW50PUZhbHNlKStbcmVtb3RlXQo2Mjg6ICAgIHBheWxvYWQ9d29yay8ncGF5bG9hZC50YXIuenN0JzsgcGlwZV90b196c3RkKGFyZ3YscGF5bG9hZCx0aW1lb3V0PTkwMCkKNjI5OiAgICBwb3N0PXJlbW90ZV9oYXNoc2V0KHQsaGNtZCkKNjMwOiAgICBpZiBwcmUhPXBvc3Q6IHJhaXNlIEJhY2t1cEVycm9yKCdTUEJfU09VUkNFX0NIQU5HRURfRFVSSU5HX0NBUFRVUkUnKQo2MzE6ICAgIHJldHVybiBwYXlsb2FkLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOid2cHNfc3BiJywnY29uc2lzdGVuY3knOidTVEFUSUNfQ09ORklHX0ZJTEVTRVRfUFJFX1BPU1RfSEFTSF9TVEFCSUxJVFknLCd0bHNfcmVjb3ZlcnknOidSRUlTU1VFX1RMU19PTl9SRVNUT1JFJywnaGFzaHNldF9zaGEyNTYnOnByZX0sTm9uZQo2MzM6VVNfUkVNT1RFX1NDUklQVD1yJycnaW1wb3J0IGlvLG9zLHNxbGl0ZTMsc3lzLHRhcmZpbGUsdGltZSxqc29uLGhhc2hsaWIKNjU2OiAgICBkc3Q9c3FsaXRlMy5jb25uZWN0KCc6bWVtb3J5OicpOyBzcmMuYmFja3VwKGRzdCkKNjU5OiAgICB0aT10YXJmaWxlLlRhckluZm8obmFtZT0oJ3NxbGl0ZS1iYWNrdXBzLycrbmFtZSkpOyB0aS5zaXplPWxlbihiKTsgdGkubW9kZT0wbzYwMDsgdGkubXRpbWU9aW50KHRpbWUudGltZSgpKTsgdGYuYWRkZmlsZSh0aSxpby5CeXRlc0lPKGIpKQo2NjM6ICAgIHJlbW90ZT1zaGxleC5qb2luKFsncHl0aG9uMycsJy1JJywnLUInLCctYycsVVNfUkVNT1RFX1NDUklQVF0pCjY2NDogICAgYXJndj12cHNfc3NoX2FyZ3YodCx1c2VfYWdlbnQ9RmFsc2UpK1tyZW1vdGVdCjY2NTogICAgcGF5bG9hZD13b3JrLydwYXlsb2FkLnRhci56c3QnOyBwaXBlX3RvX3pzdGQoYXJndixwYXlsb2FkLHRpbWVvdXQ9MTIwMCkKNjY2OiAgICByZXR1cm4gcGF5bG9hZCx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzondnBzX3VzJywnY29uc2lzdGVuY3knOidTUUxJVEVfT05MSU5FX0JBQ0tVUF9QTFVTX05PTkRCX0ZJTEVTJywnc3FsaXRlX2NvdW50Jzo0fSxOb25lCjczOTogICAgaWYgbm90IFJPVVRFUl9MRUdBQ1lfU0NSSVBULmlzX2ZpbGUoKSBvciBST1VURVJfTEVHQUNZX1NDUklQVC5pc19zeW1saW5rKCkgb3Igc2hhMjU2X2ZpbGUoUk9VVEVSX0xFR0FDWV9TQ1JJUFQpIT1ST1VURVJfTEVHQUNZX1NIQTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9MRUdBQ1lfU0NSSVBUX0lERU5USVRZJykKNzQyOiAgICBoaXRzPVtpcCBmb3IgaXAgaW4gaXBzIGlmIHNoYTI1Nl9ieXRlcyhpcC5lbmNvZGUoKSk9PVJPVVRFUl9UQVJHRVRfU0hBXQo3NDM6ICAgIGlmIGxlbihoaXRzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9UQVJHRVRfUEFSU0UnKQo3NDQ6ICAgIHRhcmdldD1oaXRzWzBdCjc1MjogICAgaWYgbGVuKHNhZmUpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignUk9VVEVSX1BBU1NGSUxFX1BBUlNFJykKNzUzOiAgICByZXR1cm4gdGFyZ2V0LHNhZmVbMF0KNzU2OiAgICByb290cz1bcGF0aGxpYi5QYXRoKCcvZXRjJykscGF0aGxpYi5QYXRoKCcvcm9vdC8uc3NoJykscGF0aGxpYi5QYXRoKCcvdmFyL2xpYi9ob21lbGFiLWJhY2t1cCcpLHBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKV0KNzcxOiAgICBpZiBsZW4odW5pcSkhPTE6IHJhaXNlIEJhY2t1cEVycm9yKCdFWEFDVF9TSEFfRklMRV9OT1RfVU5JUVVFJykKNzc5OiAgICBpZiBzaGEyNTZfYnl0ZXMoYikhPVJPVVRFUl9LTk9XTl9IT1NUU19TSEE6IHJhaXNlIEJhY2t1cEVycm9yKCdST1VURVJfS05PV05fSE9TVFNfSURFTlRJVFknKQo3ODM6ICAgIHRhcmdldCxwZj1wYXJzZV9yb3V0ZXJfbGVnYWN5KCkKNzg2OiAgICBhcmd2PVtTU0hQQVNTLCctZicsc3RyKHBmKSxTU0gsJy1wJywnMjIyMicsJy1vJywnQmF0Y2hNb2RlPW5vJywnLW8nLCdOdW1iZXJPZlBhc3N3b3JkUHJvbXB0cz0xJywnLW8nLCdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9eWVzJywnLW8nLCdVc2VyS25vd25Ib3N0c0ZpbGU9JytzdHIoUk9VVEVSX0tOT1dOX0hPU1RTKSwnLW8nLCdDb25uZWN0VGltZW91dD0xNScsJ3JvdXRlcmJhY2t1cEAnK3RhcmdldCwnc2hvdyBydW5uaW5nLWNvbmZpZyddCjc4NzogICAgcD1ydW4oYXJndix0aW1lb3V0PTYwKTsgcmV0dXJuIHAuc3Rkb3V0Cjc5ODogICAgaWYgbm90IGEgb3IgYSE9YjogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9SRUFEX05PVF9CWVRFX1NUQUJMRScpCjgwMDogICAgcmV0dXJuIHBheWxvYWQseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3JvdXRlcicsJ2NvbmZpZ19zaGEyNTYnOnNoYTI1Nl9ieXRlcyhhKSwncmVhZF9jb3VudCc6MiwncmVjb3ZlcnlfcG9saWN5JzonSU1QT1JUX1BBQ0tBR0VfT1JfU0FGRV9DTElfTk9UX0JMSU5EX0NPTkZJR19SRVBMQUNFJ30sTm9uZQo4MDI6ZGVmIHFnYV9leGVjKG5vZGUsdm1pZCxndWVzdF9hcmd2LGlucHV0X2J5dGVzPU5vbmUsdGltZW91dD02MDApOgo4MDM6ICAgIGFyZ3M9WydxbScsJ2d1ZXN0JywnZXhlYycsc3RyKHZtaWQpLCctLXN5bmNocm9ub3VzJywnMScsJy0tdGltZW91dCcsc3RyKGludCh0aW1lb3V0KSld\nPIPE_10_SCORE=4\nPIPE_10_BASENAME=legacy_engine.py\nPIPE_10_PATH_SHA256=88ab68bf67a35e0d0b255725cf1d80a6bc6e1d39d0208f2cc2551fdaedd35b49\nPIPE_10_FILE_SHA256=b6e79f087b9f1d21dac4f77a7b46b743299bbb85bc716e80d2ea67c2e038bcd7\nPIPE_10_SCHEDULE_TARGET_COUNT=1\nPIPE_10_QEMU_EXECUTION_DIAG_COUNT=0\nPIPE_10_SELFTEST_REPLACEMENT486_COUNT=0\nPIPE_10_VZDUMP_QEMU_COUNT=0\nPIPE_10_RCLONE_COUNT=31\nPIPE_10_CLOUD_QUORUM_COUNT=0\nPIPE_10_SEAL_WRITTEN_COUNT=0\nPIPE_10_PAYLOAD_PARTS_COUNT=0\nPIPE_10_TRANSPORT_COUNT=3\nPIPE_10_RESTORE_VALIDATION_COUNT=0\nPIPE_10_SCHEDULE_RESULT_COUNT=2\nPIPE_10_RELEVANT_LINE_COUNT=346\nPIPE_10_RELEVANT_B64=NjpTVEFURV9ST09UPXBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKQo3OkNPTkZJR19ST09UPXBhdGhsaWIuUGF0aCgnL2V0Yy9ob21lbGFiLWJhY2t1cC12MicpCjg6VEFSR0VUU19QQVRIPUNPTkZJR19ST09ULyd0YXJnZXRzLmpzb24nCjk6V09SS19ST09UPXBhdGhsaWIuUGF0aCgnL21udC9zdGFnaW5nL2hvbWVsYWItYmFja3VwLXYyJykKMTA6RU5HSU5FX1BBVEg9cGF0aGxpYi5QYXRoKCcvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi1iYWNrdXAtdjInKQoxMTpSQ0xPTkU9c2h1dGlsLndoaWNoKCdyY2xvbmUnKSBvciAnL3Vzci9iaW4vcmNsb25lJwoxOTpST1VURVJfTEVHQUNZX1NDUklQVD1wYXRobGliLlBhdGgoJy91c3IvbG9jYWwvc2Jpbi9ob21lbGFiLXJvdXRlci1ydW5uaW5nLWNvbmZpZy1tYWlsLWNsb3VkJykKMjE6Uk9VVEVSX1RBUkdFVF9TSEE9JzRmOWRhMTI4MzE2NmExZTlmNGU2YmM3ZGQyNDBjNzZhZWY4NTc3MjE3N2Y3MTdmOTJhYmI2ZThlMmJiOGRlOTAnCjI1OkdVRVNUMjY2PXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jdC1iYWNrdXAtMjgycjEvZ3Vlc3QyNjYucHknKQoyNzpQMjcwPXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjcwcjEvcHZlMjcwLnB5JykKMjk6UDI4Mj1wYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvY3QtYmFja3VwLTI4MnIxL3B2ZTI4Mi5weScpCjMxOlAyNjU9cGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMS9wdmUyNjUucHknKQozNTogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxL3YyY29yZS5weScpLCdlMjg1YmY5YTU2NzhkMDdkY2JiOTAyNjFmOWY5M2U3ODI2ZmY1MjRlMDRjZmVjNzgwYmY1YTNjNGIwZGMyOWYyJyksCjM2OiAocGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMS90cmFuc3BvcnQyNjEucHknKSwnYjliOTJmOTU3YmY0NDFjYjVkMTcwMmY0ODgxODk3MzI4ZTZjMDMzOGY4YzNmNmQ0MWQyN2Q5YTM0OWIzNzY4OCcpLAozNzogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9zdHJlYW0tMjYzcjEvc3RyZWFtMjYzLnB5JyksJ2E4M2QwM2E4NmI5M2E4NTU3MTY2NTg2NTJkZDA3M2ZjYjI4MWNkMzg3ZmM2MjAwZmU0YmMyYTkyMmYzOWVhMTYnKSwKMzg6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvc3RyZWFtLTI2M3IxL25vZGVwbGFuMjYzLnB5JyksJ2RiNWMxNmVlMjRkMjVhYTE2OTQ1MzAzMzJkMzE5MGFiN2NjNWQ0ZjhlYjY5MDY3ZDAyNWUyN2FkNWM5OTUwNjAnKSwKMzk6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvbGFyZ2UtY2xvdWQtMjY0cjEvbGFyZ2UyNjQucHknKSwnNWNjNDY0MWZjMzVlNGRkNTU0NDk1YTM2MTQ2ZGE3ZGJiYjdmMTQyZDE0NTBlMDRjYzVkM2M4OTY3OGI4NDk3YScpLAo0NjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL2N0LWJhY2t1cC0yODJyMScpLAo0NzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1yZXRyeS0yNzByMScpLAo0ODogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMScpLAo0OTogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1ydW4tMjY2cjEnKSwKNTA6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjY4cjEnKSwKNTE6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9sYXJnZS1jbG91ZC0yNjRyMScpLAo1MjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3N0cmVhbS0yNjNyMScpLAo1MzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMScpLAo1NDogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3Jlc3RvcmUtMjYycjEnKSwKNTU6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxJyksCjU2OiBwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvdm0tYmFja3VwLTI4M3IxJyksCjU5Om1vZGU9c3lzLmFyZ3ZbMV0KNjU6ZWxpZiBtb2RlPT0nZHVtcF9hcmd2JzoKNjY6IHNvdXJjZT1wYXRobGliLlBhdGgoc3lzLmFyZ3ZbMl0pLnJlc29sdmUoKQo3MTogYXJndj1tb2QuZHVtcF9hcmd2KHJlcVsnam9iJ10scmVxWyd2emR1bXAnXSxwYXRobGliLlBhdGgocmVxWydzY3JhdGNoJ10pLGludChyZXFbJ25vdyddKSkKNzI6IHByaW50KGpzb24uZHVtcHMoYXJndixzZXBhcmF0b3JzPSgnLCcsJzonKSkpCjc3OlJFTU9URVM9Wwo4MjpjbGFzcyBCYWNrdXBFcnJvcihSdW50aW1lRXJyb3IpOgoxMDU6ICAgIGlmIGxlbmd0aCBpcyBub3QgTm9uZSBhbmQgbiE9bGVuZ3RoOiByYWlzZSBCYWNrdXBFcnJvcignTE9DQUxfUEFSVF9TSE9SVF9SRUFEJykKMTA5OiAgICBpZiBub3QgaXNpbnN0YW5jZShuLGludCkgb3Igbjw9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1BBWUxPQURfU0laRV9JTlZBTElEJykKMTI5OiAgICBpZiBsZW4ob3V0KSE9MjogcmFpc2UgQmFja3VwRXJyb3IoJ0FMTE9DQVRPUl9UV09fRElTVElOQ1RfQUNDT1VOVFNfVU5BVkFJTEFCTEUnKQoxMzI6ZGVmIHJlbW90ZV9nZW5lcmF0aW9uX3BhdGgoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM0OiAgICBmb3IgeCBpbiAoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM1OiAgICAgICAgaWYgbm90IHNhZmUuZnVsbG1hdGNoKHgpOiByYWlzZSBCYWNrdXBFcnJvcignVU5TQUZFX0NMT1VEX0NPTVBPTkVOVCcpCjEzNjogICAgcmV0dXJuIGYnaG9tZWxhYi1iYWNrdXBzL3YyL3tzY29wZX0ve2xvZ2ljYWxfaWR9L2dlbmVyYXRpb25zL3tnZW5lcmF0aW9ufScKMTM4OmRlZiBtYWtlX21hbmlmZXN0KHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbixwYXlsb2FkX2J5dGVzLHBheWxvYWRfc2hhMjU2LHBhcnRzLHJlcGxpY2FzLHNvdXJjZV9tZXRhKToKMTM5OiAgICBpZiBsZW4ocmVwbGljYXMpIT0yIG9yIGxlbih7clsncGh5c2ljYWwnXSBmb3IgciBpbiByZXBsaWNhc30pIT0yOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUkVQTElDQV9QSFlTSUNBTF9EVVBMSUNBVEUnKQoxNDA6ICAgIGlmIG5vdCByZS5mdWxsbWF0Y2gocidbMC05YS1mXXs2NH0nLHBheWxvYWRfc2hhMjU2KTogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1BBWUxPQURfU0hBX0lOVkFMSUQnKQoxNDE6ICAgIGlmIHN1bShpbnQocFsnYnl0ZXMnXSkgZm9yIHAgaW4gcGFydHMpIT1wYXlsb2FkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUEFSVF9UT1RBTF9NSVNNQVRDSCcpCjE0MjogICAgcmV0dXJuIHsnc2NoZW1hJzoyLCdzY29wZSc6c2NvcGUsJ2xvZ2ljYWxfaWQnOmxvZ2ljYWxfaWQsJ2dlbmVyYXRpb24nOmdlbmVyYXRpb24sJ2NyZWF0ZWRfYXRfdXRjJzp1dGNub3coKSwKMTQ5OmRlZiBkZWZhdWx0X3RhcmdldHMoKToKMTUzOiAgICBmb3Igdm1pZCx0eXAgaW4gWygxMTAsJ2x4YycpLCgxMTEsJ2x4YycpLCgxMTIsJ2x4YycpLCgxMTMsJ2x4YycpLCgxMzAsJ3FlbXUnKSwoMTUwLCdxZW11JyksKDE2MCwncWVtdScpLCgxNzAsJ3FlbXUnKSwoMTcxLCdxZW11JyksKDE5MCwncWVtdScpLCgyMTAsJ3FlbXUnKSwoMjExLCdxZW11JyksKDkxMzAsJ3FlbXUnKV06CjE1NDogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzooJ2N0JyBpZiB0eXA9PSdseGMnIGVsc2UgJ3ZtJykrc3RyKHZtaWQpLCdzY29wZSc6J3B2ZScsJ3R5cGUnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnZtaWQ9PTExMn0pCjE2ODogICAgICAoJ2dhbWV2aXBlJywxNjAsJ3B2ZTAyJywnL3Zhci93d3cvZm9ydW1zL2dhbWV2aXBlL3B1YmxpYycsJ3hmX2dhbWV2aXBlJywnZ2xvYmFsX3JlYWRfbG9jaycpLAoxNjk6ICAgICAgKCdoa21vZHMnLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvaGttb2RzL3B1YmxpYycsJ3hmX2hrbW9kcycsJ2dsb2JhbF9yZWFkX2xvY2snKSwKMTcwOiAgICAgICgnemFrcnV0aW0nLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvemFrcnV0aW0vcHVibGljJywneGZfemFrcnV0aW0nLCdnbG9iYWxfcmVhZF9sb2NrJyldCjE3MTogICAgZm9yIHNsdWcsdm1pZCxub2RlLHJvb3QsZGIsc3RyYXRlZ3kgaW4gc2l0ZXM6CjE3MjogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzoneGYtJytzbHVnLCdzY29wZSc6J3hlbmZvcm8nLCd0eXBlJzoneGVuZm9ybycsJ3NsdWcnOnNsdWcsJ3ZtaWQnOnZtaWQsJ25vZGUnOm5vZGUsJ2FwcF9yb290Jzpyb290LCdkYl9uYW1lJzpkYiwnZHVtcF9zdHJhdGVneSc6c3RyYXRlZ3ksJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnNsdWcgaW4gKCdjb2RldmlwZScsJ3pha3J1dGltJyl9KQoxNzY6ZGVmIGNob29zZV9kdWVfdGFyZ2V0KHRhcmdldHMsc3RhdGUsbm93PU5vbmUpOgoxNzk6ICAgIGZvciB0IGluIHRhcmdldHM6CjE4MjogICAgICAgIGxhc3Q9aW50KHN0YXRlLmdldCh0Wydsb2dpY2FsX2lkJ10se30pLmdldCgnbGFzdF9zdWNjZXNzX2Vwb2NoJywwKSkKMTg5OmRlZiBydW4oYXJndiwgKiwgaW5wdXQ9Tm9uZSwgdGltZW91dD0zMDAsIGNoZWNrPVRydWUsIGVudj1Ob25lKToKMTkxOiAgICAgICAgcD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSx0aW1lb3V0PXRpbWVvdXQsZW52PWVudikKMTkyOiAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfVElNRU9VVCcpCjE5MzogICAgaWYgY2hlY2sgYW5kIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfRkFJTEVEJyxzdHIocC5yZXR1cm5jb2RlKSkKMTk2OmRlZiBzdHJlYW1fcHJvY2Vzc190b19maWxlKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoxOTk6ICAgICAgICB0cnk6cD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1mLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsdGltZW91dD10aW1lb3V0KQoyMDA6ICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX1RJTUVPVVQnKQoyMDE6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjIwMzpkZWYgcGlwZV90b196c3RkKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoyMDY6ICAgICAgICBzcmM9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSBpZiBpbnB1dCBpcyBub3QgTm9uZSBlbHNlIE5vbmUsc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQoyMTQ6ICAgICAgICAgICAgc3JjLmtpbGwoKTsgc3JjLndhaXQoKTsgcmFpc2UgQmFja3VwRXJyb3IoJ1BJUEVfU09VUkNFX1RJTUVPVVQnKQoyMjA6ICAgICAgICByYWlzZSBCYWNrdXBFcnJvcignUElQRV9USU1FT1VUJykKMjIxOiAgICBpZiBzcmMucmV0dXJuY29kZSE9MCBvciB6LnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdQSVBFX0ZBSUxFRCcsZid7c3JjLnJldHVybmNvZGV9X3t6LnJldHVybmNvZGV9JykKMjM2OmRlZiBsb2FkX3RhcmdldHMoKToKMjM3OiAgICBqPWpzb24ubG9hZHMoVEFSR0VUU19QQVRILnJlYWRfdGV4dCgpKQoyMzg6ICAgIGlmIGouZ2V0KCdzY2hlbWEnKSE9MSBvciBub3QgaXNpbnN0YW5jZShqLmdldCgndGFyZ2V0cycpLGxpc3QpOiByYWlzZSBCYWNrdXBFcnJvcignVEFSR0VUX01BTklGRVNUX1NDSEVNQScpCjIzOTogICAgaWRzPVt4LmdldCgnbG9naWNhbF9pZCcpIGZvciB4IGluIGpbJ3RhcmdldHMnXV0KMjQwOiAgICBpZiBsZW4oaWRzKSE9bGVuKHNldChpZHMpKTogcmFpc2UgQmFja3VwRXJyb3IoJ1RBUkdFVF9NQU5JRkVTVF9EVVBMSUNBVEUnKQoyNDE6ICAgIHJldHVybiBqWyd0YXJnZXRzJ10KMjQzOmRlZiBsb2FkX3N0YXRlX2FsbCgpOgoyNDU6ICAgIHJvb3Q9U1RBVEVfUk9PVC8nc3RhdGUnCjI1MzpkZWYgd3JpdGVfc3RhdGUobG9naWNhbF9pZCxyZXN1bHQsKiprdyk6CjI1NDogICAgaWYgcmVzdWx0IG5vdCBpbiBSRVNVTFRfQ0xBU1NFUzogcmFpc2UgQmFja3VwRXJyb3IoJ1JFU1VMVF9DTEFTU19JTlZBTElEJykKMjU3OiAgICBhdG9taWNfd3JpdGUoU1RBVEVfUk9PVC8nc3RhdGUnLyhsb2dpY2FsX2lkKycuanNvbicpLGNhbm9uaWNhbF9qc29uKGopK2InXG4nLDBvNjAwKQoyNjA6ZGVmIHJjbG9uZV9iYXNlX2FyZ3MoKToKMjYxOiAgICByZXR1cm4gW1JDTE9ORV0KMjYzOmRlZiByY2xvbmVfYWJvdXQocmVtb3RlKToKMjY0OiAgICBwPXJ1bihyY2xvbmVfYmFzZV9hcmdzKCkrWydhYm91dCcscmVtb3RlKyc6JywnLS1qc29uJywnLS1jb250aW1lb3V0JywnMTVzJywnLS10aW1lb3V0JywnNDVzJ10sdGltZW91dD02MCkKMjY2OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0FCT1VUX0pTT04nKQoyNjg6ICAgIGlmIG5vdCBpc2luc3RhbmNlKGZyZWUsaW50KTogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9GUkVFX1VOS05PV04nKQoyNzM6ICAgIGZvciBjcnlwdCxwaHlzaWNhbCBpbiBSRU1PVEVTOgoyNzQ6ICAgICAgICB0cnk6IGZyZWU9cmNsb25lX2Fib3V0KGNyeXB0KQoyNzU6ICAgICAgICBleGNlcHQgQmFja3VwRXJyb3I6IGJhZCs9MTsgY29udGludWUKMjgwOmRlZiByZW1vdGVfZXhpc3RzX2FueShzY29wZSxsb2dpY2FsX2lkLGdlbmVyYXRpb24pOgoyODE6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbikKMjgyOiAgICBmb3IgY3J5cHQsX3BoeXNpY2FsIGluIFJFTU9URVM6CjI4MzogICAgICAgIHA9cnVuKHJjbG9uZV9iYXNlX2FyZ3MoKStbJ2xzZicsY3J5cHQrJzonK3JlbCwnLS1tYXgtZGVwdGgnLCcxJ10sdGltZW91dD00NSxjaGVjaz1GYWxzZSkKMjg3OmRlZiByY2xvbmVfcmNhdChyZW1vdGVfcGF0aCwgc291cmNlX3BhdGg9Tm9uZSwgb2Zmc2V0PTAsIGxlbmd0aD1Ob25lLCBkYXRhPU5vbmUsIHRpbWVvdXQ9MzYwMCk6CjI4ODogICAgYXJndj1yY2xvbmVfYmFzZV9hcmdzKCkrWydyY2F0JyxyZW1vdGVfcGF0aCwnLS1yZXRyaWVzJywnMycsJy0tbG93LWxldmVsLXJldHJpZXMnLCc1JywnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNW0nXQoyODk6ICAgIHA9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSxzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCjI5OTogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBiOiByYWlzZSBCYWNrdXBFcnJvcignVVBMT0FEX0xPQ0FMX1NIT1JUX1JFQUQnKQozMDc6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9SQ0FUX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjMwOTpkZWYgcmNsb25lX2NhdF9oYXNoKHJlbW90ZV9wYXRoLCBleHBlY3RlZF9ieXRlcz1Ob25lLCB0aW1lb3V0PTM2MDApOgozMTE6ICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihyY2xvbmVfYmFzZV9hcmdzKCkrWydjYXQnLHJlbW90ZV9wYXRoLCctLWNvbnRpbWVvdXQnLCcyMHMnLCctLXRpbWVvdXQnLCc1bSddLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkgYXMgcDoKMzE0OiAgICAgICAgICAgICAgICBwLmtpbGwoKTsgcC53YWl0KCk7IHJhaXNlIEJhY2t1cEVycm9yKCdSQ0xPTkVfQ0FUX1RJTUVPVVQnKQozMTk6ICAgIGlmIHJjIT0wOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9GQUlMRUQnLHN0cihyYykpCjMyMDogICAgaWYgZXhwZWN0ZWRfYnl0ZXMgaXMgbm90IE5vbmUgYW5kIG4hPWV4cGVjdGVkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9TSVpFX01JU01BVENIJykKMzIzOmRlZiByY2xvbmVfY2F0X2J5dGVzKHJlbW90ZV9wYXRoLG1heF9ieXRlcz00KjEwMjQqMTAyNCk6CjMyNDogICAgcD1ydW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxyZW1vdGVfcGF0aCwnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNjBzJ10sdGltZW91dD05MCkKMzI1OiAgICBpZiBsZW4ocC5zdGRvdXQpPm1heF9ieXRlczogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9TTUFMTF9PQkpFQ1RfVE9PX0xBUkdFJykKMzI4OmRlZiBnZW5lcmF0aW9uX2lkKGxvZ2ljYWxfaWQpOgozMzI6ZGVmIHVwbG9hZF9hbmRfc2VhbCh0LHBheWxvYWRfcGF0aCxzb3VyY2VfbWV0YSk6CjMzNTogICAgZ2VuPXNvdXJjZV9tZXRhWydnZW5lcmF0aW9uJ107IHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHRbJ3Njb3BlJ10sdFsnbG9naWNhbF9pZCddLGdlbikKMzM2OiAgICBpZiByZW1vdGVfZXhpc3RzX2FueSh0WydzY29wZSddLHRbJ2xvZ2ljYWxfaWQnXSxnZW4pOiByYWlzZSBCYWNrdXBFcnJvcignR0VORVJBVElPTl9DT0xMSVNJT04nKQozMzk6ICAgIG1hbmlmZXN0PW1ha2VfbWFuaWZlc3QodFsnc2NvcGUnXSx0Wydsb2dpY2FsX2lkJ10sZ2VuLG4scHNoYSxwYXJ0cyxyZXBzLHNvdXJjZV9tZXRhKQozNDA6ICAgIG1iPWNhbm9uaWNhbF9qc29uKG1hbmlmZXN0KStiJ1xuJzsgbXNoYT1zaGEyNTZfYnl0ZXMobWIpCjM0NTogICAgICAgICAgICByY2xvbmVfcmNhdChycCxzb3VyY2VfcGF0aD1wYXlsb2FkX3BhdGgsb2Zmc2V0PXBhcnRbJ29mZnNldCddLGxlbmd0aD1wYXJ0WydieXRlcyddKQozNDY6ICAgICAgICAgICAgZ290LGdvdG49cmNsb25lX2NhdF9oYXNoKHJwLHBhcnRbJ2J5dGVzJ10pCjM0NzogICAgICAgICAgICBpZiBnb3QhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUEFSVF9SRUFEQkFDS19TSEFfTUlTTUFUQ0gnKQozNDg6ICAgICAgICByY2xvbmVfcmNhdChiYXNlKycvbWFuaWZlc3QuanNvbicsZGF0YT1tYikKMzQ5OiAgICAgICAgaWYgcmNsb25lX2NhdF9ieXRlcyhiYXNlKycvbWFuaWZlc3QuanNvbicpIT1tYjogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1JFQURCQUNLX01JU01BVENIJykKMzUwOiAgICBzZWFsPXsnc2NoZW1hJzoxLCdnZW5lcmF0aW9uJzpnZW4sJ2xvZ2ljYWxfaWQnOnRbJ2xvZ2ljYWxfaWQnXSwnbWFuaWZlc3Rfc2hhMjU2Jzptc2hhLCdwYXlsb2FkX3NoYTI1Nic6cHNoYSwnc3RhdHVzJzonU0VBTEVEJywnc2VhbGVkX2F0X3V0Yyc6dXRjbm93KCl9CjM1MTogICAgc2I9Y2Fub25pY2FsX2pzb24oc2VhbCkrYidcbicKMzU0OiAgICAgICAgcmNsb25lX3JjYXQoYmFzZSsnL1NFQUxFRC5qc29uJyxkYXRhPXNiKQozNTU6ICAgICAgICBpZiByY2xvbmVfY2F0X2J5dGVzKGJhc2UrJy9TRUFMRUQuanNvbicpIT1zYjogcmFpc2UgQmFja3VwRXJyb3IoJ1NFQUxfUkVBREJBQ0tfTUlTTUFUQ0gnKQozNTY6ICAgIHJldHVybiBtYW5pZmVzdCxtc2hhLHsndW5oZWFsdGh5JzpiYWQsJ2hlYWx0aHknOmhlYWx0aHl9CjM1ODpkZWYgcmVjb25zdHJ1Y3RfcmVwbGljYShtYW5pZmVzdCxyZXAsb3V0X3BhdGgpOgozNTk6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKG1hbmlmZXN0WydzY29wZSddLG1hbmlmZXN0Wydsb2dpY2FsX2lkJ10sbWFuaWZlc3RbJ2dlbmVyYXRpb24nXSkKMzYzOiAgICAgICAgZm9yIHBhcnQgaW4gbWFuaWZlc3RbJ3BhcnRzJ106CjM2NTogICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxiYXNlKycvcGFydHMvJytwYXJ0WyduYW1lJ10sJy0tY29udGltZW91dCcsJzIwcycsJy0tdGltZW91dCcsJzVtJ10sc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKSBhcyBwOgozNzE6ICAgICAgICAgICAgaWYgcmMhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9DQVRfRkFJTEVEJykKMzcyOiAgICAgICAgICAgIGlmIG4hPXBhcnRbJ2J5dGVzJ10gb3IgcGguaGV4ZGlnZXN0KCkhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUkVDT05TVFJVQ1RfUEFSVF9NSVNNQVRDSCcpCjM3MzogICAgaWYgdG90YWwhPW1hbmlmZXN0WydwYXlsb2FkX2J5dGVzJ10gb3IgaC5oZXhkaWdlc3QoKSE9bWFuaWZlc3RbJ3BheWxvYWRfc2hhMjU2J106IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9QQVlMT0FEX01JU01BVENIJykKMzgyOiAgICBpZiByMSE9MCBvciBwMi5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9MSVNUX0ZBSUxFRCcpCjM4NDogICAgaWYgbm90IG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9FTVBUWScpCjM4NTogICAgaWYgcmVxdWlyZWRfbWVtYmVyIGFuZCByZXF1aXJlZF9tZW1iZXIgbm90IGluIG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignUkVRVUlSRURfTUVNQkVSX01JU1NJTkcnKQozOTQ6ICAgICAgICAgICAgIyBHcmVlbiBzZXQgaXMgaW50ZW50aW9uYWxseSBDVC1vbmx5LiBTY2hlZHVsZWQgUUVNVSBiYWNrdXBzIHN0aWxsIGdldCBkdWFsIHJlbW90ZSBieXRlIHJlYWRiYWNrLgo0MDI6ICAgICAgICBpZiBwMi5yZXR1cm5jb2RlIT0wIG9yIGxlbihkYXRhKTwxMjg6IHJhaXNlIEJhY2t1cEVycm9yKCdYRU5GT1JPX0RCX0RVTVBfSU5WQUxJRCcpCjQwMzogICAgZWxzZTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZBTElEQVRPUl9VTktOT1dOX1RZUEUnKQo0MDg6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfSU5WRU5UT1JZX0pTT04nKQo0MTA6ZGVmIHNzaF9yZW1vdGUobm9kZSxhcmd2LGlucHV0PU5vbmUsdGltZW91dD0xODAwLGNoZWNrPVRydWUpOgo0MTE6ICAgIGNtZD0nUEFUSD0vdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjsgZXhwb3J0IFBBVEg7IGV4ZWMgJytzaGxleC5qb2luKFtzdHIoeCkgZm9yIHggaW4gYXJndl0pCjQxMjogICAgaWYgbm9kZT09J3B2ZTAxJzogcmV0dXJuIHJ1bihbc3RyKHgpIGZvciB4IGluIGFyZ3ZdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNDE4OiAgICByYWlzZSBCYWNrdXBFcnJvcignUFZFX0dVRVNUX1RZUEVfRFJJRlQnKQo0MjE6ICAgIGlmIG5vdCBwYXRoLmlzX2ZpbGUoKSBvciBwYXRoLmlzX3N5bWxpbmsoKSBvciBzaGEyNTZfZmlsZShwYXRoKSE9ZXhwZWN0ZWQ6IHJhaXNlIEJhY2t1cEVycm9yKGNvZGUpCjQzMTogICAgaWYgcC5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignSElTVE9SSUNBTF9HUkFQSF9JTVBPUlRfRkFJTEVEJyxmJ3JjX3twLnJldHVybmNvZGV9X3N0ZGVycl9zaGEyNTZfe2hhc2hsaWIuc2hhMjU2KHAuc3RkZXJyKS5oZXhkaWdlc3QoKX0nKQo0MzM6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9KU09OJykKNDM2OiAgICAgICAgaWYgc3RyKHBhdGhsaWIuUGF0aChvdXQuZ2V0KGssJycpKS5yZXNvbHZlKCkpIT1zdHIocGF0aGxpYi5QYXRoKHYpLnJlc29sdmUoKSk6IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9QQVRIJyxrKQo0Mzk6ZGVmIF9pc29sYXRlZF9ndWVzdDI2Nl9kdW1wX2FyZ3Yoam9iLHZ6ZHVtcCxzY3JhdGNoLG5vdyk6CjQ0MDogICAgZW52PV9oaXN0b3JpY2FsX2dyYXBoX2VudigpO3JlcT17J2pvYic6am9iLCd2emR1bXAnOnN0cih2emR1bXApLCdzY3JhdGNoJzpzdHIoc2NyYXRjaCksJ25vdyc6aW50KG5vdyl9CjQ0MTogICAgcD1zdWJwcm9jZXNzLnJ1bihbc3lzLmV4ZWN1dGFibGUsJy1CJywnLWMnLF9ISVNUT1JJQ0FMX0hFTFBFUiwnZHVtcF9hcmd2JyxzdHIoR1VFU1QyNjYpXSxpbnB1dD1jYW5vbmljYWxfanNvbihyZXEpLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSxlbnY9ZW52LGN3ZD0nLycsdGltZW91dD0zMCkKNDQyOiAgICBpZiBwLnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdHVUVTVDI2Nl9TVUJQUk9DRVNTX0ZBSUxFRCcsZidyY197cC5yZXR1cm5jb2RlfV9zdGRlcnJfc2hhMjU2X3toYXNobGliLnNoYTI1NihwLnN0ZGVycikuaGV4ZGlnZXN0KCl9JykKNDQ0OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignR1VFU1QyNjZfU1VCUFJPQ0VTU19KU09OJykKNDQ5OiAgICByZXR1cm4geyd2bWlkJzppbnQodFsndm1pZCddKSwnaWQnOmludCh0Wyd2bWlkJ10pLCd0eXBlJzonbHhjJywna2luZCc6J2x4YycsJ2d1ZXN0X3R5cGUnOidseGMnLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpLCduYW1lJzpyb3cuZ2V0KCduYW1lJywnJyksCjQ1MzogICAgICAgICAgICAnYmxvY2tlcnMnOltdLCdkaXNrcyc6W10sJ3RlbXBsYXRlJzpib29sKHJvdy5nZXQoJ3RlbXBsYXRlJywwKSksJ2hvb2tzY3JpcHRfcHJlc2VudCc6RmFsc2UsJ2xvY2tfcHJlc2VudCc6RmFsc2UsCjQ1NDogICAgICAgICAgICAnc25hcHNob3RfaGlzdG9yeV9pbmNsdWRlZCc6RmFsc2UsJ3VudXNlZF92b2x1bWVfY291bnQnOjAsJ2Nkcm9tX2NvdW50JzowLCdjZHJvbV9tZWRpYV9pbmNsdWRlZCc6RmFsc2UsJ2d1ZXN0X3Jlc3RvcmVfdmVyaWZpZWQnOkZhbHNlLAo0NTc6ZGVmIHByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCk6CjQ1ODogICAgam9iPV9seGNfam9iKHQscm93LG5vZGUpOyB2emR1bXA9c2h1dGlsLndoaWNoKCd2emR1bXAnKSBvciAnL3Vzci9iaW4vdnpkdW1wJwo0NTk6ICAgIHRyeTogYXJndj1faXNvbGF0ZWRfZ3Vlc3QyNjZfZHVtcF9hcmd2KGpvYix2emR1bXAscGF0aGxpYi5QYXRoKHNjcmF0Y2gpLGludCh0aW1lLnRpbWUoKSkpCjQ2MDogICAgZXhjZXB0IEJhY2t1cEVycm9yOiByYWlzZQo0NjE6ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTogcmFpc2UgQmFja3VwRXJyb3IoJ1BST1ZFTl9EVU1QX0FSR1ZfRkFJTEVEJyx0eXBlKGUpLl9fbmFtZV9fKQo0NjI6ICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3YsKGxpc3QsdHVwbGUpKSBvciBub3QgYXJndiBvciBub3QgYWxsKGlzaW5zdGFuY2UoeCxzdHIpIGZvciB4IGluIGFyZ3YpOiByYWlzZSBCYWNrdXBFcnJvcignUFJPVkVOX0RVTVBfQVJHVl9TSEFQRScpCjQ2MzogICAgYXJndj1saXN0KGFyZ3YpCjQ2NDogICAgaWYgcGF0aGxpYi5QYXRoKGFyZ3ZbMF0pLm5hbWUhPSd2emR1bXAnIG9yIHN0cihpbnQodFsndm1pZCddKSkgbm90IGluIGFyZ3Y6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX1RBUkdFVCcpCjQ2NTogICAgaWYgJy0tZHVtcGRpcicgaW4gYXJndiBvciBhbnkoeC5zdGFydHN3aXRoKCctLWR1bXBkaXI9JykgZm9yIHggaW4gYXJndik6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX1VORVhQRUNURURfRFVNUERJUicpCjQ2NjogICAgaWYgbm90IGFueSh4PT0nLS1zdGRvdXQnIG9yIHguc3RhcnRzd2l0aCgnLS1zdGRvdXQ9JykgZm9yIHggaW4gYXJndik6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX05PX1NURE9VVCcpCjQ2NzogICAgaWYgc3RyKHNjcmF0Y2gpIG5vdCBpbiBhcmd2IGFuZCBub3QgYW55KHg9PSctLXRtcGRpcj0nK3N0cihzY3JhdGNoKSBmb3IgeCBpbiBhcmd2KTogcmFpc2UgQmFja3VwRXJyb3IoJ1BST1ZFTl9EVU1QX0FSR1ZfTk9fU0NSQVRDSCcpCjQ2ODogICAgIyBBY2NlcHRlZCAyNzAvMjgyIGltcGxlbWVudGF0aW9uIHBhc3NlZCBtYXBwZWQgc2NyYXRjaCB0byB2emR1bXAgYXMgdG1wZGlyLgo0Njk6ICAgIGlmICctLXRtcGRpcicgaW4gYXJndjoKNDcwOiAgICAgICAgaT1hcmd2LmluZGV4KCctLXRtcGRpcicpCjQ3MTogICAgICAgIGlmIGkrMT49bGVuKGFyZ3YpIG9yIGFyZ3ZbaSsxXSE9c3RyKHNjcmF0Y2gpOiByYWlzZSBCYWNrdXBFcnJvcignUFJPVkVOX0RVTVBfQVJHVl9UTVBESVJfQklORElORycpCjQ3MjogICAgZWxpZiAnLS10bXBkaXI9JytzdHIoc2NyYXRjaCkgbm90IGluIGFyZ3Y6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX05PX1RNUERJUicpCjQ3MzogICAgcmV0dXJuIGFyZ3Ysam9iCjQ3NTpkZWYgX2RlZmF1bHRfdW5wcml2aWxlZ2VkX2x4Yyhub2RlLHZtaWQpOgo0NzY6ICAgIHE9c3NoX3JlbW90ZShub2RlLFsncGN0JywnY29uZmlnJyxzdHIodm1pZCldLHRpbWVvdXQ9MzApCjQ3ODogICAgaWYgJ3VucHJpdmlsZWdlZDogMScgbm90IGluIGxpbmVzOiByYWlzZSBCYWNrdXBFcnJvcignTFhDX05PVF9VTlBSSVZJTEVHRUQnKQo0Nzk6ICAgIGlmIGFueSh4LnN0YXJ0c3dpdGgoJ2x4Yy5pZG1hcDonKSBvciB4LnN0YXJ0c3dpdGgoJ2x4Yy5pZG1hcCA9JykgZm9yIHggaW4gbGluZXMpOiByYWlzZSBCYWNrdXBFcnJvcignTFhDX0NVU1RPTV9JRE1BUF9VTlNVUFBPUlRFRCcpCjQ4NDogICAgcT1zc2hfcmVtb3RlKG5vZGUscG9zLHRpbWVvdXQ9MzAsY2hlY2s9RmFsc2UpCjQ4NTogICAgaWYgcS5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignTUFQUEVEX1VJRF9BQ0NFU1NfUFJPQkVfRkFJTEVEJykKNDg3OmRlZiBfc3RyZWFtX2FyZ3ZfdG9fbG9jYWwobm9kZSxhcmd2LGRlc3QsdGltZW91dD03MjAwKToKNDg5OiAgICBpZiBub2RlPT0ncHZlMDEnOiBjbWQ9YXJndgo0OTE6ICAgICAgICByZW1vdGU9J1BBVEg9L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW47IGV4cG9ydCBQQVRIOyBleGVjICcrc2hsZXguam9pbihhcmd2KQo0OTI6ICAgICAgICBjbWQ9W1NTSCwnLW8nLCdCYXRjaE1vZGU9eWVzJywnLW8nLCdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9eWVzJywncm9vdEAnK25vZGUscmVtb3RlXQo0OTg6ICAgICAgICAgICAgcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9TVFJFQU1fVElNRU9VVCcpCjUwMjogICAgICAgIHJhaXNlIEJhY2t1cEVycm9yKCdDT01NQU5EX0ZBSUxFRCcsZid2emR1bXBfcmNfe3AucmV0dXJuY29kZX1fc3RkZXJyX3NoYTI1Nl97aGFzaGxpYi5zaGEyNTYocC5zdGRlcnIpLmhleGRpZ2VzdCgpfScpCjUwMzogICAgaWYgbm90IGRlc3QuaXNfZmlsZSgpIG9yIGRlc3Quc3RhdCgpLnN0X3NpemU8PTA6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfUEFZTE9BRF9NSVNTSU5HJykKNTA2OiAgICB2bWlkPWludCh0Wyd2bWlkJ10pOyByb3dzPVtyIGZvciByIGluIGNsdXN0ZXJfaW52ZW50b3J5KCkgaWYgaW50KHIuZ2V0KCd2bWlkJywtMSkpPT12bWlkXQo1MDc6ICAgIGlmIGxlbihyb3dzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRV9HVUVTVF9OT1RfVU5JUVVFJykKNTA5OiAgICBpZiB0eXAhPXRbJ2d1ZXN0X3R5cGUnXTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRV9HVUVTVF9UWVBFX0RSSUZUJykKNTEyOiAgICAgICAgX2RlZmF1bHRfdW5wcml2aWxlZ2VkX2x4Yyhub2RlLHZtaWQpCjUxMzogICAgICAgIHNjcmF0Y2g9ZicvdmFyL3RtcC9ob21lbGFiLXZ6ZHVtcC12Mi17Z2VufScKNTE0OiAgICAgICAgc3NoX3JlbW90ZShub2RlLFsnaW5zdGFsbCcsJy1kJywnLW0nLCc3MTAnLCctbycsJzAnLCctZycsJzEwMDAwMCcsc2NyYXRjaF0sdGltZW91dD0zMCkKNTE1OiAgICAgICAgcT1zc2hfcmVtb3RlKG5vZGUsWydzdGF0JywnLWMnLCclYToldTolZycsc2NyYXRjaF0sdGltZW91dD0zMCkKNTE2OiAgICAgICAgaWYgcS5zdGRvdXQuZGVjb2RlKCkuc3RyaXAoKSE9JzcxMDowOjEwMDAwMCc6IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfTUFQUEVEX1NDUkFUQ0hfQUNDRVNTX0NPTlRSQUNUJykKNTE5OiAgICAgICAgICAgIGFyZ3Ysam9iPXByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCkKNTIxOiAgICAgICAgICAgIF9zdHJlYW1fYXJndl90b19sb2NhbChub2RlLGFyZ3YsbG9jYWwsdGltZW91dD03MjAwKQo1MjI6ICAgICAgICAgICAgaWYgbG9jYWwuc3RhdCgpLnN0X3NpemU+aW50KGpvYlsnYXJjaGl2ZV9jYXBfYnl0ZXMnXSk6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfQVJDSElWRV9DQVBfRVhDRUVERUQnKQo1MjQ6ICAgICAgICAgICAgc3NoX3JlbW90ZShub2RlLFsncm0nLCctcmYnLCctLScsc2NyYXRjaF0sdGltZW91dD02MCxjaGVjaz1GYWxzZSk7cmFpc2UKNTI2OiAgICAgICAgcmV0dXJuIGxvY2FsLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ25vZGUnOm5vZGUsJ3N0YXR1cyc6cm93LmdldCgnc3RhdHVzJyksJ3Byb2R1Y2VyX2NvbnRyYWN0JzoncHJvdmVuLTI3MC0yODItc3RyZWFtJ30sY2xlYW51cAo1Mjc6ICAgICMgUUVNVSBwYXRoIHJlbWFpbnMgdW5jaGFuZ2VkOiBib3VuZGVkIGRlZGljYXRlZCBkdW1wZGlyIHdpdGggbGF0ZXIgY2xvdWQgcmVhZGJhY2svcmVjb25zdHJ1Y3Rpb24uCjUyODogICAgc3JjZGlyPWYnL3Zhci90bXAvaG9tZWxhYi12emR1bXAtdjIte2dlbn0nCjUyOTogICAgc3NoX3JlbW90ZShub2RlLFsnaW5zdGFsbCcsJy1kJywnLW0nLCc3MDAnLCctbycsJzAnLCctZycsJzAnLHNyY2Rpcl0sdGltZW91dD0zMCkKNTMxOiAgICAgICAgc3NoX3JlbW90ZShub2RlLFsndnpkdW1wJyxzdHIodm1pZCksJy0tbW9kZScsJ3NuYXBzaG90JywnLS1jb21wcmVzcycsJ3pzdGQnLCctLWR1bXBkaXInLHNyY2Rpcl0sdGltZW91dD03MjAwKQo1MzI6ICAgICAgICBwPXNzaF9yZW1vdGUobm9kZSxbJ2ZpbmQnLHNyY2RpciwnLW1heGRlcHRoJywnMScsJy10eXBlJywnZicsJy1wcmludGYnLCclcFxuJ10sdGltZW91dD0zMCkKNTM0OiAgICAgICAgaWYgbGVuKGZpbGVzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9PVVRQVVRfTk9UX1VOSVFVRScpCjUzODogICAgICAgIGlmIG5vdCBwYXRobGliLlBhdGgobG9jYWwpLmlzX2ZpbGUoKSBvciBwYXRobGliLlBhdGgobG9jYWwpLnN0YXQoKS5zdF9zaXplPD0wOiByYWlzZSBCYWNrdXBFcnJvcignVlpEVU1QX1BBWUxPQURfTUlTU0lORycpCjU0MDogICAgICAgIHNzaF9yZW1vdGUobm9kZSxbJ3JtJywnLXJmJywnLS0nLHNyY2Rpcl0sdGltZW91dD02MCxjaGVjaz1GYWxzZSk7cmFpc2UKNTQxOiAgICByZXR1cm4gcGF0aGxpYi5QYXRoKGxvY2FsKSx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzoncHZlX2d1ZXN0Jywndm1pZCc6dm1pZCwnZ3Vlc3RfdHlwZSc6dHlwLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpfSx7J2tpbmQnOidwdmVfc291cmNlX2RpcicsJ25vZGUnOm5vZGUsJ3BhdGgnOnNyY2Rpcn0KNTQ0OiAgICBpZiBub3QgT1BFUkFUT1JfS0VZLmlzX2ZpbGUoKSBvciBPUEVSQVRPUl9LRVkuaXNfc3ltbGluaygpOiByYWlzZSBCYWNrdXBFcnJvcignT1BFUkFUT1JfS0VZX01JU1NJTkcnKQo1NDg6ICAgIGlmIG5vdCBtIG9yIG0uZ3JvdXAoMSkhPU9QRVJBVE9SX0tFWV9GSU5HRVJQUklOVDogcmFpc2UgQmFja3VwRXJyb3IoJ09QRVJBVE9SX0tFWV9GSU5HRVJQUklOVF9NSVNNQVRDSCcpCjU2MjogICAgaWYgbGVuKGdvb2QpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignSE9TVEtFWV9QSU5fTUlTTUFUQ0gnKQo1NjU6ZGVmIGVuc3VyZV92cHNfa25vd25faG9zdHModGFyZ2V0cyk6CjU2NzogICAgZm9yIHQgaW4gdGFyZ2V0czoKNTcyOmRlZiB2cHNfc3NoX2FyZ3YodCwgKiwgdXNlX2FnZW50PUZhbHNlKToKNTgxOmRlZiB2cHNfcnVuKHQsIHJlbW90ZV9hcmd2LCAqLCBpbnB1dD1Ob25lLCB0aW1lb3V0PTMwMCwgdXNlX2FnZW50PUZhbHNlLCBjaGVjaz1UcnVlKToKNTgyOiAgICByZW1vdGU9c2hsZXguam9pbihbc3RyKHgpIGZvciB4IGluIHJlbW90ZV9hcmd2XSkKNTgzOiAgICByZXR1cm4gcnVuKHZwc19zc2hfYXJndih0LHVzZV9hZ2VudD11c2VfYWdlbnQpK1tyZW1vdGVdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNTg1OmRlZiBib290c3RyYXBfdnBzX2tleXModGFyZ2V0cyk6CjU4NzogICAgZW5zdXJlX3Zwc19rbm93bl9ob3N0cyh0YXJnZXRzKQo1OTA6ICAgIGZvciB0IGluIHRhcmdldHM6CjU5NTogICAgICAgIGlmIG5vdCBvcy5lbnZpcm9uLmdldCgnU1NIX0FVVEhfU09DSycpOiByYWlzZSBCYWNrdXBFcnJvcignRk9SV0FSREVEX0FHRU5UX1JFUVVJUkVEX0ZPUl9CT09UU1RSQVAnKQo1OTk6ICAgICAgICBpZiB0YWcgbm90IGluICgnQURERUQnLCdBTFJFQURZJyk6IHJhaXNlIEJhY2t1cEVycm9yKCdWUFNfQVVUSE9SSVpFRF9LRVlfQk9PVFNUUkFQX1JFU1VMVCcpCjYwMzogICAgdXM9W3ggZm9yIHggaW4gdGFyZ2V0cyBpZiB4Wyd0eXBlJ109PSd2cHNfdXMnXVswXQo2MDg6ZGVmIHJlbW90ZV9oYXNoc2V0KHQsY29tbWFuZCk6CjYxMzogICAgZmlsZXM9WydldGMvbmV0YmlyZC9pbnN0YWxsLmNvbmYnLCd2YXIvbGliL25ldGJpcmQvc3RhdGUuanNvbicsJ3Zhci9saWIvbmV0YmlyZC9zZXJ2aWNlLmpzb24nLCd2YXIvbGliL25ldGJpcmQvYWN0aXZlX3Byb2ZpbGUuanNvbicsJ3Zhci9saWIvbmV0YmlyZC9kZWZhdWx0Lmpzb24nXQo2MTU6ICAgIHByZT1yZW1vdGVfaGFzaHNldCh0LGNtZCkKNjE2OiAgICByZW1vdGU9c2hsZXguam9pbihbJ3N1ZG8nLCctbicsJ3RhcicsJy0tbnVtZXJpYy1vd25lcicsJy1DJywnLycsJy1jZicsJy0nXStmaWxlcykKNjE3OiAgICBhcmd2PXZwc19zc2hfYXJndih0LHVzZV9hZ2VudD1GYWxzZSkrW3JlbW90ZV0KNjE4OiAgICBwYXlsb2FkPXdvcmsvJ3BheWxvYWQudGFyLnpzdCc7IHBpcGVfdG9fenN0ZChhcmd2LHBheWxvYWQsdGltZW91dD02MDApCjYxOTogICAgcG9zdD1yZW1vdGVfaGFzaHNldCh0LGNtZCkKNjIwOiAgICBpZiBwcmUhPXBvc3Q6IHJhaXNlIEJhY2t1cEVycm9yKCdNRF9TT1VSQ0VfQ0hBTkdFRF9EVVJJTkdfQ0FQVFVSRScpCjYyMTogICAgcmV0dXJuIHBheWxvYWQseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3Zwc19tZCcsJ2NvbnNpc3RlbmN5JzonRklMRVNFVF9QUkVfUE9TVF9IQVNIX1NUQUJJTElUWScsJ2hhc2hzZXRfc2hhMjU2JzpwcmV9LE5vbmUKNjI1OiAgICBwcmU9cmVtb3RlX2hhc2hzZXQodCxoY21kKQo2MjY6ICAgIHJlbW90ZT1zaGxleC5qb2luKFsndGFyJywnLS1udW1lcmljLW93bmVyJywnLUMnLCcvJywnLWNmJywnLScsJ2V0Yy9uZ2lueCddKQo2Mjc6ICAgIGFyZ3Y9dnBzX3NzaF9hcmd2KHQsdXNlX2FnZW50PUZhbHNlKStbcmVtb3RlXQo2Mjg6ICAgIHBheWxvYWQ9d29yay8ncGF5bG9hZC50YXIuenN0JzsgcGlwZV90b196c3RkKGFyZ3YscGF5bG9hZCx0aW1lb3V0PTkwMCkKNjI5OiAgICBwb3N0PXJlbW90ZV9oYXNoc2V0KHQsaGNtZCkKNjMwOiAgICBpZiBwcmUhPXBvc3Q6IHJhaXNlIEJhY2t1cEVycm9yKCdTUEJfU09VUkNFX0NIQU5HRURfRFVSSU5HX0NBUFRVUkUnKQo2MzE6ICAgIHJldHVybiBwYXlsb2FkLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOid2cHNfc3BiJywnY29uc2lzdGVuY3knOidTVEFUSUNfQ09ORklHX0ZJTEVTRVRfUFJFX1BPU1RfSEFTSF9TVEFCSUxJVFknLCd0bHNfcmVjb3ZlcnknOidSRUlTU1VFX1RMU19PTl9SRVNUT1JFJywnaGFzaHNldF9zaGEyNTYnOnByZX0sTm9uZQo2MzM6VVNfUkVNT1RFX1NDUklQVD1yJycnaW1wb3J0IGlvLG9zLHNxbGl0ZTMsc3lzLHRhcmZpbGUsdGltZSxqc29uLGhhc2hsaWIKNjU2OiAgICBkc3Q9c3FsaXRlMy5jb25uZWN0KCc6bWVtb3J5OicpOyBzcmMuYmFja3VwKGRzdCkKNjU5OiAgICB0aT10YXJmaWxlLlRhckluZm8obmFtZT0oJ3NxbGl0ZS1iYWNrdXBzLycrbmFtZSkpOyB0aS5zaXplPWxlbihiKTsgdGkubW9kZT0wbzYwMDsgdGkubXRpbWU9aW50KHRpbWUudGltZSgpKTsgdGYuYWRkZmlsZSh0aSxpby5CeXRlc0lPKGIpKQo2NjM6ICAgIHJlbW90ZT1zaGxleC5qb2luKFsncHl0aG9uMycsJy1JJywnLUInLCctYycsVVNfUkVNT1RFX1NDUklQVF0pCjY2NDogICAgYXJndj12cHNfc3NoX2FyZ3YodCx1c2VfYWdlbnQ9RmFsc2UpK1tyZW1vdGVdCjY2NTogICAgcGF5bG9hZD13b3JrLydwYXlsb2FkLnRhci56c3QnOyBwaXBlX3RvX3pzdGQoYXJndixwYXlsb2FkLHRpbWVvdXQ9MTIwMCkKNjY2OiAgICByZXR1cm4gcGF5bG9hZCx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzondnBzX3VzJywnY29uc2lzdGVuY3knOidTUUxJVEVfT05MSU5FX0JBQ0tVUF9QTFVTX05PTkRCX0ZJTEVTJywnc3FsaXRlX2NvdW50Jzo0fSxOb25lCjczOTogICAgaWYgbm90IFJPVVRFUl9MRUdBQ1lfU0NSSVBULmlzX2ZpbGUoKSBvciBST1VURVJfTEVHQUNZX1NDUklQVC5pc19zeW1saW5rKCkgb3Igc2hhMjU2X2ZpbGUoUk9VVEVSX0xFR0FDWV9TQ1JJUFQpIT1ST1VURVJfTEVHQUNZX1NIQTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9MRUdBQ1lfU0NSSVBUX0lERU5USVRZJykKNzQyOiAgICBoaXRzPVtpcCBmb3IgaXAgaW4gaXBzIGlmIHNoYTI1Nl9ieXRlcyhpcC5lbmNvZGUoKSk9PVJPVVRFUl9UQVJHRVRfU0hBXQo3NDM6ICAgIGlmIGxlbihoaXRzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9UQVJHRVRfUEFSU0UnKQo3NDQ6ICAgIHRhcmdldD1oaXRzWzBdCjc1MjogICAgaWYgbGVuKHNhZmUpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignUk9VVEVSX1BBU1NGSUxFX1BBUlNFJykKNzUzOiAgICByZXR1cm4gdGFyZ2V0LHNhZmVbMF0KNzU2OiAgICByb290cz1bcGF0aGxpYi5QYXRoKCcvZXRjJykscGF0aGxpYi5QYXRoKCcvcm9vdC8uc3NoJykscGF0aGxpYi5QYXRoKCcvdmFyL2xpYi9ob21lbGFiLWJhY2t1cCcpLHBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKV0KNzcxOiAgICBpZiBsZW4odW5pcSkhPTE6IHJhaXNlIEJhY2t1cEVycm9yKCdFWEFDVF9TSEFfRklMRV9OT1RfVU5JUVVFJykKNzc5OiAgICBpZiBzaGEyNTZfYnl0ZXMoYikhPVJPVVRFUl9LTk9XTl9IT1NUU19TSEE6IHJhaXNlIEJhY2t1cEVycm9yKCdST1VURVJfS05PV05fSE9TVFNfSURFTlRJVFknKQo3ODM6ICAgIHRhcmdldCxwZj1wYXJzZV9yb3V0ZXJfbGVnYWN5KCkKNzg2OiAgICBhcmd2PVtTU0hQQVNTLCctZicsc3RyKHBmKSxTU0gsJy1wJywnMjIyMicsJy1vJywnQmF0Y2hNb2RlPW5vJywnLW8nLCdOdW1iZXJPZlBhc3N3b3JkUHJvbXB0cz0xJywnLW8nLCdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9eWVzJywnLW8nLCdVc2VyS25vd25Ib3N0c0ZpbGU9JytzdHIoUk9VVEVSX0tOT1dOX0hPU1RTKSwnLW8nLCdDb25uZWN0VGltZW91dD0xNScsJ3JvdXRlcmJhY2t1cEAnK3RhcmdldCwnc2hvdyBydW5uaW5nLWNvbmZpZyddCjc4NzogICAgcD1ydW4oYXJndix0aW1lb3V0PTYwKTsgcmV0dXJuIHAuc3Rkb3V0Cjc5ODogICAgaWYgbm90IGEgb3IgYSE9YjogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9SRUFEX05PVF9CWVRFX1NUQUJMRScpCjgwMDogICAgcmV0dXJuIHBheWxvYWQseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3JvdXRlcicsJ2NvbmZpZ19zaGEyNTYnOnNoYTI1Nl9ieXRlcyhhKSwncmVhZF9jb3VudCc6MiwncmVjb3ZlcnlfcG9saWN5JzonSU1QT1JUX1BBQ0tBR0VfT1JfU0FGRV9DTElfTk9UX0JMSU5EX0NPTkZJR19SRVBMQUNFJ30sTm9uZQo4MDI6ZGVmIHFnYV9leGVjKG5vZGUsdm1pZCxndWVzdF9hcmd2LGlucHV0X2J5dGVzPU5vbmUsdGltZW91dD02MDApOgo4MDM6ICAgIGFyZ3M9WydxbScsJ2d1ZXN0JywnZXhlYycsc3RyKHZtaWQpLCctLXN5bmNocm9ub3VzJywnMScsJy0tdGltZW91dCcsc3RyKGludCh0aW1lb3V0KSld\nPIPE_11_SCORE=4\nPIPE_11_BASENAME=legacy_engine.py\nPIPE_11_PATH_SHA256=ed37300bf21f40701d61084225758267688ee569a15a9a8f5e7e1f2d1d95a496\nPIPE_11_FILE_SHA256=b6e79f087b9f1d21dac4f77a7b46b743299bbb85bc716e80d2ea67c2e038bcd7\nPIPE_11_SCHEDULE_TARGET_COUNT=1\nPIPE_11_QEMU_EXECUTION_DIAG_COUNT=0\nPIPE_11_SELFTEST_REPLACEMENT486_COUNT=0\nPIPE_11_VZDUMP_QEMU_COUNT=0\nPIPE_11_RCLONE_COUNT=31\nPIPE_11_CLOUD_QUORUM_COUNT=0\nPIPE_11_SEAL_WRITTEN_COUNT=0\nPIPE_11_PAYLOAD_PARTS_COUNT=0\nPIPE_11_TRANSPORT_COUNT=3\nPIPE_11_RESTORE_VALIDATION_COUNT=0\nPIPE_11_SCHEDULE_RESULT_COUNT=2\nPIPE_11_RELEVANT_LINE_COUNT=346\nPIPE_11_RELEVANT_B64=NjpTVEFURV9ST09UPXBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKQo3OkNPTkZJR19ST09UPXBhdGhsaWIuUGF0aCgnL2V0Yy9ob21lbGFiLWJhY2t1cC12MicpCjg6VEFSR0VUU19QQVRIPUNPTkZJR19ST09ULyd0YXJnZXRzLmpzb24nCjk6V09SS19ST09UPXBhdGhsaWIuUGF0aCgnL21udC9zdGFnaW5nL2hvbWVsYWItYmFja3VwLXYyJykKMTA6RU5HSU5FX1BBVEg9cGF0aGxpYi5QYXRoKCcvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi1iYWNrdXAtdjInKQoxMTpSQ0xPTkU9c2h1dGlsLndoaWNoKCdyY2xvbmUnKSBvciAnL3Vzci9iaW4vcmNsb25lJwoxOTpST1VURVJfTEVHQUNZX1NDUklQVD1wYXRobGliLlBhdGgoJy91c3IvbG9jYWwvc2Jpbi9ob21lbGFiLXJvdXRlci1ydW5uaW5nLWNvbmZpZy1tYWlsLWNsb3VkJykKMjE6Uk9VVEVSX1RBUkdFVF9TSEE9JzRmOWRhMTI4MzE2NmExZTlmNGU2YmM3ZGQyNDBjNzZhZWY4NTc3MjE3N2Y3MTdmOTJhYmI2ZThlMmJiOGRlOTAnCjI1OkdVRVNUMjY2PXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jdC1iYWNrdXAtMjgycjEvZ3Vlc3QyNjYucHknKQoyNzpQMjcwPXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjcwcjEvcHZlMjcwLnB5JykKMjk6UDI4Mj1wYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvY3QtYmFja3VwLTI4MnIxL3B2ZTI4Mi5weScpCjMxOlAyNjU9cGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMS9wdmUyNjUucHknKQozNTogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxL3YyY29yZS5weScpLCdlMjg1YmY5YTU2NzhkMDdkY2JiOTAyNjFmOWY5M2U3ODI2ZmY1MjRlMDRjZmVjNzgwYmY1YTNjNGIwZGMyOWYyJyksCjM2OiAocGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMS90cmFuc3BvcnQyNjEucHknKSwnYjliOTJmOTU3YmY0NDFjYjVkMTcwMmY0ODgxODk3MzI4ZTZjMDMzOGY4YzNmNmQ0MWQyN2Q5YTM0OWIzNzY4OCcpLAozNzogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9zdHJlYW0tMjYzcjEvc3RyZWFtMjYzLnB5JyksJ2E4M2QwM2E4NmI5M2E4NTU3MTY2NTg2NTJkZDA3M2ZjYjI4MWNkMzg3ZmM2MjAwZmU0YmMyYTkyMmYzOWVhMTYnKSwKMzg6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvc3RyZWFtLTI2M3IxL25vZGVwbGFuMjYzLnB5JyksJ2RiNWMxNmVlMjRkMjVhYTE2OTQ1MzAzMzJkMzE5MGFiN2NjNWQ0ZjhlYjY5MDY3ZDAyNWUyN2FkNWM5OTUwNjAnKSwKMzk6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvbGFyZ2UtY2xvdWQtMjY0cjEvbGFyZ2UyNjQucHknKSwnNWNjNDY0MWZjMzVlNGRkNTU0NDk1YTM2MTQ2ZGE3ZGJiYjdmMTQyZDE0NTBlMDRjYzVkM2M4OTY3OGI4NDk3YScpLAo0NjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL2N0LWJhY2t1cC0yODJyMScpLAo0NzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1yZXRyeS0yNzByMScpLAo0ODogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMScpLAo0OTogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1ydW4tMjY2cjEnKSwKNTA6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjY4cjEnKSwKNTE6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9sYXJnZS1jbG91ZC0yNjRyMScpLAo1MjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3N0cmVhbS0yNjNyMScpLAo1MzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMScpLAo1NDogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3Jlc3RvcmUtMjYycjEnKSwKNTU6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxJyksCjU2OiBwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvdm0tYmFja3VwLTI4M3IxJyksCjU5Om1vZGU9c3lzLmFyZ3ZbMV0KNjU6ZWxpZiBtb2RlPT0nZHVtcF9hcmd2JzoKNjY6IHNvdXJjZT1wYXRobGliLlBhdGgoc3lzLmFyZ3ZbMl0pLnJlc29sdmUoKQo3MTogYXJndj1tb2QuZHVtcF9hcmd2KHJlcVsnam9iJ10scmVxWyd2emR1bXAnXSxwYXRobGliLlBhdGgocmVxWydzY3JhdGNoJ10pLGludChyZXFbJ25vdyddKSkKNzI6IHByaW50KGpzb24uZHVtcHMoYXJndixzZXBhcmF0b3JzPSgnLCcsJzonKSkpCjc3OlJFTU9URVM9Wwo4MjpjbGFzcyBCYWNrdXBFcnJvcihSdW50aW1lRXJyb3IpOgoxMDU6ICAgIGlmIGxlbmd0aCBpcyBub3QgTm9uZSBhbmQgbiE9bGVuZ3RoOiByYWlzZSBCYWNrdXBFcnJvcignTE9DQUxfUEFSVF9TSE9SVF9SRUFEJykKMTA5OiAgICBpZiBub3QgaXNpbnN0YW5jZShuLGludCkgb3Igbjw9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1BBWUxPQURfU0laRV9JTlZBTElEJykKMTI5OiAgICBpZiBsZW4ob3V0KSE9MjogcmFpc2UgQmFja3VwRXJyb3IoJ0FMTE9DQVRPUl9UV09fRElTVElOQ1RfQUNDT1VOVFNfVU5BVkFJTEFCTEUnKQoxMzI6ZGVmIHJlbW90ZV9nZW5lcmF0aW9uX3BhdGgoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM0OiAgICBmb3IgeCBpbiAoc2NvcGUsbG9naWNhbF9pZCxnZW5lcmF0aW9uKToKMTM1OiAgICAgICAgaWYgbm90IHNhZmUuZnVsbG1hdGNoKHgpOiByYWlzZSBCYWNrdXBFcnJvcignVU5TQUZFX0NMT1VEX0NPTVBPTkVOVCcpCjEzNjogICAgcmV0dXJuIGYnaG9tZWxhYi1iYWNrdXBzL3YyL3tzY29wZX0ve2xvZ2ljYWxfaWR9L2dlbmVyYXRpb25zL3tnZW5lcmF0aW9ufScKMTM4OmRlZiBtYWtlX21hbmlmZXN0KHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbixwYXlsb2FkX2J5dGVzLHBheWxvYWRfc2hhMjU2LHBhcnRzLHJlcGxpY2FzLHNvdXJjZV9tZXRhKToKMTM5OiAgICBpZiBsZW4ocmVwbGljYXMpIT0yIG9yIGxlbih7clsncGh5c2ljYWwnXSBmb3IgciBpbiByZXBsaWNhc30pIT0yOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUkVQTElDQV9QSFlTSUNBTF9EVVBMSUNBVEUnKQoxNDA6ICAgIGlmIG5vdCByZS5mdWxsbWF0Y2gocidbMC05YS1mXXs2NH0nLHBheWxvYWRfc2hhMjU2KTogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1BBWUxPQURfU0hBX0lOVkFMSUQnKQoxNDE6ICAgIGlmIHN1bShpbnQocFsnYnl0ZXMnXSkgZm9yIHAgaW4gcGFydHMpIT1wYXlsb2FkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignTUFOSUZFU1RfUEFSVF9UT1RBTF9NSVNNQVRDSCcpCjE0MjogICAgcmV0dXJuIHsnc2NoZW1hJzoyLCdzY29wZSc6c2NvcGUsJ2xvZ2ljYWxfaWQnOmxvZ2ljYWxfaWQsJ2dlbmVyYXRpb24nOmdlbmVyYXRpb24sJ2NyZWF0ZWRfYXRfdXRjJzp1dGNub3coKSwKMTQ5OmRlZiBkZWZhdWx0X3RhcmdldHMoKToKMTUzOiAgICBmb3Igdm1pZCx0eXAgaW4gWygxMTAsJ2x4YycpLCgxMTEsJ2x4YycpLCgxMTIsJ2x4YycpLCgxMTMsJ2x4YycpLCgxMzAsJ3FlbXUnKSwoMTUwLCdxZW11JyksKDE2MCwncWVtdScpLCgxNzAsJ3FlbXUnKSwoMTcxLCdxZW11JyksKDE5MCwncWVtdScpLCgyMTAsJ3FlbXUnKSwoMjExLCdxZW11JyksKDkxMzAsJ3FlbXUnKV06CjE1NDogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzooJ2N0JyBpZiB0eXA9PSdseGMnIGVsc2UgJ3ZtJykrc3RyKHZtaWQpLCdzY29wZSc6J3B2ZScsJ3R5cGUnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnZtaWQ9PTExMn0pCjE2ODogICAgICAoJ2dhbWV2aXBlJywxNjAsJ3B2ZTAyJywnL3Zhci93d3cvZm9ydW1zL2dhbWV2aXBlL3B1YmxpYycsJ3hmX2dhbWV2aXBlJywnZ2xvYmFsX3JlYWRfbG9jaycpLAoxNjk6ICAgICAgKCdoa21vZHMnLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvaGttb2RzL3B1YmxpYycsJ3hmX2hrbW9kcycsJ2dsb2JhbF9yZWFkX2xvY2snKSwKMTcwOiAgICAgICgnemFrcnV0aW0nLDE2MCwncHZlMDInLCcvdmFyL3d3dy9mb3J1bXMvemFrcnV0aW0vcHVibGljJywneGZfemFrcnV0aW0nLCdnbG9iYWxfcmVhZF9sb2NrJyldCjE3MTogICAgZm9yIHNsdWcsdm1pZCxub2RlLHJvb3QsZGIsc3RyYXRlZ3kgaW4gc2l0ZXM6CjE3MjogICAgICAgIG91dC5hcHBlbmQoeydsb2dpY2FsX2lkJzoneGYtJytzbHVnLCdzY29wZSc6J3hlbmZvcm8nLCd0eXBlJzoneGVuZm9ybycsJ3NsdWcnOnNsdWcsJ3ZtaWQnOnZtaWQsJ25vZGUnOm5vZGUsJ2FwcF9yb290Jzpyb290LCdkYl9uYW1lJzpkYiwnZHVtcF9zdHJhdGVneSc6c3RyYXRlZ3ksJ2R1ZV9zZWNvbmRzJzpkLCdlbmFibGVkJzpUcnVlLCdncmVlbjEnOnNsdWcgaW4gKCdjb2RldmlwZScsJ3pha3J1dGltJyl9KQoxNzY6ZGVmIGNob29zZV9kdWVfdGFyZ2V0KHRhcmdldHMsc3RhdGUsbm93PU5vbmUpOgoxNzk6ICAgIGZvciB0IGluIHRhcmdldHM6CjE4MjogICAgICAgIGxhc3Q9aW50KHN0YXRlLmdldCh0Wydsb2dpY2FsX2lkJ10se30pLmdldCgnbGFzdF9zdWNjZXNzX2Vwb2NoJywwKSkKMTg5OmRlZiBydW4oYXJndiwgKiwgaW5wdXQ9Tm9uZSwgdGltZW91dD0zMDAsIGNoZWNrPVRydWUsIGVudj1Ob25lKToKMTkxOiAgICAgICAgcD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSx0aW1lb3V0PXRpbWVvdXQsZW52PWVudikKMTkyOiAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfVElNRU9VVCcpCjE5MzogICAgaWYgY2hlY2sgYW5kIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ0NPTU1BTkRfRkFJTEVEJyxzdHIocC5yZXR1cm5jb2RlKSkKMTk2OmRlZiBzdHJlYW1fcHJvY2Vzc190b19maWxlKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoxOTk6ICAgICAgICB0cnk6cD1zdWJwcm9jZXNzLnJ1bihhcmd2LGlucHV0PWlucHV0LHN0ZG91dD1mLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsdGltZW91dD10aW1lb3V0KQoyMDA6ICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX1RJTUVPVVQnKQoyMDE6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1NUUkVBTV9DT01NQU5EX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjIwMzpkZWYgcGlwZV90b196c3RkKGFyZ3Ysb3V0X3BhdGgsdGltZW91dD0xODAwLGlucHV0PU5vbmUpOgoyMDY6ICAgICAgICBzcmM9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSBpZiBpbnB1dCBpcyBub3QgTm9uZSBlbHNlIE5vbmUsc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQoyMTQ6ICAgICAgICAgICAgc3JjLmtpbGwoKTsgc3JjLndhaXQoKTsgcmFpc2UgQmFja3VwRXJyb3IoJ1BJUEVfU09VUkNFX1RJTUVPVVQnKQoyMjA6ICAgICAgICByYWlzZSBCYWNrdXBFcnJvcignUElQRV9USU1FT1VUJykKMjIxOiAgICBpZiBzcmMucmV0dXJuY29kZSE9MCBvciB6LnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdQSVBFX0ZBSUxFRCcsZid7c3JjLnJldHVybmNvZGV9X3t6LnJldHVybmNvZGV9JykKMjM2OmRlZiBsb2FkX3RhcmdldHMoKToKMjM3OiAgICBqPWpzb24ubG9hZHMoVEFSR0VUU19QQVRILnJlYWRfdGV4dCgpKQoyMzg6ICAgIGlmIGouZ2V0KCdzY2hlbWEnKSE9MSBvciBub3QgaXNpbnN0YW5jZShqLmdldCgndGFyZ2V0cycpLGxpc3QpOiByYWlzZSBCYWNrdXBFcnJvcignVEFSR0VUX01BTklGRVNUX1NDSEVNQScpCjIzOTogICAgaWRzPVt4LmdldCgnbG9naWNhbF9pZCcpIGZvciB4IGluIGpbJ3RhcmdldHMnXV0KMjQwOiAgICBpZiBsZW4oaWRzKSE9bGVuKHNldChpZHMpKTogcmFpc2UgQmFja3VwRXJyb3IoJ1RBUkdFVF9NQU5JRkVTVF9EVVBMSUNBVEUnKQoyNDE6ICAgIHJldHVybiBqWyd0YXJnZXRzJ10KMjQzOmRlZiBsb2FkX3N0YXRlX2FsbCgpOgoyNDU6ICAgIHJvb3Q9U1RBVEVfUk9PVC8nc3RhdGUnCjI1MzpkZWYgd3JpdGVfc3RhdGUobG9naWNhbF9pZCxyZXN1bHQsKiprdyk6CjI1NDogICAgaWYgcmVzdWx0IG5vdCBpbiBSRVNVTFRfQ0xBU1NFUzogcmFpc2UgQmFja3VwRXJyb3IoJ1JFU1VMVF9DTEFTU19JTlZBTElEJykKMjU3OiAgICBhdG9taWNfd3JpdGUoU1RBVEVfUk9PVC8nc3RhdGUnLyhsb2dpY2FsX2lkKycuanNvbicpLGNhbm9uaWNhbF9qc29uKGopK2InXG4nLDBvNjAwKQoyNjA6ZGVmIHJjbG9uZV9iYXNlX2FyZ3MoKToKMjYxOiAgICByZXR1cm4gW1JDTE9ORV0KMjYzOmRlZiByY2xvbmVfYWJvdXQocmVtb3RlKToKMjY0OiAgICBwPXJ1bihyY2xvbmVfYmFzZV9hcmdzKCkrWydhYm91dCcscmVtb3RlKyc6JywnLS1qc29uJywnLS1jb250aW1lb3V0JywnMTVzJywnLS10aW1lb3V0JywnNDVzJ10sdGltZW91dD02MCkKMjY2OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0FCT1VUX0pTT04nKQoyNjg6ICAgIGlmIG5vdCBpc2luc3RhbmNlKGZyZWUsaW50KTogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9GUkVFX1VOS05PV04nKQoyNzM6ICAgIGZvciBjcnlwdCxwaHlzaWNhbCBpbiBSRU1PVEVTOgoyNzQ6ICAgICAgICB0cnk6IGZyZWU9cmNsb25lX2Fib3V0KGNyeXB0KQoyNzU6ICAgICAgICBleGNlcHQgQmFja3VwRXJyb3I6IGJhZCs9MTsgY29udGludWUKMjgwOmRlZiByZW1vdGVfZXhpc3RzX2FueShzY29wZSxsb2dpY2FsX2lkLGdlbmVyYXRpb24pOgoyODE6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHNjb3BlLGxvZ2ljYWxfaWQsZ2VuZXJhdGlvbikKMjgyOiAgICBmb3IgY3J5cHQsX3BoeXNpY2FsIGluIFJFTU9URVM6CjI4MzogICAgICAgIHA9cnVuKHJjbG9uZV9iYXNlX2FyZ3MoKStbJ2xzZicsY3J5cHQrJzonK3JlbCwnLS1tYXgtZGVwdGgnLCcxJ10sdGltZW91dD00NSxjaGVjaz1GYWxzZSkKMjg3OmRlZiByY2xvbmVfcmNhdChyZW1vdGVfcGF0aCwgc291cmNlX3BhdGg9Tm9uZSwgb2Zmc2V0PTAsIGxlbmd0aD1Ob25lLCBkYXRhPU5vbmUsIHRpbWVvdXQ9MzYwMCk6CjI4ODogICAgYXJndj1yY2xvbmVfYmFzZV9hcmdzKCkrWydyY2F0JyxyZW1vdGVfcGF0aCwnLS1yZXRyaWVzJywnMycsJy0tbG93LWxldmVsLXJldHJpZXMnLCc1JywnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNW0nXQoyODk6ICAgIHA9c3VicHJvY2Vzcy5Qb3Blbihhcmd2LHN0ZGluPXN1YnByb2Nlc3MuUElQRSxzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCjI5OTogICAgICAgICAgICAgICAgICAgIGlmIG5vdCBiOiByYWlzZSBCYWNrdXBFcnJvcignVVBMT0FEX0xPQ0FMX1NIT1JUX1JFQUQnKQozMDc6ICAgIGlmIHAucmV0dXJuY29kZSE9MDogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9SQ0FUX0ZBSUxFRCcsc3RyKHAucmV0dXJuY29kZSkpCjMwOTpkZWYgcmNsb25lX2NhdF9oYXNoKHJlbW90ZV9wYXRoLCBleHBlY3RlZF9ieXRlcz1Ob25lLCB0aW1lb3V0PTM2MDApOgozMTE6ICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihyY2xvbmVfYmFzZV9hcmdzKCkrWydjYXQnLHJlbW90ZV9wYXRoLCctLWNvbnRpbWVvdXQnLCcyMHMnLCctLXRpbWVvdXQnLCc1bSddLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkgYXMgcDoKMzE0OiAgICAgICAgICAgICAgICBwLmtpbGwoKTsgcC53YWl0KCk7IHJhaXNlIEJhY2t1cEVycm9yKCdSQ0xPTkVfQ0FUX1RJTUVPVVQnKQozMTk6ICAgIGlmIHJjIT0wOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9GQUlMRUQnLHN0cihyYykpCjMyMDogICAgaWYgZXhwZWN0ZWRfYnl0ZXMgaXMgbm90IE5vbmUgYW5kIG4hPWV4cGVjdGVkX2J5dGVzOiByYWlzZSBCYWNrdXBFcnJvcignUkNMT05FX0NBVF9TSVpFX01JU01BVENIJykKMzIzOmRlZiByY2xvbmVfY2F0X2J5dGVzKHJlbW90ZV9wYXRoLG1heF9ieXRlcz00KjEwMjQqMTAyNCk6CjMyNDogICAgcD1ydW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxyZW1vdGVfcGF0aCwnLS1jb250aW1lb3V0JywnMjBzJywnLS10aW1lb3V0JywnNjBzJ10sdGltZW91dD05MCkKMzI1OiAgICBpZiBsZW4ocC5zdGRvdXQpPm1heF9ieXRlczogcmFpc2UgQmFja3VwRXJyb3IoJ1JDTE9ORV9TTUFMTF9PQkpFQ1RfVE9PX0xBUkdFJykKMzI4OmRlZiBnZW5lcmF0aW9uX2lkKGxvZ2ljYWxfaWQpOgozMzI6ZGVmIHVwbG9hZF9hbmRfc2VhbCh0LHBheWxvYWRfcGF0aCxzb3VyY2VfbWV0YSk6CjMzNTogICAgZ2VuPXNvdXJjZV9tZXRhWydnZW5lcmF0aW9uJ107IHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKHRbJ3Njb3BlJ10sdFsnbG9naWNhbF9pZCddLGdlbikKMzM2OiAgICBpZiByZW1vdGVfZXhpc3RzX2FueSh0WydzY29wZSddLHRbJ2xvZ2ljYWxfaWQnXSxnZW4pOiByYWlzZSBCYWNrdXBFcnJvcignR0VORVJBVElPTl9DT0xMSVNJT04nKQozMzk6ICAgIG1hbmlmZXN0PW1ha2VfbWFuaWZlc3QodFsnc2NvcGUnXSx0Wydsb2dpY2FsX2lkJ10sZ2VuLG4scHNoYSxwYXJ0cyxyZXBzLHNvdXJjZV9tZXRhKQozNDA6ICAgIG1iPWNhbm9uaWNhbF9qc29uKG1hbmlmZXN0KStiJ1xuJzsgbXNoYT1zaGEyNTZfYnl0ZXMobWIpCjM0NTogICAgICAgICAgICByY2xvbmVfcmNhdChycCxzb3VyY2VfcGF0aD1wYXlsb2FkX3BhdGgsb2Zmc2V0PXBhcnRbJ29mZnNldCddLGxlbmd0aD1wYXJ0WydieXRlcyddKQozNDY6ICAgICAgICAgICAgZ290LGdvdG49cmNsb25lX2NhdF9oYXNoKHJwLHBhcnRbJ2J5dGVzJ10pCjM0NzogICAgICAgICAgICBpZiBnb3QhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUEFSVF9SRUFEQkFDS19TSEFfTUlTTUFUQ0gnKQozNDg6ICAgICAgICByY2xvbmVfcmNhdChiYXNlKycvbWFuaWZlc3QuanNvbicsZGF0YT1tYikKMzQ5OiAgICAgICAgaWYgcmNsb25lX2NhdF9ieXRlcyhiYXNlKycvbWFuaWZlc3QuanNvbicpIT1tYjogcmFpc2UgQmFja3VwRXJyb3IoJ01BTklGRVNUX1JFQURCQUNLX01JU01BVENIJykKMzUwOiAgICBzZWFsPXsnc2NoZW1hJzoxLCdnZW5lcmF0aW9uJzpnZW4sJ2xvZ2ljYWxfaWQnOnRbJ2xvZ2ljYWxfaWQnXSwnbWFuaWZlc3Rfc2hhMjU2Jzptc2hhLCdwYXlsb2FkX3NoYTI1Nic6cHNoYSwnc3RhdHVzJzonU0VBTEVEJywnc2VhbGVkX2F0X3V0Yyc6dXRjbm93KCl9CjM1MTogICAgc2I9Y2Fub25pY2FsX2pzb24oc2VhbCkrYidcbicKMzU0OiAgICAgICAgcmNsb25lX3JjYXQoYmFzZSsnL1NFQUxFRC5qc29uJyxkYXRhPXNiKQozNTU6ICAgICAgICBpZiByY2xvbmVfY2F0X2J5dGVzKGJhc2UrJy9TRUFMRUQuanNvbicpIT1zYjogcmFpc2UgQmFja3VwRXJyb3IoJ1NFQUxfUkVBREJBQ0tfTUlTTUFUQ0gnKQozNTY6ICAgIHJldHVybiBtYW5pZmVzdCxtc2hhLHsndW5oZWFsdGh5JzpiYWQsJ2hlYWx0aHknOmhlYWx0aHl9CjM1ODpkZWYgcmVjb25zdHJ1Y3RfcmVwbGljYShtYW5pZmVzdCxyZXAsb3V0X3BhdGgpOgozNTk6ICAgIHJlbD1yZW1vdGVfZ2VuZXJhdGlvbl9wYXRoKG1hbmlmZXN0WydzY29wZSddLG1hbmlmZXN0Wydsb2dpY2FsX2lkJ10sbWFuaWZlc3RbJ2dlbmVyYXRpb24nXSkKMzYzOiAgICAgICAgZm9yIHBhcnQgaW4gbWFuaWZlc3RbJ3BhcnRzJ106CjM2NTogICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4ocmNsb25lX2Jhc2VfYXJncygpK1snY2F0JyxiYXNlKycvcGFydHMvJytwYXJ0WyduYW1lJ10sJy0tY29udGltZW91dCcsJzIwcycsJy0tdGltZW91dCcsJzVtJ10sc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKSBhcyBwOgozNzE6ICAgICAgICAgICAgaWYgcmMhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9DQVRfRkFJTEVEJykKMzcyOiAgICAgICAgICAgIGlmIG4hPXBhcnRbJ2J5dGVzJ10gb3IgcGguaGV4ZGlnZXN0KCkhPXBhcnRbJ3NoYTI1NiddOiByYWlzZSBCYWNrdXBFcnJvcignUkVDT05TVFJVQ1RfUEFSVF9NSVNNQVRDSCcpCjM3MzogICAgaWYgdG90YWwhPW1hbmlmZXN0WydwYXlsb2FkX2J5dGVzJ10gb3IgaC5oZXhkaWdlc3QoKSE9bWFuaWZlc3RbJ3BheWxvYWRfc2hhMjU2J106IHJhaXNlIEJhY2t1cEVycm9yKCdSRUNPTlNUUlVDVF9QQVlMT0FEX01JU01BVENIJykKMzgyOiAgICBpZiByMSE9MCBvciBwMi5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9MSVNUX0ZBSUxFRCcpCjM4NDogICAgaWYgbm90IG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignVEFSX1pTVF9FTVBUWScpCjM4NTogICAgaWYgcmVxdWlyZWRfbWVtYmVyIGFuZCByZXF1aXJlZF9tZW1iZXIgbm90IGluIG5hbWVzOiByYWlzZSBCYWNrdXBFcnJvcignUkVRVUlSRURfTUVNQkVSX01JU1NJTkcnKQozOTQ6ICAgICAgICAgICAgIyBHcmVlbiBzZXQgaXMgaW50ZW50aW9uYWxseSBDVC1vbmx5LiBTY2hlZHVsZWQgUUVNVSBiYWNrdXBzIHN0aWxsIGdldCBkdWFsIHJlbW90ZSBieXRlIHJlYWRiYWNrLgo0MDI6ICAgICAgICBpZiBwMi5yZXR1cm5jb2RlIT0wIG9yIGxlbihkYXRhKTwxMjg6IHJhaXNlIEJhY2t1cEVycm9yKCdYRU5GT1JPX0RCX0RVTVBfSU5WQUxJRCcpCjQwMzogICAgZWxzZTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZBTElEQVRPUl9VTktOT1dOX1RZUEUnKQo0MDg6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfSU5WRU5UT1JZX0pTT04nKQo0MTA6ZGVmIHNzaF9yZW1vdGUobm9kZSxhcmd2LGlucHV0PU5vbmUsdGltZW91dD0xODAwLGNoZWNrPVRydWUpOgo0MTE6ICAgIGNtZD0nUEFUSD0vdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjsgZXhwb3J0IFBBVEg7IGV4ZWMgJytzaGxleC5qb2luKFtzdHIoeCkgZm9yIHggaW4gYXJndl0pCjQxMjogICAgaWYgbm9kZT09J3B2ZTAxJzogcmV0dXJuIHJ1bihbc3RyKHgpIGZvciB4IGluIGFyZ3ZdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNDE4OiAgICByYWlzZSBCYWNrdXBFcnJvcignUFZFX0dVRVNUX1RZUEVfRFJJRlQnKQo0MjE6ICAgIGlmIG5vdCBwYXRoLmlzX2ZpbGUoKSBvciBwYXRoLmlzX3N5bWxpbmsoKSBvciBzaGEyNTZfZmlsZShwYXRoKSE9ZXhwZWN0ZWQ6IHJhaXNlIEJhY2t1cEVycm9yKGNvZGUpCjQzMTogICAgaWYgcC5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignSElTVE9SSUNBTF9HUkFQSF9JTVBPUlRfRkFJTEVEJyxmJ3JjX3twLnJldHVybmNvZGV9X3N0ZGVycl9zaGEyNTZfe2hhc2hsaWIuc2hhMjU2KHAuc3RkZXJyKS5oZXhkaWdlc3QoKX0nKQo0MzM6ICAgIGV4Y2VwdCBFeGNlcHRpb246IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9KU09OJykKNDM2OiAgICAgICAgaWYgc3RyKHBhdGhsaWIuUGF0aChvdXQuZ2V0KGssJycpKS5yZXNvbHZlKCkpIT1zdHIocGF0aGxpYi5QYXRoKHYpLnJlc29sdmUoKSk6IHJhaXNlIEJhY2t1cEVycm9yKCdISVNUT1JJQ0FMX0dSQVBIX0lNUE9SVF9QQVRIJyxrKQo0Mzk6ZGVmIF9pc29sYXRlZF9ndWVzdDI2Nl9kdW1wX2FyZ3Yoam9iLHZ6ZHVtcCxzY3JhdGNoLG5vdyk6CjQ0MDogICAgZW52PV9oaXN0b3JpY2FsX2dyYXBoX2VudigpO3JlcT17J2pvYic6am9iLCd2emR1bXAnOnN0cih2emR1bXApLCdzY3JhdGNoJzpzdHIoc2NyYXRjaCksJ25vdyc6aW50KG5vdyl9CjQ0MTogICAgcD1zdWJwcm9jZXNzLnJ1bihbc3lzLmV4ZWN1dGFibGUsJy1CJywnLWMnLF9ISVNUT1JJQ0FMX0hFTFBFUiwnZHVtcF9hcmd2JyxzdHIoR1VFU1QyNjYpXSxpbnB1dD1jYW5vbmljYWxfanNvbihyZXEpLHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuUElQRSxlbnY9ZW52LGN3ZD0nLycsdGltZW91dD0zMCkKNDQyOiAgICBpZiBwLnJldHVybmNvZGUhPTA6IHJhaXNlIEJhY2t1cEVycm9yKCdHVUVTVDI2Nl9TVUJQUk9DRVNTX0ZBSUxFRCcsZidyY197cC5yZXR1cm5jb2RlfV9zdGRlcnJfc2hhMjU2X3toYXNobGliLnNoYTI1NihwLnN0ZGVycikuaGV4ZGlnZXN0KCl9JykKNDQ0OiAgICBleGNlcHQgRXhjZXB0aW9uOiByYWlzZSBCYWNrdXBFcnJvcignR1VFU1QyNjZfU1VCUFJPQ0VTU19KU09OJykKNDQ5OiAgICByZXR1cm4geyd2bWlkJzppbnQodFsndm1pZCddKSwnaWQnOmludCh0Wyd2bWlkJ10pLCd0eXBlJzonbHhjJywna2luZCc6J2x4YycsJ2d1ZXN0X3R5cGUnOidseGMnLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpLCduYW1lJzpyb3cuZ2V0KCduYW1lJywnJyksCjQ1MzogICAgICAgICAgICAnYmxvY2tlcnMnOltdLCdkaXNrcyc6W10sJ3RlbXBsYXRlJzpib29sKHJvdy5nZXQoJ3RlbXBsYXRlJywwKSksJ2hvb2tzY3JpcHRfcHJlc2VudCc6RmFsc2UsJ2xvY2tfcHJlc2VudCc6RmFsc2UsCjQ1NDogICAgICAgICAgICAnc25hcHNob3RfaGlzdG9yeV9pbmNsdWRlZCc6RmFsc2UsJ3VudXNlZF92b2x1bWVfY291bnQnOjAsJ2Nkcm9tX2NvdW50JzowLCdjZHJvbV9tZWRpYV9pbmNsdWRlZCc6RmFsc2UsJ2d1ZXN0X3Jlc3RvcmVfdmVyaWZpZWQnOkZhbHNlLAo0NTc6ZGVmIHByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCk6CjQ1ODogICAgam9iPV9seGNfam9iKHQscm93LG5vZGUpOyB2emR1bXA9c2h1dGlsLndoaWNoKCd2emR1bXAnKSBvciAnL3Vzci9iaW4vdnpkdW1wJwo0NTk6ICAgIHRyeTogYXJndj1faXNvbGF0ZWRfZ3Vlc3QyNjZfZHVtcF9hcmd2KGpvYix2emR1bXAscGF0aGxpYi5QYXRoKHNjcmF0Y2gpLGludCh0aW1lLnRpbWUoKSkpCjQ2MDogICAgZXhjZXB0IEJhY2t1cEVycm9yOiByYWlzZQo0NjE6ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTogcmFpc2UgQmFja3VwRXJyb3IoJ1BST1ZFTl9EVU1QX0FSR1ZfRkFJTEVEJyx0eXBlKGUpLl9fbmFtZV9fKQo0NjI6ICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3YsKGxpc3QsdHVwbGUpKSBvciBub3QgYXJndiBvciBub3QgYWxsKGlzaW5zdGFuY2UoeCxzdHIpIGZvciB4IGluIGFyZ3YpOiByYWlzZSBCYWNrdXBFcnJvcignUFJPVkVOX0RVTVBfQVJHVl9TSEFQRScpCjQ2MzogICAgYXJndj1saXN0KGFyZ3YpCjQ2NDogICAgaWYgcGF0aGxpYi5QYXRoKGFyZ3ZbMF0pLm5hbWUhPSd2emR1bXAnIG9yIHN0cihpbnQodFsndm1pZCddKSkgbm90IGluIGFyZ3Y6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX1RBUkdFVCcpCjQ2NTogICAgaWYgJy0tZHVtcGRpcicgaW4gYXJndiBvciBhbnkoeC5zdGFydHN3aXRoKCctLWR1bXBkaXI9JykgZm9yIHggaW4gYXJndik6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX1VORVhQRUNURURfRFVNUERJUicpCjQ2NjogICAgaWYgbm90IGFueSh4PT0nLS1zdGRvdXQnIG9yIHguc3RhcnRzd2l0aCgnLS1zdGRvdXQ9JykgZm9yIHggaW4gYXJndik6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX05PX1NURE9VVCcpCjQ2NzogICAgaWYgc3RyKHNjcmF0Y2gpIG5vdCBpbiBhcmd2IGFuZCBub3QgYW55KHg9PSctLXRtcGRpcj0nK3N0cihzY3JhdGNoKSBmb3IgeCBpbiBhcmd2KTogcmFpc2UgQmFja3VwRXJyb3IoJ1BST1ZFTl9EVU1QX0FSR1ZfTk9fU0NSQVRDSCcpCjQ2ODogICAgIyBBY2NlcHRlZCAyNzAvMjgyIGltcGxlbWVudGF0aW9uIHBhc3NlZCBtYXBwZWQgc2NyYXRjaCB0byB2emR1bXAgYXMgdG1wZGlyLgo0Njk6ICAgIGlmICctLXRtcGRpcicgaW4gYXJndjoKNDcwOiAgICAgICAgaT1hcmd2LmluZGV4KCctLXRtcGRpcicpCjQ3MTogICAgICAgIGlmIGkrMT49bGVuKGFyZ3YpIG9yIGFyZ3ZbaSsxXSE9c3RyKHNjcmF0Y2gpOiByYWlzZSBCYWNrdXBFcnJvcignUFJPVkVOX0RVTVBfQVJHVl9UTVBESVJfQklORElORycpCjQ3MjogICAgZWxpZiAnLS10bXBkaXI9JytzdHIoc2NyYXRjaCkgbm90IGluIGFyZ3Y6IHJhaXNlIEJhY2t1cEVycm9yKCdQUk9WRU5fRFVNUF9BUkdWX05PX1RNUERJUicpCjQ3MzogICAgcmV0dXJuIGFyZ3Ysam9iCjQ3NTpkZWYgX2RlZmF1bHRfdW5wcml2aWxlZ2VkX2x4Yyhub2RlLHZtaWQpOgo0NzY6ICAgIHE9c3NoX3JlbW90ZShub2RlLFsncGN0JywnY29uZmlnJyxzdHIodm1pZCldLHRpbWVvdXQ9MzApCjQ3ODogICAgaWYgJ3VucHJpdmlsZWdlZDogMScgbm90IGluIGxpbmVzOiByYWlzZSBCYWNrdXBFcnJvcignTFhDX05PVF9VTlBSSVZJTEVHRUQnKQo0Nzk6ICAgIGlmIGFueSh4LnN0YXJ0c3dpdGgoJ2x4Yy5pZG1hcDonKSBvciB4LnN0YXJ0c3dpdGgoJ2x4Yy5pZG1hcCA9JykgZm9yIHggaW4gbGluZXMpOiByYWlzZSBCYWNrdXBFcnJvcignTFhDX0NVU1RPTV9JRE1BUF9VTlNVUFBPUlRFRCcpCjQ4NDogICAgcT1zc2hfcmVtb3RlKG5vZGUscG9zLHRpbWVvdXQ9MzAsY2hlY2s9RmFsc2UpCjQ4NTogICAgaWYgcS5yZXR1cm5jb2RlIT0wOiByYWlzZSBCYWNrdXBFcnJvcignTUFQUEVEX1VJRF9BQ0NFU1NfUFJPQkVfRkFJTEVEJykKNDg3OmRlZiBfc3RyZWFtX2FyZ3ZfdG9fbG9jYWwobm9kZSxhcmd2LGRlc3QsdGltZW91dD03MjAwKToKNDg5OiAgICBpZiBub2RlPT0ncHZlMDEnOiBjbWQ9YXJndgo0OTE6ICAgICAgICByZW1vdGU9J1BBVEg9L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW47IGV4cG9ydCBQQVRIOyBleGVjICcrc2hsZXguam9pbihhcmd2KQo0OTI6ICAgICAgICBjbWQ9W1NTSCwnLW8nLCdCYXRjaE1vZGU9eWVzJywnLW8nLCdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9eWVzJywncm9vdEAnK25vZGUscmVtb3RlXQo0OTg6ICAgICAgICAgICAgcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9TVFJFQU1fVElNRU9VVCcpCjUwMjogICAgICAgIHJhaXNlIEJhY2t1cEVycm9yKCdDT01NQU5EX0ZBSUxFRCcsZid2emR1bXBfcmNfe3AucmV0dXJuY29kZX1fc3RkZXJyX3NoYTI1Nl97aGFzaGxpYi5zaGEyNTYocC5zdGRlcnIpLmhleGRpZ2VzdCgpfScpCjUwMzogICAgaWYgbm90IGRlc3QuaXNfZmlsZSgpIG9yIGRlc3Quc3RhdCgpLnN0X3NpemU8PTA6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfUEFZTE9BRF9NSVNTSU5HJykKNTA2OiAgICB2bWlkPWludCh0Wyd2bWlkJ10pOyByb3dzPVtyIGZvciByIGluIGNsdXN0ZXJfaW52ZW50b3J5KCkgaWYgaW50KHIuZ2V0KCd2bWlkJywtMSkpPT12bWlkXQo1MDc6ICAgIGlmIGxlbihyb3dzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRV9HVUVTVF9OT1RfVU5JUVVFJykKNTA5OiAgICBpZiB0eXAhPXRbJ2d1ZXN0X3R5cGUnXTogcmFpc2UgQmFja3VwRXJyb3IoJ1BWRV9HVUVTVF9UWVBFX0RSSUZUJykKNTEyOiAgICAgICAgX2RlZmF1bHRfdW5wcml2aWxlZ2VkX2x4Yyhub2RlLHZtaWQpCjUxMzogICAgICAgIHNjcmF0Y2g9ZicvdmFyL3RtcC9ob21lbGFiLXZ6ZHVtcC12Mi17Z2VufScKNTE0OiAgICAgICAgc3NoX3JlbW90ZShub2RlLFsnaW5zdGFsbCcsJy1kJywnLW0nLCc3MTAnLCctbycsJzAnLCctZycsJzEwMDAwMCcsc2NyYXRjaF0sdGltZW91dD0zMCkKNTE1OiAgICAgICAgcT1zc2hfcmVtb3RlKG5vZGUsWydzdGF0JywnLWMnLCclYToldTolZycsc2NyYXRjaF0sdGltZW91dD0zMCkKNTE2OiAgICAgICAgaWYgcS5zdGRvdXQuZGVjb2RlKCkuc3RyaXAoKSE9JzcxMDowOjEwMDAwMCc6IHJhaXNlIEJhY2t1cEVycm9yKCdQVkVfTUFQUEVEX1NDUkFUQ0hfQUNDRVNTX0NPTlRSQUNUJykKNTE5OiAgICAgICAgICAgIGFyZ3Ysam9iPXByb3Zlbl9seGNfZHVtcF9hcmd2KHQscm93LG5vZGUsc2NyYXRjaCkKNTIxOiAgICAgICAgICAgIF9zdHJlYW1fYXJndl90b19sb2NhbChub2RlLGFyZ3YsbG9jYWwsdGltZW91dD03MjAwKQo1MjI6ICAgICAgICAgICAgaWYgbG9jYWwuc3RhdCgpLnN0X3NpemU+aW50KGpvYlsnYXJjaGl2ZV9jYXBfYnl0ZXMnXSk6IHJhaXNlIEJhY2t1cEVycm9yKCdWWkRVTVBfQVJDSElWRV9DQVBfRVhDRUVERUQnKQo1MjQ6ICAgICAgICAgICAgc3NoX3JlbW90ZShub2RlLFsncm0nLCctcmYnLCctLScsc2NyYXRjaF0sdGltZW91dD02MCxjaGVjaz1GYWxzZSk7cmFpc2UKNTI2OiAgICAgICAgcmV0dXJuIGxvY2FsLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOidwdmVfZ3Vlc3QnLCd2bWlkJzp2bWlkLCdndWVzdF90eXBlJzp0eXAsJ25vZGUnOm5vZGUsJ3N0YXR1cyc6cm93LmdldCgnc3RhdHVzJyksJ3Byb2R1Y2VyX2NvbnRyYWN0JzoncHJvdmVuLTI3MC0yODItc3RyZWFtJ30sY2xlYW51cAo1Mjc6ICAgICMgUUVNVSBwYXRoIHJlbWFpbnMgdW5jaGFuZ2VkOiBib3VuZGVkIGRlZGljYXRlZCBkdW1wZGlyIHdpdGggbGF0ZXIgY2xvdWQgcmVhZGJhY2svcmVjb25zdHJ1Y3Rpb24uCjUyODogICAgc3JjZGlyPWYnL3Zhci90bXAvaG9tZWxhYi12emR1bXAtdjIte2dlbn0nCjUyOTogICAgc3NoX3JlbW90ZShub2RlLFsnaW5zdGFsbCcsJy1kJywnLW0nLCc3MDAnLCctbycsJzAnLCctZycsJzAnLHNyY2Rpcl0sdGltZW91dD0zMCkKNTMxOiAgICAgICAgc3NoX3JlbW90ZShub2RlLFsndnpkdW1wJyxzdHIodm1pZCksJy0tbW9kZScsJ3NuYXBzaG90JywnLS1jb21wcmVzcycsJ3pzdGQnLCctLWR1bXBkaXInLHNyY2Rpcl0sdGltZW91dD03MjAwKQo1MzI6ICAgICAgICBwPXNzaF9yZW1vdGUobm9kZSxbJ2ZpbmQnLHNyY2RpciwnLW1heGRlcHRoJywnMScsJy10eXBlJywnZicsJy1wcmludGYnLCclcFxuJ10sdGltZW91dD0zMCkKNTM0OiAgICAgICAgaWYgbGVuKGZpbGVzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1ZaRFVNUF9PVVRQVVRfTk9UX1VOSVFVRScpCjUzODogICAgICAgIGlmIG5vdCBwYXRobGliLlBhdGgobG9jYWwpLmlzX2ZpbGUoKSBvciBwYXRobGliLlBhdGgobG9jYWwpLnN0YXQoKS5zdF9zaXplPD0wOiByYWlzZSBCYWNrdXBFcnJvcignVlpEVU1QX1BBWUxPQURfTUlTU0lORycpCjU0MDogICAgICAgIHNzaF9yZW1vdGUobm9kZSxbJ3JtJywnLXJmJywnLS0nLHNyY2Rpcl0sdGltZW91dD02MCxjaGVjaz1GYWxzZSk7cmFpc2UKNTQxOiAgICByZXR1cm4gcGF0aGxpYi5QYXRoKGxvY2FsKSx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzoncHZlX2d1ZXN0Jywndm1pZCc6dm1pZCwnZ3Vlc3RfdHlwZSc6dHlwLCdub2RlJzpub2RlLCdzdGF0dXMnOnJvdy5nZXQoJ3N0YXR1cycpfSx7J2tpbmQnOidwdmVfc291cmNlX2RpcicsJ25vZGUnOm5vZGUsJ3BhdGgnOnNyY2Rpcn0KNTQ0OiAgICBpZiBub3QgT1BFUkFUT1JfS0VZLmlzX2ZpbGUoKSBvciBPUEVSQVRPUl9LRVkuaXNfc3ltbGluaygpOiByYWlzZSBCYWNrdXBFcnJvcignT1BFUkFUT1JfS0VZX01JU1NJTkcnKQo1NDg6ICAgIGlmIG5vdCBtIG9yIG0uZ3JvdXAoMSkhPU9QRVJBVE9SX0tFWV9GSU5HRVJQUklOVDogcmFpc2UgQmFja3VwRXJyb3IoJ09QRVJBVE9SX0tFWV9GSU5HRVJQUklOVF9NSVNNQVRDSCcpCjU2MjogICAgaWYgbGVuKGdvb2QpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignSE9TVEtFWV9QSU5fTUlTTUFUQ0gnKQo1NjU6ZGVmIGVuc3VyZV92cHNfa25vd25faG9zdHModGFyZ2V0cyk6CjU2NzogICAgZm9yIHQgaW4gdGFyZ2V0czoKNTcyOmRlZiB2cHNfc3NoX2FyZ3YodCwgKiwgdXNlX2FnZW50PUZhbHNlKToKNTgxOmRlZiB2cHNfcnVuKHQsIHJlbW90ZV9hcmd2LCAqLCBpbnB1dD1Ob25lLCB0aW1lb3V0PTMwMCwgdXNlX2FnZW50PUZhbHNlLCBjaGVjaz1UcnVlKToKNTgyOiAgICByZW1vdGU9c2hsZXguam9pbihbc3RyKHgpIGZvciB4IGluIHJlbW90ZV9hcmd2XSkKNTgzOiAgICByZXR1cm4gcnVuKHZwc19zc2hfYXJndih0LHVzZV9hZ2VudD11c2VfYWdlbnQpK1tyZW1vdGVdLGlucHV0PWlucHV0LHRpbWVvdXQ9dGltZW91dCxjaGVjaz1jaGVjaykKNTg1OmRlZiBib290c3RyYXBfdnBzX2tleXModGFyZ2V0cyk6CjU4NzogICAgZW5zdXJlX3Zwc19rbm93bl9ob3N0cyh0YXJnZXRzKQo1OTA6ICAgIGZvciB0IGluIHRhcmdldHM6CjU5NTogICAgICAgIGlmIG5vdCBvcy5lbnZpcm9uLmdldCgnU1NIX0FVVEhfU09DSycpOiByYWlzZSBCYWNrdXBFcnJvcignRk9SV0FSREVEX0FHRU5UX1JFUVVJUkVEX0ZPUl9CT09UU1RSQVAnKQo1OTk6ICAgICAgICBpZiB0YWcgbm90IGluICgnQURERUQnLCdBTFJFQURZJyk6IHJhaXNlIEJhY2t1cEVycm9yKCdWUFNfQVVUSE9SSVpFRF9LRVlfQk9PVFNUUkFQX1JFU1VMVCcpCjYwMzogICAgdXM9W3ggZm9yIHggaW4gdGFyZ2V0cyBpZiB4Wyd0eXBlJ109PSd2cHNfdXMnXVswXQo2MDg6ZGVmIHJlbW90ZV9oYXNoc2V0KHQsY29tbWFuZCk6CjYxMzogICAgZmlsZXM9WydldGMvbmV0YmlyZC9pbnN0YWxsLmNvbmYnLCd2YXIvbGliL25ldGJpcmQvc3RhdGUuanNvbicsJ3Zhci9saWIvbmV0YmlyZC9zZXJ2aWNlLmpzb24nLCd2YXIvbGliL25ldGJpcmQvYWN0aXZlX3Byb2ZpbGUuanNvbicsJ3Zhci9saWIvbmV0YmlyZC9kZWZhdWx0Lmpzb24nXQo2MTU6ICAgIHByZT1yZW1vdGVfaGFzaHNldCh0LGNtZCkKNjE2OiAgICByZW1vdGU9c2hsZXguam9pbihbJ3N1ZG8nLCctbicsJ3RhcicsJy0tbnVtZXJpYy1vd25lcicsJy1DJywnLycsJy1jZicsJy0nXStmaWxlcykKNjE3OiAgICBhcmd2PXZwc19zc2hfYXJndih0LHVzZV9hZ2VudD1GYWxzZSkrW3JlbW90ZV0KNjE4OiAgICBwYXlsb2FkPXdvcmsvJ3BheWxvYWQudGFyLnpzdCc7IHBpcGVfdG9fenN0ZChhcmd2LHBheWxvYWQsdGltZW91dD02MDApCjYxOTogICAgcG9zdD1yZW1vdGVfaGFzaHNldCh0LGNtZCkKNjIwOiAgICBpZiBwcmUhPXBvc3Q6IHJhaXNlIEJhY2t1cEVycm9yKCdNRF9TT1VSQ0VfQ0hBTkdFRF9EVVJJTkdfQ0FQVFVSRScpCjYyMTogICAgcmV0dXJuIHBheWxvYWQseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3Zwc19tZCcsJ2NvbnNpc3RlbmN5JzonRklMRVNFVF9QUkVfUE9TVF9IQVNIX1NUQUJJTElUWScsJ2hhc2hzZXRfc2hhMjU2JzpwcmV9LE5vbmUKNjI1OiAgICBwcmU9cmVtb3RlX2hhc2hzZXQodCxoY21kKQo2MjY6ICAgIHJlbW90ZT1zaGxleC5qb2luKFsndGFyJywnLS1udW1lcmljLW93bmVyJywnLUMnLCcvJywnLWNmJywnLScsJ2V0Yy9uZ2lueCddKQo2Mjc6ICAgIGFyZ3Y9dnBzX3NzaF9hcmd2KHQsdXNlX2FnZW50PUZhbHNlKStbcmVtb3RlXQo2Mjg6ICAgIHBheWxvYWQ9d29yay8ncGF5bG9hZC50YXIuenN0JzsgcGlwZV90b196c3RkKGFyZ3YscGF5bG9hZCx0aW1lb3V0PTkwMCkKNjI5OiAgICBwb3N0PXJlbW90ZV9oYXNoc2V0KHQsaGNtZCkKNjMwOiAgICBpZiBwcmUhPXBvc3Q6IHJhaXNlIEJhY2t1cEVycm9yKCdTUEJfU09VUkNFX0NIQU5HRURfRFVSSU5HX0NBUFRVUkUnKQo2MzE6ICAgIHJldHVybiBwYXlsb2FkLHsnZ2VuZXJhdGlvbic6Z2VuLCdzb3VyY2VfY2xhc3MnOid2cHNfc3BiJywnY29uc2lzdGVuY3knOidTVEFUSUNfQ09ORklHX0ZJTEVTRVRfUFJFX1BPU1RfSEFTSF9TVEFCSUxJVFknLCd0bHNfcmVjb3ZlcnknOidSRUlTU1VFX1RMU19PTl9SRVNUT1JFJywnaGFzaHNldF9zaGEyNTYnOnByZX0sTm9uZQo2MzM6VVNfUkVNT1RFX1NDUklQVD1yJycnaW1wb3J0IGlvLG9zLHNxbGl0ZTMsc3lzLHRhcmZpbGUsdGltZSxqc29uLGhhc2hsaWIKNjU2OiAgICBkc3Q9c3FsaXRlMy5jb25uZWN0KCc6bWVtb3J5OicpOyBzcmMuYmFja3VwKGRzdCkKNjU5OiAgICB0aT10YXJmaWxlLlRhckluZm8obmFtZT0oJ3NxbGl0ZS1iYWNrdXBzLycrbmFtZSkpOyB0aS5zaXplPWxlbihiKTsgdGkubW9kZT0wbzYwMDsgdGkubXRpbWU9aW50KHRpbWUudGltZSgpKTsgdGYuYWRkZmlsZSh0aSxpby5CeXRlc0lPKGIpKQo2NjM6ICAgIHJlbW90ZT1zaGxleC5qb2luKFsncHl0aG9uMycsJy1JJywnLUInLCctYycsVVNfUkVNT1RFX1NDUklQVF0pCjY2NDogICAgYXJndj12cHNfc3NoX2FyZ3YodCx1c2VfYWdlbnQ9RmFsc2UpK1tyZW1vdGVdCjY2NTogICAgcGF5bG9hZD13b3JrLydwYXlsb2FkLnRhci56c3QnOyBwaXBlX3RvX3pzdGQoYXJndixwYXlsb2FkLHRpbWVvdXQ9MTIwMCkKNjY2OiAgICByZXR1cm4gcGF5bG9hZCx7J2dlbmVyYXRpb24nOmdlbiwnc291cmNlX2NsYXNzJzondnBzX3VzJywnY29uc2lzdGVuY3knOidTUUxJVEVfT05MSU5FX0JBQ0tVUF9QTFVTX05PTkRCX0ZJTEVTJywnc3FsaXRlX2NvdW50Jzo0fSxOb25lCjczOTogICAgaWYgbm90IFJPVVRFUl9MRUdBQ1lfU0NSSVBULmlzX2ZpbGUoKSBvciBST1VURVJfTEVHQUNZX1NDUklQVC5pc19zeW1saW5rKCkgb3Igc2hhMjU2X2ZpbGUoUk9VVEVSX0xFR0FDWV9TQ1JJUFQpIT1ST1VURVJfTEVHQUNZX1NIQTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9MRUdBQ1lfU0NSSVBUX0lERU5USVRZJykKNzQyOiAgICBoaXRzPVtpcCBmb3IgaXAgaW4gaXBzIGlmIHNoYTI1Nl9ieXRlcyhpcC5lbmNvZGUoKSk9PVJPVVRFUl9UQVJHRVRfU0hBXQo3NDM6ICAgIGlmIGxlbihoaXRzKSE9MTogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9UQVJHRVRfUEFSU0UnKQo3NDQ6ICAgIHRhcmdldD1oaXRzWzBdCjc1MjogICAgaWYgbGVuKHNhZmUpIT0xOiByYWlzZSBCYWNrdXBFcnJvcignUk9VVEVSX1BBU1NGSUxFX1BBUlNFJykKNzUzOiAgICByZXR1cm4gdGFyZ2V0LHNhZmVbMF0KNzU2OiAgICByb290cz1bcGF0aGxpYi5QYXRoKCcvZXRjJykscGF0aGxpYi5QYXRoKCcvcm9vdC8uc3NoJykscGF0aGxpYi5QYXRoKCcvdmFyL2xpYi9ob21lbGFiLWJhY2t1cCcpLHBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKV0KNzcxOiAgICBpZiBsZW4odW5pcSkhPTE6IHJhaXNlIEJhY2t1cEVycm9yKCdFWEFDVF9TSEFfRklMRV9OT1RfVU5JUVVFJykKNzc5OiAgICBpZiBzaGEyNTZfYnl0ZXMoYikhPVJPVVRFUl9LTk9XTl9IT1NUU19TSEE6IHJhaXNlIEJhY2t1cEVycm9yKCdST1VURVJfS05PV05fSE9TVFNfSURFTlRJVFknKQo3ODM6ICAgIHRhcmdldCxwZj1wYXJzZV9yb3V0ZXJfbGVnYWN5KCkKNzg2OiAgICBhcmd2PVtTU0hQQVNTLCctZicsc3RyKHBmKSxTU0gsJy1wJywnMjIyMicsJy1vJywnQmF0Y2hNb2RlPW5vJywnLW8nLCdOdW1iZXJPZlBhc3N3b3JkUHJvbXB0cz0xJywnLW8nLCdTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9eWVzJywnLW8nLCdVc2VyS25vd25Ib3N0c0ZpbGU9JytzdHIoUk9VVEVSX0tOT1dOX0hPU1RTKSwnLW8nLCdDb25uZWN0VGltZW91dD0xNScsJ3JvdXRlcmJhY2t1cEAnK3RhcmdldCwnc2hvdyBydW5uaW5nLWNvbmZpZyddCjc4NzogICAgcD1ydW4oYXJndix0aW1lb3V0PTYwKTsgcmV0dXJuIHAuc3Rkb3V0Cjc5ODogICAgaWYgbm90IGEgb3IgYSE9YjogcmFpc2UgQmFja3VwRXJyb3IoJ1JPVVRFUl9SRUFEX05PVF9CWVRFX1NUQUJMRScpCjgwMDogICAgcmV0dXJuIHBheWxvYWQseydnZW5lcmF0aW9uJzpnZW4sJ3NvdXJjZV9jbGFzcyc6J3JvdXRlcicsJ2NvbmZpZ19zaGEyNTYnOnNoYTI1Nl9ieXRlcyhhKSwncmVhZF9jb3VudCc6MiwncmVjb3ZlcnlfcG9saWN5JzonSU1QT1JUX1BBQ0tBR0VfT1JfU0FGRV9DTElfTk9UX0JMSU5EX0NPTkZJR19SRVBMQUNFJ30sTm9uZQo4MDI6ZGVmIHFnYV9leGVjKG5vZGUsdm1pZCxndWVzdF9hcmd2LGlucHV0X2J5dGVzPU5vbmUsdGltZW91dD02MDApOgo4MDM6ICAgIGFyZ3M9WydxbScsJ2d1ZXN0JywnZXhlYycsc3RyKHZtaWQpLCctLXN5bmNocm9ub3VzJywnMScsJy0tdGltZW91dCcsc3RyKGludCh0aW1lb3V0KSld\nPIPE_12_SCORE=4\nPIPE_12_BASENAME=legacy_engine.py\nPIPE_12_PATH_SHA256=ada28322dd44b921f815bb2cdba360506c3f4e2a58c97f1eea9a2a6d4e384c9d\nPIPE_12_FILE_SHA256=b6e79f087b9f1d21dac4f77a7b46b743299bbb85bc716e80d2ea67c2e038bcd7\nPIPE_12_SCHEDULE_TARGET_COUNT=1\nPIPE_12_QEMU_EXECUTION_DIAG_COUNT=0\nPIPE_12_SELFTEST_REPLACEMENT486_COUNT=0\nPIPE_12_VZDUMP_QEMU_COUNT=0\nPIPE_12_RCLONE_COUNT=31\nPIPE_12_CLOUD_QUORUM_COUNT=0\nPIPE_12_SEAL_WRITTEN_COUNT=0\nPIPE_12_PAYLOAD_PARTS_COUNT=0\nPIPE_12_TRANSPORT_COUNT=3\nPIPE_12_RESTORE_VALIDATION_COUNT=0\nPIPE_12_SCHEDULE_RESULT_COUNT=2\nPIPE_12_RELEVANT_LINE_COUNT=346\nPIPE_12_RELEVANT_B64=NjpTVEFURV9ST09UPXBhdGhsaWIuUGF0aCgnL3Zhci9saWIvaG9tZWxhYi1iYWNrdXAtdjInKQo3OkNPTkZJR19ST09UPXBhdGhsaWIuUGF0aCgnL2V0Yy9ob21lbGFiLWJhY2t1cC12MicpCjg6VEFSR0VUU19QQVRIPUNPTkZJR19ST09ULyd0YXJnZXRzLmpzb24nCjk6V09SS19ST09UPXBhdGhsaWIuUGF0aCgnL21udC9zdGFnaW5nL2hvbWVsYWItYmFja3VwLXYyJykKMTA6RU5HSU5FX1BBVEg9cGF0aGxpYi5QYXRoKCcvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi1iYWNrdXAtdjInKQoxMTpSQ0xPTkU9c2h1dGlsLndoaWNoKCdyY2xvbmUnKSBvciAnL3Vzci9iaW4vcmNsb25lJwoxOTpST1VURVJfTEVHQUNZX1NDUklQVD1wYXRobGliLlBhdGgoJy91c3IvbG9jYWwvc2Jpbi9ob21lbGFiLXJvdXRlci1ydW5uaW5nLWNvbmZpZy1tYWlsLWNsb3VkJykKMjE6Uk9VVEVSX1RBUkdFVF9TSEE9JzRmOWRhMTI4MzE2NmExZTlmNGU2YmM3ZGQyNDBjNzZhZWY4NTc3MjE3N2Y3MTdmOTJhYmI2ZThlMmJiOGRlOTAnCjI1OkdVRVNUMjY2PXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jdC1iYWNrdXAtMjgycjEvZ3Vlc3QyNjYucHknKQoyNzpQMjcwPXBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjcwcjEvcHZlMjcwLnB5JykKMjk6UDI4Mj1wYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvY3QtYmFja3VwLTI4MnIxL3B2ZTI4Mi5weScpCjMxOlAyNjU9cGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMS9wdmUyNjUucHknKQozNTogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxL3YyY29yZS5weScpLCdlMjg1YmY5YTU2NzhkMDdkY2JiOTAyNjFmOWY5M2U3ODI2ZmY1MjRlMDRjZmVjNzgwYmY1YTNjNGIwZGMyOWYyJyksCjM2OiAocGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMS90cmFuc3BvcnQyNjEucHknKSwnYjliOTJmOTU3YmY0NDFjYjVkMTcwMmY0ODgxODk3MzI4ZTZjMDMzOGY4YzNmNmQ0MWQyN2Q5YTM0OWIzNzY4OCcpLAozNzogKHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9zdHJlYW0tMjYzcjEvc3RyZWFtMjYzLnB5JyksJ2E4M2QwM2E4NmI5M2E4NTU3MTY2NTg2NTJkZDA3M2ZjYjI4MWNkMzg3ZmM2MjAwZmU0YmMyYTkyMmYzOWVhMTYnKSwKMzg6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvc3RyZWFtLTI2M3IxL25vZGVwbGFuMjYzLnB5JyksJ2RiNWMxNmVlMjRkMjVhYTE2OTQ1MzAzMzJkMzE5MGFiN2NjNWQ0ZjhlYjY5MDY3ZDAyNWUyN2FkNWM5OTUwNjAnKSwKMzk6IChwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvbGFyZ2UtY2xvdWQtMjY0cjEvbGFyZ2UyNjQucHknKSwnNWNjNDY0MWZjMzVlNGRkNTU0NDk1YTM2MTQ2ZGE3ZGJiYjdmMTQyZDE0NTBlMDRjYzVkM2M4OTY3OGI4NDk3YScpLAo0NjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL2N0LWJhY2t1cC0yODJyMScpLAo0NzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1yZXRyeS0yNzByMScpLAo0ODogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1wcm9kdWNlci0yNjVyMScpLAo0OTogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3B2ZS1ydW4tMjY2cjEnKSwKNTA6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9wdmUtcmV0cnktMjY4cjEnKSwKNTE6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9sYXJnZS1jbG91ZC0yNjRyMScpLAo1MjogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3N0cmVhbS0yNjNyMScpLAo1MzogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3RyYW5zcG9ydC0yNjFyMScpLAo1NDogcGF0aGxpYi5QYXRoKCcvb3B0L2hvbWVsYWItYmFja3VwLXYyL3JlbGVhc2VzL3Jlc3RvcmUtMjYycjEnKSwKNTU6IHBhdGhsaWIuUGF0aCgnL29wdC9ob21lbGFiLWJhY2t1cC12Mi9yZWxlYXNlcy9jb3JlLTI2MHIxJyksCjU2OiBwYXRobGliLlBhdGgoJy9vcHQvaG9tZWxhYi1iYWNrdXAtdjIvcmVsZWFzZXMvdm0tYmFja3VwLTI4M3IxJyksCjU5Om1vZGU9c3lzLmFyZ3ZbMV0KNjU6ZWxpZiBtb2RlPT0nZHVtcF9hcmd2JzoKNjY6IHNvdXJjZT1wYXRobGliLlBhdGgoc3lzLmFyZ3ZbMl0pLnJlc29sdmUoKQo3MTogYXJndj1tb2QuZHVtcF9hcmd2KHJlcVsnam9iJ10scmVxWyd2emR1bXAnXSxwYXRobGliLlBhdGgocmVxWydzY3JhdGNoJ10pLGludChyZXFbJ25vdyddKSkKNzI6IHByaW50KGpzb24uZHVtcHMoYXJndixzZXBhcmF0b3JzP"
|
|
}
|