UNPKG

botframework-webchat-component

Version:
278 lines (277 loc) 30.5 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports.speechSynthesis = exports.SpeechSynthesisVoice = exports.SpeechSynthesisUtterance = exports.SpeechSynthesisEvent = void 0; var _createOnEventShim = _interopRequireDefault(require("./private/createOnEventShim")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } // Since this is a bypass, we will relax some ESLint rules. // All classes/properties defined here are in W3C Web Speech API. /* eslint class-methods-use-this: "off" */ /* eslint getter-return: "off" */ /* eslint max-classes-per-file: ["error", 4] */ /* eslint no-empty-function: "off" */ var SpeechSynthesisEvent = /*#__PURE__*/function (_Event) { _inherits(SpeechSynthesisEvent, _Event); var _super = _createSuper(SpeechSynthesisEvent); function SpeechSynthesisEvent(type, utterance) { var _this; _classCallCheck(this, SpeechSynthesisEvent); _this = _super.call(this, type); _this._utterance = utterance; return _this; } _createClass(SpeechSynthesisEvent, [{ key: "charIndex", get: function get() { return 0; } }, { key: "elapsedTime", get: function get() { return 0; } }, { key: "name", get: function get() { // It is expected to return `undefined`, keeping the function empty to reduce footprint. } }, { key: "utterance", get: function get() { return this._utterance; } }]); return SpeechSynthesisEvent; }( /*#__PURE__*/_wrapNativeSuper(Event)); exports.SpeechSynthesisEvent = SpeechSynthesisEvent; var SpeechSynthesisUtterance = /*#__PURE__*/function (_EventTarget) { _inherits(SpeechSynthesisUtterance, _EventTarget); var _super2 = _createSuper(SpeechSynthesisUtterance); function SpeechSynthesisUtterance(text) { var _this2; _classCallCheck(this, SpeechSynthesisUtterance); _this2 = _super2.call(this); _this2._lang = 'en-US'; _this2._pitch = 1; _this2._rate = 1; _this2._text = text; _this2._voice = null; _this2._volume = 1; _this2._shim = (0, _createOnEventShim.default)(_assertThisInitialized(_this2)); return _this2; } _createClass(SpeechSynthesisUtterance, [{ key: "lang", get: function get() { return this._lang; }, set: function set(value) { this._lang = value; } }, { key: "pitch", get: function get() { return this._pitch; }, set: function set(value) { this._pitch = value; } }, { key: "rate", get: function get() { return this._rate; }, set: function set(value) { this._rate = value; } }, { key: "text", get: function get() { return this._text; }, set: function set(value) { this._text = value; } }, { key: "voice", get: function get() { return this._voice; }, set: function set(value) { this._voice = value; } }, { key: "volume", get: function get() { return this._volume; }, set: function set(value) { this._volume = value; } }, { key: "onboundary", get: function get() { return this._shim.get('boundary'); }, set: function set(value) { this._shim.set('boundary', value); } }, { key: "onend", get: function get() { return this._shim.get('end'); }, set: function set(value) { this._shim.set('end', value); } }, { key: "onerror", get: function get() { return this._shim.get('error'); }, set: function set(value) { this._shim.set('error', value); } }, { key: "onmark", get: function get() { return this._shim.get('mark'); }, set: function set(value) { this._shim.set('mark', value); } }, { key: "onpause", get: function get() { return this._shim.get('pause'); }, set: function set(value) { this._shim.set('pause', value); } }, { key: "onresume", get: function get() { return this._shim.get('resume'); }, set: function set(value) { this._shim.set('resume', value); } }, { key: "onstart", get: function get() { return this._shim.get('start'); }, set: function set(value) { this._shim.set('start', value); } }]); return SpeechSynthesisUtterance; }( /*#__PURE__*/_wrapNativeSuper(EventTarget)); exports.SpeechSynthesisUtterance = SpeechSynthesisUtterance; var SpeechSynthesisVoice = /*#__PURE__*/function () { function SpeechSynthesisVoice() { _classCallCheck(this, SpeechSynthesisVoice); } _createClass(SpeechSynthesisVoice, [{ key: "default", get: function get() { return true; } }, { key: "lang", get: function get() { return 'en-US'; } }, { key: "localService", get: function get() { return true; } }, { key: "name", get: function get() { return 'English (US)'; } }, { key: "voiceURI", get: function get() { return 'English (US)'; } }]); return SpeechSynthesisVoice; }(); exports.SpeechSynthesisVoice = SpeechSynthesisVoice; var SpeechSynthesis = /*#__PURE__*/function (_EventTarget2) { _inherits(SpeechSynthesis, _EventTarget2); var _super3 = _createSuper(SpeechSynthesis); function SpeechSynthesis() { var _this3; _classCallCheck(this, SpeechSynthesis); _this3 = _super3.call(this); _this3._shim = (0, _createOnEventShim.default)(_assertThisInitialized(_this3)); return _this3; } _createClass(SpeechSynthesis, [{ key: "paused", get: function get() { return false; } }, { key: "pending", get: function get() { return false; } }, { key: "speaking", get: function get() { return false; } }, { key: "cancel", value: function cancel() {} }, { key: "getVoices", value: function getVoices() { return [new SpeechSynthesisVoice()]; } }, { key: "pause", value: function pause() { throw new Error('pause is not implemented.'); } }, { key: "resume", value: function resume() { throw new Error('resume is not implemented.'); } }, { key: "speak", value: function speak(utterance) { utterance.dispatchEvent(new SpeechSynthesisEvent('start', utterance)); utterance.dispatchEvent(new SpeechSynthesisEvent('end', utterance)); } }, { key: "onvoiceschanged", get: function get() { return this._shim.get('voiceschanged'); }, set: function set(value) { this._shim.set('voiceschanged', value); } }]); return SpeechSynthesis; }( /*#__PURE__*/_wrapNativeSuper(EventTarget)); var speechSynthesis = new SpeechSynthesis(); exports.speechSynthesis = speechSynthesis; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3JlYXRlT25FdmVudFNoaW0iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJpIiwibGVuZ3RoIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwicHJvdG90eXBlIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwiY29uc3RydWN0b3IiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsIl9jcmVhdGVTdXBlciIsIkRlcml2ZWQiLCJoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIl9jcmVhdGVTdXBlckludGVybmFsIiwiU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJyZXN1bHQiLCJOZXdUYXJnZXQiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsInNlbGYiLCJjYWxsIiwiX3R5cGVvZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIl93cmFwTmF0aXZlU3VwZXIiLCJDbGFzcyIsIl9jYWNoZSIsIk1hcCIsInVuZGVmaW5lZCIsIl9pc05hdGl2ZUZ1bmN0aW9uIiwiaGFzIiwiZ2V0Iiwic2V0IiwiV3JhcHBlciIsIl9jb25zdHJ1Y3QiLCJQYXJlbnQiLCJhcmdzIiwiYmluZCIsImEiLCJwdXNoIiwiRnVuY3Rpb24iLCJzaGFtIiwiUHJveHkiLCJCb29sZWFuIiwidmFsdWVPZiIsImUiLCJmbiIsInRvU3RyaW5nIiwiaW5kZXhPZiIsIm8iLCJwIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJnZXRQcm90b3R5cGVPZiIsIlNwZWVjaFN5bnRoZXNpc0V2ZW50IiwiX0V2ZW50IiwiX3N1cGVyIiwidHlwZSIsInV0dGVyYW5jZSIsIl90aGlzIiwiX3V0dGVyYW5jZSIsIkV2ZW50IiwiZXhwb3J0cyIsIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSIsIl9FdmVudFRhcmdldCIsIl9zdXBlcjIiLCJ0ZXh0IiwiX3RoaXMyIiwiX2xhbmciLCJfcGl0Y2giLCJfcmF0ZSIsIl90ZXh0IiwiX3ZvaWNlIiwiX3ZvbHVtZSIsIl9zaGltIiwiY3JlYXRlT25FdmVudFNoaW0iLCJFdmVudFRhcmdldCIsIlNwZWVjaFN5bnRoZXNpc1ZvaWNlIiwiU3BlZWNoU3ludGhlc2lzIiwiX0V2ZW50VGFyZ2V0MiIsIl9zdXBlcjMiLCJfdGhpczMiLCJjYW5jZWwiLCJnZXRWb2ljZXMiLCJwYXVzZSIsIkVycm9yIiwicmVzdW1lIiwic3BlYWsiLCJkaXNwYXRjaEV2ZW50Iiwic3BlZWNoU3ludGhlc2lzIl0sInNvdXJjZVJvb3QiOiJjb21wb25lbnQ6Ly8vIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvaW50ZXJuYWwvQnlwYXNzU3BlZWNoU3ludGhlc2lzUG9ueWZpbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU2luY2UgdGhpcyBpcyBhIGJ5cGFzcywgd2Ugd2lsbCByZWxheCBzb21lIEVTTGludCBydWxlcy5cbi8vIEFsbCBjbGFzc2VzL3Byb3BlcnRpZXMgZGVmaW5lZCBoZXJlIGFyZSBpbiBXM0MgV2ViIFNwZWVjaCBBUEkuXG5cbi8qIGVzbGludCBjbGFzcy1tZXRob2RzLXVzZS10aGlzOiBcIm9mZlwiICovXG4vKiBlc2xpbnQgZ2V0dGVyLXJldHVybjogXCJvZmZcIiAqL1xuLyogZXNsaW50IG1heC1jbGFzc2VzLXBlci1maWxlOiBbXCJlcnJvclwiLCA0XSAqL1xuLyogZXNsaW50IG5vLWVtcHR5LWZ1bmN0aW9uOiBcIm9mZlwiICovXG5cbmltcG9ydCBjcmVhdGVPbkV2ZW50U2hpbSBmcm9tICcuL3ByaXZhdGUvY3JlYXRlT25FdmVudFNoaW0nO1xuXG5jbGFzcyBTcGVlY2hTeW50aGVzaXNFdmVudCBleHRlbmRzIEV2ZW50IHtcbiAgY29uc3RydWN0b3IodHlwZSwgdXR0ZXJhbmNlKSB7XG4gICAgc3VwZXIodHlwZSk7XG5cbiAgICB0aGlzLl91dHRlcmFuY2UgPSB1dHRlcmFuY2U7XG4gIH1cblxuICBnZXQgY2hhckluZGV4KCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgZ2V0IGVsYXBzZWRUaW1lKCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7XG4gICAgLy8gSXQgaXMgZXhwZWN0ZWQgdG8gcmV0dXJuIGB1bmRlZmluZWRgLCBrZWVwaW5nIHRoZSBmdW5jdGlvbiBlbXB0eSB0byByZWR1Y2UgZm9vdHByaW50LlxuICB9XG5cbiAgZ2V0IHV0dGVyYW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdXR0ZXJhbmNlO1xuICB9XG59XG5cbmNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSBleHRlbmRzIEV2ZW50VGFyZ2V0IHtcbiAgY29uc3RydWN0b3IodGV4dCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLl9sYW5nID0gJ2VuLVVTJztcbiAgICB0aGlzLl9waXRjaCA9IDE7XG4gICAgdGhpcy5fcmF0ZSA9IDE7XG4gICAgdGhpcy5fdGV4dCA9IHRleHQ7XG4gICAgdGhpcy5fdm9pY2UgPSBudWxsO1xuICAgIHRoaXMuX3ZvbHVtZSA9IDE7XG5cbiAgICB0aGlzLl9zaGltID0gY3JlYXRlT25FdmVudFNoaW0odGhpcyk7XG4gIH1cblxuICBnZXQgbGFuZygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGFuZztcbiAgfVxuXG4gIHNldCBsYW5nKHZhbHVlKSB7XG4gICAgdGhpcy5fbGFuZyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHBpdGNoKCkge1xuICAgIHJldHVybiB0aGlzLl9waXRjaDtcbiAgfVxuXG4gIHNldCBwaXRjaCh2YWx1ZSkge1xuICAgIHRoaXMuX3BpdGNoID0gdmFsdWU7XG4gIH1cblxuICBnZXQgcmF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmF0ZTtcbiAgfVxuXG4gIHNldCByYXRlKHZhbHVlKSB7XG4gICAgdGhpcy5fcmF0ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHQ7XG4gIH1cblxuICBzZXQgdGV4dCh2YWx1ZSkge1xuICAgIHRoaXMuX3RleHQgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCB2b2ljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdm9pY2U7XG4gIH1cblxuICBzZXQgdm9pY2UodmFsdWUpIHtcbiAgICB0aGlzLl92b2ljZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHZvbHVtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdm9sdW1lO1xuICB9XG5cbiAgc2V0IHZvbHVtZSh2YWx1ZSkge1xuICAgIHRoaXMuX3ZvbHVtZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IG9uYm91bmRhcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NoaW0uZ2V0KCdib3VuZGFyeScpO1xuICB9XG5cbiAgc2V0IG9uYm91bmRhcnkodmFsdWUpIHtcbiAgICB0aGlzLl9zaGltLnNldCgnYm91bmRhcnknLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgb25lbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NoaW0uZ2V0KCdlbmQnKTtcbiAgfVxuXG4gIHNldCBvbmVuZCh2YWx1ZSkge1xuICAgIHRoaXMuX3NoaW0uc2V0KCdlbmQnLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgb25lcnJvcigpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hpbS5nZXQoJ2Vycm9yJyk7XG4gIH1cblxuICBzZXQgb25lcnJvcih2YWx1ZSkge1xuICAgIHRoaXMuX3NoaW0uc2V0KCdlcnJvcicsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBvbm1hcmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NoaW0uZ2V0KCdtYXJrJyk7XG4gIH1cblxuICBzZXQgb25tYXJrKHZhbHVlKSB7XG4gICAgdGhpcy5fc2hpbS5zZXQoJ21hcmsnLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgb25wYXVzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hpbS5nZXQoJ3BhdXNlJyk7XG4gIH1cblxuICBzZXQgb25wYXVzZSh2YWx1ZSkge1xuICAgIHRoaXMuX3NoaW0uc2V0KCdwYXVzZScsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBvbnJlc3VtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hpbS5nZXQoJ3Jlc3VtZScpO1xuICB9XG5cbiAgc2V0IG9ucmVzdW1lKHZhbHVlKSB7XG4gICAgdGhpcy5fc2hpbS5zZXQoJ3Jlc3VtZScsIHZhbHVlKTtcbiAgfVxuXG4gIGdldCBvbnN0YXJ0KCkge1xuICAgIHJldHVybiB0aGlzLl9zaGltLmdldCgnc3RhcnQnKTtcbiAgfVxuXG4gIHNldCBvbnN0YXJ0KHZhbHVlKSB7XG4gICAgdGhpcy5fc2hpbS5zZXQoJ3N0YXJ0JywgdmFsdWUpO1xuICB9XG59XG5cbmNsYXNzIFNwZWVjaFN5bnRoZXNpc1ZvaWNlIHtcbiAgZ2V0IGRlZmF1bHQoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXQgbGFuZygpIHtcbiAgICByZXR1cm4gJ2VuLVVTJztcbiAgfVxuXG4gIGdldCBsb2NhbFNlcnZpY2UoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gJ0VuZ2xpc2ggKFVTKSc7XG4gIH1cblxuICBnZXQgdm9pY2VVUkkoKSB7XG4gICAgcmV0dXJuICdFbmdsaXNoIChVUyknO1xuICB9XG59XG5cbmNsYXNzIFNwZWVjaFN5bnRoZXNpcyBleHRlbmRzIEV2ZW50VGFyZ2V0IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuX3NoaW0gPSBjcmVhdGVPbkV2ZW50U2hpbSh0aGlzKTtcbiAgfVxuXG4gIGdldCBwYXVzZWQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IHBlbmRpbmcoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IHNwZWFraW5nKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNhbmNlbCgpIHt9XG5cbiAgZ2V0Vm9pY2VzKCkge1xuICAgIHJldHVybiBbbmV3IFNwZWVjaFN5bnRoZXNpc1ZvaWNlKCldO1xuICB9XG5cbiAgcGF1c2UoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwYXVzZSBpcyBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXN1bWUoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdyZXN1bWUgaXMgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgc3BlYWsodXR0ZXJhbmNlKSB7XG4gICAgdXR0ZXJhbmNlLmRpc3BhdGNoRXZlbnQobmV3IFNwZWVjaFN5bnRoZXNpc0V2ZW50KCdzdGFydCcsIHV0dGVyYW5jZSkpO1xuICAgIHV0dGVyYW5jZS5kaXNwYXRjaEV2ZW50KG5ldyBTcGVlY2hTeW50aGVzaXNFdmVudCgnZW5kJywgdXR0ZXJhbmNlKSk7XG4gIH1cblxuICBnZXQgb252b2ljZXNjaGFuZ2VkKCkge1xuICAgIHJldHVybiB0aGlzLl9zaGltLmdldCgndm9pY2VzY2hhbmdlZCcpO1xuICB9XG5cbiAgc2V0IG9udm9pY2VzY2hhbmdlZCh2YWx1ZSkge1xuICAgIHRoaXMuX3NoaW0uc2V0KCd2b2ljZXNjaGFuZ2VkJywgdmFsdWUpO1xuICB9XG59XG5cbmNvbnN0IHNwZWVjaFN5bnRoZXNpcyA9IG5ldyBTcGVlY2hTeW50aGVzaXMoKTtcblxuZXhwb3J0IHsgU3BlZWNoU3ludGhlc2lzRXZlbnQsIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSwgU3BlZWNoU3ludGhlc2lzVm9pY2UsIHNwZWVj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