murano-deployment/ExecutionPlan/SqlServerAlwaysOnAvailabili.../ConfigureEnvironmentForAOAG...

19 lines
23 KiB
JSON

{
"Commands": [
{
"Name": "Enable-TrustedHosts",
"Arguments": {}
},
{
"Name": "New-SharedFolderForAOAG",
"Arguments": {
"PrimaryNode": "$primaryNode"
}
}
],
"Scripts": [
"SW1wb3J0LU1vZHVsZSBDb3JlRnVuY3Rpb25zIC1Gb3JjZQoKCmZ1bmN0aW9uIFNob3ctSW52b2NhdGlvbkluZm8gewogICAgcGFyYW0gKAogICAgICAgICRJbnZvY2F0aW9uLAogICAgICAgIFtTd2l0Y2hdICRFbmQKICAgICkKCiAgICBpZiAoJEVuZCkgewogICAgICAgIFdyaXRlLUxvZ0RlYnVnICI8L2Z1bmN0aW9uIG5hbWU9JyQoJEludm9jYXRpb24uTXlDb21tYW5kLk5hbWUpJz4iCiAgICB9CiAgICBlbHNlIHsKICAgICAgICBXcml0ZS1Mb2dEZWJ1ZyAiPGZ1bmN0aW9uIG5hbWU9JyQoJEludm9jYXRpb24uTXlDb21tYW5kLk5hbWUpJz4iCiAgICAgICAgV3JpdGUtTG9nRGVidWcgIjxwYXJhbT4iCiAgICAgICAgZm9yZWFjaCAoJFBhcmFtZXRlciBpbiAkSW52b2NhdGlvbi5NeUNvbW1hbmQuUGFyYW1ldGVycykgewogICAgICAgICAgICBmb3JlYWNoICgkS2V5IGluICRQYXJhbWV0ZXIuS2V5cykgewogICAgICAgICAgICAgICAgJFR5cGUgPSAkUGFyYW1ldGVyWyRLZXldLlBhcmFtZXRlclR5cGUuRnVsbE5hbWUKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRWYWx1ZSBpbiAkSW52b2NhdGlvbi5Cb3VuZFBhcmFtZXRlcnNbJEtleV0pIHsKICAgICAgICAgICAgICAgICAgICBXcml0ZS1Mb2dEZWJ1ZyAiWyRUeXBlXSAkS2V5ID0gJyRWYWx1ZSciCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgV3JpdGUtTG9nRGVidWcgIjwvcGFyYW0+IgogICAgfQp9CgoKJFRyYXBIYW5kbGVyID0gewogICAgV3JpdGUtTG9nRXJyb3IgQCgiPGV4Y2VwdGlvbj4iLCAkXykgLUVudGlyZU9iamVjdAogICAgV3JpdGUtTG9nRXJyb3IgIjwvZXhjZXB0aW9uPiIKICAgIGJyZWFrCn0KCgp0cmFwIHsKICAgICYkVHJhcEhhbmRsZXIKfQoKJEVycm9yQWN0aW9uUHJlZmVyZW5jZSA9ICdTdG9wJwoKCjwjCiMgVXNhZ2UgZXhhbXBsZSBmb3IgU2hvdy1JbnZvY2F0aW9uSW5mbwoKZnVuY3Rpb24gTXlGdW5jdGlvbiB7CiAgICBwYXJhbSAoCiAgICAgICAgW1N0cmluZ10gJFZhbHVlMSwKICAgICAgICBbU3RyaW5nXSAkVmFsdWUyLAogICAgICAgIFtJbnRdICRJbnQxCiAgICApCiAgICBiZWdpbiB7CiAgICAgICAgU2hvdy1JbnZvY2F0aW9uSW5mbyAkTXlJbnZvY2F0aW9uCiAgICB9CiAgICBlbmQgewogICAgICAgIFNob3ctSW52b2NhdGlvbkluZm8gJE15SW52b2NhdGlvbiAtRW5kCiAgICB9CiAgICBwcm9jZXNzIHsKICAgICAgICB0cmFwIHsKICAgICAgICAgICAgJiRUcmFwSGFuZGxlcgogICAgICAgIH0KICAgICAgICAjIE1haW4gY29kZSBoZXJlCiAgICB9Cn0KIz4K",
"CnRyYXAgewogICAgJiRUcmFwSGFuZGxlcgp9CgpmdW5jdGlvbiBJbnN0YWxsLVNxbFNlcnZlclBvd2VyU2hlbGxNb2R1bGUgewogICAgcGFyYW0gKAogICAgICAgIFtTdHJpbmddICRTZXR1cFJvb3QgPSAnJwogICAgKQogICAgYmVnaW4gewogICAgICAgIFNob3ctSW52b2NhdGlvbkluZm8gJE15SW52b2NhdGlvbgogICAgfQogICAgZW5kIHsKICAgICAgICBTaG93LUludm9jYXRpb25JbmZvICRNeUludm9jYXRpb24gLUVuZAogICAgfQogICAgcHJvY2VzcyB7CiAgICAgICAgdHJhcCB7CiAgICAgICAgICAgICYkVHJhcEhhbmRsZXIKICAgICAgICB9CgogICAgICAgIGlmICgoR2V0LU1vZHVsZSBTUUxQUyAtTGlzdEF2YWlsYWJsZSkgLW5lICRudWxsKSB7CiAgICAgICAgICAgIFdyaXRlLUxvZyAiTW9kdWxlIFNRTFNQIGFscmVhZHkgaW5zdGFsbGVkLiIKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgfQoKICAgICAgICBpZiAoJE11cmFub0ZpbGVTaGFyZSAtZXEgJycpIHsKICAgICAgICAgICAgJE11cmFub0ZpbGVTaGFyZSA9IFtFbnZpcm9ubWVudF06OkdldEVudmlyb25tZW50VmFyaWFibGUoJ011cmFub0ZpbGVTaGFyZScpCiAgICAgICAgICAgIGlmICgkTXVyYW5vRmlsZVNoYXJlIC1lcSAnJykgewogICAgICAgICAgICAgICAgdGhyb3coIlVuYWJsZSB0byBmaW5kIE11cmFub0ZpbGVTaGFyZSBwYXRoLiIpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkU2V0dXBSb290IC1lcSAnJykgewogICAgICAgICAgICAkU2V0dXBSb290ID0gW0lPLlBhdGhdOjpDb21iaW5lKCRNdXJhbm9GaWxlU2hhcmUsICdQcmVyZXF1aXNpdGVzXFNRTCBTZXJ2ZXJcVG9vbHMnKQogICAgICAgIH0KICAgICAgICAKICAgICAgICAkRmlsZUxpc3QgPSBAKAogICAgICAgICAgICAnU1FMU3lzQ2xyVHlwZXMubXNpJywKICAgICAgICAgICAgJ1NoYXJlZE1hbmFnZW1lbnRPYmplY3RzLm1zaScsCiAgICAgICAgICAgICdQb3dlclNoZWxsVG9vbHMubXNpJwogICAgICAgICkKCiAgICAgICAgZm9yZWFjaCAoJE1zaUZpbGUgaW4gJEZpbGVMaXN0KSB7CiAgICAgICAgICAgIFdyaXRlLUxvZyAiVHJ5aW5nIHRvIGluc3RhbGwgJyRNc2lGaWxlJyAuLi4iCiAgICAgICAgICAgICRNc2lQYXRoID0gSm9pbi1QYXRoICRTZXR1cFJvb3QgJE1zaUZpbGUKICAgICAgICAgICAgaWYgKFtJTy5GaWxlXTo6RXhpc3RzKCRNc2lQYXRoKSkgewogICAgICAgICAgICAgICAgV3JpdGUtTG9nICJTdGFydGluZyBtc2lleGUgLi4uIgogICAgICAgICAgICAgICAgJFJlc3VsdCA9IEV4ZWMgLUZpbGVQYXRoICJtc2lleGVjLmV4ZSIgLUFyZ3VtZW50TGlzdCBAKCcvaScsICJgIiRNc2lQYXRoYCIiLCAnL3F1aWV0JykgLVBhc3NUaHJ1CiAgICAgICAgICAgICAgICBpZiAoJFJlc3VsdC5FeGl0Q29kZSAtbmUgMCkgewogICAgICAgICAgICAgICAgICAgIHRocm93ICgiSW5zdGFsbGF0aW9uIG9mIE1TSSBwYWNrYWdlICckTXNpUGF0aCcgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAnJCgkUmVzdWx0LkV4aXRDb2RlKSciKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgV3JpdGUtTG9nICJGaWxlICckTXNpUGF0aCcgbm90IGZvdW5kLiIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKCgpmdW5jdGlvbiBJbnN0YWxsLVNxbFNlcnZlckZvckFPQUcgewogICAgcGFyYW0gKAogICAgICAgICMgUGF0aCB0byBmb2xkZXIgd2hlcmUgbXNpIGZpbGVzIGZvciBhZGRpdGlvbmFsIFNRTCBmZWF0dXJlcyBhcmUgbG9jYXRlZAogICAgICAgIFtTdHJpbmddICRTZXR1cFJvb3QgPSAnJywKCiAgICAgICAgIyBQYXRoIHRvIGZvbGRlciB3aGVyZSBtc2kgZmlsZXMgZm9yIGFkZGl0aW9uYWwgU1FMUFMgbW9kdWxlIGFyZSBsb2NhdGVkCiAgICAgICAgW1N0cmluZ10gJFNxbHBzU2V0dXBSb290ID0gJycsCgogICAgICAgIFtTdHJpbmddICRNdXJhbm9GaWxlU2hhcmUgPSAnJywKCiAgICAgICAgIyAoUkVRVUlSRUQpIERvbWFpbiBuYW1lCiAgICAgICAgW1N0cmluZ10gJFNRTFNlcnZpY2VVc2VyRG9tYWluID0gJ2ZjLWFjbWUubG9jYWwnLAoKICAgICAgICAjIChSRVFVSVJFRCkgVXNlciBuYW1lIGZvciB0aGUgYWNjb3VudCB3aGljaCB3aWxsIGJlIHVzZWQgYnkgU1FMIHNlcnZpY2UKICAgICAgICBbU3RyaW5nXSAkU1FMU2VydmljZVVzZXJOYW1lID0gJ0FkbWluaXN0cmF0b3InLAoKICAgICAgICAjIChSRVFVSVJFRCkgUGFzc3dvcmQgZm9yIHRoYXQgdXNlcgogICAgICAgIFtTdHJpbmddICRTUUxTZXJ2aWNlVXNlclBhc3N3b3JkID0gJ1BAc3N3MHJkJywKCiAgICAgICAgW1N3aXRjaF0gJFVwZGF0ZUVuYWJsZWQKICAgICkKICAgIGJlZ2luIHsKICAgICAgICBTaG93LUludm9jYXRpb25JbmZvICRNeUludm9jYXRpb24KICAgIH0KICAgIGVuZCB7CiAgICAgICAgU2hvdy1JbnZvY2F0aW9uSW5mbyAkTXlJbnZvY2F0aW9uIC1FbmQKICAgIH0KICAgIHByb2Nlc3MgewogICAgICAgIHRyYXAgewogICAgICAgICAgICAmJFRyYXBIYW5kbGVyCiAgICAgICAgfQoKICAgICAgICBpZiAoJE11cmFub0ZpbGVTaGFyZSAtZXEgJycpIHsKICAgICAgICAgICAgJE11cmFub0ZpbGVTaGFyZSA9IFtFbnZpcm9ubWVudF06OkdldEVudmlyb25tZW50VmFyaWFibGUoJ011cmFub0ZpbGVTaGFyZScpCiAgICAgICAgICAgIGlmICgkTXVyYW5vRmlsZVNoYXJlIC1lcSAnJykgewogICAgICAgICAgICAgICAgdGhyb3coIlVuYWJsZSB0byBmaW5kIE11cmFub0ZpbGVTaGFyZSBwYXRoLiIpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkU2V0dXBSb290IC1lcSAnJykgewogICAgICAgICAgICAkU2V0dXBSb290ID0gW0lPLlBhdGhdOjpDb21iaW5lKCRNdXJhbm9GaWxlU2hhcmUsICdQcmVyZXF1aXNpdGVzXFNRTCBTZXJ2ZXJcMjAxMicpCiAgICAgICAgfQoKICAgICAgICAkRXh0cmFPcHRpb25zID0gQHt9CgogICAgICAgIGlmICgkVXBkYXRlRW5hYmxlZCkgewogICAgICAgICAgICAkRXh0cmFPcHRpb25zICs9IEB7J1VwZGF0ZUVuYWJsZWQnID0gJHRydWV9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkRXh0cmFPcHRpb25zICs9IEB7J1VwZGF0ZUVuYWJsZWQnID0gJGZhbHNlfQogICAgICAgIH0KCiAgICAgICAgTmV3LVNRTFNlcnZlckZvckFPQUcgYAogICAgICAgICAgICAtU2V0dXBSb290ICRTZXR1cFJvb3QgYAogICAgICAgICAgICAtU1FMU3ZjVXNyRG9tYWluICRTUUxTZXJ2aWNlVXNlckRvbWFpbiBgCiAgICAgICAgICAgIC1TUUxTdmNVc3JOYW1lICRTUUxTZXJ2aWNlVXNlck5hbWUgYAogICAgICAgICAgICAtU1FMU3ZjVXNyUGFzc3dvcmQgJFNRTFNlcnZpY2VVc2VyUGFzc3dvcmQgYAogICAgICAgICAgICAtRXh0cmFPcHRpb25zICRFeHRyYU9wdGlvbnMKICAgIH0KfQoKCgpmdW5jdGlvbiBJbml0aWFsaXplLUFsd2F5c09uQXZhaWxhYmlsaXR5R3JvdXAgewogICAgcGFyYW0gKAogICAgICAgIFtTdHJpbmddICREb21haW5OYW1lLAogICAgICAgIFtTdHJpbmddICREb21haW5BZG1pbkFjY291bnROYW1lLAogICAgICAgIFtTdHJpbmddICREb21haW5BZG1pbkFjY291bnRQYXNzd29yZCwKICAgICAgICBbU3RyaW5nXSAkU3FsU2VydmljZUFjY291bnROYW1lLAogICAgICAgIFtTdHJpbmddICRQcmltYXJ5Tm9kZSwKICAgICAgICBbU3RyaW5nXSAkU2hhcmVOYW1lID0gJ1NoYXJlZFdvcmtEaXInCiAgICApCiAgICBiZWdpbiB7CiAgICAgICAgU2hvdy1JbnZvY2F0aW9uSW5mbyAkTXlJbnZvY2F0aW9uCiAgICB9CiAgICBlbmQgewogICAgICAgIFNob3ctSW52b2NhdGlvbkluZm8gJE15SW52b2NhdGlvbiAtRW5kCiAgICB9CiAgICBwcm9jZXNzIHsKICAgICAgICB0cmFwIHsKICAgICAgICAgICAgJiRUcmFwSGFuZGxlcgogICAgICAgIH0KCiAgICAgICAgJFNoYXJlTmV0d29ya1BhdGggPSAnXFwnICsgJFByaW1hcnlOb2RlICsgJ1wnICsgJFNoYXJlTmFtZQoKICAgICAgICAkRG9tYWluQWRtaW5BY2NvdW50Q3JlZHMgPSBOZXctQ3JlZGVudGlhbCBgCiAgICAgICAgICAgIC1Vc2VyTmFtZSAiJERvbWFpbk5hbWVcJERvbWFpbkFkbWluQWNjb3VudE5hbWUiIGAKICAgICAgICAgICAgLVBhc3N3b3JkICIkRG9tYWluQWRtaW5BY2NvdW50UGFzc3dvcmQiCgogICAgICAgICRGdW5jdGlvbnNGaWxlID0gRXhwb3J0LUZ1bmN0aW9uICdHZXQtTmV4dEZyZWVQb3J0JywgJ0luaXRpYWxpemUtQWx3YXlzT24nCgogICAgICAgICRudWxsID0gU3RhcnQtUG93ZXJTaGVsbFByb2Nlc3MgQCIKdHJhcCB7CiAgICBgJF8KICAgIGV4aXQgMQp9CgpJbXBvcnQtTW9kdWxlIENvcmVGdW5jdGlvbnMKCldyaXRlLUxvZyAiSW1wb3J0aW5nIGZ1bmN0aW9ucyBmaWxlICckRnVuY3Rpb25zRmlsZScgLi4uIgouICIkRnVuY3Rpb25zRmlsZSIKCldyaXRlLUxvZyAiU3RhcnRpbmcgJ0luaXRpYWxpemUtQWx3YXlzT24nIC4uLiIKYCRYbWxGaWxlID0gW0lPLlBhdGhdOjpDb21iaW5lKCIkU2hhcmVOZXR3b3JrUGF0aCIsICJgJChgJEVudjpDb21wdXRlck5hbWUpLnhtbCIpCldyaXRlLUxvZyAiT3V0cHV0IFhNTCBmaWxlIGlzICdgJFhtbEZpbGUnIgpJbml0aWFsaXplLUFsd2F5c09uIHwgRXhwb3J0LUNsaVhtbCAtUGF0aCBgJFhtbEZpbGUKIkAgLUNyZWRlbnRpYWwgJERvbWFpbkFkbWluQWNjb3VudENyZWRzIC1Ob0Jhc2U2NAogICAgfQp9CgoKZnVuY3Rpb24gTmV3LVNoYXJlZEZvbGRlckZvckFPQUcgewogICAgcGFyYW0gKAogICAgICAgICMgKE9QVElPTkFMKQogICAgICAgIFtTdHJpbmddICRTaGFyZVBhdGggPSBbSU8uUGF0aF06OkNvbWJpbmUoJEVudjpTeXN0ZW1Ecml2ZSArICdcJywgJ1NoYXJlZFdvcmtEaXInKSwKCiAgICAgICAgIyAoT1BUSU9OQUwpCiAgICAgICAgW1N0cmluZ10gJFNoYXJlTmFtZSA9ICdTaGFyZWRXb3JrRGlyJywKCiAgICAgICAgW1N0cmluZ10gJFByaW1hcnlOb2RlID0gJyAnCiAgICApCiAgICBiZWdpbiB7CiAgICAgICAgU2hvdy1JbnZvY2F0aW9uSW5mbyAkTXlJbnZvY2F0aW9uCiAgICB9CiAgICBlbmQgewogICAgICAgIFNob3ctSW52b2NhdGlvbkluZm8gJE15SW52b2NhdGlvbiAtRW5kCiAgICB9CiAgICBwcm9jZXNzIHsKICAgICAgICB0cmFwIHsKICAgICAgICAgICAgJiRUcmFwSGFuZGxlcgogICAgICAgIH0KCiAgICAgICAgaWYgKCRQcmltYXJ5Tm9kZS5Ub0xvd2VyKCkgLW5lICgkRW52OkNvbXB1dGVyTmFtZSkuVG9Mb3dlcigpKSB7CiAgICAgICAgICAgIFdyaXRlLUxvZyAiVGhpcyBzY3JpcHQgcnVucyBvbiBwcmltYXJ5IG5vZGUgb25seS4iCiAgICAgICAgICAgIFdyaXRlLUxvZyAiRXhpdGluZyBzY3JpcHQuIgogICAgICAgICAgICByZXR1cm4KICAgICAgICB9CgogICAgICAgIGlmICgkU2hhcmVOYW1lIC1lcSAnJykgewogICAgICAgICAgICAkU2hhcmVOYW1lID0gW0lPLlBhdGhdOjpHZXRGaWxlTmFtZVdpdGhvdXRFeHRlbnNpb24oJFNoYXJlUGF0aCkKICAgICAgICB9CgogICAgICAgIFdyaXRlLUxvZ0RlYnVnICJTaGFyZVBhdGggPSAnJFNoYXJlUGF0aCciCiAgICAgICAgV3JpdGUtTG9nRGVidWcgIlNoYXJlTmFtZSA9ICckU2hhcmVOYW1lJyIKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgV3JpdGUtTG9nRGVidWcgIlRyeWluZyB0byByZW1vdmUgc2hhcmUgJyRTaGFyZU5hbWUnIgogICAgICAgICAgICAkbnVsbCA9IEdldC1TbWJTaGFyZSAtTmFtZSAkU2hhcmVOYW1lIC1FcnJvckFjdGlvbiAnU3RvcCcKICAgICAgICAgICAgJG51bGwgPSBSZW1vdmUtU21iU2hhcmUgLU5hbWUgJFNoYXJlTmFtZSAtRm9yY2UKICAgICAgICAgICAgd3JpdGUtTG9nICJTaGFyZSAnJFNoYXJlTmFtZScgcmVtb3ZlZC4iCiAgICAgICAgfQogICAgICAgIGNhdGNoIHsKICAgICAgICAgICAgV3JpdGUtTG9nV2FybmluZyAiU2hhcmUgJyRTaGFyZU5hbWUnIG5vdCBleGlzdHMgb3IgY2Fubm90IGJlIGRlbGV0ZWQuIgogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgV3JpdGUtTG9nRGVidWcgIlRyeWluZyB0byByZW1vdmUgZm9sZGVyICckU2hhcmVQYXRoIgogICAgICAgICAgICAkbnVsbCA9IEdldC1JdGVtIC1QYXRoICRTaGFyZVBhdGggLUVycm9yQWN0aW9uICdTdG9wJwogICAgICAgICAgICAkbnVsbCA9IFJlbW92ZS1JdGVtIC1QYXRoICRTaGFyZVBhdGggLVJlY3Vyc2UgLUZvcmNlCiAgICAgICAgICAgIFdyaXRlLUxvZyAiRm9sZGVyICckU2hhcmVQYXRoJyByZW1vdmVkLiIKICAgICAgICB9CiAgICAgICAgY2F0Y2ggewogICAgICAgICAgICBXcml0ZS1Mb2dXYXJuaW5nICJGb2xkZXIgJyRTaGFyZVBhdGgnIG5vdCBleGlzdHMgb3IgY2Fubm90IGJlIGRlbGV0ZWQuIgogICAgICAgIH0KCiAgICAgICAgJG51bGwgPSBOZXctSXRlbSAtUGF0aCAkU2hhcmVQYXRoIC1JdGVtVHlwZSBDb250YWluZXIgLUZvcmNlCiAgICAgICAgICAgICAgICAKICAgICAgICAkbnVsbCA9IE5ldy1TbWJTaGFyZSAtUGF0aCAkU2hhcmVQYXRoIGAKICAgICAgICAgICAgLU5hbWUgJFNoYXJlTmFtZSBgCiAgICAgICAgICAgIC1GdWxsQWNjZXNzICJFdmVyeW9uZSIgYAogICAgICAgICAgICAtRGVzY3JpcHRpb24gIlNoYXJlZCBmb2xkZXIgZm9yIEFsd2F5c09uIEF2YWlsYWJpbGl0eSBHcm91cCBzZXR1cC4iCgogICAgICAgIHJldHVybiAnXFwnICsgJEVudjpDb21wdXRlck5hbWUgKyAnXCcgKyAkU2hhcmVOYW1lCiAgICB9Cn0KCgoKZnVuY3Rpb24gTmV3LURhdGFiYXNlRm9yQU9BRyB7CiAgICBwYXJhbSAoCiAgICAgICAgW1N0cmluZ10gJERhdGFiYXNlTmFtZSwKICAgICAgICBbU3RyaW5nXSAkRG9tYWluTmFtZSwKICAgICAgICBbU3RyaW5nXSAkVXNlck5hbWUsCiAgICAgICAgW1N0cmluZ10gJFVzZXJQYXNzd29yZAogICAgKQoKICAgICRDcmVkcyA9IE5ldy1DcmVkZW50aWFsIC1Vc2VyTmFtZSAiJERvbWFpbk5hbWVcJFVzZXJOYW1lIiAtUGFzc3dvcmQgIiRVc2VyUGFzc3dvcmQiCgogICAgJEZ1bmN0aW9uc0ZpbGUgPSBFeHBvcnQtRnVuY3Rpb24gJ0ludm9rZS1TUUxUZXh0JywgJ0NvbnZlcnRUby1TUUxOYW1lJywgJ0NvbnZlcnRUby1TUUxTdHJpbmcnLCAnTmV3LVNRTERhdGFiYXNlJwoKICAgIFN0YXJ0LVBvd2VyU2hlbGxQcm9jZXNzIEAiCnRyYXAgewogICAgYCRfCiAgICBleGl0IDEKfQoKSW1wb3J0LU1vZHVsZSBDb3JlRnVuY3Rpb25zCgpXcml0ZS1Mb2cgIkltcG9ydGluZyBmdW5jdGlvbnMgZnJvbSBmaWxlICckRnVuY3Rpb25zRmlsZScgLi4uIgouICIkRnVuY3Rpb25zRmlsZSIKCldyaXRlLUxvZyAiU3RhcnRpbmcgJ05ldy1TUUxEYXRhYmFzZScgLi4uIgpOZXctU1FMRGF0YWJhc2UgJERhdGFiYXNlTmFtZQoiQCAtQ3JlZGVudGlhbCAkQ3JlZHMgLU5vQmFzZTY0Cn0KCgoKZnVuY3Rpb24gSW5pdGlhbGl6ZS1BT0FHUHJpbWFyeVJlcGxpY2EgewogICAgcGFyYW0gKAogICAgICAgICMgKE9QVElPTkFMKSBOYW1lIG9mIHRoZSBuZXcgQXZhaWxhYmlsaXR5IEdyb3VwLiBJZiBub3Qgc3BlY2lmaWVkIHRoZW4gZGVmYXVsdCBuYW1lIHdpbGwgYmUgdXNlZC4KICAgICAgICBbU3RyaW5nXSAkR3JvdXBOYW1lID0gJ011cmFub0FHJywKCiAgICAgICAgIyAoUkVRVUlSRUQpIE5vZGVzIHRoYXQgd2lsbCBiZSBjb25maWd1cmVkIGFzIHJlcGxpY2EgcGFydG5lcnMuCiAgICAgICAgI1tQYXJhbWV0ZXIoTWFuZGF0b3J5PSR0cnVlKV0KICAgICAgICBbU3RyaW5nW11dICROb2RlTGlzdCwKCiAgICAgICAgIyAoUkVRVUlSRUQpIE5vZGUgbmFtZSB0aGF0IHdpbGwgYmUgcHJpbWFyeSBmb3Igc2VsZWN0ZWQgQXZhaWxhYmlsaXR5IEdyb3VwCiAgICAgICAgI1tQYXJhbWV0ZXIoTWFuZGF0b3J5PSR0cnVlKV0KICAgICAgICBbU3RyaW5nXSAkUHJpbWFyeU5vZGUsCgogICAgICAgICMgKFJFUVVJUkVEKSBEYXRhYmFzZSBsaXN0IHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgQXZhaWxhYmlsaXR5IEdyb3VwCiAgICAgICAgI1tQYXJhbWV0ZXIoTWFuZGF0b3J5PSR0cnVlKV0KICAgICAgICBbU3RyaW5nW11dICREYXRhYmFzZUxpc3QsCgogICAgICAgICMgKFJFUVVJUkVEKSBMaXN0ZW5lciBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IGNsaWVudHMgdG8gY29ubmVjdCB0byBkYXRhYmFzZXMgaW4gdGhhdCBBRwogICAgICAgICNbUGFyYW1ldGVyKE1hbmRhdG9yeT0kdHJ1ZSldCiAgICAgICAgW1N0cmluZ10gJExpc3RlbmVyTmFtZSA9ICdNdXJhbm9BR19MaXN0ZW5lcicsCgogICAgICAgICMgKFJFUVVJUkVEKSBJUCBhZGRyZXNzIG9mIHRoZSBsaXN0ZW5lcgogICAgICAgICNbUGFyYW1ldGVyKE1hbmRhdG9yeT0kdHJ1ZSldCiAgICAgICAgW1N0cmluZ10gJExpc3RlbmVySVAsCgogICAgICAgIFtTdHJpbmddICRMaXN0ZW5lcklQTWFzayA9ICcyNTUuMjU1LjI1NS4wJywKCiAgICAgICAgW1N0cmluZ10gJExpc3RlbmVyUG9ydCA9ICc1MDIzJywKCiAgICAgICAgIyBTeW5jIE1vZGUgTm9kZSBMaXN0CiAgICAgICAgW1N0cmluZ1tdXSAkU3luY01vZGVOb2RlTGlzdCwKCiAgICAgICAgW1N0cmluZ10gJFNoYXJlZFdvcmtEaXIgPSAnU2hhcmVkV29ya0RpcicsCgogICAgICAgIFtTdHJpbmddICRDbGlYbWxGaWxlID0gJycsCgogICAgICAgIFtTdHJpbmddICREb21haW5OYW1lLAogICAgICAgIFtTdHJpbmddICRVc2VyTmFtZSwKICAgICAgICBbU3RyaW5nXSAkVXNlclBhc3N3b3JkCiAgICApCiAgICBiZWdpbiB7CiAgICAgICAgU2hvdy1JbnZvY2F0aW9uSW5mbyAkTXlJbnZvY2F0aW9uCiAgICB9CiAgICBlbmQgewogICAgICAgIFNob3ctSW52b2NhdGlvbkluZm8gJE15SW52b2NhdGlvbiAtRW5kCiAgICB9CiAgICBwcm9jZXNzIHsKICAgICAgICB0cmFwIHsKICAgICAgICAgICAgJiRUcmFwSGFuZGxlcgogICAgICAgIH0KCiAgICAgICAgV3JpdGUtTG9nICJQcmltYXJ5IG5vZGU6ICckKCRQcmltYXJ5Tm9kZS5Ub0xvd2VyKCkpJyIKICAgICAgICBXcml0ZS1Mb2cgIkN1cnJlbnQgbm9kZTogJyQoKCRFbnY6Q29tcHV0ZXJOYW1lKS5Ub0xvd2VyKCkpJyIKCiAgICAgICAgaWYgKCRQcmltYXJ5Tm9kZS5Ub0xvd2VyKCkgLW5lICQoJEVudjpDb21wdXRlck5hbWUpLlRvTG93ZXIoKSkgewogICAgICAgICAgICBXcml0ZS1Mb2cgIlRoaXMgZnVuY3Rpb24gd29ya3Mgb24gUHJpbWFyeU5vZGUgb25seS4iCiAgICAgICAgICAgIFdyaXRlLUxvZyAiRXhpdGluZy4iCiAgICAgICAgICAgIHJldHVybgogICAgICAgIH0KCiAgICAgICAgaWYgKCRDbGlYbWxGaWxlIC1lcSAnJykgewogICAgICAgICAgICAkUmVwbGljYURlZmluaXRpb25MaXN0ID0gQCgpCiAgICAgICAgICAgIGZvcmVhY2ggKCROb2RlIGluICROb2RlTGlzdCkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAkTm9kZUVuZHBvaW50UG9ydCA9IEltcG9ydC1DbGlYbWwgLVBhdGggIlxcJFByaW1hcnlOb2RlXFNoYXJlZFdvcmtEaXJcJE5vZGUueG1sIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2F0Y2ggewogICAgICAgICAgICAgICAgICAgIFdyaXRlLUxvZyAiVXNpbmcgZGVmYXVsdCBlbmRwb2ludCBwb3J0IDUwMjIiCiAgICAgICAgICAgICAgICAgICAgJE5vZGVFbmRwb2ludFBvcnQgPSA1MDIyCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFJlcGxpY2FEZWZpbml0aW9uID0gQHsKICAgICAgICAgICAgICAgICAgICAiU0VSVkVSX0lOU1RBTkNFIiA9ICIkTm9kZSI7CiAgICAgICAgICAgICAgICAgICAgIkVORFBPSU5UX1VSTCIgPSAiVENQOi8vJHtOb2RlfToke05vZGVFbmRwb2ludFBvcnR9IjsKICAgICAgICAgICAgICAgICAgICAiQVZBSUxBQklMSVRZX01PREUiID0gIkFTWU5DSFJPTk9VU19DT01NSVQiOwogICAgICAgICAgICAgICAgICAgICJGQUlMT1ZFUl9NT0RFIj0iTUFOVUFMIjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJFN5bmNNb2RlTm9kZUxpc3QgLWNvbnRhaW5zICROb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgV3JpdGUtTG9nICIkTm9kZSBpcyBpbiBTeW5jTW9kZU5vZGVMaXN0IgogICAgICAgICAgICAgICAgICAgICRSZXBsaWNhRGVmaW5pdGlvblsnQVZBSUxBQklMSVRZX01PREUnXSA9ICJTWU5DSFJPTk9VU19DT01NSVQiCiAgICAgICAgICAgICAgICAgICAgJFJlcGxpY2FEZWZpbml0aW9uWydGQUlMT1ZFUl9NT0RFJ10gPSAiQVVUT01BVElDIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgV3JpdGUtTG9nICIkTm9kZSBpcyBOT1QgaW4gU3luY01vZGVOb2RlTGlzdCIKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkUmVwbGljYURlZmluaXRpb25MaXN0ICs9IEAoJFJlcGxpY2FEZWZpbml0aW9uKQogICAgICAgICAgICB9CgogICAgICAgICAgICAkUHJlZmVyZW5jZXMgPSBAe30KCiAgICAgICAgICAgICRMaXN0ZW5lckRlZmluaXRpb24gPSBAewogICAgICAgICAgICAgICAgIk5BTUUiPSRMaXN0ZW5lck5hbWU7CiAgICAgICAgICAgICAgICAiUE9SVCIgPSAiJExpc3RlbmVyUG9ydCI7CiAgICAgICAgICAgICAgICAiU1RBVElDIiA9ICIkTGlzdGVuZXJJUC8kTGlzdGVuZXJJUE1hc2siCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRQYXJhbWV0ZXJzID0gQHsKICAgICAgICAgICAgICAgICdXb3JrRGlyJyA9ICJcXCRQcmltYXJ5Tm9kZVwkU2hhcmVkV29ya0RpciI7CiAgICAgICAgICAgICAgICAnTmFtZScgPSAkR3JvdXBOYW1lOwogICAgICAgICAgICAgICAgJ0RhdGFiYXNlTmFtZXMnID0gJERhdGFiYXNlTGlzdDsKICAgICAgICAgICAgICAgICdSZXBsaWNhRGVmcycgPSAkUmVwbGljYURlZmluaXRpb25MaXN0OwogICAgICAgICAgICAgICAgJ1ByZWZlcmVuY2VzJyA9ICRQcmVmZXJlbmNlczsKICAgICAgICAgICAgICAgICdMaXN0ZW5lckRlZicgPSAkTGlzdGVuZXJEZWZpbml0aW9uOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbnVsbCA9IFJlbW92ZS1JdGVtIC1QYXRoICJcXCRQcmltYXJ5Tm9kZVxTaGFyZWRXb3JrRGlyXCoiIC1Gb3JjZQoKICAgICAgICAgICAgJENsaVhtbEZpbGUgPSBbSU8uUGF0aF06OkdldFRlbXBGaWxlTmFtZSgpCgogICAgICAgICAgICBXcml0ZS1Mb2dEZWJ1ZyAiQ2xpWG1sIGZpbGU6ICckQ2xpWG1sRmlsZSciCgogICAgICAgICAgICAkbnVsbCA9IEV4cG9ydC1DbGlYbWwgLVBhdGggJENsaVhtbEZpbGUgLUlucHV0T2JqZWN0ICRQYXJhbWV0ZXJzIC1EZXB0aCAxMAoKICAgICAgICAgICAgJG51bGwgPSBJbml0aWFsaXplLUFPQUdQcmltYXJ5UmVwbGljYSBgCiAgICAgICAgICAgICAgICAtQ2xpWG1sRmlsZSAkQ2xpWG1sRmlsZSBgCiAgICAgICAgICAgICAgICAtRG9tYWluTmFtZSAkRG9tYWluTmFtZSBgCiAgICAgICAgICAgICAgICAtVXNlck5hbWUgJFVzZXJOYW1lIGAKICAgICAgICAgICAgICAgIC1Vc2VyUGFzc3dvcmQgJFVzZXJQYXNzd29yZCBgCiAgICAgICAgICAgICAgICAtUHJpbWFyeU5vZGUgJFByaW1hcnlOb2RlCgogICAgICAgICAgICBXcml0ZS1Mb2dEZWJ1ZyAiSW5uZXIgJ0luaXRpYWxpemUtQU9BR1ByaW1hcnlSZXBsaWNhJyBjYWxsIGNvbXBsZXRlZC4iCiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ3JlZHMgPSBOZXctQ3JlZGVudGlhbCAtVXNlck5hbWUgIiREb21haW5OYW1lXCRVc2VyTmFtZSIgLVBhc3N3b3JkICIkVXNlclBhc3N3b3JkIgoKICAgICAgICAgICAgJEZ1bmN0aW9uc0ZpbGUgPSBFeHBvcnQtRnVuY3Rpb24gLUFsbAoKICAgICAgICAgICAgJG51bGwgPSBTdGFydC1Qb3dlclNoZWxsUHJvY2VzcyBAIgp0cmFwIHsKICAgIGAkXwogICAgZXhpdCAxCn0KCkltcG9ydC1Nb2R1bGUgQ29yZUZ1bmN0aW9ucwoKV3JpdGUtTG9nICJJbXBvcnRpbmcgZnVuY3Rpb25zIGZyb20gJyRGdW5jdGlvbnNGaWxlJyAuLi4iCi4gIiRGdW5jdGlvbnNGaWxlIgoKV3JpdGUtTG9nICJJbXBvcnRpbmcgQ2xpWG1sIHBhcmFtZXRlcnMgZmlsZSAuLi4iCmAkUGFyYW1ldGVycyA9IEltcG9ydC1DbGlYbWwgLVBhdGggJENsaVhtbEZpbGUKCldyaXRlLUxvZyAiU3RhcnRpbmcgJ05ldy1BbHdheXNPbkF2YWlsYWJpbGl0eUdyb3VwJyAuLi4iCk5ldy1BbHdheXNPbkF2YWlsYWJpbGl0eUdyb3VwIGBgCiAgICAtV29ya0RpciBgJFBhcmFtZXRlcnNbJ1dvcmtEaXInXSBgYAogICAgLU5hbWUgYCRQYXJhbWV0ZXJzWydOYW1lJ10gYGAKICAgIC1EYXRhYmFzZU5hbWVzIGAkUGFyYW1ldGVyc1snRGF0YWJhc2VOYW1lcyddIGBgCiAgICAtUmVwbGljYURlZnMgYCRQYXJhbWV0ZXJzWydSZXBsaWNhRGVmcyddIGBgCiAgICAtUHJlZmVyZW5jZXMgYCRQYXJhbWV0ZXJzWydQcmVmZXJlbmNlcyddIGBgCiAgICAtTGlzdGVuZXJEZWYgYCRQYXJhbWV0ZXJzWydMaXN0ZW5lckRlZiddCiJAIC1DcmVkZW50aWFsICRDcmVkcyAtTm9CYXNlNjQKICAgICAgICB9CiAgICB9Cn0KCgoKZnVuY3Rpb24gSW5pdGlhbGl6ZS1BT0FHU2Vjb25kYXJ5UmVwbGljYSB7CiAgICBwYXJhbSAoCiAgICAgICAgIyAoUkVRVUlSRUQpIE5vZGVzIHRoYXQgd2lsbCBiZSBjb25maWd1cmVkIGFzIHJlcGxpY2EgcGFydG5lcnMuCiAgICAgICAgW1BhcmFtZXRlcihNYW5kYXRvcnk9JHRydWUpXQogICAgICAgIFtTdHJpbmdbXV0gJE5vZGVMaXN0LAoKICAgICAgICAjIChSRVFVSVJFRCkgTm9kZSBuYW1lIHRoYXQgd2lsbCBiZSBwcmltYXJ5IGZvciBzZWxlY3RlZCBBdmFpbGFiaWxpdHkgR3JvdXAKICAgICAgICBbUGFyYW1ldGVyKE1hbmRhdG9yeT0kdHJ1ZSldCiAgICAgICAgW1N0cmluZ10gJFByaW1hcnlOb2RlLAoKICAgICAgICBbU3RyaW5nXSAkU2hhcmVkV29ya0RpciA9ICdTaGFyZWRXb3JrRGlyJywKCiAgICAgICAgW1N0cmluZ10gJERvbWFpbk5hbWUsCiAgICAgICAgW1N0cmluZ10gJFVzZXJOYW1lLAogICAgICAgIFtTdHJpbmddICRVc2VyUGFzc3dvcmQKICAgICkgCiAgICBiZWdpbiB7CiAgICAgICAgU2hvdy1JbnZvY2F0aW9uSW5mbyAkTXlJbnZvY2F0aW9uCiAgICB9CiAgICBlbmQgewogICAgICAgIFNob3ctSW52b2NhdGlvbkluZm8gJE15SW52b2NhdGlvbiAtRW5kCiAgICB9CiAgICBwcm9jZXNzIHsKICAgICAgICB0cmFwIHsKICAgICAgICAgICAgJiRUcmFwSGFuZGxlcgogICAgICAgIH0KCiAgICAgICAgaWYgKCRQcmltYXJ5Tm9kZS5Ub0xvd2VyKCkgLWVxICgkRW52OkNvbXB1dGVyTmFtZSkuVG9Mb3dlcigpKSB7CiAgICAgICAgICAgIFdyaXRlLUxvZyAiVGhpcyBmdW5jdGlvbiB3b3JrcyBvbiBhbnkgU2Vjb25kYXJ5Tm9kZSBvbmx5LiIKICAgICAgICAgICAgV3JpdGUtTG9nICJFeGl0aW5nLiIKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgfQoKICAgICAgICAkQ3JlZHMgPSBOZXctQ3JlZGVudGlhbCAtVXNlck5hbWUgIiREb21haW5OYW1lXCRVc2VyTmFtZSIgLVBhc3N3b3JkICIkVXNlclBhc3N3b3JkIgoKICAgICAgICAkRnVuY3Rpb25zRmlsZSA9IEV4cG9ydC1GdW5jdGlvbiAtQWxsCgogICAgICAgICRudWxsID0gU3RhcnQtUG93ZXJTaGVsbFByb2Nlc3MgQCIKdHJhcCB7CiAgICAkXwogICAgZXhpdCAxCn0KCkltcG9ydC1Nb2R1bGUgQ29yZUZ1bmN0aW9ucwoKV3JpdGUtTG9nICJJbXBvcnRpbmcgZnVuY3Rpb25zIGZyb20gJyRGdW5jdGlvbnNGaWxlJyAuLi4iCi4gIiRGdW5jdGlvbnNGaWxlIgoKV3JpdGUtTG9nICJTdGFydGluZyAnTmV3LUFsd2F5c09uQXZhaWxhYmlsaXR5R3JvdXBSZXBsaWNhJyAuLi4iCk5ldy1BbHdheXNPbkF2YWlsYWJpbGl0eUdyb3VwUmVwbGljYSAtV29ya0RpciAiXFwkUHJpbWFyeU5vZGVcJFNoYXJlZFdvcmtEaXIiCiJAIC1DcmVkZW50aWFsICRDcmVkcyAtTm9CYXNlNjQKICAgIH0KfQoKCgpmdW5jdGlvbiBEaXNhYmxlLUZpcmV3YWxsIHsKICAgIGJlZ2luIHsKICAgICAgICBTaG93LUludm9jYXRpb25JbmZvICRNeUludm9jYXRpb24KICAgIH0KICAgIGVuZCB7CiAgICAgICAgU2hvdy1JbnZvY2F0aW9uSW5mbyAkTXlJbnZvY2F0aW9uIC1FbmQKICAgIH0KICAgIHByb2Nlc3MgewogICAgICAgIHRyYXAgewogICAgICAgICAgICAmJFRyYXBIYW5kbGVyCiAgICAgICAgfQoKICAgICAgICBuZXRzaCBhZHZmaXJld2FsbCBzZXQgYWxscHJvZmlsZXMgc3RhdGUgb2ZmCiAgICB9Cn0KCgoKZnVuY3Rpb24gRW5hYmxlLUZpcmV3YWxsIHsKICAgIGJlZ2luIHsKICAgICAgICBTaG93LUludm9jYXRpb25JbmZvICRNeUludm9jYXRpb24KICAgIH0KICAgIGVuZCB7CiAgICAgICAgU2hvdy1JbnZvY2F0aW9uSW5mbyAkTXlJbnZvY2F0aW9uIC1FbmQKICAgIH0KICAgIHByb2Nlc3MgewogICAgICAgIHRyYXAgewogICAgICAgICAgICAmJFRyYXBIYW5kbGVyCiAgICAgICAgfQoKICAgICAgICBuZXRzaCBhZHZmaXJld2FsbCBzZXQgYWxscHJvZmlsZXMgc3RhdGUgb24KICAgIH0KfQoKCgpmdW5jdGlvbiBFbmFibGUtVHJ1c3RlZEhvc3RzIHsKICAgIGJlZ2luIHsKICAgICAgICBTaG93LUludm9jYXRpb25JbmZvICRNeUludm9jYXRpb24KICAgIH0KICAgIGVuZCB7CiAgICAgICAgU2hvdy1JbnZvY2F0aW9uSW5mbyAkTXlJbnZvY2F0aW9uIC1FbmQKICAgIH0KICAgIHByb2Nlc3MgewogICAgICAgIHRyYXAgewogICAgICAgICAgICAmJFRyYXBIYW5kbGVyCiAgICAgICAgfQoKICAgICAgICBTZXQtSXRlbSBXU01hbjpcbG9jYWxob3N0XENsaWVudFxUcnVzdGVkSG9zdHMgLVZhbHVlICcqJyAtRm9yY2UKICAgIH0KfQo=",
"CnRyYXAgewogICAgJiRUcmFwSGFuZGxlcgp9CgoKCmZ1bmN0aW9uIE5ldy1TcWxTZXJ2ZXJTeXN0ZW1BY2NvdW50IHsKICAgIHBhcmFtICgKICAgICAgICAjIChSRVFVSVJFRCkgRG9tYWluIE5hbWUKICAgICAgICBbUGFyYW1ldGVyKE1hbmRhdG9yeT0kdHJ1ZSldCiAgICAgICAgW1N0cmluZ10gJERvbWFpbk5hbWUsCgogICAgICAgICMgKFJFUVVJUkVEKSBVc2VyIG5hbWUgd2hvIGhhcyBwZXJtaXNzaW9ucyB0byBjcmVhdGUgYW5kIG1vZGlmeSB1c2VyUGFzc3dvcmQKICAgICAgICAjIFVzdWFsbHkgdGhpcyBpcyB0aGUgZG9tYWluIGFkbWluaXN0cmF0b3IgJyRkb21haW5OYW1lXEFkbWluaXN0cmF0b3InIGFjY291bnQKICAgICAgICBbUGFyYW1ldGVyKE1hbmRhdG9yeT0kdHJ1ZSldCiAgICAgICAgW1N0cmluZ10gJFVzZXJOYW1lLAoKICAgICAgICAjIChSRVFVSVJFRCkgUGFzc3dvcmQgZm9yIHRoYXQgdXNlcgogICAgICAgIFtQYXJhbWV0ZXIoTWFuZGF0b3J5PSR0cnVlKV0KICAgICAgICBbU3RyaW5nXSAkVXNlclBhc3N3b3JkLAoKICAgICAgICAjIChSRVFVSVJFRCkgVXNlciBuYW1lIGZvciBhIG5ldyBhY2NvdW50IHRoYXQgd2lsbCBiZSB1c2VkIHRvIHJ1biBTUUwgU2VydmVyCiAgICAgICAgW1BhcmFtZXRlcihNYW5kYXRvcnk9JHRydWUpXQogICAgICAgIFtTdHJpbmddICRTUUxTZXJ2aWNlVXNlck5hbWUsCgogICAgICAgICMgKFJFUVVJUkVEKSBQYXNzd29yZCBmb3IgdGhhdCB1c2VyCiAgICAgICAgW1BhcmFtZXRlcihNYW5kYXRvcnk9JHRydWUpXQogICAgICAgIFtTdHJpbmddICRTUUxTZXJ2aWNlVXNlclBhc3N3b3JkLAoKICAgICAgICBbU3RyaW5nXSAkUHJpbWFyeU5vZGUgPSAnICcKICAgICkKICAgIGJlZ2luIHsKICAgICAgICBTaG93LUludm9jYXRpb25JbmZvICRNeUludm9jYXRpb24KICAgIH0KICAgIGVuZCB7CiAgICAgICAgU2hvdy1JbnZvY2F0aW9uSW5mbyAkTXlJbnZvY2F0aW9uIC1FbmQKICAgIH0KICAgIHByb2Nlc3MgewogICAgICAgIHRyYXAgewogICAgICAgICAgICAmJFRyYXBIYW5kbGVyCiAgICAgICAgfQoKICAgICAgICBpZiAoJFByaW1hcnlOb2RlLlRvTG93ZXIoKSAtbmUgKCRFbnY6Q29tcHV0ZXJOYW1lKS5Ub0xvd2VyKCkpIHsKICAgICAgICAgICAgV3JpdGUtTG9nICJUSGlzIGZ1bmN0aW9uIHJ1bnMgb24gQU9BRyBwcmltYXJ5IG5vZGUgb25seS4iCiAgICAgICAgICAgIFdyaXRlLUxvZyAiRXhpdGluZy4iCiAgICAgICAgICAgIHJldHVybgogICAgICAgIH0KCiAgICAgICAgV3JpdGUtTG9nICJJbnN0YWxsaW5nICdSU0FULUFELVBvd2VyU2hlbGwnIC4uLiAiCiAgICAgICAgQWRkLVdpbmRvd3NGZWF0dXJlIFJTQVQtQUQtUG93ZXJTaGVsbAoKICAgICAgICBJbXBvcnQtTW9kdWxlIEFjdGl2ZURpcmVjdG9yeQoKICAgICAgICAkQ3JlZHMgPSBOZXctQ3JlZGVudGlhbCAtVXNlck5hbWUgIiREb21haW5OYW1lXCRVc2VyTmFtZSIgLVBhc3N3b3JkICIkVXNlclBhc3N3b3JkIgoKICAgICAgICBXcml0ZS1Mb2cgIkFkZGluZyBuZXcgdXNlciAuLi4iCiAgICAgICAgJG51bGwgPSBOZXctQURVc2VyIGAKICAgICAgICAgICAgLU5hbWUgJFNRTFNlcnZpY2VVc2VyTmFtZSBgCiAgICAgICAgICAgIC1BY2NvdW50UGFzc3dvcmQgJChDb252ZXJ0VG8tU2VjdXJlU3RyaW5nIC1TdHJpbmcgJFNRTFNlcnZpY2VVc2VyUGFzc3dvcmQgLUFzUGxhaW5UZXh0IC1Gb3JjZSkgYAogICAgICAgICAgICAtQ3JlZGVudGlhbCAkQ3JlZHMgYAogICAgICAgICAgICAtRXJyb3JBY3Rpb24gJ1N0b3AnCiAgICB9Cn0K"
]
}