IC8qISBGb3IgbGljZW5zZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIDQ4MDEuNjFhYjUwMjAuY2h1bmsuanMuTElDRU5TRS50eHQgKi8KPj12b2lkIDA9PT1sPyJsb29wIjpsLGY9ci5lYXNlLGg9ci50aW1lcyxwPSgwLGxlLkEpKHt9LHQsbik7aCYmKHAub2Zmc2V0PWgpO3ZhciB2PW1lKGYpO3JldHVybiBBcnJheS5pc0FycmF5KHYpJiYocC5lYXNpbmc9diksZS5hbmltYXRlKHAse2RlbGF5Om8sZHVyYXRpb246cyxlYXNpbmc6QXJyYXkuaXNBcnJheSh2KT8ibGluZWFyIjp2LGZpbGw6ImJvdGgiLGl0ZXJhdGlvbnM6dSsxLGRpcmVjdGlvbjoicmV2ZXJzZSI9PT1kPyJhbHRlcm5hdGUiOiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KCgpOb3RTdXBwb3J0ZWRFcnJvcjogRmFpbGVkIHRvIGV4ZWN1dGUgJ2FuaW1hdGUnIG9uICdFbGVtZW50JzogUGFydGlhbCBrZXlmcmFtZXMgYXJlIG5vdCBzdXBwb3J0ZWQuCkVycm9yOiBGYWlsZWQgdG8gZXhlY3V0ZSAnYW5pbWF0ZScgb24gJ0VsZW1lbnQnOiBQYXJ0aWFsIGtleWZyYW1lcyBhcmUgbm90IHN1cHBvcnRlZC4KICAgIGF0IGh0dHBzOi8vY3liZXJjb2Rlb25saW5lLmNvbS9zdGF0aWMvanMvNDgwMS42MWFiNTAyMC5jaHVuay5qczoyOjEwODA1OTMKICAgIGF0IHQudmFsdWUgKGh0dHBzOi8vY3liZXJjb2Rlb25saW5lLmNvbS9zdGF0aWMvanMvNDgwMS42MWFiNTAyMC5jaHVuay5qczoyOjEwODA3MzIpCiAgICBhdCB0LnZhbHVlIChodHRwczovL2N5YmVyY29kZW9ubGluZS5jb20vc3RhdGljL2pzLzQ4MDEuNjFhYjUwMjAuY2h1bmsuanM6MjoxMDcwNDA1KQogICAgYXQgdC5vbkNvbXBsZXRlIChodHRwczovL2N5YmVyY29kZW9ubGluZS5jb20vc3RhdGljL2pzLzQ4MDEuNjFhYjUwMjAuY2h1bmsuanM6MjoxMDc5NDU2KQogICAgYXQgdC52YWx1ZSAoaHR0cHM6Ly9jeWJlcmNvZGVvbmxpbmUuY29tL3N0YXRpYy9qcy80ODAxLjYxYWI1MDIwLmNodW5rLmpzOjI6MTE5MTk0MCkKICAgIGF0IGh0dHBzOi8vY3liZXJjb2Rlb25saW5lLmNvbS9zdGF0aWMvanMvNDgwMS42MWFiNTAyMC5jaHVuay5qczoyOjExOTA2OTEKICAgIGF0IFNldC5mb3JFYWNoICg8YW5vbnltb3VzPikKICAgIGF0IGYgKGh0dHBzOi8vY3liZXJjb2Rlb25saW5lLmNvbS9zdGF0aWMvanMvNDgwMS42MWFiNTAyMC5jaHVuay5qczoyOjExOTA2NjEpCiAgICBhdCBwIChodHRwczovL2N5YmVyY29kZW9ubGluZS5jb20vc3RhdGljL2pzLzQ4MDEuNjFhYjUwMjAuY2h1bmsuanM6MjoxMTkwODE2KQogICAgYXQgdC5nZXQgKGh0dHBzOi8vY3liZXJjb2Rlb25saW5lLmNvbS9zdGF0aWMvanMvNDgwMS42MWFiNTAyMC5jaHVuay5qczoyOjEwNjk0OTEp
IC8qISBGb3IgbGljZW5zZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIDQ4MDEuNjFhYjUwMjAuY2h1bmsuanMuTElDRU5TRS50eHQgKi8KPj12b2lkIDA9PT1sPyJsb29wIjpsLGY9ci5lYXNlLGg9ci50aW1lcyxwPSgwLGxlLkEpKHt9LHQsbik7aCYmKHAub2Zmc2V0PWgpO3ZhciB2PW1lKGYpO3JldHVybiBBcnJheS5pc0FycmF5KHYpJiYocC5lYXNpbmc9diksZS5hbmltYXRlKHAse2RlbGF5Om8sZHVyYXRpb246cyxlYXNpbmc6QXJyYXkuaXNBcnJheSh2KT8ibGluZWFyIjp2LGZpbGw6ImJvdGgiLGl0ZXJhdGlvbnM6dSsxLGRpcmVjdGlvbjoicmV2ZXJzZSI9PT1kPyJhbHRlcm5hdGUiOiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KCgpOb3RTdXBwb3J0ZWRFcnJvcjogRmFpbGVkIHRvIGV4ZWN1dGUgJ2FuaW1hdGUnIG9uICdFbGVtZW50JzogUGFydGlhbCBrZXlmcmFtZXMgYXJlIG5vdCBzdXBwb3J0ZWQuCkVycm9yOiBGYWlsZWQgdG8gZXhlY3V0ZSAnYW5pbWF0ZScgb24gJ0VsZW1lbnQnOiBQYXJ0aWFsIGtleWZyYW1lcyBhcmUgbm90IHN1cHBvcnRlZC4KICAgIGF0IGh0dHBzOi8vY3liZXJjb2Rlb25saW5lLmNvbS9zdGF0aWMvanMvNDgwMS42MWFiNTAyMC5jaHVuay5qczoyOjEwODA1OTMKICAgIGF0IHQudmFsdWUgKGh0dHBzOi8vY3liZXJjb2Rlb25saW5lLmNvbS9zdGF0aWMvanMvNDgwMS42MWFiNTAyMC5jaHVuay5qczoyOjEwODA3MzIpCiAgICBhdCB0LnZhbHVlIChodHRwczovL2N5YmVyY29kZW9ubGluZS5jb20vc3RhdGljL2pzLzQ4MDEuNjFhYjUwMjAuY2h1bmsuanM6MjoxMDcwNDA1KQogICAgYXQgdC5vbkNvbXBsZXRlIChodHRwczovL2N5YmVyY29kZW9ubGluZS5jb20vc3RhdGljL2pzLzQ4MDEuNjFhYjUwMjAuY2h1bmsuanM6MjoxMDc5NDU2KQogICAgYXQgdC52YWx1ZSAoaHR0cHM6Ly9jeWJlcmNvZGVvbmxpbmUuY29tL3N0YXRpYy9qcy80ODAxLjYxYWI1MDIwLmNodW5rLmpzOjI6MTE5MTk0MCkKICAgIGF0IGh0dHBzOi8vY3liZXJjb2Rlb25saW5lLmNvbS9zdGF0aWMvanMvNDgwMS42MWFiNTAyMC5jaHVuay5qczoyOjExOTA2OTEKICAgIGF0IFNldC5mb3JFYWNoICg8YW5vbnltb3VzPikKICAgIGF0IGYgKGh0dHBzOi8vY3liZXJjb2Rlb25saW5lLmNvbS9zdGF0aWMvanMvNDgwMS42MWFiNTAyMC5jaHVuay5qczoyOjExOTA2NjEpCiAgICBhdCBwIChodHRwczovL2N5YmVyY29kZW9ubGluZS5jb20vc3RhdGljL2pzLzQ4MDEuNjFhYjUwMjAuY2h1bmsuanM6MjoxMTkwODE2KQogICAgYXQgdC5nZXQgKGh0dHBzOi8vY3liZXJjb2Rlb25saW5lLmNvbS9zdGF0aWMvanMvNDgwMS42MWFiNTAyMC5jaHVuay5qczoyOjEwNjk0OTEp