====== r4_vars.php ====== PD9waHAKCiAgICAkcjRfY2ZnX3N0cmlwX2Zyb21fdXJpID0gIiI7CgogICAgJHI0X2NmZ19tYXhfbG9nX3NpemUgPSA0OwoKICAgICRyNF9jZmdfZXJyb3JfcmVwb3J0aW5nID0gRV9BTEw7CgogICAgJHI0X2NmZ190ZXN0cGF0dGVybiA9ICI/eHp4IjsKCiAgICAkcjRfY2ZnX3NlcGFyYXRvciA9ICI8YnI+IjsKCiAgICAkcjRfY2ZnX2xpbmtfZW5jb2RpbmcgPSAiQ1AxMjUxIjsKCiAgICAkcjRfY2ZnX2NtcyA9ICJkZWZhdWx0IjsKCiAgICAkcjRfY2ZnX3Rlc3R0ZXh0ID0gIltbUjRfUExBQ0VIT0xERVJdXSI7CgogICAgJHI0X2NmZ19tdWx0aWRvbWFpbiA9IEZhbHNlOwoKICAgICRyNF9jZmdfbG9nZ2luZ195YW5kZXggPSBUcnVlOwoKICAgICRyNF9jZmdfbG9nZ2luZ19nb29nbGUgPSBUcnVlOwoKICAgICRyNF9jZmdfZGVmYXVsdF9lbmNvZGluZyA9ICJDUDEyNTEiOwoKICAgICRyNF9jZmdfZG9uZ2xlID0gImRlYjU4MTNiNDE3ZDM4Yzc3MzJlM2I3OTc0ZGY2OWNlIjsKCg== ====== r4_version ====== My4w ====== razgon2006return.php ====== PD9waHAKICAgIC8vIHI0IHYzLjAKICAgICRyNF9jZmdfcm9vdCA9IGRpcm5hbWUoX19GSUxFX18pOwogICAgJHI0X2NmZ19yb290IC49ICcvJzsKICAgICRyNF9jZmdfcm9vdCA9IHByZWdfcmVwbGFjZSgnfChbL10rKXxpcycsICcvJywgJHI0X2NmZ19yb290KTsKCiAgICBpbmNsdWRlKCJ7JHI0X2NmZ19yb290fXI0X3ZhcnMucGhwIik7CgogICAgaW5jbHVkZV9vbmNlKCJ7JHI0X2NmZ19yb290fXI0X2xpYnMucGhwIik7CiAgICBpbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cjRfZ2V0SGFzaC5waHAiKTsKCiAgICAkcjRfZXJyb3JfcmVwb3J0aW5nID0gZXJyb3JfcmVwb3J0aW5nKCRyNF9jZmdfZXJyb3JfcmVwb3J0aW5nKTsKCiAgICAvLyBTQUZFIE1PREUKICAgIGlmICghaXNzZXQoJHNhZmVfbW9kZSkpIHsKICAgICAgICAkc2FmZV9tb2RlID0gY2hlY2tfc2FmZV9tb2RlKCRyNF9jZmdfcm9vdCk7CiAgICB9CgogICAgaWYgKCRzYWZlX21vZGUpIHsKICAgICAgICBpbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cGNsZXJyb3IubGliLnBocDMiKTsKICAgICAgICBpbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cGNsdHJhY2UubGliLnBocDMiKTsKICAgICAgICBpbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cGNsdGFyLmxpYi5waHAzIik7CiAgICB9CgogICAgLy8gTXVsdGlEb21haW5zCiAgICBpZiAoaXNzZXQoJHI0X2NmZ19tdWx0aWRvbWFpbikgJiYgJHI0X2NmZ19tdWx0aWRvbWFpbiAmJiAhJHNhZmVfbW9kZSkgewogICAgICAgICRyNF9kb21haW4gPSBwcmVnX3JlcGxhY2UoJyNed3d3XC4jaXNtJywgJycsICRfU0VSVkVSWydTRVJWRVJfTkFNRSddKS4nLyc7CgogICAgICAgIGlmICghZmlsZV9leGlzdHMoInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59IikpIHsKICAgICAgICAgICAgbWtkaXIoInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59IiwgMDc1NSk7CiAgICAgICAgICAgIGNobW9kKCJ7JHI0X2NmZ19yb290fXskcjRfZG9tYWlufSIsIDA3NTUpOwogICAgICAgIH0KCiAgICAgICAgJHNhZmVfbW9kZV9saW5rc19maWxlID0gInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59bGlua3MudGFyIjsKICAgIH0KICAgIGVsc2VpZiAoaXNzZXQoJHI0X2NmZ19tdWx0aWRvbWFpbikgJiYgJHI0X2NmZ19tdWx0aWRvbWFpbikgewogICAgICAgICRyNF9kb21haW4gPSBwcmVnX3JlcGxhY2UoJyNed3d3XC4jaXNtJywgJycsICRfU0VSVkVSWydTRVJWRVJfTkFNRSddKS4nXyc7CiAgICAgICAgJHNhZmVfbW9kZV9saW5rc19maWxlID0gInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59bGlua3MudGFyIjsKICAgICAgICAkcjRfZG9tYWluID0gJyc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkcjRfZG9tYWluID0gJyc7CiAgICAgICAgJHNhZmVfbW9kZV9saW5rc19maWxlID0gInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59bGlua3MudGFyIjsKICAgIH0KCiAgICAvLyAkcjRfcnVyaQogICAgJHI0X3J1cmkgPSBlbXB0eSgkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgPyAnJyA6ICRfU0VSVkVSWydSRVFVRVNUX1VSSSddOwoKICAgIGlmIChpc3NldCgkcjRfY2ZnX2NtcykgJiYgaW5fYXJyYXkoc3RydG9sb3dlcigkcjRfY2ZnX2NtcyksIGFycmF5KCd3ZWJhc3lzdCcsICdqb29tbGEnKSkpIHsKICAgICAgICBpZiAoc3RycG9zKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSwgJ19fZnVybF9wYXRoJykgJiYgc3RycG9zKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSwgJ2Zyb250ZW5kJykpIHsKICAgICAgICAgICAgJHI0X3J1cmkgID0gJy8nIC4gc3RyX3JlcGxhY2UoJyYnLCAnPycsIHN0cl9yZXBsYWNlKCdfX2Z1cmxfcGF0aD0nLCAnJywgc3RyX3JlcGxhY2UoJyZmcm9udGVuZD0xJywgJycsICRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSkpKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKHN1YnN0cigkcjRfcnVyaSwgMCwgMSkgIT09ICcvJykgewogICAgICAgICRyNF9ydXJpID0gJy8nIC4gJHI0X3J1cmk7CiAgICB9CgogICAgaWYgKCFlbXB0eSgkcjRfY2ZnX3N0cmlwX2Zyb21fdXJpKSkgewogICAgICAgIHByZWdfcmVwbGFjZSgkcjRfY2ZnX3N0cmlwX2Zyb21fdXJpLCAnJywgJHI0X3J1cmkpOwogICAgfQoKICAgIC8vICRyNF9ydXJpMgogICAgaWYgKGtleV9leGlzdHMoJ1JFRElSRUNUX1VSTCcsICRfU0VSVkVSKSkgewogICAgICAgICRyNF9ydXJpMiA9IGVtcHR5KCRfU0VSVkVSWydSRURJUkVDVF9VUkwnXSkgPyAnJyA6ICRfU0VSVkVSWydSRURJUkVDVF9VUkwnXTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRyZXF1ZXN0X3VyaSA9IGdldGVudignUkVRVUVTVF9VUkknKTsKICAgICAgICAkcjRfcnVyaTIgPSBlbXB0eSgkcmVxdWVzdF91cmkpID8gJycgOiAkcmVxdWVzdF91cmk7CiAgICB9CgogICAgaWYgKHN1YnN0cigkcjRfcnVyaTIsIDAsIDEpICE9PSAnLycpIHsKICAgICAgICAkcjRfcnVyaTIgPSAnLycgLiAkcjRfcnVyaTI7CiAgICB9CgogICAgaWYgKCFlbXB0eSgkcjRfY2ZnX3N0cmlwX2Zyb21fdXJpKSl7CiAgICAgICAgcHJlZ19yZXBsYWNlKCRyNF9jZmdfc3RyaXBfZnJvbV91cmksICcnLCAkcjRfcnVyaTIpOwogICAgfQoKICAgIC8vICRyNF9oCiAgICAkcjRfaCA9IGVtcHR5KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgPyAnJyA6ICRfU0VSVkVSWydIVFRQX0hPU1QnXTsKCiAgICBpZiAoaXNzZXQoJHI0X2NmZ19tdWx0aWRvbWFpbikgJiYgJHI0X2NmZ19tdWx0aWRvbWFpbiAmJiAhJHNhZmVfbW9kZSkgewogICAgICAgICRyNF9oID0gcHJlZ19yZXBsYWNlKCcvXnd3d1wuL2lzbScsICcnLCAkcjRfaCk7CiAgICB9CgogICAgLy8gJHI0X3ByZXBhcmVkX3VyaQogICAgJHI0X3ByZXBhcmVkX3VyaSA9IHByZWdfcmVwbGFjZShhcnJheSgnI1sgXCssL1wuXSMnLCAnI1w/IycpLCBhcnJheSgnXycsICdfXycpLCAkcjRfcnVyaSk7CiAgICAkcjRfcHJlcGFyZWRfdXJpMiA9IGdldEhhc2goImh0dHA6Ly97JHI0X2h9eyRyNF9ydXJpfSIsICRyNF9jZmdfcm9vdCk7CiAgICAkcjRfcHJlcGFyZWRfdXJpMyA9IGdldEhhc2goImh0dHA6Ly97JHI0X2h9eyRyNF9ydXJpMn0iLCAkcjRfY2ZnX3Jvb3QpOwoKICAgICRyNF9saW5rc19maWxlID0gInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59eyRyNF9wcmVwYXJlZF91cml9LnJ6ZyI7CiAgICAkcjRfbGlua3NfZmlsZTIgPSAieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn17JHI0X3ByZXBhcmVkX3VyaTJ9LnJ6ZyI7CiAgICAkcjRfbGlua3NfZmlsZTMgPSAieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn17JHI0X3ByZXBhcmVkX3VyaTN9LnJ6ZyI7CgogICAgaWYgKCFlbXB0eSgkX0dFVFsncjRzaG93aGFzaCddKSkgewogICAgICAgIGV4aXQoJHI0X3ByZXBhcmVkX3VyaTIpOwogICAgfQoKICAgIC8vICRyNV9wcmVwYXJlZF91cmkKICAgICRyNV9wcmVwYXJlZF91cmkgPSBfcmVsYXRpdmVfdXJsX2hhc2goInskcjRfcnVyaX0iLCAieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn0iKTsKCiAgICBpZiAoaXNzZXQoJHI0X2NmZ19jbXMpICYmIGluX2FycmF5KHN0cnRvbG93ZXIoJHI0X2NmZ19jbXMpLCBhcnJheSgnam9vbWxhJykpKSB7CiAgICAgICAgaWYgKHN0cnBvcygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSwgJ29wdGlvbj1jb21fY29udGVudCcpKSB7CiAgICAgICAgICAgICRyNV9wcmVwYXJlZF91cmkgPSBfcmVsYXRpdmVfdXJsX2hhc2goInskcjRfcnVyaTJ9IiwgInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59Iik7CiAgICAgICAgfQogICAgfQoKICAgIGlmIChpc3NldCgkX0dFVFsncjVzaG93aGFzaCddKSkgewogICAgICAgIGV4aXQoJHI1X3ByZXBhcmVkX3VyaSk7CiAgICB9CgogICAgJHI1X2xpbmtzX2RpciA9ICJ7JHI0X2NmZ19yb290fXskcjRfZG9tYWlufWxpbmtzIjsKICAgICRyNV9saW5rc19zdWJkaXIgPSAkcjVfbGlua3NfZGlyLicvJy5zdWJzdHIoJHI1X3ByZXBhcmVkX3VyaSwgMCwgMik7CgogICAgLy8gU0FGRSBNT0RFCiAgICBpZiAoISRzYWZlX21vZGUpIHsKICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRyNV9saW5rc19kaXIpKSB7CiAgICAgICAgICAgIG1rZGlyKCRyNV9saW5rc19kaXIsIDA3NzcpOwogICAgICAgICAgICBjaG1vZCgkcjVfbGlua3NfZGlyLCAwNzc3KTsKICAgICAgICB9CgogICAgICAgIGlmICghZmlsZV9leGlzdHMoJHI1X2xpbmtzX3N1YmRpcikgJiYgZmlsZV9leGlzdHMoJHI1X2xpbmtzX2RpcikpIHsKICAgICAgICAgICAgbWtkaXIoJHI1X2xpbmtzX3N1YmRpciwgMDc3Nyk7CiAgICAgICAgICAgIGNobW9kKCRyNV9saW5rc19zdWJkaXIsIDA3NzcpOwogICAgICAgIH0KICAgIH0KCiAgICAkcjVfcHJlcGFyZWRfdXJpID0gInskcjVfbGlua3Nfc3ViZGlyfS97JHI1X3ByZXBhcmVkX3VyaX0iOwogICAgJHI1X2xpbmtzX2ZpbGUgPSAieyRyNV9wcmVwYXJlZF91cml9LnJ6ZyI7CgogICAgLy8gdGVjaGluZm8KICAgIGlmIChpc3NldCgkX0dFVFsncjV0ZWNoaW5mbyddKSkgewogICAgICAgIGVjaG8gIlwkcjRfY2ZnX3Jvb3Q9eyRyNF9jZmdfcm9vdH08YnI+IjsKICAgICAgICBlY2hvICJcJHI0X2RvbWFpbj17JHI0X2RvbWFpbn08YnI+IjsKICAgICAgICBlY2hvICJcJHNhZmVfbW9kZT0iLiBpbnR2YWwoJHNhZmVfbW9kZSkgLic8YnI+JzsKICAgICAgICBlY2hvICJcJHNhZmVfbW9kZV9saW5rc19maWxlPXskc2FmZV9tb2RlX2xpbmtzX2ZpbGV9KCIuIGludHZhbChmaWxlX2V4aXN0cygkc2FmZV9tb2RlX2xpbmtzX2ZpbGUpKSAuJyk8YnI+JzsKICAgICAgICBlY2hvICJcJHI0X3J1cmk9eyRyNF9ydXJpfTxicj4iOwogICAgICAgIGVjaG8gIlwkcjRfcnVyaTI9eyRyNF9ydXJpMn08YnI+IjsKICAgICAgICBlY2hvICJcJHI0X2xpbmtzX2ZpbGU9eyRyNF9saW5rc19maWxlfSgiLiBpbnR2YWwoZmlsZV9leGlzdHMoJHI0X2xpbmtzX2ZpbGUpKSAuJyk8YnI+JzsKICAgICAgICBlY2hvICJcJHI0X2xpbmtzX2ZpbGUyPXskcjRfbGlua3NfZmlsZTJ9KCIuIGludHZhbChmaWxlX2V4aXN0cygkcjRfbGlua3NfZmlsZTIpKSAuJyk8YnI+JzsKICAgICAgICBlY2hvICJcJHI0X2xpbmtzX2ZpbGUzPXskcjRfbGlua3NfZmlsZTN9KCIuIGludHZhbChmaWxlX2V4aXN0cygkcjRfbGlua3NfZmlsZTMpKSAuJyk8YnI+JzsKICAgICAgICBlY2hvICJcJHI1X2xpbmtzX2ZpbGU9eyRyNV9saW5rc19maWxlfSgiLiBpbnR2YWwoZmlsZV9leGlzdHMoJHI1X2xpbmtzX2ZpbGUpKSAuJyk8YnI+JzsKCiAgICAgICAgZXhpdCgpOwogICAgfQoKICAgIC8vICRyNF9zbG90CiAgICBpZiAoIWlzc2V0KCRyNF9zbG90KSkgewogICAgICAgIGlmIChpc3NldCgkcjRfY2ZnX2NtcykgJiYgaW5fYXJyYXkoc3RydG9sb3dlcigkcjRfY2ZnX2NtcyksIGFycmF5KCdtb2R4JykpKSB7CiAgICAgICAgICAgICRyNF9zbG90ID0gaXNzZXQoJHN0YXJ0ZnJvbSkgPyAkc3RhcnRmcm9tIDogMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRyNF9zbG90ID0gaXNzZXQoJF9HRVRbJ3N0YXJ0ZnJvbSddKSA/ICRfR0VUWydzdGFydGZyb20nXSA6IDA7CiAgICAgICAgfQogICAgfQoKICAgIGlmICghaXNzZXQoJHI0X2xpbmtzKSkgewogICAgICAgICRyNF9saW5rcyA9IG51bGw7CiAgICB9CgogICAgJGxpbmsgPSAnJzsKCiAgICAkcmVkX3F1ZXJ5X3N0cmluZyA9IGtleV9leGlzdHMoJ1JFRElSRUNUX1FVRVJZX1NUUklORycsICRfU0VSVkVSKSA/ICRfU0VSVkVSWydSRURJUkVDVF9RVUVSWV9TVFJJTkcnXSA6ICcnOwoKICAgIGlmIChmYWxzZSAhPT0gc3RycG9zKCRyNF9ydXJpLCAkcjRfY2ZnX3Rlc3RwYXR0ZXJuKQogICAgICAgIHx8IGZhbHNlICE9PSBzdHJwb3MoJHI0X3J1cmkyLCAkcjRfY2ZnX3Rlc3RwYXR0ZXJuKQogICAgICAgIHx8ICFlbXB0eSgkX0dFVFtzdHJfcmVwbGFjZSgnPycsICcnLCAkcjRfY2ZnX3Rlc3RwYXR0ZXJuKV0pCiAgICAgICAgfHwgZmFsc2UgIT09IHN0cnBvcygkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10sICRyNF9jZmdfdGVzdHBhdHRlcm4pCiAgICAgICAgfHwgZmFsc2UgIT09IHN0cnBvcygkcmVkX3F1ZXJ5X3N0cmluZywgc3RyX3JlcGxhY2UoJz8nLCAnJywgJHI0X2NmZ190ZXN0cGF0dGVybikpCiAgICApIHsKICAgICAgICAkbGluayA9ICI8YSBocmVmPVwiI1wiIGNsYXNzPVwiW1tSNF8yX1BMQUNFSE9MREVSXV1cIj57JHI0X2NmZ190ZXN0dGV4dH08L2E+eyRyNF9jZmdfc2VwYXJhdG9yfSI7CiAgICAgICAgJGxpbmsgPSBpY29udl9saW5rKCRsaW5rLCAkcjRfY2ZnX2RlZmF1bHRfZW5jb2RpbmcsICRyNF9jZmdfbGlua19lbmNvZGluZyk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBpZiAoISRyNF9saW5rcwogICAgICAgICAgICAmJiAoZmlsZV9leGlzdHMoJHI0X2xpbmtzX2ZpbGUpIHx8IGZpbGVfZXhpc3RzKCRyNF9saW5rc19maWxlMikgfHwgZmlsZV9leGlzdHMoJHI0X2xpbmtzX2ZpbGUzKSB8fCBmaWxlX2V4aXN0cygkcjVfbGlua3NfZmlsZSkKICAgICAgICAgICAgfHwgKGZpbGVfZXhpc3RzKCRzYWZlX21vZGVfbGlua3NfZmlsZSkgJiYgJHNhZmVfbW9kZSkpCiAgICAgICAgKSB7CiAgICAgICAgICAgICRyNF9saW5rcyA9IGFycmF5KCk7CgogICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHI0X2xpbmtzX2ZpbGUpICYmICFmaWxlX2V4aXN0cygkcjRfbGlua3NfZmlsZTIpKSB7CiAgICAgICAgICAgICAgICByZW5hbWUoJHI0X2xpbmtzX2ZpbGUsICRyNF9saW5rc19maWxlMik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkcjRfbGlua3NfZmlsZTIpICYmICFmaWxlX2V4aXN0cygkcjRfbGlua3NfZmlsZTMpKSB7CiAgICAgICAgICAgICAgICByZW5hbWUoJHI0X2xpbmtzX2ZpbGUyLCAkcjRfbGlua3NfZmlsZTMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHI0X2xpbmtzX2ZpbGUzKSAmJiAhZmlsZV9leGlzdHMoJHI1X2xpbmtzX2ZpbGUpKSB7CiAgICAgICAgICAgICAgICByZW5hbWUoJHI0X2xpbmtzX2ZpbGUzLCAkcjVfbGlua3NfZmlsZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFNBRkUgTU9ERQogICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHNhZmVfbW9kZV9saW5rc19maWxlKSAmJiAkc2FmZV9tb2RlKSB7CiAgICAgICAgICAgICAgICAkcF90YXJuYW1lID0gJHNhZmVfbW9kZV9saW5rc19maWxlOwogICAgICAgICAgICAgICAgJHBfbGlzdCA9IGFycmF5KGJhc2VuYW1lKCRyNV9saW5rc19maWxlKSk7CiAgICAgICAgICAgICAgICAkcF9wYXRoID0gJHI0X2NmZ19yb290OwogICAgICAgICAgICAgICAgJHBfcmVtb3ZlX3BhdGggPSAnJzsKICAgICAgICAgICAgICAgICRwX21vZGUgPSAndGFyJzsKCiAgICAgICAgICAgICAgICBQY2xUYXJFeHRyYWN0TGlzdCgkcF90YXJuYW1lLCAkcF9saXN0LCAkcF9wYXRoLCAkcF9yZW1vdmVfcGF0aCwgJHBfbW9kZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyNV9saW5rc19iYXNlZmlsZSA9ICJ7JHI0X2NmZ19yb290fSIuYmFzZW5hbWUoJHI1X2xpbmtzX2ZpbGUpOwoKICAgICAgICAgICAgaWYgKCRzYWZlX21vZGUpIHsKICAgICAgICAgICAgICAgICRyNF9saW5rc19maWxlX2NvbnRlbnRzID0gZmlsZSgkcjVfbGlua3NfYmFzZWZpbGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHI0X2xpbmtzX2ZpbGVfY29udGVudHMgPSBmaWxlKCRyNV9saW5rc19maWxlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRyNV9saW5rc19iYXNlZmlsZSkgJiYgZmlsZV9leGlzdHMoJHNhZmVfbW9kZV9saW5rc19maWxlKSAmJiAkc2FmZV9tb2RlKSB7CiAgICAgICAgICAgICAgICB1bmxpbmsoJHI1X2xpbmtzX2Jhc2VmaWxlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHI0X2luZm9fc3RyID0gdHJpbShhcnJheV9zaGlmdCgkcjRfbGlua3NfZmlsZV9jb250ZW50cykpOwogICAgICAgICAgICAkcjRfaW5mb19maWVsZHMgPSBleHBsb2RlKCd8JywgJHI0X2luZm9fc3RyKTsKICAgICAgICAgICAgJHI0X2NlbGxfY29uZmlnID0gYXJyYXkoKTsKCiAgICAgICAgICAgIGlmIChpc3NldCgkcjRfaW5mb19maWVsZHNbMV0pKSB7CiAgICAgICAgICAgICAgICAkcjRfY2VsbF9jb25maWcgPSB1bnNlcmlhbGl6ZSgkcjRfaW5mb19maWVsZHNbMV0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3JlYWNoICgkcjRfbGlua3NfZmlsZV9jb250ZW50cyBhcyAkcjRfbGluZSkgewogICAgICAgICAgICAgICAgJHI0X2xpbmUgPSB0cmltKCRyNF9saW5lKTsKCiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRyNF9saW5lKSkgewogICAgICAgICAgICAgICAgICAgICRyNF9saW5rc1tdID0gJHI0X2xpbmU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRyNF9saW5kZXggPSAkcjRfc2xvdDsKCiAgICAgICAgaWYgKCFlbXB0eSgkcjRfY2VsbF9jb25maWcpKSB7CiAgICAgICAgICAgICRyNF9saW5kZXggPSBhcnJheV9zZWFyY2goJHI0X3Nsb3QsICRyNF9jZWxsX2NvbmZpZyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHI0X2xpbmRleCAhPT0gZmFsc2UgJiYgIWVtcHR5KCRyNF9saW5rc1skcjRfbGluZGV4XSkpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRyNF9jZmdfY21zKSAmJiBpbl9hcnJheShzdHJ0b2xvd2VyKCRyNF9jZmdfY21zKSwgYXJyYXkoJ3lhbmRleCcpKSkgewogICAgICAgICAgICAgICAgJGxpbmtfeWQgPSBleHBsb2RlKCc8JywgJHI0X2xpbmtzWyRyNF9saW5kZXhdKTsKICAgICAgICAgICAgICAgICRsaW5rX2RvbSA9IGV4cGxvZGUoJyI+JywgJGxpbmtfeWRbMV0pOwogICAgICAgICAgICAgICAgJGxpbmtfdGV4dCA9IGV4cGxvZGUoJz4nLCAkbGlua195ZFsyXSk7CiAgICAgICAgICAgICAgICAkbGlua19kb20yID0gZXhwbG9kZSgnPSInLCAkbGlua19kb21bMF0pOwogICAgICAgICAgICAgICAgJGxpbmsgPSAnPHNwYW4gc3R5bGU9ImNvbG9yOiM0NDQ0REE7Ij4nLiRsaW5rX3lkWzBdLic8L3NwYW4+PGJyPic7CiAgICAgICAgICAgICAgICAkbGluayAuPSAnPCcuJGxpbmtfeWRbMV0uJzwvYT4nOwogICAgICAgICAgICAgICAgJGxpbmsgLj0gJGxpbmtfdGV4dFsxXS4nPGJyPic7CiAgICAgICAgICAgICAgICAkbWF0Y2hlcyA9IGFycmF5KCk7CgogICAgICAgICAgICAgICAgcHJlZ19tYXRjaCgiL14oaHR0cDpcL1wvKT8oW15cL10rKS9pIiwgJGxpbmtfZG9tMlsxXSwgJG1hdGNoZXMpOyAvLyDQmNC30LLQu9C10LrQsNC10Lwg0LjQvNGPINGF0L7RgdGC0LAg0LjQtyBVUkwKCiAgICAgICAgICAgICAgICAkbGluayAuPSAnPHNwYW4gc3R5bGU9ImNvbG9yOiMxNzczMTc7IiA+Jy4kbWF0Y2hlc1syXS4nPC9zcGFuPic7CiAgICAgICAgICAgICAgICAkbGluayAuPSAnPGJyPjxicj4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGxpbmsgPSAkcjRfbGlua3NbJHI0X2xpbmRleF0gLiAkcjRfY2ZnX3NlcGFyYXRvcjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGxpbmsgPSBpY29udl9saW5rKCRsaW5rLCAkcjRfY2ZnX2RlZmF1bHRfZW5jb2RpbmcsICRyNF9jZmdfbGlua19lbmNvZGluZyk7CiAgICAgICAgfQogICAgfQoKICAgICRyNF91YSA9IGVtcHR5KCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkgPyAnJyA6ICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXTsKCiAgICAvLyBZYW5kZXggTG9nZ2luZwogICAgaWYgKCRyNF9jZmdfbG9nZ2luZ195YW5kZXggJiYgIWlzc2V0KCRyNF95YW5kZXhfbG9nZ2VkKSkgewogICAgICAgICRyNF95YW5kZXhfbG9nX2ZpbGUgPSAieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn1zZWVuYnl5YW5kZXgucnpnIjsKCiAgICAgICAgY2hlY2tfbG9nZmlsZSgkcjRfeWFuZGV4X2xvZ19maWxlLCAieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn0iLCAkcjRfY2ZnX21heF9sb2dfc2l6ZSk7CgogICAgICAgIGlmIChwcmVnX21hdGNoKCd+WWFuZGV4KEJvdHxEaXJlY3QpLzNcLjA7XHMrXCtodHRwfmlzeCcsICRyNF91YSkpIHsKICAgICAgICAgICAgaWYgKHdyaXRlX2xvZ2ZpbGUoJHI0X3lhbmRleF9sb2dfZmlsZSwgInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59IiwgJHI0X3J1cmkpKSB7CiAgICAgICAgICAgICAgICAkcjRfeWFuZGV4X2xvZ2dlZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gR29vZ2xlIExvZ2dpbmcKICAgIGlmICgkcjRfY2ZnX2xvZ2dpbmdfZ29vZ2xlICYmICFpc3NldCgkcjRfZ29vZ2xlX2xvZ2dlZCkpIHsKICAgICAgICAkcjRfZ29vZ2xlX2xvZ19maWxlID0gInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59c2VlbmJ5Z29vZ2xlLnJ6ZyI7CgogICAgICAgIGNoZWNrX2xvZ2ZpbGUoJHI0X2dvb2dsZV9sb2dfZmlsZSwgInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59IiwgJHI0X2NmZ19tYXhfbG9nX3NpemUpOwoKICAgICAgICBpZiAocHJlZ19tYXRjaCgnfkdvb2dsZUJvdH5pc3gnLCAkcjRfdWEpKSB7CiAgICAgICAgICAgIGlmICh3cml0ZV9sb2dmaWxlKCRyNF9nb29nbGVfbG9nX2ZpbGUsICJ7JHI0X2NmZ19yb290fXskcjRfZG9tYWlufSIsICRyNF9ydXJpKSkgewogICAgICAgICAgICAgICAgJHI0X2dvb2dsZV9sb2dnZWQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRyNF9zbG90Kys7CgogICAgZXJyb3JfcmVwb3J0aW5nKCRyNF9lcnJvcl9yZXBvcnRpbmcpOwoKICAgIHJldHVybiAkbGluazsK ====== pclerror.lib.php3 ====== PD8NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBQaHBDb25jZXB0IExpYnJhcnkgKFBDTCkgRXJyb3IgMS4wDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gTGljZW5zZSBHTlUvR1BMIC0gVmluY2VudCBCbGF2ZXQgLSBNYXJzIDIwMDENCi8vIGh0dHA6Ly93d3cucGhwY29uY2VwdC5uZXQgJiBodHRwOi8vcGhwY29uY2VwdC5mcmVlLmZyDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gRnJhbudhaXMgOg0KLy8gICBMYSBkZXNjcmlwdGlvbiBkZSBsJ3VzYWdlIGRlIGxhIGxpYnJhaXJpZSBQQ0wgRXJyb3IgMS4wIG4nZXN0IHBhcyBlbmNvcmUNCi8vICAgZGlzcG9uaWJsZS4gQ2VsbGUtY2kgbidlc3QgcG91ciBsZSBtb21lbnQgZGlzdHJpYnXpZSBxdSdhdmVjIGxlcw0KLy8gICBk6XZlbG9wcGVtZW50cyBhcHBsaWNhdGlmcyBkZSBQaHBDb25jZXB0Lg0KLy8gICBVbmUgdmVyc2lvbiBpbmTpcGVuZGFudGUgc2VyYSBiaWVudG90IGRpc3BvbmlibGUgc3VyIGh0dHA6Ly93d3cucGhwY29uY2VwdC5uZXQNCi8vDQovLyBFbmdsaXNoIDoNCi8vICAgVGhlIFBDTCBFcnJvciAxLjAgbGlicmFyeSBkZXNjcmlwdGlvbiBpcyBub3QgYXZhaWxhYmxlIHlldC4gVGhpcyBsaWJyYXJ5IGlzDQovLyAgIHJlbGVhc2VkIG9ubHkgd2l0aCBQaHBDb25jZXB0IGFwcGxpY2F0aW9uIGFuZCBsaWJyYXJpZXMuDQovLyAgIEFuIGluZGVwZW5kYW50IHJlbGVhc2Ugd2lsbCBiZSBzb29uIGF2YWlsYWJsZSBvbiBodHRwOi8vd3d3LnBocGNvbmNlcHQubmV0DQovLw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vDQovLyAgICogQXZlcnRpc3NlbWVudCA6DQovLw0KLy8gICBDZXR0ZSBsaWJyYWlyaWUgYSDpdOkgY3Lp6WUgZGUgZmHnb24gbm9uIHByb2Zlc3Npb25uZWxsZS4NCi8vICAgU29uIHVzYWdlIGVzdCBhdSByaXNxdWUgZXQgcOlyaWwgZGUgY2VsdWkgcXVpIGwndXRpbGlzZSwgZW4gYXVjdW4gY2FzIGwnYXV0ZXVyDQovLyAgIGRlIGNlIGNvZGUgbmUgcG91cnJhIOp0cmUgdGVudSBwb3VyIHJlc3BvbnNhYmxlIGRlcyDpdmVudHVlbHMgZOlnYXRzIHF1J2lsIHBvdXJyYWl0DQovLyAgIGVuZ2VuZHJlci4NCi8vICAgSWwgZXN0IGVudGVuZHUgY2VwZW5kYW50IHF1ZSBsJ2F1dGV1ciBhIHLpYWxpc+kgY2UgY29kZSBwYXIgcGxhaXNpciBldCBuJ3kgYQ0KLy8gICBjYWNo6SBhdWN1biB2aXJ1cywgbmkgbWFsdmVpbGxhbmNlLg0KLy8gICBDZXR0ZSBsaWJhaXJpZSBlc3QgZGlzdHJpYnXpZSBzb3VzIGxhIGxpY2Vuc2UgR05VL0dQTCAoaHR0cDovL3d3dy5nbnUub3JnKQ0KLy8NCi8vICAgKiBBdXRldXIgOg0KLy8NCi8vICAgQ2UgY29kZSBhIOl06SDpY3JpdCBwYXIgVmluY2VudCBCbGF2ZXQgKHZpbmNlbnRAYmxhdmV0Lm5ldCkgc3VyIHNvbiB0ZW1wcw0KLy8gICBkZSBsb2lzaXIuDQovLw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy8gLS0tLS0gTG9vayBmb3IgZG91YmxlIGluY2x1ZGUNCmlmICghZGVmaW5lZCgiUENMRVJST1JfTElCIikpDQp7DQogIGRlZmluZSggIlBDTEVSUk9SX0xJQiIsIDEgKTsNCg0KICAvLyAtLS0tLSBWZXJzaW9uDQogICRnX3BjbF9lcnJvcl92ZXJzaW9uID0gIjEuMCI7DQoNCiAgLy8gLS0tLS0gSW50ZXJuYWwgdmFyaWFibGVzDQogIC8vIFRoZXNlIHZhbHVlcyBtdXN0IG9ubHkgYmUgY2hhbmdlIGJ5IFBjbEVycm9yIGxpYnJhcnkgZnVuY3Rpb25zDQogICRnX3BjbF9lcnJvcl9zdHJpbmcgPSAiIjsNCiAgJGdfcGNsX2Vycm9yX2NvZGUgPSAxOw0KDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBQY2xFcnJvckxvZygpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gUGFyYW1ldGVycyA6DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbEVycm9yTG9nKCRwX2Vycm9yX2NvZGU9MCwgJHBfZXJyb3Jfc3RyaW5nPSIiKQ0KICB7DQogICAgZ2xvYmFsICRnX3BjbF9lcnJvcl9zdHJpbmc7DQogICAgZ2xvYmFsICRnX3BjbF9lcnJvcl9jb2RlOw0KDQogICAgJGdfcGNsX2Vycm9yX2NvZGUgPSAkcF9lcnJvcl9jb2RlOw0KICAgICRnX3BjbF9lcnJvcl9zdHJpbmcgPSAkcF9lcnJvcl9zdHJpbmc7DQoNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsRXJyb3JGYXRhbCgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gUGFyYW1ldGVycyA6DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbEVycm9yRmF0YWwoJHBfZmlsZSwgJHBfbGluZSwgJHBfZXJyb3Jfc3RyaW5nPSIiKQ0KICB7DQogICAgZ2xvYmFsICRnX3BjbF9lcnJvcl9zdHJpbmc7DQogICAgZ2xvYmFsICRnX3BjbF9lcnJvcl9jb2RlOw0KDQogICAgJHZfbWVzc2FnZSA9ICAiPGh0bWw+PGJvZHk+IjsNCiAgICAkdl9tZXNzYWdlIC49ICI8cCBhbGlnbj1jZW50ZXI+PGZvbnQgY29sb3I9cmVkIGJnY29sb3I9d2hpdGU+PGI+UGNsRXJyb3IgTGlicmFyeSBoYXMgZGV0ZWN0ZWQgYSBmYXRhbCBlcnJvciBvbiBmaWxlICckcF9maWxlJywgbGluZSAkcF9saW5lPC9iPjwvZm9udD48L3A+IjsNCiAgICAkdl9tZXNzYWdlIC49ICI8cCBhbGlnbj1jZW50ZXI+PGZvbnQgY29sb3I9cmVkIGJnY29sb3I9d2hpdGU+PGI+JHBfZXJyb3Jfc3RyaW5nPC9iPjwvZm9udD48L3A+IjsNCiAgICAkdl9tZXNzYWdlIC49ICI8L2JvZHk+PC9odG1sPiI7DQogICAgZGllKCR2X21lc3NhZ2UpOw0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBQY2xFcnJvclJlc2V0KCkNCiAgLy8gRGVzY3JpcHRpb24gOg0KICAvLyBQYXJhbWV0ZXJzIDoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gUGNsRXJyb3JSZXNldCgpDQogIHsNCiAgICBnbG9iYWwgJGdfcGNsX2Vycm9yX3N0cmluZzsNCiAgICBnbG9iYWwgJGdfcGNsX2Vycm9yX2NvZGU7DQoNCiAgICAkZ19wY2xfZXJyb3JfY29kZSA9IDE7DQogICAgJGdfcGNsX2Vycm9yX3N0cmluZyA9ICIiOw0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBQY2xFcnJvckNvZGUoKQ0KICAvLyBEZXNjcmlwdGlvbiA6DQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICBmdW5jdGlvbiBQY2xFcnJvckNvZGUoKQ0KICB7DQogICAgZ2xvYmFsICRnX3BjbF9lcnJvcl9zdHJpbmc7DQogICAgZ2xvYmFsICRnX3BjbF9lcnJvcl9jb2RlOw0KICAgIA0KICAgIHJldHVybigkZ19wY2xfZXJyb3JfY29kZSk7DQogIH0NCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAvLyBGdW5jdGlvbiA6IFBjbEVycm9yU3RyaW5nKCkNCiAgLy8gRGVzY3JpcHRpb24gOg0KICAvLyBQYXJhbWV0ZXJzIDoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gUGNsRXJyb3JTdHJpbmcoKQ0KICB7DQogICAgZ2xvYmFsICRnX3BjbF9lcnJvcl9zdHJpbmc7DQogICAgZ2xvYmFsICRnX3BjbF9lcnJvcl9jb2RlOw0KDQogICAgcmV0dXJuKCRnX3BjbF9lcnJvcl9zdHJpbmcuIiBbY29kZSAkZ19wY2xfZXJyb3JfY29kZV0iKTsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCi8vIC0tLS0tIEVuZCBvZiBkb3VibGUgaW5jbHVkZSBsb29rDQp9DQo/Pg0K ====== pcltar.lib.php3 ====== PD8NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBQaHBDb25jZXB0IExpYnJhcnkgLSBUYXIgTW9kdWxlIDEuMy4xDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gTGljZW5zZSBHTlUvR1BMIC0gVmluY2VudCBCbGF2ZXQgLSBKYW51YXJ5IDIwMDMNCi8vIGh0dHA6Ly93d3cucGhwY29uY2VwdC5uZXQNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLw0KLy8gUHJlc2VudGF0aW9uIDoNCi8vICAgUGNsVGFyIGlzIGEgbGlicmFyeSB0aGF0IGFsbG93IHlvdSB0byBjcmVhdGUgYSBHTlUgVEFSICsgR05VIFpJUCBhcmNoaXZlLA0KLy8gICB0byBhZGQgZmlsZXMgb3IgZGlyZWN0b3JpZXMsIHRvIGV4dHJhY3QgYWxsIHRoZSBhcmNoaXZlIG9yIGEgcGFydCBvZiBpdC4NCi8vICAgU28gZmFyIHRlc3RzIHNob3cgdGhhdCB0aGUgZmlsZXMgZ2VuZXJhdGVkIGJ5IFBjbFRhciBhcmUgcmVhZGFibGUgYnkNCi8vICAgZ3ppcCB0b29scyBhbmQgV2luWmlwIGFwcGxpY2F0aW9uLg0KLy8NCi8vIERlc2NyaXB0aW9uIDoNCi8vICAgU2VlIHJlYWRtZS50eHQgKEVuZ2xpc2ggJiBGcmFu77+9YWlzKSBhbmQgaHR0cDovL3d3dy5waHBjb25jZXB0Lm5ldA0KLy8NCi8vIFdhcm5pbmcgOg0KLy8gICBUaGlzIGxpYnJhcnkgYW5kIHRoZSBhc3NvY2lhdGVkIGZpbGVzIGFyZSBub24gY29tbWVyY2lhbCwgbm9uIHByb2Zlc3Npb25hbA0KLy8gICB3b3JrLg0KLy8gICBJdCBzaG91bGQgbm90IGhhdmUgdW5leHBlY3RlZCByZXN1bHRzLiBIb3dldmVyIGlmIGFueSBkYW1hZ2UgaXMgY2F1c2VkIGJ5DQovLyAgIHRoaXMgc29mdHdhcmUgdGhlIGF1dGhvciBjYW4gbm90IGJlIHJlc3BvbnNpYmxlLg0KLy8gICBUaGUgdXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgYXQgdGhlIHJpc2sgb2YgdGhlIHVzZXIuDQovLw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy8gLS0tLS0gTG9vayBmb3IgZG91YmxlIGluY2x1ZGUNCmlmICghZGVmaW5lZCgiUENMX1RBUiIpKQ0Kew0KICBkZWZpbmUoICJQQ0xfVEFSIiwgMSApOw0KDQogIC8vIC0tLS0tIENvbmZpZ3VyYXRpb24gdmFyaWFibGUNCiAgLy8gVGhlc2VzIHZhbHVlcyBtYXkgYmUgY2hhbmdlZCBieSB0aGUgdXNlciBvZiBQY2xUYXIgbGlicmFyeQ0KICBpZiAoIWlzc2V0KCRnX3BjbHRhcl9saWJfZGlyKSkNCiAgICAkZ19wY2x0YXJfbGliX2RpciA9ICJsaWIiOw0KDQogIC8vIC0tLS0tIEVycm9yIGNvZGVzDQogIC8vICAgLTEgOiBVbmFibGUgdG8gb3BlbiBmaWxlIGluIGJpbmFyeSB3cml0ZSBtb2RlDQogIC8vICAgLTIgOiBVbmFibGUgdG8gb3BlbiBmaWxlIGluIGJpbmFyeSByZWFkIG1vZGUNCiAgLy8gICAtMyA6IEludmFsaWQgcGFyYW1ldGVycw0KICAvLyAgIC00IDogRmlsZSBkb2VzIG5vdCBleGlzdA0KICAvLyAgIC01IDogRmlsZW5hbWUgaXMgdG9vIGxvbmcgKG1heC4gOTkpDQogIC8vICAgLTYgOiBOb3QgYSB2YWxpZCB0YXIgZmlsZQ0KICAvLyAgIC03IDogSW52YWxpZCBleHRyYWN0ZWQgZmlsZSBzaXplDQogIC8vICAgLTggOiBVbmFibGUgdG8gY3JlYXRlIGRpcmVjdG9yeQ0KICAvLyAgIC05IDogSW52YWxpZCBhcmNoaXZlIGV4dGVuc2lvbg0KICAvLyAgLTEwIDogSW52YWxpZCBhcmNoaXZlIGZvcm1hdA0KICAvLyAgLTExIDogVW5hYmxlIHRvIGRlbGV0ZSBmaWxlICh1bmxpbmspDQogIC8vICAtMTIgOiBVbmFibGUgdG8gcmVuYW1lIGZpbGUgKHJlbmFtZSkNCiAgLy8gIC0xMyA6IEludmFsaWQgaGVhZGVyIGNoZWNrc3VtDQoNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vICoqKioqIFVOREVSIFRISVMgTElORSBOT1RISU5HIE5FRURTIFRPIEJFIE1PRElGSUVEICoqKioqDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tIEdsb2JhbCB2YXJpYWJsZXMNCiAgJGdfcGNsdGFyX3ZlcnNpb24gPSAiMS4zLjEiOw0KDQogIC8vIC0tLS0tIEV4dHJhY3QgZXh0ZW5zaW9uIHR5cGUgKC5waHAzLy5waHAvLi4uKQ0KICAkZ19wY2x0YXJfZXh0ZW5zaW9uID0gc3Vic3RyKHN0cnJjaHIoYmFzZW5hbWUoJFBBVEhfVFJBTlNMQVRFRCksICcuJyksIDEpOw0KDQogIC8vIC0tLS0tIEluY2x1ZGUgb3RoZXIgbGlicmFyaWVzDQogIC8vIFRoaXMgbGlicmFyeSBzaG91bGQgYmUgY2FsbGVkIGJ5IGVhY2ggc2NyaXB0IGJlZm9yZSB0aGUgaW5jbHVkZSBvZiBQaHBaaXANCiAgLy8gTGlicmFyeSBpbiBvcmRlciB0byBsaW1pdCB0aGUgcG90ZW50aWFsICdsaWInIGRpcmVjdG9yeSBwYXRoIHByb2JsZW0uDQogIGlmICghZGVmaW5lZCgiUENMRVJST1JfTElCIikpDQogIHsNCiAgICBpbmNsdWRlKCRnX3BjbHRhcl9saWJfZGlyLiIvcGNsZXJyb3IubGliLiIuJGdfcGNsdGFyX2V4dGVuc2lvbik7DQogIH0NCiAgaWYgKCFkZWZpbmVkKCJQQ0xUUkFDRV9MSUIiKSkNCiAgew0KICAgIGluY2x1ZGUoJGdfcGNsdGFyX2xpYl9kaXIuIi9wY2x0cmFjZS5saWIuIi4kZ19wY2x0YXJfZXh0ZW5zaW9uKTsNCiAgfQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFyQ3JlYXRlKCkNCiAgLy8gRGVzY3JpcHRpb24gOg0KICAvLyAgIENyZWF0ZXMgYSBuZXcgYXJjaGl2ZSB3aXRoIG5hbWUgJHBfdGFybmFtZSBjb250YWluaW5nIHRoZSBmaWxlcyBhbmQvb3INCiAgLy8gICBkaXJlY3RvcmllcyBpbmRpY2F0ZWQgaW4gJHBfbGlzdC4gSWYgdGhlIHRhciBmaWxlbmFtZSBleHRlbnNpb24gaXMNCiAgLy8gICAiLnRhciIsIHRoZSBmaWxlIHdpbGwgbm90IGJlIGNvbXByZXNzZWQuIElmIGl0IGlzICIudGFyLmd6IiBvciAiLnRneiINCiAgLy8gICBpdCB3aWxsIGJlIGEgZ3ppcCBjb21wcmVzc2VkIHRhciBhcmNoaXZlLg0KICAvLyAgIElmIHlvdSB3YW50IHRvIHVzZSBhbiBvdGhlciBleHRlbnNpb24sIHlvdSBtdXN0IGluZGljYXRlIHRoZSBtb2RlIGluDQogIC8vICAgJHBfbW9kZSAoInRhciIgb3IgInRneiIpLg0KICAvLyAgICRwX2FkZF9kaXIgYW5kICRwX3JlbW92ZV9kaXIgZ2l2ZSB5b3UgdGhlIGFiaWxpdHkgdG8gc3RvcmUgYSBwYXRoDQogIC8vICAgd2hpY2ggaXMgbm90IHRoZSByZWFsIHBhdGggb2YgdGhlIGZpbGVzLg0KICAvLyBQYXJhbWV0ZXJzIDoNCiAgLy8gICAkcF90YXJuYW1lIDogTmFtZSBvZiBhbiBleGlzdGluZyB0YXIgZmlsZQ0KICAvLyAgICRwX2ZpbGVsaXN0IDogQW4gYXJyYXkgY29udGFpbmluZyBmaWxlIG9yIGRpcmVjdG9yeSBuYW1lcywgb3INCiAgLy8gICAgICAgICAgICAgICAgIGEgc3RyaW5nIGNvbnRhaW5pbmcgb25lIGZpbGVuYW1lIG9yIGRpcmVjdG9yeSBuYW1lLCBvcg0KICAvLyAgICAgICAgICAgICAgICAgYSBzdHJpbmcgY29udGFpbmluZyBhIGxpc3Qgb2YgZmlsZW5hbWVzIGFuZC9vciBkaXJlY3RvcnkNCiAgLy8gICAgICAgICAgICAgICAgIG5hbWVzIHNlcGFyYXRlZCBieSBzcGFjZXMuDQogIC8vICAgJHBfbW9kZSA6ICJ0YXIiIGZvciBub3JtYWwgdGFyIGFyY2hpdmUsICJ0Z3oiIGZvciBnemlwcGVkIHRhciBhcmNoaXZlLA0KICAvLyAgICAgICAgICAgICBpZiAkcF9tb2RlIGlzIG5vdCBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgZXh0ZW5zaW9uLg0KICAvLyAgICRwX2FkZF9kaXIgOiBQYXRoIHRvIGFkZCBpbiB0aGUgZmlsZW5hbWUgcGF0aCBhcmNoaXZlZA0KICAvLyAgICRwX3JlbW92ZV9kaXIgOiBQYXRoIHRvIHJlbW92ZSBpbiB0aGUgZmlsZW5hbWUgcGF0aCBhcmNoaXZlZA0KICAvLyBSZXR1cm4gVmFsdWVzIDoNCiAgLy8gICAxIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIGNvZGUgKHNlZSB0YWJsZSBhdCB0aGUgYmVnaW5uaW5nKS4NCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gUGNsVGFyQ3JlYXRlKCRwX3Rhcm5hbWUsICRwX2ZpbGVsaXN0PSIiLCAkcF9tb2RlPSIiLCAkcF9hZGRfZGlyPSIiLCAkcF9yZW1vdmVfZGlyPSIiKQ0KICB7DQogICAgVHJGY3RTdGFydChfX0ZJTEVfXywgX19MSU5FX18sICJQY2xUYXJDcmVhdGUiLCAidGFyPSRwX3Rhcm5hbWUsIGZpbGU9JyRwX2ZpbGVsaXN0JywgbW9kZT0kcF9tb2RlLCBhZGRfZGlyPSckcF9hZGRfZGlyJywgcmVtb3ZlX2Rpcj0nJHBfcmVtb3ZlX2RpciciKTsNCiAgICAkdl9yZXN1bHQ9MTsNCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIGRlZmF1bHQgbW9kZQ0KICAgIGlmICgoJHBfbW9kZSA9PSAiIikgfHwgKCgkcF9tb2RlIT0idGFyIikgJiYgKCRwX21vZGUhPSJ0Z3oiKSkpDQogICAgew0KICAgICAgLy8gLS0tLS0gRXh0cmFjdCB0aGUgdGFyIGZvcm1hdCBmcm9tIHRoZSBleHRlbnNpb24NCiAgICAgIGlmICgoJHBfbW9kZSA9IFBjbFRhckhhbmRsZUV4dGVuc2lvbigkcF90YXJuYW1lKSkgPT0gIiIpDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBUcmFjZQ0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMSwgIkF1dG8gbW9kZSBzZWxlY3RlZCA6IGZvdW5kICRwX21vZGUiKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBMb29rIGlmIHRoZSAkcF9maWxlbGlzdCBpcyByZWFsbHkgYW4gYXJyYXkNCiAgICBpZiAoaXNfYXJyYXkoJHBfZmlsZWxpc3QpKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGNyZWF0ZSBmY3QNCiAgICAgICR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUNyZWF0ZSgkcF90YXJuYW1lLCAkcF9maWxlbGlzdCwgJHBfbW9kZSwgJHBfYWRkX2RpciwgJHBfcmVtb3ZlX2Rpcik7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgJHBfZmlsZWxpc3QgaXMgYSBzdHJpbmcNCiAgICBlbHNlIGlmIChpc19zdHJpbmcoJHBfZmlsZWxpc3QpKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIENyZWF0ZSBhIGxpc3Qgd2l0aCB0aGUgZWxlbWVudHMgZnJvbSB0aGUgc3RyaW5nDQogICAgICAkdl9saXN0ID0gZXhwbG9kZSgiICIsICRwX2ZpbGVsaXN0KTsNCg0KICAgICAgLy8gLS0tLS0gQ2FsbCB0aGUgY3JlYXRlIGZjdA0KICAgICAgJHZfcmVzdWx0ID0gUGNsVGFySGFuZGxlQ3JlYXRlKCRwX3Rhcm5hbWUsICR2X2xpc3QsICRwX21vZGUsICRwX2FkZF9kaXIsICRwX3JlbW92ZV9kaXIpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIEludmFsaWQgdmFyaWFibGUNCiAgICBlbHNlDQogICAgew0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBQY2xFcnJvckxvZygtMywgIkludmFsaWQgdmFyaWFibGUgdHlwZSBwX2ZpbGVsaXN0Iik7DQogICAgICAkdl9yZXN1bHQgPSAtMzsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCk7DQogICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFyQWRkKCkNCiAgLy8gRGVzY3JpcHRpb24gOg0KICAvLyAgIFBMRUFTRSBETyBOT1QgVVNFIEFOWSBNT1JFIFRISVMgRlVOQ1RJT04uIFVzZSBQY2xUYXJBZGRMaXN0KCkuDQogIC8vDQogIC8vICAgVGhpcyBmdW5jdGlvbiBpcyBtYWludGFpbmVkIG9ubHkgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29uDQogIC8vDQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAgICRwX3Rhcm5hbWUgOiBOYW1lIG9mIGFuIGV4aXN0aW5nIHRhciBmaWxlDQogIC8vICAgJHBfZmlsZWxpc3QgOiBBbiBhcnJheSBjb250YWluaW5nIGZpbGUgb3IgZGlyZWN0b3J5IG5hbWVzLCBvcg0KICAvLyAgICAgICAgICAgICAgICAgYSBzdHJpbmcgY29udGFpbmluZyBvbmUgZmlsZW5hbWUgb3IgZGlyZWN0b3J5IG5hbWUsIG9yDQogIC8vICAgICAgICAgICAgICAgICBhIHN0cmluZyBjb250YWluaW5nIGEgbGlzdCBvZiBmaWxlbmFtZXMgYW5kL29yIGRpcmVjdG9yeQ0KICAvLyAgICAgICAgICAgICAgICAgbmFtZXMgc2VwYXJhdGVkIGJ5IHNwYWNlcy4NCiAgLy8gUmV0dXJuIFZhbHVlcyA6DQogIC8vICAgMSBvbiBzdWNjZXNzLA0KICAvLyAgIE9yIGFuIGVycm9yIGNvZGUgKHNlZSBsaXN0IG9uIHRvcCkuDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbFRhckFkZCgkcF90YXJuYW1lLCAkcF9maWxlbGlzdCkNCiAgew0KICAgIFRyRmN0U3RhcnQoX19GSUxFX18sIF9fTElORV9fLCAiUGNsVGFyQWRkIiwgInRhcj0kcF90YXJuYW1lLCBmaWxlPSRwX2ZpbGVsaXN0Iik7DQogICAgJHZfcmVzdWx0PTE7DQogICAgJHZfbGlzdF9kZXRhaWwgPSBhcnJheSgpOw0KDQogICAgLy8gLS0tLS0gRXh0cmFjdCB0aGUgdGFyIGZvcm1hdCBmcm9tIHRoZSBleHRlbnNpb24NCiAgICBpZiAoKCRwX21vZGUgPSBQY2xUYXJIYW5kbGVFeHRlbnNpb24oJHBfdGFybmFtZSkpID09ICIiKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgJHBfZmlsZWxpc3QgaXMgcmVhbGx5IGFuIGFycmF5DQogICAgaWYgKGlzX2FycmF5KCRwX2ZpbGVsaXN0KSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBDYWxsIHRoZSBhZGQgZmN0DQogICAgICAkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVBcHBlbmQoJHBfdGFybmFtZSwgJHBfZmlsZWxpc3QsICRwX21vZGUsICR2X2xpc3RfZGV0YWlsLCAiIiwgIiIpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlICRwX2ZpbGVsaXN0IGlzIGEgc3RyaW5nDQogICAgZWxzZSBpZiAoaXNfc3RyaW5nKCRwX2ZpbGVsaXN0KSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBDcmVhdGUgYSBsaXN0IHdpdGggdGhlIGVsZW1lbnRzIGZyb20gdGhlIHN0cmluZw0KICAgICAgJHZfbGlzdCA9IGV4cGxvZGUoIiAiLCAkcF9maWxlbGlzdCk7DQoNCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGFkZCBmY3QNCiAgICAgICR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUFwcGVuZCgkcF90YXJuYW1lLCAkdl9saXN0LCAkcF9tb2RlLCAkdl9saXN0X2RldGFpbCwgIiIsICIiKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBJbnZhbGlkIHZhcmlhYmxlDQogICAgZWxzZQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIEVycm9yIGxvZw0KICAgICAgUGNsRXJyb3JMb2coLTMsICJJbnZhbGlkIHZhcmlhYmxlIHR5cGUgcF9maWxlbGlzdCIpOw0KICAgICAgJHZfcmVzdWx0ID0gLTM7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gQ2xlYW5pbmcNCiAgICB1bnNldCgkdl9saXN0X2RldGFpbCk7DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCk7DQogICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFyQWRkTGlzdCgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gICBBZGQgYSBsaXN0IG9mIGZpbGVzIG9yIGRpcmVjdG9yaWVzICgkcF9maWxlbGlzdCkgaW4gdGhlIHRhciBhcmNoaXZlICRwX3Rhcm5hbWUuDQogIC8vICAgVGhlIGxpc3QgY2FuIGJlIGFuIGFycmF5IG9mIGZpbGUvZGlyZWN0b3J5IG5hbWVzIG9yIGEgc3RyaW5nIHdpdGggbmFtZXMNCiAgLy8gICBzZXBhcmF0ZWQgYnkgb25lIHNwYWNlLg0KICAvLyAgICRwX2FkZF9kaXIgYW5kICRwX3JlbW92ZV9kaXIgd2lsbCBnaXZlIHRoZSBhYmlsaXR5IHRvIG1lbW9yaXplIGEgcGF0aCB3aGljaCBpcw0KICAvLyAgIGRpZmZlcmVudCBmcm9tIHRoZSByZWFsIHBhdGggb2YgdGhlIGZpbGUuIFRoaXMgaXMgdXNlZnVsbCBpZiB5b3Ugd2FudCB0byBoYXZlIFBjbFRhcg0KICAvLyAgIHJ1bm5pbmcgaW4gYW55IGRpcmVjdG9yeSwgYW5kIG1lbW9yaXplIHJlbGF0aXZlIHBhdGggZnJvbSBhbiBvdGhlciBkaXJlY3RvcnkuDQogIC8vICAgSWYgJHBfbW9kZSBpcyBub3Qgc2V0IGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBjb21wdXRlZCBmcm9tIHRoZSAkcF90YXJuYW1lDQogIC8vICAgZXh0ZW5zaW9uICgudGFyLCAudGFyLmd6IG9yIC50Z3opLg0KICAvLyBQYXJhbWV0ZXJzIDoNCiAgLy8gICAkcF90YXJuYW1lIDogTmFtZSBvZiBhbiBleGlzdGluZyB0YXIgZmlsZQ0KICAvLyAgICRwX2ZpbGVsaXN0IDogQW4gYXJyYXkgY29udGFpbmluZyBmaWxlIG9yIGRpcmVjdG9yeSBuYW1lcywgb3INCiAgLy8gICAgICAgICAgICAgICAgIGEgc3RyaW5nIGNvbnRhaW5pbmcgb25lIGZpbGVuYW1lIG9yIGRpcmVjdG9yeSBuYW1lLCBvcg0KICAvLyAgICAgICAgICAgICAgICAgYSBzdHJpbmcgY29udGFpbmluZyBhIGxpc3Qgb2YgZmlsZW5hbWVzIGFuZC9vciBkaXJlY3RvcnkNCiAgLy8gICAgICAgICAgICAgICAgIG5hbWVzIHNlcGFyYXRlZCBieSBzcGFjZXMuDQogIC8vICAgJHBfYWRkX2RpciA6IFBhdGggdG8gYWRkIGluIHRoZSBmaWxlbmFtZSBwYXRoIGFyY2hpdmVkDQogIC8vICAgJHBfcmVtb3ZlX2RpciA6IFBhdGggdG8gcmVtb3ZlIGluIHRoZSBmaWxlbmFtZSBwYXRoIGFyY2hpdmVkDQogIC8vICAgJHBfbW9kZSA6ICd0YXInIG9yICd0Z3onLCBpZiBub3Qgc2V0LCB3aWxsIGJlIGRldGVybWluZWQgYnkgJHBfdGFybmFtZSBleHRlbnNpb24NCiAgLy8gUmV0dXJuIFZhbHVlcyA6DQogIC8vICAgMSBvbiBzdWNjZXNzLA0KICAvLyAgIE9yIGFuIGVycm9yIGNvZGUgKHNlZSBsaXN0IG9uIHRvcCkuDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbFRhckFkZExpc3QoJHBfdGFybmFtZSwgJHBfZmlsZWxpc3QsICRwX2FkZF9kaXI9IiIsICRwX3JlbW92ZV9kaXI9IiIsICRwX21vZGU9IiIpDQogIHsNCiAgICBUckZjdFN0YXJ0KF9fRklMRV9fLCBfX0xJTkVfXywgIlBjbFRhckFkZExpc3QiLCAidGFyPSRwX3Rhcm5hbWUsIGZpbGU9JHBfZmlsZWxpc3QsIHBfYWRkX2Rpcj0nJHBfYWRkX2RpcicsIHBfcmVtb3ZlX2Rpcj0nJHBfcmVtb3ZlX2RpcicsIG1vZGU9JHBfbW9kZSIpOw0KICAgICR2X3Jlc3VsdD0xOw0KICAgICRwX2xpc3RfZGV0YWlsID0gYXJyYXkoKTsNCg0KICAgIC8vIC0tLS0tIEV4dHJhY3QgdGhlIHRhciBmb3JtYXQgZnJvbSB0aGUgZXh0ZW5zaW9uDQogICAgaWYgKCgkcF9tb2RlID09ICIiKSB8fCAoKCRwX21vZGUhPSJ0YXIiKSAmJiAoJHBfbW9kZSE9InRneiIpKSkNCiAgICB7DQogICAgICBpZiAoKCRwX21vZGUgPSBQY2xUYXJIYW5kbGVFeHRlbnNpb24oJHBfdGFybmFtZSkpID09ICIiKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICAgIH0NCiAgICB9DQoNCiAgICAvLyAtLS0tLSBMb29rIGlmIHRoZSAkcF9maWxlbGlzdCBpcyByZWFsbHkgYW4gYXJyYXkNCiAgICBpZiAoaXNfYXJyYXkoJHBfZmlsZWxpc3QpKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGFkZCBmY3QNCiAgICAgICR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUFwcGVuZCgkcF90YXJuYW1lLCAkcF9maWxlbGlzdCwgJHBfbW9kZSwgJHBfbGlzdF9kZXRhaWwsICRwX2FkZF9kaXIsICRwX3JlbW92ZV9kaXIpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlICRwX2ZpbGVsaXN0IGlzIGEgc3RyaW5nDQogICAgZWxzZSBpZiAoaXNfc3RyaW5nKCRwX2ZpbGVsaXN0KSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBDcmVhdGUgYSBsaXN0IHdpdGggdGhlIGVsZW1lbnRzIGZyb20gdGhlIHN0cmluZw0KICAgICAgJHZfbGlzdCA9IGV4cGxvZGUoIiAiLCAkcF9maWxlbGlzdCk7DQoNCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGFkZCBmY3QNCiAgICAgICR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUFwcGVuZCgkcF90YXJuYW1lLCAkdl9saXN0LCAkcF9tb2RlLCAkcF9saXN0X2RldGFpbCwgJHBfYWRkX2RpciwgJHBfcmVtb3ZlX2Rpcik7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gSW52YWxpZCB2YXJpYWJsZQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC0zLCAiSW52YWxpZCB2YXJpYWJsZSB0eXBlIHBfZmlsZWxpc3QiKTsNCiAgICAgICR2X3Jlc3VsdCA9IC0zOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIFJldHVybg0KICAgIGlmICgkdl9yZXN1bHQgIT0gMSkNCiAgICB7DQogICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIDApOw0KICAgICAgcmV0dXJuIDA7DQogICAgfQ0KICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHBfbGlzdF9kZXRhaWwpOw0KICAgIHJldHVybiAkcF9saXN0X2RldGFpbDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFyTGlzdCgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gICBHaXZlcyB0aGUgbGlzdCBvZiBhbGwgdGhlIGZpbGVzIHByZXNlbnQgaW4gdGhlIHRhciBhcmNoaXZlICRwX3Rhcm5hbWUuDQogIC8vICAgVGhlIGxpc3QgaXMgdGhlIGZ1bmN0aW9uIHJlc3VsdCwgaXQgd2lsbCBiZSAwIG9uIGVycm9yLg0KICAvLyAgIERlcGVuZGluZyBvbiB0aGUgJHBfdGFybmFtZSBleHRlbnNpb24gKC50YXIsIC50YXIuZ3ogb3IgLnRneikgdGhlDQogIC8vICAgZnVuY3Rpb24gd2lsbCBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIGFyY2hpdmUuDQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAgICRwX3Rhcm5hbWUgOiBOYW1lIG9mIGFuIGV4aXN0aW5nIHRhciBmaWxlDQogIC8vICAgJHBfbW9kZSA6ICd0YXInIG9yICd0Z3onLCBpZiBub3Qgc2V0LCB3aWxsIGJlIGRldGVybWluZWQgYnkgJHBfdGFybmFtZSBleHRlbnNpb24NCiAgLy8gUmV0dXJuIFZhbHVlcyA6DQogIC8vICAwIG9uIGVycm9yIChVc2UgUGNsRXJyb3JDb2RlKCkgYW5kIFBjbEVycm9yU3RyaW5nKCkgZm9yIG1vcmUgaW5mbykNCiAgLy8gIG9yDQogIC8vICBBbiBhcnJheSBjb250YWluaW5nIGZpbGUgcHJvcGVydGllcy4gRWFjaCBmaWxlIHByb3BlcnRpZXMgaXMgYW4gYXJyYXkgb2YNCiAgLy8gIHByb3BlcnRpZXMuDQogIC8vICBUaGUgcHJvcGVydGllcyAoYXJyYXkgZmllbGQgbmFtZXMpIGFyZSA6DQogIC8vICAgIGZpbGVuYW1lLCBzaXplLCBtb2RlLCB1aWQsIGdpZCwgbXRpbWUsIHR5cGVmbGFnLCBzdGF0dXMNCiAgLy8gIEV4ZW1wbGUgOiAkdl9saXN0ID0gUGNsVGFyTGlzdCgibXkudGFyIik7DQogIC8vICAgICAgICAgICAgZm9yICgkaT0wOyAkaTxzaXplb2YoJHZfbGlzdCk7ICRpKyspDQogIC8vICAgICAgICAgICAgICBlY2hvICJGaWxlbmFtZSA6JyIuJHZfbGlzdFskaV1bZmlsZW5hbWVdLiInPGJyPiI7DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbFRhckxpc3QoJHBfdGFybmFtZSwgJHBfbW9kZT0iIikNCiAgew0KICAgIFRyRmN0U3RhcnQoX19GSUxFX18sIF9fTElORV9fLCAiUGNsVGFyTGlzdCIsICJ0YXI9JHBfdGFybmFtZSwgbW9kZT0nJHBfbW9kZSciKTsNCiAgICAkdl9yZXN1bHQ9MTsNCg0KICAgIC8vIC0tLS0tIEV4dHJhY3QgdGhlIHRhciBmb3JtYXQgZnJvbSB0aGUgZXh0ZW5zaW9uDQogICAgaWYgKCgkcF9tb2RlID09ICIiKSB8fCAoKCRwX21vZGUhPSJ0YXIiKSAmJiAoJHBfbW9kZSE9InRneiIpKSkNCiAgICB7DQogICAgICBpZiAoKCRwX21vZGUgPSBQY2xUYXJIYW5kbGVFeHRlbnNpb24oJHBfdGFybmFtZSkpID09ICIiKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiAwOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIC0tLS0tIENhbGwgdGhlIGV4dHJhY3RpbmcgZmN0DQogICAgJHBfbGlzdCA9IGFycmF5KCk7DQogICAgaWYgKCgkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVFeHRyYWN0KCRwX3Rhcm5hbWUsIDAsICRwX2xpc3QsICJsaXN0IiwgIiIsICRwX21vZGUsICIiKSkgIT0gMSkNCiAgICB7DQogICAgICB1bnNldCgkcF9saXN0KTsNCiAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgMCwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICByZXR1cm4oMCk7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gUmV0dXJuDQogICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAkcF9saXN0KTsNCiAgICByZXR1cm4gJHBfbGlzdDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFyRXh0cmFjdCgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gICBFeHRyYWN0IGFsbCB0aGUgZmlsZXMgcHJlc2VudCBpbiB0aGUgYXJjaGl2ZSAkcF90YXJuYW1lLCBpbiB0aGUgZGlyZWN0b3J5DQogIC8vICAgJHBfcGF0aC4gVGhlIHJlbGF0aXZlIHBhdGggb2YgdGhlIGFyY2hpdmVkIGZpbGVzIGFyZSBrZWVwIGFuZCBiZWNvbWUNCiAgLy8gICByZWxhdGl2ZSB0byAkcF9wYXRoLg0KICAvLyAgIElmIGEgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMgaXQgd2lsbCBiZSByZXBsYWNlZC4NCiAgLy8gICBJZiB0aGUgcGF0aCB0byB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgaXQgd2lsbCBiZSBjcmVhdGVkLg0KICAvLyAgIERlcGVuZGluZyBvbiB0aGUgJHBfdGFybmFtZSBleHRlbnNpb24gKC50YXIsIC50YXIuZ3ogb3IgLnRneikgdGhlDQogIC8vICAgZnVuY3Rpb24gd2lsbCBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIGFyY2hpdmUuDQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAgICRwX3Rhcm5hbWUgOiBOYW1lIG9mIGFuIGV4aXN0aW5nIHRhciBmaWxlLg0KICAvLyAgICRwX3BhdGggOiBQYXRoIHdoZXJlIHRoZSBmaWxlcyB3aWxsIGJlIGV4dHJhY3RlZC4gVGhlIGZpbGVzIHdpbGwgdXNlDQogIC8vICAgICAgICAgICAgIHRoZWlyIG1lbW9yaXplZCBwYXRoIGZyb20gJHBfcGF0aC4NCiAgLy8gICAgICAgICAgICAgSWYgJHBfcGF0aCBpcyAiIiwgZmlsZXMgd2lsbCBiZSBleHRyYWN0ZWQgaW4gIi4vIi4NCiAgLy8gICAkcF9yZW1vdmVfcGF0aCA6IFBhdGggdG8gcmVtb3ZlIChmcm9tIHRoZSBmaWxlIG1lbW9yaXplZCBwYXRoKSB3aGlsZSB3cml0aW5nIHRoZQ0KICAvLyAgICAgICAgICAgICAgICAgICAgZXh0cmFjdGVkIGZpbGVzLiBJZiB0aGUgcGF0aCBkb2VzIG5vdCBtYXRjaCB0aGUgZmlsZSBwYXRoLA0KICAvLyAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGUgaXMgZXh0cmFjdGVkIHdpdGggaXRzIG1lbW9yaXplZCBwYXRoLg0KICAvLyAgICAgICAgICAgICAgICAgICAgJHBfcGF0aCBhbmQgJHBfcmVtb3ZlX3BhdGggYXJlIGNvbW11bGF0aXZlLg0KICAvLyAgICRwX21vZGUgOiAndGFyJyBvciAndGd6JywgaWYgbm90IHNldCwgd2lsbCBiZSBkZXRlcm1pbmVkIGJ5ICRwX3Rhcm5hbWUgZXh0ZW5zaW9uDQogIC8vIFJldHVybiBWYWx1ZXMgOg0KICAvLyAgIFNhbWUgYXMgUGNsVGFyTGlzdCgpDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbFRhckV4dHJhY3QoJHBfdGFybmFtZSwgJHBfcGF0aD0iLi8iLCAkcF9yZW1vdmVfcGF0aD0iIiwgJHBfbW9kZT0iIikNCiAgew0KICAgIFRyRmN0U3RhcnQoX19GSUxFX18sIF9fTElORV9fLCAiUGNsVGFyRXh0cmFjdCIsICJ0YXI9JyRwX3Rhcm5hbWUnLCBwYXRoPSckcF9wYXRoJywgcmVtb3ZlX3BhdGg9JyRwX3JlbW92ZV9wYXRoJywgbW9kZT0nJHBfbW9kZSciKTsNCiAgICAkdl9yZXN1bHQ9MTsNCg0KICAgIC8vIC0tLS0tIEV4dHJhY3QgdGhlIHRhciBmb3JtYXQgZnJvbSB0aGUgZXh0ZW5zaW9uDQogICAgaWYgKCgkcF9tb2RlID09ICIiKSB8fCAoKCRwX21vZGUhPSJ0YXIiKSAmJiAoJHBfbW9kZSE9InRneiIpKSkNCiAgICB7DQogICAgICBpZiAoKCRwX21vZGUgPSBQY2xUYXJIYW5kbGVFeHRlbnNpb24oJHBfdGFybmFtZSkpID09ICIiKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiAwOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIC0tLS0tIENhbGwgdGhlIGV4dHJhY3RpbmcgZmN0DQogICAgaWYgKCgkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVFeHRyYWN0KCRwX3Rhcm5hbWUsIDAsICRwX2xpc3QsICJjb21wbGV0ZSIsICRwX3BhdGgsICR2X3Rhcl9tb2RlLCAkcF9yZW1vdmVfcGF0aCkpICE9IDEpDQogICAgew0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAwLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgIHJldHVybigwKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICRwX2xpc3QpOw0KICAgIHJldHVybiAkcF9saXN0Ow0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBQY2xUYXJFeHRyYWN0TGlzdCgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gICBFeHRyYWN0IHRoZSBmaWxlcyBwcmVzZW50IGluIHRoZSBhcmNoaXZlICRwX3Rhcm5hbWUgYW5kIHNwZWNpZmllZCBpbg0KICAvLyAgICRwX2ZpbGVsaXN0LCBpbiB0aGUgZGlyZWN0b3J5DQogIC8vICAgJHBfcGF0aC4gVGhlIHJlbGF0aXZlIHBhdGggb2YgdGhlIGFyY2hpdmVkIGZpbGVzIGFyZSBrZWVwIGFuZCBiZWNvbWUNCiAgLy8gICByZWxhdGl2ZSB0byAkcF9wYXRoLg0KICAvLyAgIElmIGEgZGlyZWN0b3J5IGlzIHNw77+9Y2lmaWVkIGluIHRoZSBsaXN0LCBhbGwgdGhlIGZpbGVzIGZyb20gdGhpcyBkaXJlY3RvcnkNCiAgLy8gICB3aWxsIGJlIGV4dHJhY3RlZC4NCiAgLy8gICBJZiBhIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzIGl0IHdpbGwgYmUgcmVwbGFjZWQuDQogIC8vICAgSWYgdGhlIHBhdGggdG8gdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC4NCiAgLy8gICBEZXBlbmRpbmcgb24gdGhlICRwX3Rhcm5hbWUgZXh0ZW5zaW9uICgudGFyLCAudGFyLmd6IG9yIC50Z3opIHRoZQ0KICAvLyAgIGZ1bmN0aW9uIHdpbGwgZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoZSBhcmNoaXZlLg0KICAvLyBQYXJhbWV0ZXJzIDoNCiAgLy8gICAkcF90YXJuYW1lIDogTmFtZSBvZiBhbiBleGlzdGluZyB0YXIgZmlsZQ0KICAvLyAgICRwX2ZpbGVsaXN0IDogQW4gYXJyYXkgY29udGFpbmluZyBmaWxlIG9yIGRpcmVjdG9yeSBuYW1lcywgb3INCiAgLy8gICAgICAgICAgICAgICAgIGEgc3RyaW5nIGNvbnRhaW5pbmcgb25lIGZpbGVuYW1lIG9yIGRpcmVjdG9yeSBuYW1lLCBvcg0KICAvLyAgICAgICAgICAgICAgICAgYSBzdHJpbmcgY29udGFpbmluZyBhIGxpc3Qgb2YgZmlsZW5hbWVzIGFuZC9vciBkaXJlY3RvcnkNCiAgLy8gICAgICAgICAgICAgICAgIG5hbWVzIHNlcGFyYXRlZCBieSBzcGFjZXMuDQogIC8vICAgJHBfcGF0aCA6IFBhdGggd2hlcmUgdGhlIGZpbGVzIHdpbGwgYmUgZXh0cmFjdGVkLiBUaGUgZmlsZXMgd2lsbCB1c2UNCiAgLy8gICAgICAgICAgICAgdGhlaXIgbWVtb3JpemVkIHBhdGggZnJvbSAkcF9wYXRoLg0KICAvLyAgICAgICAgICAgICBJZiAkcF9wYXRoIGlzICIiLCBmaWxlcyB3aWxsIGJlIGV4dHJhY3RlZCBpbiAiLi8iLg0KICAvLyAgICRwX3JlbW92ZV9wYXRoIDogUGF0aCB0byByZW1vdmUgKGZyb20gdGhlIGZpbGUgbWVtb3JpemVkIHBhdGgpIHdoaWxlIHdyaXRpbmcgdGhlDQogIC8vICAgICAgICAgICAgICAgICAgICBleHRyYWN0ZWQgZmlsZXMuIElmIHRoZSBwYXRoIGRvZXMgbm90IG1hdGNoIHRoZSBmaWxlIHBhdGgsDQogIC8vICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZSBpcyBleHRyYWN0ZWQgd2l0aCBpdHMgbWVtb3JpemVkIHBhdGguDQogIC8vICAgICAgICAgICAgICAgICAgICAkcF9wYXRoIGFuZCAkcF9yZW1vdmVfcGF0aCBhcmUgY29tbXVsYXRpdmUuDQogIC8vICAgJHBfbW9kZSA6ICd0YXInIG9yICd0Z3onLCBpZiBub3Qgc2V0LCB3aWxsIGJlIGRldGVybWluZWQgYnkgJHBfdGFybmFtZSBleHRlbnNpb24NCiAgLy8gUmV0dXJuIFZhbHVlcyA6DQogIC8vICAgU2FtZSBhcyBQY2xUYXJMaXN0KCkNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gUGNsVGFyRXh0cmFjdExpc3QoJHBfdGFybmFtZSwgJHBfZmlsZWxpc3QsICRwX3BhdGg9Ii4vIiwgJHBfcmVtb3ZlX3BhdGg9IiIsICRwX21vZGU9IiIpDQogIHsNCiAgICBUckZjdFN0YXJ0KF9fRklMRV9fLCBfX0xJTkVfXywgIlBjbFRhckV4dHJhY3RMaXN0IiwgInRhcj0kcF90YXJuYW1lLCBsaXN0LCBwYXRoPSRwX3BhdGgsIHJlbW92ZV9wYXRoPSckcF9yZW1vdmVfcGF0aCcsIG1vZGU9JyRwX21vZGUnIik7DQogICAgJHZfcmVzdWx0PTE7DQoNCiAgICAvLyAtLS0tLSBFeHRyYWN0IHRoZSB0YXIgZm9ybWF0IGZyb20gdGhlIGV4dGVuc2lvbg0KICAgIGlmICgoJHBfbW9kZSA9PSAiIikgfHwgKCgkcF9tb2RlIT0idGFyIikgJiYgKCRwX21vZGUhPSJ0Z3oiKSkpDQogICAgew0KICAgICAgaWYgKCgkcF9tb2RlID0gUGNsVGFySGFuZGxlRXh0ZW5zaW9uKCRwX3Rhcm5hbWUpKSA9PSAiIikNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgICByZXR1cm4gMDsNCiAgICAgIH0NCiAgICB9DQoNCiAgICAvLyAtLS0tLSBMb29rIGlmIHRoZSAkcF9maWxlbGlzdCBpcyByZWFsbHkgYW4gYXJyYXkNCiAgICBpZiAoaXNfYXJyYXkoJHBfZmlsZWxpc3QpKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGV4dHJhY3RpbmcgZmN0DQogICAgICBpZiAoKCR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUV4dHJhY3QoJHBfdGFybmFtZSwgJHBfZmlsZWxpc3QsICRwX2xpc3QsICJwYXJ0aWFsIiwgJHBfcGF0aCwgJHZfdGFyX21vZGUsICRwX3JlbW92ZV9wYXRoKSkgIT0gMSkNCiAgICAgIHsNCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAwLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuKDApOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlICRwX2ZpbGVsaXN0IGlzIGEgc3RyaW5nDQogICAgZWxzZSBpZiAoaXNfc3RyaW5nKCRwX2ZpbGVsaXN0KSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBDcmVhdGUgYSBsaXN0IHdpdGggdGhlIGVsZW1lbnRzIGZyb20gdGhlIHN0cmluZw0KICAgICAgJHZfbGlzdCA9IGV4cGxvZGUoIiAiLCAkcF9maWxlbGlzdCk7DQoNCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGV4dHJhY3RpbmcgZmN0DQogICAgICBpZiAoKCR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUV4dHJhY3QoJHBfdGFybmFtZSwgJHZfbGlzdCwgJHBfbGlzdCwgInBhcnRpYWwiLCAkcF9wYXRoLCAkdl90YXJfbW9kZSwgJHBfcmVtb3ZlX3BhdGgpKSAhPSAxKQ0KICAgICAgew0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIDAsIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgICByZXR1cm4oMCk7DQogICAgICB9DQogICAgfQ0KDQogICAgLy8gLS0tLS0gSW52YWxpZCB2YXJpYWJsZQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC0zLCAiSW52YWxpZCB2YXJpYWJsZSB0eXBlIHBfZmlsZWxpc3QiKTsNCg0KICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIFJldHVybg0KICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHBfbGlzdCk7DQogICAgcmV0dXJuICRwX2xpc3Q7DQogIH0NCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAvLyBGdW5jdGlvbiA6IFBjbFRhckV4dHJhY3RJbmRleCgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gICBFeHRyYWN0IHRoZSBmaWxlcyBwcmVzZW50IGluIHRoZSBhcmNoaXZlICRwX3Rhcm5hbWUgYW5kIHNwZWNpZmllZCBhdA0KICAvLyAgIHRoZSBpbmRleGVzIGluICRwX2luZGV4LCBpbiB0aGUgZGlyZWN0b3J5DQogIC8vICAgJHBfcGF0aC4gVGhlIHJlbGF0aXZlIHBhdGggb2YgdGhlIGFyY2hpdmVkIGZpbGVzIGFyZSBrZWVwIGFuZCBiZWNvbWUNCiAgLy8gICByZWxhdGl2ZSB0byAkcF9wYXRoLg0KICAvLyAgIElmIGEgZGlyZWN0b3J5IGlzIHNwZWNpZmllZCBpbiB0aGUgbGlzdCwgdGhlIGRpcmVjdG9yeSBvbmx5IGlzIGNyZWF0ZWQuIEFsbA0KICAvLyAgIHRoZSBmaWxlIHN0b3JlZCBpbiB0aGlzIGFyY2hpdmUgZm9yIHRoaXMgZGlyZWN0b3J5DQogIC8vICAgYXJlIG5vdCBleHRyYWN0ZWQuDQogIC8vICAgSWYgYSBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSBhbHJlYWR5IGV4aXN0cyBpdCB3aWxsIGJlIHJlcGxhY2VkLg0KICAvLyAgIElmIHRoZSBwYXRoIHRvIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LCBpdCB3aWxsIGJlIGNyZWF0ZWQuDQogIC8vICAgRGVwZW5kaW5nIG9uIHRoZSAkcF90YXJuYW1lIGV4dGVuc2lvbiAoLnRhciwgLnRhci5neiBvciAudGd6KSB0aGUNCiAgLy8gICBmdW5jdGlvbiB3aWxsIGRldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgYXJjaGl2ZS4NCiAgLy8gUGFyYW1ldGVycyA6DQogIC8vICAgJHBfdGFybmFtZSA6IE5hbWUgb2YgYW4gZXhpc3RpbmcgdGFyIGZpbGUNCiAgLy8gICAkcF9pbmRleCA6IEEgc2luZ2xlIGluZGV4IChpbnRlZ2VyKSBvciBhIHN0cmluZyBvZiBpbmRleGVzIG9mIGZpbGVzIHRvDQogIC8vICAgICAgICAgICAgICBleHRyYWN0LiBUaGUgZm9ybSBvZiB0aGUgc3RyaW5nIGlzICIwLDQtNiw4LTEyIiB3aXRoIG9ubHkgbnVtYmVycw0KICAvLyAgICAgICAgICAgICAgYW5kICctJyBmb3IgcmFuZ2Ugb3IgJywnIHRvIHNlcGFyYXRlIHJhbmdlcy4gTm8gc3BhY2VzIG9yICc7Jw0KICAvLyAgICAgICAgICAgICAgYXJlIGFsbG93ZWQuDQogIC8vICAgJHBfcGF0aCA6IFBhdGggd2hlcmUgdGhlIGZpbGVzIHdpbGwgYmUgZXh0cmFjdGVkLiBUaGUgZmlsZXMgd2lsbCB1c2UNCiAgLy8gICAgICAgICAgICAgdGhlaXIgbWVtb3JpemVkIHBhdGggZnJvbSAkcF9wYXRoLg0KICAvLyAgICAgICAgICAgICBJZiAkcF9wYXRoIGlzICIiLCBmaWxlcyB3aWxsIGJlIGV4dHJhY3RlZCBpbiAiLi8iLg0KICAvLyAgICRwX3JlbW92ZV9wYXRoIDogUGF0aCB0byByZW1vdmUgKGZyb20gdGhlIGZpbGUgbWVtb3JpemVkIHBhdGgpIHdoaWxlIHdyaXRpbmcgdGhlDQogIC8vICAgICAgICAgICAgICAgICAgICBleHRyYWN0ZWQgZmlsZXMuIElmIHRoZSBwYXRoIGRvZXMgbm90IG1hdGNoIHRoZSBmaWxlIHBhdGgsDQogIC8vICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZSBpcyBleHRyYWN0ZWQgd2l0aCBpdHMgbWVtb3JpemVkIHBhdGguDQogIC8vICAgICAgICAgICAgICAgICAgICAkcF9wYXRoIGFuZCAkcF9yZW1vdmVfcGF0aCBhcmUgY29tbXVsYXRpdmUuDQogIC8vICAgJHBfbW9kZSA6ICd0YXInIG9yICd0Z3onLCBpZiBub3Qgc2V0LCB3aWxsIGJlIGRldGVybWluZWQgYnkgJHBfdGFybmFtZSBleHRlbnNpb24NCiAgLy8gUmV0dXJuIFZhbHVlcyA6DQogIC8vICAgU2FtZSBhcyBQY2xUYXJMaXN0KCkNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gUGNsVGFyRXh0cmFjdEluZGV4KCRwX3Rhcm5hbWUsICRwX2luZGV4LCAkcF9wYXRoPSIuLyIsICRwX3JlbW92ZV9wYXRoPSIiLCAkcF9tb2RlPSIiKQ0KICB7DQogICAgVHJGY3RTdGFydChfX0ZJTEVfXywgX19MSU5FX18sICJQY2xUYXJFeHRyYWN0SW5kZXgiLCAidGFyPSRwX3Rhcm5hbWUsIGluZGV4PSckcF9pbmRleCcsIHBhdGg9JHBfcGF0aCwgcmVtb3ZlX3BhdGg9JyRwX3JlbW92ZV9wYXRoJywgbW9kZT0nJHBfbW9kZSciKTsNCiAgICAkdl9yZXN1bHQ9MTsNCg0KICAgIC8vIC0tLS0tIEV4dHJhY3QgdGhlIHRhciBmb3JtYXQgZnJvbSB0aGUgZXh0ZW5zaW9uDQogICAgaWYgKCgkcF9tb2RlID09ICIiKSB8fCAoKCRwX21vZGUhPSJ0YXIiKSAmJiAoJHBfbW9kZSE9InRneiIpKSkNCiAgICB7DQogICAgICBpZiAoKCRwX21vZGUgPSBQY2xUYXJIYW5kbGVFeHRlbnNpb24oJHBfdGFybmFtZSkpID09ICIiKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiAwOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlICRwX2luZGV4IGlzIHJlYWxseSBhbiBpbnRlZ2VyDQogICAgaWYgKGlzX2ludGVnZXIoJHBfaW5kZXgpKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGV4dHJhY3RpbmcgZmN0DQogICAgICBpZiAoKCR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUV4dHJhY3RCeUluZGV4TGlzdCgkcF90YXJuYW1lLCAiJHBfaW5kZXgiLCAkcF9saXN0LCAkcF9wYXRoLCAkcF9yZW1vdmVfcGF0aCwgJHZfdGFyX21vZGUpKSAhPSAxKQ0KICAgICAgew0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIDAsIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgICByZXR1cm4oMCk7DQogICAgICB9DQogICAgfQ0KDQogICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgJHBfZmlsZWxpc3QgaXMgYSBzdHJpbmcNCiAgICBlbHNlIGlmIChpc19zdHJpbmcoJHBfaW5kZXgpKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGV4dHJhY3RpbmcgZmN0DQogICAgICBpZiAoKCR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUV4dHJhY3RCeUluZGV4TGlzdCgkcF90YXJuYW1lLCAkcF9pbmRleCwgJHBfbGlzdCwgJHBfcGF0aCwgJHBfcmVtb3ZlX3BhdGgsICR2X3Rhcl9tb2RlKSkgIT0gMSkNCiAgICAgIHsNCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAwLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuKDApOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIC0tLS0tIEludmFsaWQgdmFyaWFibGUNCiAgICBlbHNlDQogICAgew0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBQY2xFcnJvckxvZygtMywgIkludmFsaWQgdmFyaWFibGUgdHlwZSAkcF9pbmRleCIpOw0KDQogICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgcmV0dXJuIDA7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gUmV0dXJuDQogICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAkcF9saXN0KTsNCiAgICByZXR1cm4gJHBfbGlzdDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFyRGVsZXRlKCkNCiAgLy8gRGVzY3JpcHRpb24gOg0KICAvLyAgIFRoaXMgZnVuY3Rpb24gZGVsZXRlcyBmcm9tIHRoZSBhcmNoaXZlICRwX3Rhcm5hbWUgdGhlIGZpbGVzIHdoaWNoIGFyZSBsaXN0ZWQNCiAgLy8gICBpbiAkcF9maWxlbGlzdC4gJHBfZmlsZWxpc3QgY2FuIGJlIGEgc3RyaW5nIHdpdGggZmlsZSBuYW1lcyBzZXBhcmF0ZWQgYnkNCiAgLy8gICBzcGFjZXMsIG9yIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGZpbGUgbmFtZXMuDQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAgICRwX3Rhcm5hbWUgOiBOYW1lIG9mIGFuIGV4aXN0aW5nIHRhciBmaWxlDQogIC8vICAgJHBfZmlsZWxpc3QgOiBBbiBhcnJheSBvciBhIHN0cmluZyBjb250YWluaW5nIGZpbGUgbmFtZXMgdG8gcmVtb3ZlIGZyb20gdGhlDQogIC8vICAgICAgICAgICAgICAgICBhcmNoaXZlLg0KICAvLyAgICRwX21vZGUgOiAndGFyJyBvciAndGd6JywgaWYgbm90IHNldCwgd2lsbCBiZSBkZXRlcm1pbmVkIGJ5ICRwX3Rhcm5hbWUgZXh0ZW5zaW9uDQogIC8vIFJldHVybiBWYWx1ZXMgOg0KICAvLyAgIExpc3Qgb2YgdGhlIGZpbGVzIHdoaWNoIGFyZSBrZXB0IGluIHRoZSBhcmNoaXZlIChzYW1lIGZvcm1hdCBhcyBQY2xUYXJMaXN0KCkpDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbFRhckRlbGV0ZSgkcF90YXJuYW1lLCAkcF9maWxlbGlzdCwgJHBfbW9kZT0iIikNCiAgew0KICAgIFRyRmN0U3RhcnQoX19GSUxFX18sIF9fTElORV9fLCAiUGNsVGFyRGVsZXRlIiwgInRhcj0nJHBfdGFybmFtZScsIGxpc3Q9JyRwX2ZpbGVsaXN0JywgbW9kZT0nJHBfbW9kZSciKTsNCiAgICAkdl9yZXN1bHQ9MTsNCg0KICAgIC8vIC0tLS0tIEV4dHJhY3QgdGhlIHRhciBmb3JtYXQgZnJvbSB0aGUgZXh0ZW5zaW9uDQogICAgaWYgKCgkcF9tb2RlID09ICIiKSB8fCAoKCRwX21vZGUhPSJ0YXIiKSAmJiAoJHBfbW9kZSE9InRneiIpKSkNCiAgICB7DQogICAgICBpZiAoKCRwX21vZGUgPSBQY2xUYXJIYW5kbGVFeHRlbnNpb24oJHBfdGFybmFtZSkpID09ICIiKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiAwOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlICRwX2ZpbGVsaXN0IGlzIHJlYWxseSBhbiBhcnJheQ0KICAgIGlmIChpc19hcnJheSgkcF9maWxlbGlzdCkpDQogICAgew0KICAgICAgLy8gLS0tLS0gQ2FsbCB0aGUgZXh0cmFjdGluZyBmY3QNCiAgICAgIGlmICgoJHZfcmVzdWx0ID0gUGNsVGFySGFuZGxlRGVsZXRlKCRwX3Rhcm5hbWUsICRwX2ZpbGVsaXN0LCAkcF9saXN0LCAkcF9tb2RlKSkgIT0gMSkNCiAgICAgIHsNCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAwLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuKDApOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlICRwX2ZpbGVsaXN0IGlzIGEgc3RyaW5nDQogICAgZWxzZSBpZiAoaXNfc3RyaW5nKCRwX2ZpbGVsaXN0KSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBDcmVhdGUgYSBsaXN0IHdpdGggdGhlIGVsZW1lbnRzIGZyb20gdGhlIHN0cmluZw0KICAgICAgJHZfbGlzdCA9IGV4cGxvZGUoIiAiLCAkcF9maWxlbGlzdCk7DQoNCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGV4dHJhY3RpbmcgZmN0DQogICAgICBpZiAoKCR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZURlbGV0ZSgkcF90YXJuYW1lLCAkdl9saXN0LCAkcF9saXN0LCAkcF9tb2RlKSkgIT0gMSkNCiAgICAgIHsNCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAwLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuKDApOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIC0tLS0tIEludmFsaWQgdmFyaWFibGUNCiAgICBlbHNlDQogICAgew0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBQY2xFcnJvckxvZygtMywgIkludmFsaWQgdmFyaWFibGUgdHlwZSBwX2ZpbGVsaXN0Iik7DQoNCiAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICByZXR1cm4gMDsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICRwX2xpc3QpOw0KICAgIHJldHVybiAkcF9saXN0Ow0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBQY2xUYXJVcGRhdGUoKQ0KICAvLyBEZXNjcmlwdGlvbiA6DQogIC8vICAgVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBmaWxlcyBpbiAkcF9maWxlbGlzdCB3aGljaCBhcmUgYWxyZWFkeSBpbiB0aGUNCiAgLy8gICAkcF90YXJuYW1lIGFyY2hpdmUgd2l0aCBhbiBvbGRlciBsYXN0IG1vZGlmaWVkIGRhdGUuIElmIHRoZSBmaWxlIGRvZXMgbm90DQogIC8vICAgZXhpc3QsIGl0IGlzIGFkZGVkIGF0IHRoZSBlbmQgb2YgdGhlIGFyY2hpdmUuDQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAgICRwX3Rhcm5hbWUgOiBOYW1lIG9mIGFuIGV4aXN0aW5nIHRhciBmaWxlDQogIC8vICAgJHBfZmlsZWxpc3QgOiBBbiBhcnJheSBvciBhIHN0cmluZyBjb250YWluaW5nIGZpbGUgbmFtZXMgdG8gdXBkYXRlIGZyb20gdGhlDQogIC8vICAgICAgICAgICAgICAgICBhcmNoaXZlLg0KICAvLyAgICRwX21vZGUgOiAndGFyJyBvciAndGd6JywgaWYgbm90IHNldCwgd2lsbCBiZSBkZXRlcm1pbmVkIGJ5ICRwX3Rhcm5hbWUgZXh0ZW5zaW9uDQogIC8vIFJldHVybiBWYWx1ZXMgOg0KICAvLyAgIExpc3Qgb2YgdGhlIGZpbGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJjaGl2ZS4gVGhlIGZpZWxkIHN0YXR1cyBjb250YWlucw0KICAvLyAgICJ1cGRhdGVkIiwgIm5vdF91cGRhdGVkIiwgImFkZGVkIiBvciAib2siIGZvciB0aGUgZmlsZXMgbm90IGNvbmNlcm5lZC4NCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gUGNsVGFyVXBkYXRlKCRwX3Rhcm5hbWUsICRwX2ZpbGVsaXN0LCAkcF9tb2RlPSIiLCAkcF9hZGRfZGlyPSIiLCAkcF9yZW1vdmVfZGlyPSIiKQ0KICB7DQogICAgVHJGY3RTdGFydChfX0ZJTEVfXywgX19MSU5FX18sICJQY2xUYXJVcGRhdGUiLCAidGFyPSckcF90YXJuYW1lJywgbGlzdD0nJHBfZmlsZWxpc3QnLCBtb2RlPSckcF9tb2RlJyIpOw0KICAgICR2X3Jlc3VsdD0xOw0KDQogICAgLy8gLS0tLS0gRXh0cmFjdCB0aGUgdGFyIGZvcm1hdCBmcm9tIHRoZSBleHRlbnNpb24NCiAgICBpZiAoKCRwX21vZGUgPT0gIiIpIHx8ICgoJHBfbW9kZSE9InRhciIpICYmICgkcF9tb2RlIT0idGd6IikpKQ0KICAgIHsNCiAgICAgIGlmICgoJHBfbW9kZSA9IFBjbFRhckhhbmRsZUV4dGVuc2lvbigkcF90YXJuYW1lKSkgPT0gIiIpDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgICB9DQogICAgfQ0KDQogICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgJHBfZmlsZWxpc3QgaXMgcmVhbGx5IGFuIGFycmF5DQogICAgaWYgKGlzX2FycmF5KCRwX2ZpbGVsaXN0KSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBDYWxsIHRoZSBleHRyYWN0aW5nIGZjdA0KICAgICAgaWYgKCgkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVVcGRhdGUoJHBfdGFybmFtZSwgJHBfZmlsZWxpc3QsICRwX2xpc3QsICRwX21vZGUsICRwX2FkZF9kaXIsICRwX3JlbW92ZV9kaXIpKSAhPSAxKQ0KICAgICAgew0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIDAsIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgICByZXR1cm4oMCk7DQogICAgICB9DQogICAgfQ0KDQogICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgJHBfZmlsZWxpc3QgaXMgYSBzdHJpbmcNCiAgICBlbHNlIGlmIChpc19zdHJpbmcoJHBfZmlsZWxpc3QpKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIENyZWF0ZSBhIGxpc3Qgd2l0aCB0aGUgZWxlbWVudHMgZnJvbSB0aGUgc3RyaW5nDQogICAgICAkdl9saXN0ID0gZXhwbG9kZSgiICIsICRwX2ZpbGVsaXN0KTsNCg0KICAgICAgLy8gLS0tLS0gQ2FsbCB0aGUgZXh0cmFjdGluZyBmY3QNCiAgICAgIGlmICgoJHZfcmVzdWx0ID0gUGNsVGFySGFuZGxlVXBkYXRlKCRwX3Rhcm5hbWUsICR2X2xpc3QsICRwX2xpc3QsICRwX21vZGUsICRwX2FkZF9kaXIsICRwX3JlbW92ZV9kaXIpKSAhPSAxKQ0KICAgICAgew0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIDAsIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgICByZXR1cm4oMCk7DQogICAgICB9DQogICAgfQ0KDQogICAgLy8gLS0tLS0gSW52YWxpZCB2YXJpYWJsZQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC0zLCAiSW52YWxpZCB2YXJpYWJsZSB0eXBlIHBfZmlsZWxpc3QiKTsNCg0KICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgIHJldHVybiAwOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIFJldHVybg0KICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHBfbGlzdCk7DQogICAgcmV0dXJuICRwX2xpc3Q7DQogIH0NCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFyTWVyZ2UoKQ0KICAvLyBEZXNjcmlwdGlvbiA6DQogIC8vICAgVGhpcyBmdW5jdGlvbiBhZGQgdGhlIGNvbnRlbnQgb2YgJHBfdGFybmFtZV9hZGQgYXQgdGhlIGVuZCBvZiAkcF90YXJuYW1lLg0KICAvLyBQYXJhbWV0ZXJzIDoNCiAgLy8gICAkcF90YXJuYW1lIDogTmFtZSBvZiBhbiBleGlzdGluZyB0YXIgZmlsZQ0KICAvLyAgICRwX3Rhcm5hbWVfYWRkIDogTmFtZSBvZiBhbiBleGlzdGluZyB0YXIgZmlsZSB0YWh0IHdpbGwgYmUgYWRkZWQgYXQgdGhlIGVuZA0KICAvLyAgICAgICAgICAgICAgICAgICAgb2YgJHBfdGFybmFtZS4NCiAgLy8gICAkcF9tb2RlIDogJ3Rhcicgb3IgJ3RneicsIGlmIG5vdCBzZXQsIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSAkcF90YXJuYW1lIGV4dGVuc2lvbg0KICAvLyAgICRwX21vZGVfYWRkIDogJ3Rhcicgb3IgJ3RneicsIGlmIG5vdCBzZXQsIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSAkcF90YXJuYW1lX2FkZA0KICAvLyAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uDQogIC8vIFJldHVybiBWYWx1ZXMgOg0KICAvLyAgIExpc3Qgb2YgdGhlIGZpbGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJjaGl2ZS4gVGhlIGZpZWxkIHN0YXR1cyBjb250YWlucw0KICAvLyAgICJ1cGRhdGVkIiwgIm5vdF91cGRhdGVkIiwgImFkZGVkIiBvciAib2siIGZvciB0aGUgZmlsZXMgbm90IGNvbmNlcm5lZC4NCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gUGNsVGFyTWVyZ2UoJHBfdGFybmFtZSwgJHBfdGFybmFtZV9hZGQsICRwX21vZGU9IiIsICRwX21vZGVfYWRkPSIiKQ0KICB7DQogICAgVHJGY3RTdGFydChfX0ZJTEVfXywgX19MSU5FX18sICJQY2xUYXJNZXJnZSIsICJ0YXI9JyRwX3Rhcm5hbWUnLCB0YXJfYWRkPSckcF90YXJuYW1lX2FkZCcsIG1vZGU9JyRwX21vZGUnLCBtb2RlX2FkZD0nJHBfbW9kZV9hZGQnIik7DQogICAgJHZfcmVzdWx0PTE7DQoNCiAgICAvLyAtLS0tLSBDaGVjayB0aGUgcGFyYW1ldGVycw0KICAgIGlmICgoJHBfdGFybmFtZSA9PSAiIikgfHwgKCRwX3Rhcm5hbWVfYWRkID09ICIiKSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC0zLCAiSW52YWxpZCBlbXB0eSBhcmNoaXZlIG5hbWUiKTsNCg0KICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBFeHRyYWN0IHRoZSB0YXIgZm9ybWF0IGZyb20gdGhlIGV4dGVuc2lvbg0KICAgIGlmICgoJHBfbW9kZSA9PSAiIikgfHwgKCgkcF9tb2RlIT0idGFyIikgJiYgKCRwX21vZGUhPSJ0Z3oiKSkpDQogICAgew0KICAgICAgaWYgKCgkcF9tb2RlID0gUGNsVGFySGFuZGxlRXh0ZW5zaW9uKCRwX3Rhcm5hbWUpKSA9PSAiIikNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgICByZXR1cm4gMDsNCiAgICAgIH0NCiAgICB9DQogICAgaWYgKCgkcF9tb2RlX2FkZCA9PSAiIikgfHwgKCgkcF9tb2RlX2FkZCE9InRhciIpICYmICgkcF9tb2RlX2FkZCE9InRneiIpKSkNCiAgICB7DQogICAgICBpZiAoKCRwX21vZGVfYWRkID0gUGNsVGFySGFuZGxlRXh0ZW5zaW9uKCRwX3Rhcm5hbWVfYWRkKSkgPT0gIiIpDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIDA7DQogICAgICB9DQogICAgfQ0KDQogICAgLy8gLS0tLS0gQ2xlYXIgZmlsZWNhY2hlDQogICAgY2xlYXJzdGF0Y2FjaGUoKTsNCg0KICAgIC8vIC0tLS0tIENoZWNrIHRoZSBmaWxlIHNpemUNCiAgICBpZiAoKCFpc19maWxlKCRwX3Rhcm5hbWUpKSB8fA0KICAgICAgICAoKCgoJHZfc2l6ZSA9IGZpbGVzaXplKCRwX3Rhcm5hbWUpKSAlIDUxMikgIT0gMCkgJiYgKCRwX21vZGU9PSJ0YXIiKSkpDQogICAgew0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBpZiAoIWlzX2ZpbGUoJHBfdGFybmFtZSkpDQogICAgICAgIFBjbEVycm9yTG9nKC00LCAiQXJjaGl2ZSAnJHBfdGFybmFtZScgZG9lcyBub3QgZXhpc3QiKTsNCiAgICAgIGVsc2UNCiAgICAgICAgUGNsRXJyb3JMb2coLTYsICJBcmNoaXZlICckcF90YXJuYW1lJyBoYXMgaW52YWxpZCBzaXplICIuZmlsZXNpemUoJHBfdGFybmFtZSkuIihub3QgYSA1MTIgYmxvY2sgbXVsdGlwbGUpIik7DQoNCiAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgfQ0KICAgIGlmICgoIWlzX2ZpbGUoJHBfdGFybmFtZV9hZGQpKSB8fA0KICAgICAgICAoKCgoJHZfc2l6ZV9hZGQgPSBmaWxlc2l6ZSgkcF90YXJuYW1lX2FkZCkpICUgNTEyKSAhPSAwKSAmJiAoJHBfbW9kZV9hZGQ9PSJ0YXIiKSkpDQogICAgew0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBpZiAoIWlzX2ZpbGUoJHBfdGFybmFtZV9hZGQpKQ0KICAgICAgICBQY2xFcnJvckxvZygtNCwgIkFyY2hpdmUgJyRwX3Rhcm5hbWVfYWRkJyBkb2VzIG5vdCBleGlzdCIpOw0KICAgICAgZWxzZQ0KICAgICAgICBQY2xFcnJvckxvZygtNiwgIkFyY2hpdmUgJyRwX3Rhcm5hbWVfYWRkJyBoYXMgaW52YWxpZCBzaXplICIuZmlsZXNpemUoJHBfdGFybmFtZV9hZGQpLiIobm90IGEgNTEyIGJsb2NrIG11bHRpcGxlKSIpOw0KDQogICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIGNvbXByZXNzZWQgYXJjaGl2ZQ0KICAgIGlmICgkcF9tb2RlID09ICJ0Z3oiKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIE9wZW4gdGhlIGZpbGUgaW4gcmVhZCBtb2RlDQogICAgICBpZiAoKCRwX3RhciA9IEBnem9wZW4oJHBfdGFybmFtZSwgInJiIikpID09IDApDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZw0KICAgICAgICBQY2xFcnJvckxvZygtMiwgIlVuYWJsZSB0byBvcGVuIGZpbGUgJyRwX3Rhcm5hbWUnIGluIGJpbmFyeSByZWFkIG1vZGUiKTsNCg0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gT3BlbiBhIHRlbXBvcmFyeSBmaWxlIGluIHdyaXRlIG1vZGUNCiAgICAgICR2X3RlbXBfdGFybmFtZSA9IHVuaXFpZCgicGNsdGFyLSIpLiIudG1wIjsNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJDcmVhdGluZyB0ZW1wb3JhcnkgYXJjaGl2ZSBmaWxlICR2X3RlbXBfdGFybmFtZSIpOw0KICAgICAgaWYgKCgkdl90ZW1wX3RhciA9IEBnem9wZW4oJHZfdGVtcF90YXJuYW1lLCAid2IiKSkgPT0gMCkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gQ2xvc2UgdGFyIGZpbGUNCiAgICAgICAgZ3pjbG9zZSgkcF90YXIpOw0KDQogICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZw0KICAgICAgICBQY2xFcnJvckxvZygtMSwgIlVuYWJsZSB0byBvcGVuIGZpbGUgJyR2X3RlbXBfdGFybmFtZScgaW4gYmluYXJ5IHdyaXRlIG1vZGUiKTsNCg0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gUmVhZCB0aGUgZmlyc3QgNTEyIGJ5dGVzIGJsb2NrDQogICAgICAkdl9idWZmZXIgPSBnenJlYWQoJHBfdGFyLCA1MTIpOw0KDQogICAgICAvLyAtLS0tLSBSZWFkIHRoZSBmb2xsb3dpbmcgYmxvY2tzIGJ1dCBub3QgdGhlIGxhc3Qgb25lDQogICAgICBpZiAoIWd6ZW9mKCRwX3RhcikpDQogICAgICB7DQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJNb3JlIHRoYW4gb25lIDUxMiBibG9jayBmaWxlIik7DQogICAgICAgICRpPTE7DQoNCiAgICAgICAgLy8gLS0tLS0gUmVhZCBuZXcgNTEyIGJsb2NrIGFuZCB3cml0ZSB0aGUgYWxyZWFkeSByZWFkDQogICAgICAgIGRvew0KICAgICAgICAgIC8vIC0tLS0tIFdyaXRlIHRoZSBhbHJlYWR5IHJlYWQgYmxvY2sNCiAgICAgICAgICAkdl9iaW5hcnlfZGF0YSA9IHBhY2soImE1MTIiLCAiJHZfYnVmZmVyIik7DQogICAgICAgICAgZ3pwdXRzKCR2X3RlbXBfdGFyLCAkdl9iaW5hcnlfZGF0YSk7DQoNCiAgICAgICAgICAkaSsrOw0KICAgICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJSZWFkaW5nIGJsb2NrICRpIik7DQoNCiAgICAgICAgICAvLyAtLS0tLSBSZWFkIG5leHQgYmxvY2sNCiAgICAgICAgICAkdl9idWZmZXIgPSBnenJlYWQoJHBfdGFyLCA1MTIpOw0KDQogICAgICAgIH0gd2hpbGUgKCFnemVvZigkcF90YXIpKTsNCg0KICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiJGkgNTEyIGJ5dGVzIGJsb2NrcyIpOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIHVuY29tcHJlc3NlZCB0YXIgZmlsZQ0KICAgIGVsc2UgaWYgKCRwX21vZGU9PSJ0YXIiKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIE9wZW4gdGhlIHRhciBmaWxlDQogICAgICBpZiAoKCRwX3RhciA9IGZvcGVuKCRwX3Rhcm5hbWUsICJyK2IiKSkgPT0gMCkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICAgIFBjbEVycm9yTG9nKC0xLCAiVW5hYmxlIHRvIG9wZW4gZmlsZSAnJHBfdGFybmFtZScgaW4gYmluYXJ5IHdyaXRlIG1vZGUiKTsNCg0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gR28gdG8gdGhlIGJlZ2lubmluZyBvZiBsYXN0IGJsb2NrDQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCA0LCAiUG9zaXRpb24gYmVmb3JlIDoiLigkcF9tb2RlPT0idGFyIj9mdGVsbCgkcF90YXIpOmd6dGVsbCgkcF90YXIpKSk7DQogICAgICBmc2VlaygkcF90YXIsICR2X3NpemUtNTEyKTsNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDQsICJQb3NpdGlvbiBhZnRlciA6Ii4oJHBfbW9kZT09InRhciI/ZnRlbGwoJHBfdGFyKTpnenRlbGwoJHBfdGFyKSkpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIHVua25vd24gdHlwZQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC0zLCAiSW52YWxpZCB0YXIgbW9kZSAkcF9tb2RlIik7DQoNCiAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gTG9vayBmb3IgdHlwZSBvZiBhcmNoaXZlIHRvIGFkZA0KICAgIGlmICgkcF9tb2RlX2FkZCA9PSAidGd6IikNCiAgICB7DQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCA0LCAiT3BlbmluZyBmaWxlICRwX3Rhcm5hbWVfYWRkIik7DQoNCiAgICAgIC8vIC0tLS0tIE9wZW4gdGhlIGZpbGUgaW4gcmVhZCBtb2RlDQogICAgICBpZiAoKCRwX3Rhcl9hZGQgPSBAZ3pvcGVuKCRwX3Rhcm5hbWVfYWRkLCAicmIiKSkgPT0gMCkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICAgIFBjbEVycm9yTG9nKC0yLCAiVW5hYmxlIHRvIG9wZW4gZmlsZSAnJHBfdGFybmFtZV9hZGQnIGluIGJpbmFyeSByZWFkIG1vZGUiKTsNCg0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gUmVhZCB0aGUgZmlyc3QgNTEyIGJ5dGVzIGJsb2NrDQogICAgICAkdl9idWZmZXIgPSBnenJlYWQoJHBfdGFyX2FkZCwgNTEyKTsNCg0KICAgICAgLy8gLS0tLS0gUmVhZCB0aGUgZm9sbG93aW5nIGJsb2NrcyBidXQgbm90IHRoZSBsYXN0IG9uZQ0KICAgICAgaWYgKCFnemVvZigkcF90YXJfYWRkKSkNCiAgICAgIHsNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIk1vcmUgdGhhbiBvbmUgNTEyIGJsb2NrIGZpbGUiKTsNCiAgICAgICAgJGk9MTsNCg0KICAgICAgICAvLyAtLS0tLSBSZWFkIG5ldyA1MTIgYmxvY2sgYW5kIHdyaXRlIHRoZSBhbHJlYWR5IHJlYWQNCiAgICAgICAgZG97DQogICAgICAgICAgLy8gLS0tLS0gV3JpdGUgdGhlIGFscmVhZHkgcmVhZCBibG9jaw0KICAgICAgICAgICR2X2JpbmFyeV9kYXRhID0gcGFjaygiYTUxMiIsICIkdl9idWZmZXIiKTsNCiAgICAgICAgICBpZiAoJHBfbW9kZT09InRhciIpDQogICAgICAgICAgICBmcHV0cygkcF90YXIsICR2X2JpbmFyeV9kYXRhKTsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICBnenB1dHMoJHZfdGVtcF90YXIsICR2X2JpbmFyeV9kYXRhKTsNCg0KICAgICAgICAgICRpKys7DQogICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIlJlYWRpbmcgYmxvY2sgJGkiKTsNCg0KICAgICAgICAgIC8vIC0tLS0tIFJlYWQgbmV4dCBibG9jaw0KICAgICAgICAgICR2X2J1ZmZlciA9IGd6cmVhZCgkcF90YXJfYWRkLCA1MTIpOw0KDQogICAgICAgIH0gd2hpbGUgKCFnemVvZigkcF90YXJfYWRkKSk7DQoNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIiRpIDUxMiBieXRlcyBibG9ja3MiKTsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gQ2xvc2UgdGhlIGZpbGVzDQogICAgICBnemNsb3NlKCRwX3Rhcl9hZGQpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIHVuY29tcHJlc3NlZCB0YXIgZmlsZQ0KICAgIGVsc2UgaWYgKCRwX21vZGU9PSJ0YXIiKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIE9wZW4gdGhlIGZpbGUgaW4gcmVhZCBtb2RlDQogICAgICBpZiAoKCRwX3Rhcl9hZGQgPSBAZm9wZW4oJHBfdGFybmFtZV9hZGQsICJyYiIpKSA9PSAwKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgICAgUGNsRXJyb3JMb2coLTIsICJVbmFibGUgdG8gb3BlbiBmaWxlICckcF90YXJuYW1lX2FkZCcgaW4gYmluYXJ5IHJlYWQgbW9kZSIpOw0KDQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBSZWFkIHRoZSBmaXJzdCA1MTIgYnl0ZXMgYmxvY2sNCiAgICAgICR2X2J1ZmZlciA9IGZyZWFkKCRwX3Rhcl9hZGQsIDUxMik7DQoNCiAgICAgIC8vIC0tLS0tIFJlYWQgdGhlIGZvbGxvd2luZyBibG9ja3MgYnV0IG5vdCB0aGUgbGFzdCBvbmUNCiAgICAgIGlmICghZmVvZigkcF90YXJfYWRkKSkNCiAgICAgIHsNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIk1vcmUgdGhhbiBvbmUgNTEyIGJsb2NrIGZpbGUiKTsNCiAgICAgICAgJGk9MTsNCg0KICAgICAgICAvLyAtLS0tLSBSZWFkIG5ldyA1MTIgYmxvY2sgYW5kIHdyaXRlIHRoZSBhbHJlYWR5IHJlYWQNCiAgICAgICAgZG97DQogICAgICAgICAgLy8gLS0tLS0gV3JpdGUgdGhlIGFscmVhZHkgcmVhZCBibG9jaw0KICAgICAgICAgICR2X2JpbmFyeV9kYXRhID0gcGFjaygiYTUxMiIsICIkdl9idWZmZXIiKTsNCiAgICAgICAgICBpZiAoJHBfbW9kZT09InRhciIpDQogICAgICAgICAgICBmcHV0cygkcF90YXIsICR2X2JpbmFyeV9kYXRhKTsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICBnenB1dHMoJHZfdGVtcF90YXIsICR2X2JpbmFyeV9kYXRhKTsNCg0KICAgICAgICAgICRpKys7DQogICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIlJlYWRpbmcgYmxvY2sgJGkiKTsNCg0KICAgICAgICAgIC8vIC0tLS0tIFJlYWQgbmV4dCBibG9jaw0KICAgICAgICAgICR2X2J1ZmZlciA9IGZyZWFkKCRwX3Rhcl9hZGQsIDUxMik7DQoNCiAgICAgICAgfSB3aGlsZSAoIWZlb2YoJHBfdGFyX2FkZCkpOw0KDQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICIkaSA1MTIgYnl0ZXMgYmxvY2tzIik7DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIENsb3NlIHRoZSBmaWxlcw0KICAgICAgZmNsb3NlKCRwX3Rhcl9hZGQpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIENhbGwgdGhlIGZvb3RlciBvZiB0aGUgdGFyIGFyY2hpdmUNCiAgICAkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVGb290ZXIoJHBfdGFyLCAkcF9tb2RlKTsNCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIGNsb3NpbmcgY29tcHJlc3NlZCBhcmNoaXZlDQogICAgaWYgKCRwX21vZGUgPT0gInRneiIpDQogICAgew0KICAgICAgLy8gLS0tLS0gQ2xvc2UgdGhlIGZpbGVzDQogICAgICBnemNsb3NlKCRwX3Rhcik7DQogICAgICBnemNsb3NlKCR2X3RlbXBfdGFyKTsNCg0KICAgICAgLy8gLS0tLS0gVW5saW5rIHRhciBmaWxlDQogICAgICBpZiAoIUB1bmxpbmsoJHBfdGFybmFtZSkpDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZw0KICAgICAgICBQY2xFcnJvckxvZygtMTEsICJFcnJvciB3aGlsZSBkZWxldGluZyBhcmNoaXZlIG5hbWUgJHBfdGFybmFtZSIpOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBSZW5hbWUgdGFyIGZpbGUNCiAgICAgIGlmICghQHJlbmFtZSgkdl90ZW1wX3Rhcm5hbWUsICRwX3Rhcm5hbWUpKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgICAgUGNsRXJyb3JMb2coLTEyLCAiRXJyb3Igd2hpbGUgcmVuYW1pbmcgdGVtcG9yYXJ5IGZpbGUgJHZfdGVtcF90YXJuYW1lIHRvIGFyY2hpdmUgbmFtZSAkcF90YXJuYW1lIik7DQoNCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAkdl9yZXN1bHQpOw0KICAgICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBMb29rIGZvciBjbG9zaW5nIHVuY29tcHJlc3NlZCB0YXIgZmlsZQ0KICAgIGVsc2UgaWYgKCRwX21vZGU9PSJ0YXIiKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIENsb3NlIHRoZSB0YXJmaWxlDQogICAgICBmY2xvc2UoJHBfdGFyKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCk7DQogICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyAqKioqKiBVTkRFUiBUSElTIExJTkUgQVJFIERFRklORUQgUFJJVkFURSBJTlRFUk5BTCBGVU5DVElPTlMgKioqKioNCi8vICoqKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKg0KLy8gKioqKiogICAgICAgVEhFU0VTIEZVTkNUSU9OUyBNVVNUIE5PVCBCRSBVU0VEIERJUkVDVExZICAgICAgICoqKioqDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAvLyBGdW5jdGlvbiA6IFBjbFRhckhhbmRsZUNyZWF0ZSgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gUGFyYW1ldGVycyA6DQogIC8vICAgJHBfdGFybmFtZSA6IE5hbWUgb2YgdGhlIHRhciBmaWxlDQogIC8vICAgJHBfbGlzdCA6IEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IG5hbWVzIHRvIGFkZCBpbiB0aGUgdGFyDQogIC8vICAgJHBfbW9kZSA6ICJ0YXIiIGZvciBub3JtYWwgdGFyIGFyY2hpdmUsICJ0Z3oiIGZvciBnemlwcGVkIHRhciBhcmNoaXZlDQogIC8vIFJldHVybiBWYWx1ZXMgOg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICBmdW5jdGlvbiBQY2xUYXJIYW5kbGVDcmVhdGUoJHBfdGFybmFtZSwgJHBfbGlzdCwgJHBfbW9kZSwgJHBfYWRkX2Rpcj0iIiwgJHBfcmVtb3ZlX2Rpcj0iIikNCiAgew0KICAgIFRyRmN0U3RhcnQoX19GSUxFX18sIF9fTElORV9fLCAiUGNsVGFySGFuZGxlQ3JlYXRlIiwgInRhcj0kcF90YXJuYW1lLCBsaXN0LCBtb2RlPSRwX21vZGUsIGFkZF9kaXI9JyRwX2FkZF9kaXInLCByZW1vdmVfZGlyPSckcF9yZW1vdmVfZGlyJyIpOw0KICAgICR2X3Jlc3VsdD0xOw0KICAgICR2X2xpc3RfZGV0YWlsID0gYXJyYXkoKTsNCg0KICAgIC8vIC0tLS0tIENoZWNrIHRoZSBwYXJhbWV0ZXJzDQogICAgaWYgKCgkcF90YXJuYW1lID09ICIiKSB8fCAoKCRwX21vZGUgIT0gInRhciIpICYmICgkcF9tb2RlICE9ICJ0Z3oiKSkpDQogICAgew0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBpZiAoJHBfdGFybmFtZSA9PSAiIikNCiAgICAgICAgUGNsRXJyb3JMb2coLTMsICJJbnZhbGlkIGVtcHR5IGFyY2hpdmUgbmFtZSIpOw0KICAgICAgZWxzZQ0KICAgICAgICBQY2xFcnJvckxvZygtMywgIlVua25vd24gbW9kZSAnJHBfbW9kZSciKTsNCg0KICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBMb29rIGZvciB0YXIgZmlsZQ0KICAgIGlmICgkcF9tb2RlID09ICJ0YXIiKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIE9wZW4gdGhlIHRhciBmaWxlDQogICAgICBpZiAoKCRwX3RhciA9IGZvcGVuKCRwX3Rhcm5hbWUsICJ3YiIpKSA9PSAwKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgICAgUGNsRXJyb3JMb2coLTEsICJVbmFibGUgdG8gb3BlbiBmaWxlIFskcF90YXJuYW1lXSBpbiBiaW5hcnkgd3JpdGUgbW9kZSIpOw0KDQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBDYWxsIHRoZSBhZGRpbmcgZmN0IGluc2lkZSB0aGUgdGFyDQogICAgICBpZiAoKCR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUFkZExpc3QoJHBfdGFyLCAkcF9saXN0LCAkcF9tb2RlLCAkdl9saXN0X2RldGFpbCwgJHBfYWRkX2RpciwgJHBfcmVtb3ZlX2RpcikpID09IDEpDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGZvb3RlciBvZiB0aGUgdGFyIGFyY2hpdmUNCiAgICAgICAgJHZfcmVzdWx0ID0gUGNsVGFySGFuZGxlRm9vdGVyKCRwX3RhciwgJHBfbW9kZSk7DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIENsb3NlIHRoZSB0YXJmaWxlDQogICAgICBmY2xvc2UoJHBfdGFyKTsNCiAgICB9DQogICAgLy8gLS0tLS0gTG9vayBmb3IgdGd6IGZpbGUNCiAgICBlbHNlDQogICAgew0KICAgICAgLy8gLS0tLS0gT3BlbiB0aGUgdGFyIGZpbGUNCiAgICAgIGlmICgoJHBfdGFyID0gQGd6b3BlbigkcF90YXJuYW1lLCAid2IiKSkgPT0gMCkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICAgIFBjbEVycm9yTG9nKC0xLCAiVW5hYmxlIHRvIG9wZW4gZmlsZSBbJHBfdGFybmFtZV0gaW4gYmluYXJ5IHdyaXRlIG1vZGUiKTsNCg0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gQ2FsbCB0aGUgYWRkaW5nIGZjdCBpbnNpZGUgdGhlIHRhcg0KICAgICAgaWYgKCgkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVBZGRMaXN0KCRwX3RhciwgJHBfbGlzdCwgJHBfbW9kZSwgJHZfbGlzdF9kZXRhaWwsICRwX2FkZF9kaXIsICRwX3JlbW92ZV9kaXIpKSA9PSAxKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBDYWxsIHRoZSBmb290ZXIgb2YgdGhlIHRhciBhcmNoaXZlDQogICAgICAgICR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUZvb3RlcigkcF90YXIsICRwX21vZGUpOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBDbG9zZSB0aGUgdGFyZmlsZQ0KICAgICAgZ3pjbG9zZSgkcF90YXIpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIFJldHVybg0KICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHZfcmVzdWx0KTsNCiAgICByZXR1cm4gJHZfcmVzdWx0Ow0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBQY2xUYXJIYW5kbGVBcHBlbmQoKQ0KICAvLyBEZXNjcmlwdGlvbiA6DQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAgICRwX3Rhcm5hbWUgOiBOYW1lIG9mIHRoZSB0YXIgZmlsZQ0KICAvLyAgICRwX2xpc3QgOiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBuYW1lcyB0byBhZGQgaW4gdGhlIHRhcg0KICAvLyAgICRwX21vZGUgOiAidGFyIiBmb3Igbm9ybWFsIHRhciBhcmNoaXZlLCAidGd6IiBmb3IgZ3ppcHBlZCB0YXIgYXJjaGl2ZQ0KICAvLyBSZXR1cm4gVmFsdWVzIDoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gUGNsVGFySGFuZGxlQXBwZW5kKCRwX3Rhcm5hbWUsICRwX2xpc3QsICRwX21vZGUsICYkcF9saXN0X2RldGFpbCwgJHBfYWRkX2RpciwgJHBfcmVtb3ZlX2RpcikNCiAgew0KICAgIFRyRmN0U3RhcnQoX19GSUxFX18sIF9fTElORV9fLCAiUGNsVGFySGFuZGxlQXBwZW5kIiwgInRhcj0kcF90YXJuYW1lLCBsaXN0LCBtb2RlPSRwX21vZGUiKTsNCiAgICAkdl9yZXN1bHQ9MTsNCg0KICAgIC8vIC0tLS0tIENoZWNrIHRoZSBwYXJhbWV0ZXJzDQogICAgaWYgKCRwX3Rhcm5hbWUgPT0gIiIpDQogICAgew0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBQY2xFcnJvckxvZygtMywgIkludmFsaWQgZW1wdHkgYXJjaGl2ZSBuYW1lIik7DQoNCiAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgfQ0KDQogICAgY2xlYXJzdGF0Y2FjaGUoKTsNCg0KICAgIC8vIC0tLS0tIENoZWNrIHRoZSBmaWxlIHNpemUNCiAgICBpZiAoKCFpc19maWxlKCRwX3Rhcm5hbWUpKSB8fA0KICAgICAgICAoKCgoJHZfc2l6ZSA9IGZpbGVzaXplKCRwX3Rhcm5hbWUpKSAlIDUxMikgIT0gMCkgJiYgKCRwX21vZGU9PSJ0YXIiKSkpDQogICAgew0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBpZiAoIWlzX2ZpbGUoJHBfdGFybmFtZSkpDQogICAgICAgIFBjbEVycm9yTG9nKC00LCAiQXJjaGl2ZSAnJHBfdGFybmFtZScgZG9lcyBub3QgZXhpc3QiKTsNCiAgICAgIGVsc2UNCiAgICAgICAgUGNsRXJyb3JMb2coLTYsICJBcmNoaXZlICckcF90YXJuYW1lJyBoYXMgaW52YWxpZCBzaXplICIuZmlsZXNpemUoJHBfdGFybmFtZSkuIihub3QgYSA1MTIgYmxvY2sgbXVsdGlwbGUpIik7DQoNCiAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gTG9vayBmb3IgY29tcHJlc3NlZCBhcmNoaXZlDQogICAgaWYgKCRwX21vZGUgPT0gInRneiIpDQogICAgew0KICAgICAgLy8gLS0tLS0gT3BlbiB0aGUgZmlsZSBpbiByZWFkIG1vZGUNCiAgICAgIGlmICgoJHBfdGFyID0gQGd6b3BlbigkcF90YXJuYW1lLCAicmIiKSkgPT0gMCkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICAgIFBjbEVycm9yTG9nKC0yLCAiVW5hYmxlIHRvIG9wZW4gZmlsZSAnJHBfdGFybmFtZScgaW4gYmluYXJ5IHJlYWQgbW9kZSIpOw0KDQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBPcGVuIGEgdGVtcG9yYXJ5IGZpbGUgaW4gd3JpdGUgbW9kZQ0KICAgICAgJHZfdGVtcF90YXJuYW1lID0gdW5pcWlkKCJwY2x0YXItIikuIi50bXAiOw0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkNyZWF0aW5nIHRlbXBvcmFyeSBhcmNoaXZlIGZpbGUgJHZfdGVtcF90YXJuYW1lIik7DQogICAgICBpZiAoKCR2X3RlbXBfdGFyID0gQGd6b3Blbigkdl90ZW1wX3Rhcm5hbWUsICJ3YiIpKSA9PSAwKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBDbG9zZSB0YXIgZmlsZQ0KICAgICAgICBnemNsb3NlKCRwX3Rhcik7DQoNCiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICAgIFBjbEVycm9yTG9nKC0xLCAiVW5hYmxlIHRvIG9wZW4gZmlsZSAnJHZfdGVtcF90YXJuYW1lJyBpbiBiaW5hcnkgd3JpdGUgbW9kZSIpOw0KDQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBSZWFkIHRoZSBmaXJzdCA1MTIgYnl0ZXMgYmxvY2sNCiAgICAgICR2X2J1ZmZlciA9IGd6cmVhZCgkcF90YXIsIDUxMik7DQoNCiAgICAgIC8vIC0tLS0tIFJlYWQgdGhlIGZvbGxvd2luZyBibG9ja3MgYnV0IG5vdCB0aGUgbGFzdCBvbmUNCiAgICAgIGlmICghZ3plb2YoJHBfdGFyKSkNCiAgICAgIHsNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIk1vcmUgdGhhbiBvbmUgNTEyIGJsb2NrIGZpbGUiKTsNCiAgICAgICAgJGk9MTsNCg0KICAgICAgICAvLyAtLS0tLSBSZWFkIG5ldyA1MTIgYmxvY2sgYW5kIHdyaXRlIHRoZSBhbHJlYWR5IHJlYWQNCiAgICAgICAgZG97DQogICAgICAgICAgLy8gLS0tLS0gV3JpdGUgdGhlIGFscmVhZHkgcmVhZCBibG9jaw0KICAgICAgICAgICR2X2JpbmFyeV9kYXRhID0gcGFjaygiYTUxMiIsICIkdl9idWZmZXIiKTsNCiAgICAgICAgICBnenB1dHMoJHZfdGVtcF90YXIsICR2X2JpbmFyeV9kYXRhKTsNCg0KICAgICAgICAgICRpKys7DQogICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIlJlYWRpbmcgYmxvY2sgJGkiKTsNCg0KICAgICAgICAgIC8vIC0tLS0tIFJlYWQgbmV4dCBibG9jaw0KICAgICAgICAgICR2X2J1ZmZlciA9IGd6cmVhZCgkcF90YXIsIDUxMik7DQoNCiAgICAgICAgfSB3aGlsZSAoIWd6ZW9mKCRwX3RhcikpOw0KDQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICIkaSA1MTIgYnl0ZXMgYmxvY2tzIik7DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGFkZGluZyBmY3QgaW5zaWRlIHRoZSB0YXINCiAgICAgIGlmICgoJHZfcmVzdWx0ID0gUGNsVGFySGFuZGxlQWRkTGlzdCgkdl90ZW1wX3RhciwgJHBfbGlzdCwgJHBfbW9kZSwgJHBfbGlzdF9kZXRhaWwsICRwX2FkZF9kaXIsICRwX3JlbW92ZV9kaXIpKSA9PSAxKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBDYWxsIHRoZSBmb290ZXIgb2YgdGhlIHRhciBhcmNoaXZlDQogICAgICAgICR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUZvb3Rlcigkdl90ZW1wX3RhciwgJHBfbW9kZSk7DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIENsb3NlIHRoZSBmaWxlcw0KICAgICAgZ3pjbG9zZSgkcF90YXIpOw0KICAgICAgZ3pjbG9zZSgkdl90ZW1wX3Rhcik7DQoNCiAgICAgIC8vIC0tLS0tIFVubGluayB0YXIgZmlsZQ0KICAgICAgaWYgKCFAdW5saW5rKCRwX3Rhcm5hbWUpKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgICAgUGNsRXJyb3JMb2coLTExLCAiRXJyb3Igd2hpbGUgZGVsZXRpbmcgYXJjaGl2ZSBuYW1lICRwX3Rhcm5hbWUiKTsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gUmVuYW1lIHRhciBmaWxlDQogICAgICBpZiAoIUByZW5hbWUoJHZfdGVtcF90YXJuYW1lLCAkcF90YXJuYW1lKSkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICAgIFBjbEVycm9yTG9nKC0xMiwgIkVycm9yIHdoaWxlIHJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlICR2X3RlbXBfdGFybmFtZSB0byBhcmNoaXZlIG5hbWUgJHBfdGFybmFtZSIpOw0KDQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHZfcmVzdWx0KTsNCiAgICAgIHJldHVybiAkdl9yZXN1bHQ7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gTG9vayBmb3IgdW5jb21wcmVzc2VkIHRhciBmaWxlDQogICAgZWxzZSBpZiAoJHBfbW9kZT09InRhciIpDQogICAgew0KICAgICAgLy8gLS0tLS0gT3BlbiB0aGUgdGFyIGZpbGUNCiAgICAgIGlmICgoJHBfdGFyID0gZm9wZW4oJHBfdGFybmFtZSwgInIrYiIpKSA9PSAwKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgICAgUGNsRXJyb3JMb2coLTEsICJVbmFibGUgdG8gb3BlbiBmaWxlICckcF90YXJuYW1lJyBpbiBiaW5hcnkgd3JpdGUgbW9kZSIpOw0KDQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBHbyB0byB0aGUgYmVnaW5uaW5nIG9mIGxhc3QgYmxvY2sNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDQsICJQb3NpdGlvbiBiZWZvcmUgOiIuKCRwX21vZGU9PSJ0YXIiP2Z0ZWxsKCRwX3Rhcik6Z3p0ZWxsKCRwX3RhcikpKTsNCiAgICAgIGZzZWVrKCRwX3RhciwgJHZfc2l6ZS01MTIpOw0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgNCwgIlBvc2l0aW9uIGFmdGVyIDoiLigkcF9tb2RlPT0idGFyIj9mdGVsbCgkcF90YXIpOmd6dGVsbCgkcF90YXIpKSk7DQoNCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGFkZGluZyBmY3QgaW5zaWRlIHRoZSB0YXINCiAgICAgIGlmICgoJHZfcmVzdWx0ID0gUGNsVGFySGFuZGxlQWRkTGlzdCgkcF90YXIsICRwX2xpc3QsICRwX21vZGUsICRwX2xpc3RfZGV0YWlsLCAkcF9hZGRfZGlyLCAkcF9yZW1vdmVfZGlyKSkgPT0gMSkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gQ2FsbCB0aGUgZm9vdGVyIG9mIHRoZSB0YXIgYXJjaGl2ZQ0KICAgICAgICAkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVGb290ZXIoJHBfdGFyLCAkcF9tb2RlKTsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gQ2xvc2UgdGhlIHRhcmZpbGUNCiAgICAgIGZjbG9zZSgkcF90YXIpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIHVua25vd24gdHlwZQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC0zLCAiSW52YWxpZCB0YXIgbW9kZSAkcF9tb2RlIik7DQoNCiAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gUmV0dXJuDQogICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAkdl9yZXN1bHQpOw0KICAgIHJldHVybiAkdl9yZXN1bHQ7DQogIH0NCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAvLyBGdW5jdGlvbiA6IFBjbFRhckhhbmRsZUFkZExpc3QoKQ0KICAvLyBEZXNjcmlwdGlvbiA6DQogIC8vICAgJHBfYWRkX2RpciBhbmQgJHBfcmVtb3ZlX2RpciB3aWxsIGdpdmUgdGhlIGFiaWxpdHkgdG8gbWVtb3JpemUgYSBwYXRoIHdoaWNoIGlzDQogIC8vICAgZGlmZmVyZW50IGZyb20gdGhlIHJlYWwgcGF0aCBvZiB0aGUgZmlsZS4gVGhpcyBpcyB1c2VmdWxsIGlmIHlvdSB3YW50IHRvIGhhdmUgUGNsVGFyDQogIC8vICAgcnVubmluZyBpbiBhbnkgZGlyZWN0b3J5LCBhbmQgbWVtb3JpemUgcmVsYXRpdmUgcGF0aCBmcm9tIGFuIG90aGVyIGRpcmVjdG9yeS4NCiAgLy8gUGFyYW1ldGVycyA6DQogIC8vICAgJHBfdGFyIDogRmlsZSBkZXNjcmlwdG9yIG9mIHRoZSB0YXIgYXJjaGl2ZQ0KICAvLyAgICRwX2xpc3QgOiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBuYW1lcyB0byBhZGQgaW4gdGhlIHRhcg0KICAvLyAgICRwX21vZGUgOiAidGFyIiBmb3Igbm9ybWFsIHRhciBhcmNoaXZlLCAidGd6IiBmb3IgZ3ppcHBlZCB0YXIgYXJjaGl2ZQ0KICAvLyAgICRwX2xpc3RfZGV0YWlsIDogbGlzdCBvZiBhZGRlZCBmaWxlcyB3aXRoIHRoZWlyIHByb3BlcnRpZXMgKHNwZWNpYWxseSB0aGUgc3RhdHVzIGZpZWxkKQ0KICAvLyAgICRwX2FkZF9kaXIgOiBQYXRoIHRvIGFkZCBpbiB0aGUgZmlsZW5hbWUgcGF0aCBhcmNoaXZlZA0KICAvLyAgICRwX3JlbW92ZV9kaXIgOiBQYXRoIHRvIHJlbW92ZSBpbiB0aGUgZmlsZW5hbWUgcGF0aCBhcmNoaXZlZA0KICAvLyBSZXR1cm4gVmFsdWVzIDoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gUGNsVGFySGFuZGxlQWRkTGlzdCgkcF90YXIsICRwX2xpc3QsICRwX21vZGUsICYkcF9saXN0X2RldGFpbCwgJHBfYWRkX2RpciwgJHBfcmVtb3ZlX2RpcikNCiAgew0KICAgIFRyRmN0U3RhcnQoX19GSUxFX18sIF9fTElORV9fLCAiUGNsVGFySGFuZGxlQWRkTGlzdCIsICJ0YXI9JyRwX3RhcicsIGxpc3QsIG1vZGU9JyRwX21vZGUnLCBhZGRfZGlyPSckcF9hZGRfZGlyJywgcmVtb3ZlX2Rpcj0nJHBfcmVtb3ZlX2RpciciKTsNCiAgICAkdl9yZXN1bHQ9MTsNCiAgICAkdl9oZWFkZXIgPSBhcnJheSgpOw0KDQogICAgLy8gLS0tLS0gUmVjdXBlcmF0ZSB0aGUgY3VycmVudCBudW1iZXIgb2YgZWx0IGluIGxpc3QNCiAgICAkdl9uYiA9IHNpemVvZigkcF9saXN0X2RldGFpbCk7DQoNCiAgICAvLyAtLS0tLSBDaGVjayB0aGUgcGFyYW1ldGVycw0KICAgIGlmICgkcF90YXIgPT0gMCkNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC0zLCAiSW52YWxpZCBmaWxlIGRlc2NyaXB0b3IgaW4gZmlsZSAiLl9fRklMRV9fLiIsIGxpbmUgIi5fX0xJTkVfXyk7DQoNCiAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gQ2hlY2sgdGhlIGFyZ3VtZW50cw0KICAgIGlmIChzaXplb2YoJHBfbGlzdCkgPT0gMCkNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC0zLCAiSW52YWxpZCBmaWxlIGxpc3QgcGFyYW1ldGVyIChpbnZhbGlkIG9yIGVtcHR5IGxpc3QpIik7DQoNCiAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gTG9vcCBvbiB0aGUgZmlsZXMNCiAgICBmb3IgKCRqPTA7ICgkajxjb3VudCgkcF9saXN0KSkgJiYgKCR2X3Jlc3VsdD09MSk7ICRqKyspDQogICAgew0KICAgICAgLy8gLS0tLS0gUmVjdXBlcmF0ZSB0aGUgZmlsZW5hbWUNCiAgICAgICRwX2ZpbGVuYW1lID0gJHBfbGlzdFskal07DQoNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJMb29raW5nIGZvciBmaWxlIFskcF9maWxlbmFtZV0iKTsNCg0KICAgICAgLy8gLS0tLS0gU2tpcCBlbXB0eSBmaWxlIG5hbWVzDQogICAgICBpZiAoJHBfZmlsZW5hbWUgPT0gIiIpDQogICAgICB7DQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJTa2lwIGVtcHR5IGZpbGVuYW1lIik7DQogICAgICAgIGNvbnRpbnVlOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBDaGVjayB0aGUgZmlsZW5hbWUNCiAgICAgIGlmICghZmlsZV9leGlzdHMoJHBfZmlsZW5hbWUpKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkZpbGUgJyRwX2ZpbGVuYW1lJyBkb2VzIG5vdCBleGlzdHMiKTsNCiAgICAgICAgUGNsRXJyb3JMb2coLTQsICJGaWxlICckcF9maWxlbmFtZScgZG9lcyBub3QgZXhpc3RzIik7DQoNCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIENoZWNrIHRoZSBwYXRoIGxlbmd0aA0KICAgICAgaWYgKHN0cmxlbigkcF9maWxlbmFtZSkgPiA5OSkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICAgIFBjbEVycm9yTG9nKC01LCAiRmlsZSBuYW1lIGlzIHRvbyBsb25nIChtYXguIDk5KSA6ICckcF9maWxlbmFtZSciKTsNCg0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICAgIH0NCg0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgNCwgIkZpbGUgcG9zaXRpb24gYmVmb3JlIGhlYWRlciA9Ii4oJHBfbW9kZT09InRhciI/ZnRlbGwoJHBfdGFyKTpnenRlbGwoJHBfdGFyKSkpOw0KDQogICAgICAvLyAtLS0tLSBBZGQgdGhlIGZpbGUNCiAgICAgIGlmICgoJHZfcmVzdWx0ID0gUGNsVGFySGFuZGxlQWRkRmlsZSgkcF90YXIsICRwX2ZpbGVuYW1lLCAkcF9tb2RlLCAkdl9oZWFkZXIsICRwX2FkZF9kaXIsICRwX3JlbW92ZV9kaXIpKSAhPSAxKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4gc3RhdHVzDQogICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHZfcmVzdWx0KTsNCiAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gU3RvcmUgdGhlIGZpbGUgaW5mb3MNCiAgICAgICRwX2xpc3RfZGV0YWlsWyR2X25iKytdID0gJHZfaGVhZGVyOw0KDQogICAgICAvLyAtLS0tLSBMb29rIGZvciBkaXJlY3RvcnkNCiAgICAgIGlmIChpc19kaXIoJHBfZmlsZW5hbWUpKQ0KICAgICAgew0KICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiJHBfZmlsZW5hbWUgaXMgYSBkaXJlY3RvcnkiKTsNCg0KICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBwYXRoDQogICAgICAgIGlmICgkcF9maWxlbmFtZSAhPSAiLiIpDQogICAgICAgICAgJHZfcGF0aCA9ICRwX2ZpbGVuYW1lLiIvIjsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgICR2X3BhdGggPSAiIjsNCg0KICAgICAgICAvLyAtLS0tLSBSZWFkIHRoZSBkaXJlY3RvcnkgZm9yIGZpbGVzIGFuZCBzdWItZGlyZWN0b3JpZXMNCiAgICAgICAgJHBfaGRpciA9IG9wZW5kaXIoJHBfZmlsZW5hbWUpOw0KICAgICAgICAkcF9oaXRlbSA9IHJlYWRkaXIoJHBfaGRpcik7IC8vICcuJyBkaXJlY3RvcnkNCiAgICAgICAgJHBfaGl0ZW0gPSByZWFkZGlyKCRwX2hkaXIpOyAvLyAnLi4nIGRpcmVjdG9yeQ0KICAgICAgICB3aGlsZSAoJHBfaGl0ZW0gPSByZWFkZGlyKCRwX2hkaXIpKQ0KICAgICAgICB7DQogICAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgYSBmaWxlDQogICAgICAgICAgaWYgKGlzX2ZpbGUoJHZfcGF0aC4kcF9oaXRlbSkpDQogICAgICAgICAgew0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgNCwgIkFkZCB0aGUgZmlsZSAnIi4kdl9wYXRoLiRwX2hpdGVtLiInIik7DQoNCiAgICAgICAgICAgIC8vIC0tLS0tIEFkZCB0aGUgZmlsZQ0KICAgICAgICAgICAgaWYgKCgkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVBZGRGaWxlKCRwX3RhciwgJHZfcGF0aC4kcF9oaXRlbSwgJHBfbW9kZSwgJHZfaGVhZGVyLCAkcF9hZGRfZGlyLCAkcF9yZW1vdmVfZGlyKSkgIT0gMSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuIHN0YXR1cw0KICAgICAgICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCk7DQogICAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIC0tLS0tIFN0b3JlIHRoZSBmaWxlIGluZm9zDQogICAgICAgICAgICAkcF9saXN0X2RldGFpbFskdl9uYisrXSA9ICR2X2hlYWRlcjsNCiAgICAgICAgICB9DQoNCiAgICAgICAgICAvLyAtLS0tLSBSZWN1cnNpdmUgY2FsbCB0byBQY2xUYXJIYW5kbGVBZGRGaWxlKCkNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgew0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgNCwgIiciLiR2X3BhdGguJHBfaGl0ZW0uIicgaXMgYSBkaXJlY3RvcnkiKTsNCg0KICAgICAgICAgICAgLy8gLS0tLS0gTmVlZCBhbiBhcnJheSBhcyBwYXJhbWV0ZXINCiAgICAgICAgICAgICRwX3RlbXBfbGlzdFswXSA9ICR2X3BhdGguJHBfaGl0ZW07DQogICAgICAgICAgICAkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVBZGRMaXN0KCRwX3RhciwgJHBfdGVtcF9saXN0LCAkcF9tb2RlLCAkcF9saXN0X2RldGFpbCwgJHBfYWRkX2RpciwgJHBfcmVtb3ZlX2Rpcik7DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gLS0tLS0gRnJlZSBtZW1vcnkgZm9yIHRoZSByZWN1cnNpdmUgbG9vcA0KICAgICAgICB1bnNldCgkcF90ZW1wX2xpc3QpOw0KICAgICAgICB1bnNldCgkcF9oZGlyKTsNCiAgICAgICAgdW5zZXQoJHBfaGl0ZW0pOw0KICAgICAgfQ0KICAgICAgZWxzZQ0KICAgICAgew0KICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCA0LCAiRmlsZSBwb3NpdGlvbiBhZnRlciBibG9ja3MgPSIuKCRwX21vZGU9PSJ0YXIiP2Z0ZWxsKCRwX3Rhcik6Z3p0ZWxsKCRwX3RhcikpKTsNCiAgICAgIH0NCiAgICB9DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCk7DQogICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFySGFuZGxlQWRkRmlsZSgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gUGFyYW1ldGVycyA6DQogIC8vIFJldHVybiBWYWx1ZXMgOg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICBmdW5jdGlvbiBQY2xUYXJIYW5kbGVBZGRGaWxlKCRwX3RhciwgJHBfZmlsZW5hbWUsICRwX21vZGUsICYkcF9oZWFkZXIsICRwX2FkZF9kaXIsICRwX3JlbW92ZV9kaXIpDQogIHsNCiAgICBUckZjdFN0YXJ0KF9fRklMRV9fLCBfX0xJTkVfXywgIlBjbFRhckhhbmRsZUFkZEZpbGUiLCAidGFyPSckcF90YXInLCBmaWxlbmFtZT0nJHBfZmlsZW5hbWUnLCBwX21vZGU9JyRwX21vZGUnLCBhZGRfZGlyPSckcF9hZGRfZGlyJywgcmVtb3ZlX2Rpcj0nJHBfcmVtb3ZlX2RpciciKTsNCiAgICAkdl9yZXN1bHQ9MTsNCg0KICAgIC8vIC0tLS0tIENoZWNrIHRoZSBwYXJhbWV0ZXJzDQogICAgaWYgKCRwX3RhciA9PSAwKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIEVycm9yIGxvZw0KICAgICAgUGNsRXJyb3JMb2coLTMsICJJbnZhbGlkIGZpbGUgZGVzY3JpcHRvciBpbiBmaWxlICIuX19GSUxFX18uIiwgbGluZSAiLl9fTElORV9fKTsNCg0KICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBTa2lwIGVtcHR5IGZpbGUgbmFtZXMNCiAgICBpZiAoJHBfZmlsZW5hbWUgPT0gIiIpDQogICAgew0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBQY2xFcnJvckxvZygtMywgIkludmFsaWQgZmlsZSBsaXN0IHBhcmFtZXRlciAoaW52YWxpZCBvciBlbXB0eSBsaXN0KSIpOw0KDQogICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIENhbGN1bGF0ZSB0aGUgc3RvcmVkIGZpbGVuYW1lDQogICAgJHZfc3RvcmVkX2ZpbGVuYW1lID0gJHBfZmlsZW5hbWU7DQogICAgaWYgKCRwX3JlbW92ZV9kaXIgIT0gIiIpDQogICAgew0KICAgICAgaWYgKHN1YnN0cigkcF9yZW1vdmVfZGlyLCAtMSkgIT0gJy8nKQ0KICAgICAgICAkcF9yZW1vdmVfZGlyIC49ICIvIjsNCg0KICAgICAgaWYgKChzdWJzdHIoJHBfZmlsZW5hbWUsIDAsIDIpID09ICIuLyIpIHx8IChzdWJzdHIoJHBfcmVtb3ZlX2RpciwgMCwgMikgPT0gIi4vIikpDQogICAgICB7DQogICAgICAgIGlmICgoc3Vic3RyKCRwX2ZpbGVuYW1lLCAwLCAyKSA9PSAiLi8iKSAmJiAoc3Vic3RyKCRwX3JlbW92ZV9kaXIsIDAsIDIpICE9ICIuLyIpKQ0KICAgICAgICAgICRwX3JlbW92ZV9kaXIgPSAiLi8iLiRwX3JlbW92ZV9kaXI7DQogICAgICAgIGlmICgoc3Vic3RyKCRwX2ZpbGVuYW1lLCAwLCAyKSAhPSAiLi8iKSAmJiAoc3Vic3RyKCRwX3JlbW92ZV9kaXIsIDAsIDIpID09ICIuLyIpKQ0KICAgICAgICAgICRwX3JlbW92ZV9kaXIgPSBzdWJzdHIoJHBfcmVtb3ZlX2RpciwgMik7DQogICAgICB9DQoNCiAgICAgIGlmIChzdWJzdHIoJHBfZmlsZW5hbWUsIDAsIHN0cmxlbigkcF9yZW1vdmVfZGlyKSkgPT0gJHBfcmVtb3ZlX2RpcikNCiAgICAgIHsNCiAgICAgICAgJHZfc3RvcmVkX2ZpbGVuYW1lID0gc3Vic3RyKCRwX2ZpbGVuYW1lLCBzdHJsZW4oJHBfcmVtb3ZlX2RpcikpOw0KICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiUmVtb3ZlIHBhdGggJyRwX3JlbW92ZV9kaXInIGluIGZpbGUgJyRwX2ZpbGVuYW1lJyA9ICckdl9zdG9yZWRfZmlsZW5hbWUnIik7DQogICAgICB9DQogICAgfQ0KICAgIGlmICgkcF9hZGRfZGlyICE9ICIiKQ0KICAgIHsNCiAgICAgIGlmIChzdWJzdHIoJHBfYWRkX2RpciwgLTEpID09ICIvIikNCiAgICAgICAgJHZfc3RvcmVkX2ZpbGVuYW1lID0gJHBfYWRkX2Rpci4kdl9zdG9yZWRfZmlsZW5hbWU7DQogICAgICBlbHNlDQogICAgICAgICR2X3N0b3JlZF9maWxlbmFtZSA9ICRwX2FkZF9kaXIuIi8iLiR2X3N0b3JlZF9maWxlbmFtZTsNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJBZGQgcGF0aCAnJHBfYWRkX2RpcicgaW4gZmlsZSAnJHBfZmlsZW5hbWUnID0gJyR2X3N0b3JlZF9maWxlbmFtZSciKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBDaGVjayB0aGUgcGF0aCBsZW5ndGgNCiAgICBpZiAoc3RybGVuKCR2X3N0b3JlZF9maWxlbmFtZSkgPiA5OSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC01LCAiU3RvcmVkIGZpbGUgbmFtZSBpcyB0b28gbG9uZyAobWF4LiA5OSkgOiAnJHZfc3RvcmVkX2ZpbGVuYW1lJyIpOw0KDQogICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIGEgZmlsZQ0KICAgIGlmIChpc19maWxlKCRwX2ZpbGVuYW1lKSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBPcGVuIHRoZSBzb3VyY2UgZmlsZQ0KICAgICAgaWYgKCgkdl9maWxlID0gZm9wZW4oJHBfZmlsZW5hbWUsICJyYiIpKSA9PSAwKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgICAgUGNsRXJyb3JMb2coLTIsICJVbmFibGUgdG8gb3BlbiBmaWxlICckcF9maWxlbmFtZScgaW4gYmluYXJ5IHJlYWQgbW9kZSIpOw0KDQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBDYWxsIHRoZSBoZWFkZXIgZ2VuZXJhdGlvbg0KICAgICAgaWYgKCgkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVIZWFkZXIoJHBfdGFyLCAkcF9maWxlbmFtZSwgJHBfbW9kZSwgJHBfaGVhZGVyLCAkdl9zdG9yZWRfZmlsZW5hbWUpKSAhPSAxKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4gc3RhdHVzDQogICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHZfcmVzdWx0KTsNCiAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgICAgIH0NCg0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgNCwgIkZpbGUgcG9zaXRpb24gYWZ0ZXIgaGVhZGVyID0iLigkcF9tb2RlPT0idGFyIj9mdGVsbCgkcF90YXIpOmd6dGVsbCgkcF90YXIpKSk7DQoNCiAgICAgIC8vIC0tLS0tIFJlYWQgdGhlIGZpbGUgYnkgNTEyIG9jdGV0cyBibG9ja3MNCiAgICAgICRpPTA7DQogICAgICB3aGlsZSAoKCR2X2J1ZmZlciA9IGZyZWFkKCR2X2ZpbGUsIDUxMikpICE9ICIiKQ0KICAgICAgew0KICAgICAgICAkdl9iaW5hcnlfZGF0YSA9IHBhY2soImE1MTIiLCAiJHZfYnVmZmVyIik7DQogICAgICAgIGlmICgkcF9tb2RlID09ICJ0YXIiKQ0KICAgICAgICAgIGZwdXRzKCRwX3RhciwgJHZfYmluYXJ5X2RhdGEpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgZ3pwdXRzKCRwX3RhciwgJHZfYmluYXJ5X2RhdGEpOw0KICAgICAgICAkaSsrOw0KICAgICAgfQ0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIiRpIDUxMiBieXRlcyBibG9ja3MiKTsNCg0KICAgICAgLy8gLS0tLS0gQ2xvc2UgdGhlIGZpbGUNCiAgICAgIGZjbG9zZSgkdl9maWxlKTsNCg0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgNCwgIkZpbGUgcG9zaXRpb24gYWZ0ZXIgYmxvY2tzID0iLigkcF9tb2RlPT0idGFyIj9mdGVsbCgkcF90YXIpOmd6dGVsbCgkcF90YXIpKSk7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gTG9vayBmb3IgYSBkaXJlY3RvcnkNCiAgICBlbHNlDQogICAgew0KICAgICAgLy8gLS0tLS0gQ2FsbCB0aGUgaGVhZGVyIGdlbmVyYXRpb24NCiAgICAgIGlmICgoJHZfcmVzdWx0ID0gUGNsVGFySGFuZGxlSGVhZGVyKCRwX3RhciwgJHBfZmlsZW5hbWUsICRwX21vZGUsICRwX2hlYWRlciwgJHZfc3RvcmVkX2ZpbGVuYW1lKSkgIT0gMSkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuIHN0YXR1cw0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCk7DQogICAgICAgIHJldHVybiAkdl9yZXN1bHQ7DQogICAgICB9DQoNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDQsICJGaWxlIHBvc2l0aW9uIGFmdGVyIGhlYWRlciA9Ii4oJHBfbW9kZT09InRhciI/ZnRlbGwoJHBfdGFyKTpnenRlbGwoJHBfdGFyKSkpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIFJldHVybg0KICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHZfcmVzdWx0KTsNCiAgICByZXR1cm4gJHZfcmVzdWx0Ow0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBQY2xUYXJIYW5kbGVIZWFkZXIoKQ0KICAvLyBEZXNjcmlwdGlvbiA6DQogIC8vICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGluIHRoZSBUQVIgJHBfdGFyLCB0aGUgVEFSIGhlYWRlciBmb3IgdGhlIGZpbGUNCiAgLy8gICAkcF9maWxlbmFtZS4NCiAgLy8NCiAgLy8gICAxLiBUaGUgaW5mb3JtYXRpb25zIG5lZWRlZCB0byBjb21wb3NlIHRoZSBoZWFkZXIgYXJlIHJlY3VwZXJhdGVkIGFuZCBmb3JtYXR0ZWQNCiAgLy8gICAyLiBUd28gYmluYXJ5IHN0cmluZ3MgYXJlIGNvbXBvc2VkIGZvciB0aGUgZmlyc3QgcGFydCBvZiB0aGUgaGVhZGVyLCBiZWZvcmUNCiAgLy8gICAgICBhbmQgYWZ0ZXIgY2hlY2tzdW0gZmllbGQuDQogIC8vICAgMy4gVGhlIGNoZWNrc3VtIGlzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgdHdvIGJpbmFyeSBzdHJpbmdzDQogIC8vICAgNC4gVGhlIGhlYWRlciBpcyB3cml0ZSBpbiB0aGUgdGFyIGZpbGUgKGZpcnN0IGJpbmFyeSBzdHJpbmcsIGJpbmFyeSBzdHJpbmcNCiAgLy8gICAgICBmb3IgY2hlY2tzdW0gYW5kIGxhc3QgYmluYXJ5IHN0cmluZykuDQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAgICRwX3RhciA6IGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yLCBvcGVuZWQgaW4gd3JpdGUgbW9kZSwNCiAgLy8gICAkcF9maWxlbmFtZSA6IFRoZSBuYW1lIG9mIHRoZSBmaWxlIHRoZSBoZWFkZXIgaXMgZm9yLA0KICAvLyAgICRwX21vZGUgOiBUaGUgbW9kZSBvZiB0aGUgYXJjaGl2ZSAoInRhciIgb3IgInRneiIpLg0KICAvLyAgICRwX2hlYWRlciA6IEEgcG9pbnRlciB0byBhIGFycmF5IHdoZXJlIHdpbGwgYmUgc2V0IHRoZSBmaWxlIHByb3BlcnRpZXMNCiAgLy8gUmV0dXJuIFZhbHVlcyA6DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbFRhckhhbmRsZUhlYWRlcigkcF90YXIsICRwX2ZpbGVuYW1lLCAkcF9tb2RlLCAmJHBfaGVhZGVyLCAkcF9zdG9yZWRfZmlsZW5hbWUpDQogIHsNCiAgICBUckZjdFN0YXJ0KF9fRklMRV9fLCBfX0xJTkVfXywgIlBjbFRhckhhbmRsZUhlYWRlciIsICJ0YXI9JHBfdGFyLCBmaWxlPSckcF9maWxlbmFtZScsIG1vZGU9JyRwX21vZGUnLCBzdG9yZWRfZmlsZW5hbWU9JyRwX3N0b3JlZF9maWxlbmFtZSciKTsNCiAgICAkdl9yZXN1bHQ9MTsNCg0KICAgIC8vIC0tLS0tIENoZWNrIHRoZSBwYXJhbWV0ZXJzDQogICAgaWYgKCgkcF90YXIgPT0gMCkgfHwgKCRwX2ZpbGVuYW1lID09ICIiKSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC0zLCAiSW52YWxpZCBmaWxlIGRlc2NyaXB0b3IgaW4gZmlsZSAiLl9fRklMRV9fLiIsIGxpbmUgIi5fX0xJTkVfXyk7DQoNCiAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gRmlsZW5hbWUgKHJlZHVjZSB0aGUgcGF0aCBvZiBzdG9yZWQgbmFtZSkNCiAgICBpZiAoJHBfc3RvcmVkX2ZpbGVuYW1lID09ICIiKQ0KICAgICAgJHBfc3RvcmVkX2ZpbGVuYW1lID0gJHBfZmlsZW5hbWU7DQogICAgJHZfcmVkdWNlX2ZpbGVuYW1lID0gUGNsVGFySGFuZGxlUGF0aFJlZHVjdGlvbigkcF9zdG9yZWRfZmlsZW5hbWUpOw0KICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJGaWxlbmFtZSAocmVkdWNlZCkgJyR2X3JlZHVjZV9maWxlbmFtZScsIHN0cmxlbiAiLnN0cmxlbigkdl9yZWR1Y2VfZmlsZW5hbWUpKTsNCg0KICAgIC8vIC0tLS0tIEdldCBmaWxlIGluZm8NCiAgICAkdl9pbmZvID0gc3RhdCgkcF9maWxlbmFtZSk7DQogICAgJHZfdWlkID0gc3ByaW50ZigiJTZzICIsIERlY09jdCgkdl9pbmZvWzRdKSk7DQogICAgJHZfZ2lkID0gc3ByaW50ZigiJTZzICIsIERlY09jdCgkdl9pbmZvWzVdKSk7DQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgInVpZD0kdl91aWQsIGdpZD0kdl9naWQiKTsNCiAgICAkdl9wZXJtcyA9IHNwcmludGYoIiU2cyAiLCBEZWNPY3QoZmlsZXBlcm1zKCRwX2ZpbGVuYW1lKSkpOw0KICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJmaWxlIHBlcm1pc3Npb25zICR2X3Blcm1zIik7DQoNCiAgICAvLyAtLS0tLSBGaWxlIG10aW1lDQogICAgJHZfbXRpbWVfZGF0YSA9IGZpbGVtdGltZSgkcF9maWxlbmFtZSk7DQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkZpbGUgbXRpbWUgOiAkdl9tdGltZV9kYXRhIik7DQogICAgJHZfbXRpbWUgPSBzcHJpbnRmKCIlMTFzIiwgRGVjT2N0KCR2X210aW1lX2RhdGEpKTsNCg0KICAgIC8vIC0tLS0tIEZpbGUgdHlwZWZsYWcNCiAgICAvLyAnMCcgb3IgJ1wwJyBpcyB0aGUgY29kZSBmb3IgcmVndWxhciBmaWxlDQogICAgLy8gJzUnIGlzIGRpcmVjdG9yeQ0KICAgIGlmIChpc19kaXIoJHBfZmlsZW5hbWUpKQ0KICAgIHsNCiAgICAgICR2X3R5cGVmbGFnID0gIjUiOw0KICAgICAgJHZfc2l6ZSA9IDA7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICAkdl90eXBlZmxhZyA9ICIiOw0KDQogICAgICAvLyAtLS0tLSBHZXQgdGhlIGZpbGUgc2l6ZQ0KICAgICAgY2xlYXJzdGF0Y2FjaGUoKTsNCiAgICAgICR2X3NpemUgPSBmaWxlc2l6ZSgkcF9maWxlbmFtZSk7DQogICAgfQ0KDQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkZpbGUgc2l6ZSA6ICR2X3NpemUiKTsNCiAgICAkdl9zaXplID0gc3ByaW50ZigiJTExcyAiLCBEZWNPY3QoJHZfc2l6ZSkpOw0KDQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkZpbGUgdHlwZWZsYWcgOiAkdl90eXBlZmxhZyIpOw0KDQogICAgLy8gLS0tLS0gTGlua25hbWUNCiAgICAkdl9saW5rbmFtZSA9ICIiOw0KDQogICAgLy8gLS0tLS0gTWFnaWMNCiAgICAkdl9tYWdpYyA9ICIiOw0KDQogICAgLy8gLS0tLS0gVmVyc2lvbg0KICAgICR2X3ZlcnNpb24gPSAiIjsNCg0KICAgIC8vIC0tLS0tIHVuYW1lDQogICAgJHZfdW5hbWUgPSAiIjsNCg0KICAgIC8vIC0tLS0tIGduYW1lDQogICAgJHZfZ25hbWUgPSAiIjsNCg0KICAgIC8vIC0tLS0tIGRldm1ham9yDQogICAgJHZfZGV2bWFqb3IgPSAiIjsNCg0KICAgIC8vIC0tLS0tIGRldm1pbm9yDQogICAgJHZfZGV2bWlub3IgPSAiIjsNCg0KICAgIC8vIC0tLS0tIHByZWZpeA0KICAgICR2X3ByZWZpeCA9ICIiOw0KDQogICAgLy8gLS0tLS0gQ29tcG9zZSB0aGUgYmluYXJ5IHN0cmluZyBvZiB0aGUgaGVhZGVyIGluIHR3byBwYXJ0cyBhcnJvdW5kIHRoZSBjaGVja3N1bSBwb3NpdGlvbg0KICAgICR2X2JpbmFyeV9kYXRhX2ZpcnN0ID0gcGFjaygiYTEwMGE4YThhOGExMkExMiIsICR2X3JlZHVjZV9maWxlbmFtZSwgJHZfcGVybXMsICR2X3VpZCwgJHZfZ2lkLCAkdl9zaXplLCAkdl9tdGltZSk7DQogICAgJHZfYmluYXJ5X2RhdGFfbGFzdCA9IHBhY2soImExYTEwMGE2YTJhMzJhMzJhOGE4YTE1NWExMiIsICR2X3R5cGVmbGFnLCAkdl9saW5rbmFtZSwgJHZfbWFnaWMsICR2X3ZlcnNpb24sICR2X3VuYW1lLCAkdl9nbmFtZSwgJHZfZGV2bWFqb3IsICR2X2Rldm1pbm9yLCAkdl9wcmVmaXgsICIiKTsNCg0KICAgIC8vIC0tLS0tIENhbGN1bGF0ZSB0aGUgY2hlY2tzdW0NCiAgICAkdl9jaGVja3N1bSA9IDA7DQogICAgLy8gLi4uLi4gRmlyc3QgcGFydCBvZiB0aGUgaGVhZGVyDQogICAgZm9yICgkaT0wOyAkaTwxNDg7ICRpKyspDQogICAgew0KICAgICAgJHZfY2hlY2tzdW0gKz0gb3JkKHN1YnN0cigkdl9iaW5hcnlfZGF0YV9maXJzdCwkaSwxKSk7DQogICAgfQ0KICAgIC8vIC4uLi4uIElnbm9yZSB0aGUgY2hlY2tzdW0gdmFsdWUgYW5kIHJlcGxhY2UgaXQgYnkgJyAnIChzcGFjZSkNCiAgICBmb3IgKCRpPTE0ODsgJGk8MTU2OyAkaSsrKQ0KICAgIHsNCiAgICAgICR2X2NoZWNrc3VtICs9IG9yZCgnICcpOw0KICAgIH0NCiAgICAvLyAuLi4uLiBMYXN0IHBhcnQgb2YgdGhlIGhlYWRlcg0KICAgIGZvciAoJGk9MTU2LCAkaj0wOyAkaTw1MTI7ICRpKyssICRqKyspDQogICAgew0KICAgICAgJHZfY2hlY2tzdW0gKz0gb3JkKHN1YnN0cigkdl9iaW5hcnlfZGF0YV9sYXN0LCRqLDEpKTsNCiAgICB9DQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIkNhbGN1bGF0ZWQgY2hlY2tzdW0gOiAkdl9jaGVja3N1bSIpOw0KDQogICAgLy8gLS0tLS0gV3JpdGUgdGhlIGZpcnN0IDE0OCBieXRlcyBvZiB0aGUgaGVhZGVyIGluIHRoZSBhcmNoaXZlDQogICAgaWYgKCRwX21vZGUgPT0gInRhciIpDQogICAgICBmcHV0cygkcF90YXIsICR2X2JpbmFyeV9kYXRhX2ZpcnN0LCAxNDgpOw0KICAgIGVsc2UNCiAgICAgIGd6cHV0cygkcF90YXIsICR2X2JpbmFyeV9kYXRhX2ZpcnN0LCAxNDgpOw0KDQogICAgLy8gLS0tLS0gV3JpdGUgdGhlIGNhbGN1bGF0ZWQgY2hlY2tzdW0NCiAgICAkdl9jaGVja3N1bSA9IHNwcmludGYoIiU2cyAiLCBEZWNPY3QoJHZfY2hlY2tzdW0pKTsNCiAgICAkdl9iaW5hcnlfZGF0YSA9IHBhY2soImE4IiwgJHZfY2hlY2tzdW0pOw0KICAgIGlmICgkcF9tb2RlID09ICJ0YXIiKQ0KICAgICAgZnB1dHMoJHBfdGFyLCAkdl9iaW5hcnlfZGF0YSwgOCk7DQogICAgZWxzZQ0KICAgICAgZ3pwdXRzKCRwX3RhciwgJHZfYmluYXJ5X2RhdGEsIDgpOw0KDQogICAgLy8gLS0tLS0gV3JpdGUgdGhlIGxhc3QgMzU2IGJ5dGVzIG9mIHRoZSBoZWFkZXIgaW4gdGhlIGFyY2hpdmUNCiAgICBpZiAoJHBfbW9kZSA9PSAidGFyIikNCiAgICAgIGZwdXRzKCRwX3RhciwgJHZfYmluYXJ5X2RhdGFfbGFzdCwgMzU2KTsNCiAgICBlbHNlDQogICAgICBnenB1dHMoJHBfdGFyLCAkdl9iaW5hcnlfZGF0YV9sYXN0LCAzNTYpOw0KDQogICAgLy8gLS0tLS0gU2V0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBoZWFkZXIgInN0cnVjdHVyZSINCiAgICAkcF9oZWFkZXJbZmlsZW5hbWVdID0gJHZfcmVkdWNlX2ZpbGVuYW1lOw0KICAgICRwX2hlYWRlclttb2RlXSA9ICR2X3Blcm1zOw0KICAgICRwX2hlYWRlclt1aWRdID0gJHZfdWlkOw0KICAgICRwX2hlYWRlcltnaWRdID0gJHZfZ2lkOw0KICAgICRwX2hlYWRlcltzaXplXSA9ICR2X3NpemU7DQogICAgJHBfaGVhZGVyW210aW1lXSA9ICR2X210aW1lOw0KICAgICRwX2hlYWRlclt0eXBlZmxhZ10gPSAkdl90eXBlZmxhZzsNCiAgICAkcF9oZWFkZXJbc3RhdHVzXSA9ICJhZGRlZCI7DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCk7DQogICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFySGFuZGxlRm9vdGVyKCkNCiAgLy8gRGVzY3JpcHRpb24gOg0KICAvLyBQYXJhbWV0ZXJzIDoNCiAgLy8gUmV0dXJuIFZhbHVlcyA6DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbFRhckhhbmRsZUZvb3RlcigkcF90YXIsICRwX21vZGUpDQogIHsNCiAgICBUckZjdFN0YXJ0KF9fRklMRV9fLCBfX0xJTkVfXywgIlBjbFRhckhhbmRsZUZvb3RlciIsICJ0YXI9JyRwX3RhcicsIHBfbW9kZT0kcF9tb2RlIik7DQogICAgJHZfcmVzdWx0PTE7DQoNCiAgICAvLyAtLS0tLSBXcml0ZSB0aGUgbGFzdCAwIGZpbGxlZCBibG9jayBmb3IgZW5kIG9mIGFyY2hpdmUNCiAgICAkdl9iaW5hcnlfZGF0YSA9IHBhY2soImE1MTIiLCAiIik7DQogICAgaWYgKCRwX21vZGUgPT0gInRhciIpDQogICAgICBmcHV0cygkcF90YXIsICR2X2JpbmFyeV9kYXRhKTsNCiAgICBlbHNlDQogICAgICBnenB1dHMoJHBfdGFyLCAkdl9iaW5hcnlfZGF0YSk7DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCk7DQogICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFySGFuZGxlRXh0cmFjdCgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gUGFyYW1ldGVycyA6DQogIC8vICAgJHBfdGFybmFtZSA6IEZpbGVuYW1lIG9mIHRoZSB0YXIgKG9yIHRneikgYXJjaGl2ZQ0KICAvLyAgICRwX2ZpbGVfbGlzdCA6IEFuIGFycmF5IHdoaWNoIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIHRvIGV4dHJhY3QsIHRoaXMNCiAgLy8gICAgICAgICAgICAgICAgICBhcnJheSBtYXkgYmUgZW1wdHkgd2hlbiAkcF9tb2RlIGlzICdjb21wbGV0ZScNCiAgLy8gICAkcF9saXN0X2RldGFpbCA6IEFuIGFycmF5IHdoZXJlIHdpbGwgYmUgcGxhY2VkIHRoZSBwcm9wZXJ0aWVzIG9mICBlYWNoIGV4dHJhY3RlZC9saXN0ZWQgZmlsZQ0KICAvLyAgICRwX21vZGUgOiAnY29tcGxldGUnIHdpbGwgZXh0cmFjdCBhbGwgZmlsZXMgZnJvbSB0aGUgYXJjaGl2ZSwNCiAgLy8gICAgICAgICAgICAgJ3BhcnRpYWwnIHdpbGwgbG9vayBmb3IgZmlsZXMgaW4gJHBfZmlsZV9saXN0DQogIC8vICAgICAgICAgICAgICdsaXN0JyB3aWxsIG9ubHkgbGlzdCB0aGUgZmlsZXMgZnJvbSB0aGUgYXJjaGl2ZSB3aXRob3V0IGFueSBleHRyYWN0DQogIC8vICAgJHBfcGF0aCA6IFBhdGggdG8gYWRkIHdoaWxlIHdyaXRpbmcgdGhlIGV4dHJhY3RlZCBmaWxlcw0KICAvLyAgICRwX3Rhcl9tb2RlIDogJ3RhcicgZm9yIEdOVSBUQVIgYXJjaGl2ZSwgJ3RneicgZm9yIGNvbXByZXNzZWQgYXJjaGl2ZQ0KICAvLyAgICRwX3JlbW92ZV9wYXRoIDogUGF0aCB0byByZW1vdmUgKGZyb20gdGhlIGZpbGUgbWVtb3JpemVkIHBhdGgpIHdoaWxlIHdyaXRpbmcgdGhlDQogIC8vICAgICAgICAgICAgICAgICAgICBleHRyYWN0ZWQgZmlsZXMuIElmIHRoZSBwYXRoIGRvZXMgbm90IG1hdGNoIHRoZSBmaWxlIHBhdGgsDQogIC8vICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZSBpcyBleHRyYWN0ZWQgd2l0aCBpdHMgbWVtb3JpemVkIHBhdGguDQogIC8vICAgICAgICAgICAgICAgICAgICAkcF9yZW1vdmVfcGF0aCBkb2VzIG5vdCBhcHBseSB0byAnbGlzdCcgbW9kZS4NCiAgLy8gICAgICAgICAgICAgICAgICAgICRwX3BhdGggYW5kICRwX3JlbW92ZV9wYXRoIGFyZSBjb21tdWxhdGl2ZS4NCiAgLy8gUmV0dXJuIFZhbHVlcyA6DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbFRhckhhbmRsZUV4dHJhY3QoJHBfdGFybmFtZSwgJHBfZmlsZV9saXN0LCAmJHBfbGlzdF9kZXRhaWwsICRwX21vZGUsICRwX3BhdGgsICRwX3Rhcl9tb2RlLCAkcF9yZW1vdmVfcGF0aCkNCiAgew0KICAgIFRyRmN0U3RhcnQoX19GSUxFX18sIF9fTElORV9fLCAiUGNsVGFySGFuZGxlRXh0cmFjdCIsICJhcmNoaXZlPSckcF90YXJuYW1lJywgbGlzdCwgbW9kZT0kcF9tb2RlLCBwYXRoPSRwX3BhdGgsIHRhcl9tb2RlPSRwX3Rhcl9tb2RlLCByZW1vdmVfcGF0aD0nJHBfcmVtb3ZlX3BhdGgnIik7DQogICAgJHZfcmVzdWx0PTE7DQogICAgJHZfbmIgPSAwOw0KICAgICR2X2V4dHJhY3RfYWxsID0gVFJVRTsNCiAgICAkdl9saXN0aW5nID0gRkFMU0U7DQoNCiAgICAvLyAtLS0tLSBDaGVjayB0aGUgcGF0aA0KICAgIGlmICgoJHBfcGF0aCA9PSAiIikgfHwgKChzdWJzdHIoJHBfcGF0aCwgMCwgMSkgIT0gIi8iKSAmJiAoc3Vic3RyKCRwX3BhdGgsIDAsIDMpICE9ICIuLi8iKSkpDQogICAgICAkcF9wYXRoID0gIi4vIi4kcF9wYXRoOw0KDQogICAgLy8gLS0tLS0gTG9vayBmb3IgcGF0aCB0byByZW1vdmUgZm9ybWF0IChzaG91bGQgZW5kIGJ5IC8pDQogICAgaWYgKCgkcF9yZW1vdmVfcGF0aCAhPSAiIikgJiYgKHN1YnN0cigkcF9yZW1vdmVfcGF0aCwgLTEpICE9ICcvJykpDQogICAgew0KICAgICAgJHBfcmVtb3ZlX3BhdGggLj0gJy8nOw0KICAgIH0NCiAgICAkcF9yZW1vdmVfcGF0aF9zaXplID0gc3RybGVuKCRwX3JlbW92ZV9wYXRoKTsNCg0KICAgIC8vIC0tLS0tIFN0dWR5IHRoZSBtb2RlDQogICAgc3dpdGNoICgkcF9tb2RlKSB7DQogICAgICBjYXNlICJjb21wbGV0ZSIgOg0KICAgICAgICAvLyAtLS0tLSBGbGFnIGV4dHJhY3Qgb2YgYWxsIGZpbGVzDQogICAgICAgICR2X2V4dHJhY3RfYWxsID0gVFJVRTsNCiAgICAgICAgJHZfbGlzdGluZyA9IEZBTFNFOw0KICAgICAgYnJlYWs7DQogICAgICBjYXNlICJwYXJ0aWFsIiA6DQogICAgICAgICAgLy8gLS0tLS0gRmxhZyBleHRyYWN0IG9mIHNwZWNpZmljIGZpbGVzDQogICAgICAgICAgJHZfZXh0cmFjdF9hbGwgPSBGQUxTRTsNCiAgICAgICAgICAkdl9saXN0aW5nID0gRkFMU0U7DQogICAgICBicmVhazsNCiAgICAgIGNhc2UgImxpc3QiIDoNCiAgICAgICAgICAvLyAtLS0tLSBGbGFnIGxpc3Qgb2YgYWxsIGZpbGVzDQogICAgICAgICAgJHZfZXh0cmFjdF9hbGwgPSBGQUxTRTsNCiAgICAgICAgICAkdl9saXN0aW5nID0gVFJVRTsNCiAgICAgIGJyZWFrOw0KICAgICAgZGVmYXVsdCA6DQogICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZw0KICAgICAgICBQY2xFcnJvckxvZygtMywgIkludmFsaWQgZXh0cmFjdCBtb2RlICgkcF9tb2RlKSIpOw0KDQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIE9wZW4gdGhlIHRhciBmaWxlDQogICAgaWYgKCRwX3Rhcl9tb2RlID09ICJ0YXIiKQ0KICAgIHsNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJPcGVuIGZpbGUgaW4gYmluYXJ5IHJlYWQgbW9kZSIpOw0KICAgICAgJHZfdGFyID0gZm9wZW4oJHBfdGFybmFtZSwgInJiIik7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiT3BlbiBmaWxlIGluIGd6aXAgYmluYXJ5IHJlYWQgbW9kZSIpOw0KICAgICAgJHZfdGFyID0gQGd6b3BlbigkcF90YXJuYW1lLCAicmIiKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBDaGVjayB0aGF0IHRoZSBhcmNoaXZlIGlzIG9wZW4NCiAgICBpZiAoJHZfdGFyID09IDApDQogICAgew0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBQY2xFcnJvckxvZygtMiwgIlVuYWJsZSB0byBvcGVuIGFyY2hpdmUgJyRwX3Rhcm5hbWUnIGluIGJpbmFyeSByZWFkIG1vZGUiKTsNCg0KICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBSZWFkIHRoZSBibG9ja3MNCiAgICBXaGlsZSAoISgkdl9lbmRfb2ZfZmlsZSA9ICgkcF90YXJfbW9kZSA9PSAidGFyIj9mZW9mKCR2X3Rhcik6Z3plb2YoJHZfdGFyKSkpKQ0KICAgIHsNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJMb29raW5nIGZvciBuZXh0IGhlYWRlciAuLi4iKTsNCg0KICAgICAgLy8gLS0tLS0gQ2xlYXIgY2FjaGUgb2YgZmlsZSBpbmZvcw0KICAgICAgY2xlYXJzdGF0Y2FjaGUoKTsNCg0KICAgICAgLy8gLS0tLS0gUmVzZXQgZXh0cmFjdCB0YWcNCiAgICAgICR2X2V4dHJhY3RfZmlsZSA9IEZBTFNFOw0KICAgICAgJHZfZXh0cmFjdGlvbl9zdG9wcGVkID0gMDsNCg0KICAgICAgLy8gLS0tLS0gUmVhZCB0aGUgNTEyIGJ5dGVzIGhlYWRlcg0KICAgICAgaWYgKCRwX3Rhcl9tb2RlID09ICJ0YXIiKQ0KICAgICAgICAkdl9iaW5hcnlfZGF0YSA9IGZyZWFkKCR2X3RhciwgNTEyKTsNCiAgICAgIGVsc2UNCiAgICAgICAgJHZfYmluYXJ5X2RhdGEgPSBnenJlYWQoJHZfdGFyLCA1MTIpOw0KDQogICAgICAvLyAtLS0tLSBSZWFkIHRoZSBoZWFkZXIgcHJvcGVydGllcw0KICAgICAgaWYgKCgkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVSZWFkSGVhZGVyKCR2X2JpbmFyeV9kYXRhLCAkdl9oZWFkZXIpKSAhPSAxKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBDbG9zZSB0aGUgYXJjaGl2ZSBmaWxlDQogICAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgICBmY2xvc2UoJHZfdGFyKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgIGd6Y2xvc2UoJHZfdGFyKTsNCg0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAkdl9yZXN1bHQpOw0KICAgICAgICByZXR1cm4gJHZfcmVzdWx0Ow0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBMb29rIGZvciBlbXB0eSBibG9ja3MgdG8gc2tpcA0KICAgICAgaWYgKCR2X2hlYWRlcltmaWxlbmFtZV0gPT0gIiIpDQogICAgICB7DQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJFbXB0eSBibG9jayBmb3VuZC4gRW5kIG9mIGFyY2hpdmUgPyIpOw0KICAgICAgICBjb250aW51ZTsNCiAgICAgIH0NCg0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkZvdW5kIGZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nLCBzaXplICckdl9oZWFkZXJbc2l6ZV0nIik7DQoNCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIHBhcnRpYWwgZXh0cmFjdA0KICAgICAgaWYgKCghJHZfZXh0cmFjdF9hbGwpICYmIChpc19hcnJheSgkcF9maWxlX2xpc3QpKSkNCiAgICAgIHsNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkxvb2sgaWYgdGhlIGZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIG5lZWQgdG8gYmUgZXh0cmFjdGVkIik7DQoNCiAgICAgICAgLy8gLS0tLS0gQnkgZGVmYXVsdCBubyB1bnppcCBpZiB0aGUgZmlsZSBpcyBub3QgZm91bmQNCiAgICAgICAgJHZfZXh0cmFjdF9maWxlID0gRkFMU0U7DQoNCiAgICAgICAgLy8gLS0tLS0gTG9vayBpbnRvIHRoZSBmaWxlIGxpc3QNCiAgICAgICAgZm9yICgkaT0wOyAkaTxzaXplb2YoJHBfZmlsZV9saXN0KTsgJGkrKykNCiAgICAgICAgew0KICAgICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJDb21wYXJlIGFyY2hpdmVkIGZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIGZyb20gYXNrZWQgbGlzdCBmaWxlICciLiRwX2ZpbGVfbGlzdFskaV0uIiciKTsNCg0KICAgICAgICAgIC8vIC0tLS0tIExvb2sgaWYgaXQgaXMgYSBkaXJlY3RvcnkNCiAgICAgICAgICBpZiAoc3Vic3RyKCRwX2ZpbGVfbGlzdFskaV0sIC0xKSA9PSAiLyIpDQogICAgICAgICAgew0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIkNvbXBhcmUgZmlsZSAnJHZfaGVhZGVyW2ZpbGVuYW1lXScgd2l0aCBkaXJlY3RvcnkgJyRwX2ZpbGVfbGlzdFskaV0nIik7DQoNCiAgICAgICAgICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlIGRpcmVjdG9yeSBpcyBpbiB0aGUgZmlsZW5hbWUgcGF0aA0KICAgICAgICAgICAgaWYgKChzdHJsZW4oJHZfaGVhZGVyW2ZpbGVuYW1lXSkgPiBzdHJsZW4oJHBfZmlsZV9saXN0WyRpXSkpICYmIChzdWJzdHIoJHZfaGVhZGVyW2ZpbGVuYW1lXSwgMCwgc3RybGVuKCRwX2ZpbGVfbGlzdFskaV0pKSA9PSAkcF9maWxlX2xpc3RbJGldKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgLy8gLS0tLS0gVGhlIGZpbGUgaXMgaW4gdGhlIGRpcmVjdG9yeSwgc28gZXh0cmFjdCBpdA0KICAgICAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiRmlsZSAnJHZfaGVhZGVyW2ZpbGVuYW1lXScgaXMgaW4gZGlyZWN0b3J5ICckcF9maWxlX2xpc3RbJGldJyA6IGV4dHJhY3QgaXQiKTsNCiAgICAgICAgICAgICAgJHZfZXh0cmFjdF9maWxlID0gVFJVRTsNCg0KICAgICAgICAgICAgICAvLyAtLS0tLSBFbmQgb2YgbG9vcA0KICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQoNCiAgICAgICAgICAvLyAtLS0tLSBJdCBpcyBhIGZpbGUsIHNvIGNvbXBhcmUgdGhlIGZpbGUgbmFtZXMNCiAgICAgICAgICBlbHNlIGlmICgkcF9maWxlX2xpc3RbJGldID09ICR2X2hlYWRlcltmaWxlbmFtZV0pDQogICAgICAgICAgew0KICAgICAgICAgICAgLy8gLS0tLS0gRmlsZSBmb3VuZA0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIHNob3VsZCBiZSBleHRyYWN0ZWQiKTsNCiAgICAgICAgICAgICR2X2V4dHJhY3RfZmlsZSA9IFRSVUU7DQoNCiAgICAgICAgICAgIC8vIC0tLS0tIEVuZCBvZiBsb29wDQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyAtLS0tLSBUcmFjZQ0KICAgICAgICBpZiAoISR2X2V4dHJhY3RfZmlsZSkNCiAgICAgICAgew0KICAgICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJGaWxlICckdl9oZWFkZXJbZmlsZW5hbWVdJyBzaG91bGQgbm90IGJlIGV4dHJhY3RlZCIpOw0KICAgICAgICB9DQogICAgICB9DQogICAgICBlbHNlDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIEFsbCBmaWxlcyBuZWVkIHRvIGJlIGV4dHJhY3RlZA0KICAgICAgICAkdl9leHRyYWN0X2ZpbGUgPSBUUlVFOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBMb29rIGlmIHRoaXMgZmlsZSBuZWVkIHRvIGJlIGV4dHJhY3RlZA0KICAgICAgaWYgKCgkdl9leHRyYWN0X2ZpbGUpICYmICghJHZfbGlzdGluZykpDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIHBhdGggdG8gcmVtb3ZlDQogICAgICAgIGlmICgoJHBfcmVtb3ZlX3BhdGggIT0gIiIpDQogICAgICAgICAgICAmJiAoc3Vic3RyKCR2X2hlYWRlcltmaWxlbmFtZV0sIDAsICRwX3JlbW92ZV9wYXRoX3NpemUpID09ICRwX3JlbW92ZV9wYXRoKSkNCiAgICAgICAgew0KICAgICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJGb3VuZCBwYXRoICckcF9yZW1vdmVfcGF0aCcgdG8gcmVtb3ZlIGluIGZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIik7DQogICAgICAgICAgLy8gLS0tLS0gUmVtb3ZlIHRoZSBwYXRoDQogICAgICAgICAgJHZfaGVhZGVyW2ZpbGVuYW1lXSA9IHN1YnN0cigkdl9oZWFkZXJbZmlsZW5hbWVdLCAkcF9yZW1vdmVfcGF0aF9zaXplKTsNCiAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiUmVzbHRpbmcgZmlsZSBpcyAnJHZfaGVhZGVyW2ZpbGVuYW1lXSciKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIC0tLS0tIEFkZCB0aGUgcGF0aCB0byB0aGUgZmlsZQ0KICAgICAgICBpZiAoKCRwX3BhdGggIT0gIi4vIikgJiYgKCRwX3BhdGggIT0gIi8iKSkNCiAgICAgICAgew0KICAgICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIHRoZSBwYXRoIGVuZCAnLycNCiAgICAgICAgICB3aGlsZSAoc3Vic3RyKCRwX3BhdGgsIC0xKSA9PSAiLyIpDQogICAgICAgICAgew0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIkRlc3RpbmF0aW9uIHBhdGggWyRwX3BhdGhdIGVuZHMgYnkgJy8nIik7DQogICAgICAgICAgICAkcF9wYXRoID0gc3Vic3RyKCRwX3BhdGgsIDAsIHN0cmxlbigkcF9wYXRoKS0xKTsNCiAgICAgICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJNb2RpZmllZCB0byBbJHBfcGF0aF0iKTsNCiAgICAgICAgICB9DQoNCiAgICAgICAgICAvLyAtLS0tLSBBZGQgdGhlIHBhdGgNCiAgICAgICAgICBpZiAoc3Vic3RyKCR2X2hlYWRlcltmaWxlbmFtZV0sIDAsIDEpID09ICIvIikNCiAgICAgICAgICAgICAgJHZfaGVhZGVyW2ZpbGVuYW1lXSA9ICRwX3BhdGguJHZfaGVhZGVyW2ZpbGVuYW1lXTsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICAkdl9oZWFkZXJbZmlsZW5hbWVdID0gJHBfcGF0aC4iLyIuJHZfaGVhZGVyW2ZpbGVuYW1lXTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIC0tLS0tIFRyYWNlDQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJFeHRyYWN0aW5nIGZpbGUgKHdpdGggcGF0aCkgJyR2X2hlYWRlcltmaWxlbmFtZV0nLCBzaXplICckdl9oZWFkZXJbc2l6ZV0nIik7DQoNCiAgICAgICAgLy8gLS0tLS0gQ2hlY2sgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdHMNCiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCR2X2hlYWRlcltmaWxlbmFtZV0pKQ0KICAgICAgICB7DQogICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIGFscmVhZHkgZXhpc3RzIik7DQoNCiAgICAgICAgICAvLyAtLS0tLSBMb29rIGlmIGZpbGUgaXMgYSBkaXJlY3RvcnkNCiAgICAgICAgICBpZiAoaXNfZGlyKCR2X2hlYWRlcltmaWxlbmFtZV0pKQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJFeGlzdGluZyBmaWxlICckdl9oZWFkZXJbZmlsZW5hbWVdJyBpcyBhIGRpcmVjdG9yeSIpOw0KDQogICAgICAgICAgICAvLyAtLS0tLSBDaGFuZ2UgdGhlIGZpbGUgc3RhdHVzDQogICAgICAgICAgICAkdl9oZWFkZXJbc3RhdHVzXSA9ICJhbHJlYWR5X2FfZGlyZWN0b3J5IjsNCg0KICAgICAgICAgICAgLy8gLS0tLS0gU2tpcCB0aGUgZXh0cmFjdA0KICAgICAgICAgICAgJHZfZXh0cmFjdGlvbl9zdG9wcGVkID0gMTsNCiAgICAgICAgICAgICR2X2V4dHJhY3RfZmlsZSA9IDA7DQogICAgICAgICAgfQ0KICAgICAgICAgIC8vIC0tLS0tIExvb2sgaWYgZmlsZSBpcyB3cml0ZSBwcm90ZWN0ZWQNCiAgICAgICAgICBlbHNlIGlmICghaXNfd3JpdGVhYmxlKCR2X2hlYWRlcltmaWxlbmFtZV0pKQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJFeGlzdGluZyBmaWxlICckdl9oZWFkZXJbZmlsZW5hbWVdJyBpcyB3cml0ZSBwcm90ZWN0ZWQiKTsNCg0KICAgICAgICAgICAgLy8gLS0tLS0gQ2hhbmdlIHRoZSBmaWxlIHN0YXR1cw0KICAgICAgICAgICAgJHZfaGVhZGVyW3N0YXR1c10gPSAid3JpdGVfcHJvdGVjdGVkIjsNCg0KICAgICAgICAgICAgLy8gLS0tLS0gU2tpcCB0aGUgZXh0cmFjdA0KICAgICAgICAgICAgJHZfZXh0cmFjdGlvbl9zdG9wcGVkID0gMTsNCiAgICAgICAgICAgICR2X2V4dHJhY3RfZmlsZSA9IDA7DQogICAgICAgICAgfQ0KICAgICAgICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlIGV4dHJhY3RlZCBmaWxlIGlzIG9sZGVyDQogICAgICAgICAgZWxzZSBpZiAoZmlsZW10aW1lKCR2X2hlYWRlcltmaWxlbmFtZV0pID4gJHZfaGVhZGVyW210aW1lXSkNCiAgICAgICAgICB7DQogICAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiRXhpc3RpbmcgZmlsZSAnJHZfaGVhZGVyW2ZpbGVuYW1lXScgaXMgbmV3ZXIgKCIuZGF0ZSgibCBkUyBvZiBGIFkgaDppOnMgQSIsIGZpbGVtdGltZSgkdl9oZWFkZXJbZmlsZW5hbWVdKSkuIikgdGhhbiB0aGUgZXh0cmFjdGVkIGZpbGUgKCIuZGF0ZSgibCBkUyBvZiBGIFkgaDppOnMgQSIsICR2X2hlYWRlclttdGltZV0pLiIpIik7DQoNCiAgICAgICAgICAgIC8vIC0tLS0tIENoYW5nZSB0aGUgZmlsZSBzdGF0dXMNCiAgICAgICAgICAgICR2X2hlYWRlcltzdGF0dXNdID0gIm5ld2VyX2V4aXN0IjsNCg0KICAgICAgICAgICAgLy8gLS0tLS0gU2tpcCB0aGUgZXh0cmFjdA0KICAgICAgICAgICAgJHZfZXh0cmFjdGlvbl9zdG9wcGVkID0gMTsNCiAgICAgICAgICAgICR2X2V4dHJhY3RfZmlsZSA9IDA7DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gLS0tLS0gQ2hlY2sgdGhlIGRpcmVjdG9yeSBhdmFpbGFiaWxpdHkgYW5kIGNyZWF0ZSBpdCBpZiBuZWNlc3NhcnkNCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgaWYgKCR2X2hlYWRlclt0eXBlZmxhZ109PSI1IikNCiAgICAgICAgICAgICR2X2Rpcl90b19jaGVjayA9ICR2X2hlYWRlcltmaWxlbmFtZV07DQogICAgICAgICAgZWxzZSBpZiAoIXN0cnN0cigkdl9oZWFkZXJbZmlsZW5hbWVdLCAiLyIpKQ0KICAgICAgICAgICAgJHZfZGlyX3RvX2NoZWNrID0gIiI7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgJHZfZGlyX3RvX2NoZWNrID0gZGlybmFtZSgkdl9oZWFkZXJbZmlsZW5hbWVdKTsNCg0KICAgICAgICAgIGlmICgoJHZfcmVzdWx0ID0gUGNsVGFySGFuZGxlckRpckNoZWNrKCR2X2Rpcl90b19jaGVjaykpICE9IDEpDQogICAgICAgICAgew0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIlVuYWJsZSB0byBjcmVhdGUgcGF0aCBmb3IgJyR2X2hlYWRlcltmaWxlbmFtZV0nIik7DQoNCiAgICAgICAgICAgIC8vIC0tLS0tIENoYW5nZSB0aGUgZmlsZSBzdGF0dXMNCiAgICAgICAgICAgICR2X2hlYWRlcltzdGF0dXNdID0gInBhdGhfY3JlYXRpb25fZmFpbCI7DQoNCiAgICAgICAgICAgIC8vIC0tLS0tIFNraXAgdGhlIGV4dHJhY3QNCiAgICAgICAgICAgICR2X2V4dHJhY3Rpb25fc3RvcHBlZCA9IDE7DQogICAgICAgICAgICAkdl9leHRyYWN0X2ZpbGUgPSAwOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIC0tLS0tIERvIHRoZSBleHRyYWN0aW9uDQogICAgICAgIGlmICgoJHZfZXh0cmFjdF9maWxlKSAmJiAoJHZfaGVhZGVyW3R5cGVmbGFnXSE9IjUiKSkNCiAgICAgICAgew0KICAgICAgICAgIC8vIC0tLS0tIE9wZW4gdGhlIGRlc3RpbmF0aW9uIGZpbGUgaW4gd3JpdGUgbW9kZQ0KICAgICAgICAgIGlmICgoJHZfZGVzdF9maWxlID0gQGZvcGVuKCR2X2hlYWRlcltmaWxlbmFtZV0sICJ3YiIpKSA9PSAwKQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJFcnJvciB3aGlsZSBvcGVuaW5nICckdl9oZWFkZXJbZmlsZW5hbWVdJyBpbiB3cml0ZSBiaW5hcnkgbW9kZSIpOw0KDQogICAgICAgICAgICAvLyAtLS0tLSBDaGFuZ2UgdGhlIGZpbGUgc3RhdHVzDQogICAgICAgICAgICAkdl9oZWFkZXJbc3RhdHVzXSA9ICJ3cml0ZV9lcnJvciI7DQoNCiAgICAgICAgICAgIC8vIC0tLS0tIEp1bXAgdG8gbmV4dCBmaWxlDQogICAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiSnVtcCB0byBuZXh0IGZpbGUiKTsNCiAgICAgICAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgICAgICAgZnNlZWsoJHZfdGFyLCBmdGVsbCgkdl90YXIpKyhjZWlsKCgkdl9oZWFkZXJbc2l6ZV0vNTEyKSkqNTEyKSk7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgIGd6c2Vlaygkdl90YXIsIGd6dGVsbCgkdl90YXIpKyhjZWlsKCgkdl9oZWFkZXJbc2l6ZV0vNTEyKSkqNTEyKSk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICB7DQogICAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiU3RhcnQgZXh0cmFjdGlvbiBvZiAnJHZfaGVhZGVyW2ZpbGVuYW1lXSciKTsNCg0KICAgICAgICAgICAgLy8gLS0tLS0gUmVhZCBkYXRhDQogICAgICAgICAgICAkbiA9IGZsb29yKCR2X2hlYWRlcltzaXplXS81MTIpOw0KICAgICAgICAgICAgZm9yICgkaT0wOyAkaTwkbjsgJGkrKykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIlJlYWQgY29tcGxldGUgNTEyIGJ5dGVzIGJsb2NrIG51bWJlciAiLigkaSsxKSk7DQogICAgICAgICAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgICAgICAgICAkdl9jb250ZW50ID0gZnJlYWQoJHZfdGFyLCA1MTIpOw0KICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgJHZfY29udGVudCA9IGd6cmVhZCgkdl90YXIsIDUxMik7DQogICAgICAgICAgICAgIGZ3cml0ZSgkdl9kZXN0X2ZpbGUsICR2X2NvbnRlbnQsIDUxMik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoKCR2X2hlYWRlcltzaXplXSAlIDUxMikgIT0gMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIlJlYWQgbGFzdCAiLigkdl9oZWFkZXJbc2l6ZV0gJSA1MTIpLiIgYnl0ZXMgaW4gYSA1MTIgYmxvY2siKTsNCiAgICAgICAgICAgICAgaWYgKCRwX3Rhcl9tb2RlID09ICJ0YXIiKQ0KICAgICAgICAgICAgICAgICR2X2NvbnRlbnQgPSBmcmVhZCgkdl90YXIsIDUxMik7DQogICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAkdl9jb250ZW50ID0gZ3pyZWFkKCR2X3RhciwgNTEyKTsNCiAgICAgICAgICAgICAgZndyaXRlKCR2X2Rlc3RfZmlsZSwgJHZfY29udGVudCwgKCR2X2hlYWRlcltzaXplXSAlIDUxMikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyAtLS0tLSBDbG9zZSB0aGUgZGVzdGluYXRpb24gZmlsZQ0KICAgICAgICAgICAgZmNsb3NlKCR2X2Rlc3RfZmlsZSk7DQoNCiAgICAgICAgICAgIC8vIC0tLS0tIENoYW5nZSB0aGUgZmlsZSBtb2RlLCBtdGltZQ0KICAgICAgICAgICAgdG91Y2goJHZfaGVhZGVyW2ZpbGVuYW1lXSwgJHZfaGVhZGVyW210aW1lXSk7DQogICAgICAgICAgICAvL2NobW9kKCR2X2hlYWRlcltmaWxlbmFtZV0sIERlY09jdCgkdl9oZWFkZXJbbW9kZV0pKTsNCiAgICAgICAgICB9DQoNCiAgICAgICAgICAvLyAtLS0tLSBDaGVjayB0aGUgZmlsZSBzaXplDQogICAgICAgICAgY2xlYXJzdGF0Y2FjaGUoKTsNCiAgICAgICAgICBpZiAoZmlsZXNpemUoJHZfaGVhZGVyW2ZpbGVuYW1lXSkgIT0gJHZfaGVhZGVyW3NpemVdKQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgIC8vIC0tLS0tIENsb3NlIHRoZSBhcmNoaXZlIGZpbGUNCiAgICAgICAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgICAgICAgZmNsb3NlKCR2X3Rhcik7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgIGd6Y2xvc2UoJHZfdGFyKTsNCg0KICAgICAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICAgICAgICBQY2xFcnJvckxvZygtNywgIkV4dHJhY3RlZCBmaWxlICckdl9oZWFkZXJbZmlsZW5hbWVdJyBkb2VzIG5vdCBoYXZlIHRoZSBjb3JyZWN0IGZpbGUgc2l6ZSAnIi5maWxlc2l6ZSgkdl9maWxlbmFtZSkuIicgKCckdl9oZWFkZXJbc2l6ZV0nIGV4cGVjdGVkKS4gQXJjaGl2ZSBtYXkgYmUgY29ycnVwdGVkLiIpOw0KDQogICAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgICAgICAgIH0NCg0KICAgICAgICAgIC8vIC0tLS0tIFRyYWNlDQogICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkV4dHJhY3Rpb24gZG9uZSIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkV4dHJhY3Rpb24gb2YgZmlsZSAnJHZfaGVhZGVyW2ZpbGVuYW1lXScgc2tpcHBlZC4iKTsNCg0KICAgICAgICAgIC8vIC0tLS0tIEp1bXAgdG8gbmV4dCBmaWxlDQogICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkp1bXAgdG8gbmV4dCBmaWxlIik7DQogICAgICAgICAgaWYgKCRwX3Rhcl9tb2RlID09ICJ0YXIiKQ0KICAgICAgICAgICAgZnNlZWsoJHZfdGFyLCBmdGVsbCgkdl90YXIpKyhjZWlsKCgkdl9oZWFkZXJbc2l6ZV0vNTEyKSkqNTEyKSk7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgZ3pzZWVrKCR2X3RhciwgZ3p0ZWxsKCR2X3RhcikrKGNlaWwoKCR2X2hlYWRlcltzaXplXS81MTIpKSo1MTIpKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBMb29rIGZvciBmaWxlIHRoYXQgaXMgbm90IHRvIGJlIHVuemlwcGVkDQogICAgICBlbHNlDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIFRyYWNlDQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJKdW1wIGZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIik7DQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDQsICJQb3NpdGlvbiBhdmFudCBqdW1wIFsiLigkcF90YXJfbW9kZT09InRhciI/ZnRlbGwoJHZfdGFyKTpnenRlbGwoJHZfdGFyKSkuIl0iKTsNCg0KICAgICAgICAvLyAtLS0tLSBKdW1wIHRvIG5leHQgZmlsZQ0KICAgICAgICBpZiAoJHBfdGFyX21vZGUgPT0gInRhciIpDQogICAgICAgICAgZnNlZWsoJHZfdGFyLCAoJHBfdGFyX21vZGU9PSJ0YXIiP2Z0ZWxsKCR2X3Rhcik6Z3p0ZWxsKCR2X3RhcikpKyhjZWlsKCgkdl9oZWFkZXJbc2l6ZV0vNTEyKSkqNTEyKSk7DQogICAgICAgIGVsc2UNCiAgICAgICAgICBnenNlZWsoJHZfdGFyLCBnenRlbGwoJHZfdGFyKSsoY2VpbCgoJHZfaGVhZGVyW3NpemVdLzUxMikpKjUxMikpOw0KDQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDQsICJQb3NpdGlvbiBhcHLvv71zIGp1bXAgWyIuKCRwX3Rhcl9tb2RlPT0idGFyIj9mdGVsbCgkdl90YXIpOmd6dGVsbCgkdl90YXIpKS4iXSIpOw0KICAgICAgfQ0KDQogICAgICBpZiAoJHBfdGFyX21vZGUgPT0gInRhciIpDQogICAgICAgICR2X2VuZF9vZl9maWxlID0gZmVvZigkdl90YXIpOw0KICAgICAgZWxzZQ0KICAgICAgICAkdl9lbmRfb2ZfZmlsZSA9IGd6ZW9mKCR2X3Rhcik7DQoNCiAgICAgIC8vIC0tLS0tIEZpbGUgbmFtZSBhbmQgcHJvcGVydGllcyBhcmUgbG9nZ2VkIGlmIGxpc3RpbmcgbW9kZSBvciBmaWxlIGlzIGV4dHJhY3RlZA0KICAgICAgaWYgKCR2X2xpc3RpbmcgfHwgJHZfZXh0cmFjdF9maWxlIHx8ICR2X2V4dHJhY3Rpb25fc3RvcHBlZCkNCiAgICAgIHsNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIk1lbW9yaXplIGluZm8gYWJvdXQgZmlsZSAnJHZfaGVhZGVyW2ZpbGVuYW1lXSciKTsNCg0KICAgICAgICAvLyAtLS0tLSBMb2cgZXh0cmFjdGVkIGZpbGVzDQogICAgICAgIGlmICgoJHZfZmlsZV9kaXIgPSBkaXJuYW1lKCR2X2hlYWRlcltmaWxlbmFtZV0pKSA9PSAkdl9oZWFkZXJbZmlsZW5hbWVdKQ0KICAgICAgICAgICR2X2ZpbGVfZGlyID0gIiI7DQogICAgICAgIGlmICgoc3Vic3RyKCR2X2hlYWRlcltmaWxlbmFtZV0sIDAsIDEpID09ICIvIikgJiYgKCR2X2ZpbGVfZGlyID09ICIiKSkNCiAgICAgICAgICAkdl9maWxlX2RpciA9ICIvIjsNCg0KICAgICAgICAvLyAtLS0tLSBBZGQgdGhlIGFycmF5IGRlc2NyaWJpbmcgdGhlIGZpbGUgaW50byB0aGUgbGlzdA0KICAgICAgICAkcF9saXN0X2RldGFpbFskdl9uYl0gPSAkdl9oZWFkZXI7DQoNCiAgICAgICAgLy8gLS0tLS0gSW5jcmVtZW50DQogICAgICAgICR2X25iKys7DQogICAgICB9DQogICAgfQ0KDQogICAgLy8gLS0tLS0gQ2xvc2UgdGhlIHRhcmZpbGUNCiAgICBpZiAoJHBfdGFyX21vZGUgPT0gInRhciIpDQogICAgICBmY2xvc2UoJHZfdGFyKTsNCiAgICBlbHNlDQogICAgICBnemNsb3NlKCR2X3Rhcik7DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCk7DQogICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFySGFuZGxlRXh0cmFjdEJ5SW5kZXhMaXN0KCkNCiAgLy8gRGVzY3JpcHRpb24gOg0KICAvLyAgIEV4dHJhY3QgdGhlIGZpbGVzIHdoaWNoIGFyZSBhdCB0aGUgaW5kZXhlcyBzcGVjaWZpZWQuIElmIHRoZSAnZmlsZScgYXQgdGhlDQogIC8vICAgaW5kZXggaXMgYSBkaXJlY3RvcnksIHRoZSBkaXJlY3Rvcnkgb25seSBpcyBjcmVhdGVkLCBub3QgYWxsIHRoZSBmaWxlcyBzdG9yZWQNCiAgLy8gICBmb3IgdGhhdCBkaXJlY3RvcnkuDQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAgICRwX2luZGV4X3N0cmluZyA6IFN0cmluZyBvZiBpbmRleGVzIG9mIGZpbGVzIHRvIGV4dHJhY3QuIFRoZSBmb3JtIG9mIHRoZQ0KICAvLyAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBpcyAiMCw0LTYsOC0xMiIgd2l0aCBvbmx5IG51bWJlcnMgYW5kICctJyBmb3INCiAgLy8gICAgICAgICAgICAgICAgICAgICBmb3IgcmFuZ2UsIGFuZCAnLCcgdG8gc2VwYXJhdGUgcmFuZ2VzLiBObyBzcGFjZXMgb3IgJzsnDQogIC8vICAgICAgICAgICAgICAgICAgICAgYXJlIGFsbG93ZWQuDQogIC8vIFJldHVybiBWYWx1ZXMgOg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICBmdW5jdGlvbiBQY2xUYXJIYW5kbGVFeHRyYWN0QnlJbmRleExpc3QoJHBfdGFybmFtZSwgJHBfaW5kZXhfc3RyaW5nLCAmJHBfbGlzdF9kZXRhaWwsICRwX3BhdGgsICRwX3JlbW92ZV9wYXRoLCAkcF90YXJfbW9kZSkNCiAgew0KICAgIFRyRmN0U3RhcnQoX19GSUxFX18sIF9fTElORV9fLCAiUGNsVGFySGFuZGxlRXh0cmFjdEJ5SW5kZXhMaXN0IiwgImFyY2hpdmU9JyRwX3Rhcm5hbWUnLCBpbmRleF9zdHJpbmc9JyRwX2luZGV4X3N0cmluZycsIGxpc3QsIHBhdGg9JHBfcGF0aCwgcmVtb3ZlX3BhdGg9JyRwX3JlbW92ZV9wYXRoJywgdGFyX21vZGU9JHBfdGFyX21vZGUiKTsNCiAgICAkdl9yZXN1bHQ9MTsNCiAgICAkdl9uYiA9IDA7DQoNCiAgICAvLyAtLS0tLSBUQkMgOiBJIHNob3VsZCBjaGVjayB0aGUgc3RyaW5nIGJ5IGEgcmVnZXhwDQoNCiAgICAvLyAtLS0tLSBDaGVjayB0aGUgcGF0aA0KICAgIGlmICgoJHBfcGF0aCA9PSAiIikgfHwgKChzdWJzdHIoJHBfcGF0aCwgMCwgMSkgIT0gIi8iKSAmJiAoc3Vic3RyKCRwX3BhdGgsIDAsIDMpICE9ICIuLi8iKSAmJiAoc3Vic3RyKCRwX3BhdGgsIDAsIDIpICE9ICIuLyIpKSkNCiAgICAgICRwX3BhdGggPSAiLi8iLiRwX3BhdGg7DQoNCiAgICAvLyAtLS0tLSBMb29rIGZvciBwYXRoIHRvIHJlbW92ZSBmb3JtYXQgKHNob3VsZCBlbmQgYnkgLykNCiAgICBpZiAoKCRwX3JlbW92ZV9wYXRoICE9ICIiKSAmJiAoc3Vic3RyKCRwX3JlbW92ZV9wYXRoLCAtMSkgIT0gJy8nKSkNCiAgICB7DQogICAgICAkcF9yZW1vdmVfcGF0aCAuPSAnLyc7DQogICAgfQ0KICAgICRwX3JlbW92ZV9wYXRoX3NpemUgPSBzdHJsZW4oJHBfcmVtb3ZlX3BhdGgpOw0KDQogICAgLy8gLS0tLS0gT3BlbiB0aGUgdGFyIGZpbGUNCiAgICBpZiAoJHBfdGFyX21vZGUgPT0gInRhciIpDQogICAgew0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIk9wZW4gZmlsZSBpbiBiaW5hcnkgcmVhZCBtb2RlIik7DQogICAgICAkdl90YXIgPSBAZm9wZW4oJHBfdGFybmFtZSwgInJiIik7DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiT3BlbiBmaWxlIGluIGd6aXAgYmluYXJ5IHJlYWQgbW9kZSIpOw0KICAgICAgJHZfdGFyID0gQGd6b3BlbigkcF90YXJuYW1lLCAicmIiKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBDaGVjayB0aGF0IHRoZSBhcmNoaXZlIGlzIG9wZW4NCiAgICBpZiAoJHZfdGFyID09IDApDQogICAgew0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBQY2xFcnJvckxvZygtMiwgIlVuYWJsZSB0byBvcGVuIGFyY2hpdmUgJyRwX3Rhcm5hbWUnIGluIGJpbmFyeSByZWFkIG1vZGUiKTsNCg0KICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBNYW5pcHVsYXRlIHRoZSBpbmRleCBsaXN0DQogICAgJHZfbGlzdCA9IGV4cGxvZGUoIiwiLCAkcF9pbmRleF9zdHJpbmcpOw0KICAgIHNvcnQoJHZfbGlzdCk7DQoNCiAgICAvLyAtLS0tLSBMb29wIG9uIHRoZSBpbmRleCBsaXN0DQogICAgJHZfaW5kZXg9MDsNCiAgICBmb3IgKCRpPTA7ICgkaTxzaXplb2YoJHZfbGlzdCkpICYmICgkdl9yZXN1bHQpOyAkaSsrKQ0KICAgIHsNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJMb29raW5nIGZvciBpbmRleCBwYXJ0ICckdl9saXN0WyRpXSciKTsNCg0KICAgICAgLy8gLS0tLS0gRXh0cmFjdCByYW5nZQ0KICAgICAgJHZfaW5kZXhfbGlzdCA9IGV4cGxvZGUoIi0iLCAkdl9saXN0WyRpXSk7DQogICAgICAkdl9zaXplX2luZGV4X2xpc3QgPSBzaXplb2YoJHZfaW5kZXhfbGlzdCk7DQogICAgICBpZiAoJHZfc2l6ZV9pbmRleF9saXN0ID09IDEpDQogICAgICB7DQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJPbmx5IG9uZSBpbmRleCAnJHZfaW5kZXhfbGlzdFswXSciKTsNCg0KICAgICAgICAvLyAtLS0tLSBEbyB0aGUgZXh0cmFjdGlvbg0KICAgICAgICAkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVFeHRyYWN0QnlJbmRleCgkdl90YXIsICR2X2luZGV4LCAkdl9pbmRleF9saXN0WzBdLCAkdl9pbmRleF9saXN0WzBdLCAkcF9saXN0X2RldGFpbCwgJHBfcGF0aCwgJHBfcmVtb3ZlX3BhdGgsICRwX3Rhcl9tb2RlKTsNCiAgICAgIH0NCiAgICAgIGVsc2UgaWYgKCR2X3NpemVfaW5kZXhfbGlzdCA9PSAyKQ0KICAgICAgew0KICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiVHdvIGluZGV4ZXMgJyR2X2luZGV4X2xpc3RbMF0nIGFuZCAnJHZfaW5kZXhfbGlzdFsxXSciKTsNCg0KICAgICAgICAvLyAtLS0tLSBEbyB0aGUgZXh0cmFjdGlvbg0KICAgICAgICAkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVFeHRyYWN0QnlJbmRleCgkdl90YXIsICR2X2luZGV4LCAkdl9pbmRleF9saXN0WzBdLCAkdl9pbmRleF9saXN0WzFdLCAkcF9saXN0X2RldGFpbCwgJHBfcGF0aCwgJHBfcmVtb3ZlX3BhdGgsICRwX3Rhcl9tb2RlKTsNCiAgICAgIH0NCiAgICB9DQoNCiAgICAvLyAtLS0tLSBDbG9zZSB0aGUgdGFyZmlsZQ0KICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgIGZjbG9zZSgkdl90YXIpOw0KICAgIGVsc2UNCiAgICAgIGd6Y2xvc2UoJHZfdGFyKTsNCg0KICAgIC8vIC0tLS0tIFJldHVybg0KICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHZfcmVzdWx0KTsNCiAgICByZXR1cm4gJHZfcmVzdWx0Ow0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBQY2xUYXJIYW5kbGVFeHRyYWN0QnlJbmRleCgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gUGFyYW1ldGVycyA6DQogIC8vIFJldHVybiBWYWx1ZXMgOg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICBmdW5jdGlvbiBQY2xUYXJIYW5kbGVFeHRyYWN0QnlJbmRleCgkcF90YXIsICYkcF9pbmRleF9jdXJyZW50LCAkcF9pbmRleF9zdGFydCwgJHBfaW5kZXhfc3RvcCwgJiRwX2xpc3RfZGV0YWlsLCAkcF9wYXRoLCAkcF9yZW1vdmVfcGF0aCwgJHBfdGFyX21vZGUpDQogIHsNCiAgICBUckZjdFN0YXJ0KF9fRklMRV9fLCBfX0xJTkVfXywgIlBjbFRhckhhbmRsZUV4dHJhY3RCeUluZGV4IiwgImFyY2hpdmVfZGVzY3I9JyRwX3RhcicsIGluZGV4X2N1cnJlbnQ9JHBfaW5kZXhfY3VycmVudCwgaW5kZXhfc3RhcnQ9JyRwX2luZGV4X3N0YXJ0JywgaW5kZXhfc3RvcD0nJHBfaW5kZXhfc3RvcCcsIGxpc3QsIHBhdGg9JHBfcGF0aCwgcmVtb3ZlX3BhdGg9JyRwX3JlbW92ZV9wYXRoJywgdGFyX21vZGU9JHBfdGFyX21vZGUiKTsNCiAgICAkdl9yZXN1bHQ9MTsNCiAgICAkdl9uYiA9IDA7DQoNCiAgICAvLyBUQkMgOiBJIHNob3VsZCByZXBsYWNlIGFsbCAkdl90YXIgYnkgJHBfdGFyIGluIHRoaXMgZnVuY3Rpb24gLi4uLg0KICAgICR2X3RhciA9ICRwX3RhcjsNCg0KICAgIC8vIC0tLS0tIExvb2sgdGhlIG51bWJlciBvZiBlbGVtZW50cyBhbHJlYWR5IGluICRwX2xpc3RfZGV0YWlsDQogICAgJHZfbmIgPSBzaXplb2YoJHBfbGlzdF9kZXRhaWwpOw0KDQogICAgLy8gLS0tLS0gUmVhZCB0aGUgYmxvY2tzDQogICAgV2hpbGUgKCEoJHZfZW5kX29mX2ZpbGUgPSAoJHBfdGFyX21vZGUgPT0gInRhciI/ZmVvZigkdl90YXIpOmd6ZW9mKCR2X3RhcikpKSkNCiAgICB7DQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiTG9va2luZyBmb3IgbmV4dCBmaWxlIC4uLiIpOw0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIkluZGV4IGN1cnJlbnQ9JHBfaW5kZXhfY3VycmVudCwgcmFuZ2U9WyRwX2luZGV4X3N0YXJ0LCAkcF9pbmRleF9zdG9wXSkiKTsNCg0KICAgICAgaWYgKCRwX2luZGV4X2N1cnJlbnQgPiAkcF9pbmRleF9zdG9wKQ0KICAgICAgew0KICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiU3RvcCBleHRyYWN0aW9uLCBwYXN0IHN0b3AgaW5kZXgiKTsNCiAgICAgICAgYnJlYWs7DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIENsZWFyIGNhY2hlIG9mIGZpbGUgaW5mb3MNCiAgICAgIGNsZWFyc3RhdGNhY2hlKCk7DQoNCiAgICAgIC8vIC0tLS0tIFJlc2V0IGV4dHJhY3QgdGFnDQogICAgICAkdl9leHRyYWN0X2ZpbGUgPSBGQUxTRTsNCiAgICAgICR2X2V4dHJhY3Rpb25fc3RvcHBlZCA9IDA7DQoNCiAgICAgIC8vIC0tLS0tIFJlYWQgdGhlIDUxMiBieXRlcyBoZWFkZXINCiAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgJHZfYmluYXJ5X2RhdGEgPSBmcmVhZCgkdl90YXIsIDUxMik7DQogICAgICBlbHNlDQogICAgICAgICR2X2JpbmFyeV9kYXRhID0gZ3pyZWFkKCR2X3RhciwgNTEyKTsNCg0KICAgICAgLy8gLS0tLS0gUmVhZCB0aGUgaGVhZGVyIHByb3BlcnRpZXMNCiAgICAgIGlmICgoJHZfcmVzdWx0ID0gUGNsVGFySGFuZGxlUmVhZEhlYWRlcigkdl9iaW5hcnlfZGF0YSwgJHZfaGVhZGVyKSkgIT0gMSkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHZfcmVzdWx0KTsNCiAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZW1wdHkgYmxvY2tzIHRvIHNraXANCiAgICAgIGlmICgkdl9oZWFkZXJbZmlsZW5hbWVdID09ICIiKQ0KICAgICAgew0KICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiRW1wdHkgYmxvY2sgZm91bmQuIEVuZCBvZiBhcmNoaXZlID8iKTsNCiAgICAgICAgY29udGludWU7DQogICAgICB9DQoNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJGb3VuZCBmaWxlICckdl9oZWFkZXJbZmlsZW5hbWVdJywgc2l6ZSAnJHZfaGVhZGVyW3NpemVdJyIpOw0KDQogICAgICAvLyAtLS0tLSBMb29rIGlmIGZpbGUgaXMgaW4gdGhlIHJhbmdlIHRvIGJlIGV4dHJhY3RlZA0KICAgICAgaWYgKCgkcF9pbmRleF9jdXJyZW50ID49ICRwX2luZGV4X3N0YXJ0KSAmJiAoJHBfaW5kZXhfY3VycmVudCA8PSAkcF9pbmRleF9zdG9wKSkNCiAgICAgIHsNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIGlzIGluIHRoZSByYW5nZSB0byBiZSBleHRyYWN0ZWQiKTsNCiAgICAgICAgJHZfZXh0cmFjdF9maWxlID0gVFJVRTsNCiAgICAgIH0NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIGlzIG91dCBvZiB0aGUgcmFuZ2UiKTsNCiAgICAgICAgJHZfZXh0cmFjdF9maWxlID0gRkFMU0U7DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIExvb2sgaWYgdGhpcyBmaWxlIG5lZWQgdG8gYmUgZXh0cmFjdGVkDQogICAgICBpZiAoJHZfZXh0cmFjdF9maWxlKQ0KICAgICAgew0KICAgICAgICBpZiAoKCR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUV4dHJhY3RGaWxlKCR2X3RhciwgJHZfaGVhZGVyLCAkcF9wYXRoLCAkcF9yZW1vdmVfcGF0aCwgJHBfdGFyX21vZGUpKSAhPSAxKQ0KICAgICAgICB7DQogICAgICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAkdl9yZXN1bHQpOw0KICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7DQogICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZmlsZSB0aGF0IGlzIG5vdCB0byBiZSBleHRyYWN0ZWQNCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gVHJhY2UNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkp1bXAgZmlsZSAnJHZfaGVhZGVyW2ZpbGVuYW1lXSciKTsNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgNCwgIlBvc2l0aW9uIGF2YW50IGp1bXAgWyIuKCRwX3Rhcl9tb2RlPT0idGFyIj9mdGVsbCgkdl90YXIpOmd6dGVsbCgkdl90YXIpKS4iXSIpOw0KDQogICAgICAgIC8vIC0tLS0tIEp1bXAgdG8gbmV4dCBmaWxlDQogICAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgICBmc2Vlaygkdl90YXIsICgkcF90YXJfbW9kZT09InRhciI/ZnRlbGwoJHZfdGFyKTpnenRlbGwoJHZfdGFyKSkrKGNlaWwoKCR2X2hlYWRlcltzaXplXS81MTIpKSo1MTIpKTsNCiAgICAgICAgZWxzZQ0KICAgICAgICAgIGd6c2Vlaygkdl90YXIsIGd6dGVsbCgkdl90YXIpKyhjZWlsKCgkdl9oZWFkZXJbc2l6ZV0vNTEyKSkqNTEyKSk7DQoNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgNCwgIlBvc2l0aW9uIGFwcu+/vXMganVtcCBbIi4oJHBfdGFyX21vZGU9PSJ0YXIiP2Z0ZWxsKCR2X3Rhcik6Z3p0ZWxsKCR2X3RhcikpLiJdIik7DQogICAgICB9DQoNCiAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgJHZfZW5kX29mX2ZpbGUgPSBmZW9mKCR2X3Rhcik7DQogICAgICBlbHNlDQogICAgICAgICR2X2VuZF9vZl9maWxlID0gZ3plb2YoJHZfdGFyKTsNCg0KICAgICAgLy8gLS0tLS0gRmlsZSBuYW1lIGFuZCBwcm9wZXJ0aWVzIGFyZSBsb2dnZWQgaWYgbGlzdGluZyBtb2RlIG9yIGZpbGUgaXMgZXh0cmFjdGVkDQogICAgICBpZiAoJHZfZXh0cmFjdF9maWxlKQ0KICAgICAgew0KICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiTWVtb3JpemUgaW5mbyBhYm91dCBmaWxlICckdl9oZWFkZXJbZmlsZW5hbWVdJyIpOw0KDQogICAgICAgIC8vIC0tLS0tIExvZyBleHRyYWN0ZWQgZmlsZXMNCiAgICAgICAgaWYgKCgkdl9maWxlX2RpciA9IGRpcm5hbWUoJHZfaGVhZGVyW2ZpbGVuYW1lXSkpID09ICR2X2hlYWRlcltmaWxlbmFtZV0pDQogICAgICAgICAgJHZfZmlsZV9kaXIgPSAiIjsNCiAgICAgICAgaWYgKChzdWJzdHIoJHZfaGVhZGVyW2ZpbGVuYW1lXSwgMCwgMSkgPT0gIi8iKSAmJiAoJHZfZmlsZV9kaXIgPT0gIiIpKQ0KICAgICAgICAgICR2X2ZpbGVfZGlyID0gIi8iOw0KDQogICAgICAgIC8vIC0tLS0tIEFkZCB0aGUgYXJyYXkgZGVzY3JpYmluZyB0aGUgZmlsZSBpbnRvIHRoZSBsaXN0DQogICAgICAgICRwX2xpc3RfZGV0YWlsWyR2X25iXSA9ICR2X2hlYWRlcjsNCg0KICAgICAgICAvLyAtLS0tLSBJbmNyZW1lbnQNCiAgICAgICAgJHZfbmIrKzsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gSW5jcmVtZW50IHRoZSBjdXJyZW50IGZpbGUgaW5kZXgNCiAgICAgICRwX2luZGV4X2N1cnJlbnQrKzsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCk7DQogICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFySGFuZGxlRXh0cmFjdEZpbGUoKQ0KICAvLyBEZXNjcmlwdGlvbiA6DQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyBSZXR1cm4gVmFsdWVzIDoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gUGNsVGFySGFuZGxlRXh0cmFjdEZpbGUoJHBfdGFyLCAmJHZfaGVhZGVyLCAkcF9wYXRoLCAkcF9yZW1vdmVfcGF0aCwgJHBfdGFyX21vZGUpDQogIHsNCiAgICBUckZjdFN0YXJ0KF9fRklMRV9fLCBfX0xJTkVfXywgIlBjbFRhckhhbmRsZUV4dHJhY3RGaWxlIiwgImFyY2hpdmVfZGVzY3I9JyRwX3RhcicsIHBhdGg9JHBfcGF0aCwgcmVtb3ZlX3BhdGg9JyRwX3JlbW92ZV9wYXRoJywgdGFyX21vZGU9JHBfdGFyX21vZGUiKTsNCiAgICAkdl9yZXN1bHQ9MTsNCg0KICAgIC8vIFRCQyA6IEkgc2hvdWxkIHJlcGxhY2UgYWxsICR2X3RhciBieSAkcF90YXIgaW4gdGhpcyBmdW5jdGlvbiAuLi4uDQogICAgJHZfdGFyID0gJHBfdGFyOw0KICAgICR2X2V4dHJhY3RfZmlsZSA9IDE7DQoNCiAgICAkcF9yZW1vdmVfcGF0aF9zaXplID0gc3RybGVuKCRwX3JlbW92ZV9wYXRoKTsNCg0KICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBwYXRoIHRvIHJlbW92ZQ0KICAgICAgICBpZiAoKCRwX3JlbW92ZV9wYXRoICE9ICIiKQ0KICAgICAgICAgICAgJiYgKHN1YnN0cigkdl9oZWFkZXJbZmlsZW5hbWVdLCAwLCAkcF9yZW1vdmVfcGF0aF9zaXplKSA9PSAkcF9yZW1vdmVfcGF0aCkpDQogICAgICAgIHsNCiAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiRm91bmQgcGF0aCAnJHBfcmVtb3ZlX3BhdGgnIHRvIHJlbW92ZSBpbiBmaWxlICckdl9oZWFkZXJbZmlsZW5hbWVdJyIpOw0KICAgICAgICAgIC8vIC0tLS0tIFJlbW92ZSB0aGUgcGF0aA0KICAgICAgICAgICR2X2hlYWRlcltmaWxlbmFtZV0gPSBzdWJzdHIoJHZfaGVhZGVyW2ZpbGVuYW1lXSwgJHBfcmVtb3ZlX3BhdGhfc2l6ZSk7DQogICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIlJlc3VsdGluZyBmaWxlIGlzICckdl9oZWFkZXJbZmlsZW5hbWVdJyIpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gLS0tLS0gQWRkIHRoZSBwYXRoIHRvIHRoZSBmaWxlDQogICAgICAgIGlmICgoJHBfcGF0aCAhPSAiLi8iKSAmJiAoJHBfcGF0aCAhPSAiLyIpKQ0KICAgICAgICB7DQogICAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgdGhlIHBhdGggZW5kICcvJw0KICAgICAgICAgIHdoaWxlIChzdWJzdHIoJHBfcGF0aCwgLTEpID09ICIvIikNCiAgICAgICAgICB7DQogICAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiRGVzdGluYXRpb24gcGF0aCBbJHBfcGF0aF0gZW5kcyBieSAnLyciKTsNCiAgICAgICAgICAgICRwX3BhdGggPSBzdWJzdHIoJHBfcGF0aCwgMCwgc3RybGVuKCRwX3BhdGgpLTEpOw0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIk1vZGlmaWVkIHRvIFskcF9wYXRoXSIpOw0KICAgICAgICAgIH0NCg0KICAgICAgICAgIC8vIC0tLS0tIEFkZCB0aGUgcGF0aA0KICAgICAgICAgIGlmIChzdWJzdHIoJHZfaGVhZGVyW2ZpbGVuYW1lXSwgMCwgMSkgPT0gIi8iKQ0KICAgICAgICAgICAgICAkdl9oZWFkZXJbZmlsZW5hbWVdID0gJHBfcGF0aC4kdl9oZWFkZXJbZmlsZW5hbWVdOw0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICR2X2hlYWRlcltmaWxlbmFtZV0gPSAkcF9wYXRoLiIvIi4kdl9oZWFkZXJbZmlsZW5hbWVdOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gLS0tLS0gVHJhY2UNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkV4dHJhY3RpbmcgZmlsZSAod2l0aCBwYXRoKSAnJHZfaGVhZGVyW2ZpbGVuYW1lXScsIHNpemUgJyR2X2hlYWRlcltzaXplXSciKTsNCg0KICAgICAgICAvLyAtLS0tLSBDaGVjayB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0cw0KICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHZfaGVhZGVyW2ZpbGVuYW1lXSkpDQogICAgICAgIHsNCiAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiRmlsZSAnJHZfaGVhZGVyW2ZpbGVuYW1lXScgYWxyZWFkeSBleGlzdHMiKTsNCg0KICAgICAgICAgIC8vIC0tLS0tIExvb2sgaWYgZmlsZSBpcyBhIGRpcmVjdG9yeQ0KICAgICAgICAgIGlmIChpc19kaXIoJHZfaGVhZGVyW2ZpbGVuYW1lXSkpDQogICAgICAgICAgew0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkV4aXN0aW5nIGZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIGlzIGEgZGlyZWN0b3J5Iik7DQoNCiAgICAgICAgICAgIC8vIC0tLS0tIENoYW5nZSB0aGUgZmlsZSBzdGF0dXMNCiAgICAgICAgICAgICR2X2hlYWRlcltzdGF0dXNdID0gImFscmVhZHlfYV9kaXJlY3RvcnkiOw0KDQogICAgICAgICAgICAvLyAtLS0tLSBTa2lwIHRoZSBleHRyYWN0DQogICAgICAgICAgICAkdl9leHRyYWN0aW9uX3N0b3BwZWQgPSAxOw0KICAgICAgICAgICAgJHZfZXh0cmFjdF9maWxlID0gMDsNCiAgICAgICAgICB9DQogICAgICAgICAgLy8gLS0tLS0gTG9vayBpZiBmaWxlIGlzIHdyaXRlIHByb3RlY3RlZA0KICAgICAgICAgIGVsc2UgaWYgKCFpc193cml0ZWFibGUoJHZfaGVhZGVyW2ZpbGVuYW1lXSkpDQogICAgICAgICAgew0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkV4aXN0aW5nIGZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIGlzIHdyaXRlIHByb3RlY3RlZCIpOw0KDQogICAgICAgICAgICAvLyAtLS0tLSBDaGFuZ2UgdGhlIGZpbGUgc3RhdHVzDQogICAgICAgICAgICAkdl9oZWFkZXJbc3RhdHVzXSA9ICJ3cml0ZV9wcm90ZWN0ZWQiOw0KDQogICAgICAgICAgICAvLyAtLS0tLSBTa2lwIHRoZSBleHRyYWN0DQogICAgICAgICAgICAkdl9leHRyYWN0aW9uX3N0b3BwZWQgPSAxOw0KICAgICAgICAgICAgJHZfZXh0cmFjdF9maWxlID0gMDsNCiAgICAgICAgICB9DQogICAgICAgICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgZXh0cmFjdGVkIGZpbGUgaXMgb2xkZXINCiAgICAgICAgICBlbHNlIGlmIChmaWxlbXRpbWUoJHZfaGVhZGVyW2ZpbGVuYW1lXSkgPiAkdl9oZWFkZXJbbXRpbWVdKQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJFeGlzdGluZyBmaWxlICckdl9oZWFkZXJbZmlsZW5hbWVdJyBpcyBuZXdlciAoIi5kYXRlKCJsIGRTIG9mIEYgWSBoOmk6cyBBIiwgZmlsZW10aW1lKCR2X2hlYWRlcltmaWxlbmFtZV0pKS4iKSB0aGFuIHRoZSBleHRyYWN0ZWQgZmlsZSAoIi5kYXRlKCJsIGRTIG9mIEYgWSBoOmk6cyBBIiwgJHZfaGVhZGVyW210aW1lXSkuIikiKTsNCg0KICAgICAgICAgICAgLy8gLS0tLS0gQ2hhbmdlIHRoZSBmaWxlIHN0YXR1cw0KICAgICAgICAgICAgJHZfaGVhZGVyW3N0YXR1c10gPSAibmV3ZXJfZXhpc3QiOw0KDQogICAgICAgICAgICAvLyAtLS0tLSBTa2lwIHRoZSBleHRyYWN0DQogICAgICAgICAgICAkdl9leHRyYWN0aW9uX3N0b3BwZWQgPSAxOw0KICAgICAgICAgICAgJHZfZXh0cmFjdF9maWxlID0gMDsNCiAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyAtLS0tLSBDaGVjayB0aGUgZGlyZWN0b3J5IGF2YWlsYWJpbGl0eSBhbmQgY3JlYXRlIGl0IGlmIG5lY2Vzc2FyeQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICBpZiAoJHZfaGVhZGVyW3R5cGVmbGFnXT09IjUiKQ0KICAgICAgICAgICAgJHZfZGlyX3RvX2NoZWNrID0gJHZfaGVhZGVyW2ZpbGVuYW1lXTsNCiAgICAgICAgICBlbHNlIGlmICghc3Ryc3RyKCR2X2hlYWRlcltmaWxlbmFtZV0sICIvIikpDQogICAgICAgICAgICAkdl9kaXJfdG9fY2hlY2sgPSAiIjsNCiAgICAgICAgICBlbHNlDQogICAgICAgICAgICAkdl9kaXJfdG9fY2hlY2sgPSBkaXJuYW1lKCR2X2hlYWRlcltmaWxlbmFtZV0pOw0KDQogICAgICAgICAgaWYgKCgkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVyRGlyQ2hlY2soJHZfZGlyX3RvX2NoZWNrKSkgIT0gMSkNCiAgICAgICAgICB7DQogICAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiVW5hYmxlIHRvIGNyZWF0ZSBwYXRoIGZvciAnJHZfaGVhZGVyW2ZpbGVuYW1lXSciKTsNCg0KICAgICAgICAgICAgLy8gLS0tLS0gQ2hhbmdlIHRoZSBmaWxlIHN0YXR1cw0KICAgICAgICAgICAgJHZfaGVhZGVyW3N0YXR1c10gPSAicGF0aF9jcmVhdGlvbl9mYWlsIjsNCg0KICAgICAgICAgICAgLy8gLS0tLS0gU2tpcCB0aGUgZXh0cmFjdA0KICAgICAgICAgICAgJHZfZXh0cmFjdGlvbl9zdG9wcGVkID0gMTsNCiAgICAgICAgICAgICR2X2V4dHJhY3RfZmlsZSA9IDA7DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gLS0tLS0gRG8gdGhlIHJlYWwgYnl0ZXMgZXh0cmFjdGlvbiAoaWYgbm90IGEgZGlyZWN0b3J5KQ0KICAgICAgICBpZiAoKCR2X2V4dHJhY3RfZmlsZSkgJiYgKCR2X2hlYWRlclt0eXBlZmxhZ10hPSI1IikpDQogICAgICAgIHsNCiAgICAgICAgICAvLyAtLS0tLSBPcGVuIHRoZSBkZXN0aW5hdGlvbiBmaWxlIGluIHdyaXRlIG1vZGUNCiAgICAgICAgICBpZiAoKCR2X2Rlc3RfZmlsZSA9IEBmb3Blbigkdl9oZWFkZXJbZmlsZW5hbWVdLCAid2IiKSkgPT0gMCkNCiAgICAgICAgICB7DQogICAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiRXJyb3Igd2hpbGUgb3BlbmluZyAnJHZfaGVhZGVyW2ZpbGVuYW1lXScgaW4gd3JpdGUgYmluYXJ5IG1vZGUiKTsNCg0KICAgICAgICAgICAgLy8gLS0tLS0gQ2hhbmdlIHRoZSBmaWxlIHN0YXR1cw0KICAgICAgICAgICAgJHZfaGVhZGVyW3N0YXR1c10gPSAid3JpdGVfZXJyb3IiOw0KDQogICAgICAgICAgICAvLyAtLS0tLSBKdW1wIHRvIG5leHQgZmlsZQ0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkp1bXAgdG8gbmV4dCBmaWxlIik7DQogICAgICAgICAgICBpZiAoJHBfdGFyX21vZGUgPT0gInRhciIpDQogICAgICAgICAgICAgIGZzZWVrKCR2X3RhciwgZnRlbGwoJHZfdGFyKSsoY2VpbCgoJHZfaGVhZGVyW3NpemVdLzUxMikpKjUxMikpOw0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICBnenNlZWsoJHZfdGFyLCBnenRlbGwoJHZfdGFyKSsoY2VpbCgoJHZfaGVhZGVyW3NpemVdLzUxMikpKjUxMikpOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlDQogICAgICAgICAgew0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIlN0YXJ0IGV4dHJhY3Rpb24gb2YgJyR2X2hlYWRlcltmaWxlbmFtZV0nIik7DQoNCiAgICAgICAgICAgIC8vIC0tLS0tIFJlYWQgZGF0YQ0KICAgICAgICAgICAgJG4gPSBmbG9vcigkdl9oZWFkZXJbc2l6ZV0vNTEyKTsNCiAgICAgICAgICAgIGZvciAoJGk9MDsgJGk8JG47ICRpKyspDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJSZWFkIGNvbXBsZXRlIDUxMiBieXRlcyBibG9jayBudW1iZXIgIi4oJGkrMSkpOw0KICAgICAgICAgICAgICBpZiAoJHBfdGFyX21vZGUgPT0gInRhciIpDQogICAgICAgICAgICAgICAgJHZfY29udGVudCA9IGZyZWFkKCR2X3RhciwgNTEyKTsNCiAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICR2X2NvbnRlbnQgPSBnenJlYWQoJHZfdGFyLCA1MTIpOw0KICAgICAgICAgICAgICBmd3JpdGUoJHZfZGVzdF9maWxlLCAkdl9jb250ZW50LCA1MTIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCgkdl9oZWFkZXJbc2l6ZV0gJSA1MTIpICE9IDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJSZWFkIGxhc3QgIi4oJHZfaGVhZGVyW3NpemVdICUgNTEyKS4iIGJ5dGVzIGluIGEgNTEyIGJsb2NrIik7DQogICAgICAgICAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgICAgICAgICAkdl9jb250ZW50ID0gZnJlYWQoJHZfdGFyLCA1MTIpOw0KICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgJHZfY29udGVudCA9IGd6cmVhZCgkdl90YXIsIDUxMik7DQogICAgICAgICAgICAgIGZ3cml0ZSgkdl9kZXN0X2ZpbGUsICR2X2NvbnRlbnQsICgkdl9oZWFkZXJbc2l6ZV0gJSA1MTIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gLS0tLS0gQ2xvc2UgdGhlIGRlc3RpbmF0aW9uIGZpbGUNCiAgICAgICAgICAgIGZjbG9zZSgkdl9kZXN0X2ZpbGUpOw0KDQogICAgICAgICAgICAvLyAtLS0tLSBDaGFuZ2UgdGhlIGZpbGUgbW9kZSwgbXRpbWUNCiAgICAgICAgICAgIHRvdWNoKCR2X2hlYWRlcltmaWxlbmFtZV0sICR2X2hlYWRlclttdGltZV0pOw0KICAgICAgICAgICAgLy9jaG1vZCgkdl9oZWFkZXJbZmlsZW5hbWVdLCBEZWNPY3QoJHZfaGVhZGVyW21vZGVdKSk7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgLy8gLS0tLS0gQ2hlY2sgdGhlIGZpbGUgc2l6ZQ0KICAgICAgICAgIGNsZWFyc3RhdGNhY2hlKCk7DQogICAgICAgICAgaWYgKGZpbGVzaXplKCR2X2hlYWRlcltmaWxlbmFtZV0pICE9ICR2X2hlYWRlcltzaXplXSkNCiAgICAgICAgICB7DQogICAgICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgICAgICAgIFBjbEVycm9yTG9nKC03LCAiRXh0cmFjdGVkIGZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIGRvZXMgbm90IGhhdmUgdGhlIGNvcnJlY3QgZmlsZSBzaXplICciLmZpbGVzaXplKCR2X2ZpbGVuYW1lKS4iJyAoJyR2X2hlYWRlcltzaXplXScgZXhwZWN0ZWQpLiBBcmNoaXZlIG1heSBiZSBjb3JydXB0ZWQuIik7DQoNCiAgICAgICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgLy8gLS0tLS0gVHJhY2UNCiAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiRXh0cmFjdGlvbiBkb25lIik7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkV4dHJhY3Rpb24gb2YgZmlsZSAnJHZfaGVhZGVyW2ZpbGVuYW1lXScgc2tpcHBlZC4iKTsNCg0KICAgICAgICAgIC8vIC0tLS0tIEp1bXAgdG8gbmV4dCBmaWxlDQogICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkp1bXAgdG8gbmV4dCBmaWxlIik7DQogICAgICAgICAgaWYgKCRwX3Rhcl9tb2RlID09ICJ0YXIiKQ0KICAgICAgICAgICAgZnNlZWsoJHZfdGFyLCBmdGVsbCgkdl90YXIpKyhjZWlsKCgkdl9oZWFkZXJbc2l6ZV0vNTEyKSkqNTEyKSk7DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgZ3pzZWVrKCR2X3RhciwgZ3p0ZWxsKCR2X3RhcikrKGNlaWwoKCR2X2hlYWRlcltzaXplXS81MTIpKSo1MTIpKTsNCiAgICAgICAgfQ0KDQogICAgLy8gLS0tLS0gUmV0dXJuDQogICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAkdl9yZXN1bHQpOw0KICAgIHJldHVybiAkdl9yZXN1bHQ7DQogIH0NCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAvLyBGdW5jdGlvbiA6IFBjbFRhckhhbmRsZURlbGV0ZSgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gUGFyYW1ldGVycyA6DQogIC8vIFJldHVybiBWYWx1ZXMgOg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICBmdW5jdGlvbiBQY2xUYXJIYW5kbGVEZWxldGUoJHBfdGFybmFtZSwgJHBfZmlsZV9saXN0LCAmJHBfbGlzdF9kZXRhaWwsICRwX3Rhcl9tb2RlKQ0KICB7DQogICAgVHJGY3RTdGFydChfX0ZJTEVfXywgX19MSU5FX18sICJQY2xUYXJIYW5kbGVEZWxldGUiLCAiYXJjaGl2ZT0nJHBfdGFybmFtZScsIGxpc3QsIHRhcl9tb2RlPSRwX3Rhcl9tb2RlIik7DQogICAgJHZfcmVzdWx0PTE7DQogICAgJHZfbmI9MDsNCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIHJlZ3VsYXIgdGFyIGZpbGUNCiAgICBpZiAoJHBfdGFyX21vZGUgPT0gInRhciIpDQogICAgew0KICAgICAgLy8gLS0tLS0gT3BlbiBmaWxlDQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiT3BlbiBmaWxlIGluIGJpbmFyeSByZWFkIG1vZGUiKTsNCiAgICAgIGlmICgoJHZfdGFyID0gQGZvcGVuKCRwX3Rhcm5hbWUsICJyYiIpKSA9PSAwKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgICAgUGNsRXJyb3JMb2coLTIsICJVbmFibGUgdG8gb3BlbiBmaWxlICckcF90YXJuYW1lJyBpbiBiaW5hcnkgcmVhZCBtb2RlIik7DQoNCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIE9wZW4gYSB0ZW1wb3JhcnkgZmlsZSBpbiB3cml0ZSBtb2RlDQogICAgICAkdl90ZW1wX3Rhcm5hbWUgPSB1bmlxaWQoInBjbHRhci0iKS4iLnRtcCI7DQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiQ3JlYXRpbmcgdGVtcG9yYXJ5IGFyY2hpdmUgZmlsZSAkdl90ZW1wX3Rhcm5hbWUiKTsNCiAgICAgIGlmICgoJHZfdGVtcF90YXIgPSBAZm9wZW4oJHZfdGVtcF90YXJuYW1lLCAid2IiKSkgPT0gMCkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gQ2xvc2UgdGFyIGZpbGUNCiAgICAgICAgZmNsb3NlKCR2X3Rhcik7DQoNCiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICAgIFBjbEVycm9yTG9nKC0xLCAiVW5hYmxlIHRvIG9wZW4gZmlsZSAnJHZfdGVtcF90YXJuYW1lJyBpbiBiaW5hcnkgd3JpdGUgbW9kZSIpOw0KDQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIGNvbXByZXNzZWQgdGFyIGZpbGUNCiAgICBlbHNlDQogICAgew0KICAgICAgLy8gLS0tLS0gT3BlbiB0aGUgZmlsZSBpbiByZWFkIG1vZGUNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJPcGVuIGZpbGUgaW4gZ3ppcCBiaW5hcnkgcmVhZCBtb2RlIik7DQogICAgICBpZiAoKCR2X3RhciA9IEBnem9wZW4oJHBfdGFybmFtZSwgInJiIikpID09IDApDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZw0KICAgICAgICBQY2xFcnJvckxvZygtMiwgIlVuYWJsZSB0byBvcGVuIGZpbGUgJyRwX3Rhcm5hbWUnIGluIGJpbmFyeSByZWFkIG1vZGUiKTsNCg0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gT3BlbiBhIHRlbXBvcmFyeSBmaWxlIGluIHdyaXRlIG1vZGUNCiAgICAgICR2X3RlbXBfdGFybmFtZSA9IHVuaXFpZCgicGNsdGFyLSIpLiIudG1wIjsNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJDcmVhdGluZyB0ZW1wb3JhcnkgYXJjaGl2ZSBmaWxlICR2X3RlbXBfdGFybmFtZSIpOw0KICAgICAgaWYgKCgkdl90ZW1wX3RhciA9IEBnem9wZW4oJHZfdGVtcF90YXJuYW1lLCAid2IiKSkgPT0gMCkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gQ2xvc2UgdGFyIGZpbGUNCiAgICAgICAgZ3pjbG9zZSgkdl90YXIpOw0KDQogICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZw0KICAgICAgICBQY2xFcnJvckxvZygtMSwgIlVuYWJsZSB0byBvcGVuIGZpbGUgJyR2X3RlbXBfdGFybmFtZScgaW4gYmluYXJ5IHdyaXRlIG1vZGUiKTsNCg0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICAgIH0NCiAgICB9DQoNCiAgICAvLyAtLS0tLSBSZWFkIHRoZSBibG9ja3MNCiAgICBXaGlsZSAoISgkdl9lbmRfb2ZfZmlsZSA9ICgkcF90YXJfbW9kZSA9PSAidGFyIj9mZW9mKCR2X3Rhcik6Z3plb2YoJHZfdGFyKSkpKQ0KICAgIHsNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJMb29raW5nIGZvciBuZXh0IGhlYWRlciAuLi4iKTsNCg0KICAgICAgLy8gLS0tLS0gQ2xlYXIgY2FjaGUgb2YgZmlsZSBpbmZvcw0KICAgICAgY2xlYXJzdGF0Y2FjaGUoKTsNCg0KICAgICAgLy8gLS0tLS0gUmVzZXQgZGVsZXRlIHRhZw0KICAgICAgJHZfZGVsZXRlX2ZpbGUgPSBGQUxTRTsNCg0KICAgICAgLy8gLS0tLS0gUmVhZCB0aGUgZmlyc3QgNTEyIGJsb2NrIGhlYWRlcg0KICAgICAgaWYgKCRwX3Rhcl9tb2RlID09ICJ0YXIiKQ0KICAgICAgICAkdl9iaW5hcnlfZGF0YSA9IGZyZWFkKCR2X3RhciwgNTEyKTsNCiAgICAgIGVsc2UNCiAgICAgICAgJHZfYmluYXJ5X2RhdGEgPSBnenJlYWQoJHZfdGFyLCA1MTIpOw0KDQogICAgICAvLyAtLS0tLSBSZWFkIHRoZSBoZWFkZXIgcHJvcGVydGllcw0KICAgICAgaWYgKCgkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVSZWFkSGVhZGVyKCR2X2JpbmFyeV9kYXRhLCAkdl9oZWFkZXIpKSAhPSAxKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBDbG9zZSB0aGUgYXJjaGl2ZSBmaWxlDQogICAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgew0KICAgICAgICAgIGZjbG9zZSgkdl90YXIpOw0KICAgICAgICAgIGZjbG9zZSgkdl90ZW1wX3Rhcik7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgZ3pjbG9zZSgkdl90YXIpOw0KICAgICAgICAgIGd6Y2xvc2UoJHZfdGVtcF90YXIpOw0KICAgICAgICB9DQogICAgICAgIEB1bmxpbmsoJHZfdGVtcF90YXJuYW1lKTsNCg0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAkdl9yZXN1bHQpOw0KICAgICAgICByZXR1cm4gJHZfcmVzdWx0Ow0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBMb29rIGZvciBlbXB0eSBibG9ja3MgdG8gc2tpcA0KICAgICAgaWYgKCR2X2hlYWRlcltmaWxlbmFtZV0gPT0gIiIpDQogICAgICB7DQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJFbXB0eSBibG9jayBmb3VuZC4gRW5kIG9mIGFyY2hpdmUgPyIpOw0KICAgICAgICBjb250aW51ZTsNCiAgICAgIH0NCg0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkZvdW5kIGZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nLCBzaXplICckdl9oZWFkZXJbc2l6ZV0nIik7DQoNCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGZpbGVuYW1lcyB0byBkZWxldGUNCiAgICAgIGZvciAoJGk9MCwgJHZfZGVsZXRlX2ZpbGU9RkFMU0U7ICgkaTxzaXplb2YoJHBfZmlsZV9saXN0KSkgJiYgKCEkdl9kZWxldGVfZmlsZSk7ICRpKyspDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIENvbXBhcmUgdGhlIGZpbGUgbmFtZXMNCi8vICAgICAgICBpZiAoJHBfZmlsZV9saXN0WyRpXSA9PSAkdl9oZWFkZXJbZmlsZW5hbWVdKQ0KICAgICAgICBpZiAoKCR2X2xlbiA9IHN0cmNtcCgkcF9maWxlX2xpc3RbJGldLCAkdl9oZWFkZXJbZmlsZW5hbWVdKSkgPD0gMCkNCiAgICAgICAgew0KICAgICAgICAgIGlmICgkdl9sZW49PTApDQogICAgICAgICAgew0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIkZvdW5kIHRoYXQgJyR2X2hlYWRlcltmaWxlbmFtZV0nIG5lZWQgdG8gYmUgZGVsZXRlZCIpOw0KICAgICAgICAgICAgJHZfZGVsZXRlX2ZpbGUgPSBUUlVFOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlDQogICAgICAgICAgew0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIkxvb2sgaWYgJyR2X2hlYWRlcltmaWxlbmFtZV0nIGlzIGEgZmlsZSBpbiAkcF9maWxlX2xpc3RbJGldIik7DQogICAgICAgICAgICBpZiAoc3Vic3RyKCR2X2hlYWRlcltmaWxlbmFtZV0sIHN0cmxlbigkcF9maWxlX2xpc3RbJGldKSwgMSkgPT0gIi8iKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiJyR2X2hlYWRlcltmaWxlbmFtZV0nIGlzIGEgZmlsZSBpbiAkcF9maWxlX2xpc3RbJGldIik7DQogICAgICAgICAgICAgICR2X2RlbGV0ZV9maWxlID0gVFJVRTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gQ29weSBmaWxlcyB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIGRlbGV0ZWQNCiAgICAgIGlmICghJHZfZGVsZXRlX2ZpbGUpDQogICAgICB7DQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJLZWVwIGZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIik7DQoNCiAgICAgICAgLy8gLS0tLS0gV3JpdGUgdGhlIGZpbGUgaGVhZGVyDQogICAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgew0KICAgICAgICAgIGZwdXRzKCR2X3RlbXBfdGFyLCAkdl9iaW5hcnlfZGF0YSwgNTEyKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICBnenB1dHMoJHZfdGVtcF90YXIsICR2X2JpbmFyeV9kYXRhLCA1MTIpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gLS0tLS0gV3JpdGUgdGhlIGZpbGUgZGF0YQ0KICAgICAgICAkbiA9IGNlaWwoJHZfaGVhZGVyW3NpemVdLzUxMik7DQogICAgICAgIGZvciAoJGk9MDsgJGk8JG47ICRpKyspDQogICAgICAgIHsNCiAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiUmVhZCBjb21wbGV0ZSA1MTIgYnl0ZXMgYmxvY2sgbnVtYmVyICIuKCRpKzEpKTsNCiAgICAgICAgICBpZiAoJHBfdGFyX21vZGUgPT0gInRhciIpDQogICAgICAgICAgew0KICAgICAgICAgICAgJHZfY29udGVudCA9IGZyZWFkKCR2X3RhciwgNTEyKTsNCiAgICAgICAgICAgIGZ3cml0ZSgkdl90ZW1wX3RhciwgJHZfY29udGVudCwgNTEyKTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgICR2X2NvbnRlbnQgPSBnenJlYWQoJHZfdGFyLCA1MTIpOw0KICAgICAgICAgICAgZ3p3cml0ZSgkdl90ZW1wX3RhciwgJHZfY29udGVudCwgNTEyKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyAtLS0tLSBGaWxlIG5hbWUgYW5kIHByb3BlcnRpZXMgYXJlIGxvZ2dlZCBpZiBsaXN0aW5nIG1vZGUgb3IgZmlsZSBpcyBleHRyYWN0ZWQNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIk1lbW9yaXplIGluZm8gYWJvdXQgZmlsZSAnJHZfaGVhZGVyW2ZpbGVuYW1lXSciKTsNCg0KICAgICAgICAvLyAtLS0tLSBBZGQgdGhlIGFycmF5IGRlc2NyaWJpbmcgdGhlIGZpbGUgaW50byB0aGUgbGlzdA0KICAgICAgICAkcF9saXN0X2RldGFpbFskdl9uYl0gPSAkdl9oZWFkZXI7DQogICAgICAgICRwX2xpc3RfZGV0YWlsWyR2X25iXVtzdGF0dXNdID0gIm9rIjsNCg0KICAgICAgICAvLyAtLS0tLSBJbmNyZW1lbnQNCiAgICAgICAgJHZfbmIrKzsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZmlsZSB0aGF0IGlzIHRvIGJlIGRlbGV0ZWQNCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gVHJhY2UNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIlN0YXJ0IGRlbGV0aW9uIG9mICckdl9oZWFkZXJbZmlsZW5hbWVdJyIpOw0KICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCA0LCAiUG9zaXRpb24gYXZhbnQganVtcCBbIi4oJHBfdGFyX21vZGU9PSJ0YXIiP2Z0ZWxsKCR2X3Rhcik6Z3p0ZWxsKCR2X3RhcikpLiJdIik7DQoNCiAgICAgICAgLy8gLS0tLS0gSnVtcCB0byBuZXh0IGZpbGUNCiAgICAgICAgaWYgKCRwX3Rhcl9tb2RlID09ICJ0YXIiKQ0KICAgICAgICAgIGZzZWVrKCR2X3RhciwgZnRlbGwoJHZfdGFyKSsoY2VpbCgoJHZfaGVhZGVyW3NpemVdLzUxMikpKjUxMikpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgZ3pzZWVrKCR2X3RhciwgZ3p0ZWxsKCR2X3RhcikrKGNlaWwoKCR2X2hlYWRlcltzaXplXS81MTIpKSo1MTIpKTsNCg0KICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCA0LCAiUG9zaXRpb24gYXBy77+9cyBqdW1wIFsiLigkcF90YXJfbW9kZT09InRhciI/ZnRlbGwoJHZfdGFyKTpnenRlbGwoJHZfdGFyKSkuIl0iKTsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZW5kIG9mIGZpbGUNCiAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgJHZfZW5kX29mX2ZpbGUgPSBmZW9mKCR2X3Rhcik7DQogICAgICBlbHNlDQogICAgICAgICR2X2VuZF9vZl9maWxlID0gZ3plb2YoJHZfdGFyKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBXcml0ZSB0aGUgbGFzdCBlbXB0eSBidWZmZXINCiAgICBQY2xUYXJIYW5kbGVGb290ZXIoJHZfdGVtcF90YXIsICRwX3Rhcl9tb2RlKTsNCg0KICAgIC8vIC0tLS0tIENsb3NlIHRoZSB0YXJmaWxlDQogICAgaWYgKCRwX3Rhcl9tb2RlID09ICJ0YXIiKQ0KICAgIHsNCiAgICAgIGZjbG9zZSgkdl90YXIpOw0KICAgICAgZmNsb3NlKCR2X3RlbXBfdGFyKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgIGd6Y2xvc2UoJHZfdGFyKTsNCiAgICAgIGd6Y2xvc2UoJHZfdGVtcF90YXIpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIFVubGluayB0YXIgZmlsZQ0KICAgIGlmICghQHVubGluaygkcF90YXJuYW1lKSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC0xMSwgIkVycm9yIHdoaWxlIGRlbGV0aW5nIGFyY2hpdmUgbmFtZSAkcF90YXJuYW1lIik7DQogICAgfQ0KDQoNCiAgICAvLyAtLS0tLSBSZW5hbWUgdGFyIGZpbGUNCiAgICBpZiAoIUByZW5hbWUoJHZfdGVtcF90YXJuYW1lLCAkcF90YXJuYW1lKSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC0xMiwgIkVycm9yIHdoaWxlIHJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlICR2X3RlbXBfdGFybmFtZSB0byBhcmNoaXZlIG5hbWUgJHBfdGFybmFtZSIpOw0KDQogICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIFJldHVybg0KICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHZfcmVzdWx0KTsNCiAgICByZXR1cm4gJHZfcmVzdWx0Ow0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBQY2xUYXJIYW5kbGVVcGRhdGUoKQ0KICAvLyBEZXNjcmlwdGlvbiA6DQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyBSZXR1cm4gVmFsdWVzIDoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gUGNsVGFySGFuZGxlVXBkYXRlKCRwX3Rhcm5hbWUsICRwX2ZpbGVfbGlzdCwgJiRwX2xpc3RfZGV0YWlsLCAkcF90YXJfbW9kZSwgJHBfYWRkX2RpciwgJHBfcmVtb3ZlX2RpcikNCiAgew0KICAgIFRyRmN0U3RhcnQoX19GSUxFX18sIF9fTElORV9fLCAiUGNsVGFySGFuZGxlVXBkYXRlIiwgImFyY2hpdmU9JyRwX3Rhcm5hbWUnLCBsaXN0LCB0YXJfbW9kZT0kcF90YXJfbW9kZSIpOw0KICAgICR2X3Jlc3VsdD0xOw0KICAgICR2X25iPTA7DQogICAgJHZfZm91bmRfbGlzdCA9IGFycmF5KCk7DQoNCiAgICAvLyAtLS0tLSBMb29rIGZvciByZWd1bGFyIHRhciBmaWxlDQogICAgaWYgKCRwX3Rhcl9tb2RlID09ICJ0YXIiKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIE9wZW4gZmlsZQ0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIk9wZW4gZmlsZSBpbiBiaW5hcnkgcmVhZCBtb2RlIik7DQogICAgICBpZiAoKCR2X3RhciA9IEBmb3BlbigkcF90YXJuYW1lLCAicmIiKSkgPT0gMCkNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICAgIFBjbEVycm9yTG9nKC0yLCAiVW5hYmxlIHRvIG9wZW4gZmlsZSAnJHBfdGFybmFtZScgaW4gYmluYXJ5IHJlYWQgbW9kZSIpOw0KDQogICAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBPcGVuIGEgdGVtcG9yYXJ5IGZpbGUgaW4gd3JpdGUgbW9kZQ0KICAgICAgJHZfdGVtcF90YXJuYW1lID0gdW5pcWlkKCJwY2x0YXItIikuIi50bXAiOw0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkNyZWF0aW5nIHRlbXBvcmFyeSBhcmNoaXZlIGZpbGUgJHZfdGVtcF90YXJuYW1lIik7DQogICAgICBpZiAoKCR2X3RlbXBfdGFyID0gQGZvcGVuKCR2X3RlbXBfdGFybmFtZSwgIndiIikpID09IDApDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIENsb3NlIHRhciBmaWxlDQogICAgICAgIGZjbG9zZSgkdl90YXIpOw0KDQogICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZw0KICAgICAgICBQY2xFcnJvckxvZygtMSwgIlVuYWJsZSB0byBvcGVuIGZpbGUgJyR2X3RlbXBfdGFybmFtZScgaW4gYmluYXJ5IHdyaXRlIG1vZGUiKTsNCg0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICAgIH0NCiAgICB9DQoNCiAgICAvLyAtLS0tLSBMb29rIGZvciBjb21wcmVzc2VkIHRhciBmaWxlDQogICAgZWxzZQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIE9wZW4gdGhlIGZpbGUgaW4gcmVhZCBtb2RlDQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiT3BlbiBmaWxlIGluIGd6aXAgYmluYXJ5IHJlYWQgbW9kZSIpOw0KICAgICAgaWYgKCgkdl90YXIgPSBAZ3pvcGVuKCRwX3Rhcm5hbWUsICJyYiIpKSA9PSAwKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgICAgUGNsRXJyb3JMb2coLTIsICJVbmFibGUgdG8gb3BlbiBmaWxlICckcF90YXJuYW1lJyBpbiBiaW5hcnkgcmVhZCBtb2RlIik7DQoNCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIE9wZW4gYSB0ZW1wb3JhcnkgZmlsZSBpbiB3cml0ZSBtb2RlDQogICAgICAkdl90ZW1wX3Rhcm5hbWUgPSB1bmlxaWQoInBjbHRhci0iKS4iLnRtcCI7DQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiQ3JlYXRpbmcgdGVtcG9yYXJ5IGFyY2hpdmUgZmlsZSAkdl90ZW1wX3Rhcm5hbWUiKTsNCiAgICAgIGlmICgoJHZfdGVtcF90YXIgPSBAZ3pvcGVuKCR2X3RlbXBfdGFybmFtZSwgIndiIikpID09IDApDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIENsb3NlIHRhciBmaWxlDQogICAgICAgIGd6Y2xvc2UoJHZfdGFyKTsNCg0KICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgICAgUGNsRXJyb3JMb2coLTEsICJVbmFibGUgdG8gb3BlbiBmaWxlICckdl90ZW1wX3Rhcm5hbWUnIGluIGJpbmFyeSB3cml0ZSBtb2RlIik7DQoNCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgICB9DQogICAgfQ0KDQogICAgLy8gLS0tLS0gUHJlcGFyZSB0aGUgbGlzdCBvZiBmaWxlcw0KICAgIGZvciAoJGk9MDsgJGk8c2l6ZW9mKCRwX2ZpbGVfbGlzdCk7ICRpKyspDQogICAgew0KICAgICAgLy8gLS0tLS0gUmVzZXQgdGhlIGZvdW5kIGxpc3QNCiAgICAgICR2X2ZvdW5kX2xpc3RbJGldID0gMDsNCg0KICAgIC8vIC0tLS0tIENhbGN1bGF0ZSB0aGUgc3RvcmVkIGZpbGVuYW1lDQogICAgJHZfc3RvcmVkX2xpc3RbJGldID0gJHBfZmlsZV9saXN0WyRpXTsNCiAgICBpZiAoJHBfcmVtb3ZlX2RpciAhPSAiIikNCiAgICB7DQogICAgICBpZiAoc3Vic3RyKCRwX3JlbW92ZV9kaXIsIC0xKSAhPSAnLycpIC8vIEZJWE1FOiBpZiAoc3Vic3RyKCRwX2ZpbGVfbGlzdFskaV0sIC0xKSAhPSAnLycpDQogICAgICAgICRwX3JlbW92ZV9kaXIgLj0gIi8iOw0KDQogICAgICBpZiAoc3Vic3RyKCRwX2ZpbGVfbGlzdFskaV0sIDAsIHN0cmxlbigkcF9yZW1vdmVfZGlyKSkgPT0gJHBfcmVtb3ZlX2RpcikNCiAgICAgIHsNCiAgICAgICAgJHZfc3RvcmVkX2xpc3RbJGldID0gc3Vic3RyKCRwX2ZpbGVfbGlzdFskaV0sIHN0cmxlbigkcF9yZW1vdmVfZGlyKSk7DQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJSZW1vdmUgcGF0aCAnJHBfcmVtb3ZlX2RpcicgaW4gZmlsZSAnJHBfZmlsZV9saXN0WyRpXScgPSAnJHZfc3RvcmVkX2xpc3RbJGldJyIpOw0KICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJHBfYWRkX2RpciAhPSAiIikNCiAgICB7DQogICAgICBpZiAoc3Vic3RyKCRwX2FkZF9kaXIsIC0xKSA9PSAiLyIpDQogICAgICAgICR2X3N0b3JlZF9saXN0WyRpXSA9ICRwX2FkZF9kaXIuJHZfc3RvcmVkX2xpc3RbJGldOw0KICAgICAgZWxzZQ0KICAgICAgICAkdl9zdG9yZWRfbGlzdFskaV0gPSAkcF9hZGRfZGlyLiIvIi4kdl9zdG9yZWRfbGlzdFskaV07DQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiQWRkIHBhdGggJyRwX2FkZF9kaXInIGluIGZpbGUgJyRwX2ZpbGVfbGlzdFskaV0nID0gJyR2X3N0b3JlZF9saXN0WyRpXSciKTsNCiAgICB9DQogICAgJHZfc3RvcmVkX2xpc3RbJGldID0gUGNsVGFySGFuZGxlUGF0aFJlZHVjdGlvbigkdl9zdG9yZWRfbGlzdFskaV0pOw0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIkFmdGVyIHJlZHVjdGlvbiAnJHZfc3RvcmVkX2xpc3RbJGldJyIpOw0KICAgIH0NCg0KDQogICAgLy8gLS0tLS0gVXBkYXRlIGZpbGUgY2FjaGUNCiAgICBjbGVhcnN0YXRjYWNoZSgpOw0KDQogICAgLy8gLS0tLS0gUmVhZCB0aGUgYmxvY2tzDQogICAgV2hpbGUgKCEoJHZfZW5kX29mX2ZpbGUgPSAoJHBfdGFyX21vZGUgPT0gInRhciI/ZmVvZigkdl90YXIpOmd6ZW9mKCR2X3RhcikpKSkNCiAgICB7DQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiTG9va2luZyBmb3IgbmV4dCBoZWFkZXIgLi4uIik7DQoNCiAgICAgIC8vIC0tLS0tIENsZWFyIGNhY2hlIG9mIGZpbGUgaW5mb3MNCiAgICAgIGNsZWFyc3RhdGNhY2hlKCk7DQoNCiAgICAgIC8vIC0tLS0tIFJlc2V0IGN1cnJlbnQgZm91bmQgZmlsZW5hbWUNCiAgICAgICR2X2N1cnJlbnRfZmlsZW5hbWUgPSAiIjsNCg0KICAgICAgLy8gLS0tLS0gUmVzZXQgZGVsZXRlIHRhZw0KICAgICAgJHZfZGVsZXRlX2ZpbGUgPSBGQUxTRTsNCg0KICAgICAgLy8gLS0tLS0gUmVhZCB0aGUgZmlyc3QgNTEyIGJsb2NrIGhlYWRlcg0KICAgICAgaWYgKCRwX3Rhcl9tb2RlID09ICJ0YXIiKQ0KICAgICAgICAkdl9iaW5hcnlfZGF0YSA9IGZyZWFkKCR2X3RhciwgNTEyKTsNCiAgICAgIGVsc2UNCiAgICAgICAgJHZfYmluYXJ5X2RhdGEgPSBnenJlYWQoJHZfdGFyLCA1MTIpOw0KDQogICAgICAvLyAtLS0tLSBSZWFkIHRoZSBoZWFkZXIgcHJvcGVydGllcw0KICAgICAgaWYgKCgkdl9yZXN1bHQgPSBQY2xUYXJIYW5kbGVSZWFkSGVhZGVyKCR2X2JpbmFyeV9kYXRhLCAkdl9oZWFkZXIpKSAhPSAxKQ0KICAgICAgew0KICAgICAgICAvLyAtLS0tLSBDbG9zZSB0aGUgYXJjaGl2ZSBmaWxlDQogICAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgew0KICAgICAgICAgIGZjbG9zZSgkdl90YXIpOw0KICAgICAgICAgIGZjbG9zZSgkdl90ZW1wX3Rhcik7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgZ3pjbG9zZSgkdl90YXIpOw0KICAgICAgICAgIGd6Y2xvc2UoJHZfdGVtcF90YXIpOw0KICAgICAgICB9DQogICAgICAgIEB1bmxpbmsoJHZfdGVtcF90YXJuYW1lKTsNCg0KICAgICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAkdl9yZXN1bHQpOw0KICAgICAgICByZXR1cm4gJHZfcmVzdWx0Ow0KICAgICAgfQ0KDQogICAgICAvLyAtLS0tLSBMb29rIGZvciBlbXB0eSBibG9ja3MgdG8gc2tpcA0KICAgICAgaWYgKCR2X2hlYWRlcltmaWxlbmFtZV0gPT0gIiIpDQogICAgICB7DQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJFbXB0eSBibG9jayBmb3VuZC4gRW5kIG9mIGFyY2hpdmUgPyIpOw0KICAgICAgICBjb250aW51ZTsNCiAgICAgIH0NCg0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkZvdW5kIGZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nLCBzaXplICckdl9oZWFkZXJbc2l6ZV0nIik7DQoNCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGZpbGVuYW1lcyB0byB1cGRhdGUNCiAgICAgIGZvciAoJGk9MCwgJHZfdXBkYXRlX2ZpbGU9RkFMU0UsICR2X2ZvdW5kX2ZpbGU9RkFMU0U7ICgkaTxzaXplb2YoJHZfc3RvcmVkX2xpc3QpKSAmJiAoISR2X3VwZGF0ZV9maWxlKTsgJGkrKykNCiAgICAgIHsNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgNCwgIkNvbXBhcmUgd2l0aCBmaWxlICckdl9zdG9yZWRfbGlzdFskaV0nIik7DQoNCiAgICAgICAgLy8gLS0tLS0gQ29tcGFyZSB0aGUgZmlsZSBuYW1lcw0KICAgICAgICBpZiAoJHZfc3RvcmVkX2xpc3RbJGldID09ICR2X2hlYWRlcltmaWxlbmFtZV0pDQogICAgICAgIHsNCiAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiRmlsZSAnJHZfc3RvcmVkX2xpc3RbJGldJyBpcyBwcmVzZW50IGluIGFyY2hpdmUiKTsNCiAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAzLCAiRmlsZSAnJHZfc3RvcmVkX2xpc3RbJGldJyBtdGltZT0iLmZpbGVtdGltZSgkcF9maWxlX2xpc3RbJGldKS4iICIuZGF0ZSgibCBkUyBvZiBGIFkgaDppOnMgQSIsIGZpbGVtdGltZSgkcF9maWxlX2xpc3RbJGldKSkpOw0KICAgICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJBcmNoaXZlZCBtdGltZT0iLiR2X2hlYWRlclttdGltZV0uIiAiLmRhdGUoImwgZFMgb2YgRiBZIGg6aTpzIEEiLCAkdl9oZWFkZXJbbXRpbWVdKSk7DQoNCiAgICAgICAgICAvLyAtLS0tLSBTdG9yZSBmb3VuZCBpbmZvcm1hdGlvbnMNCiAgICAgICAgICAkdl9mb3VuZF9maWxlID0gVFJVRTsNCiAgICAgICAgICAkdl9jdXJyZW50X2ZpbGVuYW1lID0gJHBfZmlsZV9saXN0WyRpXTsNCg0KICAgICAgICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlIGZpbGUgbmVlZCB0byBiZSB1cGRhdGVkDQogICAgICAgICAgaWYgKGZpbGVtdGltZSgkcF9maWxlX2xpc3RbJGldKSA+ICR2X2hlYWRlclttdGltZV0pDQogICAgICAgICAgew0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIkZpbGUgJyRwX2ZpbGVfbGlzdFskaV0nIG5lZWQgdG8gYmUgdXBkYXRlZCIpOw0KICAgICAgICAgICAgJHZfdXBkYXRlX2ZpbGUgPSBUUlVFOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlDQogICAgICAgICAgew0KICAgICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIkZpbGUgJyRwX2ZpbGVfbGlzdFskaV0nIGRvZXMgbm90IG5lZWQgdG8gYmUgdXBkYXRlZCIpOw0KICAgICAgICAgICAgJHZfdXBkYXRlX2ZpbGUgPSBGQUxTRTsNCiAgICAgICAgICB9DQoNCiAgICAgICAgICAvLyAtLS0tLSBGbGFnIHRoZSBuYW1lIGluIG9yZGVyIG5vdCB0byBhZGQgdGhlIGZpbGUgYXQgdGhlIGVuZA0KICAgICAgICAgICR2X2ZvdW5kX2xpc3RbJGldID0gMTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCA0LCAiRmlsZSAnJHBfZmlsZV9saXN0WyRpXScgaXMgbm90ICckdl9oZWFkZXJbZmlsZW5hbWVdJyIpOw0KICAgICAgICB9DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIENvcHkgZmlsZXMgdGhhdCBkbyBub3QgbmVlZCB0byBiZSB1cGRhdGVkDQogICAgICBpZiAoISR2X3VwZGF0ZV9maWxlKQ0KICAgICAgew0KICAgICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiS2VlcCBmaWxlICckdl9oZWFkZXJbZmlsZW5hbWVdJyIpOw0KDQogICAgICAgIC8vIC0tLS0tIFdyaXRlIHRoZSBmaWxlIGhlYWRlcg0KICAgICAgICBpZiAoJHBfdGFyX21vZGUgPT0gInRhciIpDQogICAgICAgIHsNCiAgICAgICAgICBmcHV0cygkdl90ZW1wX3RhciwgJHZfYmluYXJ5X2RhdGEsIDUxMik7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgZ3pwdXRzKCR2X3RlbXBfdGFyLCAkdl9iaW5hcnlfZGF0YSwgNTEyKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIC0tLS0tIFdyaXRlIHRoZSBmaWxlIGRhdGENCiAgICAgICAgJG4gPSBjZWlsKCR2X2hlYWRlcltzaXplXS81MTIpOw0KICAgICAgICBmb3IgKCRqPTA7ICRqPCRuOyAkaisrKQ0KICAgICAgICB7DQogICAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIlJlYWQgY29tcGxldGUgNTEyIGJ5dGVzIGJsb2NrIG51bWJlciAiLigkaisxKSk7DQogICAgICAgICAgaWYgKCRwX3Rhcl9tb2RlID09ICJ0YXIiKQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgICR2X2NvbnRlbnQgPSBmcmVhZCgkdl90YXIsIDUxMik7DQogICAgICAgICAgICBmd3JpdGUoJHZfdGVtcF90YXIsICR2X2NvbnRlbnQsIDUxMik7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICB7DQogICAgICAgICAgICAkdl9jb250ZW50ID0gZ3pyZWFkKCR2X3RhciwgNTEyKTsNCiAgICAgICAgICAgIGd6d3JpdGUoJHZfdGVtcF90YXIsICR2X2NvbnRlbnQsIDUxMik7DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gLS0tLS0gRmlsZSBuYW1lIGFuZCBwcm9wZXJ0aWVzIGFyZSBsb2dnZWQgaWYgbGlzdGluZyBtb2RlIG9yIGZpbGUgaXMgZXh0cmFjdGVkDQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJNZW1vcml6ZSBpbmZvIGFib3V0IGZpbGUgJyR2X2hlYWRlcltmaWxlbmFtZV0nIik7DQoNCiAgICAgICAgLy8gLS0tLS0gQWRkIHRoZSBhcnJheSBkZXNjcmliaW5nIHRoZSBmaWxlIGludG8gdGhlIGxpc3QNCiAgICAgICAgJHBfbGlzdF9kZXRhaWxbJHZfbmJdID0gJHZfaGVhZGVyOw0KICAgICAgICAkcF9saXN0X2RldGFpbFskdl9uYl1bc3RhdHVzXSA9ICgkdl9mb3VuZF9maWxlPyJub3RfdXBkYXRlZCI6Im9rIik7DQoNCiAgICAgICAgLy8gLS0tLS0gSW5jcmVtZW50DQogICAgICAgICR2X25iKys7DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGZpbGUgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQNCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICAgLy8gLS0tLS0gVHJhY2UNCiAgICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIlN0YXJ0IHVwZGF0ZSBvZiBmaWxlICckdl9jdXJyZW50X2ZpbGVuYW1lJyIpOw0KDQogICAgICAgIC8vIC0tLS0tIFN0b3JlIHRoZSBvbGQgZmlsZSBzaXplDQogICAgICAgICR2X29sZF9zaXplID0gJHZfaGVhZGVyW3NpemVdOw0KDQogICAgICAgIC8vIC0tLS0tIEFkZCB0aGUgZmlsZQ0KICAgICAgICBpZiAoKCR2X3Jlc3VsdCA9IFBjbFRhckhhbmRsZUFkZEZpbGUoJHZfdGVtcF90YXIsICR2X2N1cnJlbnRfZmlsZW5hbWUsICRwX3Rhcl9tb2RlLCAkdl9oZWFkZXIsICRwX2FkZF9kaXIsICRwX3JlbW92ZV9kaXIpKSAhPSAxKQ0KICAgICAgICB7DQogICAgICAgICAgLy8gLS0tLS0gQ2xvc2UgdGhlIHRhcmZpbGUNCiAgICAgICAgICBpZiAoJHBfdGFyX21vZGUgPT0gInRhciIpDQogICAgICAgICAgew0KICAgICAgICAgICAgZmNsb3NlKCR2X3Rhcik7DQogICAgICAgICAgICBmY2xvc2UoJHZfdGVtcF90YXIpOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlDQogICAgICAgICAgew0KICAgICAgICAgICAgZ3pjbG9zZSgkdl90YXIpOw0KICAgICAgICAgICAgZ3pjbG9zZSgkdl90ZW1wX3Rhcik7DQogICAgICAgICAgfQ0KICAgICAgICAgIEB1bmxpbmsoJHBfdGVtcF90YXJuYW1lKTsNCg0KICAgICAgICAgIC8vIC0tLS0tIFJldHVybiBzdGF0dXMNCiAgICAgICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCk7DQogICAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIC0tLS0tIFRyYWNlDQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJTa2lwIG9sZCBmaWxlICckdl9oZWFkZXJbZmlsZW5hbWVdJyIpOw0KDQogICAgICAgIC8vIC0tLS0tIEp1bXAgdG8gbmV4dCBmaWxlDQogICAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgICBmc2Vlaygkdl90YXIsIGZ0ZWxsKCR2X3RhcikrKGNlaWwoKCR2X29sZF9zaXplLzUxMikpKjUxMikpOw0KICAgICAgICBlbHNlDQogICAgICAgICAgZ3pzZWVrKCR2X3RhciwgZ3p0ZWxsKCR2X3RhcikrKGNlaWwoKCR2X29sZF9zaXplLzUxMikpKjUxMikpOw0KDQogICAgICAgIC8vIC0tLS0tIEFkZCB0aGUgYXJyYXkgZGVzY3JpYmluZyB0aGUgZmlsZSBpbnRvIHRoZSBsaXN0DQogICAgICAgICRwX2xpc3RfZGV0YWlsWyR2X25iXSA9ICR2X2hlYWRlcjsNCiAgICAgICAgJHBfbGlzdF9kZXRhaWxbJHZfbmJdW3N0YXR1c10gPSAidXBkYXRlZCI7DQoNCiAgICAgICAgLy8gLS0tLS0gSW5jcmVtZW50DQogICAgICAgICR2X25iKys7DQogICAgICB9DQoNCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGVuZCBvZiBmaWxlDQogICAgICBpZiAoJHBfdGFyX21vZGUgPT0gInRhciIpDQogICAgICAgICR2X2VuZF9vZl9maWxlID0gZmVvZigkdl90YXIpOw0KICAgICAgZWxzZQ0KICAgICAgICAkdl9lbmRfb2ZfZmlsZSA9IGd6ZW9mKCR2X3Rhcik7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gTG9vayBmb3IgZmlsZXMgdGhhdCBkb2VzIG5vdCBleGlzdHMgaW4gdGhlIGFyY2hpdmUgYW5kIG5lZWQgdG8gYmUgYWRkZWQNCiAgICBmb3IgKCRpPTA7ICRpPHNpemVvZigkcF9maWxlX2xpc3QpOyAkaSsrKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIExvb2sgaWYgZmlsZSBub3QgZm91bmQgaW4gdGhlIGFyY2hpdmUNCiAgICAgIGlmICghJHZfZm91bmRfbGlzdFskaV0pDQogICAgICB7DQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJGaWxlICckcF9maWxlX2xpc3RbJGldJyBuZWVkIHRvIGJlIGFkZGVkIik7DQoNCiAgICAgICAgLy8gLS0tLS0gQWRkIHRoZSBmaWxlDQogICAgICAgIGlmICgoJHZfcmVzdWx0ID0gUGNsVGFySGFuZGxlQWRkRmlsZSgkdl90ZW1wX3RhciwgJHBfZmlsZV9saXN0WyRpXSwgJHBfdGFyX21vZGUsICR2X2hlYWRlciwgJHBfYWRkX2RpciwgJHBfcmVtb3ZlX2RpcikpICE9IDEpDQogICAgICAgIHsNCiAgICAgICAgICAvLyAtLS0tLSBDbG9zZSB0aGUgdGFyZmlsZQ0KICAgICAgICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICAgICB7DQogICAgICAgICAgICBmY2xvc2UoJHZfdGFyKTsNCiAgICAgICAgICAgIGZjbG9zZSgkdl90ZW1wX3Rhcik7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2UNCiAgICAgICAgICB7DQogICAgICAgICAgICBnemNsb3NlKCR2X3Rhcik7DQogICAgICAgICAgICBnemNsb3NlKCR2X3RlbXBfdGFyKTsNCiAgICAgICAgICB9DQogICAgICAgICAgQHVubGluaygkcF90ZW1wX3Rhcm5hbWUpOw0KDQogICAgICAgICAgLy8gLS0tLS0gUmV0dXJuIHN0YXR1cw0KICAgICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHZfcmVzdWx0KTsNCiAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0Ow0KICAgICAgICB9DQoNCiAgICAgICAgLy8gLS0tLS0gQWRkIHRoZSBhcnJheSBkZXNjcmliaW5nIHRoZSBmaWxlIGludG8gdGhlIGxpc3QNCiAgICAgICAgJHBfbGlzdF9kZXRhaWxbJHZfbmJdID0gJHZfaGVhZGVyOw0KICAgICAgICAkcF9saXN0X2RldGFpbFskdl9uYl1bc3RhdHVzXSA9ICJhZGRlZCI7DQoNCiAgICAgICAgLy8gLS0tLS0gSW5jcmVtZW50DQogICAgICAgICR2X25iKys7DQogICAgICB9DQogICAgICBlbHNlDQogICAgICB7DQogICAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJGaWxlICckcF9maWxlX2xpc3RbJGldJyB3YXMgYWxyZWFkeSB1cGRhdGVkIGlmIG5lZWRlZCIpOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIC0tLS0tIFdyaXRlIHRoZSBsYXN0IGVtcHR5IGJ1ZmZlcg0KICAgIFBjbFRhckhhbmRsZUZvb3Rlcigkdl90ZW1wX3RhciwgJHBfdGFyX21vZGUpOw0KDQogICAgLy8gLS0tLS0gQ2xvc2UgdGhlIHRhcmZpbGUNCiAgICBpZiAoJHBfdGFyX21vZGUgPT0gInRhciIpDQogICAgew0KICAgICAgZmNsb3NlKCR2X3Rhcik7DQogICAgICBmY2xvc2UoJHZfdGVtcF90YXIpOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAgZ3pjbG9zZSgkdl90YXIpOw0KICAgICAgZ3pjbG9zZSgkdl90ZW1wX3Rhcik7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gVW5saW5rIHRhciBmaWxlDQogICAgaWYgKCFAdW5saW5rKCRwX3Rhcm5hbWUpKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIEVycm9yIGxvZw0KICAgICAgUGNsRXJyb3JMb2coLTExLCAiRXJyb3Igd2hpbGUgZGVsZXRpbmcgYXJjaGl2ZSBuYW1lICRwX3Rhcm5hbWUiKTsNCiAgICB9DQoNCg0KICAgIC8vIC0tLS0tIFJlbmFtZSB0YXIgZmlsZQ0KICAgIGlmICghQHJlbmFtZSgkdl90ZW1wX3Rhcm5hbWUsICRwX3Rhcm5hbWUpKQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIEVycm9yIGxvZw0KICAgICAgUGNsRXJyb3JMb2coLTEyLCAiRXJyb3Igd2hpbGUgcmVuYW1pbmcgdGVtcG9yYXJ5IGZpbGUgJHZfdGVtcF90YXJuYW1lIHRvIGFyY2hpdmUgbmFtZSAkcF90YXJuYW1lIik7DQoNCiAgICAgIC8vIC0tLS0tIFJldHVybg0KICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCBQY2xFcnJvckNvZGUoKSwgUGNsRXJyb3JTdHJpbmcoKSk7DQogICAgICByZXR1cm4gUGNsRXJyb3JDb2RlKCk7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gUmV0dXJuDQogICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAkdl9yZXN1bHQpOw0KICAgIHJldHVybiAkdl9yZXN1bHQ7DQogIH0NCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAvLyBGdW5jdGlvbiA6IFBjbFRhckhhbmRsZVJlYWRIZWFkZXIoKQ0KICAvLyBEZXNjcmlwdGlvbiA6DQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyBSZXR1cm4gVmFsdWVzIDoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gUGNsVGFySGFuZGxlUmVhZEhlYWRlcigkdl9iaW5hcnlfZGF0YSwgJiR2X2hlYWRlcikNCiAgew0KICAgIFRyRmN0U3RhcnQoX19GSUxFX18sIF9fTElORV9fLCAiUGNsVGFySGFuZGxlUmVhZEhlYWRlciIsICIiKTsNCiAgICAkdl9yZXN1bHQ9MTsNCg0KICAgIC8vIC0tLS0tIFJlYWQgdGhlIDUxMiBieXRlcyBoZWFkZXINCiAgICAvKg0KICAgIGlmICgkcF90YXJfbW9kZSA9PSAidGFyIikNCiAgICAgICR2X2JpbmFyeV9kYXRhID0gZnJlYWQoJHBfdGFyLCA1MTIpOw0KICAgIGVsc2UNCiAgICAgICR2X2JpbmFyeV9kYXRhID0gZ3pyZWFkKCRwX3RhciwgNTEyKTsNCiAgICAqLw0KDQogICAgLy8gLS0tLS0gTG9vayBmb3Igbm8gbW9yZSBibG9jaw0KICAgIGlmIChzdHJsZW4oJHZfYmluYXJ5X2RhdGEpPT0wKQ0KICAgIHsNCiAgICAgICR2X2hlYWRlcltmaWxlbmFtZV0gPSAiIjsNCiAgICAgICR2X2hlYWRlcltzdGF0dXNdID0gImVtcHR5IjsNCg0KICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCwgIkVuZCBvZiBhcmNoaXZlIGZvdW5kIik7DQogICAgICByZXR1cm4gJHZfcmVzdWx0Ow0KICAgIH0NCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIGludmFsaWQgYmxvY2sgc2l6ZQ0KICAgIGlmIChzdHJsZW4oJHZfYmluYXJ5X2RhdGEpICE9IDUxMikNCiAgICB7DQogICAgICAkdl9oZWFkZXJbZmlsZW5hbWVdID0gIiI7DQogICAgICAkdl9oZWFkZXJbc3RhdHVzXSA9ICJpbnZhbGlkX2hlYWRlciI7DQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiSW52YWxpZCBibG9jayBzaXplIDogIi5zdHJsZW4oJHZfYmluYXJ5X2RhdGEpKTsNCg0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBQY2xFcnJvckxvZygtMTAsICJJbnZhbGlkIGJsb2NrIHNpemUgOiAiLnN0cmxlbigkdl9iaW5hcnlfZGF0YSkpOw0KDQogICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgIH0NCg0KICAgIC8vIC0tLS0tIENhbGN1bGF0ZSB0aGUgY2hlY2tzdW0NCiAgICAkdl9jaGVja3N1bSA9IDA7DQogICAgLy8gLi4uLi4gRmlyc3QgcGFydCBvZiB0aGUgaGVhZGVyDQogICAgZm9yICgkaT0wOyAkaTwxNDg7ICRpKyspDQogICAgew0KICAgICAgJHZfY2hlY2tzdW0rPW9yZChzdWJzdHIoJHZfYmluYXJ5X2RhdGEsJGksMSkpOw0KICAgIH0NCiAgICAvLyAuLi4uLiBJZ25vcmUgdGhlIGNoZWNrc3VtIHZhbHVlIGFuZCByZXBsYWNlIGl0IGJ5ICcgJyAoc3BhY2UpDQogICAgZm9yICgkaT0xNDg7ICRpPDE1NjsgJGkrKykNCiAgICB7DQogICAgICAkdl9jaGVja3N1bSArPSBvcmQoJyAnKTsNCiAgICB9DQogICAgLy8gLi4uLi4gTGFzdCBwYXJ0IG9mIHRoZSBoZWFkZXINCiAgICBmb3IgKCRpPTE1NjsgJGk8NTEyOyAkaSsrKQ0KICAgIHsNCiAgICAgICR2X2NoZWNrc3VtKz1vcmQoc3Vic3RyKCR2X2JpbmFyeV9kYXRhLCRpLDEpKTsNCiAgICB9DQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIkNhbGN1bGF0ZWQgY2hlY2tzdW0gOiAkdl9jaGVja3N1bSIpOw0KDQogICAgLy8gLS0tLS0gRXh0cmFjdCB0aGUgdmFsdWVzDQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkhlYWRlciA6ICckdl9iaW5hcnlfZGF0YSciKTsNCiAgICAkdl9kYXRhID0gdW5wYWNrKCJhMTAwZmlsZW5hbWUvYThtb2RlL2E4dWlkL2E4Z2lkL2ExMnNpemUvYTEybXRpbWUvYThjaGVja3N1bS9hMXR5cGVmbGFnL2ExMDBsaW5rL2E2bWFnaWMvYTJ2ZXJzaW9uL2EzMnVuYW1lL2EzMmduYW1lL2E4ZGV2bWFqb3IvYThkZXZtaW5vciIsICR2X2JpbmFyeV9kYXRhKTsNCg0KICAgIC8vIC0tLS0tIEV4dHJhY3QgdGhlIGNoZWNrc3VtIGZvciBjaGVjaw0KICAgICR2X2hlYWRlcltjaGVja3N1bV0gPSBPY3REZWModHJpbSgkdl9kYXRhW2NoZWNrc3VtXSkpOw0KICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJGaWxlIGNoZWNrc3VtIDogJHZfaGVhZGVyW2NoZWNrc3VtXSIpOw0KICAgIGlmICgkdl9oZWFkZXJbY2hlY2tzdW1dICE9ICR2X2NoZWNrc3VtKQ0KICAgIHsNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJGaWxlIGNoZWNrc3VtIGlzIGludmFsaWQgOiAkdl9jaGVja3N1bSBjYWxjdWxhdGVkLCAkdl9oZWFkZXJbY2hlY2tzdW1dIGV4cGVjdGVkIik7DQoNCiAgICAgICR2X2hlYWRlcltmaWxlbmFtZV0gPSAiIjsNCiAgICAgICR2X2hlYWRlcltzdGF0dXNdID0gImludmFsaWRfaGVhZGVyIjsNCg0KICAgICAgLy8gLS0tLS0gTG9vayBmb3IgbGFzdCBibG9jayAoZW1wdHkgYmxvY2spDQogICAgICBpZiAoKCR2X2NoZWNrc3VtID09IDI1NikgJiYgKCR2X2hlYWRlcltjaGVja3N1bV0gPT0gMCkpDQogICAgICB7DQogICAgICAgICR2X2hlYWRlcltzdGF0dXNdID0gImVtcHR5IjsNCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHZfcmVzdWx0LCAiRW5kIG9mIGFyY2hpdmUgZm91bmQiKTsNCiAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgICAgIH0NCg0KICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nDQogICAgICBQY2xFcnJvckxvZygtMTMsICJJbnZhbGlkIGNoZWNrc3VtIDogJHZfY2hlY2tzdW0gY2FsY3VsYXRlZCwgJHZfaGVhZGVyW2NoZWNrc3VtXSBleHBlY3RlZCIpOw0KDQogICAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgUGNsRXJyb3JDb2RlKCksIFBjbEVycm9yU3RyaW5nKCkpOw0KICAgICAgcmV0dXJuIFBjbEVycm9yQ29kZSgpOw0KICAgIH0NCiAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiRmlsZSBjaGVja3N1bSBpcyB2YWxpZCAoJHZfY2hlY2tzdW0pIik7DQoNCiAgICAvLyAtLS0tLSBFeHRyYWN0IHRoZSBwcm9wZXJ0aWVzDQogICAgJHZfaGVhZGVyW2ZpbGVuYW1lXSA9IHRyaW0oJHZfZGF0YVtmaWxlbmFtZV0pOw0KICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJOYW1lIDogJyR2X2hlYWRlcltmaWxlbmFtZV0nIik7DQogICAgJHZfaGVhZGVyW21vZGVdID0gT2N0RGVjKHRyaW0oJHZfZGF0YVttb2RlXSkpOw0KICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJNb2RlIDogJyIuRGVjT2N0KCR2X2hlYWRlclttb2RlXSkuIiciKTsNCiAgICAkdl9oZWFkZXJbdWlkXSA9IE9jdERlYyh0cmltKCR2X2RhdGFbdWlkXSkpOw0KICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJVaWQgOiAnJHZfaGVhZGVyW3VpZF0nIik7DQogICAgJHZfaGVhZGVyW2dpZF0gPSBPY3REZWModHJpbSgkdl9kYXRhW2dpZF0pKTsNCiAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiR2lkIDogJyR2X2hlYWRlcltnaWRdJyIpOw0KICAgICR2X2hlYWRlcltzaXplXSA9IE9jdERlYyh0cmltKCR2X2RhdGFbc2l6ZV0pKTsNCiAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiU2l6ZSA6ICckdl9oZWFkZXJbc2l6ZV0nIik7DQogICAgJHZfaGVhZGVyW210aW1lXSA9IE9jdERlYyh0cmltKCR2X2RhdGFbbXRpbWVdKSk7DQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkRhdGUgOiAiLmRhdGUoImwgZFMgb2YgRiBZIGg6aTpzIEEiLCAkdl9oZWFkZXJbbXRpbWVdKSk7DQogICAgaWYgKCgkdl9oZWFkZXJbdHlwZWZsYWddID0gJHZfZGF0YVt0eXBlZmxhZ10pID09ICI1IikNCiAgICB7DQogICAgICAkdl9oZWFkZXJbc2l6ZV0gPSAwOw0KICAgICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIlNpemUgKGZvbGRlcikgOiAnJHZfaGVhZGVyW3NpemVdJyIpOw0KICAgIH0NCiAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiRmlsZSB0eXBlZmxhZyA6ICR2X2hlYWRlclt0eXBlZmxhZ10iKTsNCiAgICAvKiAtLS0tLSBBbGwgdGhlc2UgZmllbGRzIGFyZSByZW1vdmVkIGZvcm0gdGhlIGhlYWRlciBiZWNhdXNlIHRoZXkgZG8gbm90IGNhcnJ5IGludGVyZXN0aW5nIGluZm8NCiAgICAkdl9oZWFkZXJbbGlua10gPSB0cmltKCR2X2RhdGFbbGlua10pOw0KICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJMaW5rbmFtZSA6ICR2X2hlYWRlcltsaW5rbmFtZV0iKTsNCiAgICAkdl9oZWFkZXJbbWFnaWNdID0gdHJpbSgkdl9kYXRhW21hZ2ljXSk7DQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIk1hZ2ljIDogJHZfaGVhZGVyW21hZ2ljXSIpOw0KICAgICR2X2hlYWRlclt2ZXJzaW9uXSA9IHRyaW0oJHZfZGF0YVt2ZXJzaW9uXSk7DQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIlZlcnNpb24gOiAkdl9oZWFkZXJbdmVyc2lvbl0iKTsNCiAgICAkdl9oZWFkZXJbdW5hbWVdID0gdHJpbSgkdl9kYXRhW3VuYW1lXSk7DQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIlVuYW1lIDogJHZfaGVhZGVyW3VuYW1lXSIpOw0KICAgICR2X2hlYWRlcltnbmFtZV0gPSB0cmltKCR2X2RhdGFbZ25hbWVdKTsNCiAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiR25hbWUgOiAkdl9oZWFkZXJbZ25hbWVdIik7DQogICAgJHZfaGVhZGVyW2Rldm1ham9yXSA9IHRyaW0oJHZfZGF0YVtkZXZtYWpvcl0pOw0KICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDIsICJEZXZtYWpvciA6ICR2X2hlYWRlcltkZXZtYWpvcl0iKTsNCiAgICAkdl9oZWFkZXJbZGV2bWlub3JdID0gdHJpbSgkdl9kYXRhW2Rldm1pbm9yXSk7DQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMiwgIkRldm1pbm9yIDogJHZfaGVhZGVyW2Rldm1pbm9yXSIpOw0KICAgICovDQoNCiAgICAvLyAtLS0tLSBTZXQgdGhlIHN0YXR1cyBmaWVsZA0KICAgICR2X2hlYWRlcltzdGF0dXNdID0gIm9rIjsNCg0KICAgIC8vIC0tLS0tIFJldHVybg0KICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgJHZfcmVzdWx0KTsNCiAgICByZXR1cm4gJHZfcmVzdWx0Ow0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBQY2xUYXJIYW5kbGVyRGlyQ2hlY2soKQ0KICAvLyBEZXNjcmlwdGlvbiA6DQogIC8vICAgQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzLCBpZiBub3QgaXQgY3JlYXRlcyBpdCBhbmQgYWxsIHRoZSBwYXJlbnRzIGRpcmVjdG9yeQ0KICAvLyAgIHdoaWNoIG1heSBiZSB1c2VmdWwuDQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAgICRwX2RpciA6IERpcmVjdG9yeSBwYXRoIHRvIGNoZWNrICh3aXRob3V0IC8gYXQgdGhlIGVuZCkuDQogIC8vIFJldHVybiBWYWx1ZXMgOg0KICAvLyAgICAxIDogT0sNCiAgLy8gICAtMSA6IFVuYWJsZSB0byBjcmVhdGUgZGlyZWN0b3J5DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbFRhckhhbmRsZXJEaXJDaGVjaygkcF9kaXIpDQogIHsNCiAgICAkdl9yZXN1bHQgPSAxOw0KDQogICAgVHJGY3RTdGFydChfX0ZJTEVfXywgX19MSU5FX18sICJQY2xUYXJIYW5kbGVyRGlyQ2hlY2siLCAiJHBfZGlyIik7DQoNCiAgICAvLyAtLS0tLSBDaGVjayB0aGUgZGlyZWN0b3J5IGF2YWlsYWJpbGl0eQ0KICAgIGlmICgoaXNfZGlyKCRwX2RpcikpIHx8ICgkcF9kaXIgPT0gIiIpKQ0KICAgIHsNCiAgICAgIFRyRmN0RW5kKF9fRklMRV9fLCBfX0xJTkVfXywgIickcF9kaXInIGlzIGEgZGlyZWN0b3J5Iik7DQogICAgICByZXR1cm4gMTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBMb29rIGZvciBmaWxlIGFsb25lDQogICAgLyoNCiAgICBpZiAoIXN0cnN0cigiJHBfZGlyIiwgIi8iKSkNCiAgICB7DQogICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICAiJyRwX2RpcicgaXMgYSBmaWxlIHdpdGggbm8gZGlyZWN0b3J5Iik7DQogICAgICByZXR1cm4gMTsNCiAgICB9DQogICAgKi8NCg0KICAgIC8vIC0tLS0tIEV4dHJhY3QgcGFyZW50IGRpcmVjdG9yeQ0KICAgICRwX3BhcmVudF9kaXIgPSBkaXJuYW1lKCRwX2Rpcik7DQogICAgVHJGY3RNZXNzYWdlKF9fRklMRV9fLCBfX0xJTkVfXywgMywgIlBhcmVudCBkaXJlY3RvcnkgaXMgJyRwX3BhcmVudF9kaXInIik7DQoNCiAgICAvLyAtLS0tLSBKdXN0IGEgY2hlY2sNCiAgICBpZiAoJHBfcGFyZW50X2RpciAhPSAkcF9kaXIpDQogICAgew0KICAgICAgLy8gLS0tLS0gTG9vayBmb3IgcGFyZW50IGRpcmVjdG9yeQ0KICAgICAgaWYgKCRwX3BhcmVudF9kaXIgIT0gIiIpDQogICAgICB7DQogICAgICAgIGlmICgoJHZfcmVzdWx0ID0gUGNsVGFySGFuZGxlckRpckNoZWNrKCRwX3BhcmVudF9kaXIpKSAhPSAxKQ0KICAgICAgICB7DQogICAgICAgICAgVHJGY3RFbmQoX19GSUxFX18sIF9fTElORV9fLCAkdl9yZXN1bHQpOw0KICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQoNCiAgICAvLyAtLS0tLSBDcmVhdGUgdGhlIGRpcmVjdG9yeQ0KICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIDMsICJDcmVhdGUgZGlyZWN0b3J5ICckcF9kaXInIik7DQogICAgaWYgKCFAbWtkaXIoJHBfZGlyLCAwNzc3KSkNCiAgICB7DQogICAgICAvLyAtLS0tLSBFcnJvciBsb2cNCiAgICAgIFBjbEVycm9yTG9nKC04LCAiVW5hYmxlIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJyRwX2RpciciKTsNCg0KICAgICAgLy8gLS0tLS0gUmV0dXJuDQogICAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCiAgICAgIHJldHVybiBQY2xFcnJvckNvZGUoKTsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCwgIkRpcmVjdG9yeSAnJHBfZGlyJyBjcmVhdGVkIik7DQogICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFySGFuZGxlRXh0ZW5zaW9uKCkNCiAgLy8gRGVzY3JpcHRpb24gOg0KICAvLyBQYXJhbWV0ZXJzIDoNCiAgLy8gUmV0dXJuIFZhbHVlcyA6DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbFRhckhhbmRsZUV4dGVuc2lvbigkcF90YXJuYW1lKQ0KICB7DQogICAgVHJGY3RTdGFydChfX0ZJTEVfXywgX19MSU5FX18sICJQY2xUYXJIYW5kbGVFeHRlbnNpb24iLCAidGFyPSRwX3Rhcm5hbWUiKTsNCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIGZpbGUgZXh0ZW5zaW9uDQogICAgaWYgKChzdWJzdHIoJHBfdGFybmFtZSwgLTcpID09ICIudGFyLmd6IikgfHwgKHN1YnN0cigkcF90YXJuYW1lLCAtNCkgPT0gIi50Z3oiKSkNCiAgICB7DQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiQXJjaGl2ZSBpcyBhIGd6aXAgdGFyIik7DQogICAgICAkdl90YXJfbW9kZSA9ICJ0Z3oiOw0KICAgIH0NCiAgICBlbHNlIGlmIChzdWJzdHIoJHBfdGFybmFtZSwgLTQpID09ICIudGFyIikNCiAgICB7DQogICAgICBUckZjdE1lc3NhZ2UoX19GSUxFX18sIF9fTElORV9fLCAyLCAiQXJjaGl2ZSBpcyBhIHRhciIpOw0KICAgICAgJHZfdGFyX21vZGUgPSAidGFyIjsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgIC8vIC0tLS0tIEVycm9yIGxvZw0KICAgICAgUGNsRXJyb3JMb2coLTksICJJbnZhbGlkIGFyY2hpdmUgZXh0ZW5zaW9uIik7DQoNCiAgICAgIFRyRmN0TWVzc2FnZShfX0ZJTEVfXywgX19MSU5FX18sIFBjbEVycm9yQ29kZSgpLCBQY2xFcnJvclN0cmluZygpKTsNCg0KICAgICAgJHZfdGFyX21vZGUgPSAiIjsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Rhcl9tb2RlKTsNCiAgICByZXR1cm4gJHZfdGFyX21vZGU7DQogIH0NCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogUGNsVGFySGFuZGxlUGF0aFJlZHVjdGlvbigpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gUGFyYW1ldGVycyA6DQogIC8vIFJldHVybiBWYWx1ZXMgOg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICBmdW5jdGlvbiBQY2xUYXJIYW5kbGVQYXRoUmVkdWN0aW9uKCRwX2RpcikNCiAgew0KICAgIFRyRmN0U3RhcnQoX19GSUxFX18sIF9fTElORV9fLCAiUGNsVGFySGFuZGxlUGF0aFJlZHVjdGlvbiIsICJkaXI9JyRwX2RpciciKTsNCiAgICAkdl9yZXN1bHQgPSAiIjsNCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIG5vdCBlbXB0eSBwYXRoDQogICAgaWYgKCRwX2RpciAhPSAiIikNCiAgICB7DQogICAgICAvLyAtLS0tLSBFeHBsb2RlIHBhdGggYnkgZGlyZWN0b3J5IG5hbWVzDQogICAgICAkdl9saXN0ID0gZXhwbG9kZSgiLyIsICRwX2Rpcik7DQoNCiAgICAgIC8vIC0tLS0tIFN0dWR5IGRpcmVjdG9yaWVzIGZyb20gbGFzdCB0byBmaXJzdA0KICAgICAgZm9yICgkaT1zaXplb2YoJHZfbGlzdCktMTsgJGk+PTA7ICRpLS0pDQogICAgICB7DQogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGN1cnJlbnQgcGF0aA0KICAgICAgICBpZiAoJHZfbGlzdFskaV0gPT0gIi4iKQ0KICAgICAgICB7DQogICAgICAgICAgLy8gLS0tLS0gSWdub3JlIHRoaXMgZGlyZWN0b3J5DQogICAgICAgICAgLy8gU2hvdWxkIGJlIHRoZSBmaXJzdCAkaT0wLCBidXQgbm8gY2hlY2sgaXMgZG9uZQ0KICAgICAgICB9DQogICAgICAgIGVsc2UgaWYgKCR2X2xpc3RbJGldID09ICIuLiIpDQogICAgICAgIHsNCiAgICAgICAgICAvLyAtLS0tLSBJZ25vcmUgaXQgYW5kIGlnbm9yZSB0aGUgJGktMQ0KICAgICAgICAgICRpLS07DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZiAoKCR2X2xpc3RbJGldID09ICIiKSAmJiAoJGkhPShzaXplb2YoJHZfbGlzdCktMSkpICYmICgkaSE9MCkpDQogICAgICAgIHsNCiAgICAgICAgICAvLyAtLS0tLSBJZ25vcmUgb25seSB0aGUgZG91YmxlICcvLycgaW4gcGF0aCwNCiAgICAgICAgICAvLyBidXQgbm90IHRoZSBmaXJzdCBhbmQgbGFzdCAnLycNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAkdl9yZXN1bHQgPSAkdl9saXN0WyRpXS4oJGkhPShzaXplb2YoJHZfbGlzdCktMSk/Ii8iLiR2X3Jlc3VsdDoiIik7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQoNCiAgICAvLyAtLS0tLSBSZXR1cm4NCiAgICBUckZjdEVuZChfX0ZJTEVfXywgX19MSU5FX18sICR2X3Jlc3VsdCk7DQogICAgcmV0dXJuICR2X3Jlc3VsdDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCi8vIC0tLS0tIEVuZCBvZiBkb3VibGUgaW5jbHVkZSBsb29rDQp9DQo/Pg== ====== r4_api.php ====== PD9waHAKCiAgICAkcjRfZXJyb3JfcmVwb3J0aW5nID0gZXJyb3JfcmVwb3J0aW5nKDApOwoKICAgICRyNF9jZmdfcm9vdCA9IGRpcm5hbWUoX19GSUxFX18pOwogICAgJHI0X2NmZ19yb290IC49ICcvJzsKICAgICRyNF9jZmdfcm9vdCA9IHByZWdfcmVwbGFjZSgnfChbL10rKXxpcycsICcvJywgJHI0X2NmZ19yb290KTsKCiAgICBpbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cjRfdmFycy5waHAiKTsKICAgIGluY2x1ZGVfb25jZSgieyRyNF9jZmdfcm9vdH1yNF9saWJzLnBocCIpOwoKICAgICRyZXN1bHQgPSBhcnJheSgpOwoKICAgIC8vINCf0YDQvtCy0LXRgNC60LAg0LrQu9GO0YfQsCDQtNC70Y8g0LTQvtGB0YLRg9C/0LAg0LogQVBJLgogICAgaWYgKCFlbXB0eSgkX0dFVFsnYXBpa2V5J10pKSB7CiAgICAgICAgaWYgKG1kNSgncjRhcGlrZXknKSAhPT0gJF9HRVRbJ2FwaWtleSddKSB7CiAgICAgICAgICAgIHI0X2ZhaWwoJHJlc3VsdCwgJ0FwaUtleSBpcyBpbnZhbGlkJyk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgcjRfZmFpbCgkcmVzdWx0LCAnQXBpS2V5IHJlcXVpcmVkJyk7CiAgICB9CgogICAgLy8g0J/RgNC+0LLQtdGA0LrQsCDQt9Cw0YnQuNGC0L3QvtCz0L4g0LrQu9GO0YfQsCDRgSDQv9GA0LjQstGP0LfQutC+0Lkg0Log0YHQsNC50YLRgy4KICAgIGlmIChmaWxlX2V4aXN0cygieyRyNF9jZmdfcm9vdH1yNF92YXJzLnBocCIpKSB7CiAgICAgICAgaWYgKCFlbXB0eSgkX0dFVFsnZG9uZ2xlJ10pICYmICFlbXB0eSgkcjRfY2ZnX2RvbmdsZSkpIHsKICAgICAgICAgICAgaWYgKCRyNF9jZmdfZG9uZ2xlICE9PSAkX0dFVFsnZG9uZ2xlJ10pIHsKICAgICAgICAgICAgICAgIHI0X2ZhaWwoJHJlc3VsdCwgJ0RvbmdsZSBpcyBpbnZhbGlkJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHI0X2ZhaWwoJHJlc3VsdCwgJ0RvbmdsZSByZXF1aXJlZCcpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyDQn9GA0L7QstC10YDQutCwINGA0LXQttC40LzQsCBTQUZFIE1PREUuCiAgICAkc2FmZV9tb2RlID0gY2hlY2tfc2FmZV9tb2RlKCRyNF9jZmdfcm9vdCk7CgogICAgaWYgKCRzYWZlX21vZGUpIHsKICAgICAgICBpbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cGNsZXJyb3IubGliLnBocDMiKTsKICAgICAgICBpbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cGNsdHJhY2UubGliLnBocDMiKTsKICAgICAgICBpbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cGNsdGFyLmxpYi5waHAzIik7CiAgICB9CgogICAgLy8g0JzRg9C70YzRgtC40LTQvtC80LXQvdGLLgogICAgaWYgKGlzc2V0KCRyNF9jZmdfbXVsdGlkb21haW4pICYmICRyNF9jZmdfbXVsdGlkb21haW4gJiYgISRzYWZlX21vZGUpIHsKICAgICAgICAkcjRfZG9tYWluID0gcHJlZ19yZXBsYWNlKCcjXnd3d1wuI2lzbScsICcnLCAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSkuJy8nOwoKICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCJ7JHI0X2NmZ19yb290fXskcjRfZG9tYWlufSIpKSB7CiAgICAgICAgICAgIG1rZGlyKCJ7JHI0X2NmZ19yb290fXskcjRfZG9tYWlufSIsIDA3NTUpOwogICAgICAgICAgICBjaG1vZCgieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn0iLCAwNzU1KTsKICAgICAgICB9CgogICAgICAgICRzYWZlX21vZGVfbGlua3NfZmlsZSA9ICJ7JHI0X2NmZ19yb290fXskcjRfZG9tYWlufWxpbmtzLnRhciI7CiAgICB9CiAgICBlbHNlaWYgKGlzc2V0KCRyNF9jZmdfbXVsdGlkb21haW4pICYmICRyNF9jZmdfbXVsdGlkb21haW4pIHsKICAgICAgICAkcjRfZG9tYWluID0gcHJlZ19yZXBsYWNlKCcjXnd3d1wuI2lzbScsICcnLCAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSkuJ18nOwogICAgICAgICRzYWZlX21vZGVfbGlua3NfZmlsZSA9ICJ7JHI0X2NmZ19yb290fXskcjRfZG9tYWlufWxpbmtzLnRhciI7CgogICAgICAgICRyNF9kb21haW4gPSAnJzsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRyNF9kb21haW4gPSAnJzsKICAgICAgICAkc2FmZV9tb2RlX2xpbmtzX2ZpbGUgPSAieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn1saW5rcy50YXIiOwogICAgfQoKICAgIC8vINCX0LDQs9GA0YPQt9C60LAg0LjQu9C4INC+0LHQvdC+0LLQu9C10L3QuNC1INGE0LDQudC70L7QsiAo0LHRi9Cy0YjQuNC5IHI0LnB1dGZpbGUucGhwKS4KICAgIGlmIChpc3NldCgkX0dFVFsndXBsb2FkJ10pIHx8IGlzc2V0KCRfR0VUWydwdXRmaWxlJ10pKSB7CiAgICAgICAgaWYgKGVtcHR5KCRfR0VUWydrZXknXSkpIHsKICAgICAgICAgICAgcjRfZmFpbCgkcmVzdWx0LCAnU2lnbmF0dXJlIHJlcXVpcmVkJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWlzc2V0KCRfUE9TVFsnciddKSkgewogICAgICAgICAgICByNF9mYWlsKCRyZXN1bHQsICdObyBmaWxlIGNvbnRlbnRzJyk7CiAgICAgICAgfQoKICAgICAgICAkcnEgPSAkX1BPU1RbJ3InXTsKCiAgICAgICAgaWYgKCFpc3NldCgkX0dFVFsnZm4nXSkpIHsKICAgICAgICAgICAgcjRfZmFpbCgkcmVzdWx0LCAnRmlsZW5hbWUgbm90IHNwZWNpZmllZCcpOwogICAgICAgIH0KCiAgICAgICAgJGZuID0gJF9HRVRbJ2ZuJ107CgogICAgICAgIGlmIChnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7CiAgICAgICAgICAgICRycSA9IHN0cmlwc2xhc2hlcygkcnEpOwogICAgICAgICAgICAkZm4gPSBzdHJpcHNsYXNoZXMoJGZuKTsKICAgICAgICB9CgogICAgICAgICRza2lwX2tleV9jaGVjayA9IGZhbHNlOwoKICAgICAgICBpZiAoJGZuID09PSAnbXVsdGl1cGxvYWRlcicpIHsKICAgICAgICAgICAgJHNraXBfa2V5X2NoZWNrID0gdHJ1ZTsgLy8g0JrQu9GO0Ycg0L7QtNC40L0sINCwINGE0LDQudC70L7QsiDQvNC+0LbQtdGCINCx0YvRgtGMINC90LXRgdC60L7Qu9GM0LrQvgoKICAgICAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnOycsICRycSkgYXMgJHQpIHsKICAgICAgICAgICAgICAgIGxpc3QoJGZuLCAkcnEpID0gZXhwbG9kZSgnLCcsICR0LCAyKTsKICAgICAgICAgICAgICAgICRjb250ZW50WyRmbl0gPSBiYXNlNjRfZGVjb2RlKCRycSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRjb250ZW50WyRmbl0gPSAkcnE7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkY29udGVudCBhcyAkZm4gPT4gJHJxKSB7CiAgICAgICAgICAgIGlmICghJHNraXBfa2V5X2NoZWNrKSB7CiAgICAgICAgICAgICAgICAkdXJsID0gcHJlZ19yZXBsYWNlKCIvJmtleT1bMC05YS1mXXszMn0vaSIsICIiLCAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSk7CiAgICAgICAgICAgICAgICAkc2VjcmV0X2tleSA9IG1kNSgnOTg3YWdzZG43YW9sdXlndG85N3c2NHR1ZHlkdGprdicuJ2h0dHA6Ly8nLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4kdXJsLm1kNSgkcnEpKTsKCiAgICAgICAgICAgICAgICBpZiAoJHNlY3JldF9rZXkgIT0gJF9HRVRbJ2tleSddKSB7CiAgICAgICAgICAgICAgICAgICAgcjRfZmFpbCgkcmVzdWx0LCAnSW5jb3JyZWN0IGtleSAnLiRfR0VUWydrZXknXS4nLiBIb3N0ICcuJF9TRVJWRVJbJ0hUVFBfSE9TVCddKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGlzX25ld19yemdfZmlsZSA9IHByZWdfbWF0Y2goJy9eXGR7MTh9XC5yemckLycsICRmbik7CgogICAgICAgICAgICAvLyDQlNC70Y8g0L3QvtCy0L7Qs9C+INGA0LDQt9Cz0L7QvdGJ0LjQutCwINC/0YDQtdC00LLQsNGA0LjRgtC10LvRjNC90L4g0YHQvtC30LTQsNGR0Lwg0L/QsNC/0LrRgyBsaW5rcyDQuCDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40LUg0L/QvtC00L/QsNC/0LrQuAogICAgICAgICAgICAvLyDQldGB0LvQuCDQvdCwINGB0LDQudGC0LUg0LLQutC70Y7Rh9GR0L0gU0FGRSBNT0RFLCDRgtC+INC/0YDQvtC/0YPRgdC60LDQtdC8INC00LDQvdC90YvQuSDRiNCw0LMKICAgICAgICAgICAgaWYgKCRpc19uZXdfcnpnX2ZpbGUgJiYgISRzYWZlX21vZGUpIHsKICAgICAgICAgICAgICAgICRyNV9saW5rc19kaXIgPSAieyRyNF9kb21haW59bGlua3MiOwogICAgICAgICAgICAgICAgJHI1X2xpbmtzX3N1YmRpciA9ICRyNV9saW5rc19kaXIuJy8nLnN1YnN0cigkZm4sIDAsIDIpOwoKICAgICAgICAgICAgICAgIGlmICghZmlsZV9leGlzdHMoJHI1X2xpbmtzX2RpcikpIHsKICAgICAgICAgICAgICAgICAgICBta2RpcigkcjVfbGlua3NfZGlyLCAwNzc3KTsKICAgICAgICAgICAgICAgICAgICBjaG1vZCgkcjVfbGlua3NfZGlyLCAwNzc3KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRyNV9saW5rc19zdWJkaXIpICYmIGZpbGVfZXhpc3RzKCRyNV9saW5rc19kaXIpKSB7CiAgICAgICAgICAgICAgICAgICAgbWtkaXIoJHI1X2xpbmtzX3N1YmRpciwgMDc3Nyk7CiAgICAgICAgICAgICAgICAgICAgY2htb2QoJHI1X2xpbmtzX3N1YmRpciwgMDc3Nyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGZuID0gInskcjVfbGlua3Nfc3ViZGlyfS97JGZufSI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyNF9maWxlc19saXN0ID0gYXJyYXkoCiAgICAgICAgICAgICAgICAnLmh0YWNjZXNzJywKICAgICAgICAgICAgICAgICdwY2xlcnJvci5saWIucGhwMycsCiAgICAgICAgICAgICAgICAncGNsdGFyLmxpYi5waHAzJywKICAgICAgICAgICAgICAgICdwY2x0cmFjZS5saWIucGhwMycsCiAgICAgICAgICAgICAgICAncjRfYXBpLnBocCcsCiAgICAgICAgICAgICAgICAncjRfZG93bmxvYWRfbGlua3MucGhwJywKICAgICAgICAgICAgICAgICdyNF9kb3dubG9hZC5waHAnLAogICAgICAgICAgICAgICAgJ3I0X2dldEhhc2gucGhwJywKICAgICAgICAgICAgICAgICdyNF9saWJzLnBocCcsCiAgICAgICAgICAgICAgICAncjRfdmFycy5waHAnLAogICAgICAgICAgICAgICAgJ3I0X3ZlcnNpb24nLAogICAgICAgICAgICAgICAgJ3JhemdvbjIwMDZyZXR1cm4ucGhwJywKICAgICAgICAgICAgICAgICdyYXpnb24yMDA2dm51dHJpLnBocCcKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRyNF9wYXJhbXNfZmlsZXNfbGlzdCA9IGFycmF5KAogICAgICAgICAgICAgICAgJ3I0X2JhZHBhcmFtcy5saXN0JywKICAgICAgICAgICAgICAgICdyNF9rbm93bnBhcmFtcy5saXN0JwogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRpc19uZXdfcnpnX2ZpbGUgfHwgaW5fYXJyYXkoJGZuLCAkcjRfZmlsZXNfbGlzdCkgfHwgJHNhZmVfbW9kZSkgewogICAgICAgICAgICAgICAgJGZuID0gInskcjRfY2ZnX3Jvb3R9eyRmbn0iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGZuID0gInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59eyRmbn0iOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyDQn9GA0L7QsdGD0LXQvCDRgdC+0LfQtNCw0YLRjCDRhNCw0LnQuyDQv9C+INGD0LrQsNC30LDQvdC90L7QvNGDINC/0YPRgtC4CiAgICAgICAgICAgICRmID0gZm9wZW4oJGZuLCAndycpOwoKICAgICAgICAgICAgaWYgKCRmKSB7CiAgICAgICAgICAgICAgICBpZiAoZndyaXRlKCRmLCAkcnEpID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgcjRfZmFpbCgkcmVzdWx0LCAiRXJyb3IgdG8gd3JpdGUgZmlsZTogeyRmbn0iKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmY2xvc2UoJGYpOwogICAgICAgICAgICAgICAgY2htb2QoJGZuLCAwNjQ0KTsKCiAgICAgICAgICAgICAgICAvLyDQldGB0LvQuCDQstC60LvRjtGH0ZHQvSBTQUZFIE1PREUsINGC0L4g0YTQsNC50Lsg0LTQvtCx0LDQstC70Y/QtdC8INC6IGxpbmtzLnRhciwg0LAg0LjRgdC60L7QvNGL0Lkg0YTQsNC50Lsg0YPQtNCw0LvRj9C10LwKICAgICAgICAgICAgICAgIGlmICgkc2FmZV9tb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgJHBfdGFybmFtZSA9ICRzYWZlX21vZGVfbGlua3NfZmlsZTsKICAgICAgICAgICAgICAgICAgICAkcF9saXN0ID0gYXJyYXkoJGZuKTsKICAgICAgICAgICAgICAgICAgICAkcF9tb2RlID0gJ3Rhcic7CiAgICAgICAgICAgICAgICAgICAgJHBfYWRkX2RpciA9ICcnOwogICAgICAgICAgICAgICAgICAgICRwX3JlbW92ZV9kaXIgPSAieyRyNF9jZmdfcm9vdH0iOwoKICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHBfdGFybmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgUGNsVGFyVXBkYXRlKCRwX3Rhcm5hbWUsICRwX2xpc3QsICRwX21vZGUsICRwX2FkZF9kaXIsICRwX3JlbW92ZV9kaXIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgUGNsVGFyQ3JlYXRlKCRwX3Rhcm5hbWUsICRwX2xpc3QsICRwX21vZGUsICRwX2FkZF9kaXIsICRwX3JlbW92ZV9kaXIpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCF1bmxpbmsoJGZuKSkgewogICAgICAgICAgICAgICAgICAgICAgICByNF9mYWlsKCRyZXN1bHQsICJFcnJvciB0byBkZWxldGUgZmlsZTogeyRmbn0gLSBTQUZFIE1PREUgT04iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICByNF9mYWlsKCRyZXN1bHQsICJFcnJvciB0byBvcGVuIGZpbGU6IHskZm59Iik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHI0X3N1Y2Nlc3MoJHJlc3VsdCk7CiAgICB9CgogICAgLy8g0J/QsNGC0YLQtdGA0L3RiyDQtNC70Y8g0YTQsNC50LvQvtCyINGA0LDQt9Cz0L7QvdGJ0LjQutCwINC4INGE0LDQudC70L7QsiDRgdGB0YvQu9C+0LoKICAgICRyemduX3BhdHRlcm4gPSAnXihyNC4qfHJhemdvbi4qfGdldEhhc2guKnxhZGRvbmdvb2dsZS4qfFwuaHRhY2Nlc3N8cGNsLiopJCc7CiAgICAkbGlua3NfcGF0dGVybiA9ICdeKChbMC05QS1GYS1mXXszMn18WzAtOV17MTh9KVwucnpnfC4qbGlua3NcLnRhcikkJzsKCiAgICAvLyDQo9C00LDQu9C10L3QuNC1INC/0LDQv9C+0Log0Lgg0YTQsNC50LvQvtCyINCyINC60LDRgtCw0LvQvtCz0LUg0YDQsNC30LPQvtC90YnQuNC60LAgKNC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOOiDRg9C00LDQu9C10L3QuNC1INCy0YHQtdGFINGE0LDQudC70L7QsikuCiAgICBpZiAoYXJyYXlfaW50ZXJzZWN0KGFycmF5KCdkZWxldGVfYWxsJywgJ2RlbGV0ZV9yemduJywgJ2RlbGV0ZV9saW5rcycsICdkZWxldGVfZmlsZXMnKSwgYXJyYXlfa2V5cygkX0dFVCkpKSB7CiAgICAgICAgJHBhdHRlcm4gPSAnJzsKCiAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydkZWxldGVfcnpnbiddKSkgeyAvLyDQo9C00LDQu9C10L3QuNC1INCy0YHQtdGFINGE0LDQudC70L7QsiDRgNCw0LfQs9C+0L3RidC40LrQsC4KICAgICAgICAgICAgJHBhdHRlcm4gPSAkcnpnbl9wYXR0ZXJuOwogICAgICAgIH0KICAgICAgICBlbHNlaWYgKGlzc2V0KCRfR0VUWydkZWxldGVfbGlua3MnXSkpIHsgLy8g0KPQtNCw0LvQtdC90LjQtSDQstGB0LXRhSDRhNCw0LnQu9C+0LIg0YHQviDRgdGB0YvQu9C60LDQvNC4INGA0LDQt9Cz0L7QvdGJ0LjQutCwLgogICAgICAgICAgICAkcGF0dGVybiA9ICRsaW5rc19wYXR0ZXJuOwogICAgICAgIH0KICAgICAgICBlbHNlaWYgKGlzc2V0KCRfR0VUWydkZWxldGVfZmlsZXMnXSkgJiYgaXNzZXQoJF9HRVRbJ3BhdHRlcm4nXSkpIHsgLy8g0KPQtNCw0LvQtdC90LjQtSDRhNCw0LnQu9C+0LIg0L/QviDQvNCw0YHQutC1LgogICAgICAgICAgICBpZiAoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkgewogICAgICAgICAgICAgICAgJHBhdHRlcm4gPSByYXd1cmxkZWNvZGUoc3RyaXBzbGFzaGVzKCRfR0VUWydwYXR0ZXJuJ10pKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRwYXR0ZXJuID0gcmF3dXJsZGVjb2RlKCRfR0VUWydwYXR0ZXJuJ10pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkZXhjbHVkZV9maWxlcyA9IGFycmF5KCRyNF9jZmdfcm9vdC4ncjRfYXBpLnBocCcsICRyNF9jZmdfcm9vdC4ncjRfbGlicy5waHAnKTsKICAgICAgICAkdW5kZWxldGVkX2ZpbGVzID0gcm1kaXJfcmVjdXJzaXZlKCRyNF9jZmdfcm9vdCwgJGV4Y2x1ZGVfZmlsZXMsICRwYXR0ZXJuKTsKCiAgICAgICAgaWYgKGVtcHR5KCR1bmRlbGV0ZWRfZmlsZXMpKSB7CiAgICAgICAgICAgIHI0X3N1Y2Nlc3MoJHJlc3VsdCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkcmVzdWx0Wyd1bmRlbGV0ZWRfZmlsZXMnXSA9ICR1bmRlbGV0ZWRfZmlsZXM7CiAgICAgICAgICAgIHI0X2ZhaWwoJHJlc3VsdCwgJ1NvbWUgZmlsZXMgd2VyZSBub3QgZGVsZXRlZC4nKTsKICAgICAgICB9CiAgICB9CgogICAgLy8g0J/QvtC70YPRh9C10L3QuNC1INGB0L7QtNC10YDQttC40LzQvtCz0L4g0YTQsNC50LvQvtCyICjQv9C+INGD0LzQvtC70YfQsNC90LjRjjog0L/QvtC70YPRh9C10L3QuNC1INGB0L7QtNC10YDQttC40LzQvtCz0L4g0LLRgdC10YUg0YTQsNC50LvQvtCyINCyINC/0LDQv9C60LUg0YDQsNC30LPQvtC90YnQuNC60LApLgogICAgaWYgKGFycmF5X2ludGVyc2VjdChhcnJheSgnZG93bmxvYWRfYWxsJywgJ2Rvd25sb2FkX3J6Z24nLCAnZG93bmxvYWRfbGlua3MnLCAnZG93bmxvYWRfZmlsZXMnKSwgYXJyYXlfa2V5cygkX0dFVCkpKSB7CiAgICAgICAgJHBhdHRlcm4gPSAnJzsKCiAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydkb3dubG9hZF9yemduJ10pKSB7IC8vINCf0L7Qu9GD0YfQtdC90LjQtSDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+INCy0YHQtdGFINGE0LDQudC70L7QsiDRgNCw0LfQs9C+0L3RidC40LrQsC4KICAgICAgICAgICAgJHBhdHRlcm4gPSAkcnpnbl9wYXR0ZXJuOwogICAgICAgIH0KICAgICAgICBlbHNlaWYgKGlzc2V0KCRfR0VUWydkb3dubG9hZF9saW5rcyddKSkgeyAvLyDQn9C+0LvRg9GH0LXQvdC40LUg0YHQvtC00LXRgNC20LjQvNC+0LPQviDQstGB0LXRhSDRhNCw0LnQu9C+0LIg0YHQviDRgdGB0YvQu9C60LDQvNC4INGA0LDQt9Cz0L7QvdGJ0LjQutCwLgogICAgICAgICAgICAkcGF0dGVybiA9ICRsaW5rc19wYXR0ZXJuOwogICAgICAgIH0KICAgICAgICBlbHNlaWYgKGlzc2V0KCRfR0VUWydkb3dubG9hZF9maWxlcyddKSAmJiBpc3NldCgkX0dFVFsncGF0dGVybiddKSkgeyAvLyDQn9C+0LvRg9GH0LXQvdC40LUg0YHQvtC00LXRgNC20LjQvNC+0LPQviDRhNCw0LnQu9C+0LIg0L/QviDQvNCw0YHQutC1LgogICAgICAgICAgICBpZiAoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkgewogICAgICAgICAgICAgICAgJHBhdHRlcm4gPSByYXd1cmxkZWNvZGUoc3RyaXBzbGFzaGVzKCRfR0VUWydwYXR0ZXJuJ10pKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRwYXR0ZXJuID0gcmF3dXJsZGVjb2RlKCRfR0VUWydwYXR0ZXJuJ10pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkZmlsZW5hbWVzID0gZ2V0X2ZpbGVuYW1lcygkcjRfY2ZnX3Jvb3QsIGFycmF5KCksICRwYXR0ZXJuKTsKICAgICAgICAkZmlsZXMgPSBhcnJheSgpOwoKICAgICAgICBmb3JlYWNoICgkZmlsZW5hbWVzIGFzICRmaWxlbmFtZSkgewogICAgICAgICAgICAkY29udGVudHMgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZW5hbWUpOwogICAgICAgICAgICAkZmlsZXNbc3Vic3RyKCRmaWxlbmFtZSwgc3RybGVuKCRyNF9jZmdfcm9vdCkpXSA9IGJhc2U2NF9lbmNvZGUoJGNvbnRlbnRzKTsKICAgICAgICB9CgogICAgICAgICRyZXN1bHRbJ2ZpbGVzJ10gPSAkZmlsZXM7CgogICAgICAgIHI0X3N1Y2Nlc3MoJHJlc3VsdCk7CiAgICB9CgogICAgLy8g0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INGE0LDQudC70L7QsiAo0L/QviDRg9C80L7Qu9GH0LDQvdC40Y46INC/0L7Qu9GD0YfQtdC90LjQtSDRgdC/0LjRgdC60LAg0LLRgdC10YUg0YTQsNC50LvQvtCyINCyINC/0LDQv9C60LUg0YDQsNC30LPQvtC90YnQuNC60LApLgogICAgaWYgKGFycmF5X2ludGVyc2VjdChhcnJheSgnbGlzdF9hbGwnLCAnbGlzdF9yemduJywgJ2xpc3RfbGlua3MnLCAnbGlzdF9maWxlcycpLCBhcnJheV9rZXlzKCRfR0VUKSkpIHsKICAgICAgICAkcGF0dGVybiA9ICcnOwoKICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2xpc3RfcnpnbiddKSkgeyAvLyDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC/0LjRgdC+0Log0LLRgdC10YUg0YTQsNC50LvQvtCyINGA0LDQt9Cz0L7QvdGJ0LjQutCwLgogICAgICAgICAgICAkcGF0dGVybiA9ICRyemduX3BhdHRlcm47CiAgICAgICAgfQogICAgICAgIGVsc2VpZiAoaXNzZXQoJF9HRVRbJ2xpc3RfbGlua3MnXSkpIHsgLy8g0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INCy0YHQtdGFINGE0LDQudC70L7QsiDRgdC+INGB0YHRi9C70LrQsNC80Lgg0YDQsNC30LPQvtC90YnQuNC60LAuCiAgICAgICAgICAgICRwYXR0ZXJuID0gJGxpbmtzX3BhdHRlcm47CiAgICAgICAgfQogICAgICAgIGVsc2VpZiAoaXNzZXQoJF9HRVRbJ2xpc3RfZmlsZXMnXSkgJiYgaXNzZXQoJF9HRVRbJ3BhdHRlcm4nXSkpIHsgLy8g0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INGE0LDQudC70L7QsiDQv9C+INC80LDRgdC60LUuCiAgICAgICAgICAgIGlmIChnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7CiAgICAgICAgICAgICAgICAkcGF0dGVybiA9IHJhd3VybGRlY29kZShzdHJpcHNsYXNoZXMoJF9HRVRbJ3BhdHRlcm4nXSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHBhdHRlcm4gPSByYXd1cmxkZWNvZGUoJF9HRVRbJ3BhdHRlcm4nXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vINCV0YHQu9C4IFNBRkUgTU9ERSDQstC60LvRjtGH0ZHQvSDQvdCwINGB0LDQudGC0LUsINCy0YvQv9C+0LvQvdGP0LXQvCDQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Rg9GOINC/0YDQvtCy0LXRgNC60YMg0LTQu9GPIFNpdGVBcGkuY2hlY2tfcjQoKQogICAgICAgIGlmICgkc2FmZV9tb2RlICYmIGZpbGVfZXhpc3RzKCRzYWZlX21vZGVfbGlua3NfZmlsZSkgJiYgcHJlZ19tYXRjaCgnL1xkezE4fVwucnpnLycsICRwYXR0ZXJuKSkgewogICAgICAgICAgICAkZmlsZWxpc3QgPSBQY2xUYXJMaXN0KCRzYWZlX21vZGVfbGlua3NfZmlsZSwgJ3RhcicpOwoKICAgICAgICAgICAgZm9yZWFjaCAoJGZpbGVsaXN0IGFzICRwcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICAgICAkZmlsZW5hbWUgPSBiYXNlbmFtZSgkcHJvcGVydGllc1snZmlsZW5hbWUnXSk7CiAgICAgICAgICAgICAgICAkZmlsZW5hbWVzW10gPSAnbGlua3MvJy5zdWJzdHIoJGZpbGVuYW1lLCAwLCAyKS4nLycuJGZpbGVuYW1lOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkZmlsZW5hbWVzID0gZ2V0X2ZpbGVuYW1lcygkcjRfY2ZnX3Jvb3QsIGFycmF5KCksICRwYXR0ZXJuKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRmaWxlbmFtZXMgYXMgJGtleSA9PiAkZmlsZW5hbWUpIHsKICAgICAgICAgICAgICAgICRmaWxlbmFtZXNbJGtleV0gPSBzdWJzdHIoJGZpbGVuYW1lLCBzdHJsZW4oJHI0X2NmZ19yb290KSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRyZXN1bHRbJ2ZpbGVzJ10gPSAkZmlsZW5hbWVzOwoKICAgICAgICByNF9zdWNjZXNzKCRyZXN1bHQpOwogICAgfQoKICAgIC8vINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L7QtNC10YDQttC40LzQvtC1IGxvZy3RhNCw0LnQu9C+0LIg0L/QvtGB0LXRidC10L3QuNC5INGA0L7QsdC+0YLQvtCyINC/0L7QuNGB0LrQvtCy0YvRhSDRgdC40YHRgtC10LwuCiAgICBpZiAoaXNzZXQoJF9HRVRbJ2dldF92aXNpdHNfbG9nJ10pKSB7CiAgICAgICAgaWYgKGVtcHR5KCRfR0VUWydlbmdpbmUnXSkpIHsKICAgICAgICAgICAgcjRfZmFpbCgkcmVzdWx0LCAnUGFyYW0gZW5naW5lIGlzIGVtcHR5Jyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWluX2FycmF5KCRfR0VUWydlbmdpbmUnXSwgYXJyYXkoJ3lhbmRleCcsICdnb29nbGUnKSkpIHsKICAgICAgICAgICAgcjRfZmFpbCgkcmVzdWx0LCAnVW5rbm93biBlbmdpbmU6ICcgLiAkX0dFVFsnZW5naW5lJ10pOwogICAgICAgIH0KCiAgICAgICAgJHI0X2xvZ2ZpbGUgPSAieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn1zZWVuYnkiIC4gJF9HRVRbJ2VuZ2luZSddIC4gJy5yemcnOwoKICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRyNF9sb2dmaWxlKSkgewogICAgICAgICAgICByNF9mYWlsKCRyZXN1bHQsICdGaWxlIG5vdCBmb3VuZDogJyAuICRyNF9sb2dmaWxlKTsKICAgICAgICB9CgogICAgICAgICRhY3Rpb24gPSBhcnJheV9pbnRlcnNlY3QoYXJyYXkoJ2dldCcsICdkZWxldGUnKSwgZXhwbG9kZSgnLCcsIChlbXB0eSgkX0dFVFsnYWN0aW9uJ10pID8gJ2dldCcgOiAkX0dFVFsnYWN0aW9uJ10pKSk7CgogICAgICAgIGlmIChpbl9hcnJheSgnZ2V0JywgJGFjdGlvbikpIHsKICAgICAgICAgICAgJHJlc3VsdFsnY29udGVudHMnXSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRyNF9sb2dmaWxlKTsKICAgICAgICB9CgogICAgICAgIGlmIChpbl9hcnJheSgnZGVsZXRlJywgJGFjdGlvbikpIHsKICAgICAgICAgICAgaWYgKCF1bmxpbmsoJHI0X2xvZ2ZpbGUpKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0WydlcnJvciddID0gJ0NvdWxkIG5vdCBkZWxldGU6ICcgLiAkcjRfbG9nZmlsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcjRfc3VjY2VzcygkcmVzdWx0KTsKICAgIH0KCiAgICAvLyDQn9C+0LvRg9GH0LXQvdC40LUg0LjRgdC/0L7Qu9GM0LfRg9C10LzQvtC5INCy0LXRgNGB0LjQuCDRgNCw0LfQs9C+0L3RidC40LrQsC4KICAgIGlmIChpc3NldCgkX0dFVFsnZ2V0X3ZlcnNpb24nXSkpIHsKICAgICAgICAkZmlsZW5hbWUgPSAieyRyNF9jZmdfcm9vdH1yNF92ZXJzaW9uIjsKCiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlbmFtZSkpIHsKICAgICAgICAgICAgJHJlc3VsdFsndmVyc2lvbiddID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVuYW1lKTsKCiAgICAgICAgICAgIHI0X3N1Y2Nlc3MoJHJlc3VsdCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByNF9mYWlsKCRyZXN1bHQsICJGaWxlIG5vdCBmb3VuZDogeyRmaWxlbmFtZX0iKTsKICAgICAgICB9CiAgICB9CgogICAgLy8g0J/QvtC70YPRh9C10L3QuNC1INC/0LDRgNCw0LzQtdGC0YDQvtCyINGB0LDQudGC0LAg0LjQtyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7Qs9C+INGE0LDQudC70LAuCiAgICBpZiAoaXNzZXQoJF9HRVRbJ2dldF9jb25maWcnXSkpIHsKICAgICAgICAkZmlsZW5hbWUgPSAieyRyNF9jZmdfcm9vdH1yNF92YXJzLnBocCI7CgogICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZW5hbWUpKSB7CiAgICAgICAgICAgICRtYXRjaGVzID0gYXJyYXkoKTsKICAgICAgICAgICAgJGNvbnRlbnRzID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGVuYW1lKTsKCiAgICAgICAgICAgIHByZWdfbWF0Y2hfYWxsKCcvXlxzK1wkKC4qPylccys9XHMrKC4qPyk7L2lzbScsICRjb250ZW50cywgJG1hdGNoZXMpOwoKICAgICAgICAgICAgJHJlc3VsdFsnc2FmZV9tb2RlJ10gPSAkc2FmZV9tb2RlOwogICAgICAgICAgICAkcmVzdWx0WydwaHBfdmVyc2lvbiddID0gcHJlZ19yZXBsYWNlKCcvXihcZCtcLlxkKyg/OlwuXGQrKT8pLiokLycsICckMScsIHBocHZlcnNpb24oKSk7CiAgICAgICAgICAgICRyZXN1bHRbJ2NmZ19yb290J10gPSAkcjRfY2ZnX3Jvb3Q7CgogICAgICAgICAgICBmb3JlYWNoICgkbWF0Y2hlc1sxXSBhcyAkaW5kZXggPT4gJG1hdGNoKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0WyRtYXRjaF0gPSAoJG1hdGNoZXNbMl1bJGluZGV4XSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcjRfc3VjY2VzcygkcmVzdWx0KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHI0X2ZhaWwoJHJlc3VsdCwgIkZpbGUgbm90IGZvdW5kOiB7JGZpbGVuYW1lfSIpOwogICAgICAgIH0KICAgIH0KCiAgICBlcnJvcl9yZXBvcnRpbmcoJHI0X2Vycm9yX3JlcG9ydGluZyk7Cg== ====== db_backup_status.html ====== RE8K ====== .htaccess ====== I09wdGlvbnMgLUluZGV4ZXM= ====== seenbyyandex.rzg ====== ====== seenbygoogle.rzg ====== MjAxOC0wNS0zMSAxNToxNDoyMwkvc3ZldGx1MWRlbi5waHAKMjAxOC0wNi0wMiAxOToxMDoyNAkvZmF6YS5waHAKMjAxOC0wNi0wMiAyMTo0NDo0MgkvZmF6YS5waHAKMjAxOC0wNi0wMiAyMzo0MDo1MQkvdmxpamFuaWplMjYucGhwCjIwMTgtMDYtMDMgMDU6NTI6MjAJL25vdjEyLnBocAoyMDE4LTA2LTAzIDA2OjE1OjMzCS92bGlqYW5pamUyNS5waHAKMjAxOC0wNi0wMyAwODo1ODoxMAkvbm92Mi5waHAKMjAxOC0wNi0wMyAxNDoxODoxNgkvdmxpamFuaWplMTAucGhwCjIwMTgtMDYtMDQgMDE6MTg6MjEJL2Nvc21vMy5waHAKMjAxOC0wNi0wNiAxNjowODowMAkvdmxpamFuaWplMjUucGhwCjIwMTgtMDYtMDYgMTY6MzE6MDEJL3ZsaWphbmlqZTEyLnBocAoyMDE4LTA2LTA2IDE2OjMzOjE2CS92bGlqYW5pamUyNS5waHAKMjAxOC0wNi0wNiAyMDoxMzo0OAkvbm92MS5waHAKMjAxOC0wNi0wNiAyMDoxNjowMwkvdmxpamFuaWplMTYucGhwCjIwMTgtMDYtMDYgMjA6Mzg6MzMJL3BhbWphdG5pa2kucGhwCjIwMTgtMDYtMDYgMjA6NDM6MDQJL21lc3RhLnBocAoyMDE4LTA2LTA3IDAxOjE5OjUxCS9zdG9qYWNoaWVfa2FtbmkucGhwCjIwMTgtMDYtMDcgMDE6NDQ6MzYJL3ByaWxpdi5waHAKMjAxOC0wNi0wNyAwMTo0Njo1MQkvcHNpaG9sb2cxMS5waHAKMjAxOC0wNi0wNyAwMjozODozNwkvY29zbW80LnBocAoyMDE4LTA2LTA3IDAzOjQxOjI0CS9wc2lob2xvZzEwLnBocAoyMDE4LTA2LTA3IDA0OjI0OjIzCS92bGlqYW5pamUyMy5waHAKMjAxOC0wNi0wNyAwNDo0MjoxMAkvbm92MjAucGhwCjIwMTgtMDYtMDcgMDQ6NTE6MTAJL3ByaWxpdi5waHAKMjAxOC0wNi0wNyAwNToyNzoxMAkvdmxpamFuaWplMTkucGhwCjIwMTgtMDYtMDcgMDU6Mjk6MjUJL3ZsaWphbmlqZTIzLnBocAoyMDE4LTA2LTA3IDA2OjEyOjExCS9wcmlsaXYucGhwCjIwMTgtMDYtMDcgMDY6NDg6MTIJL3RlbXBsX3Z1ZC5waHAKMjAxOC0wNi0wNyAwNzoxOTo0MQkvcHNpaG9sb2c3LnBocAoyMDE4LTA2LTA3IDA4OjA0OjQyCS92bGlqYW5pamU0LnBocAoyMDE4LTA2LTA3IDA4OjA2OjU3CS9ub3YxMS5waHAKMjAxOC0wNi0wNyAwODoxMToyNwkvemFib2xldmFuaWplLnBocAoyMDE4LTA2LTA3IDA5OjU2OjU5CS92bGlqYW5pamUxMS5waHAKMjAxOC0wNi0wOCAxMjozMTozMAkvZmF6YS5waHAKMjAxOC0wNi0wOCAxNDoxNzo1MgkvZmF6YS5waHAKMjAxOC0wNi0wOCAxNjowNDo0NQkvbm92MTIucGhwCjIwMTgtMDYtMDggMTY6MDQ6NDYJL25vdjEyLnBocAoyMDE4LTA2LTA5IDAwOjA3OjI2CS9ub3YyLnBocAoyMDE4LTA2LTA5IDAwOjEyOjM1CS9wc2lob2xvZzcucGhwCjIwMTgtMDYtMDkgMDE6NTQ6NTcJL21vZ2lsbmlrLnBocAoyMDE4LTA2LTA5IDAyOjA1OjA3CS9jb3Ntby5waHAKMjAxOC0wNi0wOSAwNDoxMTo1NQkvbm92MTUucGhwCjIwMTgtMDYtMDkgMDY6MTk6MzAJL25vdjYucGhwCjIwMTgtMDYtMDkgMTA6MjM6MTUJL3ZsaWphbmlqZTE0LnBocAoyMDE4LTA2LTA5IDE1OjU1OjM3CS9ub3Y2LnBocAoyMDE4LTA2LTA5IDE2OjA5OjM5CS9ub3Y2LnBocAoyMDE4LTA2LTA5IDE4OjAwOjE0CS9ub3Y2LnBocAoyMDE4LTA2LTEwIDAxOjM4OjAzCS9wcmlsaXYucGhwCjIwMTgtMDYtMTEgMDI6MjM6NDEJL25vdjIucGhwCjIwMTgtMDYtMTEgMTI6NDM6MzQJL3BzaWhvbG9nNy5waHAKMjAxOC0wNi0xMSAxMzoyMzozNAkvbm92Ni5waHAKMjAxOC0wNi0xMSAxNjo0MzozNgkvY29zbW81LnBocAoyMDE4LTA2LTExIDE5OjAzOjM2CS9wc2lob2xvZzYucGhwCjIwMTgtMDYtMTEgMTk6NDM6MzcJL25vdjEyLnBocAoyMDE4LTA2LTExIDIxOjQzOjM5CS9ub3YyMC5waHAKMjAxOC0wNi0xMSAyMjoyMzozOAkvbm92OC5waHAKMjAxOC0wNi0xMSAyMjo1Njo0OAkvdmxpamFuaWplMjkucGhwCjIwMTgtMDYtMTIgMDE6MDc6NDQJL25vdjEzLnBocAoyMDE4LTA2LTEyIDAxOjI0OjA2CS9ub3YxMC5waHAKMjAxOC0wNi0xMiAwNzozMzowOAkvdmxpamFuaWplMTIucGhwCjIwMTgtMDYtMTQgMDM6MTk6NDcJL2ZhemEucGhwCjIwMTgtMDYtMTQgMDQ6NDA6NDgJL2ZhemEucGhwCjIwMTgtMDYtMTQgMTM6MTk6MTMJL2RldGkucGhwCjIwMTgtMDYtMTQgMTQ6NTU6MzUJL3ZsaWphbmlqZTQucGhwCjIwMTgtMDYtMTQgMTY6MDE6MjQJL3ZsaWphbmlqZTE0LnBocAoyMDE4LTA2LTE1IDAzOjI1OjM1CS9ub3YxNi5waHAKMjAxOC0wNi0xNSAwNDoxNjowMgkvbm92MTIucGhwCjIwMTgtMDYtMTUgMTU6MzI6MjkJL25vdjYucGhwCjIwMTgtMDYtMTUgMTU6NDQ6NTEJL3ByaWxpdi5waHAKMjAxOC0wNi0xNSAyMzoxNToxMwkvdmxpamFuaWplOS5waHAKMjAxOC0wNi0xNiAwMjowNzo0NAkvbm92Ni5waHAKMjAxOC0wNi0xNiAwNDoxMDowOQkvcml0bXUucGhwCjIwMTgtMDYtMTYgMDQ6MTQ6MzMJL25vdjgucGhwCjIwMTgtMDYtMTcgMDk6MzA6NDQJL25vdjE3LnBocAoyMDE4LTA2LTE3IDEzOjIwOjE2CS92bGlqYW5pamUxMy5waHAKMjAxOC0wNi0xOSAwMjoyMDowNgkvcHNpaG9sb2cucGhwCjIwMTgtMDYtMTkgMDI6MzU6MTYJL3ZsaWphbmlqZTgucGhwCjIwMTgtMDYtMTkgMDQ6MDY6NDQJL3ZsaWphbmlqZTkucGhwCjIwMTgtMDYtMTkgMDQ6MTY6NTQJLzMwZG5leTMucGhwCjIwMTgtMDYtMTkgMDU6MzM6NDUJL2ZlbnNodXkucGhwCjIwMTgtMDYtMTkgMTk6MDM6NDgJL2ZhemEucGhwCjIwMTgtMDYtMTkgMjE6MzE6MjEJL2ZhemEucGhwCjIwMTgtMDYtMjEgMTc6MDE6NTMJL25vdjYucGhwCjIwMTgtMDYtMjIgMDQ6NDQ6MzUJL3BzaWhvbG9nNi5waHAKMjAxOC0wNi0yMiAwNjowOTo1MgkvdmxpamFuaWplMzMucGhwCjIwMTgtMDYtMjIgMDg6NTA6NTYJL3Zvem11c2hlbmllLnBocAoyMDE4LTA2LTIyIDEwOjE2OjEyCS9kdml6aGVuLnBocAoyMDE4LTA2LTIyIDEzOjAyOjAxCS9wc2lob2xvZzE0LnBocAoyMDE4LTA2LTIyIDE0OjA4OjIyCS96YXRtZW5pZS5waHAKMjAxOC0wNi0yMiAxNjo0NDo0Mgkvbm92MjQucGhwCjIwMTgtMDYtMjIgMTc6NTU6MzUJL3ZsaWphbmlqZTMxLnBocAoyMDE4LTA2LTIyIDIyOjQ2OjE2CS90cmF2bWEucGhwCjIwMTgtMDYtMjIgMjM6MDM6MzgJL3ZsaWphbmlqZTE1LnBocAoyMDE4LTA2LTIyIDIzOjA3OjU4CS9wc2lob2xvZzEyLnBocAoyMDE4LTA2LTIyIDIzOjEyOjE5CS9wc2lob2xvZzMucGhwCjIwMTgtMDYtMjIgMjM6MzQ6MDAJL3JpdG11My5waHAKMjAxOC0wNi0yMiAyMzozODoyMAkvbm92MTUucGhwCjIwMTgtMDYtMjIgMjM6NDc6MDAJL3ZsaWphbmlqZTI0LnBocAoyMDE4LTA2LTIyIDIzOjUxOjIxCS9kZXRpLnBocAoyMDE4LTA2LTIyIDIzOjU1OjQxCS9rdXJzdXMucGhwCjIwMTgtMDYtMjMgMDA6MTM6MDMJL3BzaWhvbG9nNS5waHAKMjAxOC0wNi0yMyAwMDozOTowNQkvcml0bXUzLnBocAoyMDE4LTA2LTIzIDAwOjQzOjI0CS9rb250LnBocAoyMDE4LTA2LTIzIDAxOjE4OjA2CS9ub3Y5LnBocAoyMDE4LTA2LTIzIDAxOjIyOjI2CS9kZWpzdHZpZTIucGhwCjIwMTgtMDYtMjMgMDE6MjY6NDcJL2RldGkyLnBocAoyMDE4LTA2LTIzIDAxOjQ0OjA5CS9kZWpzdHZpZS5waHAKMjAxOC0wNi0yMyAwNDo1OTowOQkva2FtZW4ucGhwCjIwMTgtMDYtMjMgMDc6MTc6NTcJL2Nvc21vMi5waHAKMjAxOC0wNi0yMyAwNzo1Mjo0NQkvdmxpamFuaWplMTAucGhwCjIwMTgtMDYtMjMgMDk6MTA6NDUJL3BzaWhvbG9nMTMucGhwCjIwMTgtMDYtMjMgMTA6MTE6MjgJL3ZsaWphbmlqZTMyLnBocAoyMDE4LTA2LTIzIDExOjE2OjMyCS92bGlqYW5pamUzNC5waHAKMjAxOC0wNi0yMyAxMTo0Njo1NQkvZmVuc2h1eS5waHAKMjAxOC0wNi0yMyAxMzowOToyMAkvMzBkbmV5Mi5waHAKMjAxOC0wNi0yMyAxMzo0NDowMwkvMWRlbi5waHAKMjAxOC0wNi0yMyAxNDo0OTowNwkvcHNpaG9sb2c4LnBocAoyMDE4LTA2LTIzIDE1OjMyOjI4CS9ub3YyLnBocAoyMDE4LTA2LTIzIDE1OjM2OjQ5CS9jb3NtbzYucGhwCjIwMTgtMDYtMjMgMTU6NDQ6MTIJL3ZsaWphbmlqZTI5LnBocAoyMDE4LTA2LTIzIDE5OjEzOjMzCS92bGlqYW5pamU2LnBocAoyMDE4LTA2LTI1IDA3OjA2OjMzCS92bGlqYW5pamUzMC5waHAKMjAxOC0wNi0yNSAwODo1NDoyMAkvbm92NS5waHAKMjAxOC0wNi0yNSAxMDoxNToxMwkvZmF6YS5waHAKMjAxOC0wNi0yNSAxMToyNjo0NQkvbm92MjUucGhwCjIwMTgtMDYtMjUgMTE6MzE6NTIJL25vdjIzLnBocAoyMDE4LTA2LTI1IDExOjQ4OjIzCS9mYXphLnBocAoyMDE4LTA2LTMwIDEyOjA0OjU4CS9wc2lob2xvZzQucGhwCjIwMTgtMDYtMzAgMTU6Mzg6MTAJL3BlcmlvZF8xXzMucGhwCjIwMTgtMDYtMzAgMTY6MDM6MjkJL25vdjMucGhwCjIwMTgtMDYtMzAgMTY6MTg6NTEJL211enNoaW5hLnBocAoyMDE4LTA2LTMwIDE4OjQ1OjQxCS9ib21iYXJkaXJvdmthLnBocAoyMDE4LTA2LTMwIDIzOjE1OjA0CS90ZW1wbF92dWQucGhwCjIwMTgtMDctMDEgMDE6MjI6MDUJL2ZhemEucGhwCjIwMTgtMDctMDEgMDI6MTc6NDAJL3ZsaWphbmlqZTMxLnBocAoyMDE4LTA3LTAxIDAzOjAzOjI0CS9mYXphLnBocAoyMDE4LTA3LTAxIDEzOjIyOjEzCS9tZWhhbml6bS5waHAKMjAxOC0wNy0wMSAxMzozNzozMwkvdmxpamFuaWplMjcucGhwCjIwMTgtMDctMDEgMTM6NDc6MzYJL3ZsaWphbmlqZTcucGhwCjIwMTgtMDctMDIgMTI6NTk6NDcJL25vdjIwLnBocAoyMDE4LTA3LTAyIDE1OjU5OjQ5CS92bGlqYW5pamUyMC5waHAKMjAxOC0wNy0wMiAxODowODoyNAkvcHNpaG9sb2cxMC5waHAKMjAxOC0wNy0wMiAyMDozODoxMAkvcHNpaG9sb2cyLnBocAoyMDE4LTA3LTAzIDA0OjQ1OjA1CS92bGlqYW5pamUzMy5waHAKMjAxOC0wNy0wMyAwNTowNjoxNQkvZHJldm4ucGhwCjIwMTgtMDctMDUgMTA6Mjk6NTMJL25vdjE2LnBocAoyMDE4LTA3LTA1IDE0OjE4OjE3CS9ub3YxNi5waHAKMjAxOC0wNy0wNSAyMzowMzo0MwkvbWVuZ2lyLnBocAoyMDE4LTA3LTA2IDE2OjE0OjA1CS9mYXphLnBocAoyMDE4LTA3LTA2IDE3OjQzOjU2CS9mYXphLnBocAoyMDE4LTA3LTA3IDAyOjQ0OjQ4CS9jb3NtbzYucGhwCjIwMTgtMDctMDcgMDY6NTg6MjUJL25vdjkucGhwCjIwMTgtMDctMDcgMDc6MTQ6MDIJL3ZsaWphbmlqZTIyLnBocAoyMDE4LTA3LTA3IDA5OjUxOjI4CS9kZXRpMi5waHAKMjAxOC0wNy0wOCAxMjowNzo1MAkvdmxpamFuaWplMi5waHAKMjAxOC0wNy0wOSAwMTowMTo0OAkvY3JpbWluYWwucGhwCjIwMTgtMDctMDkgMDI6NDQ6MzAJL25vdjEzLnBocAoyMDE4LTA3LTA5IDAzOjA0OjM0CS9kdml6aGVuLnBocAoyMDE4LTA3LTA5IDAzOjI2OjQ2CS9kdml6aGVuLnBocAoyMDE4LTA3LTA5IDAzOjI2OjUxCS9ub3YxMy5waHAKMjAxOC0wNy0wOSAwMzozMTowMwkvdmxpamFuaWplMjgucGhwCjIwMTgtMDctMDkgMDM6Mzc6MTYJL2R2aXpoZW4ucGhwCjIwMTgtMDctMDkgMDc6MzQ6MjIJL3NrbG9uZW5pZS5waHAKMjAxOC0wNy0wOSAwNzo0NTo1NAkvZHZpemhlbi5waHAKMjAxOC0wNy0wOSAwODowNTo0MwkvdmxpamFuaWplMTgucGhwCjIwMTgtMDctMDkgMDk6MzY6NTYJL29ic2VydmF0b3J5LnBocAoyMDE4LTA3LTA5IDExOjA2OjU3CS92b3ptdXNoZW5pZS5waHAKMjAxOC0wNy0wOSAxMjowNjo1Nwkvbm92MTAucGhwCjIwMTgtMDctMDkgMTM6MjE6NTkJL3JpdG11Mi5waHAKMjAxOC0wNy0wOSAxMzozNjo1OAkvdmxpamFuaWplMjYucGhwCjIwMTgtMDctMDkgMTU6MzY6NTkJL25vdjEzLnBocAoyMDE4LTA3LTA5IDE2OjA3OjAwCS9kdml6aGVuLnBocAoyMDE4LTA3LTA5IDE2OjUyOjAyCS9zdWljaWQucGhwCjIwMTgtMDctMDkgMTc6MDc6MDAJL3ZsaWphbmlqZTI5LnBocAoyMDE4LTA3LTA5IDE5OjM3OjAxCS8zMGRuZXkyLnBocAoyMDE4LTA3LTA5IDE5OjUyOjAyCS92bGlqYW5pamUzMi5waHAKMjAxOC0wNy0wOSAyMDo1MjowMgkvZGV0aS5waHAKMjAxOC0wNy0wOSAyMTowNzowMgkvZGVqc3R2aWUucGhwCjIwMTgtMDctMDkgMjE6MjI6MDIJL21vZ2lsbmlrLnBocAoyMDE4LTA3LTA5IDIyOjM3OjAzCS9wc2lob2xvZzQucGhwCjIwMTgtMDctMTAgMDI6MjU6MzgJL2RlanN0dmllMy5waHAKMjAxOC0wNy0xMCAwNDozNzoxNAkvemVuc2hpbmEucGhwCjIwMTgtMDctMTAgMDk6NTA6MjEJL2ZlbnNodXkucGhwCjIwMTgtMDctMTAgMTA6NDU6MzcJL2x1bmtpLnBocAoyMDE4LTA3LTEwIDExOjQ1OjM3CS92bGlqYW5pamU0LnBocAoyMDE4LTA3LTEwIDEyOjE4OjA4CS92bGlqYW5pamU5LnBocAoyMDE4LTA3LTEwIDEyOjMzOjA4CS9ub3YxOS5waHAKMjAxOC0wNy0xMCAxMjo0MzowOAkvbm92NC5waHAKMjAxOC0wNy0xMCAxMzowMDozOAkvbmV3cy5waHAKMjAxOC0wNy0xMCAxMzowMzowOAkvbm92OC5waHAKMjAxOC0wNy0xMCAxMzo1MzowOAkvY29zbW82LnBocAoyMDE4LTA3LTEwIDE0OjAwOjM4CS9mYXphNC5waHAKMjAxOC0wNy0xMCAxNDozMDozOQkvbHVubmthbGVuZC5waHAKMjAxOC0wNy0xMCAxNjo1ODoxMAkvY29zbW81LnBocAoyMDE4LTA3LTEwIDE3OjUwOjQxCS9tZXN0YS5waHAKMjAxOC0wNy0xMCAyMDo1Nzo0OQkvbWVuZ2lyLnBocAoyMDE4LTA3LTEwIDIxOjMzOjEyCS9zdWljaWQucGhwCjIwMTgtMDctMTAgMjE6MzU6NDIJLzMwZG5leS5waHAKMjAxOC0wNy0xMCAyMTozODoxNAkvZ3Jhdml0YWNpamEucGhwCjIwMTgtMDctMTAgMjE6NDA6NDMJL25vdjIyLnBocAoyMDE4LTA3LTEwIDIxOjQ1OjQyCS9ub3YxNC5waHAKMjAxOC0wNy0xMCAyMTo0Njo1NAkvYWt1c2hlci5waHAKMjAxOC0wNy0xMCAyMTo0ODoxMwkvZmFjdG9yLnBocAoyMDE4LTA3LTEwIDIxOjUwOjQyCS9tZW5naXIucGhwCjIwMTgtMDctMTAgMjE6NTM6MTMJL3ZsaWphbmlqZS5waHAKMjAxOC0wNy0xMCAyMTo1ODoxNAkvcml0bXUucGhwCjIwMTgtMDctMTAgMjI6MDU6NDMJL3BzaWhvbG9nLnBocAoyMDE4LTA3LTEwIDIyOjA4OjEyCS9kcmV2bi5waHAKMjAxOC0wNy0xMCAyMjoxMDo0MwkvdmxpamFuaWplNS5waHAKMjAxOC0wNy0xMCAyMjoxMzoxMwkvbWVoYW5pem0ucGhwCjIwMTgtMDctMTAgMjI6MTU6NDMJL25vdjcucGhwCjIwMTgtMDctMTAgMjI6MTg6MDAJLzFkZW4ucGhwCjIwMTgtMDctMTAgMjI6MTg6MTMJL2ZhemEucGhwCjIwMTgtMDctMTAgMjI6Mjk6MjEJL25vdjE4LnBocAoyMDE4LTA3LTEwIDIyOjMxOjM4CS9wc2loaWF0cmlqYS5waHAKMjAxOC0wNy0xMCAyMjozNzo0NwkvMzBkbmV5NC5waHAKMjAxOC0wNy0xMCAyMjozODozMgkvdmxpamFuaWplMjZfMS5waHAKMjAxOC0wNy0xMCAyMjozOToxOAkvdmxpamFuaWplMjEucGhwCjIwMTgtMDctMTAgMjI6NDA6MDQJL25ldG9jaG5vc3RpLnBocAoyMDE4LTA3LTEwIDIyOjQwOjUxCS9rYW1lbm5vZV9rb2xjby5waHAKMjAxOC0wNy0xMCAyMjo0MTozNwkvY29zbW8zLnBocAoyMDE4LTA3LTEwIDIyOjQyOjIyCS92bGlqYW5pamUxMC5waHAKMjAxOC0wNy0xMCAyMjo0MzowOAkvdmxpamFuaWplMjZfMi5waHAKMjAxOC0wNy0xMCAyMjo0NzoxNAkvMWRlbi5waHAKMjAxOC0wNy0xMCAyMjo0ODoyOQkvdmxpamFuaWplMTIucGhwCjIwMTgtMDctMTAgMjI6NTE6MjUJL25ld3MucGhwCjIwMTgtMDctMTAgMjI6NTI6MTkJL3ZsaWphbmlqZTE2LnBocAoyMDE4LTA3LTEwIDIyOjUzOjA2CS9jb3NtbzQucGhwCjIwMTgtMDctMTAgMjI6NTM6NTIJL25vdjEucGhwCjIwMTgtMDctMTAgMjI6NTQ6MzgJL3ZsaWphbmlqZTIzLnBocAoyMDE4LTA3LTEwIDIyOjU1OjIzCS92bGlqYW5pamUxMS5waHAKMjAxOC0wNy0xMCAyMjo1Njo1NQkvbm92MTEucGhwCjIwMTgtMDctMTAgMjI6NTg6MjcJL3ZsaWphbmlqZTE5LnBocAoyMDE4LTA3LTEwIDIyOjU5OjEzCS9ub3YxNS5waHAKMjAxOC0wNy0xMCAyMzowMjoxNwkvY29zbW8ucGhwCjIwMTgtMDctMTAgMjM6MDM6MDMJL25vdjYucGhwCjIwMTgtMDctMTAgMjM6MDU6MjEJL21vZ2lsbmlrLnBocAoyMDE4LTA3LTEwIDIzOjA2OjA3CS9zdG9qYWNoaWVfa2FtbmkucGhwCjIwMTgtMDctMTAgMjM6MDY6NTMJL3ZsaWphbmlqZTI1LnBocAoyMDE4LTA3LTEwIDIzOjA3OjQwCS90ZW1wbF92dWQucGhwCjIwMTgtMDctMTAgMjM6MDg6MjUJL3BzaWhvbG9nMTEucGhwCjIwMTgtMDctMTAgMjM6MDk6MTEJL3BzaWhvbG9nMTAucGhwCjIwMTgtMDctMTAgMjM6MjA6MjEJL2thbWVuLnBocAoyMDE4LTA3LTEwIDIzOjI4OjIxCS9ub3YxNy5waHAKMjAxOC0wNy0xMCAyMzoyOTowNgkva3Vyc3VzLnBocAoyMDE4LTA3LTEwIDIzOjI5OjUyCS9wc2lob2xvZzEyLnBocAoyMDE4LTA3LTEwIDIzOjMxOjIzCS92bGlqYW5pamUxMy5waHAKMjAxOC0wNy0xMCAyMzozMjoxMQkvdmxpamFuaWplMzAucGhwCjIwMTgtMDctMTAgMjM6MzI6NTcJL2RlanN0dmllMi5waHAKMjAxOC0wNy0xMCAyMzozMzo0MQkvcHNpaG9sb2c1LnBocAoyMDE4LTA3LTEwIDIzOjM0OjI4CS90cmF2bWEucGhwCjIwMTgtMDctMTAgMjM6MzU6MTQJL3ZsaWphbmlqZTI0LnBocAoyMDE4LTA3LTEwIDIzOjM2OjAwCS9ub3Y1LnBocAoyMDE4LTA3LTEwIDIzOjM2OjQ1CS9wc2lob2xvZzEzLnBocAoyMDE4LTA3LTEwIDIzOjM3OjM0CS8zMGRuZXkzLnBocAoyMDE4LTA3LTEwIDIzOjM4OjE4CS9ub3YxMi5waHAKMjAxOC0wNy0xMCAyMzozOTo0OQkvbm92OS5waHAKMjAxOC0wNy0xMCAyMzo0MToyMQkvdmxpamFuaWplMjkucGhwCjIwMTgtMDctMTAgMjM6NDI6MDcJL2tvbnQucGhwCjIwMTgtMDctMTAgMjM6NDI6NTMJL2RldGkyLnBocAoyMDE4LTA3LTEwIDIzOjQzOjM5CS9wc2lob2xvZzMucGhwCjIwMTgtMDctMTAgMjM6NDQ6MjUJL3ZsaWphbmlqZTM0LnBocAoyMDE4LTA3LTEwIDIzOjQ1OjExCS9ub3YyMy5waHAKMjAxOC0wNy0xMCAyMzo0NTo1Nwkvbm92My5waHAKMjAxOC0wNy0xMCAyMzo0Njo0MwkvdmxpamFuaWplMzMucGhwCjIwMTgtMDctMTAgMjM6NDc6MzUJL2thbWVuLnBocAoyMDE4LTA3LTEwIDIzOjQ4OjE0CS92bGlqYW5pamU2LnBocAoyMDE4LTA3LTEwIDIzOjQ5OjAxCS9wc2lob2xvZzcucGhwCjIwMTgtMDctMTAgMjM6NDk6NDYJL25vdjI0LnBocAoyMDE4LTA3LTEwIDIzOjUwOjMzCS9yaXRtdTMucGhwCjIwMTgtMDctMTAgMjM6NTE6MTkJL25vdjIucGhwCjIwMTgtMDctMTAgMjM6NTI6MDQJL2Nvc21vMi5waHAKMjAxOC0wNy0xMCAyMzo1Mjo1MQkvcHNpaG9sb2c4LnBocAoyMDE4LTA3LTEwIDIzOjUzOjM3CS9ub3YyMC5waHAKMjAxOC0wNy0xMCAyMzo1NDoyMgkvemF0bWVuaWUucGhwCjIwMTgtMDctMTAgMjM6NTU6MDkJL3ZsaWphbmlqZTMxLnBocAoyMDE4LTA3LTEwIDIzOjU1OjU0CS9wc2lob2xvZzYucGhwCjIwMTgtMDctMTAgMjM6NTY6NDAJL3BzaWhvbG9nMTQucGhwCjIwMTgtMDctMTAgMjM6NTc6MjcJL3ZsaWphbmlqZTE1LnBocAoyMDE4LTA3LTExIDAwOjIxOjEyCS9wc2lob2xvZzIucGhwCjIwMTgtMDctMTEgMDA6MzE6MDkJL2R2aXpoZW4ucGhwCjIwMTgtMDctMTEgMDA6MzE6NTQJL3NrbG9uZW5pZS5waHAKMjAxOC0wNy0xMSAwMDozMjo0MQkvb2JzZXJ2YXRvcnkucGhwCjIwMTgtMDctMTEgMDA6MzM6MjcJL3Zvem11c2hlbmllLnBocAoyMDE4LTA3LTExIDAwOjM0OjEzCS9ub3YxMC5waHAKMjAxOC0wNy0xMSAwMDozNDo1OQkvMzBkbmV5Mi5waHAKMjAxOC0wNy0xMSAwMDozNjozMQkvdmxpamFuaWplMjAucGhwCjIwMTgtMDctMTEgMDA6Mzc6MTcJL2RlanN0dmllLnBocAoyMDE4LTA3LTExIDAwOjM5OjM0CS9kZXRpLnBocAoyMDE4LTA3LTExIDAwOjQwOjIwCS9ib21iYXJkaXJvdmthLnBocAoyMDE4LTA3LTExIDAwOjQxOjA2CS9tdXpzaGluYS5waHAKMjAxOC0wNy0xMSAwMDo0MTo1MwkvdmxpamFuaWplMjcucGhwCjIwMTgtMDctMTEgMDA6NDI6MzgJL3ZsaWphbmlqZTIyLnBocAoyMDE4LTA3LTExIDAwOjQzOjI1CS92bGlqYW5pamUzMi5waHAKMjAxOC0wNy0xMSAwMDo0NDoxMQkvdmxpamFuaWplMTgucGhwCjIwMTgtMDctMTEgMDA6NDc6MTQJL3JpdG11Mi5waHAKMjAxOC0wNy0xMSAwMDo0ODowMgkvdmxpamFuaWplMjYucGhwCjIwMTgtMDctMTEgMDA6NDg6NDUJL25vdjE2LnBocAoyMDE4LTA3LTExIDAwOjQ5OjMxCS92bGlqYW5pamU3LnBocAoyMDE4LTA3LTExIDAxOjA0OjA1CS9ub3YxMi5waHAKMjAxOC0wNy0xMSAwMTowNzowOQkvZGVqc3R2aWUzLnBocAoyMDE4LTA3LTExIDAxOjA4OjQxCS9wc2lob2xvZzQucGhwCjIwMTgtMDctMTEgMDE6NDE6MzgJL2x1bmtpLnBocAoyMDE4LTA3LTExIDAxOjQ0OjQyCS96ZW5zaGluYS5waHAKMjAxOC0wNy0xMSAwMjowNzowMQkva2FtZW5ub2Vfa29sY28ucGhwCjIwMTgtMDctMTEgMDI6MDc6MjUJL25vdjEucGhwCjIwMTgtMDctMTEgMDI6MDg6MzEJL25vdjE5LnBocAoyMDE4LTA3LTExIDAyOjA5OjEyCS9uZXdzLnBocAoyMDE4LTA3LTExIDAyOjA5OjU4CS9ub3Y0LnBocAoyMDE4LTA3LTExIDAyOjEzOjUxCS92bGlqYW5pamU5LnBocAoyMDE4LTA3LTExIDAyOjE0OjMzCS9mYXphNC5waHAKMjAxOC0wNy0xMSAwMjoxNzo0MAkvY29zbW82LnBocAoyMDE4LTA3LTExIDAyOjIwOjQyCS92bGlqYW5pamU0LnBocAoyMDE4LTA3LTExIDAyOjIzOjUyCS9sdW5ua2FsZW5kLnBocAoyMDE4LTA3LTExIDAyOjI2OjAzCS9ub3Y4LnBocAoyMDE4LTA3LTExIDAyOjM1OjE4CS9tZXN0YS5waHAKMjAxOC0wNy0xMSAwMjozNjo0Ngkvcml0bXUucGhwCjIwMTgtMDctMTEgMDI6Mzk6NTMJL3BzaWhvbG9nLnBocAoyMDE4LTA3LTExIDAyOjQxOjIzCS9ha3VzaGVyLnBocAoyMDE4LTA3LTExIDAyOjQyOjI0CS9kZWpzdHZpZTIucGhwCjIwMTgtMDctMTEgMDI6NDI6NDYJL25vdjIyLnBocAoyMDE4LTA3LTExIDAyOjQyOjU0CS9jb3NtbzUucGhwCjIwMTgtMDctMTEgMDI6NDU6MTMJLzMwZG5leS5waHAKMjAxOC0wNy0xMSAwMzoxMjowMQkvbm92MTgucGhwCjIwMTgtMDctMTEgMDM6MTI6NDAJL2Nvc21vNC5waHAKMjAxOC0wNy0xMSAwMzoxMzoyNgkvbm92Ny5waHAKMjAxOC0wNy0xMSAwMzoxNDowOAkva2FtZW5ub2Vfa29sY28ucGhwCjIwMTgtMDctMTEgMDM6MTQ6NTYJL3ZsaWphbmlqZTYucGhwCjIwMTgtMDctMTEgMDM6MTU6NDEJL3ZsaWphbmlqZTUucGhwCjIwMTgtMDctMTEgMDM6MTY6MjUJL3ZsaWphbmlqZTExLnBocAoyMDE4LTA3LTExIDAzOjE3OjExCS9wc2lob2xvZzEzLnBocAoyMDE4LTA3LTExIDAzOjE3OjU4CS9kcmV2bi5waHAKMjAxOC0wNy0xMSAwMzoxODo0MwkvdGVtcGxfdnVkLnBocAoyMDE4LTA3LTExIDAzOjE5OjMyCS92bGlqYW5pamUxOS5waHAKMjAxOC0wNy0xMSAwMzoyMDoxNQkvdmxpamFuaWplMjZfMS5waHAKMjAxOC0wNy0xMSAwMzoyMTowMgkvbm92MTUucGhwCjIwMTgtMDctMTEgMDM6MjE6NDcJL3ZsaWphbmlqZTMwLnBocAoyMDE4LTA3LTExIDAzOjIyOjMzCS92bGlqYW5pamUyMy5waHAKMjAxOC0wNy0xMSAwMzoyMzozMgkvbWVoYW5pem0ucGhwCjIwMTgtMDctMTEgMDM6MjQ6MDYJL3BzaWhvbG9nNS5waHAKMjAxOC0wNy0xMSAwMzoyNDo1MQkvbm92My5waHAKMjAxOC0wNy0xMSAwMzoyNTozNwkvY29zbW8yLnBocAoyMDE4LTA3LTExIDAzOjI2OjIzCS9ub3YxNy5waHAKMjAxOC0wNy0xMSAwMzoyNzowOQkvbm92MS5waHAKMjAxOC0wNy0xMSAwMzozODozOQkvZGV0aTIucGhwCjIwMTgtMDctMTEgMDM6NDA6NTcJLzMwZG5leTMucGhwCjIwMTgtMDctMTEgMDM6NDM6MDAJL2RlanN0dmllMi5waHAKMjAxOC0wNy0xMSAwNDoxMTozNwkvdmxpamFuaWplMjcucGhwCjIwMTgtMDctMTEgMDQ6MTM6MTQJL3BzaWhvbG9nMTIucGhwCjIwMTgtMDctMTEgMDQ6MTM6NTMJL29ic2VydmF0b3J5LnBocAoyMDE4LTA3LTExIDA1OjQ4OjA4CS9jb3NtbzQucGhwCjIwMTgtMDctMTEgMDU6NTA6MjUJL3ZsaWphbmlqZTI1LnBocAoyMDE4LTA3LTExIDA1OjUxOjExCS9kcmV2bi5waHAKMjAxOC0wNy0xMSAwNTo1MjoyNwkvbWVuZ2lyLnBocAoyMDE4LTA3LTExIDA2OjExOjA2CS92bGlqYW5pamUxMi5waHAKMjAxOC0wNy0xMSAwNjoxMTo1MQkvbm92Mi5waHAKMjAxOC0wNy0xMSAwNjoxMjozNwkvbm92OS5waHAKMjAxOC0wNy0xMSAwNjoxMzozMAkvY29zbW8zLnBocAoyMDE4LTA3LTExIDA2OjE0OjA5CS9jb3Ntby5waHAKMjAxOC0wNy0xMSAwNjoxNjoyNwkvcG9sbi5waHAKMjAxOC0wNy0xMSAwNjoxODowOQkvcHNpaG9sb2cxNC5waHAKMjAxOC0wNy0xMSAwNjozNzo1NwkvcHNpaGlhdHJpamEucGhwCjIwMTgtMDctMTEgMDc6MDA6MDcJL3ZsaWphbmlqZS5waHAKMjAxOC0wNy0xMSAwNzowMTozOQkvZmF6YTQucGhwCjIwMTgtMDctMTEgMDc6MDY6MDQJL2RlanN0dmllMy5waHAKMjAxOC0wNy0xMSAwNzo1NToxNgkvdmxpamFuaWplMTIucGhwCjIwMTgtMDctMTEgMDc6NTY6MDMJL3ZsaWphbmlqZTEyLnBocAoyMDE4LTA3LTExIDA3OjU2OjUwCS92bGlqYW5pamU5LnBocAoyMDE4LTA3LTExIDA4OjE5OjAyCS92bGlqYW5pamU1LnBocAoyMDE4LTA3LTExIDA4OjE5OjQ3CS92bGlqYW5pamUyNl8yLnBocAoyMDE4LTA3LTExIDA4OjIwOjMzCS9rYW1lbm5vZV9rb2xjby5waHAKMjAxOC0wNy0xMSAwODoyMjowNQkvbW9naWxuaWsucGhwCjIwMTgtMDctMTEgMDg6MjU6MDkJL3ZsaWphbmlqZTI4LnBocAoyMDE4LTA3LTExIDA4OjUyOjAwCS9ub3YxOC5waHAKMjAxOC0wNy0xMSAwODo1Mjo0MwkvdmxpamFuaWplMTMucGhwCjIwMTgtMDctMTEgMDg6NTM6MzAJL2RldGkucGhwCjIwMTgtMDctMTEgMDg6NTQ6MTYJL2ZhemE0LnBocAoyMDE4LTA3LTExIDA5OjA1OjQ1CS9jb3NtbzUucGhwCjIwMTgtMDctMTEgMDk6MDY6MzEJL25vdjUucGhwCjIwMTgtMDctMTEgMDk6MDc6MTcJL3JpdG11Mi5waHAKMjAxOC0wNy0xMSAwOTowODo1MgkvcHNpaG9sb2c5LnBocAoyMDE4LTA3LTExIDA5OjE4OjIwCS9ub3YxMy5waHAKMjAxOC0wNy0xMSAwOTozNDo1Mgkvcml0bXUucGhwCjIwMTgtMDctMTEgMDk6MzU6MzkJL3ZsaWphbmlqZTI2XzIucGhwCjIwMTgtMDctMTEgMTA6MTc6MDEJLzMwZG5leTMucGhwCjIwMTgtMDctMTEgMTA6MTk6MTgJL2ZhemE0LnBocAoyMDE4LTA3LTExIDEwOjIzOjI3CS9za2xvbmVuaWUucGhwCjIwMTgtMDctMTEgMTA6MzM6NTEJL3ZsaWphbmlqZTMxLnBocAoyMDE4LTA3LTExIDExOjAyOjU4CS9wb2xuLnBocAoyMDE4LTA3LTExIDExOjQwOjMwCS92bGlqYW5pamUucGhwCjIwMTgtMDctMTEgMTI6NDI6MzMJL3ZsaWphbmlqZTIzLnBocAoyMDE4LTA3LTExIDEyOjQzOjU3CS9kZWpzdHZpZTIucGhwCjIwMTgtMDctMTEgMTQ6Mzk6NDYJL3BzaWhvbG9nMTIucGhwCjIwMTgtMDctMTEgMTQ6NDA6MzIJL2RlanN0dmllMi5waHAKMjAxOC0wNy0xMSAxNTozMjozNgkvY29zbW80LnBocAoyMDE4LTA3LTExIDE4OjUzOjA3CS9kdml6aGVuLnBocAoyMDE4LTA3LTEyIDA3OjA2OjM1CS9mYXphLnBocAoyMDE4LTA3LTEyIDA5OjA1OjMwCS9mYXphLnBocAoyMDE4LTA3LTEyIDEwOjAzOjUwCS9wcmlsaXYucGhwCjIwMTgtMDctMTMgMDg6MDg6MDAJL3plbnNoaW5hLnBocAoyMDE4LTA3LTE0IDAzOjE2OjAzCS92bGlqYW5pamUxNC5waHAKMjAxOC0wNy0xNCAxMjowODowMgkvdmxpamFuaWplMTQucGhwCjIwMTgtMDctMTQgMTM6NDM6MzIJL25vdjEzLnBocAoyMDE4LTA3LTE0IDEzOjUwOjEyCS9vYnNlcnZhdG9yaWphLnBocAoyMDE4LTA3LTE0IDEzOjUzOjMyCS92bGlqYW5pamU4LnBocAoyMDE4LTA3LTE0IDE0OjEwOjEzCS9yaXRtdTQucGhwCjIwMTgtMDctMTQgMTQ6MTY6NTMJL3BlcmlvZF8xXzMucGhwCjIwMTgtMDctMTQgMTQ6MjY6NTIJL3ZsaWphbmlqZTI4LnBocAoyMDE4LTA3LTE0IDE0OjQzOjMyCS9jcmltaW5hbC5waHAKMjAxOC0wNy0xNCAxNToxMTo1NwkvdmxpamFuaWplMi5waHAKMjAxOC0wNy0xNCAxNTozNjo1MwkvemFib2xldmFuaWplLnBocAoyMDE4LTA3LTE0IDE2OjIwOjE0CS9saW5peWFfdml6LnBocAoyMDE4LTA3LTE0IDE2OjI2OjUzCS9wYW1qYXRuaWtpLnBocAoyMDE4LTA3LTE0IDE5OjA2OjU1CS92bGlqYW5pamU0LnBocAoyMDE4LTA3LTE0IDIzOjEzOjM3CS92bGlqYW5pamUzLnBocAoyMDE4LTA3LTE1IDE0OjUzOjQ4CS9wc2lob2xvZzMucGhwCjIwMTgtMDctMTUgMjE6NDA6MzkJL3BzaWhvbG9nMTMucGhwCjIwMTgtMDctMTcgMjI6NTE6MDYJL2ZhemEucGhwCjIwMTgtMDctMTggMDA6MDM6MDcJL2ZhemEucGhwCjIwMTgtMDctMTggMDY6MjU6MzYJL3ZsaWphbmlqZTMucGhwCjIwMTgtMDctMTggMjM6MTM6NDUJL2ZlbnNodXkucGhwCjIwMTgtMDctMTggMjM6Mjg6MDkJL3BzaWhvbG9nMy5waHAKMjAxOC0wNy0xOSAyMTozNDoxMgkvbm92MTMucGhwCjIwMTgtMDctMjAgMTk6Mzc6NDMJL2Nvc21vNS5waHAKMjAxOC0wNy0yMCAyMDo0MjowMAkvemFib2xldmFuaWplLnBocAoyMDE4LTA3LTIwIDIxOjIwOjM1CS9ub3Y4LnBocAoyMDE4LTA3LTIwIDIxOjMzOjI2CS9jcmltaW5hbC5waHAKMjAxOC0wNy0yMSAwMzozMTo1NAkvZHZpemhlbi5waHAKMjAxOC0wNy0yMSAwMzo1Mjo0MQkvbm92MTMucGhwCjIwMTgtMDctMjEgMDU6NTM6NTYJL3ByaWxpdi5waHAKMjAxOC0wNy0yMSAwNjo1NDo0MgkvcHNpaG9sb2c5LnBocAoyMDE4LTA3LTIxIDA3OjM1OjIyCS9yaXRtdS5waHAKMjAxOC0wNy0yMSAwNzo1OTo0MwkvdmxpamFuaWplMi5waHAKMjAxOC0wNy0yMSAwODowNjowMwkvemFib2xldmFuaWplLnBocAoyMDE4LTA3LTIxIDA4OjA2OjA0CS96YWJvbGV2YW5pamUucGhwCjIwMTgtMDctMjEgMDg6MzE6MTAJL25vdjE2LnBocAoyMDE4LTA3LTIxIDA5OjAxOjU1CS9jb3NtbzUucGhwCjIwMTgtMDctMjEgMTE6Mzk6MzUJL25vdjIucGhwCjIwMTgtMDctMjEgMTY6MDM6NDMJL2NyaW1pbmFsLnBocAoyMDE4LTA3LTIzIDE3OjA4OjAxCS9mYXphLnBocAoyMDE4LTA3LTIzIDE3OjI1OjA5CS9mYXphLnBocAoyMDE4LTA3LTI4IDAzOjI4OjQ5CS9rb250LnBocAoyMDE4LTA3LTI4IDA1OjQyOjQzCS9ub3YzLnBocAoyMDE4LTA3LTI4IDA1OjQyOjUyCS9yaXRtdTMucGhwCjIwMTgtMDctMjggMDU6NDM6MDQJL2RlanN0dmllMi5waHAKMjAxOC0wNy0yOCAwNTo0MzozNwkvcml0bXUyLnBocAoyMDE4LTA3LTI4IDA1OjQzOjQ5CS92bGlqYW5pamUxMS5waHAKMjAxOC0wNy0yOCAwNTo0Mzo1OQkvdmxpamFuaWplOS5waHAKMjAxOC0wNy0yOCAwNTo0NDoxMAkvdmxpamFuaWplMjIucGhwCjIwMTgtMDctMjggMDU6NDQ6MzIJL3ZsaWphbmlqZTMyLnBocAoyMDE4LTA3LTI4IDA1OjQ0OjQzCS92bGlqYW5pamUzMS5waHAKMjAxOC0wNy0yOCAwNTo0NDo1NQkvdmxpamFuaWplMjgucGhwCjIwMTgtMDctMjggMDU6NDU6MTcJL3ZsaWphbmlqZTI5LnBocAoyMDE4LTA3LTI4IDA1OjQ1OjI5CS92bGlqYW5pamUxNS5waHAKMjAxOC0wNy0yOCAxMTo0MTo0NQkvdmxpamFuaWplMzQucGhwCjIwMTgtMDctMjggMTk6MDc6MzIJL3BzaWhvbG9nMi5waHAKMjAxOC0wNy0yOCAyMjo1MTowMQkvcHNpaG9sb2c2LnBocAoyMDE4LTA3LTI5IDAyOjU3OjIyCS9ub3Y1LnBocAoyMDE4LTA3LTI5IDA4OjI1OjM4CS9mYXphLnBocAoyMDE4LTA3LTI5IDA4OjMxOjU3CS9mYXphLnBocAoyMDE4LTA3LTMxIDA3OjUyOjE5CS9wc2loaWF0cmlqYS5waHAKMjAxOC0wNy0zMSAwNzo1MjoyOAkvbmV3cy5waHAKMjAxOC0wNy0zMSAwNzo1Mjo0MwkvZmF6YS5waHAKMjAxOC0wNy0zMSAwNzo1MzowMAkvMzBkbmV5LnBocAoyMDE4LTA3LTMxIDA3OjUzOjE3CS9kZXRpLnBocAoyMDE4LTA3LTMxIDA3OjUzOjM0CS9jb3Ntby5waHAKMjAxOC0wNy0zMSAwNzo1NDowNwkvdHJhdm1hLnBocAoyMDE4LTA3LTMxIDA3OjU0OjI0CS9wcmlsaXYucGhwCjIwMTgtMDctMzEgMDc6NTQ6NDEJL2NyaW1pbmFsLnBocAoyMDE4LTA3LTMxIDA3OjU0OjU4CS92bGlqYW5pamUucGhwCjIwMTgtMDctMzEgMDc6NTU6MTQJL21laGFuaXptLnBocAoyMDE4LTA3LTMxIDA3OjU1OjMzCS9wc2lob2xvZy5waHAKMjAxOC0wNy0zMSAwNzo1NTo1MgkvemFib2xldmFuaWplLnBocAoyMDE4LTA3LTMxIDA4OjIyOjU2CS9ub3Y5LnBocAoyMDE4LTA3LTMxIDA4OjIzOjA0CS9ub3YyLnBocAoyMDE4LTA3LTMxIDA4OjIzOjE1CS9ub3Y1LnBocAoyMDE4LTA3LTMxIDA4OjIzOjI3CS9ub3Y0LnBocAoyMDE4LTA3LTMxIDA4OjIzOjM4CS9ub3Y3LnBocAoyMDE4LTA3LTMxIDA4OjIzOjQ4CS9ub3YxOS5waHAKMjAxOC0wNy0zMSAwODoyNDowMAkvbm92MjIucGhwCjIwMTgtMDctMzEgMDg6MjQ6MTIJL25vdjIxLnBocAoyMDE4LTA3LTMxIDA4OjI0OjIzCS9ub3YyNS5waHAKMjAxOC0wNy0zMSAwODoyNDozMwkvemF0bWVuaWUucGhwCjIwMTgtMDctMzEgMDg6MjQ6NDUJL2JvbWJhcmRpcm92a2EucGhwCjIwMTgtMDctMzEgMDg6MjQ6NTUJL25vdjIwLnBocAoyMDE4LTA3LTMxIDA4OjI1OjA3CS9ub3YyNC5waHAKMjAxOC0wNy0zMSAwODoyNToxOAkvbm92MTIucGhwCjIwMTgtMDctMzEgMDg6MjU6MzAJL25vdjE4LnBocAoyMDE4LTA3LTMxIDA4OjI1OjQxCS9ub3YyMy5waHAKMjAxOC0wNy0zMSAwODoyNTo1NQkvbm92MTEucGhwCjIwMTgtMDctMzEgMDg6Mjk6MDcJL2Nvc21vMi5waHAKMjAxOC0wNy0zMSAwODoyOTozNgkvY29zbW80LnBocAoyMDE4LTA3LTMxIDA4OjMwOjA5CS9jb3NtbzYucGhwCjIwMTgtMDctMzEgMDg6MzA6NDUJL2Nvc21vNS5waHAKMjAxOC0wNy0zMSAxNDowMzo0NQkvYWt1c2hlci5waHAKMjAxOC0wOC0wMSAwNDoxODoyOAkvbWVzdGEucGhwCjIwMTgtMDgtMDEgMDQ6MjY6NTgJL25vdjEucGhwCjIwMTgtMDgtMDEgMDQ6Mjc6MDMJL3RlbXBsX3Z1ZC5waHAKMjAxOC0wOC0wMSAwNDoyNzozNQkvbWVzdGEucGhwCjIwMTgtMDgtMDEgMDQ6Mjc6NTcJL3ZsaWphbmlqZTIxLnBocAoyMDE4LTA4LTAxIDA0OjI4OjE5CS9wc2lob2xvZzEzLnBocAoyMDE4LTA4LTAxIDA0OjI4OjMwCS9vYnNlcnZhdG9yaWphLnBocAoyMDE4LTA4LTAxIDA0OjI4OjUyCS92bGlqYW5pamU0LnBocAoyMDE4LTA4LTAxIDA0OjI5OjE0CS92bGlqYW5pamUxNy5waHAKMjAxOC0wOC0wMSAwNDoyOTo0NQkvdmxpamFuaWplMTAucGhwCjIwMTgtMDgtMDEgMDQ6MzA6MDcJL3ZsaWphbmlqZTIzLnBocAoyMDE4LTA4LTAxIDA0OjMwOjI5CS92bGlqYW5pamUxOS5waHAKMjAxOC0wOC0wMSAwNDozMDo1Mgkvc3RvamFjaGllX2thbW5pLnBocAoyMDE4LTA4LTAxIDA2OjEwOjAyCS9zdmV0bHUxZGVuLnBocAoyMDE4LTA4LTAxIDA2OjQwOjI3CS9zdmV0bHUxZGVuLnBocAoyMDE4LTA4LTAxIDA3OjE0OjU2CS9wb2xuLnBocAoyMDE4LTA4LTAxIDA3OjQ4OjU0CS9wcmlsaXYucGhwCjIwMTgtMDgtMDIgMDE6MTQ6MTIJL3BvbG4ucGhwCjIwMTgtMDgtMDIgMDE6MTQ6MTUJLzFkZW4ucGhwCjIwMTgtMDgtMDIgMDE6MTQ6MjEJL2x1bmtpLnBocAoyMDE4LTA4LTAyIDAxOjE0OjI1CS9rYW1lbi5waHAKMjAxOC0wOC0wMiAwMToxNDoyOAkvbm92MTUucGhwCjIwMTgtMDgtMDIgMDE6MTQ6MzQJL25vdjEwLnBocAoyMDE4LTA4LTAyIDAxOjE0OjM4CS9mYXphNC5waHAKMjAxOC0wOC0wMiAwMToxNDo0MQkvMzBkbmV5Mi5waHAKMjAxOC0wOC0wMiAwMToxNDo0NQkvbm92MTQucGhwCjIwMTgtMDgtMDIgMDE6MTQ6NTQJL3BzaWhvbG9nNC5waHAKMjAxOC0wOC0wMiAwMToxNTowMgkvZHJldm4ucGhwCjIwMTgtMDgtMDIgMDE6MTU6MTAJL3BzaWhvbG9nOC5waHAKMjAxOC0wOC0wMiAwMToxNToyNwkvbWVuZ2lyLnBocAoyMDE4LTA4LTAyIDAxOjE1OjM2CS9rdXJzdXMucGhwCjIwMTgtMDgtMDIgMDE6MTU6NDQJL3BzaWhvbG9nMy5waHAKMjAxOC0wOC0wMiAwMToxNTo1MgkvZHZpemhlbi5waHAKMjAxOC0wOC0wMiAwMToyMzoxMgkvMzBkbmV5NC5waHAKMjAxOC0wOC0wMiAwMToyNToxNgkvc2tsb25lbmllLnBocAoyMDE4LTA4LTAyIDAxOjI2OjUzCS9za2xvbmVuaWUucGhwCjIwMTgtMDgtMDIgMDE6MzA6MzQJL21vZ2lsbmlrLnBocAoyMDE4LTA4LTAyIDAxOjM0OjE0CS9wc2lob2xvZzYucGhwCjIwMTgtMDgtMDIgMDE6Mzc6NTUJL3BzaWhvbG9nMi5waHAKMjAxOC0wOC0wMiAwMTo0MTozNQkvcHNpaG9sb2c5LnBocAoyMDE4LTA4LTAyIDAxOjQ1OjE1CS9wc2lob2xvZzUucGhwCjIwMTgtMDgtMDIgMDE6NDg6NTYJL3BzaWhvbG9nNy5waHAKMjAxOC0wOC0wMiAwMTo1MjozOQkvdmxpamFuaWplNi5waHAKMjAxOC0wOC0wMiAwMTo1OToyMAkvbHVubmthbGVuZC5waHAKMjAxOC0wOC0wMiAwMTo1OTo1NwkvcGFtamF0bmlraS5waHAKMjAxOC0wOC0wMiAwMjowMzozOAkvc3ZldGx1MWRlbi5waHAKMjAxOC0wOC0wMiAwMjowNzoxOAkvcHNpaG9sb2cxMC5waHAKMjAxOC0wOC0wMiAwMjoxMDo1OAkvdmxpamFuaWplOC5waHAKMjAxOC0wOC0wMiAwMjoyNDowNwkvbGluaXlhX3Zpei5waHAKMjAxOC0wOC0wMiAwMjozNjoyNwkvdmxpamFuaWplMTMucGhwCjIwMTgtMDgtMDIgMDI6MzY6NTQJL3ZsaWphbmlqZTMucGhwCjIwMTgtMDgtMDIgMDI6Mzc6MzYJL3ZsaWphbmlqZTIucGhwCjIwMTgtMDgtMDIgMDI6Mzg6MTUJL3Zvem11c2hlbmllLnBocAoyMDE4LTA4LTAyIDAyOjM4OjQ5CS92bGlqYW5pamU3LnBocAoyMDE4LTA4LTAyIDAyOjM5OjM5CS9wc2lob2xvZzE0LnBocAoyMDE4LTA4LTAyIDAyOjQwOjE2CS92bGlqYW5pamUxNC5waHAKMjAxOC0wOC0wMiAwMjo0MTowOAkvdmxpamFuaWplMzAucGhwCjIwMTgtMDgtMDIgMDI6NDQ6MDQJL2xpbml5YV92aXoucGhwCjIwMTgtMDgtMDIgMDI6NDc6NDQJL3ZsaWphbmlqZTMzLnBocAoyMDE4LTA4LTAyIDAyOjUxOjI0CS9wZXJpb2RfMV8zLnBocAoyMDE4LTA4LTAyIDAyOjU1OjA1CS92bGlqYW5pamUyNC5waHAKMjAxOC0wOC0wMiAwMjo1ODo0NgkvcHNpaG9sb2cxMi5waHAKMjAxOC0wOC0wMiAwMzowMjoyNgkvdmxpamFuaWplMjYucGhwCjIwMTgtMDgtMDIgMDM6MDY6MDcJL25ldG9jaG5vc3RpLnBocAoyMDE4LTA4LTAyIDAzOjA5OjQ3CS92bGlqYW5pamUyMC5waHAKMjAxOC0wOC0wMiAwMzoxMzoyNwkvdmxpamFuaWplMjZfMi5waHAKMjAxOC0wOC0wMiAwMzoxNzowOAkvb2JzZXJ2YXRvcnkucGhwCjIwMTgtMDgtMDIgMDM6MjA6NDkJL3ZsaWphbmlqZTI2XzEucGhwCjIwMTgtMDgtMDIgMDM6MjQ6MjgJL3ZsaWphbmlqZTI3LnBocAoyMDE4LTA4LTAyIDAzOjI4OjA5CS92bGlqYW5pamUzNC5waHAKMjAxOC0wOC0wMiAwMzozMTo1MAkvdmxpamFuaWplMjUucGhwCjIwMTgtMDgtMDIgMDM6MzU6MzAJL3ZsaWphbmlqZTE2LnBocAoyMDE4LTA4LTAyIDAzOjM5OjExCS92bGlqYW5pamUxOC5waHAKMjAxOC0wOC0wMiAwMzo0Mjo1Mgkva2FtZW5ub2Vfa29sY28ucGhwCjIwMTgtMDgtMDIgMDM6NDg6NTcJL3ZsaWphbmlqZTE2LnBocAoyMDE4LTA4LTAyIDE2OjMzOjQ4CS9zdmV0bHUxZGVuLnBocAoyMDE4LTA4LTA0IDAwOjQwOjQ1CS9mYXphLnBocAoyMDE4LTA4LTA0IDAxOjExOjE2CS9mYXphLnBocAoyMDE4LTA4LTA2IDE0OjI2OjEwCS9ncmF2aXRhY2lqYS5waHAKMjAxOC0wOC0wOSAxMTowNzozMQkvdmxpamFuaWplNS5waHAKMjAxOC0wOC0wOSAxNTowMDozOQkvZmF6YS5waHAKMjAxOC0wOC0wOSAxNToyNjowNgkvZmF6YS5waHAKMjAxOC0wOC0xMSAxMjoxMTozMQkvcHNpaG9sb2cxMS5waHAKMjAxOC0wOC0xMiAxOTo1MTowMgkvbXV6c2hpbmEucGhwCjIwMTgtMDgtMTUgMDU6MTg6NDMJL2ZhemEucGhwCjIwMTgtMDgtMTUgMDU6NTk6MjMJL2ZhemEucGhwCjIwMTgtMDgtMTcgMDc6MzU6MDMJL3J6Z24vcmF6Z29uMjAwNnZudXRyaS5waHAKMjAxOC0wOC0xNyAwNzozNToxMAkvcnpnbi9yYXpnb24yMDA2cmV0dXJuLnBocAoyMDE4LTA4LTE4IDA0OjI2OjM1CS92bGlqYW5pamUxNS5waHAKMjAxOC0wOC0xOCAwNDoyNjozNgkvbmV3cy5waHAKMjAxOC0wOC0xOCAwNDoyNjozOAkvbm92Mi5waHAKMjAxOC0wOC0xOCAwNDoyNjo0MAkvcG9sbi5waHAKMjAxOC0wOC0xOCAwNDoyNjo0Mgkvbm92Ny5waHAKMjAxOC0wOC0xOCAwNDoyNjo0NAkvbm92My5waHAKMjAxOC0wOC0xOCAwNDoyNjo0NgkvMWRlbi5waHAKMjAxOC0wOC0xOCAwNDoyNjo0OAkvZmF6YS5waHAKMjAxOC0wOC0xOCAwNDoyNjo1MAkvbm92NC5waHAKMjAxOC0wOC0xOCAwNDoyNjo1MgkvZGV0aS5waHAKMjAxOC0wOC0xOCAwNDoyNjo1NAkvbm92OS5waHAKMjAxOC0wOC0xOCAwNDoyNjo1NQkvbm92NS5waHAKMjAxOC0wOC0xOCAwNDoyNjo1Nwkvbm92Ni5waHAKMjAxOC0wOC0xOCAwNDoyNjo1OQkvbm92OC5waHAKMjAxOC0wOC0xOCAwNDoyNzowMQkva29udC5waHAKMjAxOC0wOC0xOCAwNDoyNzowMwkvbm92MS5waHAKMjAxOC0wOC0xOCAwNDoyNzowOQkvZGV0aTIucGhwCjIwMTgtMDgtMTggMDQ6Mjc6MTEJL25vdjIyLnBocAoyMDE4LTA4LTE4IDA0OjI3OjEzCS9ub3YxNC5waHAKMjAxOC0wOC0xOCAwNDoyNzoxNQkvbWVzdGEucGhwCjIwMTgtMDgtMTggMDQ6Mjc6MTcJL25vdjEyLnBocAoyMDE4LTA4LTE4IDA0OjI3OjE5CS9ub3YxNi5waHAKMjAxOC0wOC0xOCAwNDoyNzoyMgkva2FtZW4ucGhwCjIwMTgtMDgtMTggMDQ6Mjc6MjQJL25vdjI1LnBocAoyMDE4LTA4LTE4IDA0OjI3OjI2CS9sdW5raS5waHAKMjAxOC0wOC0xOCAwNDoyNzoyOAkvbm92MTgucGhwCjIwMTgtMDgtMTggMDQ6Mjc6MzAJL25vdjEwLnBocAoyMDE4LTA4LTE4IDA0OjI3OjMyCS9yaXRtdS5waHAKMjAxOC0wOC0xOCAwNDoyNzozNAkvbm92MjMucGhwCjIwMTgtMDgtMTggMDQ6Mjc6MzYJL25vdjI0LnBocAoyMDE4LTA4LTE4IDA0OjI3OjM4CS9ub3YxNy5waHAKMjAxOC0wOC0xOCAwNDoyNzo0MAkvY29zbW8ucGhwCjIwMTgtMDgtMTggMDQ6Mjc6NDIJL25vdjE1LnBocAoyMDE4LTA4LTE4IDA0OjI3OjQ1CS9kcmV2bi5waHAKMjAxOC0wOC0xOCAwNDoyNzo0Nwkvbm92MjEucGhwCjIwMTgtMDgtMTggMDQ6Mjc6NDkJL25vdjIwLnBocAoyMDE4LTA4LTE4IDA0OjI3OjUxCS9ub3YxOS5waHAKMjAxOC0wOC0xOCAwNDoyNzo1Mwkvbm92MTMucGhwCjIwMTgtMDgtMTggMDQ6Mjc6NTUJL25vdjExLnBocAoyMDE4LTA4LTE4IDA0OjI3OjU3CS9mYXphNC5waHAKMjAxOC0wOC0xOCAwNDoyODowMQkva3Vyc3VzLnBocAoyMDE4LTA4LTE4IDA0OjI4OjAzCS9zdWljaWQucGhwCjIwMTgtMDgtMTggMDQ6Mjg6MDUJL3ByaWxpdi5waHAKMjAxOC0wOC0xOCAwNDoyODowNwkvY29zbW80LnBocAoyMDE4LTA4LTE4IDA0OjI4OjA4CS9yaXRtdTQucGhwCjIwMTgtMDgtMTggMDQ6Mjg6MTAJL3RyYXZtYS5waHAKMjAxOC0wOC0xOCAwNDoyODoxMgkvY29zbW81LnBocAoyMDE4LTA4LTE4IDA0OjI4OjE2CS9yaXRtdTIucGhwCjIwMTgtMDgtMTggMDQ6Mjg6MjAJL2Nvc21vMi5waHAKMjAxOC0wOC0xOCAwNDoyODoyMgkvbWVuZ2lyLnBocAoyMDE4LTA4LTE4IDA0OjI4OjI0CS8zMGRuZXkucGhwCjIwMTgtMDgtMTggMDQ6Mjg6MjYJL2Nvc21vMy5waHAKMjAxOC0wOC0xOCAwNDoyODoyOAkvY29zbW82LnBocAoyMDE4LTA4LTE4IDA0OjI4OjMwCS9mYWN0b3IucGhwCjIwMTgtMDgtMTggMDQ6Mjg6MzMJL3JpdG11My5waHAKMjAxOC0wOC0xOCAwNDoyODozNAkvMzBkbmV5NC5waHAKMjAxOC0wOC0xOCAwNDoyODozNwkvMzBkbmV5My5waHAKMjAxOC0wOC0xOCAwNDoyODozOQkvMzBkbmV5Mi5waHAKMjAxOC0wOC0xOCAwNDoyODo0NwkvZHZpemhlbi5waHAKMjAxOC0wOC0xOCAwNDoyODo0OQkvZmVuc2h1eS5waHAKMjAxOC0wOC0xOCAwNDoyODo1MQkvYWt1c2hlci5waHAKMjAxOC0wOC0xOCAwNDoyODo1MwkvbW9naWxuaWsucGhwCjIwMTgtMDgtMTggMDQ6Mjg6NTUJL211enNoaW5hLnBocAoyMDE4LTA4LTE4IDA0OjI4OjU3CS96YXRtZW5pZS5waHAKMjAxOC0wOC0xOCAwNDoyODo1OQkvemVuc2hpbmEucGhwCjIwMTgtMDgtMTggMDQ6Mjk6MDEJL2RlanN0dmllLnBocAoyMDE4LTA4LTE4IDA0OjI5OjA0CS9wc2lob2xvZy5waHAKMjAxOC0wOC0xOCAwNDoyOTowNgkvY3JpbWluYWwucGhwCjIwMTgtMDgtMTggMDQ6Mjk6MDgJL21laGFuaXptLnBocAoyMDE4LTA4LTE4IDA0OjI5OjEwCS9wc2lob2xvZzUucGhwCjIwMTgtMDgtMTggMDQ6Mjk6MTIJL3ZsaWphbmlqZS5waHAKMjAxOC0wOC0xOCAwNDoyOToxNAkvcHNpaG9sb2c4LnBocAoyMDE4LTA4LTE4IDA0OjI5OjE2CS9wc2lob2xvZzQucGhwCjIwMTgtMDgtMTggMDQ6Mjk6MTgJL3BzaWhvbG9nMi5waHAKMjAxOC0wOC0xOCAwNDoyOToyMAkvc2tsb25lbmllLnBocAoyMDE4LTA4LTE4IDA0OjI5OjIyCS9kZWpzdHZpZTIucGhwCjIwMTgtMDgtMTggMDQ6Mjk6MjMJL3BzaWhvbG9nNy5waHAKMjAxOC0wOC0xOCAwNDoyOToyNQkvdGVtcGxfdnVkLnBocAoyMDE4LTA4LTE4IDA0OjI5OjI3CS9wc2lob2xvZzMucGhwCjIwMTgtMDgtMTggMDQ6Mjk6MjkJL3BzaWhvbG9nNi5waHAKMjAxOC0wOC0xOCAwNDoyOTozMQkvcHNpaG9sb2c5LnBocAoyMDE4LTA4LTE4IDA0OjI5OjMzCS9kZWpzdHZpZTMucGhwCjIwMTgtMDgtMTggMDQ6Mjk6MzUJL3BzaWhvbG9nMTIucGhwCjIwMTgtMDgtMTggMDQ6Mjk6MzcJL3BzaWhvbG9nMTMucGhwCjIwMTgtMDgtMTggMDQ6Mjk6MzkJL3ZsaWphbmlqZTcucGhwCjIwMTgtMDgtMTggMDQ6Mjk6NDEJL3ZsaWphbmlqZTMucGhwCjIwMTgtMDgtMTggMDQ6Mjk6NDMJL3BlcmlvZF8xXzMucGhwCjIwMTgtMDgtMTggMDQ6Mjk6NDUJL3BzaWhvbG9nMTEucGhwCjIwMTgtMDgtMTggMDQ6Mjk6NDcJL3ZsaWphbmlqZTIucGhwCjIwMTgtMDgtMTggMDQ6Mjk6NDkJL2x1bm5rYWxlbmQucGhwCjIwMTgtMDgtMTggMDQ6Mjk6NTAJL3BzaWhvbG9nMTQucGhwCjIwMTgtMDgtMTggMDQ6Mjk6NTIJL3ZsaWphbmlqZTYucGhwCjIwMTgtMDgtMTggMDQ6Mjk6NTQJL3BhbWphdG5pa2kucGhwCjIwMTgtMDgtMTggMDQ6Mjk6NTYJL3BzaWhvbG9nMTAucGhwCjIwMTgtMDgtMTggMDQ6Mjk6NTgJL3ZsaWphbmlqZTgucGhwCjIwMTgtMDgtMTggMDQ6MzA6MDAJL3ZsaWphbmlqZTUucGhwCjIwMTgtMDgtMTggMDQ6MzA6MDIJL2xpbml5YV92aXoucGhwCjIwMTgtMDgtMTggMDQ6MzA6MDQJL3ZsaWphbmlqZTkucGhwCjIwMTgtMDgtMTggMDQ6MzA6MDYJL3N2ZXRsdTFkZW4ucGhwCjIwMTgtMDgtMTggMDQ6MzA6MDgJL3ZsaWphbmlqZTQucGhwCjIwMTgtMDgtMTggMDQ6MzA6MTAJL3ZsaWphbmlqZTE3LnBocAoyMDE4LTA4LTE4IDA0OjMwOjEyCS92bGlqYW5pamUxMS5waHAKMjAxOC0wOC0xOCAwNDozMDoxNAkvdmxpamFuaWplMTYucGhwCjIwMTgtMDgtMTggMDQ6MzA6MTUJL3ZsaWphbmlqZTIyLnBocAoyMDE4LTA4LTE4IDA0OjMwOjE3CS92bGlqYW5pamUxMC5waHAKMjAxOC0wOC0xOCAwNDozMDoxOQkvdmxpamFuaWplMzIucGhwCjIwMTgtMDgtMTggMDQ6MzA6MjEJL3ZsaWphbmlqZTE0LnBocAoyMDE4LTA4LTE4IDA0OjMwOjIzCS92bGlqYW5pamUxMi5waHAKMjAxOC0wOC0xOCAwNDozMDoyNQkvdmxpamFuaWplMjEucGhwCjIwMTgtMDgtMTggMDQ6MzA6MjcJL3ZsaWphbmlqZTIwLnBocAoyMDE4LTA4LTE4IDA0OjMwOjI5CS9ncmF2aXRhY2lqYS5waHAKMjAxOC0wOC0xOCAwNDozMDozMQkvdmxpamFuaWplMTgucGhwCjIwMTgtMDgtMTggMDQ6MzA6MzMJL3ZsaWphbmlqZTI2LnBocAoyMDE4LTA4LTE4IDA0OjMwOjM1CS92bGlqYW5pamUxMy5waHAKMjAxOC0wOC0xOCAwNDozMDozNwkvdmxpamFuaWplMzEucGhwCjIwMTgtMDgtMTggMDQ6MzA6MzkJL29ic2VydmF0b3J5LnBocAoyMDE4LTA4LTE4IDA0OjMwOjQxCS92bGlqYW5pamUyNy5waHAKMjAxOC0wOC0xOCAwNDozMDo0MwkvdmxpamFuaWplMjgucGhwCjIwMTgtMDgtMTggMDQ6MzA6NDQJL3Zvem11c2hlbmllLnBocAoyMDE4LTA4LTE4IDA0OjMwOjQ2CS92bGlqYW5pamUyOS5waHAKMjAxOC0wOC0xOCAwNDozMDo0OQkvdmxpamFuaWplMjMucGhwCjIwMTgtMDgtMTggMDQ6MzA6NTAJL3ZsaWphbmlqZTMwLnBocAoyMDE4LTA4LTE4IDA0OjMwOjUzCS9wc2loaWF0cmlqYS5waHAKMjAxOC0wOC0xOCAwNDozMDo1NAkvdmxpamFuaWplMjUucGhwCjIwMTgtMDgtMTggMDQ6MzA6NTYJL3ZsaWphbmlqZTI0LnBocAoyMDE4LTA4LTE4IDA0OjMwOjU4CS9uZXRvY2hub3N0aS5waHAKMjAxOC0wOC0xOCAwNDozMTowMAkvdmxpamFuaWplMzMucGhwCjIwMTgtMDgtMTggMDQ6MzE6MDIJL3ZsaWphbmlqZTE5LnBocAoyMDE4LTA4LTE4IDA0OjMxOjA0CS92bGlqYW5pamUzNC5waHAKMjAxOC0wOC0xOCAwNDozMTowNgkvemFib2xldmFuaWplLnBocAoyMDE4LTA4LTE4IDA0OjMxOjA4CS92bGlqYW5pamUyNl8yLnBocAoyMDE4LTA4LTE4IDA0OjMxOjEwCS92bGlqYW5pamUyNl8xLnBocAoyMDE4LTA4LTE4IDA0OjMxOjEyCS9ib21iYXJkaXJvdmthLnBocAoyMDE4LTA4LTE4IDA0OjMxOjE0CS9vYnNlcnZhdG9yaWphLnBocAoyMDE4LTA4LTE4IDA0OjMxOjE2CS9rYW1lbm5vZV9rb2xjby5waHAKMjAxOC0wOC0xOCAwNDozMToyMAkvc3RvamFjaGllX2thbW5pLnBocAoyMDE4LTA4LTE4IDA0OjQwOjA4CS9yemduL3JhemdvbjIwMDZ2bnV0cmkucGhwCjIwMTgtMDgtMTggMDQ6NDA6MjIJL3J6Z24vcmF6Z29uMjAwNnJldHVybi5waHAKMjAxOC0wOC0yMCAxOToyNjoyMQkvZmF6YS5waHAKMjAxOC0wOC0yMCAyMDo1NjozNwkvZmF6YS5waHAKMjAxOC0wOC0yMiAxMjoyMzozNAkvbm92MTcucGhwCjIwMTgtMDgtMjIgMTI6MzM6NTEJL2R2aXpoZW4ucGhwCjIwMTgtMDgtMjIgMTU6NTY6NDcJL2FrdXNoZXIucGhwCjIwMTgtMDgtMjIgMTY6MDM6NDcJL2NyaW1pbmFsLnBocAoyMDE4LTA4LTIyIDE2OjEzOjMxCS92bGlqYW5pamUyLnBocAoyMDE4LTA4LTIyIDE2OjIzOjI1CS92bGlqYW5pamUxMS5waHAKMjAxOC0wOC0yMiAxNjozMzo0Mgkvbm92MjAucGhwCjIwMTgtMDgtMjIgMTk6MTQ6MjkJL2thbWVubm9lX2tvbGNvLnBocAoyMDE4LTA4LTI0IDEyOjEyOjQ1CS9jb3NtbzQucGhwCjIwMTgtMDgtMjQgMjA6MTg6NDEJL3ZsaWphbmlqZTI3LnBocAoyMDE4LTA4LTI0IDIwOjE5OjAwCS9yaXRtdS5waHAKMjAxOC0wOC0yNCAyMDoxOToyOQkvZ3Jhdml0YWNpamEucGhwCjIwMTgtMDgtMjYgMTI6MDE6MzIJL2ZhemEucGhwCjIwMTgtMDgtMjYgMTM6MTM6MzMJL2ZhemEucGhwCjIwMTgtMDgtMjYgMjE6MTQ6MDYJL3BvbG4ucGhwCjIwMTgtMDktMDEgMDQ6MjU6MTIJL2ZhemEucGhwCjIwMTgtMDktMDEgMDQ6Mjg6MzgJL25vdjEyLnBocAoyMDE4LTA5LTAxIDA1OjEzOjEzCS9mYXphLnBocAoyMDE4LTA5LTAyIDEwOjE5OjUzCS9ub3YxMS5waHAKMjAxOC0wOS0wMiAxMDo0ODozOAkvbm92MjMucGhwCjIwMTgtMDktMDIgMTA6NDg6MzkJL2ZhY3Rvci5waHAKMjAxOC0wOS0wMiAxMDo0ODo0MAkvZmF6YS5waHAKMjAxOC0wOS0wMiAxMDo0ODo0Mgkvbm92My5waHAKMjAxOC0wOS0wMiAxMDo0ODo0NgkvZGV0aS5waHAKMjAxOC0wOS0wMiAxMDo0ODo1MAkvbm92NS5waHAKMjAxOC0wOS0wMiAxMDo0ODo1Nwkvbm92MjEucGhwCjIwMTgtMDktMDIgMTA6NDk6MDAJL25vdjEyLnBocAoyMDE4LTA5LTAyIDEwOjQ5OjA0CS9ub3YyNS5waHAKMjAxOC0wOS0wMiAxMDo0OTowOAkvY29zbW8yLnBocAoyMDE4LTA5LTAyIDEwOjQ5OjE1CS8zMGRuZXkucGhwCjIwMTgtMDktMDIgMTA6NDk6MTkJL3N1aWNpZC5waHAKMjAxOC0wOS0wMiAxMDo0OTozMAkvMzBkbmV5Mi5waHAKMjAxOC0wOS0wMiAxMDo0OTozMwkvYWt1c2hlci5waHAKMjAxOC0wOS0wMiAxMDo0OTozNwkvZGVqc3R2aWUucGhwCjIwMTgtMDktMDIgMTA6NDk6NDQJL21laGFuaXptLnBocAoyMDE4LTA5LTAyIDEwOjQ5OjQ4CS9tdXpzaGluYS5waHAKMjAxOC0wOS0wMiAxMDo0OTo1MQkvcHNpaG9sb2cucGhwCjIwMTgtMDktMDIgMTA6NDk6NTUJL3plbnNoaW5hLnBocAoyMDE4LTA5LTAyIDEwOjQ5OjU5CS92bGlqYW5pamUucGhwCjIwMTgtMDktMDIgMTA6NTA6MDIJL2RlanN0dmllMy5waHAKMjAxOC0wOS0wMiAxMDo1MDowNgkvcHNpaG9sb2c0LnBocAoyMDE4LTA5LTAyIDEwOjUwOjA5CS92bGlqYW5pamU2LnBocAoyMDE4LTA5LTAyIDEwOjUwOjEzCS9wc2lob2xvZzEzLnBocAoyMDE4LTA5LTAyIDEwOjUwOjE3CS92bGlqYW5pamU3LnBocAoyMDE4LTA5LTAyIDEwOjUwOjI0CS92bGlqYW5pamUzMS5waHAKMjAxOC0wOS0wMiAxMDo1MDoyOAkvdmxpamFuaWplMTUucGhwCjIwMTgtMDktMDIgMTA6NTA6MzEJL3ZsaWphbmlqZTMyLnBocAoyMDE4LTA5LTAyIDEwOjUwOjM1CS92bGlqYW5pamUyNC5waHAKMjAxOC0wOS0wMiAxNjozMDozNQkvcnpnbi9yYXpnb24yMDA2dm51dHJpLnBocAoyMDE4LTA5LTAyIDE2OjMwOjM5CS9yemduL3JhemdvbjIwMDZyZXR1cm4ucGhwCjIwMTgtMDktMDIgMjA6NTY6MzEJL25vdjYucGhwCjIwMTgtMDktMDIgMjI6MDY6NTYJL25vdjQucGhwCjIwMTgtMDktMDIgMjM6MjI6NDMJL3BvbG4ucGhwCjIwMTgtMDktMDMgMDA6Mzc6NDIJL2RldGkucGhwCjIwMTgtMDktMDMgMDE6NTU6NTMJL25vdjkucGhwCjIwMTgtMDktMDMgMDM6MTE6NTkJL25vdjMucGhwCjIwMTgtMDktMDMgMDk6Mjg6MjIJL3ZsaWphbmlqZTEyLnBocAoyMDE4LTA5LTAzIDA5OjI4OjMyCS92bGlqYW5pamUyMC5waHAKMjAxOC0wOS0wMyAwOToyODozMwkvYm9tYmFyZGlyb3ZrYS5waHAKMjAxOC0wOS0wMyAwOToyODozNAkvc3RvamFjaGllX2thbW5pLnBocAoyMDE4LTA5LTAzIDIxOjU1OjEyCS92bGlqYW5pamUyMy5waHAKMjAxOC0wOS0wMyAyMjoxNToxMwkvdmxpamFuaWplMy5waHAKMjAxOC0wOS0wNCAwNjo1ODozMQkvcHNpaGlhdHJpamEucGhwCjIwMTgtMDktMDQgMDc6MDg6MzcJL25vdjE0LnBocAoyMDE4LTA5LTA0IDEyOjQwOjE3CS9wcmlsaXYucGhwCjIwMTgtMDktMDQgMTQ6NDE6NDAJL3ZsaWphbmlqZTgucGhwCjIwMTgtMDktMDQgMTg6MzE6MzAJL29ic2VydmF0b3J5LnBocAoyMDE4LTA5LTA0IDIxOjMyOjU5CS9wcmlsaXYucGhwCjIwMTgtMDktMDYgMjE6MTU6MDQJL2ZhemEucGhwCjIwMTgtMDktMDYgMjI6NDQ6NDUJL2ZhemEucGhwCjIwMTgtMDktMDggMDA6NTI6MzMJL25vdjE2LnBocAoyMDE4LTA5LTA4IDExOjIwOjM0CS9ub3Y3LnBocAoyMDE4LTA5LTA4IDExOjQzOjA1CS9uZXdzLnBocAoyMDE4LTA5LTA5IDE5OjE4OjEwCS9uZXdzLnBocAoyMDE4LTA5LTA5IDIxOjQ2OjI2CS9ub3YyLnBocAoyMDE4LTA5LTA5IDIyOjQ0OjU5CS9rb250LnBocAoyMDE4LTA5LTA5IDIzOjM5OjAyCS9ub3Y1LnBocAoyMDE4LTA5LTEwIDAwOjMxOjI1CS9mYXphLnBocAoyMDE4LTA5LTEwIDAxOjExOjU5CS9ub3YxNC5waHAKMjAxOC0wOS0xMCAwMTozMzo0MwkvY29zbW8ucGhwCjIwMTgtMDktMTAgMDM6MzQ6NDkJL3ZsaWphbmlqZTIucGhwCjIwMTgtMDktMTAgMDc6NTg6MTAJL25vdjE3LnBocAoyMDE4LTA5LTEwIDA4OjMxOjA3CS9kZXRpMi5waHAKMjAxOC0wOS0xMCAxMTo0NTo1MgkvdmxpamFuaWplMTgucGhwCjIwMTgtMDktMTAgMTI6NDY6MDIJL3BzaWhvbG9nMi5waHAKMjAxOC0wOS0xMCAxNDoxNDoyNgkvcml0bXUucGhwCjIwMTgtMDktMTAgMTU6MDk6MzAJL25vdjI0LnBocAoyMDE4LTA5LTEwIDE1OjU1OjI0CS9ub3YxMS5waHAKMjAxOC0wOS0xMCAxODoyODoxNAkvcG9sbi5waHAKMjAxOC0wOS0xMCAxOToxMzoxMgkvbm92My5waHAKMjAxOC0wOS0xMCAxOTo1ODozMwkvbm92NC5waHAKMjAxOC0wOS0xMCAyMDozNjoyMgkvZGV0aS5waHAKMjAxOC0wOS0xMCAyMToxNzowNAkvbm92OS5waHAKMjAxOC0wOS0xMCAyMTo1OToyMgkvbm92Ni5waHAKMjAxOC0wOS0xMCAyMzozMToxMAkvcHNpaGlhdHJpamEucGhwCjIwMTgtMDktMTMgMTY6MDY6MzIJL2ZhemEucGhwCjIwMTgtMDktMTMgMjA6Mjk6MDcJL2ZhemEucGhwCjIwMTgtMDktMTUgMDE6MjQ6NTEJL25vdjEyLnBocAoyMDE4LTA5LTE1IDAzOjU5OjA4CS9ub3Y4LnBocAoyMDE4LTA5LTE1IDEwOjI0OjQzCS9sdW5raS5waHAKMjAxOC0wOS0xNSAxMzo1MTo0NAkvbm92MTAucGhwCjIwMTgtMDktMTUgMTk6MjQ6NDcJL3ZsaWphbmlqZTEyLnBocAoyMDE4LTA5LTE1IDIzOjAzOjI0CS9rb250LnBocAoyMDE4LTA5LTE2IDAzOjM2OjAwCS9jb3NtbzUucGhwCjIwMTgtMDktMTYgMTU6MTc6NTMJL25ldG9jaG5vc3RpLnBocAoyMDE4LTA5LTE3IDAxOjU1OjI1CS9ub3YyMC5waHAKMjAxOC0wOS0xNyAxNzozODozOAkvMWRlbi5waHAKMjAxOC0wOS0xNyAxODozODo1NwkvemF0bWVuaWUucGhwCjIwMTgtMDktMTcgMTg6NDk6MDkJL3BzaWhvbG9nNi5waHAKMjAxOC0wOS0xOCAwMjo0MjoyOQkvMzBkbmV5LnBocAoyMDE4LTA5LTE4IDAyOjQ0OjA3CS92bGlqYW5pamUyMi5waHAKMjAxOC0wOS0xOCAwNzozNjowNgkvbm92Ny5waHAKMjAxOC0wOS0xOSAwNjowNDozNQkvbHVua2kucGhwCjIwMTgtMDktMTkgMDc6NDI6MzkJL2ZhemEucGhwCjIwMTgtMDktMTkgMDg6MTU6MjIJL25vdjE1LnBocAoyMDE4LTA5LTE5IDA4OjU5OjAwCS9ub3YxMS5waHAKMjAxOC0wOS0xOSAxMDowMjowNgkvZmF6YTQucGhwCjIwMTgtMDktMTkgMTE6MDg6MDEJL25vdjE1LnBocAoyMDE4LTA5LTE5IDExOjQxOjQ2CS92bGlqYW5pamU3LnBocAoyMDE4LTA5LTE5IDEyOjAzOjMzCS9ub3YyMC5waHAKMjAxOC0wOS0xOSAxMzowMDozMAkvbm92MjEucGhwCjIwMTgtMDktMTkgMTM6NTE6NDgJL25vdjE4LnBocAoyMDE4LTA5LTE5IDE0OjA5OjAzCS9mYXphLnBocAoyMDE4LTA5LTE5IDE1OjMxOjE0CS9kcmV2bi5waHAKMjAxOC0wOS0xOSAxNjoyMzoxOQkvbm92MjMucGhwCjIwMTgtMDktMTkgMjE6MDc6NDIJL25vdjE2LnBocAoyMDE4LTA5LTE5IDIyOjIwOjU5CS9sdW5raS5waHAKMjAxOC0wOS0xOSAyMzoxODowMAkvbm92MjUucGhwCjIwMTgtMDktMTkgMjM6MzE6MTIJL2Nvc21vLnBocAoyMDE4LTA5LTIwIDA0OjM5OjE4CS9wYW1qYXRuaWtpLnBocAoyMDE4LTA5LTIwIDA4OjAwOjQzCS9ub3YxLnBocAoyMDE4LTA5LTIwIDA4OjEwOjMyCS9ub3YxMS5waHAKMjAxOC0wOS0yMCAyMjoyMzoyMwkvZHZpemhlbi5waHAKMjAxOC0wOS0yMCAyMjozMzo1NAkvbm92MTcucGhwCjIwMTgtMDktMjEgMDA6NTI6NDEJL25vdjIzLnBocAoyMDE4LTA5LTIxIDAxOjE1OjExCS9ub3YxMi5waHAKMjAxOC0wOS0yMSAwMTozNzo0MQkvY3JpbWluYWwucGhwCjIwMTgtMDktMjEgMDM6NTI6NDIJL25vdjIyLnBocAoyMDE4LTA5LTIxIDA0OjE0OjU5CS9ub3YyNC5waHAKMjAxOC0wOS0yMyAwMDo1Nzo1NAkvbm92MjUucGhwCjIwMTgtMDktMjMgMDI6MTQ6MTYJL25vdjE5LnBocAoyMDE4LTA5LTI0IDA2OjE2OjExCS9ub3YxOS5waHAKMjAxOC0wOS0yNCAwODoxOTozNwkvdmxpamFuaWplMTAucGhwCjIwMTgtMDktMjQgMTA6MjU6MTMJL25vdjE3LnBocAoyMDE4LTA5LTI0IDEwOjU4OjQzCS9ub3YyLnBocAoyMDE4LTA5LTI0IDExOjI3OjA1CS9ub3YxMC5waHAKMjAxOC0wOS0yNCAxMTo1NzoxOQkvbm92NC5waHAKMjAxOC0wOS0yNCAxMjoyMjoyNwkvcml0bXUyLnBocAoyMDE4LTA5LTI0IDEyOjI3OjUwCS9ub3YyMi5waHAKMjAxOC0wOS0yNCAxMzoxODoxMgkvbWVzdGEucGhwCjIwMTgtMDktMjQgMTQ6MTk6NDAJL3BzaWhvbG9nMTIucGhwCjIwMTgtMDktMjQgMTc6NDA6MzgJL3RlbXBsX3Z1ZC5waHAKMjAxOC0wOS0yNCAxODozOToxNQkvbm92MTMucGhwCjIwMTgtMDktMjQgMTk6Mzc6NTEJL3phYm9sZXZhbmlqZS5waHAKMjAxOC0wOS0yNCAyMDoxMToyMAkvdmxpamFuaWplNC5waHAKMjAxOC0wOS0yNCAyMDoyODowNgkvbm92Ny5waHAKMjAxOC0wOS0yNCAyMDo0NDo1MQkvcHNpaG9sb2c3LnBocAoyMDE4LTA5LTI0IDIyOjE3OjAwCS92bGlqYW5pamUzMC5waHAKMjAxOC0wOS0yNCAyMjo1MDoyNgkvZmF6YS5waHAKMjAxOC0wOS0yNCAyMzowNzoxMQkvbm92MTgucGhwCjIwMTgtMDktMjQgMjM6MTU6MzQJL25vdjE0LnBocAoyMDE4LTA5LTI0IDIzOjIzOjU2CS9sdW5ua2FsZW5kLnBocAoyMDE4LTA5LTI0IDIzOjMyOjE4CS9ub3YyMi5waHAKMjAxOC0wOS0yNSAwMToxMjo0NwkvbW9naWxuaWsucGhwCjIwMTgtMDktMjUgMDE6NTQ6MzkJL29ic2VydmF0b3J5LnBocAoyMDE4LTA5LTI1IDAyOjAzOjAxCS92bGlqYW5pamUyMy5waHAKMjAxOC0wOS0yNSAwMjoxMToyMwkvMzBkbmV5NC5waHAKMjAxOC0wOS0yNSAwNDo0MTo1NAkvcHNpaG9sb2cxMC5waHAKMjAxOC0wOS0yNSAwNTo0MDozMgkvZmF6YS5waHAKMjAxOC0wOS0yNSAwNzozNjo1NQkvdmxpamFuaWplMjYucGhwCjIwMTgtMDktMjUgMDg6Mjc6MjAJL3ZsaWphbmlqZTMzLnBocAoyMDE4LTA5LTI1IDA5OjE3OjQ0CS92bGlqYW5pamUxOS5waHAKMjAxOC0wOS0yNSAxMDowODowOAkvbWVzdGEucGhwCjIwMTgtMDktMjUgMTA6Mjk6MDYJLzMwZG5leTMucGhwCjIwMTgtMDktMjUgMTA6NDQ6NDkJL2ZhY3Rvci5waHAKMjAxOC0wOS0yNSAxMTo1MzoyMAkvcHJpbGl2LnBocAoyMDE4LTA5LTI1IDEyOjMyOjEwCS9kcmV2bi5waHAKMjAxOC0wOS0yNSAxMjo0OTo1MQkvc3VpY2lkLnBocAoyMDE4LTA5LTI1IDE0OjAwOjAzCS9yaXRtdTMucGhwCjIwMTgtMDktMjUgMTQ6MTI6NTkJL3ZsaWphbmlqZTIxLnBocAoyMDE4LTA5LTI1IDE0OjUxOjAyCS9jb3NtbzQucGhwCjIwMTgtMDktMjUgMTU6MTY6MzYJL2Nvc21vMy5waHAKMjAxOC0wOS0yNSAxNzoyNzo1NgkvY29zbW8ucGhwCjIwMTgtMDktMjUgMTc6NDM6MzAJL3RyYXZtYS5waHAKMjAxOC0wOS0yNSAxODoyMjozOQkvMzBkbmV5LnBocAoyMDE4LTA5LTI1IDE5OjEzOjIzCS90ZW1wbF92dWQucGhwCjIwMTgtMDktMjUgMTk6NDI6MDcJL2Nvc21vNS5waHAKMjAxOC0wOS0yNSAyMDoyNDoxNwkvY29zbW8yLnBocAoyMDE4LTA5LTI1IDIxOjAxOjI5CS9yaXRtdTIucGhwCjIwMTgtMDktMjUgMjE6Mzc6NDcJL2Nvc21vNi5waHAKMjAxOC0wOS0yNSAyMjo0OToyNwkvcml0bXU0LnBocAoyMDE4LTA5LTI1IDIyOjUxOjI2CS92bGlqYW5pamUyNl8xLnBocAoyMDE4LTA5LTI1IDIzOjEzOjAyCS90cmF2bWEucGhwCjIwMTgtMDktMjUgMjM6MTg6NDUJL2t1cnN1cy5waHAKMjAxOC0wOS0yNSAyMzo1ODoyNwkvMzBkbmV5NC5waHAKMjAxOC0wOS0yNiAwMDozOToyNwkvcHNpaG9sb2c1LnBocAoyMDE4LTA5LTI2IDAwOjQ1OjA0CS8zMGRuZXkyLnBocAoyMDE4LTA5LTI2IDAxOjE1OjI3CS9ub3YxOS5waHAKMjAxOC0wOS0yNiAwMjoxMzowNAkvdmxpamFuaWplMjZfMS5waHAKMjAxOC0wOS0yNiAwMzoxNzo1NAkvcHNpaG9sb2c1LnBocAoyMDE4LTA5LTI2IDAzOjE4OjUxCS8zMGRuZXkzLnBocAoyMDE4LTA5LTI2IDA1OjQ4OjU1CS9wc2lob2xvZzExLnBocAoyMDE4LTA5LTI2IDA2OjEwOjMxCS9ub3Y1LnBocAoyMDE4LTA5LTI2IDA2OjQ2OjMwCS9ub3Y5LnBocAoyMDE4LTA5LTI2IDA3OjQ0OjA4CS92bGlqYW5pamUyNl8yLnBocAoyMDE4LTA5LTI2IDA5OjEwOjMyCS9wc2lob2xvZzkucGhwCjIwMTgtMDktMjcgMDQ6MDQ6MjEJL25vdjE3LnBocAoyMDE4LTA5LTI3IDA0OjA0OjI4CS9ub3Y2LnBocAoyMDE4LTA5LTI3IDE1OjM4OjA1CS92bGlqYW5pamUxNC5waHAKMjAxOC0wOS0yNyAxNzoyNzo1Mgkvbm92Ny5waHAKMjAxOC0wOS0yNyAxODozOTowOAkvbm92MjAucGhwCjIwMTgtMDktMjcgMTk6NTQ6NTYJL2ZhemE0LnBocAoyMDE4LTA5LTI3IDIxOjEwOjQ0CS9ub3YxNS5waHAKMjAxOC0wOS0yNyAyMjoyNjozMgkvbm92MTEucGhwCjIwMTgtMDktMjcgMjM6NDM6MzMJL2FrdXNoZXIucGhwCjIwMTgtMDktMjggMDM6Mjk6NDMJL25ld3MucGhwCjIwMTgtMDktMjggMDQ6NDU6MjAJL21laGFuaXptLnBocAoyMDE4LTA5LTI4IDA2OjAxOjA4CS9wc2lob2xvZy5waHAKMjAxOC0wOS0yOCAwNzoxODo1OAkvbW9naWxuaWsucGhwCjIwMTgtMDktMjggMDg6MzM6NTIJL2RldGkucGhwCjIwMTgtMDktMjggMTE6MDQ6MTkJL2tvbnQucGhwCjIwMTgtMDktMjggMTI6MjA6MDYJL2RlanN0dmllLnBocAoyMDE4LTA5LTI4IDEzOjM1OjU0CS9wb2xuLnBocAoyMDE4LTA5LTI4IDE2OjA5OjEwCS9ub3YxNi5waHAKMjAxOC0wOS0yOCAxODozOTowNQkvbHVua2kucGhwCjIwMTgtMDktMjggMTk6NTQ6NTMJL25vdjE4LnBocAoyMDE4LTA5LTI4IDIxOjEwOjQxCS9ub3YyMy5waHAKMjAxOC0wOS0yOCAyMjoyNjoyOAkvY29zbW8ucGhwCjIwMTgtMDktMjggMjM6NDQ6MTgJL2RyZXZuLnBocAoyMDE4LTA5LTI5IDAwOjU5OjE4CS9ub3YyMS5waHAKMjAxOC0wOS0yOSAwMjoxNDozOQkvbm92Mi5waHAKMjAxOC0wOS0yOSAwMzoyNDoyNAkvZmF6YS5waHAKMjAxOC0wOS0yOSAwMzoyNToxNAkvbm92NS5waHAKMjAxOC0wOS0yOSAwMzoyNjoxOAkvemVuc2hpbmEucGhwCjIwMTgtMDktMjkgMDM6Mjc6NDIJL25vdjQucGhwCjIwMTgtMDktMjkgMDM6Mjk6MDYJL3phdG1lbmllLnBocAoyMDE4LTA5LTI5IDA1OjM4OjUyCS9tdXpzaGluYS5waHAKMjAxOC0wOS0yOSAwNjo1NDozNQkvbm92My5waHAKMjAxOC0wOS0yOSAwNzo0Mjo1NwkvdmxpamFuaWplMTcucGhwCjIwMTgtMDktMjkgMDg6MTA6MjIJL25vdjkucGhwCjIwMTgtMDktMjkgMDk6MjY6MTAJL3ZsaWphbmlqZS5waHAKMjAxOC0wOS0yOSAxMDo0NDozNgkvcHNpaG9sb2c2LnBocAoyMDE4LTA5LTI5IDExOjU5OjU3CS9wc2lob2xvZzcucGhwCjIwMTgtMDktMjkgMTM6MTQ6MTgJL3NrbG9uZW5pZS5waHAKMjAxOC0wOS0yOSAxNDoyOToyMQkvZGV0aTIucGhwCjIwMTgtMDktMjkgMTU6NDU6MDkJL3BzaWhvbG9nMy5waHAKMjAxOC0wOS0yOSAxNzowMDo1NgkvdGVtcGxfdnVkLnBocAoyMDE4LTA5LTI5IDE4OjE2OjQ0CS9kZWpzdHZpZTMucGhwCjIwMTgtMDktMjkgMTk6MzQ6MTUJL25vdjE0LnBocAoyMDE4LTA5LTMwIDA2OjQ4OjQ5CS9ub3YyNC5waHAKMjAxOC0wOS0zMCAwODowMDozNQkvcHNpaG9sb2c4LnBocAoyMDE4LTA5LTMwIDA4OjA0OjAyCS9wc2lob2xvZzUucGhwCjIwMTgtMDktMzAgMDk6MTk6NTAJL3BzaWhvbG9nOS5waHAKMjAxOC0wOS0zMCAxMDozNTozOAkvcml0bXUucGhwCjIwMTgtMDktMzAgMTE6NTE6MjYJL3BzaWhvbG9nOC5waHAKMjAxOC0wOS0zMCAxMzowOToxNwkvcHNpaG9sb2c0LnBocAoyMDE4LTA5LTMwIDEzOjE2OjI0CS9mYXphLnBocAoyMDE4LTA5LTMwIDE0OjI0OjI1CS92bGlqYW5pamU3LnBocAoyMDE4LTA5LTMwIDE1OjM4OjQ5CS92bGlqYW5pamU2LnBocAoyMDE4LTA5LTMwIDE1OjU3OjMzCS9wc2lob2xvZzMucGhwCjIwMTgtMDktMzAgMTY6MTE6MDAJL25vdjI0LnBocAoyMDE4LTA5LTMwIDE2OjQxOjEyCS9wc2lob2xvZzEzLnBocAoyMDE4LTA5LTMwIDE2OjU0OjM3CS9saW5peWFfdml6LnBocAoyMDE4LTA5LTMwIDE4OjAxOjA5CS92bGlqYW5pamUxMS5waHAKMjAxOC0wOS0zMCAxODoxMDoyNQkvcHNpaG9sb2cxMC5waHAKMjAxOC0wOS0zMCAxOTowMzozNAkvcml0bXUzLnBocAoyMDE4LTA5LTMwIDE5OjI2OjEyCS9wc2lob2xvZzE0LnBocAoyMDE4LTA5LTMwIDIwOjQyOjAwCS92bGlqYW5pamU0LnBocAoyMDE4LTA5LTMwIDIxOjEyOjQ4CS9mYXphLnBocAoyMDE4LTA5LTMwIDIxOjMxOjE2CS9rdXJzdXMucGhwCjIwMTgtMDktMzAgMjE6NTg6NDUJL3ZsaWphbmlqZTMucGhwCjIwMTgtMDktMzAgMjE6NTg6NTgJL3ZsaWphbmlqZTE2LnBocAoyMDE4LTA5LTMwIDIyOjQ1OjA3CS9rdXJzdXMucGhwCjIwMTgtMDktMzAgMjM6MTM6NTkJL3ZsaWphbmlqZTgucGhwCjIwMTgtMTAtMDEgMDA6MDg6MTMJL3ZsaWphbmlqZTE4LnBocAoyMDE4LTEwLTAxIDAwOjI5OjIzCS9sdW5ua2FsZW5kLnBocAoyMDE4LTEwLTAxIDAxOjQ1OjEyCS9wZXJpb2RfMV8zLnBocAoyMDE4LTEwLTAxIDAzOjAwOjU5CS92bGlqYW5pamU1LnBocAoyMDE4LTEwLTAxIDA0OjE2OjM0CS9zdmV0bHUxZGVuLnBocAoyMDE4LTEwLTAxIDEyOjQzOjI1CS92b3ptdXNoZW5pZS5waHAKMjAxOC0xMC0wMSAxODoxMzozNgkvdmxpamFuaWplOS5waHAKMjAxOC0xMC0wMSAxOToyNjowOAkvcHNpaG9sb2cxMy5waHAKMjAxOC0xMC0wMSAyMDo0MTo1NQkvcGFtamF0bmlraS5waHAKMjAxOC0xMC0wMSAyMTo1ODozNAkvcHNpaG9sb2cxMi5waHAKMjAxOC0xMC0wMSAyMjozNToyNgkvcml0bXU0LnBocAoyMDE4LTEwLTAxIDIzOjEzOjMxCS9wc2lob2xvZzExLnBocAoyMDE4LTEwLTAxIDIzOjE1OjU0CS92bGlqYW5pamUxMy5waHAKMjAxOC0xMC0wMiAwMDoyOToxOAkvdmxpamFuaWplMTUucGhwCjIwMTgtMTAtMDIgMDE6MTA6MTEJL2Nvc21vMy5waHAKMjAxOC0xMC0wMiAwMzowMDo1NAkvbm92Ni5waHAKMjAxOC0xMC0wMiAwNjo0OToyNAkvbm92MjIucGhwCjIwMTgtMTAtMDIgMDg6MDU6NTEJL25vdjE5LnBocAoyMDE4LTEwLTAyIDA5OjE5OjQxCS9ub3YxNy5waHAKMjAxOC0xMC0wMiAwOTozNTozNgkvY29zbW8zLnBocAoyMDE4LTEwLTAyIDEwOjM1OjU5CS9tZXN0YS5waHAKMjAxOC0xMC0wMiAxMTo1MToxNgkvbm92MjUucGhwCjIwMTgtMTAtMDIgMTM6MDk6MjQJL3ZsaWphbmlqZTMzLnBocAoyMDE4LTEwLTAyIDE0OjI1OjIxCS92bGlqYW5pamUxMC5waHAKMjAxOC0xMC0wMiAxNTo0MTozOAkvdmxpamFuaWplMjgucGhwCjIwMTgtMTAtMDMgMDI6MDk6MzUJL25vdjIzLnBocAoyMDE4LTEwLTAzIDAyOjM5OjU4CS9yaXRtdS5waHAKMjAxOC0xMC0wMyAwNTowODozOAkvdmxpamFuaWplMzQucGhwCjIwMTgtMTAtMDMgMDg6NTk6MjcJL3ZsaWphbmlqZTcucGhwCjIwMTgtMTAtMDMgMTE6NDk6NDYJL3ZsaWphbmlqZTkucGhwCjIwMTgtMTAtMDMgMTM6MjA6MDgJL2RlanN0dmllMi5waHAKMjAxOC0xMC0wMyAxNToxMToxMwkvdmxpamFuaWplMjIucGhwCjIwMTgtMTAtMDMgMTY6NDE6NTYJL3ZsaWphbmlqZTI0LnBocAoyMDE4LTEwLTAzIDE3OjU5OjAyCS92bGlqYW5pamUxOC5waHAKMjAxOC0xMC0wMyAxOToxMzo1NgkvdmxpamFuaWplMjcucGhwCjIwMTgtMTAtMDMgMTk6MjI6MzgJL3plbnNoaW5hLnBocAoyMDE4LTEwLTAzIDE5OjQyOjQ2CS92bGlqYW5pamUyNC5waHAKMjAxOC0xMC0wMyAyMDoyOToxOQkvdmxpamFuaWplMTMucGhwCjIwMTgtMTAtMDMgMjE6NDU6MDcJL3ZsaWphbmlqZTE3LnBocAoyMDE4LTEwLTA0IDA0OjAyOjI0CS9jb3NtbzMucGhwCjIwMTgtMTAtMDQgMDQ6MDI6MjUJL2Nvc21vMy5waHAKMjAxOC0xMC0wNCAwNzowMDoyMAkvb2JzZXJ2YXRvcnkucGhwCjIwMTgtMTAtMDQgMDc6MDA6NTkJL3ZsaWphbmlqZTIyLnBocAoyMDE4LTEwLTA0IDA3OjAyOjUwCS92bGlqYW5pamUyOS5waHAKMjAxOC0xMC0wNCAwNzowMzo0NwkvdmxpamFuaWplMjAucGhwCjIwMTgtMTAtMDQgMDc6MDc6NDkJL3ZsaWphbmlqZTExLnBocAoyMDE4LTEwLTA0IDA3OjUxOjE5CS92bGlqYW5pamUzMi5waHAKMjAxOC0xMC0wNCAwOTowODo1NgkvdmxpamFuaWplMjEucGhwCjIwMTgtMTAtMDQgMDk6Mjg6NTMJL3ZsaWphbmlqZTI3LnBocAoyMDE4LTEwLTA0IDA5OjQ5OjEyCS9ib21iYXJkaXJvdmthLnBocAoyMDE4LTEwLTA0IDA5OjU5OjExCS9wc2lob2xvZzE0LnBocAoyMDE4LTEwLTA0IDEwOjE5OjMzCS9ub3YzLnBocAoyMDE4LTEwLTA0IDEwOjI0OjE3CS92bGlqYW5pamUyNi5waHAKMjAxOC0xMC0wNCAxMToyOTo0NQkvdmxpamFuaWplMzAucGhwCjIwMTgtMTAtMDQgMTE6Mzg6NDIJL3ZsaWphbmlqZTE5LnBocAoyMDE4LTEwLTA0IDExOjQ5OjQyCS92bGlqYW5pamU3LnBocAoyMDE4LTEwLTA0IDEyOjU0OjMwCS92bGlqYW5pamUxNi5waHAKMjAxOC0xMC0wNCAxMzowMDo1MQkvdmxpamFuaWplOC5waHAKMjAxOC0xMC0wNCAxMzoxMDo1MQkvY29zbW82LnBocAoyMDE4LTEwLTA0IDE0OjAxOjE4CS9rYW1lbi5waHAKMjAxOC0xMC0wNCAxNDoxMDoxOAkvdmxpamFuaWplMzAucGhwCjIwMTgtMTAtMDQgMTQ6MTE6MDkJL3ZsaWphbmlqZTIwLnBocAoyMDE4LTEwLTA0IDE0OjMxOjE5CS92bGlqYW5pamUxNS5waHAKMjAxOC0xMC0wNCAxNToyNjowNgkvdmxpamFuaWplMTIucGhwCjIwMTgtMTAtMDQgMTY6NDE6NTMJL3BzaWhpYXRyaWphLnBocAoyMDE4LTEwLTA0IDE3OjU4OjQyCS9ncmF2aXRhY2lqYS5waHAKMjAxOC0xMC0wNCAxODowMzowNAkvcHJpbGl2LnBocAoyMDE4LTEwLTA0IDE4OjEzOjA5CS9wcmlsaXYucGhwCjIwMTgtMTAtMDQgMTk6MTM6NDkJL3ZsaWphbmlqZTM0LnBocAoyMDE4LTEwLTA0IDIwOjA0OjAzCS9jb3NtbzIucGhwCjIwMTgtMTAtMDQgMjA6MjM6NDIJL25vdjI1LnBocAoyMDE4LTEwLTA0IDIxOjU1OjMxCS92bGlqYW5pamUucGhwCjIwMTgtMTAtMDQgMjI6MjQ6NTgJL2ZhemEucGhwCjIwMTgtMTAtMDQgMjI6NTQ6NDUJL2ZhY3Rvci5waHAKMjAxOC0xMC0wNCAyMzoyNToxOAkvdmxpamFuaWplMjgucGhwCjIwMTgtMTAtMDUgMDA6NTU6NDkJL2FrdXNoZXIucGhwCjIwMTgtMTAtMDUgMDA6NTU6NTUJL2FrdXNoZXIucGhwCjIwMTgtMTAtMDUgMDM6NTA6NDYJL3BzaWhvbG9nNC5waHAKMjAxOC0xMC0wNSAwNDowMTowMAkvdmxpamFuaWplMzEucGhwCjIwMTgtMTAtMDUgMDQ6MTE6MTMJL25vdjYucGhwCjIwMTgtMTAtMDUgMDU6MjE6NDQJL2Nvc21vMy5waHAKMjAxOC0xMC0wNSAwNTozMToyOQkvbmV3cy5waHAKMjAxOC0xMC0wNSAwNTo0MToyNQkvc3VpY2lkLnBocAoyMDE4LTEwLTA1IDA2OjUxOjIwCS8zMGRuZXkyLnBocAoyMDE4LTEwLTA1IDExOjA1OjAzCS90cmF2bWEucGhwCjIwMTgtMTAtMDUgMTE6Mzk6MDUJL2ZhY3Rvci5waHAKMjAxOC0xMC0wNSAxMjo1NDoyNwkvcHJpbGl2LnBocAoyMDE4LTEwLTA1IDE0OjEwOjE1CS8zMGRuZXkucGhwCjIwMTgtMTAtMDUgMTc6NDY6NTEJL3BzaWhvbG9nLnBocAoyMDE4LTEwLTA1IDIxOjE3OjIyCS92bGlqYW5pamU3LnBocAoyMDE4LTEwLTA1IDIxOjU2OjUzCS92bGlqYW5pamU3LnBocAoyMDE4LTEwLTA2IDA4OjUyOjQ1CS9mYXphLnBocAoyMDE4LTEwLTA2IDExOjMzOjE1CS9mYXphLnBocAoyMDE4LTEwLTA2IDE0OjMzOjEzCS9jb3NtbzIucGhwCjIwMTgtMTAtMDYgMjM6MTg6MjEJL3JpdG11Mi5waHAKMjAxOC0xMC0wNiAyMzoxOTo0NwkvY29zbW8zLnBocAoyMDE4LTEwLTA2IDIzOjI1OjAxCS9jb3NtbzQucGhwCjIwMTgtMTAtMDcgMDE6NTQ6MjUJL3JpdG11My5waHAKMjAxOC0xMC0wNyAwMzoxMDoxMwkva3Vyc3VzLnBocAoyMDE4LTEwLTA3IDA0OjI1OjQ4CS9jb3NtbzYucGhwCjIwMTgtMTAtMDcgMDU6NDE6MzUJL3JpdG11NC5waHAKMjAxOC0xMC0wNyAwODoxMzoxOAkvMzBkbmV5Mi5waHAKMjAxOC0xMC0wNyAwOToyODo1OQkvMzBkbmV5NC5waHAKMjAxOC0xMC0wNyAxMDo0NTowMAkvemFib2xldmFuaWplLnBocAoyMDE4LTEwLTA3IDEyOjAwOjM1CS9ib21iYXJkaXJvdmthLnBocAoyMDE4LTEwLTA3IDE2OjE5OjU0CS9yaXRtdTIucGhwCjIwMTgtMTAtMDcgMTc6MzA6MDcJL2ZlbnNodXkucGhwCjIwMTgtMTAtMDcgMTg6MTk6MzQJL3ZsaWphbmlqZTI2XzEucGhwCjIwMTgtMTAtMDcgMTg6NDA6MTQJLzFkZW4ucGhwCjIwMTgtMTAtMDcgMjA6MzA6NTgJL3BzaWhvbG9nMTIucGhwCjIwMTgtMTAtMDcgMjA6NTE6MDkJL29ic2VydmF0b3JpamEucGhwCjIwMTgtMTAtMDcgMjI6MDY6NTYJL2ZhemEucGhwCjIwMTgtMTAtMDcgMjM6MjM6MTkJL3BvbG4ucGhwCjIwMTgtMTAtMDcgMjM6NDE6NDgJL2RlanN0dmllLnBocAoyMDE4LTEwLTA4IDAwOjM4OjMyCS9ub3YyLnBocAoyMDE4LTEwLTA4IDAxOjU0OjE5CS9ub3YzLnBocAoyMDE4LTEwLTA4IDAyOjAyOjA0CS8zMGRuZXkucGhwCjIwMTgtMTAtMDggMDM6MTA6MDcJL25vdjkucGhwCjIwMTgtMTAtMDggMDQ6MjU6NDMJL2tvbnQucGhwCjIwMTgtMTAtMDggMDU6NDE6MzAJL25ld3MucGhwCjIwMTgtMTAtMDggMDY6NTg6MjcJL2RldGkucGhwCjIwMTgtMTAtMDggMDc6MzM6NDUJL3ZsaWphbmlqZTYucGhwCjIwMTgtMTAtMDggMDg6MTM6MjUJL25vdjUucGhwCjIwMTgtMTAtMDggMDk6Mjg6NTQJL25vdjQucGhwCjIwMTgtMTAtMDggMTA6NDY6MzAJL2ZhemE0LnBocAoyMDE4LTEwLTA4IDEzOjE2OjM4CS92bGlqYW5pamUyOS5waHAKMjAxOC0xMC0wOCAxNDo0Njo1Nwkvbm92MTMucGhwCjIwMTgtMTAtMDggMjM6NDg6NDkJL3ZsaWphbmlqZTMyLnBocAoyMDE4LTEwLTA5IDAzOjA4OjIyCS9ub3YxOC5waHAKMjAxOC0xMC0wOSAwNDozNzoyNgkvbXV6c2hpbmEucGhwCjIwMTgtMTAtMTAgMDM6MzI6MTEJLzFkZW4ucGhwCjIwMTgtMTAtMTAgMDM6MzI6MjIJLzFkZW4ucGhwCjIwMTgtMTAtMTAgMTY6MDU6NDcJL25vdjcucGhwCjIwMTgtMTAtMTAgMTc6MjE6MzUJL25vdjEyLnBocAoyMDE4LTEwLTEwIDE4OjM5OjAxCS9kZXRpMi5waHAKMjAxOC0xMC0xMCAxOTo1Mzo1MgkvY29zbW8ucGhwCjIwMTgtMTAtMTAgMjE6MDg6NTgJL25vdjIxLnBocAoyMDE4LTEwLTEwIDIyOjI0OjQ3CS9sdW5raS5waHAKMjAxOC0xMC0xMCAyMzo0MDozNAkvbm92MTYucGhwCjIwMTgtMTAtMTEgMDA6NTY6MjEJL25vdjE4LnBocAoyMDE4LTEwLTExIDAyOjEzOjEwCS9ub3YyMy5waHAKMjAxOC0xMC0xMSAwMzoyODowNgkvZHJldm4ucGhwCjIwMTgtMTAtMTEgMDg6MzA6NTUJL2RlanN0dmllLnBocAoyMDE4LTEwLTExIDA5OjQ2OjQzCS9tb2dpbG5pay5waHAKMjAxOC0xMC0xMSAxMjoxOToxOAkvbWVoYW5pem0ucGhwCjIwMTgtMTAtMTEgMTM6MzQ6MDcJL211enNoaW5hLnBocAoyMDE4LTEwLTExIDE0OjQ5OjU1CS9ub3Y2LnBocAoyMDE4LTEwLTExIDE0OjU0OjIzCS9wc2lob2xvZzgucGhwCjIwMTgtMTAtMTEgMTU6NDQ6MjUJL3ZsaWphbmlqZTE5LnBocAoyMDE4LTEwLTExIDE2OjA1OjQyCS96YXRtZW5pZS5waHAKMjAxOC0xMC0xMSAxNjo0NjowNgkvZ3Jhdml0YWNpamEucGhwCjIwMTgtMTAtMTEgMTc6MDY6NDgJL21laGFuaXptLnBocAoyMDE4LTEwLTExIDE3OjIxOjMwCS92bGlqYW5pamUyNl8yLnBocAoyMDE4LTEwLTExIDE3OjQ3OjQ4CS9jcmltaW5hbC5waHAKMjAxOC0xMC0xMSAxODozODowNwkvc3RvamFjaGllX2thbW5pLnBocAoyMDE4LTEwLTExIDIzOjE3OjA3CS9kZWpzdHZpZTMucGhwCjIwMTgtMTAtMTEgMjM6NDQ6MzQJL25vdjE1LnBocAoyMDE4LTEwLTExIDIzOjU3OjEzCS9ub3YyMC5waHAKMjAxOC0xMC0xMSAyMzo1ODoyMAkvbm92MTEucGhwCjIwMTgtMTAtMTIgMDA6MTg6NDQJL2ZhemEucGhwCjIwMTgtMTAtMTIgMDI6NDU6NDkJL2ZhemEucGhwCjIwMTgtMTAtMTIgMDI6NDY6MTQJL3BzaWhvbG9nLnBocAoyMDE4LTEwLTEyIDAzOjU4OjQ3CS96ZW5zaGluYS5waHAKMjAxOC0xMC0xMiAwNDo1NToyMQkvbm92MjIucGhwCjIwMTgtMTAtMTIgMDQ6NTY6MjUJL25vdjE0LnBocAoyMDE4LTEwLTEyIDA0OjU3OjI5CS9wc2lob2xvZzYucGhwCjIwMTgtMTAtMTIgMDQ6NTk6MDQJL25vdjI0LnBocAoyMDE4LTEwLTEyIDA1OjE2OjIxCS9ub3YxNy5waHAKMjAxOC0xMC0xMiAwNTo1NjoyNgkvdmxpamFuaWplMjgucGhwCjIwMTgtMTAtMTIgMDY6MzM6NDYJL3ZsaWphbmlqZS5waHAKMjAxOC0xMC0xMiAwNzo1MDoyNAkvbm92MTkucGhwCjIwMTgtMTAtMTIgMDk6MDM6NDQJL3NrbG9uZW5pZS5waHAKMjAxOC0xMC0xMiAxMDoxOTozMwkvcHNpaG9sb2c3LnBocAoyMDE4LTEwLTEyIDExOjEzOjU2CS9kZXRpLnBocAoyMDE4LTEwLTEyIDEyOjUxOjA4CS9wc2lob2xvZzUucGhwCjIwMTgtMTAtMTIgMTQ6MDY6NTUJL3BzaWhvbG9nOC5waHAKMjAxOC0xMC0xMiAxNDo1NjoyOQkvbm92MTkucGhwCjIwMTgtMTAtMTIgMTU6MjU6NTUJL3BzaWhvbG9nNC5waHAKMjAxOC0xMC0xMiAxNjozOToxMgkvcHNpaG9sb2cyLnBocAoyMDE4LTEwLTEyIDE4OjAzOjU3CS90ZW1wbF92dWQucGhwCjIwMTgtMTAtMTIgMTk6MTA6MDcJL3BzaWhvbG9nMy5waHAKMjAxOC0xMC0xMiAyMDozMDozOAkvcHNpaG9sb2c5LnBocAoyMDE4LTEwLTEyIDIxOjQxOjQzCS9kZWpzdHZpZTMucGhwCjIwMTgtMTAtMTIgMjE6NTI6NTIJL3BzaWhvbG9nMTIucGhwCjIwMTgtMTAtMTIgMjE6NTM6NDIJL3BzaWhvbG9nMTMucGhwCjIwMTgtMTAtMTIgMjE6NTQ6NDkJL3ZsaWphbmlqZTcucGhwCjIwMTgtMTAtMTIgMjE6NTU6NTIJL3ZsaWphbmlqZTMucGhwCjIwMTgtMTAtMTIgMjE6NTg6MTAJL3BlcmlvZF8xXzMucGhwCjIwMTgtMTAtMTIgMjI6NDA6MDMJL3BzaWhvbG9nMTEucGhwCjIwMTgtMTAtMTIgMjM6NTU6MzgJL2x1bm5rYWxlbmQucGhwCjIwMTgtMTAtMTMgMDE6MTE6MjUJL3BzaWhvbG9nMTQucGhwCjIwMTgtMTAtMTMgMDg6MjY6MzcJLzMwZG5leTMucGhwCjIwMTgtMTAtMTMgMDg6MjY6NDAJL25vdjQucGhwCjIwMTgtMTAtMTMgMDg6MjY6NTQJL3BvbG4ucGhwCjIwMTgtMTAtMTMgMjM6MDk6MjIJLzMwZG5leTMucGhwCjIwMTgtMTAtMTQgMDQ6MDk6MzkJL3BzaWhvbG9nNi5waHAKMjAxOC0xMC0xNCAxNTozODowNQkvZGV0aTIucGhwCjIwMTgtMTAtMTQgMTY6NTk6NTUJL3ZsaWphbmlqZTEzLnBocAoyMDE4LTEwLTE0IDE3OjAwOjI4CS9wc2lob2xvZzYucGhwCjIwMTgtMTAtMTQgMTg6MjE6NDQJL3BzaWhvbG9nNi5waHAKMjAxOC0xMC0xNCAyMTozMjowNwkvdm96bXVzaGVuaWUucGhwCjIwMTgtMTAtMTQgMjI6NTI6MDIJL3ZsaWphbmlqZTcucGhwCjIwMTgtMTAtMTUgMTQ6MTk6MTcJL2dyYXZpdGFjaWphLnBocAoyMDE4LTEwLTE1IDE1OjQwOjQ4CS9wc2loaWF0cmlqYS5waHAKMjAxOC0xMC0xNSAxNjo1NTo0MgkvemFib2xldmFuaWplLnBocAoyMDE4LTEwLTE1IDE5OjIzOjM4CS9vYnNlcnZhdG9yaWphLnBocAoyMDE4LTEwLTE1IDIyOjA4OjQwCS9yaXRtdTQucGhwCjIwMTgtMTAtMTYgMTc6MTk6MzIJL3ZsaWphbmlqZTE3LnBocAoyMDE4LTEwLTE2IDE4OjMzOjUwCS92bGlqYW5pamUxNi5waHAKMjAxOC0xMC0xNiAxOTo0OTozOAkvdmxpamFuaWplMjIucGhwCjIwMTgtMTAtMTcgMTI6MTU6NDEJL2RldGkucGhwCjIwMTgtMTAtMTcgMTM6MzA6MzYJL25vdjkucGhwCjIwMTgtMTAtMTcgMTQ6NDY6MjMJL25vdjMucGhwCjIwMTgtMTAtMTcgMTY6MDg6MDYJL25ld3MucGhwCjIwMTgtMTAtMTcgMTc6MjI6NDgJL25vdjIucGhwCjIwMTgtMTAtMTcgMjI6MTc6MDcJL2RldGkyLnBocAoyMDE4LTEwLTE3IDIyOjE4OjA1CS9ub3YxNi5waHAKMjAxOC0xMC0xNyAyMjoyMTo1NQkvbHVua2kucGhwCjIwMTgtMTAtMTcgMjI6Mjc6NDgJL25vdjE4LnBocAoyMDE4LTEwLTE3IDIyOjU1OjU1CS9ub3YyMy5waHAKMjAxOC0xMC0xOCAwMDoxMzozMgkvY29zbW8ucGhwCjIwMTgtMTAtMTggMDE6Mjg6NTgJL2RyZXZuLnBocAoyMDE4LTEwLTE4IDAyOjIzOjU2CS96YXRtZW5pZS5waHAKMjAxOC0xMC0xOCAwMjo0NjozNQkvbm92MjEucGhwCjIwMTgtMTAtMTggMDM6MzI6MTkJL2ZhemEucGhwCjIwMTgtMTAtMTggMDU6MDA6NTYJL25vdjIwLnBocAoyMDE4LTEwLTE4IDA1OjQwOjEyCS9mYXphLnBocAoyMDE4LTEwLTE4IDEwOjU0OjQzCS9rb250LnBocAoyMDE4LTEwLTE4IDEwOjU1OjU1CS9ub3Y1LnBocAoyMDE4LTEwLTE4IDEwOjU3OjIzCS9mYXphLnBocAoyMDE4LTEwLTE4IDEwOjU4OjUyCS9mYXphNC5waHAKMjAxOC0xMC0xOCAxMTozMzo0Mgkvbm92MjUucGhwCjIwMTgtMTAtMTggMTI6NDk6MzAJL25vdjEwLnBocAoyMDE4LTEwLTE4IDEzOjA1OjU5CS9tZXN0YS5waHAKMjAxOC0xMC0xOCAxMzowODoyMgkvZmFjdG9yLnBocAoyMDE4LTEwLTE4IDEzOjA5OjEzCS9wcmlsaXYucGhwCjIwMTgtMTAtMTggMTM6MTA6MDIJL3N1aWNpZC5waHAKMjAxOC0xMC0xOCAxMzo1ODoyMgkvZGVqc3R2aWUyLnBocAoyMDE4LTEwLTE4IDE0OjEwOjUxCS9yaXRtdTMucGhwCjIwMTgtMTAtMTggMTU6MjY6MzkJL2Nvc21vNC5waHAKMjAxOC0xMC0xOCAxNjowOTo0NgkvMzBkbmV5My5waHAKMjAxOC0xMC0xOCAxNjo0Mzo1OQkvdHJhdm1hLnBocAoyMDE4LTEwLTE4IDE2OjUxOjUwCS92bGlqYW5pamUxNS5waHAKMjAxOC0xMC0xOCAxOTowNDoxMgkvdmxpamFuaWplNy5waHAKMjAxOC0xMC0xOCAxOToxNDowMwkvY29zbW81LnBocAoyMDE4LTEwLTE4IDIwOjI5OjUxCS9jb3NtbzIucGhwCjIwMTgtMTAtMTggMjE6NDU6NTgJL3JpdG11Mi5waHAKMjAxOC0xMC0xOCAyMzowNzoyOQkvY29zbW82LnBocAoyMDE4LTEwLTE5IDAxOjM0OjA1CS9yaXRtdTQucGhwCjIwMTgtMTAtMTkgMDI6NDg6NTAJL2t1cnN1cy5waHAKMjAxOC0xMC0xOSAwNDowNDozOAkvMzBkbmV5NC5waHAKMjAxOC0xMC0xOSAwNToyMDoxMwkvMzBkbmV5Mi5waHAKMjAxOC0xMC0xOSAwNzozOTo1OQkvbm92MS5waHAKMjAxOC0xMC0xOSAwNzo1MTo0OQkvYWt1c2hlci5waHAKMjAxOC0xMC0xOSAxMjoxMzowOAkvdmxpamFuaWplNy5waHAKMjAxOC0xMC0xOSAxOTo1Mzo1OQkvcml0bXUzLnBocAoyMDE4LTEwLTIwIDA0OjU4OjUzCS9ib21iYXJkaXJvdmthLnBocAoyMDE4LTEwLTIwIDA1OjMzOjM3CS90cmF2bWEucGhwCjIwMTgtMTAtMjAgMDc6NTI6NTgJL3ZsaWphbmlqZTI2XzIucGhwCjIwMTgtMTAtMjEgMDM6MTQ6MjUJL3BzaWhvbG9nNi5waHAKMjAxOC0xMC0yMSAwNDozNTozNAkvbm92MTAucGhwCjIwMTgtMTAtMjEgMDU6MzQ6MzAJL3ByaWxpdi5waHAKMjAxOC0xMC0yMSAwNjoyMDozNgkvdm96bXVzaGVuaWUucGhwCjIwMTgtMTAtMjEgMTQ6MzA6MTQJL3ZsaWphbmlqZTYucGhwCjIwMTgtMTAtMjEgMTU6NDY6MDIJL3BhbWphdG5pa2kucGhwCjIwMTgtMTAtMjEgMTc6MDE6NTAJL3BzaWhvbG9nMTAucGhwCjIwMTgtMTAtMjEgMTg6MTg6MjIJL3ZsaWphbmlqZTgucGhwCjIwMTgtMTAtMjEgMTk6MzM6MzMJL3ZsaWphbmlqZTUucGhwCjIwMTgtMTAtMjIgMDE6NTI6NTUJL3BzaWhvbG9nMi5waHAKMjAxOC0xMC0yMiAwMzowODoxMgkvcHNpaG9sb2c1LnBocAoyMDE4LTEwLTIyIDA0OjIzOjQ3CS90ZW1wbF92dWQucGhwCjIwMTgtMTAtMjIgMTQ6NDM6MDkJL3phdG1lbmllLnBocAoyMDE4LTEwLTIyIDE4OjA0OjM4CS9wcmlsaXYucGhwCjIwMTgtMTAtMjMgMDg6NDI6NTEJL3ByaWxpdi5waHAKMjAxOC0xMC0yMyAxOTo0OTowMAkvZmF6YS5waHAKMjAxOC0xMC0yMyAyMToxODo1NgkvZmF6YS5waHAKMjAxOC0xMC0yNCAwMTo0ODo1NwkvdmxpamFuaWplMjEucGhwCjIwMTgtMTAtMjQgMDk6MDA6NTcJL3ZsaWphbmlqZTYucGhwCjIwMTgtMTAtMjQgMTk6NDg6NTYJL2Nvc21vNC5waHAKMjAxOC0xMC0yNCAyMDoyNDo1Mgkvbm92MS5waHAKMjAxOC0xMC0yNSAwNjo0NjoxMgkvcHNpaG9sb2cyLnBocAoyMDE4LTEwLTI1IDExOjUzOjU5CS9jb3NtbzQucGhwCjIwMTgtMTAtMjUgMTc6NDY6MzEJL3ZsaWphbmlqZTcucGhwCjIwMTgtMTAtMjUgMTc6NDg6MjcJL3ZsaWphbmlqZTcucGhwCjIwMTgtMTAtMjUgMTg6MDM6MTcJL3BzaWhvbG9nNC5waHAKMjAxOC0xMC0yNSAxOTowNDo0NQkvY29zbW8zLnBocAoyMDE4LTEwLTI1IDE5OjEyOjIzCS9ub3Y2LnBocAoyMDE4LTEwLTI1IDE5OjIxOjUxCS8zMGRuZXkyLnBocAoyMDE4LTEwLTI1IDIwOjE5OjAwCS9ub3Y3LnBocAoyMDE4LTEwLTI1IDIxOjA5OjIxCS92bGlqYW5pamUucGhwCjIwMTgtMTAtMjUgMjI6MDU6NTAJL25vdjEwLnBocAoyMDE4LTEwLTI1IDIyOjQ5OjU1CS9ub3YyMi5waHAKMjAxOC0xMC0yNiAwMDowNTo0Mwkvbm92MTkucGhwCjIwMTgtMTAtMjYgMDE6MjE6MzEJL3BvbG4ucGhwCjIwMTgtMTAtMjYgMDI6Mzg6MjAJL25vdjQucGhwCjIwMTgtMTAtMjYgMDM6NTM6MDgJL3BzaWhvbG9nNy5waHAKMjAxOC0xMC0yNiAxMToyOTowOAkvZGVqc3R2aWUzLnBocAoyMDE4LTEwLTI2IDEyOjQzOjUxCS9wc2lob2xvZzQucGhwCjIwMTgtMTAtMjYgMTM6NTk6MTcJL3BzaWhvbG9nOC5waHAKMjAxOC0xMC0yNiAxNToxNTowNQkvcHNpaG9sb2czLnBocAoyMDE4LTEwLTI2IDE2OjMwOjUzCS9wc2lob2xvZzkucGhwCjIwMTgtMTAtMjYgMTc6NDE6NDIJL3ZsaWphbmlqZTcucGhwCjIwMTgtMTAtMjYgMTc6NDY6NDAJL3BzaWhvbG9nMTMucGhwCjIwMTgtMTAtMjYgMTk6MDI6NDEJL3ZsaWphbmlqZTMucGhwCjIwMTgtMTAtMjYgMjA6MTg6MTYJL2x1bm5rYWxlbmQucGhwCjIwMTgtMTAtMjYgMjE6MzQ6MDMJL3ZsaWphbmlqZTcucGhwCjIwMTgtMTAtMjYgMjI6NDk6NTAJL3BzaWhvbG9nMTQucGhwCjIwMTgtMTAtMjcgMDA6MDU6MzgJL3BlcmlvZF8xXzMucGhwCjIwMTgtMTAtMjcgMDE6MjE6MjYJL3BzaWhvbG9nMTIucGhwCjIwMTgtMTAtMjcgMDE6Mjc6NTYJL3BzaWhvbG9nMTEucGhwCjIwMTgtMTAtMjcgMDE6Mjk6MDYJL2dyYXZpdGFjaWphLnBocAoyMDE4LTEwLTI3IDAxOjMxOjE4CS9tb2dpbG5pay5waHAKMjAxOC0xMC0yNyAwMTozOTowMQkvbXV6c2hpbmEucGhwCjIwMTgtMTAtMjcgMTE6MDE6MDIJL25vdjIwLnBocAoyMDE4LTEwLTI3IDIwOjQzOjQ4CS9ub3YyMC5waHAKMjAxOC0xMC0yOCAwNTo1NTozNgkvbm92MjAucGhwCjIwMTgtMTAtMjggMTI6MDA6NTYJL25vdjE3LnBocAoyMDE4LTEwLTI4IDEzOjE2OjQzCS9ub3YyMC5waHAKMjAxOC0xMC0yOSAwODo1NDoxNQkvcHNpaG9sb2c2LnBocAoyMDE4LTEwLTI5IDE3OjU3OjMwCS9mYXphLnBocAoyMDE4LTEwLTI5IDE4OjI3OjE2CS9mYXphLnBocAoyMDE4LTEwLTMwIDA0OjIyOjE1CS9ub3YyNC5waHAKMjAxOC0xMC0zMCAwNDo1NTozOQkvbm92MTUucGhwCjIwMTgtMTAtMzAgMDY6MTE6MjYJL25vdjE0LnBocAoyMDE4LTEwLTMwIDA3OjI3OjQ0CS9ub3YxMS5waHAKMjAxOC0xMC0zMCAwODo0MzoyMAkvY29zbW8zLnBocAoyMDE4LTEwLTMwIDA5OjU4OjUwCS9wc2lob2xvZzYucGhwCjIwMTgtMTAtMzAgMTM6NDY6MTMJL3NrbG9uZW5pZS5waHAKMjAxOC0xMC0zMCAxNTowMjowMQkvemF0bWVuaWUucGhwCjIwMTgtMTAtMzAgMTY6MzM6MzMJL3plbnNoaW5hLnBocAoyMDE4LTEwLTMwIDE3OjM3OjA0CS9kZWpzdHZpZS5waHAKMjAxOC0xMC0zMCAyMToyODoxOAkvdmxpamFuaWplMTEucGhwCjIwMTgtMTAtMzAgMjI6NDk6NTQJL3BzaWhvbG9nLnBocAoyMDE4LTEwLTMxIDAwOjA0OjE2CS9tZWhhbml6bS5waHAKMjAxOC0xMC0zMSAwMToyMjoyNQkvdmxpamFuaWplLnBocAoyMDE4LTEwLTMxIDAyOjI4OjQ4CS9saW5peWFfdml6LnBocAoyMDE4LTEwLTMxIDEwOjAxOjAwCS92bGlqYW5pamU5LnBocAoyMDE4LTEwLTMxIDExOjE0OjM2CS9zdmV0bHUxZGVuLnBocAoyMDE4LTEwLTMxIDEyOjMwOjIzCS92bGlqYW5pamU0LnBocAoyMDE4LTEwLTMxIDEzOjQ2OjExCS92bGlqYW5pamUxMC5waHAKMjAxOC0xMC0zMSAxNDoyNzozOQkvcHNpaG9sb2cxMS5waHAKMjAxOC0xMC0zMSAxNTowMTo1OQkvdmxpamFuaWplMzIucGhwCjIwMTgtMTAtMzEgMTY6MTg6MTkJL3ZsaWphbmlqZTEyLnBocAoyMDE4LTEwLTMxIDE2OjU4OjUxCS92bGlqYW5pamU3LnBocAoyMDE4LTEwLTMxIDE3OjMzOjM2CS92bGlqYW5pamUyMS5waHAKMjAxOC0xMC0zMSAxODo0OToyMgkvdmxpamFuaWplMjAucGhwCjIwMTgtMTAtMzEgMjA6MDU6MTIJL3ZsaWphbmlqZTE4LnBocAoyMDE4LTEwLTMxIDIxOjIwOjU4CS92bGlqYW5pamUyNi5waHAKMjAxOC0xMC0zMSAyMToyOToxNgkvdmxpamFuaWplMTMucGhwCjIwMTgtMTAtMzEgMjE6MzA6MDAJL29ic2VydmF0b3J5LnBocAoyMDE4LTEwLTMxIDIxOjMxOjIwCS92bGlqYW5pamUyNy5waHAKMjAxOC0xMC0zMSAyMTozMjowMQkvdmxpamFuaWplMjgucGhwCjIwMTgtMTAtMzEgMjM6Mjg6MTQJL3Zvem11c2hlbmllLnBocAoyMDE4LTExLTAxIDAwOjI4OjQzCS92bGlqYW5pamUyOS5waHAKMjAxOC0xMS0wMSAwMTo0NDoyMgkvdmxpamFuaWplMzAucGhwCjIwMTgtMTEtMDEgMDI6MTA6MDgJL3ZsaWphbmlqZTE1LnBocAoyMDE4LTExLTAxIDAyOjEwOjUyCS92bGlqYW5pamUyNC5waHAKMjAxOC0xMS0wMSAwMjoxMjoxOAkvbmV0b2Nobm9zdGkucGhwCjIwMTgtMTEtMDEgMDI6MTM6MTIJL3ZsaWphbmlqZTMzLnBocAoyMDE4LTExLTAxIDAyOjE0OjE2CS92bGlqYW5pamUxOS5waHAKMjAxOC0xMS0wMSAwMjo1NToyOAkvdmxpamFuaWplMzQucGhwCjIwMTgtMTEtMDEgMDQ6MTE6MDMJL3ZsaWphbmlqZTI2XzIucGhwCjIwMTgtMTEtMDEgMDU6MjY6NTcJL3ZsaWphbmlqZTI2XzEucGhwCjIwMTgtMTEtMDEgMDY6NDI6NDYJL2JvbWJhcmRpcm92a2EucGhwCjIwMTgtMTEtMDEgMDk6Mjg6MDMJL25vdjE2LnBocAoyMDE4LTExLTAxIDExOjU1OjE0CS92bGlqYW5pamUyNS5waHAKMjAxOC0xMS0wMSAyMDozNjoyNgkvZGV0aTIucGhwCjIwMTgtMTEtMDEgMjE6NTI6NDMJL2Nvc21vLnBocAoyMDE4LTExLTAxIDIzOjA4OjAzCS9ub3YyMS5waHAKMjAxOC0xMS0wMiAwMDoyMzo1MQkvbHVua2kucGhwCjIwMTgtMTEtMDIgMDE6Mzk6NDEJL25vdjE2LnBocAoyMDE4LTExLTAyIDAyOjU1OjI3CS9ub3YxOC5waHAKMjAxOC0xMS0wMiAwNDoxMTowMQkvbm92MjMucGhwCjIwMTgtMTEtMDIgMDU6MjY6NTAJL2RyZXZuLnBocAoyMDE4LTExLTAyIDA4OjQwOjIwCS9uZXdzLnBocAoyMDE4LTExLTAyIDA5OjUwOjA2CS9ub3YyMC5waHAKMjAxOC0xMS0wMiAxMDozMDowMQkvc3RvamFjaGllX2thbW5pLnBocAoyMDE4LTExLTAyIDE0OjMwOjIxCS96YXRtZW5pZS5waHAKMjAxOC0xMS0wMiAxNTo0MTozMgkvMWRlbi5waHAKMjAxOC0xMS0wMiAyMTo1NDoyOQkvcHNpaG9sb2c2LnBocAoyMDE4LTExLTAzIDAxOjUxOjA2CS9uZXdzLnBocAoyMDE4LTExLTAzIDAzOjA1OjAzCS9ub3YyLnBocAoyMDE4LTExLTAzIDAzOjMwOjI0CS9wc2lob2xvZzYucGhwCjIwMTgtMTEtMDMgMDQ6MTk6MDYJL25vdjMucGhwCjIwMTgtMTEtMDMgMDQ6MzQ6NDEJL3phdG1lbmllLnBocAoyMDE4LTExLTAzIDA1OjM0OjQzCS9mYXphLnBocAoyMDE4LTExLTAzIDA2OjUwOjMxCS9kZXRpLnBocAoyMDE4LTExLTAzIDA4OjA0OjU3CS9wc2lob2xvZzYucGhwCjIwMTgtMTEtMDMgMDg6MDY6MTgJL25vdjkucGhwCjIwMTgtMTEtMDMgMDk6MjY6NTgJLzMwZG5leTMucGhwCjIwMTgtMTEtMDMgMTA6MDU6MjYJL3ZsaWphbmlqZTE4LnBocAoyMDE4LTExLTAzIDExOjU0OjM2CS9ub3Y1LnBocAoyMDE4LTExLTAzIDEyOjI2OjEzCS9kZXRpMi5waHAKMjAxOC0xMS0wMyAxMzoxMToyMAkva29udC5waHAKMjAxOC0xMS0wMyAxNDoyNToxNwkvbWVzdGEucGhwCjIwMTgtMTEtMDMgMTU6NDI6MjEJL25vdjEyLnBocAoyMDE4LTExLTAzIDE2OjU2OjUzCS9ub3YyNS5waHAKMjAxOC0xMS0wMyAxNjo1ODo1MwkvbmV3cy5waHAKMjAxOC0xMS0wNCAwNTozNzozNgkvcHNpaG9sb2c2LnBocAoyMDE4LTExLTA0IDEzOjM1OjM0CS9mYXphLnBocAoyMDE4LTExLTA0IDEzOjQ1OjQ0CS9mYXphLnBocAoyMDE4LTExLTA0IDE1OjQxOjA1CS9mYXphNC5waHAKMjAxOC0xMS0wNCAyMDoyMjo1MQkvbm92MjUucGhwCjIwMTgtMTEtMDQgMjI6MDA6MTgJL2t1cnN1cy5waHAKMjAxOC0xMS0wNSAwNDoxMzo1MgkvcG9sbi5waHAKMjAxOC0xMS0wNSAxMzowODo0MQkvbm92My5waHAKMjAxOC0xMS0wNSAyMDo1MTozNgkvMzBkbmV5LnBocAoyMDE4LTExLTA1IDIxOjMyOjQ2CS9ub3YxMy5waHAKMjAxOC0xMS0wNSAyMjo1NTowNAkvbm92MjAucGhwCjIwMTgtMTEtMDYgMDc6MzA6MDEJL3ZsaWphbmlqZTUucGhwCjIwMTgtMTEtMDYgMDg6NDU6NTEJL3ZsaWphbmlqZTYucGhwCjIwMTgtMTEtMDYgMTA6MDE6MzgJL3BhbWphdG5pa2kucGhwCjIwMTgtMTEtMDYgMTE6MTc6MjYJL3BzaWhvbG9nMTAucGhwCjIwMTgtMTEtMDYgMTI6MzM6NDUJL3N1aWNpZC5waHAKMjAxOC0xMS0wNiAyMTo0MDoyMgkvemF0bWVuaWUucGhwCjIwMTgtMTEtMDcgMTM6Mzg6MDAJL25ld3MucGhwCjIwMTgtMTEtMDcgMTM6NDk6MTIJL3ByaWxpdi5waHAKMjAxOC0xMS0wNyAxNTowNDo0NAkvY29zbW80LnBocAoyMDE4LTExLTA3IDE2OjIwOjMyCS9yaXRtdTQucGhwCjIwMTgtMTEtMDcgMTc6NDI6MDUJL3RyYXZtYS5waHAKMjAxOC0xMS0wOCAwNzo0MjozMgkvemF0bWVuaWUucGhwCjIwMTgtMTEtMDggMDk6NTM6MTQJL3ZsaWphbmlqZTIyLnBocAoyMDE4LTExLTA4IDEyOjAzOjE5CS9wcmlsaXYucGhwCjIwMTgtMTEtMDggMTU6NTM6NDcJL2x1bm5rYWxlbmQucGhwCjIwMTgtMTEtMDggMTY6MjQ6MzAJL3ZsaWphbmlqZTIxLnBocAoyMDE4LTExLTA4IDE5OjA1OjAxCS9ub3YxMi5waHAKMjAxOC0xMS0wOCAxOToxNDo1NAkvcHNpaGlhdHJpamEucGhwCjIwMTgtMTEtMDkgMDI6MTk6NDEJL25vdjcucGhwCjIwMTgtMTEtMDkgMDI6MjE6MDkJL25vdjYucGhwCjIwMTgtMTEtMDkgMDI6MjU6MjEJL2RldGkyLnBocAoyMDE4LTExLTA5IDAzOjA1OjU3CS9ub3YyMi5waHAKMjAxOC0xMS0wOSAwNDoyMTozMgkvbm92MTQucGhwCjIwMTgtMTEtMDkgMDU6NDA6MTAJL25vdjE2LnBocAoyMDE4LTExLTEwIDA0OjEyOjEyCS9jb3NtbzMucGhwCjIwMTgtMTEtMTAgMDg6NTQ6MzEJL2ZhemEucGhwCjIwMTgtMTEtMTAgMDk6MTQ6NDIJL2ZhemEucGhwCjIwMTgtMTEtMTEgMTA6MjA6MTEJLzFkZW4ucGhwCjIwMTgtMTEtMTEgMTE6MzA6NTUJL3phdG1lbmllLnBocAoyMDE4LTExLTExIDEyOjAwOjQzCS9kZWpzdHZpZS5waHAKMjAxOC0xMS0xMSAxMzowMDoyMwkvdm96bXVzaGVuaWUucGhwCjIwMTgtMTEtMTEgMTM6NDA6NDAJL3phYm9sZXZhbmlqZS5waHAKMjAxOC0xMS0xMSAxNDowMDo0MAkvY29zbW81LnBocAoyMDE4LTExLTExIDE1OjUyOjE3CS9wb2xuLnBocAoyMDE4LTExLTExIDE3OjAwOjAxCS9ub3Y0LnBocAoyMDE4LTExLTExIDE5OjIxOjI0CS92bGlqYW5pamUzMi5waHAKMjAxOC0xMS0xMiAwMDoxMjoyMQkvemF0bWVuaWUucGhwCjIwMTgtMTEtMTIgMDM6Mjc6NDIJL3Zvem11c2hlbmllLnBocAoyMDE4LTExLTEyIDA1OjEzOjAxCS9zdmV0bHUxZGVuLnBocAoyMDE4LTExLTEyIDA4OjIwOjU4CS9kZXRpLnBocAoyMDE4LTExLTEyIDA5OjM2OjQ1CS9ub3Y5LnBocAoyMDE4LTExLTEyIDEwOjU2OjIzCS9ub3YzLnBocAoyMDE4LTExLTEyIDEzOjI0OjE2CS9uZXdzLnBocAoyMDE4LTExLTEyIDE0OjM5OjU5CS9ub3YyLnBocAoyMDE4LTExLTEyIDE1OjU1OjQ1CS9rb250LnBocAoyMDE4LTExLTEyIDE4OjI4OjA1CS9kZWpzdHZpZS5waHAKMjAxOC0xMS0xMiAxOTo0MzowOAkvbW9naWxuaWsucGhwCjIwMTgtMTEtMTIgMjI6MTQ6NDQJL21laGFuaXptLnBocAoyMDE4LTExLTEyIDIzOjMwOjMxCS9tdXpzaGluYS5waHAKMjAxOC0xMS0xMyAwMDo0NjoxOQkvemF0bWVuaWUucGhwCjIwMTgtMTEtMTMgMDA6NDc6MTAJLzFkZW4ucGhwCjIwMTgtMTEtMTMgMDA6NTA6MTMJLzFkZW4ucGhwCjIwMTgtMTEtMTMgMTY6MDQ6MjIJL2FrdXNoZXIucGhwCjIwMTgtMTEtMTMgMTg6MTQ6MzMJL3ZsaWphbmlqZTI0LnBocAoyMDE4LTExLTEzIDE5OjM0OjM0CS8zMGRuZXk0LnBocAoyMDE4LTExLTEzIDIyOjAzOjI0CS9tZXN0YS5waHAKMjAxOC0xMS0xNCAwNzowODoyNQkvdmxpamFuaWplMjZfMi5waHAKMjAxOC0xMS0xNSAwNDo0MTozNQkvdmxpamFuaWplMjYucGhwCjIwMTgtMTEtMTUgMDU6NTI6MDMJL25vdjE4LnBocAoyMDE4LTExLTE1IDA2OjMyOjA5CS9wc2lob2xvZzgucGhwCjIwMTgtMTEtMTUgMDc6NDM6MDAJL25vdjIucGhwCjIwMTgtMTEtMTUgMTA6NTg6MTEJL25vdjUucGhwCjIwMTgtMTEtMTUgMTI6MTQ6MDEJL2ZhemEucGhwCjIwMTgtMTEtMTUgMTM6Mjk6NDgJL2Nvc21vMy5waHAKMjAxOC0xMS0xNSAxNDo0NTozNgkvZmF6YTQucGhwCjIwMTgtMTEtMTUgMTc6MjA6NTgJL25vdjI1LnBocAoyMDE4LTExLTE2IDAwOjAzOjI0CS9mYXphLnBocAoyMDE4LTExLTE2IDAwOjA2OjI0CS9mYXphLnBocAoyMDE4LTExLTE2IDIxOjU1OjU2CS9mYXphLnBocAoyMDE4LTExLTE2IDIzOjA2OjQ1CS8xZGVuLnBocAoyMDE4LTExLTE2IDIzOjQ2OjA3CS9wc2lob2xvZzkucGhwCjIwMTgtMTEtMTcgMDE6MDY6NDkJL3ZsaWphbmlqZTcucGhwCjIwMTgtMTEtMTcgMDE6MzY6MzcJL2Nvc21vLnBocAoyMDE4LTExLTE3IDA5OjM1OjA4CS8xZGVuLnBocAoyMDE4LTExLTE3IDEzOjU3OjE3CS92bGlqYW5pamUyNy5waHAKMjAxOC0xMS0xNyAyMzoxMDozNQkvdmxpamFuaWplNy5waHAKMjAxOC0xMS0xOCAyMjo0NDoyMQkvbmV3cy5waHAKMjAxOC0xMS0xOSAwMjo0MToyNQkvZmFjdG9yLnBocAoyMDE4LTExLTE5IDAzOjExOjQ4CS9wc2lob2xvZzE0LnBocAoyMDE4LTExLTE5IDIyOjQ2OjQyCS9wc2loaWF0cmlqYS5waHAKMjAxOC0xMS0yMCAxMjowNzo0MgkvZGVqc3R2aWUzLnBocAoyMDE4LTExLTIwIDE0OjM1OjU2CS9wZXJpb2RfMV8zLnBocAoyMDE4LTExLTIwIDE5OjI5OjE4CS8xZGVuLnBocAoyMDE4LTExLTIxIDE0OjI2OjQyCS9mYXphLnBocAoyMDE4LTExLTIxIDE0OjM2OjQ2CS9mYXphLnBocAoyMDE4LTExLTIxIDIyOjM4OjMwCS8xZGVuLnBocAoyMDE4LTExLTIyIDA3OjQxOjE0CS8xZGVuLnBocAoyMDE4LTExLTIyIDEzOjAzOjAyCS9wcmlsaXYucGhwCjIwMTgtMTEtMjIgMjM6Mjg6MzIJL3ByaWxpdi5waHAKMjAxOC0xMS0yMyAwNToxMzozNAkvMWRlbi5waHAKMjAxOC0xMS0yNyAxNjoyNzozMgkvZmF6YS5waHAKMjAxOC0xMS0yNyAxNjozNzozMAkvZmF6YS5waHAKMjAxOC0xMS0yOSAwMjo0NTo1MAkvbm92MTUucGhwCjIwMTgtMTEtMjkgMDY6MDk6NDAJL25vdjExLnBocAoyMDE4LTExLTI5IDExOjA5OjQyCS9wc2lob2xvZzcucGhwCjIwMTgtMTEtMjkgMTY6MjQ6MDUJL2ZhemEucGhwCjIwMTgtMTEtMjkgMTY6NDU6NDUJL3ByaWxpdi5waHAKMjAxOC0xMS0yOSAxNzozOTo0Mgkvbm92Mi5waHAKMjAxOC0xMS0yOSAxODo1NToyOQkvbm92My5waHAKMjAxOC0xMS0yOSAyMDoxMToxNwkvbm92Ni5waHAKMjAxOC0xMS0zMCAwMTozOToyMgkvcHJpbGl2LnBocAoyMDE4LTExLTMwIDAzOjA5OjUwCS9wcmlsaXYucGhwCjIwMTgtMTEtMzAgMDY6NDU6MzIJL3ZsaWphbmlqZTIzLnBocAoyMDE4LTExLTMwIDA5OjIwOjQ0CS9ub3Y5LnBocAoyMDE4LTExLTMwIDA5OjI0OjM4CS9ub3Y3LnBocAoyMDE4LTExLTMwIDA5OjI3OjA4CS92bGlqYW5pamUyNl8xLnBocAoyMDE4LTExLTMwIDA5OjU0OjA3CS9rb250LnBocAoyMDE4LTExLTMwIDExOjA5OjU1CS9uZXdzLnBocAoyMDE4LTExLTMwIDEzOjQxOjMxCS9kZXRpLnBocAoyMDE4LTExLTMwIDE0OjU4OjMwCS9ub3Y1LnBocAoyMDE4LTEyLTAyIDIzOjUwOjA0CS9ub3YxOS5waHAKMjAxOC0xMi0wMyAwMDowOToxOAkvbm92MjQucGhwCjIwMTgtMTItMDMgMDA6MTk6MTAJL3ZsaWphbmlqZTQucGhwCjIwMTgtMTItMDMgMDE6MDk6NTIJL25vdjE2LnBocAoyMDE4LTEyLTAzIDAxOjQwOjM0CS9wc2lob2xvZzEwLnBocAoyMDE4LTEyLTAzIDAyOjI5OjU5CS9tb2dpbG5pay5waHAKMjAxOC0xMi0wMyAwNjo0MDoxMgkvZmF6YS5waHAKMjAxOC0xMi0wMyAwNzoxMDowMAkvZmF6YS5waHAKMjAxOC0xMi0wMyAxMTo1NTozMQkvbm92MTYucGhwCjIwMTgtMTItMDMgMTI6MzI6NDYJL3BzaWhvbG9nNi5waHAKMjAxOC0xMi0wMyAxNjoxNjoxNQkvbm92MTQucGhwCjIwMTgtMTItMDMgMjI6MDM6NTMJL25vdjE2LnBocAoyMDE4LTEyLTAzIDIyOjI4OjQzCS9ub3YyMi5waHAKMjAxOC0xMi0wNCAwNzo1MTo0NAkvMzBkbmV5My5waHAKMjAxOC0xMi0wNCAxMDo1NzoxNAkvMzBkbmV5NC5waHAKMjAxOC0xMi0wNCAxMjoyNjowOQkvZ3Jhdml0YWNpamEucGhwCjIwMTgtMTItMDQgMjE6MDc6MzYJL3ZsaWphbmlqZTcucGhwCjIwMTgtMTItMDUgMDM6MTU6NDAJL25vdjIwLnBocAoyMDE4LTEyLTA1IDE4OjEwOjE1CS9ub3YxNi5waHAKMjAxOC0xMi0wNSAyMDowMDozNAkvbm92MTYucGhwCjIwMTgtMTItMDYgMDQ6MTg6NDYJL3ZsaWphbmlqZTE3LnBocAoyMDE4LTEyLTA2IDA0OjU4OjI5CS92bGlqYW5pamU4LnBocAoyMDE4LTEyLTA2IDA5OjIwOjI5CS9ub3YxNi5waHAKMjAxOC0xMi0wNiAwOTo0MToyNgkvbmV3cy5waHAKMjAxOC0xMi0wNiAxMDozMDoyOQkvbm92MTYucGhwCjIwMTgtMTItMDYgMTI6MTQ6MDEJL2RldGkucGhwCjIwMTgtMTItMDYgMTM6Mjk6NDQJL2tvbnQucGhwCjIwMTgtMTItMDYgMTQ6NDQ6NDMJL2ZhemEucGhwCjIwMTgtMTItMDYgMTc6MzE6NTUJL25vdjE2LnBocAoyMDE4LTEyLTA3IDAyOjMzOjU1CS9ub3YyMC5waHAKMjAxOC0xMi0wNyAwMjo0NjowNAkvbm92MTYucGhwCjIwMTgtMTItMDcgMDY6MTQ6MDYJL25vdjE2LnBocAoyMDE4LTEyLTA3IDE2OjE3OjM4CS9ub3YxNi5waHAKMjAxOC0xMi0wNyAyMjo0ODo1MQkvdmxpamFuaWplMTkucGhwCjIwMTgtMTItMDggMDA6NDY6MDAJL25vdjkucGhwCjIwMTgtMTItMDggMDI6MTU6NTkJL3ByaWxpdi5waHAKMjAxOC0xMi0wOCAwMzowNTo0NwkvdHJhdm1hLnBocAoyMDE4LTEyLTA4IDE3OjU2OjM0CS92bGlqYW5pamUxOS5waHAKMjAxOC0xMi0wOCAyMDozMjoyNAkvZmF6YS5waHAKMjAxOC0xMi0wOCAyMToxMzoyNwkvZmF6YS5waHAKMjAxOC0xMi0wOSAxNToyMToxOQkvbm92MTYucGhwCjIwMTgtMTItMDkgMTU6NTk6NDEJL2NyaW1pbmFsLnBocAoyMDE4LTEyLTA5IDE2OjAwOjQ1CS9jb3NtbzYucGhwCjIwMTgtMTItMDkgMTY6MDI6NDcJL2Nvc21vNS5waHAKMjAxOC0xMi0wOSAyMDo0Mzo0MgkvdmxpamFuaWplMzMucGhwCjIwMTgtMTItMDkgMjI6MjM6MzMJL3BzaWhvbG9nMTEucGhwCjIwMTgtMTItMTAgMTQ6MjM6MTcJL3ZsaWphbmlqZTEzLnBocAoyMDE4LTEyLTEwIDIwOjM0OjU5CS9wc2lob2xvZzUucGhwCjIwMTgtMTItMTAgMjA6NDY6MzkJL25vdjgucGhwCjIwMTgtMTItMTAgMjI6NTY6MTgJLzFkZW4ucGhwCjIwMTgtMTItMTEgMDA6Mjc6MTQJL3ZsaWphbmlqZTE4LnBocAoyMDE4LTEyLTExIDAxOjQyOjA5CS9kZXRpMi5waHAKMjAxOC0xMi0xMSAwNDo1Nzo0OQkvdmxpamFuaWplMTYucGhwCjIwMTgtMTItMTEgMDc6MDc6NTQJL3ZsaWphbmlqZTExLnBocAoyMDE4LTEyLTExIDA5OjQ3OjE3CS9rdXJzdXMucGhwCjIwMTgtMTItMTEgMTA6NDc6MTgJL211enNoaW5hLnBocAoyMDE4LTEyLTExIDE5OjU5OjU3CS9yaXRtdTQucGhwCjIwMTgtMTItMTEgMjI6MDI6MjAJL3ZsaWphbmlqZTE4LnBocAoyMDE4LTEyLTEyIDA3OjMyOjIwCS9uZXdzLnBocAoyMDE4LTEyLTEyIDEzOjU0OjE3CS96YXRtZW5pZS5waHAKMjAxOC0xMi0xMiAxNzoxNDozNQkvbm92MjAucGhwCjIwMTgtMTItMTMgMDE6MzQ6MzAJL25vdjgucGhwCjIwMTgtMTItMTMgMDk6MTA6NTIJL29ic2VydmF0b3JpamEucGhwCjIwMTgtMTItMTMgMTA6MjQ6MzkJL3phYm9sZXZhbmlqZS5waHAKMjAxOC0xMi0xMyAxNjo0Mjo0MwkvbHVua2kucGhwCjIwMTgtMTItMTQgMTg6Mzk6MjMJL2ZhemEucGhwCjIwMTgtMTItMTQgMTk6MDk6MTAJL2ZhemEucGhwCjIwMTgtMTItMTYgMDA6MDA6MDAJL25vdjE2LnBocAoyMDE4LTEyLTE2IDA3OjAxOjMwCS9wc2lob2xvZzMucGhwCjIwMTgtMTItMTYgMDk6NDc6MzkJL2RlanN0dmllMi5waHAKMjAxOC0xMi0xNyAxMzo0OToxMwkvdmxpamFuaWplMjYucGhwCjIwMTgtMTItMjAgMTc6MDc6MTMJL3ZsaWphbmlqZTcucGhwCjIwMTgtMTItMjEgMDg6NTQ6MjIJL2ZhemEucGhwCjIwMTgtMTItMjEgMDk6NDU6NDcJL2ZhemEucGhwCjIwMTgtMTItMjIgMTI6NTE6NDEJL3Zvem11c2hlbmllLnBocAoyMDE4LTEyLTIyIDE2OjAzOjQ1CS92bGlqYW5pamU1LnBocAoyMDE4LTEyLTIyIDE2OjIzOjQ0CS9yaXRtdTIucGhwCjIwMTgtMTItMjIgMTc6MzU6MzIJL3ZsaWphbmlqZTMxLnBocAoyMDE4LTEyLTIyIDIwOjI2OjAzCS92bGlqYW5pamU4LnBocAoyMDE4LTEyLTIyIDIwOjM2OjA3CS9jb3NtbzIucGhwCjIwMTgtMTItMjIgMjE6NDY6NTkJL3ZsaWphbmlqZTE1LnBocAoyMDE4LTEyLTIzIDAwOjM3OjQ3CS9wcmlsaXYucGhwCjIwMTgtMTItMjMgMDI6MTg6MDkJL3ZsaWphbmlqZTIyLnBocAoyMDE4LTEyLTIzIDAyOjI4OjA2CS9ub3Y1LnBocAoyMDE4LTEyLTIzIDA0OjIwOjExCS9ub3YyMC5waHAKMjAxOC0xMi0yMyAwNDo1NDoyOAkvZmFjdG9yLnBocAoyMDE4LTEyLTIzIDEwOjIwOjEzCS8zMGRuZXkucGhwCjIwMTgtMTItMjMgMTQ6MjA6MTYJL3ZsaWphbmlqZTkucGhwCjIwMTgtMTItMjMgMjA6Mzc6MjcJL3JpdG11LnBocAoyMDE4LTEyLTIzIDIxOjU0OjM2CS9wc2lob2xvZzE0LnBocAoyMDE4LTEyLTIzIDIyOjAzOjE1CS96ZW5zaGluYS5waHAKMjAxOC0xMi0yMyAyMjoyODo1NAkvdmxpamFuaWplMzAucGhwCjIwMTgtMTItMjMgMjI6NTQ6MzcJL3BzaWhvbG9nNC5waHAKMjAxOC0xMi0yNCAwNDowMzowNgkvdmxpamFuaWplMzQucGhwCjIwMTgtMTItMjQgMDQ6MjA6MTAJL2Nvc21vNi5waHAKMjAxOC0xMi0yNCAwOTozMzowOQkvZ3Jhdml0YWNpamEucGhwCjIwMTgtMTItMjQgMTE6MDM6MTAJL25vdjEyLnBocAoyMDE4LTEyLTI0IDExOjI1OjM1CS92bGlqYW5pamUyMy5waHAKMjAxOC0xMi0yNCAxMzo0MDozNgkvcHNpaG9sb2cucGhwCjIwMTgtMTItMjQgMTQ6MjU6MzcJL2Nvc21vLnBocAoyMDE4LTEyLTI0IDE0OjQ4OjExCS9wc2lob2xvZzIucGhwCjIwMTgtMTItMjQgMTU6MTA6MzgJL3JpdG11My5waHAKMjAxOC0xMi0yNCAxNTozMzoxMgkvZGVqc3R2aWUucGhwCjIwMTgtMTItMjQgMTU6NTU6MzcJL3N1aWNpZC5waHAKMjAxOC0xMi0yNCAxNjoxODoxMgkvdmxpamFuaWplNi5waHAKMjAxOC0xMi0yNCAxNjo0MDozOAkvcHJpbGl2LnBocAoyMDE4LTEyLTI0IDE4OjEwOjM5CS9tZWhhbml6bS5waHAKMjAxOC0xMi0yNSAwMjowNzo0NQkvcHNpaG9sb2cyLnBocAoyMDE4LTEyLTI1IDAyOjQxOjM5CS9wcmlsaXYucGhwCjIwMTgtMTItMjUgMDY6MTU6NDQJL2RldGkucGhwCjIwMTgtMTItMjUgMTE6MjY6MDIJL3ZsaWphbmlqZTI0LnBocAoyMDE4LTEyLTI1IDEyOjI2OjI1CS9wcmlsaXYucGhwCjIwMTgtMTItMjUgMTQ6MDY6MjkJL25vdjIzLnBocAoyMDE4LTEyLTI1IDIyOjI4OjM0CS9ib21iYXJkaXJvdmthLnBocAoyMDE4LTEyLTI2IDAzOjIwOjM2CS9ub3YzLnBocAoyMDE4LTEyLTI2IDEwOjMyOjI4CS8xZGVuLnBocAoyMDE4LTEyLTI2IDIxOjEzOjU1CS96YXRtZW5pZS5waHAKMjAxOC0xMi0yNiAyMzowNDoxMwkvZmF6YS5waHAKMjAxOC0xMi0yNyAwMTo1NTowNwkvZmF6YS5waHAKMjAxOC0xMi0yNyAxNToyMToyOAkvcHNpaG9sb2c2LnBocAoyMDE4LTEyLTI4IDE1OjIzOjI3CS92bGlqYW5pamUyNS5waHAKMjAxOC0xMi0yOCAxNjo1MDozNQkvdmxpamFuaWplLnBocAoyMDE4LTEyLTI5IDA2OjE0OjIyCS9ub3Y2LnBocAoyMDE4LTEyLTI5IDEyOjI1OjA5CS9wc2lob2xvZzEzLnBocAoyMDE4LTEyLTMwIDA4OjAyOjMzCS92bGlqYW5pamU3LnBocAoyMDE4LTEyLTMxIDA2OjIwOjExCS92bGlqYW5pamU3LnBocAoyMDE5LTAxLTAxIDA3OjIyOjI0CS92bGlqYW5pamUyOS5waHAKMjAxOS0wMS0wMSAwNzo1MjoxNgkvbm92MjAucGhwCjIwMTktMDEtMDIgMDQ6MTE6MjIJLzFkZW4ucGhwCjIwMTktMDEtMDIgMDc6MTE6MDQJL2ZhemEucGhwCjIwMTktMDEtMDIgMDc6MzE6MTQJL2ZhemEucGhwCjIwMTktMDEtMDIgMTI6MjM6MTYJL25vdjIxLnBocAoyMDE5LTAxLTAyIDEyOjQzOjE2CS9ub3YyMS5waHAKMjAxOS0wMS0wMiAxMjo1NzoxMgkvbm92MjEucGhwCjIwMTktMDEtMDIgMjA6MTI6MTkJLzMwZG5leTIucGhwCjIwMTktMDEtMDIgMjE6NTI6NTEJLzFkZW4ucGhwCjIwMTktMDEtMDIgMjM6MTM6MDYJL3BzaWhvbG9nNy5waHAKMjAxOS0wMS0wMyAwODoyMDo1Mgkvbm92MjUucGhwCjIwMTktMDEtMDMgMTA6MzA6MDUJL2ZlbnNodXkucGhwCjIwMTktMDEtMDMgMTE6MTA6MzIJL3NrbG9uZW5pZS5waHAKMjAxOS0wMS0wMyAxNDoxMTo1OQkvcHNpaG9sb2cxMi5waHAKMjAxOS0wMS0wMyAxNDoxNjo1OAkvdmxpamFuaWplMjcucGhwCjIwMTktMDEtMDMgMTc6NTQ6MjkJL2ZhemEucGhwCjIwMTktMDEtMDMgMTg6MDE6NTkJL3ZsaWphbmlqZTI5LnBocAoyMDE5LTAxLTA0IDAwOjU0OjMzCS9ub3YxMC5waHAKMjAxOS0wMS0wNCAwMTozOTozMwkva3Vyc3VzLnBocAoyMDE5LTAxLTA0IDAyOjE2OjUxCS92bGlqYW5pamUxNi5waHAKMjAxOS0wMS0wNCAwNDowMTo1MQkvdmxpamFuaWplMzIucGhwCjIwMTktMDEtMDQgMDQ6MTY6NTEJL211enNoaW5hLnBocAoyMDE5LTAxLTA0IDA0OjI0OjIxCS92bGlqYW5pamUyOC5waHAKMjAxOS0wMS0wNCAwNjoxNjo1MwkvdmxpamFuaWplMTgucGhwCjIwMTktMDEtMDQgMDc6MDE6NTMJL25vdjEucGhwCjIwMTktMDEtMDQgMDk6MDE6NTUJL3ByaWxpdi5waHAKMjAxOS0wMS0wNCAwOToxNjo1NAkvY29zbW80LnBocAoyMDE5LTAxLTA0IDA5OjI0OjI0CS9kZXRpMi5waHAKMjAxOS0wMS0wNCAxMDozOToyNAkvZGV0aTIucGhwCjIwMTktMDEtMDQgMTE6MzE6NTUJL2NyaW1pbmFsLnBocAoyMDE5LTAxLTA0IDEyOjAxOjU1CS9wb2xuLnBocAoyMDE5LTAxLTA0IDE1OjU0OjI3CS9kZWpzdHZpZTMucGhwCjIwMTktMDEtMDQgMTc6NDY6NTkJL2thbWVubm9lX2tvbGNvLnBocAoyMDE5LTAxLTA0IDE4OjAxOjU4CS9ub3YxMy5waHAKMjAxOS0wMS0wNCAxODo0Njo1OAkvZHZpemhlbi5waHAKMjAxOS0wMS0wNSAwNTozMzoxNgkvbm92MjEucGhwCjIwMTktMDEtMDUgMDY6NDM6MDgJL25vdjIucGhwCjIwMTktMDEtMDUgMDc6NDM6MDYJL3ByaWxpdi5waHAKMjAxOS0wMS0wNSAwODo0MzoxOAkvc3RvamFjaGllX2thbW5pLnBocAoyMDE5LTAxLTA3IDIzOjQ0OjMxCS9mYXphLnBocAoyMDE5LTAxLTA4IDAwOjE0OjM5CS9mYXphLnBocAoyMDE5LTAxLTA5IDA1OjA2OjMzCS9mYXphNC5waHAKMjAxOS0wMS0wOSAwNTowNjo0NgkvbWVuZ2lyLnBocAoyMDE5LTAxLTEwIDIzOjMyOjQwCS9wc2lob2xvZzYucGhwCjIwMTktMDEtMTEgMTY6MzM6NTIJL25vdjIxLnBocAoyMDE5LTAxLTExIDIyOjQxOjI5CS96YXRtZW5pZS5waHAKMjAxOS0wMS0xMiAyMDowNDo0NQkvbm92MS5waHAKMjAxOS0wMS0xMyAwNDoxNzo0MgkvbGluaXlhX3Zpei5waHAKMjAxOS0wMS0xMyAyMzowNjoxMQkvemF0bWVuaWUucGhwCjIwMTktMDEtMTQgMDE6MDc6NDkJL2ZhemEucGhwCjIwMTktMDEtMTQgMDE6MTc6NTUJL2ZhemEucGhwCjIwMTktMDEtMTQgMDk6NDE6MjkJL3ZsaWphbmlqZTcucGhwCjIwMTktMDEtMTQgMTk6MDU6MjIJL25vdjIwLnBocAoyMDE5LTAxLTE1IDIxOjQwOjM2CS9ub3YyLnBocAoyMDE5LTAxLTE1IDIzOjE2OjM2CS9ub3YyMC5waHAKMjAxOS0wMS0xNiAwMzozNToyMgkvY29zbW8yLnBocAoyMDE5LTAxLTE2IDA3OjU3OjEyCS9ub3YxNS5waHAKMjAxOS0wMS0xNyAwMDozMDowNQkvY29zbW81LnBocAoyMDE5LTAxLTE3IDA1OjA1OjI1CS9mYXphNC5waHAKMjAxOS0wMS0xNyAwNzoyMjo1OQkvbm92MjEucGhwCjIwMTktMDEtMTkgMTU6MTE6MjQJL2ZhemEucGhwCjIwMTktMDEtMTkgMTU6MjE6MjYJL2ZhemEucGhwCjIwMTktMDEtMTkgMTY6MjI6NDgJL3ZsaWphbmlqZTMucGhwCjIwMTktMDEtMTkgMjM6MTU6MzcJL2Nvc21vMi5waHAKMjAxOS0wMS0yMCAxMDozNTo0NwkvemFib2xldmFuaWplLnBocAoyMDE5LTAxLTIwIDExOjExOjQ3CS92bGlqYW5pamU5LnBocAoyMDE5LTAxLTIwIDE1OjMxOjAyCS92bGlqYW5pamUyMS5waHAKMjAxOS0wMS0yMCAxNTo1OTo1MQkvdmxpamFuaWplNy5waHAKMjAxOS0wMS0yMCAxNjowNzowMgkvMWRlbi5waHAKMjAxOS0wMS0yMCAxNzo1NTowMwkvbm92Mi5waHAKMjAxOS0wMS0yMCAxOTo1NzoyOAkvcHNpaG9sb2cyLnBocAoyMDE5LTAxLTIwIDIyOjUwOjE5CS9wc2lob2xvZzExLnBocAoyMDE5LTAxLTIwIDIzOjA0OjQyCS9wcmlsaXYucGhwCjIwMTktMDEtMjAgMjM6MTE6NTMJLzMwZG5leTMucGhwCjIwMTktMDEtMjEgMDQ6MzE6MDEJL21lbmdpci5waHAKMjAxOS0wMS0yMSAwNDo1MDowOQkvZmVuc2h1eS5waHAKMjAxOS0wMS0yMSAwNToxMTo0NQkvemFib2xldmFuaWplLnBocAoyMDE5LTAxLTIxIDA5OjQ1OjI0CS92bGlqYW5pamUyNl8yLnBocAoyMDE5LTAxLTIxIDExOjE5OjAxCS9ub3YxOC5waHAKMjAxOS0wMS0yMSAxMjowOToyNQkvY29zbW81LnBocAoyMDE5LTAxLTIxIDEyOjQ1OjI1CS9wc2lob2xvZzEwLnBocAoyMDE5LTAxLTIxIDEzOjUwOjE0CS9ub3YyMC5waHAKMjAxOS0wMS0yMSAxNDozMzoyNgkvbWVzdGEucGhwCjIwMTktMDEtMjEgMTU6MzE6MDMJL3BzaWhvbG9nOS5waHAKMjAxOS0wMS0yMSAxNjozNjo1Nwkvcml0bXUucGhwCjIwMTktMDEtMjEgMTg6Mzk6NDAJL3JpdG11My5waHAKMjAxOS0wMS0yMSAxOTozNTo1MgkvdmxpamFuaWplNy5waHAKMjAxOS0wMS0yMSAyMDowNDo0MQkvdmxpamFuaWplMTgucGhwCjIwMTktMDEtMjEgMjM6NDA6NDMJL3ZsaWphbmlqZTMzLnBocAoyMDE5LTAxLTIyIDAzOjA5OjIwCS9wc2loaWF0cmlqYS5waHAKMjAxOS0wMS0yMiAwNjozODoxMAkvcHNpaG9sb2c4LnBocAoyMDE5LTAxLTIyIDA5OjE5OjE5CS92bGlqYW5pamUxOC5waHAKMjAxOS0wMS0yMiAwOTo0NToyMwkvZGV0aS5waHAKMjAxOS0wMS0yMiAxMToxOTowMAkvdmxpamFuaWplMTcucGhwCjIwMTktMDEtMjIgMTI6MzE6MzEJL3BzaWhvbG9nNy5waHAKMjAxOS0wMS0yMiAxMjo0NzowOAkvdmxpamFuaWplMTcucGhwCjIwMTktMDEtMjIgMTM6MDk6MDcJL3ZsaWphbmlqZTE3LnBocAoyMDE5LTAxLTIyIDEzOjM1OjQ5CS9kZXRpMi5waHAKMjAxOS0wMS0yMiAxMzo0MzowMwkvcHNpaG9sb2cucGhwCjIwMTktMDEtMjIgMTQ6MDQ6MzcJL25vdjExLnBocAoyMDE5LTAxLTIyIDE1OjU5OjUwCS9wc2lob2xvZzkucGhwCjIwMTktMDEtMjIgMTY6MDc6MDIJL3BzaWhvbG9nMTAucGhwCjIwMTktMDEtMjIgMTY6MTQ6MTQJL3ZsaWphbmlqZTQucGhwCjIwMTktMDEtMjIgMTY6MjE6MjYJL25vdjE1LnBocAoyMDE5LTAxLTIyIDIxOjMyOjExCS9wcmlsaXYucGhwCjIwMTktMDEtMjIgMjE6Mzg6MTcJL21vZ2lsbmlrLnBocAoyMDE5LTAxLTIyIDIxOjQ1OjI5CS92bGlqYW5pamUxNy5waHAKMjAxOS0wMS0yMiAyMjoyMToyOQkvbm92OS5waHAKMjAxOS0wMS0yMiAyMjozNTo1MwkvdmxpamFuaWplMzEucGhwCjIwMTktMDEtMjIgMjI6NTc6MjkJL3ByaWxpdi5waHAKMjAxOS0wMS0yMiAyMzoxOTowNgkvdmxpamFuaWplOS5waHAKMjAxOS0wMS0yMyAwMDoyMzo1NQkvdmxpamFuaWplMzEucGhwCjIwMTktMDEtMjMgMDA6Mzg6MTgJL3ZsaWphbmlqZTI2XzEucGhwCjIwMTktMDEtMjMgMDM6MzA6NTYJL3phYm9sZXZhbmlqZS5waHAKMjAxOS0wMS0yMyAwNDoxNDowMwkvcG9sbi5waHAKMjAxOS0wMS0yMyAwNDo0Mjo1NwkvdmxpamFuaWplMjkucGhwCjIwMTktMDEtMjMgMDU6NDA6MzQJL25vdjE0LnBocAoyMDE5LTAxLTIzIDA2OjQ1OjIyCS9tb2dpbG5pay5waHAKMjAxOS0wMS0yMyAwODoyNToyNgkvbm92MjIucGhwCjIwMTktMDEtMjMgMDk6MjQ6MzAJL25vdjIyLnBocAoyMDE5LTAxLTIzIDA5OjQ2OjA2CS9ub3YxOS5waHAKMjAxOS0wMS0yMyAxMDoyMjowNwkvdmxpamFuaWplNC5waHAKMjAxOS0wMS0yNCAxNTowMDowMQkvbmV3cy5waHAKMjAxOS0wMS0yNCAyMDoyODoxOQkvZHZpemhlbi5waHAKMjAxOS0wMS0yNCAyMDoyODoxOQkvdmxpamFuaWplMjgucGhwCjIwMTktMDEtMjQgMjA6MzY6MTcJL3N1aWNpZC5waHAKMjAxOS0wMS0yNSAwMDo0Mjo1MwkvbmV3cy5waHAKMjAxOS0wMS0yNSAxNzo0ODowOAkvZmF6YS5waHAKMjAxOS0wMS0yNSAxODowODoyMQkvZmF6YS5waHAKMjAxOS0wMS0yNSAyMjowMjo0OAkvdmxpamFuaWplMTcucGhwCjIwMTktMDEtMjYgMDY6NDk6MTIJL3ZsaWphbmlqZTIxLnBocAoyMDE5LTAxLTI2IDA3OjQyOjU5CS92bGlqYW5pamU3LnBocAoyMDE5LTAxLTI2IDA5OjEyOjQ2CS9tZXN0YS5waHAKMjAxOS0wMS0yNiAwOTozNzo1NAkvbm92MTQucGhwCjIwMTktMDEtMjYgMTA6MDM6MDAJL3ByaWxpdi5waHAKMjAxOS0wMS0yNiAxMTowMTozNwkvMzBkbmV5NC5waHAKMjAxOS0wMS0yNiAxMjo0MjowOQkvbGluaXlhX3Zpei5waHAKMjAxOS0wMS0yNiAxNToxNDoxNAkvdmxpamFuaWplMy5waHAKMjAxOS0wMS0yNiAxNTozNzo1NgkvcHNpaG9sb2c2LnBocAoyMDE5LTAxLTI2IDE3OjUzOjE2CS92bGlqYW5pamUxOS5waHAKMjAxOS0wMS0yNiAxODo1NDowMgkvbm92Mi5waHAKMjAxOS0wMS0yNiAxODo1ODo1MwkvdmxpamFuaWplMTkucGhwCjIwMTktMDEtMjYgMTk6NDk6MDgJL3RyYXZtYS5waHAKMjAxOS0wMS0yNiAyMDowNjoyNAkvcG9sbi5waHAKMjAxOS0wMS0yNiAyMToyMjo0OAkvbm92Ny5waHAKMjAxOS0wMS0yNiAyMjowMToxMgkvY29zbW82LnBocAoyMDE5LTAxLTI2IDIyOjMzOjU2CS9wcmlsaXYucGhwCjIwMTktMDEtMjYgMjM6NTM6NDcJL25vdjMucGhwCjIwMTktMDEtMjcgMDY6MzM6NDUJL3ZsaWphbmlqZTE4LnBocAoyMDE5LTAxLTI4IDA4OjUyOjUzCS92bGlqYW5pamUxNC5waHAKMjAxOS0wMS0yOCAxMToxOToyNgkvdmxpamFuaWplMTgucGhwCjIwMTktMDEtMjggMTU6MDA6NDkJL2RldGkyLnBocAoyMDE5LTAxLTI4IDE5OjMyOjIzCS92bGlqYW5pamUxNC5waHAKMjAxOS0wMS0yOCAyMjoxNjowMQkvcml0bXUucGhwCjIwMTktMDEtMjkgMDE6MDQ6MTAJL3ZsaWphbmlqZTE0LnBocAoyMDE5LTAxLTI5IDA1OjUxOjAwCS92bGlqYW5pamUxNC5waHAKMjAxOS0wMS0zMSAxMzo0OToyOQkvbm92MTIucGhwCjIwMTktMDEtMzEgMjM6MjA6NTgJL2ZhemEucGhwCjIwMTktMDEtMzEgMjM6MzE6MjAJL2ZhemEucGhwCjIwMTktMDItMDEgMjM6NTE6MjMJL3ByaWxpdi5waHAKMjAxOS0wMi0wMiAwMDo1OToyMwkvcHJpbGl2LnBocAoyMDE5LTAyLTAzIDE4OjI0OjQ1CS92bGlqYW5pamUyMS5waHAKMjAxOS0wMi0wMyAxOTozNDowMQkvdmxpamFuaWplMTIucGhwCjIwMTktMDItMDMgMjA6Mjc6MjAJL3BhbWphdG5pa2kucGhwCjIwMTktMDItMDMgMjA6Mjg6NTIJL3ZsaWphbmlqZTI2LnBocAoyMDE5LTAyLTAzIDIwOjI5OjQ3CS92bGlqYW5pamUyMC5waHAKMjAxOS0wMi0wMyAyMDozMDo1NAkvdmxpamFuaWplMjIucGhwCjIwMTktMDItMDQgMDA6MzY6MTAJL3ZsaWphbmlqZTcucGhwCjIwMTktMDItMDQgMDA6NTk6MDgJL21vZ2lsbmlrLnBocAoyMDE5LTAyLTA0IDAyOjE0OjIwCS92bGlqYW5pamUzMS5waHAKMjAxOS0wMi0wNCAyMDozMToyNAkvbm92MTQucGhwCjIwMTktMDItMDUgMDQ6Mjc6MzIJL211enNoaW5hLnBocAoyMDE5LTAyLTA1IDA1OjQwOjA3CS96YXRtZW5pZS5waHAKMjAxOS0wMi0wNSAwNjo1NTo1MgkvZGVqc3R2aWUucGhwCjIwMTktMDItMDUgMDg6Mjc6NTcJL25vdjIwLnBocAoyMDE5LTAyLTA1IDA5OjMwOjA5CS92bGlqYW5pamUxMS5waHAKMjAxOS0wMi0wNSAxMDoyOTowMAkvc3VpY2lkLnBocAoyMDE5LTAyLTA1IDEwOjQ2OjAzCS92bGlqYW5pamUxNC5waHAKMjAxOS0wMi0wNSAxMTo0OTozNwkvcml0bXUucGhwCjIwMTktMDItMDUgMTQ6MzA6MjAJL3plbnNoaW5hLnBocAoyMDE5LTAyLTA1IDE4OjEyOjU2CS9kZXRpMi5waHAKMjAxOS0wMi0wNiAwNDo1ODoyNwkvMWRlbi5waHAKMjAxOS0wMi0wNiAxMjoyNTowMgkvZGV0aTIucGhwCjIwMTktMDItMDYgMTM6MTY6MTQJL21laGFuaXptLnBocAoyMDE5LTAyLTA2IDE1OjUzOjA5CS9ha3VzaGVyLnBocAoyMDE5LTAyLTA2IDE3OjA1OjI0CS9wc2lob2xvZzUucGhwCjIwMTktMDItMDYgMTg6MjA6MjkJL3BzaWhvbG9nOC5waHAKMjAxOS0wMi0wNyAwMDo1MTo1NAkvZmF6YS5waHAKMjAxOS0wMi0wNyAwMTowNDo0NAkvZmF6YS5waHAKMjAxOS0wMi0wNyAwNDo1MDo0NgkvYWt1c2hlci5waHAKMjAxOS0wMi0wNyAwODoyMTo0NwkvcHJpbGl2LnBocAoyMDE5LTAyLTA3IDExOjI1OjAwCS9jb3NtbzMucGhwCjIwMTktMDItMDcgMjA6NTg6NDIJL3BzaWhvbG9nNC5waHAKMjAxOS0wMi0wNyAyMTowMDoxMQkvcHNpaG9sb2cyLnBocAoyMDE5LTAyLTA3IDIxOjAxOjExCS92bGlqYW5pamUyNl8yLnBocAoyMDE5LTAyLTA3IDIxOjAyOjQxCS9ib21iYXJkaXJvdmthLnBocAoyMDE5LTAyLTA3IDIxOjAzOjU5CS92bGlqYW5pamUyNl8xLnBocAoyMDE5LTAyLTA3IDIxOjQ0OjQyCS90ZW1wbF92dWQucGhwCjIwMTktMDItMDcgMjE6NTQ6MjcJL21laGFuaXptLnBocAoyMDE5LTAyLTA3IDIzOjQyOjMwCS96ZW5zaGluYS5waHAKMjAxOS0wMi0wOCAwNTo0OTo1MQkvcHJpbGl2LnBocAoyMDE5LTAyLTA4IDA5OjI5OjEzCS92bGlqYW5pamUzNC5waHAKMjAxOS0wMi0wOCAxNDowOToxMwkvcHNpaG9sb2czLnBocAoyMDE5LTAyLTA4IDE0OjQ5OjEyCS9zdWljaWQucGhwCjIwMTktMDItMDkgMDE6MzU6MDUJL25vdjIyLnBocAoyMDE5LTAyLTA5IDAyOjQ5OjQ4CS9kZXRpLnBocAoyMDE5LTAyLTA5IDA0OjA1OjMwCS9wc2lob2xvZzMucGhwCjIwMTktMDItMDkgMDU6MjA6MTIJL3BzaWhvbG9nOS5waHAKMjAxOS0wMi0wOSAwNjozNToxMQkvZGVqc3R2aWUzLnBocAoyMDE5LTAyLTA5IDA3OjUwOjU5CS9wc2lob2xvZzEyLnBocAoyMDE5LTAyLTA5IDA5OjA2OjQ3CS9wc2lob2xvZzEzLnBocAoyMDE5LTAyLTA5IDEwOjI0OjQwCS9kZXRpMi5waHAKMjAxOS0wMi0wOSAxMTo0MTozOQkvbm92OC5waHAKMjAxOS0wMi0wOSAxMTo1NzowMgkvcHNpaG9sb2cxMy5waHAKMjAxOS0wMi0wOSAxMjo1NDo1NAkvbmV3cy5waHAKMjAxOS0wMi0wOSAxNDoxMDowNQkva2FtZW4ucGhwCjIwMTktMDItMDkgMTU6MjU6NDMJL2ZhemE0LnBocAoyMDE5LTAyLTA5IDE2OjQxOjMwCS9ub3YxNi5waHAKMjAxOS0wMi0wOSAxNzo1ODowMAkvbm92MjUucGhwCjIwMTktMDItMDkgMTk6MTU6MzgJL2tvbnQucGhwCjIwMTktMDItMDkgMjA6MzA6MzMJL2ZhemEucGhwCjIwMTktMDItMDkgMjE6NDc6MjcJL25vdjEzLnBocAoyMDE5LTAyLTA5IDIzOjAwOjI4CS9ub3YxNC5waHAKMjAxOS0wMi0xMCAwMzo1ODoxMQkvbm92MjAucGhwCjIwMTktMDItMTAgMTA6MjQ6MTkJL3ZsaWphbmlqZTcucGhwCjIwMTktMDItMTAgMTA6Mzk6NTEJL3phdG1lbmllLnBocAoyMDE5LTAyLTEwIDExOjM5OjU2CS92bGlqYW5pamUzLnBocAoyMDE5LTAyLTEwIDEyOjU1OjE5CS9wZXJpb2RfMV8zLnBocAoyMDE5LTAyLTEwIDEzOjAwOjU3CS9wc2lob2xvZzEzLnBocAoyMDE5LTAyLTEwIDE0OjAwOjU5CS9wc2lob2xvZzEzLnBocAoyMDE5LTAyLTEwIDE0OjEzOjQ4CS9wc2lob2xvZzExLnBocAoyMDE5LTAyLTExIDExOjU4OjIzCS9jb3NtbzMucGhwCjIwMTktMDItMTEgMTM6MTA6MjIJL21lbmdpci5waHAKMjAxOS0wMi0xMSAxNDoyNTo1OQkvbm92MTAucGhwCjIwMTktMDItMTEgMTU6NDE6NDYJL21lc3RhLnBocAoyMDE5LTAyLTExIDE4OjE0OjU4CS9wb2xuLnBocAoyMDE5LTAyLTExIDE5OjMwOjAyCS9sdW5ua2FsZW5kLnBocAoyMDE5LTAyLTExIDIwOjQ0OjU1CS9wc2lob2xvZzE0LnBocAoyMDE5LTAyLTEyIDIwOjQ3OjIwCS9mYXphLnBocAoyMDE5LTAyLTEyIDIxOjA2OjMzCS9kdml6aGVuLnBocAoyMDE5LTAyLTEyIDIxOjA3OjIxCS9mYXphLnBocAoyMDE5LTAyLTEyIDIyOjI0OjM0CS9wcmlsaXYucGhwCjIwMTktMDItMTIgMjM6Mzk6MTkJL2ZlbnNodXkucGhwCjIwMTktMDItMTMgMDA6NTM6NTUJL2thbWVubm9lX2tvbGNvLnBocAoyMDE5LTAyLTEzIDEyOjE2OjU3CS9rdXJzdXMucGhwCjIwMTktMDItMTMgMTI6MzQ6MjYJL3ZsaWphbmlqZTE1LnBocAoyMDE5LTAyLTEzIDEzOjExOjI5CS92bGlqYW5pamUxNS5waHAKMjAxOS0wMi0xMyAxNzowMDozNgkvemVuc2hpbmEucGhwCjIwMTktMDItMTMgMTc6NDI6MDMJL3ZsaWphbmlqZTE2LnBocAoyMDE5LTAyLTEzIDE5OjMzOjIwCS9yaXRtdS5waHAKMjAxOS0wMi0xMyAxOTo1MDo0MQkvc3VpY2lkLnBocAoyMDE5LTAyLTEzIDIwOjU1OjE0CS9tdXpzaGluYS5waHAKMjAxOS0wMi0xMyAyMTowNjoyOAkvY29zbW80LnBocAoyMDE5LTAyLTEzIDIxOjU4OjA4CS9ub3YyNC5waHAKMjAxOS0wMi0xMyAyMjoyNDoxOAkvdHJhdm1hLnBocAoyMDE5LTAyLTE0IDAyOjA5OjM3CS9jb3NtbzUucGhwCjIwMTktMDItMTQgMDI6Mjc6MzAJL2ZlbnNodXkucGhwCjIwMTktMDItMTQgMDQ6NDE6MTIJL3JpdG11NC5waHAKMjAxOS0wMi0xNCAwNTo1OToyOAkva3Vyc3VzLnBocAoyMDE5LTAyLTE0IDA4OjM5OjU0CS9tZXN0YS5waHAKMjAxOS0wMi0xNCAxMTozMzo0MQkvdmxpamFuaWplMTMucGhwCjIwMTktMDItMTQgMTE6NTg6MzEJL3ZsaWphbmlqZTE4LnBocAoyMDE5LTAyLTE0IDEyOjE1OjU1CS9ub3Y0LnBocAoyMDE5LTAyLTE0IDEzOjMxOjQyCS9ub3Y5LnBocAoyMDE5LTAyLTE0IDEzOjUwOjE1CS9ub3Y5LnBocAoyMDE5LTAyLTE0IDE0OjQ4OjMyCS8zMGRuZXkzLnBocAoyMDE5LTAyLTE0IDE4OjA2OjA5CS92bGlqYW5pamUxNi5waHAKMjAxOS0wMi0xNCAxOTowMTozMgkvdmxpamFuaWplMTYucGhwCjIwMTktMDItMTQgMTk6Mjk6MTQJL3ZsaWphbmlqZTE2LnBocAoyMDE5LTAyLTE1IDA0OjUyOjA3CS9ub3Y1LnBocAoyMDE5LTAyLTE1IDA2OjA1OjM4CS9ub3Y2LnBocAoyMDE5LTAyLTE1IDA3OjI3OjE2CS9ha3VzaGVyLnBocAoyMDE5LTAyLTE1IDA4OjM2OjA4CS9jcmltaW5hbC5waHAKMjAxOS0wMi0xNSAwOToxMjoyMgkvbXV6c2hpbmEucGhwCjIwMTktMDItMTUgMDk6NTE6NTQJL3BzaWhvbG9nLnBocAoyMDE5LTAyLTE1IDExOjEwOjI4CS96ZW5zaGluYS5waHAKMjAxOS0wMi0xNSAxMzo0MDoxMQkvbHVua2kucGhwCjIwMTktMDItMTUgMTQ6NTU6MDIJL3BzaWhvbG9nNi5waHAKMjAxOS0wMi0xNSAxNjoxMDo1MAkvbm92MTgucGhwCjIwMTktMDItMTUgMTc6MjY6MzcJL25vdjIzLnBocAoyMDE5LTAyLTE1IDE4OjQ2OjQ3CS9ub3YyNC5waHAKMjAxOS0wMi0xNSAyMDowNDoxNQkvbm92MTcucGhwCjIwMTktMDItMTUgMjE6MTg6MDAJL3ZsaWphbmlqZS5waHAKMjAxOS0wMi0xNSAyMjozMTozOAkvZGVqc3R2aWUyLnBocAoyMDE5LTAyLTE1IDIzOjQ1OjMzCS9jb3Ntby5waHAKMjAxOS0wMi0xNiAwMTowMjozNgkvbm92MTUucGhwCjIwMTktMDItMTYgMDI6MjI6MjUJL2RyZXZuLnBocAoyMDE5LTAyLTE2IDAzOjM1OjA4CS9ub3YyMS5waHAKMjAxOS0wMi0xNiAwNToyMzo0MQkvdmxpamFuaWplOC5waHAKMjAxOS0wMi0xNiAwNjozNDoxNAkvbm92NS5waHAKMjAxOS0wMi0xNiAwOTozNToxOAkvbm92NS5waHAKMjAxOS0wMi0xNiAxMjozODozMAkvMWRlbi5waHAKMjAxOS0wMi0xNiAxMzozOToyMwkvbm92MjAucGhwCjIwMTktMDItMTYgMTM6NDY6MjYJL25vdjIwLnBocAoyMDE5LTAyLTE2IDE0OjU5OjUzCS9ub3YxOS5waHAKMjAxOS0wMi0xNiAxNTowNjoxMAkvemF0bWVuaWUucGhwCjIwMTktMDItMTYgMTY6MTM6MzQJL3NrbG9uZW5pZS5waHAKMjAxOS0wMi0xNiAxNzoyNjozNgkvbm92MTEucGhwCjIwMTktMDItMTYgMTg6NDQ6MjkJL3BzaWhvbG9nNy5waHAKMjAxOS0wMi0xNyAwMzozNTozNwkvdm96bXVzaGVuaWUucGhwCjIwMTktMDItMTcgMDM6Mzk6MjMJL3Zvem11c2hlbmllLnBocAoyMDE5LTAyLTE3IDA0OjU2OjE0CS9ub3Y1LnBocAoyMDE5LTAyLTE4IDA0OjQ1OjQ3CS92bGlqYW5pamU3LnBocAoyMDE5LTAyLTE4IDA2OjMxOjA5CS92bGlqYW5pamUyLnBocAoyMDE5LTAyLTE4IDA3OjQ1OjMyCS9yaXRtdTIucGhwCjIwMTktMDItMTggMTA6MjI6MzUJL3N2ZXRsdTFkZW4ucGhwCjIwMTktMDItMTggMTE6MzE6NTMJL3ZsaWphbmlqZTQucGhwCjIwMTktMDItMTggMTI6NDc6MjgJL2ZhemEucGhwCjIwMTktMDItMTggMTM6Mjc6NTAJL2ZhemEucGhwCjIwMTktMDItMTggMTQ6MDg6MDEJL2Nvc21vMi5waHAKMjAxOS0wMi0xOCAxNToxOTo0OAkvdmxpamFuaWplOC5waHAKMjAxOS0wMi0xOCAxNzo0OToyOQkvMWRlbi5waHAKMjAxOS0wMi0xOCAxNzo1MjoxNAkvdmxpamFuaWplOS5waHAKMjAxOS0wMi0xOCAxOTowNzo0OAkvY29zbW82LnBocAoyMDE5LTAyLTE4IDIwOjI2OjA3CS9mYWN0b3IucGhwCjIwMTktMDItMTkgMDU6MjA6MDgJL3Zvem11c2hlbmllLnBocAoyMDE5LTAyLTE5IDA1OjQ5OjM0CS9zdWljaWQucGhwCjIwMTktMDItMTkgMDk6MDA6NDIJL2xpbml5YV92aXoucGhwCjIwMTktMDItMTkgMTA6MTY6MzkJL3JpdG11My5waHAKMjAxOS0wMi0xOSAxMTozMjowMAkvMzBkbmV5NC5waHAKMjAxOS0wMi0xOSAxNDowNjowMwkvdmxpamFuaWplNi5waHAKMjAxOS0wMi0xOSAxNTowMjowOAkvdmxpamFuaWplMTEucGhwCjIwMTktMDItMTkgMTU6MjE6MTIJL25ldG9jaG5vc3RpLnBocAoyMDE5LTAyLTE5IDE2OjIyOjA4CS92bGlqYW5pamUyMy5waHAKMjAxOS0wMi0xOSAxNjozNToyOAkvcHNpaG9sb2c1LnBocAoyMDE5LTAyLTE5IDE2OjM3OjI2CS9vYnNlcnZhdG9yeS5waHAKMjAxOS0wMi0xOSAxNjo0ODo0OAkvdmxpamFuaWplMzMucGhwCjIwMTktMDItMTkgMTc6MTU6MjgJL3Zvem11c2hlbmllLnBocAoyMDE5LTAyLTE5IDE3OjUwOjQ5CS92bGlqYW5pamUyNy5waHAKMjAxOS0wMi0xOSAxOTowNjozNgkvdmxpamFuaWplMTUucGhwCjIwMTktMDItMTkgMjA6Mjg6MDQJL3ZsaWphbmlqZTI4LnBocAoyMDE5LTAyLTE5IDIxOjM5OjUyCS9wc2lob2xvZzEwLnBocAoyMDE5LTAyLTE5IDIyOjU1OjE2CS92bGlqYW5pamUzNC5waHAKMjAxOS0wMi0yMCAwMDoxMDoyMAkvdmxpamFuaWplMjUucGhwCjIwMTktMDItMjAgMDE6MjU6MzUJLzMwZG5leTIucGhwCjIwMTktMDItMjAgMDc6NDU6MjIJL3ZsaWphbmlqZTI5LnBocAoyMDE5LTAyLTIwIDA5OjAwOjU2CS92bGlqYW5pamUxOS5waHAKMjAxOS0wMi0yMCAxMDoxNjowMwkvdmxpamFuaWplMTYucGhwCjIwMTktMDItMjAgMTE6MzE6NTMJL3ZsaWphbmlqZTEzLnBocAoyMDE5LTAyLTIwIDEyOjQ1OjE1CS92b3ptdXNoZW5pZS5waHAKMjAxOS0wMi0yMCAxMjo0OTo0NgkvdmxpamFuaWplMjMucGhwCjIwMTktMDItMjAgMTI6NTc6MzIJL3ZsaWphbmlqZTEwLnBocAoyMDE5LTAyLTIwIDEzOjE5OjEzCS92bGlqYW5pamUzMi5waHAKMjAxOS0wMi0yMCAxNDozMDo1MAkvdmxpamFuaWplMTgucGhwCjIwMTktMDItMjAgMTU6NDY6MTQJL3ZsaWphbmlqZTMwLnBocAoyMDE5LTAyLTIwIDE3OjA1OjE5CS92bGlqYW5pamUzMy5waHAKMjAxOS0wMi0yMCAxODoyMDo0MwkvdmxpamFuaWplNS5waHAKMjAxOS0wMi0yMCAxOTozNToxNAkvdmxpamFuaWplMjQucGhwCjIwMTktMDItMjAgMjA6NTA6MzUJL2dyYXZpdGFjaWphLnBocAoyMDE5LTAyLTIwIDIyOjA1OjM1CS9wc2loaWF0cmlqYS5waHAKMjAxOS0wMi0yMCAyMzowMDo0MQkvdmxpamFuaWplMTgucGhwCjIwMTktMDItMjAgMjM6MjA6NTgJL3N0b2phY2hpZV9rYW1uaS5waHAKMjAxOS0wMi0yMSAwMDozNjo0NAkvemFib2xldmFuaWplLnBocAoyMDE5LTAyLTIxIDA0OjI1OjI1CS9vYnNlcnZhdG9yaWphLnBocAoyMDE5LTAyLTIxIDA4OjAxOjI4CS92bGlqYW5pamUxOC5waHAKMjAxOS0wMi0yMSAwODo0MDo1NgkvZGV0aTIucGhwCjIwMTktMDItMjEgMDk6MDA6NTQJLzFkZW4ucGhwCjIwMTktMDItMjEgMTk6MzU6NDYJL2RldGkyLnBocAoyMDE5LTAyLTIxIDIzOjAxOjUxCS8xZGVuLnBocAoyMDE5LTAyLTIyIDE0OjM3OjU3CS9wc2lob2xvZzMucGhwCjIwMTktMDItMjQgMTM6MDk6NTEJL2ZhemEucGhwCjIwMTktMDItMjQgMTM6MjM6MjAJL2ZhemEucGhwCjIwMTktMDItMjQgMTM6MjM6MjAJL2ZhemEucGhwCjIwMTktMDItMjQgMTM6MjM6MjIJL2ZhemEucGhwCjIwMTktMDItMjQgMTM6MjM6NDMJL2ZhemEucGhwCjIwMTktMDItMjQgMTc6NDE6NDIJL25vdjE0LnBocAoyMDE5LTAyLTI0IDE4OjMyOjAwCS9zdG9qYWNoaWVfa2FtbmkucGhwCjIwMTktMDItMjUgMDE6NDQ6NTQJL2RlanN0dmllMi5waHAKMjAxOS0wMi0yNSAwNToxNjowMgkvbm92MTIucGhwCjIwMTktMDItMjUgMTI6MDk6MTAJL3ZsaWphbmlqZTI2LnBocAoyMDE5LTAyLTI2IDIxOjM1OjQ2CS9wc2lob2xvZzYucGhwCjIwMTktMDItMjggMDM6NTI6MDcJL29ic2VydmF0b3JpamEucGhwCjIwMTktMDItMjggMDQ6MzI6MzgJL29ic2VydmF0b3JpamEucGhwCjIwMTktMDItMjggMDg6MjI6MDMJL2ZhY3Rvci5waHAKMjAxOS0wMi0yOCAwODozODoyNQkvY29zbW82LnBocAoyMDE5LTAyLTI4IDA5OjI3OjI5CS92bGlqYW5pamU2LnBocAoyMDE5LTAyLTI4IDA5OjQzOjUyCS9ub3Y1LnBocAoyMDE5LTAyLTI4IDEyOjI3OjI5CS9ub3YzLnBocAoyMDE5LTAyLTI4IDEzOjE2OjM1CS9ub3YxMS5waHAKMjAxOS0wMi0yOCAxMzozMjo1NwkvdmxpamFuaWplLnBocAoyMDE5LTAyLTI4IDEzOjQ5OjE5CS9jb3NtbzIucGhwCjIwMTktMDItMjggMTU6Mjc6MzAJL25vdjI1LnBocAoyMDE5LTAyLTI4IDE3OjM1OjQ3CS92bGlqYW5pamUyMi5waHAKMjAxOS0wMi0yOCAxODoxNTo1NgkvdmxpamFuaWplNy5waHAKMjAxOS0wMi0yOCAxOTowNjoxMgkvbm92MTMucGhwCjIwMTktMDItMjggMjA6NTY6NTgJL3ZsaWphbmlqZTE4LnBocAoyMDE5LTAyLTI4IDIyOjIwOjAzCS9ub3YxLnBocAoyMDE5LTAzLTAxIDAwOjI0OjQwCS9ub3YxMS5waHAKMjAxOS0wMy0wMSAxMjozODozMQkvdmxpamFuaWplMTEucGhwCjIwMTktMDMtMDEgMTM6MzM6NTMJL3ZsaWphbmlqZTcucGhwCjIwMTktMDMtMDIgMDg6MzQ6MjQJL2ZhemEucGhwCjIwMTktMDMtMDIgMDg6NTU6MTUJL2ZhemEucGhwCjIwMTktMDMtMDMgMDc6MjQ6MzYJL2Nvc21vLnBocAoyMDE5LTAzLTAzIDA4OjA0OjAwCS9jb3NtbzQucGhwCjIwMTktMDMtMDMgMDk6MjM6NTkJL3BzaWhvbG9nMTIucGhwCjIwMTktMDMtMDMgMTQ6NDY6MTAJL3ZsaWphbmlqZTE2LnBocAoyMDE5LTAzLTAzIDE1OjI2OjE1CS9wc2loaWF0cmlqYS5waHAKMjAxOS0wMy0wMyAxNToyNjoxNQkvbXV6c2hpbmEucGhwCjIwMTktMDMtMDMgMTY6MjY6NTYJL3ByaWxpdi5waHAKMjAxOS0wMy0wMyAxNzoyNjo1NgkvdmxpamFuaWplMzQucGhwCjIwMTktMDMtMDMgMTg6NDc6MjAJL2Nvc21vLnBocAoyMDE5LTAzLTA1IDE0OjAzOjMzCS92bGlqYW5pamUxMS5waHAKMjAxOS0wMy0wNSAxNDoxMzoyNQkvdmxpamFuaWplMTEucGhwCjIwMTktMDMtMDUgMTQ6MjM6MjMJL3ZsaWphbmlqZTExLnBocAoyMDE5LTAzLTA3IDIwOjQ2OjI1CS8xZGVuLnBocAoyMDE5LTAzLTA4IDAxOjE2OjI1CS9mYXphLnBocAoyMDE5LTAzLTA4IDAyOjExOjMwCS9mYXphLnBocAoyMDE5LTAzLTA4IDA4OjM0OjAwCS8xZGVuLnBocAoyMDE5LTAzLTA4IDEyOjU0OjU5CS9ub3YxNy5waHAKMjAxOS0wMy0wOSAwMDoxMzoxOAkvbm92Ni5waHAKMjAxOS0wMy0wOSAwMTozMjo0NwkvdmxpamFuaWplMTIucGhwCjIwMTktMDMtMDkgMDI6MTI6NTkJL25vdjYucGhwCjIwMTktMDMtMDkgMDI6MzQ6MDIJL2RldGkyLnBocAoyMDE5LTAzLTA5IDAzOjUzOjM2CS9wc2lob2xvZzIucGhwCjIwMTktMDMtMDkgMDQ6NDM6NDUJL25vdjE2LnBocAoyMDE5LTAzLTA5IDA2OjA0OjM1CS92bGlqYW5pamUxOC5waHAKMjAxOS0wMy0wOSAwNjozNTowOAkvZGV0aTIucGhwCjIwMTktMDMtMDkgMDY6NDQ6NDUJL2Nvc21vMy5waHAKMjAxOS0wMy0wOSAwODoyNTowMwkvdGVtcGxfdnVkLnBocAoyMDE5LTAzLTA5IDA4OjQ1OjA5CS92bGlqYW5pamUyOC5waHAKMjAxOS0wMy0wOSAwOTozNTo0MQkvdmxpamFuaWplOS5waHAKMjAxOS0wMy0wOSAxMDoyNjowNAkvbHVubmthbGVuZC5waHAKMjAxOS0wMy0wOSAxMDo0NTo1NQkvdmxpamFuaWplMTcucGhwCjIwMTktMDMtMDkgMTI6MTY6MTQJL3BzaWhvbG9nNC5waHAKMjAxOS0wMy0wOSAxMjozNjo0Mwkvbm92MTAucGhwCjIwMTktMDMtMDkgMTI6NDY6NDAJL2RldGkyLnBocAoyMDE5LTAzLTA5IDEzOjA2OjI3CS8zMGRuZXkyLnBocAoyMDE5LTAzLTA5IDEzOjI2OjI1CS9ncmF2aXRhY2lqYS5waHAKMjAxOS0wMy0wOSAxMzo1Njo0MgkvMzBkbmV5LnBocAoyMDE5LTAzLTA5IDE0OjQ2OjU0CS9kZXRpMi5waHAKMjAxOS0wMy0wOSAxNToyNzowNAkvdmxpamFuaWplMzAucGhwCjIwMTktMDMtMTAgMTA6NDU6NDEJLzFkZW4ucGhwCjIwMTktMDMtMTAgMTU6MTc6MDEJL3JpdG11LnBocAoyMDE5LTAzLTEwIDE2OjE3OjU1CS92bGlqYW5pamUyNy5waHAKMjAxOS0wMy0xMCAxOTo0OToxMwkvbm92MTQucGhwCjIwMTktMDMtMTAgMjE6Mjc6MjEJL3J6Z24vcmF6Z29uMjAwNnZudXRyaS5waHAKMjAxOS0wMy0xMCAyMToyNzozMwkvcnpnbi9yYXpnb24yMDA2cmV0dXJuLnBocAoyMDE5LTAzLTExIDA3OjUzOjM5CS9ub3YxNC5waHAKMjAxOS0wMy0xMSAwODo1NTowOQkvbm92MTQucGhwCjIwMTktMDMtMTEgMTE6NDE6NDcJL2dyYXZpdGFjaWphLnBocAoyMDE5LTAzLTExIDIxOjU4OjU0CS9ub3YxNy5waHAKMjAxOS0wMy0xMSAyMzowMDoyOAkvbm92MTcucGhwCjIwMTktMDMtMTIgMDM6MTE6NTgJL2RldGkyLnBocAoyMDE5LTAzLTEyIDEzOjA1OjI3CS8xZGVuLnBocAoyMDE5LTAzLTEzIDA0OjExOjI3CS9yaXRtdTIucGhwCjIwMTktMDMtMTQgMDI6MzA6NDgJL2ZhemEucGhwCjIwMTktMDMtMTQgMDY6Mjk6MjYJL2ZhemEucGhwCjIwMTktMDMtMTQgMjI6MTg6MDEJL25vdjIwLnBocAoyMDE5LTAzLTE0IDIzOjU4OjQwCS96YXRtZW5pZS5waHAKMjAxOS0wMy0xNSAwMjozMToyMgkvcml0bXUzLnBocAoyMDE5LTAzLTE1IDAyOjU5OjE0CS9kZWpzdHZpZS5waHAKMjAxOS0wMy0xNSAwMzoxOTowNQkvMWRlbi5waHAKMjAxOS0wMy0xNSAwMzozODo1NgkvcHNpaG9sb2cxNC5waHAKMjAxOS0wMy0xNSAwMzo1OTowMQkvMWRlbi5waHAKMjAxOS0wMy0xNSAwMzo1OTowOQkvemVuc2hpbmEucGhwCjIwMTktMDMtMTUgMDQ6MTk6MTcJL3BzaWhvbG9nLnBocAoyMDE5LTAzLTE1IDA0OjI5OjIwCS9tZWhhbml6bS5waHAKMjAxOS0wMy0xNSAwNToyNzoyMQkvZGV0aS5waHAKMjAxOS0wMy0xNSAwNToyNzoyNAkvZmFjdG9yLnBocAoyMDE5LTAzLTE1IDA1OjI3OjI5CS8zMGRuZXkucGhwCjIwMTktMDMtMTUgMDU6Mjc6MzQJL2RlanN0dmllLnBocAoyMDE5LTAzLTE1IDA1OjI3OjQ0CS9tZWhhbml6bS5waHAKMjAxOS0wMy0xNSAwNToyNzo0OQkvbXV6c2hpbmEucGhwCjIwMTktMDMtMTUgMDU6Mjc6NTQJL3BzaWhvbG9nLnBocAoyMDE5LTAzLTE1IDA1OjI3OjU4CS8zMGRuZXkyLnBocAoyMDE5LTAzLTE1IDA1OjI4OjAyCS96ZW5zaGluYS5waHAKMjAxOS0wMy0xNSAwNToyODowNQkvdmxpamFuaWplLnBocAoyMDE5LTAzLTE1IDA1OjI4OjA5CS9kZWpzdHZpZTMucGhwCjIwMTktMDMtMTUgMDU6Mjg6MTgJL25vdjMucGhwCjIwMTktMDMtMTUgMDU6Mjg6MTgJL3ZsaWphbmlqZTYucGhwCjIwMTktMDMtMTUgMDU6Mjg6MTkJL3ZsaWphbmlqZTMxLnBocAoyMDE5LTAzLTE1IDA1OjI5OjE3CS9wc2lob2xvZzEzLnBocAoyMDE5LTAzLTE1IDA1OjMwOjA2CS92bGlqYW5pamUxNS5waHAKMjAxOS0wMy0xNSAwNTozMDo1OAkvdmxpamFuaWplMjQucGhwCjIwMTktMDMtMTUgMDU6MzE6MDEJL3N1aWNpZC5waHAKMjAxOS0wMy0xNSAwNTozMTowMgkvZmF6YS5waHAKMjAxOS0wMy0xNSAwNjo0MDoyMAkvZGV0aS5waHAKMjAxOS0wMy0xNSAwODoyMDozNAkvbm92MjMucGhwCjIwMTktMDMtMTUgMDk6MzM6MTYJL25vdjI1LnBocAoyMDE5LTAzLTE1IDA5OjMzOjE2CS9ub3YxMi5waHAKMjAxOS0wMy0xNSAwOTozMzoxNwkvbm92MjMucGhwCjIwMTktMDMtMTUgMDk6MzM6MTkJL2Nvc21vMi5waHAKMjAxOS0wMy0xNSAxMzoyMjoxNwkvdmxpamFuaWplMTgucGhwCjIwMTktMDMtMTUgMTM6NDI6MjMJL3ZsaWphbmlqZTI0LnBocAoyMDE5LTAzLTE1IDEzOjUyOjQ5CS9ib21iYXJkaXJvdmthLnBocAoyMDE5LTAzLTE1IDE1OjEyOjQyCS9zdWljaWQucGhwCjIwMTktMDMtMTUgMTU6NDY6NDcJLzFkZW4ucGhwCjIwMTktMDMtMTUgMjA6MTM6MzEJLzFkZW4ucGhwCjIwMTktMDMtMTYgMTY6MDM6MTQJL2FrdXNoZXIucGhwCjIwMTktMDMtMTggMDE6MTY6NTUJL25vdjUucGhwCjIwMTktMDMtMTggMDQ6MjQ6NDIJL2ZhemE0LnBocAoyMDE5LTAzLTE4IDA1OjU1OjA4CS9wc2loaWF0cmlqYS5waHAKMjAxOS0wMy0xOCAwOToxNjoyNwkvcHNpaGlhdHJpamEucGhwCjIwMTktMDMtMTggMTM6MTc6MDgJL3ZsaWphbmlqZTIzLnBocAoyMDE5LTAzLTE4IDEzOjI3OjA2CS9wc2loaWF0cmlqYS5waHAKMjAxOS0wMy0xOCAxMzo1NzoxMAkvdmxpamFuaWplMjMucGhwCjIwMTktMDMtMTggMTg6NDQ6NTMJL3ZsaWphbmlqZTIzLnBocAoyMDE5LTAzLTE4IDE5OjE4OjM1CS9ub3Y1LnBocAoyMDE5LTAzLTE5IDA0OjA4OjI1CS92bGlqYW5pamUyMy5waHAKMjAxOS0wMy0xOSAwNjozODozNgkvemF0bWVuaWUucGhwCjIwMTktMDMtMTkgMTQ6MTA6NTIJL3J6Z24vcmF6Z29uMjAwNnZudXRyaS5waHAKMjAxOS0wMy0xOSAxNToyNjo1NQkvcnpnbi9yYXpnb24yMDA2cmV0dXJuLnBocAoyMDE5LTAzLTE5IDE2OjAyOjAxCS9rb250LnBocAoyMDE5LTAzLTE5IDE2OjQyOjA2CS9mYXphLnBocAoyMDE5LTAzLTE5IDIwOjEyOjI4CS92bGlqYW5pamUxMi5waHAKMjAxOS0wMy0xOSAyMDoyMjo1NQkvdmxpamFuaWplMTIucGhwCjIwMTktMDMtMTkgMjE6NDY6MzYJL2ZhemEucGhwCjIwMTktMDMtMjAgMDI6MzU6MzUJL3BlcmlvZF8xXzMucGhwCjIwMTktMDMtMjAgMDI6NTU6NDQJL3BlcmlvZF8xXzMucGhwCjIwMTktMDMtMjAgMDQ6MjU6NDYJLzFkZW4ucGhwCjIwMTktMDMtMjEgMDc6MzQ6NDAJL3BhbWphdG5pa2kucGhwCjIwMTktMDMtMjEgMDc6NTQ6NDAJL3BhbWphdG5pa2kucGhwCjIwMTktMDMtMjEgMTY6MjI6NTgJL3ZsaWphbmlqZTEyLnBocAoyMDE5LTAzLTIxIDIyOjI2OjU3CS9wc2lob2xvZzEzLnBocAoyMDE5LTAzLTIxIDIyOjM3OjM0CS92bGlqYW5pamUyNl8xLnBocAoyMDE5LTAzLTIxIDIyOjQ3OjEwCS9ub3YxNC5waHAKMjAxOS0wMy0yMiAwNDo0MDo0NwkvdmxpamFuaWplMi5waHAKMjAxOS0wMy0yMiAwODozMToxMQkvcml0bXU0LnBocAoyMDE5LTAzLTIyIDEzOjM2OjA5CS90ZW1wbF92dWQucGhwCjIwMTktMDMtMjIgMTg6Mjk6MzAJL3N0b2phY2hpZV9rYW1uaS5waHAKMjAxOS0wMy0yMyAxNTozMzoxNgkvbHVubmthbGVuZC5waHAKMjAxOS0wMy0yNSAxMDowMTo0OQkvZmF6YS5waHAKMjAxOS0wMy0yNSAxMTo0NTo0MgkvYm9tYmFyZGlyb3ZrYS5waHAKMjAxOS0wMy0yNSAxMjo1Mjo1OAkvZmF6YS5waHAKMjAxOS0wMy0yNSAxODowNToxOAkvdmxpamFuaWplMTgucGhwCjIwMTktMDMtMjUgMjI6MzY6MjYJL2RldGkyLnBocAoyMDE5LTAzLTI2IDA1OjI4OjMxCS9jb3NtbzMucGhwCjIwMTktMDMtMjcgMTI6Mjc6NDIJL2ZhY3Rvci5waHAKMjAxOS0wMy0yNyAyMzo1MzowMgkvdmxpamFuaWplMjAucGhwCjIwMTktMDMtMjcgMjM6NTM6MDQJL3BzaWhvbG9nNC5waHAKMjAxOS0wMy0yNyAyMzo1MzowNwkvdmxpamFuaWplNy5waHAKMjAxOS0wMy0yOCAwMzozNTowOAkvdmxpamFuaWplMTgucGhwCjIwMTktMDMtMjggMDk6NDc6MzIJL25vdjI0LnBocAoyMDE5LTAzLTI4IDExOjUyOjAwCS9wc2lob2xvZy5waHAKMjAxOS0wMy0yOCAyMzo0NTo1MgkvbmV3cy5waHAKMjAxOS0wMy0zMCAxMDoxNTo1NAkvdmxpamFuaWplMzIucGhwCjIwMTktMDMtMzAgMTA6MTc6NTkJL3ZsaWphbmlqZTEyLnBocAoyMDE5LTAzLTMwIDEwOjMyOjM3CS9wcmlsaXYucGhwCjIwMTktMDMtMzAgMjE6MTM6MjQJL3ByaWxpdi5waHAKMjAxOS0wMy0zMSAwMDowNTozMwkvZmF6YS5waHAKMjAxOS0wMy0zMSAwNDowNTozMAkvZmF6YS5waHAKMjAxOS0wMy0zMSAwNzoxNjo1MQkvcHJpbGl2LnBocAoyMDE5LTAzLTMxIDEwOjI4OjUxCS92bGlqYW5pamUyOS5waHAKMjAxOS0wMy0zMSAxMzoyOTo1OAkvbm92MTMucGhwCjIwMTktMDMtMzEgMTQ6MjA6MDIJL3ZsaWphbmlqZTI3LnBocAoyMDE5LTAzLTMxIDE1OjAwOjAzCS9jb3NtbzUucGhwCjIwMTktMDMtMzEgMTU6MjA6MTAJL3BzaWhvbG9nMTEucGhwCjIwMTktMDMtMzEgMTU6MzA6MTQJL3BzaWhpYXRyaWphLnBocAoyMDE5LTAzLTMxIDE2OjMwOjU1CS92bGlqYW5pamUyNl8yLnBocAoyMDE5LTAzLTMxIDE5OjAyOjMwCS9tdXpzaGluYS5waHAKMjAxOS0wMy0zMSAyMDo1MzowMwkvZmF6YTQucGhwCjIwMTktMDMtMzEgMjM6NTI6MjcJL25vdjE4LnBocAoyMDE5LTA0LTAxIDAyOjAyOjU0CS9ub3YxMi5waHAKMjAxOS0wNC0wMSAwMjo1MjoyNwkvdmxpamFuaWplMjgucGhwCjIwMTktMDQtMDEgMTI6MzU6MjIJL3JpdG11LnBocAoyMDE5LTA0LTAxIDE1OjEzOjE5CS92bGlqYW5pamUyOC5waHAKMjAxOS0wNC0wMiAxMDoxMToyMwkvdmxpamFuaWplNy5waHAKMjAxOS0wNC0wMiAxMDo1MTozMwkvbm92MjIucGhwCjIwMTktMDQtMDIgMTE6MDE6MzIJL25vdjIyLnBocAoyMDE5LTA0LTAyIDEzOjIxOjU0CS92bGlqYW5pamUzMi5waHAKMjAxOS0wNC0wMiAxMzo1MjowOAkvcHNpaG9sb2cxMC5waHAKMjAxOS0wNC0wMiAxNDozNjowNAkvdmxpamFuaWplMTAucGhwCjIwMTktMDQtMDIgMTQ6MzY6MjAJL25vdjQucGhwCjIwMTktMDQtMDIgMTQ6MzY6NDAJL25vdjcucGhwCjIwMTktMDQtMDIgMTQ6Mzg6MDYJL2RyZXZuLnBocAoyMDE5LTA0LTAyIDE5OjE0OjU5CS9wYW1qYXRuaWtpLnBocAoyMDE5LTA0LTAyIDIwOjM1OjE2CS9uZXRvY2hub3N0aS5waHAKMjAxOS0wNC0wMiAyMjo1MzozNgkvZmF6YS5waHAKMjAxOS0wNC0wMyAwNjoyMjowMAkvdmxpamFuaWplNy5waHAKMjAxOS0wNC0wMyAwNjo1MjowOQkvZGVqc3R2aWUzLnBocAoyMDE5LTA0LTAzIDA5OjUzOjA4CS9jcmltaW5hbC5waHAKMjAxOS0wNC0wMyAxMDoyOToyMQkvY3JpbWluYWwucGhwCjIwMTktMDQtMDMgMTE6MTI6MTMJL2NyaW1pbmFsLnBocAoyMDE5LTA0LTAzIDEyOjI4OjIwCS9vYnNlcnZhdG9yeS5waHAKMjAxOS0wNC0wNCAwMjoxMzowMAkva29udC5waHAKMjAxOS0wNC0wNCAwNjo1Nzo1MAkvcml0bXUucGhwCjIwMTktMDQtMDQgMTM6NDQ6MDYJLzMwZG5leTQucGhwCjIwMTktMDQtMDUgMTE6MjQ6MDMJL25vdjEyLnBocAoyMDE5LTA0LTA1IDEyOjQ0OjE5CS9ub3YxMi5waHAKMjAxOS0wNC0wNiAwMjowNzoxMwkvZmF6YS5waHAKMjAxOS0wNC0wNiAwMzowNzo0MAkvZmF6YS5waHAKMjAxOS0wNC0wNiAwNToxMDoyMgkvMWRlbi5waHAKMjAxOS0wNC0wNiAwNToxMDo0MQkvbm92MTIucGhwCjIwMTktMDQtMDYgMDg6MzA6NTQJL3Zvem11c2hlbmllLnBocAoyMDE5LTA0LTA2IDA5OjMwOjQ5CS9ub3Y5LnBocAoyMDE5LTA0LTA2IDExOjMxOjA3CS9ub3YxMC5waHAKMjAxOS0wNC0wNiAxMTo1MDo0MgkvdmxpamFuaWplMzAucGhwCjIwMTktMDQtMDYgMTI6MDA6NDIJL3ZsaWphbmlqZTMwLnBocAoyMDE5LTA0LTA2IDEyOjIyOjM4CS92bGlqYW5pamUzMC5waHAKMjAxOS0wNC0wNiAxMjoyNjo1NAkvbm92MTIucGhwCjIwMTktMDQtMDYgMTI6NTQ6MjcJL3BzaWhvbG9nNC5waHAKMjAxOS0wNC0wNiAxNDowMTo1OQkvMzBkbmV5NC5waHAKMjAxOS0wNC0wNiAxNDozNDo0NgkvbHVua2kucGhwCjIwMTktMDQtMDYgMTY6MTI6NDAJL25vdjEyLnBocAoyMDE5LTA0LTA2IDE4OjExOjM4CS92bGlqYW5pamUxOS5waHAKMjAxOS0wNC0wNiAxODozMjoxOQkvdmxpamFuaWplMjZfMS5waHAKMjAxOS0wNC0wNiAxOTo1OTozNQkva3Vyc3VzLnBocAoyMDE5LTA0LTA2IDIwOjEwOjMwCS92bGlqYW5pamUxMC5waHAKMjAxOS0wNC0wNyAwMDo0MDo0MgkvMWRlbi5waHAKMjAxOS0wNC0wNyAwMTozNjowNQkvbGluaXlhX3Zpei5waHAKMjAxOS0wNC0wNyAwMjowMzo0NwkvdmxpamFuaWplMzAucGhwCjIwMTktMDQtMDcgMDI6NTk6MTAJL25vdjIucGhwCjIwMTktMDQtMDcgMDM6MzY6MDUJL3ZsaWphbmlqZTMxLnBocAoyMDE5LTA0LTA3IDA0OjIyOjE0CS8zMGRuZXkzLnBocAoyMDE5LTA0LTA3IDA1OjI2OjUxCS92bGlqYW5pamUxNy5waHAKMjAxOS0wNC0wNyAwNTozNjowNgkvemFib2xldmFuaWplLnBocAoyMDE5LTA0LTA3IDA4OjU5OjQyCS9wc2lob2xvZzkucGhwCjIwMTktMDQtMDcgMTA6NDk6NTYJL25vdjEzLnBocAoyMDE5LTA0LTA3IDExOjI2OjUxCS9ub3YxNS5waHAKMjAxOS0wNC0wNyAxMzoyNjo1MQkva3Vyc3VzLnBocAoyMDE5LTA0LTA3IDEzOjM2OjA1CS9wc2lob2xvZzgucGhwCjIwMTktMDQtMDcgMTY6NTk6MTAJL3BzaWhvbG9nNS5waHAKMjAxOS0wNC0wNyAxNzo0NTo0MAkvbGluaXlhX3Zpei5waHAKMjAxOS0wNC0wNyAxNzo1NDozNAkvbGluaXlhX3Zpei5waHAKMjAxOS0wNC0wNyAxODo0OTo1NwkvdmxpamFuaWplMi5waHAKMjAxOS0wNC0wOCAwMzoxMjoxNgkvdmxpamFuaWplMi5waHAKMjAxOS0wNC0wOCAwNjowMzoyMAkvemFib2xldmFuaWplLnBocAoyMDE5LTA0LTA4IDA2OjUzOjMzCS9wc2lob2xvZzkucGhwCjIwMTktMDQtMDggMTQ6MDk6MjUJL2thbWVuLnBocAoyMDE5LTA0LTA4IDE0OjQ3OjUxCS96YWJvbGV2YW5pamUucGhwCjIwMTktMDQtMDggMTY6MzQ6NTMJL3ZsaWphbmlqZTQucGhwCjIwMTktMDQtMDggMTg6NDU6MjMJL3JpdG11NC5waHAKMjAxOS0wNC0wOCAxODo1NTozMwkvMzBkbmV5My5waHAKMjAxOS0wNC0wOCAxOTowNToyNQkvc3ZldGx1MWRlbi5waHAKMjAxOS0wNC0wOCAxOTowNTo0Mwkvbm92MTkucGhwCjIwMTktMDQtMDggMTk6MzU6NTAJL3BzaWhvbG9nNy5waHAKMjAxOS0wNC0wOCAyMDo0Njo0MwkvMWRlbi5waHAKMjAxOS0wNC0wOSAwNTowMjozNAkvbmV3cy5waHAKMjAxOS0wNC0wOSAwNTo0MjozMwkvcHNpaG9sb2c3LnBocAoyMDE5LTA0LTA5IDA2OjQ5OjE0CS9ub3YyMy5waHAKMjAxOS0wNC0wOSAwODozNTo1Mwkvbm92MTIucGhwCjIwMTktMDQtMDkgMDk6MDI6MzQJL3ZsaWphbmlqZTI2XzIucGhwCjIwMTktMDQtMDkgMDk6MzA6NTMJL3ZsaWphbmlqZTMwLnBocAoyMDE5LTA0LTA5IDEwOjQ1OjU0CS9ub3YxLnBocAoyMDE5LTA0LTA5IDE0OjAwOjU0CS9yaXRtdTIucGhwCjIwMTktMDQtMDkgMTQ6MTU6NTMJL2xpbml5YV92aXoucGhwCjIwMTktMDQtMDkgMTQ6MzA6NTQJL3JpdG11Mi5waHAKMjAxOS0wNC0wOSAxNDo0NTo1NAkvcml0bXUyLnBocAoyMDE5LTA0LTA5IDE1OjE1OjUzCS9yaXRtdTIucGhwCjIwMTktMDQtMDkgMTY6MTU6NTMJL2xpbml5YV92aXoucGhwCjIwMTktMDQtMDkgMTc6MzA6NTMJL3ZsaWphbmlqZTMyLnBocAoyMDE5LTA0LTA5IDIwOjMwOjU0CS9wc2lob2xvZzE0LnBocAoyMDE5LTA0LTA5IDIwOjQ1OjUzCS9uZXRvY2hub3N0aS5waHAKMjAxOS0wNC0xMCAwMDoxNTo1NAkvbm92MjAucGhwCjIwMTktMDQtMTAgMDE6MDA6NTMJL3phdG1lbmllLnBocAoyMDE5LTA0LTEwIDE1OjE0OjM3CS92bGlqYW5pamUxOC5waHAKMjAxOS0wNC0xMCAyMDoxNTo0NQkvbGluaXlhX3Zpei5waHAKMjAxOS0wNC0xMSAxMTo1MjoyOQkvbm92MjMucGhwCjIwMTktMDQtMTEgMTQ6MTM6MzEJL2xpbml5YV92aXoucGhwCjIwMTktMDQtMTEgMTY6MzM6NDEJL2ZhemEucGhwCjIwMTktMDQtMTEgMTg6MjQ6MTQJL2ZhemEucGhwCjIwMTktMDQtMTIgMDk6Mzk6MTYJL25vdjEyLnBocAoyMDE5LTA0LTEyIDIxOjQ2OjIxCS92bGlqYW5pamUxNC5waHAKMjAxOS0wNC0xMiAyMjoyNDoxOQkvdGVtcGxfdnVkLnBocAoyMDE5LTA0LTEyIDIzOjM1OjQxCS92bGlqYW5pamUxNC5waHAKMjAxOS0wNC0xMyAwNDowMzoxNQkvcHNpaG9sb2cxMi5waHAKMjAxOS0wNC0xMyAwODo0NDoxOAkvbWVoYW5pem0ucGhwCjIwMTktMDQtMTMgMDg6NTQ6MzAJL25vdjMucGhwCjIwMTktMDQtMTMgMDk6MDU6MDgJL25vdjMucGhwCjIwMTktMDQtMTMgMDk6MjQ6NDUJL25vdjMucGhwCjIwMTktMDQtMTMgMDk6NDQ6NDcJL25vdjMucGhwCjIwMTktMDQtMTMgMTA6NDU6MjgJL25vdjI1LnBocAoyMDE5LTA0LTEzIDExOjEyOjEwCS9ub3YyNS5waHAKMjAxOS0wNC0xMyAxMTo0NTo1OQkvbm92NS5waHAKMjAxOS0wNC0xMyAxMzoyNjoyOQkvbm92MjMucGhwCjIwMTktMDQtMTMgMTU6MDk6NDYJL2RyZXZuLnBocAoyMDE5LTA0LTEzIDE1OjI5OjQ3CS9kcmV2bi5waHAKMjAxOS0wNC0xMyAxNTozOToxOAkvbWVoYW5pem0ucGhwCjIwMTktMDQtMTMgMTY6MTg6MDgJL21laGFuaXptLnBocAoyMDE5LTA0LTEzIDE4OjIxOjAyCS9ub3Y1LnBocAoyMDE5LTA0LTEzIDE4OjU5OjM1CS9ub3YzLnBocAoyMDE5LTA0LTEzIDIzOjI5OjQ5CS92bGlqYW5pamUyMS5waHAKMjAxOS0wNC0xNCAwMjoxODoyNAkvbm92MTgucGhwCjIwMTktMDQtMTQgMTE6MjU6NTUJL3BzaWhvbG9nOC5waHAKMjAxOS0wNC0xNCAxMTozNzowOQkvbWVzdGEucGhwCjIwMTktMDQtMTQgMTE6NDg6MjQJL3ZsaWphbmlqZTcucGhwCjIwMTktMDQtMTQgMTI6NDQ6MzkJL25vdjgucGhwCjIwMTktMDQtMTQgMTM6Mjk6NDAJL3ZsaWphbmlqZTcucGhwCjIwMTktMDQtMTQgMTQ6MjU6NTQJL25vdjgucGhwCjIwMTktMDQtMTQgMTY6NTI6MTAJL25vdjUucGhwCjIwMTktMDQtMTQgMjE6MTA6NTQJL3RyYXZtYS5waHAKMjAxOS0wNC0xNSAwMToyMToyNwkvdHJhdm1hLnBocAoyMDE5LTA0LTE1IDAyOjUyOjE0CS92bGlqYW5pamU3LnBocAoyMDE5LTA0LTE1IDAzOjAyOjA4CS9tZWhhbml6bS5waHAKMjAxOS0wNC0xNSAwMzo1Mjo0Ngkvbm92OC5waHAKMjAxOS0wNC0xNSAxMTo1NToyNAkvdmxpamFuaWplMjEucGhwCjIwMTktMDQtMTUgMTg6MjI6NTcJL3ZsaWphbmlqZTMwLnBocAoyMDE5LTA0LTE1IDE4OjMyOjUyCS9ub3Y1LnBocAoyMDE5LTA0LTE1IDE5OjM3OjE4CS8zMGRuZXkucGhwCjIwMTktMDQtMTUgMjA6MDE6MzcJL25vdjMucGhwCjIwMTktMDQtMTUgMjE6MTM6MzcJL3ZsaWphbmlqZTcucGhwCjIwMTktMDQtMTUgMjE6Mzc6MzcJL2xpbml5YV92aXoucGhwCjIwMTktMDQtMTUgMjI6MDE6MzcJL3ZsaWphbmlqZTIxLnBocAoyMDE5LTA0LTE2IDA3OjEwOjIzCS9jb3NtbzMucGhwCjIwMTktMDQtMTYgMDc6NTA6MTkJL3BzaWhvbG9nNS5waHAKMjAxOS0wNC0xNiAxMTo1Mjo0MAkvcHNpaG9sb2c1LnBocAoyMDE5LTA0LTE2IDEzOjEyOjEzCS9wc2lob2xvZzEyLnBocAoyMDE5LTA0LTE2IDE0OjAyOjM1CS9wc2lob2xvZzEyLnBocAoyMDE5LTA0LTE2IDE0OjEzOjM1CS9wc2lob2xvZzEyLnBocAoyMDE5LTA0LTE2IDE0OjIzOjA0CS92bGlqYW5pamU3LnBocAoyMDE5LTA0LTE2IDE0OjMzOjA3CS90cmF2bWEucGhwCjIwMTktMDQtMTcgMDE6NTY6NDQJL2Nvc21vMy5waHAKMjAxOS0wNC0xNyAwMzo0ODowNQkvY29zbW8zLnBocAoyMDE5LTA0LTE3IDA2OjU5OjE4CS9mYXphLnBocAoyMDE5LTA0LTE3IDA5OjAwOjIwCS9mYXphLnBocAoyMDE5LTA0LTE3IDEwOjExOjA2CS9ha3VzaGVyLnBocAoyMDE5LTA0LTE3IDEwOjIxOjE5CS92bGlqYW5pamUyMS5waHAKMjAxOS0wNC0xNyAxMDo1MToyNwkvbWVoYW5pem0ucGhwCjIwMTktMDQtMTcgMTE6NDE6NDgJL2Nvc21vMy5waHAKMjAxOS0wNC0xNyAxMjo0MjoxMgkvdmxpamFuaWplNy5waHAKMjAxOS0wNC0xNyAxNzo1NjowMAkvYWt1c2hlci5waHAKMjAxOS0wNC0xNyAyMDoxMDo0OQkvdmxpamFuaWplNy5waHAKMjAxOS0wNC0xNyAyMDo0OToyNAkvbm92Ny5waHAKMjAxOS0wNC0xNyAyMDo1OTo0MQkvb2JzZXJ2YXRvcnkucGhwCjIwMTktMDQtMTcgMjI6MDE6MjQJL25vdjcucGhwCjIwMTktMDQtMTggMDE6NTg6MDAJL3ZsaWphbmlqZTMzLnBocAoyMDE5LTA0LTE4IDAxOjU4OjA5CS9uZXdzLnBocAoyMDE5LTA0LTE4IDA5OjQwOjUwCS92bGlqYW5pamUxMy5waHAKMjAxOS0wNC0xOCAxMjoxNTowOAkvbm92NS5waHAKMjAxOS0wNC0xOCAxNTozMDozNAkvbm92NC5waHAKMjAxOS0wNC0xOCAxOToyMzo0MgkvdHJhdm1hLnBocAoyMDE5LTA0LTE4IDIwOjIzOjQyCS9wc2lob2xvZzIucGhwCjIwMTktMDQtMTkgMDU6MDQ6NTIJL3BzaWhvbG9nMi5waHAKMjAxOS0wNC0xOSAxNTo0NTo0MwkvcHNpaG9sb2c5LnBocAoyMDE5LTA0LTE5IDE5OjIwOjEyCS9jb3NtbzMucGhwCjIwMTktMDQtMTkgMjE6MDA6MjAJL25vdjUucGhwCjIwMTktMDQtMjAgMDM6NTE6MjkJL2FrdXNoZXIucGhwCjIwMTktMDQtMjAgMDc6NTE6MTcJL3BzaWhvbG9nNS5waHAKMjAxOS0wNC0yMSAwNzowNTo1OAkvbm92My5waHAKMjAxOS0wNC0yMSAwOToyNzoxNAkvbm92My5waHAKMjAxOS0wNC0yMSAxMDowNzoxMwkvbm92MTYucGhwCjIwMTktMDQtMjEgMTI6Mzk6MDkJL21laGFuaXptLnBocAoyMDE5LTA0LTIxIDEzOjE5OjM3CS92bGlqYW5pamUyMS5waHAKMjAxOS0wNC0yMSAxNTo1MDoxNgkvb2JzZXJ2YXRvcnkucGhwCjIwMTktMDQtMjEgMTk6MDI6NDEJL25vdjQucGhwCjIwMTktMDQtMjIgMDM6NTk6NDcJL3BvbG4ucGhwCjIwMTktMDQtMjIgMDQ6Mjk6NDkJL25vdjE3LnBocAoyMDE5LTA0LTIyIDA0OjQ5OjMyCS9ub3YxNC5waHAKMjAxOS0wNC0yMiAwNjo1OTo1NQkvcHNpaG9sb2cxMi5waHAKMjAxOS0wNC0yMiAwNzoxMDoyMAkvdmxpamFuaWplNy5waHAKMjAxOS0wNC0yMiAxMzozNjo0MgkvcHNpaG9sb2cxMS5waHAKMjAxOS0wNC0yMyAwMToyNjowNAkvZmF6YS5waHAKMjAxOS0wNC0yMyAwNDowNzoxNAkvZmF6YS5waHAKMjAxOS0wNC0yMyAyMjoyMDoxOQkvbGluaXlhX3Zpei5waHAKMjAxOS0wNC0yNCAwODoxNDozNgkvbmV3cy5waHAKMjAxOS0wNC0yNCAwOToyODozOAkvZmF6YS5waHAKMjAxOS0wNC0yNCAxMDo0NDowNgkvZGV0aS5waHAKMjAxOS0wNC0yNCAxMTo1OToxNQkvbm92NS5waHAKMjAxOS0wNC0yNCAxNDozMzoxNAkvbm92OC5waHAKMjAxOS0wNC0yNCAxNTo0ODo1OQkva29udC5waHAKMjAxOS0wNC0yNCAxNzowOToyOQkvbWVzdGEucGhwCjIwMTktMDQtMjQgMTg6MzA6MjcJL25vdjEwLnBocAoyMDE5LTA0LTI0IDIwOjU4OjMyCS9yaXRtdS5waHAKMjAxOS0wNC0yNCAyMTowMzo0Mwkvbm92MTQucGhwCjIwMTktMDQtMjQgMjM6MjQ6MDAJL2t1cnN1cy5waHAKMjAxOS0wNC0yNSAwMDozODowMQkvZGVqc3R2aWUucGhwCjIwMTktMDQtMjUgMDA6NDM6MzQJL3N1aWNpZC5waHAKMjAxOS0wNC0yNSAwMTo1NzozNwkvY29zbW80LnBocAoyMDE5LTA0LTI1IDAzOjE1OjQzCS9yaXRtdTQucGhwCjIwMTktMDQtMjUgMDQ6MjI6MDcJL3ZsaWphbmlqZTM0LnBocAoyMDE5LTA0LTI1IDA0OjMxOjM4CS90cmF2bWEucGhwCjIwMTktMDQtMjUgMDY6NTM6MDEJL2Nvc21vLnBocAoyMDE5LTA0LTI1IDA3OjQyOjIyCS9jb3Ntby5waHAKMjAxOS0wNC0yNSAwODoxMjo1MgkvY29zbW8ucGhwCjIwMTktMDQtMjUgMDg6MjM6MzEJL2Nvc21vLnBocAoyMDE5LTA0LTI1IDA4OjQyOjQ4CS96YXRtZW5pZS5waHAKMjAxOS0wNC0yNSAwODo1MzowNwkvY29zbW8ucGhwCjIwMTktMDQtMjUgMDk6MjQ6MDMJL3ZsaWphbmlqZTM0LnBocAoyMDE5LTA0LTI1IDA5OjMzOjUxCS9wc2lob2xvZzMucGhwCjIwMTktMDQtMjUgMDk6NDQ6MjQJL3phdG1lbmllLnBocAoyMDE5LTA0LTI1IDExOjQ0OjA1CS9jb3NtbzIucGhwCjIwMTktMDQtMjUgMTE6NTM6NTUJL2RldGkucGhwCjIwMTktMDQtMjUgMTI6MTM6NTQJL25vdjEucGhwCjIwMTktMDQtMjUgMTI6NDQ6MTEJL3ZsaWphbmlqZTI2LnBocAoyMDE5LTA0LTI1IDEzOjE4OjA3CS92bGlqYW5pamUxOS5waHAKMjAxOS0wNC0yNSAxMzoyNDo1MQkvdmxpamFuaWplMTkucGhwCjIwMTktMDQtMjUgMTM6MzU6MDAJL3ZsaWphbmlqZTE5LnBocAoyMDE5LTA0LTI1IDEzOjU1OjExCS92bGlqYW5pamUzNC5waHAKMjAxOS0wNC0yNSAxNDowNToxNwkvdmxpamFuaWplMTgucGhwCjIwMTktMDQtMjUgMTU6MzU6NTkJL3BzaWhvbG9nLnBocAoyMDE5LTA0LTI1IDE1OjQ1OjUwCS9wc2lob2xvZy5waHAKMjAxOS0wNC0yNSAxNTo1MzoyOQkvY29zbW81LnBocAoyMDE5LTA0LTI1IDE1OjU1OjUzCS9wc2lob2xvZy5waHAKMjAxOS0wNC0yNSAxNjowNTo1MwkvcHNpaG9sb2cucGhwCjIwMTktMDQtMjUgMTY6MTU6MzcJL3ZsaWphbmlqZTMxLnBocAoyMDE5LTA0LTI1IDE3OjIwOjQ4CS9ub3YxNS5waHAKMjAxOS0wNC0yNSAxOToxMToyOAkvZGVqc3R2aWUyLnBocAoyMDE5LTA0LTI1IDE5OjIxOjUxCS9kZWpzdHZpZTIucGhwCjIwMTktMDQtMjUgMTk6MzI6MTUJL2RlanN0dmllMi5waHAKMjAxOS0wNC0yNSAxOTo0MTo0OQkva3Vyc3VzLnBocAoyMDE5LTA0LTI1IDIwOjIxOjQ5CS9wc2lob2xvZzgucGhwCjIwMTktMDQtMjUgMjA6NTk6MzMJLzMwZG5leTMucGhwCjIwMTktMDQtMjUgMjE6MDM6MTAJL2FrdXNoZXIucGhwCjIwMTktMDQtMjUgMjE6MDU6MzUJL3ZsaWphbmlqZTYucGhwCjIwMTktMDQtMjUgMjE6MzI6MTYJL3ZsaWphbmlqZTYucGhwCjIwMTktMDQtMjUgMjI6MDc6NTUJL3BhbWphdG5pa2kucGhwCjIwMTktMDQtMjUgMjI6MTI6MDgJL2Nvc21vLnBocAoyMDE5LTA0LTI1IDIzOjIwOjQ4CS9wc2lob2xvZzEwLnBocAoyMDE5LTA0LTI1IDIzOjU2OjE3CS9wc2lob2xvZzcucGhwCjIwMTktMDQtMjYgMDA6MTI6MTgJL25vdjEyLnBocAoyMDE5LTA0LTI2IDAwOjQyOjE0CS92bGlqYW5pamU1LnBocAoyMDE5LTA0LTI2IDAxOjMzOjAxCS8zMGRuZXkzLnBocAoyMDE5LTA0LTI2IDAxOjQ3OjA1CS92bGlqYW5pamUxMS5waHAKMjAxOS0wNC0yNiAwMTo1MzowOAkvdmxpamFuaWplMzIucGhwCjIwMTktMDQtMjYgMDM6MDE6MTIJL3ZsaWphbmlqZTE0LnBocAoyMDE5LTA0LTI2IDAzOjQyOjE1CS92bGlqYW5pamUzMS5waHAKMjAxOS0wNC0yNiAwNDo1NDoyOQkvcml0bXUzLnBocAoyMDE5LTA0LTI2IDA5OjA1OjQ4CS92bGlqYW5pamU3LnBocAoyMDE5LTA0LTI2IDExOjM2OjA5CS9ub3YyNS5waHAKMjAxOS0wNC0yNiAxMjo0NzoyNQkvdmxpamFuaWplMTQucGhwCjIwMTktMDQtMjYgMTc6NTk6MjMJL3ZsaWphbmlqZTEzLnBocAoyMDE5LTA0LTI2IDE4OjE5OjAzCS92bGlqYW5pamUxMy5waHAKMjAxOS0wNC0yNiAxOTozNTo0NgkvdmxpamFuaWplMTMucGhwCjIwMTktMDQtMjYgMTk6NDE6MTEJL3ZsaWphbmlqZTEzLnBocAoyMDE5LTA0LTI3IDAzOjUzOjQ5CS9yemduL3JhemdvbjIwMDZ2bnV0cmkucGhwCjIwMTktMDQtMjcgMDM6NTY6NDAJL3J6Z24vcmF6Z29uMjAwNnJldHVybi5waHAKMjAxOS0wNC0yNyAxMjozMjo0NgkvbWVoYW5pem0ucGhwCjIwMTktMDQtMjggMDI6NTc6MTgJL25vdjE4LnBocAoyMDE5LTA0LTI4IDAzOjE3OjAzCS92bGlqYW5pamUyNl8yLnBocAoyMDE5LTA0LTI4IDAzOjM3OjEzCS92bGlqYW5pamUyNC5waHAKMjAxOS0wNC0yOCAwMzo0NzowNwkvZmF6YS5waHAKMjAxOS0wNC0yOCAwNDo1NzoxOQkvdmxpamFuaWplMjcucGhwCjIwMTktMDQtMjggMDU6MDI6NTYJL3ZsaWphbmlqZTIwLnBocAoyMDE5LTA0LTI4IDA1OjAyOjU4CS9ub3YyMS5waHAKMjAxOS0wNC0yOCAwNTowMzowMgkvbm92MTcucGhwCjIwMTktMDQtMjggMDU6MDM6MDQJL2thbWVuLnBocAoyMDE5LTA0LTI4IDA1OjAzOjA1CS9tZW5naXIucGhwCjIwMTktMDQtMjggMDU6MDM6NDgJL3Zvem11c2hlbmllLnBocAoyMDE5LTA0LTI4IDA1OjAzOjU0CS8xZGVuLnBocAoyMDE5LTA0LTI4IDA1OjA0OjA4CS9tZXN0YS5waHAKMjAxOS0wNC0yOCAwNTowNDoxNgkvcml0bXUzLnBocAoyMDE5LTA0LTI4IDA1OjA0OjIzCS8zMGRuZXkzLnBocAoyMDE5LTA0LTI4IDA1OjA0OjMxCS9yaXRtdTQucGhwCjIwMTktMDQtMjggMDU6MDQ6NDEJLzMwZG5leTQucGhwCjIwMTktMDQtMjggMDU6MDQ6NTYJL3BhbWphdG5pa2kucGhwCjIwMTktMDQtMjggMDU6MDU6MTAJL3ZsaWphbmlqZTQucGhwCjIwMTktMDQtMjggMDU6MDU6MjUJL3ByaWxpdi5waHAKMjAxOS0wNC0yOCAwNTowNTo0MAkvcHNpaG9sb2c5LnBocAoyMDE5LTA0LTI4IDA1OjA1OjU0CS9wZXJpb2RfMV8zLnBocAoyMDE5LTA0LTI4IDA1OjA2OjA5CS9rYW1lbm5vZV9rb2xjby5waHAKMjAxOS0wNC0yOCAwNTowNjoyNAkvbHVubmthbGVuZC5waHAKMjAxOS0wNC0yOCAwNTowNjozNQkvc3ZldGx1MWRlbi5waHAKMjAxOS0wNC0yOCAwNTowNzowMwkvdmxpamFuaWplMTAucGhwCjIwMTktMDQtMjggMDU6MDc6MTEJL3ZsaWphbmlqZTI2LnBocAoyMDE5LTA0LTI4IDA1OjA3OjIwCS9kcmV2bi5waHAKMjAxOS0wNC0yOCAwNTowNzoyOQkvemFib2xldmFuaWplLnBocAoyMDE5LTA0LTI4IDA1OjA3OjU1CS92bGlqYW5pamUyNl8yLnBocAoyMDE5LTA0LTI4IDA1OjA4OjA0CS92bGlqYW5pamUyNl8xLnBocAoyMDE5LTA0LTI4IDA2OjA3OjIwCS8xZGVuLnBocAoyMDE5LTA0LTI4IDA2OjQ3OjMzCS9wcmlsaXYucGhwCjIwMTktMDQtMjggMDY6NTc6MjAJL2JvbWJhcmRpcm92a2EucGhwCjIwMTktMDQtMjggMDc6MDc6MzkJL2JvbWJhcmRpcm92a2EucGhwCjIwMTktMDQtMjggMDc6MTc6NTAJL3BzaWhvbG9nOS5waHAKMjAxOS0wNC0yOCAwNzo0ODowMwkvZ3Jhdml0YWNpamEucGhwCjIwMTktMDQtMjggMDc6NDg6MDQJL2dyYXZpdGFjaWphLnBocAoyMDE5LTA0LTI4IDExOjQwOjE0CS92bGlqYW5pamUyOS5waHAKMjAxOS0wNC0yOCAxNTowMToyMQkvdmxpamFuaWplNy5waHAKMjAxOS0wNC0yOCAxNToxMTozMAkvdHJhdm1hLnBocAoyMDE5LTA0LTI4IDE1OjMxOjI4CS9mYXphLnBocAoyMDE5LTA0LTI4IDE4OjAyOjEwCS90cmF2bWEucGhwCjIwMTktMDQtMjggMTg6MTI6MTAJL2ZhemEucGhwCjIwMTktMDQtMjggMTg6MjI6MjEJL3ByaWxpdi5waHAKMjAxOS0wNC0yOSAwMzowNjoyMwkvbWVuZ2lyLnBocAoyMDE5LTA0LTI5IDAzOjE1OjQyCS9mZW5zaHV5LnBocAoyMDE5LTA0LTI5IDA1OjQ2OjUxCS9jb3NtbzQucGhwCjIwMTktMDQtMjkgMDY6MDY6NDMJLzMwZG5leTIucGhwCjIwMTktMDQtMjkgMDc6MDc6MzAJLzMwZG5leTIucGhwCjIwMTktMDQtMjkgMTE6Mzc6MDEJL25vdjIyLnBocAoyMDE5LTA0LTI5IDExOjQ3OjAxCS9ub3YyMi5waHAKMjAxOS0wNC0yOSAxMzo1ODowMQkvY29zbW80LnBocAoyMDE5LTA0LTI5IDE2OjE5OjI1CS9kZWpzdHZpZTMucGhwCjIwMTktMDQtMzAgMDQ6MDI6MDUJL2RldGkyLnBocAoyMDE5LTA0LTMwIDEyOjMyOjIzCS9jb3NtbzQucGhwCjIwMTktMDQtMzAgMTI6NDQ6MDEJL3ZsaWphbmlqZTIyLnBocAoyMDE5LTA0LTMwIDEzOjE4OjUxCS9jb3Ntby5waHAKMjAxOS0wNC0zMCAxMzo0MjowNAkvbXV6c2hpbmEucGhwCjIwMTktMDQtMzAgMTM6NTM6NDAJL25vdjEyLnBocAoyMDE5LTA0LTMwIDE0OjE2OjU0CS9jb3Ntby5waHAKMjAxOS0wNC0zMCAxNDoyODozMQkvZmFjdG9yLnBocAoyMDE5LTA0LTMwIDE0OjUxOjQ0CS9yaXRtdTMucGhwCjIwMTktMDQtMzAgMTU6MDM6MjEJL3BzaWhvbG9nLnBocAoyMDE5LTA0LTMwIDE1OjI0OjUxCS9ub3Y1LnBocAoyMDE5LTA0LTMwIDE2OjE1OjU5CS9ub3YyNC5waHAKMjAxOS0wNC0zMCAxNjoyNzowMAkvbm92MjQucGhwCjIwMTktMDQtMzAgMTY6Mjc6MjYJL25vdjQucGhwCjIwMTktMDQtMzAgMTY6Mjc6MzAJL25vdjE4LnBocAoyMDE5LTA0LTMwIDE2OjI3OjM2CS96YXRtZW5pZS5waHAKMjAxOS0wNC0zMCAxNjoyNzo0NQkvbm92OS5waHAKMjAxOS0wNC0zMCAxNjoyNzo1NAkvbm92MjAucGhwCjIwMTktMDQtMzAgMTY6Mjg6MDMJL25vdjE5LnBocAoyMDE5LTA0LTMwIDE2OjM2OjIzCS9ub3YxNC5waHAKMjAxOS0wNC0zMCAxNjo0NjoyMAkvdmxpamFuaWplMTMucGhwCjIwMTktMDQtMzAgMTk6MDc6NTkJL3BzaWhvbG9nOS5waHAKMjAxOS0wNC0zMCAxOTozODowOAkvdmxpamFuaWplNy5waHAKMjAxOS0wNC0zMCAyMDozMDoyMAkvbWVzdGEucGhwCjIwMTktMDQtMzAgMjA6Mzg6NTcJL3ZsaWphbmlqZTI2XzEucGhwCjIwMTktMDQtMzAgMjE6MDg6NDcJL3ZsaWphbmlqZTM0LnBocAoyMDE5LTA0LTMwIDIyOjIxOjQ5CS96YXRtZW5pZS5waHAKMjAxOS0wNC0zMCAyMjo1NDo1OQkvemF0bWVuaWUucGhwCjIwMTktMDUtMDEgMDQ6MDc6NDYJL3ZsaWphbmlqZTIxLnBocAoyMDE5LTA1LTAxIDA0OjU0OjQ0CS9tZWhhbml6bS5waHAKMjAxOS0wNS0wMSAwNTowMzozOAkvbm92MS5waHAKMjAxOS0wNS0wMSAwNTowMzozOQkvcHNpaG9sb2czLnBocAoyMDE5LTA1LTAxIDA1OjAzOjQ0CS9ub3YxNS5waHAKMjAxOS0wNS0wMSAwNTowMzo1MQkvbm92MTMucGhwCjIwMTktMDUtMDEgMDU6MDM6NTcJL2t1cnN1cy5waHAKMjAxOS0wNS0wMSAwNTowNDowNAkvcG9sbi5waHAKMjAxOS0wNS0wMSAwNTowNDoxMAkvcHNpaG9sb2cyLnBocAoyMDE5LTA1LTAxIDA1OjA0OjE3CS9wc2lob2xvZzExLnBocAoyMDE5LTA1LTAxIDA1OjA0OjQxCS9wc2lob2xvZzEwLnBocAoyMDE5LTA1LTAxIDA1OjA0OjU1CS92bGlqYW5pamU4LnBocAoyMDE5LTA1LTAxIDA1OjA1OjA4CS92bGlqYW5pamU1LnBocAoyMDE5LTA1LTAxIDA1OjA1OjIyCS92bGlqYW5pamU5LnBocAoyMDE5LTA1LTAxIDA1OjA1OjM2CS9tb2dpbG5pay5waHAKMjAxOS0wNS0wMSAwNTowNTo1MAkvcHNpaG9sb2c4LnBocAoyMDE5LTA1LTAxIDA1OjA2OjAzCS92bGlqYW5pamUyMi5waHAKMjAxOS0wNS0wMSAwNTowNjoxNwkvb2JzZXJ2YXRvcnkucGhwCjIwMTktMDUtMDEgMDU6MDY6MzEJL25ldG9jaG5vc3RpLnBocAoyMDE5LTA1LTAxIDA1OjA2OjQ1CS9za2xvbmVuaWUucGhwCjIwMTktMDUtMDEgMDU6MDY6NTgJL3BzaWhvbG9nNy5waHAKMjAxOS0wNS0wMSAwNTowNzoxMgkvcHNpaG9sb2cxNC5waHAKMjAxOS0wNS0wMSAwNTowNzoyNgkvdmxpamFuaWplMTgucGhwCjIwMTktMDUtMDEgMDU6MDc6NDEJL3ZsaWphbmlqZTMzLnBocAoyMDE5LTA1LTAxIDA1OjE0OjIxCS9ub3Y0LnBocAoyMDE5LTA1LTAxIDA1OjQ5OjEyCS9wc2lob2xvZzIucGhwCjIwMTktMDUtMDEgMDY6MDA6NDkJL25vdjMucGhwCjIwMTktMDUtMDEgMDY6MjQ6MDIJL3BvbG4ucGhwCjIwMTktMDUtMDEgMDY6NTg6NTIJL3ZsaWphbmlqZTMzLnBocAoyMDE5LTA1LTAxIDA3OjQ1OjE5CS9wb2xuLnBocAoyMDE5LTA1LTAxIDA3OjU2OjU3CS9wc2lob2xvZzIucGhwCjIwMTktMDUtMDEgMDg6MzE6NDgJL3BzaWhvbG9nMi5waHAKMjAxOS0wNS0wMSAwOTowNjozNwkvdmxpamFuaWplMzMucGhwCjIwMTktMDUtMDEgMDk6MTg6MTQJL3BzaWhvbG9nMTQucGhwCjIwMTktMDUtMDEgMDk6NDE6MjgJL3BzaWhvbG9nMi5waHAKMjAxOS0wNS0wMSAwOTo1NjozOQkvZmFjdG9yLnBocAoyMDE5LTA1LTAxIDEwOjI3OjU3CS92bGlqYW5pamUzMy5waHAKMjAxOS0wNS0wMSAxMDo0MzozOQkvbm92MTEucGhwCjIwMTktMDUtMDEgMjI6NTA6MzIJL3BzaWhvbG9nNi5waHAKMjAxOS0wNS0wMSAyMjo1MDo1MAkvdmxpamFuaWplMzQucGhwCjIwMTktMDUtMDEgMjI6NTE6MTEJL3ZsaWphbmlqZTI1LnBocAoyMDE5LTA1LTAxIDIyOjUzOjM3CS9ub3YxMC5waHAKMjAxOS0wNS0wMSAyMjo1MzozOAkvZGV0aTIucGhwCjIwMTktMDUtMDEgMjM6MTk6MTAJL3Zvem11c2hlbmllLnBocAoyMDE5LTA1LTAxIDIzOjM4OjUwCS92bGlqYW5pamU4LnBocAoyMDE5LTA1LTAyIDAyOjE4OjQ4CS8zMGRuZXk0LnBocAoyMDE5LTA1LTAyIDA1OjA4OjQ4CS8xZGVuLnBocAoyMDE5LTA1LTAyIDA1OjM5OjEzCS8xZGVuLnBocAoyMDE5LTA1LTAyIDA3OjAxOjExCS8xZGVuLnBocAoyMDE5LTA1LTAyIDA5OjUzOjAzCS9ub3YyMC5waHAKMjAxOS0wNS0wMiAxMDoxMzo1Mwkvbm92MjAucGhwCjIwMTktMDUtMDIgMTE6MTc6MTAJL3Zvem11c2hlbmllLnBocAoyMDE5LTA1LTAyIDExOjQ3OjA0CS9ub3Y1LnBocAoyMDE5LTA1LTAyIDEyOjAzOjQyCS9ub3Y5LnBocAoyMDE5LTA1LTAyIDEyOjIzOjQwCS9tZWhhbml6bS5waHAKMjAxOS0wNS0wMiAxNzozNToxMgkvbm92MTEucGhwCjIwMTktMDUtMDIgMTc6NDU6NTMJL2RldGkyLnBocAoyMDE5LTA1LTAyIDE5OjI1OjMwCS92bGlqYW5pamUxOC5waHAKMjAxOS0wNS0wMiAxOTo0NToyNQkvdmxpamFuaWplMTgucGhwCjIwMTktMDUtMDIgMjE6Mjc6MTUJL25vdjUucGhwCjIwMTktMDUtMDMgMTA6MjI6NTMJL3ZsaWphbmlqZTgucGhwCjIwMTktMDUtMDMgMTI6MjI6NTIJL3BzaWhvbG9nMi5waHAKMjAxOS0wNS0wMyAxODowNDoyMwkvdmxpamFuaWplLnBocAoyMDE5LTA1LTAzIDE4OjEzOjM3CS92bGlqYW5pamUucGhwCjIwMTktMDUtMDMgMjM6MTk6MzkJL25vdjE2LnBocAoyMDE5LTA1LTA0IDA2OjEyOjAxCS9ub3Y0LnBocAoyMDE5LTA1LTA0IDA4OjEyOjUxCS96YXRtZW5pZS5waHAKMjAxOS0wNS0wNCAwODoyMjo1Mwkvbm92MjAucGhwCjIwMTktMDUtMDQgMTM6MDM6NDkJL2ZhemEucGhwCjIwMTktMDUtMDQgMTY6NTU6NDgJL2ZhemEucGhwCjIwMTktMDUtMDQgMjE6Mzc6MTAJL25vdjEwLnBocAoyMDE5LTA1LTA0IDIxOjQ3OjE0CS8zMGRuZXkucGhwCjIwMTktMDUtMDUgMDA6Mzk6MTcJL3BzaWhvbG9nNC5waHAKMjAxOS0wNS0wNSAwMTowNzo1NQkvcHNpaG9sb2c0LnBocAoyMDE5LTA1LTA1IDAzOjU3OjM4CS92bGlqYW5pamUxNS5waHAKMjAxOS0wNS0wNSAxNDo0Mjo1MAkvZGV0aTIucGhwCjIwMTktMDUtMDUgMTg6NTM6NTIJL2RlanN0dmllLnBocAoyMDE5LTA1LTA1IDIyOjU1OjA3CS9yaXRtdTMucGhwCjIwMTktMDUtMDUgMjI6NTU6MDgJL3ZsaWphbmlqZTgucGhwCjIwMTktMDUtMDYgMDE6MDk6MzgJL3ZsaWphbmlqZTcucGhwCjIwMTktMDUtMDYgMDE6NDQ6NTkJL3BzaWhvbG9nOS5waHAKMjAxOS0wNS0wNiAwMTo1NTo0MQkvdmxpamFuaWplNy5waHAKMjAxOS0wNS0wNiAwMjoyNTozOQkva2FtZW4ucGhwCjIwMTktMDUtMDYgMDI6NDU6MTIJL2thbWVuLnBocAoyMDE5LTA1LTA2IDAzOjA1OjE0CS9tZXN0YS5waHAKMjAxOS0wNS0wNiAxNzo0OTozMAkvdmxpamFuaWplMTUucGhwCjIwMTktMDUtMDYgMjA6MDA6NTIJL3BzaWhvbG9nMi5waHAKMjAxOS0wNS0wNiAyMjoyMToyMgkvY29zbW8ucGhwCjIwMTktMDUtMDcgMDc6MDQ6NDMJL25vdjEwLnBocAoyMDE5LTA1LTA3IDE2OjA4OjU0CS92bGlqYW5pamUxMS5waHAKMjAxOS0wNS0wNyAxNjo0NjoxNAkvdmxpamFuaWplMTEucGhwCjIwMTktMDUtMDcgMTc6MTU6MzEJL25vdjUucGhwCjIwMTktMDUtMDcgMTg6MTc6MDUJL25vdjEyLnBocAoyMDE5LTA1LTA3IDE4OjQ3OjAwCS9rYW1lbi5waHAKMjAxOS0wNS0wNyAxOTowNzoxMAkvMzBkbmV5LnBocAoyMDE5LTA1LTA3IDE5OjE3OjI1CS9kdml6aGVuLnBocAoyMDE5LTA1LTA3IDIxOjM3OjU4CS92bGlqYW5pamUucGhwCjIwMTktMDUtMDcgMjE6Mzk6MDcJL2RldGkucGhwCjIwMTktMDUtMDcgMjI6Mzk6MTIJL2ZhemEucGhwCjIwMTktMDUtMDggMTE6MTQ6NDEJL25vdjUucGhwCjIwMTktMDUtMDggMTE6MzQ6MjMJL2Nvc21vMi5waHAKMjAxOS0wNS0wOCAxMjowNDo0NQkvdm96bXVzaGVuaWUucGhwCjIwMTktMDUtMDggMTI6Mjg6MTkJL3ZsaWphbmlqZTEzLnBocAoyMDE5LTA1LTA4IDE1OjA4OjA5CS9wc2lob2xvZzExLnBocAoyMDE5LTA1LTA4IDIyOjM0OjQ0CS9ub3Y1LnBocAoyMDE5LTA1LTA5IDA5OjU5OjM5CS9ub3YxOC5waHAKMjAxOS0wNS0wOSAxMzo0MDo0MQkvdmxpamFuaWplMjYucGhwCjIwMTktMDUtMDkgMTM6NTA6NTkJL3ZsaWphbmlqZTI2XzIucGhwCjIwMTktMDUtMDkgMTU6NDg6MjQJL3BzaWhvbG9nMy5waHAKMjAxOS0wNS0wOSAxODowODo1MwkvdmxpamFuaWplMzIucGhwCjIwMTktMDUtMDkgMTk6Mzk6MzIJL25vdjEyLnBocAoyMDE5LTA1LTA5IDE5OjQ5OjQ1CS92bGlqYW5pamU2LnBocAoyMDE5LTA1LTA5IDIxOjM0OjA1CS92bGlqYW5pamUyMi5waHAKMjAxOS0wNS0wOSAyMTo0Mzo1Mwkvbm92MTIucGhwCjIwMTktMDUtMDkgMjM6MTU6MTUJL25vdjE1LnBocAoyMDE5LTA1LTEwIDAwOjU2OjE5CS9mYXphLnBocAoyMDE5LTA1LTEwIDAxOjA2OjQzCS92bGlqYW5pamUxOC5waHAKMjAxOS0wNS0xMCAwMjozNzozOQkvZ3Jhdml0YWNpamEucGhwCjIwMTktMDUtMTAgMDI6NDc6NDQJL3ZsaWphbmlqZTE0LnBocAoyMDE5LTA1LTEwIDAzOjE3OjIzCS9mYXphLnBocAoyMDE5LTA1LTEwIDAzOjI3OjM0CS92bGlqYW5pamUyNl8xLnBocAoyMDE5LTA1LTEwIDA2OjM3OjE1CS9ub3YyNC5waHAKMjAxOS0wNS0xMCAwNzo0Nzo1MAkvZmF6YS5waHAKMjAxOS0wNS0xMCAxNjo0ODoyMwkvcHNpaG9sb2cxMC5waHAKMjAxOS0wNS0xMCAxOTo0OToyMgkvdm96bXVzaGVuaWUucGhwCjIwMTktMDUtMTEgMDM6NDQ6MTYJL2RldGkucGhwCjIwMTktMDUtMTEgMDM6NTQ6NDYJL21lc3RhLnBocAoyMDE5LTA1LTExIDA0OjUxOjE1CS9wc2lob2xvZzcucGhwCjIwMTktMDUtMTEgMDU6MTE6MzQJL25vdjEucGhwCjIwMTktMDUtMTEgMDU6NTE6NDAJLzMwZG5leTMucGhwCjIwMTktMDUtMTEgMDc6MDU6MjkJLzMwZG5leTQucGhwCjIwMTktMDUtMTEgMDc6MjU6MzgJL3BzaWhvbG9nOC5waHAKMjAxOS0wNS0xMSAwOToxNjowNwkvZGV0aTIucGhwCjIwMTktMDUtMTEgMTA6NDc6MzgJL3ZsaWphbmlqZTI3LnBocAoyMDE5LTA1LTExIDExOjE3OjUzCS92b3ptdXNoZW5pZS5waHAKMjAxOS0wNS0xMSAxMzo1OTozNQkvdmxpamFuaWplMjkucGhwCjIwMTktMDUtMTEgMTQ6Mzk6MTcJL3ZsaWphbmlqZTI0LnBocAoyMDE5LTA1LTExIDE3OjUwOjI2CS9ub3Y1LnBocAoyMDE5LTA1LTEyIDAxOjUwOjAyCS92bGlqYW5pamU4LnBocAoyMDE5LTA1LTEyIDAzOjQwOjE3CS9jb3Ntby5waHAKMjAxOS0wNS0xMiAwNDoyMDoyNQkvcHNpaG9sb2cucGhwCjIwMTktMDUtMTIgMTA6MDE6MjkJL3ZsaWphbmlqZTgucGhwCjIwMTktMDUtMTIgMTM6MzI6NDYJL3Zvem11c2hlbmllLnBocAoyMDE5LTA1LTEyIDEzOjM0OjMzCS9jcmltaW5hbC5waHAKMjAxOS0wNS0xMiAxMzo1Mjo1Nwkvbm92MTQucGhwCjIwMTktMDUtMTIgMTY6MjM6MTEJL3ZsaWphbmlqZTgucGhwCjIwMTktMDUtMTIgMTc6MTc6NDIJL3RyYXZtYS5waHAKMjAxOS0wNS0xMyAwNjowMjo0MgkvemF0bWVuaWUucGhwCjIwMTktMDUtMTMgMDc6MzU6NTkJL25vdjIwLnBocAoyMDE5LTA1LTEzIDA4OjU3OjAwCS92bGlqYW5pamUzMS5waHAKMjAxOS0wNS0xMyAxNzozNzoxOAkvYm9tYmFyZGlyb3ZrYS5waHAKMjAxOS0wNS0xMyAxOToyNzoyMQkvYm9tYmFyZGlyb3ZrYS5waHAKMjAxOS0wNS0xMyAyMzoxOTowNwkvbm92Mi5waHAKMjAxOS0wNS0xNCAwMTowOToyNQkvbm92MS5waHAKMjAxOS0wNS0xNCAxNjo1OTowMAkva3Vyc3VzLnBocAoyMDE5LTA1LTE0IDIwOjU3OjQzCS9ub3YyMC5waHAKMjAxOS0wNS0xNSAwNDoyNDoyOQkvZHZpemhlbi5waHAKMjAxOS0wNS0xNSAyMDowMzo0MgkvdmxpamFuaWplMzMucGhwCjIwMTktMDUtMTUgMjA6MjM6MTkJL2JvbWJhcmRpcm92a2EucGhwCjIwMTktMDUtMTYgMDA6MDQ6NTAJL2ZhemEucGhwCjIwMTktMDUtMTYgMDA6NTU6MTEJL2ZhemEucGhwCjIwMTktMDUtMTYgMDE6MzU6MzcJL2R2aXpoZW4ucGhwCjIwMTktMDUtMTYgMDI6MzU6NDUJL29ic2VydmF0b3J5LnBocAoyMDE5LTA1LTE2IDA3OjI2OjI0CS9kdml6aGVuLnBocAoyMDE5LTA1LTE2IDA4OjEzOjQ4CS8xZGVuLnBocAoyMDE5LTA1LTE2IDE0OjI1OjUyCS9wc2lob2xvZzUucGhwCjIwMTktMDUtMTYgMTc6NDY6MzkJL3BzaWhvbG9nNS5waHAKMjAxOS0wNS0xNyAwMzo1MDozMgkvdmxpamFuaWplMjMucGhwCjIwMTktMDUtMTcgMDQ6MTM6NDUJL2NyaW1pbmFsLnBocAoyMDE5LTA1LTE3IDA1OjExOjQ5CS9jcmltaW5hbC5waHAKMjAxOS0wNS0xNyAwNzoyMzoyNgkvZGVqc3R2aWUyLnBocAoyMDE5LTA1LTE3IDExOjIzOjI3CS92b3ptdXNoZW5pZS5waHAKMjAxOS0wNS0xNyAyMzowMTozMAkvcHNpaG9sb2c1LnBocAoyMDE5LTA1LTE4IDA1OjUyOjA1CS9yaXRtdTMucGhwCjIwMTktMDUtMTggMDY6MTI6MDAJL3BzaWhvbG9nMi5waHAKMjAxOS0wNS0xOCAwNzoyMjo1NQkvY3JpbWluYWwucGhwCjIwMTktMDUtMTggMDc6NTM6MjQJL3BzaWhvbG9nNS5waHAKMjAxOS0wNS0xOCAwODoyNjozOQkvcHNpaG9sb2c5LnBocAoyMDE5LTA1LTE4IDEwOjQzOjM2CS92bGlqYW5pamUzMy5waHAKMjAxOS0wNS0xOCAxNToxNjowNAkvdm96bXVzaGVuaWUucGhwCjIwMTktMDUtMTggMTY6MjY6MDMJL25vdjMucGhwCjIwMTktMDUtMTggMTY6NDY6MTQJLzMwZG5leS5waHAKMjAxOS0wNS0xOCAxOToyNjo0MgkvY3JpbWluYWwucGhwCjIwMTktMDUtMTggMjI6MjI6MDIJL25vdjMucGhwCjIwMTktMDUtMTggMjI6MzI6MTUJL25vdjMucGhwCjIwMTktMDUtMTkgMDY6MDA6MjYJL2Nvc21vNi5waHAKMjAxOS0wNS0xOSAwODowMDoyNQkvY29zbW82LnBocAoyMDE5LTA1LTE5IDA4OjEzOjQ1CS9jb3NtbzYucGhwCjIwMTktMDUtMjAgMDQ6MjI6MjQJL25vdjEucGhwCjIwMTktMDUtMjAgMDQ6MzI6MTIJL25vdjI0LnBocAoyMDE5LTA1LTIwIDA0OjUyOjI0CS9ub3YxLnBocAoyMDE5LTA1LTIwIDA1OjEyOjEyCS92bGlqYW5pamUyNi5waHAKMjAxOS0wNS0yMCAwODoyMzoyNQkvY29zbW80LnBocAoyMDE5LTA1LTIwIDA5OjI0OjAzCS92bGlqYW5pamUyMy5waHAKMjAxOS0wNS0yMCAxMToyNToxNgkvdmxpamFuaWplMjMucGhwCjIwMTktMDUtMjAgMTc6NDg6MTgJL3BzaWhvbG9nNi5waHAKMjAxOS0wNS0yMSAxMTozMjoyOQkvb2JzZXJ2YXRvcnkucGhwCjIwMTktMDUtMjEgMTE6NDY6MTIJL25vdjIucGhwCjIwMTktMDUtMjEgMTM6MDI6NTgJL25vdjMucGhwCjIwMTktMDUtMjEgMTM6NTI6NTIJL25vdjEucGhwCjIwMTktMDUtMjEgMTU6MzY6NTEJL2ZhemEucGhwCjIwMTktMDUtMjEgMTY6MDQ6MDYJL2ZhemEucGhwCjIwMTktMDUtMjEgMjM6MTQ6MzYJL3ZsaWphbmlqZTI2LnBocAoyMDE5LTA1LTIzIDA2OjM0OjAwCS9jcmltaW5hbC5waHAKMjAxOS0wNS0yMyAxOTowNDoxNQkvbm92MS5waHAKMjAxOS0wNS0yMyAyMTozNToyNwkvbm92Mi5waHAKMjAxOS0wNS0yMyAyMTo1NjowMAkvbm92My5waHAKMjAxOS0wNS0yMyAyMjoyNjoyMgkvbm92MTEucGhwCjIwMTktMDUtMjQgMDA6NDc6MTgJL3ZsaWphbmlqZTMzLnBocAoyMDE5LTA1LTI0IDAxOjM3OjMzCS9ib21iYXJkaXJvdmthLnBocAoyMDE5LTA1LTI0IDAzOjA4OjQ5CS9jb3NtbzQucGhwCjIwMTktMDUtMjQgMDM6NTg6MjkJL2RlanN0dmllMy5waHAKMjAxOS0wNS0yNCAxMTo0ODo1OQkvbm92NS5waHAKMjAxOS0wNS0yNCAxNjoxMDozNAkvY29zbW81LnBocAoyMDE5LTA1LTI1IDAzOjA2OjI4CS9tZXN0YS5waHAKMjAxOS0wNS0yNSAwMzo1Mzo0NwkvcHNpaG9sb2cxMC5waHAKMjAxOS0wNS0yNSAwNDo0MTo0OQkvZGV0aTIucGhwCjIwMTktMDUtMjUgMDU6MDU6NDcJL2RlanN0dmllLnBocAoyMDE5LTA1LTI1IDA2OjIzOjQxCS92bGlqYW5pamUzNC5waHAKMjAxOS0wNS0yNSAxNjo0Njo1MgkvdmxpamFuaWplMTYucGhwCjIwMTktMDUtMjUgMTc6MTY6NDcJL3ZsaWphbmlqZTE2LnBocAoyMDE5LTA1LTI1IDIyOjE2OjM3CS9tZWhhbml6bS5waHAKMjAxOS0wNS0yNiAwMzo0MjoxNQkvdmxpamFuaWplMzQucGhwCjIwMTktMDUtMjYgMTE6MDc6MTcJL3J6Z24vcmF6Z29uMjAwNnZudXRyaS5waHAKMjAxOS0wNS0yNiAxMTowNzozMAkvcnpnbi9yYXpnb24yMDA2cmV0dXJuLnBocAoyMDE5LTA1LTI2IDE0OjMyOjQ1CS92bGlqYW5pamUyNi5waHAKMjAxOS0wNS0yNiAxODozMTo1MAkvcHJpbGl2LnBocAoyMDE5LTA1LTI3IDAxOjE1OjM5CS9wc2lob2xvZzE0LnBocAoyMDE5LTA1LTI3IDAyOjE2OjEwCS92bGlqYW5pamUyMC5waHAKMjAxOS0wNS0yNyAwMjoyNjoyMwkvdmxpamFuaWplMjAucGhwCjIwMTktMDUtMjcgMDQ6Mzc6MDUJL3BzaWhvbG9nNi5waHAKMjAxOS0wNS0yNyAwNToyNjoyMwkvcHNpaG9sb2c2LnBocAoyMDE5LTA1LTI3IDA3OjA3OjI2CS92bGlqYW5pamUxNi5waHAKMjAxOS0wNS0yNyAwODoxMToyMgkvZmF6YS5waHAKMjAxOS0wNS0yNyAwODo1ODoxMgkvZmF6YS5waHAKMjAxOS0wNS0yNyAxMToyOToxOQkvY29zbW82LnBocAoyMDE5LTA1LTI3IDE3OjIwOjMwCS9ub3YxNC5waHAKMjAxOS0wNS0yNyAxNzo0MzowOQkvcHNpaG9sb2c1LnBocAoyMDE5LTA1LTI3IDE3OjQ0OjAxCS9wc2lob2xvZzUucGhwCjIwMTktMDUtMjcgMjE6MDQ6MDUJL25vdjExLnBocAoyMDE5LTA1LTI3IDIxOjE5OjQ2CS92bGlqYW5pamUxMS5waHAKMjAxOS0wNS0yNyAyMjozOTo1NAkvbm92NS5waHAKMjAxOS0wNS0yNyAyMzo1MDoyNwkvYWt1c2hlci5waHAKMjAxOS0wNS0yOCAwNToxMjoxOQkvbm92MS5waHAKMjAxOS0wNS0yOCAwOTowOTo0Nwkvbm92MTQucGhwCjIwMTktMDUtMjkgMTA6MTk6NTUJL2RlanN0dmllMi5waHAKMjAxOS0wNS0yOSAxMjozMDoyNwkvZGVqc3R2aWUyLnBocAoyMDE5LTA1LTI5IDE2OjAxOjQ4CS9ub3Y1LnBocAoyMDE5LTA1LTI5IDIwOjIzOjQ5CS9jb3NtbzQucGhwCjIwMTktMDUtMzAgMTM6MTA6MjUJL2Nvc21vNC5waHAKMjAxOS0wNS0zMCAyMDoxMzo0MwkvdmxpamFuaWplMjYucGhwCjIwMTktMDUtMzEgMDk6NDE6MzQJL25vdjExLnBocAoyMDE5LTA1LTMxIDEyOjMxOjQ2CS92bGlqYW5pamUxNi5waHAKMjAxOS0wNS0zMSAxMzo0NToyNQkvdmxpamFuaWplMjYucGhwCjIwMTktMDUtMzEgMTQ6Mzk6MzcJL2NyaW1pbmFsLnBocAoyMDE5LTA2LTAxIDA3OjQyOjM3CS9kZWpzdHZpZTIucGhwCjIwMTktMDYtMDEgMTI6MzQ6NDMJL25vdjMucGhwCjIwMTktMDYtMDEgMjM6MDk6MTQJL2ZhemEucGhwCjIwMTktMDYtMDEgMjM6MTk6MDEJL2ZhemEucGhwCjIwMTktMDYtMDIgMDM6NTk6MzcJL3BzaWhvbG9nNS5waHAKMjAxOS0wNi0wMiAxMDo1MToxOAkvbm92MjUucGhwCjIwMTktMDYtMDIgMTE6MDU6MDAJL25vdjExLnBocAoyMDE5LTA2LTAyIDExOjIxOjQ0CS9ub3YxMS5waHAKMjAxOS0wNi0wMiAxMzowNToxMwkvcHNpaG9sb2c1LnBocAoyMDE5LTA2LTAzIDAyOjE4OjI1CS92bGlqYW5pamUzNC5waHAKMjAxOS0wNi0wMyAwMzo0ODowNQkvbm92MjQucGhwCjIwMTktMDYtMDQgMTc6MDM6MTkJL3ZsaWphbmlqZTI2LnBocAoyMDE5LTA2LTA1IDExOjU3OjU2CS9ub3YxNS5waHAKMjAxOS0wNi0wNSAxNTo1NTo0MwkvMzBkbmV5Mi5waHAKMjAxOS0wNi0wNiAwMjoxMTo1OQkvbm92My5waHAKMjAxOS0wNi0wNiAxMjo1NTozMQkvdmxpamFuaWplMjYucGhwCjIwMTktMDYtMDYgMTM6MjY6MjgJL25vdjEucGhwCjIwMTktMDYtMDYgMTk6MzI6MTAJL25vdjExLnBocAoyMDE5LTA2LTA3IDAwOjM4OjA2CS8zMGRuZXkyLnBocAoyMDE5LTA2LTA3IDAyOjU4OjIyCS92bGlqYW5pamUxNi5waHAKMjAxOS0wNi0wNyAwNToyNjowNQkvbm92MTUucGhwCjIwMTktMDYtMDcgMTc6NTk6MjkJL25vdjUucGhwCjIwMTktMDYtMDggMTE6MDY6NDgJL2ZhemEucGhwCjIwMTktMDYtMDggMTE6NDA6NDQJL2ZhemEucGhwCjIwMTktMDYtMDggMTY6NDk6NDQJL3plbnNoaW5hLnBocAoyMDE5LTA2LTA4IDE2OjU5OjUwCS9wc2lob2xvZzEyLnBocAoyMDE5LTA2LTA4IDE3OjUwOjQzCS92bGlqYW5pamU2LnBocAoyMDE5LTA2LTA4IDE4OjI5OjQ4CS9jb3NtbzIucGhwCjIwMTktMDYtMDggMjA6MDA6MTUJL3ZsaWphbmlqZTE1LnBocAoyMDE5LTA2LTA4IDIyOjQxOjA0CS8xZGVuLnBocAoyMDE5LTA2LTA5IDAwOjUxOjU1CS92bGlqYW5pamUzMi5waHAKMjAxOS0wNi0wOSAwMzowMjo0NgkvemVuc2hpbmEucGhwCjIwMTktMDYtMDkgMDQ6NTM6NDYJL3ZsaWphbmlqZTYucGhwCjIwMTktMDYtMDkgMTg6NTQ6NTgJL2dyYXZpdGFjaWphLnBocAoyMDE5LTA2LTA5IDE5OjI1OjE0CS9ncmF2aXRhY2lqYS5waHAKMjAxOS0wNi0wOSAyMzo1NjozMQkvdmxpamFuaWplMzIucGhwCjIwMTktMDYtMTAgMDA6Mjc6MDAJL3ZsaWphbmlqZTMyLnBocAoyMDE5LTA2LTEwIDAxOjI2OjQ4CS92bGlqYW5pamU3LnBocAoyMDE5LTA2LTEwIDAyOjI3OjAzCS9ub3YxOS5waHAKMjAxOS0wNi0xMCAwMzoxNjo0MAkvemVuc2hpbmEucGhwCjIwMTktMDYtMTAgMTA6MDg6MzkJL21laGFuaXptLnBocAoyMDE5LTA2LTEwIDEzOjE3OjIwCS9tdXpzaGluYS5waHAKMjAxOS0wNi0xMCAxNzowMjoyMAkvemVuc2hpbmEucGhwCjIwMTktMDYtMTEgMDE6NDc6MTgJL3ZsaWphbmlqZTIzLnBocAoyMDE5LTA2LTExIDAyOjAzOjE5CS92bGlqYW5pamUucGhwCjIwMTktMDYtMTEgMTI6MDI6MTkJL3plbnNoaW5hLnBocAoyMDE5LTA2LTExIDEzOjQ4OjEzCS8zMGRuZXkyLnBocAoyMDE5LTA2LTExIDE1OjE0OjU1CS9yaXRtdTQucGhwCjIwMTktMDYtMTEgMTY6MTk6NDAJL25vdjkucGhwCjIwMTktMDYtMTEgMTc6MTk6NTcJL2RlanN0dmllMi5waHAKMjAxOS0wNi0xMSAyMjoxMjo1Nwkvbm92MTkucGhwCjIwMTktMDYtMTEgMjM6NTg6NTAJL25vdjE1LnBocAoyMDE5LTA2LTEyIDAxOjAyOjIyCS9jb3NtbzIucGhwCjIwMTktMDYtMTIgMDI6Mjc6MDQJL25vdjMucGhwCjIwMTktMDYtMTIgMDI6NDg6MTUJL2dyYXZpdGFjaWphLnBocAoyMDE5LTA2LTEyIDEyOjQxOjExCS9tdXpzaGluYS5waHAKMjAxOS0wNi0xMiAyMTozMDozNQkvcHNpaG9sb2c1LnBocAoyMDE5LTA2LTEzIDAxOjM3OjEyCS9tdXpzaGluYS5waHAKMjAxOS0wNi0xMyAwNzowOTo1Nwkva2FtZW4ucGhwCjIwMTktMDYtMTMgMTc6NTE6MTkJL25vdjExLnBocAoyMDE5LTA2LTEzIDIwOjIxOjEzCS92bGlqYW5pamUxMi5waHAKMjAxOS0wNi0xMyAyMDo0MToxOAkvdmxpamFuaWplMTIucGhwCjIwMTktMDYtMTMgMjI6NTA6NTUJL3ZsaWphbmlqZTEyLnBocAoyMDE5LTA2LTEzIDIzOjAwOjQxCS92b3ptdXNoZW5pZS5waHAKMjAxOS0wNi0xNCAwMjoyODoxMwkvZmF6YS5waHAKMjAxOS0wNi0xNCAwMjo0MzoxMgkvMzBkbmV5Mi5waHAKMjAxOS0wNi0xNCAwMzo0MjozNAkvZmF6YS5waHAKMjAxOS0wNi0xNCAwODoyNjoyOAkvemVuc2hpbmEucGhwCjIwMTktMDYtMTQgMTU6MDU6NDIJL3plbnNoaW5hLnBocAoyMDE5LTA2LTE0IDE1OjE1OjM1CS92bGlqYW5pamU5LnBocAoyMDE5LTA2LTE0IDE2OjE1OjUzCS92bGlqYW5pamU5LnBocAoyMDE5LTA2LTE0IDE2OjM1OjUzCS92bGlqYW5pamU5LnBocAoyMDE5LTA2LTE0IDIzOjE0OjUyCS8zMGRuZXkucGhwCjIwMTktMDYtMTUgMDI6MzU6NDgJL3ZsaWphbmlqZTEwLnBocAoyMDE5LTA2LTE1IDA1OjU2OjM2CS92bGlqYW5pamUyMS5waHAKMjAxOS0wNi0xNSAwNjowNzoyNAkvdmxpamFuaWplMjEucGhwCjIwMTktMDYtMTUgMDc6MDY6MzkJL3JpdG11My5waHAKMjAxOS0wNi0xNSAwODoxNzozMwkvcml0bXUzLnBocAoyMDE5LTA2LTE1IDEwOjI3OjMzCS92bGlqYW5pamU5LnBocAoyMDE5LTA2LTE1IDEwOjI3OjUzCS9vYnNlcnZhdG9yaWphLnBocAoyMDE5LTA2LTE1IDE1OjQ5OjE0CS9ub3YxOS5waHAKMjAxOS0wNi0xNSAxNjowOTowMAkvemVuc2hpbmEucGhwCjIwMTktMDYtMTUgMTY6NDk6MTUJL3ZsaWphbmlqZTEyLnBocAoyMDE5LTA2LTE1IDE5OjIxOjI2CS92bGlqYW5pamU5LnBocAoyMDE5LTA2LTE2IDAwOjI1OjI0CS9sdW5raS5waHAKMjAxOS0wNi0xNiAwMjowOToxMwkvcml0bXUyLnBocAoyMDE5LTA2LTE2IDAyOjI0OjQzCS92bGlqYW5pamUxOS5waHAKMjAxOS0wNi0xNiAwMzoxNDo1OQkvcml0bXUyLnBocAoyMDE5LTA2LTE2IDAzOjI4OjQ0CS92bGlqYW5pamUxOS5waHAKMjAxOS0wNi0xNiAwMzozNTo0NAkvdmxpamFuaWplMTkucGhwCjIwMTktMDYtMTYgMDM6NTU6MTIJL3JpdG11NC5waHAKMjAxOS0wNi0xNiAwNTowNTozNQkvdmxpamFuaWplMjZfMS5waHAKMjAxOS0wNi0xNiAwOTowNzoxMgkvMzBkbmV5LnBocAoyMDE5LTA2LTE2IDA5OjE3OjA3CS9ncmF2aXRhY2lqYS5waHAKMjAxOS0wNi0xNiAxMzowMTo1MgkvY29zbW8yLnBocAoyMDE5LTA2LTE2IDEzOjA4OjE1CS92bGlqYW5pamUxMC5waHAKMjAxOS0wNi0xNiAxOTozOToyMAkvbm92MTMucGhwCjIwMTktMDYtMTYgMjA6MzU6NDIJL25vdjEzLnBocAoyMDE5LTA2LTE3IDAzOjM0OjQxCS9ub3Y2LnBocAoyMDE5LTA2LTE3IDA3OjQ4OjQ5CS92bGlqYW5pamUyOC5waHAKMjAxOS0wNi0xNyAwODoxMzoxMAkvcml0bXUyLnBocAoyMDE5LTA2LTE3IDA5OjU1OjU0CS9yaXRtdTIucGhwCjIwMTktMDYtMTcgMTM6Mjc6MzkJL3ZsaWphbmlqZTkucGhwCjIwMTktMDYtMTcgMTQ6MTM6MjQJL3ZsaWphbmlqZTE5LnBocAoyMDE5LTA2LTE3IDE0OjUyOjI0CS92bGlqYW5pamUyNl8xLnBocAoyMDE5LTA2LTE3IDE3OjQzOjUxCS9ub3YxNS5waHAKMjAxOS0wNi0xOCAwNDoxODoyMgkvMzBkbmV5NC5waHAKMjAxOS0wNi0xOCAxMjo0NjozNgkvdmxpamFuaWplMjYucGhwCjIwMTktMDYtMTggMTQ6NTM6MzkJL3ZsaWphbmlqZTEyLnBocAoyMDE5LTA2LTE4IDE4OjAyOjU2CS92bGlqYW5pamUyMS5waHAKMjAxOS0wNi0xOCAyMzo1MzoxNgkvdmxpamFuaWplMjEucGhwCjIwMTktMDYtMTkgMDU6MTI6NTIJL3ZsaWphbmlqZTE3LnBocAoyMDE5LTA2LTE5IDA1OjE0OjI2CS9wYW1qYXRuaWtpLnBocAoyMDE5LTA2LTE5IDA5OjMyOjA2CS9ub3YyMS5waHAKMjAxOS0wNi0xOSAwOTozMjoyNwkvbm92MTcucGhwCjIwMTktMDYtMTkgMDk6MzI6NTMJL21lbmdpci5waHAKMjAxOS0wNi0xOSAwOTozMzoxNwkvbm92Ni5waHAKMjAxOS0wNi0xOSAxMTozNTo0MgkvdmxpamFuaWplMjEucGhwCjIwMTktMDYtMTkgMTE6Mzk6MDAJL3ZsaWphbmlqZTIxLnBocAoyMDE5LTA2LTE5IDIwOjQ5OjU4CS9mYXphLnBocAoyMDE5LTA2LTE5IDIyOjE0OjA0CS9mYXphLnBocAoyMDE5LTA2LTE5IDIyOjE0OjM3CS92bGlqYW5pamUyMS5waHAKMjAxOS0wNi0xOSAyMzo0MDo1NAkvcGFtamF0bmlraS5waHAKMjAxOS0wNi0yMCAxODozNDozMgkvcHNpaG9sb2cxMS5waHAK ====== r4_download_links.php ====== PD9waHAKLyoqCiAqIENyZWF0ZWQgYnkgSmV0QnJhaW5zIFBocFN0b3JtLgogKiBVc2VyOiBydXppbgogKiBEYXRlOiAxNy4wNS4xMgogKiBUaW1lOiAxMzoyMgogKiDQodC60LDRh9C40LLQsNC10YIg0YTQsNC50LvRiyDRgdGB0YvQu9C+0LogLnJ6ZwogKgogKiDQn9Cw0YDQsNC80LXRgtGA0Ys6ICRfR0VUWydzdGFydCddICjQvtC/0YbQuNC+0L3QsNC70YzQvdGL0LkpIC0g0YHQutCw0YfQuNCy0LDQtdGCINGC0L7Qu9GM0LrQviDRhNCw0LnQu9GLLCDQuNC30LzQtdC90LXQvdC90YvQtSDQv9C+0YHQu9C1INGN0YLQvtC5INC00LDRgtGLCiAqLwoKZXJyb3JfcmVwb3J0aW5nKDApOwoKaWYgKCFpc3NldCgkcjRfY2ZnX3Jvb3QpKSB7CiAgICAkcjRfY2ZnX3Jvb3QgPSBkaXJuYW1lKF9fRklMRV9fKTsKfQoKaWYgKCFlbXB0eSgkcjRfY2ZnX3Jvb3QpICYmICRyNF9jZmdfcm9vdCAhPSAnLycpIHsKICAgICRyNF9jZmdfcm9vdCAuPSAnLyc7Cn0KCmluY2x1ZGVfb25jZSgieyRyNF9jZmdfcm9vdH1yNF92YXJzLnBocCIpOwppbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cjRfbGlicy5waHAiKTsKCmlmIChpc3NldCgkX0dFVFsnc3RhcnQnXSkpIHsKICAgICRzdGFydCA9IHN0cnRvdGltZSgkX0dFVFsnc3RhcnQnXSk7Cn0KZWxzZSB7CiAgICAkc3RhcnQgPSAwOwp9CgokbGVuID0gc3RybGVuKCRyNF9jZmdfcm9vdCk7CiRmaWxlbmFtZXMgPSBnZXRfZmlsZW5hbWVzKCRyNF9jZmdfcm9vdCwgJyoucnpnJyk7CmZvcmVhY2ggKCRmaWxlbmFtZXMgYXMgJGZpbGVuYW1lKSB7CiAgICAkcmVsYXRpdmVfZmlsZW5hbWUgPSBzdWJzdHIoJGZpbGVuYW1lLCAkbGVuKTsKICAgICRjb250ZW50cyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlbmFtZSk7CiAgICAkcmVncyA9IGFycmF5KCk7CiAgICBpZiAocHJlZ19tYXRjaCgiLyMhcjRccysoXGR7NH0tXGR7Mn0tXGR7Mn1ccytcZHsyfTpcZHsyfTpcZHsyfSkvIiwgJGNvbnRlbnRzLCAkcmVncykpIHsKICAgICAgICAkdGltZSA9IHN0cnRvdGltZSgkcmVnc1sxXSk7CiAgICAgICAgaWYgKCR0aW1lID4gJHN0YXJ0KSB7CiAgICAgICAgICAgIHByaW50ZiAoIj09PT09PSAlcyA9PT09PT1cbiVzXG4iLCAkcmVsYXRpdmVfZmlsZW5hbWUsICRjb250ZW50cyk7CiAgICAgICAgfQogICAgfQp9Cj8+ ====== r4_libs.php ====== PD9waHAKCmlmICghZGVmaW5lZCgiU1RBVFVTX09LIikpIHsKICAgIGRlZmluZSgiU1RBVFVTX09LIiwgIk9LIik7Cn0KCmlmICghZGVmaW5lZCgiU1RBVFVTX0ZBSUwiKSkgewogICAgZGVmaW5lKCJTVEFUVVNfRkFJTCIsICJGQUlMIik7Cn0KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdyNF9zdWNjZXNzJykpIHsKICAgIGZ1bmN0aW9uIHI0X3N1Y2Nlc3MoJHJlc3VsdCkgewogICAgICAgICRyZXN1bHRbJ3N0YXR1cyddID0gJ3N1Y2Nlc3MnOwoKICAgICAgICBlY2hvIGpzb25fZW5jb2RlKCRyZXN1bHQpOwoKICAgICAgICBleGl0KDApOwogICAgfQp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygncjRfZmFpbCcpKSB7CiAgICBmdW5jdGlvbiByNF9mYWlsKCRyZXN1bHQsICRlcnJtc2cpIHsKICAgICAgICAkcmVzdWx0WydlcnJvciddID0gJGVycm1zZzsKICAgICAgICAkcmVzdWx0WydzdGF0dXMnXSA9ICdmYWlsJzsKCiAgICAgICAgZWNobyBqc29uX2VuY29kZSgkcmVzdWx0KTsKCiAgICAgICAgZXhpdCgxKTsKICAgIH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2ljb252X2xpbmsnKSkgewogICAgLyoqCiAgICAgKiDQmtC+0L3QstC10YDRgtC40YDRg9C10YIg0YHRgdGL0LvQutGDINC40Lcg0L7QtNC90L7QuSDQutC+0LTQuNGA0L7QstC60Lgg0LIg0LTRgNGD0LPRg9GOLgogICAgICoKICAgICAqIEBwYXJhbSB0eXBlICRsaW5rINCh0YHRi9C70LrQsCDQtNC70Y8g0LrQvtC90LLQtdGA0YLQsNGG0LjQuC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHI0X2NmZ19kZWZhdWx0X2VuY29kaW5nINCa0L7QtNC40YDQvtCy0LrQsCwg0LjQtyDQutC+0YLQvtGA0L7QuSDRgdC70LXQtNGD0LXRgiDQutC+0L3QstC10YDRgtC40YDQvtCy0LDRgtGMLgogICAgICogQHBhcmFtIHR5cGUgJHI0X2NmZ19saW5rX2VuY29kaW5nINCa0L7QtNC40YDQvtCy0LrQsCwg0LIg0LrQvtGC0L7RgNGD0Y4g0YHQu9C10LTRg9C10YIg0LrQvtC90LLQtdGA0YLQuNGA0L7QstCw0YLRjC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyDQktC+0LfQstGA0LDRidCw0LXRgiDRgdGB0YvQu9C60YMg0L/QvtGB0LvQtSDQutC+0L3QstC10YDRgtCw0YbQuNC4INC40LvQuCDQuNGB0YXQvtC00L3QvtC1INC30L3QsNGH0LXQvdC40LUuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGljb252X2xpbmsoJGxpbmssICRyNF9jZmdfZGVmYXVsdF9lbmNvZGluZywgJHI0X2NmZ19saW5rX2VuY29kaW5nKSB7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnaWNvbnYnKSkgewogICAgICAgICAgICBpZiAoIWlzc2V0KCRyNF9jZmdfZGVmYXVsdF9lbmNvZGluZykpIHsKICAgICAgICAgICAgICAgICRyNF9jZmdfZGVmYXVsdF9lbmNvZGluZyA9ICdVVEYtOCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkcjRfY2ZnX2xpbmtfZW5jb2RpbmcgIT09ICRyNF9jZmdfZGVmYXVsdF9lbmNvZGluZykgewogICAgICAgICAgICAgICAgJGljb252X2xpbmsgPSBpY29udigkcjRfY2ZnX2RlZmF1bHRfZW5jb2RpbmcsICRyNF9jZmdfbGlua19lbmNvZGluZywgJGxpbmspOwogICAgICAgICAgICAgICAgJGVycm9yID0gZXJyb3JfZ2V0X2xhc3QoKTsKICAgICAgICAgICAgICAgICRlcnJvcl9tZXNzYWdlID0gaXNzZXQoJGVycm9yWydtZXNzYWdlJ10pID8gJGVycm9yWydtZXNzYWdlJ10gOiAnJzsKCiAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRlcnJvcl9tZXNzYWdlLCAnaWNvbnYnKSA9PT0gRkFMU0UpIHsKICAgICAgICAgICAgICAgICAgICAkbGluayA9ICRpY29udl9saW5rOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGxpbms7CiAgICB9Cn0KCmlmICghZnVuY3Rpb25fZXhpc3RzKCd3cml0ZV9sb2dmaWxlJykpIHsKICAgIC8qKgogICAgICog0JfQsNC/0LjRgdGL0LLQsNC10YIg0L/QvtGB0LXRidC10L3QuNC1INGA0L7QsdC+0YLQsCDQsiBsb2ct0YTQsNC50LsuCiAgICAgKgogICAgICogQHBhcmFtIHR5cGUgJGxvZ2ZpbGUg0JjQvNGPIGxvZy3RhNCw0LnQu9CwLgogICAgICogQHBhcmFtIHR5cGUgJGxvZ3BhdGgg0J/Rg9GC0Ywg0LTQviBsb2ct0YTQsNC50LvQsC4KICAgICAqIEBwYXJhbSB0eXBlICR1cmkg0JfQvdCw0YfQtdC90LjQtSDQt9Cw0L/RgNC+0YjQtdC90L3QvtCz0L4g0YDQvtCx0L7RgtC+0Lwg0L/Rg9GC0Lgg0YHQsNC50YLQsC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4g0JLQvtC30LLRgNCw0YnQsNC10YIgVFJVRSDQtdGB0LvQuCDRg9C00LDQu9C+0YHRjCDQt9Cw0L/QuNGB0LDRgtGMINC/0L7RgdC10YnQtdC90LjQtSDRgNC+0LHQvtGC0LAsIEZBTFNFINCyINC/0YDQvtGC0LjQstC90L7QvCDRgdC70YPRh9Cw0LUuCiAgICAgKi8KICAgIGZ1bmN0aW9uIHdyaXRlX2xvZ2ZpbGUoJGxvZ2ZpbGUsICRsb2dwYXRoLCAkdXJpKSB7CiAgICAgICAgaWYgKGlzX3dyaXRhYmxlKCRsb2dmaWxlKSkgewogICAgICAgICAgICAkcjRfZnAgPSBmb3BlbigkbG9nZmlsZSwgJ2EnKTsKCiAgICAgICAgICAgIGlmICgkcjRfZnApIHsKICAgICAgICAgICAgICAgIGlmICghZndyaXRlKCRyNF9mcCwgZGF0ZSgnWS1tLWQgSDppOnMnKS4iXHR7JHVyaX1cbiIpKSB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3JfbG9nKGRhdGUoIkYgaiwgWSwgZzppIGEiKS4iIFI0OiBGaWxlIHdyaXRlIGZhaWxlZCFcbiIsIDMsICJ7JGxvZ3BhdGh9ZXJyb3IubG9nIik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZmNsb3NlKCRyNF9mcCk7CgogICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBGQUxTRTsKICAgIH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2NoZWNrX2xvZ2ZpbGUnKSkgewogICAgLyoqCiAgICAgKiDQn9GA0L7QstC10YDQutCwINC70L7Qsy3RhNCw0LnQu9CwOgogICAgICogICDQtdGB0LvQuCDRhNCw0LnQu9CwINC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIsINGC0L4g0YHQvtC30LTQsNGR0YIg0L/Rg9GB0YLQvtC5OwogICAgICogICDQtdGB0LvQuCDRgdGD0YnQtdGB0YLQstGD0LXRgiDQuCDRgNCw0LfQvNC10YAg0L/RgNC10LLRi9GI0LDQtdGCINC80LDQutGB0LjQvNCw0LvRjNC90L4g0LTQvtC/0YPRgdGC0LjQvNGL0LksINGC0L4g0YPRgdC10LrQsNC10YIg0LTQviDQv9C+0LvQvtCy0LjQvdGLINGA0LDQt9GA0LXRiNGR0L3QvdC+0LPQvi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsb2dmaWxlINCY0LzRjyDRhNCw0LnQu9CwLgogICAgICogQHBhcmFtIHN0cmluZyAkbG9ncGF0aCDQn9GD0YLRjCDQtNC+INGE0LDQudC70LAuCiAgICAgKiBAcGFyYW0gaW50ICRtYXhzaXplINCc0LDQutGB0LjQvNCw0LvRjNC90L4g0LTQvtC/0YPRgdGC0LjQvNGL0Lkg0YDQsNC30LzQtdGAINGE0LDQudC70LAg0LIg0LzQtdCz0LDQsdCw0LnRgtCw0YUuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGNoZWNrX2xvZ2ZpbGUoJGxvZ2ZpbGUsICRsb2dwYXRoLCAkbWF4c2l6ZSkgewogICAgICAgIGlmICghZmlsZV9leGlzdHMoJGxvZ2ZpbGUpKSB7CiAgICAgICAgICAgIHRvdWNoKCRsb2dmaWxlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmIChmaWxlc2l6ZSgkbG9nZmlsZSkgPiAkbWF4c2l6ZSAqIDEwMjQgKiAxMDI0KSB7CiAgICAgICAgICAgICAgICAkdG1wX2ZpbGVuYW1lID0gJGxvZ3BhdGgubWQ1KHRpbWUoKSkuJ3I0LnRtcCc7CiAgICAgICAgICAgICAgICAkdG1wX2YgPSBmb3BlbigkdG1wX2ZpbGVuYW1lLCAndycpOwoKICAgICAgICAgICAgICAgICRmID0gZm9wZW4oJGxvZ2ZpbGUsICdyJyk7CiAgICAgICAgICAgICAgICAkY3Vyc29yID0gJG1heHNpemUgLyAyICogMTAyNCAqIDEwMjQ7CiAgICAgICAgICAgICAgICBmc2VlaygkZiwgLSRjdXJzb3IsIFNFRUtfRU5EKTsKCiAgICAgICAgICAgICAgICB3aGlsZSAoKCRidWZmZXIgPSBmZ2V0cygkZiwgNDA5NikpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlxkezR9LVxkezJ9LVxkezJ9LycsICRidWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZwdXRzKCR0bXBfZiwgJGJ1ZmZlciwgNDA5Nik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZjbG9zZSgkZik7CiAgICAgICAgICAgICAgICBmY2xvc2UoJHRtcF9mKTsKCiAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHRtcF9maWxlbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICByZW5hbWUoJHRtcF9maWxlbmFtZSwgJGxvZ2ZpbGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygncm1kaXJfcmVjdXJzaXZlJykpIHsKICAgIC8qKgogICAgICog0KDQtdC60YPRgNGB0LjQstC90L7QtSDRg9C00LDQu9C10L3QuNC1INC60LDRgtCw0LvQvtCz0L7QsiDQuCDRhNCw0LnQu9C+0LIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcGF0aCDQn9GD0YLRjCDQtNC+INGD0LTQsNC70Y/QtdC80L7Qs9C+INC60LDRgtCw0LvQvtCz0LAuCiAgICAgKiBAcGFyYW0gYXJyYXkgJGV4Y2x1ZGUg0JzQsNGB0YHQuNCyINC60LDRgtCw0LvQvtCz0L7QsiDQuCDRhNCw0LnQu9C+0LIsINC60L7RgtC+0YDRi9C1INC90LUg0YHQu9C10LTRg9C10YIg0YPQtNCw0LvRj9GC0YwuCiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIGZ1bmN0aW9uIHJtZGlyX3JlY3Vyc2l2ZSgkcGF0aCwgJGV4Y2x1ZGU9YXJyYXkoKSwgJHBhdHRlcm49JycpIHsKICAgICAgICAkcGF0aCA9IHJ0cmltKCRwYXRoLCAnLycpOwogICAgICAgICR1bmRlbGV0ZWRfZmlsZXMgPSBhcnJheSgpOwogICAgICAgIGlmIChpc19kaXIoJHBhdGgpKSB7CiAgICAgICAgICAgIGlmICgoJGRpciA9IG9wZW5kaXIoJHBhdGgpKSAhPT0gRkFMU0UpIHsKICAgICAgICAgICAgICAgIHdoaWxlICgoJGZpbGUgPSByZWFkZGlyKCRkaXIpKSAhPT0gRkFMU0UpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIgJiYgIWluX2FycmF5KCJ7JHBhdGh9L3skZmlsZX0iLCAkZXhjbHVkZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2RpcigieyRwYXRofS97JGZpbGV9IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1bmRlbGV0ZWRfZmlsZXMgPSBhcnJheV9tZXJnZSgkdW5kZWxldGVkX2ZpbGVzLCBybWRpcl9yZWN1cnNpdmUoInskcGF0aH0veyRmaWxlfSIsICRleGNsdWRlLCAkcGF0dGVybikpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRwYXR0ZXJuKSB8fCBwcmVnX21hdGNoKCIveyRwYXR0ZXJufS8iLCAieyRmaWxlfSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1bmxpbmsoInskcGF0aH0veyRmaWxlfSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1bmRlbGV0ZWRfZmlsZXNbXSA9ICJ7JHBhdGh9L3skZmlsZX0iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBjbG9zZWRpcigkZGlyKTsKCi8vICAgICAgICAgICAgICAgIGlmICghaW5fYXJyYXkoInskcGF0aH0iLCAkZXhjbHVkZSkpIHsKLy8gICAgICAgICAgICAgICAgICAgIGlmICghcm1kaXIoJHBhdGgpKSB7Ci8vICAgICAgICAgICAgICAgICAgICAgICAgICR1bmRlbGV0ZWRfZmlsZXNbXSA9ICRwYXRoOwovLyAgICAgICAgICAgICAgICAgICAgfQovLyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZWlmIChpc19maWxlKCRwYXRoKSkgewogICAgICAgICAgICBpZiAoIWluX2FycmF5KCJ7JHBhdGh9IiwgJGV4Y2x1ZGUpKSB7CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHBhdHRlcm4pIHx8IHByZWdfbWF0Y2goIi97JHBhdHRlcm59LyIsICJ7JGZpbGV9IikpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXVubGluaygkcGF0aCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHVuZGVsZXRlZF9maWxlc1tdID0gJHBhdGg7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHVuZGVsZXRlZF9maWxlczsKICAgIH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2dldF9maWxlbmFtZXMnKSkgewogICAgLyoqCiAgICAgKiDQn9C+0LvRg9GH0LDQtdGCINGB0L/QuNGB0L7QuiDQvdCw0LfQstCw0L3QuNC5INCy0YHQtdGFINGE0LDQudC70L7QsiDQsiDQtNC40YDQtdC60YLQvtGA0LjQuCDQuCDQv9C+0LTQtNC40YDQtdC60YLQvtGA0LjRj9GFCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZGlyINCa0LDRgtCw0LvQvtCzLCDQsiDQutC+0YLQvtGA0L7QvCDRgNC10LrRg9GA0YHQuNCy0L3QviDQv9GA0L7QuNC30LLQvtC00LjRgtGB0Y8g0L/QvtC40YHQuiDRhNCw0LnQu9C+0LIuCiAgICAgKiBAcGFyYW0gYXJyeWEgJGV4Y2x1ZGUg0JzQsNGB0YHQuNCyINC60LDRgtCw0LvQvtCz0L7QsiDQuCDRhNCw0LnQu9C+0LIsINC60L7RgtC+0YDRi9C1INC90LUg0YHQu9C10LTRg9C10YIg0LLRi9Cy0L7QtNC40YLRjC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHBhdHRlcm4g0JzQsNGB0LrQsCAo0YDQtdCz0YPQu9GP0YDQvdC+0LUg0LLRi9GA0LDQttC10L3QuNC1KSDRhNCw0LnQu9C+0LIuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSDQnNCw0YHRgdC40LIg0YHRgtGA0L7Quiwg0YHQvtC00LXRgNC20LDRidC40Lkg0YHQv9C40YHQvtC6INGE0LDQudC70L7QsiDQv9C+INC80LDRgdC60LUuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGdldF9maWxlbmFtZXMoJGRpciwgJGV4Y2x1ZGU9YXJyYXkoKSwgJHBhdHRlcm49JycpIHsKICAgICAgICAkZmlsZW5hbWVzID0gYXJyYXkoKTsKICAgICAgICAkZGlyID0gcnRyaW0oJGRpciwgJy8nKTsKICAgICAgICBpZiAoaXNfZGlyKCRkaXIpKSB7CiAgICAgICAgICAgIGlmICgoJGRoID0gb3BlbmRpcigkZGlyKSkgIT09IEZBTFNFKSB7CiAgICAgICAgICAgICAgICB3aGlsZSAoKCRmaWxlbmFtZSA9IHJlYWRkaXIoJGRoKSkgIT09IEZBTFNFKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRmaWxlbmFtZSA9PSAnLicgfHwgJGZpbGVuYW1lID09ICcuLicgfHwgaW5fYXJyYXkoInskZGlyfS97JGZpbGVuYW1lfSIsICRleGNsdWRlKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2RpcigieyRkaXJ9L3skZmlsZW5hbWV9IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVuYW1lcyA9IGFycmF5X21lcmdlKCRmaWxlbmFtZXMsIGdldF9maWxlbmFtZXMoInskZGlyfS97JGZpbGVuYW1lfSIsICRleGNsdWRlLCAkcGF0dGVybikpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2ZpbGUoInskZGlyfS97JGZpbGVuYW1lfSIpICYmIHByZWdfbWF0Y2goIi97JHBhdHRlcm59LyIsICJ7JGZpbGVuYW1lfSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZW5hbWVzW10gPSAieyRkaXJ9L3skZmlsZW5hbWV9IjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNsb3NlZGlyKCRkaCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZWlmIChpc19kaXIoJGRpcikpIHsKICAgICAgICAgICAgJGZpbGVuYW1lc1tdID0gJGRpcjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZmlsZW5hbWVzOwogICAgfQp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnanNvbl9lbmNvZGUnKSkgewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIHJlc291cmNlICR2YWx1ZSBUaGUgdmFsdWUgYmVpbmcgZW5jb2RlZC4gQ2FuIGJlIGFueSB0eXBlIGV4Y2VwdCBhIHJlc291cmNlLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFJldHVybnMgYSBKU09OIGVuY29kZWQgc3RyaW5nIG9uIHN1Y2Nlc3Mgb3IgRkFMU0Ugb24gZmFpbHVyZS4KICAgICAqLwogICAgZnVuY3Rpb24ganNvbl9lbmNvZGUoJHZhbHVlPWZhbHNlKSB7CiAgICAgICAgaWYgKGlzX251bGwoJHZhbHVlKSkgewogICAgICAgICAgICByZXR1cm4gJ251bGwnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR2YWx1ZSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuICdmYWxzZSc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHZhbHVlID09PSB0cnVlKSB7CiAgICAgICAgICAgIHJldHVybiAndHJ1ZSc7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfc2NhbGFyKCR2YWx1ZSkpIHsKICAgICAgICAgICAgaWYgKGlzX2Zsb2F0KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdHZhbChzdHJfcmVwbGFjZSgiLCIsICIuIiwgc3RydmFsKCR2YWx1ZSkpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICBzdGF0aWMgJGpzb25fcmVwbGFjZXMgPSBhcnJheShhcnJheSgiXFwiLCAiLyIsICJcbiIsICJcdCIsICJcciIsICJcYiIsICJcZiIsICciJyksIGFycmF5KCdcXFxcJywgJ1xcLycsICdcXG4nLCAnXFx0JywgJ1xccicsICdcXGInLCAnXFxmJywgJ1wiJykpOwogICAgICAgICAgICAgICAgcmV0dXJuICciJyAuIHN0cl9yZXBsYWNlKCRqc29uX3JlcGxhY2VzWzBdLCAkanNvbl9yZXBsYWNlc1sxXSwgJHZhbHVlKSAuICciJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRpc19saXN0ID0gdHJ1ZTsKCiAgICAgICAgZm9yICgkaSA9IDAsIHJlc2V0KCR2YWx1ZSk7ICRpIDwgY291bnQoJHZhbHVlKTsgJGkrKywgbmV4dCgkdmFsdWUpKSB7CiAgICAgICAgICAgIGlmIChrZXkoJHZhbHVlKSAhPT0gJGkpIHsKICAgICAgICAgICAgICAgICRpc19saXN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9IGFycmF5KCk7CgogICAgICAgIGlmICgkaXNfbGlzdCkgewogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWUgYXMgJHYpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9IGpzb25fZW5jb2RlKCR2KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICdbJyAuIGpvaW4oJywnLCAkcmVzdWx0KSAuICddJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZSBhcyAkayA9PiAkdikgewogICAgICAgICAgICAgICAgJHJlc3VsdFtdID0ganNvbl9lbmNvZGUoJGspLic6Jy5qc29uX2VuY29kZSgkdik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAneycgLiBqb2luKCcsJywgJHJlc3VsdCkgLiAnfSc7CiAgICAgICAgfQogICAgfQp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnZXJyb3JfZ2V0X2xhc3QnKSkgewogICAgc2V0X2Vycm9yX2hhbmRsZXIoCiAgICAgICAgY3JlYXRlX2Z1bmN0aW9uKAogICAgICAgICAgICAnJGVycm5vLCRlcnJzdHIsJGVycmZpbGUsJGVycmxpbmUsJGVycmNvbnRleHQnLAogICAgICAgICAgICAnCiAgICAgICAgICAgICAgICBnbG9iYWwgJF9fZXJyb3JfZ2V0X2xhc3RfcmV0dmFsX187CgogICAgICAgICAgICAgICAgJF9fZXJyb3JfZ2V0X2xhc3RfcmV0dmFsX18gPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICBcJ3R5cGVcJyA9PiAkZXJybm8sCiAgICAgICAgICAgICAgICAgICAgXCdtZXNzYWdlXCcgPT4gJGVycnN0ciwKICAgICAgICAgICAgICAgICAgICBcJ2ZpbGVcJyA9PiAkZXJyZmlsZSwKICAgICAgICAgICAgICAgICAgICBcJ2xpbmVcJyA9PiAkZXJybGluZQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICcKICAgICAgICApLAogICAgICAgIEVfQUxMICYgfkVfTk9USUNFICYgfkVfVVNFUl9OT1RJQ0UKICAgICk7CgogICAgLyoqCiAgICAgKiBUbyBzaW11bGF0ZSBlcnJvcl9nZXRfbGFzdCBmdW5jdGlvbiBpbiBhIGhvcnJpZCB3YXkgZm9yIFBIUCA1IDwgNS4yLjAKICAgICAqCiAgICAgKiBAZ2xvYmFsIHR5cGUgJF9fZXJyb3JfZ2V0X2xhc3RfcmV0dmFsX18KICAgICAqIEByZXR1cm4gbnVsbAogICAgICovCiAgICBmdW5jdGlvbiBlcnJvcl9nZXRfbGFzdCgpIHsKICAgICAgICBnbG9iYWwgJF9fZXJyb3JfZ2V0X2xhc3RfcmV0dmFsX187CgogICAgICAgIGlmICghaXNzZXQoJF9fZXJyb3JfZ2V0X2xhc3RfcmV0dmFsX18pKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRfX2Vycm9yX2dldF9sYXN0X3JldHZhbF9fOwogICAgfQp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnc3RyX3NwbGl0JykpIHsKICAgIC8qKgogICAgICog0JLQtdGA0YHQuNGPIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uc3RyLXNwbGl0LnBocCDQtNC70Y8gUEhQIDQuCiAgICAgKgogICAgICogQ29udmVydHMgYSBzdHJpbmcgdG8gYW4gYXJyYXkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nIFRoZSBpbnB1dCBzdHJpbmcuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBUaGUgcmV0dXJuZWQgYXJyYXkgd2lsbCBiZSBvbmUgY2hhcmFjdGVyIGluIGxlbmd0aC4KICAgICAqLwogICAgZnVuY3Rpb24gc3RyX3NwbGl0KCRzdHJpbmcpewogICAgICAgIHJldHVybiBwcmVnX3NwbGl0KCcvLycsICRzdHJpbmcsIC0xLCBQUkVHX1NQTElUX05PX0VNUFRZKTsKICAgIH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2NoZWNrX3NhZmVfbW9kZScpKSB7CiAgICAvKioKICAgICAqINCe0L/RgNC10LTQtdC70Y/QtdGCLCDQstC60LvRjtGH0ZHQvSDQu9C4INC90LAg0YHQsNC50YLQtSBTQUZFIE1PREUuCiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuIFRydWUsINC10YHQu9C4IFNBRkUgTU9ERSDQstC60LvRjtGH0ZHQvSwg0LjQvdCw0YfQtSAtIGZhbHNlLgogICAgICovCiAgICBmdW5jdGlvbiBjaGVja19zYWZlX21vZGUoJHI0X2NmZ19yb290PScnKSB7CiAgICAgICAgJHRtcGRpciA9IHVuaXFpZCgnJyk7CgogICAgICAgIG1rZGlyKCJ7JHI0X2NmZ19yb290fXskdG1wZGlyfSIsIDA3NzcpOwoKICAgICAgICAkZXJyb3IgPSBlcnJvcl9nZXRfbGFzdCgpOwogICAgICAgICRlcnJvcl9tZXNzYWdlID0gaXNzZXQoJGVycm9yWydtZXNzYWdlJ10pID8gJGVycm9yWydtZXNzYWdlJ10gOiAnJzsKCiAgICAgICAgaWYgKHN0cnBvcygkZXJyb3JfbWVzc2FnZSwgJ1NBRkUgTU9ERScpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcm1kaXIoInskcjRfY2ZnX3Jvb3R9eyR0bXBkaXJ9Iik7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQo= ====== r4_knownparams.list ====== ====== r4_getHash.php ====== PD9waHAKICAgIGlmICghZGVmaW5lZCgiRU5UX05PUVVPVEVTIikpIHsKICAgICAgICBkZWZpbmUoIkVOVF9OT1FVT1RFUyIsIDApOwogICAgfQoKICAgIGlmICghZGVmaW5lZCgiRU5UX0NPTVBBVCIpKSB7CiAgICAgICAgZGVmaW5lKCJFTlRfQ09NUEFUIiwgMik7CiAgICB9CgogICAgaWYgKCFkZWZpbmVkKCJFTlRfUVVPVEVTIikpIHsKICAgICAgICBkZWZpbmUoIkVOVF9RVU9URVMiLCAzKTsKICAgIH0KCiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygnaHRtbF9lbnRpdHlfZGVjb2RlJykpIHsKICAgICAgICAvKioKICAgICAgICAgKiDQktC10YDRgdC40Y8gaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5odG1sLWVudGl0eS1kZWNvZGUucGhwINC00LvRjyBQSFAgNAogICAgICAgICAqCiAgICAgICAgICogQHJldHVybiBzdHJpbmcgUmV0dXJucyB0aGUgZGVjb2RlZCBzdHJpbmcKICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiBodG1sX2VudGl0eV9kZWNvZGUoJHN0cmluZywgJG9wdD1FTlRfQ09NUEFUKSB7CiAgICAgICAgICAgICR0cmFuc190YmwgPSBnZXRfaHRtbF90cmFuc2xhdGlvbl90YWJsZShIVE1MX0VOVElUSUVTKTsKICAgICAgICAgICAgJHRyYW5zX3RibCA9IGFycmF5X2ZsaXAoJHRyYW5zX3RibCk7CgogICAgICAgICAgICBpZiAoJG9wdCAmIDEpIHsgLy8gVHJhbnNsYXRpbmcgc2luZ2xlIHF1b3RlcwogICAgICAgICAgICAgICAgLy8gQWRkIHNpbmdsZSBxdW90ZSB0byB0cmFuc2xhdGlvbiB0YWJsZTsgZG9lc24ndCBhcHBlYXIgdG8gYmUgdGhlcmUgYnkgZGVmYXVsdAogICAgICAgICAgICAgICAgJHRyYW5zX3RibFsiJmFwb3M7Il0gPSAiJyI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghKCRvcHQgJiAyKSkgeyAvLyBOb3QgdHJhbnNsYXRpbmcgZG91YmxlIHF1b3RlcwogICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGRvdWJsZSBxdW90ZSBmcm9tIHRyYW5zbGF0aW9uIHRhYmxlCiAgICAgICAgICAgICAgICB1bnNldCgkdHJhbnNfdGJsWyImcXVvdDsiXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBzdHJ0cigkc3RyaW5nLCAkdHJhbnNfdGJsKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINCy0YHQtSBIVE1MLdGB0YPRidC90L7RgdGC0Lgg0LIg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQuNC1INGB0LjQvNCy0L7Qu9GLLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFJldHVybnMgdGhlIGRlY29kZWQgc3RyaW5nCiAgICAgKi8KICAgIGZ1bmN0aW9uIF91bmVzY2FwZSgkZGF0YSkgewogICAgICAgIHJldHVybiBodG1sX2VudGl0eV9kZWNvZGUoJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICog0KDQsNC30LHQuNGA0LDQtdGCIFVSTCDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDQtdCz0L4g0LrQvtC80L/QvtC90LXQvdGC0YsgKNCyINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQuCDRgSBSRkMgMTgwOCk6CiAgICAgKiA8c2NoZW1lPjovLzxuZXRsb2M+LzxwYXRoPjs8cGFyYW1zPj88cXVlcnk+IzxmcmFnbWVudD4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5INCc0LDRgdGB0LjQsiDQutC+0LzQv9C+0L3QtdC90YLQvtCyINGA0LDQt9C+0LHRgNCw0L3QvdC+0LPQviBVUkwKICAgICAqLwogICAgZnVuY3Rpb24gX3BhcnNlX3VybCgkdXJsKSB7CiAgICAgICAgJHBhcnNlZF91cmwgPSBwYXJzZV91cmwoJHVybCk7CiAgICAgICAgJHBhcnNlZF91cmxbJ3BhdGgnXSA9IGlzc2V0KCRwYXJzZWRfdXJsWydwYXRoJ10pID8gJHBhcnNlZF91cmxbJ3BhdGgnXSA6ICcnOwogICAgICAgICRwYXJzZWRfdXJsWydzY2hlbWUnXSA9IGlzc2V0KCRwYXJzZWRfdXJsWydzY2hlbWUnXSkgPyAkcGFyc2VkX3VybFsnc2NoZW1lJ10gOiAnJzsKICAgICAgICAkcGFyc2VkX3VybFsnbmV0bG9jJ10gPSBpc3NldCgkcGFyc2VkX3VybFsnaG9zdCddKSA/ICRwYXJzZWRfdXJsWydob3N0J10gOiAnJzsKICAgICAgICAkcGFyc2VkX3VybFsncGFyYW1zJ10gPSBpc3NldCgkcGFyc2VkX3VybFsncGFyYW1zJ10pID8gJHBhcnNlZF91cmxbJ3BhcmFtcyddIDogJyc7CiAgICAgICAgJHBhcnNlZF91cmxbJ3F1ZXJ5J10gPSBpc3NldCgkcGFyc2VkX3VybFsncXVlcnknXSkgPyAkcGFyc2VkX3VybFsncXVlcnknXSA6ICcnOwogICAgICAgICRwYXJzZWRfdXJsWydmcmFnbWVudCddID0gaXNzZXQoJHBhcnNlZF91cmxbJ2ZyYWdtZW50J10pID8gJHBhcnNlZF91cmxbJ2ZyYWdtZW50J10gOiAnJzsKCiAgICAgICAgbGlzdCgkcGFyc2VkX3VybFsncGF0aCddLCAkcGFyc2VkX3VybFsncGFyYW1zJ10pID0gYXJyYXlfcGFkKGV4cGxvZGUoJzsnLCAkcGFyc2VkX3VybFsncGF0aCddLCAyKSwgMiwgJycpOwoKICAgICAgICByZXR1cm4gYXJyYXkoJHBhcnNlZF91cmxbJ3NjaGVtZSddLCAkcGFyc2VkX3VybFsnbmV0bG9jJ10sICRwYXJzZWRfdXJsWydwYXRoJ10sCiAgICAgICAgICAgICRwYXJzZWRfdXJsWydwYXJhbXMnXSwgJHBhcnNlZF91cmxbJ3F1ZXJ5J10sICRwYXJzZWRfdXJsWydmcmFnbWVudCddKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgY2FuIGJlIGNvbmZ1c2luZyBmb3IgYW55b25lIHdobydzIHVzZWQgdG8gdGhlIENHSSBzdGFuZGFyZCwgc28ga2VlcCBpdCBpbiBtaW5kLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkg0JzQsNGB0YHQuNCyINGA0LDQt9C+0LHRgNCw0L3QvdC+0LPQviDQvdCwINGE0YDQsNCz0LzQtdC90YLRiyDQv9C+ICcmJyDQuCAnPScgVVJMCiAgICAgKi8KICAgIGZ1bmN0aW9uIHByb3Blcl9wYXJzZV9zdHIoJHN0cikgewogICAgICAgICRhcnIgPSBhcnJheSgpOwoKICAgICAgICAkcGFpcnMgPSBleHBsb2RlKCcmJywgJHN0cik7CgogICAgICAgIGZvcmVhY2ggKCRwYWlycyBhcyAkcGFpcikgewogICAgICAgICAgICBsaXN0KCRuYW1lLCAkdmFsdWUpID0gYXJyYXlfcGFkKGV4cGxvZGUoJz0nLCAkcGFpciwgMiksIDIsIE5VTEwpOwoKICAgICAgICAgICAgaWYgKGlzc2V0KCRhcnJbJG5hbWVdKSkgewogICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRhcnJbJG5hbWVdKSkgewogICAgICAgICAgICAgICAgICAgICRhcnJbJG5hbWVdW10gPSAkdmFsdWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRhcnJbJG5hbWVdID0gYXJyYXkoJGFyclskbmFtZV0sICR2YWx1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkYXJyWyRuYW1lXSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRhcnI7CiAgICB9CgogICAgLyoqCiAgICAgKiDQoNCw0LfQsdC40YDQsNC10YIg0YHRgtGA0L7QutGDLCDQutC+0YLQvtGA0LDRjyDQtNC+0LvQttC90LAg0LjQvNC10YLRjCDRhNC+0YDQvNCw0YIg0LfQsNC/0YDQvtGB0LAgVVJMLCDQsiDQv9C10YDQtdC80LXQvdC90YvQtS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5INCc0LDRgdGB0LjQsiDRgNCw0LfQvtCx0YDQsNC90L3QvtC5INGB0YLRgNC+0LrQuCDQsiDQv9C10YDQtdC80LXQvdC90YvQtQogICAgICovCiAgICBmdW5jdGlvbiBfcGFyc2VfcXNsKCRxdWVyeSwgJGtlZXBfYmxhbmtfdmFsdWVzPWZhbHNlKSB7CiAgICAgICAgJHF1ZXJ5ID0gcmF3dXJsZGVjb2RlKCRxdWVyeSk7CgogICAgICAgICRhcnIgPSBhcnJheSgpOwogICAgICAgICRhcnIgPSBwcm9wZXJfcGFyc2Vfc3RyKCRxdWVyeSk7CgogICAgICAgIGZvcmVhY2ggKCRhcnIgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKCR2YWx1ZSA9PSAnJykgewogICAgICAgICAgICAgICAgaWYgKCEka2VlcF9ibGFua192YWx1ZXMpIHsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkYXJyWyRrZXldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdiA9PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEka2VlcF9ibGFua192YWx1ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkdmFsdWVbJGtdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGFyclska2V5XSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGFycjsKICAgIH0KCiAgICAvKioKICAgICAqINCe0YHRgtCw0LLQu9GP0LXRgiDRgtC+0LvRjNC60L4g0L/QsNGA0LDQvNC10YLRgNGLLCDRg9C60LDQt9Cw0L3QvdGL0LUg0LIgJGF0dHJpYnV0ZXMgKHI0X2tub3ducGFyYW1zLmxpc3QpLgogICAgICog0KPQtNCw0LvRj9C10YIg0L/QsNGA0LDQvNC10YLRgNGLINC40Lcg0LfQsNC00LDQvdC90L7Qs9C+INGB0L/QuNGB0LrQsCDQuCAkZXhjbHVkZV9hdHRyaWJ1dGVzICjQv9C+INGC0L7Rh9C90L7QvNGDINGB0L7QstC/0LDQtNC10L3QuNGOKS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIGZ1bmN0aW9uIF9kZWxldGVfdHJhc2hfa2V5dmFscygka2V5dmFscywgJGF0dHJpYnV0ZXM9YXJyYXkoKSwgJGV4Y2x1ZGVfYXR0cmlidXRlcz1hcnJheSgpLCAkYWxsb3dfdmFsdWVfbGlzdD10cnVlKSB7CiAgICAgICAgJHI0X2V4Y2x1ZGVfYXR0cmlidXRlcyA9IGFycmF5KCdyNXNob3doYXNoJywgJ3I1dGVjaGluZm8nKTsKICAgICAgICAkZXhjbHVkZV9hdHRyaWJ1dGVzID0gYXJyYXlfbWVyZ2UoJHI0X2V4Y2x1ZGVfYXR0cmlidXRlcywgJGV4Y2x1ZGVfYXR0cmlidXRlcyk7CgogICAgICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJGtleXZhbHMpIGFzICRrZXkpIHsKICAgICAgICAgICAgaWYgKCFlbXB0eSgkYXR0cmlidXRlcykgJiYgIWluX2FycmF5KCRrZXksICRhdHRyaWJ1dGVzKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJGtleXZhbHNbJGtleV0pOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKCRleGNsdWRlX2F0dHJpYnV0ZXMgYXMgJGV4Y2x1ZGVfYXR0cmlidXRlKSB7CiAgICAgICAgICAgICAgICAkbWF0Y2hlcyA9IGFycmF5KCk7CgogICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy97eyguKil9fS8nLCAkZXhjbHVkZV9hdHRyaWJ1dGUsICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCIveyRtYXRjaGVzWzFdfS8iLCAka2V5KSkgewogICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgka2V5dmFsc1ska2V5XSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgka2V5ID09PSAkZXhjbHVkZV9hdHRyaWJ1dGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGtleXZhbHNbJGtleV0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghJGFsbG93X3ZhbHVlX2xpc3QgJiYgaXNfYXJyYXkoJGtleXZhbHNbJGtleV0pKSB7CiAgICAgICAgICAgICAgICAka2V5dmFsc1ska2V5XSA9IGVuZCgka2V5dmFsc1ska2V5XSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAka2V5dmFsczsKICAgIH0KCiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygnaHR0cF9idWlsZF9xdWVyeScpKSB7CiAgICAgICAgLyoqCiAgICAgICAgICog0JLQtdGA0YHQuNGPIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvcnUvZnVuY3Rpb24uaHR0cC1idWlsZC1xdWVyeS5waHAg0LTQu9GPIFBIUCA0CiAgICAgICAgICoKICAgICAgICAgKiBAcmV0dXJuIHN0cmluZyDQktC+0LfQstGA0LDRidCw0LXRgiBVUkwt0LrQvtC00LjRgNC+0LLQsNC90L3Rg9GOINGB0YLRgNC+0LrRgwogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIGh0dHBfYnVpbGRfcXVlcnkoJHBhcmFtcywgJHByZWZpeD0nJywgJHJlbW92ZV9maW5hbF9hbXA9VFJVRSwgJHJlbW92ZV9udWxsX3ZhbHVlPVRSVUUpIHsKICAgICAgICAgICAgJHF1ZXJ5X3N0cmluZyA9ICcnOwoKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRwYXJhbXMpKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvcnJlY3Rfa2V5ID0gJHByZWZpeDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRwcmVmaXggPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb3JyZWN0X2tleSAuPSAka2V5OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvcnJlY3Rfa2V5IC49ICJbIiAuICRrZXkgLiAiXSI7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoISRyZW1vdmVfbnVsbF92YWx1ZSB8fCBpc3NldCgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5X3N0cmluZyAuPSB1cmxlbmNvZGUoJGNvcnJlY3Rfa2V5KSAuICI9IiAuIHVybGVuY29kZSgkdmFsdWUpIC4gIiYiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5X3N0cmluZyAuPSBodHRwX2J1aWxkX3F1ZXJ5KCR2YWx1ZSwgJGNvcnJlY3Rfa2V5LCBGQUxTRSwgJHJlbW92ZV9udWxsX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRyZW1vdmVfZmluYWxfYW1wID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RyKCRxdWVyeV9zdHJpbmcsIDAsIHN0cmxlbigkcXVlcnlfc3RyaW5nKSAtIDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICRxdWVyeV9zdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiDQk9C10L3QtdGA0LjRgNGD0LXRgiBVUkwt0LrQvtC00LjRgNC+0LLQsNC90L3Rg9GOINGB0YLRgNC+0LrRgyDQt9Cw0L/RgNC+0YHQsC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyDQktC+0LfQstGA0LDRidCw0LXRgiBVUkwt0LrQvtC00LjRgNC+0LLQsNC90L3Rg9GOINGB0YLRgNC+0LrRgwogICAgICovCiAgICBmdW5jdGlvbiBfdXJsZW5jb2RlKCRxdWVyeSkgewogICAgICAgIGZvcmVhY2ggKCRxdWVyeSBhcyAkayA9PiAkdil7CiAgICAgICAgICAgIGlmICghaXNzZXQoJHYpICYmICRrICE9ICcnKSB7CiAgICAgICAgICAgICAgICAkcXVlcnlbJGtdID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRxdWVyeSA9IHByZWdfcmVwbGFjZSgnIyU1QlxkKyU1RCNpJywgJycsIGh0dHBfYnVpbGRfcXVlcnkoJHF1ZXJ5KSk7CiAgICAgICAgJHF1ZXJ5ID0gc3RyX3JlcGxhY2UoJysnLCAnJTIwJywgJHF1ZXJ5KTsKCiAgICAgICAgcmV0dXJuICRxdWVyeTsKICAgIH0KCiAgICAvKioKICAgICAqINCg0LXQt9C10YDQstC40YDRg9C10YIg0LfQsNC00LDQvdC90YvQuSDQvdCw0LHQvtGAIGVuY29kZS3Qv9C+0YHQu9C10LTQvtCy0LDRgtC10LvRjNC90L7RgdGC0LXQuS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyDQktC+0LfQstGA0LDRidCw0LXRgiDQtNC10LrQvtC00LjRgNC+0LLQsNC90L3Ri9C5IFVSTCDQsiDQstC40LTQtSDRgdGC0YDQvtC60LgKICAgICAqLwogICAgZnVuY3Rpb24gX3VucXVvdGVwYXRoKCRwYXRoKSB7CiAgICAgICAgZm9yZWFjaCAoYXJyYXkoJzJmJywgJzJGJywgJzNmJywgJzNGJykgYXMgJHJlc2VydmVkKSB7CiAgICAgICAgICAgICRwYXRoID0gc3RyX3JlcGxhY2UoJyUnLiRyZXNlcnZlZCwgJyUyNScuc3RydG91cHBlcigkcmVzZXJ2ZWQpLCAkcGF0aCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByYXd1cmxkZWNvZGUoJHBhdGgpOwogICAgfQoKICAgIC8qKgogICAgICog0J/RgNC10L7QsdGA0LDQt9GD0LXRgiDQsNC00YDQtdGBINCyINC60L7RgNGA0LXQutGC0L3Ri9C5IFVSTC4KICAgICAqIFVuc2FmZS3RgdC40LzQstC+0LvRiyAo0YHQvC4gaHR0cDovL3d3dy5hc2NpaXRhYmxlLmNvbS8pINC/0YDQtdC+0LHRgNCw0LfRg9GO0YLRgdGPINCyINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQuCDRgSBSRkMtMzk4Ni4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyDQmtC+0YDRgNC10LrRgtC90YvQuSBVUkwKICAgICAqLwogICAgZnVuY3Rpb24gX3NhZmVfdXJsX3N0cmluZygkdXJsKSB7CiAgICAgICAgcmV0dXJuIHByZWdfcmVwbGFjZSgnIyhbXHgwMC1ceDIwXHgyMlx4M0NceDNFXHg1Qi1ceDVFXHg2MFx4N0JceDdEXHg3Rlx4ODAtXHhGRl0pI2llJywgJyIlIi5zdHJ0b3VwcGVyKGJpbjJoZXgoIiQxIikpJywgJHVybCk7CiAgICB9CgogICAgLyoqCiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC+0YHRgtCw0LLQu9C10L3QvdGL0LkgVVJMLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nINCh0L7RgdGC0LDQstC70LXQvdC90YvQuSDQuNC3INGE0YDQsNCz0LzQtdC90YLQvtCyIFVSTAogICAgICovCiAgICBmdW5jdGlvbiBfdXJsdW5wYXJzZSgkZGF0YSkgewogICAgICAgICRzY2hlbWUgPSBpc3NldCgkZGF0YVsnc2NoZW1lJ10pICYmICRkYXRhWydzY2hlbWUnXSAhPSAnJyA/ICRkYXRhWydzY2hlbWUnXS4nOi8vJyA6ICcnOwogICAgICAgICRuZXRsb2MgPSBpc3NldCgkZGF0YVsnbmV0bG9jJ10pICYmICRkYXRhWyduZXRsb2MnXSAhPSAnJyA/ICRkYXRhWyduZXRsb2MnXSA6ICcnOwogICAgICAgICRwYXRoID0gaXNzZXQoJGRhdGFbJ3BhdGgnXSkgJiYgJGRhdGFbJ3BhdGgnXSAhPSAnJyA/ICRkYXRhWydwYXRoJ10gOiAnJzsKICAgICAgICAkcGFyYW1zID0gaXNzZXQoJGRhdGFbJ3BhcmFtcyddKSAmJiAkZGF0YVsncGFyYW1zJ10gIT0gJycgPyAnOycuJGRhdGFbJ3BhcmFtcyddIDogJyc7CiAgICAgICAgJHF1ZXJ5ID0gaXNzZXQoJGRhdGFbJ3F1ZXJ5J10pICYmICRkYXRhWydxdWVyeSddICE9ICcnID8gJz8nLiRkYXRhWydxdWVyeSddIDogJyc7CiAgICAgICAgJGZyYWdtZW50ID0gaXNzZXQoJGRhdGFbJ2ZyYWdtZW50J10pICYmICRkYXRhWydmcmFnbWVudCddICE9ICcnID8gJyMnLiRkYXRhWydmcmFnbWVudCddIDogJyc7CgogICAgICAgIHJldHVybiAkc2NoZW1lLiRuZXRsb2MuJHBhdGguJHBhcmFtcy4kcXVlcnkuJGZyYWdtZW50OwogICAgfQoKICAgIC8qKgogICAgICog0J/RgNC40LLQvtC00LjRgiDRg9GA0Lsg0Log0LrQsNC90L7QvdC40YfQtdGB0LrQvtC80YMg0LLQuNC00YMg0L/RgNC40LzQtdC90Y/RjyDRgdC70LXQtNGD0Y7RidC40LUg0L/RgNC+0YbQtdC00YPRgNGLOgogICAgICoKICAgICAqIC0gdW5lc2NhcGUg0YHQuNC80LLQvtC70L7QsiDQsiDRg9GA0LvQtQogICAgICogLSDRgdC+0YDRgtC40YDRg9C10YIgZ2V0LdC/0LDRgNCw0LzQtdGC0YDRiyDQt9Cw0L/RgNC+0YHQsCwg0YLQvtC70YzQutC+INC/0L4g0LrQu9GO0YfRgwogICAgICogLSDQv9GA0L7RhtC10L3RgtC90L7QtSDQutC+0LTQuNGA0L7QstCw0L3QuNC1INC/0YPRgtC40Lkg0Lgg0LDRgNCz0YPQvNC10L3RgtC+0LIg0LfQsNC/0YDQvtGB0LAsIG5vbi1BU0NJSSDRgdC40LzQstC+0LvRiyDQv9GA0L7RhtC10L3RgtC90L4g0LrQvtC00YPRgNGD0Y7RgtGB0Y8g0YEg0L/QvtC80L7RidGM0Y4gVVRGLTggKFJGQy0zOTg2KQogICAgICogLSDQstGB0LUg0L/RgNC+0LHQtdC70Ysg0L/RgNC10LLRgNCw0YnQsNGO0YLRgdGPINCyICclMjAnICjQv9C+INC00L7QutGD0LzQtdC90YLQsNGG0LjQuCDRgtCw0Log0L/RgNCw0LLQuNC70YzQvdC+INC00LXQu9Cw0YLRjCDQtNC70Y8g0LLRgdC10YUg0YPRgNC70L7Qsiwg0LrRgNC+0LzQtSDRg9GA0LvQvtCyINC40Lcg0YTQvtGA0LwpCiAgICAgKiAtINC/0YDQuNCy0L7QtNC40YIg0L/RgNC+0YbQtdC90YLQvdC+0LUg0LrQvtC00LjRgNC+0LLQsNC90LjQtSDQuiDQtdC00LjQvdC+0LzRgyDRgNC10LPQuNGB0YLRgNGDICglMmYgLT4gJTJGKQogICAgICogLSDRgdC+0YXRgNCw0L3Rj9GC0YwgZ2V0LdC/0LDRgNCw0LzQtdGC0YDRiyDRgSDQv9GD0YHRgtGL0Lwg0LfQvdCw0YfQtdC90LjQtdC8ICjQtNC+INGC0LXRhSDQv9C+0YAg0L/QvtC60LAga2VlcF9ibGFua192YWx1ZXMg0L3QtSDQsdGD0LTQtdGCINCy0YvRgdGC0LDQstC70LXQvSDQsiBmYWxzZSkKICAgICAqIC0g0YPQtNCw0LvRj9C10YIg0YTRgNCw0LPQvNC10L3RgtGLICjRj9C60L7RgNC4KSAo0LTQviDRgtC10YUg0L/QvtGAINC/0L7QutCwIGtlZXBfZnJhZ21lbnRzINC90LUg0LHRg9C00LXRgiDQstGL0YHRgtCw0LLQu9C10L0g0LIgdHJ1ZSkKICAgICAqIC0g0LTQvtCx0LDQstC70Y/QtdGCINGB0LvRjdGIINCyINC60L7QvdGG0LUg0L/Rg9GC0LXQuQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVybCDQmNGB0LrQvtC80YvQuSBVUkwKICAgICAqIEBwYXJhbSBib29sICRrZWVwX2JsYW5rX3ZhbHVlcyDQodC+0YXRgNCw0L3QuNGC0Ywg0L/Rg9GB0YLRi9C1INC/0LDRgNCw0LzQtdGC0YDRiwogICAgICogQHBhcmFtIGJvb2wgJGtlZXBfZnJhZ21lbnRzINCh0L7RhdGA0LDQvdC40YLRjCDRhNGA0LDQs9C80LXQvdGC0YsgKNGP0LrQvtGA0Y8pCiAgICAgKiBAcGFyYW0gYXJyYXkgJGF0dHJpYnV0ZXMg0KHQv9C40YHQvtC6INC/0LDRgNCw0LzQtdGC0YDQvtCyINC60L7RgtC+0YDRi9C1INC00L7Qu9C20L3RiyDQvtGB0YLQsNGC0YzRgdGPINCyINGD0YDQu9C1CiAgICAgKiBAcGFyYW0gYXJyYXkgJGV4Y2x1ZGVfYXR0cmlidXRlcyDQodC/0LjRgdC+0Log0L/QsNGA0LDQvNC10YLRgNC+0LIg0LrQvtGC0L7RgNGL0LUg0L3Rg9C20L3QviDRg9Cx0YDQsNGC0Ywg0LjQtyDRg9GA0LvQsAogICAgICogQHBhcmFtIGJvb2wgJGFsbG93X3ZhbHVlX2xpc3Qg0J7RgdGC0LDQstC40YLRjCDQtNGD0LHQu9C40YDRg9GO0YnQuNC10YHRjyBHRVQt0L/QsNGA0LDQvNC10YLRgNGLINCyINGD0YDQu9C1CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVVJMINCyINC60LDQvdC+0L3QuNGH0LXRgdC60L7QvCDQstC40LTQtQogICAgICovCiAgICBmdW5jdGlvbiBfY2Fub25pY2FsaXplX3VybCgkdXJsLCAka2VlcF9ibGFua192YWx1ZXM9dHJ1ZSwgJGtlZXBfZnJhZ21lbnRzPWZhbHNlLAogICAgICAgICAgICAkZW5jb2Rpbmc9J1VURi04JywgJGF0dHJpYnV0ZXM9YXJyYXkoKSwgJGV4Y2x1ZGVfYXR0cmlidXRlcz1hcnJheSgpLCAkYWxsb3dfdmFsdWVfbGlzdD10cnVlKSB7CiAgICAgICAgJHVybCA9IHByZWdfcmVwbGFjZSgnIyhcXFx4WzAtOUEtRl17Mn0pI2llJywgJ2NocihoZXhkZWMoIiQxIikpJywgJHVybCk7CgogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ21iX2NoZWNrX2VuY29kaW5nJykpIHsKICAgICAgICAgICAgaWYgKCFtYl9jaGVja19lbmNvZGluZygkdXJsLCAkZW5jb2RpbmcpKSB7CiAgICAgICAgICAgICAgICAkdXJsID0gbWJfY29udmVydF9lbmNvZGluZygkdXJsLCAkZW5jb2RpbmcpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdtYl9kZXRlY3RfZW5jb2RpbmcnKSkgewogICAgICAgICAgICBpZiAobWJfZGV0ZWN0X2VuY29kaW5nKCR1cmwpICE9ICRlbmNvZGluZykgewogICAgICAgICAgICAgICAgJHVybCA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJHVybCwgJGVuY29kaW5nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHVybCA9IF91bmVzY2FwZSh0cmltKCR1cmwpKTsKCiAgICAgICAgbGlzdCgkc2NoZW1lLCAkbmV0bG9jLCAkcGF0aCwgJHBhcmFtcywgJHF1ZXJ5LCAkZnJhZ21lbnQpID0gX3BhcnNlX3VybCgkdXJsKTsKCiAgICAgICAgJGtleXZhbHMgPSBfcGFyc2VfcXNsKCRxdWVyeSwgJGtlZXBfYmxhbmtfdmFsdWVzKTsKICAgICAgICAka2V5dmFscyA9IF9kZWxldGVfdHJhc2hfa2V5dmFscygka2V5dmFscywgJGF0dHJpYnV0ZXMsICRleGNsdWRlX2F0dHJpYnV0ZXMsICRhbGxvd192YWx1ZV9saXN0KTsKICAgICAgICBrc29ydCgka2V5dmFscyk7CgogICAgICAgICRxdWVyeSA9IF91cmxlbmNvZGUoJGtleXZhbHMpOwoKICAgICAgICAkcGF0aCA9IF9zYWZlX3VybF9zdHJpbmcoX3VucXVvdGVwYXRoKCRwYXRoKSkgfCAnLyc7CiAgICAgICAgJHBhdGggPSBwcmVnX3JlcGxhY2UoJyMvKyMnLCAnLycsICRwYXRoKTsKCiAgICAgICAgJGZyYWdtZW50ID0gJGtlZXBfZnJhZ21lbnRzID8gJGZyYWdtZW50IDogJyc7CgogICAgICAgICRkYXRhID0gYXJyYXkoCiAgICAgICAgICAgICdzY2hlbWUnID0+IHN0cnRvbG93ZXIoJHNjaGVtZSksCiAgICAgICAgICAgICduZXRsb2MnID0+IHN0cnRvbG93ZXIoJG5ldGxvYyksCiAgICAgICAgICAgICdwYXRoJyA9PiAkcGF0aCwKICAgICAgICAgICAgJ3BhcmFtcycgPT4gJHBhcmFtcywKICAgICAgICAgICAgJ3F1ZXJ5JyA9PiAkcXVlcnksCiAgICAgICAgICAgICdmcmFnbWVudCcgPT4gJGZyYWdtZW50CiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIF91cmx1bnBhcnNlKCRkYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC+0YLQvdC+0YHQuNGC0LXQu9GM0L3Ri9C5INC/0YPRgtGMIFVSTC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyDQntGC0L3QvtGB0LjRgtC10LvRjNC90YvQuSDQv9GD0YLRjAogICAgICovCiAgICBmdW5jdGlvbiBfZ2V0X3JlbGF0aXZlX3VybCgkdXJsKSB7CiAgICAgICAgJHVybCA9IHByZWdfcmVwbGFjZSgnI2h0dHBzPzovLy4qPyg/Oi98JCkjaScsICcvJywgJHVybCwgMSk7CiAgICAgICAgJHVybCA9IGx0cmltKCR1cmwsICcvJyk7CgogICAgICAgIHJldHVybiAnLycuJHVybDsKICAgIH0KCiAgICAvKioKICAgICAqIEN1c3RvbSBoZXhkZWMgZnVuY3Rpb24gZm9yIGdyZWF0ZXIgbnVtYmVycyB1c2luZyBCQyBNYXRoLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vYm9vay5iYy5waHAgQkNNYXRoIEFyYml0cmFyeSBQcmVjaXNpb24gTWF0aGVtYXRpY3MKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBmdW5jdGlvbiBiY2hleGRlYygkaGV4KSB7CiAgICAgICAgJGRlYyA9IDA7CiAgICAgICAgJGxlbiA9IHN0cmxlbigkaGV4KTsKCiAgICAgICAgZm9yICgkaSA9IDE7ICRpIDw9ICRsZW47ICRpKyspIHsKICAgICAgICAgICAgJGRlYyA9IGJjYWRkKCRkZWMsIGJjbXVsKHN0cnZhbChoZXhkZWMoJGhleFskaSAtIDFdKSksIGJjcG93KCcxNicsIHN0cnZhbCgkbGVuIC0gJGkpKSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRkZWM7CiAgICB9CgogICAgLyoqCiAgICAgKiBDdXN0b20gaGV4ZGVjIGZ1bmN0aW9uIGZvciBncmVhdGVyIG51bWJlcnMgdXNpbmcgR01QLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vYm9vay5nbXAucGhwIEdOVSBNdWx0aXBsZSBQcmVjaXNpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBmdW5jdGlvbiBnbXBfaGV4ZGVjKCRoZXgpIHsKICAgICAgICAkZ21wID0gZ21wX2luaXQoMCk7CiAgICAgICAgJG11bHQgPSBnbXBfaW5pdCgxKTsKCiAgICAgICAgZm9yICgkaSA9IHN0cmxlbigkaGV4KSAtIDE7ICRpID49IDA7ICRpLS0sICRtdWx0ID0gZ21wX211bCgkbXVsdCwgMTYpKSB7CiAgICAgICAgICAgICRnbXAgPSBnbXBfYWRkKCRnbXAsIGdtcF9tdWwoJG11bHQsIGhleGRlYygkaGV4WyRpXSkpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBnbXBfc3RydmFsKCRnbXApOwogICAgfQoKCiAgICAvKioKICAgICAqIEN1c3RvbSBoZXhkZWMgZnVuY3Rpb24gZm9yIGdyZWF0ZXIgbnVtYmVycy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBmdW5jdGlvbiBoZXgyZGVjKCRzKSB7CiAgICAgICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoJ251bWJlcicpKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIG51bWJlcigkcGFyYW0pIHsKICAgICAgICAgICAgICAgIHJldHVybiBpbnR2YWwoJHBhcmFtKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2FkZCcpKSB7CiAgICAgICAgICAgIGZ1bmN0aW9uIGFkZCgkeCwgJHkpIHsKICAgICAgICAgICAgICAgICRjID0gMDsKICAgICAgICAgICAgICAgICRyID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICR4ID0gYXJyYXlfbWFwKCdudW1iZXInLCBzdHJfc3BsaXQoJHgpKTsKICAgICAgICAgICAgICAgICR5ID0gYXJyYXlfbWFwKCdudW1iZXInLCBzdHJfc3BsaXQoJHkpKTsKCiAgICAgICAgICAgICAgICB3aGlsZSAoY291bnQoJHgpIHx8IGNvdW50KCR5KSkgewogICAgICAgICAgICAgICAgICAgICRzID0gKGFycmF5X3BvcCgkeCkpICsgKGFycmF5X3BvcCgkeSkpICsgJGM7CiAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkciwgJHMgPCAxMCA/ICRzIDogJHMgLSAxMCk7CiAgICAgICAgICAgICAgICAgICAgJGMgPSAkcyA8IDEwID8gMCA6IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRjKSB7CiAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkciwgJGMpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBpbXBsb2RlKCcnLCAkcik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRkZWMgPSAnMCc7CiAgICAgICAgJHMgPSBzdHJfc3BsaXQoJHMpOwoKICAgICAgICBmb3JlYWNoKCRzIGFzICRjaHIpIHsKICAgICAgICAgICAgJG4gPSBpbnR2YWwoJGNociwgMTYpOwoKICAgICAgICAgICAgZm9yICgkdCA9IDg7ICR0OyAkdCA+Pj0gMSkgewogICAgICAgICAgICAgICAgJGRlYyA9IChzdHJpbmcpYWRkKCRkZWMsICRkZWMpOwoKICAgICAgICAgICAgICAgIGlmICgkbiAmICR0KSB7CiAgICAgICAgICAgICAgICAgICAgJGRlYyA9IChzdHJpbmcpYWRkKCRkZWMsICcxJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkZGVjOwogICAgfQoKICAgIC8qKgogICAgICog0KXRjdGI0LjRgNGD0LXRgiDRgdGC0YDQvtC60YMg0Lgg0YPRgdC10LrQsNC10YIg0LTQviAyMCDRgdC40LzQstC+0LvQvtCyCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcg0KPRgdC10YfQtdC90L3QsNGPINGF0LXRiNC40YDQvtCy0LDQvdC90LDRjyDRgdGC0YDQvtC60LAKICAgICAqLwogICAgZnVuY3Rpb24gX2hhc2hfc3RyaW5nKCRzdHJpbmcpIHsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdiY2FkZCcpKSB7CiAgICAgICAgICAgICRzdHJpbmdfaGFzaCA9IGJjaGV4ZGVjKG1kNSgkc3RyaW5nKSk7CiAgICAgICAgfQogICAgICAgIGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdnbXBfYWRkJykpIHsKICAgICAgICAgICAgJHN0cmluZ19oYXNoID0gZ21wX2hleGRlYyhtZDUoJHN0cmluZykpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHN0cmluZ19oYXNoID0gaGV4MmRlYyhtZDUoJHN0cmluZykpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHN1YnN0cigkc3RyaW5nX2hhc2gsIDAsIDE4KTsKICAgIH0KCiAgICAvKioKICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGF0LXRiCDQvtGC0L3QvtGB0LjRgtC10LvRjNC90L7Qs9C+IFVSTC4KICAgICAqINCd0L7QstCw0Y8g0YTRg9C90LrRhtC40Y8sINGB0L7Qt9C00LDQvdC90LDRjyDQtNC70Y8g0L/QvtC70YPRh9C10L3QuNGPINC40LTQtdC90YLQuNGH0L3Ri9GFINC00LDQvdC90YvRhSDRgSBweXRob24g0LjQtyDQmtCY0KIuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcg0KXQtdGIINC+0YLQvdC+0YHQuNGC0LXQu9GM0L3QvtCz0L4gVVJMCiAgICAgKi8KICAgIGZ1bmN0aW9uIF9yZWxhdGl2ZV91cmxfaGFzaCgkdXJsLCAkcjRfY2ZnX3Jvb3Q9JycsICRleGNsdWRlX2F0dHJpYnV0ZXM9YXJyYXkoKSkgewogICAgICAgICRhdHRyaWJ1dGVzID0gYXJyYXkoKTsKCiAgICAgICAgJHI0X2tub3ducGFyYW1zID0gInskcjRfY2ZnX3Jvb3R9cjRfa25vd25wYXJhbXMubGlzdCI7CgogICAgICAgIGlmIChmaWxlX2V4aXN0cygkcjRfa25vd25wYXJhbXMpKSB7CiAgICAgICAgICAgICRhdHRyaWJ1dGVzID0gZmlsZSgkcjRfa25vd25wYXJhbXMpOwoKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRhdHRyaWJ1dGVzKSkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGF0dHJpYnV0ZXMgYXMgJGtleSA9PiAkYXR0cmlidXRlKSB7CiAgICAgICAgICAgICAgICAgICAgJGF0dHJpYnV0ZXNbJGtleV0gPSB0cmltKCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoZW1wdHkoJGV4Y2x1ZGVfYXR0cmlidXRlcykpIHsKICAgICAgICAgICAgJHI0X2JhZHBhcmFtcyA9ICJ7JHI0X2NmZ19yb290fXI0X2JhZHBhcmFtcy5saXN0IjsKCiAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkcjRfYmFkcGFyYW1zKSkgewogICAgICAgICAgICAgICAgJGV4Y2x1ZGVfYXR0cmlidXRlcyA9IGZpbGUoJHI0X2JhZHBhcmFtcyk7CgogICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRleGNsdWRlX2F0dHJpYnV0ZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGV4Y2x1ZGVfYXR0cmlidXRlcyBhcyAka2V5ID0+ICRleGNsdWRlX2F0dHJpYnV0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZXhjbHVkZV9hdHRyaWJ1dGVzWyRrZXldID0gdHJpbSgkZXhjbHVkZV9hdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGNhbm9uaWNhbF91cmwgPSBfY2Fub25pY2FsaXplX3VybCgkdXJsLCB0cnVlLCBmYWxzZSwgJ1VURi04JywgJGF0dHJpYnV0ZXMsICRleGNsdWRlX2F0dHJpYnV0ZXMpOwogICAgICAgICRyZWxhdGl2ZV9jYW5vbmljYWxfdXJsID0gX2dldF9yZWxhdGl2ZV91cmwoJGNhbm9uaWNhbF91cmwpOwoKICAgICAgICByZXR1cm4gX2hhc2hfc3RyaW5nKCRyZWxhdGl2ZV9jYW5vbmljYWxfdXJsKTsKICAgIH0KCiAgICAvKioKICAgICAqINCh0YLQsNGA0LDRjyDRhNGD0L3QutGG0LjRjwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nINCl0LXRiCBtZDUg0L7RgiAkdXJsINC4INC10LPQviDQv9Cw0YDQsNC80LXRgtGA0L7QsgogICAgICovCiAgICBmdW5jdGlvbiBnZXRIYXNoKCR1cmwsICRyNF9jZmdfcm9vdCkgewogICAgICAgICR1ID0gcGFyc2VfdXJsKHN0cl9yZXBsYWNlKCcmYW1wOycsICcmJywgJHVybCkpOwogICAgICAgICRrcCA9IGZpbGUoInskcjRfY2ZnX3Jvb3R9cjRfa25vd25wYXJhbXMubGlzdCIpOwogICAgICAgICRrbm93bl9wYXJhbXMgPSBhcnJheSgpOwoKICAgICAgICBmb3JlYWNoICgka3AgYXMgJEspIHsKICAgICAgICAgICAgJGtub3duX3BhcmFtc1tdID0gdHJpbSgkSyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZW1wdHkoJHVbJ3BhdGgnXSkpIHsKICAgICAgICAgICAgJHVbJ3BhdGgnXSA9ICcvJzsKICAgICAgICB9CgogICAgICAgICRoYXNoID0gYXJyYXkoKTsKICAgICAgICAkaGFzaFsnPXAnXSA9ICR1WydwYXRoJ107CgogICAgICAgIGlmICghZW1wdHkoJHVbJ3F1ZXJ5J10pKSB7CiAgICAgICAgICAgICRhcyA9IGV4cGxvZGUoJyYnLCAkdVsncXVlcnknXSk7CgogICAgICAgICAgICBmb3JlYWNoICgkYXMgYXMgJGF0dHIpIHsKICAgICAgICAgICAgICAgICRwYWlyID0gZXhwbG9kZSgnPScsICRhdHRyKTsKCiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRwYWlyKSkgewogICAgICAgICAgICAgICAgICAgICR2ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgJGsgPSAnJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkcGFpclsxXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9bMC05YS1mQS1GXXszMn0vJywgJHBhaXJbMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJHYgPSAkcGFpclsxXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHBhaXJbMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5fYXJyYXkoJHBhaXJbMF0sICRrbm93bl9wYXJhbXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGsgPSAkcGFpclswXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJGhhc2hbJGtdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkaGFzaFska10gPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGhhc2hbJGtdW10gPSAkdjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAga3NvcnQoJGhhc2gpOwogICAgICAgICRoYXNoID0gbWQ1KHNlcmlhbGl6ZSgkaGFzaCkpOwoKICAgICAgICByZXR1cm4gJGhhc2g7CiAgICB9Cg== ====== db_backup.php ====== PD9waHAKCm9iX3N0YXJ0KCk7CgppZiggIWlzc2V0KCAkX1BPU1QgKSApewoJc2V0U3RhdHVzKCAiQkFEIFZFUlNJT04iICk7Cgl2ZXJib3NlX2V4aXQoICc1MDUnLCAnSFRUUCBWZXJzaW9uIG5vdCBzdXBwb3J0ZWQnLCAxICk7Cn0KCmlmKCBpc3NldCggJF9QT1NUWydob3N0J10gKSBhbmQgaXNzZXQoICRfUE9TVFsndXNlciddICkgYW5kIGlzc2V0KCAkX1BPU1RbJ3Bhc3MnXSApIGFuZCBpc3NldCggJF9QT1NUWyduYW1lJ10gKSApewoJJGhvc3QgPSBteXNxbF9lc2NhcGVfc3RyaW5nKCAkX1BPU1RbJ2hvc3QnXSApOwoJJHVzZXIgPSBteXNxbF9lc2NhcGVfc3RyaW5nKCAkX1BPU1RbJ3VzZXInXSApOwoJJHBhc3MgPSBteXNxbF9lc2NhcGVfc3RyaW5nKCAkX1BPU1RbJ3Bhc3MnXSApOwoJJG5hbWUgPSBteXNxbF9lc2NhcGVfc3RyaW5nKCAkX1BPU1RbJ25hbWUnXSApOwp9IGVsc2UgewoJZGllKCAiTm90IGFsbCBhcmd1bWVudHMgYXJlIHByb3ZpZGVkIVxuIiApOwp9CgppZiggIWlzc2V0KCAkX1BPU1RbJ2hvc3QnXSApICl7CglzZXRTdGF0dXMoICJCQUQgUkVRVUVTVCIgKTsKCXZlcmJvc2VfZXhpdCggJzQwMCcsICdCYWQgUmVxdWVzdCcsIDEgKTsKfQoKQHVubGluayggJ2RiX2JhY2t1cC5zcWwnICk7CnNldFN0YXR1cyggIkRPIiApOwpiYWNrdXBfdGFibGVzKCRob3N0LCAkdXNlciwgJHBhc3MsICRuYW1lKTsKc2V0U3RhdHVzKCAiRE9ORSIgKTsKCi8qCmVycm9yIGNvZGVzOgoJIyBodHRwOi8vZGVscGhpd3d3LmNlcm4uY2gvb2ZmbGluZS93ZWIvaHR0cF9lcnJvcl9jb2Rlcy5odG1sCgk1MDUgSFRUUCBWZXJzaW9uIG5vdCBzdXBwb3J0ZWQKCTQwMCBCYWQgUmVxdWVzdAoJNDAxIFVuYXV0aG9yaXplZAoJMjAwIE9LCiovCmZ1bmN0aW9uIHZlcmJvc2VfZXhpdCggJHN0YXR1cywgJG1zZywgJGlzX2V4aXQgKQp7CgloZWFkZXIoICJTdGF0dXM6ICRzdGF0dXMgJG1zZ1xuIiApOwoKCW9iX2VuZF9mbHVzaCgpOwoKCWlmKCAkaXNfZXhpdCApewoJCWRpZSggJ1RoZSBlbGVwaGFudHMgYXJlIGRpZXMgc3RhbmRpbmcnICk7Cgl9Cn0KCmZ1bmN0aW9uIHNldFN0YXR1cyggJG5ld19zdGF0dXMgKQp7CgkkbG9nID0gZm9wZW4oICdkYl9iYWNrdXBfc3RhdHVzLmh0bWwnLCAndycgKTsKCWZ3cml0ZSggJGxvZywgIiRuZXdfc3RhdHVzXG4iICk7CglmY2xvc2UoICRsb2cgKTsKfQoKZnVuY3Rpb24gYmFja3VwX3RhYmxlcygkaG9zdCwgJHVzZXIsICRwYXNzLCAkbmFtZSkKewoJJGxpbmsgPSBteXNxbF9jb25uZWN0KCRob3N0LCR1c2VyLCRwYXNzKSBvciB2ZXJib3NlX2V4aXQoICc0MDEnLCAnVW5hdXRob3JpemVkJywgMSApOwoKCW15c3FsX3NlbGVjdF9kYigkbmFtZSwkbGluayk7CgoJaWYoIGlzc2V0KCAkbGluayApICl7CQkKCQl2ZXJib3NlX2V4aXQoICcyMDAnLCAnT0snLCAwICk7CgoJfSBlbHNlIHsKCQl2ZXJib3NlX2V4aXQoICc0MDAnLCAnQmFkIFJlcXVlc3QnLCAxICk7Cgl9CgoKCS8vIHRhYmxlcwoJJHJlcyA9IG15c3FsX2xpc3RfdGFibGVzKCRuYW1lLCAkbGluayk7CgkkdGFibGVzID0gYXJyYXkoKTsKCXdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXMpKSB7CgkJJHRhYmxlc1tdID0gY3VycmVudCgkcm93KTsKCX0KCQoJLy8gZHVtcAoJZm9yZWFjaCgkdGFibGVzIGFzICR0YWJsZSkgewoJCSRyZXN1bHQgPSBteXNxbF9xdWVyeSgnU0VMRUNUICogRlJPTSAnLiR0YWJsZSk7CgkJJG51bV9maWVsZHMgPSBteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOwoKCQkkcm93MiA9IG15c3FsX2ZldGNoX3JvdyhteXNxbF9xdWVyeSgnU0hPVyBDUkVBVEUgVEFCTEUgJy4kdGFibGUpKTsKCQkkcmV0dXJuLj0gIlxuXG4iIC4gJHJvdzJbMV0gLiAiO1xuXG4iOwoKCQlmb3IgKCRpID0gMDsgJGkgPCAkbnVtX2ZpZWxkczsgJGkrKykgewoJCQl3aGlsZSgkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXN1bHQpKSB7CgkJCQkkcmV0dXJuIC49ICdJTlNFUlQgSU5UTyAnIC4gJHRhYmxlIC4gJyBWQUxVRVMoJzsKCQkJCWZvcigkaj0wOyAkajwkbnVtX2ZpZWxkczsgJGorKykgewoJCQkJCSRyb3dbJGpdID0gYWRkc2xhc2hlcygkcm93WyRqXSk7CgkJCQkJJHJvd1skal0gPSBlcmVnX3JlcGxhY2UoIlxuIiwgIlxcbiIsICRyb3dbJGpdKTsKCQkJCQlpZiAoaXNzZXQoJHJvd1skal0pKSAgeyAKCQkJCQkJJHJldHVybiAuPSAnIicgLiAkcm93WyRqXSAuICciJzsgCgkJCQkJfSBlbHNlIHsgCgkJCQkJCSRyZXR1cm4gLj0gJyIiJzsgCgkJCQkJfQoJCQkJCWlmICgkajwoJG51bV9maWVsZHMtMSkpIHsgCgkJCQkJCSRyZXR1cm4gLj0gJywnOyAKCQkJCQl9CgkJCQl9CgkJCQkkcmV0dXJuIC49ICIpO1xuIjsKCQkJfQoJCX0KCQkkcmV0dXJuIC49ICJcblxuXG4iOwoJfQoKCS8vc2F2ZSBmaWxlCgkkaGFuZGxlID0gZm9wZW4oJ2RiX2JhY2t1cC5zcWwnLCAndysnKTsKCWZ3cml0ZSgkaGFuZGxlLCAkcmV0dXJuKTsKCWZjbG9zZSgkaGFuZGxlKTsKCW15c3FsX2Nsb3NlKCRsaW5rKTsKfQoK ====== error.log ====== ====== razgon2006vnutri.php ====== PD9waHAKICAgIC8vIHI0IHYzLjAKICAgICRyNF9jZmdfcm9vdCA9IGRpcm5hbWUoX19GSUxFX18pOwogICAgJHI0X2NmZ19yb290IC49ICcvJzsKICAgICRyNF9jZmdfcm9vdCA9IHByZWdfcmVwbGFjZSgnfChbL10rKXxpcycsICcvJywgJHI0X2NmZ19yb290KTsKCiAgICBpbmNsdWRlKCJ7JHI0X2NmZ19yb290fXI0X3ZhcnMucGhwIik7CgogICAgaW5jbHVkZV9vbmNlKCJ7JHI0X2NmZ19yb290fXI0X2xpYnMucGhwIik7CiAgICBpbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cjRfZ2V0SGFzaC5waHAiKTsKCiAgICAkcjRfZXJyb3JfcmVwb3J0aW5nID0gZXJyb3JfcmVwb3J0aW5nKCRyNF9jZmdfZXJyb3JfcmVwb3J0aW5nKTsKCiAgICAvLyBTQUZFIE1PREUKICAgIGlmICghaXNzZXQoJHNhZmVfbW9kZSkpIHsKICAgICAgICAkc2FmZV9tb2RlID0gY2hlY2tfc2FmZV9tb2RlKCRyNF9jZmdfcm9vdCk7CiAgICB9CgogICAgaWYgKCRzYWZlX21vZGUpIHsKICAgICAgICBpbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cGNsZXJyb3IubGliLnBocDMiKTsKICAgICAgICBpbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cGNsdHJhY2UubGliLnBocDMiKTsKICAgICAgICBpbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cGNsdGFyLmxpYi5waHAzIik7CiAgICB9CgogICAgLy8gTXVsdGlEb21haW5zCiAgICBpZiAoaXNzZXQoJHI0X2NmZ19tdWx0aWRvbWFpbikgJiYgJHI0X2NmZ19tdWx0aWRvbWFpbiAmJiAhJHNhZmVfbW9kZSkgewogICAgICAgICRyNF9kb21haW4gPSBwcmVnX3JlcGxhY2UoJyNed3d3XC4jaXNtJywgJycsICRfU0VSVkVSWydTRVJWRVJfTkFNRSddKS4nLyc7CgogICAgICAgIGlmICghZmlsZV9leGlzdHMoInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59IikpIHsKICAgICAgICAgICAgbWtkaXIoInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59IiwgMDc1NSk7CiAgICAgICAgICAgIGNobW9kKCJ7JHI0X2NmZ19yb290fXskcjRfZG9tYWlufSIsIDA3NTUpOwogICAgICAgIH0KCiAgICAgICAgJHNhZmVfbW9kZV9saW5rc19maWxlID0gInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59bGlua3MudGFyIjsKICAgIH0KICAgIGVsc2VpZiAoaXNzZXQoJHI0X2NmZ19tdWx0aWRvbWFpbikgJiYgJHI0X2NmZ19tdWx0aWRvbWFpbikgewogICAgICAgICRyNF9kb21haW4gPSBwcmVnX3JlcGxhY2UoJyNed3d3XC4jaXNtJywgJycsICRfU0VSVkVSWydTRVJWRVJfTkFNRSddKS4nXyc7CiAgICAgICAgJHNhZmVfbW9kZV9saW5rc19maWxlID0gInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59bGlua3MudGFyIjsKICAgICAgICAkcjRfZG9tYWluID0gJyc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkcjRfZG9tYWluID0gJyc7CiAgICAgICAgJHNhZmVfbW9kZV9saW5rc19maWxlID0gInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59bGlua3MudGFyIjsKICAgIH0KCiAgICAvLyAkcjRfcnVyaQogICAgJHI0X3J1cmkgPSBlbXB0eSgkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgPyAnJyA6ICRfU0VSVkVSWydSRVFVRVNUX1VSSSddOwoKICAgIGlmIChpc3NldCgkcjRfY2ZnX2NtcykgJiYgaW5fYXJyYXkoc3RydG9sb3dlcigkcjRfY2ZnX2NtcyksIGFycmF5KCd3ZWJhc3lzdCcsICdqb29tbGEnKSkpIHsKICAgICAgICBpZiAoc3RycG9zKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSwgJ19fZnVybF9wYXRoJykgJiYgc3RycG9zKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSwgJ2Zyb250ZW5kJykpIHsKICAgICAgICAgICAgJHI0X3J1cmkgID0gJy8nIC4gc3RyX3JlcGxhY2UoJyYnLCAnPycsIHN0cl9yZXBsYWNlKCdfX2Z1cmxfcGF0aD0nLCAnJywgc3RyX3JlcGxhY2UoJyZmcm9udGVuZD0xJywgJycsICRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSkpKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKHN1YnN0cigkcjRfcnVyaSwgMCwgMSkgIT09ICcvJykgewogICAgICAgICRyNF9ydXJpID0gJy8nIC4gJHI0X3J1cmk7CiAgICB9CgogICAgaWYgKCFlbXB0eSgkcjRfY2ZnX3N0cmlwX2Zyb21fdXJpKSkgewogICAgICAgIHByZWdfcmVwbGFjZSgkcjRfY2ZnX3N0cmlwX2Zyb21fdXJpLCAnJywgJHI0X3J1cmkpOwogICAgfQoKICAgIC8vICRyNF9ydXJpMgogICAgaWYgKGtleV9leGlzdHMoJ1JFRElSRUNUX1VSTCcsICRfU0VSVkVSKSkgewogICAgICAgICRyNF9ydXJpMiA9IGVtcHR5KCRfU0VSVkVSWydSRURJUkVDVF9VUkwnXSkgPyAnJyA6ICRfU0VSVkVSWydSRURJUkVDVF9VUkwnXTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRyZXF1ZXN0X3VyaSA9IGdldGVudignUkVRVUVTVF9VUkknKTsKICAgICAgICAkcjRfcnVyaTIgPSBlbXB0eSgkcmVxdWVzdF91cmkpID8gJycgOiAkcmVxdWVzdF91cmk7CiAgICB9CgogICAgaWYgKHN1YnN0cigkcjRfcnVyaTIsIDAsIDEpICE9PSAnLycpIHsKICAgICAgICAkcjRfcnVyaTIgPSAnLycgLiAkcjRfcnVyaTI7CiAgICB9CgogICAgaWYgKCFlbXB0eSgkcjRfY2ZnX3N0cmlwX2Zyb21fdXJpKSl7CiAgICAgICAgcHJlZ19yZXBsYWNlKCRyNF9jZmdfc3RyaXBfZnJvbV91cmksICcnLCAkcjRfcnVyaTIpOwogICAgfQoKICAgIC8vICRyNF9oCiAgICAkcjRfaCA9IGVtcHR5KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgPyAnJyA6ICRfU0VSVkVSWydIVFRQX0hPU1QnXTsKCiAgICBpZiAoaXNzZXQoJHI0X2NmZ19tdWx0aWRvbWFpbikgJiYgJHI0X2NmZ19tdWx0aWRvbWFpbiAmJiAhJHNhZmVfbW9kZSkgewogICAgICAgICRyNF9oID0gcHJlZ19yZXBsYWNlKCcvXnd3d1wuL2lzbScsICcnLCAkcjRfaCk7CiAgICB9CgogICAgLy8gJHI0X3ByZXBhcmVkX3VyaQogICAgJHI0X3ByZXBhcmVkX3VyaSA9IHByZWdfcmVwbGFjZShhcnJheSgnI1sgXCssL1wuXSMnLCAnI1w/IycpLCBhcnJheSgnXycsICdfXycpLCAkcjRfcnVyaSk7CiAgICAkcjRfcHJlcGFyZWRfdXJpMiA9IGdldEhhc2goImh0dHA6Ly97JHI0X2h9eyRyNF9ydXJpfSIsICRyNF9jZmdfcm9vdCk7CiAgICAkcjRfcHJlcGFyZWRfdXJpMyA9IGdldEhhc2goImh0dHA6Ly97JHI0X2h9eyRyNF9ydXJpMn0iLCAkcjRfY2ZnX3Jvb3QpOwoKICAgICRyNF9saW5rc19maWxlID0gInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59eyRyNF9wcmVwYXJlZF91cml9LnJ6ZyI7CiAgICAkcjRfbGlua3NfZmlsZTIgPSAieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn17JHI0X3ByZXBhcmVkX3VyaTJ9LnJ6ZyI7CiAgICAkcjRfbGlua3NfZmlsZTMgPSAieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn17JHI0X3ByZXBhcmVkX3VyaTN9LnJ6ZyI7CgogICAgaWYgKCFlbXB0eSgkX0dFVFsncjRzaG93aGFzaCddKSkgewogICAgICAgIGV4aXQoJHI0X3ByZXBhcmVkX3VyaTIpOwogICAgfQoKICAgIC8vICRyNV9wcmVwYXJlZF91cmkKICAgICRyNV9wcmVwYXJlZF91cmkgPSBfcmVsYXRpdmVfdXJsX2hhc2goInskcjRfcnVyaX0iLCAieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn0iKTsKCiAgICBpZiAoaXNzZXQoJHI0X2NmZ19jbXMpICYmIGluX2FycmF5KHN0cnRvbG93ZXIoJHI0X2NmZ19jbXMpLCBhcnJheSgnam9vbWxhJykpKSB7CiAgICAgICAgaWYgKHN0cnBvcygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSwgJ29wdGlvbj1jb21fY29udGVudCcpKSB7CiAgICAgICAgICAgICRyNV9wcmVwYXJlZF91cmkgPSBfcmVsYXRpdmVfdXJsX2hhc2goInskcjRfcnVyaTJ9IiwgInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59Iik7CiAgICAgICAgfQogICAgfQoKICAgIGlmIChpc3NldCgkX0dFVFsncjVzaG93aGFzaCddKSkgewogICAgICAgIGV4aXQoJHI1X3ByZXBhcmVkX3VyaSk7CiAgICB9CgogICAgJHI1X2xpbmtzX2RpciA9ICJ7JHI0X2NmZ19yb290fXskcjRfZG9tYWlufWxpbmtzIjsKICAgICRyNV9saW5rc19zdWJkaXIgPSAkcjVfbGlua3NfZGlyLicvJy5zdWJzdHIoJHI1X3ByZXBhcmVkX3VyaSwgMCwgMik7CgogICAgLy8gU0FGRSBNT0RFCiAgICBpZiAoISRzYWZlX21vZGUpIHsKICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRyNV9saW5rc19kaXIpKSB7CiAgICAgICAgICAgIG1rZGlyKCRyNV9saW5rc19kaXIsIDA3NzcpOwogICAgICAgICAgICBjaG1vZCgkcjVfbGlua3NfZGlyLCAwNzc3KTsKICAgICAgICB9CgogICAgICAgIGlmICghZmlsZV9leGlzdHMoJHI1X2xpbmtzX3N1YmRpcikgJiYgZmlsZV9leGlzdHMoJHI1X2xpbmtzX2RpcikpIHsKICAgICAgICAgICAgbWtkaXIoJHI1X2xpbmtzX3N1YmRpciwgMDc3Nyk7CiAgICAgICAgICAgIGNobW9kKCRyNV9saW5rc19zdWJkaXIsIDA3NzcpOwogICAgICAgIH0KICAgIH0KCiAgICAkcjVfcHJlcGFyZWRfdXJpID0gInskcjVfbGlua3Nfc3ViZGlyfS97JHI1X3ByZXBhcmVkX3VyaX0iOwogICAgJHI1X2xpbmtzX2ZpbGUgPSAieyRyNV9wcmVwYXJlZF91cml9LnJ6ZyI7CgogICAgLy8gdGVjaGluZm8KICAgIGlmIChpc3NldCgkX0dFVFsncjV0ZWNoaW5mbyddKSkgewogICAgICAgIGVjaG8gIlwkcjRfY2ZnX3Jvb3Q9eyRyNF9jZmdfcm9vdH08YnI+IjsKICAgICAgICBlY2hvICJcJHI0X2RvbWFpbj17JHI0X2RvbWFpbn08YnI+IjsKICAgICAgICBlY2hvICJcJHNhZmVfbW9kZT0iLiBpbnR2YWwoJHNhZmVfbW9kZSkgLic8YnI+JzsKICAgICAgICBlY2hvICJcJHNhZmVfbW9kZV9saW5rc19maWxlPXskc2FmZV9tb2RlX2xpbmtzX2ZpbGV9KCIuIGludHZhbChmaWxlX2V4aXN0cygkc2FmZV9tb2RlX2xpbmtzX2ZpbGUpKSAuJyk8YnI+JzsKICAgICAgICBlY2hvICJcJHI0X3J1cmk9eyRyNF9ydXJpfTxicj4iOwogICAgICAgIGVjaG8gIlwkcjRfcnVyaTI9eyRyNF9ydXJpMn08YnI+IjsKICAgICAgICBlY2hvICJcJHI0X2xpbmtzX2ZpbGU9eyRyNF9saW5rc19maWxlfSgiLiBpbnR2YWwoZmlsZV9leGlzdHMoJHI0X2xpbmtzX2ZpbGUpKSAuJyk8YnI+JzsKICAgICAgICBlY2hvICJcJHI0X2xpbmtzX2ZpbGUyPXskcjRfbGlua3NfZmlsZTJ9KCIuIGludHZhbChmaWxlX2V4aXN0cygkcjRfbGlua3NfZmlsZTIpKSAuJyk8YnI+JzsKICAgICAgICBlY2hvICJcJHI0X2xpbmtzX2ZpbGUzPXskcjRfbGlua3NfZmlsZTN9KCIuIGludHZhbChmaWxlX2V4aXN0cygkcjRfbGlua3NfZmlsZTMpKSAuJyk8YnI+JzsKICAgICAgICBlY2hvICJcJHI1X2xpbmtzX2ZpbGU9eyRyNV9saW5rc19maWxlfSgiLiBpbnR2YWwoZmlsZV9leGlzdHMoJHI1X2xpbmtzX2ZpbGUpKSAuJyk8YnI+JzsKCiAgICAgICAgZXhpdCgpOwogICAgfQoKICAgIC8vICRyNF9zbG90CiAgICBpZiAoIWlzc2V0KCRyNF9zbG90KSkgewogICAgICAgIGlmIChpc3NldCgkcjRfY2ZnX2NtcykgJiYgaW5fYXJyYXkoc3RydG9sb3dlcigkcjRfY2ZnX2NtcyksIGFycmF5KCdtb2R4JykpKSB7CiAgICAgICAgICAgICRyNF9zbG90ID0gaXNzZXQoJHN0YXJ0ZnJvbSkgPyAkc3RhcnRmcm9tIDogMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRyNF9zbG90ID0gaXNzZXQoJF9HRVRbJ3N0YXJ0ZnJvbSddKSA/ICRfR0VUWydzdGFydGZyb20nXSA6IDA7CiAgICAgICAgfQogICAgfQoKICAgIGlmICghaXNzZXQoJHI0X2xpbmtzKSkgewogICAgICAgICRyNF9saW5rcyA9IG51bGw7CiAgICB9CgogICAgJGxpbmsgPSAnJzsKCiAgICAkcmVkX3F1ZXJ5X3N0cmluZyA9IGtleV9leGlzdHMoJ1JFRElSRUNUX1FVRVJZX1NUUklORycsICRfU0VSVkVSKSA/ICRfU0VSVkVSWydSRURJUkVDVF9RVUVSWV9TVFJJTkcnXSA6ICcnOwoKICAgIGlmIChmYWxzZSAhPT0gc3RycG9zKCRyNF9ydXJpLCAkcjRfY2ZnX3Rlc3RwYXR0ZXJuKQogICAgICAgIHx8IGZhbHNlICE9PSBzdHJwb3MoJHI0X3J1cmkyLCAkcjRfY2ZnX3Rlc3RwYXR0ZXJuKQogICAgICAgIHx8ICFlbXB0eSgkX0dFVFtzdHJfcmVwbGFjZSgnPycsICcnLCAkcjRfY2ZnX3Rlc3RwYXR0ZXJuKV0pCiAgICAgICAgfHwgZmFsc2UgIT09IHN0cnBvcygkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10sICRyNF9jZmdfdGVzdHBhdHRlcm4pCiAgICAgICAgfHwgZmFsc2UgIT09IHN0cnBvcygkcmVkX3F1ZXJ5X3N0cmluZywgc3RyX3JlcGxhY2UoJz8nLCAnJywgJHI0X2NmZ190ZXN0cGF0dGVybikpCiAgICApIHsKICAgICAgICAkbGluayA9ICI8YSBocmVmPVwiI1wiIGNsYXNzPVwiW1tSNF8yX1BMQUNFSE9MREVSXV1cIj57JHI0X2NmZ190ZXN0dGV4dH08L2E+eyRyNF9jZmdfc2VwYXJhdG9yfSI7CiAgICAgICAgJGxpbmsgPSBpY29udl9saW5rKCRsaW5rLCAkcjRfY2ZnX2RlZmF1bHRfZW5jb2RpbmcsICRyNF9jZmdfbGlua19lbmNvZGluZyk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBpZiAoISRyNF9saW5rcwogICAgICAgICAgICAmJiAoZmlsZV9leGlzdHMoJHI0X2xpbmtzX2ZpbGUpIHx8IGZpbGVfZXhpc3RzKCRyNF9saW5rc19maWxlMikgfHwgZmlsZV9leGlzdHMoJHI0X2xpbmtzX2ZpbGUzKSB8fCBmaWxlX2V4aXN0cygkcjVfbGlua3NfZmlsZSkKICAgICAgICAgICAgfHwgKGZpbGVfZXhpc3RzKCRzYWZlX21vZGVfbGlua3NfZmlsZSkgJiYgJHNhZmVfbW9kZSkpCiAgICAgICAgKSB7CiAgICAgICAgICAgICRyNF9saW5rcyA9IGFycmF5KCk7CgogICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHI0X2xpbmtzX2ZpbGUpICYmICFmaWxlX2V4aXN0cygkcjRfbGlua3NfZmlsZTIpKSB7CiAgICAgICAgICAgICAgICByZW5hbWUoJHI0X2xpbmtzX2ZpbGUsICRyNF9saW5rc19maWxlMik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkcjRfbGlua3NfZmlsZTIpICYmICFmaWxlX2V4aXN0cygkcjRfbGlua3NfZmlsZTMpKSB7CiAgICAgICAgICAgICAgICByZW5hbWUoJHI0X2xpbmtzX2ZpbGUyLCAkcjRfbGlua3NfZmlsZTMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHI0X2xpbmtzX2ZpbGUzKSAmJiAhZmlsZV9leGlzdHMoJHI1X2xpbmtzX2ZpbGUpKSB7CiAgICAgICAgICAgICAgICByZW5hbWUoJHI0X2xpbmtzX2ZpbGUzLCAkcjVfbGlua3NfZmlsZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFNBRkUgTU9ERQogICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHNhZmVfbW9kZV9saW5rc19maWxlKSAmJiAkc2FmZV9tb2RlKSB7CiAgICAgICAgICAgICAgICAkcF90YXJuYW1lID0gJHNhZmVfbW9kZV9saW5rc19maWxlOwogICAgICAgICAgICAgICAgJHBfbGlzdCA9IGFycmF5KGJhc2VuYW1lKCRyNV9saW5rc19maWxlKSk7CiAgICAgICAgICAgICAgICAkcF9wYXRoID0gJHI0X2NmZ19yb290OwogICAgICAgICAgICAgICAgJHBfcmVtb3ZlX3BhdGggPSAnJzsKICAgICAgICAgICAgICAgICRwX21vZGUgPSAndGFyJzsKCiAgICAgICAgICAgICAgICBQY2xUYXJFeHRyYWN0TGlzdCgkcF90YXJuYW1lLCAkcF9saXN0LCAkcF9wYXRoLCAkcF9yZW1vdmVfcGF0aCwgJHBfbW9kZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyNV9saW5rc19iYXNlZmlsZSA9ICJ7JHI0X2NmZ19yb290fSIuYmFzZW5hbWUoJHI1X2xpbmtzX2ZpbGUpOwoKICAgICAgICAgICAgaWYgKCRzYWZlX21vZGUpIHsKICAgICAgICAgICAgICAgICRyNF9saW5rc19maWxlX2NvbnRlbnRzID0gZmlsZSgkcjVfbGlua3NfYmFzZWZpbGUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJHI0X2xpbmtzX2ZpbGVfY29udGVudHMgPSBmaWxlKCRyNV9saW5rc19maWxlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRyNV9saW5rc19iYXNlZmlsZSkgJiYgZmlsZV9leGlzdHMoJHNhZmVfbW9kZV9saW5rc19maWxlKSAmJiAkc2FmZV9tb2RlKSB7CiAgICAgICAgICAgICAgICB1bmxpbmsoJHI1X2xpbmtzX2Jhc2VmaWxlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHI0X2luZm9fc3RyID0gdHJpbShhcnJheV9zaGlmdCgkcjRfbGlua3NfZmlsZV9jb250ZW50cykpOwogICAgICAgICAgICAkcjRfaW5mb19maWVsZHMgPSBleHBsb2RlKCd8JywgJHI0X2luZm9fc3RyKTsKICAgICAgICAgICAgJHI0X2NlbGxfY29uZmlnID0gYXJyYXkoKTsKCiAgICAgICAgICAgIGlmIChpc3NldCgkcjRfaW5mb19maWVsZHNbMV0pKSB7CiAgICAgICAgICAgICAgICAkcjRfY2VsbF9jb25maWcgPSB1bnNlcmlhbGl6ZSgkcjRfaW5mb19maWVsZHNbMV0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3JlYWNoICgkcjRfbGlua3NfZmlsZV9jb250ZW50cyBhcyAkcjRfbGluZSkgewogICAgICAgICAgICAgICAgJHI0X2xpbmUgPSB0cmltKCRyNF9saW5lKTsKCiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRyNF9saW5lKSkgewogICAgICAgICAgICAgICAgICAgICRyNF9saW5rc1tdID0gJHI0X2xpbmU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRyNF9saW5kZXggPSAkcjRfc2xvdDsKCiAgICAgICAgaWYgKCFlbXB0eSgkcjRfY2VsbF9jb25maWcpKSB7CiAgICAgICAgICAgICRyNF9saW5kZXggPSBhcnJheV9zZWFyY2goJHI0X3Nsb3QsICRyNF9jZWxsX2NvbmZpZyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHI0X2xpbmRleCAhPT0gZmFsc2UgJiYgIWVtcHR5KCRyNF9saW5rc1skcjRfbGluZGV4XSkpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRyNF9jZmdfY21zKSAmJiBpbl9hcnJheShzdHJ0b2xvd2VyKCRyNF9jZmdfY21zKSwgYXJyYXkoJ3lhbmRleCcpKSkgewogICAgICAgICAgICAgICAgJGxpbmtfeWQgPSBleHBsb2RlKCc8JywgJHI0X2xpbmtzWyRyNF9saW5kZXhdKTsKICAgICAgICAgICAgICAgICRsaW5rX2RvbSA9IGV4cGxvZGUoJyI+JywgJGxpbmtfeWRbMV0pOwogICAgICAgICAgICAgICAgJGxpbmtfdGV4dCA9IGV4cGxvZGUoJz4nLCAkbGlua195ZFsyXSk7CiAgICAgICAgICAgICAgICAkbGlua19kb20yID0gZXhwbG9kZSgnPSInLCAkbGlua19kb21bMF0pOwogICAgICAgICAgICAgICAgJGxpbmsgPSAnPHNwYW4gc3R5bGU9ImNvbG9yOiM0NDQ0REE7Ij4nLiRsaW5rX3lkWzBdLic8L3NwYW4+PGJyPic7CiAgICAgICAgICAgICAgICAkbGluayAuPSAnPCcuJGxpbmtfeWRbMV0uJzwvYT4nOwogICAgICAgICAgICAgICAgJGxpbmsgLj0gJGxpbmtfdGV4dFsxXS4nPGJyPic7CiAgICAgICAgICAgICAgICAkbWF0Y2hlcyA9IGFycmF5KCk7CgogICAgICAgICAgICAgICAgcHJlZ19tYXRjaCgiL14oaHR0cDpcL1wvKT8oW15cL10rKS9pIiwgJGxpbmtfZG9tMlsxXSwgJG1hdGNoZXMpOyAvLyDQmNC30LLQu9C10LrQsNC10Lwg0LjQvNGPINGF0L7RgdGC0LAg0LjQtyBVUkwKCiAgICAgICAgICAgICAgICAkbGluayAuPSAnPHNwYW4gc3R5bGU9ImNvbG9yOiMxNzczMTc7IiA+Jy4kbWF0Y2hlc1syXS4nPC9zcGFuPic7CiAgICAgICAgICAgICAgICAkbGluayAuPSAnPGJyPjxicj4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJGxpbmsgPSAkcjRfbGlua3NbJHI0X2xpbmRleF0gLiAkcjRfY2ZnX3NlcGFyYXRvcjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGxpbmsgPSBpY29udl9saW5rKCRsaW5rLCAkcjRfY2ZnX2RlZmF1bHRfZW5jb2RpbmcsICRyNF9jZmdfbGlua19lbmNvZGluZyk7CiAgICAgICAgfQogICAgfQoKICAgICRyNF91YSA9IGVtcHR5KCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkgPyAnJyA6ICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXTsKCiAgICAvLyBZYW5kZXggTG9nZ2luZwogICAgaWYgKCRyNF9jZmdfbG9nZ2luZ195YW5kZXggJiYgIWlzc2V0KCRyNF95YW5kZXhfbG9nZ2VkKSkgewogICAgICAgICRyNF95YW5kZXhfbG9nX2ZpbGUgPSAieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn1zZWVuYnl5YW5kZXgucnpnIjsKCiAgICAgICAgY2hlY2tfbG9nZmlsZSgkcjRfeWFuZGV4X2xvZ19maWxlLCAieyRyNF9jZmdfcm9vdH17JHI0X2RvbWFpbn0iLCAkcjRfY2ZnX21heF9sb2dfc2l6ZSk7CgogICAgICAgIGlmIChwcmVnX21hdGNoKCd+WWFuZGV4KEJvdHxEaXJlY3QpLzNcLjA7XHMrXCtodHRwfmlzeCcsICRyNF91YSkpIHsKICAgICAgICAgICAgaWYgKHdyaXRlX2xvZ2ZpbGUoJHI0X3lhbmRleF9sb2dfZmlsZSwgInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59IiwgJHI0X3J1cmkpKSB7CiAgICAgICAgICAgICAgICAkcjRfeWFuZGV4X2xvZ2dlZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gR29vZ2xlIExvZ2dpbmcKICAgIGlmICgkcjRfY2ZnX2xvZ2dpbmdfZ29vZ2xlICYmICFpc3NldCgkcjRfZ29vZ2xlX2xvZ2dlZCkpIHsKICAgICAgICAkcjRfZ29vZ2xlX2xvZ19maWxlID0gInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59c2VlbmJ5Z29vZ2xlLnJ6ZyI7CgogICAgICAgIGNoZWNrX2xvZ2ZpbGUoJHI0X2dvb2dsZV9sb2dfZmlsZSwgInskcjRfY2ZnX3Jvb3R9eyRyNF9kb21haW59IiwgJHI0X2NmZ19tYXhfbG9nX3NpemUpOwoKICAgICAgICBpZiAocHJlZ19tYXRjaCgnfkdvb2dsZUJvdH5pc3gnLCAkcjRfdWEpKSB7CiAgICAgICAgICAgIGlmICh3cml0ZV9sb2dmaWxlKCRyNF9nb29nbGVfbG9nX2ZpbGUsICJ7JHI0X2NmZ19yb290fXskcjRfZG9tYWlufSIsICRyNF9ydXJpKSkgewogICAgICAgICAgICAgICAgJHI0X2dvb2dsZV9sb2dnZWQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRyNF9zbG90Kys7CgogICAgZXJyb3JfcmVwb3J0aW5nKCRyNF9lcnJvcl9yZXBvcnRpbmcpOwoKICAgIGVjaG8gJGxpbms7Cg== ====== pcltrace.lib.php3 ====== PD8NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyBQaHBDb25jZXB0IExpYnJhcnkgKFBDTCkgVHJhY2UgMS4wDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gTGljZW5zZSBHTlUvR1BMIC0gVmluY2VudCBCbGF2ZXQgLSBKYW52aWVyIDIwMDENCi8vIGh0dHA6Ly93d3cucGhwY29uY2VwdC5uZXQgJiBodHRwOi8vcGhwY29uY2VwdC5mcmVlLmZyDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gRnJhbudhaXMgOg0KLy8gICBMYSBkZXNjcmlwdGlvbiBkZSBsJ3VzYWdlIGRlIGxhIGxpYnJhaXJpZSBQQ0wgVHJhY2UgMS4wIG4nZXN0IHBhcyBlbmNvcmUNCi8vICAgZGlzcG9uaWJsZS4gQ2VsbGUtY2kgbidlc3QgcG91ciBsZSBtb21lbnQgZGlzdHJpYnXpZSBxdSdhdmVjIGwnYXBwbGljYXRpb24NCi8vICAgZXQgbGEgbGlicmFpcmllIFBocFppcC4NCi8vICAgVW5lIHZlcnNpb24gaW5k6XBlbmRhbnRlIHNlcmEgYmllbnRvdCBkaXNwb25pYmxlIHN1ciBodHRwOi8vd3d3LnBocGNvbmNlcHQubmV0DQovLw0KLy8gRW5nbGlzaCA6DQovLyAgIFRoZSBQQ0wgVHJhY2UgMS4wIGxpYnJhcnkgZGVzY3JpcHRpb24gaXMgbm90IGF2YWlsYWJsZSB5ZXQuIFRoaXMgbGlicmFyeSBpcw0KLy8gICByZWxlYXNlZCBvbmx5IHdpdGggUGhwWmlwIGFwcGxpY2F0aW9uIGFuZCBsaWJyYXJ5Lg0KLy8gICBBbiBpbmRlcGVuZGFudCByZWxlYXNlIHdpbGwgYmUgc29vbiBhdmFpbGFibGUgb24gaHR0cDovL3d3dy5waHBjb25jZXB0Lm5ldA0KLy8NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLw0KLy8gICAqIEF2ZXJ0aXNzZW1lbnQgOg0KLy8NCi8vICAgQ2V0dGUgbGlicmFpcmllIGEg6XTpIGNy6ellIGRlIGZh529uIG5vbiBwcm9mZXNzaW9ubmVsbGUuDQovLyAgIFNvbiB1c2FnZSBlc3QgYXUgcmlzcXVlIGV0IHDpcmlsIGRlIGNlbHVpIHF1aSBsJ3V0aWxpc2UsIGVuIGF1Y3VuIGNhcyBsJ2F1dGV1cg0KLy8gICBkZSBjZSBjb2RlIG5lIHBvdXJyYSDqdHJlIHRlbnUgcG91ciByZXNwb25zYWJsZSBkZXMg6XZlbnR1ZWxzIGTpZ2F0cyBxdSdpbCBwb3VycmFpdA0KLy8gICBlbmdlbmRyZXIuDQovLyAgIElsIGVzdCBlbnRlbmR1IGNlcGVuZGFudCBxdWUgbCdhdXRldXIgYSBy6WFsaXPpIGNlIGNvZGUgcGFyIHBsYWlzaXIgZXQgbid5IGENCi8vICAgY2FjaOkgYXVjdW4gdmlydXMsIG5pIG1hbHZlaWxsYW5jZS4NCi8vICAgQ2V0dGUgbGliYWlyaWUgZXN0IGRpc3RyaWJ16WUgc291cyBsYSBsaWNlbnNlIEdOVS9HUEwgKGh0dHA6Ly93d3cuZ251Lm9yZykNCi8vDQovLyAgICogQXV0ZXVyIDoNCi8vDQovLyAgIENlIGNvZGUgYSDpdOkg6WNyaXQgcGFyIFZpbmNlbnQgQmxhdmV0ICh2aW5jZW50QGJsYXZldC5uZXQpIHN1ciBzb24gdGVtcHMNCi8vICAgZGUgbG9pc2lyLg0KLy8NCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCi8vIC0tLS0tIExvb2sgZm9yIGRvdWJsZSBpbmNsdWRlDQppZiAoIWRlZmluZWQoIlBDTFRSQUNFX0xJQiIpKQ0Kew0KICBkZWZpbmUoICJQQ0xUUkFDRV9MSUIiLCAxICk7DQoNCiAgLy8gLS0tLS0gVmVyc2lvbg0KICAkZ19wY2xfdHJhY2VfdmVyc2lvbiA9ICIxLjAiOw0KDQogIC8vIC0tLS0tIEludGVybmFsIHZhcmlhYmxlcw0KICAvLyBUaGVzZSB2YWx1ZXMgbXVzdCBiZSBjaGFuZ2UgYnkgUGNsVHJhY2UgbGlicmFyeSBmdW5jdGlvbnMNCiAgJGdfcGNsX3RyYWNlX21vZGUgPSAibWVtb3J5IjsNCiAgJGdfcGNsX3RyYWNlX2ZpbGVuYW1lID0gInRyYWNlLnR4dCI7DQogICRnX3BjbF90cmFjZV9uYW1lID0gYXJyYXkoKTsNCiAgJGdfcGNsX3RyYWNlX2luZGV4ID0gMDsNCiAgJGdfcGNsX3RyYWNlX2xldmVsID0gMDsNCiAgLy8kZ19wY2xfdHJhY2VfZW50cmllcyA9IGFycmF5KCk7DQoNCg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAvLyBGdW5jdGlvbiA6IFRyT24oJHBfbGV2ZWwsICRwX21vZGUsICRwX2ZpbGVuYW1lKQ0KICAvLyBEZXNjcmlwdGlvbiA6DQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAgICRwX2xldmVsIDogVHJhY2UgbGV2ZWwNCiAgLy8gICAkcF9tb2RlIDogTW9kZSBvZiB0cmFjZSBkaXNwbGF5aW5nIDoNCiAgLy8gICAgICAgICAgICAgJ25vcm1hbCcgOiBtZXNzYWdlcyBhcmUgZGlzcGxheWVkIGF0IGZ1bmN0aW9uIGNhbGwNCiAgLy8gICAgICAgICAgICAgJ21lbW9yeScgOiBtZXNzYWdlcyBhcmUgbWVtb3JpemVkIGluIGEgdGFibGUgYW5kIGNhbiBiZSBkaXNwbGF5IGJ5DQogIC8vICAgICAgICAgICAgICAgICAgICAgICAgVHJEaXNwbGF5KCkgZnVuY3Rpb24uIChkZWZhdWx0KQ0KICAvLyAgICAgICAgICAgICAnbG9nJyAgICA6IG1lc3NhZ2VzIGFyZSB3cml0ZWQgaW4gdGhlIGZpbGUgJHBfZmlsZW5hbWUNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gVHJPbigkcF9sZXZlbD0xLCAkcF9tb2RlPSJtZW1vcnkiLCAkcF9maWxlbmFtZT0idHJhY2UudHh0IikNCiAgew0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfbGV2ZWw7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9tb2RlOw0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfZmlsZW5hbWU7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9uYW1lOw0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfaW5kZXg7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9lbnRyaWVzOw0KDQogICAgLy8gLS0tLS0gRW5hYmxlIHRyYWNlIG1vZGUNCiAgICAkZ19wY2xfdHJhY2VfbGV2ZWwgPSAkcF9sZXZlbDsNCg0KICAgIC8vIC0tLS0tIE1lbW9yaXplIG1vZGUgYW5kIGZpbGVuYW1lDQogICAgc3dpdGNoICgkcF9tb2RlKSB7DQogICAgICBjYXNlICJub3JtYWwiIDoNCiAgICAgIGNhc2UgIm1lbW9yeSIgOg0KICAgICAgY2FzZSAibG9nIiA6DQogICAgICAgICRnX3BjbF90cmFjZV9tb2RlID0gJHBfbW9kZTsNCiAgICAgIGJyZWFrOw0KICAgICAgZGVmYXVsdCA6DQogICAgICAgICRnX3BjbF90cmFjZV9tb2RlID0gImxvZ2dlZCI7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gTWVtb3JpemUgZmlsZW5hbWUNCiAgICAkZ19wY2xfdHJhY2VfZmlsZW5hbWUgPSAkcF9maWxlbmFtZTsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogSXNUck9uKCkNCiAgLy8gRGVzY3JpcHRpb24gOg0KICAvLyBSZXR1cm4gdmFsdWUgOg0KICAvLyAgIFRoZSB0cmFjZSBsZXZlbCAoMCBmb3IgZGlzYWJsZSkuDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIElzVHJPbigpDQogIHsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX2xldmVsOw0KDQogICAgcmV0dXJuKCRnX3BjbF90cmFjZV9sZXZlbCk7DQogIH0NCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAvLyBGdW5jdGlvbiA6IFRyT2ZmKCkNCiAgLy8gRGVzY3JpcHRpb24gOg0KICAvLyBQYXJhbWV0ZXJzIDoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gVHJPZmYoKQ0KICB7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9sZXZlbDsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX21vZGU7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9maWxlbmFtZTsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX25hbWU7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9pbmRleDsNCg0KICAgIC8vIC0tLS0tIENsZWFuDQogICAgJGdfcGNsX3RyYWNlX21vZGUgPSAibWVtb3J5IjsNCiAgICB1bnNldCgkZ19wY2xfdHJhY2VfZW50cmllcyk7DQogICAgdW5zZXQoJGdfcGNsX3RyYWNlX25hbWUpOw0KICAgIHVuc2V0KCRnX3BjbF90cmFjZV9pbmRleCk7DQoNCiAgICAvLyAtLS0tLSBTd2l0Y2ggb2ZmIHRyYWNlDQogICAgJGdfcGNsX3RyYWNlX2xldmVsID0gMDsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBUckZjdFN0YXJ0KCkNCiAgLy8gRGVzY3JpcHRpb24gOg0KICAvLyAgIEp1c3QgYSB0cmFjZSBmdW5jdGlvbiBmb3IgZGViYnVnZ2luZyBwdXJwb3NlIGJlZm9yZSBJIHVzZSBhIGJldHRlciB0b29sICEhISENCiAgLy8gICBTdGFydCBhbmQgc3RvcCBvZiB0aGlzIGZ1bmN0aW9uIGlzIGJ5ICRnX3BjbF90cmFjZV9sZXZlbCBnbG9iYWwgdmFyaWFibGUuDQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAgICRwX2xldmVsIDogTGV2ZWwgb2YgdHJhY2UgcmVxdWlyZWQuDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFRyRmN0U3RhcnQoJHBfZmlsZSwgJHBfbGluZSwgJHBfbmFtZSwgJHBfcGFyYW09IiIsICRwX21lc3NhZ2U9IiIpDQogIHsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX2xldmVsOw0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfbW9kZTsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX2ZpbGVuYW1lOw0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfbmFtZTsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX2luZGV4Ow0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfZW50cmllczsNCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIGRpc2FibGVkIHRyYWNlDQogICAgaWYgKCRnX3BjbF90cmFjZV9sZXZlbCA8IDEpDQogICAgICByZXR1cm47DQoNCiAgICAvLyAtLS0tLSBBZGQgdGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGxpc3QNCiAgICBpZiAoIWlzc2V0KCRnX3BjbF90cmFjZV9uYW1lKSkNCiAgICAgICRnX3BjbF90cmFjZV9uYW1lID0gJHBfbmFtZTsNCiAgICBlbHNlDQogICAgICAkZ19wY2xfdHJhY2VfbmFtZSAuPSAiLCIuJHBfbmFtZTsNCg0KICAgIC8vIC0tLS0tIFVwZGF0ZSB0aGUgZnVuY3Rpb24gZW50cnkNCiAgICAkaSA9IHNpemVvZigkZ19wY2xfdHJhY2VfZW50cmllcyk7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW25hbWVdID0gJHBfbmFtZTsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bcGFyYW1dID0gJHBfcGFyYW07DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW21lc3NhZ2VdID0gIiI7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW2ZpbGVdID0gJHBfZmlsZTsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bbGluZV0gPSAkcF9saW5lOw0KICAgICRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVtpbmRleF0gPSAkZ19wY2xfdHJhY2VfaW5kZXg7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW3R5cGVdID0gIjEiOyAvLyBtZWFucyBzdGFydCBvZiBmdW5jdGlvbg0KDQogICAgLy8gLS0tLS0gVXBkYXRlIHRoZSBtZXNzYWdlIGVudHJ5DQogICAgaWYgKCRwX21lc3NhZ2UgIT0gIiIpDQogICAgew0KICAgICRpID0gc2l6ZW9mKCRnX3BjbF90cmFjZV9lbnRyaWVzKTsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bbmFtZV0gPSAiIjsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bcGFyYW1dID0gIiI7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW21lc3NhZ2VdID0gJHBfbWVzc2FnZTsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bZmlsZV0gPSAkcF9maWxlOw0KICAgICRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVtsaW5lXSA9ICRwX2xpbmU7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW2luZGV4XSA9ICRnX3BjbF90cmFjZV9pbmRleDsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bdHlwZV0gPSAiMyI7IC8vIG1lYW5zIG1lc3NhZ2UNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBBY3Rpb24gZGVwZW5kaW5nIG9uIG1vZGUNCiAgICBQY2xUcmFjZUFjdGlvbigkZ19wY2xfdHJhY2VfZW50cmllc1skaV0pOw0KDQogICAgLy8gLS0tLS0gSW5jcmVtZW50IHRoZSBpbmRleA0KICAgICRnX3BjbF90cmFjZV9pbmRleCsrOw0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBUckZjdEVuZCgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gICBKdXN0IGEgdHJhY2UgZnVuY3Rpb24gZm9yIGRlYmJ1Z2dpbmcgcHVycG9zZSBiZWZvcmUgSSB1c2UgYSBiZXR0ZXIgdG9vbCAhISEhDQogIC8vICAgU3RhcnQgYW5kIHN0b3Agb2YgdGhpcyBmdW5jdGlvbiBpcyBieSAkZ19wY2xfdHJhY2VfbGV2ZWwgZ2xvYmFsIHZhcmlhYmxlLg0KICAvLyBQYXJhbWV0ZXJzIDoNCiAgLy8gICAkcF9sZXZlbCA6IExldmVsIG9mIHRyYWNlIHJlcXVpcmVkLg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICBmdW5jdGlvbiBUckZjdEVuZCgkcF9maWxlLCAkcF9saW5lLCAkcF9yZXR1cm49MSwgJHBfbWVzc2FnZT0iIikNCiAgew0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfbGV2ZWw7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9tb2RlOw0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfZmlsZW5hbWU7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9uYW1lOw0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfaW5kZXg7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9lbnRyaWVzOw0KDQogICAgLy8gLS0tLS0gTG9vayBmb3IgZGlzYWJsZWQgdHJhY2UNCiAgICBpZiAoJGdfcGNsX3RyYWNlX2xldmVsIDwgMSkNCiAgICAgIHJldHVybjsNCg0KICAgIC8vIC0tLS0tIEV4dHJhY3QgdGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGxpc3QNCiAgICAvLyAtLS0tLSBSZW1vdmUgdGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGxpc3QNCiAgICBpZiAoISgkdl9uYW1lID0gc3RycmNocigkZ19wY2xfdHJhY2VfbmFtZSwgIiwiKSkpDQogICAgew0KICAgICAgJHZfbmFtZSA9ICRnX3BjbF90cmFjZV9uYW1lOw0KICAgICAgJGdfcGNsX3RyYWNlX25hbWUgPSAiIjsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICRnX3BjbF90cmFjZV9uYW1lID0gc3Vic3RyKCRnX3BjbF90cmFjZV9uYW1lLCAwLCBzdHJsZW4oJGdfcGNsX3RyYWNlX25hbWUpLXN0cmxlbigkdl9uYW1lKSk7DQogICAgICAkdl9uYW1lID0gc3Vic3RyKCR2X25hbWUsIC1zdHJsZW4oJHZfbmFtZSkrMSk7DQogICAgfQ0KDQogICAgLy8gLS0tLS0gRGVjcmVtZW50IHRoZSBpbmRleA0KICAgICRnX3BjbF90cmFjZV9pbmRleC0tOw0KDQogICAgLy8gLS0tLS0gVXBkYXRlIHRoZSBtZXNzYWdlIGVudHJ5DQogICAgaWYgKCRwX21lc3NhZ2UgIT0gIiIpDQogICAgew0KICAgICRpID0gc2l6ZW9mKCRnX3BjbF90cmFjZV9lbnRyaWVzKTsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bbmFtZV0gPSAiIjsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bcGFyYW1dID0gIiI7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW21lc3NhZ2VdID0gJHBfbWVzc2FnZTsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bZmlsZV0gPSAkcF9maWxlOw0KICAgICRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVtsaW5lXSA9ICRwX2xpbmU7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW2luZGV4XSA9ICRnX3BjbF90cmFjZV9pbmRleDsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bdHlwZV0gPSAiMyI7IC8vIG1lYW5zIG1lc3NhZ2UNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBVcGRhdGUgdGhlIGZ1bmN0aW9uIGVudHJ5DQogICAgJGkgPSBzaXplb2YoJGdfcGNsX3RyYWNlX2VudHJpZXMpOw0KICAgICRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVtuYW1lXSA9ICR2X25hbWU7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW3BhcmFtXSA9ICRwX3JldHVybjsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bbWVzc2FnZV0gPSAiIjsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bZmlsZV0gPSAkcF9maWxlOw0KICAgICRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVtsaW5lXSA9ICRwX2xpbmU7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW2luZGV4XSA9ICRnX3BjbF90cmFjZV9pbmRleDsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bdHlwZV0gPSAiMiI7IC8vIG1lYW5zIGVuZCBvZiBmdW5jdGlvbg0KDQogICAgLy8gLS0tLS0gQWN0aW9uIGRlcGVuZGluZyBvbiBtb2RlDQogICAgUGNsVHJhY2VBY3Rpb24oJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldKTsNCiAgfQ0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIC8vIEZ1bmN0aW9uIDogVHJGY3RNZXNzYWdlKCkNCiAgLy8gRGVzY3JpcHRpb24gOg0KICAvLyBQYXJhbWV0ZXJzIDoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgZnVuY3Rpb24gVHJGY3RNZXNzYWdlKCRwX2ZpbGUsICRwX2xpbmUsICRwX2xldmVsLCAkcF9tZXNzYWdlPSIiKQ0KICB7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9sZXZlbDsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX21vZGU7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9maWxlbmFtZTsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX25hbWU7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9pbmRleDsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX2VudHJpZXM7DQoNCiAgICAvLyAtLS0tLSBMb29rIGZvciBkaXNhYmxlZCB0cmFjZQ0KICAgIGlmICgkZ19wY2xfdHJhY2VfbGV2ZWwgPCAkcF9sZXZlbCkNCiAgICAgIHJldHVybjsNCg0KICAgIC8vIC0tLS0tIFVwZGF0ZSB0aGUgZW50cnkNCiAgICAkaSA9IHNpemVvZigkZ19wY2xfdHJhY2VfZW50cmllcyk7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW25hbWVdID0gIiI7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW3BhcmFtXSA9ICIiOw0KICAgICRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVttZXNzYWdlXSA9ICRwX21lc3NhZ2U7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW2ZpbGVdID0gJHBfZmlsZTsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bbGluZV0gPSAkcF9saW5lOw0KICAgICRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVtpbmRleF0gPSAkZ19wY2xfdHJhY2VfaW5kZXg7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW3R5cGVdID0gIjMiOyAvLyBtZWFucyBtZXNzYWdlIG9mIGZ1bmN0aW9uDQoNCiAgICAvLyAtLS0tLSBBY3Rpb24gZGVwZW5kaW5nIG9uIG1vZGUNCiAgICBQY2xUcmFjZUFjdGlvbigkZ19wY2xfdHJhY2VfZW50cmllc1skaV0pOw0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBUck1lc3NhZ2UoKQ0KICAvLyBEZXNjcmlwdGlvbiA6DQogIC8vIFBhcmFtZXRlcnMgOg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICBmdW5jdGlvbiBUck1lc3NhZ2UoJHBfZmlsZSwgJHBfbGluZSwgJHBfbGV2ZWwsICRwX21lc3NhZ2U9IiIpDQogIHsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX2xldmVsOw0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfbW9kZTsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX2ZpbGVuYW1lOw0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfbmFtZTsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX2luZGV4Ow0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfZW50cmllczsNCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIGRpc2FibGVkIHRyYWNlDQogICAgaWYgKCRnX3BjbF90cmFjZV9sZXZlbCA8ICRwX2xldmVsKQ0KICAgICAgcmV0dXJuOw0KDQogICAgLy8gLS0tLS0gVXBkYXRlIHRoZSBlbnRyeQ0KICAgICRpID0gc2l6ZW9mKCRnX3BjbF90cmFjZV9lbnRyaWVzKTsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bbmFtZV0gPSAiIjsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bcGFyYW1dID0gIiI7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW21lc3NhZ2VdID0gJHBfbWVzc2FnZTsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bZmlsZV0gPSAkcF9maWxlOw0KICAgICRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVtsaW5lXSA9ICRwX2xpbmU7DQogICAgJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW2luZGV4XSA9ICRnX3BjbF90cmFjZV9pbmRleDsNCiAgICAkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bdHlwZV0gPSAiNCI7IC8vIG1lYW5zIHNpbXBsZSBtZXNzYWdlDQoNCiAgICAvLyAtLS0tLSBBY3Rpb24gZGVwZW5kaW5nIG9uIG1vZGUNCiAgICBQY2xUcmFjZUFjdGlvbigkZ19wY2xfdHJhY2VfZW50cmllc1skaV0pOw0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAvLyBGdW5jdGlvbiA6IFRyRGlzcGxheSgpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gUGFyYW1ldGVycyA6DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFRyRGlzcGxheSgpDQogIHsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX2xldmVsOw0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfbW9kZTsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX2ZpbGVuYW1lOw0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfbmFtZTsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX2luZGV4Ow0KICAgIGdsb2JhbCAkZ19wY2xfdHJhY2VfZW50cmllczsNCg0KICAgIC8vIC0tLS0tIExvb2sgZm9yIGRpc2FibGVkIHRyYWNlDQogICAgaWYgKCgkZ19wY2xfdHJhY2VfbGV2ZWwgPD0gMCkgfHwgKCRnX3BjbF90cmFjZV9tb2RlICE9ICJtZW1vcnkiKSkNCiAgICAgIHJldHVybjsNCg0KICAgICR2X2ZvbnQgPSAiXCJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmXCIiOw0KDQogICAgLy8gLS0tLS0gVHJhY2UgSGVhZGVyDQogICAgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MCBjZWxscGFkZGluZz0wPiI7DQogICAgZWNobyAiPHRyIGJnY29sb3I9IzAwMDBDQz4iOw0KICAgIGVjaG8gIjx0ZCBiZ2NvbG9yPSMwMDAwQ0Mgd2lkdGg9MT4iOw0KICAgIGVjaG8gIjwvdGQ+IjsNCiAgICBlY2hvICI8dGQ+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgc2l6ZT0zIGNvbG9yPSNGRkZGRkYgZmFjZT0kdl9mb250PlRyYWNlPC9mb250PjwvZGl2PjwvdGQ+IjsNCiAgICBlY2hvICI8L3RyPiI7DQogICAgZWNobyAiPHRyPiI7DQogICAgZWNobyAiPHRkIGJnY29sb3I9IzAwMDBDQyB3aWR0aD0xPiI7DQogICAgZWNobyAiPC90ZD4iOw0KICAgIGVjaG8gIjx0ZD4iOw0KDQogICAgLy8gLS0tLS0gQ29udGVudCBoZWFkZXINCiAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJSBib3JkZXI9MCBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTA+IjsNCg0KICAgIC8vIC0tLS0tIERpc3BsYXkNCiAgICAkdl9hZ2Fpbj0wOw0KICAgIGZvciAoJGk9MDsgJGk8c2l6ZW9mKCRnX3BjbF90cmFjZV9lbnRyaWVzKTsgJGkrKykNCiAgICB7DQogICAgICAvLyAtLS0tIFJvdyBoZWFkZXINCiAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgZWNobyAiPHRkPjx0YWJsZSB3aWR0aD0xMDAlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9MD48dHI+IjsNCiAgICAgICRuID0gKCRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVtpbmRleF0rMSkqMTA7DQogICAgICBlY2hvICI8dGQgd2lkdGg9Ii4kbi4iPjx0YWJsZSB3aWR0aD0xMDAlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9MD48dHI+IjsNCg0KICAgICAgZm9yICgkaj0wOyAkajw9JGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW2luZGV4XTsgJGorKykNCiAgICAgIHsNCiAgICAgICAgaWYgKCRqPT0kZ19wY2xfdHJhY2VfZW50cmllc1skaV1baW5kZXhdKQ0KICAgICAgICB7DQogICAgICAgICAgaWYgKCgkZ19wY2xfdHJhY2VfZW50cmllc1skaV1bdHlwZV0gPT0gMSkgfHwgKCRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVt0eXBlXSA9PSAyKSkNCiAgICAgICAgICBlY2hvICI8dGQgd2lkdGg9MTA+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgc2l6ZT0yIGZhY2U9JHZfZm9udD4rPC9mb250PjwvZGl2PjwvdGQ+IjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgICAgZWNobyAiPHRkIHdpZHRoPTEwPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IHNpemU9MiBmYWNlPSR2X2ZvbnQ+fDwvZm9udD48L2Rpdj48L3RkPiI7DQogICAgICB9DQogICAgICAvL2VjaG8gIjx0ZD4mbmJzcDwvdGQ+IjsNCiAgICAgIGVjaG8gIjwvdHI+PC90YWJsZT48L3RkPiI7DQoNCiAgICAgIGVjaG8gIjx0ZCB3aWR0aD0yPjwvdGQ+IjsNCiAgICAgIHN3aXRjaCAoJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW3R5cGVdKSB7DQogICAgICAgIGNhc2UgMToNCiAgICAgICAgICBlY2hvICI8dGQ+PGZvbnQgc2l6ZT0yIGZhY2U9JHZfZm9udD4iLiRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVtuYW1lXS4iKCIuJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW3BhcmFtXS4iKTwvZm9udD48L3RkPiI7DQogICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlIDI6DQogICAgICAgICAgZWNobyAiPHRkPjxmb250IHNpemU9MiBmYWNlPSR2X2ZvbnQ+Ii4kZ19wY2xfdHJhY2VfZW50cmllc1skaV1bbmFtZV0uIigpPSIuJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW3BhcmFtXS4iPC9mb250PjwvdGQ+IjsNCiAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgMzoNCiAgICAgICAgY2FzZSA0Og0KICAgICAgICAgIGVjaG8gIjx0ZD48dGFibGUgd2lkdGg9MTAwJSBib3JkZXI9MCBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTA+PHRkIHdpZHRoPTIwPjwvdGQ+PHRkPiI7DQogICAgICAgICAgZWNobyAiPGZvbnQgc2l6ZT0yIGZhY2U9JHZfZm9udD4iLiRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVttZXNzYWdlXS4iPC9mb250PiI7DQogICAgICAgICAgZWNobyAiPC90ZD48L3RhYmxlPjwvdGQ+IjsNCiAgICAgICAgYnJlYWs7DQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgIGVjaG8gIjx0ZD48Zm9udCBzaXplPTIgZmFjZT0kdl9mb250PiIuJGdfcGNsX3RyYWNlX2VudHJpZXNbJGldW25hbWVdLiIoIi4kZ19wY2xfdHJhY2VfZW50cmllc1skaV1bcGFyYW1dLiIpPC9mb250PjwvdGQ+IjsNCiAgICAgIH0NCiAgICAgIGVjaG8gIjwvdHI+PC90YWJsZT48L3RkPiI7DQogICAgICBlY2hvICI8dGQgd2lkdGg9NT48L3RkPiI7DQogICAgICBlY2hvICI8dGQ+PGZvbnQgc2l6ZT0xIGZhY2U9JHZfZm9udD4iLmJhc2VuYW1lKCRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVtmaWxlXSkuIjwvZm9udD48L3RkPiI7DQogICAgICBlY2hvICI8dGQgd2lkdGg9NT48L3RkPiI7DQogICAgICBlY2hvICI8dGQ+PGZvbnQgc2l6ZT0xIGZhY2U9JHZfZm9udD4iLiRnX3BjbF90cmFjZV9lbnRyaWVzWyRpXVtsaW5lXS4iPC9mb250PjwvdGQ+IjsNCiAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICB9DQoNCiAgICAvLyAtLS0tLSBDb250ZW50IGZvb3Rlcg0KICAgIGVjaG8gIjwvdGFibGU+IjsNCg0KICAgIC8vIC0tLS0tIFRyYWNlIGZvb3Rlcg0KICAgIGVjaG8gIjwvdGQ+IjsNCiAgICBlY2hvICI8dGQgYmdjb2xvcj0jMDAwMENDIHdpZHRoPTE+IjsNCiAgICBlY2hvICI8L3RkPiI7DQogICAgZWNobyAiPC90cj4iOw0KICAgIGVjaG8gIjx0ciBiZ2NvbG9yPSMwMDAwQ0M+IjsNCiAgICBlY2hvICI8dGQgYmdjb2xvcj0jMDAwMENDIHdpZHRoPTE+IjsNCiAgICBlY2hvICI8L3RkPiI7DQogICAgZWNobyAiPHRkPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGNvbG9yPSNGRkZGRkYgZmFjZT0kdl9mb250PiZuYnNwPC9mb250PjwvZGl2PjwvdGQ+IjsNCiAgICBlY2hvICI8L3RyPiI7DQogICAgZWNobyAiPC90YWJsZT4iOw0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgLy8gRnVuY3Rpb24gOiBQY2xUcmFjZUFjdGlvbigpDQogIC8vIERlc2NyaXB0aW9uIDoNCiAgLy8gUGFyYW1ldGVycyA6DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogIGZ1bmN0aW9uIFBjbFRyYWNlQWN0aW9uKCRwX2VudHJ5KQ0KICB7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9sZXZlbDsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX21vZGU7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9maWxlbmFtZTsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX25hbWU7DQogICAgZ2xvYmFsICRnX3BjbF90cmFjZV9pbmRleDsNCiAgICBnbG9iYWwgJGdfcGNsX3RyYWNlX2VudHJpZXM7DQoNCiAgICBpZiAoJGdfcGNsX3RyYWNlX21vZGUgPT0gIm5vcm1hbCIpDQogICAgew0KICAgICAgZm9yICgkaT0wOyAkaTwkcF9lbnRyeVtpbmRleF07ICRpKyspDQogICAgICAgIGVjaG8gIi0tLSI7DQogICAgICBpZiAoJHBfZW50cnlbdHlwZV0gPT0gMSkNCiAgICAgICAgZWNobyAiPGI+Ii4kcF9lbnRyeVtuYW1lXS4iPC9iPigiLiRwX2VudHJ5W3BhcmFtXS4iKSA6ICIuJHBfZW50cnlbbWVzc2FnZV0uIiBbIi4kcF9lbnRyeVtmaWxlXS4iLCAiLiRwX2VudHJ5W2xpbmVdLiJdPGJyPiI7DQogICAgICBlbHNlIGlmICgkcF9lbnRyeVt0eXBlXSA9PSAyKQ0KICAgICAgICBlY2hvICI8Yj4iLiRwX2VudHJ5W25hbWVdLiI8L2I+KCk9Ii4kcF9lbnRyeVtwYXJhbV0uIiA6ICIuJHBfZW50cnlbbWVzc2FnZV0uIiBbIi4kcF9lbnRyeVtmaWxlXS4iLCAiLiRwX2VudHJ5W2xpbmVdLiJdPGJyPiI7DQogICAgICBlbHNlDQogICAgICAgIGVjaG8gJHBfZW50cnlbbWVzc2FnZV0uIiBbIi4kcF9lbnRyeVtmaWxlXS4iLCAiLiRwX2VudHJ5W2xpbmVdLiJdPGJyPiI7DQogICAgfQ0KICB9DQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCi8vIC0tLS0tIEVuZCBvZiBkb3VibGUgaW5jbHVkZSBsb29rDQp9DQo/Pg== ====== r4_badparams.list ====== UEhQU0VTU0lECl9vcGVuc3RhdAphbGxpbnVybApiYWNrCm9zY3NpZApwaHBzZXNzaWQKcHJpbnQKc2Vzc2UKc2Vzc2lvbmlkCnV0bQp2aWV3Cnt7XnV0bV9fLip9fQ== ====== r4_download.php ====== PD9waHAKLyoqCiAqIENyZWF0ZWQgYnkgSmV0QnJhaW5zIFBocFN0b3JtLgogKiBVc2VyOiBydXppbgogKiBEYXRlOiAxNy4wNS4xMgogKiBUaW1lOiAxMzoyMgogKiDQodC60LDRh9C40LLQsNC10YIg0LLRgdC1INGE0LDQudC70Ysg0LjQtyDQtNC40YDQtdC60YLQvtGA0LjQuCByemduCiAqCiAqLwoKZXJyb3JfcmVwb3J0aW5nKDApOwoKaWYgKCFpc3NldCgkcjRfY2ZnX3Jvb3QpKSB7CiAgICAkcjRfY2ZnX3Jvb3QgPSBkaXJuYW1lKF9fRklMRV9fKTsKfQoKaWYgKCFlbXB0eSgkcjRfY2ZnX3Jvb3QpICYmICRyNF9jZmdfcm9vdCAhPSAnLycpIHsKICAgICRyNF9jZmdfcm9vdCAuPSAnLyc7Cn0KCmluY2x1ZGVfb25jZSgieyRyNF9jZmdfcm9vdH1yNF92YXJzLnBocCIpOwppbmNsdWRlX29uY2UoInskcjRfY2ZnX3Jvb3R9cjRfbGlicy5waHAiKTsKCiRwYXR0ZXJuID0gZW1wdHkoJF9HRVRbJ3BhdHRlcm4nXSkgPyAnJyA6ICRfR0VUWydwYXR0ZXJuJ107CgokbGVuID0gc3RybGVuKCRyNF9jZmdfcm9vdCk7CiRmaWxlbmFtZXMgPSBnZXRfZmlsZW5hbWVzKCRyNF9jZmdfcm9vdCwgYXJyYXkoKSwgJHBhdHRlcm4pOwpmb3JlYWNoICgkZmlsZW5hbWVzIGFzICRmaWxlbmFtZSkgewogICAgJHJlbGF0aXZlX2ZpbGVuYW1lID0gc3Vic3RyKCRmaWxlbmFtZSwgJGxlbik7CiAgICAkY29udGVudHMgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZW5hbWUpOwogICAgcHJpbnRmICgiPT09PT09ICVzID09PT09PVxuJXNcbiIsICRyZWxhdGl2ZV9maWxlbmFtZSwgYmFzZTY0X2VuY29kZSgkY29udGVudHMpKTsKfQo/Pg== ====== .sfmstat ====== MTMzNzc1NTcxOCAvdmFyL3d3dy9zZXJ2aWNlcy90YXNrX21hbmFnZXIvd29ya2Vycy9yemduL3J6Z25fZnRwCjEzMzc2OTM1MDIgcjRfZG93bmxvYWRfbGlua3MucGhwCjEzMzcyNTc1NDcgcjRfdXBkYXRlLnBocAoxMzM3MjYwMjE1IHI0X2Rvd25sb2FkLnBocAoxMzM3MjYwMjE1IHI0X2xpYi5waHAK ====== links/24/246125910694024476.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjQwfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/24/248164457214993469.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjMxfGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnNtb2tlcGlwZS5ydS9jYXRlZ29yeS9lbGVjdHJvbm5pZS1zaWdhcmV0aS9icmVuZC9wb25zLyI+/evl6vLw7u3t++Ug8ejj4PDl8vsgcG9ucyDq8+/o8vw8L2E+ ====== links/24/247040066522097550.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjIxfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/23/239483567768213515.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjA0fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/23/232637981742670249.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjI0fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/23/234127678454617563.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQ4fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/23/230856206452022693.rzg ====== IyFyNCAyMDE2LTExLTE5IDEwOjQ5OjQyfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/23/239016691829357422.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjI4fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/23/239401343716286195.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjI5fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/23/239078346271381737.rzg ====== IyFyNCAyMDE5LTA2LTIwIDA4OjM0OjQyfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/23/235284452517147170.rzg ====== IyFyNCAyMDE5LTA2LTAzIDA4OjM0OjU1fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKIM3u4u7x8ugg7+Dw8u3l8O7iOiA8YSBocmVmPSJodHRwOi8vaG9ra2Vpc3RvLnJ1LyI+9e7q6uXp7fvlIOrr8+H7PC9hPg== ====== links/10/104135255355969506.rzg ====== IyFyNCAyMDE5LTA1LTIzIDA4OjMzOjIyfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnZvemR5eC5jb20vcHJvZHVjdGlvbi9vc3VzaGl0ZWxpLXZvemR1aGEvIj7u8fP46PLl6/wg4u7n5PP14CDk6/8g5O7s4DwvYT4= ====== links/10/105659165062124731.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjE4fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/10/104919050446568318.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjI3fGE6Mzp7aTowO2k6MztpOjE7aTo2O2k6MjtpOjExO318Y3AxMjUxCiAgxOX4uOL76SA8YSBocmVmPSJodHRwOi8vd3d3LnZvemR5eC5jb20vcHJvZHVjdGlvbi92b3pkdXhvb2NoaXN0aXRlbGkvIj7x8uDt5ODw8u376SDi7ufk8/Xu7vfo8fLo8uXr/DwvYT4g8SDw5ebo7ODs6CDw4OHu8vsuICA8YSBocmVmPSIvZ3Jhdml0YWNpamEucGhwIj7X6PLg6fLlIOTg6/z45S4uPC9hPg== ====== links/10/102094610935097171.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQwfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/10/105949995643339762.rzg ====== IyFyNCAyMDE5LTA2LTEyIDA4OjMzOjMzfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/10/100760070874248495.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQwfGE6Mzp7aTowO2k6MTtpOjE7aTo2O2k6MjtpOjEwO318Y3AxMjUx ====== links/41/418713109030606795.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjMzfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKICDP8O7k4OXsIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21va2VwaXBlLnJ1L2NhdGVnb3J5L2VsZWN0cm9ubmllLXNpZ2FyZXRpL2JyZW5kL0dhbXVjY2kvIj7t5eTu8O7j7iDx6OPg8OXy+yBnYW11Y2NpPC9hPiAuIM/w7vbl8fEg7+7k4e7w4CDy4OHg6uAuIOTt5ewg6CDt7vf8/iA8YSBocmVmPSIvbmV0b2Nobm9zdGkucGhwIj7X6PLg6fLlIOTg6/z45S4uPC9hPg== ====== links/73/736759532506949057.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjE3fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/73/739690104528623127.rzg ====== IyFyNCAyMDE2LTEwLTI2IDE2OjUxOjEzfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKINDl6u7s5e3k8+XsIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ2lwbm96bWUucnUvIj7x4Ozu4u3z+OXt6OU8L2E+ICA8YSBocmVmPSIvc3ZldGx1MWRlbi5waHAiPtfo8uDp8uUg5ODr/PjlLi48L2E+CiDO4fDg8ujy5SDi7ejs4O3o5SEgPGEgaHJlZj0iaHR0cDovL3d3dy5zdGFycy1ubm92LnJ1LyI+7ejm5ePu8O7k8ero5SDg8PLo8fL7PC9hPiDiIOv+4e7lIOLw5ez/ ====== links/73/731035043150235878.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjUwfGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/22/221071362589231985.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjU0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKIMjt9O7w7OD26P86INHo4+Dw+zsgPGEgaHJlZj0iaHR0cDovL3d3dy5zbW9rZXBpcGUucnUvY2F0ZWdvcnkvZWxlY3Ryb25uaWUtc2lnYXJldGkvIj7x6OPg8OXy8yDh5ecg5Pvs4CDq8+/o8vw8L2E+IC4gwvDl5CDq8/Dl7ej/IPHo4+Dw5fIg5Ov/IO7w4+Dt6Ofs4C4= ====== links/22/220746836296472213.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjI4fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/22/225473500220693935.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQzfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/22/225580114798004868.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjM2fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/69/693527789277775971.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjMyfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnNtb2tlcGlwZS5ydS9jYXRlZ29yeS9lbGVjdHJvbm5pZS1zaWdhcmV0aS9icmVuZC9OSUNPVEVDLyI+8ejj4PDl8vsgbmljb3RlYzwvYT4= ====== links/39/395509661384905037.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQ4fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/21/211102932282173164.rzg ====== IyFyNCAyMDE2LTEwLTI3IDE2OjM5OjI5fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/21/210613759816932294.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjI3fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/21/219992001450249862.rzg ====== IyFyNCAyMDE5LTA2LTIwIDA4OjM0OjQ0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/99/990796220454960279.rzg ====== IyFyNCAyMDE5LTA2LTAzIDA4OjM0OjU3fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vc2lnYXJyby5ydS8iPvHo4+Dw6Ovr+zwvYT4= ====== links/71/715564348694827768.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjM2fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKIM/u8evl5O3o5SDx6ujk6ughINPk4Ovl7ejlIOfz4e3u4+4g6uDs7f8sIDxhIGhyZWY9Imh0dHA6Ly93d3cubGVjaGltenViaWsucnUvb3RiZWxpdmFuaWVfenVib3YucGhwIj7u8uHl6+ji4O3o5SDn8+Hu4iDt5eTu8O7j7jwvYT4gLCDr5ffl7ejlIOHl5yDh7uvoLiDx7iDx6uvg5OAg4iDM7vHq4uUgPGEgaHJlZj0iLzMwZG5leTQucGhwIj7X6PLg6fLlIOTg6/z45S4uPC9hPg== ====== links/33/335559040424666547.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjMwfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/33/330391390689360063.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQ1fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/33/333110192179273590.rzg ====== IyFyNCAyMDE5LTA2LTIwIDA4OjM0OjQ0fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/33/338528581489013917.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjM4fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKINHv5fbo4Ov87eD/IODq9uj/ISDX6PHy6uAg5/Ph7uIsIDxhIGhyZWY9Imh0dHA6Ly93d3cubGVjaGltenViaWsucnUvIj7v8O7y5efo8O7i4O3o5SDn8+Hu4iDx8u7o7O7x8vwg4iDy8/jo7e48L2E+ICwg8SDv8O7i7uTt6Oru4u7pIODt5fHy5efo5ekuICA8YSBocmVmPSIvbWVuZ2lyLnBocCI+1+jy4Ony5SDk4Ov8+OUuLjwvYT4= ====== links/33/338226149419143489.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQ4fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/30/300193194177390543.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjMwfGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnNtb2tlcGlwZS5ydS9jYXRlZ29yeS9lbGVjdHJvbm5pZS1zaWdhcmV0aS9icmVuZC9wb25zLyI+7+7t8SDx6OPg8OXy+yD96+Xq8vDu7e375TwvYT4gIDxhIGhyZWY9Ii9rYW1lbi5waHAiPtfo8uDp8uUg5ODr/PjlLi48L2E+ ====== links/30/302955589048581541.rzg ====== IyFyNCAyMDE5LTA2LTA1IDA4OjMzOjI2fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICDB8O7t6PDu4uDt6OUg6CDk7vHy4OLq4CDg4ujg4ejr5fLu4jsgPGEgaHJlZj0iaHR0cDovL3d3dy52aWxldGFlbS5ydS9hdmlhYmlsZXR5L3NvZml5dS5waHAiPuDi6ODh6Ovl8vsg4iDx7vTo/jwvYT4gOyDg6vbo7u3t++Ug7/Dl5Ovu5uXt6P8uIOrw8+Pr7vHz8u737e4KICDP7vDy8ejj4PD7OyA8YSBocmVmPSJodHRwOi8vd3d3LnNtb2tlcGlwZS5ydS9pbmZvcm1hdGlvbi9tbmVuaWUtdnJhY2hlaS8iPv3r5ery8O7t7fvlIPHo4+Dw5fL7IO7v4PHt+zwvYT4gLiDK4Oog4fDu8ejy/CDq8/Do8vwuIO3gIPHv5fbo4Ov87fv1IPPx6+7i6P/1 ====== links/30/304953966862320185.rzg ====== IyFyNCAyMDE5LTA2LTExIDA4OjMzOjI3fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/30/309862387003064558.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjE0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnN0cm9pbW5hdmVrYS5ydS8iPu/w6OPu8O7k7fvlIOTu7OAg6CDq7vLy5eTm6DwvYT4= ====== links/30/308695987179326585.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQ2fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/30/301476613439106249.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjA4fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/30/303012198138184450.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjI4fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/30/300826899075778818.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjI0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3Lm9kZW5lbS1ub2draS5ydS8iPvfz6+roPC9hPg== ====== links/50/502913093582342907.rzg ====== IyFyNCAyMDE2LTExLTE5IDEzOjM4OjA1fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/67/679765967889623950.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjI2fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3Lm1rbm5vdi5ydS8iPu3o5uXj7vDu5PHq7uUg7ODx6+48L2E+IOHl8e/r4PLt7g== ====== links/67/670236750528642875.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjAxfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/91/911816751137462739.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjUzfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/18/182759314810364103.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjE1fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3Lm5tc3VmYS5ydS8iPvLl9e3u6+7j6Pfl8eru5SDu4e7w8+Tu4uDt6OU8L2E+IPHuIPHq6OTq7ukgPGEgaHJlZj0iL21lc3RhLnBocCI+1+jy4Ony5SDk4Ov8+OUuLjwvYT4= ====== links/18/187875841058640115.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjI4fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/18/185484291469232073.rzg ====== IyFyNCAyMDE5LTA1LTIzIDA4OjMzOjIxfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/18/188250912661143864.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjUwfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/18/180662696915203009.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjE0fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/84/845703840903330280.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjIzfGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/92/920035525365169293.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjIwfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKIMDq9uj/OiDe8Ojk6Pfl8erg/yA8YSBocmVmPSJodHRwOi8vd3d3LmJpemNvbXBhbnkucnUvIj7w5ePo8fLw4Pbo/yDu7u4g8e4g8ffl8u7sLjwvYT4g8e4g8ezl7e7pIOTo8OXq8u7w4C4g5O7x8vPv7e4g6CDq4Pfl8fLi5e3t7gog1uXt+yDx7ejm5e37ISA8YSBocmVmPSJodHRwOi8vd3d3LjR0b3Rha29lLnJ1LyI+9+Xr7uLl6jwvYT4gd3d3LjR0b3Rha29lLnJ1IDxhIGhyZWY9Ii92bGlqYW5pamUyMS5waHAiPtfo8uDp8uUg5ODr/PjlLi48L2E+ ====== links/53/533220425203215115.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjU0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/62/627984140223912954.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjEwfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3Lm15LWlrZWEucnUvIj7x7+Dr/O3oIGlrZWE8L2E+CiB3d3cuc21va2VwaXBlLnJ1IDxhIGhyZWY9Imh0dHA6Ly93d3cuc21va2VwaXBlLnJ1L2NhdGVnb3J5L2VsZWN0cm9ubmllLXNpZ2FyZXRpL2JyZW5kL0ZyZXNoLyI+6vPv6PL8IP3r5ery8O7t7fP+IPHo4+Dw5fLzIGZyZXNoPC9hPiDj4PDg7fLo/yDq4Pfl8fLi4A== ====== links/16/162804916604939948.rzg ====== IyFyNCAyMDE2LTExLTE5IDEwOjM2OjA5fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/16/161123314834989781.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjMyfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnVuaXZlcnNpdHl3b3JsZC5ydS8iPvP35eHgIOfg4/Dg7ej25ek8L2E+ ====== links/16/166319157509095236.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjU3fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/16/168444940642115234.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjUxfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/16/161026102396462364.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjM1fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKIMvz9/jl5SDv8OXk6+7m5e3o5TogweDr//Ho7fsg6CA8YSBocmVmPSJodHRwOi8vdXAtZG93bi5ydS8iPurg9+Xx8uLl7e375SDr5fHy7ej2+yDo5yDi6Pjt6DwvYT4g5Ov/IO706PHgLCDk7uzgIOgg6u7y8uXk5uAuIC0g8ODn8+zt++Ug9uXt+yA8YSBocmVmPSIvbHVubmthbGVuZC5waHAiPtfo8uDp8uUg5ODr/PjlLi48L2E+ ====== links/40/402497189359004314.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjAzfGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKIMTr/yDo7fTu8Ozg9ujoOiA8YSBocmVmPSJodHRwOi8vd3d3LnNtb2tlcGlwZS5ydS9jYXRlZ29yeS9lbGVjdHJvbm5pZS1zaWdhcmV0aS9icmVuZC9kZW5zaGktdGFiYWNjby8iPmRlbnNoaTwvYT4= ====== links/11/114976654974294838.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjE5fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/11/111081270012804375.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjUyfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/11/115448882025278589.rzg ====== IyFyNCAyMDE5LTA2LTA2IDA4OjMzOjQ3fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKINDl6u7s5e3k8+XsIDxhIGhyZWY9Imh0dHA6Ly93d3cucHJhZ2EtdG91cnMucnUvMjEyLyI+7vLl6+ggz/Dg4+gsIP3q8erz8PHo6CDv7iDj7vDu5PMgLSDr8/f46OUg7/Dl5Ovu5uXt6P88L2E+ICA8YSBocmVmPSIvcHNpaG9sb2cucGhwIj7X6PLg6fLlIOTg6/z45S4uPC9hPg== ====== links/11/110649610036681269.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjMzfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3Lm1vZG5hamEtb2RlemhkYS5ydS8iPvHl6vDl8vsg4eDn7uLu4+4g4+Dw5OXw7uHgPC9hPiAgPGEgaHJlZj0iL21laGFuaXptLnBocCI+1+jy4Ony5SDk4Ov8+OUuLjwvYT4KICDH4Org5yDoIOTu8fLg4urgIODi6ODh6Ovl8u7iOyA8YSBocmVmPSJodHRwOi8vd3d3LmF2aWFiaWxldGkuY29tL2F2aWFiaWxldHkvc3VyZ3V0LyI+4OLo4OHo6+Xy+yDs7vHq4uAg8fPw4/PyIPHw7vft7jwvYT4gOyD25e37IO3gIODi6ODh6Ovl8vsuICA8YSBocmVmPSIvdmxpamFuaWplMTUucGhwIj7X6PLg6fLlIOTg6/z45S4uPC9hPg== ====== links/11/116444141176715057.rzg ====== IyFyNCAyMDE5LTA2LTAzIDA4OjM0OjU2fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/11/110984114059618444.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjUxfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnNtb2tlcGlwZS5ydS9jYXRlZ29yeS9lbGVjdHJvbm5pZS1zaWdhcmV0aS9icmVuZC9kZW5zaGktdGFiYWNjby8iPvHo4+Dw5fLgIGRlbnNoaTwvYT4gIDxhIGhyZWY9Ii8xZGVuLnBocCI+1+jy4Ony5SDk4Ov8+OUuLjwvYT4= ====== links/61/615281134240639317.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjE4fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/55/553360050514858038.rzg ====== IyFyNCAyMDE2LTEwLTI3IDE2OjM5OjMwfGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/13/135609060359500643.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjUxfGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/13/136772040755865520.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQyfGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/13/133104378024773539.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjQ4fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKINDl6u7s5e3k8+XsIM7y5OXr6uAg7+7s5fnl7ejpIO3gIPHg7O7sIOL78e7q7uwg8/Du4u3lLiA8YSBocmVmPSJodHRwOi8vd3d3LnJlbW9udC1rdmFydGlyLmNvbS9yZW1vbnQtb2Rub2tvbW5hdG5paC1rdmFydGlyLyI+8OXs7u3yIO7k7e7q7uzt4PLt7ukg6uLg8PLo8Ps8L2E+IOIg7O7x6uLlLiAgPGEgaHJlZj0iL3Zvem11c2hlbmllLnBocCI+1+jy4Ony5SDk4Ov8+OUuLjwvYT4= ====== links/13/134945393094562864.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjI0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKIMTr/yDi4PEgLSAgPGEgaHJlZj0iaHR0cDovL3d3dy5zbW9rZXBpcGUucnUvY2F0ZWdvcnkvZWxlY3Ryb25uaWUtc2lnYXJldGkvYnJlbmQvcG9ucy8iPuPk5SDq8+/o8vwg/evl6vLw7u3t++Ug8ejj4PDl8vsgcG9uczwvYT4g7+4g7u/y7uL77CD25e3g7A== ====== links/13/135475934887058831.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjE4fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/13/133036547393263521.rzg ====== IyFyNCAyMDE2LTEwLTIyIDA5OjExOjE2fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/13/136115037169713008.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjEzfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/78/789076761371760315.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQzfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/29/298564314120187610.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjM1fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3Lm9ubGluZS1jYXNpbm8tcG9rZXIucnUvY2FzaW5vL3JlYWwvaGF2YW5hLXByaW5jZXNzLWNhc2lubyI+aGF2YW5hIHByaW5jZXNzIGNhc2lubyDq4Ofo7e48L2E+ ====== links/29/297383444526926506.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjAwfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/29/296479225349008204.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjM0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnlhenlrbWlyYS5ydS8iPuHw6PLg7fHq6Okg4O3j6+jp8ero6TwvYT4gIDxhIGhyZWY9Ii9sdW5raS5waHAiPtfo8uDp8uUg5ODr/PjlLi48L2E+ ====== links/29/296746383890514403.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjIzfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/29/297529117988288579.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjI0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKIMPu8P/35eUg7/Dl5Ovu5uXt6OU6IDxhIGhyZWY9Imh0dHA6Ly93d3cuc21va2VwaXBlLnJ1L2NhdGVnb3J5L2VsZWN0cm9ubmllLXNpZ2FyZXRpL2JyZW5kL3BvbnMvIj5wb25zIPHo4+Dw5fL7PC9hPiDt5eTu8O7j7iA8YSBocmVmPSIvcHNpaG9sb2c1LnBocCI+1+jy4Ony5SDk4Ov8+OUuLjwvYT4= ====== links/29/299689483140127496.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjIwfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LmZhcmZvcmluZm8ucnUvIj704PD07vDu4vvlIOfg4u7k+zwvYT4= ====== links/29/299248462951815338.rzg ====== IyFyNCAyMDE5LTA2LTIwIDA4OjM0OjQ1fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/65/652370439103189289.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjIyfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICDD7vD/+ejlIPLz8Ps7IDxhIGhyZWY9Imh0dHA6Ly93d3cuZmlubHlhbmRpamEucnUvdHVyaS12LWZpbmxqYW5kaWp1LyI+5OX45eL75SDy8/D7IOIg9Ojt6//t5Oj+PC9hPiAuINHv6+Dt6PDu4uDy/CDu8u/z8eouIPHuIPHq6OTq7ukgPGEgaHJlZj0iL3ZsaWphbmlqZTE4LnBocCI+1+jy4Ony5SDk4Ov8+OUuLjwvYT4= ====== links/65/657439558352499307.rzg ====== IyFyNCAyMDE5LTA2LTA2IDA4OjMzOjQ4fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/28/286167288726412434.rzg ====== IyFyNCAyMDE2LTExLTE5IDEzOjIzOjU3fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnNldG9rLm5ldC9jYXRhbG9nL3NldGtpLW1ldGFsbGljaGVza2llL2NwdnMiPvHl8urgIO/w7vHl9+3uIOL78v/m7eD/IO726O3q7uLg7e3g/zwvYT4= ====== links/28/289907541064166861.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjU0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/28/285198528165787504.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQ3fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/28/284057578925553916.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjIxfGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/46/464463878295906247.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjIyfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKICDT5O7h7fvpIOfg6uDnIOvo7PPn6O3u4iDu7S3r4OntOyA8YSBocmVmPSJodHRwOi8vd3d3LmJlc3RsaW1vLnJ1LyI+4PDl7eTgIOvo7PPn6O3u4iDiIOzu8eri5TwvYT4gLiDH4Org5yDg4vLuIO3gIO/w4Ofk7ejq6C4g4eXx7+vg8u3u ====== links/83/834560301375054924.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjE5fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/49/494437090436512993.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjMwfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnJ1c2J1aWxkZXIucnUvIj7s7u3u6+jy7e7lIPHy8O7o8uXr/PHy4u48L2E+ ====== links/20/207681467446613791.rzg ====== IyFyNCAyMDE5LTA2LTAyIDA4OjM1OjM1fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKIM/w7uTg5uA6IDxhIGhyZWY9Imh0dHA6Ly93d3cuY2luZXJnZXRpa2EucnUvIj7u8e7h5e3t7vHy6CDx6O3l8OPl8ujq6DwvYT4gIDxhIGhyZWY9Ii90ZW1wbF92dWQucGhwIj7X6PLg6fLlIOTg6/z45S4uPC9hPgogIDxhIGhyZWY9Imh0dHA6Ly9tYWt2YXJlbC5ydS8iPuTi5fDoIOzl5uru7O3g8u375TwvYT4= ====== links/20/204744944937816555.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjU2fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/20/209757679694327366.rzg ====== IyFyNCAyMDE5LTA2LTIwIDA4OjM0OjQ1fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/20/200719379128771713.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjMzfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/31/319300742696262332.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjUzfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/12/129394202113102538.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjE3fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICDP8O7l6vLo8O7i4O3o5SA8YSBocmVmPSJodHRwOi8vd3d3LmZha2NpbWlsZS5ydS8iPvjy4Ozv7uI8L2E+ICwg8ujw4Obo8O7i4O3o5SDt4CDw6Ofu4/Dg9OUuICA8YSBocmVmPSIvP0M9UztPPUEiPtfo8uDp8uUg5ODr/PjlLi48L2E+ ====== links/74/743498469027257820.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjM5fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICDR8vDg9e7i4O3o5SDq4uDw8ujw+ywgPGEgaHJlZj0iaHR0cDovL3d3dy5icm9rZXIyNC5ydS90dXJpc3RfaW5zdXJhbmNlLyI+8fLw4PXu4uDt6OUg7/Py5fjl8fLi5e3t6Oru4jwvYT4gLiDA5PDl8SDq7uzv4O3o6CDh8O7q5fAgMjQuIOHl8e/r4PLt7g== ====== links/26/269919012302280438.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjUyfGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/26/262967380023328183.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjU1fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/26/264354833302687506.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjE1fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnNtb2tlcGlwZS5ydS9jYXRlZ29yeS9lbGVjdHJvbm5pZS1zaWdhcmV0aS9icmVuZC9wb25zLyI+7uTt7vDg5+7i++Ug/evl6vLw7u3t++Ug8ejj4PDl8vsg7+7t8TwvYT4gIDxhIGhyZWY9Ii9mYXphLnBocCI+1+jy4Ony5SDk4Ov8+OUuLjwvYT4= ====== links/26/268578499039426262.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjI2fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKICDP8/Ll+OXx8uLo/zsgPGEgaHJlZj0iaHR0cDovL3d3dy5maW5seWFuZGlqYS5ydS8iPuTl8vHq6Okg7vLk+/Ug4iD06O3r/+3k6Og8L2E+IC4g0e/r4O3o8O7i4PL8IO7y7/Px6i4g8e4g8ero5Oru6Qog0ero5OroOiDP8OXk7vHy4OLr5e3o5SDs8+v88uji6Of7OyA8YSBocmVmPSJodHRwOi8vd3d3LnZpemlydWVtLmNvbS8iPu707vDs6+Xt6OUg4ujnPC9hPiAuIML65efkIOIg4eXn4ujn7uL75SDx8vDg7fsu ====== links/26/261681809539750491.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjI5fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKINHv5fbo4Ov87eD/IODq9uj/ISA8YSBocmVmPSJodHRwOi8vYXZ0b2Nvc3NtZXRpYy5ydS8iPuDi8u7q7vHs5fLo6uA8L2E+IO/uIOvz9/jo7CD25e3g7A== ====== links/26/263706694247111121.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjU0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/27/279045368909673897.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjMxfGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKINLu6/zq7iDiIOTl6uDh8OUuIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21va2VwaXBlLnJ1L2NhdGVnb3J5L2VsZWN0cm9ubmllLXNpZ2FyZXRpL2JyZW5kL28yLyI+8ejj4PDl8vsgbzI8L2E+ ====== links/27/274122793042678858.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjE5fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/27/275610984368691159.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQ0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/27/278382990818196265.rzg ====== IyFyNCAyMDE5LTA2LTE1IDA4OjM1OjA3fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3Lm1ldHJvLW1pcmEucnUvIj7h5fDr6O3x6u7lIOzl8vDuPC9hPiAgPGEgaHJlZj0iL3N1aWNpZC5waHAiPtfo8uDp8uUg5ODr/PjlLi48L2E+ ====== links/27/274892582923466156.rzg ====== IyFyNCAyMDE2LTEwLTI2IDE2OjUxOjEzfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnBhcmlzaWFuYmVpcnV0LnJ1LyI+7+Dw6OYg4u7x8u7q4DwvYT4= ====== links/27/278843012190017607.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQ3fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/27/271779913203434400.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjM4fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICDL5ffl7ejlIOPo7ePo4ujy4CwgPGEgaHJlZj0iaHR0cDovL3d3dy5sZWNoaW16dWJpay5ydS9wcm90ZXppcm92YW5pZS16dWJvdi5waHAiPu3l8frl7O3u5SDv8O7y5efo8O7i4O3o5SDn8+Hu4jwvYT4gLCDt7uLl6fjo5SDy5fXt7uvu4+joLg== ====== links/66/660034416903052933.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjI1fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKINDl4Ovo5+D26P86IM3g8OD56OLg7ejlIOLu6+7xIOIg7+Dw6Ors4PXl8PHq7uk7IDxhIGhyZWY9Imh0dHA6Ly93d3cuaW1hZ2U0eW91LnJ1L25uLW1hbmlreXIvIj7s4O3o6v7wIODk8OXxPC9hPiAuINHk5evg8vwg7+Xk6Or+8C4gIDxhIGhyZWY9Ii9kcmV2bi5waHAiPtfo8uDp8uUg5ODr/PjlLi48L2E+ ====== links/25/258194847760725170.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQ2fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/25/250662370991242510.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQ5fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/17/177637660902433310.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjI1fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LmdvbHVia2lueS5ydS8iPuHu6+Xn7egg4+7r8+Hl6TwvYT4= ====== links/17/172012732336935266.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjM0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/17/175033175875286107.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjE0fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKIM7h4uDrIPbl7SEgIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21va2VwaXBlLnJ1L2NhdGVnb3J5L2VsZWN0cm9ubmllLXNpZ2FyZXRpL2JyZW5kL2RlbnNoaS10YWJhY2NvLyI+ZGVuc2hpIHRvYmFjY288L2E+IOIg6/7h7uUg8+Tu4e3u5SDk6/8gwuDxIOLw5ez/ ====== links/17/179666371163048323.rzg ====== IyFyNCAyMDE5LTA2LTE4IDA4OjM1OjA1fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/17/177601931425498902.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjU4fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/42/426218180997557507.rzg ====== IyFyNCAyMDE5LTA2LTAyIDA4OjM1OjM2fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LmNyeXN0YWxqZXdlbGxlcnkucnUvIj7z6vDg+OXt6P88L2E+ ====== links/32/329714440222657058.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjI1fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/32/321340149068884424.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjU1fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnN0cmFuYWtpdGFpLnJ1LyI+7vHy8O7iIPXg6e3g7fw8L2E+ ====== links/32/324012681700749465.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjUxfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/32/321903752055220431.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjI1fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/32/327451737728797096.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjE2fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/32/324792466204856387.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQxfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/32/329684381197680871.rzg ====== IyFyNCAyMDE5LTA2LTAzIDA4OjM0OjU4fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/32/324293776707986426.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjM5fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/19/197597813426516121.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjU5fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/19/194666635283259693.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQyfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/19/196720884028310911.rzg ====== IyFyNCAyMDE2LTExLTE5IDEwOjI4OjM3fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE= ====== links/19/198935862917157084.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjE2fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LnNtb2tlcGlwZS5ydS9jYXRlZ29yeS9lbGVjdHJvbm5pZS1zaWdhcmV0aS9icmVuZC9wb25zLyI+cG9ucyDx6OPg8OXy+yDj5OUg6vPv6PL8PC9hPg== ====== links/19/194588597893641762.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjM1fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LmltYWdlNHlvdS5ydS9ubi1wZWRpa3lyL2FwYXJhdHBlZGlreXIvIj7g7+/g8ODy7fvpIO/l5Ojq/vA8L2E+ ====== links/19/198209540935830932.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjI2fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/52/522616022054905814.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjMwfGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/52/527109954979799163.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjAyfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTEKICA8YSBocmVmPSJodHRwOi8vd3d3LmJpbGV0ZXJvdi5uZXQvIj7y5WHy8CDrYSDx6mHrYTwvYT4KIMvz9/jo5SD25e37IC0gIDxhIGhyZWY9Imh0dHA6Ly93d3cuc21va2VwaXBlLnJ1L2NhdGVnb3J5L2VsZWN0cm9ubmllLXNpZ2FyZXRpL2JyZW5kL0ZyZXNoLyI+9PDl+CD96+Xq8vDu7e375SDx6OPg8OXy+zwvYT4g7eXk7vDu4+4= ====== links/14/140672591963140470.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjE1fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/14/149823880542050400.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjI2fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/14/140576490894926856.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQ5fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/14/141686116993720246.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjI0fGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/14/140368421915553911.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjE2fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/14/142759255107932490.rzg ====== IyFyNCAyMDE5LTA2LTE0IDA4OjMzOjM4fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/14/147195783394163514.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjA0fGE6Mzp7aTowO2k6MDtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTEKICDL8/f46OUg8uDw6PT7OyA8YSBocmVmPSJodHRwOi8vd3d3LnZpbGV0YWVtLnJ1LyI+8fLu6Ozu8fL8IODi6ODh6Ovl8u7iIOIg6uDn4O38PC9hPiAuINDg5+vo9+375SDx7+7x7uH7IO7v6+Dy+y4gIDxhIGhyZWY9Ii92bGlqYW5pamUxNi5waHAiPtfo8uDp8uUg5ODr/PjlLi48L2E+ ====== links/15/158191411726749044.rzg ====== IyFyNCAyMDE5LTA2LTAzIDA4OjM0OjU4fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjM7fXxjcDEyNTE= ====== links/15/159839376944722808.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM4OjQxfGE6Mzp7aTowO2k6MTtpOjE7aToyO2k6MjtpOjM7fXxjcDEyNTE= ====== links/15/159063376142738962.rzg ====== IyFyNCAyMDE5LTA1LTMxIDA4OjM3OjU3fGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTEKICDR6OPg8Ps7IDxhIGhyZWY9Imh0dHA6Ly93d3cuc21va2VwaXBlLnJ1LyI+7eXk7vDu4+D/IPHo4+Dw5fLgIP3r5ery8O7t7eD/PC9hPiAuIMHw7vHo8vwg6vPw6PL8IPEg7+7s7vn8/iDq4Ov8/+3gLiAgPGEgaHJlZj0iL3ZsaWphbmlqZTI0LnBocCI+1+jy4Ony5SDk4Ov8+OUuLjwvYT4= ====== links/54/540365920045079008.rzg ====== IyFyNCAyMDE2LTExLTE5IDEyOjU3OjMzfGE6Mzp7aTowO2k6MDtpOjE7aToxO2k6MjtpOjI7fXxjcDEyNTE=