Skip to contentLy8gPGJsb2NrOmRhdGE6MT4KY29uc3QgcG9pbnRzID0gWwogIHt4OiAxLCB5OiAxLCB2OiAxMX0sCiAge3g6IDEsIHk6IDIsIHY6IDEyfSwKICB7eDogMSwgeTogMywgdjogMTN9LAogIHt4OiAyLCB5OiAxLCB2OiAyMX0sCiAge3g6IDIsIHk6IDIsIHY6IDIyfSwKICB7eDogMiwgeTogMywgdjogMjN9LAogIHt4OiAzLCB5OiAxLCB2OiAzMX0sCiAge3g6IDMsIHk6IDIsIHY6IDMyfSwKICB7eDogMywgeTogMywgdjogMzN9Cl07Ci8vIDwvYmxvY2s6ZGF0YT4KCi8vIDxibG9jazpjb25maWc6MD4KY29uc3QgY29uZmlnID0gewogIHR5cGU6ICdtYXRyaXgnLAogIGRhdGE6IHsKICAgIGRhdGFzZXRzOiBbewogICAgICBsYWJlbDogJ015IE1hdHJpeCcsCiAgICAgIGRhdGE6IHBvaW50cwogICAgfV0KICB9LAogIG9wdGlvbnM6IHsKICAgIGJhY2tncm91bmRDb2xvcihjb250ZXh0KSB7CiAgICAgIGNvbnN0IHZhbHVlID0gY29udGV4dC5kYXRhc2V0LmRhdGFbY29udGV4dC5kYXRhSW5kZXhdLnY7CiAgICAgIGNvbnN0IGFscGhhID0gKHZhbHVlIC0gNSkgLyA0MDsKICAgICAgcmV0dXJuIGhlbHBlcnMuY29sb3IoJ2dyZWVuJykuYWxwaGEoYWxwaGEpLnJnYlN0cmluZygpOwogICAgfSwKICAgIGJvcmRlckNvbG9yKGNvbnRleHQpIHsKICAgICAgY29uc3QgdmFsdWUgPSBjb250ZXh0LmRhdGFzZXQuZGF0YVtjb250ZXh0LmRhdGFJbmRleF0udjsKICAgICAgY29uc3QgYWxwaGEgPSAodmFsdWUgLSA1KSAvIDQwOwogICAgICByZXR1cm4gaGVscGVycy5jb2xvcignZGFya2dyZWVuJykuYWxwaGEoYWxwaGEpLnJnYlN0cmluZygpOwogICAgfSwKICAgIGJvcmRlcldpZHRoOiAxLAogICAgd2lkdGg6ICh7Y2hhcnR9KSA9PiAoY2hhcnQuY2hhcnRBcmVhIHx8IHt9KS53aWR0aCAvIDMgLSAxLAogICAgaGVpZ2h0OiAoe2NoYXJ0fSkgPT4oY2hhcnQuY2hhcnRBcmVhIHx8IHt9KS5oZWlnaHQgLyAzIC0gMSwKICAgIHBsdWdpbnM6IHsKICAgICAgbGVnZW5kOiBmYWxzZSwKICAgICAgdG9vbHRpcDogewogICAgICAgIGNhbGxiYWNrczogewogICAgICAgICAgdGl0bGUoKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgIH0sCiAgICAgICAgICBsYWJlbChjb250ZXh0KSB7CiAgICAgICAgICAgIGNvbnN0IHYgPSBjb250ZXh0LmRhdGFzZXQuZGF0YVtjb250ZXh0LmRhdGFJbmRleF07CiAgICAgICAgICAgIHJldHVybiBbJ3g6ICcgKyB2LngsICd5OiAnICsgdi55LCAndjogJyArIHYudl07CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgc2NhbGVzOiB7CiAgICAgIHg6IHsKICAgICAgICB0aWNrczogewogICAgICAgICAgc3RlcFNpemU6IDEKICAgICAgICB9LAogICAgICAgIGdyaWQ6IHsKICAgICAgICAgIGRpc3BsYXk6IGZhbHNlCiAgICAgICAgfQogICAgICB9LAogICAgICB5OiB7CiAgICAgICAgb2Zmc2V0OiB0cnVlLAogICAgICAgIHRpY2tzOiB7CiAgICAgICAgICBzdGVwU2l6ZTogMQogICAgICAgIH0sCiAgICAgICAgZ3JpZDogewogICAgICAgICAgZGlzcGxheTogZmFsc2UKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9Cn07Ci8vIDwvYmxvY2s6Y29uZmlnPgoKY29uc3QgYWN0aW9ucyA9IFsKICB7CiAgICBuYW1lOiAnUmFuZG9taXplJywKICAgIGhhbmRsZXIoY2hhcnQpIHsKICAgICAgY2hhcnQuZGF0YS5kYXRhc2V0cy5mb3JFYWNoKGRhdGFzZXQgPT4gewogICAgICAgIGRhdGFzZXQuZGF0YS5mb3JFYWNoKHBvaW50ID0+IHsKICAgICAgICAgIHBvaW50LnYgPSBNYXRoLnJhbmRvbSgpICogMjA7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICBjaGFydC51cGRhdGUoKTsKICAgIH0KICB9LApdOwoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgYWN0aW9ucywKICBjb25maWcsCn07