1
0
Files
homelab-public-context/runtime/latest.json
T
2026-09-21 16:03:47 +00:00

39 lines
34 KiB
JSON

{
"schema_version": 1,
"channel": "homelab-runtime",
"command_id": "NEWFI-260921-NEWFDOM-DR221-PREFLIGHT398",
"status": "FAIL",
"rc": 1,
"host": "pve01",
"mode": "read-only",
"component": "newfi-dr221-current-backup-restore-contract-preflight",
"started_at_utc": "2026-09-21T16:03:45Z",
"finished_at_utc": "2026-09-21T16:03:46Z",
"reference_register_checked": true,
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
"error_register_checked": true,
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
"command_sha256": "76fa76cf3d6f53998c2412468857695a1807ed5d9ddc82cef2faa27c77cc4888",
"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": 1,
"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": "e324319554c25d0de61dbd3a3ace0cc408a7e32724cc38ce27261cdaeba49673",
"sanitized_output_sha256": "e324319554c25d0de61dbd3a3ace0cc408a7e32724cc38ce27261cdaeba49673",
"output_truncated_in_json": false,
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
"output": "DR221_PREFLIGHT398_BEGIN=true\nCOMMAND_ID=NEWFI-260921-NEWFDOM-DR221-PREFLIGHT398\nIMMUTABLE_PLAN_CHECK=PASS\nPREDECESSOR_PROD220_CLOSED=true\nPREDECESSOR_COMMAND_ID=NEWFI-260921-NEWFDOM-PROD220-RECOVERY397\nGIT_STATE={\"branch\":\"implementation/newfi-closed-mvp-20260906\",\"clean\":true,\"head\":\"9c4814db67759dc09a5469d254c41a7b73f4d89a\",\"rcs\":[0,0,0,0],\"remote\":\"9c4814db67759dc09a5469d254c41a7b73f4d89a\"}\nVM210_CLUSTER={\"rc\":0,\"rows\":[{\"maxdisk\":53687091200,\"maxmem\":4294967296,\"name\":\"newfi-prod\",\"node\":\"pve01\",\"status\":\"running\",\"type\":\"qemu\",\"uptime\":1271168,\"vmid\":210}]}\nVM210_QM_STATUS={\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\",\"stdout\":\"status: running\"}\nVM210_CONFIG_SAFE={\"config\":{\"agent\":\"enabled=1\",\"boot\":\"order=scsi0\",\"cores\":\"2\",\"ide2\":\"local-lvm:vm-210-cloudinit,media=cdrom\",\"memory\":\"4096\",\"name\":\"newfi-prod\",\"onboot\":\"1\",\"ostype\":\"l26\",\"scsi0\":\"local-lvm:vm-210-disk-0,discard=on,size=50G,ssd=1\",\"scsihw\":\"virtio-scsi-pci\",\"serial0\":\"socket\"},\"rc\":0,\"stderr_sha256\":\"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"}\nRESTORE_TEMP_VMID_CANDIDATES=[9210,9211,9212,9213,9214,9215,9216,9217,9218,9219]\nTraceback (most recent call last):\n File \"<string>\", line 1, in <module>\n import base64;exec(compile(base64.b64decode(\"aW1wb3J0IG9zLHN5cyxqc29uLGhhc2hsaWIsc3VicHJvY2VzcyxyZSxzdGF0CmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAoKQ0lEPSJORVdGSS0yNjA5MjEtTkVXRkRPTS1EUjIyMS1QUkVGTElHSFQzOTgiCldUPVBhdGgoIi9yb290L25ld2ZpLXBvcnRhbC8ud29ya3RyZWVzL2ltcGxlbWVudGF0aW9uLW5ld2ZpLWNsb3NlZC1tdnAtMjAyNjA5MDYiKQpFWFBFQ1RFRF9CUkFOQ0g9ImltcGxlbWVudGF0aW9uL25ld2ZpLWNsb3NlZC1tdnAtMjAyNjA5MDYiCkVYUEVDVEVEX0hFQUQ9IjljNDgxNGRiNjc3NTlkYzA5YTU0NjlkMjU0YzQxYTdiNzNmNGQ4OWEiCgpIRUxQRVJTPVsKICIvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi12bS1mdWxsLWJhY2t1cCIsCiAiL3Vzci9sb2NhbC9zYmluL2hvbWVsYWItdm0tZnVsbC1yZXN0b3JlLWRyaWxsIiwKICIvdXNyL2xvY2FsL3NiaW4vaG9tZWxhYi12bS1jbG91ZC1xdW9ydW0tcXVldWUiLAogIi91c3IvbG9jYWwvbGliZXhlYy9ob21lbGFiLXZtLWNsb3VkLXF1b3J1bS1ub2RlLXdvcmtlciIsCiAiL3Vzci9sb2NhbC9saWJleGVjL2hvbWVsYWItY2xvdWQtcXVvcnVtLXBheWxvYWQiLAogIi91c3IvbG9jYWwvc2Jpbi9ob21lbGFiLWJhY2t1cC12MiIsCl0KVU5JVFM9WwogIi9ldGMvc3lzdGVtZC9zeXN0ZW0vaG9tZWxhYi12bS1jbG91ZC1xdW9ydW0tcXVldWUuc2VydmljZSIsCiAiL2V0Yy9zeXN0ZW1kL3N5c3RlbS9ob21lbGFiLXZtLWNsb3VkLXF1b3J1bS1xdWV1ZS50aW1lciIsCl0KQ09ORklHUz1bCiAiL2V0Yy9ob21lbGFiLWJhY2t1cC12Mi90YXJnZXRzLmpzb24iLAogIi9ldGMvaG9tZWxhYi1iYWNrdXAtdjIvcHJvZHVjdGlvbi1hY2NlcHRhbmNlLmpzb24iLApdClNBRkVfVEVSTVM9cmUuY29tcGlsZShyIig/aSlcYihhcmdwYXJzZXxhcmd1bWVudHBhcnNlcnxhZGRfYXJndW1lbnR8Z2V0b3B0c3x1c2FnZXxzeXNcLmFyZ3Z8dm1pZHxvd25lcnxhbGxvd3x2emR1bXB8cW1yZXN0b3JlfHJlc3RvcmV8Z2VuZXJhdGlvbnxxdW9ydW18cmNsb25lfHJlbW90ZXxtYW5pZmVzdHxwYXJ0cz98c3RhdGV8YXJjaGl2ZXxzdG9yYWdlfHRlbXB8aXNvbGF0ZXxuZXR3b3JrfHNvdXJjZXx0YXJnZXR8ZXhlY3N0YXJ0fGVudmlyb25tZW50fHN1YnByb2Nlc3N8cnVuXCh8cHZlc2h8cW1cc3xwdmVzbXxjbG91ZClcYiIpClNFTlNJVElWRT1yZS5jb21waWxlKHIiKD9pKShwYXNzd29yZHxwYXNzd2R8c2VjcmV0fHRva2VufGNyZWRlbnRpYWx8cHJpdmF0ZVtfLV0/a2V5fGNsaWVudFtfLV0/c2VjcmV0fGFjY2Vzc1tfLV0/a2V5fHBhc3NwaHJhc2UpIikKT1BBUVVFPXJlLmNvbXBpbGUociJbQS1aYS16MC05Ky89Xy1dezgwLH0iKQpNQVhfRklMRT0yKjEwMjQqMTAyNAoKZGVmIGVtaXQoayx2KToKICAgIGlmIGlzaW5zdGFuY2UodiwoZGljdCxsaXN0LGJvb2wsaW50LGZsb2F0KSkgb3IgdiBpcyBOb25lOgogICAgICAgIHByaW50KGsrIj0iK2pzb24uZHVtcHModixzb3J0X2tleXM9VHJ1ZSxzZXBhcmF0b3JzPSgiLCIsIjoiKSxlbnN1cmVfYXNjaWk9VHJ1ZSksZmx1c2g9VHJ1ZSkKICAgIGVsc2U6CiAgICAgICAgcHJpbnQoaysiPSIrc3RyKHYpLGZsdXNoPVRydWUpCgpkZWYgcnVuKGFyZ3YsdGltZW91dD00MCxjd2Q9Tm9uZSk6CiAgICBwPXN1YnByb2Nlc3MucnVuKGFyZ3Ysc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSxzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLHRpbWVvdXQ9dGltZW91dCxjd2Q9Y3dkKQogICAgcmV0dXJuIHAucmV0dXJuY29kZSxwLnN0ZG91dC5kZWNvZGUoInV0Zi04IiwicmVwbGFjZSIpLHAuc3RkZXJyLmRlY29kZSgidXRmLTgiLCJyZXBsYWNlIikKCmRlZiBzaGFfYnl0ZXMoYik6IHJldHVybiBoYXNobGliLnNoYTI1NihiKS5oZXhkaWdlc3QoKQoKZGVmIHJlYWRfcmVndWxhcihwYXRoKToKICAgIHA9UGF0aChwYXRoKQogICAgc3Q9cC5sc3RhdCgpCiAgICBpZiBub3Qgc3RhdC5TX0lTUkVHKHN0LnN0X21vZGUpIG9yIHAuaXNfc3ltbGluaygpOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVU5TQUZFX0ZJTEU6IitzdHIocGF0aCkpCiAgICBpZiBzdC5zdF9zaXplPk1BWF9GSUxFOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiRklMRV9UT09fTEFSR0U6IitzdHIocGF0aCkpCiAgICBiPXAucmVhZF9ieXRlcygpCiAgICByZXR1cm4gYixzdAoKZGVmIHNhbml0aXplX2xpbmUobGluZSk6CiAgICBzPWxpbmUuc3RyaXAoKQogICAgaWYgbm90IHM6CiAgICAgICAgcmV0dXJuICIiCiAgICBpZiBTRU5TSVRJVkUuc2VhcmNoKHMpOgogICAgICAgICMgS2VlcCBzdHJ1Y3R1cmFsIGxlZnQgc2lkZSBvbmx5OyBuZXZlciBleHBvc2UgYXNzaWduZWQgc2VjcmV0IG1hdGVyaWFsLgogICAgICAgIGlmICI9IiBpbiBzOgogICAgICAgICAgICByZXR1cm4gcy5zcGxpdCgiPSIsMSlbMF0uc3RyaXAoKSsiPTxXSVRISEVMRD4iCiAgICAgICAgcmV0dXJuICI8U0VOU0lUSVZFX0xJTkVfV0lUSEhFTEQ+IgogICAgcz1PUEFRVUUuc3ViKCI8T1BBUVVFX1dJVEhIRUxEPiIscykKICAgIGlmIGxlbihzKT4yNjA6CiAgICAgICAgcz1zWzoyNjBdKyIuLi4iCiAgICByZXR1cm4gcwoKZGVmIHNvdXJjZV9jb250cmFjdChwYXRoKToKICAgIGIsc3Q9cmVhZF9yZWd1bGFyKHBhdGgpCiAgICB0ZXh0PWIuZGVjb2RlKCJ1dGYtOCIsInJlcGxhY2UiKQogICAgbGluZXM9W10KICAgIGZvciBuLGxpbmUgaW4gZW51bWVyYXRlKHRleHQuc3BsaXRsaW5lcygpLDEpOgogICAgICAgIGlmIFNBRkVfVEVSTVMuc2VhcmNoKGxpbmUpOgogICAgICAgICAgICBzPXNhbml0aXplX2xpbmUobGluZSkKICAgICAgICAgICAgaWYgczoKICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCh7ImxpbmUiOm4sInRleHQiOnN9KQogICAgICAgIGlmIGxlbihsaW5lcyk+PTgwOgogICAgICAgICAgICBicmVhawogICAgcmV0dXJuIHsKICAgICAgInBhdGgiOnBhdGgsCiAgICAgICJieXRlcyI6bGVuKGIpLAogICAgICAic2hhMjU2IjpzaGFfYnl0ZXMoYiksCiAgICAgICJtb2RlIjpmb3JtYXQoc3RhdC5TX0lNT0RFKHN0LnN0X21vZGUpLCIwNG8iKSwKICAgICAgInVpZCI6c3Quc3RfdWlkLAogICAgICAiZ2lkIjpzdC5zdF9naWQsCiAgICAgICJzaGViYW5nIjp0ZXh0LnNwbGl0bGluZXMoKVswXVs6MTIwXSBpZiB0ZXh0LnN0YXJ0c3dpdGgoIiMhIikgZWxzZSBOb25lLAogICAgICAiY29udHJhY3RfbGluZXMiOmxpbmVzCiAgICB9CgpkZWYgc2FmZV9qc29uKHBhdGgpOgogICAgYixzdD1yZWFkX3JlZ3VsYXIocGF0aCkKICAgIG9iaj1qc29uLmxvYWRzKGIuZGVjb2RlKCJ1dGYtOCIsInN0cmljdCIpKQogICAgcmV0dXJuIG9iaix7InBhdGgiOnBhdGgsImJ5dGVzIjpsZW4oYiksInNoYTI1NiI6c2hhX2J5dGVzKGIpLCJtb2RlIjpmb3JtYXQoc3RhdC5TX0lNT0RFKHN0LnN0X21vZGUpLCIwNG8iKX0KCmRlZiBzYWZlX3NjYWxhcih2KToKICAgIHJldHVybiBpc2luc3RhbmNlKHYsKHN0cixpbnQsZmxvYXQsYm9vbCkpIG9yIHYgaXMgTm9uZQoKZGVmIHNjcnViX29iaih4LGRlcHRoPTApOgogICAgaWYgZGVwdGg+NTogcmV0dXJuICI8REVQVEhfTElNSVQ+IgogICAgaWYgaXNpbnN0YW5jZSh4LGRpY3QpOgogICAgICAgIG91dD17fQogICAgICAgIGZvciBrLHYgaW4geC5pdGVtcygpOgogICAgICAgICAgICBrcz1zdHIoaykKICAgICAgICAgICAgaWYgU0VOU0lUSVZFLnNlYXJjaChrcyk6CiAgICAgICAgICAgICAgICBvdXRba3NdPSI8V0lUSEhFTEQ+IgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgbGs9a3MubG93ZXIoKQogICAgICAgICAgICBpZiBsayBpbiB7ImxvZ2ljYWxfaWQiLCJpZCIsIm5hbWUiLCJ0eXBlIiwia2luZCIsIm5vZGUiLCJ2bWlkIiwiZW5hYmxlZCIsInNjb3BlIiwic291cmNlIiwiY29sbGVjdG9yIiwiYmFja3VwIiwicmVzdG9yZSIsInBvbGljeSIsIm93bmVyIiwic3RhdHVzIiwibW9kZSIsImdlbmVyYXRpb24iLCJhY2NlcHRlZF9yZWxlYXNlIiwiYmFzZV9yZWxlYXNlIiwiZW50cnkiLCJlbnRyeXBvaW50Iiwic2NyaXB0IiwiaGVscGVyIiwicGF0aCIsInN0b3JhZ2UiLCJwYXJ0X3NpemUiLCJyZXBsaWNhcyIsInBoeXNpY2FsIiwiY3J5cHQifToKICAgICAgICAgICAgICAgIGlmIHNhZmVfc2NhbGFyKHYpOgogICAgICAgICAgICAgICAgICAgIG91dFtrc109dgogICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHYsKGxpc3QsZGljdCkpOgogICAgICAgICAgICAgICAgICAgIG91dFtrc109c2NydWJfb2JqKHYsZGVwdGgrMSkKICAgICAgICAgICAgZWxpZiBkZXB0aDwyIGFuZCBpc2luc3RhbmNlKHYsKGRpY3QsbGlzdCkpOgogICAgICAgICAgICAgICAgc3ViPXNjcnViX29iaih2LGRlcHRoKzEpCiAgICAgICAgICAgICAgICBpZiBzdWIgbm90IGluICh7fSxbXSk6CiAgICAgICAgICAgICAgICAgICAgb3V0W2tzXT1zdWIKICAgICAgICByZXR1cm4gb3V0CiAgICBpZiBpc2luc3RhbmNlKHgsbGlzdCk6CiAgICAgICAgcmV0dXJuIFtzY3J1Yl9vYmoodixkZXB0aCsxKSBmb3IgdiBpbiB4WzoxMDBdXQogICAgcmV0dXJuIHggaWYgc2FmZV9zY2FsYXIoeCkgZWxzZSBzdHIodHlwZSh4KS5fX25hbWVfXykKCnByaW50KCJEUjIyMV9QUkVGTElHSFQzOThfQkVHSU49dHJ1ZSIsZmx1c2g9VHJ1ZSkKZW1pdCgiQ09NTUFORF9JRCIsQ0lEKQplbWl0KCJJTU1VVEFCTEVfUExBTl9DSEVDSyIsIlBBU1MiKQplbWl0KCJQUkVERUNFU1NPUl9QUk9EMjIwX0NMT1NFRCIsVHJ1ZSkKZW1pdCgiUFJFREVDRVNTT1JfQ09NTUFORF9JRCIsIk5FV0ZJLTI2MDkyMS1ORVdGRE9NLVBST0QyMjAtUkVDT1ZFUlkzOTciKQoKIyBFeGFjdCBjdXJyZW50IEdpdCBndWFyZC4KcmMxLGJyYW5jaCxlMT1ydW4oWyIvdXNyL2Jpbi9naXQiLCItLW5vLW9wdGlvbmFsLWxvY2tzIiwiLUMiLHN0cihXVCksImJyYW5jaCIsIi0tc2hvdy1jdXJyZW50Il0pCnJjMixoZWFkLGUyPXJ1bihbIi91c3IvYmluL2dpdCIsIi0tbm8tb3B0aW9uYWwtbG9ja3MiLCItQyIsc3RyKFdUKSwicmV2LXBhcnNlIiwiSEVBRCJdKQpyYzMsc3RhdHVzLGUzPXJ1bihbIi91c3IvYmluL2dpdCIsIi0tbm8tb3B0aW9uYWwtbG9ja3MiLCItQyIsc3RyKFdUKSwic3RhdHVzIiwiLS1wb3JjZWxhaW49djEiLCItLXVudHJhY2tlZC1maWxlcz1hbGwiXSkKcmM0LHJlbW90ZSxlND1ydW4oWyIvdXNyL2Jpbi9naXQiLCItLW5vLW9wdGlvbmFsLWxvY2tzIiwiLUMiLHN0cihXVCksImxzLXJlbW90ZSIsIm9yaWdpbiIsInJlZnMvaGVhZHMvIitFWFBFQ1RFRF9CUkFOQ0hdKQpyZW1vdGVfaGVhZD1yZW1vdGUuc3BsaXQoKVswXSBpZiByZW1vdGUuc3RyaXAoKSBlbHNlICIiCmdpdF9zdGF0ZT17ImJyYW5jaCI6YnJhbmNoLnN0cmlwKCksImhlYWQiOmhlYWQuc3RyaXAoKSwiY2xlYW4iOm5vdCBib29sKHN0YXR1cy5zdHJpcCgpKSwicmVtb3RlIjpyZW1vdGVfaGVhZCwicmNzIjpbcmMxLHJjMixyYzMscmM0XX0KZW1pdCgiR0lUX1NUQVRFIixnaXRfc3RhdGUpCgojIFZNMjEwIGFuZCBjbHVzdGVyIGludmVudG9yeSwgc2FuaXRpemVkLgpyYyxyb3dzX3MsZXJyPXJ1bihbIi91c3IvYmluL3B2ZXNoIiwiZ2V0IiwiL2NsdXN0ZXIvcmVzb3VyY2VzIiwiLS10eXBlIiwidm0iLCItLW91dHB1dC1mb3JtYXQiLCJqc29uIl0pCnJvd3M9anNvbi5sb2Fkcyhyb3dzX3MpIGlmIHJjPT0wIGVsc2UgW10Kdm0yMTA9W3IgZm9yIHIgaW4gcm93cyBpZiBpc2luc3RhbmNlKHIsZGljdCkgYW5kIHN0cihyLmdldCgidm1pZCIpKT09IjIxMCJdCnNhZmVfdm0yMTA9W10KZm9yIHIgaW4gdm0yMTA6CiAgICBzYWZlX3ZtMjEwLmFwcGVuZCh7azpyLmdldChrKSBmb3IgayBpbiAoInZtaWQiLCJub2RlIiwibmFtZSIsInN0YXR1cyIsInR5cGUiLCJtYXhkaXNrIiwibWF4bWVtIiwidXB0aW1lIikgaWYgayBpbiByfSkKZW1pdCgiVk0yMTBfQ0xVU1RFUiIseyJyYyI6cmMsInJvd3MiOnNhZmVfdm0yMTB9KQoKcmMscXMscWU9cnVuKFsiL3Vzci9zYmluL3FtIiwic3RhdHVzIiwiMjEwIl0pCmVtaXQoIlZNMjEwX1FNX1NUQVRVUyIseyJyYyI6cmMsInN0ZG91dCI6cXMuc3RyaXAoKVs6MTIwXSwic3RkZXJyX3NoYTI1NiI6c2hhX2J5dGVzKHFlLmVuY29kZSgpKX0pCgpyYyxxYyxxZT1ydW4oWyIvdXNyL3NiaW4vcW0iLCJjb25maWciLCIyMTAiXSkKY2ZnPXt9CmlmIHJjPT0wOgogICAga2VlcD17Im5hbWUiLCJhZ2VudCIsImJvb3QiLCJjb3JlcyIsIm1lbW9yeSIsIm9zdHlwZSIsInNjc2lodyIsIm9uYm9vdCIsInNjc2kwIiwiaWRlMiIsInNlcmlhbDAifQogICAgZm9yIGxpbmUgaW4gcWMuc3BsaXRsaW5lcygpOgogICAgICAgIGlmICI6IiBpbiBsaW5lOgogICAgICAgICAgICBrLHY9bGluZS5zcGxpdCgiOiIsMSkKICAgICAgICAgICAgaWYgayBpbiBrZWVwOgogICAgICAgICAgICAgICAgY2ZnW2tdPXYuc3RyaXAoKQplbWl0KCJWTTIxMF9DT05GSUdfU0FGRSIseyJyYyI6cmMsImNvbmZpZyI6Y2ZnLCJzdGRlcnJfc2hhMjU2IjpzaGFfYnl0ZXMocWUuZW5jb2RlKCkpfSkKCiMgRnJlZSBpc29sYXRlZCByZXN0b3JlIFZNSUQgY2FuZGlkYXRlcy4KdXNlZD17aW50KHIuZ2V0KCJ2bWlkIikpIGZvciByIGluIHJvd3MgaWYgaXNpbnN0YW5jZShyLGRpY3QpIGFuZCBzdHIoci5nZXQoInZtaWQiLCIiKSkuaXNkaWdpdCgpfQpjYW5kaWRhdGVzPVtpIGZvciBpIGluIHJhbmdlKDkyMTAsOTIzMSkgaWYgaSBub3QgaW4gdXNlZF1bOjEwXQplbWl0KCJSRVNUT1JFX1RFTVBfVk1JRF9DQU5ESURBVEVTIixjYW5kaWRhdGVzKQoKIyBTdG9yYWdlIGNhcGFjaXR5IHdpdGhvdXQgcGF0aHMvYWRkcmVzc2VzLgpyYyxwc3MscHNlPXJ1bihbIi91c3IvYmluL3B2ZXNtIiwic3RhdHVzIiwiLS1vdXRwdXQtZm9ybWF0IiwianNvbiJdKQpzdG9yPVtdCmlmIHJjPT0wOgogICAgdHJ5OgogICAgICAgIGZvciByIGluIGpzb24ubG9hZHMocHNzKToKICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShyLGRpY3QpOgogICAgICAgICAgICAgICAgc3Rvci5hcHBlbmQoe2s6ci5nZXQoaykgZm9yIGsgaW4gKCJzdG9yYWdlIiwidHlwZSIsImFjdGl2ZSIsInRvdGFsIiwidXNlZCIsImF2YWlsIiwiY29udGVudCIpIGlmIGsgaW4gcn0pCiAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgIHBhc3MKZW1pdCgiUFZFX1NUT1JBR0VfU0FGRSIseyJyYyI6cmMsInJvd3MiOnN0b3IsInN0ZGVycl9zaGEyNTYiOnNoYV9ieXRlcyhwc2UuZW5jb2RlKCkpfSkKCiMgSGVscGVyIHN0YXRpYyBzb3VyY2UgY29udHJhY3RzIG9ubHkuIEhlbHBlcnMgYXJlIE5PVCBleGVjdXRlZC4KaGVscGVyX3JlcG9ydHM9W10KbWlzc2luZz1bXQpmb3IgcCBpbiBIRUxQRVJTOgogICAgdHJ5OgogICAgICAgIGhlbHBlcl9yZXBvcnRzLmFwcGVuZChzb3VyY2VfY29udHJhY3QocCkpCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgbWlzc2luZy5hcHBlbmQoeyJwYXRoIjpwLCJjbGFzcyI6dHlwZShlKS5fX25hbWVfX30pCmVtaXQoIkJBQ0tVUF9SRVNUT1JFX0hFTFBFUlMiLGhlbHBlcl9yZXBvcnRzKQplbWl0KCJCQUNLVVBfUkVTVE9SRV9IRUxQRVJfTUlTU0lORyIsbWlzc2luZykKCnVuaXRfcmVwb3J0cz1bXQpmb3IgcCBpbiBVTklUUzoKICAgIHRyeToKICAgICAgICB1bml0X3JlcG9ydHMuYXBwZW5kKHNvdXJjZV9jb250cmFjdChwKSkKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICB1bml0X3JlcG9ydHMuYXBwZW5kKHsicGF0aCI6cCwicmVhZCI6IlVOQVZBSUxBQkxFIiwiY2xhc3MiOnR5cGUoZSkuX19uYW1lX199KQplbWl0KCJCQUNLVVBfUkVTVE9SRV9VTklUUyIsdW5pdF9yZXBvcnRzKQoKIyBCYWNrdXBWMiBjb25maWcgY29udHJhY3RzLCBzY3J1YmJlZC4KY29uZmlnX3JlcG9ydHM9W10KZm9yIHAgaW4gQ09ORklHUzoKICAgIHRyeToKICAgICAgICBvYmosbWV0YT1zYWZlX2pzb24ocCkKICAgICAgICBjb25maWdfcmVwb3J0cy5hcHBlbmQoeyJtZXRhIjptZXRhLCJzYWZlIjpzY3J1Yl9vYmoob2JqKX0pCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgY29uZmlnX3JlcG9ydHMuYXBwZW5kKHsicGF0aCI6cCwicmVhZCI6IlVOQVZBSUxBQkxFX09SX0lOVkFMSUQiLCJjbGFzcyI6dHlwZShlKS5fX25hbWVfX30pCmVtaXQoIkJBQ0tVUFYyX0NPTkZJR19DT05UUkFDVFMiLGNvbmZpZ19yZXBvcnRzKQoKIyByY2xvbmUgaWRlbnRpdHkgb25seSwgbm8gY2xvdWQgcmVhZHMuCnJjbG9uZT0iL3Vzci9iaW4vcmNsb25lIgppZiBQYXRoKHJjbG9uZSkuaXNfZmlsZSgpOgogICAgZW1pdCgiUkNMT05FX0JJTkFSWV9TSEEyNTYiLGhhc2hsaWIuc2hhMjU2KFBhdGgocmNsb25lKS5yZWFkX2J5dGVzKCkpLmhleGRpZ2VzdCgpKQogICAgcmMscmVtLGVyZT1ydW4oW3JjbG9uZSwibGlzdHJlbW90ZXMiXSx0aW1lb3V0PTIwKQogICAgbmFtZXM9W3guc3RyaXAoKS5yc3RyaXAoIjoiKSBmb3IgeCBpbiByZW0uc3BsaXRsaW5lcygpIGlmIHguc3RyaXAoKV0KICAgIGNyeXB0PVt4IGZvciB4IGluIG5hbWVzIGlmIHguZW5kc3dpdGgoIi1jcnlwdCIpXQogICAgZW1pdCgiUkNMT05FX1JFTU9URVNfU0FGRSIseyJyYyI6cmMsImNvdW50IjpsZW4obmFtZXMpLCJjcnlwdF9jb3VudCI6bGVuKGNyeXB0KSwiY3J5cHRfbmFtZXMiOmNyeXB0LCJzdGRlcnJfc2hhMjU2IjpzaGFfYnl0ZXMoZXJlLmVuY29kZSgpKX0pCmVsc2U6CiAgICBlbWl0KCJSQ0xPTkVfUkVNT1RFU19TQUZFIix7InJjIjoxMjcsImNvdW50IjowLCJjcnlwdF9jb3VudCI6MH0pCgojIENhbmRpZGF0ZSB2ZXJpZmllciBzY3JpcHRzIGZyb20gY3VycmVudCBhY2NlcHRlZCB3b3JrdHJlZTsgc3RhdGljIG1ldGFkYXRhIG9ubHkuCnZlcmlmaWVycz1bXQpzcD1XVC8ic2NyaXB0cyIKaWYgc3AuaXNfZGlyKCk6CiAgICBmb3IgcCBpbiBzb3J0ZWQoc3AuaXRlcmRpcigpKToKICAgICAgICBpZiBub3QgcC5pc19maWxlKCkgb3IgcC5pc19zeW1saW5rKCk6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgbj1wLm5hbWUubG93ZXIoKQogICAgICAgIGlmICJ2ZXJpZnkiIG5vdCBpbiBuIGFuZCAiYWNjZXB0IiBub3QgaW4gbiBhbmQgInJlc3RvcmUiIG5vdCBpbiBuOgogICAgICAgICAgICBjb250aW51ZQogICAgICAgIGI9cC5yZWFkX2J5dGVzKCkKICAgICAgICB0ZXh0PWIuZGVjb2RlKCJ1dGYtOCIsInJlcGxhY2UiKQogICAgICAgIHRlcm1zPVtdCiAgICAgICAgZm9yIG5vLGxpbmUgaW4gZW51bWVyYXRlKHRleHQuc3BsaXRsaW5lcygpLDEpOgogICAgICAgICAgICBpZiByZS5zZWFyY2gociIoP2kpKHByb2R1Y3Rpb258cmVzdG9yZXx4ZW5mb3JvfHBvcnRhbHxkb2dzfGV2ZW50c3xtYXB8cGVkaWdyZWV8a2VubmVsc3xtZWRpY2FsfHJlc291cmNlfGdhbGxlcnl8cHdhfGVycm9yfGNyb258dGVsZWdyYW18bm90aWZ5KSIsbGluZSk6CiAgICAgICAgICAgICAgICBzPXNhbml0aXplX2xpbmUobGluZSkKICAgICAgICAgICAgICAgIGlmIHM6CiAgICAgICAgICAgICAgICAgICAgdGVybXMuYXBwZW5kKHsibGluZSI6bm8sInRleHQiOnN9KQogICAgICAgICAgICBpZiBsZW4odGVybXMpPj0zMDogYnJlYWsKICAgICAgICB2ZXJpZmllcnMuYXBwZW5kKHsibmFtZSI6cC5uYW1lLCJieXRlcyI6bGVuKGIpLCJzaGEyNTYiOnNoYV9ieXRlcyhiKSwiY29udHJhY3RfbGluZXMiOnRlcm1zfSkKZW1pdCgiQ1VSUkVOVF9SRVBPX1ZFUklGSUVSUyIsdmVyaWZpZXJzKQoKIyBDdXJyZW50IHNlcnZpY2Ugc3RhdGUgb25seS4KdW5pdHNfc3RhdGU9e30KZm9yIHVuaXQgaW4gKCJob21lbGFiLXZtLWNsb3VkLXF1b3J1bS1xdWV1ZS5zZXJ2aWNlIiwiaG9tZWxhYi12bS1jbG91ZC1xdW9ydW0tcXVldWUudGltZXIiKToKICAgIGE9cnVuKFsiL3Vzci9iaW4vc3lzdGVtY3RsIiwiaXMtYWN0aXZlIix1bml0XSx0aW1lb3V0PTE1KQogICAgZT1ydW4oWyIvdXNyL2Jpbi9zeXN0ZW1jdGwiLCJpcy1lbmFibGVkIix1bml0XSx0aW1lb3V0PTE1KQogICAgdW5pdHNfc3RhdGVbdW5pdF09eyJhY3RpdmVfcmMiOmFbMF0sImFjdGl2ZSI6YVsxXS5zdHJpcCgpLCJlbmFibGVkX3JjIjplWzBdLCJlbmFibGVkIjplWzFdLnN0cmlwKCl9CmVtaXQoIkJBQ0tVUF9VTklUX1NUQVRFIix1bml0c19zdGF0ZSkKCiMgRGVjaWRlIG9ubHkgd2hldGhlciBleGFjdCBjdXJyZW50IGNvbnRyYWN0IGlzIGNhcHR1cmVkLgpjb250cmFjdF9saW5lcz1zdW0obGVuKHguZ2V0KCJjb250cmFjdF9saW5lcyIsW10pKSBmb3IgeCBpbiBoZWxwZXJfcmVwb3J0cyBpZiBpc2luc3RhbmNlKHgsZGljdCkpCnZtX29rPShyYzE9PTAgYW5kIHJjMj09MCBhbmQgcmMzPT0wIGFuZCByYzQ9PTAgYW5kIGJyYW5jaC5zdHJpcCgpPT1FWFBFQ1RFRF9CUkFOQ0ggYW5kIGhlYWQuc3RyaXAoKT09RVhQRUNURURfSEVBRCBhbmQgcmVtb3RlX2hlYWQ9PUVYUEVDVEVEX0hFQUQgYW5kIG5vdCBzdGF0dXMuc3RyaXAoKSBhbmQgbGVuKHZtMjEwKT09MSBhbmQgcXMuc3RyaXAoKT09InN0YXR1czogcnVubmluZyIpCnRvb2xfb2s9KG5vdCBtaXNzaW5nIGFuZCBjb250cmFjdF9saW5lcz4wIGFuZCBsZW4oY2FuZGlkYXRlcyk+MCkKY2ZnX29rPWFueShpc2luc3RhbmNlKHgsZGljdCkgYW5kICJtZXRhIiBpbiB4IGZvciB4IGluIGNvbmZpZ19yZXBvcnRzKQppZiB2bV9vayBhbmQgdG9vbF9vayBhbmQgY2ZnX29rOgogICAgZW1pdCgiREVDSVNJT04iLCJQQVNTX0RSMjIxX1BSRUZMSUdIVF9DVVJSRU5UX0JBQ0tVUF9SRVNUT1JFX0NPTlRSQUNUX0NBUFRVUkVEIikKICAgIGVtaXQoIk5FWFRfR0FURSIsIlJVTl9EUjIyMV9GSU5BTF9DVVJSRU5UX1BST0RVQ1RJT05fQkFDS1VQX1JFU1RPUkVfQUNDRVBUQU5DRSIpCiAgICBlbWl0KCJBQ1RJVkVfTUFKT1JfU1RBR0UiLCJEUjIyMSIpCiAgICBlbWl0KCJNQUpPUl9TVEFHRVNfUkVNQUlOSU5HIiwxKQogICAgcmNfZmluYWw9MAplbHNlOgogICAgZW1pdCgiREVDSVNJT04iLCJIT0xEX0RSMjIxX1BSRUZMSUdIVF9DT05UUkFDVF9JTkNPTVBMRVRFIikKICAgIGVtaXQoIk5FWFRfR0FURSIsIlJFQ09OQ0lMRV9PTkxZX01JU1NJTkdfRFIyMjFfQ09OVFJBQ1QiKQogICAgZW1pdCgiQUNUSVZFX01BSk9SX1NUQUdFIiwiRFIyMjEiKQogICAgZW1pdCgiTUFKT1JfU1RBR0VTX1JFTUFJTklORyIsMSkKICAgIHJjX2ZpbmFsPTMKCmVtaXQoIkhFTFBFUlNfRVhFQ1VURUQiLDApCmVtaXQoIkNMT1VEX1JFQURTIiwwKQplbWl0KCJDTE9VRF9XUklURVMiLDApCmVtaXQoIlZNX01VVEFUSU9OUyIsMCkKZW1pdCgiUFJPRFVDVElPTl9NVVRBVElPTiIsRmFsc2UpCmVtaXQoIkhPTUVMQUJfUkVTVUxUX0NPTlRSQUNUIix7InZlcnNpb24iOjEsImNvbW1hbmRfaWQiOkNJRCwic3RhdHVzIjoiT0siIGlmIHJjX2ZpbmFsPT0wIGVsc2UgIkZBSUwiLCJjaGFuZ2VzX21hZGUiOkZhbHNlLCJyb2xsYmFja19zdGFydGVkIjpGYWxzZSwicm9sbGJhY2tfcmVzdG9yZWQiOk5vbmV9KQpwcmludCgiRFIyMjFfUFJFRkxJR0hUMzk4X0VORD10cnVlIixmbHVzaD1UcnVlKQpzeXMuZXhpdChyY19maW5hbCkK\"),\"<dr221-preflight398>\",\"exec\"))\n ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"<dr221-preflight398>\", line 164, in <module>\n File \"<dr221-preflight398>\", line 37, in run\n File \"/usr/lib/python3.13/subprocess.py\", line 554, in run\n with Popen(*popenargs, **kwargs) as process:\n ~~~~~^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/lib/python3.13/subprocess.py\", line 1039, in __init__\n self._execute_child(args, executable, preexec_fn, close_fds,\n ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n pass_fds, cwd, env,\n ^^^^^^^^^^^^^^^^^^^\n ...<5 lines>...\n gid, gids, uid, umask,\n ^^^^^^^^^^^^^^^^^^^^^^\n start_new_session, process_group)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/lib/python3.13/subprocess.py\", line 1857, in _execute_child\n self._posix_spawn(args, executable, env, restore_signals, close_fds,\n ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n p2cread, p2cwrite,\n ^^^^^^^^^^^^^^^^^^\n c2pread, c2pwrite,\n ^^^^^^^^^^^^^^^^^^\n errread, errwrite)\n ^^^^^^^^^^^^^^^^^^\n File \"/usr/lib/python3.13/subprocess.py\", line 1801, in _posix_spawn\n self.pid = os.posix_spawn(executable, args, env, **kwargs)\n ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nFileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pvesm'\n"
}