diff -u b/core/misc/message.es6.js b/core/misc/message.es6.js --- b/core/misc/message.es6.js +++ b/core/misc/message.es6.js @@ -99,16 +99,9 @@ return []; } - const whitespace = /\s+/; - const indexes = Array.isArray(index) ? index : [index]; - // If the index has spaces, add several data matches, the same way - const selectors = indexes.map(currentIndex => - // class names work. - currentIndex.trim() - .split(whitespace) - .map(i => `[data-drupal-message-id^="${i}"]`) - .join(''), - ); + // Constuct an array of selectors based on the available message index(s). + const selectors = (Array.isArray(index) ? index : [index]) + .map(currentIndex => `[data-drupal-message-id^="${currentIndex}"]`); return this.messageWrapper.querySelectorAll(selectors.join(',')); } @@ -225,7 +218,7 @@ messageText.innerHTML = messagesTypes[options.type]; } - // Alerts have a different HTML structure + // Alerts have a different HTML structure. if (options.type === 'error') { messageText.setAttribute('role', 'alert'); } diff -u b/core/misc/message.js b/core/misc/message.js --- b/core/misc/message.js +++ b/core/misc/message.js @@ -49,13 +49,8 @@ return []; } - var whitespace = /\s+/; - var indexes = Array.isArray(index) ? index : [index]; - - var selectors = indexes.map(function (currentIndex) { - return currentIndex.trim().split(whitespace).map(function (i) { - return '[data-drupal-message-id^="' + i + '"]'; - }).join(''); + var selectors = (Array.isArray(index) ? index : [index]).map(function (currentIndex) { + return '[data-drupal-message-id^="' + currentIndex + '"]'; }); return this.messageWrapper.querySelectorAll(selectors.join(',')); @@ -139 +134,2 @@ -})(Drupal); \ No newline at end of file +})(Drupal); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lc3NhZ2UuZXM2LmpzIl0sIm5hbWVzIjpbIkRydXBhbCIsIm1lc3NhZ2UiLCJtZXNzYWdlV3JhcHBlciIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsIkVycm9yIiwidCIsIm9wdGlvbnMiLCJoYXNPd25Qcm9wZXJ0eSIsInR5cGUiLCJhbm5vdW5jZSIsImlkIiwiU3RyaW5nIiwiTWF0aCIsInJhbmRvbSIsInRvRml4ZWQiLCJyZXBsYWNlIiwiYXBwZW5kQ2hpbGQiLCJ0aGVtZSIsInRleHQiLCJpbmRleCIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsInNlbGVjdG9ycyIsIm1hcCIsImN1cnJlbnRJbmRleCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJqb2luIiwiZWxlbWVudHMiLCJpIiwicmVtb3ZlQ2hpbGQiLCJpZHMiLCJtZXNzYWdlcyIsInNlbGVjdCIsInJlbW92ZUVsZW1lbnRzIiwic3RhdHVzIiwiZXJyb3IiLCJ3YXJuaW5nIiwicHJpb3JpdHkiLCJtZXNzYWdlc1R5cGVzIiwiZ2V0TWVzc2FnZVR5cGVzIiwibWVzc2FnZVdyYXBlciIsImNyZWF0ZUVsZW1lbnQiLCJtZXNzYWdlVGV4dCIsInNldEF0dHJpYnV0ZSIsImlubmVySFRNTCIsImluc2VydEFkamFjZW50RWxlbWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUlBLENBQUMsVUFBQ0EsTUFBRCxFQUFZOztBQW1CWEEsU0FBT0MsT0FBUDtBQUNFLHNCQUErRTtBQUFBLFVBQW5FQyxjQUFtRSx1RUFBbERDLFNBQVNDLGFBQVQsQ0FBdUIsd0JBQXZCLENBQWtEOztBQUFBOztBQUM3RSxXQUFLRixjQUFMLEdBQXNCQSxjQUF0QjtBQUNBLFVBQUksQ0FBQyxLQUFLQSxjQUFWLEVBQTBCO0FBQ3hCLGNBQU0sSUFBSUcsS0FBSixDQUFVTCxPQUFPTSxDQUFQLENBQVMsbUNBQVQsRUFBOEMsRUFBRSxZQUFZLHdCQUFkLEVBQTlDLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBTkg7QUFBQTtB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QUFDRDtBQUNESCxrQkFBY0ksU0FBZCxTQUE4QjNCLElBQTlCO0FBQ0F1QixrQkFBY0sscUJBQWQsQ0FBb0MsWUFBcEMsRUFBa0RILFdBQWxEOztBQUVBLFdBQU9GLGFBQVA7QUFDRCxHQXhCRDtBQXlCRCxDQWpPRCxFQWlPRzFDLE1Bak9IIiwiZmlsZSI6Im1lc3NhZ2UuZXM2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICogTWVzc2FnZSBBUEkuXG4gKi9cbigoRHJ1cGFsKSA9PiB7XG4gIC8qKlxuICAgKiBAdHlwZWRlZiB7b2JqZWN0fSBEcnVwYWwubWVzc2FnZX5tZXNzYWdlRGVmaW5pdGlvblxuICAgKi9cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgRHJ1cGFsLm1lc3NhZ2Ugb2JqZWN0LlxuICAgKlxuICAgKiBUaGlzIHByb3ZpZGVzIGEgdW5pZm9ybSBpbnRlcmZhY2UgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgbWVzc2FnZXMgdG8gYVxuICAgKiBzcGVjaWZpYyBsb2NhdGlvbiBvbiB0aGUgcGFnZS5cbiAgICpcbiAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gbWVzc2FnZVdyYXBwZXJcbiAgICogICBUaGUgem9uZSB3aGVyZSB0byBhZGQgbWVzc2FnZXMuIElmIG5vIGVsZW1lbnQgaXMgc3VwcGxpZWQsIHRoZSBkZWZhdWx0XG4gICAqICAgc2VsZWN0b3IgaXMgdXNlZC5cbiAgICpcbiAgICogQHJldHVybiB7RHJ1cGFsLm1lc3NhZ2V+bWVzc2FnZURlZmluaXRpb259XG4gICAqICAgT2JqZWN0IHRvIGFkZCBhbmQgcmVtb3ZlIG1lc3NhZ2VzLlxuICAgKi9cblxuICBEcnVwYWwubWVzc2FnZSA9IGNsYXNzIHtcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlV3JhcHBlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWRydXBhbC1tZXNzYWdlc10nKSkge1xuICAgICAgdGhpcy5tZXNzYWdlV3JhcHBlciA9IG1lc3NhZ2VXcmFwcGVyO1xuICAgICAgaWYgKCF0aGlzLm1lc3NhZ2VXcmFwcGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihEcnVwYWwudCgnVGhlcmUgaXMgbm8gQGVsZW1lbnQgb24gdGhlIHBhZ2UuJywgeyAnQGVsZW1lbnQnOiAnW2RhdGEtZHJ1cGFsLW1lc3NhZ2VzXScgfSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBnZXRNZXNzYWdlVHlwZXMoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IERydXBhbC50KCdTdGF0dXMgbWVzc2FnZScpLFxuICAgICAgICBlcnJvcjogRHJ1cGFsLnQoJ0Vycm9yIG1lc3NhZ2UnKSxcbiAgICAgICAgd2FybmluZzogRHJ1cGFsLnQoJ1dhcm5pbmcgbWVzc2FnZScpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXF1ZW50aWFsbHkgYWRkcyBhIG1lc3NhZ2UgdG8gdGhlIG1lc3NhZ2UgYXJlYS5cbiAgICAgKlxuICAgICAqIEBuYW1lIERydXBhbC5tZXNzYWdlfm1lc3NhZ2VEZWZpbml0aW9uLmFkZFxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VcbiAgICAgKiAgIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXlcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gICAgICogICBUaGUgY29udGV4dCBvZiB0aGUgbWVzc2FnZSwgdXNlZCBmb3IgcmVtb3ZpbmcgbWVzc2FnZXMgYWdhaW4uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmlkXVxuICAgICAqICAgVGhlIG1lc3NhZ2UgSUQsIGl0IGNhbiBiZSBhIHNpbXBsZSB2YWx1ZTogYCdmaWxldmFsaWRhdGlvbmVycm9yJ2BcbiAgICAgKiAgIG9yIHNldmVyYWwgdmFsdWVzIHNlcGFyYXRlZCBieSBhIHNwYWNlOiBgJ215bW9kdWxlIGZvcm12YWxpZGF0aW9uJ2BcbiAgICAgKiAgIHdoaWNoIGNhbiBiZSB1c2VkIGFzIGEgc29ydCBvZiB0YWcgZm9yIG1lc3NhZ2UgZGVsZXRpb24uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnR5cGU9c3RhdHVzXVxuICAgICAqICAgTWVzc2FnZSB0eXBlLCBjYW4gYmUgZWl0aGVyICdzdGF0dXMnLCAnZXJyb3InIG9yICd3YXJuaW5nJy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuYW5ub3VuY2VdXG4gICAgICogICBTY3JlZW4tcmVhZGVyIHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UgaWYgbmVjZXNzYXJ5LiBUbyBwcmV2ZW50IGEgbWVzc2FnZVxuICAgICAqICAgYmVpbmcgc2VudCB0byBEcnVwYWwuYW5ub3VuY2UoKSB0aGlzIHNob3VsZCBiZSBgJydgLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5wcmlvcml0eV1cbiAgICAgKiAgIFByaW9yaXR5IG9mIHRoZSBtZXNzYWdlIGZvciBEcnVwYWwuYW5ub3VuY2UoKS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICAgKiAgIElEIG9mIG1lc3NhZ2UuXG4gICAgICovXG4gICAgYWRkKG1lc3NhZ2UsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgaWYgKCFvcHRpb25zLmhhc093blByb3BlcnR5KCd0eXBlJykpIHtcbiAgICAgICAgb3B0aW9ucy50eXBlID0gJ3N0YXR1cyc7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNZXNzYWdlIG11c3QgYmUgYSBzdHJpbmcuJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlbmQgbWVzc2FnZSB0byBzY3JlZW4gcmVhZGVyLlxuICAgICAgRHJ1cGFsLm1lc3NhZ2UuYW5ub3VuY2UobWVzc2FnZSwgb3B0aW9ucyk7XG4gICAgICAvLyBVc2UgdGhlIHByb3ZpZGVkIGluZGV4IGZvciB0aGUgbWVzc2FnZSBvciBnZW5lcmF0ZSBhIHVuaXF1ZSBrZXkgdG9cbiAgICAgIC8vIGFsbG93IG1lc3NhZ2UgZGVsZXRpb24uXG4gICAgICBvcHRpb25zLmlkID0gb3B0aW9ucy5pZCA/XG4gICAgICAgIFN0cmluZyhvcHRpb25zLmlkKSA6XG4gICAgICAgIGAke29wdGlvbnMudHlwZX0tJHtNYXRoLnJhbmRvbSgpLnRvRml4ZWQoMTUpLnJlcGxhY2UoJzAuJywgJycpfWA7XG4gICAgICB0aGlzLm1lc3NhZ2VXcmFwcGVyLmFwcGVuZENoaWxkKERydXBhbC50aGVtZSgnbWVzc2FnZScsIHsgdGV4dDogbWVzc2FnZSB9LCBvcHRpb25zKSk7XG5cbiAgICAgIHJldHVybiBvcHRpb25zLmlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBhIHNldCBvZiBtZXNzYWdlcyBiYXNlZCBvbiBpbmRleC5cbiAgICAgKlxuICAgICAqIEBuYW1lIERydXBhbC5tZXNzYWdlfm1lc3NhZ2VEZWZpbml0aW9uLnNlbGVjdFxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd8QXJyYXkuPHN0cmluZz59IGluZGV4XG4gICAgICogICBUaGUgbWVzc2FnZSBpbmRleCB0byBkZWxldGUgZnJvbSB0aGUgYXJlYS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGVMaXN0fEFycmF5fVxuICAgICAqICAgRWxlbWVudHMgZm91bmQuXG4gICAgICovXG4gICAgc2VsZWN0KGluZGV4KSB7XG4gICAgICAvLyBXaGVuIHRoZXJlIGFyZSBub3RoaW5nIHRvIHNlbGVjdCwgcmV0dXJuIGFuIGVtcHR5IGxpc3QuXG4gICAgICBpZiAoIWluZGV4IHx8IChBcnJheS5pc0FycmF5KGluZGV4KSAmJiBpbmRleC5sZW5ndGggPT09IDApKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgLy8gQ29uc3R1Y3QgYW4gYXJyYXkgb2Ygc2VsZWN0b3JzIGJhc2VkIG9uIHRoZSBhdmFpbGFibGUgbWVzc2FnZSBpbmRleChzKS5cbiAgICAgIGNvbnN0IHNlbGVjdG9ycyA9IChBcnJheS5pc0FycmF5KGluZGV4KSA/IGluZGV4IDogW2luZGV4XSlcbiAgICAgICAgLm1hcChjdXJyZW50SW5kZXggPT4gYFtkYXRhLWRydXBhbC1tZXNzYWdlLWlkXj1cIiR7Y3VycmVudEluZGV4fVwiXWApO1xuXG4gICAgICByZXR1cm4gdGhpcy5tZXNzYWdlV3JhcHBlci5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9ycy5qb2luKCcsJykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhlbHBlciB0byByZW1vdmUgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05vZGVMaXN0fEFycmF5LjxIVE1MRWxlbWVudD59IGVsZW1lbnRzXG4gICAgICogICBET00gTm9kZXMgdG8gYmUgcmVtb3ZlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge251bWJlcn1cbiAgICAgKiAgTnVtYmVyIG9mIHJlbW92ZWQgbm9kZXMuXG4gICAgICovXG4gICAgcmVtb3ZlRWxlbWVudHMoZWxlbWVudHMpIHtcbiAgICAgIGlmICghZWxlbWVudHMgfHwgIWVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLm1lc3NhZ2VXcmFwcGVyLnJlbW92ZUNoaWxkKGVsZW1lbnRzW2ldKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBtZXNzYWdlcyBmcm9tIHRoZSBtZXNzYWdlIGFyZWEuXG4gICAgICpcbiAgICAgKiBAbmFtZSBEcnVwYWwubWVzc2FnZX5tZXNzYWdlRGVmaW5pdGlvbi5yZW1vdmVcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfEFycmF5LjxzdHJpbmc+fSBpZHNcbiAgICAgKiAgIEluZGV4IG9mIHRoZSBtZXNzYWdlIHRvIHJlbW92ZSwgYXMgcmV0dXJuZWQgYnlcbiAgICAgKiAgIHtAbGluayBEcnVwYWwubWVzc2FnZX5tZXNzYWdlRGVmaW5pdGlvbi5hZGR9LCBvciBhblxuICAgICAqICAgYXJyYXkgb2YgaW5kZXhlcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge251bWJlcn1cbiAgICAgKiAgTnVtYmVyIG9mIHJlbW92ZWQgbWVzc2FnZXMuXG4gICAgICovXG4gICAgcmVtb3ZlKGlkcykge1xuICAgICAgY29uc3QgbWVzc2FnZXMgPSB0aGlzLnNlbGVjdChpZHMpO1xuICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlRWxlbWVudHMobWVzc2FnZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIG1lc3NhZ2VzIGZyb20gdGhlIG1lc3NhZ2UgYXJlYS5cbiAgICAgKlxuICAgICAqIEBuYW1lIERydXBhbC5tZXNzYWdlfm1lc3NhZ2VEZWZpbml0aW9uLmNsZWFyXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAgICogIE51bWJlciBvZiByZW1vdmVkIG1lc3NhZ2VzLlxuICAgICAqL1xuICAgIGNsZWFyKCkge1xuICAgICAgY29uc3QgbWVzc2FnZXMgPSB0aGlzLm1lc3NhZ2VXcmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWRydXBhbC1tZXNzYWdlLWlkXScpO1xuICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlRWxlbWVudHMobWVzc2FnZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhlbHBlciB0byBjYWxsIERydXBhbC5hbm5vdW5jZSgpIHdpdGggdGhlIHJpZ2h0IHBhcmFtZXRlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICAgICAqICAgRGlzcGxheWVkIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAgICAgKiAgIEFkZGl0aW9uYWwgZGF0YS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuYW5ub3VuY2VdXG4gICAgICogICBTY3JlZW4tcmVhZGVyIHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UgaWYgbmVjZXNzYXJ5LiBUbyBwcmV2ZW50IGEgbWVzc2FnZVxuICAgICAqICAgYmVpbmcgc2VudCB0byBEcnVwYWwuYW5ub3VuY2UoKSB0aGlzIHNob3VsZCBiZSBgJydgLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5wcmlvcml0eV1cbiAgICAgKiAgIFByaW9yaXR5IG9mIHRoZSBtZXNzYWdlIGZvciBEcnVwYWwuYW5ub3VuY2UoKS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudHlwZV1cbiAgICAgKiAgIE1lc3NhZ2UgdHlwZSwgY2FuIGJlIGVpdGhlciAnc3RhdHVzJywgJ2Vycm9yJyBvciAnd2FybmluZycuXG4gICAgICovXG4gICAgc3RhdGljIGFubm91bmNlKG1lc3NhZ2UsIG9wdGlvbnMpIHtcbiAgICAgIGlmICghb3B0aW9ucy5wcmlvcml0eSAmJiAob3B0aW9ucy50eXBlID09PSAnd2FybmluZycgfHwgb3B0aW9ucy50eXBlID09PSAnZXJyb3InKSkge1xuICAgICAgICBvcHRpb25zLnByaW9yaXR5ID0gJ2Fzc2VydGl2ZSc7XG4gICAgICB9XG4gICAgICAvLyBJZiBzY3JlZW4gcmVhZGVyIG1lc3NhZ2UgaXMgbm90IGRpc2FibGVkIGFubm91bmNlIHNjcmVlbiByZWFkZXIgc3BlY2lmaWNcbiAgICAgIC8vIHRleHQgb3IgZmFsbGJhY2sgdG8gdGhlIGRpc3BsYXllZCBtZXNzYWdlLlxuICAgICAgaWYgKG9wdGlvbnMuYW5ub3VuY2UgIT09ICcnKSB7XG4gICAgICAgIERydXBhbC5hbm5vdW5jZShvcHRpb25zLmFubm91bmNlIHx8IG1lc3NhZ2UsIG9wdGlvbnMucHJpb3JpdHkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogVGhlbWUgZnVuY3Rpb24gZm9yIGEgbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IG1lc3NhZ2VcbiAgICogICBUaGUgbWVzc2FnZSBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlLnRleHRcbiAgICogICBUaGUgbWVzc2FnZSB0ZXh0LlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICAgKiAgIFRoZSBtZXNzYWdlIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnR5cGVcbiAgICogICBUaGUgbWVzc2FnZSB0eXBlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5pZFxuICAgKiAgIElEIG9mIHRoZSBtZXNzYWdlLCBmb3IgcmVmZXJlbmNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtIVE1MRWxlbWVudH1cbiAgICogICBBIERPTSBOb2RlLlxuICAgKi9cbiAgRHJ1cGFsLnRoZW1lLm1lc3NhZ2UgPSAoeyB0ZXh0IH0sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlc1R5cGVzID0gRHJ1cGFsLm1lc3NhZ2UuZ2V0TWVzc2FnZVR5cGVzKCk7XG4gICAgY29uc3QgbWVzc2FnZVdyYXBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIC8vIGxldCBtZXNzYWdlVGV4dCA9IG1lc3NhZ2UudGV4dDtcbiAgICBjb25zdCBtZXNzYWdlVGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gyJyk7XG4gICAgbWVzc2FnZVRleHQuc2V0QXR0cmlidXRlKCdjbGFzcycsICd2aXN1YWxseS1oaWRkZW4nKTtcblxuICAgIG1lc3NhZ2VXcmFwZXIuc2V0QXR0cmlidXRlKCdjbGFzcycsIGBtZXNzYWdlcyBtZXNzYWdlcy0tJHtvcHRpb25zLnR5cGV9YCk7XG4gICAgbWVzc2FnZVdyYXBlci5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnY29udGVudGluZm8nKTtcbiAgICBtZXNzYWdlV3JhcGVyLnNldEF0dHJpYnV0ZSgnZGF0YS1kcnVwYWwtbWVzc2FnZS1pZCcsIG9wdGlvbnMuaWQpO1xuICAgIG1lc3NhZ2VXcmFwZXIuc2V0QXR0cmlidXRlKCdkYXRhLWRydXBhbC1tZXNzYWdlLXR5cGUnLCBvcHRpb25zLnR5cGUpO1xuICAgIGlmIChvcHRpb25zLnR5cGUgaW4gbWVzc2FnZXNUeXBlcykge1xuICAgICAgbWVzc2FnZVdyYXBlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBtZXNzYWdlc1R5cGVzW29wdGlvbnMudHlwZV0pO1xuICAgICAgbWVzc2FnZVRleHQuaW5uZXJIVE1MID0gbWVzc2FnZXNUeXBlc1tvcHRpb25zLnR5cGVdO1xuICAgIH1cblxuICAgIC8vIEFsZXJ0cyBoYXZlIGEgZGlmZmVyZW50IEhUTUwgc3RydWN0dXJlLlxuICAgIGlmIChvcHRpb25zLnR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIG1lc3NhZ2VUZXh0LnNldEF0dHJpYnV0ZSgncm9sZScsICdhbGVydCcpO1xuICAgIH1cbiAgICBtZXNzYWdlV3JhcGVyLmlubmVySFRNTCA9IGAgJHt0ZXh0fWA7XG4gICAgbWVzc2FnZVdyYXBlci5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyYmVnaW4nLCBtZXNzYWdlVGV4dCk7XG5cbiAgICByZXR1cm4gbWVzc2FnZVdyYXBlcjtcbiAgfTtcbn0pKERydXBhbCk7XG4iXX0= \ No newline at end of file